diff --git a/.agents/notes/README.i18n.yaml b/.agents/notes/README.i18n.yaml index faf4d69b5b..af337114a0 100644 --- a/.agents/notes/README.i18n.yaml +++ b/.agents/notes/README.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/README.md -README.md: ae8e4724d610c97d74910d7dec5c95af69e93281 -README.zh.md: 8cecc7068d9efc5e2ebb78d2301d03633f70f137 +README.md: 8bf1adf875b54eb4580b4d189dfeed07c9f671c0 +README.zh.md: ff9bdb358d584d4f4ad0aea295c31d8d8fff9376 diff --git a/.agents/notes/README.md b/.agents/notes/README.md index ae8e4724d6..8bf1adf875 100644 --- a/.agents/notes/README.md +++ b/.agents/notes/README.md @@ -20,7 +20,7 @@ The active lifecycle tree is the working inventory: browse its lifecycle/class f ## Classification -Each Agent Note belongs to one path-encoded class from the closed set in `scripts/agent-note-tree.ts`; the classification gate rejects other folders. Adding a class requires updating the canonical set and this section. See the [classification Agent Note](implemented/process/2026-06-20-agent-note-classification.md). +Each Agent Note belongs to one path-encoded class from the closed set in `scripts/agent-note-tree.ts`; the classification gate rejects other folders. Adding a class requires updating the canonical set and this section. | Class | What it covers | |---|---| diff --git a/.agents/notes/README.zh.md b/.agents/notes/README.zh.md index 8cecc7068d..ff9bdb358d 100644 --- a/.agents/notes/README.zh.md +++ b/.agents/notes/README.zh.md @@ -22,7 +22,7 @@ ## 分类 -每份 Agent Note 属于 `scripts/agent-note-tree.ts` 中封闭集合里的一个路径编码类别;分类门禁拒绝其他文件夹。新增类别需要同时更新规范集合与本节。见[分类 Agent Note](implemented/process/2026-06-20-agent-note-classification.zh.md)。 +每份 Agent Note 属于 `scripts/agent-note-tree.ts` 中封闭集合里的一个路径编码类别;分类门禁拒绝其他文件夹。新增类别需要同时更新规范集合与本节。 | 类别 | 覆盖范围 | |---|---| diff --git a/.agents/notes/archived/architecture/2026-06-11-runtime-arg-validation.i18n.yaml b/.agents/notes/archived/architecture/2026-06-11-runtime-arg-validation.i18n.yaml new file mode 100644 index 0000000000..c4d73f6335 --- /dev/null +++ b/.agents/notes/archived/architecture/2026-06-11-runtime-arg-validation.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-06-11-runtime-arg-validation.md +2026-06-11-runtime-arg-validation.md: 22283c76719a26f733a8125bf263810d53a92c3c +2026-06-11-runtime-arg-validation.zh.md: f748b7e01b233edb8b3303898cc339dfacd16967 diff --git a/.agents/notes/implemented/architecture/2026-06-11-runtime-arg-validation.md b/.agents/notes/archived/architecture/2026-06-11-runtime-arg-validation.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-06-11-runtime-arg-validation.md rename to .agents/notes/archived/architecture/2026-06-11-runtime-arg-validation.md index 520823c76f..22283c7671 100644 --- a/.agents/notes/implemented/architecture/2026-06-11-runtime-arg-validation.md +++ b/.agents/notes/archived/architecture/2026-06-11-runtime-arg-validation.md @@ -1,6 +1,7 @@ # Agent Note: Runtime arg validation at the model boundary Status: implemented +Archived: 2026-09-04 English | [中文](2026-06-11-runtime-arg-validation.zh.md) diff --git a/.agents/notes/implemented/architecture/2026-06-11-runtime-arg-validation.zh.md b/.agents/notes/archived/architecture/2026-06-11-runtime-arg-validation.zh.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-06-11-runtime-arg-validation.zh.md rename to .agents/notes/archived/architecture/2026-06-11-runtime-arg-validation.zh.md index bc2f743300..f748b7e01b 100644 --- a/.agents/notes/implemented/architecture/2026-06-11-runtime-arg-validation.zh.md +++ b/.agents/notes/archived/architecture/2026-06-11-runtime-arg-validation.zh.md @@ -1,6 +1,7 @@ # Agent Note: 模型边界处的运行时参数校验 Status: implemented +Archived: 2026-09-04 [English](2026-06-11-runtime-arg-validation.md) | 中文 diff --git a/.agents/notes/archived/architecture/2026-06-11-structured-error-taxonomy.i18n.yaml b/.agents/notes/archived/architecture/2026-06-11-structured-error-taxonomy.i18n.yaml new file mode 100644 index 0000000000..a56b154e3a --- /dev/null +++ b/.agents/notes/archived/architecture/2026-06-11-structured-error-taxonomy.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-06-11-structured-error-taxonomy.md +2026-06-11-structured-error-taxonomy.md: a5c1c6e6120eefd3bc96090cfa4536fb83afa796 +2026-06-11-structured-error-taxonomy.zh.md: 54a937c5595aa5645e4cc0f66a6d1a2efc232588 diff --git a/.agents/notes/implemented/architecture/2026-06-11-structured-error-taxonomy.md b/.agents/notes/archived/architecture/2026-06-11-structured-error-taxonomy.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-06-11-structured-error-taxonomy.md rename to .agents/notes/archived/architecture/2026-06-11-structured-error-taxonomy.md index 9122193b3d..a5c1c6e612 100644 --- a/.agents/notes/implemented/architecture/2026-06-11-structured-error-taxonomy.md +++ b/.agents/notes/archived/architecture/2026-06-11-structured-error-taxonomy.md @@ -1,6 +1,7 @@ # Agent Note: Structured error taxonomy Status: implemented +Archived: 2026-09-04 English | [中文](2026-06-11-structured-error-taxonomy.zh.md) diff --git a/.agents/notes/implemented/architecture/2026-06-11-structured-error-taxonomy.zh.md b/.agents/notes/archived/architecture/2026-06-11-structured-error-taxonomy.zh.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-06-11-structured-error-taxonomy.zh.md rename to .agents/notes/archived/architecture/2026-06-11-structured-error-taxonomy.zh.md index 71814954bd..54a937c559 100644 --- a/.agents/notes/implemented/architecture/2026-06-11-structured-error-taxonomy.zh.md +++ b/.agents/notes/archived/architecture/2026-06-11-structured-error-taxonomy.zh.md @@ -1,6 +1,7 @@ # Agent Note: 结构化错误分类体系 Status: implemented +Archived: 2026-09-04 [English](2026-06-11-structured-error-taxonomy.md) | 中文 diff --git a/.agents/notes/archived/architecture/2026-06-17-filesystem-capability-seam.i18n.yaml b/.agents/notes/archived/architecture/2026-06-17-filesystem-capability-seam.i18n.yaml new file mode 100644 index 0000000000..3155314d63 --- /dev/null +++ b/.agents/notes/archived/architecture/2026-06-17-filesystem-capability-seam.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-06-17-filesystem-capability-seam.md +2026-06-17-filesystem-capability-seam.md: a0c898c1d127a7828037b3a59d04ff73c82e31ba +2026-06-17-filesystem-capability-seam.zh.md: 0442333a0a7cbc4fcae0f4b02db1700ce6aafc9e diff --git a/.agents/notes/implemented/architecture/2026-06-17-filesystem-capability-seam.md b/.agents/notes/archived/architecture/2026-06-17-filesystem-capability-seam.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-06-17-filesystem-capability-seam.md rename to .agents/notes/archived/architecture/2026-06-17-filesystem-capability-seam.md index 6265aebf5e..a0c898c1d1 100644 --- a/.agents/notes/implemented/architecture/2026-06-17-filesystem-capability-seam.md +++ b/.agents/notes/archived/architecture/2026-06-17-filesystem-capability-seam.md @@ -1,6 +1,7 @@ # Agent Note: Filesystem capability seam — ctx.fs, local backend, and model-facing filesystem tools Status: implemented +Archived: 2026-09-04 English | [中文](2026-06-17-filesystem-capability-seam.zh.md) diff --git a/.agents/notes/implemented/architecture/2026-06-17-filesystem-capability-seam.zh.md b/.agents/notes/archived/architecture/2026-06-17-filesystem-capability-seam.zh.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-06-17-filesystem-capability-seam.zh.md rename to .agents/notes/archived/architecture/2026-06-17-filesystem-capability-seam.zh.md index f0f1cb132f..0442333a0a 100644 --- a/.agents/notes/implemented/architecture/2026-06-17-filesystem-capability-seam.zh.md +++ b/.agents/notes/archived/architecture/2026-06-17-filesystem-capability-seam.zh.md @@ -1,6 +1,7 @@ # Agent Note: 文件系统能力 seam——ctx.fs、本地后端与面向模型的文件系统工具 Status: implemented +Archived: 2026-09-04 [English](2026-06-17-filesystem-capability-seam.md) | 中文 diff --git a/.agents/notes/implemented/bug-fix/2026-07-30-approval-panel-command-cap.i18n.yaml b/.agents/notes/archived/architecture/2026-06-18-agent-lifecycle-and-ownership-contracts.i18n.yaml similarity index 52% rename from .agents/notes/implemented/bug-fix/2026-07-30-approval-panel-command-cap.i18n.yaml rename to .agents/notes/archived/architecture/2026-06-18-agent-lifecycle-and-ownership-contracts.i18n.yaml index 4e693b9b80..9720ac5e34 100644 --- a/.agents/notes/implemented/bug-fix/2026-07-30-approval-panel-command-cap.i18n.yaml +++ b/.agents/notes/archived/architecture/2026-06-18-agent-lifecycle-and-ownership-contracts.i18n.yaml @@ -1,6 +1,6 @@ # Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/bug-fix/2026-07-30-approval-panel-command-cap.md -2026-07-30-approval-panel-command-cap.md: 0bfdc2d00fa4a0f9fa9ee71400d6f3cc2350e617 -2026-07-30-approval-panel-command-cap.zh.md: a086888b12c0164b931019f4d73102bd11bccf4b +# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-06-18-agent-lifecycle-and-ownership-contracts.md +2026-06-18-agent-lifecycle-and-ownership-contracts.md: 012346d9e5b8bf4fd661423b3c398e93e513659d +2026-06-18-agent-lifecycle-and-ownership-contracts.zh.md: 4f8aaac32dfa3d84a449f12441c23371f1a3a27d diff --git a/.agents/notes/implemented/architecture/2026-06-18-agent-lifecycle-and-ownership-contracts.md b/.agents/notes/archived/architecture/2026-06-18-agent-lifecycle-and-ownership-contracts.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-06-18-agent-lifecycle-and-ownership-contracts.md rename to .agents/notes/archived/architecture/2026-06-18-agent-lifecycle-and-ownership-contracts.md index 9bc558bfce..012346d9e5 100644 --- a/.agents/notes/implemented/architecture/2026-06-18-agent-lifecycle-and-ownership-contracts.md +++ b/.agents/notes/archived/architecture/2026-06-18-agent-lifecycle-and-ownership-contracts.md @@ -1,6 +1,7 @@ # Agent Note: Agent lifecycle and ownership contracts Status: implemented +Archived: 2026-09-04 English | [中文](2026-06-18-agent-lifecycle-and-ownership-contracts.zh.md) diff --git a/.agents/notes/implemented/architecture/2026-06-18-agent-lifecycle-and-ownership-contracts.zh.md b/.agents/notes/archived/architecture/2026-06-18-agent-lifecycle-and-ownership-contracts.zh.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-06-18-agent-lifecycle-and-ownership-contracts.zh.md rename to .agents/notes/archived/architecture/2026-06-18-agent-lifecycle-and-ownership-contracts.zh.md index bbd0a7219f..4f8aaac32d 100644 --- a/.agents/notes/implemented/architecture/2026-06-18-agent-lifecycle-and-ownership-contracts.zh.md +++ b/.agents/notes/archived/architecture/2026-06-18-agent-lifecycle-and-ownership-contracts.zh.md @@ -1,6 +1,7 @@ # Agent Note: Agent 生命周期与所有权约定 Status: implemented +Archived: 2026-09-04 [English](2026-06-18-agent-lifecycle-and-ownership-contracts.md) | 中文 diff --git a/.agents/notes/archived/architecture/2026-06-20-branded-ids.i18n.yaml b/.agents/notes/archived/architecture/2026-06-20-branded-ids.i18n.yaml new file mode 100644 index 0000000000..d147c9f766 --- /dev/null +++ b/.agents/notes/archived/architecture/2026-06-20-branded-ids.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-06-20-branded-ids.md +2026-06-20-branded-ids.md: 3078ebc7035c8c5a86c7a743a0452b0ebddf6c7d +2026-06-20-branded-ids.zh.md: 3a7d7c319c9fc14724af306b8c601afa759a18e7 diff --git a/.agents/notes/implemented/architecture/2026-06-20-branded-ids.md b/.agents/notes/archived/architecture/2026-06-20-branded-ids.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-06-20-branded-ids.md rename to .agents/notes/archived/architecture/2026-06-20-branded-ids.md index 1f579a7afb..3078ebc703 100644 --- a/.agents/notes/implemented/architecture/2026-06-20-branded-ids.md +++ b/.agents/notes/archived/architecture/2026-06-20-branded-ids.md @@ -1,6 +1,7 @@ # Agent Note: Branded IDs everywhere they belong Status: implemented +Archived: 2026-09-04 English | [中文](2026-06-20-branded-ids.zh.md) diff --git a/.agents/notes/implemented/architecture/2026-06-20-branded-ids.zh.md b/.agents/notes/archived/architecture/2026-06-20-branded-ids.zh.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-06-20-branded-ids.zh.md rename to .agents/notes/archived/architecture/2026-06-20-branded-ids.zh.md index eaf032027f..3a7d7c319c 100644 --- a/.agents/notes/implemented/architecture/2026-06-20-branded-ids.zh.md +++ b/.agents/notes/archived/architecture/2026-06-20-branded-ids.zh.md @@ -1,6 +1,7 @@ # Agent Note: 在所有应有之处使用 branded ID Status: implemented +Archived: 2026-09-04 [English](2026-06-20-branded-ids.md) | 中文 diff --git a/.agents/notes/archived/architecture/2026-06-30-bash-stdin-env-trusted-plugin-api.i18n.yaml b/.agents/notes/archived/architecture/2026-06-30-bash-stdin-env-trusted-plugin-api.i18n.yaml new file mode 100644 index 0000000000..c879b7e885 --- /dev/null +++ b/.agents/notes/archived/architecture/2026-06-30-bash-stdin-env-trusted-plugin-api.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-06-30-bash-stdin-env-trusted-plugin-api.md +2026-06-30-bash-stdin-env-trusted-plugin-api.md: b9883c88d091e6e932da7c65b8b7fe4d107c0fa4 +2026-06-30-bash-stdin-env-trusted-plugin-api.zh.md: 884b83de21243e27fa39f7840adfffebc398a9b0 diff --git a/.agents/notes/implemented/architecture/2026-06-30-bash-stdin-env-trusted-plugin-api.md b/.agents/notes/archived/architecture/2026-06-30-bash-stdin-env-trusted-plugin-api.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-06-30-bash-stdin-env-trusted-plugin-api.md rename to .agents/notes/archived/architecture/2026-06-30-bash-stdin-env-trusted-plugin-api.md index 41be63fff5..b9883c88d0 100644 --- a/.agents/notes/implemented/architecture/2026-06-30-bash-stdin-env-trusted-plugin-api.md +++ b/.agents/notes/archived/architecture/2026-06-30-bash-stdin-env-trusted-plugin-api.md @@ -1,6 +1,7 @@ # Agent Note: stdin + extra env on the bash seam Status: implemented +Archived: 2026-09-04 English | [中文](2026-06-30-bash-stdin-env-trusted-plugin-api.zh.md) diff --git a/.agents/notes/implemented/architecture/2026-06-30-bash-stdin-env-trusted-plugin-api.zh.md b/.agents/notes/archived/architecture/2026-06-30-bash-stdin-env-trusted-plugin-api.zh.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-06-30-bash-stdin-env-trusted-plugin-api.zh.md rename to .agents/notes/archived/architecture/2026-06-30-bash-stdin-env-trusted-plugin-api.zh.md index 60721539d9..884b83de21 100644 --- a/.agents/notes/implemented/architecture/2026-06-30-bash-stdin-env-trusted-plugin-api.zh.md +++ b/.agents/notes/archived/architecture/2026-06-30-bash-stdin-env-trusted-plugin-api.zh.md @@ -1,6 +1,7 @@ # Agent Note: 在 bash seam 上支持 stdin 与额外 env Status: implemented +Archived: 2026-09-04 [English](2026-06-30-bash-stdin-env-trusted-plugin-api.md) | 中文 diff --git a/.agents/notes/archived/architecture/2026-07-02-fs-per-session-cwd.i18n.yaml b/.agents/notes/archived/architecture/2026-07-02-fs-per-session-cwd.i18n.yaml new file mode 100644 index 0000000000..ff4be48e6d --- /dev/null +++ b/.agents/notes/archived/architecture/2026-07-02-fs-per-session-cwd.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-07-02-fs-per-session-cwd.md +2026-07-02-fs-per-session-cwd.md: 81dafda9ba71bd2746926e8baa0f4eaf76748429 +2026-07-02-fs-per-session-cwd.zh.md: aa05ed41615f29d580595a66d4743d4baf02b1a9 diff --git a/.agents/notes/implemented/architecture/2026-07-02-fs-per-session-cwd.md b/.agents/notes/archived/architecture/2026-07-02-fs-per-session-cwd.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-07-02-fs-per-session-cwd.md rename to .agents/notes/archived/architecture/2026-07-02-fs-per-session-cwd.md index 23c9f41459..81dafda9ba 100644 --- a/.agents/notes/implemented/architecture/2026-07-02-fs-per-session-cwd.md +++ b/.agents/notes/archived/architecture/2026-07-02-fs-per-session-cwd.md @@ -1,6 +1,7 @@ # Agent Note: Resolve filesystem paths against the caller's session cwd Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-02-fs-per-session-cwd.zh.md) diff --git a/.agents/notes/implemented/architecture/2026-07-02-fs-per-session-cwd.zh.md b/.agents/notes/archived/architecture/2026-07-02-fs-per-session-cwd.zh.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-07-02-fs-per-session-cwd.zh.md rename to .agents/notes/archived/architecture/2026-07-02-fs-per-session-cwd.zh.md index 6a8ffb357d..aa05ed4161 100644 --- a/.agents/notes/implemented/architecture/2026-07-02-fs-per-session-cwd.zh.md +++ b/.agents/notes/archived/architecture/2026-07-02-fs-per-session-cwd.zh.md @@ -1,6 +1,7 @@ # Agent Note: 相对文件系统路径按调用方的会话 cwd 解析 Status: implemented +Archived: 2026-09-04 [English](2026-07-02-fs-per-session-cwd.md) | 中文 diff --git a/.agents/notes/archived/architecture/2026-07-05-subagent-provider-lifecycle-events.i18n.yaml b/.agents/notes/archived/architecture/2026-07-05-subagent-provider-lifecycle-events.i18n.yaml new file mode 100644 index 0000000000..55c934a627 --- /dev/null +++ b/.agents/notes/archived/architecture/2026-07-05-subagent-provider-lifecycle-events.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-07-05-subagent-provider-lifecycle-events.md +2026-07-05-subagent-provider-lifecycle-events.md: a15c3e6faee993902547174fe9ea235d07d9ec2f +2026-07-05-subagent-provider-lifecycle-events.zh.md: 49e55a3b148775ed7e676b5f55058ef1427a86c6 diff --git a/.agents/notes/implemented/architecture/2026-07-05-subagent-provider-lifecycle-events.md b/.agents/notes/archived/architecture/2026-07-05-subagent-provider-lifecycle-events.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-07-05-subagent-provider-lifecycle-events.md rename to .agents/notes/archived/architecture/2026-07-05-subagent-provider-lifecycle-events.md index 503c0d6387..a15c3e6fae 100644 --- a/.agents/notes/implemented/architecture/2026-07-05-subagent-provider-lifecycle-events.md +++ b/.agents/notes/archived/architecture/2026-07-05-subagent-provider-lifecycle-events.md @@ -1,6 +1,7 @@ # Agent Note: Subagent provider-lifecycle events — `subagent/provider-added` / `subagent/provider-removed` Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-05-subagent-provider-lifecycle-events.zh.md) diff --git a/.agents/notes/implemented/architecture/2026-07-05-subagent-provider-lifecycle-events.zh.md b/.agents/notes/archived/architecture/2026-07-05-subagent-provider-lifecycle-events.zh.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-07-05-subagent-provider-lifecycle-events.zh.md rename to .agents/notes/archived/architecture/2026-07-05-subagent-provider-lifecycle-events.zh.md index d9d15b4ff6..49e55a3b14 100644 --- a/.agents/notes/implemented/architecture/2026-07-05-subagent-provider-lifecycle-events.zh.md +++ b/.agents/notes/archived/architecture/2026-07-05-subagent-provider-lifecycle-events.zh.md @@ -1,6 +1,7 @@ # Agent Note: Subagent 提供方生命周期事件——`subagent/provider-added` / `subagent/provider-removed` Status: implemented +Archived: 2026-09-04 [English](2026-07-05-subagent-provider-lifecycle-events.md) | 中文 diff --git a/.agents/notes/archived/architecture/2026-07-06-tool-result-retention-library.i18n.yaml b/.agents/notes/archived/architecture/2026-07-06-tool-result-retention-library.i18n.yaml new file mode 100644 index 0000000000..f400019e2a --- /dev/null +++ b/.agents/notes/archived/architecture/2026-07-06-tool-result-retention-library.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-07-06-tool-result-retention-library.md +2026-07-06-tool-result-retention-library.md: 5ac8547036ed0b45ec6e55e6fb213a98b7c3df8f +2026-07-06-tool-result-retention-library.zh.md: b18fdd60f529f9e6df6b8fc7e3c90f9a39e65fc8 diff --git a/.agents/notes/implemented/architecture/2026-07-06-tool-result-retention-library.md b/.agents/notes/archived/architecture/2026-07-06-tool-result-retention-library.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-07-06-tool-result-retention-library.md rename to .agents/notes/archived/architecture/2026-07-06-tool-result-retention-library.md index 464e3d51a0..5ac8547036 100644 --- a/.agents/notes/implemented/architecture/2026-07-06-tool-result-retention-library.md +++ b/.agents/notes/archived/architecture/2026-07-06-tool-result-retention-library.md @@ -1,6 +1,7 @@ # Agent Note: Tool result retention library Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-06-tool-result-retention-library.zh.md) diff --git a/.agents/notes/implemented/architecture/2026-07-06-tool-result-retention-library.zh.md b/.agents/notes/archived/architecture/2026-07-06-tool-result-retention-library.zh.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-07-06-tool-result-retention-library.zh.md rename to .agents/notes/archived/architecture/2026-07-06-tool-result-retention-library.zh.md index 49361eec4b..b18fdd60f5 100644 --- a/.agents/notes/implemented/architecture/2026-07-06-tool-result-retention-library.zh.md +++ b/.agents/notes/archived/architecture/2026-07-06-tool-result-retention-library.zh.md @@ -1,6 +1,7 @@ # Agent Note: 工具结果保留库 Status: implemented +Archived: 2026-09-04 [English](2026-07-06-tool-result-retention-library.md) | 中文 diff --git a/.agents/notes/archived/architecture/2026-07-12-scoped-layers-store.i18n.yaml b/.agents/notes/archived/architecture/2026-07-12-scoped-layers-store.i18n.yaml new file mode 100644 index 0000000000..33f7697593 --- /dev/null +++ b/.agents/notes/archived/architecture/2026-07-12-scoped-layers-store.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-07-12-scoped-layers-store.md +2026-07-12-scoped-layers-store.md: d3060696ef54c8d06cd0724179dec49682c721e1 +2026-07-12-scoped-layers-store.zh.md: f5482a5a76724128fb445fbd7c21a2f61b8634c1 diff --git a/.agents/notes/implemented/architecture/2026-07-12-scoped-layers-store.md b/.agents/notes/archived/architecture/2026-07-12-scoped-layers-store.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-07-12-scoped-layers-store.md rename to .agents/notes/archived/architecture/2026-07-12-scoped-layers-store.md index 2217117480..d3060696ef 100644 --- a/.agents/notes/implemented/architecture/2026-07-12-scoped-layers-store.md +++ b/.agents/notes/archived/architecture/2026-07-12-scoped-layers-store.md @@ -1,6 +1,7 @@ # Agent Note: Shared scoped-layer storage Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-12-scoped-layers-store.zh.md) diff --git a/.agents/notes/implemented/architecture/2026-07-12-scoped-layers-store.zh.md b/.agents/notes/archived/architecture/2026-07-12-scoped-layers-store.zh.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-07-12-scoped-layers-store.zh.md rename to .agents/notes/archived/architecture/2026-07-12-scoped-layers-store.zh.md index 97ad637b91..f5482a5a76 100644 --- a/.agents/notes/implemented/architecture/2026-07-12-scoped-layers-store.zh.md +++ b/.agents/notes/archived/architecture/2026-07-12-scoped-layers-store.zh.md @@ -1,6 +1,7 @@ # Agent Note: 共享作用域分层存储 Status: implemented +Archived: 2026-09-04 [English](2026-07-12-scoped-layers-store.md) | 中文 diff --git a/.agents/notes/archived/architecture/2026-07-15-llm-model-catalog-and-acp-selection.i18n.yaml b/.agents/notes/archived/architecture/2026-07-15-llm-model-catalog-and-acp-selection.i18n.yaml new file mode 100644 index 0000000000..9b744c2a89 --- /dev/null +++ b/.agents/notes/archived/architecture/2026-07-15-llm-model-catalog-and-acp-selection.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-07-15-llm-model-catalog-and-acp-selection.md +2026-07-15-llm-model-catalog-and-acp-selection.md: c5f6644d4746a8a962e7ab843493fda3862a8c0a +2026-07-15-llm-model-catalog-and-acp-selection.zh.md: 539f2f9a2f9d3d7b48b3ecabca4b401e32c5702c diff --git a/.agents/notes/implemented/architecture/2026-07-15-llm-model-catalog-and-acp-selection.md b/.agents/notes/archived/architecture/2026-07-15-llm-model-catalog-and-acp-selection.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-07-15-llm-model-catalog-and-acp-selection.md rename to .agents/notes/archived/architecture/2026-07-15-llm-model-catalog-and-acp-selection.md index fef23711a9..c5f6644d47 100644 --- a/.agents/notes/implemented/architecture/2026-07-15-llm-model-catalog-and-acp-selection.md +++ b/.agents/notes/archived/architecture/2026-07-15-llm-model-catalog-and-acp-selection.md @@ -1,6 +1,7 @@ # Agent Note: Advisory LLM catalogs and per-session ACP model selection Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-15-llm-model-catalog-and-acp-selection.zh.md) diff --git a/.agents/notes/implemented/architecture/2026-07-15-llm-model-catalog-and-acp-selection.zh.md b/.agents/notes/archived/architecture/2026-07-15-llm-model-catalog-and-acp-selection.zh.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-07-15-llm-model-catalog-and-acp-selection.zh.md rename to .agents/notes/archived/architecture/2026-07-15-llm-model-catalog-and-acp-selection.zh.md index 85e9fa35ac..539f2f9a2f 100644 --- a/.agents/notes/implemented/architecture/2026-07-15-llm-model-catalog-and-acp-selection.zh.md +++ b/.agents/notes/archived/architecture/2026-07-15-llm-model-catalog-and-acp-selection.zh.md @@ -1,6 +1,7 @@ # Agent Note: 建议性 LLM 目录与 ACP 会话级模型选择 Status: implemented +Archived: 2026-09-04 [English](2026-07-15-llm-model-catalog-and-acp-selection.md) | 中文 diff --git a/.agents/notes/archived/architecture/2026-07-15-lsp-capability-seam.i18n.yaml b/.agents/notes/archived/architecture/2026-07-15-lsp-capability-seam.i18n.yaml new file mode 100644 index 0000000000..784eadf0b6 --- /dev/null +++ b/.agents/notes/archived/architecture/2026-07-15-lsp-capability-seam.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-07-15-lsp-capability-seam.md +2026-07-15-lsp-capability-seam.md: 3cce6eb3c7d8afef53aa675440c7eea1e990721d +2026-07-15-lsp-capability-seam.zh.md: c424a794a6662a655565dde6337c49543c5a8085 diff --git a/.agents/notes/implemented/architecture/2026-07-15-lsp-capability-seam.md b/.agents/notes/archived/architecture/2026-07-15-lsp-capability-seam.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-07-15-lsp-capability-seam.md rename to .agents/notes/archived/architecture/2026-07-15-lsp-capability-seam.md index 90f9daf4b8..3cce6eb3c7 100644 --- a/.agents/notes/implemented/architecture/2026-07-15-lsp-capability-seam.md +++ b/.agents/notes/archived/architecture/2026-07-15-lsp-capability-seam.md @@ -1,6 +1,7 @@ # Agent Note: LSP capability seam and model-facing query tool Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-15-lsp-capability-seam.zh.md) diff --git a/.agents/notes/implemented/architecture/2026-07-15-lsp-capability-seam.zh.md b/.agents/notes/archived/architecture/2026-07-15-lsp-capability-seam.zh.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-07-15-lsp-capability-seam.zh.md rename to .agents/notes/archived/architecture/2026-07-15-lsp-capability-seam.zh.md index bdb5e812e9..c424a794a6 100644 --- a/.agents/notes/implemented/architecture/2026-07-15-lsp-capability-seam.zh.md +++ b/.agents/notes/archived/architecture/2026-07-15-lsp-capability-seam.zh.md @@ -1,6 +1,7 @@ # Agent Note: LSP 能力 seam 与面向模型的查询工具 Status: implemented +Archived: 2026-09-04 [English](2026-07-15-lsp-capability-seam.md) | 中文 diff --git a/.agents/notes/archived/architecture/2026-07-15-replay-token-meter-service.i18n.yaml b/.agents/notes/archived/architecture/2026-07-15-replay-token-meter-service.i18n.yaml new file mode 100644 index 0000000000..a8c2931450 --- /dev/null +++ b/.agents/notes/archived/architecture/2026-07-15-replay-token-meter-service.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-07-15-replay-token-meter-service.md +2026-07-15-replay-token-meter-service.md: 1e6832f1bd049a9568b3af3b925211f0665de288 +2026-07-15-replay-token-meter-service.zh.md: 6d00d5e1511aa66818689ccec7d4b023c291f9aa diff --git a/.agents/notes/implemented/architecture/2026-07-15-replay-token-meter-service.md b/.agents/notes/archived/architecture/2026-07-15-replay-token-meter-service.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-07-15-replay-token-meter-service.md rename to .agents/notes/archived/architecture/2026-07-15-replay-token-meter-service.md index 10261189fc..1e6832f1bd 100644 --- a/.agents/notes/implemented/architecture/2026-07-15-replay-token-meter-service.md +++ b/.agents/notes/archived/architecture/2026-07-15-replay-token-meter-service.md @@ -1,6 +1,7 @@ # Agent Note: Replay token meter service Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-15-replay-token-meter-service.zh.md) diff --git a/.agents/notes/implemented/architecture/2026-07-15-replay-token-meter-service.zh.md b/.agents/notes/archived/architecture/2026-07-15-replay-token-meter-service.zh.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-07-15-replay-token-meter-service.zh.md rename to .agents/notes/archived/architecture/2026-07-15-replay-token-meter-service.zh.md index 370d3cf932..6d00d5e151 100644 --- a/.agents/notes/implemented/architecture/2026-07-15-replay-token-meter-service.zh.md +++ b/.agents/notes/archived/architecture/2026-07-15-replay-token-meter-service.zh.md @@ -1,6 +1,7 @@ # Agent Note: 回放式 token 计量服务 Status: implemented +Archived: 2026-09-04 [English](2026-07-15-replay-token-meter-service.md) | 中文 diff --git a/.agents/notes/archived/architecture/2026-07-17-local-spill-startup-cleanup.i18n.yaml b/.agents/notes/archived/architecture/2026-07-17-local-spill-startup-cleanup.i18n.yaml new file mode 100644 index 0000000000..ba08c01846 --- /dev/null +++ b/.agents/notes/archived/architecture/2026-07-17-local-spill-startup-cleanup.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-07-17-local-spill-startup-cleanup.md +2026-07-17-local-spill-startup-cleanup.md: c9567cab8b1193b9ea6dbc0ad3fae2bc18af9656 +2026-07-17-local-spill-startup-cleanup.zh.md: 97f6d641ab7e09da401c5632804f6e27ad78d850 diff --git a/.agents/notes/implemented/architecture/2026-07-17-local-spill-startup-cleanup.md b/.agents/notes/archived/architecture/2026-07-17-local-spill-startup-cleanup.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-07-17-local-spill-startup-cleanup.md rename to .agents/notes/archived/architecture/2026-07-17-local-spill-startup-cleanup.md index fc64938c1a..c9567cab8b 100644 --- a/.agents/notes/implemented/architecture/2026-07-17-local-spill-startup-cleanup.md +++ b/.agents/notes/archived/architecture/2026-07-17-local-spill-startup-cleanup.md @@ -1,6 +1,7 @@ # Agent Note: One-shot startup cleanup for local spill files Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-17-local-spill-startup-cleanup.zh.md) diff --git a/.agents/notes/implemented/architecture/2026-07-17-local-spill-startup-cleanup.zh.md b/.agents/notes/archived/architecture/2026-07-17-local-spill-startup-cleanup.zh.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-07-17-local-spill-startup-cleanup.zh.md rename to .agents/notes/archived/architecture/2026-07-17-local-spill-startup-cleanup.zh.md index 583a33ead8..97f6d641ab 100644 --- a/.agents/notes/implemented/architecture/2026-07-17-local-spill-startup-cleanup.zh.md +++ b/.agents/notes/archived/architecture/2026-07-17-local-spill-startup-cleanup.zh.md @@ -1,6 +1,7 @@ # Agent Note: 本地 spill 文件的一次性启动清理 Status: implemented +Archived: 2026-09-04 [English](2026-07-17-local-spill-startup-cleanup.md) | 中文 diff --git a/.agents/notes/archived/architecture/2026-07-19-package-owned-invariant-service.i18n.yaml b/.agents/notes/archived/architecture/2026-07-19-package-owned-invariant-service.i18n.yaml new file mode 100644 index 0000000000..2f6c7d0eae --- /dev/null +++ b/.agents/notes/archived/architecture/2026-07-19-package-owned-invariant-service.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-07-19-package-owned-invariant-service.md +2026-07-19-package-owned-invariant-service.md: 6ebdd0edbe04766280fb9aae7067ba861b2ce010 +2026-07-19-package-owned-invariant-service.zh.md: dde72faed7249d64b939aaca1bc5d452eeed7bde diff --git a/.agents/notes/implemented/architecture/2026-07-19-package-owned-invariant-service.md b/.agents/notes/archived/architecture/2026-07-19-package-owned-invariant-service.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-07-19-package-owned-invariant-service.md rename to .agents/notes/archived/architecture/2026-07-19-package-owned-invariant-service.md index b955c99a25..6ebdd0edbe 100644 --- a/.agents/notes/implemented/architecture/2026-07-19-package-owned-invariant-service.md +++ b/.agents/notes/archived/architecture/2026-07-19-package-owned-invariant-service.md @@ -1,6 +1,7 @@ # Agent Note: Package-owned invariant service contract Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-19-package-owned-invariant-service.zh.md) diff --git a/.agents/notes/implemented/architecture/2026-07-19-package-owned-invariant-service.zh.md b/.agents/notes/archived/architecture/2026-07-19-package-owned-invariant-service.zh.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-07-19-package-owned-invariant-service.zh.md rename to .agents/notes/archived/architecture/2026-07-19-package-owned-invariant-service.zh.md index 4fc0fb5d61..dde72faed7 100644 --- a/.agents/notes/implemented/architecture/2026-07-19-package-owned-invariant-service.zh.md +++ b/.agents/notes/archived/architecture/2026-07-19-package-owned-invariant-service.zh.md @@ -1,6 +1,7 @@ # Agent Note: 包拥有的不变式服务约定 Status: implemented +Archived: 2026-09-04 [English](2026-07-19-package-owned-invariant-service.md) | 中文 diff --git a/.agents/notes/archived/architecture/2026-07-20-todo-event-ownership.i18n.yaml b/.agents/notes/archived/architecture/2026-07-20-todo-event-ownership.i18n.yaml new file mode 100644 index 0000000000..046b32c4c0 --- /dev/null +++ b/.agents/notes/archived/architecture/2026-07-20-todo-event-ownership.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-07-20-todo-event-ownership.md +2026-07-20-todo-event-ownership.md: 3dfcd604393d05265eb895fa50647338830bd38f +2026-07-20-todo-event-ownership.zh.md: 8dabf8f0cde4ad8af325b00eb1be9d7b7011233f diff --git a/.agents/notes/implemented/architecture/2026-07-20-todo-event-ownership.md b/.agents/notes/archived/architecture/2026-07-20-todo-event-ownership.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-07-20-todo-event-ownership.md rename to .agents/notes/archived/architecture/2026-07-20-todo-event-ownership.md index f3f7f872b2..3dfcd60439 100644 --- a/.agents/notes/implemented/architecture/2026-07-20-todo-event-ownership.md +++ b/.agents/notes/archived/architecture/2026-07-20-todo-event-ownership.md @@ -1,6 +1,7 @@ # Agent Note: todo event types belong to their producer Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-20-todo-event-ownership.zh.md) diff --git a/.agents/notes/implemented/architecture/2026-07-20-todo-event-ownership.zh.md b/.agents/notes/archived/architecture/2026-07-20-todo-event-ownership.zh.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-07-20-todo-event-ownership.zh.md rename to .agents/notes/archived/architecture/2026-07-20-todo-event-ownership.zh.md index a05622dc39..8dabf8f0cd 100644 --- a/.agents/notes/implemented/architecture/2026-07-20-todo-event-ownership.zh.md +++ b/.agents/notes/archived/architecture/2026-07-20-todo-event-ownership.zh.md @@ -1,6 +1,7 @@ # Agent Note: todo 事件类型归其生产方所有 Status: implemented +Archived: 2026-09-04 [English](2026-07-20-todo-event-ownership.md) | 中文 diff --git a/.agents/notes/archived/architecture/2026-07-22-unified-send-and-coalesced-user-messages.i18n.yaml b/.agents/notes/archived/architecture/2026-07-22-unified-send-and-coalesced-user-messages.i18n.yaml new file mode 100644 index 0000000000..4bd81da88d --- /dev/null +++ b/.agents/notes/archived/architecture/2026-07-22-unified-send-and-coalesced-user-messages.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-07-22-unified-send-and-coalesced-user-messages.md +2026-07-22-unified-send-and-coalesced-user-messages.md: d2e39f4efd122d9e0dbb45a082779afa2ff42941 +2026-07-22-unified-send-and-coalesced-user-messages.zh.md: 37c43fcb7bfa81b177e8ed00876e913e3ddf6ad6 diff --git a/.agents/notes/implemented/architecture/2026-07-22-unified-send-and-coalesced-user-messages.md b/.agents/notes/archived/architecture/2026-07-22-unified-send-and-coalesced-user-messages.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-07-22-unified-send-and-coalesced-user-messages.md rename to .agents/notes/archived/architecture/2026-07-22-unified-send-and-coalesced-user-messages.md index bc195e77c7..d2e39f4efd 100644 --- a/.agents/notes/implemented/architecture/2026-07-22-unified-send-and-coalesced-user-messages.md +++ b/.agents/notes/archived/architecture/2026-07-22-unified-send-and-coalesced-user-messages.md @@ -1,6 +1,7 @@ # Agent Note: Unify agent delivery on send(target × wakeup) and coalesce injected context into user/message Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-22-unified-send-and-coalesced-user-messages.zh.md) diff --git a/.agents/notes/implemented/architecture/2026-07-22-unified-send-and-coalesced-user-messages.zh.md b/.agents/notes/archived/architecture/2026-07-22-unified-send-and-coalesced-user-messages.zh.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-07-22-unified-send-and-coalesced-user-messages.zh.md rename to .agents/notes/archived/architecture/2026-07-22-unified-send-and-coalesced-user-messages.zh.md index 414b5542aa..37c43fcb7b 100644 --- a/.agents/notes/implemented/architecture/2026-07-22-unified-send-and-coalesced-user-messages.zh.md +++ b/.agents/notes/archived/architecture/2026-07-22-unified-send-and-coalesced-user-messages.zh.md @@ -1,6 +1,7 @@ # Agent Note: 将 agent 投递统一到 send(target × wakeup) 并把注入的上下文合并进 user/message Status: implemented +Archived: 2026-09-04 [English](2026-07-22-unified-send-and-coalesced-user-messages.md) | 中文 diff --git a/.agents/notes/archived/architecture/2026-07-23-toolview-dissolution.i18n.yaml b/.agents/notes/archived/architecture/2026-07-23-toolview-dissolution.i18n.yaml new file mode 100644 index 0000000000..6452aef196 --- /dev/null +++ b/.agents/notes/archived/architecture/2026-07-23-toolview-dissolution.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-07-23-toolview-dissolution.md +2026-07-23-toolview-dissolution.md: d84255f697886556a46c0511aa89f2c4bfd886d8 +2026-07-23-toolview-dissolution.zh.md: 9ae339361193a9b97f7bba44904af0c01e7f3fa0 diff --git a/.agents/notes/implemented/architecture/2026-07-23-toolview-dissolution.md b/.agents/notes/archived/architecture/2026-07-23-toolview-dissolution.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-07-23-toolview-dissolution.md rename to .agents/notes/archived/architecture/2026-07-23-toolview-dissolution.md index 3e38d2faf4..d84255f697 100644 --- a/.agents/notes/implemented/architecture/2026-07-23-toolview-dissolution.md +++ b/.agents/notes/archived/architecture/2026-07-23-toolview-dissolution.md @@ -1,6 +1,7 @@ # Agent Note: Toolview dissolution — tool rows are per-view keyed slots Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-23-toolview-dissolution.zh.md) diff --git a/.agents/notes/implemented/architecture/2026-07-23-toolview-dissolution.zh.md b/.agents/notes/archived/architecture/2026-07-23-toolview-dissolution.zh.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-07-23-toolview-dissolution.zh.md rename to .agents/notes/archived/architecture/2026-07-23-toolview-dissolution.zh.md index 79c1f7d763..9ae3393611 100644 --- a/.agents/notes/implemented/architecture/2026-07-23-toolview-dissolution.zh.md +++ b/.agents/notes/archived/architecture/2026-07-23-toolview-dissolution.zh.md @@ -1,6 +1,7 @@ # Agent Note: toolview 溶解——工具行即 per-view keyed slot Status: implemented +Archived: 2026-09-04 [English](2026-07-23-toolview-dissolution.md) | 中文 diff --git a/.agents/notes/implemented/architecture/2026-08-04-credentials-yaml-and-user-environment-layer.i18n.yaml b/.agents/notes/archived/architecture/2026-07-24-adapter-owned-reasoning-effort-capabilities.i18n.yaml similarity index 52% rename from .agents/notes/implemented/architecture/2026-08-04-credentials-yaml-and-user-environment-layer.i18n.yaml rename to .agents/notes/archived/architecture/2026-07-24-adapter-owned-reasoning-effort-capabilities.i18n.yaml index 17ca2caee4..68f7edf2ee 100644 --- a/.agents/notes/implemented/architecture/2026-08-04-credentials-yaml-and-user-environment-layer.i18n.yaml +++ b/.agents/notes/archived/architecture/2026-07-24-adapter-owned-reasoning-effort-capabilities.i18n.yaml @@ -1,6 +1,6 @@ # Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-08-04-credentials-yaml-and-user-environment-layer.md -2026-08-04-credentials-yaml-and-user-environment-layer.md: 44bdea243671093b34a6338ed1c95bf25bcc78f4 -2026-08-04-credentials-yaml-and-user-environment-layer.zh.md: 4d2893c57bfdf8bbd1529cc0ba8336dbc3ecd233 +# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-07-24-adapter-owned-reasoning-effort-capabilities.md +2026-07-24-adapter-owned-reasoning-effort-capabilities.md: f5c240145dc7f405f8bc1f66b6b5f7f68991eb80 +2026-07-24-adapter-owned-reasoning-effort-capabilities.zh.md: 81994d4908bd9531cc7db35634bf768372ace1d7 diff --git a/.agents/notes/implemented/architecture/2026-07-24-adapter-owned-reasoning-effort-capabilities.md b/.agents/notes/archived/architecture/2026-07-24-adapter-owned-reasoning-effort-capabilities.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-07-24-adapter-owned-reasoning-effort-capabilities.md rename to .agents/notes/archived/architecture/2026-07-24-adapter-owned-reasoning-effort-capabilities.md index f59e5d3519..f5c240145d 100644 --- a/.agents/notes/implemented/architecture/2026-07-24-adapter-owned-reasoning-effort-capabilities.md +++ b/.agents/notes/archived/architecture/2026-07-24-adapter-owned-reasoning-effort-capabilities.md @@ -1,6 +1,7 @@ # Agent Note: Adapter-owned reasoning effort capabilities Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-24-adapter-owned-reasoning-effort-capabilities.zh.md) diff --git a/.agents/notes/implemented/architecture/2026-07-24-adapter-owned-reasoning-effort-capabilities.zh.md b/.agents/notes/archived/architecture/2026-07-24-adapter-owned-reasoning-effort-capabilities.zh.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-07-24-adapter-owned-reasoning-effort-capabilities.zh.md rename to .agents/notes/archived/architecture/2026-07-24-adapter-owned-reasoning-effort-capabilities.zh.md index 6e657a90e8..81994d4908 100644 --- a/.agents/notes/implemented/architecture/2026-07-24-adapter-owned-reasoning-effort-capabilities.zh.md +++ b/.agents/notes/archived/architecture/2026-07-24-adapter-owned-reasoning-effort-capabilities.zh.md @@ -1,6 +1,7 @@ # Agent Note: 适配器持有的推理强度能力 Status: implemented +Archived: 2026-09-04 [English](2026-07-24-adapter-owned-reasoning-effort-capabilities.md) | 中文 diff --git a/.agents/notes/archived/architecture/2026-07-25-web-command-surfaces-and-assembly.i18n.yaml b/.agents/notes/archived/architecture/2026-07-25-web-command-surfaces-and-assembly.i18n.yaml new file mode 100644 index 0000000000..b996f7b2b3 --- /dev/null +++ b/.agents/notes/archived/architecture/2026-07-25-web-command-surfaces-and-assembly.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-07-25-web-command-surfaces-and-assembly.md +2026-07-25-web-command-surfaces-and-assembly.md: bfb7d2697a979efc8101581d42f4ab223d1b1e97 +2026-07-25-web-command-surfaces-and-assembly.zh.md: d81f70403d22efb2203bbe221a45035fc3d6503f diff --git a/.agents/notes/implemented/architecture/2026-07-25-web-command-surfaces-and-assembly.md b/.agents/notes/archived/architecture/2026-07-25-web-command-surfaces-and-assembly.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-07-25-web-command-surfaces-and-assembly.md rename to .agents/notes/archived/architecture/2026-07-25-web-command-surfaces-and-assembly.md index 943b68416d..bfb7d2697a 100644 --- a/.agents/notes/implemented/architecture/2026-07-25-web-command-surfaces-and-assembly.md +++ b/.agents/notes/archived/architecture/2026-07-25-web-command-surfaces-and-assembly.md @@ -1,6 +1,7 @@ # Agent Note: Web command business surfaces and assembly (ui-commands / ui-skill / ui-subagent) Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-25-web-command-surfaces-and-assembly.zh.md) diff --git a/.agents/notes/implemented/architecture/2026-07-25-web-command-surfaces-and-assembly.zh.md b/.agents/notes/archived/architecture/2026-07-25-web-command-surfaces-and-assembly.zh.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-07-25-web-command-surfaces-and-assembly.zh.md rename to .agents/notes/archived/architecture/2026-07-25-web-command-surfaces-and-assembly.zh.md index c35d472028..d81f70403d 100644 --- a/.agents/notes/implemented/architecture/2026-07-25-web-command-surfaces-and-assembly.zh.md +++ b/.agents/notes/archived/architecture/2026-07-25-web-command-surfaces-and-assembly.zh.md @@ -1,6 +1,7 @@ # Agent Note: Web 命令业务面与装配(ui-commands / ui-skill / ui-subagent) Status: implemented +Archived: 2026-09-04 [English](2026-07-25-web-command-surfaces-and-assembly.md) | 中文 diff --git a/.agents/notes/archived/architecture/2026-07-25-web-input-machine-and-slash-pipeline.i18n.yaml b/.agents/notes/archived/architecture/2026-07-25-web-input-machine-and-slash-pipeline.i18n.yaml new file mode 100644 index 0000000000..a81a19637a --- /dev/null +++ b/.agents/notes/archived/architecture/2026-07-25-web-input-machine-and-slash-pipeline.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-07-25-web-input-machine-and-slash-pipeline.md +2026-07-25-web-input-machine-and-slash-pipeline.md: b6d485d495717770ebb5148880b3c8c1cb23b948 +2026-07-25-web-input-machine-and-slash-pipeline.zh.md: 69ed9a40f4dd9a316f147e3077c9167e1ee46eeb diff --git a/.agents/notes/implemented/architecture/2026-07-25-web-input-machine-and-slash-pipeline.md b/.agents/notes/archived/architecture/2026-07-25-web-input-machine-and-slash-pipeline.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-07-25-web-input-machine-and-slash-pipeline.md rename to .agents/notes/archived/architecture/2026-07-25-web-input-machine-and-slash-pipeline.md index 1b9e9d95b5..b6d485d495 100644 --- a/.agents/notes/implemented/architecture/2026-07-25-web-input-machine-and-slash-pipeline.md +++ b/.agents/notes/archived/architecture/2026-07-25-web-input-machine-and-slash-pipeline.md @@ -1,6 +1,7 @@ # Agent Note: Web input state machine, composer slots, and the slash pipeline (ui-conversation input / ui-input-trigger) Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-25-web-input-machine-and-slash-pipeline.zh.md) diff --git a/.agents/notes/implemented/architecture/2026-07-25-web-input-machine-and-slash-pipeline.zh.md b/.agents/notes/archived/architecture/2026-07-25-web-input-machine-and-slash-pipeline.zh.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-07-25-web-input-machine-and-slash-pipeline.zh.md rename to .agents/notes/archived/architecture/2026-07-25-web-input-machine-and-slash-pipeline.zh.md index c9bee217da..69ed9a40f4 100644 --- a/.agents/notes/implemented/architecture/2026-07-25-web-input-machine-and-slash-pipeline.zh.md +++ b/.agents/notes/archived/architecture/2026-07-25-web-input-machine-and-slash-pipeline.zh.md @@ -1,6 +1,7 @@ # Agent Note: Web 输入状态机、composer slot 与 slash 流水线(ui-conversation input / ui-input-trigger) Status: implemented +Archived: 2026-09-04 [English](2026-07-25-web-input-machine-and-slash-pipeline.md) | 中文 diff --git a/.agents/notes/archived/architecture/2026-07-26-job-registry-seam.i18n.yaml b/.agents/notes/archived/architecture/2026-07-26-job-registry-seam.i18n.yaml new file mode 100644 index 0000000000..f35b1f8f51 --- /dev/null +++ b/.agents/notes/archived/architecture/2026-07-26-job-registry-seam.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-07-26-job-registry-seam.md +2026-07-26-job-registry-seam.md: d1a8cfb7bc4f1a8e313dfa8d59a5d0e5f8106190 +2026-07-26-job-registry-seam.zh.md: 1624a410407d8e6ac8cc85a6fe1480e0867eef6d diff --git a/.agents/notes/implemented/architecture/2026-07-26-job-registry-seam.md b/.agents/notes/archived/architecture/2026-07-26-job-registry-seam.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-07-26-job-registry-seam.md rename to .agents/notes/archived/architecture/2026-07-26-job-registry-seam.md index 2040b3a40d..d1a8cfb7bc 100644 --- a/.agents/notes/implemented/architecture/2026-07-26-job-registry-seam.md +++ b/.agents/notes/archived/architecture/2026-07-26-job-registry-seam.md @@ -1,6 +1,7 @@ # Agent Note: The job registry is a capability seam (`dsh-jobs` / `dsh-jobs-local`) Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-26-job-registry-seam.zh.md) diff --git a/.agents/notes/implemented/architecture/2026-07-26-job-registry-seam.zh.md b/.agents/notes/archived/architecture/2026-07-26-job-registry-seam.zh.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-07-26-job-registry-seam.zh.md rename to .agents/notes/archived/architecture/2026-07-26-job-registry-seam.zh.md index 12785584f6..1624a41040 100644 --- a/.agents/notes/implemented/architecture/2026-07-26-job-registry-seam.zh.md +++ b/.agents/notes/archived/architecture/2026-07-26-job-registry-seam.zh.md @@ -1,6 +1,7 @@ # Agent Note: 任务注册表是一个能力 seam(`dsh-jobs` / `dsh-jobs-local`) Status: implemented +Archived: 2026-09-04 [English](2026-07-26-job-registry-seam.md) | 中文 diff --git a/.agents/notes/archived/architecture/2026-07-26-subprocess-seam.i18n.yaml b/.agents/notes/archived/architecture/2026-07-26-subprocess-seam.i18n.yaml new file mode 100644 index 0000000000..9768e011a7 --- /dev/null +++ b/.agents/notes/archived/architecture/2026-07-26-subprocess-seam.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-07-26-subprocess-seam.md +2026-07-26-subprocess-seam.md: bd8cba2197a56acef2ab12e9b43e254fbc744ee5 +2026-07-26-subprocess-seam.zh.md: ba23649e9e68f578bdc9ba26a026981d0afe981f diff --git a/.agents/notes/implemented/architecture/2026-07-26-subprocess-seam.md b/.agents/notes/archived/architecture/2026-07-26-subprocess-seam.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-07-26-subprocess-seam.md rename to .agents/notes/archived/architecture/2026-07-26-subprocess-seam.md index aa7a989a03..bd8cba2197 100644 --- a/.agents/notes/implemented/architecture/2026-07-26-subprocess-seam.md +++ b/.agents/notes/archived/architecture/2026-07-26-subprocess-seam.md @@ -1,6 +1,7 @@ # Agent Note: The subprocess service is its own seam under the bash executors (`dsh-subprocess` / `dsh-subprocess-local`) Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-26-subprocess-seam.zh.md) diff --git a/.agents/notes/implemented/architecture/2026-07-26-subprocess-seam.zh.md b/.agents/notes/archived/architecture/2026-07-26-subprocess-seam.zh.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-07-26-subprocess-seam.zh.md rename to .agents/notes/archived/architecture/2026-07-26-subprocess-seam.zh.md index bb9755957f..ba23649e9e 100644 --- a/.agents/notes/implemented/architecture/2026-07-26-subprocess-seam.zh.md +++ b/.agents/notes/archived/architecture/2026-07-26-subprocess-seam.zh.md @@ -1,6 +1,7 @@ # Agent Note: 进程服务是 bash 执行器之下的独立 seam(`dsh-subprocess` / `dsh-subprocess-local`) Status: implemented +Archived: 2026-09-04 [English](2026-07-26-subprocess-seam.md) | 中文 diff --git a/.agents/notes/archived/architecture/2026-07-27-dispose-ladder-to-consumer.i18n.yaml b/.agents/notes/archived/architecture/2026-07-27-dispose-ladder-to-consumer.i18n.yaml new file mode 100644 index 0000000000..f019150470 --- /dev/null +++ b/.agents/notes/archived/architecture/2026-07-27-dispose-ladder-to-consumer.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-07-27-dispose-ladder-to-consumer.md +2026-07-27-dispose-ladder-to-consumer.md: 7e1b189c1d3a32c6f812bba5d5f06f7a6a89c29b +2026-07-27-dispose-ladder-to-consumer.zh.md: 6c61cad5d4a62c5c976894f72d0ff5e9c69184bc diff --git a/.agents/notes/implemented/architecture/2026-07-27-dispose-ladder-to-consumer.md b/.agents/notes/archived/architecture/2026-07-27-dispose-ladder-to-consumer.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-07-27-dispose-ladder-to-consumer.md rename to .agents/notes/archived/architecture/2026-07-27-dispose-ladder-to-consumer.md index 58d835864d..7e1b189c1d 100644 --- a/.agents/notes/implemented/architecture/2026-07-27-dispose-ladder-to-consumer.md +++ b/.agents/notes/archived/architecture/2026-07-27-dispose-ladder-to-consumer.md @@ -1,6 +1,7 @@ # Agent Note: The dispose ladder belongs to its consumer, not the subprocess seam Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-27-dispose-ladder-to-consumer.zh.md) diff --git a/.agents/notes/implemented/architecture/2026-07-27-dispose-ladder-to-consumer.zh.md b/.agents/notes/archived/architecture/2026-07-27-dispose-ladder-to-consumer.zh.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-07-27-dispose-ladder-to-consumer.zh.md rename to .agents/notes/archived/architecture/2026-07-27-dispose-ladder-to-consumer.zh.md index dc7413e85f..6c61cad5d4 100644 --- a/.agents/notes/implemented/architecture/2026-07-27-dispose-ladder-to-consumer.zh.md +++ b/.agents/notes/archived/architecture/2026-07-27-dispose-ladder-to-consumer.zh.md @@ -1,6 +1,7 @@ # Agent Note: dispose 阶梯归其消费方所有,而非 subprocess seam Status: implemented +Archived: 2026-09-04 [English](2026-07-27-dispose-ladder-to-consumer.md) | 中文 diff --git a/.agents/notes/archived/architecture/2026-07-28-directory-picker-capability-seam.i18n.yaml b/.agents/notes/archived/architecture/2026-07-28-directory-picker-capability-seam.i18n.yaml new file mode 100644 index 0000000000..8d2ede5216 --- /dev/null +++ b/.agents/notes/archived/architecture/2026-07-28-directory-picker-capability-seam.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-07-28-directory-picker-capability-seam.md +2026-07-28-directory-picker-capability-seam.md: e2f3312b7429078eb81cba62ab1727e71fe67b74 +2026-07-28-directory-picker-capability-seam.zh.md: 41a05febe58c353242cc389e20bbf84b3620b7c9 diff --git a/.agents/notes/implemented/architecture/2026-07-28-directory-picker-capability-seam.md b/.agents/notes/archived/architecture/2026-07-28-directory-picker-capability-seam.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-07-28-directory-picker-capability-seam.md rename to .agents/notes/archived/architecture/2026-07-28-directory-picker-capability-seam.md index 10ab8e393d..e2f3312b74 100644 --- a/.agents/notes/implemented/architecture/2026-07-28-directory-picker-capability-seam.md +++ b/.agents/notes/archived/architecture/2026-07-28-directory-picker-capability-seam.md @@ -1,6 +1,7 @@ # Agent Note: A capability-discriminated directory-picker seam for the web-GUI host Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-28-directory-picker-capability-seam.zh.md) diff --git a/.agents/notes/implemented/architecture/2026-07-28-directory-picker-capability-seam.zh.md b/.agents/notes/archived/architecture/2026-07-28-directory-picker-capability-seam.zh.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-07-28-directory-picker-capability-seam.zh.md rename to .agents/notes/archived/architecture/2026-07-28-directory-picker-capability-seam.zh.md index 8764dc208b..41a05febe5 100644 --- a/.agents/notes/implemented/architecture/2026-07-28-directory-picker-capability-seam.zh.md +++ b/.agents/notes/archived/architecture/2026-07-28-directory-picker-capability-seam.zh.md @@ -1,6 +1,7 @@ # Agent Note: web GUI 宿主的能力可辨识目录选择 seam Status: implemented +Archived: 2026-09-04 [English](2026-07-28-directory-picker-capability-seam.md) | 中文 diff --git a/.agents/notes/archived/architecture/2026-07-28-user-settings-seam.i18n.yaml b/.agents/notes/archived/architecture/2026-07-28-user-settings-seam.i18n.yaml new file mode 100644 index 0000000000..efd2250a7d --- /dev/null +++ b/.agents/notes/archived/architecture/2026-07-28-user-settings-seam.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-07-28-user-settings-seam.md +2026-07-28-user-settings-seam.md: 75fef5ed976d80acb4e26133c2b98d8504042121 +2026-07-28-user-settings-seam.zh.md: 9797e5a3288a7709f3541784778c514890015410 diff --git a/.agents/notes/implemented/architecture/2026-07-28-user-settings-seam.md b/.agents/notes/archived/architecture/2026-07-28-user-settings-seam.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-07-28-user-settings-seam.md rename to .agents/notes/archived/architecture/2026-07-28-user-settings-seam.md index 686c98d890..75fef5ed97 100644 --- a/.agents/notes/implemented/architecture/2026-07-28-user-settings-seam.md +++ b/.agents/notes/archived/architecture/2026-07-28-user-settings-seam.md @@ -1,6 +1,7 @@ # Agent Note: user-settings seam (`ctx.settings`) and the file provider Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-28-user-settings-seam.zh.md) diff --git a/.agents/notes/implemented/architecture/2026-07-28-user-settings-seam.zh.md b/.agents/notes/archived/architecture/2026-07-28-user-settings-seam.zh.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-07-28-user-settings-seam.zh.md rename to .agents/notes/archived/architecture/2026-07-28-user-settings-seam.zh.md index 85287634ba..9797e5a328 100644 --- a/.agents/notes/implemented/architecture/2026-07-28-user-settings-seam.zh.md +++ b/.agents/notes/archived/architecture/2026-07-28-user-settings-seam.zh.md @@ -1,6 +1,7 @@ # Agent Note: 用户设置 seam(`ctx.settings`)与文件提供方 Status: implemented +Archived: 2026-09-04 [English](2026-07-28-user-settings-seam.md) | 中文 diff --git a/.agents/notes/archived/architecture/2026-07-29-package-regrouping.i18n.yaml b/.agents/notes/archived/architecture/2026-07-29-package-regrouping.i18n.yaml new file mode 100644 index 0000000000..d5db06f13d --- /dev/null +++ b/.agents/notes/archived/architecture/2026-07-29-package-regrouping.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-07-29-package-regrouping.md +2026-07-29-package-regrouping.md: 7073d868fe73f75477cf9a6fa2c5f7c425d014a8 +2026-07-29-package-regrouping.zh.md: b33ecf1600ce9c9796e932c14c5df9782bb3a94b diff --git a/.agents/notes/implemented/architecture/2026-07-29-package-regrouping.md b/.agents/notes/archived/architecture/2026-07-29-package-regrouping.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-07-29-package-regrouping.md rename to .agents/notes/archived/architecture/2026-07-29-package-regrouping.md index 2d585547db..7073d868fe 100644 --- a/.agents/notes/implemented/architecture/2026-07-29-package-regrouping.md +++ b/.agents/notes/archived/architecture/2026-07-29-package-regrouping.md @@ -1,6 +1,7 @@ # Agent Note: Regroup packages/ by measured clustering Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-29-package-regrouping.zh.md) diff --git a/.agents/notes/implemented/architecture/2026-07-29-package-regrouping.zh.md b/.agents/notes/archived/architecture/2026-07-29-package-regrouping.zh.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-07-29-package-regrouping.zh.md rename to .agents/notes/archived/architecture/2026-07-29-package-regrouping.zh.md index 0667bff7e0..b33ecf1600 100644 --- a/.agents/notes/implemented/architecture/2026-07-29-package-regrouping.zh.md +++ b/.agents/notes/archived/architecture/2026-07-29-package-regrouping.zh.md @@ -1,6 +1,7 @@ # Agent Note: 按实测聚类重新划分 packages/ 分组 Status: implemented +Archived: 2026-09-04 [English](2026-07-29-package-regrouping.md) | 中文 diff --git a/.agents/notes/archived/architecture/2026-07-29-request-level-llm-config-credentials.i18n.yaml b/.agents/notes/archived/architecture/2026-07-29-request-level-llm-config-credentials.i18n.yaml new file mode 100644 index 0000000000..1730769009 --- /dev/null +++ b/.agents/notes/archived/architecture/2026-07-29-request-level-llm-config-credentials.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-07-29-request-level-llm-config-credentials.md +2026-07-29-request-level-llm-config-credentials.md: dda5cd6710ad432a25bce1214078098f4e797559 +2026-07-29-request-level-llm-config-credentials.zh.md: e521920586c8fe9d3a498e0369d1693096562973 diff --git a/.agents/notes/implemented/architecture/2026-07-29-request-level-llm-config-credentials.md b/.agents/notes/archived/architecture/2026-07-29-request-level-llm-config-credentials.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-07-29-request-level-llm-config-credentials.md rename to .agents/notes/archived/architecture/2026-07-29-request-level-llm-config-credentials.md index d929d286d7..dda5cd6710 100644 --- a/.agents/notes/implemented/architecture/2026-07-29-request-level-llm-config-credentials.md +++ b/.agents/notes/archived/architecture/2026-07-29-request-level-llm-config-credentials.md @@ -1,6 +1,7 @@ # Agent Note: request-level LLM configuration and the credential seam Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-29-request-level-llm-config-credentials.zh.md) diff --git a/.agents/notes/implemented/architecture/2026-07-29-request-level-llm-config-credentials.zh.md b/.agents/notes/archived/architecture/2026-07-29-request-level-llm-config-credentials.zh.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-07-29-request-level-llm-config-credentials.zh.md rename to .agents/notes/archived/architecture/2026-07-29-request-level-llm-config-credentials.zh.md index 6455ee7c10..e521920586 100644 --- a/.agents/notes/implemented/architecture/2026-07-29-request-level-llm-config-credentials.zh.md +++ b/.agents/notes/archived/architecture/2026-07-29-request-level-llm-config-credentials.zh.md @@ -1,6 +1,7 @@ # Agent Note: 请求级 LLM 配置与凭据 seam Status: implemented +Archived: 2026-09-04 [English](2026-07-29-request-level-llm-config-credentials.md) | 中文 diff --git a/.agents/notes/archived/architecture/2026-07-30-adapter-owned-max-token-defaults.i18n.yaml b/.agents/notes/archived/architecture/2026-07-30-adapter-owned-max-token-defaults.i18n.yaml new file mode 100644 index 0000000000..113f68ee4e --- /dev/null +++ b/.agents/notes/archived/architecture/2026-07-30-adapter-owned-max-token-defaults.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-07-30-adapter-owned-max-token-defaults.md +2026-07-30-adapter-owned-max-token-defaults.md: 30b1840a9ff80092609698e63d061a7d82503e5d +2026-07-30-adapter-owned-max-token-defaults.zh.md: 770c61ce1514fa8e16d4cbabed4dd97b5b7b40fb diff --git a/.agents/notes/implemented/architecture/2026-07-30-adapter-owned-max-token-defaults.md b/.agents/notes/archived/architecture/2026-07-30-adapter-owned-max-token-defaults.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-07-30-adapter-owned-max-token-defaults.md rename to .agents/notes/archived/architecture/2026-07-30-adapter-owned-max-token-defaults.md index ec6a68b74d..30b1840a9f 100644 --- a/.agents/notes/implemented/architecture/2026-07-30-adapter-owned-max-token-defaults.md +++ b/.agents/notes/archived/architecture/2026-07-30-adapter-owned-max-token-defaults.md @@ -1,6 +1,7 @@ # Agent Note: Adapter-owned max-token defaults Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-30-adapter-owned-max-token-defaults.zh.md) diff --git a/.agents/notes/implemented/architecture/2026-07-30-adapter-owned-max-token-defaults.zh.md b/.agents/notes/archived/architecture/2026-07-30-adapter-owned-max-token-defaults.zh.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-07-30-adapter-owned-max-token-defaults.zh.md rename to .agents/notes/archived/architecture/2026-07-30-adapter-owned-max-token-defaults.zh.md index 700d90125c..770c61ce15 100644 --- a/.agents/notes/implemented/architecture/2026-07-30-adapter-owned-max-token-defaults.zh.md +++ b/.agents/notes/archived/architecture/2026-07-30-adapter-owned-max-token-defaults.zh.md @@ -1,6 +1,7 @@ # Agent Note: 适配器持有的最大 token 默认值 Status: implemented +Archived: 2026-09-04 [English](2026-07-30-adapter-owned-max-token-defaults.md) | 中文 diff --git a/.agents/notes/archived/architecture/2026-07-30-client-locale-full-rollout.i18n.yaml b/.agents/notes/archived/architecture/2026-07-30-client-locale-full-rollout.i18n.yaml new file mode 100644 index 0000000000..5102884776 --- /dev/null +++ b/.agents/notes/archived/architecture/2026-07-30-client-locale-full-rollout.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-07-30-client-locale-full-rollout.md +2026-07-30-client-locale-full-rollout.md: 381a0ed642d7452cb4be2c9a755bf33c120cba76 +2026-07-30-client-locale-full-rollout.zh.md: 81ae013e86c6ecb608a15c3664c5203233e27e40 diff --git a/.agents/notes/implemented/architecture/2026-07-30-client-locale-full-rollout.md b/.agents/notes/archived/architecture/2026-07-30-client-locale-full-rollout.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-07-30-client-locale-full-rollout.md rename to .agents/notes/archived/architecture/2026-07-30-client-locale-full-rollout.md index 2d7c919d42..381a0ed642 100644 --- a/.agents/notes/implemented/architecture/2026-07-30-client-locale-full-rollout.md +++ b/.agents/notes/archived/architecture/2026-07-30-client-locale-full-rollout.md @@ -1,6 +1,7 @@ # Agent Note: Full client copy rollout onto the typed locale seat Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-30-client-locale-full-rollout.zh.md) diff --git a/.agents/notes/implemented/architecture/2026-07-30-client-locale-full-rollout.zh.md b/.agents/notes/archived/architecture/2026-07-30-client-locale-full-rollout.zh.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-07-30-client-locale-full-rollout.zh.md rename to .agents/notes/archived/architecture/2026-07-30-client-locale-full-rollout.zh.md index 8546d06a36..81ae013e86 100644 --- a/.agents/notes/implemented/architecture/2026-07-30-client-locale-full-rollout.zh.md +++ b/.agents/notes/archived/architecture/2026-07-30-client-locale-full-rollout.zh.md @@ -1,6 +1,7 @@ # Agent Note: client 文案全量接入 typed locale 席位 Status: implemented +Archived: 2026-09-04 [English](2026-07-30-client-locale-full-rollout.md) | 中文 diff --git a/.agents/notes/archived/architecture/2026-07-30-command-row-copy-contract.i18n.yaml b/.agents/notes/archived/architecture/2026-07-30-command-row-copy-contract.i18n.yaml new file mode 100644 index 0000000000..29acf59393 --- /dev/null +++ b/.agents/notes/archived/architecture/2026-07-30-command-row-copy-contract.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-07-30-command-row-copy-contract.md +2026-07-30-command-row-copy-contract.md: e5f1828e433015a1381ae4f7951c518bb6040107 +2026-07-30-command-row-copy-contract.zh.md: 7efe1aa65ddd992e64807e229b1da682f5bc320b diff --git a/.agents/notes/implemented/architecture/2026-07-30-command-row-copy-contract.md b/.agents/notes/archived/architecture/2026-07-30-command-row-copy-contract.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-07-30-command-row-copy-contract.md rename to .agents/notes/archived/architecture/2026-07-30-command-row-copy-contract.md index d410adf62d..e5f1828e43 100644 --- a/.agents/notes/implemented/architecture/2026-07-30-command-row-copy-contract.md +++ b/.agents/notes/archived/architecture/2026-07-30-command-row-copy-contract.md @@ -1,6 +1,7 @@ # Agent Note: Command row copy is split between the row and the handler Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-30-command-row-copy-contract.zh.md) diff --git a/.agents/notes/implemented/architecture/2026-07-30-command-row-copy-contract.zh.md b/.agents/notes/archived/architecture/2026-07-30-command-row-copy-contract.zh.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-07-30-command-row-copy-contract.zh.md rename to .agents/notes/archived/architecture/2026-07-30-command-row-copy-contract.zh.md index 0f680f9beb..7efe1aa65d 100644 --- a/.agents/notes/implemented/architecture/2026-07-30-command-row-copy-contract.zh.md +++ b/.agents/notes/archived/architecture/2026-07-30-command-row-copy-contract.zh.md @@ -1,6 +1,7 @@ # Agent Note: 命令条目文案分别由条目与 handler 负责 Status: implemented +Archived: 2026-09-04 [English](2026-07-30-command-row-copy-contract.md) | 中文 diff --git a/.agents/notes/archived/architecture/2026-07-30-config-plane-boundaries.i18n.yaml b/.agents/notes/archived/architecture/2026-07-30-config-plane-boundaries.i18n.yaml new file mode 100644 index 0000000000..8d95861414 --- /dev/null +++ b/.agents/notes/archived/architecture/2026-07-30-config-plane-boundaries.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-07-30-config-plane-boundaries.md +2026-07-30-config-plane-boundaries.md: 6c1f0c8643e9f1b1879b213e01bb8555b6980afe +2026-07-30-config-plane-boundaries.zh.md: 16b05a45afbb944e3ed9f1121e067d8d2bbf1f48 diff --git a/.agents/notes/implemented/architecture/2026-07-30-config-plane-boundaries.md b/.agents/notes/archived/architecture/2026-07-30-config-plane-boundaries.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-07-30-config-plane-boundaries.md rename to .agents/notes/archived/architecture/2026-07-30-config-plane-boundaries.md index d7ae13f08c..6c1f0c8643 100644 --- a/.agents/notes/implemented/architecture/2026-07-30-config-plane-boundaries.md +++ b/.agents/notes/archived/architecture/2026-07-30-config-plane-boundaries.md @@ -1,6 +1,7 @@ # Agent Note: what the configuration plane exposes, and who may overwrite what Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-30-config-plane-boundaries.zh.md) diff --git a/.agents/notes/implemented/architecture/2026-07-30-config-plane-boundaries.zh.md b/.agents/notes/archived/architecture/2026-07-30-config-plane-boundaries.zh.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-07-30-config-plane-boundaries.zh.md rename to .agents/notes/archived/architecture/2026-07-30-config-plane-boundaries.zh.md index e53a68f91f..16b05a45af 100644 --- a/.agents/notes/implemented/architecture/2026-07-30-config-plane-boundaries.zh.md +++ b/.agents/notes/archived/architecture/2026-07-30-config-plane-boundaries.zh.md @@ -1,6 +1,7 @@ # Agent Note: 配置面暴露什么,以及谁有权覆盖什么 Status: implemented +Archived: 2026-09-04 [English](2026-07-30-config-plane-boundaries.md) | 中文 diff --git a/.agents/notes/archived/architecture/2026-07-30-settings-write-path-integrity.i18n.yaml b/.agents/notes/archived/architecture/2026-07-30-settings-write-path-integrity.i18n.yaml new file mode 100644 index 0000000000..4e53f4427c --- /dev/null +++ b/.agents/notes/archived/architecture/2026-07-30-settings-write-path-integrity.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-07-30-settings-write-path-integrity.md +2026-07-30-settings-write-path-integrity.md: 00e9639bc3f2bec8d4f10d3ba30611c822d3d966 +2026-07-30-settings-write-path-integrity.zh.md: 887941a8bcfadc7f8745b77f2c650452df5df0b9 diff --git a/.agents/notes/implemented/architecture/2026-07-30-settings-write-path-integrity.md b/.agents/notes/archived/architecture/2026-07-30-settings-write-path-integrity.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-07-30-settings-write-path-integrity.md rename to .agents/notes/archived/architecture/2026-07-30-settings-write-path-integrity.md index 7a2d377586..00e9639bc3 100644 --- a/.agents/notes/implemented/architecture/2026-07-30-settings-write-path-integrity.md +++ b/.agents/notes/archived/architecture/2026-07-30-settings-write-path-integrity.md @@ -1,6 +1,7 @@ # Agent Note: settings write-path integrity and observer lifecycle Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-30-settings-write-path-integrity.zh.md) diff --git a/.agents/notes/implemented/architecture/2026-07-30-settings-write-path-integrity.zh.md b/.agents/notes/archived/architecture/2026-07-30-settings-write-path-integrity.zh.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-07-30-settings-write-path-integrity.zh.md rename to .agents/notes/archived/architecture/2026-07-30-settings-write-path-integrity.zh.md index 596f481467..887941a8bc 100644 --- a/.agents/notes/implemented/architecture/2026-07-30-settings-write-path-integrity.zh.md +++ b/.agents/notes/archived/architecture/2026-07-30-settings-write-path-integrity.zh.md @@ -1,6 +1,7 @@ # Agent Note: settings 写路径完整性与观察者生命周期 Status: implemented +Archived: 2026-09-04 [English](2026-07-30-settings-write-path-integrity.md) | 中文 diff --git a/.agents/notes/archived/architecture/2026-07-30-web-config-plane.i18n.yaml b/.agents/notes/archived/architecture/2026-07-30-web-config-plane.i18n.yaml new file mode 100644 index 0000000000..2345f85870 --- /dev/null +++ b/.agents/notes/archived/architecture/2026-07-30-web-config-plane.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-07-30-web-config-plane.md +2026-07-30-web-config-plane.md: ca100f3d5b945e0fc8e048fc8967fd29f77a63cf +2026-07-30-web-config-plane.zh.md: c24e05b2cd651b543dd7fe40d41505b5a8cee2ae diff --git a/.agents/notes/implemented/architecture/2026-07-30-web-config-plane.md b/.agents/notes/archived/architecture/2026-07-30-web-config-plane.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-07-30-web-config-plane.md rename to .agents/notes/archived/architecture/2026-07-30-web-config-plane.md index a919487ba4..ca100f3d5b 100644 --- a/.agents/notes/implemented/architecture/2026-07-30-web-config-plane.md +++ b/.agents/notes/archived/architecture/2026-07-30-web-config-plane.md @@ -1,6 +1,7 @@ # Agent Note: the web configuration plane Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-30-web-config-plane.zh.md) diff --git a/.agents/notes/implemented/architecture/2026-07-30-web-config-plane.zh.md b/.agents/notes/archived/architecture/2026-07-30-web-config-plane.zh.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-07-30-web-config-plane.zh.md rename to .agents/notes/archived/architecture/2026-07-30-web-config-plane.zh.md index ca9e9f4427..c24e05b2cd 100644 --- a/.agents/notes/implemented/architecture/2026-07-30-web-config-plane.zh.md +++ b/.agents/notes/archived/architecture/2026-07-30-web-config-plane.zh.md @@ -1,6 +1,7 @@ # Agent Note: web 配置平面 Status: implemented +Archived: 2026-09-04 [English](2026-07-30-web-config-plane.md) | 中文 diff --git a/.agents/notes/archived/architecture/2026-07-31-code-runtime-portable-identifier-seam.i18n.yaml b/.agents/notes/archived/architecture/2026-07-31-code-runtime-portable-identifier-seam.i18n.yaml new file mode 100644 index 0000000000..6bf7a918a0 --- /dev/null +++ b/.agents/notes/archived/architecture/2026-07-31-code-runtime-portable-identifier-seam.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-07-31-code-runtime-portable-identifier-seam.md +2026-07-31-code-runtime-portable-identifier-seam.md: c7b24e7706a8d27aff8b9d411ea1987bc0e26a17 +2026-07-31-code-runtime-portable-identifier-seam.zh.md: 7486727ae8bb2830593f2f33042a46d4d5b846af diff --git a/.agents/notes/implemented/architecture/2026-07-31-code-runtime-portable-identifier-seam.md b/.agents/notes/archived/architecture/2026-07-31-code-runtime-portable-identifier-seam.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-07-31-code-runtime-portable-identifier-seam.md rename to .agents/notes/archived/architecture/2026-07-31-code-runtime-portable-identifier-seam.md index e4cf236f62..c7b24e7706 100644 --- a/.agents/notes/implemented/architecture/2026-07-31-code-runtime-portable-identifier-seam.md +++ b/.agents/notes/archived/architecture/2026-07-31-code-runtime-portable-identifier-seam.md @@ -1,6 +1,7 @@ # Agent Note: the code-runtime seam owns portable-identifier exclusions Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-31-code-runtime-portable-identifier-seam.zh.md) diff --git a/.agents/notes/implemented/architecture/2026-07-31-code-runtime-portable-identifier-seam.zh.md b/.agents/notes/archived/architecture/2026-07-31-code-runtime-portable-identifier-seam.zh.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-07-31-code-runtime-portable-identifier-seam.zh.md rename to .agents/notes/archived/architecture/2026-07-31-code-runtime-portable-identifier-seam.zh.md index 63fc89eb0d..7486727ae8 100644 --- a/.agents/notes/implemented/architecture/2026-07-31-code-runtime-portable-identifier-seam.zh.md +++ b/.agents/notes/archived/architecture/2026-07-31-code-runtime-portable-identifier-seam.zh.md @@ -1,6 +1,7 @@ # Agent Note: code-runtime seam 拥有可移植标识符排除集 Status: implemented +Archived: 2026-09-04 [English](2026-07-31-code-runtime-portable-identifier-seam.md) | 中文 diff --git a/.agents/notes/archived/architecture/2026-08-01-packaged-ripgrep-search.i18n.yaml b/.agents/notes/archived/architecture/2026-08-01-packaged-ripgrep-search.i18n.yaml new file mode 100644 index 0000000000..4e864ba69a --- /dev/null +++ b/.agents/notes/archived/architecture/2026-08-01-packaged-ripgrep-search.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-08-01-packaged-ripgrep-search.md +2026-08-01-packaged-ripgrep-search.md: 24c0c6c68a8f60f90f5da4ba33a358267aabcbbf +2026-08-01-packaged-ripgrep-search.zh.md: b40ce6d068e0498fc546fa5fa2a6a005e9783edc diff --git a/.agents/notes/implemented/architecture/2026-08-01-packaged-ripgrep-search.md b/.agents/notes/archived/architecture/2026-08-01-packaged-ripgrep-search.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-01-packaged-ripgrep-search.md rename to .agents/notes/archived/architecture/2026-08-01-packaged-ripgrep-search.md index c401bc1e30..24c0c6c68a 100644 --- a/.agents/notes/implemented/architecture/2026-08-01-packaged-ripgrep-search.md +++ b/.agents/notes/archived/architecture/2026-08-01-packaged-ripgrep-search.md @@ -1,6 +1,7 @@ # Agent Note: Packaged ripgrep spawn for glob/grep Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-01-packaged-ripgrep-search.zh.md) diff --git a/.agents/notes/implemented/architecture/2026-08-01-packaged-ripgrep-search.zh.md b/.agents/notes/archived/architecture/2026-08-01-packaged-ripgrep-search.zh.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-01-packaged-ripgrep-search.zh.md rename to .agents/notes/archived/architecture/2026-08-01-packaged-ripgrep-search.zh.md index 6a195e59f7..b40ce6d068 100644 --- a/.agents/notes/implemented/architecture/2026-08-01-packaged-ripgrep-search.zh.md +++ b/.agents/notes/archived/architecture/2026-08-01-packaged-ripgrep-search.zh.md @@ -1,6 +1,7 @@ # Agent Note: glob/grep 改用打包的 ripgrep 二进制直接 spawn Status: implemented +Archived: 2026-09-04 [English](2026-08-01-packaged-ripgrep-search.md) | 中文 diff --git a/.agents/notes/archived/architecture/2026-08-03-pi-ai-declared-provider-catalog.i18n.yaml b/.agents/notes/archived/architecture/2026-08-03-pi-ai-declared-provider-catalog.i18n.yaml new file mode 100644 index 0000000000..9d82b0e3d3 --- /dev/null +++ b/.agents/notes/archived/architecture/2026-08-03-pi-ai-declared-provider-catalog.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-08-03-pi-ai-declared-provider-catalog.md +2026-08-03-pi-ai-declared-provider-catalog.md: b680865b6712e2e53be1eba13956f3626898a047 +2026-08-03-pi-ai-declared-provider-catalog.zh.md: a3b3460acb5a48aecb749269e4c5f1228f749ed9 diff --git a/.agents/notes/implemented/architecture/2026-08-03-pi-ai-declared-provider-catalog.md b/.agents/notes/archived/architecture/2026-08-03-pi-ai-declared-provider-catalog.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-03-pi-ai-declared-provider-catalog.md rename to .agents/notes/archived/architecture/2026-08-03-pi-ai-declared-provider-catalog.md index 571986a94c..b680865b67 100644 --- a/.agents/notes/implemented/architecture/2026-08-03-pi-ai-declared-provider-catalog.md +++ b/.agents/notes/archived/architecture/2026-08-03-pi-ai-declared-provider-catalog.md @@ -1,6 +1,7 @@ # Agent Note: pi-ai routes are declared providers, not catalog lookups Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-03-pi-ai-declared-provider-catalog.zh.md) diff --git a/.agents/notes/implemented/architecture/2026-08-03-pi-ai-declared-provider-catalog.zh.md b/.agents/notes/archived/architecture/2026-08-03-pi-ai-declared-provider-catalog.zh.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-03-pi-ai-declared-provider-catalog.zh.md rename to .agents/notes/archived/architecture/2026-08-03-pi-ai-declared-provider-catalog.zh.md index d6f616f48d..a3b3460acb 100644 --- a/.agents/notes/implemented/architecture/2026-08-03-pi-ai-declared-provider-catalog.zh.md +++ b/.agents/notes/archived/architecture/2026-08-03-pi-ai-declared-provider-catalog.zh.md @@ -1,6 +1,7 @@ # Agent Note: pi-ai 路由是被声明的提供方,而不是 catalog 查表 Status: implemented +Archived: 2026-09-04 [English](2026-08-03-pi-ai-declared-provider-catalog.md) | 中文 diff --git a/.agents/notes/archived/architecture/2026-08-04-credentials-yaml-and-user-environment-layer.i18n.yaml b/.agents/notes/archived/architecture/2026-08-04-credentials-yaml-and-user-environment-layer.i18n.yaml new file mode 100644 index 0000000000..1f571136ce --- /dev/null +++ b/.agents/notes/archived/architecture/2026-08-04-credentials-yaml-and-user-environment-layer.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-08-04-credentials-yaml-and-user-environment-layer.md +2026-08-04-credentials-yaml-and-user-environment-layer.md: 37f9aeece6379bc1d4b93dee989043f8f7fa0258 +2026-08-04-credentials-yaml-and-user-environment-layer.zh.md: d0103a4bf0015121de95e555b0abefd1b63fdfe0 diff --git a/.agents/notes/implemented/architecture/2026-08-04-credentials-yaml-and-user-environment-layer.md b/.agents/notes/archived/architecture/2026-08-04-credentials-yaml-and-user-environment-layer.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-04-credentials-yaml-and-user-environment-layer.md rename to .agents/notes/archived/architecture/2026-08-04-credentials-yaml-and-user-environment-layer.md index 44bdea2436..37f9aeece6 100644 --- a/.agents/notes/implemented/architecture/2026-08-04-credentials-yaml-and-user-environment-layer.md +++ b/.agents/notes/archived/architecture/2026-08-04-credentials-yaml-and-user-environment-layer.md @@ -1,6 +1,7 @@ # Agent Note: Splitting the credential store from the user environment layer Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-04-credentials-yaml-and-user-environment-layer.zh.md) diff --git a/.agents/notes/implemented/architecture/2026-08-04-credentials-yaml-and-user-environment-layer.zh.md b/.agents/notes/archived/architecture/2026-08-04-credentials-yaml-and-user-environment-layer.zh.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-04-credentials-yaml-and-user-environment-layer.zh.md rename to .agents/notes/archived/architecture/2026-08-04-credentials-yaml-and-user-environment-layer.zh.md index 4d2893c57b..d0103a4bf0 100644 --- a/.agents/notes/implemented/architecture/2026-08-04-credentials-yaml-and-user-environment-layer.zh.md +++ b/.agents/notes/archived/architecture/2026-08-04-credentials-yaml-and-user-environment-layer.zh.md @@ -1,6 +1,7 @@ # Agent Note: 把凭据存储与用户环境层拆开 Status: implemented +Archived: 2026-09-04 [English](2026-08-04-credentials-yaml-and-user-environment-layer.md) | 中文 diff --git a/.agents/notes/archived/architecture/2026-08-04-declaring-a-provider-from-the-models-page.i18n.yaml b/.agents/notes/archived/architecture/2026-08-04-declaring-a-provider-from-the-models-page.i18n.yaml new file mode 100644 index 0000000000..c54ee8ff45 --- /dev/null +++ b/.agents/notes/archived/architecture/2026-08-04-declaring-a-provider-from-the-models-page.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-08-04-declaring-a-provider-from-the-models-page.md +2026-08-04-declaring-a-provider-from-the-models-page.md: a9326236df9ea4daa6e1cf9a64785c83f523539a +2026-08-04-declaring-a-provider-from-the-models-page.zh.md: 8be41b3e2cb3d34b9ac0aa2bc6cd9b74e8304385 diff --git a/.agents/notes/implemented/architecture/2026-08-04-declaring-a-provider-from-the-models-page.md b/.agents/notes/archived/architecture/2026-08-04-declaring-a-provider-from-the-models-page.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-04-declaring-a-provider-from-the-models-page.md rename to .agents/notes/archived/architecture/2026-08-04-declaring-a-provider-from-the-models-page.md index ad4c6695b2..a9326236df 100644 --- a/.agents/notes/implemented/architecture/2026-08-04-declaring-a-provider-from-the-models-page.md +++ b/.agents/notes/archived/architecture/2026-08-04-declaring-a-provider-from-the-models-page.md @@ -1,6 +1,7 @@ # Agent Note: Declaring a provider from the Models page Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-04-declaring-a-provider-from-the-models-page.zh.md) diff --git a/.agents/notes/implemented/architecture/2026-08-04-declaring-a-provider-from-the-models-page.zh.md b/.agents/notes/archived/architecture/2026-08-04-declaring-a-provider-from-the-models-page.zh.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-04-declaring-a-provider-from-the-models-page.zh.md rename to .agents/notes/archived/architecture/2026-08-04-declaring-a-provider-from-the-models-page.zh.md index 2ca26e4b60..8be41b3e2c 100644 --- a/.agents/notes/implemented/architecture/2026-08-04-declaring-a-provider-from-the-models-page.zh.md +++ b/.agents/notes/archived/architecture/2026-08-04-declaring-a-provider-from-the-models-page.zh.md @@ -1,6 +1,7 @@ # Agent Note: 在 Models 页上声明一个提供方 Status: implemented +Archived: 2026-09-04 [English](2026-08-04-declaring-a-provider-from-the-models-page.md) | 中文 diff --git a/.agents/notes/archived/architecture/2026-08-05-large-session-jsonl-restore-pipeline.i18n.yaml b/.agents/notes/archived/architecture/2026-08-05-large-session-jsonl-restore-pipeline.i18n.yaml new file mode 100644 index 0000000000..e5b865f6e1 --- /dev/null +++ b/.agents/notes/archived/architecture/2026-08-05-large-session-jsonl-restore-pipeline.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-08-05-large-session-jsonl-restore-pipeline.md +2026-08-05-large-session-jsonl-restore-pipeline.md: a8d37cc5b18241e5cdfc555f45836c602181ba24 +2026-08-05-large-session-jsonl-restore-pipeline.zh.md: 734b1feeae3cf28011294c87573a90dea29b2977 diff --git a/.agents/notes/implemented/architecture/2026-08-05-large-session-jsonl-restore-pipeline.md b/.agents/notes/archived/architecture/2026-08-05-large-session-jsonl-restore-pipeline.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-05-large-session-jsonl-restore-pipeline.md rename to .agents/notes/archived/architecture/2026-08-05-large-session-jsonl-restore-pipeline.md index e87777cc40..a8d37cc5b1 100644 --- a/.agents/notes/implemented/architecture/2026-08-05-large-session-jsonl-restore-pipeline.md +++ b/.agents/notes/archived/architecture/2026-08-05-large-session-jsonl-restore-pipeline.md @@ -1,6 +1,7 @@ # Agent Note: Large-session JSONL restore pipeline Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-05-large-session-jsonl-restore-pipeline.zh.md) diff --git a/.agents/notes/implemented/architecture/2026-08-05-large-session-jsonl-restore-pipeline.zh.md b/.agents/notes/archived/architecture/2026-08-05-large-session-jsonl-restore-pipeline.zh.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-05-large-session-jsonl-restore-pipeline.zh.md rename to .agents/notes/archived/architecture/2026-08-05-large-session-jsonl-restore-pipeline.zh.md index 32762bd199..734b1feeae 100644 --- a/.agents/notes/implemented/architecture/2026-08-05-large-session-jsonl-restore-pipeline.zh.md +++ b/.agents/notes/archived/architecture/2026-08-05-large-session-jsonl-restore-pipeline.zh.md @@ -1,6 +1,7 @@ # Agent Note: 大型会话 JSONL 恢复流水线 Status: implemented +Archived: 2026-09-04 [English](2026-08-05-large-session-jsonl-restore-pipeline.md) | 中文 diff --git a/.agents/notes/archived/architecture/2026-08-05-session-preparation.i18n.yaml b/.agents/notes/archived/architecture/2026-08-05-session-preparation.i18n.yaml new file mode 100644 index 0000000000..e15908d01a --- /dev/null +++ b/.agents/notes/archived/architecture/2026-08-05-session-preparation.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-08-05-session-preparation.md +2026-08-05-session-preparation.md: 5371fe69dded7f8618bac017fc97c59a6eb0cfb3 +2026-08-05-session-preparation.zh.md: 7b6ad03d266a4d71ccb3e9d54210f9755cbdb1b1 diff --git a/.agents/notes/implemented/architecture/2026-08-05-session-preparation.md b/.agents/notes/archived/architecture/2026-08-05-session-preparation.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-05-session-preparation.md rename to .agents/notes/archived/architecture/2026-08-05-session-preparation.md index 040c9f7881..5371fe69dd 100644 --- a/.agents/notes/implemented/architecture/2026-08-05-session-preparation.md +++ b/.agents/notes/archived/architecture/2026-08-05-session-preparation.md @@ -1,6 +1,7 @@ # Agent Note: Reusable Session preparation before publication Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-05-session-preparation.zh.md) diff --git a/.agents/notes/implemented/architecture/2026-08-05-session-preparation.zh.md b/.agents/notes/archived/architecture/2026-08-05-session-preparation.zh.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-05-session-preparation.zh.md rename to .agents/notes/archived/architecture/2026-08-05-session-preparation.zh.md index 44b609d488..7b6ad03d26 100644 --- a/.agents/notes/implemented/architecture/2026-08-05-session-preparation.zh.md +++ b/.agents/notes/archived/architecture/2026-08-05-session-preparation.zh.md @@ -1,6 +1,7 @@ # Agent Note: 发布前可复用的 Session 准备阶段 Status: implemented +Archived: 2026-09-04 [English](2026-08-05-session-preparation.md) | 中文 diff --git a/.agents/notes/archived/architecture/2026-08-05-slot-declaration-injection.i18n.yaml b/.agents/notes/archived/architecture/2026-08-05-slot-declaration-injection.i18n.yaml new file mode 100644 index 0000000000..89e63cd75f --- /dev/null +++ b/.agents/notes/archived/architecture/2026-08-05-slot-declaration-injection.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-08-05-slot-declaration-injection.md +2026-08-05-slot-declaration-injection.md: a23e277715cca1074dc3c3c925b126a80734f990 +2026-08-05-slot-declaration-injection.zh.md: 21910c5d82ac0f8433ce02532c82c6d7c01b1089 diff --git a/.agents/notes/implemented/architecture/2026-08-05-slot-declaration-injection.md b/.agents/notes/archived/architecture/2026-08-05-slot-declaration-injection.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-05-slot-declaration-injection.md rename to .agents/notes/archived/architecture/2026-08-05-slot-declaration-injection.md index 92f08efec2..a23e277715 100644 --- a/.agents/notes/implemented/architecture/2026-08-05-slot-declaration-injection.md +++ b/.agents/notes/archived/architecture/2026-08-05-slot-declaration-injection.md @@ -1,6 +1,7 @@ # Agent Note: Slot declaration injection and reload lifetimes Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-05-slot-declaration-injection.zh.md) diff --git a/.agents/notes/implemented/architecture/2026-08-05-slot-declaration-injection.zh.md b/.agents/notes/archived/architecture/2026-08-05-slot-declaration-injection.zh.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-05-slot-declaration-injection.zh.md rename to .agents/notes/archived/architecture/2026-08-05-slot-declaration-injection.zh.md index eed6873bb4..21910c5d82 100644 --- a/.agents/notes/implemented/architecture/2026-08-05-slot-declaration-injection.zh.md +++ b/.agents/notes/archived/architecture/2026-08-05-slot-declaration-injection.zh.md @@ -1,6 +1,7 @@ # Agent Note: slot 声明注入与重载生命周期 Status: implemented +Archived: 2026-09-04 [English](2026-08-05-slot-declaration-injection.md) | 中文 diff --git a/.agents/notes/archived/architecture/2026-08-06-agent-event-payload-objects.i18n.yaml b/.agents/notes/archived/architecture/2026-08-06-agent-event-payload-objects.i18n.yaml new file mode 100644 index 0000000000..f9ec329d50 --- /dev/null +++ b/.agents/notes/archived/architecture/2026-08-06-agent-event-payload-objects.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-08-06-agent-event-payload-objects.md +2026-08-06-agent-event-payload-objects.md: b171f2d67e3c065063775e7830b9085af7767c8f +2026-08-06-agent-event-payload-objects.zh.md: 65ce0d608c6201d88a607943984349d9b997f8f3 diff --git a/.agents/notes/implemented/architecture/2026-08-06-agent-event-payload-objects.md b/.agents/notes/archived/architecture/2026-08-06-agent-event-payload-objects.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-06-agent-event-payload-objects.md rename to .agents/notes/archived/architecture/2026-08-06-agent-event-payload-objects.md index 470c8fb3f9..b171f2d67e 100644 --- a/.agents/notes/implemented/architecture/2026-08-06-agent-event-payload-objects.md +++ b/.agents/notes/archived/architecture/2026-08-06-agent-event-payload-objects.md @@ -1,6 +1,7 @@ # Agent Note: Agent-scoped events dispatch a single payload object Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-06-agent-event-payload-objects.zh.md) diff --git a/.agents/notes/implemented/architecture/2026-08-06-agent-event-payload-objects.zh.md b/.agents/notes/archived/architecture/2026-08-06-agent-event-payload-objects.zh.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-06-agent-event-payload-objects.zh.md rename to .agents/notes/archived/architecture/2026-08-06-agent-event-payload-objects.zh.md index 861a1b9c12..65ce0d608c 100644 --- a/.agents/notes/implemented/architecture/2026-08-06-agent-event-payload-objects.zh.md +++ b/.agents/notes/archived/architecture/2026-08-06-agent-event-payload-objects.zh.md @@ -1,6 +1,7 @@ # Agent Note: Agent 作用域事件 dispatch 单个 payload 对象 Status: implemented +Archived: 2026-09-04 [English](2026-08-06-agent-event-payload-objects.md) | 中文 diff --git a/.agents/notes/archived/architecture/2026-08-06-app-owned-command-line.i18n.yaml b/.agents/notes/archived/architecture/2026-08-06-app-owned-command-line.i18n.yaml new file mode 100644 index 0000000000..da1ce7ddb1 --- /dev/null +++ b/.agents/notes/archived/architecture/2026-08-06-app-owned-command-line.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-08-06-app-owned-command-line.md +2026-08-06-app-owned-command-line.md: 1a48d00a1f837a900f96345883ce8c96144e49d6 +2026-08-06-app-owned-command-line.zh.md: 067e9c69d9da4e811a0ed182f5eaa664e9a84a81 diff --git a/.agents/notes/implemented/architecture/2026-08-06-app-owned-command-line.md b/.agents/notes/archived/architecture/2026-08-06-app-owned-command-line.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-06-app-owned-command-line.md rename to .agents/notes/archived/architecture/2026-08-06-app-owned-command-line.md index 6d84ba4575..1a48d00a1f 100644 --- a/.agents/notes/implemented/architecture/2026-08-06-app-owned-command-line.md +++ b/.agents/notes/archived/architecture/2026-08-06-app-owned-command-line.md @@ -1,6 +1,7 @@ # Agent Note: Apps own their command line through `ctx.cmdlineArgs` Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-06-app-owned-command-line.zh.md) diff --git a/.agents/notes/implemented/architecture/2026-08-06-app-owned-command-line.zh.md b/.agents/notes/archived/architecture/2026-08-06-app-owned-command-line.zh.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-06-app-owned-command-line.zh.md rename to .agents/notes/archived/architecture/2026-08-06-app-owned-command-line.zh.md index f964f7a7de..067e9c69d9 100644 --- a/.agents/notes/implemented/architecture/2026-08-06-app-owned-command-line.zh.md +++ b/.agents/notes/archived/architecture/2026-08-06-app-owned-command-line.zh.md @@ -1,6 +1,7 @@ # Agent Note: 应用通过 `ctx.cmdlineArgs` 持有自己的命令行 Status: implemented +Archived: 2026-09-04 [English](2026-08-06-app-owned-command-line.md) | 中文 diff --git a/.agents/notes/archived/architecture/2026-08-06-subagent-list-identity-projection.i18n.yaml b/.agents/notes/archived/architecture/2026-08-06-subagent-list-identity-projection.i18n.yaml new file mode 100644 index 0000000000..938d4ccf47 --- /dev/null +++ b/.agents/notes/archived/architecture/2026-08-06-subagent-list-identity-projection.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-08-06-subagent-list-identity-projection.md +2026-08-06-subagent-list-identity-projection.md: 50937e1f75774438a0be8aef7df6c181ff0fc8a2 +2026-08-06-subagent-list-identity-projection.zh.md: 7b252333549004eab5b81d21e518d6a05729ea2d diff --git a/.agents/notes/implemented/architecture/2026-08-06-subagent-list-identity-projection.md b/.agents/notes/archived/architecture/2026-08-06-subagent-list-identity-projection.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-06-subagent-list-identity-projection.md rename to .agents/notes/archived/architecture/2026-08-06-subagent-list-identity-projection.md index cbb1569631..50937e1f75 100644 --- a/.agents/notes/implemented/architecture/2026-08-06-subagent-list-identity-projection.md +++ b/.agents/notes/archived/architecture/2026-08-06-subagent-list-identity-projection.md @@ -1,6 +1,7 @@ # Agent Note: Subagent list identity via the projection unit Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-06-subagent-list-identity-projection.zh.md) diff --git a/.agents/notes/implemented/architecture/2026-08-06-subagent-list-identity-projection.zh.md b/.agents/notes/archived/architecture/2026-08-06-subagent-list-identity-projection.zh.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-06-subagent-list-identity-projection.zh.md rename to .agents/notes/archived/architecture/2026-08-06-subagent-list-identity-projection.zh.md index dbb62dbfc6..7b25233354 100644 --- a/.agents/notes/implemented/architecture/2026-08-06-subagent-list-identity-projection.zh.md +++ b/.agents/notes/archived/architecture/2026-08-06-subagent-list-identity-projection.zh.md @@ -1,6 +1,7 @@ # Agent Note: subagent 列表经投影单元读取身份 Status: implemented +Archived: 2026-09-04 [English](2026-08-06-subagent-list-identity-projection.md) | 中文 diff --git a/.agents/notes/archived/architecture/2026-08-06-web-markdown-incremental-ast-renderer.i18n.yaml b/.agents/notes/archived/architecture/2026-08-06-web-markdown-incremental-ast-renderer.i18n.yaml new file mode 100644 index 0000000000..ed5b1b732d --- /dev/null +++ b/.agents/notes/archived/architecture/2026-08-06-web-markdown-incremental-ast-renderer.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-08-06-web-markdown-incremental-ast-renderer.md +2026-08-06-web-markdown-incremental-ast-renderer.md: 0491cf519655774df63b957baeb3ce52fc025823 +2026-08-06-web-markdown-incremental-ast-renderer.zh.md: 25824fa557ec945c9c78f17dcc1a567663883300 diff --git a/.agents/notes/implemented/architecture/2026-08-06-web-markdown-incremental-ast-renderer.md b/.agents/notes/archived/architecture/2026-08-06-web-markdown-incremental-ast-renderer.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-06-web-markdown-incremental-ast-renderer.md rename to .agents/notes/archived/architecture/2026-08-06-web-markdown-incremental-ast-renderer.md index 3599bfcc78..0491cf5196 100644 --- a/.agents/notes/implemented/architecture/2026-08-06-web-markdown-incremental-ast-renderer.md +++ b/.agents/notes/archived/architecture/2026-08-06-web-markdown-incremental-ast-renderer.md @@ -1,6 +1,7 @@ # Agent Note: Incremental streaming markdown through a direct mdast renderer Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-06-web-markdown-incremental-ast-renderer.zh.md) diff --git a/.agents/notes/implemented/architecture/2026-08-06-web-markdown-incremental-ast-renderer.zh.md b/.agents/notes/archived/architecture/2026-08-06-web-markdown-incremental-ast-renderer.zh.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-06-web-markdown-incremental-ast-renderer.zh.md rename to .agents/notes/archived/architecture/2026-08-06-web-markdown-incremental-ast-renderer.zh.md index 70261f5ef9..25824fa557 100644 --- a/.agents/notes/implemented/architecture/2026-08-06-web-markdown-incremental-ast-renderer.zh.md +++ b/.agents/notes/archived/architecture/2026-08-06-web-markdown-incremental-ast-renderer.zh.md @@ -1,6 +1,7 @@ # Agent Note: 经由直接 mdast 渲染器的增量流式 Markdown Status: implemented +Archived: 2026-09-04 [English](2026-08-06-web-markdown-incremental-ast-renderer.md) | 中文 diff --git a/.agents/notes/archived/architecture/2026-08-06-web-shell-dist-chunk-layout.i18n.yaml b/.agents/notes/archived/architecture/2026-08-06-web-shell-dist-chunk-layout.i18n.yaml new file mode 100644 index 0000000000..20a89895dd --- /dev/null +++ b/.agents/notes/archived/architecture/2026-08-06-web-shell-dist-chunk-layout.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-08-06-web-shell-dist-chunk-layout.md +2026-08-06-web-shell-dist-chunk-layout.md: 0ecc2674ade2854268b7771ef45af75d03d46007 +2026-08-06-web-shell-dist-chunk-layout.zh.md: 1a0d69776e3e9a87b23e4a5014de14a99f157e89 diff --git a/.agents/notes/implemented/architecture/2026-08-06-web-shell-dist-chunk-layout.md b/.agents/notes/archived/architecture/2026-08-06-web-shell-dist-chunk-layout.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-06-web-shell-dist-chunk-layout.md rename to .agents/notes/archived/architecture/2026-08-06-web-shell-dist-chunk-layout.md index 5407188dab..0ecc2674ad 100644 --- a/.agents/notes/implemented/architecture/2026-08-06-web-shell-dist-chunk-layout.md +++ b/.agents/notes/archived/architecture/2026-08-06-web-shell-dist-chunk-layout.md @@ -1,6 +1,7 @@ # Agent Note: Web shell dist chunk split and directory layout Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-06-web-shell-dist-chunk-layout.zh.md) diff --git a/.agents/notes/implemented/architecture/2026-08-06-web-shell-dist-chunk-layout.zh.md b/.agents/notes/archived/architecture/2026-08-06-web-shell-dist-chunk-layout.zh.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-06-web-shell-dist-chunk-layout.zh.md rename to .agents/notes/archived/architecture/2026-08-06-web-shell-dist-chunk-layout.zh.md index 15dcc7775f..1a0d69776e 100644 --- a/.agents/notes/implemented/architecture/2026-08-06-web-shell-dist-chunk-layout.zh.md +++ b/.agents/notes/archived/architecture/2026-08-06-web-shell-dist-chunk-layout.zh.md @@ -1,6 +1,7 @@ # Agent Note: Web 壳产物的分片拆分与目录布局 Status: implemented +Archived: 2026-09-04 [English](2026-08-06-web-shell-dist-chunk-layout.md) | 中文 diff --git a/.agents/notes/archived/architecture/2026-08-07-shared-feedback-telemetry-user-id.i18n.yaml b/.agents/notes/archived/architecture/2026-08-07-shared-feedback-telemetry-user-id.i18n.yaml new file mode 100644 index 0000000000..dbdc15a4d6 --- /dev/null +++ b/.agents/notes/archived/architecture/2026-08-07-shared-feedback-telemetry-user-id.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-08-07-shared-feedback-telemetry-user-id.md +2026-08-07-shared-feedback-telemetry-user-id.md: c5a6fd5dda3a39f8b3fb210f373815a593d0a630 +2026-08-07-shared-feedback-telemetry-user-id.zh.md: dce8190157d0d48c83373149a52554ebb2c97c4b diff --git a/.agents/notes/implemented/architecture/2026-08-07-shared-feedback-telemetry-user-id.md b/.agents/notes/archived/architecture/2026-08-07-shared-feedback-telemetry-user-id.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-07-shared-feedback-telemetry-user-id.md rename to .agents/notes/archived/architecture/2026-08-07-shared-feedback-telemetry-user-id.md index 2efc5b9f5f..c5a6fd5dda 100644 --- a/.agents/notes/implemented/architecture/2026-08-07-shared-feedback-telemetry-user-id.md +++ b/.agents/notes/archived/architecture/2026-08-07-shared-feedback-telemetry-user-id.md @@ -1,6 +1,7 @@ # Agent Note: Shared anonymous user id across telemetry, feedback, and DeepSeek requests Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-07-shared-feedback-telemetry-user-id.zh.md) diff --git a/.agents/notes/implemented/architecture/2026-08-07-shared-feedback-telemetry-user-id.zh.md b/.agents/notes/archived/architecture/2026-08-07-shared-feedback-telemetry-user-id.zh.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-07-shared-feedback-telemetry-user-id.zh.md rename to .agents/notes/archived/architecture/2026-08-07-shared-feedback-telemetry-user-id.zh.md index 2f04536aec..dce8190157 100644 --- a/.agents/notes/implemented/architecture/2026-08-07-shared-feedback-telemetry-user-id.zh.md +++ b/.agents/notes/archived/architecture/2026-08-07-shared-feedback-telemetry-user-id.zh.md @@ -1,6 +1,7 @@ # Agent Note: 遥测、反馈与 DeepSeek 请求共享匿名用户 id Status: implemented +Archived: 2026-09-04 [English](2026-08-07-shared-feedback-telemetry-user-id.md) | 中文 diff --git a/.agents/notes/archived/architecture/2026-08-08-bounded-session-persistence-write-batching.i18n.yaml b/.agents/notes/archived/architecture/2026-08-08-bounded-session-persistence-write-batching.i18n.yaml new file mode 100644 index 0000000000..66a4309040 --- /dev/null +++ b/.agents/notes/archived/architecture/2026-08-08-bounded-session-persistence-write-batching.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-08-08-bounded-session-persistence-write-batching.md +2026-08-08-bounded-session-persistence-write-batching.md: 69b25d82cc1a08e8903abf14afbb547bfa7c181d +2026-08-08-bounded-session-persistence-write-batching.zh.md: 69888527b10d55508069e492d376f0cd82d5c2cc diff --git a/.agents/notes/implemented/architecture/2026-08-08-bounded-session-persistence-write-batching.md b/.agents/notes/archived/architecture/2026-08-08-bounded-session-persistence-write-batching.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-08-bounded-session-persistence-write-batching.md rename to .agents/notes/archived/architecture/2026-08-08-bounded-session-persistence-write-batching.md index 350a4dd7a4..69b25d82cc 100644 --- a/.agents/notes/implemented/architecture/2026-08-08-bounded-session-persistence-write-batching.md +++ b/.agents/notes/archived/architecture/2026-08-08-bounded-session-persistence-write-batching.md @@ -1,6 +1,7 @@ # Agent Note: Bounded session persistence write batching Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-08-bounded-session-persistence-write-batching.zh.md) diff --git a/.agents/notes/implemented/architecture/2026-08-08-bounded-session-persistence-write-batching.zh.md b/.agents/notes/archived/architecture/2026-08-08-bounded-session-persistence-write-batching.zh.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-08-bounded-session-persistence-write-batching.zh.md rename to .agents/notes/archived/architecture/2026-08-08-bounded-session-persistence-write-batching.zh.md index 495d7a7824..69888527b1 100644 --- a/.agents/notes/implemented/architecture/2026-08-08-bounded-session-persistence-write-batching.zh.md +++ b/.agents/notes/archived/architecture/2026-08-08-bounded-session-persistence-write-batching.zh.md @@ -1,6 +1,7 @@ # Agent Note: 为会话持久化写入批处理设定上界 Status: implemented +Archived: 2026-09-04 [English](2026-08-08-bounded-session-persistence-write-batching.md) | 中文 diff --git a/.agents/notes/archived/architecture/2026-08-08-client-tool-presentation-ownership.i18n.yaml b/.agents/notes/archived/architecture/2026-08-08-client-tool-presentation-ownership.i18n.yaml new file mode 100644 index 0000000000..b1a2ec1968 --- /dev/null +++ b/.agents/notes/archived/architecture/2026-08-08-client-tool-presentation-ownership.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-08-08-client-tool-presentation-ownership.md +2026-08-08-client-tool-presentation-ownership.md: 1de6468139fd7a54cff81e04a172bc41f541d4c2 +2026-08-08-client-tool-presentation-ownership.zh.md: 9ef138350b4b40d85a757e056a687e497f0f0fd7 diff --git a/.agents/notes/implemented/architecture/2026-08-08-client-tool-presentation-ownership.md b/.agents/notes/archived/architecture/2026-08-08-client-tool-presentation-ownership.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-08-client-tool-presentation-ownership.md rename to .agents/notes/archived/architecture/2026-08-08-client-tool-presentation-ownership.md index bf8568150c..1de6468139 100644 --- a/.agents/notes/implemented/architecture/2026-08-08-client-tool-presentation-ownership.md +++ b/.agents/notes/archived/architecture/2026-08-08-client-tool-presentation-ownership.md @@ -1,6 +1,7 @@ # Agent Note: Client Tool presentation ownership Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-08-client-tool-presentation-ownership.zh.md) diff --git a/.agents/notes/implemented/architecture/2026-08-08-client-tool-presentation-ownership.zh.md b/.agents/notes/archived/architecture/2026-08-08-client-tool-presentation-ownership.zh.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-08-client-tool-presentation-ownership.zh.md rename to .agents/notes/archived/architecture/2026-08-08-client-tool-presentation-ownership.zh.md index 015a48a049..9ef138350b 100644 --- a/.agents/notes/implemented/architecture/2026-08-08-client-tool-presentation-ownership.zh.md +++ b/.agents/notes/archived/architecture/2026-08-08-client-tool-presentation-ownership.zh.md @@ -1,6 +1,7 @@ # Agent Note: Client 工具展示所有权 Status: implemented +Archived: 2026-09-04 [English](2026-08-08-client-tool-presentation-ownership.md) | 中文 diff --git a/.agents/notes/archived/architecture/2026-08-08-per-preset-standing-mounts.i18n.yaml b/.agents/notes/archived/architecture/2026-08-08-per-preset-standing-mounts.i18n.yaml new file mode 100644 index 0000000000..77aca39fb1 --- /dev/null +++ b/.agents/notes/archived/architecture/2026-08-08-per-preset-standing-mounts.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-08-08-per-preset-standing-mounts.md +2026-08-08-per-preset-standing-mounts.md: 75d3fad3b7e372f8a06cf047a2352db2b24c37cf +2026-08-08-per-preset-standing-mounts.zh.md: 4351daa56ed4ed25faf7ed236eb07979b1a3b835 diff --git a/.agents/notes/implemented/architecture/2026-08-08-per-preset-standing-mounts.md b/.agents/notes/archived/architecture/2026-08-08-per-preset-standing-mounts.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-08-per-preset-standing-mounts.md rename to .agents/notes/archived/architecture/2026-08-08-per-preset-standing-mounts.md index fe4bb0e2c3..75d3fad3b7 100644 --- a/.agents/notes/implemented/architecture/2026-08-08-per-preset-standing-mounts.md +++ b/.agents/notes/archived/architecture/2026-08-08-per-preset-standing-mounts.md @@ -1,6 +1,7 @@ # Agent Note: Per-preset standing mounts over a scope parent chain Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-08-per-preset-standing-mounts.zh.md) diff --git a/.agents/notes/implemented/architecture/2026-08-08-per-preset-standing-mounts.zh.md b/.agents/notes/archived/architecture/2026-08-08-per-preset-standing-mounts.zh.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-08-per-preset-standing-mounts.zh.md rename to .agents/notes/archived/architecture/2026-08-08-per-preset-standing-mounts.zh.md index bd9b296120..4351daa56e 100644 --- a/.agents/notes/implemented/architecture/2026-08-08-per-preset-standing-mounts.zh.md +++ b/.agents/notes/archived/architecture/2026-08-08-per-preset-standing-mounts.zh.md @@ -1,6 +1,7 @@ # Agent Note: 基于作用域父链的逐预设常驻挂载 Status: implemented +Archived: 2026-09-04 [English](2026-08-08-per-preset-standing-mounts.md) | 中文 diff --git a/.agents/notes/archived/architecture/2026-08-09-cordis-event-walk-backstop.i18n.yaml b/.agents/notes/archived/architecture/2026-08-09-cordis-event-walk-backstop.i18n.yaml new file mode 100644 index 0000000000..68d2adc9f4 --- /dev/null +++ b/.agents/notes/archived/architecture/2026-08-09-cordis-event-walk-backstop.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-08-09-cordis-event-walk-backstop.md +2026-08-09-cordis-event-walk-backstop.md: 0ec2757bb4b24b7e5b989611222c77e28cdb9049 +2026-08-09-cordis-event-walk-backstop.zh.md: bc0193d6aa636c3acd9545059566254a4228a700 diff --git a/.agents/notes/implemented/architecture/2026-08-09-cordis-event-walk-backstop.md b/.agents/notes/archived/architecture/2026-08-09-cordis-event-walk-backstop.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-09-cordis-event-walk-backstop.md rename to .agents/notes/archived/architecture/2026-08-09-cordis-event-walk-backstop.md index 5a85c5df27..0ec2757bb4 100644 --- a/.agents/notes/implemented/architecture/2026-08-09-cordis-event-walk-backstop.md +++ b/.agents/notes/archived/architecture/2026-08-09-cordis-event-walk-backstop.md @@ -1,6 +1,7 @@ # Agent Note: An independent Events backstop closes the cordis-surface exhaustiveness gap Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-09-cordis-event-walk-backstop.zh.md) diff --git a/.agents/notes/implemented/architecture/2026-08-09-cordis-event-walk-backstop.zh.md b/.agents/notes/archived/architecture/2026-08-09-cordis-event-walk-backstop.zh.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-09-cordis-event-walk-backstop.zh.md rename to .agents/notes/archived/architecture/2026-08-09-cordis-event-walk-backstop.zh.md index 17660d90bd..bc0193d6aa 100644 --- a/.agents/notes/implemented/architecture/2026-08-09-cordis-event-walk-backstop.zh.md +++ b/.agents/notes/archived/architecture/2026-08-09-cordis-event-walk-backstop.zh.md @@ -1,6 +1,7 @@ # Agent Note: 独立的 Events 兜底扫描补上 Cordis 表面完备性缺口 Status: implemented +Archived: 2026-09-04 [English](2026-08-09-cordis-event-walk-backstop.md) | 中文 diff --git a/.agents/notes/archived/architecture/2026-08-09-headless-direct-core-entry-point.i18n.yaml b/.agents/notes/archived/architecture/2026-08-09-headless-direct-core-entry-point.i18n.yaml new file mode 100644 index 0000000000..7ae5446f79 --- /dev/null +++ b/.agents/notes/archived/architecture/2026-08-09-headless-direct-core-entry-point.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-08-09-headless-direct-core-entry-point.md +2026-08-09-headless-direct-core-entry-point.md: c9dd7bdf0e54f80d1049d2bfcd66ca311543bf38 +2026-08-09-headless-direct-core-entry-point.zh.md: 350584066b626f8814bf9dea6f9a7fc3fb345cd5 diff --git a/.agents/notes/implemented/architecture/2026-08-09-headless-direct-core-entry-point.md b/.agents/notes/archived/architecture/2026-08-09-headless-direct-core-entry-point.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-09-headless-direct-core-entry-point.md rename to .agents/notes/archived/architecture/2026-08-09-headless-direct-core-entry-point.md index ca3effd6c0..c9dd7bdf0e 100644 --- a/.agents/notes/implemented/architecture/2026-08-09-headless-direct-core-entry-point.md +++ b/.agents/notes/archived/architecture/2026-08-09-headless-direct-core-entry-point.md @@ -1,6 +1,7 @@ # Agent Note: headless is a direct core entry point Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-09-headless-direct-core-entry-point.zh.md) diff --git a/.agents/notes/implemented/architecture/2026-08-09-headless-direct-core-entry-point.zh.md b/.agents/notes/archived/architecture/2026-08-09-headless-direct-core-entry-point.zh.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-09-headless-direct-core-entry-point.zh.md rename to .agents/notes/archived/architecture/2026-08-09-headless-direct-core-entry-point.zh.md index 4da5c95393..350584066b 100644 --- a/.agents/notes/implemented/architecture/2026-08-09-headless-direct-core-entry-point.zh.md +++ b/.agents/notes/archived/architecture/2026-08-09-headless-direct-core-entry-point.zh.md @@ -1,6 +1,7 @@ # Agent Note: headless 是直接使用核心服务的入口 Status: implemented +Archived: 2026-09-04 [English](2026-08-09-headless-direct-core-entry-point.md) | 中文 diff --git a/.agents/notes/archived/architecture/2026-08-09-layered-skill-registry.i18n.yaml b/.agents/notes/archived/architecture/2026-08-09-layered-skill-registry.i18n.yaml new file mode 100644 index 0000000000..4a70760f6d --- /dev/null +++ b/.agents/notes/archived/architecture/2026-08-09-layered-skill-registry.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-08-09-layered-skill-registry.md +2026-08-09-layered-skill-registry.md: 614714886ea498fcfb690b1b44edfa7f7fd0c068 +2026-08-09-layered-skill-registry.zh.md: b5b5ea2a7a82ee38afbda059e12e337682756902 diff --git a/.agents/notes/implemented/architecture/2026-08-09-layered-skill-registry.md b/.agents/notes/archived/architecture/2026-08-09-layered-skill-registry.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-09-layered-skill-registry.md rename to .agents/notes/archived/architecture/2026-08-09-layered-skill-registry.md index bf49dda62f..614714886e 100644 --- a/.agents/notes/implemented/architecture/2026-08-09-layered-skill-registry.md +++ b/.agents/notes/archived/architecture/2026-08-09-layered-skill-registry.md @@ -1,6 +1,7 @@ # Agent Note: The skill registry is host-held and layered per scope Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-09-layered-skill-registry.zh.md) diff --git a/.agents/notes/implemented/architecture/2026-08-09-layered-skill-registry.zh.md b/.agents/notes/archived/architecture/2026-08-09-layered-skill-registry.zh.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-09-layered-skill-registry.zh.md rename to .agents/notes/archived/architecture/2026-08-09-layered-skill-registry.zh.md index 2f3f9c207b..b5b5ea2a7a 100644 --- a/.agents/notes/implemented/architecture/2026-08-09-layered-skill-registry.zh.md +++ b/.agents/notes/archived/architecture/2026-08-09-layered-skill-registry.zh.md @@ -1,6 +1,7 @@ # Agent Note: skill 注册表由宿主持有并按 scope 分层 Status: implemented +Archived: 2026-09-04 [English](2026-08-09-layered-skill-registry.md) | 中文 diff --git a/.agents/notes/archived/architecture/2026-08-10-message-feedback-sidecar.i18n.yaml b/.agents/notes/archived/architecture/2026-08-10-message-feedback-sidecar.i18n.yaml new file mode 100644 index 0000000000..b3aab9eedf --- /dev/null +++ b/.agents/notes/archived/architecture/2026-08-10-message-feedback-sidecar.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-08-10-message-feedback-sidecar.md +2026-08-10-message-feedback-sidecar.md: 7e54f7c44e8ea35c3f10497c2f25cc6ec316152a +2026-08-10-message-feedback-sidecar.zh.md: 79a3796d9f4998791f6e8a0d7bfa53b8488d5fb5 diff --git a/.agents/notes/implemented/architecture/2026-08-10-message-feedback-sidecar.md b/.agents/notes/archived/architecture/2026-08-10-message-feedback-sidecar.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-10-message-feedback-sidecar.md rename to .agents/notes/archived/architecture/2026-08-10-message-feedback-sidecar.md index d047bebf47..7e54f7c44e 100644 --- a/.agents/notes/implemented/architecture/2026-08-10-message-feedback-sidecar.md +++ b/.agents/notes/archived/architecture/2026-08-10-message-feedback-sidecar.md @@ -1,6 +1,7 @@ # Agent Note: Lifecycle-bound message feedback sidecar Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-10-message-feedback-sidecar.zh.md) diff --git a/.agents/notes/implemented/architecture/2026-08-10-message-feedback-sidecar.zh.md b/.agents/notes/archived/architecture/2026-08-10-message-feedback-sidecar.zh.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-10-message-feedback-sidecar.zh.md rename to .agents/notes/archived/architecture/2026-08-10-message-feedback-sidecar.zh.md index 4ee1b861a8..79a3796d9f 100644 --- a/.agents/notes/implemented/architecture/2026-08-10-message-feedback-sidecar.zh.md +++ b/.agents/notes/archived/architecture/2026-08-10-message-feedback-sidecar.zh.md @@ -1,6 +1,7 @@ # Agent Note: 绑定生命周期的消息反馈伴随记录 Status: implemented +Archived: 2026-09-04 [English](2026-08-10-message-feedback-sidecar.md) | 中文 diff --git a/.agents/notes/archived/architecture/2026-08-10-product-subagent-providers-in-shared-host.i18n.yaml b/.agents/notes/archived/architecture/2026-08-10-product-subagent-providers-in-shared-host.i18n.yaml new file mode 100644 index 0000000000..e9f807f76b --- /dev/null +++ b/.agents/notes/archived/architecture/2026-08-10-product-subagent-providers-in-shared-host.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-08-10-product-subagent-providers-in-shared-host.md +2026-08-10-product-subagent-providers-in-shared-host.md: 4d127ac81632e3bc0ec5384a9188a98d8fbc1855 +2026-08-10-product-subagent-providers-in-shared-host.zh.md: 30ec4fa491f4769545892eaa375933c9eda87802 diff --git a/.agents/notes/implemented/architecture/2026-08-10-product-subagent-providers-in-shared-host.md b/.agents/notes/archived/architecture/2026-08-10-product-subagent-providers-in-shared-host.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-10-product-subagent-providers-in-shared-host.md rename to .agents/notes/archived/architecture/2026-08-10-product-subagent-providers-in-shared-host.md index a998408c4d..4d127ac816 100644 --- a/.agents/notes/implemented/architecture/2026-08-10-product-subagent-providers-in-shared-host.md +++ b/.agents/notes/archived/architecture/2026-08-10-product-subagent-providers-in-shared-host.md @@ -1,6 +1,7 @@ # Agent Note: Product subagent providers live in the shared profile host Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-10-product-subagent-providers-in-shared-host.zh.md) diff --git a/.agents/notes/implemented/architecture/2026-08-10-product-subagent-providers-in-shared-host.zh.md b/.agents/notes/archived/architecture/2026-08-10-product-subagent-providers-in-shared-host.zh.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-10-product-subagent-providers-in-shared-host.zh.md rename to .agents/notes/archived/architecture/2026-08-10-product-subagent-providers-in-shared-host.zh.md index cce746399b..30ec4fa491 100644 --- a/.agents/notes/implemented/architecture/2026-08-10-product-subagent-providers-in-shared-host.zh.md +++ b/.agents/notes/archived/architecture/2026-08-10-product-subagent-providers-in-shared-host.zh.md @@ -1,6 +1,7 @@ # Agent Note: 产品 subagent 提供方位于共享 profile 宿主 Status: implemented +Archived: 2026-09-04 [English](2026-08-10-product-subagent-providers-in-shared-host.md) | 中文 diff --git a/.agents/notes/archived/architecture/2026-08-10-unary-apiproxy-remote-migration.i18n.yaml b/.agents/notes/archived/architecture/2026-08-10-unary-apiproxy-remote-migration.i18n.yaml new file mode 100644 index 0000000000..e7cf9d5bb0 --- /dev/null +++ b/.agents/notes/archived/architecture/2026-08-10-unary-apiproxy-remote-migration.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-08-10-unary-apiproxy-remote-migration.md +2026-08-10-unary-apiproxy-remote-migration.md: cb5faacebe6e79e64095ce4f15a6acfe43e2510b +2026-08-10-unary-apiproxy-remote-migration.zh.md: 090c835e187025fd075f7a8cd82751608873e160 diff --git a/.agents/notes/implemented/architecture/2026-08-10-unary-apiproxy-remote-migration.md b/.agents/notes/archived/architecture/2026-08-10-unary-apiproxy-remote-migration.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-10-unary-apiproxy-remote-migration.md rename to .agents/notes/archived/architecture/2026-08-10-unary-apiproxy-remote-migration.md index ee93276b08..cb5faacebe 100644 --- a/.agents/notes/implemented/architecture/2026-08-10-unary-apiproxy-remote-migration.md +++ b/.agents/notes/archived/architecture/2026-08-10-unary-apiproxy-remote-migration.md @@ -1,6 +1,7 @@ # Agent Note: Place unary browser operations on owning Remote services Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-10-unary-apiproxy-remote-migration.zh.md) diff --git a/.agents/notes/implemented/architecture/2026-08-10-unary-apiproxy-remote-migration.zh.md b/.agents/notes/archived/architecture/2026-08-10-unary-apiproxy-remote-migration.zh.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-10-unary-apiproxy-remote-migration.zh.md rename to .agents/notes/archived/architecture/2026-08-10-unary-apiproxy-remote-migration.zh.md index 63eb30a1c0..090c835e18 100644 --- a/.agents/notes/implemented/architecture/2026-08-10-unary-apiproxy-remote-migration.zh.md +++ b/.agents/notes/archived/architecture/2026-08-10-unary-apiproxy-remote-migration.zh.md @@ -1,6 +1,7 @@ # Agent Note: 将一元浏览器操作放到所属 Remote 服务 Status: implemented +Archived: 2026-09-04 [English](2026-08-10-unary-apiproxy-remote-migration.md) | 中文 diff --git a/.agents/notes/archived/architecture/2026-08-11-cmdline-seam-trim.i18n.yaml b/.agents/notes/archived/architecture/2026-08-11-cmdline-seam-trim.i18n.yaml new file mode 100644 index 0000000000..bdfa500cfa --- /dev/null +++ b/.agents/notes/archived/architecture/2026-08-11-cmdline-seam-trim.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-08-11-cmdline-seam-trim.md +2026-08-11-cmdline-seam-trim.md: 6ec356ce481040f2b9c89ffdaa73411e8007a93b +2026-08-11-cmdline-seam-trim.zh.md: dc711598041ced77497edb577505c3f5771fc505 diff --git a/.agents/notes/implemented/architecture/2026-08-11-cmdline-seam-trim.md b/.agents/notes/archived/architecture/2026-08-11-cmdline-seam-trim.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-11-cmdline-seam-trim.md rename to .agents/notes/archived/architecture/2026-08-11-cmdline-seam-trim.md index d7908d2c80..6ec356ce48 100644 --- a/.agents/notes/implemented/architecture/2026-08-11-cmdline-seam-trim.md +++ b/.agents/notes/archived/architecture/2026-08-11-cmdline-seam-trim.md @@ -1,6 +1,7 @@ # Agent Note: Trim the command-line seams to existing interfaces Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-11-cmdline-seam-trim.zh.md) diff --git a/.agents/notes/implemented/architecture/2026-08-11-cmdline-seam-trim.zh.md b/.agents/notes/archived/architecture/2026-08-11-cmdline-seam-trim.zh.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-11-cmdline-seam-trim.zh.md rename to .agents/notes/archived/architecture/2026-08-11-cmdline-seam-trim.zh.md index 75a57c022f..dc71159804 100644 --- a/.agents/notes/implemented/architecture/2026-08-11-cmdline-seam-trim.zh.md +++ b/.agents/notes/archived/architecture/2026-08-11-cmdline-seam-trim.zh.md @@ -1,6 +1,7 @@ # Agent Note: 把命令行接缝收窄到既有接口 Status: implemented +Archived: 2026-09-04 [English](2026-08-11-cmdline-seam-trim.md) | 中文 diff --git a/.agents/notes/archived/architecture/2026-08-11-loader-entry-disabled-interpolation.i18n.yaml b/.agents/notes/archived/architecture/2026-08-11-loader-entry-disabled-interpolation.i18n.yaml new file mode 100644 index 0000000000..b22c32e36a --- /dev/null +++ b/.agents/notes/archived/architecture/2026-08-11-loader-entry-disabled-interpolation.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-08-11-loader-entry-disabled-interpolation.md +2026-08-11-loader-entry-disabled-interpolation.md: 4a7a2690ce2a9a6e042a969420b5b13dcccd04f1 +2026-08-11-loader-entry-disabled-interpolation.zh.md: 01949fa1d40bfb25f1cb022e697fec064bf132e3 diff --git a/.agents/notes/implemented/architecture/2026-08-11-loader-entry-disabled-interpolation.md b/.agents/notes/archived/architecture/2026-08-11-loader-entry-disabled-interpolation.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-11-loader-entry-disabled-interpolation.md rename to .agents/notes/archived/architecture/2026-08-11-loader-entry-disabled-interpolation.md index 2d8fb73d95..4a7a2690ce 100644 --- a/.agents/notes/implemented/architecture/2026-08-11-loader-entry-disabled-interpolation.md +++ b/.agents/notes/archived/architecture/2026-08-11-loader-entry-disabled-interpolation.md @@ -1,6 +1,7 @@ # Agent Note: Loader interpolates the entry `disabled` field Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-11-loader-entry-disabled-interpolation.zh.md) diff --git a/.agents/notes/implemented/architecture/2026-08-11-loader-entry-disabled-interpolation.zh.md b/.agents/notes/archived/architecture/2026-08-11-loader-entry-disabled-interpolation.zh.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-11-loader-entry-disabled-interpolation.zh.md rename to .agents/notes/archived/architecture/2026-08-11-loader-entry-disabled-interpolation.zh.md index 9e45278fdc..01949fa1d4 100644 --- a/.agents/notes/implemented/architecture/2026-08-11-loader-entry-disabled-interpolation.zh.md +++ b/.agents/notes/archived/architecture/2026-08-11-loader-entry-disabled-interpolation.zh.md @@ -1,6 +1,7 @@ # Agent Note: Loader 插值条目 `disabled` 字段 Status: implemented +Archived: 2026-09-04 [English](2026-08-11-loader-entry-disabled-interpolation.md) | 中文 diff --git a/.agents/notes/archived/architecture/2026-08-11-pwsh-persistent-pty.i18n.yaml b/.agents/notes/archived/architecture/2026-08-11-pwsh-persistent-pty.i18n.yaml new file mode 100644 index 0000000000..ae7d709b9b --- /dev/null +++ b/.agents/notes/archived/architecture/2026-08-11-pwsh-persistent-pty.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-08-11-pwsh-persistent-pty.md +2026-08-11-pwsh-persistent-pty.md: ad5a8fdff0a4c1dcdc7ba9fab9e4aede64235119 +2026-08-11-pwsh-persistent-pty.zh.md: 16d723a597c62ff7efbc66c14b36893bb5821927 diff --git a/.agents/notes/implemented/architecture/2026-08-11-pwsh-persistent-pty.md b/.agents/notes/archived/architecture/2026-08-11-pwsh-persistent-pty.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-11-pwsh-persistent-pty.md rename to .agents/notes/archived/architecture/2026-08-11-pwsh-persistent-pty.md index 4c523d3c7c..ad5a8fdff0 100644 --- a/.agents/notes/implemented/architecture/2026-08-11-pwsh-persistent-pty.md +++ b/.agents/notes/archived/architecture/2026-08-11-pwsh-persistent-pty.md @@ -1,6 +1,7 @@ # Agent Note: Persistent pwsh over the terminal seam on Windows Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-11-pwsh-persistent-pty.zh.md) diff --git a/.agents/notes/implemented/architecture/2026-08-11-pwsh-persistent-pty.zh.md b/.agents/notes/archived/architecture/2026-08-11-pwsh-persistent-pty.zh.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-11-pwsh-persistent-pty.zh.md rename to .agents/notes/archived/architecture/2026-08-11-pwsh-persistent-pty.zh.md index 4f87490fd6..16d723a597 100644 --- a/.agents/notes/implemented/architecture/2026-08-11-pwsh-persistent-pty.zh.md +++ b/.agents/notes/archived/architecture/2026-08-11-pwsh-persistent-pty.zh.md @@ -1,6 +1,7 @@ # Agent Note: Windows 上基于 terminal seam 的持久化 pwsh Status: implemented +Archived: 2026-09-04 [English](2026-08-11-pwsh-persistent-pty.md) | 中文 diff --git a/.agents/notes/archived/architecture/2026-08-11-repository-naming-contract-and-rename-ledger.i18n.yaml b/.agents/notes/archived/architecture/2026-08-11-repository-naming-contract-and-rename-ledger.i18n.yaml new file mode 100644 index 0000000000..a209f1fa60 --- /dev/null +++ b/.agents/notes/archived/architecture/2026-08-11-repository-naming-contract-and-rename-ledger.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-08-11-repository-naming-contract-and-rename-ledger.md +2026-08-11-repository-naming-contract-and-rename-ledger.md: 10b172e86699d4e3d3d6bdfe01028bdf205b5642 +2026-08-11-repository-naming-contract-and-rename-ledger.zh.md: 86d663dcf38ae09c3fc9b2cc4be34a8ae8d62b68 diff --git a/.agents/notes/implemented/architecture/2026-08-11-repository-naming-contract-and-rename-ledger.md b/.agents/notes/archived/architecture/2026-08-11-repository-naming-contract-and-rename-ledger.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-11-repository-naming-contract-and-rename-ledger.md rename to .agents/notes/archived/architecture/2026-08-11-repository-naming-contract-and-rename-ledger.md index 269f18c494..10b172e866 100644 --- a/.agents/notes/implemented/architecture/2026-08-11-repository-naming-contract-and-rename-ledger.md +++ b/.agents/notes/archived/architecture/2026-08-11-repository-naming-contract-and-rename-ledger.md @@ -1,6 +1,7 @@ # Agent Note: Repository naming contract and pre-release rename ledger Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-11-repository-naming-contract-and-rename-ledger.zh.md) diff --git a/.agents/notes/implemented/architecture/2026-08-11-repository-naming-contract-and-rename-ledger.zh.md b/.agents/notes/archived/architecture/2026-08-11-repository-naming-contract-and-rename-ledger.zh.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-11-repository-naming-contract-and-rename-ledger.zh.md rename to .agents/notes/archived/architecture/2026-08-11-repository-naming-contract-and-rename-ledger.zh.md index 614332795d..86d663dcf3 100644 --- a/.agents/notes/implemented/architecture/2026-08-11-repository-naming-contract-and-rename-ledger.zh.md +++ b/.agents/notes/archived/architecture/2026-08-11-repository-naming-contract-and-rename-ledger.zh.md @@ -1,6 +1,7 @@ # Agent Note: 仓库命名约定与预发布重命名清单 Status: implemented +Archived: 2026-09-04 [English](2026-08-11-repository-naming-contract-and-rename-ledger.md) | 中文 diff --git a/.agents/notes/archived/architecture/2026-08-11-trajectory-conversation-context-assembly.i18n.yaml b/.agents/notes/archived/architecture/2026-08-11-trajectory-conversation-context-assembly.i18n.yaml new file mode 100644 index 0000000000..2abef0b23a --- /dev/null +++ b/.agents/notes/archived/architecture/2026-08-11-trajectory-conversation-context-assembly.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-08-11-trajectory-conversation-context-assembly.md +2026-08-11-trajectory-conversation-context-assembly.md: f9cde8c6e78d5e80e6a8cfa2ac7bcae27c85af2b +2026-08-11-trajectory-conversation-context-assembly.zh.md: e60884f4c3e359f6e0364df86102c523981b607b diff --git a/.agents/notes/implemented/architecture/2026-08-11-trajectory-conversation-context-assembly.md b/.agents/notes/archived/architecture/2026-08-11-trajectory-conversation-context-assembly.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-11-trajectory-conversation-context-assembly.md rename to .agents/notes/archived/architecture/2026-08-11-trajectory-conversation-context-assembly.md index fd246922b0..f9cde8c6e7 100644 --- a/.agents/notes/implemented/architecture/2026-08-11-trajectory-conversation-context-assembly.md +++ b/.agents/notes/archived/architecture/2026-08-11-trajectory-conversation-context-assembly.md @@ -1,6 +1,7 @@ # Agent Note: Trajectory assembly from registered Conversation Contexts Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-11-trajectory-conversation-context-assembly.zh.md) diff --git a/.agents/notes/implemented/architecture/2026-08-11-trajectory-conversation-context-assembly.zh.md b/.agents/notes/archived/architecture/2026-08-11-trajectory-conversation-context-assembly.zh.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-11-trajectory-conversation-context-assembly.zh.md rename to .agents/notes/archived/architecture/2026-08-11-trajectory-conversation-context-assembly.zh.md index 2568de889f..e60884f4c3 100644 --- a/.agents/notes/implemented/architecture/2026-08-11-trajectory-conversation-context-assembly.zh.md +++ b/.agents/notes/archived/architecture/2026-08-11-trajectory-conversation-context-assembly.zh.md @@ -1,6 +1,7 @@ # Agent Note: Trajectory 基于注册式 Conversation Context 组装数据 Status: implemented +Archived: 2026-09-04 [English](2026-08-11-trajectory-conversation-context-assembly.md) | 中文 diff --git a/.agents/notes/implemented/feature/2026-07-30-web-search-card.i18n.yaml b/.agents/notes/archived/architecture/2026-08-12-pi-ai-route-default-input-modalities.i18n.yaml similarity index 54% rename from .agents/notes/implemented/feature/2026-07-30-web-search-card.i18n.yaml rename to .agents/notes/archived/architecture/2026-08-12-pi-ai-route-default-input-modalities.i18n.yaml index 9e2f0ab43b..bb265599de 100644 --- a/.agents/notes/implemented/feature/2026-07-30-web-search-card.i18n.yaml +++ b/.agents/notes/archived/architecture/2026-08-12-pi-ai-route-default-input-modalities.i18n.yaml @@ -1,6 +1,6 @@ # Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-07-30-web-search-card.md -2026-07-30-web-search-card.md: 55a91e2d2a9f35dd8897822442119edc88431e9b -2026-07-30-web-search-card.zh.md: eda7332848e513b52b04a944ca4fc1166027420b +# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-08-12-pi-ai-route-default-input-modalities.md +2026-08-12-pi-ai-route-default-input-modalities.md: b7edb4e032a67c83a29d26d26b786d2f93918767 +2026-08-12-pi-ai-route-default-input-modalities.zh.md: 6509342d87e5f325163a493c0eae77bb88291baa diff --git a/.agents/notes/implemented/architecture/2026-08-12-pi-ai-route-default-input-modalities.md b/.agents/notes/archived/architecture/2026-08-12-pi-ai-route-default-input-modalities.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-12-pi-ai-route-default-input-modalities.md rename to .agents/notes/archived/architecture/2026-08-12-pi-ai-route-default-input-modalities.md index 83158d686b..b7edb4e032 100644 --- a/.agents/notes/implemented/architecture/2026-08-12-pi-ai-route-default-input-modalities.md +++ b/.agents/notes/archived/architecture/2026-08-12-pi-ai-route-default-input-modalities.md @@ -1,6 +1,7 @@ # Agent Note: A pi-ai model declares its own input modalities, and undeclared means text Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-12-pi-ai-route-default-input-modalities.zh.md) diff --git a/.agents/notes/implemented/architecture/2026-08-12-pi-ai-route-default-input-modalities.zh.md b/.agents/notes/archived/architecture/2026-08-12-pi-ai-route-default-input-modalities.zh.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-12-pi-ai-route-default-input-modalities.zh.md rename to .agents/notes/archived/architecture/2026-08-12-pi-ai-route-default-input-modalities.zh.md index 9083070867..6509342d87 100644 --- a/.agents/notes/implemented/architecture/2026-08-12-pi-ai-route-default-input-modalities.zh.md +++ b/.agents/notes/archived/architecture/2026-08-12-pi-ai-route-default-input-modalities.zh.md @@ -1,6 +1,7 @@ # Agent Note: pi-ai 模型自行声明输入模态,未声明即为文本 Status: implemented +Archived: 2026-09-04 [English](2026-08-12-pi-ai-route-default-input-modalities.md) | 中文 diff --git a/.agents/notes/archived/architecture/2026-08-12-plugin-owned-settings-surface.i18n.yaml b/.agents/notes/archived/architecture/2026-08-12-plugin-owned-settings-surface.i18n.yaml new file mode 100644 index 0000000000..6767b618fd --- /dev/null +++ b/.agents/notes/archived/architecture/2026-08-12-plugin-owned-settings-surface.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-08-12-plugin-owned-settings-surface.md +2026-08-12-plugin-owned-settings-surface.md: 7ca91864c3a62223abfd69e973dbf5be72123059 +2026-08-12-plugin-owned-settings-surface.zh.md: 3ac76f501d580ddc6ba8bce9a5505fd6b80eb1c9 diff --git a/.agents/notes/implemented/architecture/2026-08-12-plugin-owned-settings-surface.md b/.agents/notes/archived/architecture/2026-08-12-plugin-owned-settings-surface.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-12-plugin-owned-settings-surface.md rename to .agents/notes/archived/architecture/2026-08-12-plugin-owned-settings-surface.md index f1c9b48abd..7ca91864c3 100644 --- a/.agents/notes/implemented/architecture/2026-08-12-plugin-owned-settings-surface.md +++ b/.agents/notes/archived/architecture/2026-08-12-plugin-owned-settings-surface.md @@ -1,6 +1,7 @@ # Agent Note: Plugin-owned settings surface Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-12-plugin-owned-settings-surface.zh.md) diff --git a/.agents/notes/implemented/architecture/2026-08-12-plugin-owned-settings-surface.zh.md b/.agents/notes/archived/architecture/2026-08-12-plugin-owned-settings-surface.zh.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-12-plugin-owned-settings-surface.zh.md rename to .agents/notes/archived/architecture/2026-08-12-plugin-owned-settings-surface.zh.md index ff9f37290a..3ac76f501d 100644 --- a/.agents/notes/implemented/architecture/2026-08-12-plugin-owned-settings-surface.zh.md +++ b/.agents/notes/archived/architecture/2026-08-12-plugin-owned-settings-surface.zh.md @@ -1,6 +1,7 @@ # Agent Note: 由插件自己拥有的设置表层 Status: implemented +Archived: 2026-09-04 [English](2026-08-12-plugin-owned-settings-surface.md) | 中文 diff --git a/.agents/notes/archived/architecture/2026-08-13-session-content-search-opt-in.i18n.yaml b/.agents/notes/archived/architecture/2026-08-13-session-content-search-opt-in.i18n.yaml new file mode 100644 index 0000000000..308f226774 --- /dev/null +++ b/.agents/notes/archived/architecture/2026-08-13-session-content-search-opt-in.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-08-13-session-content-search-opt-in.md +2026-08-13-session-content-search-opt-in.md: f412248fb006763fb8a9ccedb6ee2f8a1eb81a74 +2026-08-13-session-content-search-opt-in.zh.md: 2e3c30d474dd79c7134adb4738dbcab1fe16ce4d diff --git a/.agents/notes/implemented/architecture/2026-08-13-session-content-search-opt-in.md b/.agents/notes/archived/architecture/2026-08-13-session-content-search-opt-in.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-13-session-content-search-opt-in.md rename to .agents/notes/archived/architecture/2026-08-13-session-content-search-opt-in.md index 2d14b2def0..f412248fb0 100644 --- a/.agents/notes/implemented/architecture/2026-08-13-session-content-search-opt-in.md +++ b/.agents/notes/archived/architecture/2026-08-13-session-content-search-opt-in.md @@ -1,6 +1,7 @@ # Agent Note: Session content search ships opt-in through openAt never Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-13-session-content-search-opt-in.zh.md) diff --git a/.agents/notes/implemented/architecture/2026-08-13-session-content-search-opt-in.zh.md b/.agents/notes/archived/architecture/2026-08-13-session-content-search-opt-in.zh.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-13-session-content-search-opt-in.zh.md rename to .agents/notes/archived/architecture/2026-08-13-session-content-search-opt-in.zh.md index 5231b37cf1..2e3c30d474 100644 --- a/.agents/notes/implemented/architecture/2026-08-13-session-content-search-opt-in.zh.md +++ b/.agents/notes/archived/architecture/2026-08-13-session-content-search-opt-in.zh.md @@ -1,6 +1,7 @@ # Agent Note: 会话内容搜索通过 openAt never 以 opt-in 方式交付 Status: implemented +Archived: 2026-09-04 [English](2026-08-13-session-content-search-opt-in.md) | 中文 diff --git a/.agents/notes/implemented/architecture/2026-08-17-dynamic-client-render-and-attachment-ownership.i18n.yaml b/.agents/notes/archived/architecture/2026-08-17-dynamic-client-render-and-attachment-ownership.i18n.yaml similarity index 51% rename from .agents/notes/implemented/architecture/2026-08-17-dynamic-client-render-and-attachment-ownership.i18n.yaml rename to .agents/notes/archived/architecture/2026-08-17-dynamic-client-render-and-attachment-ownership.i18n.yaml index 9d9a58eb1f..a88e10def3 100644 --- a/.agents/notes/implemented/architecture/2026-08-17-dynamic-client-render-and-attachment-ownership.i18n.yaml +++ b/.agents/notes/archived/architecture/2026-08-17-dynamic-client-render-and-attachment-ownership.i18n.yaml @@ -1,6 +1,6 @@ # Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-08-17-dynamic-client-render-and-attachment-ownership.md -2026-08-17-dynamic-client-render-and-attachment-ownership.md: a7955156adf76e8655295d4db316ed35d1968585 -2026-08-17-dynamic-client-render-and-attachment-ownership.zh.md: fb06fe873096e9a28c0de7923c2005d328e372e6 +# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-08-17-dynamic-client-render-and-attachment-ownership.md +2026-08-17-dynamic-client-render-and-attachment-ownership.md: c29bf25ad9d403b591c253d79a3190778a0d0983 +2026-08-17-dynamic-client-render-and-attachment-ownership.zh.md: fd6e7bc0954e6dcdb7703b6d77857319803cbc16 diff --git a/.agents/notes/implemented/architecture/2026-08-17-dynamic-client-render-and-attachment-ownership.md b/.agents/notes/archived/architecture/2026-08-17-dynamic-client-render-and-attachment-ownership.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-17-dynamic-client-render-and-attachment-ownership.md rename to .agents/notes/archived/architecture/2026-08-17-dynamic-client-render-and-attachment-ownership.md index a7955156ad..c29bf25ad9 100644 --- a/.agents/notes/implemented/architecture/2026-08-17-dynamic-client-render-and-attachment-ownership.md +++ b/.agents/notes/archived/architecture/2026-08-17-dynamic-client-render-and-attachment-ownership.md @@ -1,6 +1,7 @@ # Agent Note: Dynamic client render and attachment ownership Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-17-dynamic-client-render-and-attachment-ownership.zh.md) diff --git a/.agents/notes/implemented/architecture/2026-08-17-dynamic-client-render-and-attachment-ownership.zh.md b/.agents/notes/archived/architecture/2026-08-17-dynamic-client-render-and-attachment-ownership.zh.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-17-dynamic-client-render-and-attachment-ownership.zh.md rename to .agents/notes/archived/architecture/2026-08-17-dynamic-client-render-and-attachment-ownership.zh.md index fb06fe8730..fd6e7bc095 100644 --- a/.agents/notes/implemented/architecture/2026-08-17-dynamic-client-render-and-attachment-ownership.zh.md +++ b/.agents/notes/archived/architecture/2026-08-17-dynamic-client-render-and-attachment-ownership.zh.md @@ -1,6 +1,7 @@ # Agent Note: 客户端渲染与附件呈现的动态归属 Status: implemented +Archived: 2026-09-04 [English](2026-08-17-dynamic-client-render-and-attachment-ownership.md) | 中文 diff --git a/.agents/notes/archived/architecture/2026-08-17-settings-describe-mirror.i18n.yaml b/.agents/notes/archived/architecture/2026-08-17-settings-describe-mirror.i18n.yaml new file mode 100644 index 0000000000..d42a8a1285 --- /dev/null +++ b/.agents/notes/archived/architecture/2026-08-17-settings-describe-mirror.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-08-17-settings-describe-mirror.md +2026-08-17-settings-describe-mirror.md: f13ebe78f1fe198018ddd2257ccd360e9d994604 +2026-08-17-settings-describe-mirror.zh.md: a307c981f4e8c1ff3728f0f415ce274bb95055f4 diff --git a/.agents/notes/implemented/architecture/2026-08-17-settings-describe-mirror.md b/.agents/notes/archived/architecture/2026-08-17-settings-describe-mirror.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-17-settings-describe-mirror.md rename to .agents/notes/archived/architecture/2026-08-17-settings-describe-mirror.md index 81be16c83e..f13ebe78f1 100644 --- a/.agents/notes/implemented/architecture/2026-08-17-settings-describe-mirror.md +++ b/.agents/notes/archived/architecture/2026-08-17-settings-describe-mirror.md @@ -1,6 +1,7 @@ # Agent Note: Settings describe mirror Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-17-settings-describe-mirror.zh.md) diff --git a/.agents/notes/implemented/architecture/2026-08-17-settings-describe-mirror.zh.md b/.agents/notes/archived/architecture/2026-08-17-settings-describe-mirror.zh.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-17-settings-describe-mirror.zh.md rename to .agents/notes/archived/architecture/2026-08-17-settings-describe-mirror.zh.md index 80ba087afe..a307c981f4 100644 --- a/.agents/notes/implemented/architecture/2026-08-17-settings-describe-mirror.zh.md +++ b/.agents/notes/archived/architecture/2026-08-17-settings-describe-mirror.zh.md @@ -1,6 +1,7 @@ # Agent Note: Settings describe 镜像 Status: implemented +Archived: 2026-09-04 [English](2026-08-17-settings-describe-mirror.md) | 中文 diff --git a/.agents/notes/archived/architecture/2026-08-18-client-build-environment.i18n.yaml b/.agents/notes/archived/architecture/2026-08-18-client-build-environment.i18n.yaml new file mode 100644 index 0000000000..33bc0863fd --- /dev/null +++ b/.agents/notes/archived/architecture/2026-08-18-client-build-environment.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-08-18-client-build-environment.md +2026-08-18-client-build-environment.md: 203d910963e4deda56573a3cb2b0fd1a8940e2e1 +2026-08-18-client-build-environment.zh.md: 849d3094062a45d9a0ec8b0785c491f5d5a5af0b diff --git a/.agents/notes/implemented/architecture/2026-08-18-client-build-environment.md b/.agents/notes/archived/architecture/2026-08-18-client-build-environment.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-18-client-build-environment.md rename to .agents/notes/archived/architecture/2026-08-18-client-build-environment.md index c23a73e952..203d910963 100644 --- a/.agents/notes/implemented/architecture/2026-08-18-client-build-environment.md +++ b/.agents/notes/archived/architecture/2026-08-18-client-build-environment.md @@ -1,6 +1,7 @@ # Agent Note: Build-time public environment variables for client business code Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-18-client-build-environment.zh.md) diff --git a/.agents/notes/implemented/architecture/2026-08-18-client-build-environment.zh.md b/.agents/notes/archived/architecture/2026-08-18-client-build-environment.zh.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-18-client-build-environment.zh.md rename to .agents/notes/archived/architecture/2026-08-18-client-build-environment.zh.md index 5dbb5deeee..849d309406 100644 --- a/.agents/notes/implemented/architecture/2026-08-18-client-build-environment.zh.md +++ b/.agents/notes/archived/architecture/2026-08-18-client-build-environment.zh.md @@ -1,6 +1,7 @@ # Agent Note: Client 业务代码使用构建期公开环境变量 Status: implemented +Archived: 2026-09-04 [English](2026-08-18-client-build-environment.md) | 中文 diff --git a/.agents/notes/archived/architecture/2026-08-19-experimental-package-name-prefix.i18n.yaml b/.agents/notes/archived/architecture/2026-08-19-experimental-package-name-prefix.i18n.yaml new file mode 100644 index 0000000000..b68729416d --- /dev/null +++ b/.agents/notes/archived/architecture/2026-08-19-experimental-package-name-prefix.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-08-19-experimental-package-name-prefix.md +2026-08-19-experimental-package-name-prefix.md: 44b4e64def44de8eae87e60f1481a99bb5bc29b4 +2026-08-19-experimental-package-name-prefix.zh.md: 6f26b4ddfe7aba8f6f64179d68d3efdd30d92d8b diff --git a/.agents/notes/implemented/architecture/2026-08-19-experimental-package-name-prefix.md b/.agents/notes/archived/architecture/2026-08-19-experimental-package-name-prefix.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-19-experimental-package-name-prefix.md rename to .agents/notes/archived/architecture/2026-08-19-experimental-package-name-prefix.md index 3420fa20a0..44b4e64def 100644 --- a/.agents/notes/implemented/architecture/2026-08-19-experimental-package-name-prefix.md +++ b/.agents/notes/archived/architecture/2026-08-19-experimental-package-name-prefix.md @@ -1,6 +1,7 @@ # Agent Note: Mark experimental packages in npm names Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-19-experimental-package-name-prefix.zh.md) diff --git a/.agents/notes/implemented/architecture/2026-08-19-experimental-package-name-prefix.zh.md b/.agents/notes/archived/architecture/2026-08-19-experimental-package-name-prefix.zh.md similarity index 98% rename from .agents/notes/implemented/architecture/2026-08-19-experimental-package-name-prefix.zh.md rename to .agents/notes/archived/architecture/2026-08-19-experimental-package-name-prefix.zh.md index b7e7d07315..6f26b4ddfe 100644 --- a/.agents/notes/implemented/architecture/2026-08-19-experimental-package-name-prefix.zh.md +++ b/.agents/notes/archived/architecture/2026-08-19-experimental-package-name-prefix.zh.md @@ -1,6 +1,7 @@ # Agent Note: 在 npm 名中标记实验性包 Status: implemented +Archived: 2026-09-04 [English](2026-08-19-experimental-package-name-prefix.md) | 中文 diff --git a/.agents/notes/archived/architecture/2026-08-19-projection-cache-per-session-files.i18n.yaml b/.agents/notes/archived/architecture/2026-08-19-projection-cache-per-session-files.i18n.yaml new file mode 100644 index 0000000000..c2cb4a9d35 --- /dev/null +++ b/.agents/notes/archived/architecture/2026-08-19-projection-cache-per-session-files.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-08-19-projection-cache-per-session-files.md +2026-08-19-projection-cache-per-session-files.md: 367d5bb42fef04dca92ab14ede1837df1436642e +2026-08-19-projection-cache-per-session-files.zh.md: 4d1ac6825f19c88d7db78cad1624b32b6db9cfd6 diff --git a/.agents/notes/implemented/architecture/2026-08-19-projection-cache-per-session-files.md b/.agents/notes/archived/architecture/2026-08-19-projection-cache-per-session-files.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-19-projection-cache-per-session-files.md rename to .agents/notes/archived/architecture/2026-08-19-projection-cache-per-session-files.md index 0792ed6cac..367d5bb42f 100644 --- a/.agents/notes/implemented/architecture/2026-08-19-projection-cache-per-session-files.md +++ b/.agents/notes/archived/architecture/2026-08-19-projection-cache-per-session-files.md @@ -1,6 +1,7 @@ # Agent Note: Projection cache as per-session files Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-19-projection-cache-per-session-files.zh.md) diff --git a/.agents/notes/implemented/architecture/2026-08-19-projection-cache-per-session-files.zh.md b/.agents/notes/archived/architecture/2026-08-19-projection-cache-per-session-files.zh.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-19-projection-cache-per-session-files.zh.md rename to .agents/notes/archived/architecture/2026-08-19-projection-cache-per-session-files.zh.md index 44894a0d52..4d1ac6825f 100644 --- a/.agents/notes/implemented/architecture/2026-08-19-projection-cache-per-session-files.zh.md +++ b/.agents/notes/archived/architecture/2026-08-19-projection-cache-per-session-files.zh.md @@ -1,6 +1,7 @@ # Agent Note: 投影缓存改为每会话文件 Status: implemented +Archived: 2026-09-04 [English](2026-08-19-projection-cache-per-session-files.md) | 中文 diff --git a/.agents/notes/archived/architecture/2026-08-19-session-projection-state-and-client-views.i18n.yaml b/.agents/notes/archived/architecture/2026-08-19-session-projection-state-and-client-views.i18n.yaml new file mode 100644 index 0000000000..b89cf90712 --- /dev/null +++ b/.agents/notes/archived/architecture/2026-08-19-session-projection-state-and-client-views.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-08-19-session-projection-state-and-client-views.md +2026-08-19-session-projection-state-and-client-views.md: 76e3c01b1cb09558eabffb032d029ae6bcbe96ea +2026-08-19-session-projection-state-and-client-views.zh.md: 18c55b330ced7cfeb14c28a0f66eeb6e21b767b2 diff --git a/.agents/notes/implemented/architecture/2026-08-19-session-projection-state-and-client-views.md b/.agents/notes/archived/architecture/2026-08-19-session-projection-state-and-client-views.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-19-session-projection-state-and-client-views.md rename to .agents/notes/archived/architecture/2026-08-19-session-projection-state-and-client-views.md index e8b4c3c052..76e3c01b1c 100644 --- a/.agents/notes/implemented/architecture/2026-08-19-session-projection-state-and-client-views.md +++ b/.agents/notes/archived/architecture/2026-08-19-session-projection-state-and-client-views.md @@ -1,6 +1,7 @@ # Agent Note: Separate session projection state from client views Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-19-session-projection-state-and-client-views.zh.md) diff --git a/.agents/notes/implemented/architecture/2026-08-19-session-projection-state-and-client-views.zh.md b/.agents/notes/archived/architecture/2026-08-19-session-projection-state-and-client-views.zh.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-19-session-projection-state-and-client-views.zh.md rename to .agents/notes/archived/architecture/2026-08-19-session-projection-state-and-client-views.zh.md index 0c28d61764..18c55b330c 100644 --- a/.agents/notes/implemented/architecture/2026-08-19-session-projection-state-and-client-views.zh.md +++ b/.agents/notes/archived/architecture/2026-08-19-session-projection-state-and-client-views.zh.md @@ -1,6 +1,7 @@ # Agent Note: 拆分会话投影状态与客户端视图 Status: implemented +Archived: 2026-09-04 [English](2026-08-19-session-projection-state-and-client-views.md) | 中文 diff --git a/.agents/notes/archived/architecture/2026-08-19-shared-win32-process-primitives.i18n.yaml b/.agents/notes/archived/architecture/2026-08-19-shared-win32-process-primitives.i18n.yaml new file mode 100644 index 0000000000..35edc1e6f3 --- /dev/null +++ b/.agents/notes/archived/architecture/2026-08-19-shared-win32-process-primitives.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-08-19-shared-win32-process-primitives.md +2026-08-19-shared-win32-process-primitives.md: 5c4ef5d1922428ba3ad5a1241e9c318b96c7b571 +2026-08-19-shared-win32-process-primitives.zh.md: 121e5764f1bb7bc2f1a17fcea340f9a88431079c diff --git a/.agents/notes/implemented/architecture/2026-08-19-shared-win32-process-primitives.md b/.agents/notes/archived/architecture/2026-08-19-shared-win32-process-primitives.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-19-shared-win32-process-primitives.md rename to .agents/notes/archived/architecture/2026-08-19-shared-win32-process-primitives.md index 8765e5f735..5c4ef5d192 100644 --- a/.agents/notes/implemented/architecture/2026-08-19-shared-win32-process-primitives.md +++ b/.agents/notes/archived/architecture/2026-08-19-shared-win32-process-primitives.md @@ -1,6 +1,7 @@ # Agent Note: Windows sandbox process primitives have one low-level owner Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-19-shared-win32-process-primitives.zh.md) diff --git a/.agents/notes/implemented/architecture/2026-08-19-shared-win32-process-primitives.zh.md b/.agents/notes/archived/architecture/2026-08-19-shared-win32-process-primitives.zh.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-19-shared-win32-process-primitives.zh.md rename to .agents/notes/archived/architecture/2026-08-19-shared-win32-process-primitives.zh.md index f1cdfd32da..121e5764f1 100644 --- a/.agents/notes/implemented/architecture/2026-08-19-shared-win32-process-primitives.zh.md +++ b/.agents/notes/archived/architecture/2026-08-19-shared-win32-process-primitives.zh.md @@ -1,6 +1,7 @@ # Agent Note: Windows sandbox process primitives 只有一个低层 owner Status: implemented +Archived: 2026-09-04 [English](2026-08-19-shared-win32-process-primitives.md) | 中文 diff --git a/.agents/notes/archived/architecture/2026-08-19-web-index-injection-table.i18n.yaml b/.agents/notes/archived/architecture/2026-08-19-web-index-injection-table.i18n.yaml new file mode 100644 index 0000000000..f76b5c7597 --- /dev/null +++ b/.agents/notes/archived/architecture/2026-08-19-web-index-injection-table.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-08-19-web-index-injection-table.md +2026-08-19-web-index-injection-table.md: 3d3264dea3e70234f2bab71b5f11c946b719508f +2026-08-19-web-index-injection-table.zh.md: 2e55bac523a59a5a54a774fcde926c28e8471237 diff --git a/.agents/notes/implemented/architecture/2026-08-19-web-index-injection-table.md b/.agents/notes/archived/architecture/2026-08-19-web-index-injection-table.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-19-web-index-injection-table.md rename to .agents/notes/archived/architecture/2026-08-19-web-index-injection-table.md index 050690946a..3d3264dea3 100644 --- a/.agents/notes/implemented/architecture/2026-08-19-web-index-injection-table.md +++ b/.agents/notes/archived/architecture/2026-08-19-web-index-injection-table.md @@ -1,6 +1,7 @@ # Agent Note: structured index injection table (webserver/index-inject) Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-19-web-index-injection-table.zh.md) diff --git a/.agents/notes/implemented/architecture/2026-08-19-web-index-injection-table.zh.md b/.agents/notes/archived/architecture/2026-08-19-web-index-injection-table.zh.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-19-web-index-injection-table.zh.md rename to .agents/notes/archived/architecture/2026-08-19-web-index-injection-table.zh.md index 27d1cbce1d..2e55bac523 100644 --- a/.agents/notes/implemented/architecture/2026-08-19-web-index-injection-table.zh.md +++ b/.agents/notes/archived/architecture/2026-08-19-web-index-injection-table.zh.md @@ -1,6 +1,7 @@ # Agent Note: 结构化 index 注入表(webserver/index-inject 事件) Status: implemented +Archived: 2026-09-04 [English](2026-08-19-web-index-injection-table.md) | 中文 diff --git a/.agents/notes/archived/architecture/2026-08-20-preview-cloudflare-pages-deploy.i18n.yaml b/.agents/notes/archived/architecture/2026-08-20-preview-cloudflare-pages-deploy.i18n.yaml new file mode 100644 index 0000000000..11a93c52e0 --- /dev/null +++ b/.agents/notes/archived/architecture/2026-08-20-preview-cloudflare-pages-deploy.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-08-20-preview-cloudflare-pages-deploy.md +2026-08-20-preview-cloudflare-pages-deploy.md: c987ebedc301076e6de0e13ce2f4d0113e8e97f9 +2026-08-20-preview-cloudflare-pages-deploy.zh.md: 333513186e4d271af4fb348bbd06adabe8f98e6c diff --git a/.agents/notes/implemented/architecture/2026-08-20-preview-cloudflare-pages-deploy.md b/.agents/notes/archived/architecture/2026-08-20-preview-cloudflare-pages-deploy.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-20-preview-cloudflare-pages-deploy.md rename to .agents/notes/archived/architecture/2026-08-20-preview-cloudflare-pages-deploy.md index 38b2834d61..c987ebedc3 100644 --- a/.agents/notes/implemented/architecture/2026-08-20-preview-cloudflare-pages-deploy.md +++ b/.agents/notes/archived/architecture/2026-08-20-preview-cloudflare-pages-deploy.md @@ -1,6 +1,7 @@ # Agent Note: per-PR preview deployments on Cloudflare Pages Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-20-preview-cloudflare-pages-deploy.zh.md) diff --git a/.agents/notes/implemented/architecture/2026-08-20-preview-cloudflare-pages-deploy.zh.md b/.agents/notes/archived/architecture/2026-08-20-preview-cloudflare-pages-deploy.zh.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-20-preview-cloudflare-pages-deploy.zh.md rename to .agents/notes/archived/architecture/2026-08-20-preview-cloudflare-pages-deploy.zh.md index 7268217f01..333513186e 100644 --- a/.agents/notes/implemented/architecture/2026-08-20-preview-cloudflare-pages-deploy.zh.md +++ b/.agents/notes/archived/architecture/2026-08-20-preview-cloudflare-pages-deploy.zh.md @@ -1,6 +1,7 @@ # Agent Note: 每 PR 预览部署上 Cloudflare Pages Status: implemented +Archived: 2026-09-04 [English](2026-08-20-preview-cloudflare-pages-deploy.md) | 中文 diff --git a/.agents/notes/archived/architecture/2026-08-20-web-composer-lexical-editor.i18n.yaml b/.agents/notes/archived/architecture/2026-08-20-web-composer-lexical-editor.i18n.yaml new file mode 100644 index 0000000000..bdcf12072f --- /dev/null +++ b/.agents/notes/archived/architecture/2026-08-20-web-composer-lexical-editor.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-08-20-web-composer-lexical-editor.md +2026-08-20-web-composer-lexical-editor.md: 434d08af0218abfbd52d7f4a7423e14ae578702f +2026-08-20-web-composer-lexical-editor.zh.md: bf466aa7d641ceb29a29fb3e8a772a2152ffbe83 diff --git a/.agents/notes/implemented/architecture/2026-08-20-web-composer-lexical-editor.md b/.agents/notes/archived/architecture/2026-08-20-web-composer-lexical-editor.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-20-web-composer-lexical-editor.md rename to .agents/notes/archived/architecture/2026-08-20-web-composer-lexical-editor.md index bc1f2f55c8..434d08af02 100644 --- a/.agents/notes/implemented/architecture/2026-08-20-web-composer-lexical-editor.md +++ b/.agents/notes/archived/architecture/2026-08-20-web-composer-lexical-editor.md @@ -1,6 +1,7 @@ # Agent Note: Web composer as a Lexical editor (chips as atomic nodes) Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-20-web-composer-lexical-editor.zh.md) diff --git a/.agents/notes/implemented/architecture/2026-08-20-web-composer-lexical-editor.zh.md b/.agents/notes/archived/architecture/2026-08-20-web-composer-lexical-editor.zh.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-20-web-composer-lexical-editor.zh.md rename to .agents/notes/archived/architecture/2026-08-20-web-composer-lexical-editor.zh.md index 2d61debd9d..bf466aa7d6 100644 --- a/.agents/notes/implemented/architecture/2026-08-20-web-composer-lexical-editor.zh.md +++ b/.agents/notes/archived/architecture/2026-08-20-web-composer-lexical-editor.zh.md @@ -1,6 +1,7 @@ # Agent Note: Web 输入框改为 Lexical 编辑器(chip 为原子节点) Status: implemented +Archived: 2026-09-04 [English](2026-08-20-web-composer-lexical-editor.md) | 中文 diff --git a/.agents/notes/archived/architecture/2026-08-20-webworker-node-face.i18n.yaml b/.agents/notes/archived/architecture/2026-08-20-webworker-node-face.i18n.yaml new file mode 100644 index 0000000000..2cd4c0dafd --- /dev/null +++ b/.agents/notes/archived/architecture/2026-08-20-webworker-node-face.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-08-20-webworker-node-face.md +2026-08-20-webworker-node-face.md: 705b55b9518fb0b75644ce33af1a487b4fe4344e +2026-08-20-webworker-node-face.zh.md: d68a3d4d69d4e1ef13ca48ef212693379be96e41 diff --git a/.agents/notes/implemented/architecture/2026-08-20-webworker-node-face.md b/.agents/notes/archived/architecture/2026-08-20-webworker-node-face.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-20-webworker-node-face.md rename to .agents/notes/archived/architecture/2026-08-20-webworker-node-face.md index 05c3bfe7fa..705b55b951 100644 --- a/.agents/notes/implemented/architecture/2026-08-20-webworker-node-face.md +++ b/.agents/notes/archived/architecture/2026-08-20-webworker-node-face.md @@ -1,6 +1,7 @@ # Agent Note: the worker's Node face — builtins, VFS, and the shell process layer Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-20-webworker-node-face.zh.md) diff --git a/.agents/notes/implemented/architecture/2026-08-20-webworker-node-face.zh.md b/.agents/notes/archived/architecture/2026-08-20-webworker-node-face.zh.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-20-webworker-node-face.zh.md rename to .agents/notes/archived/architecture/2026-08-20-webworker-node-face.zh.md index 79e444275c..d68a3d4d69 100644 --- a/.agents/notes/implemented/architecture/2026-08-20-webworker-node-face.zh.md +++ b/.agents/notes/archived/architecture/2026-08-20-webworker-node-face.zh.md @@ -1,6 +1,7 @@ # Agent Note: worker 的 Node 面——builtin、VFS 与 shell 进程层 Status: implemented +Archived: 2026-09-04 [English](2026-08-20-webworker-node-face.md) | 中文 diff --git a/.agents/notes/archived/architecture/2026-08-20-webworker-pack-lowering-and-preview.i18n.yaml b/.agents/notes/archived/architecture/2026-08-20-webworker-pack-lowering-and-preview.i18n.yaml new file mode 100644 index 0000000000..6808be3281 --- /dev/null +++ b/.agents/notes/archived/architecture/2026-08-20-webworker-pack-lowering-and-preview.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-08-20-webworker-pack-lowering-and-preview.md +2026-08-20-webworker-pack-lowering-and-preview.md: 80693e5b447322bcb13fcff4b96296d882c2a7c0 +2026-08-20-webworker-pack-lowering-and-preview.zh.md: 5295fef87c93c0f5f04f05cd68f649f523928511 diff --git a/.agents/notes/implemented/architecture/2026-08-20-webworker-pack-lowering-and-preview.md b/.agents/notes/archived/architecture/2026-08-20-webworker-pack-lowering-and-preview.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-20-webworker-pack-lowering-and-preview.md rename to .agents/notes/archived/architecture/2026-08-20-webworker-pack-lowering-and-preview.md index 24dd5ba6e3..80693e5b44 100644 --- a/.agents/notes/implemented/architecture/2026-08-20-webworker-pack-lowering-and-preview.md +++ b/.agents/notes/archived/architecture/2026-08-20-webworker-pack-lowering-and-preview.md @@ -1,6 +1,7 @@ # Agent Note: pack-time lowering and the single-build preview Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-20-webworker-pack-lowering-and-preview.zh.md) diff --git a/.agents/notes/implemented/architecture/2026-08-20-webworker-pack-lowering-and-preview.zh.md b/.agents/notes/archived/architecture/2026-08-20-webworker-pack-lowering-and-preview.zh.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-20-webworker-pack-lowering-and-preview.zh.md rename to .agents/notes/archived/architecture/2026-08-20-webworker-pack-lowering-and-preview.zh.md index 1976c7e591..5295fef87c 100644 --- a/.agents/notes/implemented/architecture/2026-08-20-webworker-pack-lowering-and-preview.zh.md +++ b/.agents/notes/archived/architecture/2026-08-20-webworker-pack-lowering-and-preview.zh.md @@ -1,6 +1,7 @@ # Agent Note: pack 期 lowering 与单构建 preview Status: implemented +Archived: 2026-09-04 [English](2026-08-20-webworker-pack-lowering-and-preview.md) | 中文 diff --git a/.agents/notes/archived/architecture/2026-08-21-session-log-read-intent.i18n.yaml b/.agents/notes/archived/architecture/2026-08-21-session-log-read-intent.i18n.yaml new file mode 100644 index 0000000000..6f51393e3d --- /dev/null +++ b/.agents/notes/archived/architecture/2026-08-21-session-log-read-intent.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-08-21-session-log-read-intent.md +2026-08-21-session-log-read-intent.md: dc87a53ff3ccb7f64545014fa4c82469a2faf4b6 +2026-08-21-session-log-read-intent.zh.md: 6c0e601e3a1a92d2db5c164c9355c583a032021c diff --git a/.agents/notes/implemented/architecture/2026-08-21-session-log-read-intent.md b/.agents/notes/archived/architecture/2026-08-21-session-log-read-intent.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-21-session-log-read-intent.md rename to .agents/notes/archived/architecture/2026-08-21-session-log-read-intent.md index 81cdd77088..dc87a53ff3 100644 --- a/.agents/notes/implemented/architecture/2026-08-21-session-log-read-intent.md +++ b/.agents/notes/archived/architecture/2026-08-21-session-log-read-intent.md @@ -1,6 +1,7 @@ # Agent Note: Session log reads state their materialization cost Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-21-session-log-read-intent.zh.md) diff --git a/.agents/notes/implemented/architecture/2026-08-21-session-log-read-intent.zh.md b/.agents/notes/archived/architecture/2026-08-21-session-log-read-intent.zh.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-21-session-log-read-intent.zh.md rename to .agents/notes/archived/architecture/2026-08-21-session-log-read-intent.zh.md index e5d0425981..6c0e601e3a 100644 --- a/.agents/notes/implemented/architecture/2026-08-21-session-log-read-intent.zh.md +++ b/.agents/notes/archived/architecture/2026-08-21-session-log-read-intent.zh.md @@ -1,6 +1,7 @@ # Agent Note: 会话日志读取显式表达物化成本 Status: implemented +Archived: 2026-09-04 [English](2026-08-21-session-log-read-intent.md) | 中文 diff --git a/.agents/notes/archived/architecture/2026-08-23-cross-realm-cdp-inspector.i18n.yaml b/.agents/notes/archived/architecture/2026-08-23-cross-realm-cdp-inspector.i18n.yaml new file mode 100644 index 0000000000..d40d4bba2d --- /dev/null +++ b/.agents/notes/archived/architecture/2026-08-23-cross-realm-cdp-inspector.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-08-23-cross-realm-cdp-inspector.md +2026-08-23-cross-realm-cdp-inspector.md: 174e9c38349528cebc24b69133e491ad5a34c22b +2026-08-23-cross-realm-cdp-inspector.zh.md: a528136b08e6029f380bfda0ec5f7ba02be0d8ad diff --git a/.agents/notes/implemented/architecture/2026-08-23-cross-realm-cdp-inspector.md b/.agents/notes/archived/architecture/2026-08-23-cross-realm-cdp-inspector.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-23-cross-realm-cdp-inspector.md rename to .agents/notes/archived/architecture/2026-08-23-cross-realm-cdp-inspector.md index e6e1d48da4..174e9c3834 100644 --- a/.agents/notes/implemented/architecture/2026-08-23-cross-realm-cdp-inspector.md +++ b/.agents/notes/archived/architecture/2026-08-23-cross-realm-cdp-inspector.md @@ -1,6 +1,7 @@ # Agent Note: Cross-realm CDP inspector Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-23-cross-realm-cdp-inspector.zh.md) diff --git a/.agents/notes/implemented/architecture/2026-08-23-cross-realm-cdp-inspector.zh.md b/.agents/notes/archived/architecture/2026-08-23-cross-realm-cdp-inspector.zh.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-23-cross-realm-cdp-inspector.zh.md rename to .agents/notes/archived/architecture/2026-08-23-cross-realm-cdp-inspector.zh.md index 9d67868caf..a528136b08 100644 --- a/.agents/notes/implemented/architecture/2026-08-23-cross-realm-cdp-inspector.zh.md +++ b/.agents/notes/archived/architecture/2026-08-23-cross-realm-cdp-inspector.zh.md @@ -1,6 +1,7 @@ # Agent Note: 跨 realm CDP Inspector Status: implemented +Archived: 2026-09-04 [English](2026-08-23-cross-realm-cdp-inspector.md) | 中文 diff --git a/.agents/notes/archived/architecture/2026-08-23-python-sdk-dsh-profile-runtime.i18n.yaml b/.agents/notes/archived/architecture/2026-08-23-python-sdk-dsh-profile-runtime.i18n.yaml new file mode 100644 index 0000000000..4e2c49d100 --- /dev/null +++ b/.agents/notes/archived/architecture/2026-08-23-python-sdk-dsh-profile-runtime.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-08-23-python-sdk-dsh-profile-runtime.md +2026-08-23-python-sdk-dsh-profile-runtime.md: 042f1c88599efb5cba6ab0024fcbb39247d674ab +2026-08-23-python-sdk-dsh-profile-runtime.zh.md: c614e54302dfc12cd343351dc050f02b0d2faec1 diff --git a/.agents/notes/implemented/architecture/2026-08-23-python-sdk-dsh-profile-runtime.md b/.agents/notes/archived/architecture/2026-08-23-python-sdk-dsh-profile-runtime.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-23-python-sdk-dsh-profile-runtime.md rename to .agents/notes/archived/architecture/2026-08-23-python-sdk-dsh-profile-runtime.md index 07e3bd522b..042f1c8859 100644 --- a/.agents/notes/implemented/architecture/2026-08-23-python-sdk-dsh-profile-runtime.md +++ b/.agents/notes/archived/architecture/2026-08-23-python-sdk-dsh-profile-runtime.md @@ -1,6 +1,7 @@ # Agent Note: Python SDK runtime through the dsh profile launcher Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-23-python-sdk-dsh-profile-runtime.zh.md) diff --git a/.agents/notes/implemented/architecture/2026-08-23-python-sdk-dsh-profile-runtime.zh.md b/.agents/notes/archived/architecture/2026-08-23-python-sdk-dsh-profile-runtime.zh.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-23-python-sdk-dsh-profile-runtime.zh.md rename to .agents/notes/archived/architecture/2026-08-23-python-sdk-dsh-profile-runtime.zh.md index 1b68c50d93..c614e54302 100644 --- a/.agents/notes/implemented/architecture/2026-08-23-python-sdk-dsh-profile-runtime.zh.md +++ b/.agents/notes/archived/architecture/2026-08-23-python-sdk-dsh-profile-runtime.zh.md @@ -1,6 +1,7 @@ # Agent Note: 通过 dsh profile 启动器运行 Python SDK 运行时 Status: implemented +Archived: 2026-09-04 [English](2026-08-23-python-sdk-dsh-profile-runtime.md) | 中文 diff --git a/.agents/notes/archived/architecture/2026-08-23-python-sdk-windows-x64-runtime.i18n.yaml b/.agents/notes/archived/architecture/2026-08-23-python-sdk-windows-x64-runtime.i18n.yaml new file mode 100644 index 0000000000..53a79179f2 --- /dev/null +++ b/.agents/notes/archived/architecture/2026-08-23-python-sdk-windows-x64-runtime.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-08-23-python-sdk-windows-x64-runtime.md +2026-08-23-python-sdk-windows-x64-runtime.md: 5da09c133cf2fac8ff09f54ac1ebb84a1293ec67 +2026-08-23-python-sdk-windows-x64-runtime.zh.md: a8874e358a2b10e984caa3cd8ef7cf937de7a534 diff --git a/.agents/notes/implemented/architecture/2026-08-23-python-sdk-windows-x64-runtime.md b/.agents/notes/archived/architecture/2026-08-23-python-sdk-windows-x64-runtime.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-23-python-sdk-windows-x64-runtime.md rename to .agents/notes/archived/architecture/2026-08-23-python-sdk-windows-x64-runtime.md index 1b59dec470..5da09c133c 100644 --- a/.agents/notes/implemented/architecture/2026-08-23-python-sdk-windows-x64-runtime.md +++ b/.agents/notes/archived/architecture/2026-08-23-python-sdk-windows-x64-runtime.md @@ -1,6 +1,7 @@ # Agent Note: Python SDK Windows x64 runtime Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-23-python-sdk-windows-x64-runtime.zh.md) diff --git a/.agents/notes/implemented/architecture/2026-08-23-python-sdk-windows-x64-runtime.zh.md b/.agents/notes/archived/architecture/2026-08-23-python-sdk-windows-x64-runtime.zh.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-23-python-sdk-windows-x64-runtime.zh.md rename to .agents/notes/archived/architecture/2026-08-23-python-sdk-windows-x64-runtime.zh.md index 75cea660c3..a8874e358a 100644 --- a/.agents/notes/implemented/architecture/2026-08-23-python-sdk-windows-x64-runtime.zh.md +++ b/.agents/notes/archived/architecture/2026-08-23-python-sdk-windows-x64-runtime.zh.md @@ -1,6 +1,7 @@ # Agent Note: Python SDK Windows x64 运行时 Status: implemented +Archived: 2026-09-04 [English](2026-08-23-python-sdk-windows-x64-runtime.md) | 中文 diff --git a/.agents/notes/archived/architecture/2026-08-23-webworker-vfs-watch-and-landlock.i18n.yaml b/.agents/notes/archived/architecture/2026-08-23-webworker-vfs-watch-and-landlock.i18n.yaml new file mode 100644 index 0000000000..db32864a78 --- /dev/null +++ b/.agents/notes/archived/architecture/2026-08-23-webworker-vfs-watch-and-landlock.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-08-23-webworker-vfs-watch-and-landlock.md +2026-08-23-webworker-vfs-watch-and-landlock.md: 7786e6765bb781f3c3bfadbda672163b6f345637 +2026-08-23-webworker-vfs-watch-and-landlock.zh.md: b7d7edeacf33f0ab74c90e58f4ad6561add14a34 diff --git a/.agents/notes/implemented/architecture/2026-08-23-webworker-vfs-watch-and-landlock.md b/.agents/notes/archived/architecture/2026-08-23-webworker-vfs-watch-and-landlock.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-23-webworker-vfs-watch-and-landlock.md rename to .agents/notes/archived/architecture/2026-08-23-webworker-vfs-watch-and-landlock.md index 2705c63aa6..7786e6765b 100644 --- a/.agents/notes/implemented/architecture/2026-08-23-webworker-vfs-watch-and-landlock.md +++ b/.agents/notes/archived/architecture/2026-08-23-webworker-vfs-watch-and-landlock.md @@ -1,6 +1,7 @@ # Agent Note: Web Worker VFS watching and CLI-compatible confinement Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-23-webworker-vfs-watch-and-landlock.zh.md) diff --git a/.agents/notes/implemented/architecture/2026-08-23-webworker-vfs-watch-and-landlock.zh.md b/.agents/notes/archived/architecture/2026-08-23-webworker-vfs-watch-and-landlock.zh.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-23-webworker-vfs-watch-and-landlock.zh.md rename to .agents/notes/archived/architecture/2026-08-23-webworker-vfs-watch-and-landlock.zh.md index 4470720e1f..b7d7edeacf 100644 --- a/.agents/notes/implemented/architecture/2026-08-23-webworker-vfs-watch-and-landlock.zh.md +++ b/.agents/notes/archived/architecture/2026-08-23-webworker-vfs-watch-and-landlock.zh.md @@ -1,6 +1,7 @@ # Agent Note: Web Worker VFS 监听与 CLI 兼容 confinement Status: implemented +Archived: 2026-09-04 [English](2026-08-23-webworker-vfs-watch-and-landlock.md) | 中文 diff --git a/.agents/notes/archived/architecture/2026-08-24-cordis-runtime-tree-inspection.i18n.yaml b/.agents/notes/archived/architecture/2026-08-24-cordis-runtime-tree-inspection.i18n.yaml new file mode 100644 index 0000000000..e471fa3eb0 --- /dev/null +++ b/.agents/notes/archived/architecture/2026-08-24-cordis-runtime-tree-inspection.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-08-24-cordis-runtime-tree-inspection.md +2026-08-24-cordis-runtime-tree-inspection.md: 1e0cb2eda641501b5ee6ef92392d5604c1476323 +2026-08-24-cordis-runtime-tree-inspection.zh.md: 17045803f3003daeda4c5086e9ea51f599cc542a diff --git a/.agents/notes/implemented/architecture/2026-08-24-cordis-runtime-tree-inspection.md b/.agents/notes/archived/architecture/2026-08-24-cordis-runtime-tree-inspection.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-24-cordis-runtime-tree-inspection.md rename to .agents/notes/archived/architecture/2026-08-24-cordis-runtime-tree-inspection.md index 2cd63aa415..1e0cb2eda6 100644 --- a/.agents/notes/implemented/architecture/2026-08-24-cordis-runtime-tree-inspection.md +++ b/.agents/notes/archived/architecture/2026-08-24-cordis-runtime-tree-inspection.md @@ -1,6 +1,7 @@ # Agent Note: Cordis runtime tree inspection Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-24-cordis-runtime-tree-inspection.zh.md) diff --git a/.agents/notes/implemented/architecture/2026-08-24-cordis-runtime-tree-inspection.zh.md b/.agents/notes/archived/architecture/2026-08-24-cordis-runtime-tree-inspection.zh.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-24-cordis-runtime-tree-inspection.zh.md rename to .agents/notes/archived/architecture/2026-08-24-cordis-runtime-tree-inspection.zh.md index 88cf2b344d..17045803f3 100644 --- a/.agents/notes/implemented/architecture/2026-08-24-cordis-runtime-tree-inspection.zh.md +++ b/.agents/notes/archived/architecture/2026-08-24-cordis-runtime-tree-inspection.zh.md @@ -1,6 +1,7 @@ # Agent Note: Cordis 运行时树检查 Status: implemented +Archived: 2026-09-04 [English](2026-08-24-cordis-runtime-tree-inspection.md) | 中文 diff --git a/.agents/notes/archived/architecture/2026-08-24-standalone-sdk-minimal-profile.i18n.yaml b/.agents/notes/archived/architecture/2026-08-24-standalone-sdk-minimal-profile.i18n.yaml new file mode 100644 index 0000000000..f1a0a7e271 --- /dev/null +++ b/.agents/notes/archived/architecture/2026-08-24-standalone-sdk-minimal-profile.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-08-24-standalone-sdk-minimal-profile.md +2026-08-24-standalone-sdk-minimal-profile.md: 32bc47fc498b47ba3e8e9cd738c52a4bf1a31b87 +2026-08-24-standalone-sdk-minimal-profile.zh.md: bca63ba2d327234e26827351ccd7a165fd126a3b diff --git a/.agents/notes/implemented/architecture/2026-08-24-standalone-sdk-minimal-profile.md b/.agents/notes/archived/architecture/2026-08-24-standalone-sdk-minimal-profile.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-24-standalone-sdk-minimal-profile.md rename to .agents/notes/archived/architecture/2026-08-24-standalone-sdk-minimal-profile.md index 3c53ea8647..32bc47fc49 100644 --- a/.agents/notes/implemented/architecture/2026-08-24-standalone-sdk-minimal-profile.md +++ b/.agents/notes/archived/architecture/2026-08-24-standalone-sdk-minimal-profile.md @@ -1,6 +1,7 @@ # Agent Note: Standalone sdk-minimal profile under dsh Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-24-standalone-sdk-minimal-profile.zh.md) diff --git a/.agents/notes/implemented/architecture/2026-08-24-standalone-sdk-minimal-profile.zh.md b/.agents/notes/archived/architecture/2026-08-24-standalone-sdk-minimal-profile.zh.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-24-standalone-sdk-minimal-profile.zh.md rename to .agents/notes/archived/architecture/2026-08-24-standalone-sdk-minimal-profile.zh.md index c6f4d705d9..bca63ba2d3 100644 --- a/.agents/notes/implemented/architecture/2026-08-24-standalone-sdk-minimal-profile.zh.md +++ b/.agents/notes/archived/architecture/2026-08-24-standalone-sdk-minimal-profile.zh.md @@ -1,6 +1,7 @@ # Agent Note: dsh 下的独立 sdk-minimal profile Status: implemented +Archived: 2026-09-04 [English](2026-08-24-standalone-sdk-minimal-profile.md) | 中文 diff --git a/.agents/notes/archived/architecture/2026-08-25-persistence-latency-and-page-size.i18n.yaml b/.agents/notes/archived/architecture/2026-08-25-persistence-latency-and-page-size.i18n.yaml new file mode 100644 index 0000000000..7c4341a9fa --- /dev/null +++ b/.agents/notes/archived/architecture/2026-08-25-persistence-latency-and-page-size.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-08-25-persistence-latency-and-page-size.md +2026-08-25-persistence-latency-and-page-size.md: ccaf7929a4dbe2aac33074aabf4676a144e4e096 +2026-08-25-persistence-latency-and-page-size.zh.md: e44a7f9631f9c4c79d982f39f640cb9800a6c1a9 diff --git a/.agents/notes/implemented/architecture/2026-08-25-persistence-latency-and-page-size.md b/.agents/notes/archived/architecture/2026-08-25-persistence-latency-and-page-size.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-25-persistence-latency-and-page-size.md rename to .agents/notes/archived/architecture/2026-08-25-persistence-latency-and-page-size.md index 3f8147f50f..ccaf7929a4 100644 --- a/.agents/notes/implemented/architecture/2026-08-25-persistence-latency-and-page-size.md +++ b/.agents/notes/archived/architecture/2026-08-25-persistence-latency-and-page-size.md @@ -1,6 +1,7 @@ # Agent Note: JSONL persistence compression latency Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-25-persistence-latency-and-page-size.zh.md) diff --git a/.agents/notes/implemented/architecture/2026-08-25-persistence-latency-and-page-size.zh.md b/.agents/notes/archived/architecture/2026-08-25-persistence-latency-and-page-size.zh.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-25-persistence-latency-and-page-size.zh.md rename to .agents/notes/archived/architecture/2026-08-25-persistence-latency-and-page-size.zh.md index d50563dcc8..e44a7f9631 100644 --- a/.agents/notes/implemented/architecture/2026-08-25-persistence-latency-and-page-size.zh.md +++ b/.agents/notes/archived/architecture/2026-08-25-persistence-latency-and-page-size.zh.md @@ -1,6 +1,7 @@ # Agent Note: JSONL 持久化压缩延迟 Status: implemented +Archived: 2026-09-04 [English](2026-08-25-persistence-latency-and-page-size.md) | 中文 diff --git a/.agents/notes/archived/architecture/2026-08-25-rename-code-mode-to-ptc.i18n.yaml b/.agents/notes/archived/architecture/2026-08-25-rename-code-mode-to-ptc.i18n.yaml new file mode 100644 index 0000000000..c78495782f --- /dev/null +++ b/.agents/notes/archived/architecture/2026-08-25-rename-code-mode-to-ptc.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-08-25-rename-code-mode-to-ptc.md +2026-08-25-rename-code-mode-to-ptc.md: 9baddc55c7a2c054caad452bd6d370fb0f89ef6a +2026-08-25-rename-code-mode-to-ptc.zh.md: e2a6cdd02a7d5803a74c5a1d6a78fcf66dbb5dbb diff --git a/.agents/notes/implemented/architecture/2026-08-25-rename-code-mode-to-ptc.md b/.agents/notes/archived/architecture/2026-08-25-rename-code-mode-to-ptc.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-25-rename-code-mode-to-ptc.md rename to .agents/notes/archived/architecture/2026-08-25-rename-code-mode-to-ptc.md index 10c81fdca8..9baddc55c7 100644 --- a/.agents/notes/implemented/architecture/2026-08-25-rename-code-mode-to-ptc.md +++ b/.agents/notes/archived/architecture/2026-08-25-rename-code-mode-to-ptc.md @@ -1,6 +1,7 @@ # Agent Note: Rename code-mode to ptc — the transport is named PTC, user-facing copy says PTC mode Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-25-rename-code-mode-to-ptc.zh.md) diff --git a/.agents/notes/implemented/architecture/2026-08-25-rename-code-mode-to-ptc.zh.md b/.agents/notes/archived/architecture/2026-08-25-rename-code-mode-to-ptc.zh.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-25-rename-code-mode-to-ptc.zh.md rename to .agents/notes/archived/architecture/2026-08-25-rename-code-mode-to-ptc.zh.md index 881ea86030..e2a6cdd02a 100644 --- a/.agents/notes/implemented/architecture/2026-08-25-rename-code-mode-to-ptc.zh.md +++ b/.agents/notes/archived/architecture/2026-08-25-rename-code-mode-to-ptc.zh.md @@ -1,6 +1,7 @@ # Agent Note: 将 code-mode 重命名为 ptc——传输层命名为 PTC,用户文案使用 PTC mode Status: implemented +Archived: 2026-09-04 [English](2026-08-25-rename-code-mode-to-ptc.md) | 中文 diff --git a/.agents/notes/archived/architecture/2026-08-25-sparse-first-party-prompt-section-orders.i18n.yaml b/.agents/notes/archived/architecture/2026-08-25-sparse-first-party-prompt-section-orders.i18n.yaml new file mode 100644 index 0000000000..ef4933cc92 --- /dev/null +++ b/.agents/notes/archived/architecture/2026-08-25-sparse-first-party-prompt-section-orders.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-08-25-sparse-first-party-prompt-section-orders.md +2026-08-25-sparse-first-party-prompt-section-orders.md: 9ce71eb832d11e341919bfd64183334d6a97a22e +2026-08-25-sparse-first-party-prompt-section-orders.zh.md: 68f7d4533086302edc945122907ca7463cd11de5 diff --git a/.agents/notes/implemented/architecture/2026-08-25-sparse-first-party-prompt-section-orders.md b/.agents/notes/archived/architecture/2026-08-25-sparse-first-party-prompt-section-orders.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-25-sparse-first-party-prompt-section-orders.md rename to .agents/notes/archived/architecture/2026-08-25-sparse-first-party-prompt-section-orders.md index 3cfdb58af3..9ce71eb832 100644 --- a/.agents/notes/implemented/architecture/2026-08-25-sparse-first-party-prompt-section-orders.md +++ b/.agents/notes/archived/architecture/2026-08-25-sparse-first-party-prompt-section-orders.md @@ -1,6 +1,7 @@ # Agent Note: Centralize sparse first-party prompt-section orders Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-25-sparse-first-party-prompt-section-orders.zh.md) diff --git a/.agents/notes/implemented/architecture/2026-08-25-sparse-first-party-prompt-section-orders.zh.md b/.agents/notes/archived/architecture/2026-08-25-sparse-first-party-prompt-section-orders.zh.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-25-sparse-first-party-prompt-section-orders.zh.md rename to .agents/notes/archived/architecture/2026-08-25-sparse-first-party-prompt-section-orders.zh.md index 31cbb98eab..68f7d45330 100644 --- a/.agents/notes/implemented/architecture/2026-08-25-sparse-first-party-prompt-section-orders.zh.md +++ b/.agents/notes/archived/architecture/2026-08-25-sparse-first-party-prompt-section-orders.zh.md @@ -1,6 +1,7 @@ # Agent Note: 集中管理稀疏的 first-party 提示词段顺序 Status: implemented +Archived: 2026-09-04 [English](2026-08-25-sparse-first-party-prompt-section-orders.md) | 中文 diff --git a/.agents/notes/implemented/architecture/2026-08-26-inspector-execution-realms-and-protocol-planes.i18n.yaml b/.agents/notes/archived/architecture/2026-08-26-inspector-execution-realms-and-protocol-planes.i18n.yaml similarity index 51% rename from .agents/notes/implemented/architecture/2026-08-26-inspector-execution-realms-and-protocol-planes.i18n.yaml rename to .agents/notes/archived/architecture/2026-08-26-inspector-execution-realms-and-protocol-planes.i18n.yaml index 39748610f6..c8787e7998 100644 --- a/.agents/notes/implemented/architecture/2026-08-26-inspector-execution-realms-and-protocol-planes.i18n.yaml +++ b/.agents/notes/archived/architecture/2026-08-26-inspector-execution-realms-and-protocol-planes.i18n.yaml @@ -1,6 +1,6 @@ # Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-08-26-inspector-execution-realms-and-protocol-planes.md -2026-08-26-inspector-execution-realms-and-protocol-planes.md: 1c274bda4cb10458ddc9ecec846b6355fb811c2f -2026-08-26-inspector-execution-realms-and-protocol-planes.zh.md: 49fde96a3b0acc5d9621b1ca4cfd1546ca970931 +# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-08-26-inspector-execution-realms-and-protocol-planes.md +2026-08-26-inspector-execution-realms-and-protocol-planes.md: 8d63fe12a73aa8c622ac7e352c8088f690d6f9e9 +2026-08-26-inspector-execution-realms-and-protocol-planes.zh.md: b47ea470ecb997bf2167a9f3742ab4b815fd8355 diff --git a/.agents/notes/implemented/architecture/2026-08-26-inspector-execution-realms-and-protocol-planes.md b/.agents/notes/archived/architecture/2026-08-26-inspector-execution-realms-and-protocol-planes.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-26-inspector-execution-realms-and-protocol-planes.md rename to .agents/notes/archived/architecture/2026-08-26-inspector-execution-realms-and-protocol-planes.md index 1c274bda4c..8d63fe12a7 100644 --- a/.agents/notes/implemented/architecture/2026-08-26-inspector-execution-realms-and-protocol-planes.md +++ b/.agents/notes/archived/architecture/2026-08-26-inspector-execution-realms-and-protocol-planes.md @@ -1,6 +1,7 @@ # Agent Note: Inspector execution realms and protocol planes Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-26-inspector-execution-realms-and-protocol-planes.zh.md) diff --git a/.agents/notes/implemented/architecture/2026-08-26-inspector-execution-realms-and-protocol-planes.zh.md b/.agents/notes/archived/architecture/2026-08-26-inspector-execution-realms-and-protocol-planes.zh.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-26-inspector-execution-realms-and-protocol-planes.zh.md rename to .agents/notes/archived/architecture/2026-08-26-inspector-execution-realms-and-protocol-planes.zh.md index 49fde96a3b..b47ea470ec 100644 --- a/.agents/notes/implemented/architecture/2026-08-26-inspector-execution-realms-and-protocol-planes.zh.md +++ b/.agents/notes/archived/architecture/2026-08-26-inspector-execution-realms-and-protocol-planes.zh.md @@ -1,6 +1,7 @@ # Agent Note: Inspector 执行环境与协议平面 Status: implemented +Archived: 2026-09-04 [English](2026-08-26-inspector-execution-realms-and-protocol-planes.md) | 中文 diff --git a/.agents/notes/archived/architecture/2026-08-26-local-submission-echoes.i18n.yaml b/.agents/notes/archived/architecture/2026-08-26-local-submission-echoes.i18n.yaml new file mode 100644 index 0000000000..849bcdf68c --- /dev/null +++ b/.agents/notes/archived/architecture/2026-08-26-local-submission-echoes.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-08-26-local-submission-echoes.md +2026-08-26-local-submission-echoes.md: afa97c9cd913104222e6a18c54ef75a3c478b6f6 +2026-08-26-local-submission-echoes.zh.md: ea8d1d62dfa29619a6c245ecf8341fc1e45a8a8e diff --git a/.agents/notes/implemented/architecture/2026-08-26-local-submission-echoes.md b/.agents/notes/archived/architecture/2026-08-26-local-submission-echoes.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-26-local-submission-echoes.md rename to .agents/notes/archived/architecture/2026-08-26-local-submission-echoes.md index 0fdb6b65e6..afa97c9cd9 100644 --- a/.agents/notes/implemented/architecture/2026-08-26-local-submission-echoes.md +++ b/.agents/notes/archived/architecture/2026-08-26-local-submission-echoes.md @@ -1,6 +1,7 @@ # Agent Note: Local submission echoes over the prompt rpcId Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-26-local-submission-echoes.zh.md) diff --git a/.agents/notes/implemented/architecture/2026-08-26-local-submission-echoes.zh.md b/.agents/notes/archived/architecture/2026-08-26-local-submission-echoes.zh.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-26-local-submission-echoes.zh.md rename to .agents/notes/archived/architecture/2026-08-26-local-submission-echoes.zh.md index 41b0533f5a..ea8d1d62df 100644 --- a/.agents/notes/implemented/architecture/2026-08-26-local-submission-echoes.zh.md +++ b/.agents/notes/archived/architecture/2026-08-26-local-submission-echoes.zh.md @@ -1,6 +1,7 @@ # Agent Note: 基于 prompt rpcId 的本地提交回显 Status: implemented +Archived: 2026-09-04 [English](2026-08-26-local-submission-echoes.md) | 中文 diff --git a/.agents/notes/archived/architecture/2026-08-26-models-page-extension-slots.i18n.yaml b/.agents/notes/archived/architecture/2026-08-26-models-page-extension-slots.i18n.yaml new file mode 100644 index 0000000000..3dd2ed1230 --- /dev/null +++ b/.agents/notes/archived/architecture/2026-08-26-models-page-extension-slots.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-08-26-models-page-extension-slots.md +2026-08-26-models-page-extension-slots.md: 644a49d69a1567e418562a2c3e64bf195b2c6734 +2026-08-26-models-page-extension-slots.zh.md: 031d439005574c8f46fba427d0d01e44cb5aab9b diff --git a/.agents/notes/implemented/architecture/2026-08-26-models-page-extension-slots.md b/.agents/notes/archived/architecture/2026-08-26-models-page-extension-slots.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-26-models-page-extension-slots.md rename to .agents/notes/archived/architecture/2026-08-26-models-page-extension-slots.md index 9983c669b7..644a49d69a 100644 --- a/.agents/notes/implemented/architecture/2026-08-26-models-page-extension-slots.md +++ b/.agents/notes/archived/architecture/2026-08-26-models-page-extension-slots.md @@ -1,6 +1,7 @@ # Agent Note: Models-page extension slots Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-26-models-page-extension-slots.zh.md) diff --git a/.agents/notes/implemented/architecture/2026-08-26-models-page-extension-slots.zh.md b/.agents/notes/archived/architecture/2026-08-26-models-page-extension-slots.zh.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-26-models-page-extension-slots.zh.md rename to .agents/notes/archived/architecture/2026-08-26-models-page-extension-slots.zh.md index 639654ea4b..031d439005 100644 --- a/.agents/notes/implemented/architecture/2026-08-26-models-page-extension-slots.zh.md +++ b/.agents/notes/archived/architecture/2026-08-26-models-page-extension-slots.zh.md @@ -1,6 +1,7 @@ # Agent Note: Models 页扩展插槽 Status: implemented +Archived: 2026-09-04 [English](2026-08-26-models-page-extension-slots.md) | 中文 diff --git a/.agents/notes/archived/architecture/2026-08-26-preset-health-resolves-rows.i18n.yaml b/.agents/notes/archived/architecture/2026-08-26-preset-health-resolves-rows.i18n.yaml new file mode 100644 index 0000000000..f862cdc30d --- /dev/null +++ b/.agents/notes/archived/architecture/2026-08-26-preset-health-resolves-rows.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-08-26-preset-health-resolves-rows.md +2026-08-26-preset-health-resolves-rows.md: fa92cef6bcd680ab2a342cae7318de50c5c19110 +2026-08-26-preset-health-resolves-rows.zh.md: 3b624c2a52c970b1bc1bbd4a483cc33e0c6e82bd diff --git a/.agents/notes/implemented/architecture/2026-08-26-preset-health-resolves-rows.md b/.agents/notes/archived/architecture/2026-08-26-preset-health-resolves-rows.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-26-preset-health-resolves-rows.md rename to .agents/notes/archived/architecture/2026-08-26-preset-health-resolves-rows.md index 909423e373..fa92cef6bc 100644 --- a/.agents/notes/implemented/architecture/2026-08-26-preset-health-resolves-rows.md +++ b/.agents/notes/archived/architecture/2026-08-26-preset-health-resolves-rows.md @@ -1,6 +1,7 @@ # Agent Note: Preset health resolves the rows it can prove will start Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-26-preset-health-resolves-rows.zh.md) diff --git a/.agents/notes/implemented/architecture/2026-08-26-preset-health-resolves-rows.zh.md b/.agents/notes/archived/architecture/2026-08-26-preset-health-resolves-rows.zh.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-26-preset-health-resolves-rows.zh.md rename to .agents/notes/archived/architecture/2026-08-26-preset-health-resolves-rows.zh.md index d2cffae66f..3b624c2a52 100644 --- a/.agents/notes/implemented/architecture/2026-08-26-preset-health-resolves-rows.zh.md +++ b/.agents/notes/archived/architecture/2026-08-26-preset-health-resolves-rows.zh.md @@ -1,6 +1,7 @@ # Agent Note: Preset health resolves the rows it can prove will start Status: implemented +Archived: 2026-09-04 [English](2026-08-26-preset-health-resolves-rows.md) | 中文 diff --git a/.agents/notes/archived/architecture/2026-08-27-inspector-development-mount.i18n.yaml b/.agents/notes/archived/architecture/2026-08-27-inspector-development-mount.i18n.yaml new file mode 100644 index 0000000000..5106bee6bd --- /dev/null +++ b/.agents/notes/archived/architecture/2026-08-27-inspector-development-mount.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-08-27-inspector-development-mount.md +2026-08-27-inspector-development-mount.md: 7816a80830b7b13f505ce1bcc27a9d8a22b90650 +2026-08-27-inspector-development-mount.zh.md: d50a2e10aed9486128c0304e68e6e8810889576c diff --git a/.agents/notes/implemented/architecture/2026-08-27-inspector-development-mount.md b/.agents/notes/archived/architecture/2026-08-27-inspector-development-mount.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-27-inspector-development-mount.md rename to .agents/notes/archived/architecture/2026-08-27-inspector-development-mount.md index a8660c664f..7816a80830 100644 --- a/.agents/notes/implemented/architecture/2026-08-27-inspector-development-mount.md +++ b/.agents/notes/archived/architecture/2026-08-27-inspector-development-mount.md @@ -1,6 +1,7 @@ # Agent Note: Inspector development mount Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-27-inspector-development-mount.zh.md) diff --git a/.agents/notes/implemented/architecture/2026-08-27-inspector-development-mount.zh.md b/.agents/notes/archived/architecture/2026-08-27-inspector-development-mount.zh.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-27-inspector-development-mount.zh.md rename to .agents/notes/archived/architecture/2026-08-27-inspector-development-mount.zh.md index 39ebf9777b..d50a2e10ae 100644 --- a/.agents/notes/implemented/architecture/2026-08-27-inspector-development-mount.zh.md +++ b/.agents/notes/archived/architecture/2026-08-27-inspector-development-mount.zh.md @@ -1,6 +1,7 @@ # Agent Note: Inspector 开发挂载 Status: implemented +Archived: 2026-09-04 [English](2026-08-27-inspector-development-mount.md) | 中文 diff --git a/.agents/notes/archived/architecture/2026-08-27-process-table-snapshots.i18n.yaml b/.agents/notes/archived/architecture/2026-08-27-process-table-snapshots.i18n.yaml new file mode 100644 index 0000000000..f617de60e7 --- /dev/null +++ b/.agents/notes/archived/architecture/2026-08-27-process-table-snapshots.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-08-27-process-table-snapshots.md +2026-08-27-process-table-snapshots.md: 80245c10c628ec04b2c8e6bc9058585d451cc1e7 +2026-08-27-process-table-snapshots.zh.md: 643331b55081faff6f8b5927a1404ef453664ccc diff --git a/.agents/notes/implemented/architecture/2026-08-27-process-table-snapshots.md b/.agents/notes/archived/architecture/2026-08-27-process-table-snapshots.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-27-process-table-snapshots.md rename to .agents/notes/archived/architecture/2026-08-27-process-table-snapshots.md index 27c364607c..80245c10c6 100644 --- a/.agents/notes/implemented/architecture/2026-08-27-process-table-snapshots.md +++ b/.agents/notes/archived/architecture/2026-08-27-process-table-snapshots.md @@ -1,6 +1,7 @@ # Agent Note: Process-table snapshots replace per-question inspector reads Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-27-process-table-snapshots.zh.md) diff --git a/.agents/notes/implemented/architecture/2026-08-27-process-table-snapshots.zh.md b/.agents/notes/archived/architecture/2026-08-27-process-table-snapshots.zh.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-27-process-table-snapshots.zh.md rename to .agents/notes/archived/architecture/2026-08-27-process-table-snapshots.zh.md index 9c5fe65bb8..643331b550 100644 --- a/.agents/notes/implemented/architecture/2026-08-27-process-table-snapshots.zh.md +++ b/.agents/notes/archived/architecture/2026-08-27-process-table-snapshots.zh.md @@ -1,6 +1,7 @@ # Agent Note: Process-table snapshots replace per-question inspector reads Status: implemented +Archived: 2026-09-04 [English](2026-08-27-process-table-snapshots.md) | 中文 diff --git a/.agents/notes/archived/architecture/2026-08-29-plugin-inventory-agent-preset-scopes.i18n.yaml b/.agents/notes/archived/architecture/2026-08-29-plugin-inventory-agent-preset-scopes.i18n.yaml new file mode 100644 index 0000000000..e0ba981a6a --- /dev/null +++ b/.agents/notes/archived/architecture/2026-08-29-plugin-inventory-agent-preset-scopes.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-08-29-plugin-inventory-agent-preset-scopes.md +2026-08-29-plugin-inventory-agent-preset-scopes.md: 3426af80983e18abaea80cc94d426583f222ef5f +2026-08-29-plugin-inventory-agent-preset-scopes.zh.md: a44ad3d8d808015d9d07a27e1258e970099d622a diff --git a/.agents/notes/implemented/architecture/2026-08-29-plugin-inventory-agent-preset-scopes.md b/.agents/notes/archived/architecture/2026-08-29-plugin-inventory-agent-preset-scopes.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-29-plugin-inventory-agent-preset-scopes.md rename to .agents/notes/archived/architecture/2026-08-29-plugin-inventory-agent-preset-scopes.md index a07f5a14a2..3426af8098 100644 --- a/.agents/notes/implemented/architecture/2026-08-29-plugin-inventory-agent-preset-scopes.md +++ b/.agents/notes/archived/architecture/2026-08-29-plugin-inventory-agent-preset-scopes.md @@ -1,6 +1,7 @@ # Agent Note: The plugin inventory carries every agent preset's composition Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-29-plugin-inventory-agent-preset-scopes.zh.md) diff --git a/.agents/notes/implemented/architecture/2026-08-29-plugin-inventory-agent-preset-scopes.zh.md b/.agents/notes/archived/architecture/2026-08-29-plugin-inventory-agent-preset-scopes.zh.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-29-plugin-inventory-agent-preset-scopes.zh.md rename to .agents/notes/archived/architecture/2026-08-29-plugin-inventory-agent-preset-scopes.zh.md index bee7e4ed2f..a44ad3d8d8 100644 --- a/.agents/notes/implemented/architecture/2026-08-29-plugin-inventory-agent-preset-scopes.zh.md +++ b/.agents/notes/archived/architecture/2026-08-29-plugin-inventory-agent-preset-scopes.zh.md @@ -1,6 +1,7 @@ # Agent Note: 插件清单携带每个 Agent 预设的组合 Status: implemented +Archived: 2026-09-04 [English](2026-08-29-plugin-inventory-agent-preset-scopes.md) | 中文 diff --git a/.agents/notes/archived/architecture/2026-08-31-live-assistant-stream-frames.i18n.yaml b/.agents/notes/archived/architecture/2026-08-31-live-assistant-stream-frames.i18n.yaml new file mode 100644 index 0000000000..0dce9f0de2 --- /dev/null +++ b/.agents/notes/archived/architecture/2026-08-31-live-assistant-stream-frames.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-08-31-live-assistant-stream-frames.md +2026-08-31-live-assistant-stream-frames.md: cf74bf0b37c06b02ed31dcb68ae1c9cd4860403c +2026-08-31-live-assistant-stream-frames.zh.md: 5cbe5494e3a7e99a42501e5f8a88a0983d4b4b49 diff --git a/.agents/notes/implemented/architecture/2026-08-31-live-assistant-stream-frames.md b/.agents/notes/archived/architecture/2026-08-31-live-assistant-stream-frames.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-31-live-assistant-stream-frames.md rename to .agents/notes/archived/architecture/2026-08-31-live-assistant-stream-frames.md index 25d86d1527..cf74bf0b37 100644 --- a/.agents/notes/implemented/architecture/2026-08-31-live-assistant-stream-frames.md +++ b/.agents/notes/archived/architecture/2026-08-31-live-assistant-stream-frames.md @@ -1,6 +1,7 @@ # Agent Note: Live assistant stream frames remain separate from the session log Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-31-live-assistant-stream-frames.zh.md) diff --git a/.agents/notes/implemented/architecture/2026-08-31-live-assistant-stream-frames.zh.md b/.agents/notes/archived/architecture/2026-08-31-live-assistant-stream-frames.zh.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-31-live-assistant-stream-frames.zh.md rename to .agents/notes/archived/architecture/2026-08-31-live-assistant-stream-frames.zh.md index 924649932b..5cbe5494e3 100644 --- a/.agents/notes/implemented/architecture/2026-08-31-live-assistant-stream-frames.zh.md +++ b/.agents/notes/archived/architecture/2026-08-31-live-assistant-stream-frames.zh.md @@ -1,6 +1,7 @@ # Agent Note: 实时 assistant 流帧与 Session log 保持分离 Status: implemented +Archived: 2026-09-04 [English](2026-08-31-live-assistant-stream-frames.md) | 中文 diff --git a/.agents/notes/archived/architecture/2026-08-31-session-sequence-and-log-offset-brands.i18n.yaml b/.agents/notes/archived/architecture/2026-08-31-session-sequence-and-log-offset-brands.i18n.yaml new file mode 100644 index 0000000000..548a81d54a --- /dev/null +++ b/.agents/notes/archived/architecture/2026-08-31-session-sequence-and-log-offset-brands.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-08-31-session-sequence-and-log-offset-brands.md +2026-08-31-session-sequence-and-log-offset-brands.md: 144146f62a74b662fd46366cc141da57aa35a50b +2026-08-31-session-sequence-and-log-offset-brands.zh.md: ab354fd3e866b9b5b450afc48b1bb7cf04b3c5d0 diff --git a/.agents/notes/implemented/architecture/2026-08-31-session-sequence-and-log-offset-brands.md b/.agents/notes/archived/architecture/2026-08-31-session-sequence-and-log-offset-brands.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-31-session-sequence-and-log-offset-brands.md rename to .agents/notes/archived/architecture/2026-08-31-session-sequence-and-log-offset-brands.md index 0057b2b6c9..144146f62a 100644 --- a/.agents/notes/implemented/architecture/2026-08-31-session-sequence-and-log-offset-brands.md +++ b/.agents/notes/archived/architecture/2026-08-31-session-sequence-and-log-offset-brands.md @@ -1,6 +1,7 @@ # Agent Note: Distinguish Session event identities from log offsets Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-31-session-sequence-and-log-offset-brands.zh.md) diff --git a/.agents/notes/implemented/architecture/2026-08-31-session-sequence-and-log-offset-brands.zh.md b/.agents/notes/archived/architecture/2026-08-31-session-sequence-and-log-offset-brands.zh.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-31-session-sequence-and-log-offset-brands.zh.md rename to .agents/notes/archived/architecture/2026-08-31-session-sequence-and-log-offset-brands.zh.md index f51ad5953c..ab354fd3e8 100644 --- a/.agents/notes/implemented/architecture/2026-08-31-session-sequence-and-log-offset-brands.zh.md +++ b/.agents/notes/archived/architecture/2026-08-31-session-sequence-and-log-offset-brands.zh.md @@ -1,6 +1,7 @@ # Agent Note: 区分 Session 事件身份与日志偏移 Status: implemented +Archived: 2026-09-04 [English](2026-08-31-session-sequence-and-log-offset-brands.md) | 中文 diff --git a/.agents/notes/archived/architecture/2026-08-31-viewport-activated-syntax-highlighting.i18n.yaml b/.agents/notes/archived/architecture/2026-08-31-viewport-activated-syntax-highlighting.i18n.yaml new file mode 100644 index 0000000000..8b799b2c8a --- /dev/null +++ b/.agents/notes/archived/architecture/2026-08-31-viewport-activated-syntax-highlighting.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-08-31-viewport-activated-syntax-highlighting.md +2026-08-31-viewport-activated-syntax-highlighting.md: 1aafa0fa114841a2a18c9726c45a179674550a2b +2026-08-31-viewport-activated-syntax-highlighting.zh.md: 54de4f71c1a044a0ece4c50d84424f74d8181a54 diff --git a/.agents/notes/implemented/architecture/2026-08-31-viewport-activated-syntax-highlighting.md b/.agents/notes/archived/architecture/2026-08-31-viewport-activated-syntax-highlighting.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-31-viewport-activated-syntax-highlighting.md rename to .agents/notes/archived/architecture/2026-08-31-viewport-activated-syntax-highlighting.md index 050c4e5024..1aafa0fa11 100644 --- a/.agents/notes/implemented/architecture/2026-08-31-viewport-activated-syntax-highlighting.md +++ b/.agents/notes/archived/architecture/2026-08-31-viewport-activated-syntax-highlighting.md @@ -1,6 +1,7 @@ # Agent Note: Viewport-activated syntax highlighting Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-31-viewport-activated-syntax-highlighting.zh.md) diff --git a/.agents/notes/implemented/architecture/2026-08-31-viewport-activated-syntax-highlighting.zh.md b/.agents/notes/archived/architecture/2026-08-31-viewport-activated-syntax-highlighting.zh.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-08-31-viewport-activated-syntax-highlighting.zh.md rename to .agents/notes/archived/architecture/2026-08-31-viewport-activated-syntax-highlighting.zh.md index abd02161ae..54de4f71c1 100644 --- a/.agents/notes/implemented/architecture/2026-08-31-viewport-activated-syntax-highlighting.zh.md +++ b/.agents/notes/archived/architecture/2026-08-31-viewport-activated-syntax-highlighting.zh.md @@ -1,6 +1,7 @@ # Agent Note: 视口激活的语法高亮 Status: implemented +Archived: 2026-09-04 [English](2026-08-31-viewport-activated-syntax-highlighting.md) | 中文 diff --git a/.agents/notes/archived/architecture/2026-09-01-streamed-tool-call-identity.i18n.yaml b/.agents/notes/archived/architecture/2026-09-01-streamed-tool-call-identity.i18n.yaml new file mode 100644 index 0000000000..ab0e31d3be --- /dev/null +++ b/.agents/notes/archived/architecture/2026-09-01-streamed-tool-call-identity.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-09-01-streamed-tool-call-identity.md +2026-09-01-streamed-tool-call-identity.md: d181580e028ecf721a9e5bddc1e83664e2fca712 +2026-09-01-streamed-tool-call-identity.zh.md: 614d65c4c8d8eecced4e9562d3ea11b79d433d64 diff --git a/.agents/notes/implemented/architecture/2026-09-01-streamed-tool-call-identity.md b/.agents/notes/archived/architecture/2026-09-01-streamed-tool-call-identity.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-09-01-streamed-tool-call-identity.md rename to .agents/notes/archived/architecture/2026-09-01-streamed-tool-call-identity.md index c52f39b735..d181580e02 100644 --- a/.agents/notes/implemented/architecture/2026-09-01-streamed-tool-call-identity.md +++ b/.agents/notes/archived/architecture/2026-09-01-streamed-tool-call-identity.md @@ -1,6 +1,7 @@ # Agent Note: Streamed tool-call identity survives empty continuation deltas Status: implemented +Archived: 2026-09-04 English | [中文](2026-09-01-streamed-tool-call-identity.zh.md) diff --git a/.agents/notes/implemented/architecture/2026-09-01-streamed-tool-call-identity.zh.md b/.agents/notes/archived/architecture/2026-09-01-streamed-tool-call-identity.zh.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-09-01-streamed-tool-call-identity.zh.md rename to .agents/notes/archived/architecture/2026-09-01-streamed-tool-call-identity.zh.md index 5226e1ba5c..614d65c4c8 100644 --- a/.agents/notes/implemented/architecture/2026-09-01-streamed-tool-call-identity.zh.md +++ b/.agents/notes/archived/architecture/2026-09-01-streamed-tool-call-identity.zh.md @@ -1,6 +1,7 @@ # Agent Note: 流式工具调用身份不被空续传分片抹除 Status: implemented +Archived: 2026-09-04 [English](2026-09-01-streamed-tool-call-identity.md) | 中文 diff --git a/.agents/notes/archived/architecture/2026-09-02-protocol-specific-model-listing-discovery.i18n.yaml b/.agents/notes/archived/architecture/2026-09-02-protocol-specific-model-listing-discovery.i18n.yaml new file mode 100644 index 0000000000..09edf3d299 --- /dev/null +++ b/.agents/notes/archived/architecture/2026-09-02-protocol-specific-model-listing-discovery.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/architecture/2026-09-02-protocol-specific-model-listing-discovery.md +2026-09-02-protocol-specific-model-listing-discovery.md: 8f7d79c8eba6cc8808bb010a050a1d983986bc43 +2026-09-02-protocol-specific-model-listing-discovery.zh.md: 2bc4d77ae1a50843812a2ce42a02090582f4a017 diff --git a/.agents/notes/implemented/architecture/2026-09-02-protocol-specific-model-listing-discovery.md b/.agents/notes/archived/architecture/2026-09-02-protocol-specific-model-listing-discovery.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-09-02-protocol-specific-model-listing-discovery.md rename to .agents/notes/archived/architecture/2026-09-02-protocol-specific-model-listing-discovery.md index 69e684c284..8f7d79c8eb 100644 --- a/.agents/notes/implemented/architecture/2026-09-02-protocol-specific-model-listing-discovery.md +++ b/.agents/notes/archived/architecture/2026-09-02-protocol-specific-model-listing-discovery.md @@ -1,6 +1,7 @@ # Agent Note: Reading protocol-specific model listings Status: implemented +Archived: 2026-09-04 English | [中文](2026-09-02-protocol-specific-model-listing-discovery.zh.md) diff --git a/.agents/notes/implemented/architecture/2026-09-02-protocol-specific-model-listing-discovery.zh.md b/.agents/notes/archived/architecture/2026-09-02-protocol-specific-model-listing-discovery.zh.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-09-02-protocol-specific-model-listing-discovery.zh.md rename to .agents/notes/archived/architecture/2026-09-02-protocol-specific-model-listing-discovery.zh.md index 682806fb72..2bc4d77ae1 100644 --- a/.agents/notes/implemented/architecture/2026-09-02-protocol-specific-model-listing-discovery.zh.md +++ b/.agents/notes/archived/architecture/2026-09-02-protocol-specific-model-listing-discovery.zh.md @@ -1,6 +1,7 @@ # Agent Note: 读取协议特定的模型列表 Status: implemented +Archived: 2026-09-04 [English](2026-09-02-protocol-specific-model-listing-discovery.md) | 中文 diff --git a/.agents/notes/implemented/feature/2026-07-28-cross-workspace-resume.i18n.yaml b/.agents/notes/archived/bug-fix/2026-07-19-windows-atomic-write-dacl-preservation.i18n.yaml similarity index 54% rename from .agents/notes/implemented/feature/2026-07-28-cross-workspace-resume.i18n.yaml rename to .agents/notes/archived/bug-fix/2026-07-19-windows-atomic-write-dacl-preservation.i18n.yaml index 62a22d215c..9dc187e5b3 100644 --- a/.agents/notes/implemented/feature/2026-07-28-cross-workspace-resume.i18n.yaml +++ b/.agents/notes/archived/bug-fix/2026-07-19-windows-atomic-write-dacl-preservation.i18n.yaml @@ -1,6 +1,6 @@ # Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-07-28-cross-workspace-resume.md -2026-07-28-cross-workspace-resume.md: e8a8636911015a5b300b45a30e268ee1be5d47d1 -2026-07-28-cross-workspace-resume.zh.md: c56641be35bb37fb8aafb7613bdf8b8158e198d9 +# pnpm run verify-translation-pairing --write .agents/notes/archived/bug-fix/2026-07-19-windows-atomic-write-dacl-preservation.md +2026-07-19-windows-atomic-write-dacl-preservation.md: d389f42d804666788e23d16c5db1bc5710284834 +2026-07-19-windows-atomic-write-dacl-preservation.zh.md: a0d5bf81b2abfa19300966724f6a893f26bb6ee7 diff --git a/.agents/notes/implemented/bug-fix/2026-07-19-windows-atomic-write-dacl-preservation.md b/.agents/notes/archived/bug-fix/2026-07-19-windows-atomic-write-dacl-preservation.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-07-19-windows-atomic-write-dacl-preservation.md rename to .agents/notes/archived/bug-fix/2026-07-19-windows-atomic-write-dacl-preservation.md index be9f821743..d389f42d80 100644 --- a/.agents/notes/implemented/bug-fix/2026-07-19-windows-atomic-write-dacl-preservation.md +++ b/.agents/notes/archived/bug-fix/2026-07-19-windows-atomic-write-dacl-preservation.md @@ -1,6 +1,7 @@ # Agent Note: Preserve Windows DACLs during atomic file replacement Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-19-windows-atomic-write-dacl-preservation.zh.md) diff --git a/.agents/notes/implemented/bug-fix/2026-07-19-windows-atomic-write-dacl-preservation.zh.md b/.agents/notes/archived/bug-fix/2026-07-19-windows-atomic-write-dacl-preservation.zh.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-07-19-windows-atomic-write-dacl-preservation.zh.md rename to .agents/notes/archived/bug-fix/2026-07-19-windows-atomic-write-dacl-preservation.zh.md index ed52773b03..a0d5bf81b2 100644 --- a/.agents/notes/implemented/bug-fix/2026-07-19-windows-atomic-write-dacl-preservation.zh.md +++ b/.agents/notes/archived/bug-fix/2026-07-19-windows-atomic-write-dacl-preservation.zh.md @@ -1,6 +1,7 @@ # Agent Note: Windows 原子文件替换期间保留 DACL Status: implemented +Archived: 2026-09-04 [English](2026-07-19-windows-atomic-write-dacl-preservation.md) | 中文 diff --git a/.agents/notes/archived/bug-fix/2026-07-20-config-hot-reload-resilience.i18n.yaml b/.agents/notes/archived/bug-fix/2026-07-20-config-hot-reload-resilience.i18n.yaml new file mode 100644 index 0000000000..bee69827ee --- /dev/null +++ b/.agents/notes/archived/bug-fix/2026-07-20-config-hot-reload-resilience.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/bug-fix/2026-07-20-config-hot-reload-resilience.md +2026-07-20-config-hot-reload-resilience.md: 0a60a7c217197cbda76aa9bd908b75a6b3b35938 +2026-07-20-config-hot-reload-resilience.zh.md: 6d5349458bcb4936520f02508ad6d81715cfb57c diff --git a/.agents/notes/implemented/bug-fix/2026-07-20-config-hot-reload-resilience.md b/.agents/notes/archived/bug-fix/2026-07-20-config-hot-reload-resilience.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-07-20-config-hot-reload-resilience.md rename to .agents/notes/archived/bug-fix/2026-07-20-config-hot-reload-resilience.md index 6f8503c93b..0a60a7c217 100644 --- a/.agents/notes/implemented/bug-fix/2026-07-20-config-hot-reload-resilience.md +++ b/.agents/notes/archived/bug-fix/2026-07-20-config-hot-reload-resilience.md @@ -1,6 +1,7 @@ # Agent Note: A config hot-reload must not kill or degrade a live app Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-20-config-hot-reload-resilience.zh.md) diff --git a/.agents/notes/implemented/bug-fix/2026-07-20-config-hot-reload-resilience.zh.md b/.agents/notes/archived/bug-fix/2026-07-20-config-hot-reload-resilience.zh.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-07-20-config-hot-reload-resilience.zh.md rename to .agents/notes/archived/bug-fix/2026-07-20-config-hot-reload-resilience.zh.md index 359a34a225..6d5349458b 100644 --- a/.agents/notes/implemented/bug-fix/2026-07-20-config-hot-reload-resilience.zh.md +++ b/.agents/notes/archived/bug-fix/2026-07-20-config-hot-reload-resilience.zh.md @@ -1,6 +1,7 @@ # Agent Note: 配置热重载不得杀死或降级正在运行的应用 Status: implemented +Archived: 2026-09-04 [English](2026-07-20-config-hot-reload-resilience.md) | 中文 diff --git a/.agents/notes/archived/bug-fix/2026-07-20-error-cause-chain-diagnostics.i18n.yaml b/.agents/notes/archived/bug-fix/2026-07-20-error-cause-chain-diagnostics.i18n.yaml new file mode 100644 index 0000000000..c90014feb9 --- /dev/null +++ b/.agents/notes/archived/bug-fix/2026-07-20-error-cause-chain-diagnostics.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/bug-fix/2026-07-20-error-cause-chain-diagnostics.md +2026-07-20-error-cause-chain-diagnostics.md: bec8ba824fd4fb156aa0d74db197496358d553a2 +2026-07-20-error-cause-chain-diagnostics.zh.md: 8fea93cc084787f95ace6b5626d5f537cc14549d diff --git a/.agents/notes/implemented/bug-fix/2026-07-20-error-cause-chain-diagnostics.md b/.agents/notes/archived/bug-fix/2026-07-20-error-cause-chain-diagnostics.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-07-20-error-cause-chain-diagnostics.md rename to .agents/notes/archived/bug-fix/2026-07-20-error-cause-chain-diagnostics.md index 4fb5eb99f8..bec8ba824f 100644 --- a/.agents/notes/implemented/bug-fix/2026-07-20-error-cause-chain-diagnostics.md +++ b/.agents/notes/archived/bug-fix/2026-07-20-error-cause-chain-diagnostics.md @@ -1,6 +1,7 @@ # Agent Note: Render error cause chains at every diagnostic boundary Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-20-error-cause-chain-diagnostics.zh.md) diff --git a/.agents/notes/implemented/bug-fix/2026-07-20-error-cause-chain-diagnostics.zh.md b/.agents/notes/archived/bug-fix/2026-07-20-error-cause-chain-diagnostics.zh.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-07-20-error-cause-chain-diagnostics.zh.md rename to .agents/notes/archived/bug-fix/2026-07-20-error-cause-chain-diagnostics.zh.md index 690f32419b..8fea93cc08 100644 --- a/.agents/notes/implemented/bug-fix/2026-07-20-error-cause-chain-diagnostics.zh.md +++ b/.agents/notes/archived/bug-fix/2026-07-20-error-cause-chain-diagnostics.zh.md @@ -1,6 +1,7 @@ # Agent Note: 在每个诊断边界渲染错误 cause 链 Status: implemented +Archived: 2026-09-04 [English](2026-07-20-error-cause-chain-diagnostics.md) | 中文 diff --git a/.agents/notes/archived/bug-fix/2026-07-21-compaction-summary-prefix-cache-reuse.i18n.yaml b/.agents/notes/archived/bug-fix/2026-07-21-compaction-summary-prefix-cache-reuse.i18n.yaml new file mode 100644 index 0000000000..92fbb25456 --- /dev/null +++ b/.agents/notes/archived/bug-fix/2026-07-21-compaction-summary-prefix-cache-reuse.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/bug-fix/2026-07-21-compaction-summary-prefix-cache-reuse.md +2026-07-21-compaction-summary-prefix-cache-reuse.md: 7a433324f93bca0447d1b775a40742b234df8df3 +2026-07-21-compaction-summary-prefix-cache-reuse.zh.md: db5b2d0507fe107b57def2365d4c82add2fb5c37 diff --git a/.agents/notes/implemented/bug-fix/2026-07-21-compaction-summary-prefix-cache-reuse.md b/.agents/notes/archived/bug-fix/2026-07-21-compaction-summary-prefix-cache-reuse.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-07-21-compaction-summary-prefix-cache-reuse.md rename to .agents/notes/archived/bug-fix/2026-07-21-compaction-summary-prefix-cache-reuse.md index a1066cd992..7a433324f9 100644 --- a/.agents/notes/implemented/bug-fix/2026-07-21-compaction-summary-prefix-cache-reuse.md +++ b/.agents/notes/archived/bug-fix/2026-07-21-compaction-summary-prefix-cache-reuse.md @@ -1,6 +1,7 @@ # Agent Note: The summarization call replays the conversation prefix for KV-cache reuse Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-21-compaction-summary-prefix-cache-reuse.zh.md) diff --git a/.agents/notes/implemented/bug-fix/2026-07-21-compaction-summary-prefix-cache-reuse.zh.md b/.agents/notes/archived/bug-fix/2026-07-21-compaction-summary-prefix-cache-reuse.zh.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-07-21-compaction-summary-prefix-cache-reuse.zh.md rename to .agents/notes/archived/bug-fix/2026-07-21-compaction-summary-prefix-cache-reuse.zh.md index 3f487f6325..db5b2d0507 100644 --- a/.agents/notes/implemented/bug-fix/2026-07-21-compaction-summary-prefix-cache-reuse.zh.md +++ b/.agents/notes/archived/bug-fix/2026-07-21-compaction-summary-prefix-cache-reuse.zh.md @@ -1,6 +1,7 @@ # Agent Note: 摘要调用回放对话前缀以复用 KV Cache Status: implemented +Archived: 2026-09-04 [English](2026-07-21-compaction-summary-prefix-cache-reuse.md) | 中文 diff --git a/.agents/notes/archived/bug-fix/2026-07-21-semantic-session-checkpoints.i18n.yaml b/.agents/notes/archived/bug-fix/2026-07-21-semantic-session-checkpoints.i18n.yaml new file mode 100644 index 0000000000..9843b4208d --- /dev/null +++ b/.agents/notes/archived/bug-fix/2026-07-21-semantic-session-checkpoints.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/bug-fix/2026-07-21-semantic-session-checkpoints.md +2026-07-21-semantic-session-checkpoints.md: d4438b0d996c702d36d3d5d103ba9a1536136f6b +2026-07-21-semantic-session-checkpoints.zh.md: 6dd9755f9fd4fd7bf2a321f252b1afda93f4421a diff --git a/.agents/notes/implemented/bug-fix/2026-07-21-semantic-session-checkpoints.md b/.agents/notes/archived/bug-fix/2026-07-21-semantic-session-checkpoints.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-07-21-semantic-session-checkpoints.md rename to .agents/notes/archived/bug-fix/2026-07-21-semantic-session-checkpoints.md index 697d878dcc..d4438b0d99 100644 --- a/.agents/notes/implemented/bug-fix/2026-07-21-semantic-session-checkpoints.md +++ b/.agents/notes/archived/bug-fix/2026-07-21-semantic-session-checkpoints.md @@ -1,6 +1,7 @@ # Agent Note: Semantic session checkpoints Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-21-semantic-session-checkpoints.zh.md) diff --git a/.agents/notes/implemented/bug-fix/2026-07-21-semantic-session-checkpoints.zh.md b/.agents/notes/archived/bug-fix/2026-07-21-semantic-session-checkpoints.zh.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-07-21-semantic-session-checkpoints.zh.md rename to .agents/notes/archived/bug-fix/2026-07-21-semantic-session-checkpoints.zh.md index c72f2bbad3..6dd9755f9f 100644 --- a/.agents/notes/implemented/bug-fix/2026-07-21-semantic-session-checkpoints.zh.md +++ b/.agents/notes/archived/bug-fix/2026-07-21-semantic-session-checkpoints.zh.md @@ -1,6 +1,7 @@ # Agent Note: 语义会话检查点 Status: implemented +Archived: 2026-09-04 [English](2026-07-21-semantic-session-checkpoints.md) | 中文 diff --git a/.agents/notes/archived/bug-fix/2026-07-22-pi-ai-transport-truncation-classification.i18n.yaml b/.agents/notes/archived/bug-fix/2026-07-22-pi-ai-transport-truncation-classification.i18n.yaml new file mode 100644 index 0000000000..73936afa3f --- /dev/null +++ b/.agents/notes/archived/bug-fix/2026-07-22-pi-ai-transport-truncation-classification.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/bug-fix/2026-07-22-pi-ai-transport-truncation-classification.md +2026-07-22-pi-ai-transport-truncation-classification.md: 09bbfe05de4c701f7cfbe24daaf677214ed49828 +2026-07-22-pi-ai-transport-truncation-classification.zh.md: 4183bc76c30c907344db220ac652ae7583d8962c diff --git a/.agents/notes/implemented/bug-fix/2026-07-22-pi-ai-transport-truncation-classification.md b/.agents/notes/archived/bug-fix/2026-07-22-pi-ai-transport-truncation-classification.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-07-22-pi-ai-transport-truncation-classification.md rename to .agents/notes/archived/bug-fix/2026-07-22-pi-ai-transport-truncation-classification.md index 4f645a2628..09bbfe05de 100644 --- a/.agents/notes/implemented/bug-fix/2026-07-22-pi-ai-transport-truncation-classification.md +++ b/.agents/notes/archived/bug-fix/2026-07-22-pi-ai-transport-truncation-classification.md @@ -1,6 +1,7 @@ # Agent Note: Classify pi-ai transport truncations from flattened message text Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-22-pi-ai-transport-truncation-classification.zh.md) diff --git a/.agents/notes/implemented/bug-fix/2026-07-22-pi-ai-transport-truncation-classification.zh.md b/.agents/notes/archived/bug-fix/2026-07-22-pi-ai-transport-truncation-classification.zh.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-07-22-pi-ai-transport-truncation-classification.zh.md rename to .agents/notes/archived/bug-fix/2026-07-22-pi-ai-transport-truncation-classification.zh.md index 0625d6041c..4183bc76c3 100644 --- a/.agents/notes/implemented/bug-fix/2026-07-22-pi-ai-transport-truncation-classification.zh.md +++ b/.agents/notes/archived/bug-fix/2026-07-22-pi-ai-transport-truncation-classification.zh.md @@ -1,6 +1,7 @@ # Agent Note: 从扁平化的消息文本中分类 pi-ai 传输层截断 Status: implemented +Archived: 2026-09-04 [English](2026-07-22-pi-ai-transport-truncation-classification.md) | 中文 diff --git a/.agents/notes/archived/bug-fix/2026-07-24-empty-model-response-is-retryable.i18n.yaml b/.agents/notes/archived/bug-fix/2026-07-24-empty-model-response-is-retryable.i18n.yaml new file mode 100644 index 0000000000..66a2963d7c --- /dev/null +++ b/.agents/notes/archived/bug-fix/2026-07-24-empty-model-response-is-retryable.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/bug-fix/2026-07-24-empty-model-response-is-retryable.md +2026-07-24-empty-model-response-is-retryable.md: e2dbb0c28912af1a306d162fe47cc9110b52d4d1 +2026-07-24-empty-model-response-is-retryable.zh.md: e67070ee684453f2c210145847e9f7adcd1672dc diff --git a/.agents/notes/implemented/bug-fix/2026-07-24-empty-model-response-is-retryable.md b/.agents/notes/archived/bug-fix/2026-07-24-empty-model-response-is-retryable.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-07-24-empty-model-response-is-retryable.md rename to .agents/notes/archived/bug-fix/2026-07-24-empty-model-response-is-retryable.md index 62e45385fb..e2dbb0c289 100644 --- a/.agents/notes/implemented/bug-fix/2026-07-24-empty-model-response-is-retryable.md +++ b/.agents/notes/archived/bug-fix/2026-07-24-empty-model-response-is-retryable.md @@ -1,6 +1,7 @@ # Agent Note: Empty model completions are retryable EMPTY_RESPONSE failures Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-24-empty-model-response-is-retryable.zh.md) diff --git a/.agents/notes/implemented/bug-fix/2026-07-24-empty-model-response-is-retryable.zh.md b/.agents/notes/archived/bug-fix/2026-07-24-empty-model-response-is-retryable.zh.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-07-24-empty-model-response-is-retryable.zh.md rename to .agents/notes/archived/bug-fix/2026-07-24-empty-model-response-is-retryable.zh.md index 459a5def0b..e67070ee68 100644 --- a/.agents/notes/implemented/bug-fix/2026-07-24-empty-model-response-is-retryable.zh.md +++ b/.agents/notes/archived/bug-fix/2026-07-24-empty-model-response-is-retryable.zh.md @@ -1,6 +1,7 @@ # Agent Note: 空模型补全是可重试的 EMPTY_RESPONSE 失败 Status: implemented +Archived: 2026-09-04 [English](2026-07-24-empty-model-response-is-retryable.md) | 中文 diff --git a/.agents/notes/archived/bug-fix/2026-07-24-recursive-python-sdk-session-notifications.i18n.yaml b/.agents/notes/archived/bug-fix/2026-07-24-recursive-python-sdk-session-notifications.i18n.yaml new file mode 100644 index 0000000000..534aeba1bd --- /dev/null +++ b/.agents/notes/archived/bug-fix/2026-07-24-recursive-python-sdk-session-notifications.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/bug-fix/2026-07-24-recursive-python-sdk-session-notifications.md +2026-07-24-recursive-python-sdk-session-notifications.md: a60e2ff5d0db97e1073e4bbfb61f7bfdccfd016c +2026-07-24-recursive-python-sdk-session-notifications.zh.md: 81ffb4dfe3140b51b267687f1922f14f8000eecb diff --git a/.agents/notes/implemented/bug-fix/2026-07-24-recursive-python-sdk-session-notifications.md b/.agents/notes/archived/bug-fix/2026-07-24-recursive-python-sdk-session-notifications.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-07-24-recursive-python-sdk-session-notifications.md rename to .agents/notes/archived/bug-fix/2026-07-24-recursive-python-sdk-session-notifications.md index c902136593..a60e2ff5d0 100644 --- a/.agents/notes/implemented/bug-fix/2026-07-24-recursive-python-sdk-session-notifications.md +++ b/.agents/notes/archived/bug-fix/2026-07-24-recursive-python-sdk-session-notifications.md @@ -1,6 +1,7 @@ # Agent Note: Recursive Python SDK session notifications Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-24-recursive-python-sdk-session-notifications.zh.md) diff --git a/.agents/notes/implemented/bug-fix/2026-07-24-recursive-python-sdk-session-notifications.zh.md b/.agents/notes/archived/bug-fix/2026-07-24-recursive-python-sdk-session-notifications.zh.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-07-24-recursive-python-sdk-session-notifications.zh.md rename to .agents/notes/archived/bug-fix/2026-07-24-recursive-python-sdk-session-notifications.zh.md index f6f0a8c0e3..81ffb4dfe3 100644 --- a/.agents/notes/implemented/bug-fix/2026-07-24-recursive-python-sdk-session-notifications.zh.md +++ b/.agents/notes/archived/bug-fix/2026-07-24-recursive-python-sdk-session-notifications.zh.md @@ -1,6 +1,7 @@ # Agent Note: Python SDK 递归会话通知 Status: implemented +Archived: 2026-09-04 [English](2026-07-24-recursive-python-sdk-session-notifications.md) | 中文 diff --git a/.agents/notes/archived/bug-fix/2026-07-27-glob-sampling.i18n.yaml b/.agents/notes/archived/bug-fix/2026-07-27-glob-sampling.i18n.yaml new file mode 100644 index 0000000000..50204a568f --- /dev/null +++ b/.agents/notes/archived/bug-fix/2026-07-27-glob-sampling.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/bug-fix/2026-07-27-glob-sampling.md +2026-07-27-glob-sampling.md: 99f2e1a20eb5e32fb7ab2842dfb0c1714e12c739 +2026-07-27-glob-sampling.zh.md: 83339a2b8152a1ca14d117b9f6e7a663dbaeb0de diff --git a/.agents/notes/implemented/bug-fix/2026-07-27-glob-sampling.md b/.agents/notes/archived/bug-fix/2026-07-27-glob-sampling.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-07-27-glob-sampling.md rename to .agents/notes/archived/bug-fix/2026-07-27-glob-sampling.md index 67912cf290..99f2e1a20e 100644 --- a/.agents/notes/implemented/bug-fix/2026-07-27-glob-sampling.md +++ b/.agents/notes/archived/bug-fix/2026-07-27-glob-sampling.md @@ -1,6 +1,7 @@ # Agent Note: Sample over-cap glob results across the tree Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-27-glob-sampling.zh.md) diff --git a/.agents/notes/implemented/bug-fix/2026-07-27-glob-sampling.zh.md b/.agents/notes/archived/bug-fix/2026-07-27-glob-sampling.zh.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-07-27-glob-sampling.zh.md rename to .agents/notes/archived/bug-fix/2026-07-27-glob-sampling.zh.md index b8d7bbe1bc..83339a2b81 100644 --- a/.agents/notes/implemented/bug-fix/2026-07-27-glob-sampling.zh.md +++ b/.agents/notes/archived/bug-fix/2026-07-27-glob-sampling.zh.md @@ -1,6 +1,7 @@ # Agent Note: 跨目录树采样超出上限的 glob 结果 Status: implemented +Archived: 2026-09-04 [English](2026-07-27-glob-sampling.md) | 中文 diff --git a/.agents/notes/archived/bug-fix/2026-07-27-stable-snapshot-refresh-volatiles.i18n.yaml b/.agents/notes/archived/bug-fix/2026-07-27-stable-snapshot-refresh-volatiles.i18n.yaml new file mode 100644 index 0000000000..f8ab6a18c8 --- /dev/null +++ b/.agents/notes/archived/bug-fix/2026-07-27-stable-snapshot-refresh-volatiles.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/bug-fix/2026-07-27-stable-snapshot-refresh-volatiles.md +2026-07-27-stable-snapshot-refresh-volatiles.md: c408a383aae4a90832ca220928e2569d6c215b1e +2026-07-27-stable-snapshot-refresh-volatiles.zh.md: bc3093480a5a6a2fe16f671008a12dc6889214a8 diff --git a/.agents/notes/implemented/bug-fix/2026-07-27-stable-snapshot-refresh-volatiles.md b/.agents/notes/archived/bug-fix/2026-07-27-stable-snapshot-refresh-volatiles.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-07-27-stable-snapshot-refresh-volatiles.md rename to .agents/notes/archived/bug-fix/2026-07-27-stable-snapshot-refresh-volatiles.md index c3eeeca01a..c408a383aa 100644 --- a/.agents/notes/implemented/bug-fix/2026-07-27-stable-snapshot-refresh-volatiles.md +++ b/.agents/notes/archived/bug-fix/2026-07-27-stable-snapshot-refresh-volatiles.md @@ -1,6 +1,7 @@ # Agent Note: Stable snapshot refresh volatiles Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-27-stable-snapshot-refresh-volatiles.zh.md) diff --git a/.agents/notes/implemented/bug-fix/2026-07-27-stable-snapshot-refresh-volatiles.zh.md b/.agents/notes/archived/bug-fix/2026-07-27-stable-snapshot-refresh-volatiles.zh.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-07-27-stable-snapshot-refresh-volatiles.zh.md rename to .agents/notes/archived/bug-fix/2026-07-27-stable-snapshot-refresh-volatiles.zh.md index 79a2758e7a..bc3093480a 100644 --- a/.agents/notes/implemented/bug-fix/2026-07-27-stable-snapshot-refresh-volatiles.zh.md +++ b/.agents/notes/archived/bug-fix/2026-07-27-stable-snapshot-refresh-volatiles.zh.md @@ -1,6 +1,7 @@ # Agent Note: 稳定快照刷新中的易变值 Status: implemented +Archived: 2026-09-04 [English](2026-07-27-stable-snapshot-refresh-volatiles.md) | 中文 diff --git a/.agents/notes/archived/bug-fix/2026-07-28-themed-scrollbars-and-reserved-gutter.i18n.yaml b/.agents/notes/archived/bug-fix/2026-07-28-themed-scrollbars-and-reserved-gutter.i18n.yaml new file mode 100644 index 0000000000..6ec1c6af7b --- /dev/null +++ b/.agents/notes/archived/bug-fix/2026-07-28-themed-scrollbars-and-reserved-gutter.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/bug-fix/2026-07-28-themed-scrollbars-and-reserved-gutter.md +2026-07-28-themed-scrollbars-and-reserved-gutter.md: 6f01f6053ec9e243620a58fdd1f76e015b0541a3 +2026-07-28-themed-scrollbars-and-reserved-gutter.zh.md: 5939507e8f5e154c90b2b5322d066a614c2c0854 diff --git a/.agents/notes/implemented/bug-fix/2026-07-28-themed-scrollbars-and-reserved-gutter.md b/.agents/notes/archived/bug-fix/2026-07-28-themed-scrollbars-and-reserved-gutter.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-07-28-themed-scrollbars-and-reserved-gutter.md rename to .agents/notes/archived/bug-fix/2026-07-28-themed-scrollbars-and-reserved-gutter.md index 3dbaf73158..6f01f6053e 100644 --- a/.agents/notes/implemented/bug-fix/2026-07-28-themed-scrollbars-and-reserved-gutter.md +++ b/.agents/notes/archived/bug-fix/2026-07-28-themed-scrollbars-and-reserved-gutter.md @@ -1,6 +1,7 @@ # Agent Note: The scrollbar tokens get their consumer, and the workspace list reserves its gutter Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-28-themed-scrollbars-and-reserved-gutter.zh.md) diff --git a/.agents/notes/implemented/bug-fix/2026-07-28-themed-scrollbars-and-reserved-gutter.zh.md b/.agents/notes/archived/bug-fix/2026-07-28-themed-scrollbars-and-reserved-gutter.zh.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-07-28-themed-scrollbars-and-reserved-gutter.zh.md rename to .agents/notes/archived/bug-fix/2026-07-28-themed-scrollbars-and-reserved-gutter.zh.md index fa90304d54..5939507e8f 100644 --- a/.agents/notes/implemented/bug-fix/2026-07-28-themed-scrollbars-and-reserved-gutter.zh.md +++ b/.agents/notes/archived/bug-fix/2026-07-28-themed-scrollbars-and-reserved-gutter.zh.md @@ -1,6 +1,7 @@ # Agent Note: 滚动条 token 有了消费方,工作区列表预留出滚动条空位 Status: implemented +Archived: 2026-09-04 [English](2026-07-28-themed-scrollbars-and-reserved-gutter.md) | 中文 diff --git a/.agents/notes/archived/bug-fix/2026-07-28-web-agent-runtime-context.i18n.yaml b/.agents/notes/archived/bug-fix/2026-07-28-web-agent-runtime-context.i18n.yaml new file mode 100644 index 0000000000..2dd185f6c3 --- /dev/null +++ b/.agents/notes/archived/bug-fix/2026-07-28-web-agent-runtime-context.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/bug-fix/2026-07-28-web-agent-runtime-context.md +2026-07-28-web-agent-runtime-context.md: ccbb2882c118867b8e2c32372890f47557d84a05 +2026-07-28-web-agent-runtime-context.zh.md: b5f224698398093a72bd033c71fd4ce80c0d406a diff --git a/.agents/notes/implemented/bug-fix/2026-07-28-web-agent-runtime-context.md b/.agents/notes/archived/bug-fix/2026-07-28-web-agent-runtime-context.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-07-28-web-agent-runtime-context.md rename to .agents/notes/archived/bug-fix/2026-07-28-web-agent-runtime-context.md index 6c2bb8faf0..ccbb2882c1 100644 --- a/.agents/notes/implemented/bug-fix/2026-07-28-web-agent-runtime-context.md +++ b/.agents/notes/archived/bug-fix/2026-07-28-web-agent-runtime-context.md @@ -1,6 +1,7 @@ # Agent Note: Web agents receive explicit runtime context Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-28-web-agent-runtime-context.zh.md) diff --git a/.agents/notes/implemented/bug-fix/2026-07-28-web-agent-runtime-context.zh.md b/.agents/notes/archived/bug-fix/2026-07-28-web-agent-runtime-context.zh.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-07-28-web-agent-runtime-context.zh.md rename to .agents/notes/archived/bug-fix/2026-07-28-web-agent-runtime-context.zh.md index c32be64ba0..b5f2246983 100644 --- a/.agents/notes/implemented/bug-fix/2026-07-28-web-agent-runtime-context.zh.md +++ b/.agents/notes/archived/bug-fix/2026-07-28-web-agent-runtime-context.zh.md @@ -1,6 +1,7 @@ # Agent Note: Web agent 获得显式运行时上下文 Status: implemented +Archived: 2026-09-04 [English](2026-07-28-web-agent-runtime-context.md) | 中文 diff --git a/.agents/notes/archived/bug-fix/2026-07-28-web-gui-feedback-loop.i18n.yaml b/.agents/notes/archived/bug-fix/2026-07-28-web-gui-feedback-loop.i18n.yaml new file mode 100644 index 0000000000..6700672c86 --- /dev/null +++ b/.agents/notes/archived/bug-fix/2026-07-28-web-gui-feedback-loop.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/bug-fix/2026-07-28-web-gui-feedback-loop.md +2026-07-28-web-gui-feedback-loop.md: 1410804b20c4d6ea53d7b7da8ae6e47ded6b2969 +2026-07-28-web-gui-feedback-loop.zh.md: 60ab1d61610922525cc908e78131c58a23cc4939 diff --git a/.agents/notes/implemented/bug-fix/2026-07-28-web-gui-feedback-loop.md b/.agents/notes/archived/bug-fix/2026-07-28-web-gui-feedback-loop.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-07-28-web-gui-feedback-loop.md rename to .agents/notes/archived/bug-fix/2026-07-28-web-gui-feedback-loop.md index dad85c37da..1410804b20 100644 --- a/.agents/notes/implemented/bug-fix/2026-07-28-web-gui-feedback-loop.md +++ b/.agents/notes/archived/bug-fix/2026-07-28-web-gui-feedback-loop.md @@ -1,6 +1,7 @@ # Agent Note: Web GUI changes close the loop on the existing URL Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-28-web-gui-feedback-loop.zh.md) diff --git a/.agents/notes/implemented/bug-fix/2026-07-28-web-gui-feedback-loop.zh.md b/.agents/notes/archived/bug-fix/2026-07-28-web-gui-feedback-loop.zh.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-07-28-web-gui-feedback-loop.zh.md rename to .agents/notes/archived/bug-fix/2026-07-28-web-gui-feedback-loop.zh.md index 196912b8ba..60ab1d6161 100644 --- a/.agents/notes/implemented/bug-fix/2026-07-28-web-gui-feedback-loop.zh.md +++ b/.agents/notes/archived/bug-fix/2026-07-28-web-gui-feedback-loop.zh.md @@ -1,6 +1,7 @@ # Agent Note: Web GUI 改动在现有 URL 上闭环 Status: implemented +Archived: 2026-09-04 [English](2026-07-28-web-gui-feedback-loop.md) | 中文 diff --git a/.agents/notes/archived/bug-fix/2026-07-29-atomic-web-image-admission.i18n.yaml b/.agents/notes/archived/bug-fix/2026-07-29-atomic-web-image-admission.i18n.yaml new file mode 100644 index 0000000000..5d5e9d5ea4 --- /dev/null +++ b/.agents/notes/archived/bug-fix/2026-07-29-atomic-web-image-admission.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/bug-fix/2026-07-29-atomic-web-image-admission.md +2026-07-29-atomic-web-image-admission.md: 9e7372d36a8caac22a521a6c415e2c34a457a6a4 +2026-07-29-atomic-web-image-admission.zh.md: 193a4171bd8558e9111b64e5a5f59ee97a0d9476 diff --git a/.agents/notes/implemented/bug-fix/2026-07-29-atomic-web-image-admission.md b/.agents/notes/archived/bug-fix/2026-07-29-atomic-web-image-admission.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-07-29-atomic-web-image-admission.md rename to .agents/notes/archived/bug-fix/2026-07-29-atomic-web-image-admission.md index dd2faf1e14..9e7372d36a 100644 --- a/.agents/notes/implemented/bug-fix/2026-07-29-atomic-web-image-admission.md +++ b/.agents/notes/archived/bug-fix/2026-07-29-atomic-web-image-admission.md @@ -1,6 +1,7 @@ # Agent Note: Atomic Web image admission Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-29-atomic-web-image-admission.zh.md) diff --git a/.agents/notes/implemented/bug-fix/2026-07-29-atomic-web-image-admission.zh.md b/.agents/notes/archived/bug-fix/2026-07-29-atomic-web-image-admission.zh.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-07-29-atomic-web-image-admission.zh.md rename to .agents/notes/archived/bug-fix/2026-07-29-atomic-web-image-admission.zh.md index 8f15f8848d..193a4171bd 100644 --- a/.agents/notes/implemented/bug-fix/2026-07-29-atomic-web-image-admission.zh.md +++ b/.agents/notes/archived/bug-fix/2026-07-29-atomic-web-image-admission.zh.md @@ -1,6 +1,7 @@ # Agent Note: Web 图片准入的原子性 Status: implemented +Archived: 2026-09-04 [English](2026-07-29-atomic-web-image-admission.md) | 中文 diff --git a/.agents/notes/archived/bug-fix/2026-07-29-human-transcript-append-origin.i18n.yaml b/.agents/notes/archived/bug-fix/2026-07-29-human-transcript-append-origin.i18n.yaml new file mode 100644 index 0000000000..cff92d2259 --- /dev/null +++ b/.agents/notes/archived/bug-fix/2026-07-29-human-transcript-append-origin.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/bug-fix/2026-07-29-human-transcript-append-origin.md +2026-07-29-human-transcript-append-origin.md: c68865cdc1dfef903d2012ac1809e608a7477e08 +2026-07-29-human-transcript-append-origin.zh.md: 8a927c4855d62df3419263cd6ac56710d88ecfc4 diff --git a/.agents/notes/implemented/bug-fix/2026-07-29-human-transcript-append-origin.md b/.agents/notes/archived/bug-fix/2026-07-29-human-transcript-append-origin.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-07-29-human-transcript-append-origin.md rename to .agents/notes/archived/bug-fix/2026-07-29-human-transcript-append-origin.md index 00f4cf0913..c68865cdc1 100644 --- a/.agents/notes/implemented/bug-fix/2026-07-29-human-transcript-append-origin.md +++ b/.agents/notes/archived/bug-fix/2026-07-29-human-transcript-append-origin.md @@ -1,6 +1,7 @@ # Agent Note: The human transcript projects append-origin events Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-29-human-transcript-append-origin.zh.md) diff --git a/.agents/notes/implemented/bug-fix/2026-07-29-human-transcript-append-origin.zh.md b/.agents/notes/archived/bug-fix/2026-07-29-human-transcript-append-origin.zh.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-07-29-human-transcript-append-origin.zh.md rename to .agents/notes/archived/bug-fix/2026-07-29-human-transcript-append-origin.zh.md index 631ba71d84..8a927c4855 100644 --- a/.agents/notes/implemented/bug-fix/2026-07-29-human-transcript-append-origin.zh.md +++ b/.agents/notes/archived/bug-fix/2026-07-29-human-transcript-append-origin.zh.md @@ -1,6 +1,7 @@ # Agent Note: 人类可读记录投影追加来源的事件 Status: implemented +Archived: 2026-09-04 [English](2026-07-29-human-transcript-append-origin.md) | 中文 diff --git a/.agents/notes/archived/bug-fix/2026-07-29-pnpm-setup-runner-isolation.i18n.yaml b/.agents/notes/archived/bug-fix/2026-07-29-pnpm-setup-runner-isolation.i18n.yaml new file mode 100644 index 0000000000..2176600937 --- /dev/null +++ b/.agents/notes/archived/bug-fix/2026-07-29-pnpm-setup-runner-isolation.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/bug-fix/2026-07-29-pnpm-setup-runner-isolation.md +2026-07-29-pnpm-setup-runner-isolation.md: 74e68ea13136d6bb4b7d055b242e7dbcfb4306db +2026-07-29-pnpm-setup-runner-isolation.zh.md: b6c0ad808e27b168bd72fd9bfcdb97fddcfbcc06 diff --git a/.agents/notes/implemented/bug-fix/2026-07-29-pnpm-setup-runner-isolation.md b/.agents/notes/archived/bug-fix/2026-07-29-pnpm-setup-runner-isolation.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-07-29-pnpm-setup-runner-isolation.md rename to .agents/notes/archived/bug-fix/2026-07-29-pnpm-setup-runner-isolation.md index d5cd02cceb..74e68ea131 100644 --- a/.agents/notes/implemented/bug-fix/2026-07-29-pnpm-setup-runner-isolation.md +++ b/.agents/notes/archived/bug-fix/2026-07-29-pnpm-setup-runner-isolation.md @@ -1,6 +1,7 @@ # Agent Note: Isolate pnpm setup per GitHub Actions runner Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-29-pnpm-setup-runner-isolation.zh.md) diff --git a/.agents/notes/implemented/bug-fix/2026-07-29-pnpm-setup-runner-isolation.zh.md b/.agents/notes/archived/bug-fix/2026-07-29-pnpm-setup-runner-isolation.zh.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-07-29-pnpm-setup-runner-isolation.zh.md rename to .agents/notes/archived/bug-fix/2026-07-29-pnpm-setup-runner-isolation.zh.md index 5266112224..b6c0ad808e 100644 --- a/.agents/notes/implemented/bug-fix/2026-07-29-pnpm-setup-runner-isolation.zh.md +++ b/.agents/notes/archived/bug-fix/2026-07-29-pnpm-setup-runner-isolation.zh.md @@ -1,6 +1,7 @@ # Agent Note: 按 GitHub Actions runner 隔离 pnpm 设置 Status: implemented +Archived: 2026-09-04 [English](2026-07-29-pnpm-setup-runner-isolation.md) | 中文 diff --git a/.agents/notes/archived/bug-fix/2026-07-29-sticky-composer-conversation-scroll.i18n.yaml b/.agents/notes/archived/bug-fix/2026-07-29-sticky-composer-conversation-scroll.i18n.yaml new file mode 100644 index 0000000000..73d7f7ad44 --- /dev/null +++ b/.agents/notes/archived/bug-fix/2026-07-29-sticky-composer-conversation-scroll.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/bug-fix/2026-07-29-sticky-composer-conversation-scroll.md +2026-07-29-sticky-composer-conversation-scroll.md: e861439d249f844f3cb781d23f0392ec5701cf01 +2026-07-29-sticky-composer-conversation-scroll.zh.md: 3cc252d2e937e50dbe9bc47255224fd155c72e53 diff --git a/.agents/notes/implemented/bug-fix/2026-07-29-sticky-composer-conversation-scroll.md b/.agents/notes/archived/bug-fix/2026-07-29-sticky-composer-conversation-scroll.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-07-29-sticky-composer-conversation-scroll.md rename to .agents/notes/archived/bug-fix/2026-07-29-sticky-composer-conversation-scroll.md index d628e10979..e861439d24 100644 --- a/.agents/notes/implemented/bug-fix/2026-07-29-sticky-composer-conversation-scroll.md +++ b/.agents/notes/archived/bug-fix/2026-07-29-sticky-composer-conversation-scroll.md @@ -1,6 +1,7 @@ # Agent Note: Fixed header, sticky composer inside the transcript scrollport Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-29-sticky-composer-conversation-scroll.zh.md) diff --git a/.agents/notes/implemented/bug-fix/2026-07-29-sticky-composer-conversation-scroll.zh.md b/.agents/notes/archived/bug-fix/2026-07-29-sticky-composer-conversation-scroll.zh.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-07-29-sticky-composer-conversation-scroll.zh.md rename to .agents/notes/archived/bug-fix/2026-07-29-sticky-composer-conversation-scroll.zh.md index 73ff61e7fa..3cc252d2e9 100644 --- a/.agents/notes/implemented/bug-fix/2026-07-29-sticky-composer-conversation-scroll.zh.md +++ b/.agents/notes/archived/bug-fix/2026-07-29-sticky-composer-conversation-scroll.zh.md @@ -1,6 +1,7 @@ # Agent Note: 固定标题栏,sticky 编辑器位于 transcript(文本记录)滚动容器内 Status: implemented +Archived: 2026-09-04 [English](2026-07-29-sticky-composer-conversation-scroll.md) | 中文 diff --git a/.agents/notes/archived/bug-fix/2026-07-29-web-details-session-lifecycle.i18n.yaml b/.agents/notes/archived/bug-fix/2026-07-29-web-details-session-lifecycle.i18n.yaml new file mode 100644 index 0000000000..39460efabe --- /dev/null +++ b/.agents/notes/archived/bug-fix/2026-07-29-web-details-session-lifecycle.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/bug-fix/2026-07-29-web-details-session-lifecycle.md +2026-07-29-web-details-session-lifecycle.md: b749a7e254eefb47d145af3b15064e29c8c242b4 +2026-07-29-web-details-session-lifecycle.zh.md: a7b9c7cf821887759b73d95e765cc2b9c3631514 diff --git a/.agents/notes/implemented/bug-fix/2026-07-29-web-details-session-lifecycle.md b/.agents/notes/archived/bug-fix/2026-07-29-web-details-session-lifecycle.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-07-29-web-details-session-lifecycle.md rename to .agents/notes/archived/bug-fix/2026-07-29-web-details-session-lifecycle.md index 41b89fc059..b749a7e254 100644 --- a/.agents/notes/implemented/bug-fix/2026-07-29-web-details-session-lifecycle.md +++ b/.agents/notes/archived/bug-fix/2026-07-29-web-details-session-lifecycle.md @@ -1,6 +1,7 @@ # Agent Note: Web details follow the current Session lifecycle Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-29-web-details-session-lifecycle.zh.md) diff --git a/.agents/notes/implemented/bug-fix/2026-07-29-web-details-session-lifecycle.zh.md b/.agents/notes/archived/bug-fix/2026-07-29-web-details-session-lifecycle.zh.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-07-29-web-details-session-lifecycle.zh.md rename to .agents/notes/archived/bug-fix/2026-07-29-web-details-session-lifecycle.zh.md index af0565bf78..a7b9c7cf82 100644 --- a/.agents/notes/implemented/bug-fix/2026-07-29-web-details-session-lifecycle.zh.md +++ b/.agents/notes/archived/bug-fix/2026-07-29-web-details-session-lifecycle.zh.md @@ -1,6 +1,7 @@ # Agent Note: Web 详情栏遵循当前会话生命周期 Status: implemented +Archived: 2026-09-04 [English](2026-07-29-web-details-session-lifecycle.md) | 中文 diff --git a/.agents/notes/archived/bug-fix/2026-07-30-approval-panel-command-cap.i18n.yaml b/.agents/notes/archived/bug-fix/2026-07-30-approval-panel-command-cap.i18n.yaml new file mode 100644 index 0000000000..7f4cb9dc77 --- /dev/null +++ b/.agents/notes/archived/bug-fix/2026-07-30-approval-panel-command-cap.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/bug-fix/2026-07-30-approval-panel-command-cap.md +2026-07-30-approval-panel-command-cap.md: 98e543790d640c8c1aad270f40def2f4176151b6 +2026-07-30-approval-panel-command-cap.zh.md: 07483899ec459ef12fda98ad80fc7d5a5144c45a diff --git a/.agents/notes/implemented/bug-fix/2026-07-30-approval-panel-command-cap.md b/.agents/notes/archived/bug-fix/2026-07-30-approval-panel-command-cap.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-07-30-approval-panel-command-cap.md rename to .agents/notes/archived/bug-fix/2026-07-30-approval-panel-command-cap.md index 0bfdc2d00f..98e543790d 100644 --- a/.agents/notes/implemented/bug-fix/2026-07-30-approval-panel-command-cap.md +++ b/.agents/notes/archived/bug-fix/2026-07-30-approval-panel-command-cap.md @@ -1,6 +1,7 @@ # Agent Note: The approval takeover shares the composer's text cap Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-30-approval-panel-command-cap.zh.md) diff --git a/.agents/notes/implemented/bug-fix/2026-07-30-approval-panel-command-cap.zh.md b/.agents/notes/archived/bug-fix/2026-07-30-approval-panel-command-cap.zh.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-07-30-approval-panel-command-cap.zh.md rename to .agents/notes/archived/bug-fix/2026-07-30-approval-panel-command-cap.zh.md index a086888b12..07483899ec 100644 --- a/.agents/notes/implemented/bug-fix/2026-07-30-approval-panel-command-cap.zh.md +++ b/.agents/notes/archived/bug-fix/2026-07-30-approval-panel-command-cap.zh.md @@ -1,6 +1,7 @@ # Agent Note: 审批接管面板与输入框共用同一文本高度上限 Status: implemented +Archived: 2026-09-04 [English](2026-07-30-approval-panel-command-cap.md) | 中文 diff --git a/.agents/notes/archived/bug-fix/2026-07-30-bounded-overwrite-diff-basis.i18n.yaml b/.agents/notes/archived/bug-fix/2026-07-30-bounded-overwrite-diff-basis.i18n.yaml new file mode 100644 index 0000000000..d5a6b62a0f --- /dev/null +++ b/.agents/notes/archived/bug-fix/2026-07-30-bounded-overwrite-diff-basis.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/bug-fix/2026-07-30-bounded-overwrite-diff-basis.md +2026-07-30-bounded-overwrite-diff-basis.md: d07a592cfb34df02c12e512d77f3659b7199c830 +2026-07-30-bounded-overwrite-diff-basis.zh.md: 3751cc72bfea1fc9ed8c024a1d9dbe0b6bd4f321 diff --git a/.agents/notes/implemented/bug-fix/2026-07-30-bounded-overwrite-diff-basis.md b/.agents/notes/archived/bug-fix/2026-07-30-bounded-overwrite-diff-basis.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-07-30-bounded-overwrite-diff-basis.md rename to .agents/notes/archived/bug-fix/2026-07-30-bounded-overwrite-diff-basis.md index 7a09934bd1..d07a592cfb 100644 --- a/.agents/notes/implemented/bug-fix/2026-07-30-bounded-overwrite-diff-basis.md +++ b/.agents/notes/archived/bug-fix/2026-07-30-bounded-overwrite-diff-basis.md @@ -1,6 +1,7 @@ # Agent Note: Bound overwrite contextual-diff bases at the provider Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-30-bounded-overwrite-diff-basis.zh.md) diff --git a/.agents/notes/implemented/bug-fix/2026-07-30-bounded-overwrite-diff-basis.zh.md b/.agents/notes/archived/bug-fix/2026-07-30-bounded-overwrite-diff-basis.zh.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-07-30-bounded-overwrite-diff-basis.zh.md rename to .agents/notes/archived/bug-fix/2026-07-30-bounded-overwrite-diff-basis.zh.md index 761c0e6e55..3751cc72bf 100644 --- a/.agents/notes/implemented/bug-fix/2026-07-30-bounded-overwrite-diff-basis.zh.md +++ b/.agents/notes/archived/bug-fix/2026-07-30-bounded-overwrite-diff-basis.zh.md @@ -1,6 +1,7 @@ # Agent Note: 在提供方限制覆写上下文 diff 基础 Status: implemented +Archived: 2026-09-04 [English](2026-07-30-bounded-overwrite-diff-basis.md) | 中文 diff --git a/.agents/notes/archived/bug-fix/2026-07-30-composer-context-stack-order.i18n.yaml b/.agents/notes/archived/bug-fix/2026-07-30-composer-context-stack-order.i18n.yaml new file mode 100644 index 0000000000..0d3127e061 --- /dev/null +++ b/.agents/notes/archived/bug-fix/2026-07-30-composer-context-stack-order.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/bug-fix/2026-07-30-composer-context-stack-order.md +2026-07-30-composer-context-stack-order.md: 7f9aca5e6a0133239ee47d3aa2dcd04fb5690e42 +2026-07-30-composer-context-stack-order.zh.md: 9c5cd6c12e8c8777ac973035561bd3fd89cab273 diff --git a/.agents/notes/implemented/bug-fix/2026-07-30-composer-context-stack-order.md b/.agents/notes/archived/bug-fix/2026-07-30-composer-context-stack-order.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-07-30-composer-context-stack-order.md rename to .agents/notes/archived/bug-fix/2026-07-30-composer-context-stack-order.md index 150225ce27..7f9aca5e6a 100644 --- a/.agents/notes/implemented/bug-fix/2026-07-30-composer-context-stack-order.md +++ b/.agents/notes/archived/bug-fix/2026-07-30-composer-context-stack-order.md @@ -1,6 +1,7 @@ # Agent Note: Composer context stack order Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-30-composer-context-stack-order.zh.md) diff --git a/.agents/notes/implemented/bug-fix/2026-07-30-composer-context-stack-order.zh.md b/.agents/notes/archived/bug-fix/2026-07-30-composer-context-stack-order.zh.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-07-30-composer-context-stack-order.zh.md rename to .agents/notes/archived/bug-fix/2026-07-30-composer-context-stack-order.zh.md index 25bdd9a584..9c5cd6c12e 100644 --- a/.agents/notes/implemented/bug-fix/2026-07-30-composer-context-stack-order.zh.md +++ b/.agents/notes/archived/bug-fix/2026-07-30-composer-context-stack-order.zh.md @@ -1,6 +1,7 @@ # Agent Note: Composer 上下文堆栈顺序 Status: implemented +Archived: 2026-09-04 [English](2026-07-30-composer-context-stack-order.md) | 中文 diff --git a/.agents/notes/archived/bug-fix/2026-07-30-hover-popup-pointer-grace.i18n.yaml b/.agents/notes/archived/bug-fix/2026-07-30-hover-popup-pointer-grace.i18n.yaml new file mode 100644 index 0000000000..7129d9c149 --- /dev/null +++ b/.agents/notes/archived/bug-fix/2026-07-30-hover-popup-pointer-grace.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/bug-fix/2026-07-30-hover-popup-pointer-grace.md +2026-07-30-hover-popup-pointer-grace.md: b770ac859da264c1b230bd6dd334ce5372466a01 +2026-07-30-hover-popup-pointer-grace.zh.md: 1ebe2d2d5f886c1ab24d90df9af0bb384d414186 diff --git a/.agents/notes/implemented/bug-fix/2026-07-30-hover-popup-pointer-grace.md b/.agents/notes/archived/bug-fix/2026-07-30-hover-popup-pointer-grace.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-07-30-hover-popup-pointer-grace.md rename to .agents/notes/archived/bug-fix/2026-07-30-hover-popup-pointer-grace.md index 302592a2e9..b770ac859d 100644 --- a/.agents/notes/implemented/bug-fix/2026-07-30-hover-popup-pointer-grace.md +++ b/.agents/notes/archived/bug-fix/2026-07-30-hover-popup-pointer-grace.md @@ -1,6 +1,7 @@ # Agent Note: Hover popup pointer grace Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-30-hover-popup-pointer-grace.zh.md) diff --git a/.agents/notes/implemented/bug-fix/2026-07-30-hover-popup-pointer-grace.zh.md b/.agents/notes/archived/bug-fix/2026-07-30-hover-popup-pointer-grace.zh.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-07-30-hover-popup-pointer-grace.zh.md rename to .agents/notes/archived/bug-fix/2026-07-30-hover-popup-pointer-grace.zh.md index 4020a6f1f7..1ebe2d2d5f 100644 --- a/.agents/notes/implemented/bug-fix/2026-07-30-hover-popup-pointer-grace.zh.md +++ b/.agents/notes/archived/bug-fix/2026-07-30-hover-popup-pointer-grace.zh.md @@ -1,6 +1,7 @@ # Agent Note: 悬浮弹层的指针宽限期 Status: implemented +Archived: 2026-09-04 [English](2026-07-30-hover-popup-pointer-grace.md) | 中文 diff --git a/.agents/notes/archived/bug-fix/2026-07-30-multi-select-custom-answer-composition.i18n.yaml b/.agents/notes/archived/bug-fix/2026-07-30-multi-select-custom-answer-composition.i18n.yaml new file mode 100644 index 0000000000..88363fd558 --- /dev/null +++ b/.agents/notes/archived/bug-fix/2026-07-30-multi-select-custom-answer-composition.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/bug-fix/2026-07-30-multi-select-custom-answer-composition.md +2026-07-30-multi-select-custom-answer-composition.md: 271c554ee43d13625670bc2506914f5ec60ed1c5 +2026-07-30-multi-select-custom-answer-composition.zh.md: 67b67e6c48051713e4fdc588874d568aee801a43 diff --git a/.agents/notes/implemented/bug-fix/2026-07-30-multi-select-custom-answer-composition.md b/.agents/notes/archived/bug-fix/2026-07-30-multi-select-custom-answer-composition.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-07-30-multi-select-custom-answer-composition.md rename to .agents/notes/archived/bug-fix/2026-07-30-multi-select-custom-answer-composition.md index db5be2dbed..271c554ee4 100644 --- a/.agents/notes/implemented/bug-fix/2026-07-30-multi-select-custom-answer-composition.md +++ b/.agents/notes/archived/bug-fix/2026-07-30-multi-select-custom-answer-composition.md @@ -1,6 +1,7 @@ # Agent Note: Multi-select custom answer composition Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-30-multi-select-custom-answer-composition.zh.md) diff --git a/.agents/notes/implemented/bug-fix/2026-07-30-multi-select-custom-answer-composition.zh.md b/.agents/notes/archived/bug-fix/2026-07-30-multi-select-custom-answer-composition.zh.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-07-30-multi-select-custom-answer-composition.zh.md rename to .agents/notes/archived/bug-fix/2026-07-30-multi-select-custom-answer-composition.zh.md index 796d379312..67b67e6c48 100644 --- a/.agents/notes/implemented/bug-fix/2026-07-30-multi-select-custom-answer-composition.zh.md +++ b/.agents/notes/archived/bug-fix/2026-07-30-multi-select-custom-answer-composition.zh.md @@ -1,6 +1,7 @@ # Agent Note: 多选题自定义答案组合 Status: implemented +Archived: 2026-09-04 [English](2026-07-30-multi-select-custom-answer-composition.md) | 中文 diff --git a/.agents/notes/archived/bug-fix/2026-07-30-source-checkout-workdir-distinction.i18n.yaml b/.agents/notes/archived/bug-fix/2026-07-30-source-checkout-workdir-distinction.i18n.yaml new file mode 100644 index 0000000000..1a074d9d9f --- /dev/null +++ b/.agents/notes/archived/bug-fix/2026-07-30-source-checkout-workdir-distinction.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/bug-fix/2026-07-30-source-checkout-workdir-distinction.md +2026-07-30-source-checkout-workdir-distinction.md: a6ebd1edac794cafc318e7961263106f162361d3 +2026-07-30-source-checkout-workdir-distinction.zh.md: 570f950223688eef251dd6be95e71f7bebe5d453 diff --git a/.agents/notes/implemented/bug-fix/2026-07-30-source-checkout-workdir-distinction.md b/.agents/notes/archived/bug-fix/2026-07-30-source-checkout-workdir-distinction.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-07-30-source-checkout-workdir-distinction.md rename to .agents/notes/archived/bug-fix/2026-07-30-source-checkout-workdir-distinction.md index 407d11bd2d..a6ebd1edac 100644 --- a/.agents/notes/implemented/bug-fix/2026-07-30-source-checkout-workdir-distinction.md +++ b/.agents/notes/archived/bug-fix/2026-07-30-source-checkout-workdir-distinction.md @@ -1,6 +1,7 @@ # Agent Note: Source checkout paths do not define working directories Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-30-source-checkout-workdir-distinction.zh.md) diff --git a/.agents/notes/implemented/bug-fix/2026-07-30-source-checkout-workdir-distinction.zh.md b/.agents/notes/archived/bug-fix/2026-07-30-source-checkout-workdir-distinction.zh.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-07-30-source-checkout-workdir-distinction.zh.md rename to .agents/notes/archived/bug-fix/2026-07-30-source-checkout-workdir-distinction.zh.md index 91251aa040..570f950223 100644 --- a/.agents/notes/implemented/bug-fix/2026-07-30-source-checkout-workdir-distinction.zh.md +++ b/.agents/notes/archived/bug-fix/2026-07-30-source-checkout-workdir-distinction.zh.md @@ -1,6 +1,7 @@ # Agent Note: 源码 checkout 路径不定义工作目录 Status: implemented +Archived: 2026-09-04 [English](2026-07-30-source-checkout-workdir-distinction.md) | 中文 diff --git a/.agents/notes/archived/bug-fix/2026-07-30-web-transcript-log-ordered-projection.i18n.yaml b/.agents/notes/archived/bug-fix/2026-07-30-web-transcript-log-ordered-projection.i18n.yaml new file mode 100644 index 0000000000..3dfd6de4ac --- /dev/null +++ b/.agents/notes/archived/bug-fix/2026-07-30-web-transcript-log-ordered-projection.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/bug-fix/2026-07-30-web-transcript-log-ordered-projection.md +2026-07-30-web-transcript-log-ordered-projection.md: b16a87d5806b3d5d3e08cc436c1eacc92053a629 +2026-07-30-web-transcript-log-ordered-projection.zh.md: 871894f29cfd4461bb80e941c0d7cbb14a7e2dda diff --git a/.agents/notes/implemented/bug-fix/2026-07-30-web-transcript-log-ordered-projection.md b/.agents/notes/archived/bug-fix/2026-07-30-web-transcript-log-ordered-projection.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-07-30-web-transcript-log-ordered-projection.md rename to .agents/notes/archived/bug-fix/2026-07-30-web-transcript-log-ordered-projection.md index ed6fa4df3a..b16a87d580 100644 --- a/.agents/notes/implemented/bug-fix/2026-07-30-web-transcript-log-ordered-projection.md +++ b/.agents/notes/archived/bug-fix/2026-07-30-web-transcript-log-ordered-projection.md @@ -1,6 +1,7 @@ # Agent Note: The browser conversation is a log-ordered human transcript Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-30-web-transcript-log-ordered-projection.zh.md) diff --git a/.agents/notes/implemented/bug-fix/2026-07-30-web-transcript-log-ordered-projection.zh.md b/.agents/notes/archived/bug-fix/2026-07-30-web-transcript-log-ordered-projection.zh.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-07-30-web-transcript-log-ordered-projection.zh.md rename to .agents/notes/archived/bug-fix/2026-07-30-web-transcript-log-ordered-projection.zh.md index cf8dc35099..871894f29c 100644 --- a/.agents/notes/implemented/bug-fix/2026-07-30-web-transcript-log-ordered-projection.zh.md +++ b/.agents/notes/archived/bug-fix/2026-07-30-web-transcript-log-ordered-projection.zh.md @@ -1,6 +1,7 @@ # Agent Note: 浏览器会话是按日志顺序投影的人类对话记录 Status: implemented +Archived: 2026-09-04 [English](2026-07-30-web-transcript-log-ordered-projection.md) | 中文 diff --git a/.agents/notes/archived/bug-fix/2026-07-31-code-runtime-python-settlement-fixes.i18n.yaml b/.agents/notes/archived/bug-fix/2026-07-31-code-runtime-python-settlement-fixes.i18n.yaml new file mode 100644 index 0000000000..3f9f3875eb --- /dev/null +++ b/.agents/notes/archived/bug-fix/2026-07-31-code-runtime-python-settlement-fixes.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/bug-fix/2026-07-31-code-runtime-python-settlement-fixes.md +2026-07-31-code-runtime-python-settlement-fixes.md: 6ad9faade3bc64c8555905593f13dc7b1bd2f6ae +2026-07-31-code-runtime-python-settlement-fixes.zh.md: a92288210cd8d774baef37182ad72e4c52ae1f9e diff --git a/.agents/notes/implemented/bug-fix/2026-07-31-code-runtime-python-settlement-fixes.md b/.agents/notes/archived/bug-fix/2026-07-31-code-runtime-python-settlement-fixes.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-07-31-code-runtime-python-settlement-fixes.md rename to .agents/notes/archived/bug-fix/2026-07-31-code-runtime-python-settlement-fixes.md index 26a5947b66..6ad9faade3 100644 --- a/.agents/notes/implemented/bug-fix/2026-07-31-code-runtime-python-settlement-fixes.md +++ b/.agents/notes/archived/bug-fix/2026-07-31-code-runtime-python-settlement-fixes.md @@ -1,6 +1,7 @@ # Agent Note: Settlement, framing, and lifecycle fixes in the CPython backend Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-31-code-runtime-python-settlement-fixes.zh.md) diff --git a/.agents/notes/implemented/bug-fix/2026-07-31-code-runtime-python-settlement-fixes.zh.md b/.agents/notes/archived/bug-fix/2026-07-31-code-runtime-python-settlement-fixes.zh.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-07-31-code-runtime-python-settlement-fixes.zh.md rename to .agents/notes/archived/bug-fix/2026-07-31-code-runtime-python-settlement-fixes.zh.md index f2e7955a40..a92288210c 100644 --- a/.agents/notes/implemented/bug-fix/2026-07-31-code-runtime-python-settlement-fixes.zh.md +++ b/.agents/notes/archived/bug-fix/2026-07-31-code-runtime-python-settlement-fixes.zh.md @@ -1,6 +1,7 @@ # Agent Note: CPython 后端中的结算、分帧与生命周期修复 Status: implemented +Archived: 2026-09-04 [English](2026-07-31-code-runtime-python-settlement-fixes.md) | 中文 diff --git a/.agents/notes/archived/bug-fix/2026-07-31-english-compaction-checkpoints.i18n.yaml b/.agents/notes/archived/bug-fix/2026-07-31-english-compaction-checkpoints.i18n.yaml new file mode 100644 index 0000000000..be01d369d2 --- /dev/null +++ b/.agents/notes/archived/bug-fix/2026-07-31-english-compaction-checkpoints.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/bug-fix/2026-07-31-english-compaction-checkpoints.md +2026-07-31-english-compaction-checkpoints.md: 62db12bb97bcbd691a33280a9c1a7884e88856d0 +2026-07-31-english-compaction-checkpoints.zh.md: bea53cbf6075143782d12aa58a99f7a3e253d6cb diff --git a/.agents/notes/implemented/bug-fix/2026-07-31-english-compaction-checkpoints.md b/.agents/notes/archived/bug-fix/2026-07-31-english-compaction-checkpoints.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-07-31-english-compaction-checkpoints.md rename to .agents/notes/archived/bug-fix/2026-07-31-english-compaction-checkpoints.md index a1123b3d67..62db12bb97 100644 --- a/.agents/notes/implemented/bug-fix/2026-07-31-english-compaction-checkpoints.md +++ b/.agents/notes/archived/bug-fix/2026-07-31-english-compaction-checkpoints.md @@ -1,6 +1,7 @@ # Agent Note: Compaction checkpoints use an English engineering register Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-31-english-compaction-checkpoints.zh.md) diff --git a/.agents/notes/implemented/bug-fix/2026-07-31-english-compaction-checkpoints.zh.md b/.agents/notes/archived/bug-fix/2026-07-31-english-compaction-checkpoints.zh.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-07-31-english-compaction-checkpoints.zh.md rename to .agents/notes/archived/bug-fix/2026-07-31-english-compaction-checkpoints.zh.md index 1543d87493..bea53cbf60 100644 --- a/.agents/notes/implemented/bug-fix/2026-07-31-english-compaction-checkpoints.zh.md +++ b/.agents/notes/archived/bug-fix/2026-07-31-english-compaction-checkpoints.zh.md @@ -1,6 +1,7 @@ # Agent Note: 压缩检查点使用英语工程文体 Status: implemented +Archived: 2026-09-04 [English](2026-07-31-english-compaction-checkpoints.md) | 中文 diff --git a/.agents/notes/archived/bug-fix/2026-07-31-fork-anchor-floors-to-event-seq.i18n.yaml b/.agents/notes/archived/bug-fix/2026-07-31-fork-anchor-floors-to-event-seq.i18n.yaml new file mode 100644 index 0000000000..293d08b685 --- /dev/null +++ b/.agents/notes/archived/bug-fix/2026-07-31-fork-anchor-floors-to-event-seq.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/bug-fix/2026-07-31-fork-anchor-floors-to-event-seq.md +2026-07-31-fork-anchor-floors-to-event-seq.md: 054bda7a74b14727093e2a5f1cf356cb22f2edba +2026-07-31-fork-anchor-floors-to-event-seq.zh.md: 7a7529c7f9055b1b4fefdb3fa8690b54f3ae3546 diff --git a/.agents/notes/implemented/bug-fix/2026-07-31-fork-anchor-floors-to-event-seq.md b/.agents/notes/archived/bug-fix/2026-07-31-fork-anchor-floors-to-event-seq.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-07-31-fork-anchor-floors-to-event-seq.md rename to .agents/notes/archived/bug-fix/2026-07-31-fork-anchor-floors-to-event-seq.md index 760e732665..054bda7a74 100644 --- a/.agents/notes/implemented/bug-fix/2026-07-31-fork-anchor-floors-to-event-seq.md +++ b/.agents/notes/archived/bug-fix/2026-07-31-fork-anchor-floors-to-event-seq.md @@ -1,6 +1,7 @@ # Agent Note: Fork anchor floors to an event seq Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-31-fork-anchor-floors-to-event-seq.zh.md) diff --git a/.agents/notes/implemented/bug-fix/2026-07-31-fork-anchor-floors-to-event-seq.zh.md b/.agents/notes/archived/bug-fix/2026-07-31-fork-anchor-floors-to-event-seq.zh.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-07-31-fork-anchor-floors-to-event-seq.zh.md rename to .agents/notes/archived/bug-fix/2026-07-31-fork-anchor-floors-to-event-seq.zh.md index c25a69462b..7a7529c7f9 100644 --- a/.agents/notes/implemented/bug-fix/2026-07-31-fork-anchor-floors-to-event-seq.zh.md +++ b/.agents/notes/archived/bug-fix/2026-07-31-fork-anchor-floors-to-event-seq.zh.md @@ -1,6 +1,7 @@ # Agent Note: fork 锚点向下取整到事件 seq Status: implemented +Archived: 2026-09-04 [English](2026-07-31-fork-anchor-floors-to-event-seq.md) | 中文 diff --git a/.agents/notes/archived/bug-fix/2026-07-31-resume-selector-batch-projection.i18n.yaml b/.agents/notes/archived/bug-fix/2026-07-31-resume-selector-batch-projection.i18n.yaml new file mode 100644 index 0000000000..bc98576d46 --- /dev/null +++ b/.agents/notes/archived/bug-fix/2026-07-31-resume-selector-batch-projection.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/bug-fix/2026-07-31-resume-selector-batch-projection.md +2026-07-31-resume-selector-batch-projection.md: c30abf7f236b625d17f4b1be1ca37184a4f13df5 +2026-07-31-resume-selector-batch-projection.zh.md: f0898242b268b9f0cad0e5aac1804cae5bde0539 diff --git a/.agents/notes/implemented/bug-fix/2026-07-31-resume-selector-batch-projection.md b/.agents/notes/archived/bug-fix/2026-07-31-resume-selector-batch-projection.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-07-31-resume-selector-batch-projection.md rename to .agents/notes/archived/bug-fix/2026-07-31-resume-selector-batch-projection.md index aa99ecf323..c30abf7f23 100644 --- a/.agents/notes/implemented/bug-fix/2026-07-31-resume-selector-batch-projection.md +++ b/.agents/notes/archived/bug-fix/2026-07-31-resume-selector-batch-projection.md @@ -1,6 +1,7 @@ # Agent Note: Resume selector folds titles only Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-31-resume-selector-batch-projection.zh.md) diff --git a/.agents/notes/implemented/bug-fix/2026-07-31-resume-selector-batch-projection.zh.md b/.agents/notes/archived/bug-fix/2026-07-31-resume-selector-batch-projection.zh.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-07-31-resume-selector-batch-projection.zh.md rename to .agents/notes/archived/bug-fix/2026-07-31-resume-selector-batch-projection.zh.md index ebc9d43677..f0898242b2 100644 --- a/.agents/notes/implemented/bug-fix/2026-07-31-resume-selector-batch-projection.zh.md +++ b/.agents/notes/archived/bug-fix/2026-07-31-resume-selector-batch-projection.zh.md @@ -1,6 +1,7 @@ # Agent Note: 恢复选择器只折叠标题 Status: implemented +Archived: 2026-09-04 [English](2026-07-31-resume-selector-batch-projection.md) | 中文 diff --git a/.agents/notes/archived/bug-fix/2026-07-31-same-basename-workspace-adoption.i18n.yaml b/.agents/notes/archived/bug-fix/2026-07-31-same-basename-workspace-adoption.i18n.yaml new file mode 100644 index 0000000000..5bff24dabb --- /dev/null +++ b/.agents/notes/archived/bug-fix/2026-07-31-same-basename-workspace-adoption.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/bug-fix/2026-07-31-same-basename-workspace-adoption.md +2026-07-31-same-basename-workspace-adoption.md: 2d58900917389c1f60ef2cd65ce751ef3d9326fd +2026-07-31-same-basename-workspace-adoption.zh.md: bfc9e4def2fd76e88e47d7f06c80b864adf301e7 diff --git a/.agents/notes/implemented/bug-fix/2026-07-31-same-basename-workspace-adoption.md b/.agents/notes/archived/bug-fix/2026-07-31-same-basename-workspace-adoption.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-07-31-same-basename-workspace-adoption.md rename to .agents/notes/archived/bug-fix/2026-07-31-same-basename-workspace-adoption.md index d7c4f7a9d6..2d58900917 100644 --- a/.agents/notes/implemented/bug-fix/2026-07-31-same-basename-workspace-adoption.md +++ b/.agents/notes/archived/bug-fix/2026-07-31-same-basename-workspace-adoption.md @@ -1,6 +1,7 @@ # Agent Note: Same-basename Workspace adoption Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-31-same-basename-workspace-adoption.zh.md) diff --git a/.agents/notes/implemented/bug-fix/2026-07-31-same-basename-workspace-adoption.zh.md b/.agents/notes/archived/bug-fix/2026-07-31-same-basename-workspace-adoption.zh.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-07-31-same-basename-workspace-adoption.zh.md rename to .agents/notes/archived/bug-fix/2026-07-31-same-basename-workspace-adoption.zh.md index 968863a24c..bfc9e4def2 100644 --- a/.agents/notes/implemented/bug-fix/2026-07-31-same-basename-workspace-adoption.zh.md +++ b/.agents/notes/archived/bug-fix/2026-07-31-same-basename-workspace-adoption.zh.md @@ -1,6 +1,7 @@ # Agent Note: 接纳 basename 相同的 Workspace Status: implemented +Archived: 2026-09-04 [English](2026-07-31-same-basename-workspace-adoption.md) | 中文 diff --git a/.agents/notes/archived/bug-fix/2026-07-31-web-stop-preserves-queue.i18n.yaml b/.agents/notes/archived/bug-fix/2026-07-31-web-stop-preserves-queue.i18n.yaml new file mode 100644 index 0000000000..63b678c8bf --- /dev/null +++ b/.agents/notes/archived/bug-fix/2026-07-31-web-stop-preserves-queue.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/bug-fix/2026-07-31-web-stop-preserves-queue.md +2026-07-31-web-stop-preserves-queue.md: 8580869a28ce22dbb756bb3f9c4a7c30645212cc +2026-07-31-web-stop-preserves-queue.zh.md: 44aa39a58c75f8046d09f8b273fd12d3d638dc93 diff --git a/.agents/notes/implemented/bug-fix/2026-07-31-web-stop-preserves-queue.md b/.agents/notes/archived/bug-fix/2026-07-31-web-stop-preserves-queue.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-07-31-web-stop-preserves-queue.md rename to .agents/notes/archived/bug-fix/2026-07-31-web-stop-preserves-queue.md index b8bba45009..8580869a28 100644 --- a/.agents/notes/implemented/bug-fix/2026-07-31-web-stop-preserves-queue.md +++ b/.agents/notes/archived/bug-fix/2026-07-31-web-stop-preserves-queue.md @@ -1,6 +1,7 @@ # Agent Note: Web stop preserves pending Queue Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-31-web-stop-preserves-queue.zh.md) diff --git a/.agents/notes/implemented/bug-fix/2026-07-31-web-stop-preserves-queue.zh.md b/.agents/notes/archived/bug-fix/2026-07-31-web-stop-preserves-queue.zh.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-07-31-web-stop-preserves-queue.zh.md rename to .agents/notes/archived/bug-fix/2026-07-31-web-stop-preserves-queue.zh.md index af9c114fd0..44aa39a58c 100644 --- a/.agents/notes/implemented/bug-fix/2026-07-31-web-stop-preserves-queue.zh.md +++ b/.agents/notes/archived/bug-fix/2026-07-31-web-stop-preserves-queue.zh.md @@ -1,6 +1,7 @@ # Agent Note: Web 停止操作保留待处理 Queue Status: implemented +Archived: 2026-09-04 [English](2026-07-31-web-stop-preserves-queue.md) | 中文 diff --git a/.agents/notes/archived/bug-fix/2026-08-01-ask-user-delegated-caller-guard.i18n.yaml b/.agents/notes/archived/bug-fix/2026-08-01-ask-user-delegated-caller-guard.i18n.yaml new file mode 100644 index 0000000000..0d9799f99e --- /dev/null +++ b/.agents/notes/archived/bug-fix/2026-08-01-ask-user-delegated-caller-guard.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/bug-fix/2026-08-01-ask-user-delegated-caller-guard.md +2026-08-01-ask-user-delegated-caller-guard.md: 2382ead2bab8b9a83ddb5f7c9e4480359e30f0f4 +2026-08-01-ask-user-delegated-caller-guard.zh.md: 0aa173b0e2c34d0496a20e9c0f295be66e995cfb diff --git a/.agents/notes/implemented/bug-fix/2026-08-01-ask-user-delegated-caller-guard.md b/.agents/notes/archived/bug-fix/2026-08-01-ask-user-delegated-caller-guard.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-01-ask-user-delegated-caller-guard.md rename to .agents/notes/archived/bug-fix/2026-08-01-ask-user-delegated-caller-guard.md index ed4bfae1b6..2382ead2ba 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-01-ask-user-delegated-caller-guard.md +++ b/.agents/notes/archived/bug-fix/2026-08-01-ask-user-delegated-caller-guard.md @@ -1,6 +1,7 @@ # Agent Note: Reject human interaction from runtime-owned subagents Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-01-ask-user-delegated-caller-guard.zh.md) diff --git a/.agents/notes/implemented/bug-fix/2026-08-01-ask-user-delegated-caller-guard.zh.md b/.agents/notes/archived/bug-fix/2026-08-01-ask-user-delegated-caller-guard.zh.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-01-ask-user-delegated-caller-guard.zh.md rename to .agents/notes/archived/bug-fix/2026-08-01-ask-user-delegated-caller-guard.zh.md index 82779d0b31..0aa173b0e2 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-01-ask-user-delegated-caller-guard.zh.md +++ b/.agents/notes/archived/bug-fix/2026-08-01-ask-user-delegated-caller-guard.zh.md @@ -1,6 +1,7 @@ # Agent Note: 拒绝运行时中归属于其他 agent 的 subagent 向人类发起交互 Status: implemented +Archived: 2026-09-04 [English](2026-08-01-ask-user-delegated-caller-guard.md) | 中文 diff --git a/.agents/notes/archived/bug-fix/2026-08-02-goal-round-wrapup-message.i18n.yaml b/.agents/notes/archived/bug-fix/2026-08-02-goal-round-wrapup-message.i18n.yaml new file mode 100644 index 0000000000..c471d41913 --- /dev/null +++ b/.agents/notes/archived/bug-fix/2026-08-02-goal-round-wrapup-message.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/bug-fix/2026-08-02-goal-round-wrapup-message.md +2026-08-02-goal-round-wrapup-message.md: c4a62a33e06b3d8a80e1d54fd34d13d868d35b95 +2026-08-02-goal-round-wrapup-message.zh.md: 11c4bbc3a4e8ffb8bf9547962028bfc217871b8d diff --git a/.agents/notes/implemented/bug-fix/2026-08-02-goal-round-wrapup-message.md b/.agents/notes/archived/bug-fix/2026-08-02-goal-round-wrapup-message.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-02-goal-round-wrapup-message.md rename to .agents/notes/archived/bug-fix/2026-08-02-goal-round-wrapup-message.md index 22a7d329d2..c4a62a33e0 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-02-goal-round-wrapup-message.md +++ b/.agents/notes/archived/bug-fix/2026-08-02-goal-round-wrapup-message.md @@ -1,6 +1,7 @@ # Agent Note: Goal-round wrap-up message Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-02-goal-round-wrapup-message.zh.md) diff --git a/.agents/notes/implemented/bug-fix/2026-08-02-goal-round-wrapup-message.zh.md b/.agents/notes/archived/bug-fix/2026-08-02-goal-round-wrapup-message.zh.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-02-goal-round-wrapup-message.zh.md rename to .agents/notes/archived/bug-fix/2026-08-02-goal-round-wrapup-message.zh.md index abd8e9803c..11c4bbc3a4 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-02-goal-round-wrapup-message.zh.md +++ b/.agents/notes/archived/bug-fix/2026-08-02-goal-round-wrapup-message.zh.md @@ -1,6 +1,7 @@ # Agent Note: Goal Round 收尾消息 Status: implemented +Archived: 2026-09-04 [English](2026-08-02-goal-round-wrapup-message.md) | 中文 diff --git a/.agents/notes/implemented/bug-fix/2026-08-02-message-fork-actions-require-completed-turn-tail.i18n.yaml b/.agents/notes/archived/bug-fix/2026-08-02-message-fork-actions-require-completed-turn-tail.i18n.yaml similarity index 61% rename from .agents/notes/implemented/bug-fix/2026-08-02-message-fork-actions-require-completed-turn-tail.i18n.yaml rename to .agents/notes/archived/bug-fix/2026-08-02-message-fork-actions-require-completed-turn-tail.i18n.yaml index f17316e364..efdd58f5fc 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-02-message-fork-actions-require-completed-turn-tail.i18n.yaml +++ b/.agents/notes/archived/bug-fix/2026-08-02-message-fork-actions-require-completed-turn-tail.i18n.yaml @@ -1,6 +1,6 @@ # Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/bug-fix/2026-08-02-message-fork-actions-require-completed-turn-tail.md -2026-08-02-message-fork-actions-require-completed-turn-tail.md: abdcbc79948c67619bb70a8a87741046f65b8838 -2026-08-02-message-fork-actions-require-completed-turn-tail.zh.md: dc6506bf470443b5de6a7984f983f4cca81452a0 +# pnpm run verify-translation-pairing --write .agents/notes/archived/bug-fix/2026-08-02-message-fork-actions-require-completed-turn-tail.md +2026-08-02-message-fork-actions-require-completed-turn-tail.md: 43462e85a96c5ab8b21c697acca354352bfb260b +2026-08-02-message-fork-actions-require-completed-turn-tail.zh.md: c16c4ad0832ce4ade3c2e359cfd3ac0e2cd350e5 diff --git a/.agents/notes/implemented/bug-fix/2026-08-02-message-fork-actions-require-completed-turn-tail.md b/.agents/notes/archived/bug-fix/2026-08-02-message-fork-actions-require-completed-turn-tail.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-02-message-fork-actions-require-completed-turn-tail.md rename to .agents/notes/archived/bug-fix/2026-08-02-message-fork-actions-require-completed-turn-tail.md index abdcbc7994..43462e85a9 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-02-message-fork-actions-require-completed-turn-tail.md +++ b/.agents/notes/archived/bug-fix/2026-08-02-message-fork-actions-require-completed-turn-tail.md @@ -1,6 +1,7 @@ # Agent Note: Message fork actions require a completed turn tail Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-02-message-fork-actions-require-completed-turn-tail.zh.md) diff --git a/.agents/notes/implemented/bug-fix/2026-08-02-message-fork-actions-require-completed-turn-tail.zh.md b/.agents/notes/archived/bug-fix/2026-08-02-message-fork-actions-require-completed-turn-tail.zh.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-02-message-fork-actions-require-completed-turn-tail.zh.md rename to .agents/notes/archived/bug-fix/2026-08-02-message-fork-actions-require-completed-turn-tail.zh.md index dc6506bf47..c16c4ad083 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-02-message-fork-actions-require-completed-turn-tail.zh.md +++ b/.agents/notes/archived/bug-fix/2026-08-02-message-fork-actions-require-completed-turn-tail.zh.md @@ -1,6 +1,7 @@ # Agent Note: 消息 fork 操作要求消息位于已完成轮次尾部 Status: implemented +Archived: 2026-09-04 [English](2026-08-02-message-fork-actions-require-completed-turn-tail.md) | 中文 diff --git a/.agents/notes/archived/bug-fix/2026-08-02-todo-first-composer-context-order.i18n.yaml b/.agents/notes/archived/bug-fix/2026-08-02-todo-first-composer-context-order.i18n.yaml new file mode 100644 index 0000000000..ceb83f0066 --- /dev/null +++ b/.agents/notes/archived/bug-fix/2026-08-02-todo-first-composer-context-order.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/bug-fix/2026-08-02-todo-first-composer-context-order.md +2026-08-02-todo-first-composer-context-order.md: 146b5f237d58ed0b9d92791bded2cddc47455431 +2026-08-02-todo-first-composer-context-order.zh.md: 61e989ecd039e0e61196990cbcc7959a5ef929f1 diff --git a/.agents/notes/implemented/bug-fix/2026-08-02-todo-first-composer-context-order.md b/.agents/notes/archived/bug-fix/2026-08-02-todo-first-composer-context-order.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-02-todo-first-composer-context-order.md rename to .agents/notes/archived/bug-fix/2026-08-02-todo-first-composer-context-order.md index 26962426c7..146b5f237d 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-02-todo-first-composer-context-order.md +++ b/.agents/notes/archived/bug-fix/2026-08-02-todo-first-composer-context-order.md @@ -1,6 +1,7 @@ # Agent Note: Todo-first composer context order Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-02-todo-first-composer-context-order.zh.md) diff --git a/.agents/notes/implemented/bug-fix/2026-08-02-todo-first-composer-context-order.zh.md b/.agents/notes/archived/bug-fix/2026-08-02-todo-first-composer-context-order.zh.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-02-todo-first-composer-context-order.zh.md rename to .agents/notes/archived/bug-fix/2026-08-02-todo-first-composer-context-order.zh.md index a341dddfb7..61e989ecd0 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-02-todo-first-composer-context-order.zh.md +++ b/.agents/notes/archived/bug-fix/2026-08-02-todo-first-composer-context-order.zh.md @@ -1,6 +1,7 @@ # Agent Note: Todo 优先的 composer 上下文顺序 Status: implemented +Archived: 2026-09-04 [English](2026-08-02-todo-first-composer-context-order.md) | 中文 diff --git a/.agents/notes/archived/bug-fix/2026-08-03-hmr-initial-scan-boot-deadlock.i18n.yaml b/.agents/notes/archived/bug-fix/2026-08-03-hmr-initial-scan-boot-deadlock.i18n.yaml new file mode 100644 index 0000000000..ddf0802be4 --- /dev/null +++ b/.agents/notes/archived/bug-fix/2026-08-03-hmr-initial-scan-boot-deadlock.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/bug-fix/2026-08-03-hmr-initial-scan-boot-deadlock.md +2026-08-03-hmr-initial-scan-boot-deadlock.md: 9a3b8b847c14408f082a82b06775b5809bf9e020 +2026-08-03-hmr-initial-scan-boot-deadlock.zh.md: 9f9c34ff5b4b8ed48b55e5b2e3afd3536115f14b diff --git a/.agents/notes/implemented/bug-fix/2026-08-03-hmr-initial-scan-boot-deadlock.md b/.agents/notes/archived/bug-fix/2026-08-03-hmr-initial-scan-boot-deadlock.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-03-hmr-initial-scan-boot-deadlock.md rename to .agents/notes/archived/bug-fix/2026-08-03-hmr-initial-scan-boot-deadlock.md index e578b4d5fa..9a3b8b847c 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-03-hmr-initial-scan-boot-deadlock.md +++ b/.agents/notes/archived/bug-fix/2026-08-03-hmr-initial-scan-boot-deadlock.md @@ -1,6 +1,7 @@ # Agent Note: HMR's initial scan deadlocked a failing boot into a silent exit 13 Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-03-hmr-initial-scan-boot-deadlock.zh.md) diff --git a/.agents/notes/implemented/bug-fix/2026-08-03-hmr-initial-scan-boot-deadlock.zh.md b/.agents/notes/archived/bug-fix/2026-08-03-hmr-initial-scan-boot-deadlock.zh.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-03-hmr-initial-scan-boot-deadlock.zh.md rename to .agents/notes/archived/bug-fix/2026-08-03-hmr-initial-scan-boot-deadlock.zh.md index 01aef0b533..9f9c34ff5b 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-03-hmr-initial-scan-boot-deadlock.zh.md +++ b/.agents/notes/archived/bug-fix/2026-08-03-hmr-initial-scan-boot-deadlock.zh.md @@ -1,6 +1,7 @@ # Agent Note: HMR 初始扫描使失败的启动死锁为静默的 exit 13 Status: implemented +Archived: 2026-09-04 [English](2026-08-03-hmr-initial-scan-boot-deadlock.md) | 中文 diff --git a/.agents/notes/archived/bug-fix/2026-08-04-composer-tab-gutter-reservation.i18n.yaml b/.agents/notes/archived/bug-fix/2026-08-04-composer-tab-gutter-reservation.i18n.yaml new file mode 100644 index 0000000000..d9170127e4 --- /dev/null +++ b/.agents/notes/archived/bug-fix/2026-08-04-composer-tab-gutter-reservation.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/bug-fix/2026-08-04-composer-tab-gutter-reservation.md +2026-08-04-composer-tab-gutter-reservation.md: b072b683173a25aeb82102c4c9cc2732cd101083 +2026-08-04-composer-tab-gutter-reservation.zh.md: 8533c8796259d326a96c87f7f8c070e398650dd2 diff --git a/.agents/notes/implemented/bug-fix/2026-08-04-composer-tab-gutter-reservation.md b/.agents/notes/archived/bug-fix/2026-08-04-composer-tab-gutter-reservation.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-04-composer-tab-gutter-reservation.md rename to .agents/notes/archived/bug-fix/2026-08-04-composer-tab-gutter-reservation.md index ed8d973c28..b072b68317 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-04-composer-tab-gutter-reservation.md +++ b/.agents/notes/archived/bug-fix/2026-08-04-composer-tab-gutter-reservation.md @@ -1,6 +1,7 @@ # Agent Note: The conversation column reserves one scrollbar gutter for every view Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-04-composer-tab-gutter-reservation.zh.md) diff --git a/.agents/notes/implemented/bug-fix/2026-08-04-composer-tab-gutter-reservation.zh.md b/.agents/notes/archived/bug-fix/2026-08-04-composer-tab-gutter-reservation.zh.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-04-composer-tab-gutter-reservation.zh.md rename to .agents/notes/archived/bug-fix/2026-08-04-composer-tab-gutter-reservation.zh.md index 282151ecbf..8533c87962 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-04-composer-tab-gutter-reservation.zh.md +++ b/.agents/notes/archived/bug-fix/2026-08-04-composer-tab-gutter-reservation.zh.md @@ -1,6 +1,7 @@ # Agent Note: 会话列为每个视图预留同一条滚动条槽 Status: implemented +Archived: 2026-09-04 [English](2026-08-04-composer-tab-gutter-reservation.md) | 中文 diff --git a/.agents/notes/archived/bug-fix/2026-08-05-context-meter-blind-to-compaction.i18n.yaml b/.agents/notes/archived/bug-fix/2026-08-05-context-meter-blind-to-compaction.i18n.yaml new file mode 100644 index 0000000000..ecb1431382 --- /dev/null +++ b/.agents/notes/archived/bug-fix/2026-08-05-context-meter-blind-to-compaction.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/bug-fix/2026-08-05-context-meter-blind-to-compaction.md +2026-08-05-context-meter-blind-to-compaction.md: 3ce225706badf6aa1b7d34d570653a6fe84c908e +2026-08-05-context-meter-blind-to-compaction.zh.md: 43c5a9d73838347884194ddec1103b336ab84275 diff --git a/.agents/notes/implemented/bug-fix/2026-08-05-context-meter-blind-to-compaction.md b/.agents/notes/archived/bug-fix/2026-08-05-context-meter-blind-to-compaction.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-05-context-meter-blind-to-compaction.md rename to .agents/notes/archived/bug-fix/2026-08-05-context-meter-blind-to-compaction.md index a23e51771c..3ce225706b 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-05-context-meter-blind-to-compaction.md +++ b/.agents/notes/archived/bug-fix/2026-08-05-context-meter-blind-to-compaction.md @@ -1,6 +1,7 @@ # Agent Note: the context meter could not see a compaction Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-05-context-meter-blind-to-compaction.zh.md) diff --git a/.agents/notes/implemented/bug-fix/2026-08-05-context-meter-blind-to-compaction.zh.md b/.agents/notes/archived/bug-fix/2026-08-05-context-meter-blind-to-compaction.zh.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-05-context-meter-blind-to-compaction.zh.md rename to .agents/notes/archived/bug-fix/2026-08-05-context-meter-blind-to-compaction.zh.md index 12fd41af0d..43c5a9d738 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-05-context-meter-blind-to-compaction.zh.md +++ b/.agents/notes/archived/bug-fix/2026-08-05-context-meter-blind-to-compaction.zh.md @@ -1,6 +1,7 @@ # Agent Note: 上下文仪表看不见压缩 Status: implemented +Archived: 2026-09-04 [English](2026-08-05-context-meter-blind-to-compaction.md) | 中文 diff --git a/.agents/notes/archived/bug-fix/2026-08-05-turn-tail-actions-require-a-completed-turn.i18n.yaml b/.agents/notes/archived/bug-fix/2026-08-05-turn-tail-actions-require-a-completed-turn.i18n.yaml new file mode 100644 index 0000000000..d2f4b56569 --- /dev/null +++ b/.agents/notes/archived/bug-fix/2026-08-05-turn-tail-actions-require-a-completed-turn.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/bug-fix/2026-08-05-turn-tail-actions-require-a-completed-turn.md +2026-08-05-turn-tail-actions-require-a-completed-turn.md: 2c01f52f5a0e0e2eb4a3bbe12368cd48cfa5921e +2026-08-05-turn-tail-actions-require-a-completed-turn.zh.md: b727c8714edf4a43bd6354bc98c0f889b2cbcb27 diff --git a/.agents/notes/implemented/bug-fix/2026-08-05-turn-tail-actions-require-a-completed-turn.md b/.agents/notes/archived/bug-fix/2026-08-05-turn-tail-actions-require-a-completed-turn.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-05-turn-tail-actions-require-a-completed-turn.md rename to .agents/notes/archived/bug-fix/2026-08-05-turn-tail-actions-require-a-completed-turn.md index 44a890c955..2c01f52f5a 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-05-turn-tail-actions-require-a-completed-turn.md +++ b/.agents/notes/archived/bug-fix/2026-08-05-turn-tail-actions-require-a-completed-turn.md @@ -1,6 +1,7 @@ # Agent Note: Turn-tail IconActions require a completed turn Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-05-turn-tail-actions-require-a-completed-turn.zh.md) diff --git a/.agents/notes/implemented/bug-fix/2026-08-05-turn-tail-actions-require-a-completed-turn.zh.md b/.agents/notes/archived/bug-fix/2026-08-05-turn-tail-actions-require-a-completed-turn.zh.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-05-turn-tail-actions-require-a-completed-turn.zh.md rename to .agents/notes/archived/bug-fix/2026-08-05-turn-tail-actions-require-a-completed-turn.zh.md index 71eb7acc42..b727c8714e 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-05-turn-tail-actions-require-a-completed-turn.zh.md +++ b/.agents/notes/archived/bug-fix/2026-08-05-turn-tail-actions-require-a-completed-turn.zh.md @@ -1,6 +1,7 @@ # Agent Note: 轮次尾部 IconActions 要求轮次已完成 Status: implemented +Archived: 2026-09-04 [English](2026-08-05-turn-tail-actions-require-a-completed-turn.md) | 中文 diff --git a/.agents/notes/archived/bug-fix/2026-08-05-workspace-blank-session-reuse-membership.i18n.yaml b/.agents/notes/archived/bug-fix/2026-08-05-workspace-blank-session-reuse-membership.i18n.yaml new file mode 100644 index 0000000000..06169dd0fa --- /dev/null +++ b/.agents/notes/archived/bug-fix/2026-08-05-workspace-blank-session-reuse-membership.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/bug-fix/2026-08-05-workspace-blank-session-reuse-membership.md +2026-08-05-workspace-blank-session-reuse-membership.md: bbc362da338056eca0311b2689c0882b1bb803f1 +2026-08-05-workspace-blank-session-reuse-membership.zh.md: b84c892f118cc894a2e23a92c1533a5173a26ea5 diff --git a/.agents/notes/implemented/bug-fix/2026-08-05-workspace-blank-session-reuse-membership.md b/.agents/notes/archived/bug-fix/2026-08-05-workspace-blank-session-reuse-membership.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-05-workspace-blank-session-reuse-membership.md rename to .agents/notes/archived/bug-fix/2026-08-05-workspace-blank-session-reuse-membership.md index df8cc898f5..bbc362da33 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-05-workspace-blank-session-reuse-membership.md +++ b/.agents/notes/archived/bug-fix/2026-08-05-workspace-blank-session-reuse-membership.md @@ -1,6 +1,7 @@ # Agent Note: Workspace New Session reuse hijacked cwd-matching unaccounted blank sessions Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-05-workspace-blank-session-reuse-membership.zh.md) diff --git a/.agents/notes/implemented/bug-fix/2026-08-05-workspace-blank-session-reuse-membership.zh.md b/.agents/notes/archived/bug-fix/2026-08-05-workspace-blank-session-reuse-membership.zh.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-05-workspace-blank-session-reuse-membership.zh.md rename to .agents/notes/archived/bug-fix/2026-08-05-workspace-blank-session-reuse-membership.zh.md index 73ccdbbb00..b84c892f11 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-05-workspace-blank-session-reuse-membership.zh.md +++ b/.agents/notes/archived/bug-fix/2026-08-05-workspace-blank-session-reuse-membership.zh.md @@ -1,6 +1,7 @@ # Agent Note: 工作区新建会话复用了 cwd 匹配但未入账的空白会话 Status: implemented +Archived: 2026-09-04 [English](2026-08-05-workspace-blank-session-reuse-membership.md) | 中文 diff --git a/.agents/notes/archived/bug-fix/2026-08-06-api-key-format-validation.i18n.yaml b/.agents/notes/archived/bug-fix/2026-08-06-api-key-format-validation.i18n.yaml new file mode 100644 index 0000000000..1c23cff409 --- /dev/null +++ b/.agents/notes/archived/bug-fix/2026-08-06-api-key-format-validation.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/bug-fix/2026-08-06-api-key-format-validation.md +2026-08-06-api-key-format-validation.md: d3524d47934a97c25760b12befef18d6f3935575 +2026-08-06-api-key-format-validation.zh.md: 8844fd083d2f6f978f635c931d384060685423f0 diff --git a/.agents/notes/implemented/bug-fix/2026-08-06-api-key-format-validation.md b/.agents/notes/archived/bug-fix/2026-08-06-api-key-format-validation.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-06-api-key-format-validation.md rename to .agents/notes/archived/bug-fix/2026-08-06-api-key-format-validation.md index 853ae9a4e2..d3524d4793 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-06-api-key-format-validation.md +++ b/.agents/notes/archived/bug-fix/2026-08-06-api-key-format-validation.md @@ -1,6 +1,7 @@ # Agent Note: Validate API key format before it reaches an HTTP header Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-06-api-key-format-validation.zh.md) diff --git a/.agents/notes/implemented/bug-fix/2026-08-06-api-key-format-validation.zh.md b/.agents/notes/archived/bug-fix/2026-08-06-api-key-format-validation.zh.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-06-api-key-format-validation.zh.md rename to .agents/notes/archived/bug-fix/2026-08-06-api-key-format-validation.zh.md index 923798e526..8844fd083d 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-06-api-key-format-validation.zh.md +++ b/.agents/notes/archived/bug-fix/2026-08-06-api-key-format-validation.zh.md @@ -1,6 +1,7 @@ # Agent Note: 在 API Key 进入 HTTP header 之前校验其格式 Status: implemented +Archived: 2026-09-04 [English](2026-08-06-api-key-format-validation.md) | 中文 diff --git a/.agents/notes/archived/bug-fix/2026-08-06-list-agents-residency-vocabulary.i18n.yaml b/.agents/notes/archived/bug-fix/2026-08-06-list-agents-residency-vocabulary.i18n.yaml new file mode 100644 index 0000000000..bea81cfcaa --- /dev/null +++ b/.agents/notes/archived/bug-fix/2026-08-06-list-agents-residency-vocabulary.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/bug-fix/2026-08-06-list-agents-residency-vocabulary.md +2026-08-06-list-agents-residency-vocabulary.md: d174bcbf058487e5470f0fc75fcf0cb965169e0e +2026-08-06-list-agents-residency-vocabulary.zh.md: 37b5b1f3cdf3c559a30028a04f13a3ee6a0b3fbb diff --git a/.agents/notes/implemented/bug-fix/2026-08-06-list-agents-residency-vocabulary.md b/.agents/notes/archived/bug-fix/2026-08-06-list-agents-residency-vocabulary.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-06-list-agents-residency-vocabulary.md rename to .agents/notes/archived/bug-fix/2026-08-06-list-agents-residency-vocabulary.md index 01fff95892..d174bcbf05 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-06-list-agents-residency-vocabulary.md +++ b/.agents/notes/archived/bug-fix/2026-08-06-list-agents-residency-vocabulary.md @@ -1,6 +1,7 @@ # Agent Note: `list_agents` uses `ready` for resumable children Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-06-list-agents-residency-vocabulary.zh.md) diff --git a/.agents/notes/implemented/bug-fix/2026-08-06-list-agents-residency-vocabulary.zh.md b/.agents/notes/archived/bug-fix/2026-08-06-list-agents-residency-vocabulary.zh.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-06-list-agents-residency-vocabulary.zh.md rename to .agents/notes/archived/bug-fix/2026-08-06-list-agents-residency-vocabulary.zh.md index f081962600..37b5b1f3cd 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-06-list-agents-residency-vocabulary.zh.md +++ b/.agents/notes/archived/bug-fix/2026-08-06-list-agents-residency-vocabulary.zh.md @@ -1,6 +1,7 @@ # Agent Note: `list_agents` uses `ready` for resumable children Status: implemented +Archived: 2026-09-04 [English](2026-08-06-list-agents-residency-vocabulary.md) | 中文 diff --git a/.agents/notes/archived/bug-fix/2026-08-06-onboarding-step-owned-takeover-chrome.i18n.yaml b/.agents/notes/archived/bug-fix/2026-08-06-onboarding-step-owned-takeover-chrome.i18n.yaml new file mode 100644 index 0000000000..d69760a5d6 --- /dev/null +++ b/.agents/notes/archived/bug-fix/2026-08-06-onboarding-step-owned-takeover-chrome.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/bug-fix/2026-08-06-onboarding-step-owned-takeover-chrome.md +2026-08-06-onboarding-step-owned-takeover-chrome.md: f573f72adee26833432f2429be45eb482e038f5e +2026-08-06-onboarding-step-owned-takeover-chrome.zh.md: 14af4505eaaf2f952f8fdbace049f9b4dffcb636 diff --git a/.agents/notes/implemented/bug-fix/2026-08-06-onboarding-step-owned-takeover-chrome.md b/.agents/notes/archived/bug-fix/2026-08-06-onboarding-step-owned-takeover-chrome.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-06-onboarding-step-owned-takeover-chrome.md rename to .agents/notes/archived/bug-fix/2026-08-06-onboarding-step-owned-takeover-chrome.md index 80d2dbbb94..f573f72ade 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-06-onboarding-step-owned-takeover-chrome.md +++ b/.agents/notes/archived/bug-fix/2026-08-06-onboarding-step-owned-takeover-chrome.md @@ -1,6 +1,7 @@ # Agent Note: onboarding takeover chrome moves into the step Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-06-onboarding-step-owned-takeover-chrome.zh.md) diff --git a/.agents/notes/implemented/bug-fix/2026-08-06-onboarding-step-owned-takeover-chrome.zh.md b/.agents/notes/archived/bug-fix/2026-08-06-onboarding-step-owned-takeover-chrome.zh.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-06-onboarding-step-owned-takeover-chrome.zh.md rename to .agents/notes/archived/bug-fix/2026-08-06-onboarding-step-owned-takeover-chrome.zh.md index 6b930d805d..14af4505ea 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-06-onboarding-step-owned-takeover-chrome.zh.md +++ b/.agents/notes/archived/bug-fix/2026-08-06-onboarding-step-owned-takeover-chrome.zh.md @@ -1,6 +1,7 @@ # Agent Note: 首次使用引导的接管界面框架移入步骤自身 Status: implemented +Archived: 2026-09-04 [English](2026-08-06-onboarding-step-owned-takeover-chrome.md) | 中文 diff --git a/.agents/notes/archived/bug-fix/2026-08-06-provider-credential-lifecycle.i18n.yaml b/.agents/notes/archived/bug-fix/2026-08-06-provider-credential-lifecycle.i18n.yaml new file mode 100644 index 0000000000..32417cb21b --- /dev/null +++ b/.agents/notes/archived/bug-fix/2026-08-06-provider-credential-lifecycle.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/bug-fix/2026-08-06-provider-credential-lifecycle.md +2026-08-06-provider-credential-lifecycle.md: dfb1f975faaabf02cf6b17fc53728c42f04c5d1f +2026-08-06-provider-credential-lifecycle.zh.md: 9166a914b27236a33d3e6677ecf21a333a852f2c diff --git a/.agents/notes/implemented/bug-fix/2026-08-06-provider-credential-lifecycle.md b/.agents/notes/archived/bug-fix/2026-08-06-provider-credential-lifecycle.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-06-provider-credential-lifecycle.md rename to .agents/notes/archived/bug-fix/2026-08-06-provider-credential-lifecycle.md index c28788921e..dfb1f975fa 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-06-provider-credential-lifecycle.md +++ b/.agents/notes/archived/bug-fix/2026-08-06-provider-credential-lifecycle.md @@ -1,6 +1,7 @@ # Agent Note: Recoverable provider credential lifecycle Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-06-provider-credential-lifecycle.zh.md) diff --git a/.agents/notes/implemented/bug-fix/2026-08-06-provider-credential-lifecycle.zh.md b/.agents/notes/archived/bug-fix/2026-08-06-provider-credential-lifecycle.zh.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-06-provider-credential-lifecycle.zh.md rename to .agents/notes/archived/bug-fix/2026-08-06-provider-credential-lifecycle.zh.md index 9b1c665e0b..9166a914b2 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-06-provider-credential-lifecycle.zh.md +++ b/.agents/notes/archived/bug-fix/2026-08-06-provider-credential-lifecycle.zh.md @@ -1,6 +1,7 @@ # Agent Note: 可恢复的提供方凭据生命周期 Status: implemented +Archived: 2026-09-04 [English](2026-08-06-provider-credential-lifecycle.md) | 中文 diff --git a/.agents/notes/implemented/bug-fix/2026-08-06-reader-scroll-attribution-observed-top-ledger.i18n.yaml b/.agents/notes/archived/bug-fix/2026-08-06-reader-scroll-attribution-observed-top-ledger.i18n.yaml similarity index 51% rename from .agents/notes/implemented/bug-fix/2026-08-06-reader-scroll-attribution-observed-top-ledger.i18n.yaml rename to .agents/notes/archived/bug-fix/2026-08-06-reader-scroll-attribution-observed-top-ledger.i18n.yaml index 841f1c8442..db360d9f7e 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-06-reader-scroll-attribution-observed-top-ledger.i18n.yaml +++ b/.agents/notes/archived/bug-fix/2026-08-06-reader-scroll-attribution-observed-top-ledger.i18n.yaml @@ -1,6 +1,6 @@ # Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/bug-fix/2026-08-06-reader-scroll-attribution-observed-top-ledger.md -2026-08-06-reader-scroll-attribution-observed-top-ledger.md: b55bbc39f6e1f24bb7751b7743da23736abbd06b -2026-08-06-reader-scroll-attribution-observed-top-ledger.zh.md: e38ead6c9b80e41b37556172bd6c1f411858b6ed +# pnpm run verify-translation-pairing --write .agents/notes/archived/bug-fix/2026-08-06-reader-scroll-attribution-observed-top-ledger.md +2026-08-06-reader-scroll-attribution-observed-top-ledger.md: 8021eecfd07e31dde16672da45cf02b0fe5c44a6 +2026-08-06-reader-scroll-attribution-observed-top-ledger.zh.md: f19190f4f74c37e96967475d0e8fcbac2225a426 diff --git a/.agents/notes/implemented/bug-fix/2026-08-06-reader-scroll-attribution-observed-top-ledger.md b/.agents/notes/archived/bug-fix/2026-08-06-reader-scroll-attribution-observed-top-ledger.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-06-reader-scroll-attribution-observed-top-ledger.md rename to .agents/notes/archived/bug-fix/2026-08-06-reader-scroll-attribution-observed-top-ledger.md index b55bbc39f6..8021eecfd0 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-06-reader-scroll-attribution-observed-top-ledger.md +++ b/.agents/notes/archived/bug-fix/2026-08-06-reader-scroll-attribution-observed-top-ledger.md @@ -1,6 +1,7 @@ # Agent Note: Reader scroll attribution through the observed-top ledger Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-06-reader-scroll-attribution-observed-top-ledger.zh.md) diff --git a/.agents/notes/implemented/bug-fix/2026-08-06-reader-scroll-attribution-observed-top-ledger.zh.md b/.agents/notes/archived/bug-fix/2026-08-06-reader-scroll-attribution-observed-top-ledger.zh.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-06-reader-scroll-attribution-observed-top-ledger.zh.md rename to .agents/notes/archived/bug-fix/2026-08-06-reader-scroll-attribution-observed-top-ledger.zh.md index e38ead6c9b..f19190f4f7 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-06-reader-scroll-attribution-observed-top-ledger.zh.md +++ b/.agents/notes/archived/bug-fix/2026-08-06-reader-scroll-attribution-observed-top-ledger.zh.md @@ -1,6 +1,7 @@ # Agent Note: 经由 observed-top ledger 的读者滚动归因 Status: implemented +Archived: 2026-09-04 [English](2026-08-06-reader-scroll-attribution-observed-top-ledger.md) | 中文 diff --git a/.agents/notes/archived/bug-fix/2026-08-06-token-surface-unpriced-replace-compatibility.i18n.yaml b/.agents/notes/archived/bug-fix/2026-08-06-token-surface-unpriced-replace-compatibility.i18n.yaml new file mode 100644 index 0000000000..4e6b1ba0f2 --- /dev/null +++ b/.agents/notes/archived/bug-fix/2026-08-06-token-surface-unpriced-replace-compatibility.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/bug-fix/2026-08-06-token-surface-unpriced-replace-compatibility.md +2026-08-06-token-surface-unpriced-replace-compatibility.md: 9522758c6d9b6cfc68507b5660f61f7b78bde340 +2026-08-06-token-surface-unpriced-replace-compatibility.zh.md: 94d7edb0d4650e55747f5d8d0ce624b1a1a0b030 diff --git a/.agents/notes/implemented/bug-fix/2026-08-06-token-surface-unpriced-replace-compatibility.md b/.agents/notes/archived/bug-fix/2026-08-06-token-surface-unpriced-replace-compatibility.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-06-token-surface-unpriced-replace-compatibility.md rename to .agents/notes/archived/bug-fix/2026-08-06-token-surface-unpriced-replace-compatibility.md index a271d3697c..9522758c6d 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-06-token-surface-unpriced-replace-compatibility.md +++ b/.agents/notes/archived/bug-fix/2026-08-06-token-surface-unpriced-replace-compatibility.md @@ -1,6 +1,7 @@ # Agent Note: unpriced surface replacements fold neutrally Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-06-token-surface-unpriced-replace-compatibility.zh.md) diff --git a/.agents/notes/implemented/bug-fix/2026-08-06-token-surface-unpriced-replace-compatibility.zh.md b/.agents/notes/archived/bug-fix/2026-08-06-token-surface-unpriced-replace-compatibility.zh.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-06-token-surface-unpriced-replace-compatibility.zh.md rename to .agents/notes/archived/bug-fix/2026-08-06-token-surface-unpriced-replace-compatibility.zh.md index 21145723de..94d7edb0d4 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-06-token-surface-unpriced-replace-compatibility.zh.md +++ b/.agents/notes/archived/bug-fix/2026-08-06-token-surface-unpriced-replace-compatibility.zh.md @@ -1,6 +1,7 @@ # Agent Note: 未计价的表层替换以中性方式折叠 Status: implemented +Archived: 2026-09-04 [English](2026-08-06-token-surface-unpriced-replace-compatibility.md) | 中文 diff --git a/.agents/notes/archived/bug-fix/2026-08-09-broken-preset-roster-rows.i18n.yaml b/.agents/notes/archived/bug-fix/2026-08-09-broken-preset-roster-rows.i18n.yaml new file mode 100644 index 0000000000..4bdc7ff8cc --- /dev/null +++ b/.agents/notes/archived/bug-fix/2026-08-09-broken-preset-roster-rows.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/bug-fix/2026-08-09-broken-preset-roster-rows.md +2026-08-09-broken-preset-roster-rows.md: ba69a5106ae37a1aabc52cd52f70d5d09dfcab0b +2026-08-09-broken-preset-roster-rows.zh.md: 48b73437b8f54a0cb75eaebbfddc3e5a1020a3c0 diff --git a/.agents/notes/implemented/bug-fix/2026-08-09-broken-preset-roster-rows.md b/.agents/notes/archived/bug-fix/2026-08-09-broken-preset-roster-rows.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-09-broken-preset-roster-rows.md rename to .agents/notes/archived/bug-fix/2026-08-09-broken-preset-roster-rows.md index 4ae92f0b12..ba69a5106a 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-09-broken-preset-roster-rows.md +++ b/.agents/notes/archived/bug-fix/2026-08-09-broken-preset-roster-rows.md @@ -1,6 +1,7 @@ # Agent Note: Broken presets are roster rows, not gaps Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-09-broken-preset-roster-rows.zh.md) diff --git a/.agents/notes/implemented/bug-fix/2026-08-09-broken-preset-roster-rows.zh.md b/.agents/notes/archived/bug-fix/2026-08-09-broken-preset-roster-rows.zh.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-09-broken-preset-roster-rows.zh.md rename to .agents/notes/archived/bug-fix/2026-08-09-broken-preset-roster-rows.zh.md index 60d1ff533e..48b73437b8 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-09-broken-preset-roster-rows.zh.md +++ b/.agents/notes/archived/bug-fix/2026-08-09-broken-preset-roster-rows.zh.md @@ -1,6 +1,7 @@ # Agent Note: 损坏的 preset 是名单行,不是空缺 Status: implemented +Archived: 2026-09-04 [English](2026-08-09-broken-preset-roster-rows.md) | 中文 diff --git a/.agents/notes/archived/bug-fix/2026-08-09-filesystem-absence-observation.i18n.yaml b/.agents/notes/archived/bug-fix/2026-08-09-filesystem-absence-observation.i18n.yaml new file mode 100644 index 0000000000..310a789b50 --- /dev/null +++ b/.agents/notes/archived/bug-fix/2026-08-09-filesystem-absence-observation.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/bug-fix/2026-08-09-filesystem-absence-observation.md +2026-08-09-filesystem-absence-observation.md: 6fb2ec19f00d045c4642957a5fb448a0ba4d0024 +2026-08-09-filesystem-absence-observation.zh.md: 3a0f2f481cc8fd277467e2883dac6225c07dd638 diff --git a/.agents/notes/implemented/bug-fix/2026-08-09-filesystem-absence-observation.md b/.agents/notes/archived/bug-fix/2026-08-09-filesystem-absence-observation.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-09-filesystem-absence-observation.md rename to .agents/notes/archived/bug-fix/2026-08-09-filesystem-absence-observation.md index 40338c4806..6fb2ec19f0 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-09-filesystem-absence-observation.md +++ b/.agents/notes/archived/bug-fix/2026-08-09-filesystem-absence-observation.md @@ -1,6 +1,7 @@ # Agent Note: Filesystem absence is an observation and guarded creation never replaces Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-09-filesystem-absence-observation.zh.md) diff --git a/.agents/notes/implemented/bug-fix/2026-08-09-filesystem-absence-observation.zh.md b/.agents/notes/archived/bug-fix/2026-08-09-filesystem-absence-observation.zh.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-09-filesystem-absence-observation.zh.md rename to .agents/notes/archived/bug-fix/2026-08-09-filesystem-absence-observation.zh.md index 4544424800..3a0f2f481c 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-09-filesystem-absence-observation.zh.md +++ b/.agents/notes/archived/bug-fix/2026-08-09-filesystem-absence-observation.zh.md @@ -1,6 +1,7 @@ # Agent Note: 文件系统中的缺失是一种观测,带防护的创建绝不执行替换 Status: implemented +Archived: 2026-09-04 [English](2026-08-09-filesystem-absence-observation.md) | 中文 diff --git a/.agents/notes/archived/bug-fix/2026-08-10-minimal-preset-owns-rl-composition.i18n.yaml b/.agents/notes/archived/bug-fix/2026-08-10-minimal-preset-owns-rl-composition.i18n.yaml new file mode 100644 index 0000000000..f50fa9ade4 --- /dev/null +++ b/.agents/notes/archived/bug-fix/2026-08-10-minimal-preset-owns-rl-composition.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/bug-fix/2026-08-10-minimal-preset-owns-rl-composition.md +2026-08-10-minimal-preset-owns-rl-composition.md: fd901f37795efdf8df8df097e186d22ac9c69700 +2026-08-10-minimal-preset-owns-rl-composition.zh.md: 7e725428983ce7491869589f4e85d5aca507d22f diff --git a/.agents/notes/implemented/bug-fix/2026-08-10-minimal-preset-owns-rl-composition.md b/.agents/notes/archived/bug-fix/2026-08-10-minimal-preset-owns-rl-composition.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-10-minimal-preset-owns-rl-composition.md rename to .agents/notes/archived/bug-fix/2026-08-10-minimal-preset-owns-rl-composition.md index 4c296ed4af..fd901f3779 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-10-minimal-preset-owns-rl-composition.md +++ b/.agents/notes/archived/bug-fix/2026-08-10-minimal-preset-owns-rl-composition.md @@ -1,6 +1,7 @@ # Agent Note: The minimal preset owns the complete RL agent composition Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-10-minimal-preset-owns-rl-composition.zh.md) diff --git a/.agents/notes/implemented/bug-fix/2026-08-10-minimal-preset-owns-rl-composition.zh.md b/.agents/notes/archived/bug-fix/2026-08-10-minimal-preset-owns-rl-composition.zh.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-10-minimal-preset-owns-rl-composition.zh.md rename to .agents/notes/archived/bug-fix/2026-08-10-minimal-preset-owns-rl-composition.zh.md index 545f0a32fe..7e72542898 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-10-minimal-preset-owns-rl-composition.zh.md +++ b/.agents/notes/archived/bug-fix/2026-08-10-minimal-preset-owns-rl-composition.zh.md @@ -1,6 +1,7 @@ # Agent Note: minimal preset 拥有完整的 RL agent 组合 Status: implemented +Archived: 2026-09-04 [English](2026-08-10-minimal-preset-owns-rl-composition.md) | 中文 diff --git a/.agents/notes/archived/bug-fix/2026-08-10-pre-plugin-theme-bootstrap.i18n.yaml b/.agents/notes/archived/bug-fix/2026-08-10-pre-plugin-theme-bootstrap.i18n.yaml new file mode 100644 index 0000000000..773eb19b36 --- /dev/null +++ b/.agents/notes/archived/bug-fix/2026-08-10-pre-plugin-theme-bootstrap.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/bug-fix/2026-08-10-pre-plugin-theme-bootstrap.md +2026-08-10-pre-plugin-theme-bootstrap.md: f3b09ed733c81852998276f191319a2662ff7e6c +2026-08-10-pre-plugin-theme-bootstrap.zh.md: 76ae6812d154609cd945a2b101af5680be07c693 diff --git a/.agents/notes/implemented/bug-fix/2026-08-10-pre-plugin-theme-bootstrap.md b/.agents/notes/archived/bug-fix/2026-08-10-pre-plugin-theme-bootstrap.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-10-pre-plugin-theme-bootstrap.md rename to .agents/notes/archived/bug-fix/2026-08-10-pre-plugin-theme-bootstrap.md index cf3b2d5b6c..f3b09ed733 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-10-pre-plugin-theme-bootstrap.md +++ b/.agents/notes/archived/bug-fix/2026-08-10-pre-plugin-theme-bootstrap.md @@ -1,6 +1,7 @@ # Agent Note: Pre-Plugin Theme Bootstrap Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-10-pre-plugin-theme-bootstrap.zh.md) diff --git a/.agents/notes/implemented/bug-fix/2026-08-10-pre-plugin-theme-bootstrap.zh.md b/.agents/notes/archived/bug-fix/2026-08-10-pre-plugin-theme-bootstrap.zh.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-10-pre-plugin-theme-bootstrap.zh.md rename to .agents/notes/archived/bug-fix/2026-08-10-pre-plugin-theme-bootstrap.zh.md index fcf4c4daac..76ae6812d1 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-10-pre-plugin-theme-bootstrap.zh.md +++ b/.agents/notes/archived/bug-fix/2026-08-10-pre-plugin-theme-bootstrap.zh.md @@ -1,6 +1,7 @@ # Agent Note: 插件激活前的主题引导 Status: implemented +Archived: 2026-09-04 [English](2026-08-10-pre-plugin-theme-bootstrap.md) | 中文 diff --git a/.agents/notes/archived/bug-fix/2026-08-10-session-row-identity-covers-the-preset.i18n.yaml b/.agents/notes/archived/bug-fix/2026-08-10-session-row-identity-covers-the-preset.i18n.yaml new file mode 100644 index 0000000000..91573d8997 --- /dev/null +++ b/.agents/notes/archived/bug-fix/2026-08-10-session-row-identity-covers-the-preset.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/bug-fix/2026-08-10-session-row-identity-covers-the-preset.md +2026-08-10-session-row-identity-covers-the-preset.md: 7d9fc5e5b200cc0ea0592a3ecaedfe6a14becd5a +2026-08-10-session-row-identity-covers-the-preset.zh.md: 4e707f8b25fcc38e2cf8cd5eb76c5c5e51f88a2e diff --git a/.agents/notes/implemented/bug-fix/2026-08-10-session-row-identity-covers-the-preset.md b/.agents/notes/archived/bug-fix/2026-08-10-session-row-identity-covers-the-preset.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-10-session-row-identity-covers-the-preset.md rename to .agents/notes/archived/bug-fix/2026-08-10-session-row-identity-covers-the-preset.md index 7a89dcb4e4..7d9fc5e5b2 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-10-session-row-identity-covers-the-preset.md +++ b/.agents/notes/archived/bug-fix/2026-08-10-session-row-identity-covers-the-preset.md @@ -1,6 +1,7 @@ # Agent Note: The session-row identity guard covers the preset Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-10-session-row-identity-covers-the-preset.zh.md) diff --git a/.agents/notes/implemented/bug-fix/2026-08-10-session-row-identity-covers-the-preset.zh.md b/.agents/notes/archived/bug-fix/2026-08-10-session-row-identity-covers-the-preset.zh.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-10-session-row-identity-covers-the-preset.zh.md rename to .agents/notes/archived/bug-fix/2026-08-10-session-row-identity-covers-the-preset.zh.md index 2143134eb2..4e707f8b25 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-10-session-row-identity-covers-the-preset.zh.md +++ b/.agents/notes/archived/bug-fix/2026-08-10-session-row-identity-covers-the-preset.zh.md @@ -1,6 +1,7 @@ # Agent Note: 会话行的标识判定纳入 preset Status: implemented +Archived: 2026-09-04 [English](2026-08-10-session-row-identity-covers-the-preset.md) | 中文 diff --git a/.agents/notes/archived/bug-fix/2026-08-10-slash-catalog-follows-preset-switch.i18n.yaml b/.agents/notes/archived/bug-fix/2026-08-10-slash-catalog-follows-preset-switch.i18n.yaml new file mode 100644 index 0000000000..c8f95b573f --- /dev/null +++ b/.agents/notes/archived/bug-fix/2026-08-10-slash-catalog-follows-preset-switch.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/bug-fix/2026-08-10-slash-catalog-follows-preset-switch.md +2026-08-10-slash-catalog-follows-preset-switch.md: e5e4a670e3b8e0431e31cda46bc1e246fc9197ee +2026-08-10-slash-catalog-follows-preset-switch.zh.md: f2d4b10a8f1698840627cdd9edbbd7e296e49978 diff --git a/.agents/notes/implemented/bug-fix/2026-08-10-slash-catalog-follows-preset-switch.md b/.agents/notes/archived/bug-fix/2026-08-10-slash-catalog-follows-preset-switch.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-10-slash-catalog-follows-preset-switch.md rename to .agents/notes/archived/bug-fix/2026-08-10-slash-catalog-follows-preset-switch.md index 4015b2659f..e5e4a670e3 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-10-slash-catalog-follows-preset-switch.md +++ b/.agents/notes/archived/bug-fix/2026-08-10-slash-catalog-follows-preset-switch.md @@ -1,6 +1,7 @@ # Agent Note: The slash catalog follows a blank session's preset switch Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-10-slash-catalog-follows-preset-switch.zh.md) diff --git a/.agents/notes/implemented/bug-fix/2026-08-10-slash-catalog-follows-preset-switch.zh.md b/.agents/notes/archived/bug-fix/2026-08-10-slash-catalog-follows-preset-switch.zh.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-10-slash-catalog-follows-preset-switch.zh.md rename to .agents/notes/archived/bug-fix/2026-08-10-slash-catalog-follows-preset-switch.zh.md index b77564f00b..f2d4b10a8f 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-10-slash-catalog-follows-preset-switch.zh.md +++ b/.agents/notes/archived/bug-fix/2026-08-10-slash-catalog-follows-preset-switch.zh.md @@ -1,6 +1,7 @@ # Agent Note: 斜杠目录跟随空会话的 preset 切换 Status: implemented +Archived: 2026-09-04 [English](2026-08-10-slash-catalog-follows-preset-switch.md) | 中文 diff --git a/.agents/notes/archived/bug-fix/2026-08-10-subagent-empty-terminal-message-output.i18n.yaml b/.agents/notes/archived/bug-fix/2026-08-10-subagent-empty-terminal-message-output.i18n.yaml new file mode 100644 index 0000000000..65e74832e6 --- /dev/null +++ b/.agents/notes/archived/bug-fix/2026-08-10-subagent-empty-terminal-message-output.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/bug-fix/2026-08-10-subagent-empty-terminal-message-output.md +2026-08-10-subagent-empty-terminal-message-output.md: 83e4fa58667b7cf525d4afab0d9c4469e2d9523a +2026-08-10-subagent-empty-terminal-message-output.zh.md: a413632187027f9d59a796ce7511b64d70b2bc2a diff --git a/.agents/notes/implemented/bug-fix/2026-08-10-subagent-empty-terminal-message-output.md b/.agents/notes/archived/bug-fix/2026-08-10-subagent-empty-terminal-message-output.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-10-subagent-empty-terminal-message-output.md rename to .agents/notes/archived/bug-fix/2026-08-10-subagent-empty-terminal-message-output.md index 6ecb0ef254..83e4fa5866 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-10-subagent-empty-terminal-message-output.md +++ b/.agents/notes/archived/bug-fix/2026-08-10-subagent-empty-terminal-message-output.md @@ -1,6 +1,7 @@ # Agent Note: One selection rule keeps subagent output past an empty terminal message Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-10-subagent-empty-terminal-message-output.zh.md) diff --git a/.agents/notes/implemented/bug-fix/2026-08-10-subagent-empty-terminal-message-output.zh.md b/.agents/notes/archived/bug-fix/2026-08-10-subagent-empty-terminal-message-output.zh.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-10-subagent-empty-terminal-message-output.zh.md rename to .agents/notes/archived/bug-fix/2026-08-10-subagent-empty-terminal-message-output.zh.md index bcc6cad60f..a413632187 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-10-subagent-empty-terminal-message-output.zh.md +++ b/.agents/notes/archived/bug-fix/2026-08-10-subagent-empty-terminal-message-output.zh.md @@ -1,6 +1,7 @@ # Agent Note: 用同一条选取规则在空终止消息后保留子代理输出 Status: implemented +Archived: 2026-09-04 [English](2026-08-10-subagent-empty-terminal-message-output.md) | 中文 diff --git a/.agents/notes/archived/bug-fix/2026-08-11-bounded-background-job-admission.i18n.yaml b/.agents/notes/archived/bug-fix/2026-08-11-bounded-background-job-admission.i18n.yaml new file mode 100644 index 0000000000..9caf8ef7c0 --- /dev/null +++ b/.agents/notes/archived/bug-fix/2026-08-11-bounded-background-job-admission.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/bug-fix/2026-08-11-bounded-background-job-admission.md +2026-08-11-bounded-background-job-admission.md: 8eee8834523910a9f345cd9f11e325f1ca8d65ce +2026-08-11-bounded-background-job-admission.zh.md: 1c08bbfc3c9ae4df81f1961dc6eb34b76e2ddf15 diff --git a/.agents/notes/implemented/bug-fix/2026-08-11-bounded-background-job-admission.md b/.agents/notes/archived/bug-fix/2026-08-11-bounded-background-job-admission.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-11-bounded-background-job-admission.md rename to .agents/notes/archived/bug-fix/2026-08-11-bounded-background-job-admission.md index c9c27ef6e3..8eee883452 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-11-bounded-background-job-admission.md +++ b/.agents/notes/archived/bug-fix/2026-08-11-bounded-background-job-admission.md @@ -1,6 +1,7 @@ # Agent Note: Bounded background job admission Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-11-bounded-background-job-admission.zh.md) diff --git a/.agents/notes/implemented/bug-fix/2026-08-11-bounded-background-job-admission.zh.md b/.agents/notes/archived/bug-fix/2026-08-11-bounded-background-job-admission.zh.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-11-bounded-background-job-admission.zh.md rename to .agents/notes/archived/bug-fix/2026-08-11-bounded-background-job-admission.zh.md index cdeb80a649..1c08bbfc3c 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-11-bounded-background-job-admission.zh.md +++ b/.agents/notes/archived/bug-fix/2026-08-11-bounded-background-job-admission.zh.md @@ -1,6 +1,7 @@ # Agent Note: 有界后台任务准入 Status: implemented +Archived: 2026-09-04 [English](2026-08-11-bounded-background-job-admission.md) | 中文 diff --git a/.agents/notes/archived/bug-fix/2026-08-11-owned-run-finish-reason.i18n.yaml b/.agents/notes/archived/bug-fix/2026-08-11-owned-run-finish-reason.i18n.yaml new file mode 100644 index 0000000000..59c832e99e --- /dev/null +++ b/.agents/notes/archived/bug-fix/2026-08-11-owned-run-finish-reason.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/bug-fix/2026-08-11-owned-run-finish-reason.md +2026-08-11-owned-run-finish-reason.md: cfa1ec02b65f8eca7720ae242a030122833dc66f +2026-08-11-owned-run-finish-reason.zh.md: cc169caa1e3b1944a0fa9bff67f4e81b840c3ee2 diff --git a/.agents/notes/implemented/bug-fix/2026-08-11-owned-run-finish-reason.md b/.agents/notes/archived/bug-fix/2026-08-11-owned-run-finish-reason.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-11-owned-run-finish-reason.md rename to .agents/notes/archived/bug-fix/2026-08-11-owned-run-finish-reason.md index 87a158c7fe..cfa1ec02b6 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-11-owned-run-finish-reason.md +++ b/.agents/notes/archived/bug-fix/2026-08-11-owned-run-finish-reason.md @@ -1,6 +1,7 @@ # Agent Note: Owned-run finish reason reporting Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-11-owned-run-finish-reason.zh.md) diff --git a/.agents/notes/implemented/bug-fix/2026-08-11-owned-run-finish-reason.zh.md b/.agents/notes/archived/bug-fix/2026-08-11-owned-run-finish-reason.zh.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-11-owned-run-finish-reason.zh.md rename to .agents/notes/archived/bug-fix/2026-08-11-owned-run-finish-reason.zh.md index 926a0d14c4..cc169caa1e 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-11-owned-run-finish-reason.zh.md +++ b/.agents/notes/archived/bug-fix/2026-08-11-owned-run-finish-reason.zh.md @@ -1,6 +1,7 @@ # Agent Note: 自有运行的结束原因报告 Status: implemented +Archived: 2026-09-04 [English](2026-08-11-owned-run-finish-reason.md) | 中文 diff --git a/.agents/notes/implemented/bug-fix/2026-08-11-preset-authoring-agent-validates-its-own-composition.i18n.yaml b/.agents/notes/archived/bug-fix/2026-08-11-preset-authoring-agent-validates-its-own-composition.i18n.yaml similarity index 60% rename from .agents/notes/implemented/bug-fix/2026-08-11-preset-authoring-agent-validates-its-own-composition.i18n.yaml rename to .agents/notes/archived/bug-fix/2026-08-11-preset-authoring-agent-validates-its-own-composition.i18n.yaml index 9b6f88cebc..ed3ef0ea74 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-11-preset-authoring-agent-validates-its-own-composition.i18n.yaml +++ b/.agents/notes/archived/bug-fix/2026-08-11-preset-authoring-agent-validates-its-own-composition.i18n.yaml @@ -1,6 +1,6 @@ # Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/bug-fix/2026-08-11-preset-authoring-agent-validates-its-own-composition.md -2026-08-11-preset-authoring-agent-validates-its-own-composition.md: 8fefb3e0fc95ac4d1d2b7c2035f312e25cf107a0 -2026-08-11-preset-authoring-agent-validates-its-own-composition.zh.md: b8af8afe12d2731645c7a4830996b5c10bb50582 +# pnpm run verify-translation-pairing --write .agents/notes/archived/bug-fix/2026-08-11-preset-authoring-agent-validates-its-own-composition.md +2026-08-11-preset-authoring-agent-validates-its-own-composition.md: 0246fb72c067febb8d7f779c82b3f12ac15ad068 +2026-08-11-preset-authoring-agent-validates-its-own-composition.zh.md: 2e47aa49247941179a8e184bb0b9d9c2ab09f9f5 diff --git a/.agents/notes/implemented/bug-fix/2026-08-11-preset-authoring-agent-validates-its-own-composition.md b/.agents/notes/archived/bug-fix/2026-08-11-preset-authoring-agent-validates-its-own-composition.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-11-preset-authoring-agent-validates-its-own-composition.md rename to .agents/notes/archived/bug-fix/2026-08-11-preset-authoring-agent-validates-its-own-composition.md index 8fefb3e0fc..0246fb72c0 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-11-preset-authoring-agent-validates-its-own-composition.md +++ b/.agents/notes/archived/bug-fix/2026-08-11-preset-authoring-agent-validates-its-own-composition.md @@ -1,6 +1,7 @@ # Agent Note: The preset-authoring agent mount-validates its own composition Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-11-preset-authoring-agent-validates-its-own-composition.zh.md) diff --git a/.agents/notes/implemented/bug-fix/2026-08-11-preset-authoring-agent-validates-its-own-composition.zh.md b/.agents/notes/archived/bug-fix/2026-08-11-preset-authoring-agent-validates-its-own-composition.zh.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-11-preset-authoring-agent-validates-its-own-composition.zh.md rename to .agents/notes/archived/bug-fix/2026-08-11-preset-authoring-agent-validates-its-own-composition.zh.md index b8af8afe12..2e47aa4924 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-11-preset-authoring-agent-validates-its-own-composition.zh.md +++ b/.agents/notes/archived/bug-fix/2026-08-11-preset-authoring-agent-validates-its-own-composition.zh.md @@ -1,6 +1,7 @@ # Agent Note: 创作 preset 的 agent 自行挂载校验其组装 Status: implemented +Archived: 2026-09-04 [English](2026-08-11-preset-authoring-agent-validates-its-own-composition.md) | 中文 diff --git a/.agents/notes/archived/bug-fix/2026-08-11-synchronous-subprocess-exit-cleanup.i18n.yaml b/.agents/notes/archived/bug-fix/2026-08-11-synchronous-subprocess-exit-cleanup.i18n.yaml new file mode 100644 index 0000000000..1a71eca53f --- /dev/null +++ b/.agents/notes/archived/bug-fix/2026-08-11-synchronous-subprocess-exit-cleanup.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/bug-fix/2026-08-11-synchronous-subprocess-exit-cleanup.md +2026-08-11-synchronous-subprocess-exit-cleanup.md: b312ec63833d4550fb2c51cca53484e3005308d6 +2026-08-11-synchronous-subprocess-exit-cleanup.zh.md: 2881bee9e6171813cda45ff1b199f798547730dc diff --git a/.agents/notes/implemented/bug-fix/2026-08-11-synchronous-subprocess-exit-cleanup.md b/.agents/notes/archived/bug-fix/2026-08-11-synchronous-subprocess-exit-cleanup.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-11-synchronous-subprocess-exit-cleanup.md rename to .agents/notes/archived/bug-fix/2026-08-11-synchronous-subprocess-exit-cleanup.md index 70b2a95dda..b312ec6383 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-11-synchronous-subprocess-exit-cleanup.md +++ b/.agents/notes/archived/bug-fix/2026-08-11-synchronous-subprocess-exit-cleanup.md @@ -1,6 +1,7 @@ # Agent Note: Synchronous cleanup of managed subprocesses on host exit Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-11-synchronous-subprocess-exit-cleanup.zh.md) diff --git a/.agents/notes/implemented/bug-fix/2026-08-11-synchronous-subprocess-exit-cleanup.zh.md b/.agents/notes/archived/bug-fix/2026-08-11-synchronous-subprocess-exit-cleanup.zh.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-11-synchronous-subprocess-exit-cleanup.zh.md rename to .agents/notes/archived/bug-fix/2026-08-11-synchronous-subprocess-exit-cleanup.zh.md index 3325c81c09..2881bee9e6 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-11-synchronous-subprocess-exit-cleanup.zh.md +++ b/.agents/notes/archived/bug-fix/2026-08-11-synchronous-subprocess-exit-cleanup.zh.md @@ -1,6 +1,7 @@ # Agent Note: 宿主退出时同步清理受管子进程 Status: implemented +Archived: 2026-09-04 [English](2026-08-11-synchronous-subprocess-exit-cleanup.md) | 中文 diff --git a/.agents/notes/archived/bug-fix/2026-08-12-composer-overlay-seat-width-compensation.i18n.yaml b/.agents/notes/archived/bug-fix/2026-08-12-composer-overlay-seat-width-compensation.i18n.yaml new file mode 100644 index 0000000000..3f0d29e250 --- /dev/null +++ b/.agents/notes/archived/bug-fix/2026-08-12-composer-overlay-seat-width-compensation.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/bug-fix/2026-08-12-composer-overlay-seat-width-compensation.md +2026-08-12-composer-overlay-seat-width-compensation.md: 6e3406170d3a1c49deb8ffd6dd33dd00ef8d8b1d +2026-08-12-composer-overlay-seat-width-compensation.zh.md: a8707103db77901494f32b879ac20ffb466eedb0 diff --git a/.agents/notes/implemented/bug-fix/2026-08-12-composer-overlay-seat-width-compensation.md b/.agents/notes/archived/bug-fix/2026-08-12-composer-overlay-seat-width-compensation.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-12-composer-overlay-seat-width-compensation.md rename to .agents/notes/archived/bug-fix/2026-08-12-composer-overlay-seat-width-compensation.md index 35f1e25c28..6e3406170d 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-12-composer-overlay-seat-width-compensation.md +++ b/.agents/notes/archived/bug-fix/2026-08-12-composer-overlay-seat-width-compensation.md @@ -1,6 +1,7 @@ # Agent Note: The overlay composer seat compensates for the bar instead of reserving a gutter Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-12-composer-overlay-seat-width-compensation.zh.md) diff --git a/.agents/notes/implemented/bug-fix/2026-08-12-composer-overlay-seat-width-compensation.zh.md b/.agents/notes/archived/bug-fix/2026-08-12-composer-overlay-seat-width-compensation.zh.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-12-composer-overlay-seat-width-compensation.zh.md rename to .agents/notes/archived/bug-fix/2026-08-12-composer-overlay-seat-width-compensation.zh.md index 7979f25f2f..a8707103db 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-12-composer-overlay-seat-width-compensation.zh.md +++ b/.agents/notes/archived/bug-fix/2026-08-12-composer-overlay-seat-width-compensation.zh.md @@ -1,6 +1,7 @@ # Agent Note: 覆盖视图的 composer 座位改为补偿滚动条宽度,不再预留滚动条槽 Status: implemented +Archived: 2026-09-04 [English](2026-08-12-composer-overlay-seat-width-compensation.md) | 中文 diff --git a/.agents/notes/archived/bug-fix/2026-08-12-fix-pwsh-terminal-overlay-dup.i18n.yaml b/.agents/notes/archived/bug-fix/2026-08-12-fix-pwsh-terminal-overlay-dup.i18n.yaml new file mode 100644 index 0000000000..c0d8e44363 --- /dev/null +++ b/.agents/notes/archived/bug-fix/2026-08-12-fix-pwsh-terminal-overlay-dup.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/bug-fix/2026-08-12-fix-pwsh-terminal-overlay-dup.md +2026-08-12-fix-pwsh-terminal-overlay-dup.md: 5056f19c46cc732042b19e22405854fa87c89c2e +2026-08-12-fix-pwsh-terminal-overlay-dup.zh.md: dee96818a10b480d97fdc87bf55f0e63af43dc61 diff --git a/.agents/notes/implemented/bug-fix/2026-08-12-fix-pwsh-terminal-overlay-dup.md b/.agents/notes/archived/bug-fix/2026-08-12-fix-pwsh-terminal-overlay-dup.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-12-fix-pwsh-terminal-overlay-dup.md rename to .agents/notes/archived/bug-fix/2026-08-12-fix-pwsh-terminal-overlay-dup.md index 7a214ea093..5056f19c46 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-12-fix-pwsh-terminal-overlay-dup.md +++ b/.agents/notes/archived/bug-fix/2026-08-12-fix-pwsh-terminal-overlay-dup.md @@ -1,6 +1,7 @@ # Agent Note: fix the pwsh terminal overlay duplicate-loader collision Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-12-fix-pwsh-terminal-overlay-dup.zh.md) diff --git a/.agents/notes/implemented/bug-fix/2026-08-12-fix-pwsh-terminal-overlay-dup.zh.md b/.agents/notes/archived/bug-fix/2026-08-12-fix-pwsh-terminal-overlay-dup.zh.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-12-fix-pwsh-terminal-overlay-dup.zh.md rename to .agents/notes/archived/bug-fix/2026-08-12-fix-pwsh-terminal-overlay-dup.zh.md index baf284a801..dee96818a1 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-12-fix-pwsh-terminal-overlay-dup.zh.md +++ b/.agents/notes/archived/bug-fix/2026-08-12-fix-pwsh-terminal-overlay-dup.zh.md @@ -1,6 +1,7 @@ # Agent Note: 修复 pwsh 终端 overlay 的重复 loader 冲突 Status: implemented +Archived: 2026-09-04 [English](2026-08-12-fix-pwsh-terminal-overlay-dup.md) | 中文 diff --git a/.agents/notes/archived/bug-fix/2026-08-12-full-session-turn-step-counts.i18n.yaml b/.agents/notes/archived/bug-fix/2026-08-12-full-session-turn-step-counts.i18n.yaml new file mode 100644 index 0000000000..e83edb5249 --- /dev/null +++ b/.agents/notes/archived/bug-fix/2026-08-12-full-session-turn-step-counts.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/bug-fix/2026-08-12-full-session-turn-step-counts.md +2026-08-12-full-session-turn-step-counts.md: 752c6558ecb530009befe8e3a784ec17da110d22 +2026-08-12-full-session-turn-step-counts.zh.md: d1388e5183312a9a5f5cdfe66e8ad193d6281435 diff --git a/.agents/notes/implemented/bug-fix/2026-08-12-full-session-turn-step-counts.md b/.agents/notes/archived/bug-fix/2026-08-12-full-session-turn-step-counts.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-12-full-session-turn-step-counts.md rename to .agents/notes/archived/bug-fix/2026-08-12-full-session-turn-step-counts.md index ecfa00dc3e..752c6558ec 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-12-full-session-turn-step-counts.md +++ b/.agents/notes/archived/bug-fix/2026-08-12-full-session-turn-step-counts.md @@ -1,6 +1,7 @@ # Agent Note: Full-session stats-strip figures through a sessionStats projection Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-12-full-session-turn-step-counts.zh.md) diff --git a/.agents/notes/implemented/bug-fix/2026-08-12-full-session-turn-step-counts.zh.md b/.agents/notes/archived/bug-fix/2026-08-12-full-session-turn-step-counts.zh.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-12-full-session-turn-step-counts.zh.md rename to .agents/notes/archived/bug-fix/2026-08-12-full-session-turn-step-counts.zh.md index 85e2a26b5a..d1388e5183 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-12-full-session-turn-step-counts.zh.md +++ b/.agents/notes/archived/bug-fix/2026-08-12-full-session-turn-step-counts.zh.md @@ -1,6 +1,7 @@ # Agent Note: 通过 sessionStats 投影提供全会话统计条数字 Status: implemented +Archived: 2026-09-04 [English](2026-08-12-full-session-turn-step-counts.md) | 中文 diff --git a/.agents/notes/archived/bug-fix/2026-08-12-max-tokens-turn-end-notice.i18n.yaml b/.agents/notes/archived/bug-fix/2026-08-12-max-tokens-turn-end-notice.i18n.yaml new file mode 100644 index 0000000000..275781f8b1 --- /dev/null +++ b/.agents/notes/archived/bug-fix/2026-08-12-max-tokens-turn-end-notice.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/bug-fix/2026-08-12-max-tokens-turn-end-notice.md +2026-08-12-max-tokens-turn-end-notice.md: 927c6486079009e7262f53d378177a7c588699de +2026-08-12-max-tokens-turn-end-notice.zh.md: 210ca6b5c3aad1c1c7fa9f85a4b99a43fcc2e7c5 diff --git a/.agents/notes/implemented/bug-fix/2026-08-12-max-tokens-turn-end-notice.md b/.agents/notes/archived/bug-fix/2026-08-12-max-tokens-turn-end-notice.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-12-max-tokens-turn-end-notice.md rename to .agents/notes/archived/bug-fix/2026-08-12-max-tokens-turn-end-notice.md index bdb34d67a6..927c648607 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-12-max-tokens-turn-end-notice.md +++ b/.agents/notes/archived/bug-fix/2026-08-12-max-tokens-turn-end-notice.md @@ -1,6 +1,7 @@ # Agent Note: The chat flow surfaces a max-tokens turn end Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-12-max-tokens-turn-end-notice.zh.md) diff --git a/.agents/notes/implemented/bug-fix/2026-08-12-max-tokens-turn-end-notice.zh.md b/.agents/notes/archived/bug-fix/2026-08-12-max-tokens-turn-end-notice.zh.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-12-max-tokens-turn-end-notice.zh.md rename to .agents/notes/archived/bug-fix/2026-08-12-max-tokens-turn-end-notice.zh.md index 9b9c679972..210ca6b5c3 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-12-max-tokens-turn-end-notice.zh.md +++ b/.agents/notes/archived/bug-fix/2026-08-12-max-tokens-turn-end-notice.zh.md @@ -1,6 +1,7 @@ # Agent Note: 聊天流展示 max-tokens 结束的轮次 Status: implemented +Archived: 2026-09-04 [English](2026-08-12-max-tokens-turn-end-notice.md) | 中文 diff --git a/.agents/notes/archived/bug-fix/2026-08-12-onboarding-reads-every-provider.i18n.yaml b/.agents/notes/archived/bug-fix/2026-08-12-onboarding-reads-every-provider.i18n.yaml new file mode 100644 index 0000000000..85c73ade48 --- /dev/null +++ b/.agents/notes/archived/bug-fix/2026-08-12-onboarding-reads-every-provider.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/bug-fix/2026-08-12-onboarding-reads-every-provider.md +2026-08-12-onboarding-reads-every-provider.md: 866cb40c2cfe5b451024fb7b42cfebea645a7b20 +2026-08-12-onboarding-reads-every-provider.zh.md: 41359739f4037b7c2608c3d44e1ea28f7b06b84c diff --git a/.agents/notes/implemented/bug-fix/2026-08-12-onboarding-reads-every-provider.md b/.agents/notes/archived/bug-fix/2026-08-12-onboarding-reads-every-provider.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-12-onboarding-reads-every-provider.md rename to .agents/notes/archived/bug-fix/2026-08-12-onboarding-reads-every-provider.md index 43895d6bc3..866cb40c2c 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-12-onboarding-reads-every-provider.md +++ b/.agents/notes/archived/bug-fix/2026-08-12-onboarding-reads-every-provider.md @@ -1,6 +1,7 @@ # Agent Note: First-run readiness reads every provider, and the setup card closes Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-12-onboarding-reads-every-provider.zh.md) diff --git a/.agents/notes/implemented/bug-fix/2026-08-12-onboarding-reads-every-provider.zh.md b/.agents/notes/archived/bug-fix/2026-08-12-onboarding-reads-every-provider.zh.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-12-onboarding-reads-every-provider.zh.md rename to .agents/notes/archived/bug-fix/2026-08-12-onboarding-reads-every-provider.zh.md index 67f12dd9e9..41359739f4 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-12-onboarding-reads-every-provider.zh.md +++ b/.agents/notes/archived/bug-fix/2026-08-12-onboarding-reads-every-provider.zh.md @@ -1,6 +1,7 @@ # Agent Note: First-run readiness reads every provider, and the setup card closes Status: implemented +Archived: 2026-09-04 [English](2026-08-12-onboarding-reads-every-provider.md) | 中文 diff --git a/.agents/notes/archived/bug-fix/2026-08-12-resolve-store-pwsh-aliases.i18n.yaml b/.agents/notes/archived/bug-fix/2026-08-12-resolve-store-pwsh-aliases.i18n.yaml new file mode 100644 index 0000000000..b541da0848 --- /dev/null +++ b/.agents/notes/archived/bug-fix/2026-08-12-resolve-store-pwsh-aliases.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/bug-fix/2026-08-12-resolve-store-pwsh-aliases.md +2026-08-12-resolve-store-pwsh-aliases.md: 28426801cb42af78e4ce5abc2e58b7ce2ecdbded +2026-08-12-resolve-store-pwsh-aliases.zh.md: 822c800e435e889cd1840c1a830fa29ff9821b7d diff --git a/.agents/notes/implemented/bug-fix/2026-08-12-resolve-store-pwsh-aliases.md b/.agents/notes/archived/bug-fix/2026-08-12-resolve-store-pwsh-aliases.md similarity index 98% rename from .agents/notes/implemented/bug-fix/2026-08-12-resolve-store-pwsh-aliases.md rename to .agents/notes/archived/bug-fix/2026-08-12-resolve-store-pwsh-aliases.md index 20fe58e15e..28426801cb 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-12-resolve-store-pwsh-aliases.md +++ b/.agents/notes/archived/bug-fix/2026-08-12-resolve-store-pwsh-aliases.md @@ -1,6 +1,7 @@ # Agent Note: Resolve Microsoft Store pwsh aliases Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-12-resolve-store-pwsh-aliases.zh.md) diff --git a/.agents/notes/implemented/bug-fix/2026-08-12-resolve-store-pwsh-aliases.zh.md b/.agents/notes/archived/bug-fix/2026-08-12-resolve-store-pwsh-aliases.zh.md similarity index 98% rename from .agents/notes/implemented/bug-fix/2026-08-12-resolve-store-pwsh-aliases.zh.md rename to .agents/notes/archived/bug-fix/2026-08-12-resolve-store-pwsh-aliases.zh.md index bbfa461612..822c800e43 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-12-resolve-store-pwsh-aliases.zh.md +++ b/.agents/notes/archived/bug-fix/2026-08-12-resolve-store-pwsh-aliases.zh.md @@ -1,6 +1,7 @@ # Agent Note: 解析 Microsoft Store 的 pwsh 别名 Status: implemented +Archived: 2026-09-04 [English](2026-08-12-resolve-store-pwsh-aliases.md) | 中文 diff --git a/.agents/notes/archived/bug-fix/2026-08-12-unlink-fixture-junctions-before-delete.i18n.yaml b/.agents/notes/archived/bug-fix/2026-08-12-unlink-fixture-junctions-before-delete.i18n.yaml new file mode 100644 index 0000000000..ff640bdc75 --- /dev/null +++ b/.agents/notes/archived/bug-fix/2026-08-12-unlink-fixture-junctions-before-delete.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/bug-fix/2026-08-12-unlink-fixture-junctions-before-delete.md +2026-08-12-unlink-fixture-junctions-before-delete.md: 524b6bd0d0ec5be0992a2aaf7fdf07242de7b49f +2026-08-12-unlink-fixture-junctions-before-delete.zh.md: 9f3a76f3ae0429b86bede80709a882fa5e99e550 diff --git a/.agents/notes/implemented/bug-fix/2026-08-12-unlink-fixture-junctions-before-delete.md b/.agents/notes/archived/bug-fix/2026-08-12-unlink-fixture-junctions-before-delete.md similarity index 98% rename from .agents/notes/implemented/bug-fix/2026-08-12-unlink-fixture-junctions-before-delete.md rename to .agents/notes/archived/bug-fix/2026-08-12-unlink-fixture-junctions-before-delete.md index 4514a33d72..524b6bd0d0 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-12-unlink-fixture-junctions-before-delete.md +++ b/.agents/notes/archived/bug-fix/2026-08-12-unlink-fixture-junctions-before-delete.md @@ -1,6 +1,7 @@ # Agent Note: Unlink fixture junctions before recursive deletion Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-12-unlink-fixture-junctions-before-delete.zh.md) diff --git a/.agents/notes/implemented/bug-fix/2026-08-12-unlink-fixture-junctions-before-delete.zh.md b/.agents/notes/archived/bug-fix/2026-08-12-unlink-fixture-junctions-before-delete.zh.md similarity index 98% rename from .agents/notes/implemented/bug-fix/2026-08-12-unlink-fixture-junctions-before-delete.zh.md rename to .agents/notes/archived/bug-fix/2026-08-12-unlink-fixture-junctions-before-delete.zh.md index 3c212c052a..9f3a76f3ae 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-12-unlink-fixture-junctions-before-delete.zh.md +++ b/.agents/notes/archived/bug-fix/2026-08-12-unlink-fixture-junctions-before-delete.zh.md @@ -1,6 +1,7 @@ # Agent Note: 递归删除前先解链 fixture junction Status: implemented +Archived: 2026-09-04 [English](2026-08-12-unlink-fixture-junctions-before-delete.md) | 中文 diff --git a/.agents/notes/archived/bug-fix/2026-08-12-unlink-stale-profile-fallback-links.i18n.yaml b/.agents/notes/archived/bug-fix/2026-08-12-unlink-stale-profile-fallback-links.i18n.yaml new file mode 100644 index 0000000000..150f5108c3 --- /dev/null +++ b/.agents/notes/archived/bug-fix/2026-08-12-unlink-stale-profile-fallback-links.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/bug-fix/2026-08-12-unlink-stale-profile-fallback-links.md +2026-08-12-unlink-stale-profile-fallback-links.md: 862030eb7019a31aa89681962254621ffe4d2c5a +2026-08-12-unlink-stale-profile-fallback-links.zh.md: 59f0f1827a7c1c3425f9bc7937b4942890e77e75 diff --git a/.agents/notes/implemented/bug-fix/2026-08-12-unlink-stale-profile-fallback-links.md b/.agents/notes/archived/bug-fix/2026-08-12-unlink-stale-profile-fallback-links.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-12-unlink-stale-profile-fallback-links.md rename to .agents/notes/archived/bug-fix/2026-08-12-unlink-stale-profile-fallback-links.md index 32959eb1b8..862030eb70 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-12-unlink-stale-profile-fallback-links.md +++ b/.agents/notes/archived/bug-fix/2026-08-12-unlink-stale-profile-fallback-links.md @@ -1,6 +1,7 @@ # Agent Note: Unlink stale profile fallback links instead of rmSync Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-12-unlink-stale-profile-fallback-links.zh.md) diff --git a/.agents/notes/implemented/bug-fix/2026-08-12-unlink-stale-profile-fallback-links.zh.md b/.agents/notes/archived/bug-fix/2026-08-12-unlink-stale-profile-fallback-links.zh.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-12-unlink-stale-profile-fallback-links.zh.md rename to .agents/notes/archived/bug-fix/2026-08-12-unlink-stale-profile-fallback-links.zh.md index 18176f8c98..59f0f1827a 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-12-unlink-stale-profile-fallback-links.zh.md +++ b/.agents/notes/archived/bug-fix/2026-08-12-unlink-stale-profile-fallback-links.zh.md @@ -1,6 +1,7 @@ # Agent Note: 用 unlink 删除过期的 profile 回退链接而非 rmSync Status: implemented +Archived: 2026-09-04 [English](2026-08-12-unlink-stale-profile-fallback-links.md) | 中文 diff --git a/.agents/notes/archived/bug-fix/2026-08-13-bounded-cold-blank-verification.i18n.yaml b/.agents/notes/archived/bug-fix/2026-08-13-bounded-cold-blank-verification.i18n.yaml new file mode 100644 index 0000000000..0b97c0e8ed --- /dev/null +++ b/.agents/notes/archived/bug-fix/2026-08-13-bounded-cold-blank-verification.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/bug-fix/2026-08-13-bounded-cold-blank-verification.md +2026-08-13-bounded-cold-blank-verification.md: 68ca39cae8cb01f395aa97695a416b014248ee95 +2026-08-13-bounded-cold-blank-verification.zh.md: 16152dafe29604df2d6521b9bbddf48daa0cc53c diff --git a/.agents/notes/implemented/bug-fix/2026-08-13-bounded-cold-blank-verification.md b/.agents/notes/archived/bug-fix/2026-08-13-bounded-cold-blank-verification.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-13-bounded-cold-blank-verification.md rename to .agents/notes/archived/bug-fix/2026-08-13-bounded-cold-blank-verification.md index 9aec2a2b7d..68ca39cae8 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-13-bounded-cold-blank-verification.md +++ b/.agents/notes/archived/bug-fix/2026-08-13-bounded-cold-blank-verification.md @@ -1,6 +1,7 @@ # Agent Note: Bound cold blank-session verification Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-13-bounded-cold-blank-verification.zh.md) diff --git a/.agents/notes/implemented/bug-fix/2026-08-13-bounded-cold-blank-verification.zh.md b/.agents/notes/archived/bug-fix/2026-08-13-bounded-cold-blank-verification.zh.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-13-bounded-cold-blank-verification.zh.md rename to .agents/notes/archived/bug-fix/2026-08-13-bounded-cold-blank-verification.zh.md index a8ffe326ef..16152dafe2 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-13-bounded-cold-blank-verification.zh.md +++ b/.agents/notes/archived/bug-fix/2026-08-13-bounded-cold-blank-verification.zh.md @@ -1,6 +1,7 @@ # Agent Note: 有界验证冷空白会话 Status: implemented +Archived: 2026-09-04 [English](2026-08-13-bounded-cold-blank-verification.md) | 中文 diff --git a/.agents/notes/archived/bug-fix/2026-08-13-feedback-note-editor-popover.i18n.yaml b/.agents/notes/archived/bug-fix/2026-08-13-feedback-note-editor-popover.i18n.yaml new file mode 100644 index 0000000000..45e16fdfdb --- /dev/null +++ b/.agents/notes/archived/bug-fix/2026-08-13-feedback-note-editor-popover.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/bug-fix/2026-08-13-feedback-note-editor-popover.md +2026-08-13-feedback-note-editor-popover.md: 30da32d7d9ed683a8be8f0de44f9ca2611d8db98 +2026-08-13-feedback-note-editor-popover.zh.md: 2713c544f3e404c752e6861a476808f45f667a23 diff --git a/.agents/notes/implemented/bug-fix/2026-08-13-feedback-note-editor-popover.md b/.agents/notes/archived/bug-fix/2026-08-13-feedback-note-editor-popover.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-13-feedback-note-editor-popover.md rename to .agents/notes/archived/bug-fix/2026-08-13-feedback-note-editor-popover.md index 8f51f090cc..30da32d7d9 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-13-feedback-note-editor-popover.md +++ b/.agents/notes/archived/bug-fix/2026-08-13-feedback-note-editor-popover.md @@ -1,6 +1,7 @@ # Agent Note: The feedback note editor floats above the transcript in a popover Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-13-feedback-note-editor-popover.zh.md) diff --git a/.agents/notes/implemented/bug-fix/2026-08-13-feedback-note-editor-popover.zh.md b/.agents/notes/archived/bug-fix/2026-08-13-feedback-note-editor-popover.zh.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-13-feedback-note-editor-popover.zh.md rename to .agents/notes/archived/bug-fix/2026-08-13-feedback-note-editor-popover.zh.md index 9b880002b9..2713c544f3 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-13-feedback-note-editor-popover.zh.md +++ b/.agents/notes/archived/bug-fix/2026-08-13-feedback-note-editor-popover.zh.md @@ -1,6 +1,7 @@ # Agent Note: 反馈备注编辑器以浮层悬浮在对话记录上方 Status: implemented +Archived: 2026-09-04 [English](2026-08-13-feedback-note-editor-popover.md) | 中文 diff --git a/.agents/notes/implemented/process/2026-07-23-portable-required-pull-request-ci.i18n.yaml b/.agents/notes/archived/bug-fix/2026-08-13-oauth-only-providers-withheld.i18n.yaml similarity index 55% rename from .agents/notes/implemented/process/2026-07-23-portable-required-pull-request-ci.i18n.yaml rename to .agents/notes/archived/bug-fix/2026-08-13-oauth-only-providers-withheld.i18n.yaml index 3f61c0bb86..c48b4a4868 100644 --- a/.agents/notes/implemented/process/2026-07-23-portable-required-pull-request-ci.i18n.yaml +++ b/.agents/notes/archived/bug-fix/2026-08-13-oauth-only-providers-withheld.i18n.yaml @@ -1,6 +1,6 @@ # Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/process/2026-07-23-portable-required-pull-request-ci.md -2026-07-23-portable-required-pull-request-ci.md: 00a58136b8e6d5a2f282bede9876d2f96e6ddf52 -2026-07-23-portable-required-pull-request-ci.zh.md: e367408850efe97457f4921150d39a1cfe34aed3 +# pnpm run verify-translation-pairing --write .agents/notes/archived/bug-fix/2026-08-13-oauth-only-providers-withheld.md +2026-08-13-oauth-only-providers-withheld.md: db5eb76ff13c51e1514a70130041696db0a3dbaf +2026-08-13-oauth-only-providers-withheld.zh.md: df81738d950805bef0996bd23abf443e43b0038a diff --git a/.agents/notes/implemented/bug-fix/2026-08-13-oauth-only-providers-withheld.md b/.agents/notes/archived/bug-fix/2026-08-13-oauth-only-providers-withheld.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-13-oauth-only-providers-withheld.md rename to .agents/notes/archived/bug-fix/2026-08-13-oauth-only-providers-withheld.md index 138cae6f56..db5eb76ff1 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-13-oauth-only-providers-withheld.md +++ b/.agents/notes/archived/bug-fix/2026-08-13-oauth-only-providers-withheld.md @@ -1,6 +1,7 @@ # Agent Note: The configurable-provider directory withholds OAuth-only providers Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-13-oauth-only-providers-withheld.zh.md) diff --git a/.agents/notes/implemented/bug-fix/2026-08-13-oauth-only-providers-withheld.zh.md b/.agents/notes/archived/bug-fix/2026-08-13-oauth-only-providers-withheld.zh.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-13-oauth-only-providers-withheld.zh.md rename to .agents/notes/archived/bug-fix/2026-08-13-oauth-only-providers-withheld.zh.md index 5665ac9ec8..df81738d95 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-13-oauth-only-providers-withheld.zh.md +++ b/.agents/notes/archived/bug-fix/2026-08-13-oauth-only-providers-withheld.zh.md @@ -1,6 +1,7 @@ # Agent Note: 可配置提供方目录不再提供仅以 OAuth 认证的提供方 Status: implemented +Archived: 2026-09-04 [English](2026-08-13-oauth-only-providers-withheld.md) | 中文 diff --git a/.agents/notes/archived/bug-fix/2026-08-15-max-token-replay-state-alignment.i18n.yaml b/.agents/notes/archived/bug-fix/2026-08-15-max-token-replay-state-alignment.i18n.yaml new file mode 100644 index 0000000000..66ae81ccdb --- /dev/null +++ b/.agents/notes/archived/bug-fix/2026-08-15-max-token-replay-state-alignment.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/bug-fix/2026-08-15-max-token-replay-state-alignment.md +2026-08-15-max-token-replay-state-alignment.md: 066c1f19d251c064ffd99ffed8b07c0df238ee5f +2026-08-15-max-token-replay-state-alignment.zh.md: 36c9b7cba1523fab8506dfc554cf7cba9de8a2ca diff --git a/.agents/notes/implemented/bug-fix/2026-08-15-max-token-replay-state-alignment.md b/.agents/notes/archived/bug-fix/2026-08-15-max-token-replay-state-alignment.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-15-max-token-replay-state-alignment.md rename to .agents/notes/archived/bug-fix/2026-08-15-max-token-replay-state-alignment.md index 0d8c9f2e55..066c1f19d2 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-15-max-token-replay-state-alignment.md +++ b/.agents/notes/archived/bug-fix/2026-08-15-max-token-replay-state-alignment.md @@ -1,6 +1,7 @@ # Agent Note: Replay state aligns with assembled content by construction Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-15-max-token-replay-state-alignment.zh.md) diff --git a/.agents/notes/implemented/bug-fix/2026-08-15-max-token-replay-state-alignment.zh.md b/.agents/notes/archived/bug-fix/2026-08-15-max-token-replay-state-alignment.zh.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-15-max-token-replay-state-alignment.zh.md rename to .agents/notes/archived/bug-fix/2026-08-15-max-token-replay-state-alignment.zh.md index 30f11b990a..36c9b7cba1 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-15-max-token-replay-state-alignment.zh.md +++ b/.agents/notes/archived/bug-fix/2026-08-15-max-token-replay-state-alignment.zh.md @@ -1,6 +1,7 @@ # Agent Note: 回放状态与组装内容按构造对齐 Status: implemented +Archived: 2026-09-04 [English](2026-08-15-max-token-replay-state-alignment.md) | 中文 diff --git a/.agents/notes/archived/bug-fix/2026-08-15-persistent-bash-keeps-controlled-prompt.i18n.yaml b/.agents/notes/archived/bug-fix/2026-08-15-persistent-bash-keeps-controlled-prompt.i18n.yaml new file mode 100644 index 0000000000..c29f84ff37 --- /dev/null +++ b/.agents/notes/archived/bug-fix/2026-08-15-persistent-bash-keeps-controlled-prompt.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/bug-fix/2026-08-15-persistent-bash-keeps-controlled-prompt.md +2026-08-15-persistent-bash-keeps-controlled-prompt.md: 01ffc6ce270f18e3cab5ed72d2290b819f00bbd2 +2026-08-15-persistent-bash-keeps-controlled-prompt.zh.md: 70c1986fe7327a463f93744ab50c022ce8912e58 diff --git a/.agents/notes/implemented/bug-fix/2026-08-15-persistent-bash-keeps-controlled-prompt.md b/.agents/notes/archived/bug-fix/2026-08-15-persistent-bash-keeps-controlled-prompt.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-15-persistent-bash-keeps-controlled-prompt.md rename to .agents/notes/archived/bug-fix/2026-08-15-persistent-bash-keeps-controlled-prompt.md index 9ee71f2adc..01ffc6ce27 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-15-persistent-bash-keeps-controlled-prompt.md +++ b/.agents/notes/archived/bug-fix/2026-08-15-persistent-bash-keeps-controlled-prompt.md @@ -1,6 +1,7 @@ # Agent Note: Persistent bash keeps the backend's controlled prompt Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-15-persistent-bash-keeps-controlled-prompt.zh.md) diff --git a/.agents/notes/implemented/bug-fix/2026-08-15-persistent-bash-keeps-controlled-prompt.zh.md b/.agents/notes/archived/bug-fix/2026-08-15-persistent-bash-keeps-controlled-prompt.zh.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-15-persistent-bash-keeps-controlled-prompt.zh.md rename to .agents/notes/archived/bug-fix/2026-08-15-persistent-bash-keeps-controlled-prompt.zh.md index 035d5b59b2..70c1986fe7 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-15-persistent-bash-keeps-controlled-prompt.zh.md +++ b/.agents/notes/archived/bug-fix/2026-08-15-persistent-bash-keeps-controlled-prompt.zh.md @@ -1,6 +1,7 @@ # Agent Note: 持久 bash 保留后端的受控提示符 Status: implemented +Archived: 2026-09-04 [English](2026-08-15-persistent-bash-keeps-controlled-prompt.md) | 中文 diff --git a/.agents/notes/archived/bug-fix/2026-08-18-rail-search-outside-click-self-dismissal.i18n.yaml b/.agents/notes/archived/bug-fix/2026-08-18-rail-search-outside-click-self-dismissal.i18n.yaml new file mode 100644 index 0000000000..1a347d57a5 --- /dev/null +++ b/.agents/notes/archived/bug-fix/2026-08-18-rail-search-outside-click-self-dismissal.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/bug-fix/2026-08-18-rail-search-outside-click-self-dismissal.md +2026-08-18-rail-search-outside-click-self-dismissal.md: 3cc35214cfe727b2d143fa30e8e6bcf14591c443 +2026-08-18-rail-search-outside-click-self-dismissal.zh.md: 8cc8ed28be871dab5b766335d4e1636d4c708011 diff --git a/.agents/notes/implemented/bug-fix/2026-08-18-rail-search-outside-click-self-dismissal.md b/.agents/notes/archived/bug-fix/2026-08-18-rail-search-outside-click-self-dismissal.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-18-rail-search-outside-click-self-dismissal.md rename to .agents/notes/archived/bug-fix/2026-08-18-rail-search-outside-click-self-dismissal.md index b9f3aa3365..3cc35214cf 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-18-rail-search-outside-click-self-dismissal.md +++ b/.agents/notes/archived/bug-fix/2026-08-18-rail-search-outside-click-self-dismissal.md @@ -1,6 +1,7 @@ # Agent Note: Rail search keeps its expansion when the opening click reaches document Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-18-rail-search-outside-click-self-dismissal.zh.md) diff --git a/.agents/notes/implemented/bug-fix/2026-08-18-rail-search-outside-click-self-dismissal.zh.md b/.agents/notes/archived/bug-fix/2026-08-18-rail-search-outside-click-self-dismissal.zh.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-18-rail-search-outside-click-self-dismissal.zh.md rename to .agents/notes/archived/bug-fix/2026-08-18-rail-search-outside-click-self-dismissal.zh.md index 72f19157db..8cc8ed28be 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-18-rail-search-outside-click-self-dismissal.zh.md +++ b/.agents/notes/archived/bug-fix/2026-08-18-rail-search-outside-click-self-dismissal.zh.md @@ -1,6 +1,7 @@ # Agent Note: 轨道搜索在展开点击到达 document 时保持展开 Status: implemented +Archived: 2026-09-04 [English](2026-08-18-rail-search-outside-click-self-dismissal.md) | 中文 diff --git a/.agents/notes/archived/bug-fix/2026-08-18-tool-row-file-open-failure.i18n.yaml b/.agents/notes/archived/bug-fix/2026-08-18-tool-row-file-open-failure.i18n.yaml new file mode 100644 index 0000000000..701110c682 --- /dev/null +++ b/.agents/notes/archived/bug-fix/2026-08-18-tool-row-file-open-failure.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/bug-fix/2026-08-18-tool-row-file-open-failure.md +2026-08-18-tool-row-file-open-failure.md: 985a6110f9e7f1fefeeec66468922c906a1db8ee +2026-08-18-tool-row-file-open-failure.zh.md: aed970e021db0739e43daac2331ff32cd64d50d7 diff --git a/.agents/notes/implemented/bug-fix/2026-08-18-tool-row-file-open-failure.md b/.agents/notes/archived/bug-fix/2026-08-18-tool-row-file-open-failure.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-18-tool-row-file-open-failure.md rename to .agents/notes/archived/bug-fix/2026-08-18-tool-row-file-open-failure.md index c1887c8349..985a6110f9 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-18-tool-row-file-open-failure.md +++ b/.agents/notes/archived/bug-fix/2026-08-18-tool-row-file-open-failure.md @@ -1,6 +1,7 @@ # Agent Note: Tool-row file-open failures stay visible Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-18-tool-row-file-open-failure.zh.md) diff --git a/.agents/notes/implemented/bug-fix/2026-08-18-tool-row-file-open-failure.zh.md b/.agents/notes/archived/bug-fix/2026-08-18-tool-row-file-open-failure.zh.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-18-tool-row-file-open-failure.zh.md rename to .agents/notes/archived/bug-fix/2026-08-18-tool-row-file-open-failure.zh.md index 8a851b4b1b..aed970e021 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-18-tool-row-file-open-failure.zh.md +++ b/.agents/notes/archived/bug-fix/2026-08-18-tool-row-file-open-failure.zh.md @@ -1,6 +1,7 @@ # Agent Note: Tool-row file-open failures stay visible Status: implemented +Archived: 2026-09-04 [English](2026-08-18-tool-row-file-open-failure.md) | 中文 diff --git a/.agents/notes/archived/bug-fix/2026-08-19-deepseek-reasoning-passback-every-turn.i18n.yaml b/.agents/notes/archived/bug-fix/2026-08-19-deepseek-reasoning-passback-every-turn.i18n.yaml new file mode 100644 index 0000000000..ca0ccab2f2 --- /dev/null +++ b/.agents/notes/archived/bug-fix/2026-08-19-deepseek-reasoning-passback-every-turn.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/bug-fix/2026-08-19-deepseek-reasoning-passback-every-turn.md +2026-08-19-deepseek-reasoning-passback-every-turn.md: 704bcea773b86ca5c1ce0dd4a91f5f4a87ef571c +2026-08-19-deepseek-reasoning-passback-every-turn.zh.md: 2cc70d2921aae36b2f1f4e0a8ab18a724752833f diff --git a/.agents/notes/implemented/bug-fix/2026-08-19-deepseek-reasoning-passback-every-turn.md b/.agents/notes/archived/bug-fix/2026-08-19-deepseek-reasoning-passback-every-turn.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-19-deepseek-reasoning-passback-every-turn.md rename to .agents/notes/archived/bug-fix/2026-08-19-deepseek-reasoning-passback-every-turn.md index 0fb9ff3cc0..704bcea773 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-19-deepseek-reasoning-passback-every-turn.md +++ b/.agents/notes/archived/bug-fix/2026-08-19-deepseek-reasoning-passback-every-turn.md @@ -1,6 +1,7 @@ # Agent Note: DeepSeek reasoning passback on every reasoned turn Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-19-deepseek-reasoning-passback-every-turn.zh.md) diff --git a/.agents/notes/implemented/bug-fix/2026-08-19-deepseek-reasoning-passback-every-turn.zh.md b/.agents/notes/archived/bug-fix/2026-08-19-deepseek-reasoning-passback-every-turn.zh.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-19-deepseek-reasoning-passback-every-turn.zh.md rename to .agents/notes/archived/bug-fix/2026-08-19-deepseek-reasoning-passback-every-turn.zh.md index d01c0c415c..2cc70d2921 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-19-deepseek-reasoning-passback-every-turn.zh.md +++ b/.agents/notes/archived/bug-fix/2026-08-19-deepseek-reasoning-passback-every-turn.zh.md @@ -1,6 +1,7 @@ # Agent Note: DeepSeek reasoning passback on every reasoned turn Status: implemented +Archived: 2026-09-04 [English](2026-08-19-deepseek-reasoning-passback-every-turn.md) | 中文 diff --git a/.agents/notes/archived/bug-fix/2026-08-20-explicit-web-index-paths.i18n.yaml b/.agents/notes/archived/bug-fix/2026-08-20-explicit-web-index-paths.i18n.yaml new file mode 100644 index 0000000000..cd7707a934 --- /dev/null +++ b/.agents/notes/archived/bug-fix/2026-08-20-explicit-web-index-paths.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/bug-fix/2026-08-20-explicit-web-index-paths.md +2026-08-20-explicit-web-index-paths.md: 9f3b19cdc8a0d16165f8644024929dc938985b7b +2026-08-20-explicit-web-index-paths.zh.md: 0d8676d037cc5295d4aeb3251588e4e71707909a diff --git a/.agents/notes/implemented/bug-fix/2026-08-20-explicit-web-index-paths.md b/.agents/notes/archived/bug-fix/2026-08-20-explicit-web-index-paths.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-20-explicit-web-index-paths.md rename to .agents/notes/archived/bug-fix/2026-08-20-explicit-web-index-paths.md index 815cdd81d4..9f3b19cdc8 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-20-explicit-web-index-paths.md +++ b/.agents/notes/archived/bug-fix/2026-08-20-explicit-web-index-paths.md @@ -1,6 +1,7 @@ # Agent Note: Explicit Web index paths and 404 static misses Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-20-explicit-web-index-paths.zh.md) diff --git a/.agents/notes/implemented/bug-fix/2026-08-20-explicit-web-index-paths.zh.md b/.agents/notes/archived/bug-fix/2026-08-20-explicit-web-index-paths.zh.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-20-explicit-web-index-paths.zh.md rename to .agents/notes/archived/bug-fix/2026-08-20-explicit-web-index-paths.zh.md index 4cbbac8413..0d8676d037 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-20-explicit-web-index-paths.zh.md +++ b/.agents/notes/archived/bug-fix/2026-08-20-explicit-web-index-paths.zh.md @@ -1,6 +1,7 @@ # Agent Note: 显式 Web index 路径与静态资源未命中的 404 Status: implemented +Archived: 2026-09-04 [English](2026-08-20-explicit-web-index-paths.md) | 中文 diff --git a/.agents/notes/archived/bug-fix/2026-08-20-plugin-owned-shipped-preset-root.i18n.yaml b/.agents/notes/archived/bug-fix/2026-08-20-plugin-owned-shipped-preset-root.i18n.yaml new file mode 100644 index 0000000000..f42f648340 --- /dev/null +++ b/.agents/notes/archived/bug-fix/2026-08-20-plugin-owned-shipped-preset-root.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/bug-fix/2026-08-20-plugin-owned-shipped-preset-root.md +2026-08-20-plugin-owned-shipped-preset-root.md: fecab0dd81e2b143a5fbdeffbb5f801d52906fc5 +2026-08-20-plugin-owned-shipped-preset-root.zh.md: 6bace382a214b32e97d847405c158ca2058bd7d4 diff --git a/.agents/notes/implemented/bug-fix/2026-08-20-plugin-owned-shipped-preset-root.md b/.agents/notes/archived/bug-fix/2026-08-20-plugin-owned-shipped-preset-root.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-20-plugin-owned-shipped-preset-root.md rename to .agents/notes/archived/bug-fix/2026-08-20-plugin-owned-shipped-preset-root.md index 5af1d213f6..fecab0dd81 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-20-plugin-owned-shipped-preset-root.md +++ b/.agents/notes/archived/bug-fix/2026-08-20-plugin-owned-shipped-preset-root.md @@ -1,6 +1,7 @@ # Agent Note: The shipped preset root is the plugin's own Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-20-plugin-owned-shipped-preset-root.zh.md) diff --git a/.agents/notes/implemented/bug-fix/2026-08-20-plugin-owned-shipped-preset-root.zh.md b/.agents/notes/archived/bug-fix/2026-08-20-plugin-owned-shipped-preset-root.zh.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-20-plugin-owned-shipped-preset-root.zh.md rename to .agents/notes/archived/bug-fix/2026-08-20-plugin-owned-shipped-preset-root.zh.md index e5f2e08e22..6bace382a2 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-20-plugin-owned-shipped-preset-root.zh.md +++ b/.agents/notes/archived/bug-fix/2026-08-20-plugin-owned-shipped-preset-root.zh.md @@ -1,6 +1,7 @@ # Agent Note: The shipped preset root is the plugin's own Status: implemented +Archived: 2026-09-04 [English](2026-08-20-plugin-owned-shipped-preset-root.md) | 中文 diff --git a/.agents/notes/archived/bug-fix/2026-08-20-running-draft-primary-send.i18n.yaml b/.agents/notes/archived/bug-fix/2026-08-20-running-draft-primary-send.i18n.yaml new file mode 100644 index 0000000000..9032671886 --- /dev/null +++ b/.agents/notes/archived/bug-fix/2026-08-20-running-draft-primary-send.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/bug-fix/2026-08-20-running-draft-primary-send.md +2026-08-20-running-draft-primary-send.md: 8b7ef4c9b45a5ec414ff22e443a71f8494b901d6 +2026-08-20-running-draft-primary-send.zh.md: e565b68d14cc6abcff3d6956da9ebd1dd4b6d200 diff --git a/.agents/notes/implemented/bug-fix/2026-08-20-running-draft-primary-send.md b/.agents/notes/archived/bug-fix/2026-08-20-running-draft-primary-send.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-20-running-draft-primary-send.md rename to .agents/notes/archived/bug-fix/2026-08-20-running-draft-primary-send.md index 79c8c3a74f..8b7ef4c9b4 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-20-running-draft-primary-send.md +++ b/.agents/notes/archived/bug-fix/2026-08-20-running-draft-primary-send.md @@ -1,6 +1,7 @@ # Agent Note: Running drafts take the primary Send action Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-20-running-draft-primary-send.zh.md) diff --git a/.agents/notes/implemented/bug-fix/2026-08-20-running-draft-primary-send.zh.md b/.agents/notes/archived/bug-fix/2026-08-20-running-draft-primary-send.zh.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-20-running-draft-primary-send.zh.md rename to .agents/notes/archived/bug-fix/2026-08-20-running-draft-primary-send.zh.md index 180352810f..e565b68d14 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-20-running-draft-primary-send.zh.md +++ b/.agents/notes/archived/bug-fix/2026-08-20-running-draft-primary-send.zh.md @@ -1,6 +1,7 @@ # Agent Note: 运行中草稿取得主 Send 操作 Status: implemented +Archived: 2026-09-04 [English](2026-08-20-running-draft-primary-send.md) | 中文 diff --git a/.agents/notes/archived/bug-fix/2026-08-20-turn-error-survives-same-turn-retry-history.i18n.yaml b/.agents/notes/archived/bug-fix/2026-08-20-turn-error-survives-same-turn-retry-history.i18n.yaml new file mode 100644 index 0000000000..2dd0861b91 --- /dev/null +++ b/.agents/notes/archived/bug-fix/2026-08-20-turn-error-survives-same-turn-retry-history.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/bug-fix/2026-08-20-turn-error-survives-same-turn-retry-history.md +2026-08-20-turn-error-survives-same-turn-retry-history.md: 4d329728740e6ee8366a4c121430fff778b0e4ff +2026-08-20-turn-error-survives-same-turn-retry-history.zh.md: 48af846c18009a718e94d463f2a5a50bf55fae01 diff --git a/.agents/notes/implemented/bug-fix/2026-08-20-turn-error-survives-same-turn-retry-history.md b/.agents/notes/archived/bug-fix/2026-08-20-turn-error-survives-same-turn-retry-history.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-20-turn-error-survives-same-turn-retry-history.md rename to .agents/notes/archived/bug-fix/2026-08-20-turn-error-survives-same-turn-retry-history.md index 9280d59d02..4d32972874 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-20-turn-error-survives-same-turn-retry-history.md +++ b/.agents/notes/archived/bug-fix/2026-08-20-turn-error-survives-same-turn-retry-history.md @@ -1,6 +1,7 @@ # Agent Note: Terminal turn errors survive same-turn retry history Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-20-turn-error-survives-same-turn-retry-history.zh.md) diff --git a/.agents/notes/implemented/bug-fix/2026-08-20-turn-error-survives-same-turn-retry-history.zh.md b/.agents/notes/archived/bug-fix/2026-08-20-turn-error-survives-same-turn-retry-history.zh.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-20-turn-error-survives-same-turn-retry-history.zh.md rename to .agents/notes/archived/bug-fix/2026-08-20-turn-error-survives-same-turn-retry-history.zh.md index 1856d72e05..48af846c18 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-20-turn-error-survives-same-turn-retry-history.zh.md +++ b/.agents/notes/archived/bug-fix/2026-08-20-turn-error-survives-same-turn-retry-history.zh.md @@ -1,6 +1,7 @@ # Agent Note: Terminal turn errors survive same-turn retry history Status: implemented +Archived: 2026-09-04 [English](2026-08-20-turn-error-survives-same-turn-retry-history.md) | 中文 diff --git a/.agents/notes/archived/bug-fix/2026-08-21-deepseek-files-inline-fallback.i18n.yaml b/.agents/notes/archived/bug-fix/2026-08-21-deepseek-files-inline-fallback.i18n.yaml new file mode 100644 index 0000000000..11beb3d3fb --- /dev/null +++ b/.agents/notes/archived/bug-fix/2026-08-21-deepseek-files-inline-fallback.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/bug-fix/2026-08-21-deepseek-files-inline-fallback.md +2026-08-21-deepseek-files-inline-fallback.md: 159dd8f98df8cf684f0cd1d89378fb70b200b804 +2026-08-21-deepseek-files-inline-fallback.zh.md: ba39c1019c35c76379ff5615df5caddfef68c9e0 diff --git a/.agents/notes/implemented/bug-fix/2026-08-21-deepseek-files-inline-fallback.md b/.agents/notes/archived/bug-fix/2026-08-21-deepseek-files-inline-fallback.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-21-deepseek-files-inline-fallback.md rename to .agents/notes/archived/bug-fix/2026-08-21-deepseek-files-inline-fallback.md index 7442089038..159dd8f98d 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-21-deepseek-files-inline-fallback.md +++ b/.agents/notes/archived/bug-fix/2026-08-21-deepseek-files-inline-fallback.md @@ -1,6 +1,7 @@ # Agent Note: Recover DeepSeek image requests from Files resolution failures Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-21-deepseek-files-inline-fallback.zh.md) diff --git a/.agents/notes/implemented/bug-fix/2026-08-21-deepseek-files-inline-fallback.zh.md b/.agents/notes/archived/bug-fix/2026-08-21-deepseek-files-inline-fallback.zh.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-21-deepseek-files-inline-fallback.zh.md rename to .agents/notes/archived/bug-fix/2026-08-21-deepseek-files-inline-fallback.zh.md index 0534514f9b..ba39c1019c 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-21-deepseek-files-inline-fallback.zh.md +++ b/.agents/notes/archived/bug-fix/2026-08-21-deepseek-files-inline-fallback.zh.md @@ -1,6 +1,7 @@ # Agent Note: DeepSeek Files 解析失败时恢复图片请求 Status: implemented +Archived: 2026-09-04 [English](2026-08-21-deepseek-files-inline-fallback.md) | 中文 diff --git a/.agents/notes/archived/bug-fix/2026-08-21-inline-user-text-projection.i18n.yaml b/.agents/notes/archived/bug-fix/2026-08-21-inline-user-text-projection.i18n.yaml new file mode 100644 index 0000000000..d22f49eb21 --- /dev/null +++ b/.agents/notes/archived/bug-fix/2026-08-21-inline-user-text-projection.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/bug-fix/2026-08-21-inline-user-text-projection.md +2026-08-21-inline-user-text-projection.md: 5b8735c31cdd6ff95970034a09b5abce4ab03e20 +2026-08-21-inline-user-text-projection.zh.md: 35f5f970eec9700e437a508caa045f9de72e4788 diff --git a/.agents/notes/implemented/bug-fix/2026-08-21-inline-user-text-projection.md b/.agents/notes/archived/bug-fix/2026-08-21-inline-user-text-projection.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-21-inline-user-text-projection.md rename to .agents/notes/archived/bug-fix/2026-08-21-inline-user-text-projection.md index deb0c54f41..5b8735c31c 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-21-inline-user-text-projection.md +++ b/.agents/notes/archived/bug-fix/2026-08-21-inline-user-text-projection.md @@ -1,6 +1,7 @@ # Agent Note: Sent user text projects inline, and queue rows fold wire references Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-21-inline-user-text-projection.zh.md) diff --git a/.agents/notes/implemented/bug-fix/2026-08-21-inline-user-text-projection.zh.md b/.agents/notes/archived/bug-fix/2026-08-21-inline-user-text-projection.zh.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-21-inline-user-text-projection.zh.md rename to .agents/notes/archived/bug-fix/2026-08-21-inline-user-text-projection.zh.md index f7b8dd1d82..35f5f970ee 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-21-inline-user-text-projection.zh.md +++ b/.agents/notes/archived/bug-fix/2026-08-21-inline-user-text-projection.zh.md @@ -1,6 +1,7 @@ # Agent Note: 已发送用户文本行内投影,Queue 行折叠 wire 引用 Status: implemented +Archived: 2026-09-04 [English](2026-08-21-inline-user-text-projection.md) | 中文 diff --git a/.agents/notes/archived/bug-fix/2026-08-23-win32-utf16-nul-truncation.i18n.yaml b/.agents/notes/archived/bug-fix/2026-08-23-win32-utf16-nul-truncation.i18n.yaml new file mode 100644 index 0000000000..14b29fc842 --- /dev/null +++ b/.agents/notes/archived/bug-fix/2026-08-23-win32-utf16-nul-truncation.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/bug-fix/2026-08-23-win32-utf16-nul-truncation.md +2026-08-23-win32-utf16-nul-truncation.md: 1d23b5edaf523f7a901b5ff0497e6852b9b49f0c +2026-08-23-win32-utf16-nul-truncation.zh.md: 2cbe9fecc6129d52545125d9f295833e2213c0a5 diff --git a/.agents/notes/implemented/bug-fix/2026-08-23-win32-utf16-nul-truncation.md b/.agents/notes/archived/bug-fix/2026-08-23-win32-utf16-nul-truncation.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-23-win32-utf16-nul-truncation.md rename to .agents/notes/archived/bug-fix/2026-08-23-win32-utf16-nul-truncation.md index 3962730c66..1d23b5edaf 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-23-win32-utf16-nul-truncation.md +++ b/.agents/notes/archived/bug-fix/2026-08-23-win32-utf16-nul-truncation.md @@ -1,6 +1,7 @@ # Agent Note: Win32 folder-picker paths stop truncating at U+XX00 code units Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-23-win32-utf16-nul-truncation.zh.md) diff --git a/.agents/notes/implemented/bug-fix/2026-08-23-win32-utf16-nul-truncation.zh.md b/.agents/notes/archived/bug-fix/2026-08-23-win32-utf16-nul-truncation.zh.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-23-win32-utf16-nul-truncation.zh.md rename to .agents/notes/archived/bug-fix/2026-08-23-win32-utf16-nul-truncation.zh.md index 23df80053b..2cbe9fecc6 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-23-win32-utf16-nul-truncation.zh.md +++ b/.agents/notes/archived/bug-fix/2026-08-23-win32-utf16-nul-truncation.zh.md @@ -1,6 +1,7 @@ # Agent Note: Win32 目录选择器路径不再在 U+XX00 码元处截断 Status: implemented +Archived: 2026-09-04 [English](2026-08-23-win32-utf16-nul-truncation.md) | 中文 diff --git a/.agents/notes/archived/bug-fix/2026-08-24-token-meter-surface-fold-plan-commit.i18n.yaml b/.agents/notes/archived/bug-fix/2026-08-24-token-meter-surface-fold-plan-commit.i18n.yaml new file mode 100644 index 0000000000..684493a698 --- /dev/null +++ b/.agents/notes/archived/bug-fix/2026-08-24-token-meter-surface-fold-plan-commit.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/bug-fix/2026-08-24-token-meter-surface-fold-plan-commit.md +2026-08-24-token-meter-surface-fold-plan-commit.md: c6be9843c65ddb3ca8d26f3fbfa07789df268ffd +2026-08-24-token-meter-surface-fold-plan-commit.zh.md: 370477b78648222f8115d729880ba5aff4c6dd89 diff --git a/.agents/notes/implemented/bug-fix/2026-08-24-token-meter-surface-fold-plan-commit.md b/.agents/notes/archived/bug-fix/2026-08-24-token-meter-surface-fold-plan-commit.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-24-token-meter-surface-fold-plan-commit.md rename to .agents/notes/archived/bug-fix/2026-08-24-token-meter-surface-fold-plan-commit.md index 878b2634c1..c6be9843c6 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-24-token-meter-surface-fold-plan-commit.md +++ b/.agents/notes/archived/bug-fix/2026-08-24-token-meter-surface-fold-plan-commit.md @@ -1,6 +1,7 @@ # Agent Note: Token-meter surface fold commits in place through a plan/commit pair Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-24-token-meter-surface-fold-plan-commit.zh.md) diff --git a/.agents/notes/implemented/bug-fix/2026-08-24-token-meter-surface-fold-plan-commit.zh.md b/.agents/notes/archived/bug-fix/2026-08-24-token-meter-surface-fold-plan-commit.zh.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-24-token-meter-surface-fold-plan-commit.zh.md rename to .agents/notes/archived/bug-fix/2026-08-24-token-meter-surface-fold-plan-commit.zh.md index 32ee8c6c44..370477b786 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-24-token-meter-surface-fold-plan-commit.zh.md +++ b/.agents/notes/archived/bug-fix/2026-08-24-token-meter-surface-fold-plan-commit.zh.md @@ -1,6 +1,7 @@ # Agent Note: token-meter surface fold 改为 plan/commit 两段式原地提交 Status: implemented +Archived: 2026-09-04 [English](2026-08-24-token-meter-surface-fold-plan-commit.md) | 中文 diff --git a/.agents/notes/archived/bug-fix/2026-08-26-composer-gesture-editable-gate.i18n.yaml b/.agents/notes/archived/bug-fix/2026-08-26-composer-gesture-editable-gate.i18n.yaml new file mode 100644 index 0000000000..c2072344d0 --- /dev/null +++ b/.agents/notes/archived/bug-fix/2026-08-26-composer-gesture-editable-gate.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/bug-fix/2026-08-26-composer-gesture-editable-gate.md +2026-08-26-composer-gesture-editable-gate.md: 28254f6ada383756aa1674ae2a5eaf2a2ca64564 +2026-08-26-composer-gesture-editable-gate.zh.md: 2a5024c53665675b7e7ea69554deaeef65381abf diff --git a/.agents/notes/implemented/bug-fix/2026-08-26-composer-gesture-editable-gate.md b/.agents/notes/archived/bug-fix/2026-08-26-composer-gesture-editable-gate.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-26-composer-gesture-editable-gate.md rename to .agents/notes/archived/bug-fix/2026-08-26-composer-gesture-editable-gate.md index 9b01a79d8d..28254f6ada 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-26-composer-gesture-editable-gate.md +++ b/.agents/notes/archived/bug-fix/2026-08-26-composer-gesture-editable-gate.md @@ -1,6 +1,7 @@ # Agent Note: Composer e2e gestures gate on the contenteditable attribute Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-26-composer-gesture-editable-gate.zh.md) diff --git a/.agents/notes/implemented/bug-fix/2026-08-26-composer-gesture-editable-gate.zh.md b/.agents/notes/archived/bug-fix/2026-08-26-composer-gesture-editable-gate.zh.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-26-composer-gesture-editable-gate.zh.md rename to .agents/notes/archived/bug-fix/2026-08-26-composer-gesture-editable-gate.zh.md index b5dc8d36c7..2a5024c536 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-26-composer-gesture-editable-gate.zh.md +++ b/.agents/notes/archived/bug-fix/2026-08-26-composer-gesture-editable-gate.zh.md @@ -1,6 +1,7 @@ # Agent Note: Composer e2e 手势以 contenteditable 属性为门 Status: implemented +Archived: 2026-09-04 [English](2026-08-26-composer-gesture-editable-gate.md) | 中文 diff --git a/.agents/notes/archived/bug-fix/2026-08-26-pi-ai-grant-payload-json-image.i18n.yaml b/.agents/notes/archived/bug-fix/2026-08-26-pi-ai-grant-payload-json-image.i18n.yaml new file mode 100644 index 0000000000..d91d90dec6 --- /dev/null +++ b/.agents/notes/archived/bug-fix/2026-08-26-pi-ai-grant-payload-json-image.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/bug-fix/2026-08-26-pi-ai-grant-payload-json-image.md +2026-08-26-pi-ai-grant-payload-json-image.md: ae4ca621843837df02bfefd7c40eb3634612682d +2026-08-26-pi-ai-grant-payload-json-image.zh.md: 0275fe4a41156bf17fe9008bbb84bd5b6aa0e583 diff --git a/.agents/notes/implemented/bug-fix/2026-08-26-pi-ai-grant-payload-json-image.md b/.agents/notes/archived/bug-fix/2026-08-26-pi-ai-grant-payload-json-image.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-26-pi-ai-grant-payload-json-image.md rename to .agents/notes/archived/bug-fix/2026-08-26-pi-ai-grant-payload-json-image.md index 9eb5e5ffd9..ae4ca62184 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-26-pi-ai-grant-payload-json-image.md +++ b/.agents/notes/archived/bug-fix/2026-08-26-pi-ai-grant-payload-json-image.md @@ -1,6 +1,7 @@ # Agent Note: pi-ai grant payloads store their JSON image Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-26-pi-ai-grant-payload-json-image.zh.md) diff --git a/.agents/notes/implemented/bug-fix/2026-08-26-pi-ai-grant-payload-json-image.zh.md b/.agents/notes/archived/bug-fix/2026-08-26-pi-ai-grant-payload-json-image.zh.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-26-pi-ai-grant-payload-json-image.zh.md rename to .agents/notes/archived/bug-fix/2026-08-26-pi-ai-grant-payload-json-image.zh.md index 8329b4acf0..0275fe4a41 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-26-pi-ai-grant-payload-json-image.zh.md +++ b/.agents/notes/archived/bug-fix/2026-08-26-pi-ai-grant-payload-json-image.zh.md @@ -1,6 +1,7 @@ # Agent Note: pi-ai grant payload 落盘其 JSON 像 Status: implemented +Archived: 2026-09-04 [English](2026-08-26-pi-ai-grant-payload-json-image.md) | 中文 diff --git a/.agents/notes/archived/bug-fix/2026-08-26-question-drafts-survive-session-switch.i18n.yaml b/.agents/notes/archived/bug-fix/2026-08-26-question-drafts-survive-session-switch.i18n.yaml new file mode 100644 index 0000000000..1cbd7aaaf1 --- /dev/null +++ b/.agents/notes/archived/bug-fix/2026-08-26-question-drafts-survive-session-switch.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/bug-fix/2026-08-26-question-drafts-survive-session-switch.md +2026-08-26-question-drafts-survive-session-switch.md: d2178cb5cba805b9c2238974f137a8a612b1b03f +2026-08-26-question-drafts-survive-session-switch.zh.md: c9e8167733e432f5f705f7b4384dffcbe8f233c7 diff --git a/.agents/notes/implemented/bug-fix/2026-08-26-question-drafts-survive-session-switch.md b/.agents/notes/archived/bug-fix/2026-08-26-question-drafts-survive-session-switch.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-26-question-drafts-survive-session-switch.md rename to .agents/notes/archived/bug-fix/2026-08-26-question-drafts-survive-session-switch.md index 2279c4efd5..d2178cb5cb 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-26-question-drafts-survive-session-switch.md +++ b/.agents/notes/archived/bug-fix/2026-08-26-question-drafts-survive-session-switch.md @@ -1,6 +1,7 @@ # Agent Note: Question drafts survive Session switches Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-26-question-drafts-survive-session-switch.zh.md) diff --git a/.agents/notes/implemented/bug-fix/2026-08-26-question-drafts-survive-session-switch.zh.md b/.agents/notes/archived/bug-fix/2026-08-26-question-drafts-survive-session-switch.zh.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-26-question-drafts-survive-session-switch.zh.md rename to .agents/notes/archived/bug-fix/2026-08-26-question-drafts-survive-session-switch.zh.md index af275a704b..c9e8167733 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-26-question-drafts-survive-session-switch.zh.md +++ b/.agents/notes/archived/bug-fix/2026-08-26-question-drafts-survive-session-switch.zh.md @@ -1,6 +1,7 @@ # Agent Note: 提问草稿在 Session 切换后保留 Status: implemented +Archived: 2026-09-04 [English](2026-08-26-question-drafts-survive-session-switch.md) | 中文 diff --git a/.agents/notes/archived/bug-fix/2026-08-26-stable-turn-process-order.i18n.yaml b/.agents/notes/archived/bug-fix/2026-08-26-stable-turn-process-order.i18n.yaml new file mode 100644 index 0000000000..02cfb2cdea --- /dev/null +++ b/.agents/notes/archived/bug-fix/2026-08-26-stable-turn-process-order.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/bug-fix/2026-08-26-stable-turn-process-order.md +2026-08-26-stable-turn-process-order.md: e7de4aac5244fd7b4d76e89d8a02d19579b077bb +2026-08-26-stable-turn-process-order.zh.md: 28e16bc2840d96febe2fa9bf786748d25b43fb23 diff --git a/.agents/notes/implemented/bug-fix/2026-08-26-stable-turn-process-order.md b/.agents/notes/archived/bug-fix/2026-08-26-stable-turn-process-order.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-26-stable-turn-process-order.md rename to .agents/notes/archived/bug-fix/2026-08-26-stable-turn-process-order.md index 7122b901c8..e7de4aac52 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-26-stable-turn-process-order.md +++ b/.agents/notes/archived/bug-fix/2026-08-26-stable-turn-process-order.md @@ -1,6 +1,7 @@ # Agent Note: Stable Turn-process ordering Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-26-stable-turn-process-order.zh.md) diff --git a/.agents/notes/implemented/bug-fix/2026-08-26-stable-turn-process-order.zh.md b/.agents/notes/archived/bug-fix/2026-08-26-stable-turn-process-order.zh.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-26-stable-turn-process-order.zh.md rename to .agents/notes/archived/bug-fix/2026-08-26-stable-turn-process-order.zh.md index 574855fd4c..28e16bc284 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-26-stable-turn-process-order.zh.md +++ b/.agents/notes/archived/bug-fix/2026-08-26-stable-turn-process-order.zh.md @@ -1,6 +1,7 @@ # Agent Note: 稳定的轮次过程排序 Status: implemented +Archived: 2026-09-04 [English](2026-08-26-stable-turn-process-order.md) | 中文 diff --git a/.agents/notes/archived/bug-fix/2026-08-27-steer-followup-image-delivery.i18n.yaml b/.agents/notes/archived/bug-fix/2026-08-27-steer-followup-image-delivery.i18n.yaml new file mode 100644 index 0000000000..3fcecdb52c --- /dev/null +++ b/.agents/notes/archived/bug-fix/2026-08-27-steer-followup-image-delivery.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/bug-fix/2026-08-27-steer-followup-image-delivery.md +2026-08-27-steer-followup-image-delivery.md: 86652521e82ca0b829446f08d03ab2e65e235f3e +2026-08-27-steer-followup-image-delivery.zh.md: 9e0441e59cc83b8827fe877717f376804839a2e3 diff --git a/.agents/notes/implemented/bug-fix/2026-08-27-steer-followup-image-delivery.md b/.agents/notes/archived/bug-fix/2026-08-27-steer-followup-image-delivery.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-27-steer-followup-image-delivery.md rename to .agents/notes/archived/bug-fix/2026-08-27-steer-followup-image-delivery.md index 3a3d985e1d..86652521e8 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-27-steer-followup-image-delivery.md +++ b/.agents/notes/archived/bug-fix/2026-08-27-steer-followup-image-delivery.md @@ -1,6 +1,7 @@ # Agent Note: Steer and follow-up image delivery Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-27-steer-followup-image-delivery.zh.md) diff --git a/.agents/notes/implemented/bug-fix/2026-08-27-steer-followup-image-delivery.zh.md b/.agents/notes/archived/bug-fix/2026-08-27-steer-followup-image-delivery.zh.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-27-steer-followup-image-delivery.zh.md rename to .agents/notes/archived/bug-fix/2026-08-27-steer-followup-image-delivery.zh.md index 8015960eb8..9e0441e59c 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-27-steer-followup-image-delivery.zh.md +++ b/.agents/notes/archived/bug-fix/2026-08-27-steer-followup-image-delivery.zh.md @@ -1,6 +1,7 @@ # Agent Note: steer 与 follow-up 的图片投递 Status: implemented +Archived: 2026-09-04 [English](2026-08-27-steer-followup-image-delivery.md) | 中文 diff --git a/.agents/notes/archived/bug-fix/2026-08-28-linear-stream-queue-drain.i18n.yaml b/.agents/notes/archived/bug-fix/2026-08-28-linear-stream-queue-drain.i18n.yaml new file mode 100644 index 0000000000..08c59e259e --- /dev/null +++ b/.agents/notes/archived/bug-fix/2026-08-28-linear-stream-queue-drain.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/bug-fix/2026-08-28-linear-stream-queue-drain.md +2026-08-28-linear-stream-queue-drain.md: 4fc5d097064d24489f9f103b132d2e51dbf6c24d +2026-08-28-linear-stream-queue-drain.zh.md: 38723633eacdf695536324837d06f83a08d4a723 diff --git a/.agents/notes/implemented/bug-fix/2026-08-28-linear-stream-queue-drain.md b/.agents/notes/archived/bug-fix/2026-08-28-linear-stream-queue-drain.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-28-linear-stream-queue-drain.md rename to .agents/notes/archived/bug-fix/2026-08-28-linear-stream-queue-drain.md index 3ec9ff3ae0..4fc5d09706 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-28-linear-stream-queue-drain.md +++ b/.agents/notes/archived/bug-fix/2026-08-28-linear-stream-queue-drain.md @@ -1,6 +1,7 @@ # Agent Note: Linear drain for long-lived stream queues Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-28-linear-stream-queue-drain.zh.md) diff --git a/.agents/notes/implemented/bug-fix/2026-08-28-linear-stream-queue-drain.zh.md b/.agents/notes/archived/bug-fix/2026-08-28-linear-stream-queue-drain.zh.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-28-linear-stream-queue-drain.zh.md rename to .agents/notes/archived/bug-fix/2026-08-28-linear-stream-queue-drain.zh.md index c71b1da074..38723633ea 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-28-linear-stream-queue-drain.zh.md +++ b/.agents/notes/archived/bug-fix/2026-08-28-linear-stream-queue-drain.zh.md @@ -1,6 +1,7 @@ # Agent Note: 长期流队列的线性排空 Status: implemented +Archived: 2026-09-04 [English](2026-08-28-linear-stream-queue-drain.md) | 中文 diff --git a/.agents/notes/archived/bug-fix/2026-08-28-read-image-extensionless-paths.i18n.yaml b/.agents/notes/archived/bug-fix/2026-08-28-read-image-extensionless-paths.i18n.yaml new file mode 100644 index 0000000000..7b732db7bf --- /dev/null +++ b/.agents/notes/archived/bug-fix/2026-08-28-read-image-extensionless-paths.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/bug-fix/2026-08-28-read-image-extensionless-paths.md +2026-08-28-read-image-extensionless-paths.md: 81d412be3e548e36039b967ca3efb52b632c6fcd +2026-08-28-read-image-extensionless-paths.zh.md: f2bc39ced125eb8dbdde081def3114e72d431c51 diff --git a/.agents/notes/implemented/bug-fix/2026-08-28-read-image-extensionless-paths.md b/.agents/notes/archived/bug-fix/2026-08-28-read-image-extensionless-paths.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-28-read-image-extensionless-paths.md rename to .agents/notes/archived/bug-fix/2026-08-28-read-image-extensionless-paths.md index cf7d82b2ed..81d412be3e 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-28-read-image-extensionless-paths.md +++ b/.agents/notes/archived/bug-fix/2026-08-28-read-image-extensionless-paths.md @@ -1,6 +1,7 @@ # Agent Note: read_image accepts extension-less image paths Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-28-read-image-extensionless-paths.zh.md) diff --git a/.agents/notes/implemented/bug-fix/2026-08-28-read-image-extensionless-paths.zh.md b/.agents/notes/archived/bug-fix/2026-08-28-read-image-extensionless-paths.zh.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-28-read-image-extensionless-paths.zh.md rename to .agents/notes/archived/bug-fix/2026-08-28-read-image-extensionless-paths.zh.md index 8d4cd15f6c..f2bc39ced1 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-28-read-image-extensionless-paths.zh.md +++ b/.agents/notes/archived/bug-fix/2026-08-28-read-image-extensionless-paths.zh.md @@ -1,6 +1,7 @@ # Agent Note: read_image 接受无扩展名图片路径 Status: implemented +Archived: 2026-09-04 [English](2026-08-28-read-image-extensionless-paths.md) | 中文 diff --git a/.agents/notes/archived/bug-fix/2026-08-28-trigger-menu-stale-while-revalidate.i18n.yaml b/.agents/notes/archived/bug-fix/2026-08-28-trigger-menu-stale-while-revalidate.i18n.yaml new file mode 100644 index 0000000000..4b292c2f2e --- /dev/null +++ b/.agents/notes/archived/bug-fix/2026-08-28-trigger-menu-stale-while-revalidate.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/bug-fix/2026-08-28-trigger-menu-stale-while-revalidate.md +2026-08-28-trigger-menu-stale-while-revalidate.md: 170d7fb69e4cad05efdd1159711b9dd374caf578 +2026-08-28-trigger-menu-stale-while-revalidate.zh.md: 742c451097925f49dba3dbff5739210f1362a818 diff --git a/.agents/notes/implemented/bug-fix/2026-08-28-trigger-menu-stale-while-revalidate.md b/.agents/notes/archived/bug-fix/2026-08-28-trigger-menu-stale-while-revalidate.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-28-trigger-menu-stale-while-revalidate.md rename to .agents/notes/archived/bug-fix/2026-08-28-trigger-menu-stale-while-revalidate.md index 12541ba3ec..170d7fb69e 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-28-trigger-menu-stale-while-revalidate.md +++ b/.agents/notes/archived/bug-fix/2026-08-28-trigger-menu-stale-while-revalidate.md @@ -1,6 +1,7 @@ # Agent Note: The trigger menu keeps previous rows through refinement Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-28-trigger-menu-stale-while-revalidate.zh.md) diff --git a/.agents/notes/implemented/bug-fix/2026-08-28-trigger-menu-stale-while-revalidate.zh.md b/.agents/notes/archived/bug-fix/2026-08-28-trigger-menu-stale-while-revalidate.zh.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-28-trigger-menu-stale-while-revalidate.zh.md rename to .agents/notes/archived/bug-fix/2026-08-28-trigger-menu-stale-while-revalidate.zh.md index 69b3d1b6a3..742c451097 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-28-trigger-menu-stale-while-revalidate.zh.md +++ b/.agents/notes/archived/bug-fix/2026-08-28-trigger-menu-stale-while-revalidate.zh.md @@ -1,6 +1,7 @@ # Agent Note: The trigger menu keeps previous rows through refinement Status: implemented +Archived: 2026-09-04 [English](2026-08-28-trigger-menu-stale-while-revalidate.md) | 中文 diff --git a/.agents/notes/implemented/bug-fix/2026-08-29-code-runtime-python-call-backlog-and-binding-metadata-snapshot.i18n.yaml b/.agents/notes/archived/bug-fix/2026-08-29-code-runtime-python-call-backlog-and-binding-metadata-snapshot.i18n.yaml similarity index 57% rename from .agents/notes/implemented/bug-fix/2026-08-29-code-runtime-python-call-backlog-and-binding-metadata-snapshot.i18n.yaml rename to .agents/notes/archived/bug-fix/2026-08-29-code-runtime-python-call-backlog-and-binding-metadata-snapshot.i18n.yaml index cf4c994853..2c1e75f0b4 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-29-code-runtime-python-call-backlog-and-binding-metadata-snapshot.i18n.yaml +++ b/.agents/notes/archived/bug-fix/2026-08-29-code-runtime-python-call-backlog-and-binding-metadata-snapshot.i18n.yaml @@ -1,6 +1,6 @@ # Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/bug-fix/2026-08-29-code-runtime-python-call-backlog-and-binding-metadata-snapshot.md -2026-08-29-code-runtime-python-call-backlog-and-binding-metadata-snapshot.md: afdad301a4853754184b75668d167e71420c2480 -2026-08-29-code-runtime-python-call-backlog-and-binding-metadata-snapshot.zh.md: 48d6e0748979b09053aa51a94788fdd95d997179 +# pnpm run verify-translation-pairing --write .agents/notes/archived/bug-fix/2026-08-29-code-runtime-python-call-backlog-and-binding-metadata-snapshot.md +2026-08-29-code-runtime-python-call-backlog-and-binding-metadata-snapshot.md: b1b9f286680583c083c241e497eec2fc34843b56 +2026-08-29-code-runtime-python-call-backlog-and-binding-metadata-snapshot.zh.md: 7f9608527e3a6a49ed9ff41945e0264a8e260923 diff --git a/.agents/notes/implemented/bug-fix/2026-08-29-code-runtime-python-call-backlog-and-binding-metadata-snapshot.md b/.agents/notes/archived/bug-fix/2026-08-29-code-runtime-python-call-backlog-and-binding-metadata-snapshot.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-29-code-runtime-python-call-backlog-and-binding-metadata-snapshot.md rename to .agents/notes/archived/bug-fix/2026-08-29-code-runtime-python-call-backlog-and-binding-metadata-snapshot.md index afdad301a4..b1b9f28668 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-29-code-runtime-python-call-backlog-and-binding-metadata-snapshot.md +++ b/.agents/notes/archived/bug-fix/2026-08-29-code-runtime-python-call-backlog-and-binding-metadata-snapshot.md @@ -1,6 +1,7 @@ # Agent Note: Bound in-flight binding calls, snapshot binding metadata, compact the reply queue, and meter wide completions with cursors in the CPython backend Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-29-code-runtime-python-call-backlog-and-binding-metadata-snapshot.zh.md) diff --git a/.agents/notes/implemented/bug-fix/2026-08-29-code-runtime-python-call-backlog-and-binding-metadata-snapshot.zh.md b/.agents/notes/archived/bug-fix/2026-08-29-code-runtime-python-call-backlog-and-binding-metadata-snapshot.zh.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-29-code-runtime-python-call-backlog-and-binding-metadata-snapshot.zh.md rename to .agents/notes/archived/bug-fix/2026-08-29-code-runtime-python-call-backlog-and-binding-metadata-snapshot.zh.md index 48d6e07489..7f9608527e 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-29-code-runtime-python-call-backlog-and-binding-metadata-snapshot.zh.md +++ b/.agents/notes/archived/bug-fix/2026-08-29-code-runtime-python-call-backlog-and-binding-metadata-snapshot.zh.md @@ -1,6 +1,7 @@ # Agent Note: 在 CPython 后端限制在途 binding 调用、快照 binding 元数据、压缩回复队列并用游标计量宽完成值 Status: implemented +Archived: 2026-09-04 [English](2026-08-29-code-runtime-python-call-backlog-and-binding-metadata-snapshot.md) | 中文 diff --git a/.agents/notes/implemented/bug-fix/2026-08-29-code-runtime-python-load-and-dispatch-hardening.i18n.yaml b/.agents/notes/archived/bug-fix/2026-08-29-code-runtime-python-load-and-dispatch-hardening.i18n.yaml similarity index 51% rename from .agents/notes/implemented/bug-fix/2026-08-29-code-runtime-python-load-and-dispatch-hardening.i18n.yaml rename to .agents/notes/archived/bug-fix/2026-08-29-code-runtime-python-load-and-dispatch-hardening.i18n.yaml index cc95841077..8cb4682f33 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-29-code-runtime-python-load-and-dispatch-hardening.i18n.yaml +++ b/.agents/notes/archived/bug-fix/2026-08-29-code-runtime-python-load-and-dispatch-hardening.i18n.yaml @@ -1,6 +1,6 @@ # Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/bug-fix/2026-08-29-code-runtime-python-load-and-dispatch-hardening.md -2026-08-29-code-runtime-python-load-and-dispatch-hardening.md: 3d64f96420cd337fc8c7bb44e02f912e1868deed -2026-08-29-code-runtime-python-load-and-dispatch-hardening.zh.md: 64772eb14a09585b1ee0ab10ffcf1298b77b0a35 +# pnpm run verify-translation-pairing --write .agents/notes/archived/bug-fix/2026-08-29-code-runtime-python-load-and-dispatch-hardening.md +2026-08-29-code-runtime-python-load-and-dispatch-hardening.md: 43f864b8407f77f5faa9db7a9043bcca8910391b +2026-08-29-code-runtime-python-load-and-dispatch-hardening.zh.md: bca888c06e8f93482d2ef8c8c4f383d92ccbe738 diff --git a/.agents/notes/implemented/bug-fix/2026-08-29-code-runtime-python-load-and-dispatch-hardening.md b/.agents/notes/archived/bug-fix/2026-08-29-code-runtime-python-load-and-dispatch-hardening.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-29-code-runtime-python-load-and-dispatch-hardening.md rename to .agents/notes/archived/bug-fix/2026-08-29-code-runtime-python-load-and-dispatch-hardening.md index 3d64f96420..43f864b840 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-29-code-runtime-python-load-and-dispatch-hardening.md +++ b/.agents/notes/archived/bug-fix/2026-08-29-code-runtime-python-load-and-dispatch-hardening.md @@ -1,6 +1,7 @@ # Agent Note: Load-time pythonBin validation, binding snapshot, and reply-drain settle in the CPython backend Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-29-code-runtime-python-load-and-dispatch-hardening.zh.md) diff --git a/.agents/notes/implemented/bug-fix/2026-08-29-code-runtime-python-load-and-dispatch-hardening.zh.md b/.agents/notes/archived/bug-fix/2026-08-29-code-runtime-python-load-and-dispatch-hardening.zh.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-29-code-runtime-python-load-and-dispatch-hardening.zh.md rename to .agents/notes/archived/bug-fix/2026-08-29-code-runtime-python-load-and-dispatch-hardening.zh.md index 64772eb14a..bca888c06e 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-29-code-runtime-python-load-and-dispatch-hardening.zh.md +++ b/.agents/notes/archived/bug-fix/2026-08-29-code-runtime-python-load-and-dispatch-hardening.zh.md @@ -1,6 +1,7 @@ # Agent Note: CPython 后端的加载期 pythonBin 校验、binding 快照与回复排空结算 Status: implemented +Archived: 2026-09-04 [English](2026-08-29-code-runtime-python-load-and-dispatch-hardening.md) | 中文 diff --git a/.agents/notes/implemented/bug-fix/2026-08-29-code-runtime-python-reply-backlog-and-surrogate-count.i18n.yaml b/.agents/notes/archived/bug-fix/2026-08-29-code-runtime-python-reply-backlog-and-surrogate-count.i18n.yaml similarity index 60% rename from .agents/notes/implemented/bug-fix/2026-08-29-code-runtime-python-reply-backlog-and-surrogate-count.i18n.yaml rename to .agents/notes/archived/bug-fix/2026-08-29-code-runtime-python-reply-backlog-and-surrogate-count.i18n.yaml index 0e084349e7..4fd5487c05 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-29-code-runtime-python-reply-backlog-and-surrogate-count.i18n.yaml +++ b/.agents/notes/archived/bug-fix/2026-08-29-code-runtime-python-reply-backlog-and-surrogate-count.i18n.yaml @@ -1,6 +1,6 @@ # Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/bug-fix/2026-08-29-code-runtime-python-reply-backlog-and-surrogate-count.md -2026-08-29-code-runtime-python-reply-backlog-and-surrogate-count.md: 5ae31f669e2e207bc2f496d11ca3464f032783f1 -2026-08-29-code-runtime-python-reply-backlog-and-surrogate-count.zh.md: 799178dd54ceddd9b80b11e94d723282a037d398 +# pnpm run verify-translation-pairing --write .agents/notes/archived/bug-fix/2026-08-29-code-runtime-python-reply-backlog-and-surrogate-count.md +2026-08-29-code-runtime-python-reply-backlog-and-surrogate-count.md: f329e3c0ee9669bc1009b38ca3a198727b157dcc +2026-08-29-code-runtime-python-reply-backlog-and-surrogate-count.zh.md: be0cdafcf85fe2c2bb627730eb4ae61f65dfd44f diff --git a/.agents/notes/implemented/bug-fix/2026-08-29-code-runtime-python-reply-backlog-and-surrogate-count.md b/.agents/notes/archived/bug-fix/2026-08-29-code-runtime-python-reply-backlog-and-surrogate-count.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-29-code-runtime-python-reply-backlog-and-surrogate-count.md rename to .agents/notes/archived/bug-fix/2026-08-29-code-runtime-python-reply-backlog-and-surrogate-count.md index 5ae31f669e..f329e3c0ee 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-29-code-runtime-python-reply-backlog-and-surrogate-count.md +++ b/.agents/notes/archived/bug-fix/2026-08-29-code-runtime-python-reply-backlog-and-surrogate-count.md @@ -1,6 +1,7 @@ # Agent Note: Bound the reply backlog and count lone surrogates without a match list in the CPython backend Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-29-code-runtime-python-reply-backlog-and-surrogate-count.zh.md) diff --git a/.agents/notes/implemented/bug-fix/2026-08-29-code-runtime-python-reply-backlog-and-surrogate-count.zh.md b/.agents/notes/archived/bug-fix/2026-08-29-code-runtime-python-reply-backlog-and-surrogate-count.zh.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-29-code-runtime-python-reply-backlog-and-surrogate-count.zh.md rename to .agents/notes/archived/bug-fix/2026-08-29-code-runtime-python-reply-backlog-and-surrogate-count.zh.md index 799178dd54..be0cdafcf8 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-29-code-runtime-python-reply-backlog-and-surrogate-count.zh.md +++ b/.agents/notes/archived/bug-fix/2026-08-29-code-runtime-python-reply-backlog-and-surrogate-count.zh.md @@ -1,6 +1,7 @@ # Agent Note: 在 CPython 后端限制回复积压并改用长度差计数孤立代理项 Status: implemented +Archived: 2026-09-04 [English](2026-08-29-code-runtime-python-reply-backlog-and-surrogate-count.md) | 中文 diff --git a/.agents/notes/archived/bug-fix/2026-08-29-drill-claim-precedes-the-drill-edit.i18n.yaml b/.agents/notes/archived/bug-fix/2026-08-29-drill-claim-precedes-the-drill-edit.i18n.yaml new file mode 100644 index 0000000000..37a2583c9f --- /dev/null +++ b/.agents/notes/archived/bug-fix/2026-08-29-drill-claim-precedes-the-drill-edit.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/bug-fix/2026-08-29-drill-claim-precedes-the-drill-edit.md +2026-08-29-drill-claim-precedes-the-drill-edit.md: 0b9585e339bb1d5e7b5960e12696b4497da9e7d9 +2026-08-29-drill-claim-precedes-the-drill-edit.zh.md: a8a94c34f2fe58335cdff5b37965ff094f6d7505 diff --git a/.agents/notes/implemented/bug-fix/2026-08-29-drill-claim-precedes-the-drill-edit.md b/.agents/notes/archived/bug-fix/2026-08-29-drill-claim-precedes-the-drill-edit.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-29-drill-claim-precedes-the-drill-edit.md rename to .agents/notes/archived/bug-fix/2026-08-29-drill-claim-precedes-the-drill-edit.md index 35ca60360c..0b9585e339 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-29-drill-claim-precedes-the-drill-edit.md +++ b/.agents/notes/archived/bug-fix/2026-08-29-drill-claim-precedes-the-drill-edit.md @@ -1,6 +1,7 @@ # Agent Note: The drill claim is published before the edit that re-enters tracking Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-29-drill-claim-precedes-the-drill-edit.zh.md) diff --git a/.agents/notes/implemented/bug-fix/2026-08-29-drill-claim-precedes-the-drill-edit.zh.md b/.agents/notes/archived/bug-fix/2026-08-29-drill-claim-precedes-the-drill-edit.zh.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-29-drill-claim-precedes-the-drill-edit.zh.md rename to .agents/notes/archived/bug-fix/2026-08-29-drill-claim-precedes-the-drill-edit.zh.md index 58f7ca84d2..a8a94c34f2 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-29-drill-claim-precedes-the-drill-edit.zh.md +++ b/.agents/notes/archived/bug-fix/2026-08-29-drill-claim-precedes-the-drill-edit.zh.md @@ -1,6 +1,7 @@ # Agent Note: The drill claim is published before the edit that re-enters tracking Status: implemented +Archived: 2026-09-04 [English](2026-08-29-drill-claim-precedes-the-drill-edit.md) | 中文 diff --git a/.agents/notes/archived/bug-fix/2026-08-29-windows-atomic-replace-retry.i18n.yaml b/.agents/notes/archived/bug-fix/2026-08-29-windows-atomic-replace-retry.i18n.yaml new file mode 100644 index 0000000000..f74c61c6e5 --- /dev/null +++ b/.agents/notes/archived/bug-fix/2026-08-29-windows-atomic-replace-retry.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/bug-fix/2026-08-29-windows-atomic-replace-retry.md +2026-08-29-windows-atomic-replace-retry.md: bad59309451b19e7e17e0600e382df9001cc57f9 +2026-08-29-windows-atomic-replace-retry.zh.md: 28f66669083f5e53d9cc4fe7a7e75dffa9813481 diff --git a/.agents/notes/implemented/bug-fix/2026-08-29-windows-atomic-replace-retry.md b/.agents/notes/archived/bug-fix/2026-08-29-windows-atomic-replace-retry.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-29-windows-atomic-replace-retry.md rename to .agents/notes/archived/bug-fix/2026-08-29-windows-atomic-replace-retry.md index 4db5de6403..bad5930945 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-29-windows-atomic-replace-retry.md +++ b/.agents/notes/archived/bug-fix/2026-08-29-windows-atomic-replace-retry.md @@ -1,6 +1,7 @@ # Agent Note: Retry transient Windows atomic replacements Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-29-windows-atomic-replace-retry.zh.md) diff --git a/.agents/notes/implemented/bug-fix/2026-08-29-windows-atomic-replace-retry.zh.md b/.agents/notes/archived/bug-fix/2026-08-29-windows-atomic-replace-retry.zh.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-08-29-windows-atomic-replace-retry.zh.md rename to .agents/notes/archived/bug-fix/2026-08-29-windows-atomic-replace-retry.zh.md index 0138727ac0..28f6666908 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-29-windows-atomic-replace-retry.zh.md +++ b/.agents/notes/archived/bug-fix/2026-08-29-windows-atomic-replace-retry.zh.md @@ -1,6 +1,7 @@ # Agent Note: 重试 Windows 上的瞬时原子替换失败 Status: implemented +Archived: 2026-09-04 [English](2026-08-29-windows-atomic-replace-retry.md) | 中文 diff --git a/.agents/notes/archived/bug-fix/2026-09-01-host-goal-pause-aborts-turn.i18n.yaml b/.agents/notes/archived/bug-fix/2026-09-01-host-goal-pause-aborts-turn.i18n.yaml new file mode 100644 index 0000000000..71379ff19a --- /dev/null +++ b/.agents/notes/archived/bug-fix/2026-09-01-host-goal-pause-aborts-turn.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/bug-fix/2026-09-01-host-goal-pause-aborts-turn.md +2026-09-01-host-goal-pause-aborts-turn.md: 3a0246f4cc119097498d840682b29c1c5eb3bb56 +2026-09-01-host-goal-pause-aborts-turn.zh.md: 0c88bb736d85979618040f4fedf8febd44e1fdf5 diff --git a/.agents/notes/implemented/bug-fix/2026-09-01-host-goal-pause-aborts-turn.md b/.agents/notes/archived/bug-fix/2026-09-01-host-goal-pause-aborts-turn.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-09-01-host-goal-pause-aborts-turn.md rename to .agents/notes/archived/bug-fix/2026-09-01-host-goal-pause-aborts-turn.md index 8a6acc1403..3a0246f4cc 100644 --- a/.agents/notes/implemented/bug-fix/2026-09-01-host-goal-pause-aborts-turn.md +++ b/.agents/notes/archived/bug-fix/2026-09-01-host-goal-pause-aborts-turn.md @@ -1,6 +1,7 @@ # Agent Note: Host-initiated goal pause aborts the live turn Status: implemented +Archived: 2026-09-04 English | [中文](2026-09-01-host-goal-pause-aborts-turn.zh.md) diff --git a/.agents/notes/implemented/bug-fix/2026-09-01-host-goal-pause-aborts-turn.zh.md b/.agents/notes/archived/bug-fix/2026-09-01-host-goal-pause-aborts-turn.zh.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-09-01-host-goal-pause-aborts-turn.zh.md rename to .agents/notes/archived/bug-fix/2026-09-01-host-goal-pause-aborts-turn.zh.md index 60170cd102..0c88bb736d 100644 --- a/.agents/notes/implemented/bug-fix/2026-09-01-host-goal-pause-aborts-turn.zh.md +++ b/.agents/notes/archived/bug-fix/2026-09-01-host-goal-pause-aborts-turn.zh.md @@ -1,6 +1,7 @@ # Agent Note: 宿主发起的 goal 暂停中止当前轮次 Status: implemented +Archived: 2026-09-04 [English](2026-09-01-host-goal-pause-aborts-turn.md) | 中文 diff --git a/.agents/notes/archived/bug-fix/2026-09-03-fully-qualified-workspace-paths.i18n.yaml b/.agents/notes/archived/bug-fix/2026-09-03-fully-qualified-workspace-paths.i18n.yaml new file mode 100644 index 0000000000..c8da366972 --- /dev/null +++ b/.agents/notes/archived/bug-fix/2026-09-03-fully-qualified-workspace-paths.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/bug-fix/2026-09-03-fully-qualified-workspace-paths.md +2026-09-03-fully-qualified-workspace-paths.md: 9cf589383e98185b083112a3f958488473f0b1e2 +2026-09-03-fully-qualified-workspace-paths.zh.md: 33d5ec0a7373bce3f347c9740422bdd75da351df diff --git a/.agents/notes/implemented/bug-fix/2026-09-03-fully-qualified-workspace-paths.md b/.agents/notes/archived/bug-fix/2026-09-03-fully-qualified-workspace-paths.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-09-03-fully-qualified-workspace-paths.md rename to .agents/notes/archived/bug-fix/2026-09-03-fully-qualified-workspace-paths.md index 0bc6215ec5..9cf589383e 100644 --- a/.agents/notes/implemented/bug-fix/2026-09-03-fully-qualified-workspace-paths.md +++ b/.agents/notes/archived/bug-fix/2026-09-03-fully-qualified-workspace-paths.md @@ -1,6 +1,7 @@ # Agent Note: Fully qualified Workspace paths Status: implemented +Archived: 2026-09-04 English | [中文](2026-09-03-fully-qualified-workspace-paths.zh.md) diff --git a/.agents/notes/implemented/bug-fix/2026-09-03-fully-qualified-workspace-paths.zh.md b/.agents/notes/archived/bug-fix/2026-09-03-fully-qualified-workspace-paths.zh.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-09-03-fully-qualified-workspace-paths.zh.md rename to .agents/notes/archived/bug-fix/2026-09-03-fully-qualified-workspace-paths.zh.md index b8e67f9d34..33d5ec0a73 100644 --- a/.agents/notes/implemented/bug-fix/2026-09-03-fully-qualified-workspace-paths.zh.md +++ b/.agents/notes/archived/bug-fix/2026-09-03-fully-qualified-workspace-paths.zh.md @@ -1,6 +1,7 @@ # Agent Note: Workspace 完全限定路径 Status: implemented +Archived: 2026-09-04 [English](2026-09-03-fully-qualified-workspace-paths.md) | 中文 diff --git a/.agents/notes/archived/bug-fix/2026-09-03-hidden-windows-subprocess-windows.i18n.yaml b/.agents/notes/archived/bug-fix/2026-09-03-hidden-windows-subprocess-windows.i18n.yaml new file mode 100644 index 0000000000..0e472d7495 --- /dev/null +++ b/.agents/notes/archived/bug-fix/2026-09-03-hidden-windows-subprocess-windows.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/bug-fix/2026-09-03-hidden-windows-subprocess-windows.md +2026-09-03-hidden-windows-subprocess-windows.md: 3f449bf10ad8465b473d36ca13aee64f2a68bedb +2026-09-03-hidden-windows-subprocess-windows.zh.md: 0e3b3f5b1ff03bdf2a43af7ae658bc8a5be679ea diff --git a/.agents/notes/implemented/bug-fix/2026-09-03-hidden-windows-subprocess-windows.md b/.agents/notes/archived/bug-fix/2026-09-03-hidden-windows-subprocess-windows.md similarity index 99% rename from .agents/notes/implemented/bug-fix/2026-09-03-hidden-windows-subprocess-windows.md rename to .agents/notes/archived/bug-fix/2026-09-03-hidden-windows-subprocess-windows.md index 97af84ddc0..3f449bf10a 100644 --- a/.agents/notes/implemented/bug-fix/2026-09-03-hidden-windows-subprocess-windows.md +++ b/.agents/notes/archived/bug-fix/2026-09-03-hidden-windows-subprocess-windows.md @@ -1,6 +1,7 @@ # Agent Note: Suppressing Windows subprocess windows Status: implemented +Archived: 2026-09-04 English | [中文](2026-09-03-hidden-windows-subprocess-windows.zh.md) diff --git a/.agents/notes/implemented/bug-fix/2026-09-03-hidden-windows-subprocess-windows.zh.md b/.agents/notes/archived/bug-fix/2026-09-03-hidden-windows-subprocess-windows.zh.md similarity index 98% rename from .agents/notes/implemented/bug-fix/2026-09-03-hidden-windows-subprocess-windows.zh.md rename to .agents/notes/archived/bug-fix/2026-09-03-hidden-windows-subprocess-windows.zh.md index d8f986278e..0e3b3f5b1f 100644 --- a/.agents/notes/implemented/bug-fix/2026-09-03-hidden-windows-subprocess-windows.zh.md +++ b/.agents/notes/archived/bug-fix/2026-09-03-hidden-windows-subprocess-windows.zh.md @@ -1,6 +1,7 @@ # Agent Note: 隐藏 Windows 子进程窗口 Status: implemented +Archived: 2026-09-04 [English](2026-09-03-hidden-windows-subprocess-windows.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-06-14-acp-multi-session.i18n.yaml b/.agents/notes/archived/feature/2026-06-14-acp-multi-session.i18n.yaml new file mode 100644 index 0000000000..410ca23543 --- /dev/null +++ b/.agents/notes/archived/feature/2026-06-14-acp-multi-session.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-06-14-acp-multi-session.md +2026-06-14-acp-multi-session.md: 6a0cb25ce5b2f75907696e984adb4d659cfba9bd +2026-06-14-acp-multi-session.zh.md: f7a1f01c8cad85549fcc69eb8486120dd39b14cc diff --git a/.agents/notes/implemented/feature/2026-06-14-acp-multi-session.md b/.agents/notes/archived/feature/2026-06-14-acp-multi-session.md similarity index 99% rename from .agents/notes/implemented/feature/2026-06-14-acp-multi-session.md rename to .agents/notes/archived/feature/2026-06-14-acp-multi-session.md index 540bc0ee79..6a0cb25ce5 100644 --- a/.agents/notes/implemented/feature/2026-06-14-acp-multi-session.md +++ b/.agents/notes/archived/feature/2026-06-14-acp-multi-session.md @@ -1,6 +1,7 @@ # Agent Note: Multiplex concurrent ACP sessions over one connection Status: implemented +Archived: 2026-09-04 English | [中文](2026-06-14-acp-multi-session.zh.md) diff --git a/.agents/notes/implemented/feature/2026-06-14-acp-multi-session.zh.md b/.agents/notes/archived/feature/2026-06-14-acp-multi-session.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-06-14-acp-multi-session.zh.md rename to .agents/notes/archived/feature/2026-06-14-acp-multi-session.zh.md index 814f28bb67..f7a1f01c8c 100644 --- a/.agents/notes/implemented/feature/2026-06-14-acp-multi-session.zh.md +++ b/.agents/notes/archived/feature/2026-06-14-acp-multi-session.zh.md @@ -1,6 +1,7 @@ # Agent Note: 在单个连接上多路复用并发 ACP 会话 Status: implemented +Archived: 2026-09-04 [English](2026-06-14-acp-multi-session.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-06-17-filesystem-tool-schemas.i18n.yaml b/.agents/notes/archived/feature/2026-06-17-filesystem-tool-schemas.i18n.yaml new file mode 100644 index 0000000000..bfd58bc7b4 --- /dev/null +++ b/.agents/notes/archived/feature/2026-06-17-filesystem-tool-schemas.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-06-17-filesystem-tool-schemas.md +2026-06-17-filesystem-tool-schemas.md: 3f60e4c996b61838a8d53e99e7f13de3a1559d4c +2026-06-17-filesystem-tool-schemas.zh.md: 68f1f59e572cab8709e0e137c0d7fdc939d61ef6 diff --git a/.agents/notes/implemented/feature/2026-06-17-filesystem-tool-schemas.md b/.agents/notes/archived/feature/2026-06-17-filesystem-tool-schemas.md similarity index 99% rename from .agents/notes/implemented/feature/2026-06-17-filesystem-tool-schemas.md rename to .agents/notes/archived/feature/2026-06-17-filesystem-tool-schemas.md index 889129682f..3f60e4c996 100644 --- a/.agents/notes/implemented/feature/2026-06-17-filesystem-tool-schemas.md +++ b/.agents/notes/archived/feature/2026-06-17-filesystem-tool-schemas.md @@ -1,6 +1,7 @@ # Agent Note: Filesystem tool schemas — model-facing read/write/edit shapes Status: implemented +Archived: 2026-09-04 English | [中文](2026-06-17-filesystem-tool-schemas.zh.md) diff --git a/.agents/notes/implemented/feature/2026-06-17-filesystem-tool-schemas.zh.md b/.agents/notes/archived/feature/2026-06-17-filesystem-tool-schemas.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-06-17-filesystem-tool-schemas.zh.md rename to .agents/notes/archived/feature/2026-06-17-filesystem-tool-schemas.zh.md index 704bd4692b..68f1f59e57 100644 --- a/.agents/notes/implemented/feature/2026-06-17-filesystem-tool-schemas.zh.md +++ b/.agents/notes/archived/feature/2026-06-17-filesystem-tool-schemas.zh.md @@ -1,6 +1,7 @@ # Agent Note: 文件系统工具 schema——面向模型的读/写/编辑接口形状 Status: implemented +Archived: 2026-09-04 [English](2026-06-17-filesystem-tool-schemas.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-06-22-acp-subagent-backend.i18n.yaml b/.agents/notes/archived/feature/2026-06-22-acp-subagent-backend.i18n.yaml new file mode 100644 index 0000000000..1351ce2f74 --- /dev/null +++ b/.agents/notes/archived/feature/2026-06-22-acp-subagent-backend.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-06-22-acp-subagent-backend.md +2026-06-22-acp-subagent-backend.md: 7ed2b9c7462f0f0b88f51ddde93999894215d9b5 +2026-06-22-acp-subagent-backend.zh.md: 1aeecceb9b88ff3da9883c108f9f9b7475262fa5 diff --git a/.agents/notes/implemented/feature/2026-06-22-acp-subagent-backend.md b/.agents/notes/archived/feature/2026-06-22-acp-subagent-backend.md similarity index 99% rename from .agents/notes/implemented/feature/2026-06-22-acp-subagent-backend.md rename to .agents/notes/archived/feature/2026-06-22-acp-subagent-backend.md index 85129ec6a5..7ed2b9c746 100644 --- a/.agents/notes/implemented/feature/2026-06-22-acp-subagent-backend.md +++ b/.agents/notes/archived/feature/2026-06-22-acp-subagent-backend.md @@ -1,6 +1,7 @@ # Agent Note: ACP subagent backend (out-of-process delegation) Status: implemented +Archived: 2026-09-04 English | [中文](2026-06-22-acp-subagent-backend.zh.md) diff --git a/.agents/notes/implemented/feature/2026-06-22-acp-subagent-backend.zh.md b/.agents/notes/archived/feature/2026-06-22-acp-subagent-backend.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-06-22-acp-subagent-backend.zh.md rename to .agents/notes/archived/feature/2026-06-22-acp-subagent-backend.zh.md index ed0b3488a9..1aeecceb9b 100644 --- a/.agents/notes/implemented/feature/2026-06-22-acp-subagent-backend.zh.md +++ b/.agents/notes/archived/feature/2026-06-22-acp-subagent-backend.zh.md @@ -1,6 +1,7 @@ # Agent Note: ACP subagent 后端(进程外委派) Status: implemented +Archived: 2026-09-04 [English](2026-06-22-acp-subagent-backend.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-06-24-workspace-context.i18n.yaml b/.agents/notes/archived/feature/2026-06-24-workspace-context.i18n.yaml new file mode 100644 index 0000000000..bb387c6f68 --- /dev/null +++ b/.agents/notes/archived/feature/2026-06-24-workspace-context.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-06-24-workspace-context.md +2026-06-24-workspace-context.md: 96bc4cc443cd480dd3e38e6162097aedd58f11f0 +2026-06-24-workspace-context.zh.md: a56d45bd23c5606b8dfee315c43e81abace2f3f9 diff --git a/.agents/notes/implemented/feature/2026-06-24-workspace-context.md b/.agents/notes/archived/feature/2026-06-24-workspace-context.md similarity index 99% rename from .agents/notes/implemented/feature/2026-06-24-workspace-context.md rename to .agents/notes/archived/feature/2026-06-24-workspace-context.md index b676ab146b..96bc4cc443 100644 --- a/.agents/notes/implemented/feature/2026-06-24-workspace-context.md +++ b/.agents/notes/archived/feature/2026-06-24-workspace-context.md @@ -1,6 +1,7 @@ # Agent Note: Workspace context instruction files Status: implemented +Archived: 2026-09-04 English | [中文](2026-06-24-workspace-context.zh.md) diff --git a/.agents/notes/implemented/feature/2026-06-24-workspace-context.zh.md b/.agents/notes/archived/feature/2026-06-24-workspace-context.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-06-24-workspace-context.zh.md rename to .agents/notes/archived/feature/2026-06-24-workspace-context.zh.md index e75adf39f3..a56d45bd23 100644 --- a/.agents/notes/implemented/feature/2026-06-24-workspace-context.zh.md +++ b/.agents/notes/archived/feature/2026-06-24-workspace-context.zh.md @@ -1,6 +1,7 @@ # Agent Note: 工作区上下文指令文件 Status: implemented +Archived: 2026-09-04 [English](2026-06-24-workspace-context.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-06-29-todo-write-tool.i18n.yaml b/.agents/notes/archived/feature/2026-06-29-todo-write-tool.i18n.yaml new file mode 100644 index 0000000000..995c0a1029 --- /dev/null +++ b/.agents/notes/archived/feature/2026-06-29-todo-write-tool.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-06-29-todo-write-tool.md +2026-06-29-todo-write-tool.md: 8accda2b7069554326f3b7ed1ddc7ffe842500b5 +2026-06-29-todo-write-tool.zh.md: ff356debaece11d413414496a9b14c7d727bbed9 diff --git a/.agents/notes/implemented/feature/2026-06-29-todo-write-tool.md b/.agents/notes/archived/feature/2026-06-29-todo-write-tool.md similarity index 99% rename from .agents/notes/implemented/feature/2026-06-29-todo-write-tool.md rename to .agents/notes/archived/feature/2026-06-29-todo-write-tool.md index 4fe6cd5ce9..8accda2b70 100644 --- a/.agents/notes/implemented/feature/2026-06-29-todo-write-tool.md +++ b/.agents/notes/archived/feature/2026-06-29-todo-write-tool.md @@ -1,6 +1,7 @@ # Agent Note: The `todo_write` tool — model task list as event-sourced session state Status: implemented +Archived: 2026-09-04 English | [中文](2026-06-29-todo-write-tool.zh.md) diff --git a/.agents/notes/implemented/feature/2026-06-29-todo-write-tool.zh.md b/.agents/notes/archived/feature/2026-06-29-todo-write-tool.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-06-29-todo-write-tool.zh.md rename to .agents/notes/archived/feature/2026-06-29-todo-write-tool.zh.md index eaeb70b02c..ff356debae 100644 --- a/.agents/notes/implemented/feature/2026-06-29-todo-write-tool.zh.md +++ b/.agents/notes/archived/feature/2026-06-29-todo-write-tool.zh.md @@ -1,6 +1,7 @@ # Agent Note: `todo_write` 工具——将模型任务列表作为事件溯源的会话状态 Status: implemented +Archived: 2026-09-04 [English](2026-06-29-todo-write-tool.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-06-30-hook-bridges.i18n.yaml b/.agents/notes/archived/feature/2026-06-30-hook-bridges.i18n.yaml new file mode 100644 index 0000000000..7c8b789887 --- /dev/null +++ b/.agents/notes/archived/feature/2026-06-30-hook-bridges.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-06-30-hook-bridges.md +2026-06-30-hook-bridges.md: c3f8dc53ea91d4cb5546385ba0ff595b6dbb36bc +2026-06-30-hook-bridges.zh.md: c2ce08607e01f6cd0bae87a2822b674e610da1cc diff --git a/.agents/notes/implemented/feature/2026-06-30-hook-bridges.md b/.agents/notes/archived/feature/2026-06-30-hook-bridges.md similarity index 99% rename from .agents/notes/implemented/feature/2026-06-30-hook-bridges.md rename to .agents/notes/archived/feature/2026-06-30-hook-bridges.md index 30d481f8bd..c3f8dc53ea 100644 --- a/.agents/notes/implemented/feature/2026-06-30-hook-bridges.md +++ b/.agents/notes/archived/feature/2026-06-30-hook-bridges.md @@ -1,6 +1,7 @@ # Agent Note: dsh-hooks-claude-code + dsh-hooks-codex — the Claude Code / Codex hook bridges Status: implemented +Archived: 2026-09-04 English | [中文](2026-06-30-hook-bridges.zh.md) diff --git a/.agents/notes/implemented/feature/2026-06-30-hook-bridges.zh.md b/.agents/notes/archived/feature/2026-06-30-hook-bridges.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-06-30-hook-bridges.zh.md rename to .agents/notes/archived/feature/2026-06-30-hook-bridges.zh.md index 5d994bb063..c2ce08607e 100644 --- a/.agents/notes/implemented/feature/2026-06-30-hook-bridges.zh.md +++ b/.agents/notes/archived/feature/2026-06-30-hook-bridges.zh.md @@ -1,6 +1,7 @@ # Agent Note: dsh-hooks-claude-code + dsh-hooks-codex —— Claude Code / Codex 钩子桥接插件 Status: implemented +Archived: 2026-09-04 [English](2026-06-30-hook-bridges.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-06-30-hook-protocol-lib.i18n.yaml b/.agents/notes/archived/feature/2026-06-30-hook-protocol-lib.i18n.yaml new file mode 100644 index 0000000000..86d2211506 --- /dev/null +++ b/.agents/notes/archived/feature/2026-06-30-hook-protocol-lib.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-06-30-hook-protocol-lib.md +2026-06-30-hook-protocol-lib.md: a8cfdfa85d35fa09de73cf30a84e079df2f14be5 +2026-06-30-hook-protocol-lib.zh.md: 2b080465311677be14d209b36fc972c8bc7b58f0 diff --git a/.agents/notes/implemented/feature/2026-06-30-hook-protocol-lib.md b/.agents/notes/archived/feature/2026-06-30-hook-protocol-lib.md similarity index 99% rename from .agents/notes/implemented/feature/2026-06-30-hook-protocol-lib.md rename to .agents/notes/archived/feature/2026-06-30-hook-protocol-lib.md index db00d0f880..a8cfdfa85d 100644 --- a/.agents/notes/implemented/feature/2026-06-30-hook-protocol-lib.md +++ b/.agents/notes/archived/feature/2026-06-30-hook-protocol-lib.md @@ -1,6 +1,7 @@ # Agent Note: dsh-hook-protocol — the shared Claude Code / Codex hook wire-protocol core Status: implemented +Archived: 2026-09-04 English | [中文](2026-06-30-hook-protocol-lib.zh.md) diff --git a/.agents/notes/implemented/feature/2026-06-30-hook-protocol-lib.zh.md b/.agents/notes/archived/feature/2026-06-30-hook-protocol-lib.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-06-30-hook-protocol-lib.zh.md rename to .agents/notes/archived/feature/2026-06-30-hook-protocol-lib.zh.md index 7b0208ec95..2b08046531 100644 --- a/.agents/notes/implemented/feature/2026-06-30-hook-protocol-lib.zh.md +++ b/.agents/notes/archived/feature/2026-06-30-hook-protocol-lib.zh.md @@ -1,6 +1,7 @@ # Agent Note: dsh-hook-protocol——Claude Code / Codex 钩子协议格式共享核心库 Status: implemented +Archived: 2026-09-04 [English](2026-06-30-hook-protocol-lib.md) | 中文 diff --git a/.agents/notes/implemented/feature/2026-07-24-web-session-model-selector.i18n.yaml b/.agents/notes/archived/feature/2026-06-30-session-store-fork-api.i18n.yaml similarity index 57% rename from .agents/notes/implemented/feature/2026-07-24-web-session-model-selector.i18n.yaml rename to .agents/notes/archived/feature/2026-06-30-session-store-fork-api.i18n.yaml index 77043c364c..8c8adcf525 100644 --- a/.agents/notes/implemented/feature/2026-07-24-web-session-model-selector.i18n.yaml +++ b/.agents/notes/archived/feature/2026-06-30-session-store-fork-api.i18n.yaml @@ -1,6 +1,6 @@ # Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-07-24-web-session-model-selector.md -2026-07-24-web-session-model-selector.md: b001bb0f6cb9ec13a353b808bd46de9cfe054107 -2026-07-24-web-session-model-selector.zh.md: a339a367dbe00368b909ddd775409c730b9519ad +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-06-30-session-store-fork-api.md +2026-06-30-session-store-fork-api.md: ea80da2d948f5f7abfdf442fba1999c926aaa093 +2026-06-30-session-store-fork-api.zh.md: 7b14ed5a462d9ae5fcb14774ccee4cffea50b208 diff --git a/.agents/notes/implemented/feature/2026-06-30-session-store-fork-api.md b/.agents/notes/archived/feature/2026-06-30-session-store-fork-api.md similarity index 99% rename from .agents/notes/implemented/feature/2026-06-30-session-store-fork-api.md rename to .agents/notes/archived/feature/2026-06-30-session-store-fork-api.md index a2d169a36a..ea80da2d94 100644 --- a/.agents/notes/implemented/feature/2026-06-30-session-store-fork-api.md +++ b/.agents/notes/archived/feature/2026-06-30-session-store-fork-api.md @@ -1,6 +1,7 @@ # Agent Note: SessionStore fork API Status: implemented +Archived: 2026-09-04 English | [中文](2026-06-30-session-store-fork-api.zh.md) diff --git a/.agents/notes/implemented/feature/2026-06-30-session-store-fork-api.zh.md b/.agents/notes/archived/feature/2026-06-30-session-store-fork-api.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-06-30-session-store-fork-api.zh.md rename to .agents/notes/archived/feature/2026-06-30-session-store-fork-api.zh.md index 5ebf05e677..7b14ed5a46 100644 --- a/.agents/notes/implemented/feature/2026-06-30-session-store-fork-api.zh.md +++ b/.agents/notes/archived/feature/2026-06-30-session-store-fork-api.zh.md @@ -1,6 +1,7 @@ # Agent Note: SessionStore fork API Status: implemented +Archived: 2026-09-04 [English](2026-06-30-session-store-fork-api.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-07-05-skill-system.i18n.yaml b/.agents/notes/archived/feature/2026-07-05-skill-system.i18n.yaml new file mode 100644 index 0000000000..459ee2be56 --- /dev/null +++ b/.agents/notes/archived/feature/2026-07-05-skill-system.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-07-05-skill-system.md +2026-07-05-skill-system.md: 697612a1bfe46ad8e6066a77690b8b1ac7a15a73 +2026-07-05-skill-system.zh.md: 26756f20eaf5e1ee0b0b207df3b3299340fb3dc9 diff --git a/.agents/notes/implemented/feature/2026-07-05-skill-system.md b/.agents/notes/archived/feature/2026-07-05-skill-system.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-05-skill-system.md rename to .agents/notes/archived/feature/2026-07-05-skill-system.md index 21ad2c899e..697612a1bf 100644 --- a/.agents/notes/implemented/feature/2026-07-05-skill-system.md +++ b/.agents/notes/archived/feature/2026-07-05-skill-system.md @@ -1,6 +1,7 @@ # Agent Note: Skill system — progressive disclosure instructions for agents Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-05-skill-system.zh.md) diff --git a/.agents/notes/implemented/feature/2026-07-05-skill-system.zh.md b/.agents/notes/archived/feature/2026-07-05-skill-system.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-05-skill-system.zh.md rename to .agents/notes/archived/feature/2026-07-05-skill-system.zh.md index 44dbce33b5..26756f20ea 100644 --- a/.agents/notes/implemented/feature/2026-07-05-skill-system.zh.md +++ b/.agents/notes/archived/feature/2026-07-05-skill-system.zh.md @@ -1,6 +1,7 @@ # Agent Note: Skill 系统——面向 agent 的渐进式指令披露 Status: implemented +Archived: 2026-09-04 [English](2026-07-05-skill-system.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-07-06-explicit-tool-order.i18n.yaml b/.agents/notes/archived/feature/2026-07-06-explicit-tool-order.i18n.yaml new file mode 100644 index 0000000000..bf355f0c06 --- /dev/null +++ b/.agents/notes/archived/feature/2026-07-06-explicit-tool-order.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-07-06-explicit-tool-order.md +2026-07-06-explicit-tool-order.md: 46cf0f921f5e84e18560ffd8447eb44293e9ac33 +2026-07-06-explicit-tool-order.zh.md: 42cc45fda31a83eeca8db58132ec9f947a420d89 diff --git a/.agents/notes/implemented/feature/2026-07-06-explicit-tool-order.md b/.agents/notes/archived/feature/2026-07-06-explicit-tool-order.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-06-explicit-tool-order.md rename to .agents/notes/archived/feature/2026-07-06-explicit-tool-order.md index 735818ba5b..46cf0f921f 100644 --- a/.agents/notes/implemented/feature/2026-07-06-explicit-tool-order.md +++ b/.agents/notes/archived/feature/2026-07-06-explicit-tool-order.md @@ -1,6 +1,7 @@ # Agent Note: Explicit model-facing tool order Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-06-explicit-tool-order.zh.md) diff --git a/.agents/notes/implemented/feature/2026-07-06-explicit-tool-order.zh.md b/.agents/notes/archived/feature/2026-07-06-explicit-tool-order.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-06-explicit-tool-order.zh.md rename to .agents/notes/archived/feature/2026-07-06-explicit-tool-order.zh.md index cb5fa1f7fb..42cc45fda3 100644 --- a/.agents/notes/implemented/feature/2026-07-06-explicit-tool-order.zh.md +++ b/.agents/notes/archived/feature/2026-07-06-explicit-tool-order.zh.md @@ -1,6 +1,7 @@ # Agent Note: 显式的模型侧工具顺序 Status: implemented +Archived: 2026-09-04 [English](2026-07-06-explicit-tool-order.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-07-08-background-subagent-tasks.i18n.yaml b/.agents/notes/archived/feature/2026-07-08-background-subagent-tasks.i18n.yaml new file mode 100644 index 0000000000..0c58041f95 --- /dev/null +++ b/.agents/notes/archived/feature/2026-07-08-background-subagent-tasks.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-07-08-background-subagent-tasks.md +2026-07-08-background-subagent-tasks.md: ce5858297e72661e462e2fd200ce8e3c1e20b547 +2026-07-08-background-subagent-tasks.zh.md: a1bd8bcb58314e0326af63d998d495409ff7e0b6 diff --git a/.agents/notes/implemented/feature/2026-07-08-background-subagent-tasks.md b/.agents/notes/archived/feature/2026-07-08-background-subagent-tasks.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-08-background-subagent-tasks.md rename to .agents/notes/archived/feature/2026-07-08-background-subagent-tasks.md index 4dcd961ee5..ce5858297e 100644 --- a/.agents/notes/implemented/feature/2026-07-08-background-subagent-tasks.md +++ b/.agents/notes/archived/feature/2026-07-08-background-subagent-tasks.md @@ -1,6 +1,7 @@ # Agent Note: Background subagent tasks Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-08-background-subagent-tasks.zh.md) diff --git a/.agents/notes/implemented/feature/2026-07-08-background-subagent-tasks.zh.md b/.agents/notes/archived/feature/2026-07-08-background-subagent-tasks.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-08-background-subagent-tasks.zh.md rename to .agents/notes/archived/feature/2026-07-08-background-subagent-tasks.zh.md index f35ac9e040..a1bd8bcb58 100644 --- a/.agents/notes/implemented/feature/2026-07-08-background-subagent-tasks.zh.md +++ b/.agents/notes/archived/feature/2026-07-08-background-subagent-tasks.zh.md @@ -1,6 +1,7 @@ # Agent Note: 后台 subagent 任务 Status: implemented +Archived: 2026-09-04 [English](2026-07-08-background-subagent-tasks.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-07-10-agent-session-identity-and-log-location.i18n.yaml b/.agents/notes/archived/feature/2026-07-10-agent-session-identity-and-log-location.i18n.yaml new file mode 100644 index 0000000000..26272c5fde --- /dev/null +++ b/.agents/notes/archived/feature/2026-07-10-agent-session-identity-and-log-location.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-07-10-agent-session-identity-and-log-location.md +2026-07-10-agent-session-identity-and-log-location.md: f1dbc82f19b13f5466a07cf3d73e55415b96ff7f +2026-07-10-agent-session-identity-and-log-location.zh.md: cfa659ce6335d91aa667d85abf4ddcbfb40d3846 diff --git a/.agents/notes/implemented/feature/2026-07-10-agent-session-identity-and-log-location.md b/.agents/notes/archived/feature/2026-07-10-agent-session-identity-and-log-location.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-10-agent-session-identity-and-log-location.md rename to .agents/notes/archived/feature/2026-07-10-agent-session-identity-and-log-location.md index c849ffb882..f1dbc82f19 100644 --- a/.agents/notes/implemented/feature/2026-07-10-agent-session-identity-and-log-location.md +++ b/.agents/notes/archived/feature/2026-07-10-agent-session-identity-and-log-location.md @@ -1,6 +1,7 @@ # Agent Note: Expose agent session identity to tools and hooks Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-10-agent-session-identity-and-log-location.zh.md) diff --git a/.agents/notes/implemented/feature/2026-07-10-agent-session-identity-and-log-location.zh.md b/.agents/notes/archived/feature/2026-07-10-agent-session-identity-and-log-location.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-10-agent-session-identity-and-log-location.zh.md rename to .agents/notes/archived/feature/2026-07-10-agent-session-identity-and-log-location.zh.md index 0782699383..cfa659ce63 100644 --- a/.agents/notes/implemented/feature/2026-07-10-agent-session-identity-and-log-location.zh.md +++ b/.agents/notes/archived/feature/2026-07-10-agent-session-identity-and-log-location.zh.md @@ -1,6 +1,7 @@ # Agent Note: 向工具与钩子公开 agent 会话标识 Status: implemented +Archived: 2026-09-04 [English](2026-07-10-agent-session-identity-and-log-location.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-07-10-sqlite-session-query-provider.i18n.yaml b/.agents/notes/archived/feature/2026-07-10-sqlite-session-query-provider.i18n.yaml new file mode 100644 index 0000000000..6a5d34d6d6 --- /dev/null +++ b/.agents/notes/archived/feature/2026-07-10-sqlite-session-query-provider.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-07-10-sqlite-session-query-provider.md +2026-07-10-sqlite-session-query-provider.md: b5700150af72321f4befdff1baf67d16192454df +2026-07-10-sqlite-session-query-provider.zh.md: cb8151084aaa6dc8524fcc138d4ae3b3d9aa694f diff --git a/.agents/notes/implemented/feature/2026-07-10-sqlite-session-query-provider.md b/.agents/notes/archived/feature/2026-07-10-sqlite-session-query-provider.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-10-sqlite-session-query-provider.md rename to .agents/notes/archived/feature/2026-07-10-sqlite-session-query-provider.md index 46af02d39e..b5700150af 100644 --- a/.agents/notes/implemented/feature/2026-07-10-sqlite-session-query-provider.md +++ b/.agents/notes/archived/feature/2026-07-10-sqlite-session-query-provider.md @@ -1,6 +1,7 @@ # Agent Note: SQLite FTS5 session search Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-10-sqlite-session-query-provider.zh.md) diff --git a/.agents/notes/implemented/feature/2026-07-10-sqlite-session-query-provider.zh.md b/.agents/notes/archived/feature/2026-07-10-sqlite-session-query-provider.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-10-sqlite-session-query-provider.zh.md rename to .agents/notes/archived/feature/2026-07-10-sqlite-session-query-provider.zh.md index ccb833886a..cb8151084a 100644 --- a/.agents/notes/implemented/feature/2026-07-10-sqlite-session-query-provider.zh.md +++ b/.agents/notes/archived/feature/2026-07-10-sqlite-session-query-provider.zh.md @@ -1,6 +1,7 @@ # Agent Note: SQLite FTS5 会话搜索 Status: implemented +Archived: 2026-09-04 [English](2026-07-10-sqlite-session-query-provider.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-07-13-session-query-tracing.i18n.yaml b/.agents/notes/archived/feature/2026-07-13-session-query-tracing.i18n.yaml new file mode 100644 index 0000000000..34dbdf0e96 --- /dev/null +++ b/.agents/notes/archived/feature/2026-07-13-session-query-tracing.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-07-13-session-query-tracing.md +2026-07-13-session-query-tracing.md: 82a88644711d12d06e9bb86441572946679e7809 +2026-07-13-session-query-tracing.zh.md: 55fd8247c458a299378019fd59ce16ee6951943d diff --git a/.agents/notes/implemented/feature/2026-07-13-session-query-tracing.md b/.agents/notes/archived/feature/2026-07-13-session-query-tracing.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-13-session-query-tracing.md rename to .agents/notes/archived/feature/2026-07-13-session-query-tracing.md index 66ec68cff1..82a8864471 100644 --- a/.agents/notes/implemented/feature/2026-07-13-session-query-tracing.md +++ b/.agents/notes/archived/feature/2026-07-13-session-query-tracing.md @@ -1,6 +1,7 @@ # Agent Note: Session query relationship tracing Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-13-session-query-tracing.zh.md) diff --git a/.agents/notes/implemented/feature/2026-07-13-session-query-tracing.zh.md b/.agents/notes/archived/feature/2026-07-13-session-query-tracing.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-13-session-query-tracing.zh.md rename to .agents/notes/archived/feature/2026-07-13-session-query-tracing.zh.md index 315fc8d1b6..55fd8247c4 100644 --- a/.agents/notes/implemented/feature/2026-07-13-session-query-tracing.zh.md +++ b/.agents/notes/archived/feature/2026-07-13-session-query-tracing.zh.md @@ -1,6 +1,7 @@ # Agent Note: 会话查询关系追踪 Status: implemented +Archived: 2026-09-04 [English](2026-07-13-session-query-tracing.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-07-16-durable-per-step-time-context.i18n.yaml b/.agents/notes/archived/feature/2026-07-16-durable-per-step-time-context.i18n.yaml new file mode 100644 index 0000000000..a56e76242c --- /dev/null +++ b/.agents/notes/archived/feature/2026-07-16-durable-per-step-time-context.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-07-16-durable-per-step-time-context.md +2026-07-16-durable-per-step-time-context.md: 55ff50cd628315d3bd4c98b41d8f495a7881ab61 +2026-07-16-durable-per-step-time-context.zh.md: f599e25c19a40692814bb2e7879fc9e03edbb899 diff --git a/.agents/notes/implemented/feature/2026-07-16-durable-per-step-time-context.md b/.agents/notes/archived/feature/2026-07-16-durable-per-step-time-context.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-16-durable-per-step-time-context.md rename to .agents/notes/archived/feature/2026-07-16-durable-per-step-time-context.md index 9ebc16a054..55ff50cd62 100644 --- a/.agents/notes/implemented/feature/2026-07-16-durable-per-step-time-context.md +++ b/.agents/notes/archived/feature/2026-07-16-durable-per-step-time-context.md @@ -1,6 +1,7 @@ # Agent Note: Durable per-step time context Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-16-durable-per-step-time-context.zh.md) diff --git a/.agents/notes/implemented/feature/2026-07-16-durable-per-step-time-context.zh.md b/.agents/notes/archived/feature/2026-07-16-durable-per-step-time-context.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-16-durable-per-step-time-context.zh.md rename to .agents/notes/archived/feature/2026-07-16-durable-per-step-time-context.zh.md index e470b13e62..f599e25c19 100644 --- a/.agents/notes/implemented/feature/2026-07-16-durable-per-step-time-context.zh.md +++ b/.agents/notes/archived/feature/2026-07-16-durable-per-step-time-context.zh.md @@ -1,6 +1,7 @@ # Agent Note: 持久的逐步骤时间上下文 Status: implemented +Archived: 2026-09-04 [English](2026-07-16-durable-per-step-time-context.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-07-19-fresh-agent-ralph-workflow-tool.i18n.yaml b/.agents/notes/archived/feature/2026-07-19-fresh-agent-ralph-workflow-tool.i18n.yaml new file mode 100644 index 0000000000..865edae531 --- /dev/null +++ b/.agents/notes/archived/feature/2026-07-19-fresh-agent-ralph-workflow-tool.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-07-19-fresh-agent-ralph-workflow-tool.md +2026-07-19-fresh-agent-ralph-workflow-tool.md: 3f6fa8b86ed0f2588af5b485d683203e11db55eb +2026-07-19-fresh-agent-ralph-workflow-tool.zh.md: c265048898f62da1e7da1668a637b8dfb7202825 diff --git a/.agents/notes/implemented/feature/2026-07-19-fresh-agent-ralph-workflow-tool.md b/.agents/notes/archived/feature/2026-07-19-fresh-agent-ralph-workflow-tool.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-19-fresh-agent-ralph-workflow-tool.md rename to .agents/notes/archived/feature/2026-07-19-fresh-agent-ralph-workflow-tool.md index 9eedc022f0..3f6fa8b86e 100644 --- a/.agents/notes/implemented/feature/2026-07-19-fresh-agent-ralph-workflow-tool.md +++ b/.agents/notes/archived/feature/2026-07-19-fresh-agent-ralph-workflow-tool.md @@ -1,6 +1,7 @@ # Agent Note: Fresh-agent Ralph workflow tool Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-19-fresh-agent-ralph-workflow-tool.zh.md) diff --git a/.agents/notes/implemented/feature/2026-07-19-fresh-agent-ralph-workflow-tool.zh.md b/.agents/notes/archived/feature/2026-07-19-fresh-agent-ralph-workflow-tool.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-19-fresh-agent-ralph-workflow-tool.zh.md rename to .agents/notes/archived/feature/2026-07-19-fresh-agent-ralph-workflow-tool.zh.md index 23c614d5b5..c265048898 100644 --- a/.agents/notes/implemented/feature/2026-07-19-fresh-agent-ralph-workflow-tool.zh.md +++ b/.agents/notes/archived/feature/2026-07-19-fresh-agent-ralph-workflow-tool.zh.md @@ -1,6 +1,7 @@ # Agent Note: 全新 agent Ralph 工作流工具 Status: implemented +Archived: 2026-09-04 [English](2026-07-19-fresh-agent-ralph-workflow-tool.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-07-19-human-goal-command.i18n.yaml b/.agents/notes/archived/feature/2026-07-19-human-goal-command.i18n.yaml new file mode 100644 index 0000000000..cb5268cdfb --- /dev/null +++ b/.agents/notes/archived/feature/2026-07-19-human-goal-command.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-07-19-human-goal-command.md +2026-07-19-human-goal-command.md: c5d8ad30fd4b99755995dbaf3f0e599e5206cf5f +2026-07-19-human-goal-command.zh.md: ea91d6dcf4900bb20baab50acd56e946bc504311 diff --git a/.agents/notes/implemented/feature/2026-07-19-human-goal-command.md b/.agents/notes/archived/feature/2026-07-19-human-goal-command.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-19-human-goal-command.md rename to .agents/notes/archived/feature/2026-07-19-human-goal-command.md index b87d52f2aa..c5d8ad30fd 100644 --- a/.agents/notes/implemented/feature/2026-07-19-human-goal-command.md +++ b/.agents/notes/archived/feature/2026-07-19-human-goal-command.md @@ -1,6 +1,7 @@ # Agent Note: Human `/goal` command Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-19-human-goal-command.zh.md) diff --git a/.agents/notes/implemented/feature/2026-07-19-human-goal-command.zh.md b/.agents/notes/archived/feature/2026-07-19-human-goal-command.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-19-human-goal-command.zh.md rename to .agents/notes/archived/feature/2026-07-19-human-goal-command.zh.md index 18d5829daf..ea91d6dcf4 100644 --- a/.agents/notes/implemented/feature/2026-07-19-human-goal-command.zh.md +++ b/.agents/notes/archived/feature/2026-07-19-human-goal-command.zh.md @@ -1,6 +1,7 @@ # Agent Note: 面向人类的 `/goal` 命令 Status: implemented +Archived: 2026-09-04 [English](2026-07-19-human-goal-command.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-07-19-same-session-goal-round-driver.i18n.yaml b/.agents/notes/archived/feature/2026-07-19-same-session-goal-round-driver.i18n.yaml new file mode 100644 index 0000000000..4f38b2331a --- /dev/null +++ b/.agents/notes/archived/feature/2026-07-19-same-session-goal-round-driver.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-07-19-same-session-goal-round-driver.md +2026-07-19-same-session-goal-round-driver.md: 388532ee82064d4c19607079845760e08a331c4f +2026-07-19-same-session-goal-round-driver.zh.md: d7ad122e66ff2f8ae15dc5872ecb1436a171685c diff --git a/.agents/notes/implemented/feature/2026-07-19-same-session-goal-round-driver.md b/.agents/notes/archived/feature/2026-07-19-same-session-goal-round-driver.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-19-same-session-goal-round-driver.md rename to .agents/notes/archived/feature/2026-07-19-same-session-goal-round-driver.md index 9a2bbf40e8..388532ee82 100644 --- a/.agents/notes/implemented/feature/2026-07-19-same-session-goal-round-driver.md +++ b/.agents/notes/archived/feature/2026-07-19-same-session-goal-round-driver.md @@ -1,6 +1,7 @@ # Agent Note: Same-session goal-round driver Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-19-same-session-goal-round-driver.zh.md) diff --git a/.agents/notes/implemented/feature/2026-07-19-same-session-goal-round-driver.zh.md b/.agents/notes/archived/feature/2026-07-19-same-session-goal-round-driver.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-19-same-session-goal-round-driver.zh.md rename to .agents/notes/archived/feature/2026-07-19-same-session-goal-round-driver.zh.md index a094b1289c..d7ad122e66 100644 --- a/.agents/notes/implemented/feature/2026-07-19-same-session-goal-round-driver.zh.md +++ b/.agents/notes/archived/feature/2026-07-19-same-session-goal-round-driver.zh.md @@ -1,6 +1,7 @@ # Agent Note: 同会话 Goal Round 驱动器 Status: implemented +Archived: 2026-09-04 [English](2026-07-19-same-session-goal-round-driver.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-07-20-dsh-cli-personal-config.i18n.yaml b/.agents/notes/archived/feature/2026-07-20-dsh-cli-personal-config.i18n.yaml new file mode 100644 index 0000000000..0a5bdefe0e --- /dev/null +++ b/.agents/notes/archived/feature/2026-07-20-dsh-cli-personal-config.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-07-20-dsh-cli-personal-config.md +2026-07-20-dsh-cli-personal-config.md: 61f766622fbf8e5d2d62b17fec037e2844307a45 +2026-07-20-dsh-cli-personal-config.zh.md: 2e4e926c70feff397e41640b54464ad89bf4f5c9 diff --git a/.agents/notes/implemented/feature/2026-07-20-dsh-cli-personal-config.md b/.agents/notes/archived/feature/2026-07-20-dsh-cli-personal-config.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-20-dsh-cli-personal-config.md rename to .agents/notes/archived/feature/2026-07-20-dsh-cli-personal-config.md index db1e5638f0..61f766622f 100644 --- a/.agents/notes/implemented/feature/2026-07-20-dsh-cli-personal-config.md +++ b/.agents/notes/archived/feature/2026-07-20-dsh-cli-personal-config.md @@ -1,6 +1,7 @@ # Agent Note: The dsh CLI and personal config overlays from the Harness home Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-20-dsh-cli-personal-config.zh.md) diff --git a/.agents/notes/implemented/feature/2026-07-20-dsh-cli-personal-config.zh.md b/.agents/notes/archived/feature/2026-07-20-dsh-cli-personal-config.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-20-dsh-cli-personal-config.zh.md rename to .agents/notes/archived/feature/2026-07-20-dsh-cli-personal-config.zh.md index d796d98874..2e4e926c70 100644 --- a/.agents/notes/implemented/feature/2026-07-20-dsh-cli-personal-config.zh.md +++ b/.agents/notes/archived/feature/2026-07-20-dsh-cli-personal-config.zh.md @@ -1,6 +1,7 @@ # Agent Note: dsh CLI 与来自 Harness home 的个人配置 overlay Status: implemented +Archived: 2026-09-04 [English](2026-07-20-dsh-cli-personal-config.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-07-21-continuable-background-subagents.i18n.yaml b/.agents/notes/archived/feature/2026-07-21-continuable-background-subagents.i18n.yaml new file mode 100644 index 0000000000..efed041631 --- /dev/null +++ b/.agents/notes/archived/feature/2026-07-21-continuable-background-subagents.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-07-21-continuable-background-subagents.md +2026-07-21-continuable-background-subagents.md: 12f4bc6fc98114b6f25dbae8dbc4da6b658def10 +2026-07-21-continuable-background-subagents.zh.md: ee6db8dacdc331cd15ed9f59e54119f5cf3924df diff --git a/.agents/notes/implemented/feature/2026-07-21-continuable-background-subagents.md b/.agents/notes/archived/feature/2026-07-21-continuable-background-subagents.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-21-continuable-background-subagents.md rename to .agents/notes/archived/feature/2026-07-21-continuable-background-subagents.md index 24ab64879f..12f4bc6fc9 100644 --- a/.agents/notes/implemented/feature/2026-07-21-continuable-background-subagents.md +++ b/.agents/notes/archived/feature/2026-07-21-continuable-background-subagents.md @@ -1,6 +1,7 @@ # Agent Note: Continuable background subagents Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-21-continuable-background-subagents.zh.md) diff --git a/.agents/notes/implemented/feature/2026-07-21-continuable-background-subagents.zh.md b/.agents/notes/archived/feature/2026-07-21-continuable-background-subagents.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-21-continuable-background-subagents.zh.md rename to .agents/notes/archived/feature/2026-07-21-continuable-background-subagents.zh.md index 0cf06f7fe3..ee6db8dacd 100644 --- a/.agents/notes/implemented/feature/2026-07-21-continuable-background-subagents.zh.md +++ b/.agents/notes/archived/feature/2026-07-21-continuable-background-subagents.zh.md @@ -1,6 +1,7 @@ # Agent Note: 可继续的后台 subagent Status: implemented +Archived: 2026-09-04 [English](2026-07-21-continuable-background-subagents.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-07-21-cross-session-references.i18n.yaml b/.agents/notes/archived/feature/2026-07-21-cross-session-references.i18n.yaml new file mode 100644 index 0000000000..243a068ce5 --- /dev/null +++ b/.agents/notes/archived/feature/2026-07-21-cross-session-references.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-07-21-cross-session-references.md +2026-07-21-cross-session-references.md: 933f4b920f2f450488923970a146df4c2552c820 +2026-07-21-cross-session-references.zh.md: d4792dda8bff83852c7bae1dfcc9c916fa1407a5 diff --git a/.agents/notes/implemented/feature/2026-07-21-cross-session-references.md b/.agents/notes/archived/feature/2026-07-21-cross-session-references.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-21-cross-session-references.md rename to .agents/notes/archived/feature/2026-07-21-cross-session-references.md index 48a3241871..933f4b920f 100644 --- a/.agents/notes/implemented/feature/2026-07-21-cross-session-references.md +++ b/.agents/notes/archived/feature/2026-07-21-cross-session-references.md @@ -1,6 +1,7 @@ # Agent Note: Cross-session references Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-21-cross-session-references.zh.md) diff --git a/.agents/notes/implemented/feature/2026-07-21-cross-session-references.zh.md b/.agents/notes/archived/feature/2026-07-21-cross-session-references.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-21-cross-session-references.zh.md rename to .agents/notes/archived/feature/2026-07-21-cross-session-references.zh.md index 0daeec7836..d4792dda8b 100644 --- a/.agents/notes/implemented/feature/2026-07-21-cross-session-references.zh.md +++ b/.agents/notes/archived/feature/2026-07-21-cross-session-references.zh.md @@ -1,6 +1,7 @@ # Agent Note: 跨会话引用 Status: implemented +Archived: 2026-09-04 [English](2026-07-21-cross-session-references.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-07-21-instruction-load-all-dedup.i18n.yaml b/.agents/notes/archived/feature/2026-07-21-instruction-load-all-dedup.i18n.yaml new file mode 100644 index 0000000000..90c6944cdb --- /dev/null +++ b/.agents/notes/archived/feature/2026-07-21-instruction-load-all-dedup.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-07-21-instruction-load-all-dedup.md +2026-07-21-instruction-load-all-dedup.md: d8b1c79af06743afc01fb03d9a717361ec34a852 +2026-07-21-instruction-load-all-dedup.zh.md: ca6844ca67bb78ed769e1629bf97fd3a12182abb diff --git a/.agents/notes/implemented/feature/2026-07-21-instruction-load-all-dedup.md b/.agents/notes/archived/feature/2026-07-21-instruction-load-all-dedup.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-21-instruction-load-all-dedup.md rename to .agents/notes/archived/feature/2026-07-21-instruction-load-all-dedup.md index fc88b4ea6f..d8b1c79af0 100644 --- a/.agents/notes/implemented/feature/2026-07-21-instruction-load-all-dedup.md +++ b/.agents/notes/archived/feature/2026-07-21-instruction-load-all-dedup.md @@ -1,6 +1,7 @@ # Agent Note: Load all instruction candidates with per-directory dedup Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-21-instruction-load-all-dedup.zh.md) diff --git a/.agents/notes/implemented/feature/2026-07-21-instruction-load-all-dedup.zh.md b/.agents/notes/archived/feature/2026-07-21-instruction-load-all-dedup.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-21-instruction-load-all-dedup.zh.md rename to .agents/notes/archived/feature/2026-07-21-instruction-load-all-dedup.zh.md index f74585850d..ca6844ca67 100644 --- a/.agents/notes/implemented/feature/2026-07-21-instruction-load-all-dedup.zh.md +++ b/.agents/notes/archived/feature/2026-07-21-instruction-load-all-dedup.zh.md @@ -1,6 +1,7 @@ # Agent Note: 加载全部指令候选并按目录去重 Status: implemented +Archived: 2026-09-04 [English](2026-07-21-instruction-load-all-dedup.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-07-21-local-instruction-overlay.i18n.yaml b/.agents/notes/archived/feature/2026-07-21-local-instruction-overlay.i18n.yaml new file mode 100644 index 0000000000..6bc847b873 --- /dev/null +++ b/.agents/notes/archived/feature/2026-07-21-local-instruction-overlay.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-07-21-local-instruction-overlay.md +2026-07-21-local-instruction-overlay.md: 0124904e55dcdc34c393919232ac2a3ab6fb8d1e +2026-07-21-local-instruction-overlay.zh.md: 41c184cd25318225391d8e13bf9c48a0a943d2e6 diff --git a/.agents/notes/implemented/feature/2026-07-21-local-instruction-overlay.md b/.agents/notes/archived/feature/2026-07-21-local-instruction-overlay.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-21-local-instruction-overlay.md rename to .agents/notes/archived/feature/2026-07-21-local-instruction-overlay.md index 0574cb3568..0124904e55 100644 --- a/.agents/notes/implemented/feature/2026-07-21-local-instruction-overlay.md +++ b/.agents/notes/archived/feature/2026-07-21-local-instruction-overlay.md @@ -1,6 +1,7 @@ # Agent Note: Default local instruction overlay Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-21-local-instruction-overlay.zh.md) diff --git a/.agents/notes/implemented/feature/2026-07-21-local-instruction-overlay.zh.md b/.agents/notes/archived/feature/2026-07-21-local-instruction-overlay.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-21-local-instruction-overlay.zh.md rename to .agents/notes/archived/feature/2026-07-21-local-instruction-overlay.zh.md index cd7406374c..41c184cd25 100644 --- a/.agents/notes/implemented/feature/2026-07-21-local-instruction-overlay.zh.md +++ b/.agents/notes/archived/feature/2026-07-21-local-instruction-overlay.zh.md @@ -1,6 +1,7 @@ # Agent Note: 默认的本地指令覆盖层 Status: implemented +Archived: 2026-09-04 [English](2026-07-21-local-instruction-overlay.md) | 中文 diff --git a/.agents/notes/implemented/architecture/2026-08-09-layered-skill-registry.i18n.yaml b/.agents/notes/archived/feature/2026-07-21-log-backed-session-titles.i18n.yaml similarity index 58% rename from .agents/notes/implemented/architecture/2026-08-09-layered-skill-registry.i18n.yaml rename to .agents/notes/archived/feature/2026-07-21-log-backed-session-titles.i18n.yaml index bf18db3a99..4c333017a6 100644 --- a/.agents/notes/implemented/architecture/2026-08-09-layered-skill-registry.i18n.yaml +++ b/.agents/notes/archived/feature/2026-07-21-log-backed-session-titles.i18n.yaml @@ -1,6 +1,6 @@ # Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-08-09-layered-skill-registry.md -2026-08-09-layered-skill-registry.md: bf49dda62f7ce9bfb594828cca80c797522b3b04 -2026-08-09-layered-skill-registry.zh.md: 2f3f9c207b8766bd31a840b5c319dc8c73dbcb36 +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-07-21-log-backed-session-titles.md +2026-07-21-log-backed-session-titles.md: 716d9962b4f6d9c32b2b52de5c72d66b8603dad5 +2026-07-21-log-backed-session-titles.zh.md: 091eaa78d7cb80ef3633a84ef581d28861b9b5d8 diff --git a/.agents/notes/implemented/feature/2026-07-21-log-backed-session-titles.md b/.agents/notes/archived/feature/2026-07-21-log-backed-session-titles.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-21-log-backed-session-titles.md rename to .agents/notes/archived/feature/2026-07-21-log-backed-session-titles.md index 7bf9257813..716d9962b4 100644 --- a/.agents/notes/implemented/feature/2026-07-21-log-backed-session-titles.md +++ b/.agents/notes/archived/feature/2026-07-21-log-backed-session-titles.md @@ -1,6 +1,7 @@ # Agent Note: Log-backed session titles Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-21-log-backed-session-titles.zh.md) diff --git a/.agents/notes/implemented/feature/2026-07-21-log-backed-session-titles.zh.md b/.agents/notes/archived/feature/2026-07-21-log-backed-session-titles.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-21-log-backed-session-titles.zh.md rename to .agents/notes/archived/feature/2026-07-21-log-backed-session-titles.zh.md index e09317b1c0..091eaa78d7 100644 --- a/.agents/notes/implemented/feature/2026-07-21-log-backed-session-titles.zh.md +++ b/.agents/notes/archived/feature/2026-07-21-log-backed-session-titles.zh.md @@ -1,6 +1,7 @@ # Agent Note: 基于日志的会话标题 Status: implemented +Archived: 2026-09-04 [English](2026-07-21-log-backed-session-titles.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-07-22-durable-subagent-catalog-and-list-agents.i18n.yaml b/.agents/notes/archived/feature/2026-07-22-durable-subagent-catalog-and-list-agents.i18n.yaml new file mode 100644 index 0000000000..aebac9f4b1 --- /dev/null +++ b/.agents/notes/archived/feature/2026-07-22-durable-subagent-catalog-and-list-agents.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-07-22-durable-subagent-catalog-and-list-agents.md +2026-07-22-durable-subagent-catalog-and-list-agents.md: 8b516b941d502e4f4e8b1f2cb7ee8e828bb3df15 +2026-07-22-durable-subagent-catalog-and-list-agents.zh.md: cf5581bcd7b155592a16ff43cbccfdcc173720c8 diff --git a/.agents/notes/implemented/feature/2026-07-22-durable-subagent-catalog-and-list-agents.md b/.agents/notes/archived/feature/2026-07-22-durable-subagent-catalog-and-list-agents.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-22-durable-subagent-catalog-and-list-agents.md rename to .agents/notes/archived/feature/2026-07-22-durable-subagent-catalog-and-list-agents.md index df7298b542..8b516b941d 100644 --- a/.agents/notes/implemented/feature/2026-07-22-durable-subagent-catalog-and-list-agents.md +++ b/.agents/notes/archived/feature/2026-07-22-durable-subagent-catalog-and-list-agents.md @@ -1,6 +1,7 @@ # Agent Note: Durable subagent catalog and list_agents Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-22-durable-subagent-catalog-and-list-agents.zh.md) diff --git a/.agents/notes/implemented/feature/2026-07-22-durable-subagent-catalog-and-list-agents.zh.md b/.agents/notes/archived/feature/2026-07-22-durable-subagent-catalog-and-list-agents.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-22-durable-subagent-catalog-and-list-agents.zh.md rename to .agents/notes/archived/feature/2026-07-22-durable-subagent-catalog-and-list-agents.zh.md index 2f280ea1bf..cf5581bcd7 100644 --- a/.agents/notes/implemented/feature/2026-07-22-durable-subagent-catalog-and-list-agents.zh.md +++ b/.agents/notes/archived/feature/2026-07-22-durable-subagent-catalog-and-list-agents.zh.md @@ -1,6 +1,7 @@ # Agent Note: 持久化 subagent 目录与 list_agents Status: implemented +Archived: 2026-09-04 [English](2026-07-22-durable-subagent-catalog-and-list-agents.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-07-22-web-bind-address.i18n.yaml b/.agents/notes/archived/feature/2026-07-22-web-bind-address.i18n.yaml new file mode 100644 index 0000000000..00b53f8cf4 --- /dev/null +++ b/.agents/notes/archived/feature/2026-07-22-web-bind-address.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-07-22-web-bind-address.md +2026-07-22-web-bind-address.md: be1cdfb8ca510eab6e7deb7517e427a880cca663 +2026-07-22-web-bind-address.zh.md: 80a68a0d0c09cc40be02ce6f408cb04e74625284 diff --git a/.agents/notes/implemented/feature/2026-07-22-web-bind-address.md b/.agents/notes/archived/feature/2026-07-22-web-bind-address.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-22-web-bind-address.md rename to .agents/notes/archived/feature/2026-07-22-web-bind-address.md index 68275d220f..be1cdfb8ca 100644 --- a/.agents/notes/implemented/feature/2026-07-22-web-bind-address.md +++ b/.agents/notes/archived/feature/2026-07-22-web-bind-address.md @@ -1,6 +1,7 @@ # Agent Note: Explicit web bind address Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-22-web-bind-address.zh.md) diff --git a/.agents/notes/implemented/feature/2026-07-22-web-bind-address.zh.md b/.agents/notes/archived/feature/2026-07-22-web-bind-address.zh.md similarity index 98% rename from .agents/notes/implemented/feature/2026-07-22-web-bind-address.zh.md rename to .agents/notes/archived/feature/2026-07-22-web-bind-address.zh.md index 5bb4fdbbc3..80a68a0d0c 100644 --- a/.agents/notes/implemented/feature/2026-07-22-web-bind-address.zh.md +++ b/.agents/notes/archived/feature/2026-07-22-web-bind-address.zh.md @@ -1,6 +1,7 @@ # Agent Note: 显式指定 Web 绑定地址 Status: implemented +Archived: 2026-09-04 [English](2026-07-22-web-bind-address.md) | 中文 diff --git a/.agents/notes/implemented/feature/2026-07-22-web-multimodal-image-input-and-durable-attachments.i18n.yaml b/.agents/notes/archived/feature/2026-07-22-web-multimodal-image-input-and-durable-attachments.i18n.yaml similarity index 61% rename from .agents/notes/implemented/feature/2026-07-22-web-multimodal-image-input-and-durable-attachments.i18n.yaml rename to .agents/notes/archived/feature/2026-07-22-web-multimodal-image-input-and-durable-attachments.i18n.yaml index bbdf2836d7..e79b3af7a7 100644 --- a/.agents/notes/implemented/feature/2026-07-22-web-multimodal-image-input-and-durable-attachments.i18n.yaml +++ b/.agents/notes/archived/feature/2026-07-22-web-multimodal-image-input-and-durable-attachments.i18n.yaml @@ -1,6 +1,6 @@ # Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-07-22-web-multimodal-image-input-and-durable-attachments.md -2026-07-22-web-multimodal-image-input-and-durable-attachments.md: 135939b536e39db10fe1011501b7a7ce2b0956b2 -2026-07-22-web-multimodal-image-input-and-durable-attachments.zh.md: 3207e1f6a7fc5db65f4f4c7a51c2ae765f634cb7 +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-07-22-web-multimodal-image-input-and-durable-attachments.md +2026-07-22-web-multimodal-image-input-and-durable-attachments.md: 0158bc605d70048a1435b7005ac49bd46d27ed11 +2026-07-22-web-multimodal-image-input-and-durable-attachments.zh.md: 04c17d76287c478e3cc9bcdb08c15fe997157290 diff --git a/.agents/notes/implemented/feature/2026-07-22-web-multimodal-image-input-and-durable-attachments.md b/.agents/notes/archived/feature/2026-07-22-web-multimodal-image-input-and-durable-attachments.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-22-web-multimodal-image-input-and-durable-attachments.md rename to .agents/notes/archived/feature/2026-07-22-web-multimodal-image-input-and-durable-attachments.md index 135939b536..0158bc605d 100644 --- a/.agents/notes/implemented/feature/2026-07-22-web-multimodal-image-input-and-durable-attachments.md +++ b/.agents/notes/archived/feature/2026-07-22-web-multimodal-image-input-and-durable-attachments.md @@ -1,6 +1,7 @@ # Agent Note: Web multimodal image input and durable attachments Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-22-web-multimodal-image-input-and-durable-attachments.zh.md) diff --git a/.agents/notes/implemented/feature/2026-07-22-web-multimodal-image-input-and-durable-attachments.zh.md b/.agents/notes/archived/feature/2026-07-22-web-multimodal-image-input-and-durable-attachments.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-22-web-multimodal-image-input-and-durable-attachments.zh.md rename to .agents/notes/archived/feature/2026-07-22-web-multimodal-image-input-and-durable-attachments.zh.md index 3207e1f6a7..04c17d7628 100644 --- a/.agents/notes/implemented/feature/2026-07-22-web-multimodal-image-input-and-durable-attachments.zh.md +++ b/.agents/notes/archived/feature/2026-07-22-web-multimodal-image-input-and-durable-attachments.zh.md @@ -1,6 +1,7 @@ # Agent Note: Web 多模态图片输入与持久附件 Status: implemented +Archived: 2026-09-04 [English](2026-07-22-web-multimodal-image-input-and-durable-attachments.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-07-23-web-assistant-markdown.i18n.yaml b/.agents/notes/archived/feature/2026-07-23-web-assistant-markdown.i18n.yaml new file mode 100644 index 0000000000..00f25fc92a --- /dev/null +++ b/.agents/notes/archived/feature/2026-07-23-web-assistant-markdown.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-07-23-web-assistant-markdown.md +2026-07-23-web-assistant-markdown.md: 566fa0c2800f20c88a9f02cd71052cbf34095530 +2026-07-23-web-assistant-markdown.zh.md: cf22afadae0f26c2cadc9b3eae8afb2205257cf4 diff --git a/.agents/notes/implemented/feature/2026-07-23-web-assistant-markdown.md b/.agents/notes/archived/feature/2026-07-23-web-assistant-markdown.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-23-web-assistant-markdown.md rename to .agents/notes/archived/feature/2026-07-23-web-assistant-markdown.md index 4063ad647c..566fa0c280 100644 --- a/.agents/notes/implemented/feature/2026-07-23-web-assistant-markdown.md +++ b/.agents/notes/archived/feature/2026-07-23-web-assistant-markdown.md @@ -1,6 +1,7 @@ # Agent Note: Safe assistant Markdown in the Web conversation Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-23-web-assistant-markdown.zh.md) diff --git a/.agents/notes/implemented/feature/2026-07-23-web-assistant-markdown.zh.md b/.agents/notes/archived/feature/2026-07-23-web-assistant-markdown.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-23-web-assistant-markdown.zh.md rename to .agents/notes/archived/feature/2026-07-23-web-assistant-markdown.zh.md index 6b062e155c..cf22afadae 100644 --- a/.agents/notes/implemented/feature/2026-07-23-web-assistant-markdown.zh.md +++ b/.agents/notes/archived/feature/2026-07-23-web-assistant-markdown.zh.md @@ -1,6 +1,7 @@ # Agent Note: Web 对话中安全的 assistant Markdown Status: implemented +Archived: 2026-09-04 [English](2026-07-23-web-assistant-markdown.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-07-23-web-permission-and-approval.i18n.yaml b/.agents/notes/archived/feature/2026-07-23-web-permission-and-approval.i18n.yaml new file mode 100644 index 0000000000..d5329f8c73 --- /dev/null +++ b/.agents/notes/archived/feature/2026-07-23-web-permission-and-approval.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-07-23-web-permission-and-approval.md +2026-07-23-web-permission-and-approval.md: a7afdecc679454c9734b0e1a65914ca63c02e7d4 +2026-07-23-web-permission-and-approval.zh.md: 8d50e98946703bec6dfac5803092f107ee673876 diff --git a/.agents/notes/implemented/feature/2026-07-23-web-permission-and-approval.md b/.agents/notes/archived/feature/2026-07-23-web-permission-and-approval.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-23-web-permission-and-approval.md rename to .agents/notes/archived/feature/2026-07-23-web-permission-and-approval.md index f533adc43e..a7afdecc67 100644 --- a/.agents/notes/implemented/feature/2026-07-23-web-permission-and-approval.md +++ b/.agents/notes/archived/feature/2026-07-23-web-permission-and-approval.md @@ -1,6 +1,7 @@ # Agent Note: Web UI permission presets and approval answering Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-23-web-permission-and-approval.zh.md) diff --git a/.agents/notes/implemented/feature/2026-07-23-web-permission-and-approval.zh.md b/.agents/notes/archived/feature/2026-07-23-web-permission-and-approval.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-23-web-permission-and-approval.zh.md rename to .agents/notes/archived/feature/2026-07-23-web-permission-and-approval.zh.md index 85e70bac15..8d50e98946 100644 --- a/.agents/notes/implemented/feature/2026-07-23-web-permission-and-approval.zh.md +++ b/.agents/notes/archived/feature/2026-07-23-web-permission-and-approval.zh.md @@ -1,6 +1,7 @@ # Agent Note: Web UI 权限预设与审批应答 Status: implemented +Archived: 2026-09-04 [English](2026-07-23-web-permission-and-approval.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-07-23-web-todo-display.i18n.yaml b/.agents/notes/archived/feature/2026-07-23-web-todo-display.i18n.yaml new file mode 100644 index 0000000000..5113605f8a --- /dev/null +++ b/.agents/notes/archived/feature/2026-07-23-web-todo-display.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-07-23-web-todo-display.md +2026-07-23-web-todo-display.md: 19b1a766cf4803f2537442a1aca3a23236692c84 +2026-07-23-web-todo-display.zh.md: 50722c7b2756fbab82221b8a7ac555019ef86d38 diff --git a/.agents/notes/implemented/feature/2026-07-23-web-todo-display.md b/.agents/notes/archived/feature/2026-07-23-web-todo-display.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-23-web-todo-display.md rename to .agents/notes/archived/feature/2026-07-23-web-todo-display.md index e97301160f..19b1a766cf 100644 --- a/.agents/notes/implemented/feature/2026-07-23-web-todo-display.md +++ b/.agents/notes/archived/feature/2026-07-23-web-todo-display.md @@ -1,6 +1,7 @@ # Agent Note: Web todo display — snapshot side-effect channel + two render surfaces Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-23-web-todo-display.zh.md) diff --git a/.agents/notes/implemented/feature/2026-07-23-web-todo-display.zh.md b/.agents/notes/archived/feature/2026-07-23-web-todo-display.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-23-web-todo-display.zh.md rename to .agents/notes/archived/feature/2026-07-23-web-todo-display.zh.md index 84e4801d90..50722c7b27 100644 --- a/.agents/notes/implemented/feature/2026-07-23-web-todo-display.zh.md +++ b/.agents/notes/archived/feature/2026-07-23-web-todo-display.zh.md @@ -1,6 +1,7 @@ # Agent Note: Web todo 展示——快照副作用通道 + 两个渲染面 Status: implemented +Archived: 2026-09-04 [English](2026-07-23-web-todo-display.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-07-24-model-facing-session-query-tools.i18n.yaml b/.agents/notes/archived/feature/2026-07-24-model-facing-session-query-tools.i18n.yaml new file mode 100644 index 0000000000..16d01364b9 --- /dev/null +++ b/.agents/notes/archived/feature/2026-07-24-model-facing-session-query-tools.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-07-24-model-facing-session-query-tools.md +2026-07-24-model-facing-session-query-tools.md: 31218776e5876fa34378f4a9406b7090ebc10246 +2026-07-24-model-facing-session-query-tools.zh.md: 4d6821868e9d1d68e20b96606759bf5856f49309 diff --git a/.agents/notes/implemented/feature/2026-07-24-model-facing-session-query-tools.md b/.agents/notes/archived/feature/2026-07-24-model-facing-session-query-tools.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-24-model-facing-session-query-tools.md rename to .agents/notes/archived/feature/2026-07-24-model-facing-session-query-tools.md index 7dcb25fc42..31218776e5 100644 --- a/.agents/notes/implemented/feature/2026-07-24-model-facing-session-query-tools.md +++ b/.agents/notes/archived/feature/2026-07-24-model-facing-session-query-tools.md @@ -1,6 +1,7 @@ # Agent Note: Model-facing session query tools Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-24-model-facing-session-query-tools.zh.md) diff --git a/.agents/notes/implemented/feature/2026-07-24-model-facing-session-query-tools.zh.md b/.agents/notes/archived/feature/2026-07-24-model-facing-session-query-tools.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-24-model-facing-session-query-tools.zh.md rename to .agents/notes/archived/feature/2026-07-24-model-facing-session-query-tools.zh.md index cb2fa76417..4d6821868e 100644 --- a/.agents/notes/implemented/feature/2026-07-24-model-facing-session-query-tools.zh.md +++ b/.agents/notes/archived/feature/2026-07-24-model-facing-session-query-tools.zh.md @@ -1,6 +1,7 @@ # Agent Note: 面向模型的会话查询工具 Status: implemented +Archived: 2026-09-04 [English](2026-07-24-model-facing-session-query-tools.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-07-24-provider-retry-policies.i18n.yaml b/.agents/notes/archived/feature/2026-07-24-provider-retry-policies.i18n.yaml new file mode 100644 index 0000000000..2d8c39f7d3 --- /dev/null +++ b/.agents/notes/archived/feature/2026-07-24-provider-retry-policies.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-07-24-provider-retry-policies.md +2026-07-24-provider-retry-policies.md: ca35559b454ef0638618a36100ee470b4e1ccece +2026-07-24-provider-retry-policies.zh.md: 2138f9f0502351ca47ab3c3c3cf9e41a8b708620 diff --git a/.agents/notes/implemented/feature/2026-07-24-provider-retry-policies.md b/.agents/notes/archived/feature/2026-07-24-provider-retry-policies.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-24-provider-retry-policies.md rename to .agents/notes/archived/feature/2026-07-24-provider-retry-policies.md index 996e7fcef2..ca35559b45 100644 --- a/.agents/notes/implemented/feature/2026-07-24-provider-retry-policies.md +++ b/.agents/notes/archived/feature/2026-07-24-provider-retry-policies.md @@ -1,6 +1,7 @@ # Agent Note: Per-provider request retry policies Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-24-provider-retry-policies.zh.md) diff --git a/.agents/notes/implemented/feature/2026-07-24-provider-retry-policies.zh.md b/.agents/notes/archived/feature/2026-07-24-provider-retry-policies.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-24-provider-retry-policies.zh.md rename to .agents/notes/archived/feature/2026-07-24-provider-retry-policies.zh.md index 8b3cb96ddb..2138f9f050 100644 --- a/.agents/notes/implemented/feature/2026-07-24-provider-retry-policies.zh.md +++ b/.agents/notes/archived/feature/2026-07-24-provider-retry-policies.zh.md @@ -1,6 +1,7 @@ # Agent Note: 逐提供方请求重试策略 Status: implemented +Archived: 2026-09-04 [English](2026-07-24-provider-retry-policies.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-07-24-web-session-model-selector.i18n.yaml b/.agents/notes/archived/feature/2026-07-24-web-session-model-selector.i18n.yaml new file mode 100644 index 0000000000..f4b0774903 --- /dev/null +++ b/.agents/notes/archived/feature/2026-07-24-web-session-model-selector.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-07-24-web-session-model-selector.md +2026-07-24-web-session-model-selector.md: ddce59e1a89111029db38a8c7793772937be911e +2026-07-24-web-session-model-selector.zh.md: 738f0984dcbc3997db65defe30ba9df33cfa53f7 diff --git a/.agents/notes/implemented/feature/2026-07-24-web-session-model-selector.md b/.agents/notes/archived/feature/2026-07-24-web-session-model-selector.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-24-web-session-model-selector.md rename to .agents/notes/archived/feature/2026-07-24-web-session-model-selector.md index b001bb0f6c..ddce59e1a8 100644 --- a/.agents/notes/implemented/feature/2026-07-24-web-session-model-selector.md +++ b/.agents/notes/archived/feature/2026-07-24-web-session-model-selector.md @@ -1,6 +1,7 @@ # Agent Note: Session model selection in the Web composer Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-24-web-session-model-selector.zh.md) diff --git a/.agents/notes/implemented/feature/2026-07-24-web-session-model-selector.zh.md b/.agents/notes/archived/feature/2026-07-24-web-session-model-selector.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-24-web-session-model-selector.zh.md rename to .agents/notes/archived/feature/2026-07-24-web-session-model-selector.zh.md index a339a367db..738f0984dc 100644 --- a/.agents/notes/implemented/feature/2026-07-24-web-session-model-selector.zh.md +++ b/.agents/notes/archived/feature/2026-07-24-web-session-model-selector.zh.md @@ -1,6 +1,7 @@ # Agent Note: Web 对话输入区的会话模型选择 Status: implemented +Archived: 2026-09-04 [English](2026-07-24-web-session-model-selector.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-07-25-session-list-browsing-and-manual-order.i18n.yaml b/.agents/notes/archived/feature/2026-07-25-session-list-browsing-and-manual-order.i18n.yaml new file mode 100644 index 0000000000..4386b7e006 --- /dev/null +++ b/.agents/notes/archived/feature/2026-07-25-session-list-browsing-and-manual-order.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-07-25-session-list-browsing-and-manual-order.md +2026-07-25-session-list-browsing-and-manual-order.md: 7a3389b3998cd80895a4a0a4541dd3f2f5c595f4 +2026-07-25-session-list-browsing-and-manual-order.zh.md: 5fce4726bb7f448d9b8ad13a0297a6ecb3f15859 diff --git a/.agents/notes/implemented/feature/2026-07-25-session-list-browsing-and-manual-order.md b/.agents/notes/archived/feature/2026-07-25-session-list-browsing-and-manual-order.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-25-session-list-browsing-and-manual-order.md rename to .agents/notes/archived/feature/2026-07-25-session-list-browsing-and-manual-order.md index 52a0fe0c94..7a3389b399 100644 --- a/.agents/notes/implemented/feature/2026-07-25-session-list-browsing-and-manual-order.md +++ b/.agents/notes/archived/feature/2026-07-25-session-list-browsing-and-manual-order.md @@ -1,6 +1,7 @@ # Agent Note: Session List Browsing and Manual Workspace Order Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-25-session-list-browsing-and-manual-order.zh.md) diff --git a/.agents/notes/implemented/feature/2026-07-25-session-list-browsing-and-manual-order.zh.md b/.agents/notes/archived/feature/2026-07-25-session-list-browsing-and-manual-order.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-25-session-list-browsing-and-manual-order.zh.md rename to .agents/notes/archived/feature/2026-07-25-session-list-browsing-and-manual-order.zh.md index d2e24ef5d4..5fce4726bb 100644 --- a/.agents/notes/implemented/feature/2026-07-25-session-list-browsing-and-manual-order.zh.md +++ b/.agents/notes/archived/feature/2026-07-25-session-list-browsing-and-manual-order.zh.md @@ -1,6 +1,7 @@ # Agent Note: Session 列表浏览与 Workspace 手动排序 Status: implemented +Archived: 2026-09-04 [English](2026-07-25-session-list-browsing-and-manual-order.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-07-25-workspace-ui-product-flow.i18n.yaml b/.agents/notes/archived/feature/2026-07-25-workspace-ui-product-flow.i18n.yaml new file mode 100644 index 0000000000..e268dca396 --- /dev/null +++ b/.agents/notes/archived/feature/2026-07-25-workspace-ui-product-flow.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-07-25-workspace-ui-product-flow.md +2026-07-25-workspace-ui-product-flow.md: 280971a7f43a42a5640bf5b642089785e68b21e6 +2026-07-25-workspace-ui-product-flow.zh.md: 6c4f2d4e254ffa78ebd1879bdb3c3c7632d448b0 diff --git a/.agents/notes/implemented/feature/2026-07-25-workspace-ui-product-flow.md b/.agents/notes/archived/feature/2026-07-25-workspace-ui-product-flow.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-25-workspace-ui-product-flow.md rename to .agents/notes/archived/feature/2026-07-25-workspace-ui-product-flow.md index 0dd58905c9..280971a7f4 100644 --- a/.agents/notes/implemented/feature/2026-07-25-workspace-ui-product-flow.md +++ b/.agents/notes/archived/feature/2026-07-25-workspace-ui-product-flow.md @@ -1,6 +1,7 @@ # Agent Note: Workspace UI Complete Product Flow Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-25-workspace-ui-product-flow.zh.md) diff --git a/.agents/notes/implemented/feature/2026-07-25-workspace-ui-product-flow.zh.md b/.agents/notes/archived/feature/2026-07-25-workspace-ui-product-flow.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-25-workspace-ui-product-flow.zh.md rename to .agents/notes/archived/feature/2026-07-25-workspace-ui-product-flow.zh.md index ab73e631d9..6c4f2d4e25 100644 --- a/.agents/notes/implemented/feature/2026-07-25-workspace-ui-product-flow.zh.md +++ b/.agents/notes/archived/feature/2026-07-25-workspace-ui-product-flow.zh.md @@ -1,6 +1,7 @@ # Agent Note: Workspace UI 完整产品动线 Status: implemented +Archived: 2026-09-04 [English](2026-07-25-workspace-ui-product-flow.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-07-26-ptc-chat-subcall-rows.i18n.yaml b/.agents/notes/archived/feature/2026-07-26-ptc-chat-subcall-rows.i18n.yaml new file mode 100644 index 0000000000..571e1e5ae1 --- /dev/null +++ b/.agents/notes/archived/feature/2026-07-26-ptc-chat-subcall-rows.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-07-26-ptc-chat-subcall-rows.md +2026-07-26-ptc-chat-subcall-rows.md: ae536577c5bb6706874618c240f1601eba278738 +2026-07-26-ptc-chat-subcall-rows.zh.md: 9f4206e77f0479433193574a49670df9c0892f8b diff --git a/.agents/notes/implemented/feature/2026-07-26-ptc-chat-subcall-rows.md b/.agents/notes/archived/feature/2026-07-26-ptc-chat-subcall-rows.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-26-ptc-chat-subcall-rows.md rename to .agents/notes/archived/feature/2026-07-26-ptc-chat-subcall-rows.md index 5ddbd56f75..ae536577c5 100644 --- a/.agents/notes/implemented/feature/2026-07-26-ptc-chat-subcall-rows.md +++ b/.agents/notes/archived/feature/2026-07-26-ptc-chat-subcall-rows.md @@ -1,6 +1,7 @@ # Agent Note: PTC mode chat rendering — sub-calls as native rows under the parent Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-26-ptc-chat-subcall-rows.zh.md) diff --git a/.agents/notes/implemented/feature/2026-07-26-ptc-chat-subcall-rows.zh.md b/.agents/notes/archived/feature/2026-07-26-ptc-chat-subcall-rows.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-26-ptc-chat-subcall-rows.zh.md rename to .agents/notes/archived/feature/2026-07-26-ptc-chat-subcall-rows.zh.md index 499742d488..9f4206e77f 100644 --- a/.agents/notes/implemented/feature/2026-07-26-ptc-chat-subcall-rows.zh.md +++ b/.agents/notes/archived/feature/2026-07-26-ptc-chat-subcall-rows.zh.md @@ -1,6 +1,7 @@ # Agent Note: PTC mode 的 chat 渲染——子调用作为父行之下的原生行 Status: implemented +Archived: 2026-09-04 [English](2026-07-26-ptc-chat-subcall-rows.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-07-26-ptc-dispatch-log-spill.i18n.yaml b/.agents/notes/archived/feature/2026-07-26-ptc-dispatch-log-spill.i18n.yaml new file mode 100644 index 0000000000..d6e2759f81 --- /dev/null +++ b/.agents/notes/archived/feature/2026-07-26-ptc-dispatch-log-spill.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-07-26-ptc-dispatch-log-spill.md +2026-07-26-ptc-dispatch-log-spill.md: 9c54dcbf2ad73efd76ef8670d662bbae469f7559 +2026-07-26-ptc-dispatch-log-spill.zh.md: b2f96ad94a280e23426a3139ebeca7dfa686b001 diff --git a/.agents/notes/implemented/feature/2026-07-26-ptc-dispatch-log-spill.md b/.agents/notes/archived/feature/2026-07-26-ptc-dispatch-log-spill.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-26-ptc-dispatch-log-spill.md rename to .agents/notes/archived/feature/2026-07-26-ptc-dispatch-log-spill.md index fa99ceb0b0..9c54dcbf2a 100644 --- a/.agents/notes/implemented/feature/2026-07-26-ptc-dispatch-log-spill.md +++ b/.agents/notes/archived/feature/2026-07-26-ptc-dispatch-log-spill.md @@ -1,6 +1,7 @@ # Agent Note: Spilling the durable copy of PTC mode sub-dispatch results Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-26-ptc-dispatch-log-spill.zh.md) diff --git a/.agents/notes/implemented/feature/2026-07-26-ptc-dispatch-log-spill.zh.md b/.agents/notes/archived/feature/2026-07-26-ptc-dispatch-log-spill.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-26-ptc-dispatch-log-spill.zh.md rename to .agents/notes/archived/feature/2026-07-26-ptc-dispatch-log-spill.zh.md index ab115ba092..b2f96ad94a 100644 --- a/.agents/notes/implemented/feature/2026-07-26-ptc-dispatch-log-spill.zh.md +++ b/.agents/notes/archived/feature/2026-07-26-ptc-dispatch-log-spill.zh.md @@ -1,6 +1,7 @@ # Agent Note: 将 PTC mode 子分发结果的持久化副本纳入 spill 机制 Status: implemented +Archived: 2026-09-04 [English](2026-07-26-ptc-dispatch-log-spill.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-07-26-ptc-dispatch-ui-foundation.i18n.yaml b/.agents/notes/archived/feature/2026-07-26-ptc-dispatch-ui-foundation.i18n.yaml new file mode 100644 index 0000000000..4945d02b6f --- /dev/null +++ b/.agents/notes/archived/feature/2026-07-26-ptc-dispatch-ui-foundation.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-07-26-ptc-dispatch-ui-foundation.md +2026-07-26-ptc-dispatch-ui-foundation.md: ff792a0b6c1ef644470e08dc41b89c9efc874abf +2026-07-26-ptc-dispatch-ui-foundation.zh.md: efa8d532a55563c84b6a785b1db6c86b1e361599 diff --git a/.agents/notes/implemented/feature/2026-07-26-ptc-dispatch-ui-foundation.md b/.agents/notes/archived/feature/2026-07-26-ptc-dispatch-ui-foundation.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-26-ptc-dispatch-ui-foundation.md rename to .agents/notes/archived/feature/2026-07-26-ptc-dispatch-ui-foundation.md index e44b67294a..ff792a0b6c 100644 --- a/.agents/notes/implemented/feature/2026-07-26-ptc-dispatch-ui-foundation.md +++ b/.agents/notes/archived/feature/2026-07-26-ptc-dispatch-ui-foundation.md @@ -1,6 +1,7 @@ # Agent Note: PTC mode UI foundation — run_code description and native-parity dispatch logging Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-26-ptc-dispatch-ui-foundation.zh.md) diff --git a/.agents/notes/implemented/feature/2026-07-26-ptc-dispatch-ui-foundation.zh.md b/.agents/notes/archived/feature/2026-07-26-ptc-dispatch-ui-foundation.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-26-ptc-dispatch-ui-foundation.zh.md rename to .agents/notes/archived/feature/2026-07-26-ptc-dispatch-ui-foundation.zh.md index 4b1ae0b3eb..efa8d532a5 100644 --- a/.agents/notes/implemented/feature/2026-07-26-ptc-dispatch-ui-foundation.zh.md +++ b/.agents/notes/archived/feature/2026-07-26-ptc-dispatch-ui-foundation.zh.md @@ -1,6 +1,7 @@ # Agent Note: PTC mode 的 UI 基础——run_code 的 description 参数,以及与原生同等保真的分发日志 Status: implemented +Archived: 2026-09-04 [English](2026-07-26-ptc-dispatch-ui-foundation.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-07-26-todo-parallel-in-progress.i18n.yaml b/.agents/notes/archived/feature/2026-07-26-todo-parallel-in-progress.i18n.yaml new file mode 100644 index 0000000000..154450569c --- /dev/null +++ b/.agents/notes/archived/feature/2026-07-26-todo-parallel-in-progress.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-07-26-todo-parallel-in-progress.md +2026-07-26-todo-parallel-in-progress.md: 0e53af9a52f6e0a78d2babe5cafd9e1aa71e4ff0 +2026-07-26-todo-parallel-in-progress.zh.md: a8e76d653112d2081474c5428367a0714c5f598b diff --git a/.agents/notes/implemented/feature/2026-07-26-todo-parallel-in-progress.md b/.agents/notes/archived/feature/2026-07-26-todo-parallel-in-progress.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-26-todo-parallel-in-progress.md rename to .agents/notes/archived/feature/2026-07-26-todo-parallel-in-progress.md index 244b75b389..0e53af9a52 100644 --- a/.agents/notes/implemented/feature/2026-07-26-todo-parallel-in-progress.md +++ b/.agents/notes/archived/feature/2026-07-26-todo-parallel-in-progress.md @@ -1,6 +1,7 @@ # Agent Note: Allow several `in_progress` todos at once Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-26-todo-parallel-in-progress.zh.md) diff --git a/.agents/notes/implemented/feature/2026-07-26-todo-parallel-in-progress.zh.md b/.agents/notes/archived/feature/2026-07-26-todo-parallel-in-progress.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-26-todo-parallel-in-progress.zh.md rename to .agents/notes/archived/feature/2026-07-26-todo-parallel-in-progress.zh.md index c8d1c246ba..a8e76d6531 100644 --- a/.agents/notes/implemented/feature/2026-07-26-todo-parallel-in-progress.zh.md +++ b/.agents/notes/archived/feature/2026-07-26-todo-parallel-in-progress.zh.md @@ -1,6 +1,7 @@ # Agent Note: 允许同时存在多个 `in_progress` todo Status: implemented +Archived: 2026-09-04 [English](2026-07-26-todo-parallel-in-progress.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-07-27-native-workspace-directory-picker.i18n.yaml b/.agents/notes/archived/feature/2026-07-27-native-workspace-directory-picker.i18n.yaml new file mode 100644 index 0000000000..61c8865603 --- /dev/null +++ b/.agents/notes/archived/feature/2026-07-27-native-workspace-directory-picker.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-07-27-native-workspace-directory-picker.md +2026-07-27-native-workspace-directory-picker.md: 6f5a9c4fef8fd129dafb0977e92e79e133aeeae9 +2026-07-27-native-workspace-directory-picker.zh.md: d70cde164d501756fb61c0aa7364294825a21719 diff --git a/.agents/notes/implemented/feature/2026-07-27-native-workspace-directory-picker.md b/.agents/notes/archived/feature/2026-07-27-native-workspace-directory-picker.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-27-native-workspace-directory-picker.md rename to .agents/notes/archived/feature/2026-07-27-native-workspace-directory-picker.md index d63ab0b4b5..6f5a9c4fef 100644 --- a/.agents/notes/implemented/feature/2026-07-27-native-workspace-directory-picker.md +++ b/.agents/notes/archived/feature/2026-07-27-native-workspace-directory-picker.md @@ -1,6 +1,7 @@ # Agent Note: Native workspace directory picker Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-27-native-workspace-directory-picker.zh.md) diff --git a/.agents/notes/implemented/feature/2026-07-27-native-workspace-directory-picker.zh.md b/.agents/notes/archived/feature/2026-07-27-native-workspace-directory-picker.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-27-native-workspace-directory-picker.zh.md rename to .agents/notes/archived/feature/2026-07-27-native-workspace-directory-picker.zh.md index eef4948b1f..d70cde164d 100644 --- a/.agents/notes/implemented/feature/2026-07-27-native-workspace-directory-picker.zh.md +++ b/.agents/notes/archived/feature/2026-07-27-native-workspace-directory-picker.zh.md @@ -1,6 +1,7 @@ # Agent Note: 原生工作区目录选择器 Status: implemented +Archived: 2026-09-04 [English](2026-07-27-native-workspace-directory-picker.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-07-27-skill-catalog-hot-refresh.i18n.yaml b/.agents/notes/archived/feature/2026-07-27-skill-catalog-hot-refresh.i18n.yaml new file mode 100644 index 0000000000..96d324f724 --- /dev/null +++ b/.agents/notes/archived/feature/2026-07-27-skill-catalog-hot-refresh.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-07-27-skill-catalog-hot-refresh.md +2026-07-27-skill-catalog-hot-refresh.md: 51f7f604ffcdbefc68af7cdd590137f17d755eb7 +2026-07-27-skill-catalog-hot-refresh.zh.md: 8e91a4c2d2031f629c4606eacca32c5161a7277e diff --git a/.agents/notes/implemented/feature/2026-07-27-skill-catalog-hot-refresh.md b/.agents/notes/archived/feature/2026-07-27-skill-catalog-hot-refresh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-27-skill-catalog-hot-refresh.md rename to .agents/notes/archived/feature/2026-07-27-skill-catalog-hot-refresh.md index 2122176138..51f7f604ff 100644 --- a/.agents/notes/implemented/feature/2026-07-27-skill-catalog-hot-refresh.md +++ b/.agents/notes/archived/feature/2026-07-27-skill-catalog-hot-refresh.md @@ -1,6 +1,7 @@ # Agent Note: Skill catalog hot refresh Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-27-skill-catalog-hot-refresh.zh.md) diff --git a/.agents/notes/implemented/feature/2026-07-27-skill-catalog-hot-refresh.zh.md b/.agents/notes/archived/feature/2026-07-27-skill-catalog-hot-refresh.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-27-skill-catalog-hot-refresh.zh.md rename to .agents/notes/archived/feature/2026-07-27-skill-catalog-hot-refresh.zh.md index 89a5ea446f..8e91a4c2d2 100644 --- a/.agents/notes/implemented/feature/2026-07-27-skill-catalog-hot-refresh.zh.md +++ b/.agents/notes/archived/feature/2026-07-27-skill-catalog-hot-refresh.zh.md @@ -1,6 +1,7 @@ # Agent Note: Skill 目录热刷新 Status: implemented +Archived: 2026-09-04 [English](2026-07-27-skill-catalog-hot-refresh.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-07-27-tmux-location-context.i18n.yaml b/.agents/notes/archived/feature/2026-07-27-tmux-location-context.i18n.yaml new file mode 100644 index 0000000000..da2fbfd78f --- /dev/null +++ b/.agents/notes/archived/feature/2026-07-27-tmux-location-context.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-07-27-tmux-location-context.md +2026-07-27-tmux-location-context.md: ab51bb8b79a2d770f3b92ee8cc6e28c0370702dd +2026-07-27-tmux-location-context.zh.md: 7d002739f26e9e14e8d2643b6aced55b9c76b08b diff --git a/.agents/notes/implemented/feature/2026-07-27-tmux-location-context.md b/.agents/notes/archived/feature/2026-07-27-tmux-location-context.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-27-tmux-location-context.md rename to .agents/notes/archived/feature/2026-07-27-tmux-location-context.md index fa7ec8a76d..ab51bb8b79 100644 --- a/.agents/notes/implemented/feature/2026-07-27-tmux-location-context.md +++ b/.agents/notes/archived/feature/2026-07-27-tmux-location-context.md @@ -1,6 +1,7 @@ # Agent Note: tmux-location context Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-27-tmux-location-context.zh.md) diff --git a/.agents/notes/implemented/feature/2026-07-27-tmux-location-context.zh.md b/.agents/notes/archived/feature/2026-07-27-tmux-location-context.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-27-tmux-location-context.zh.md rename to .agents/notes/archived/feature/2026-07-27-tmux-location-context.zh.md index 63ae1328cd..7d002739f2 100644 --- a/.agents/notes/implemented/feature/2026-07-27-tmux-location-context.zh.md +++ b/.agents/notes/archived/feature/2026-07-27-tmux-location-context.zh.md @@ -1,6 +1,7 @@ # Agent Note: tmux 位置上下文 Status: implemented +Archived: 2026-09-04 [English](2026-07-27-tmux-location-context.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-07-27-trajectory-inspection-ledger.i18n.yaml b/.agents/notes/archived/feature/2026-07-27-trajectory-inspection-ledger.i18n.yaml new file mode 100644 index 0000000000..1d032934d6 --- /dev/null +++ b/.agents/notes/archived/feature/2026-07-27-trajectory-inspection-ledger.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-07-27-trajectory-inspection-ledger.md +2026-07-27-trajectory-inspection-ledger.md: e76dce38ffa607e46818b356b54544382fe4be96 +2026-07-27-trajectory-inspection-ledger.zh.md: 99a7babeecc368729245ad311684754ef716904a diff --git a/.agents/notes/implemented/feature/2026-07-27-trajectory-inspection-ledger.md b/.agents/notes/archived/feature/2026-07-27-trajectory-inspection-ledger.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-27-trajectory-inspection-ledger.md rename to .agents/notes/archived/feature/2026-07-27-trajectory-inspection-ledger.md index 75f8480d3e..e76dce38ff 100644 --- a/.agents/notes/implemented/feature/2026-07-27-trajectory-inspection-ledger.md +++ b/.agents/notes/archived/feature/2026-07-27-trajectory-inspection-ledger.md @@ -1,6 +1,7 @@ # Agent Note: Trajectory inspection ledger Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-27-trajectory-inspection-ledger.zh.md) diff --git a/.agents/notes/implemented/feature/2026-07-27-trajectory-inspection-ledger.zh.md b/.agents/notes/archived/feature/2026-07-27-trajectory-inspection-ledger.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-27-trajectory-inspection-ledger.zh.md rename to .agents/notes/archived/feature/2026-07-27-trajectory-inspection-ledger.zh.md index 82af4904d9..99a7babeec 100644 --- a/.agents/notes/implemented/feature/2026-07-27-trajectory-inspection-ledger.zh.md +++ b/.agents/notes/archived/feature/2026-07-27-trajectory-inspection-ledger.zh.md @@ -1,6 +1,7 @@ # Agent Note: 轨迹检查记录表 Status: implemented +Archived: 2026-09-04 [English](2026-07-27-trajectory-inspection-ledger.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-07-27-typescript-sdk-and-sdk-subagent-backend.i18n.yaml b/.agents/notes/archived/feature/2026-07-27-typescript-sdk-and-sdk-subagent-backend.i18n.yaml new file mode 100644 index 0000000000..538024ed77 --- /dev/null +++ b/.agents/notes/archived/feature/2026-07-27-typescript-sdk-and-sdk-subagent-backend.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-07-27-typescript-sdk-and-sdk-subagent-backend.md +2026-07-27-typescript-sdk-and-sdk-subagent-backend.md: f3a99cb4990d11a5a5971bf2288953cd9b749825 +2026-07-27-typescript-sdk-and-sdk-subagent-backend.zh.md: 46802074bb9847ecbf9b4ee410cc4bc75590524f diff --git a/.agents/notes/implemented/feature/2026-07-27-typescript-sdk-and-sdk-subagent-backend.md b/.agents/notes/archived/feature/2026-07-27-typescript-sdk-and-sdk-subagent-backend.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-27-typescript-sdk-and-sdk-subagent-backend.md rename to .agents/notes/archived/feature/2026-07-27-typescript-sdk-and-sdk-subagent-backend.md index c410e7ffad..f3a99cb499 100644 --- a/.agents/notes/implemented/feature/2026-07-27-typescript-sdk-and-sdk-subagent-backend.md +++ b/.agents/notes/archived/feature/2026-07-27-typescript-sdk-and-sdk-subagent-backend.md @@ -1,6 +1,7 @@ # Agent Note: TypeScript SDK client and the SDK subagent backend Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-27-typescript-sdk-and-sdk-subagent-backend.zh.md) diff --git a/.agents/notes/implemented/feature/2026-07-27-typescript-sdk-and-sdk-subagent-backend.zh.md b/.agents/notes/archived/feature/2026-07-27-typescript-sdk-and-sdk-subagent-backend.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-27-typescript-sdk-and-sdk-subagent-backend.zh.md rename to .agents/notes/archived/feature/2026-07-27-typescript-sdk-and-sdk-subagent-backend.zh.md index 13b7a49857..46802074bb 100644 --- a/.agents/notes/implemented/feature/2026-07-27-typescript-sdk-and-sdk-subagent-backend.zh.md +++ b/.agents/notes/archived/feature/2026-07-27-typescript-sdk-and-sdk-subagent-backend.zh.md @@ -1,6 +1,7 @@ # Agent Note: TypeScript SDK 客户端与 SDK subagent 后端 Status: implemented +Archived: 2026-09-04 [English](2026-07-27-typescript-sdk-and-sdk-subagent-backend.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-07-27-web-file-and-session-references.i18n.yaml b/.agents/notes/archived/feature/2026-07-27-web-file-and-session-references.i18n.yaml new file mode 100644 index 0000000000..8c37f4caf7 --- /dev/null +++ b/.agents/notes/archived/feature/2026-07-27-web-file-and-session-references.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-07-27-web-file-and-session-references.md +2026-07-27-web-file-and-session-references.md: ea68e278082a097e05abfc72c5a1c778b603c2d5 +2026-07-27-web-file-and-session-references.zh.md: 7d3532e29311303c84a6e55a1abf669aad81d90c diff --git a/.agents/notes/implemented/feature/2026-07-27-web-file-and-session-references.md b/.agents/notes/archived/feature/2026-07-27-web-file-and-session-references.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-27-web-file-and-session-references.md rename to .agents/notes/archived/feature/2026-07-27-web-file-and-session-references.md index 51447d0c22..ea68e27808 100644 --- a/.agents/notes/implemented/feature/2026-07-27-web-file-and-session-references.md +++ b/.agents/notes/archived/feature/2026-07-27-web-file-and-session-references.md @@ -1,6 +1,7 @@ # Agent Note: Web file and session references Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-27-web-file-and-session-references.zh.md) diff --git a/.agents/notes/implemented/feature/2026-07-27-web-file-and-session-references.zh.md b/.agents/notes/archived/feature/2026-07-27-web-file-and-session-references.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-27-web-file-and-session-references.zh.md rename to .agents/notes/archived/feature/2026-07-27-web-file-and-session-references.zh.md index f2f87aabaa..7d3532e293 100644 --- a/.agents/notes/implemented/feature/2026-07-27-web-file-and-session-references.zh.md +++ b/.agents/notes/archived/feature/2026-07-27-web-file-and-session-references.zh.md @@ -1,6 +1,7 @@ # Agent Note: Web 文件与会话引用 Status: implemented +Archived: 2026-09-04 [English](2026-07-27-web-file-and-session-references.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-07-27-web-session-fork-actions.i18n.yaml b/.agents/notes/archived/feature/2026-07-27-web-session-fork-actions.i18n.yaml new file mode 100644 index 0000000000..7e989b3c68 --- /dev/null +++ b/.agents/notes/archived/feature/2026-07-27-web-session-fork-actions.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-07-27-web-session-fork-actions.md +2026-07-27-web-session-fork-actions.md: 8a6023ddb69abe92ea55d40c0e1f7db41f5badc8 +2026-07-27-web-session-fork-actions.zh.md: ce5e4924ffdb79b5313bc68365866c09a451220c diff --git a/.agents/notes/implemented/feature/2026-07-27-web-session-fork-actions.md b/.agents/notes/archived/feature/2026-07-27-web-session-fork-actions.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-27-web-session-fork-actions.md rename to .agents/notes/archived/feature/2026-07-27-web-session-fork-actions.md index 578e59ec92..8a6023ddb6 100644 --- a/.agents/notes/implemented/feature/2026-07-27-web-session-fork-actions.md +++ b/.agents/notes/archived/feature/2026-07-27-web-session-fork-actions.md @@ -1,6 +1,7 @@ # Agent Note: Web session fork actions Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-27-web-session-fork-actions.zh.md) diff --git a/.agents/notes/implemented/feature/2026-07-27-web-session-fork-actions.zh.md b/.agents/notes/archived/feature/2026-07-27-web-session-fork-actions.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-27-web-session-fork-actions.zh.md rename to .agents/notes/archived/feature/2026-07-27-web-session-fork-actions.zh.md index 8995b4c89b..ce5e4924ff 100644 --- a/.agents/notes/implemented/feature/2026-07-27-web-session-fork-actions.zh.md +++ b/.agents/notes/archived/feature/2026-07-27-web-session-fork-actions.zh.md @@ -1,6 +1,7 @@ # Agent Note: Web session fork 操作 Status: implemented +Archived: 2026-09-04 [English](2026-07-27-web-session-fork-actions.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-07-27-web-session-search.i18n.yaml b/.agents/notes/archived/feature/2026-07-27-web-session-search.i18n.yaml new file mode 100644 index 0000000000..5bc65dd8fe --- /dev/null +++ b/.agents/notes/archived/feature/2026-07-27-web-session-search.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-07-27-web-session-search.md +2026-07-27-web-session-search.md: 53827f39ec26fcf0f6113643f9846423fae18a6c +2026-07-27-web-session-search.zh.md: 6615c8916bc6163ece0c2ab285f9231d55f8bfec diff --git a/.agents/notes/implemented/feature/2026-07-27-web-session-search.md b/.agents/notes/archived/feature/2026-07-27-web-session-search.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-27-web-session-search.md rename to .agents/notes/archived/feature/2026-07-27-web-session-search.md index d7a979a278..53827f39ec 100644 --- a/.agents/notes/implemented/feature/2026-07-27-web-session-search.md +++ b/.agents/notes/archived/feature/2026-07-27-web-session-search.md @@ -1,6 +1,7 @@ # Agent Note: Web past-session search Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-27-web-session-search.zh.md) diff --git a/.agents/notes/implemented/feature/2026-07-27-web-session-search.zh.md b/.agents/notes/archived/feature/2026-07-27-web-session-search.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-27-web-session-search.zh.md rename to .agents/notes/archived/feature/2026-07-27-web-session-search.zh.md index ba125ba884..6615c8916b 100644 --- a/.agents/notes/implemented/feature/2026-07-27-web-session-search.zh.md +++ b/.agents/notes/archived/feature/2026-07-27-web-session-search.zh.md @@ -1,6 +1,7 @@ # Agent Note: Web 历史会话搜索 Status: implemented +Archived: 2026-09-04 [English](2026-07-27-web-session-search.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-07-28-cross-workspace-resume.i18n.yaml b/.agents/notes/archived/feature/2026-07-28-cross-workspace-resume.i18n.yaml new file mode 100644 index 0000000000..02ab0a9968 --- /dev/null +++ b/.agents/notes/archived/feature/2026-07-28-cross-workspace-resume.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-07-28-cross-workspace-resume.md +2026-07-28-cross-workspace-resume.md: 4bc5b3df2ea5d08d8465842a74a5d350fd5786e0 +2026-07-28-cross-workspace-resume.zh.md: 7059b800a36fa87da3f7c6a91d767eecde838393 diff --git a/.agents/notes/implemented/feature/2026-07-28-cross-workspace-resume.md b/.agents/notes/archived/feature/2026-07-28-cross-workspace-resume.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-28-cross-workspace-resume.md rename to .agents/notes/archived/feature/2026-07-28-cross-workspace-resume.md index e8a8636911..4bc5b3df2e 100644 --- a/.agents/notes/implemented/feature/2026-07-28-cross-workspace-resume.md +++ b/.agents/notes/archived/feature/2026-07-28-cross-workspace-resume.md @@ -1,6 +1,7 @@ # Agent Note: Cross-workspace session resume Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-28-cross-workspace-resume.zh.md) diff --git a/.agents/notes/implemented/feature/2026-07-28-cross-workspace-resume.zh.md b/.agents/notes/archived/feature/2026-07-28-cross-workspace-resume.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-28-cross-workspace-resume.zh.md rename to .agents/notes/archived/feature/2026-07-28-cross-workspace-resume.zh.md index c56641be35..7059b800a3 100644 --- a/.agents/notes/implemented/feature/2026-07-28-cross-workspace-resume.zh.md +++ b/.agents/notes/archived/feature/2026-07-28-cross-workspace-resume.zh.md @@ -1,6 +1,7 @@ # Agent Note: 跨 workspace 会话恢复 Status: implemented +Archived: 2026-09-04 [English](2026-07-28-cross-workspace-resume.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-07-28-feedback-command.i18n.yaml b/.agents/notes/archived/feature/2026-07-28-feedback-command.i18n.yaml new file mode 100644 index 0000000000..f4bf833323 --- /dev/null +++ b/.agents/notes/archived/feature/2026-07-28-feedback-command.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-07-28-feedback-command.md +2026-07-28-feedback-command.md: 56eae10af77f9699b1309e80ed6a17d23064bbdd +2026-07-28-feedback-command.zh.md: 49b04fd2cec51166dc09eda57c820260aa696584 diff --git a/.agents/notes/implemented/feature/2026-07-28-feedback-command.md b/.agents/notes/archived/feature/2026-07-28-feedback-command.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-28-feedback-command.md rename to .agents/notes/archived/feature/2026-07-28-feedback-command.md index dec169b010..56eae10af7 100644 --- a/.agents/notes/implemented/feature/2026-07-28-feedback-command.md +++ b/.agents/notes/archived/feature/2026-07-28-feedback-command.md @@ -1,6 +1,7 @@ # Agent Note: `/feedback` command Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-28-feedback-command.zh.md) diff --git a/.agents/notes/implemented/feature/2026-07-28-feedback-command.zh.md b/.agents/notes/archived/feature/2026-07-28-feedback-command.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-28-feedback-command.zh.md rename to .agents/notes/archived/feature/2026-07-28-feedback-command.zh.md index 67e9c2ce56..49b04fd2ce 100644 --- a/.agents/notes/implemented/feature/2026-07-28-feedback-command.zh.md +++ b/.agents/notes/archived/feature/2026-07-28-feedback-command.zh.md @@ -1,6 +1,7 @@ # Agent Note: `/feedback` 命令 Status: implemented +Archived: 2026-09-04 [English](2026-07-28-feedback-command.md) | 中文 diff --git a/.agents/notes/implemented/bug-fix/2026-08-09-broken-preset-roster-rows.i18n.yaml b/.agents/notes/archived/feature/2026-07-28-sdk-max-output-tokens.i18n.yaml similarity index 55% rename from .agents/notes/implemented/bug-fix/2026-08-09-broken-preset-roster-rows.i18n.yaml rename to .agents/notes/archived/feature/2026-07-28-sdk-max-output-tokens.i18n.yaml index 1cefa7b32d..0c860017d4 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-09-broken-preset-roster-rows.i18n.yaml +++ b/.agents/notes/archived/feature/2026-07-28-sdk-max-output-tokens.i18n.yaml @@ -1,6 +1,6 @@ # Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/bug-fix/2026-08-09-broken-preset-roster-rows.md -2026-08-09-broken-preset-roster-rows.md: 4ae92f0b12f2ebede925d6047b358b8cafb10149 -2026-08-09-broken-preset-roster-rows.zh.md: 60d1ff533e3e968e04dad8526042fe4579752569 +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-07-28-sdk-max-output-tokens.md +2026-07-28-sdk-max-output-tokens.md: 8038081f1e93c5f2a31ca63b1faa75b78b40c801 +2026-07-28-sdk-max-output-tokens.zh.md: ffbac3d32eb62e7d3b38e6ac4ef4ebe9bb807788 diff --git a/.agents/notes/implemented/feature/2026-07-28-sdk-max-output-tokens.md b/.agents/notes/archived/feature/2026-07-28-sdk-max-output-tokens.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-28-sdk-max-output-tokens.md rename to .agents/notes/archived/feature/2026-07-28-sdk-max-output-tokens.md index 1d2915b7f7..8038081f1e 100644 --- a/.agents/notes/implemented/feature/2026-07-28-sdk-max-output-tokens.md +++ b/.agents/notes/archived/feature/2026-07-28-sdk-max-output-tokens.md @@ -1,6 +1,7 @@ # Agent Note: SDK max output tokens Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-28-sdk-max-output-tokens.zh.md) diff --git a/.agents/notes/implemented/feature/2026-07-28-sdk-max-output-tokens.zh.md b/.agents/notes/archived/feature/2026-07-28-sdk-max-output-tokens.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-28-sdk-max-output-tokens.zh.md rename to .agents/notes/archived/feature/2026-07-28-sdk-max-output-tokens.zh.md index ba59f745bc..ffbac3d32e 100644 --- a/.agents/notes/implemented/feature/2026-07-28-sdk-max-output-tokens.zh.md +++ b/.agents/notes/archived/feature/2026-07-28-sdk-max-output-tokens.zh.md @@ -1,6 +1,7 @@ # Agent Note: SDK 最大输出 token 数 Status: implemented +Archived: 2026-09-04 [English](2026-07-28-sdk-max-output-tokens.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-07-28-todo-plan-clears-on-next-turn.i18n.yaml b/.agents/notes/archived/feature/2026-07-28-todo-plan-clears-on-next-turn.i18n.yaml new file mode 100644 index 0000000000..27b1e4088a --- /dev/null +++ b/.agents/notes/archived/feature/2026-07-28-todo-plan-clears-on-next-turn.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-07-28-todo-plan-clears-on-next-turn.md +2026-07-28-todo-plan-clears-on-next-turn.md: 84653953d6e9cadc004eac0e5f4af589952e464a +2026-07-28-todo-plan-clears-on-next-turn.zh.md: 889f5532e360cf3b6e37ebdab6f79d4d493d5f00 diff --git a/.agents/notes/implemented/feature/2026-07-28-todo-plan-clears-on-next-turn.md b/.agents/notes/archived/feature/2026-07-28-todo-plan-clears-on-next-turn.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-28-todo-plan-clears-on-next-turn.md rename to .agents/notes/archived/feature/2026-07-28-todo-plan-clears-on-next-turn.md index b8a199840c..84653953d6 100644 --- a/.agents/notes/implemented/feature/2026-07-28-todo-plan-clears-on-next-turn.md +++ b/.agents/notes/archived/feature/2026-07-28-todo-plan-clears-on-next-turn.md @@ -1,6 +1,7 @@ # Agent Note: Todo plan strip clears on the next turn Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-28-todo-plan-clears-on-next-turn.zh.md) diff --git a/.agents/notes/implemented/feature/2026-07-28-todo-plan-clears-on-next-turn.zh.md b/.agents/notes/archived/feature/2026-07-28-todo-plan-clears-on-next-turn.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-28-todo-plan-clears-on-next-turn.zh.md rename to .agents/notes/archived/feature/2026-07-28-todo-plan-clears-on-next-turn.zh.md index bbe6fd35b5..889f5532e3 100644 --- a/.agents/notes/implemented/feature/2026-07-28-todo-plan-clears-on-next-turn.zh.md +++ b/.agents/notes/archived/feature/2026-07-28-todo-plan-clears-on-next-turn.zh.md @@ -1,6 +1,7 @@ # Agent Note: 下一轮次开始时清空 todo 计划条 Status: implemented +Archived: 2026-09-04 [English](2026-07-28-todo-plan-clears-on-next-turn.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-07-28-tool-call-file-open-in-os.i18n.yaml b/.agents/notes/archived/feature/2026-07-28-tool-call-file-open-in-os.i18n.yaml new file mode 100644 index 0000000000..06002ae4b4 --- /dev/null +++ b/.agents/notes/archived/feature/2026-07-28-tool-call-file-open-in-os.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-07-28-tool-call-file-open-in-os.md +2026-07-28-tool-call-file-open-in-os.md: 690f28be4a6fec78a8fcfb4998e19cecaec70530 +2026-07-28-tool-call-file-open-in-os.zh.md: eeed20266047a2e6d0cccceb7f053be76de69c68 diff --git a/.agents/notes/implemented/feature/2026-07-28-tool-call-file-open-in-os.md b/.agents/notes/archived/feature/2026-07-28-tool-call-file-open-in-os.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-28-tool-call-file-open-in-os.md rename to .agents/notes/archived/feature/2026-07-28-tool-call-file-open-in-os.md index 4655af0424..690f28be4a 100644 --- a/.agents/notes/implemented/feature/2026-07-28-tool-call-file-open-in-os.md +++ b/.agents/notes/archived/feature/2026-07-28-tool-call-file-open-in-os.md @@ -1,6 +1,7 @@ # Agent Note: Tool-call file open in OS Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-28-tool-call-file-open-in-os.zh.md) diff --git a/.agents/notes/implemented/feature/2026-07-28-tool-call-file-open-in-os.zh.md b/.agents/notes/archived/feature/2026-07-28-tool-call-file-open-in-os.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-28-tool-call-file-open-in-os.zh.md rename to .agents/notes/archived/feature/2026-07-28-tool-call-file-open-in-os.zh.md index 769aeaeaa7..eeed202660 100644 --- a/.agents/notes/implemented/feature/2026-07-28-tool-call-file-open-in-os.zh.md +++ b/.agents/notes/archived/feature/2026-07-28-tool-call-file-open-in-os.zh.md @@ -1,6 +1,7 @@ # Agent Note: 在工具调用中用系统应用打开文件 Status: implemented +Archived: 2026-09-04 [English](2026-07-28-tool-call-file-open-in-os.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-07-28-web-terminal-card.i18n.yaml b/.agents/notes/archived/feature/2026-07-28-web-terminal-card.i18n.yaml new file mode 100644 index 0000000000..3ab07a29db --- /dev/null +++ b/.agents/notes/archived/feature/2026-07-28-web-terminal-card.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-07-28-web-terminal-card.md +2026-07-28-web-terminal-card.md: 0efda55d03d70b01ce133a1d629e5390e2527542 +2026-07-28-web-terminal-card.zh.md: 23ea6267864d4385904057719bd012c1228c2296 diff --git a/.agents/notes/implemented/feature/2026-07-28-web-terminal-card.md b/.agents/notes/archived/feature/2026-07-28-web-terminal-card.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-28-web-terminal-card.md rename to .agents/notes/archived/feature/2026-07-28-web-terminal-card.md index 2fd2b429c0..0efda55d03 100644 --- a/.agents/notes/implemented/feature/2026-07-28-web-terminal-card.md +++ b/.agents/notes/archived/feature/2026-07-28-web-terminal-card.md @@ -1,6 +1,7 @@ # Agent Note: Web terminal card — the bash render intent reaches the browser Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-28-web-terminal-card.zh.md) diff --git a/.agents/notes/implemented/feature/2026-07-28-web-terminal-card.zh.md b/.agents/notes/archived/feature/2026-07-28-web-terminal-card.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-28-web-terminal-card.zh.md rename to .agents/notes/archived/feature/2026-07-28-web-terminal-card.zh.md index 1405c03766..23ea626786 100644 --- a/.agents/notes/implemented/feature/2026-07-28-web-terminal-card.zh.md +++ b/.agents/notes/archived/feature/2026-07-28-web-terminal-card.zh.md @@ -1,6 +1,7 @@ # Agent Note: Web 终端卡片:bash 渲染意图抵达浏览器 Status: implemented +Archived: 2026-09-04 [English](2026-07-28-web-terminal-card.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-07-29-ask-question-web-presentation.i18n.yaml b/.agents/notes/archived/feature/2026-07-29-ask-question-web-presentation.i18n.yaml new file mode 100644 index 0000000000..2f4d98e447 --- /dev/null +++ b/.agents/notes/archived/feature/2026-07-29-ask-question-web-presentation.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-07-29-ask-question-web-presentation.md +2026-07-29-ask-question-web-presentation.md: 499c070f3af73341be8ff6aa5877015974d78328 +2026-07-29-ask-question-web-presentation.zh.md: dc62a0041d1618d1db58219bdd271fc803499ff0 diff --git a/.agents/notes/implemented/feature/2026-07-29-ask-question-web-presentation.md b/.agents/notes/archived/feature/2026-07-29-ask-question-web-presentation.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-29-ask-question-web-presentation.md rename to .agents/notes/archived/feature/2026-07-29-ask-question-web-presentation.md index 280671570c..499c070f3a 100644 --- a/.agents/notes/implemented/feature/2026-07-29-ask-question-web-presentation.md +++ b/.agents/notes/archived/feature/2026-07-29-ask-question-web-presentation.md @@ -1,6 +1,7 @@ # Agent Note: Ask-question Web presentation Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-29-ask-question-web-presentation.zh.md) diff --git a/.agents/notes/implemented/feature/2026-07-29-ask-question-web-presentation.zh.md b/.agents/notes/archived/feature/2026-07-29-ask-question-web-presentation.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-29-ask-question-web-presentation.zh.md rename to .agents/notes/archived/feature/2026-07-29-ask-question-web-presentation.zh.md index 9ad687d655..dc62a0041d 100644 --- a/.agents/notes/implemented/feature/2026-07-29-ask-question-web-presentation.zh.md +++ b/.agents/notes/archived/feature/2026-07-29-ask-question-web-presentation.zh.md @@ -1,6 +1,7 @@ # Agent Note: Ask-question Web 呈现 Status: implemented +Archived: 2026-09-04 [English](2026-07-29-ask-question-web-presentation.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-07-29-directory-picker-adaptive-default.i18n.yaml b/.agents/notes/archived/feature/2026-07-29-directory-picker-adaptive-default.i18n.yaml new file mode 100644 index 0000000000..07dc33dbdb --- /dev/null +++ b/.agents/notes/archived/feature/2026-07-29-directory-picker-adaptive-default.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-07-29-directory-picker-adaptive-default.md +2026-07-29-directory-picker-adaptive-default.md: 1e7c7b08aed24752855e553d720d6fdc52e5ff3e +2026-07-29-directory-picker-adaptive-default.zh.md: ebed058c454b94fc3882be2f7b85ba7ae9b4b536 diff --git a/.agents/notes/implemented/feature/2026-07-29-directory-picker-adaptive-default.md b/.agents/notes/archived/feature/2026-07-29-directory-picker-adaptive-default.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-29-directory-picker-adaptive-default.md rename to .agents/notes/archived/feature/2026-07-29-directory-picker-adaptive-default.md index 92eb2b5ab4..1e7c7b08ae 100644 --- a/.agents/notes/implemented/feature/2026-07-29-directory-picker-adaptive-default.md +++ b/.agents/notes/archived/feature/2026-07-29-directory-picker-adaptive-default.md @@ -1,6 +1,7 @@ # Agent Note: Adaptive default for the directory-picker interaction Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-29-directory-picker-adaptive-default.zh.md) diff --git a/.agents/notes/implemented/feature/2026-07-29-directory-picker-adaptive-default.zh.md b/.agents/notes/archived/feature/2026-07-29-directory-picker-adaptive-default.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-29-directory-picker-adaptive-default.zh.md rename to .agents/notes/archived/feature/2026-07-29-directory-picker-adaptive-default.zh.md index a3d0c4b799..ebed058c45 100644 --- a/.agents/notes/implemented/feature/2026-07-29-directory-picker-adaptive-default.zh.md +++ b/.agents/notes/archived/feature/2026-07-29-directory-picker-adaptive-default.zh.md @@ -1,6 +1,7 @@ # Agent Note: 目录选择交互的自适应默认值 Status: implemented +Archived: 2026-09-04 [English](2026-07-29-directory-picker-adaptive-default.md) | 中文 diff --git a/.agents/notes/implemented/process/2026-07-28-per-subsystem-cordis-surface-regions.i18n.yaml b/.agents/notes/archived/feature/2026-07-29-persistent-bash-str-replace-editor.i18n.yaml similarity index 54% rename from .agents/notes/implemented/process/2026-07-28-per-subsystem-cordis-surface-regions.i18n.yaml rename to .agents/notes/archived/feature/2026-07-29-persistent-bash-str-replace-editor.i18n.yaml index a69f51c47e..ef0d8c2291 100644 --- a/.agents/notes/implemented/process/2026-07-28-per-subsystem-cordis-surface-regions.i18n.yaml +++ b/.agents/notes/archived/feature/2026-07-29-persistent-bash-str-replace-editor.i18n.yaml @@ -1,6 +1,6 @@ # Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/process/2026-07-28-per-subsystem-cordis-surface-regions.md -2026-07-28-per-subsystem-cordis-surface-regions.md: 66973223ec443fdd2a150fdd32d722ae3cad261b -2026-07-28-per-subsystem-cordis-surface-regions.zh.md: de000402bd20018c423a391dfefca4a3a9d65bdf +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-07-29-persistent-bash-str-replace-editor.md +2026-07-29-persistent-bash-str-replace-editor.md: 84d195d07d8039227b5f530d4a04ddd49a210545 +2026-07-29-persistent-bash-str-replace-editor.zh.md: 31548903b3c3f59ccccdebb4416a5afd21e1b4ee diff --git a/.agents/notes/implemented/feature/2026-07-29-persistent-bash-str-replace-editor.md b/.agents/notes/archived/feature/2026-07-29-persistent-bash-str-replace-editor.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-29-persistent-bash-str-replace-editor.md rename to .agents/notes/archived/feature/2026-07-29-persistent-bash-str-replace-editor.md index e6265ca0f8..84d195d07d 100644 --- a/.agents/notes/implemented/feature/2026-07-29-persistent-bash-str-replace-editor.md +++ b/.agents/notes/archived/feature/2026-07-29-persistent-bash-str-replace-editor.md @@ -1,6 +1,7 @@ # Agent Note: Persistent Bash and string-replacement editor tools Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-29-persistent-bash-str-replace-editor.zh.md) diff --git a/.agents/notes/implemented/feature/2026-07-29-persistent-bash-str-replace-editor.zh.md b/.agents/notes/archived/feature/2026-07-29-persistent-bash-str-replace-editor.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-29-persistent-bash-str-replace-editor.zh.md rename to .agents/notes/archived/feature/2026-07-29-persistent-bash-str-replace-editor.zh.md index 2fb8a3b3ca..31548903b3 100644 --- a/.agents/notes/implemented/feature/2026-07-29-persistent-bash-str-replace-editor.zh.md +++ b/.agents/notes/archived/feature/2026-07-29-persistent-bash-str-replace-editor.zh.md @@ -1,6 +1,7 @@ # Agent Note: 持久 Bash 与字符串替换编辑器工具 Status: implemented +Archived: 2026-09-04 [English](2026-07-29-persistent-bash-str-replace-editor.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-07-30-current-sandbox-policy-context.i18n.yaml b/.agents/notes/archived/feature/2026-07-30-current-sandbox-policy-context.i18n.yaml new file mode 100644 index 0000000000..02bf0fbb3d --- /dev/null +++ b/.agents/notes/archived/feature/2026-07-30-current-sandbox-policy-context.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-07-30-current-sandbox-policy-context.md +2026-07-30-current-sandbox-policy-context.md: adaf7f7cc1e0ed97c0136f53c539b34b98a32d45 +2026-07-30-current-sandbox-policy-context.zh.md: 67abad4bba3b966d8cb99634667b4493e951a264 diff --git a/.agents/notes/implemented/feature/2026-07-30-current-sandbox-policy-context.md b/.agents/notes/archived/feature/2026-07-30-current-sandbox-policy-context.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-30-current-sandbox-policy-context.md rename to .agents/notes/archived/feature/2026-07-30-current-sandbox-policy-context.md index b4c657ba52..adaf7f7cc1 100644 --- a/.agents/notes/implemented/feature/2026-07-30-current-sandbox-policy-context.md +++ b/.agents/notes/archived/feature/2026-07-30-current-sandbox-policy-context.md @@ -1,6 +1,7 @@ # Agent Note: Current sandbox policy context Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-30-current-sandbox-policy-context.zh.md) diff --git a/.agents/notes/implemented/feature/2026-07-30-current-sandbox-policy-context.zh.md b/.agents/notes/archived/feature/2026-07-30-current-sandbox-policy-context.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-30-current-sandbox-policy-context.zh.md rename to .agents/notes/archived/feature/2026-07-30-current-sandbox-policy-context.zh.md index 6ded323020..67abad4bba 100644 --- a/.agents/notes/implemented/feature/2026-07-30-current-sandbox-policy-context.zh.md +++ b/.agents/notes/archived/feature/2026-07-30-current-sandbox-policy-context.zh.md @@ -1,6 +1,7 @@ # Agent Note: 当前沙箱策略上下文 Status: implemented +Archived: 2026-09-04 [English](2026-07-30-current-sandbox-policy-context.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-07-30-deepseek-onboarding-credential-setup.i18n.yaml b/.agents/notes/archived/feature/2026-07-30-deepseek-onboarding-credential-setup.i18n.yaml new file mode 100644 index 0000000000..c9f8f56862 --- /dev/null +++ b/.agents/notes/archived/feature/2026-07-30-deepseek-onboarding-credential-setup.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-07-30-deepseek-onboarding-credential-setup.md +2026-07-30-deepseek-onboarding-credential-setup.md: b4deba8f5da5dfaa98a83fa71096683c2843d9b0 +2026-07-30-deepseek-onboarding-credential-setup.zh.md: 0862a95e96f7c41f3a9a36440d4029f9edf8c19c diff --git a/.agents/notes/implemented/feature/2026-07-30-deepseek-onboarding-credential-setup.md b/.agents/notes/archived/feature/2026-07-30-deepseek-onboarding-credential-setup.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-30-deepseek-onboarding-credential-setup.md rename to .agents/notes/archived/feature/2026-07-30-deepseek-onboarding-credential-setup.md index c2e9a1251a..b4deba8f5d 100644 --- a/.agents/notes/implemented/feature/2026-07-30-deepseek-onboarding-credential-setup.md +++ b/.agents/notes/archived/feature/2026-07-30-deepseek-onboarding-credential-setup.md @@ -1,6 +1,7 @@ # Agent Note: official DeepSeek first-run credential setup Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-30-deepseek-onboarding-credential-setup.zh.md) diff --git a/.agents/notes/implemented/feature/2026-07-30-deepseek-onboarding-credential-setup.zh.md b/.agents/notes/archived/feature/2026-07-30-deepseek-onboarding-credential-setup.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-30-deepseek-onboarding-credential-setup.zh.md rename to .agents/notes/archived/feature/2026-07-30-deepseek-onboarding-credential-setup.zh.md index e94f55949e..0862a95e96 100644 --- a/.agents/notes/implemented/feature/2026-07-30-deepseek-onboarding-credential-setup.zh.md +++ b/.agents/notes/archived/feature/2026-07-30-deepseek-onboarding-credential-setup.zh.md @@ -1,6 +1,7 @@ # Agent Note: DeepSeek 官方首次使用凭据配置 Status: implemented +Archived: 2026-09-04 [English](2026-07-30-deepseek-onboarding-credential-setup.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-07-30-plan-review-presentation-intent.i18n.yaml b/.agents/notes/archived/feature/2026-07-30-plan-review-presentation-intent.i18n.yaml new file mode 100644 index 0000000000..bdd7214849 --- /dev/null +++ b/.agents/notes/archived/feature/2026-07-30-plan-review-presentation-intent.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-07-30-plan-review-presentation-intent.md +2026-07-30-plan-review-presentation-intent.md: 71e80eb99166e78cca496691c726562339313ef5 +2026-07-30-plan-review-presentation-intent.zh.md: efb6b24361e811a15a0d7c18deeff3dee97f0e22 diff --git a/.agents/notes/implemented/feature/2026-07-30-plan-review-presentation-intent.md b/.agents/notes/archived/feature/2026-07-30-plan-review-presentation-intent.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-30-plan-review-presentation-intent.md rename to .agents/notes/archived/feature/2026-07-30-plan-review-presentation-intent.md index 5bbd1ffc97..71e80eb991 100644 --- a/.agents/notes/implemented/feature/2026-07-30-plan-review-presentation-intent.md +++ b/.agents/notes/archived/feature/2026-07-30-plan-review-presentation-intent.md @@ -1,6 +1,7 @@ # Agent Note: Plan review as a decision, not a question Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-30-plan-review-presentation-intent.zh.md) diff --git a/.agents/notes/implemented/feature/2026-07-30-plan-review-presentation-intent.zh.md b/.agents/notes/archived/feature/2026-07-30-plan-review-presentation-intent.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-30-plan-review-presentation-intent.zh.md rename to .agents/notes/archived/feature/2026-07-30-plan-review-presentation-intent.zh.md index cd0b8c4075..efb6b24361 100644 --- a/.agents/notes/implemented/feature/2026-07-30-plan-review-presentation-intent.zh.md +++ b/.agents/notes/archived/feature/2026-07-30-plan-review-presentation-intent.zh.md @@ -1,6 +1,7 @@ # Agent Note: 计划审阅是一次决定,不是一道题 Status: implemented +Archived: 2026-09-04 [English](2026-07-30-plan-review-presentation-intent.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-07-30-search-render-card.i18n.yaml b/.agents/notes/archived/feature/2026-07-30-search-render-card.i18n.yaml new file mode 100644 index 0000000000..593315f8c1 --- /dev/null +++ b/.agents/notes/archived/feature/2026-07-30-search-render-card.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-07-30-search-render-card.md +2026-07-30-search-render-card.md: 106a38d28157027e4312f4d48ddcb6ce3b710b3d +2026-07-30-search-render-card.zh.md: 2f2a84ead3327979c0d38b2336cac0c6a621c1f1 diff --git a/.agents/notes/implemented/feature/2026-07-30-search-render-card.md b/.agents/notes/archived/feature/2026-07-30-search-render-card.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-30-search-render-card.md rename to .agents/notes/archived/feature/2026-07-30-search-render-card.md index 585609bd05..106a38d281 100644 --- a/.agents/notes/implemented/feature/2026-07-30-search-render-card.md +++ b/.agents/notes/archived/feature/2026-07-30-search-render-card.md @@ -1,6 +1,7 @@ # Agent Note: Search render intent — grep and glob emit a structured search card Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-30-search-render-card.zh.md) diff --git a/.agents/notes/implemented/feature/2026-07-30-search-render-card.zh.md b/.agents/notes/archived/feature/2026-07-30-search-render-card.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-30-search-render-card.zh.md rename to .agents/notes/archived/feature/2026-07-30-search-render-card.zh.md index 4ffaa1ae16..2f2a84ead3 100644 --- a/.agents/notes/implemented/feature/2026-07-30-search-render-card.zh.md +++ b/.agents/notes/archived/feature/2026-07-30-search-render-card.zh.md @@ -1,6 +1,7 @@ # Agent Note: 搜索渲染意图——grep 与 glob 产出结构化搜索卡片 Status: implemented +Archived: 2026-09-04 [English](2026-07-30-search-render-card.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-07-30-web-diff-card.i18n.yaml b/.agents/notes/archived/feature/2026-07-30-web-diff-card.i18n.yaml new file mode 100644 index 0000000000..9d171d8c5a --- /dev/null +++ b/.agents/notes/archived/feature/2026-07-30-web-diff-card.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-07-30-web-diff-card.md +2026-07-30-web-diff-card.md: 3d7081c1bd558f16a8e0b2df728aa0f7d26ba4fb +2026-07-30-web-diff-card.zh.md: 5dc9e4835cdc08ecee9a15cbbcce083242636ab8 diff --git a/.agents/notes/implemented/feature/2026-07-30-web-diff-card.md b/.agents/notes/archived/feature/2026-07-30-web-diff-card.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-30-web-diff-card.md rename to .agents/notes/archived/feature/2026-07-30-web-diff-card.md index 8497038d6f..3d7081c1bd 100644 --- a/.agents/notes/implemented/feature/2026-07-30-web-diff-card.md +++ b/.agents/notes/archived/feature/2026-07-30-web-diff-card.md @@ -1,6 +1,7 @@ # Agent Note: Web diff card — the write/edit render intent reaches the browser Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-30-web-diff-card.zh.md) diff --git a/.agents/notes/implemented/feature/2026-07-30-web-diff-card.zh.md b/.agents/notes/archived/feature/2026-07-30-web-diff-card.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-30-web-diff-card.zh.md rename to .agents/notes/archived/feature/2026-07-30-web-diff-card.zh.md index 40fc079f36..5dc9e4835c 100644 --- a/.agents/notes/implemented/feature/2026-07-30-web-diff-card.zh.md +++ b/.agents/notes/archived/feature/2026-07-30-web-diff-card.zh.md @@ -1,6 +1,7 @@ # Agent Note: Web diff 卡片 —— write/edit 渲染意图抵达浏览器 Status: implemented +Archived: 2026-09-04 [English](2026-07-30-web-diff-card.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-07-30-web-queue-steer-action.i18n.yaml b/.agents/notes/archived/feature/2026-07-30-web-queue-steer-action.i18n.yaml new file mode 100644 index 0000000000..b9f5b285b3 --- /dev/null +++ b/.agents/notes/archived/feature/2026-07-30-web-queue-steer-action.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-07-30-web-queue-steer-action.md +2026-07-30-web-queue-steer-action.md: 3df1d84aeb528cec9ebcf709ae766b81340b36ce +2026-07-30-web-queue-steer-action.zh.md: e5ffad2df8850df67135edd2c1337be44b8d5f28 diff --git a/.agents/notes/implemented/feature/2026-07-30-web-queue-steer-action.md b/.agents/notes/archived/feature/2026-07-30-web-queue-steer-action.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-30-web-queue-steer-action.md rename to .agents/notes/archived/feature/2026-07-30-web-queue-steer-action.md index 2718c5b3cc..3df1d84aeb 100644 --- a/.agents/notes/implemented/feature/2026-07-30-web-queue-steer-action.md +++ b/.agents/notes/archived/feature/2026-07-30-web-queue-steer-action.md @@ -1,6 +1,7 @@ # Agent Note: Steer a queued Web message into the active turn Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-30-web-queue-steer-action.zh.md) diff --git a/.agents/notes/implemented/feature/2026-07-30-web-queue-steer-action.zh.md b/.agents/notes/archived/feature/2026-07-30-web-queue-steer-action.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-30-web-queue-steer-action.zh.md rename to .agents/notes/archived/feature/2026-07-30-web-queue-steer-action.zh.md index 377117e2aa..e5ffad2df8 100644 --- a/.agents/notes/implemented/feature/2026-07-30-web-queue-steer-action.zh.md +++ b/.agents/notes/archived/feature/2026-07-30-web-queue-steer-action.zh.md @@ -1,6 +1,7 @@ # Agent Note: 将 Web 已排队消息转为活动轮次的 steering(中途引导) Status: implemented +Archived: 2026-09-04 [English](2026-07-30-web-queue-steer-action.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-07-30-web-read-card-frontend.i18n.yaml b/.agents/notes/archived/feature/2026-07-30-web-read-card-frontend.i18n.yaml new file mode 100644 index 0000000000..7698ee4421 --- /dev/null +++ b/.agents/notes/archived/feature/2026-07-30-web-read-card-frontend.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-07-30-web-read-card-frontend.md +2026-07-30-web-read-card-frontend.md: ee725117822f1f366b1c30a0bece696bea951b80 +2026-07-30-web-read-card-frontend.zh.md: 9d60b4a1c285491c848a3ca7531b60d2aa542df8 diff --git a/.agents/notes/implemented/feature/2026-07-30-web-read-card-frontend.md b/.agents/notes/archived/feature/2026-07-30-web-read-card-frontend.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-30-web-read-card-frontend.md rename to .agents/notes/archived/feature/2026-07-30-web-read-card-frontend.md index 98e31d4192..ee72511782 100644 --- a/.agents/notes/implemented/feature/2026-07-30-web-read-card-frontend.md +++ b/.agents/notes/archived/feature/2026-07-30-web-read-card-frontend.md @@ -1,6 +1,7 @@ # Agent Note: Web read card frontend — the read tool's line window renders line-numbered and highlighted Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-30-web-read-card-frontend.zh.md) diff --git a/.agents/notes/implemented/feature/2026-07-30-web-read-card-frontend.zh.md b/.agents/notes/archived/feature/2026-07-30-web-read-card-frontend.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-30-web-read-card-frontend.zh.md rename to .agents/notes/archived/feature/2026-07-30-web-read-card-frontend.zh.md index 50e1ca8d05..9d60b4a1c2 100644 --- a/.agents/notes/implemented/feature/2026-07-30-web-read-card-frontend.zh.md +++ b/.agents/notes/archived/feature/2026-07-30-web-read-card-frontend.zh.md @@ -1,6 +1,7 @@ # Agent Note: Web 读取卡片前端 —— 读取工具的行窗口以带行号、语法高亮的形式渲染 Status: implemented +Archived: 2026-09-04 [English](2026-07-30-web-read-card-frontend.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-07-30-web-read-card.i18n.yaml b/.agents/notes/archived/feature/2026-07-30-web-read-card.i18n.yaml new file mode 100644 index 0000000000..7db1c0d464 --- /dev/null +++ b/.agents/notes/archived/feature/2026-07-30-web-read-card.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-07-30-web-read-card.md +2026-07-30-web-read-card.md: 68a816f98bf4b6c605a1d077edc284f0660ddcd1 +2026-07-30-web-read-card.zh.md: b835b3aceceb399fb919a096f3c49a1f67452ff3 diff --git a/.agents/notes/implemented/feature/2026-07-30-web-read-card.md b/.agents/notes/archived/feature/2026-07-30-web-read-card.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-30-web-read-card.md rename to .agents/notes/archived/feature/2026-07-30-web-read-card.md index 2023b93f44..68a816f98b 100644 --- a/.agents/notes/implemented/feature/2026-07-30-web-read-card.md +++ b/.agents/notes/archived/feature/2026-07-30-web-read-card.md @@ -1,6 +1,7 @@ # Agent Note: Read card — the read tool's structured line window reaches the client Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-30-web-read-card.zh.md) diff --git a/.agents/notes/implemented/feature/2026-07-30-web-read-card.zh.md b/.agents/notes/archived/feature/2026-07-30-web-read-card.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-30-web-read-card.zh.md rename to .agents/notes/archived/feature/2026-07-30-web-read-card.zh.md index 426b5cc1eb..b835b3acec 100644 --- a/.agents/notes/implemented/feature/2026-07-30-web-read-card.zh.md +++ b/.agents/notes/archived/feature/2026-07-30-web-read-card.zh.md @@ -1,6 +1,7 @@ # Agent Note: Read card — the read tool's structured line window reaches the client Status: implemented +Archived: 2026-09-04 [English](2026-07-30-web-read-card.md) | 中文 diff --git a/.agents/notes/implemented/architecture/2026-08-20-preview-cloudflare-pages-deploy.i18n.yaml b/.agents/notes/archived/feature/2026-07-30-web-result-card-frontend.i18n.yaml similarity index 53% rename from .agents/notes/implemented/architecture/2026-08-20-preview-cloudflare-pages-deploy.i18n.yaml rename to .agents/notes/archived/feature/2026-07-30-web-result-card-frontend.i18n.yaml index a40588d7f4..ee0c341e59 100644 --- a/.agents/notes/implemented/architecture/2026-08-20-preview-cloudflare-pages-deploy.i18n.yaml +++ b/.agents/notes/archived/feature/2026-07-30-web-result-card-frontend.i18n.yaml @@ -1,6 +1,6 @@ # Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-08-20-preview-cloudflare-pages-deploy.md -2026-08-20-preview-cloudflare-pages-deploy.md: 38b2834d612153d235d3b0aaffead3bd2b33eec7 -2026-08-20-preview-cloudflare-pages-deploy.zh.md: 7268217f01dc11e220ba1f6bc7364072e2ab842a +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-07-30-web-result-card-frontend.md +2026-07-30-web-result-card-frontend.md: 1615c59bb1d7abd05c1f11ef0abdf8096034d95b +2026-07-30-web-result-card-frontend.zh.md: e99ea2dc9457300853581421055dbf3f6e12ef77 diff --git a/.agents/notes/implemented/feature/2026-07-30-web-result-card-frontend.md b/.agents/notes/archived/feature/2026-07-30-web-result-card-frontend.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-30-web-result-card-frontend.md rename to .agents/notes/archived/feature/2026-07-30-web-result-card-frontend.md index 6a00e0820a..1615c59bb1 100644 --- a/.agents/notes/implemented/feature/2026-07-30-web-result-card-frontend.md +++ b/.agents/notes/archived/feature/2026-07-30-web-result-card-frontend.md @@ -1,6 +1,7 @@ # Agent Note: Web result card frontend — rendering the web render intent in the browser Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-30-web-result-card-frontend.zh.md) diff --git a/.agents/notes/implemented/feature/2026-07-30-web-result-card-frontend.zh.md b/.agents/notes/archived/feature/2026-07-30-web-result-card-frontend.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-30-web-result-card-frontend.zh.md rename to .agents/notes/archived/feature/2026-07-30-web-result-card-frontend.zh.md index 42543e2dcd..e99ea2dc94 100644 --- a/.agents/notes/implemented/feature/2026-07-30-web-result-card-frontend.zh.md +++ b/.agents/notes/archived/feature/2026-07-30-web-result-card-frontend.zh.md @@ -1,6 +1,7 @@ # Agent Note: Web result 卡片前端 —— 在浏览器渲染 web 渲染意图 Status: implemented +Archived: 2026-09-04 [English](2026-07-30-web-result-card-frontend.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-07-30-web-result-card.i18n.yaml b/.agents/notes/archived/feature/2026-07-30-web-result-card.i18n.yaml new file mode 100644 index 0000000000..ac0135c2ac --- /dev/null +++ b/.agents/notes/archived/feature/2026-07-30-web-result-card.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-07-30-web-result-card.md +2026-07-30-web-result-card.md: c87f1d74ae89fc5e007134c35c86ec2fed986ae7 +2026-07-30-web-result-card.zh.md: 98d20f4c5b79f6a8654261c31b40de88370de57d diff --git a/.agents/notes/implemented/feature/2026-07-30-web-result-card.md b/.agents/notes/archived/feature/2026-07-30-web-result-card.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-30-web-result-card.md rename to .agents/notes/archived/feature/2026-07-30-web-result-card.md index 35ad069981..c87f1d74ae 100644 --- a/.agents/notes/implemented/feature/2026-07-30-web-result-card.md +++ b/.agents/notes/archived/feature/2026-07-30-web-result-card.md @@ -1,6 +1,7 @@ # Agent Note: Web result card — a structured render intent for web_search and web_fetch Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-30-web-result-card.zh.md) diff --git a/.agents/notes/implemented/feature/2026-07-30-web-result-card.zh.md b/.agents/notes/archived/feature/2026-07-30-web-result-card.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-30-web-result-card.zh.md rename to .agents/notes/archived/feature/2026-07-30-web-result-card.zh.md index 81656b5f65..98d20f4c5b 100644 --- a/.agents/notes/implemented/feature/2026-07-30-web-result-card.zh.md +++ b/.agents/notes/archived/feature/2026-07-30-web-result-card.zh.md @@ -1,6 +1,7 @@ # Agent Note: Web result card — a structured render intent for web_search and web_fetch Status: implemented +Archived: 2026-09-04 [English](2026-07-30-web-result-card.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-07-30-web-search-card.i18n.yaml b/.agents/notes/archived/feature/2026-07-30-web-search-card.i18n.yaml new file mode 100644 index 0000000000..982df1cc9c --- /dev/null +++ b/.agents/notes/archived/feature/2026-07-30-web-search-card.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-07-30-web-search-card.md +2026-07-30-web-search-card.md: eae868c31ec6b74a5a9db21b3ec08a1ac04052d2 +2026-07-30-web-search-card.zh.md: b493016479bcc47164ca6fb571fff52d1a5828b0 diff --git a/.agents/notes/implemented/feature/2026-07-30-web-search-card.md b/.agents/notes/archived/feature/2026-07-30-web-search-card.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-30-web-search-card.md rename to .agents/notes/archived/feature/2026-07-30-web-search-card.md index 55a91e2d2a..eae868c31e 100644 --- a/.agents/notes/implemented/feature/2026-07-30-web-search-card.md +++ b/.agents/notes/archived/feature/2026-07-30-web-search-card.md @@ -1,6 +1,7 @@ # Agent Note: Web search card — the grep and glob render intent reaches the browser Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-30-web-search-card.zh.md) diff --git a/.agents/notes/implemented/feature/2026-07-30-web-search-card.zh.md b/.agents/notes/archived/feature/2026-07-30-web-search-card.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-30-web-search-card.zh.md rename to .agents/notes/archived/feature/2026-07-30-web-search-card.zh.md index eda7332848..b493016479 100644 --- a/.agents/notes/implemented/feature/2026-07-30-web-search-card.zh.md +++ b/.agents/notes/archived/feature/2026-07-30-web-search-card.zh.md @@ -1,6 +1,7 @@ # Agent Note: Web 搜索卡片 —— grep 与 glob 的 render intent 到达浏览器 Status: implemented +Archived: 2026-09-04 [English](2026-07-30-web-search-card.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-07-30-web-tool-row-unified-expand-and-inspect.i18n.yaml b/.agents/notes/archived/feature/2026-07-30-web-tool-row-unified-expand-and-inspect.i18n.yaml new file mode 100644 index 0000000000..efb47f59f4 --- /dev/null +++ b/.agents/notes/archived/feature/2026-07-30-web-tool-row-unified-expand-and-inspect.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-07-30-web-tool-row-unified-expand-and-inspect.md +2026-07-30-web-tool-row-unified-expand-and-inspect.md: bf0eab938b446e220502ec9435a31af23144ec9d +2026-07-30-web-tool-row-unified-expand-and-inspect.zh.md: d23ada8accc9655cb3c552d249c869f365dffb43 diff --git a/.agents/notes/implemented/feature/2026-07-30-web-tool-row-unified-expand-and-inspect.md b/.agents/notes/archived/feature/2026-07-30-web-tool-row-unified-expand-and-inspect.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-30-web-tool-row-unified-expand-and-inspect.md rename to .agents/notes/archived/feature/2026-07-30-web-tool-row-unified-expand-and-inspect.md index 4fcf1e9a56..bf0eab938b 100644 --- a/.agents/notes/implemented/feature/2026-07-30-web-tool-row-unified-expand-and-inspect.md +++ b/.agents/notes/archived/feature/2026-07-30-web-tool-row-unified-expand-and-inspect.md @@ -1,6 +1,7 @@ # Agent Note: Web tool-row unified expand and trajectory Inspect Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-30-web-tool-row-unified-expand-and-inspect.zh.md) diff --git a/.agents/notes/implemented/feature/2026-07-30-web-tool-row-unified-expand-and-inspect.zh.md b/.agents/notes/archived/feature/2026-07-30-web-tool-row-unified-expand-and-inspect.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-30-web-tool-row-unified-expand-and-inspect.zh.md rename to .agents/notes/archived/feature/2026-07-30-web-tool-row-unified-expand-and-inspect.zh.md index 765cd058c9..d23ada8acc 100644 --- a/.agents/notes/implemented/feature/2026-07-30-web-tool-row-unified-expand-and-inspect.zh.md +++ b/.agents/notes/archived/feature/2026-07-30-web-tool-row-unified-expand-and-inspect.zh.md @@ -1,6 +1,7 @@ # Agent Note: Web 工具行统一展开交互与 trajectory Inspect Status: implemented +Archived: 2026-09-04 [English](2026-07-30-web-tool-row-unified-expand-and-inspect.md) | 中文 diff --git a/.agents/notes/implemented/feature/2026-07-27-web-session-fork-actions.i18n.yaml b/.agents/notes/archived/feature/2026-07-31-browser-derived-initial-locale.i18n.yaml similarity index 56% rename from .agents/notes/implemented/feature/2026-07-27-web-session-fork-actions.i18n.yaml rename to .agents/notes/archived/feature/2026-07-31-browser-derived-initial-locale.i18n.yaml index 4f394eb2b3..dab49efd36 100644 --- a/.agents/notes/implemented/feature/2026-07-27-web-session-fork-actions.i18n.yaml +++ b/.agents/notes/archived/feature/2026-07-31-browser-derived-initial-locale.i18n.yaml @@ -1,6 +1,6 @@ # Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-07-27-web-session-fork-actions.md -2026-07-27-web-session-fork-actions.md: 578e59ec92e003fe5c8cdfe951a595f3a7371ecf -2026-07-27-web-session-fork-actions.zh.md: 8995b4c89b5abc87693da1c6a63e00e1fa303d57 +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-07-31-browser-derived-initial-locale.md +2026-07-31-browser-derived-initial-locale.md: 9077a0a670465c2267e45bf68568bcf39bb358cf +2026-07-31-browser-derived-initial-locale.zh.md: ae5276e36f984dd2dd580a764225beb687ff1817 diff --git a/.agents/notes/implemented/feature/2026-07-31-browser-derived-initial-locale.md b/.agents/notes/archived/feature/2026-07-31-browser-derived-initial-locale.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-31-browser-derived-initial-locale.md rename to .agents/notes/archived/feature/2026-07-31-browser-derived-initial-locale.md index 28b5c98d51..9077a0a670 100644 --- a/.agents/notes/implemented/feature/2026-07-31-browser-derived-initial-locale.md +++ b/.agents/notes/archived/feature/2026-07-31-browser-derived-initial-locale.md @@ -1,6 +1,7 @@ # Agent Note: The Settings language a fresh browser opens in comes from the browser Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-31-browser-derived-initial-locale.zh.md) diff --git a/.agents/notes/implemented/feature/2026-07-31-browser-derived-initial-locale.zh.md b/.agents/notes/archived/feature/2026-07-31-browser-derived-initial-locale.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-31-browser-derived-initial-locale.zh.md rename to .agents/notes/archived/feature/2026-07-31-browser-derived-initial-locale.zh.md index 34741af01a..ae5276e36f 100644 --- a/.agents/notes/implemented/feature/2026-07-31-browser-derived-initial-locale.zh.md +++ b/.agents/notes/archived/feature/2026-07-31-browser-derived-initial-locale.zh.md @@ -1,6 +1,7 @@ # Agent Note: 全新浏览器打开的设置语言由浏览器决定 Status: implemented +Archived: 2026-09-04 [English](2026-07-31-browser-derived-initial-locale.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-07-31-gui-full-access-confirmation.i18n.yaml b/.agents/notes/archived/feature/2026-07-31-gui-full-access-confirmation.i18n.yaml new file mode 100644 index 0000000000..e5b9bfbb7f --- /dev/null +++ b/.agents/notes/archived/feature/2026-07-31-gui-full-access-confirmation.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-07-31-gui-full-access-confirmation.md +2026-07-31-gui-full-access-confirmation.md: 8bcc6bfbc7f27defd3fd09ceb95f6b17f946bc08 +2026-07-31-gui-full-access-confirmation.zh.md: a4b229244cd9d3fce4a177581db511ab7d0cf670 diff --git a/.agents/notes/implemented/feature/2026-07-31-gui-full-access-confirmation.md b/.agents/notes/archived/feature/2026-07-31-gui-full-access-confirmation.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-31-gui-full-access-confirmation.md rename to .agents/notes/archived/feature/2026-07-31-gui-full-access-confirmation.md index c0ae295c31..8bcc6bfbc7 100644 --- a/.agents/notes/implemented/feature/2026-07-31-gui-full-access-confirmation.md +++ b/.agents/notes/archived/feature/2026-07-31-gui-full-access-confirmation.md @@ -1,6 +1,7 @@ # Agent Note: GUI Full access risk confirmation Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-31-gui-full-access-confirmation.zh.md) diff --git a/.agents/notes/implemented/feature/2026-07-31-gui-full-access-confirmation.zh.md b/.agents/notes/archived/feature/2026-07-31-gui-full-access-confirmation.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-31-gui-full-access-confirmation.zh.md rename to .agents/notes/archived/feature/2026-07-31-gui-full-access-confirmation.zh.md index 1679fc5060..a4b229244c 100644 --- a/.agents/notes/implemented/feature/2026-07-31-gui-full-access-confirmation.zh.md +++ b/.agents/notes/archived/feature/2026-07-31-gui-full-access-confirmation.zh.md @@ -1,6 +1,7 @@ # Agent Note: GUI Full access 风险确认 Status: implemented +Archived: 2026-09-04 [English](2026-07-31-gui-full-access-confirmation.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-07-31-permission-default-for-new-sessions.i18n.yaml b/.agents/notes/archived/feature/2026-07-31-permission-default-for-new-sessions.i18n.yaml new file mode 100644 index 0000000000..3196576a6a --- /dev/null +++ b/.agents/notes/archived/feature/2026-07-31-permission-default-for-new-sessions.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-07-31-permission-default-for-new-sessions.md +2026-07-31-permission-default-for-new-sessions.md: e50446c5efcfd78a009941da381e7b73b2461d08 +2026-07-31-permission-default-for-new-sessions.zh.md: 38193db234a64d3abafd8f7d0daccce8d386b3de diff --git a/.agents/notes/implemented/feature/2026-07-31-permission-default-for-new-sessions.md b/.agents/notes/archived/feature/2026-07-31-permission-default-for-new-sessions.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-31-permission-default-for-new-sessions.md rename to .agents/notes/archived/feature/2026-07-31-permission-default-for-new-sessions.md index 5f62effa8d..e50446c5ef 100644 --- a/.agents/notes/implemented/feature/2026-07-31-permission-default-for-new-sessions.md +++ b/.agents/notes/archived/feature/2026-07-31-permission-default-for-new-sessions.md @@ -1,6 +1,7 @@ # Agent Note: Permission Settings default for new sessions Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-31-permission-default-for-new-sessions.zh.md) diff --git a/.agents/notes/implemented/feature/2026-07-31-permission-default-for-new-sessions.zh.md b/.agents/notes/archived/feature/2026-07-31-permission-default-for-new-sessions.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-31-permission-default-for-new-sessions.zh.md rename to .agents/notes/archived/feature/2026-07-31-permission-default-for-new-sessions.zh.md index f8810d9ff5..38193db234 100644 --- a/.agents/notes/implemented/feature/2026-07-31-permission-default-for-new-sessions.zh.md +++ b/.agents/notes/archived/feature/2026-07-31-permission-default-for-new-sessions.zh.md @@ -1,6 +1,7 @@ # Agent Note: 新会话的权限 Settings 默认值 Status: implemented +Archived: 2026-09-04 [English](2026-07-31-permission-default-for-new-sessions.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-07-31-ptc-language-dispatch.i18n.yaml b/.agents/notes/archived/feature/2026-07-31-ptc-language-dispatch.i18n.yaml new file mode 100644 index 0000000000..1f4e96e85a --- /dev/null +++ b/.agents/notes/archived/feature/2026-07-31-ptc-language-dispatch.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-07-31-ptc-language-dispatch.md +2026-07-31-ptc-language-dispatch.md: f7a0b64b06b5eeae41af1ecbba71676a1cec18fc +2026-07-31-ptc-language-dispatch.zh.md: b2c2a16cc16afbc0901159954dcdd748bb1ab724 diff --git a/.agents/notes/implemented/feature/2026-07-31-ptc-language-dispatch.md b/.agents/notes/archived/feature/2026-07-31-ptc-language-dispatch.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-31-ptc-language-dispatch.md rename to .agents/notes/archived/feature/2026-07-31-ptc-language-dispatch.md index c23e7b7ee1..f7a0b64b06 100644 --- a/.agents/notes/implemented/feature/2026-07-31-ptc-language-dispatch.md +++ b/.agents/notes/archived/feature/2026-07-31-ptc-language-dispatch.md @@ -1,6 +1,7 @@ # Agent Note: PTC mode language dispatch and the Python SDK renderer Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-31-ptc-language-dispatch.zh.md) diff --git a/.agents/notes/implemented/feature/2026-07-31-ptc-language-dispatch.zh.md b/.agents/notes/archived/feature/2026-07-31-ptc-language-dispatch.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-31-ptc-language-dispatch.zh.md rename to .agents/notes/archived/feature/2026-07-31-ptc-language-dispatch.zh.md index 2b01106317..b2c2a16cc1 100644 --- a/.agents/notes/implemented/feature/2026-07-31-ptc-language-dispatch.zh.md +++ b/.agents/notes/archived/feature/2026-07-31-ptc-language-dispatch.zh.md @@ -1,6 +1,7 @@ # Agent Note: PTC mode 语言分发与 Python SDK 渲染器 Status: implemented +Archived: 2026-09-04 [English](2026-07-31-ptc-language-dispatch.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-07-31-session-archive-global-set.i18n.yaml b/.agents/notes/archived/feature/2026-07-31-session-archive-global-set.i18n.yaml new file mode 100644 index 0000000000..f6e63a5e1a --- /dev/null +++ b/.agents/notes/archived/feature/2026-07-31-session-archive-global-set.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-07-31-session-archive-global-set.md +2026-07-31-session-archive-global-set.md: dbf860ce2d8db6ddd5582cc0f12cb0c5cb1a8d00 +2026-07-31-session-archive-global-set.zh.md: d196e14065fb75e5ae20003a055fded8cb67b81b diff --git a/.agents/notes/implemented/feature/2026-07-31-session-archive-global-set.md b/.agents/notes/archived/feature/2026-07-31-session-archive-global-set.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-31-session-archive-global-set.md rename to .agents/notes/archived/feature/2026-07-31-session-archive-global-set.md index 6117b9f7df..dbf860ce2d 100644 --- a/.agents/notes/implemented/feature/2026-07-31-session-archive-global-set.md +++ b/.agents/notes/archived/feature/2026-07-31-session-archive-global-set.md @@ -1,6 +1,7 @@ # Agent Note: Session archive (registry-global set) Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-31-session-archive-global-set.zh.md) diff --git a/.agents/notes/implemented/feature/2026-07-31-session-archive-global-set.zh.md b/.agents/notes/archived/feature/2026-07-31-session-archive-global-set.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-31-session-archive-global-set.zh.md rename to .agents/notes/archived/feature/2026-07-31-session-archive-global-set.zh.md index bb57cbb8b9..d196e14065 100644 --- a/.agents/notes/implemented/feature/2026-07-31-session-archive-global-set.zh.md +++ b/.agents/notes/archived/feature/2026-07-31-session-archive-global-set.zh.md @@ -1,6 +1,7 @@ # Agent Note: 会话归档(注册表级全局集合) Status: implemented +Archived: 2026-09-04 [English](2026-07-31-session-archive-global-set.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-07-31-telemetry-anonymous-user-id.i18n.yaml b/.agents/notes/archived/feature/2026-07-31-telemetry-anonymous-user-id.i18n.yaml new file mode 100644 index 0000000000..dac676bcb5 --- /dev/null +++ b/.agents/notes/archived/feature/2026-07-31-telemetry-anonymous-user-id.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-07-31-telemetry-anonymous-user-id.md +2026-07-31-telemetry-anonymous-user-id.md: 2621ef77a1eddcfe88c2866a53ddff4ae9560e13 +2026-07-31-telemetry-anonymous-user-id.zh.md: ac64c980370e3f3d40518b408f749bf8605e7b5d diff --git a/.agents/notes/implemented/feature/2026-07-31-telemetry-anonymous-user-id.md b/.agents/notes/archived/feature/2026-07-31-telemetry-anonymous-user-id.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-31-telemetry-anonymous-user-id.md rename to .agents/notes/archived/feature/2026-07-31-telemetry-anonymous-user-id.md index 1fb65b4c58..2621ef77a1 100644 --- a/.agents/notes/implemented/feature/2026-07-31-telemetry-anonymous-user-id.md +++ b/.agents/notes/archived/feature/2026-07-31-telemetry-anonymous-user-id.md @@ -1,6 +1,7 @@ # Agent Note: SessionTelemetryBackend anonymous user id ($DSH_HOME/.anonymous-user-id) and the OTel Resource user.id Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-31-telemetry-anonymous-user-id.zh.md) diff --git a/.agents/notes/implemented/feature/2026-07-31-telemetry-anonymous-user-id.zh.md b/.agents/notes/archived/feature/2026-07-31-telemetry-anonymous-user-id.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-31-telemetry-anonymous-user-id.zh.md rename to .agents/notes/archived/feature/2026-07-31-telemetry-anonymous-user-id.zh.md index a7d90b382f..ac64c98037 100644 --- a/.agents/notes/implemented/feature/2026-07-31-telemetry-anonymous-user-id.zh.md +++ b/.agents/notes/archived/feature/2026-07-31-telemetry-anonymous-user-id.zh.md @@ -1,6 +1,7 @@ # Agent Note: 遥测匿名用户 id($DSH_HOME/.anonymous-user-id)与 OTel Resource 的 user.id Status: implemented +Archived: 2026-09-04 [English](2026-07-31-telemetry-anonymous-user-id.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-07-31-third-party-memory-mcp-examples.i18n.yaml b/.agents/notes/archived/feature/2026-07-31-third-party-memory-mcp-examples.i18n.yaml new file mode 100644 index 0000000000..5ed33661ae --- /dev/null +++ b/.agents/notes/archived/feature/2026-07-31-third-party-memory-mcp-examples.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-07-31-third-party-memory-mcp-examples.md +2026-07-31-third-party-memory-mcp-examples.md: 8ba6f36e659f62f92c476c62ced02cff9eede677 +2026-07-31-third-party-memory-mcp-examples.zh.md: da89cdff069dd35c0504d50def78d6194cc966d3 diff --git a/.agents/notes/implemented/feature/2026-07-31-third-party-memory-mcp-examples.md b/.agents/notes/archived/feature/2026-07-31-third-party-memory-mcp-examples.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-31-third-party-memory-mcp-examples.md rename to .agents/notes/archived/feature/2026-07-31-third-party-memory-mcp-examples.md index 49cf6b5a3e..8ba6f36e65 100644 --- a/.agents/notes/implemented/feature/2026-07-31-third-party-memory-mcp-examples.md +++ b/.agents/notes/archived/feature/2026-07-31-third-party-memory-mcp-examples.md @@ -1,6 +1,7 @@ # Agent Note: Third-party memory MCP examples Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-31-third-party-memory-mcp-examples.zh.md) diff --git a/.agents/notes/implemented/feature/2026-07-31-third-party-memory-mcp-examples.zh.md b/.agents/notes/archived/feature/2026-07-31-third-party-memory-mcp-examples.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-31-third-party-memory-mcp-examples.zh.md rename to .agents/notes/archived/feature/2026-07-31-third-party-memory-mcp-examples.zh.md index eab7a7b9e9..da89cdff06 100644 --- a/.agents/notes/implemented/feature/2026-07-31-third-party-memory-mcp-examples.zh.md +++ b/.agents/notes/archived/feature/2026-07-31-third-party-memory-mcp-examples.zh.md @@ -1,6 +1,7 @@ # Agent Note: 第三方记忆 MCP 示例 Status: implemented +Archived: 2026-09-04 [English](2026-07-31-third-party-memory-mcp-examples.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-07-31-web-telemetry-default-mount.i18n.yaml b/.agents/notes/archived/feature/2026-07-31-web-telemetry-default-mount.i18n.yaml new file mode 100644 index 0000000000..1e06ec9351 --- /dev/null +++ b/.agents/notes/archived/feature/2026-07-31-web-telemetry-default-mount.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-07-31-web-telemetry-default-mount.md +2026-07-31-web-telemetry-default-mount.md: b39d7d502417111369b1bfde9c8f0cc3ef27613e +2026-07-31-web-telemetry-default-mount.zh.md: c001cdd61d202180e51f4030d75de96c19ef1401 diff --git a/.agents/notes/implemented/feature/2026-07-31-web-telemetry-default-mount.md b/.agents/notes/archived/feature/2026-07-31-web-telemetry-default-mount.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-31-web-telemetry-default-mount.md rename to .agents/notes/archived/feature/2026-07-31-web-telemetry-default-mount.md index aea90ef928..b39d7d5024 100644 --- a/.agents/notes/implemented/feature/2026-07-31-web-telemetry-default-mount.md +++ b/.agents/notes/archived/feature/2026-07-31-web-telemetry-default-mount.md @@ -1,6 +1,7 @@ # Agent Note: Default session-telemetry mount (OTel reporting) in the dsh web composition Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-31-web-telemetry-default-mount.zh.md) diff --git a/.agents/notes/implemented/feature/2026-07-31-web-telemetry-default-mount.zh.md b/.agents/notes/archived/feature/2026-07-31-web-telemetry-default-mount.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-31-web-telemetry-default-mount.zh.md rename to .agents/notes/archived/feature/2026-07-31-web-telemetry-default-mount.zh.md index 122b7ad593..c001cdd61d 100644 --- a/.agents/notes/implemented/feature/2026-07-31-web-telemetry-default-mount.zh.md +++ b/.agents/notes/archived/feature/2026-07-31-web-telemetry-default-mount.zh.md @@ -1,6 +1,7 @@ # Agent Note: dsh web 组合默认挂载会话遥测(OTel 上报) Status: implemented +Archived: 2026-09-04 [English](2026-07-31-web-telemetry-default-mount.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-07-31-workspace-write-surface-default.i18n.yaml b/.agents/notes/archived/feature/2026-07-31-workspace-write-surface-default.i18n.yaml new file mode 100644 index 0000000000..9b36af0591 --- /dev/null +++ b/.agents/notes/archived/feature/2026-07-31-workspace-write-surface-default.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-07-31-workspace-write-surface-default.md +2026-07-31-workspace-write-surface-default.md: 7e0a8be25ffa36621b3489e425f035fb9db2a25f +2026-07-31-workspace-write-surface-default.zh.md: 8ac63b81884a48c73eaec17d9cd3f4307738c788 diff --git a/.agents/notes/implemented/feature/2026-07-31-workspace-write-surface-default.md b/.agents/notes/archived/feature/2026-07-31-workspace-write-surface-default.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-31-workspace-write-surface-default.md rename to .agents/notes/archived/feature/2026-07-31-workspace-write-surface-default.md index 2ce4d7b45a..7e0a8be25f 100644 --- a/.agents/notes/implemented/feature/2026-07-31-workspace-write-surface-default.md +++ b/.agents/notes/archived/feature/2026-07-31-workspace-write-surface-default.md @@ -1,6 +1,7 @@ # Agent Note: Workspace-write defaults for shipped surfaces Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-31-workspace-write-surface-default.zh.md) diff --git a/.agents/notes/implemented/feature/2026-07-31-workspace-write-surface-default.zh.md b/.agents/notes/archived/feature/2026-07-31-workspace-write-surface-default.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-31-workspace-write-surface-default.zh.md rename to .agents/notes/archived/feature/2026-07-31-workspace-write-surface-default.zh.md index 40b97812eb..8ac63b8188 100644 --- a/.agents/notes/implemented/feature/2026-07-31-workspace-write-surface-default.zh.md +++ b/.agents/notes/archived/feature/2026-07-31-workspace-write-surface-default.zh.md @@ -1,6 +1,7 @@ # Agent Note: 已交付界面的 workspace-write 默认值 Status: implemented +Archived: 2026-09-04 [English](2026-07-31-workspace-write-surface-default.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-08-01-goal-command-input-projection.i18n.yaml b/.agents/notes/archived/feature/2026-08-01-goal-command-input-projection.i18n.yaml new file mode 100644 index 0000000000..a61e6842cd --- /dev/null +++ b/.agents/notes/archived/feature/2026-08-01-goal-command-input-projection.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-08-01-goal-command-input-projection.md +2026-08-01-goal-command-input-projection.md: b5bf10095dc6429edb9b2aadca9944f10ec65935 +2026-08-01-goal-command-input-projection.zh.md: dac3c96f0b26fa55e628a7d086d0b8cbccf4c282 diff --git a/.agents/notes/implemented/feature/2026-08-01-goal-command-input-projection.md b/.agents/notes/archived/feature/2026-08-01-goal-command-input-projection.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-01-goal-command-input-projection.md rename to .agents/notes/archived/feature/2026-08-01-goal-command-input-projection.md index 02836de7ea..b5bf10095d 100644 --- a/.agents/notes/implemented/feature/2026-08-01-goal-command-input-projection.md +++ b/.agents/notes/archived/feature/2026-08-01-goal-command-input-projection.md @@ -1,6 +1,7 @@ # Agent Note: Goal command input projection Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-01-goal-command-input-projection.zh.md) diff --git a/.agents/notes/implemented/feature/2026-08-01-goal-command-input-projection.zh.md b/.agents/notes/archived/feature/2026-08-01-goal-command-input-projection.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-01-goal-command-input-projection.zh.md rename to .agents/notes/archived/feature/2026-08-01-goal-command-input-projection.zh.md index 8c28ba1c90..dac3c96f0b 100644 --- a/.agents/notes/implemented/feature/2026-08-01-goal-command-input-projection.zh.md +++ b/.agents/notes/archived/feature/2026-08-01-goal-command-input-projection.zh.md @@ -1,6 +1,7 @@ # Agent Note: Goal 命令输入投影 Status: implemented +Archived: 2026-09-04 [English](2026-08-01-goal-command-input-projection.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-08-01-pwsh-tool-and-executor.i18n.yaml b/.agents/notes/archived/feature/2026-08-01-pwsh-tool-and-executor.i18n.yaml new file mode 100644 index 0000000000..6d1544c585 --- /dev/null +++ b/.agents/notes/archived/feature/2026-08-01-pwsh-tool-and-executor.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-08-01-pwsh-tool-and-executor.md +2026-08-01-pwsh-tool-and-executor.md: c5f92830c1e2ed336cb9ed1a0d5dfb2c2e8bf2ae +2026-08-01-pwsh-tool-and-executor.zh.md: d0af36ac2c2ff4dfe07d83a65016135db87f944f diff --git a/.agents/notes/implemented/feature/2026-08-01-pwsh-tool-and-executor.md b/.agents/notes/archived/feature/2026-08-01-pwsh-tool-and-executor.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-01-pwsh-tool-and-executor.md rename to .agents/notes/archived/feature/2026-08-01-pwsh-tool-and-executor.md index 2b7265f9d3..c5f92830c1 100644 --- a/.agents/notes/implemented/feature/2026-08-01-pwsh-tool-and-executor.md +++ b/.agents/notes/archived/feature/2026-08-01-pwsh-tool-and-executor.md @@ -1,6 +1,7 @@ # Agent Note: PowerShell executor and pwsh tool Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-01-pwsh-tool-and-executor.zh.md) diff --git a/.agents/notes/implemented/feature/2026-08-01-pwsh-tool-and-executor.zh.md b/.agents/notes/archived/feature/2026-08-01-pwsh-tool-and-executor.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-01-pwsh-tool-and-executor.zh.md rename to .agents/notes/archived/feature/2026-08-01-pwsh-tool-and-executor.zh.md index 21ab2d3261..d0af36ac2c 100644 --- a/.agents/notes/implemented/feature/2026-08-01-pwsh-tool-and-executor.zh.md +++ b/.agents/notes/archived/feature/2026-08-01-pwsh-tool-and-executor.zh.md @@ -1,6 +1,7 @@ # Agent Note: PowerShell 执行器与 pwsh 工具 Status: implemented +Archived: 2026-09-04 [English](2026-08-01-pwsh-tool-and-executor.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-08-01-windows-pwsh-default.i18n.yaml b/.agents/notes/archived/feature/2026-08-01-windows-pwsh-default.i18n.yaml new file mode 100644 index 0000000000..d06b197f00 --- /dev/null +++ b/.agents/notes/archived/feature/2026-08-01-windows-pwsh-default.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-08-01-windows-pwsh-default.md +2026-08-01-windows-pwsh-default.md: 5248041b5c34c03659a87919b356e831553148b0 +2026-08-01-windows-pwsh-default.zh.md: 46bf182b092ac339a65ece597772a055094713ec diff --git a/.agents/notes/implemented/feature/2026-08-01-windows-pwsh-default.md b/.agents/notes/archived/feature/2026-08-01-windows-pwsh-default.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-01-windows-pwsh-default.md rename to .agents/notes/archived/feature/2026-08-01-windows-pwsh-default.md index e4be14ad16..5248041b5c 100644 --- a/.agents/notes/implemented/feature/2026-08-01-windows-pwsh-default.md +++ b/.agents/notes/archived/feature/2026-08-01-windows-pwsh-default.md @@ -1,6 +1,7 @@ # Agent Note: Windows defaults to pwsh Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-01-windows-pwsh-default.zh.md) diff --git a/.agents/notes/implemented/feature/2026-08-01-windows-pwsh-default.zh.md b/.agents/notes/archived/feature/2026-08-01-windows-pwsh-default.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-01-windows-pwsh-default.zh.md rename to .agents/notes/archived/feature/2026-08-01-windows-pwsh-default.zh.md index f952c56fb2..46bf182b09 100644 --- a/.agents/notes/implemented/feature/2026-08-01-windows-pwsh-default.zh.md +++ b/.agents/notes/archived/feature/2026-08-01-windows-pwsh-default.zh.md @@ -1,6 +1,7 @@ # Agent Note: Windows 默认改用 pwsh Status: implemented +Archived: 2026-09-04 [English](2026-08-01-windows-pwsh-default.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-08-02-session-search-not-shipped-default.i18n.yaml b/.agents/notes/archived/feature/2026-08-02-session-search-not-shipped-default.i18n.yaml new file mode 100644 index 0000000000..b43cc25d0d --- /dev/null +++ b/.agents/notes/archived/feature/2026-08-02-session-search-not-shipped-default.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-08-02-session-search-not-shipped-default.md +2026-08-02-session-search-not-shipped-default.md: 83b21018c8d6c94a600cfdc96ca9051b2504c040 +2026-08-02-session-search-not-shipped-default.zh.md: bf34a8a4275a6b93e04a8d025ed7046f2a01ce21 diff --git a/.agents/notes/implemented/feature/2026-08-02-session-search-not-shipped-default.md b/.agents/notes/archived/feature/2026-08-02-session-search-not-shipped-default.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-02-session-search-not-shipped-default.md rename to .agents/notes/archived/feature/2026-08-02-session-search-not-shipped-default.md index 6a324f190f..83b21018c8 100644 --- a/.agents/notes/implemented/feature/2026-08-02-session-search-not-shipped-default.md +++ b/.agents/notes/archived/feature/2026-08-02-session-search-not-shipped-default.md @@ -1,6 +1,7 @@ # Agent Note: Session search tools are not a shipped default Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-02-session-search-not-shipped-default.zh.md) diff --git a/.agents/notes/implemented/feature/2026-08-02-session-search-not-shipped-default.zh.md b/.agents/notes/archived/feature/2026-08-02-session-search-not-shipped-default.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-02-session-search-not-shipped-default.zh.md rename to .agents/notes/archived/feature/2026-08-02-session-search-not-shipped-default.zh.md index 6ecfb22c96..bf34a8a427 100644 --- a/.agents/notes/implemented/feature/2026-08-02-session-search-not-shipped-default.zh.md +++ b/.agents/notes/archived/feature/2026-08-02-session-search-not-shipped-default.zh.md @@ -1,6 +1,7 @@ # Agent Note: 会话搜索工具不是交付默认项 Status: implemented +Archived: 2026-09-04 [English](2026-08-02-session-search-not-shipped-default.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-08-02-web-thinking-tail-scroll.i18n.yaml b/.agents/notes/archived/feature/2026-08-02-web-thinking-tail-scroll.i18n.yaml new file mode 100644 index 0000000000..35c4ced9ac --- /dev/null +++ b/.agents/notes/archived/feature/2026-08-02-web-thinking-tail-scroll.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-08-02-web-thinking-tail-scroll.md +2026-08-02-web-thinking-tail-scroll.md: 14cde9b10de15a26833c20794dd54f1b3897a72e +2026-08-02-web-thinking-tail-scroll.zh.md: 738a3149a49478fc550b449dbeb4c6fdd2cdb1a2 diff --git a/.agents/notes/implemented/feature/2026-08-02-web-thinking-tail-scroll.md b/.agents/notes/archived/feature/2026-08-02-web-thinking-tail-scroll.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-02-web-thinking-tail-scroll.md rename to .agents/notes/archived/feature/2026-08-02-web-thinking-tail-scroll.md index 38c27274b2..14cde9b10d 100644 --- a/.agents/notes/implemented/feature/2026-08-02-web-thinking-tail-scroll.md +++ b/.agents/notes/archived/feature/2026-08-02-web-thinking-tail-scroll.md @@ -1,6 +1,7 @@ # Agent Note: Web thinking tail scroll — collapsed reasoning follows live output Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-02-web-thinking-tail-scroll.zh.md) diff --git a/.agents/notes/implemented/feature/2026-08-02-web-thinking-tail-scroll.zh.md b/.agents/notes/archived/feature/2026-08-02-web-thinking-tail-scroll.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-02-web-thinking-tail-scroll.zh.md rename to .agents/notes/archived/feature/2026-08-02-web-thinking-tail-scroll.zh.md index 942d8aa136..738a3149a4 100644 --- a/.agents/notes/implemented/feature/2026-08-02-web-thinking-tail-scroll.zh.md +++ b/.agents/notes/archived/feature/2026-08-02-web-thinking-tail-scroll.zh.md @@ -1,6 +1,7 @@ # Agent Note: Web 思考尾部滚动 —— 折叠态 reasoning 跟随实时输出 Status: implemented +Archived: 2026-09-04 [English](2026-08-02-web-thinking-tail-scroll.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-08-02-win32-in-process-folder-dialog.i18n.yaml b/.agents/notes/archived/feature/2026-08-02-win32-in-process-folder-dialog.i18n.yaml new file mode 100644 index 0000000000..431961d892 --- /dev/null +++ b/.agents/notes/archived/feature/2026-08-02-win32-in-process-folder-dialog.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-08-02-win32-in-process-folder-dialog.md +2026-08-02-win32-in-process-folder-dialog.md: 62b18288ad6f232fcab76189e507e2990b2630f2 +2026-08-02-win32-in-process-folder-dialog.zh.md: 6d537c0a020f2638d59b6ee16c0a58aaa33ddba4 diff --git a/.agents/notes/implemented/feature/2026-08-02-win32-in-process-folder-dialog.md b/.agents/notes/archived/feature/2026-08-02-win32-in-process-folder-dialog.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-02-win32-in-process-folder-dialog.md rename to .agents/notes/archived/feature/2026-08-02-win32-in-process-folder-dialog.md index 52eab80499..62b18288ad 100644 --- a/.agents/notes/implemented/feature/2026-08-02-win32-in-process-folder-dialog.md +++ b/.agents/notes/archived/feature/2026-08-02-win32-in-process-folder-dialog.md @@ -1,6 +1,7 @@ # Agent Note: Win32 folder picker moves to koffi in a child process Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-02-win32-in-process-folder-dialog.zh.md) diff --git a/.agents/notes/implemented/feature/2026-08-02-win32-in-process-folder-dialog.zh.md b/.agents/notes/archived/feature/2026-08-02-win32-in-process-folder-dialog.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-02-win32-in-process-folder-dialog.zh.md rename to .agents/notes/archived/feature/2026-08-02-win32-in-process-folder-dialog.zh.md index af45bc18d6..6d537c0a02 100644 --- a/.agents/notes/implemented/feature/2026-08-02-win32-in-process-folder-dialog.zh.md +++ b/.agents/notes/archived/feature/2026-08-02-win32-in-process-folder-dialog.zh.md @@ -1,6 +1,7 @@ # Agent Note: Win32 文件夹选择器迁至 koffi 子进程 Status: implemented +Archived: 2026-09-04 [English](2026-08-02-win32-in-process-folder-dialog.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-08-03-fs-tool-error-remedy.i18n.yaml b/.agents/notes/archived/feature/2026-08-03-fs-tool-error-remedy.i18n.yaml new file mode 100644 index 0000000000..6ef864191a --- /dev/null +++ b/.agents/notes/archived/feature/2026-08-03-fs-tool-error-remedy.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-08-03-fs-tool-error-remedy.md +2026-08-03-fs-tool-error-remedy.md: c7be3e51a6e29218c95444b6a01fd3f098a8e8d0 +2026-08-03-fs-tool-error-remedy.zh.md: 1064c2782711806dfea2036772633ba6f0d7f94e diff --git a/.agents/notes/implemented/feature/2026-08-03-fs-tool-error-remedy.md b/.agents/notes/archived/feature/2026-08-03-fs-tool-error-remedy.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-03-fs-tool-error-remedy.md rename to .agents/notes/archived/feature/2026-08-03-fs-tool-error-remedy.md index ae72e04b5b..c7be3e51a6 100644 --- a/.agents/notes/implemented/feature/2026-08-03-fs-tool-error-remedy.md +++ b/.agents/notes/archived/feature/2026-08-03-fs-tool-error-remedy.md @@ -1,6 +1,7 @@ # Agent Note: Stale-version errors append the recovery instruction at the model boundary Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-03-fs-tool-error-remedy.zh.md) diff --git a/.agents/notes/implemented/feature/2026-08-03-fs-tool-error-remedy.zh.md b/.agents/notes/archived/feature/2026-08-03-fs-tool-error-remedy.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-03-fs-tool-error-remedy.zh.md rename to .agents/notes/archived/feature/2026-08-03-fs-tool-error-remedy.zh.md index 3c65ca0658..1064c27827 100644 --- a/.agents/notes/implemented/feature/2026-08-03-fs-tool-error-remedy.zh.md +++ b/.agents/notes/archived/feature/2026-08-03-fs-tool-error-remedy.zh.md @@ -1,6 +1,7 @@ # Agent Note: 陈旧版本错误在模型边界追加恢复指令 Status: implemented +Archived: 2026-09-04 [English](2026-08-03-fs-tool-error-remedy.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-08-03-web-search-source-scroll.i18n.yaml b/.agents/notes/archived/feature/2026-08-03-web-search-source-scroll.i18n.yaml new file mode 100644 index 0000000000..cc290cd9ad --- /dev/null +++ b/.agents/notes/archived/feature/2026-08-03-web-search-source-scroll.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-08-03-web-search-source-scroll.md +2026-08-03-web-search-source-scroll.md: b9b4c2a6cc5089591812bc072380bfababa375fc +2026-08-03-web-search-source-scroll.zh.md: 78bc6bffd73137ded41d0378e700700f2e05b006 diff --git a/.agents/notes/implemented/feature/2026-08-03-web-search-source-scroll.md b/.agents/notes/archived/feature/2026-08-03-web-search-source-scroll.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-03-web-search-source-scroll.md rename to .agents/notes/archived/feature/2026-08-03-web-search-source-scroll.md index 0609f45a19..b9b4c2a6cc 100644 --- a/.agents/notes/implemented/feature/2026-08-03-web-search-source-scroll.md +++ b/.agents/notes/archived/feature/2026-08-03-web-search-source-scroll.md @@ -1,6 +1,7 @@ # Agent Note: Web search source card scrolls instead of collapsing Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-03-web-search-source-scroll.zh.md) diff --git a/.agents/notes/implemented/feature/2026-08-03-web-search-source-scroll.zh.md b/.agents/notes/archived/feature/2026-08-03-web-search-source-scroll.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-03-web-search-source-scroll.zh.md rename to .agents/notes/archived/feature/2026-08-03-web-search-source-scroll.zh.md index 1649598dfc..78bc6bffd7 100644 --- a/.agents/notes/implemented/feature/2026-08-03-web-search-source-scroll.zh.md +++ b/.agents/notes/archived/feature/2026-08-03-web-search-source-scroll.zh.md @@ -1,6 +1,7 @@ # Agent Note: Web search 来源卡片改为滚动而非折叠 Status: implemented +Archived: 2026-09-04 [English](2026-08-03-web-search-source-scroll.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-08-03-web-turn-run-time.i18n.yaml b/.agents/notes/archived/feature/2026-08-03-web-turn-run-time.i18n.yaml new file mode 100644 index 0000000000..237338630e --- /dev/null +++ b/.agents/notes/archived/feature/2026-08-03-web-turn-run-time.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-08-03-web-turn-run-time.md +2026-08-03-web-turn-run-time.md: de086128315e245c78bad51e21d24dd4680a6dcd +2026-08-03-web-turn-run-time.zh.md: bcac062803b21c4662ac632a51f46eb8090f3192 diff --git a/.agents/notes/implemented/feature/2026-08-03-web-turn-run-time.md b/.agents/notes/archived/feature/2026-08-03-web-turn-run-time.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-03-web-turn-run-time.md rename to .agents/notes/archived/feature/2026-08-03-web-turn-run-time.md index c77a365d66..de08612831 100644 --- a/.agents/notes/implemented/feature/2026-08-03-web-turn-run-time.md +++ b/.agents/notes/archived/feature/2026-08-03-web-turn-run-time.md @@ -1,6 +1,7 @@ # Agent Note: Web turn run time and hover-revealed time chrome Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-03-web-turn-run-time.zh.md) diff --git a/.agents/notes/implemented/feature/2026-08-03-web-turn-run-time.zh.md b/.agents/notes/archived/feature/2026-08-03-web-turn-run-time.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-03-web-turn-run-time.zh.md rename to .agents/notes/archived/feature/2026-08-03-web-turn-run-time.zh.md index ca7fdc6ef1..bcac062803 100644 --- a/.agents/notes/implemented/feature/2026-08-03-web-turn-run-time.zh.md +++ b/.agents/notes/archived/feature/2026-08-03-web-turn-run-time.zh.md @@ -1,6 +1,7 @@ # Agent Note: Web 轮次运行时长与悬停显示的时间附属元素 Status: implemented +Archived: 2026-09-04 [English](2026-08-03-web-turn-run-time.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-08-04-pointer-revealed-sidebar-scrollbars.i18n.yaml b/.agents/notes/archived/feature/2026-08-04-pointer-revealed-sidebar-scrollbars.i18n.yaml new file mode 100644 index 0000000000..492dd0c074 --- /dev/null +++ b/.agents/notes/archived/feature/2026-08-04-pointer-revealed-sidebar-scrollbars.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-08-04-pointer-revealed-sidebar-scrollbars.md +2026-08-04-pointer-revealed-sidebar-scrollbars.md: d04dd095937a1b3cc0e8c158898defad1983e600 +2026-08-04-pointer-revealed-sidebar-scrollbars.zh.md: 36e8114c02b74181e16cfebe84bed7eb0a787e6a diff --git a/.agents/notes/implemented/feature/2026-08-04-pointer-revealed-sidebar-scrollbars.md b/.agents/notes/archived/feature/2026-08-04-pointer-revealed-sidebar-scrollbars.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-04-pointer-revealed-sidebar-scrollbars.md rename to .agents/notes/archived/feature/2026-08-04-pointer-revealed-sidebar-scrollbars.md index 5a9a0b948e..d04dd09593 100644 --- a/.agents/notes/implemented/feature/2026-08-04-pointer-revealed-sidebar-scrollbars.md +++ b/.agents/notes/archived/feature/2026-08-04-pointer-revealed-sidebar-scrollbars.md @@ -1,6 +1,7 @@ # Agent Note: The sidebar's scrollbars follow the pointer Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-04-pointer-revealed-sidebar-scrollbars.zh.md) diff --git a/.agents/notes/implemented/feature/2026-08-04-pointer-revealed-sidebar-scrollbars.zh.md b/.agents/notes/archived/feature/2026-08-04-pointer-revealed-sidebar-scrollbars.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-04-pointer-revealed-sidebar-scrollbars.zh.md rename to .agents/notes/archived/feature/2026-08-04-pointer-revealed-sidebar-scrollbars.zh.md index 35350e1811..36e8114c02 100644 --- a/.agents/notes/implemented/feature/2026-08-04-pointer-revealed-sidebar-scrollbars.zh.md +++ b/.agents/notes/archived/feature/2026-08-04-pointer-revealed-sidebar-scrollbars.zh.md @@ -1,6 +1,7 @@ # Agent Note: 侧边栏的滚动条跟随指针 Status: implemented +Archived: 2026-09-04 [English](2026-08-04-pointer-revealed-sidebar-scrollbars.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-08-04-web-composer-shared-width-axis.i18n.yaml b/.agents/notes/archived/feature/2026-08-04-web-composer-shared-width-axis.i18n.yaml new file mode 100644 index 0000000000..ef079b09ac --- /dev/null +++ b/.agents/notes/archived/feature/2026-08-04-web-composer-shared-width-axis.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-08-04-web-composer-shared-width-axis.md +2026-08-04-web-composer-shared-width-axis.md: a67729ba979dd3225d3979f3202adac1aa447dde +2026-08-04-web-composer-shared-width-axis.zh.md: ff566d3be6e613a2cc6dc2042c711ac7d2ba430a diff --git a/.agents/notes/implemented/feature/2026-08-04-web-composer-shared-width-axis.md b/.agents/notes/archived/feature/2026-08-04-web-composer-shared-width-axis.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-04-web-composer-shared-width-axis.md rename to .agents/notes/archived/feature/2026-08-04-web-composer-shared-width-axis.md index f667363fb2..a67729ba97 100644 --- a/.agents/notes/implemented/feature/2026-08-04-web-composer-shared-width-axis.md +++ b/.agents/notes/archived/feature/2026-08-04-web-composer-shared-width-axis.md @@ -1,6 +1,7 @@ # Agent Note: Web composer shared width axis and control-row polish Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-04-web-composer-shared-width-axis.zh.md) diff --git a/.agents/notes/implemented/feature/2026-08-04-web-composer-shared-width-axis.zh.md b/.agents/notes/archived/feature/2026-08-04-web-composer-shared-width-axis.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-04-web-composer-shared-width-axis.zh.md rename to .agents/notes/archived/feature/2026-08-04-web-composer-shared-width-axis.zh.md index 6268cfb198..ff566d3be6 100644 --- a/.agents/notes/implemented/feature/2026-08-04-web-composer-shared-width-axis.zh.md +++ b/.agents/notes/archived/feature/2026-08-04-web-composer-shared-width-axis.zh.md @@ -1,6 +1,7 @@ # Agent Note: Web 输入区共享宽度轴与控制行打磨 Status: implemented +Archived: 2026-09-04 [English](2026-08-04-web-composer-shared-width-axis.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-08-04-web-context-source-and-steer-marks.i18n.yaml b/.agents/notes/archived/feature/2026-08-04-web-context-source-and-steer-marks.i18n.yaml new file mode 100644 index 0000000000..553e969c29 --- /dev/null +++ b/.agents/notes/archived/feature/2026-08-04-web-context-source-and-steer-marks.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-08-04-web-context-source-and-steer-marks.md +2026-08-04-web-context-source-and-steer-marks.md: 65972e4e508e6048bdaf6f11c07422e686df3a8f +2026-08-04-web-context-source-and-steer-marks.zh.md: f93677034bf5a9f1e7997d0d750d950df5f639dd diff --git a/.agents/notes/implemented/feature/2026-08-04-web-context-source-and-steer-marks.md b/.agents/notes/archived/feature/2026-08-04-web-context-source-and-steer-marks.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-04-web-context-source-and-steer-marks.md rename to .agents/notes/archived/feature/2026-08-04-web-context-source-and-steer-marks.md index 0a9d6a4ebd..65972e4e50 100644 --- a/.agents/notes/implemented/feature/2026-08-04-web-context-source-and-steer-marks.md +++ b/.agents/notes/archived/feature/2026-08-04-web-context-source-and-steer-marks.md @@ -1,6 +1,7 @@ # Agent Note: Web transcript marks context source, recall, and steering Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-04-web-context-source-and-steer-marks.zh.md) diff --git a/.agents/notes/implemented/feature/2026-08-04-web-context-source-and-steer-marks.zh.md b/.agents/notes/archived/feature/2026-08-04-web-context-source-and-steer-marks.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-04-web-context-source-and-steer-marks.zh.md rename to .agents/notes/archived/feature/2026-08-04-web-context-source-and-steer-marks.zh.md index 3e3f80cc54..f93677034b 100644 --- a/.agents/notes/implemented/feature/2026-08-04-web-context-source-and-steer-marks.zh.md +++ b/.agents/notes/archived/feature/2026-08-04-web-context-source-and-steer-marks.zh.md @@ -1,6 +1,7 @@ # Agent Note: Web transcript 标出上下文来源、召回与 steering Status: implemented +Archived: 2026-09-04 [English](2026-08-04-web-context-source-and-steer-marks.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-08-04-web-latency-throughput-metrics.i18n.yaml b/.agents/notes/archived/feature/2026-08-04-web-latency-throughput-metrics.i18n.yaml new file mode 100644 index 0000000000..3e1923bd00 --- /dev/null +++ b/.agents/notes/archived/feature/2026-08-04-web-latency-throughput-metrics.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-08-04-web-latency-throughput-metrics.md +2026-08-04-web-latency-throughput-metrics.md: 7ddc2f74cf963f3289f9965f25aadcc76f290ced +2026-08-04-web-latency-throughput-metrics.zh.md: d9dcc02e8c12f20a2fc6264abdca72772cad037a diff --git a/.agents/notes/implemented/feature/2026-08-04-web-latency-throughput-metrics.md b/.agents/notes/archived/feature/2026-08-04-web-latency-throughput-metrics.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-04-web-latency-throughput-metrics.md rename to .agents/notes/archived/feature/2026-08-04-web-latency-throughput-metrics.md index 14ec765a7a..7ddc2f74cf 100644 --- a/.agents/notes/implemented/feature/2026-08-04-web-latency-throughput-metrics.md +++ b/.agents/notes/archived/feature/2026-08-04-web-latency-throughput-metrics.md @@ -1,6 +1,7 @@ # Agent Note: Web turn and window latency/throughput metrics Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-04-web-latency-throughput-metrics.zh.md) diff --git a/.agents/notes/implemented/feature/2026-08-04-web-latency-throughput-metrics.zh.md b/.agents/notes/archived/feature/2026-08-04-web-latency-throughput-metrics.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-04-web-latency-throughput-metrics.zh.md rename to .agents/notes/archived/feature/2026-08-04-web-latency-throughput-metrics.zh.md index 52e6c33c52..d9dcc02e8c 100644 --- a/.agents/notes/implemented/feature/2026-08-04-web-latency-throughput-metrics.zh.md +++ b/.agents/notes/archived/feature/2026-08-04-web-latency-throughput-metrics.zh.md @@ -1,6 +1,7 @@ # Agent Note: Web 轮次与窗口级延迟/吞吐指标 Status: implemented +Archived: 2026-09-04 [English](2026-08-04-web-latency-throughput-metrics.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-08-04-web-slash-command-fuzzy-discovery.i18n.yaml b/.agents/notes/archived/feature/2026-08-04-web-slash-command-fuzzy-discovery.i18n.yaml new file mode 100644 index 0000000000..32138066b2 --- /dev/null +++ b/.agents/notes/archived/feature/2026-08-04-web-slash-command-fuzzy-discovery.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-08-04-web-slash-command-fuzzy-discovery.md +2026-08-04-web-slash-command-fuzzy-discovery.md: 24275dbcd063cc35d524d8f786fb3d243fc141b8 +2026-08-04-web-slash-command-fuzzy-discovery.zh.md: bf0c368114e9d38ace536b8497ae2cf34920a771 diff --git a/.agents/notes/implemented/feature/2026-08-04-web-slash-command-fuzzy-discovery.md b/.agents/notes/archived/feature/2026-08-04-web-slash-command-fuzzy-discovery.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-04-web-slash-command-fuzzy-discovery.md rename to .agents/notes/archived/feature/2026-08-04-web-slash-command-fuzzy-discovery.md index 17ba1a1cba..24275dbcd0 100644 --- a/.agents/notes/implemented/feature/2026-08-04-web-slash-command-fuzzy-discovery.md +++ b/.agents/notes/archived/feature/2026-08-04-web-slash-command-fuzzy-discovery.md @@ -1,6 +1,7 @@ # Agent Note: Web slash-command fuzzy discovery Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-04-web-slash-command-fuzzy-discovery.zh.md) diff --git a/.agents/notes/implemented/feature/2026-08-04-web-slash-command-fuzzy-discovery.zh.md b/.agents/notes/archived/feature/2026-08-04-web-slash-command-fuzzy-discovery.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-04-web-slash-command-fuzzy-discovery.zh.md rename to .agents/notes/archived/feature/2026-08-04-web-slash-command-fuzzy-discovery.zh.md index fe23dcb5d3..bf0c368114 100644 --- a/.agents/notes/implemented/feature/2026-08-04-web-slash-command-fuzzy-discovery.zh.md +++ b/.agents/notes/archived/feature/2026-08-04-web-slash-command-fuzzy-discovery.zh.md @@ -1,6 +1,7 @@ # Agent Note: Web 斜杠命令模糊发现 Status: implemented +Archived: 2026-09-04 [English](2026-08-04-web-slash-command-fuzzy-discovery.md) | 中文 diff --git a/.agents/notes/implemented/feature/2026-07-24-provider-retry-policies.i18n.yaml b/.agents/notes/archived/feature/2026-08-05-composer-context-meter-breakdown.i18n.yaml similarity index 55% rename from .agents/notes/implemented/feature/2026-07-24-provider-retry-policies.i18n.yaml rename to .agents/notes/archived/feature/2026-08-05-composer-context-meter-breakdown.i18n.yaml index 2291fbad05..7b8bbd1b53 100644 --- a/.agents/notes/implemented/feature/2026-07-24-provider-retry-policies.i18n.yaml +++ b/.agents/notes/archived/feature/2026-08-05-composer-context-meter-breakdown.i18n.yaml @@ -1,6 +1,6 @@ # Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-07-24-provider-retry-policies.md -2026-07-24-provider-retry-policies.md: 996e7fcef2f323044761126d82dc53f73d3dde88 -2026-07-24-provider-retry-policies.zh.md: 8b3cb96ddb78f5bf0d680f8e9762622f1383286b +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-08-05-composer-context-meter-breakdown.md +2026-08-05-composer-context-meter-breakdown.md: f9934c09784f0cc0ef0f07025f5bfad20e82d596 +2026-08-05-composer-context-meter-breakdown.zh.md: 356733f2952f97e5eafb97d294f25f51a058d7c8 diff --git a/.agents/notes/implemented/feature/2026-08-05-composer-context-meter-breakdown.md b/.agents/notes/archived/feature/2026-08-05-composer-context-meter-breakdown.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-05-composer-context-meter-breakdown.md rename to .agents/notes/archived/feature/2026-08-05-composer-context-meter-breakdown.md index 318a1caf7d..f9934c0978 100644 --- a/.agents/notes/implemented/feature/2026-08-05-composer-context-meter-breakdown.md +++ b/.agents/notes/archived/feature/2026-08-05-composer-context-meter-breakdown.md @@ -1,6 +1,7 @@ # Agent Note: Composer context meter with heuristic composition breakdown Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-05-composer-context-meter-breakdown.zh.md) diff --git a/.agents/notes/implemented/feature/2026-08-05-composer-context-meter-breakdown.zh.md b/.agents/notes/archived/feature/2026-08-05-composer-context-meter-breakdown.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-05-composer-context-meter-breakdown.zh.md rename to .agents/notes/archived/feature/2026-08-05-composer-context-meter-breakdown.zh.md index 886108dd9c..356733f295 100644 --- a/.agents/notes/implemented/feature/2026-08-05-composer-context-meter-breakdown.zh.md +++ b/.agents/notes/archived/feature/2026-08-05-composer-context-meter-breakdown.zh.md @@ -1,6 +1,7 @@ # Agent Note: composer 上下文占用圆环与启发式组成明细 Status: implemented +Archived: 2026-09-04 [English](2026-08-05-composer-context-meter-breakdown.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-08-05-feedback-gated-session-telemetry.i18n.yaml b/.agents/notes/archived/feature/2026-08-05-feedback-gated-session-telemetry.i18n.yaml new file mode 100644 index 0000000000..c2328631e0 --- /dev/null +++ b/.agents/notes/archived/feature/2026-08-05-feedback-gated-session-telemetry.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-08-05-feedback-gated-session-telemetry.md +2026-08-05-feedback-gated-session-telemetry.md: 0298fc7ea865a83381c0129a6fac78a05c8994fe +2026-08-05-feedback-gated-session-telemetry.zh.md: 301b212a8af2d8cd481ce3ea934af2054fa28826 diff --git a/.agents/notes/implemented/feature/2026-08-05-feedback-gated-session-telemetry.md b/.agents/notes/archived/feature/2026-08-05-feedback-gated-session-telemetry.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-05-feedback-gated-session-telemetry.md rename to .agents/notes/archived/feature/2026-08-05-feedback-gated-session-telemetry.md index 1ca8a9d3c5..0298fc7ea8 100644 --- a/.agents/notes/implemented/feature/2026-08-05-feedback-gated-session-telemetry.md +++ b/.agents/notes/archived/feature/2026-08-05-feedback-gated-session-telemetry.md @@ -1,6 +1,7 @@ # Agent Note: Feedback-gated session telemetry Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-05-feedback-gated-session-telemetry.zh.md) diff --git a/.agents/notes/implemented/feature/2026-08-05-feedback-gated-session-telemetry.zh.md b/.agents/notes/archived/feature/2026-08-05-feedback-gated-session-telemetry.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-05-feedback-gated-session-telemetry.zh.md rename to .agents/notes/archived/feature/2026-08-05-feedback-gated-session-telemetry.zh.md index 4be80fba3f..301b212a8a 100644 --- a/.agents/notes/implemented/feature/2026-08-05-feedback-gated-session-telemetry.zh.md +++ b/.agents/notes/archived/feature/2026-08-05-feedback-gated-session-telemetry.zh.md @@ -1,6 +1,7 @@ # Agent Note: 反馈门控的会话遥测 Status: implemented +Archived: 2026-09-04 [English](2026-08-05-feedback-gated-session-telemetry.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-08-05-per-agent-tool-presentation.i18n.yaml b/.agents/notes/archived/feature/2026-08-05-per-agent-tool-presentation.i18n.yaml new file mode 100644 index 0000000000..265e0c4e05 --- /dev/null +++ b/.agents/notes/archived/feature/2026-08-05-per-agent-tool-presentation.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-08-05-per-agent-tool-presentation.md +2026-08-05-per-agent-tool-presentation.md: 4b4080f722149c0e79490cdcbaaa16d97b27204b +2026-08-05-per-agent-tool-presentation.zh.md: 15cd0602a17a14dbe3c3422aafd047c612aab87c diff --git a/.agents/notes/implemented/feature/2026-08-05-per-agent-tool-presentation.md b/.agents/notes/archived/feature/2026-08-05-per-agent-tool-presentation.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-05-per-agent-tool-presentation.md rename to .agents/notes/archived/feature/2026-08-05-per-agent-tool-presentation.md index b85af65604..4b4080f722 100644 --- a/.agents/notes/implemented/feature/2026-08-05-per-agent-tool-presentation.md +++ b/.agents/notes/archived/feature/2026-08-05-per-agent-tool-presentation.md @@ -1,6 +1,7 @@ # Agent Note: Per-agent tool presentation, and the `ptc` preset Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-05-per-agent-tool-presentation.zh.md) diff --git a/.agents/notes/implemented/feature/2026-08-05-per-agent-tool-presentation.zh.md b/.agents/notes/archived/feature/2026-08-05-per-agent-tool-presentation.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-05-per-agent-tool-presentation.zh.md rename to .agents/notes/archived/feature/2026-08-05-per-agent-tool-presentation.zh.md index e6d81ae072..15cd0602a1 100644 --- a/.agents/notes/implemented/feature/2026-08-05-per-agent-tool-presentation.zh.md +++ b/.agents/notes/archived/feature/2026-08-05-per-agent-tool-presentation.zh.md @@ -1,6 +1,7 @@ # Agent Note: 按 agent 的工具呈现方式,以及 `ptc` 预设 Status: implemented +Archived: 2026-09-04 [English](2026-08-05-per-agent-tool-presentation.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-08-05-pwsh-ui-bash-parity.i18n.yaml b/.agents/notes/archived/feature/2026-08-05-pwsh-ui-bash-parity.i18n.yaml new file mode 100644 index 0000000000..a8a996e246 --- /dev/null +++ b/.agents/notes/archived/feature/2026-08-05-pwsh-ui-bash-parity.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-08-05-pwsh-ui-bash-parity.md +2026-08-05-pwsh-ui-bash-parity.md: a41541a8ef7b2a5c59b536ba1cce224a9459df91 +2026-08-05-pwsh-ui-bash-parity.zh.md: c0e4fe0df31a5e069564006aca58ed555b20b8e1 diff --git a/.agents/notes/implemented/feature/2026-08-05-pwsh-ui-bash-parity.md b/.agents/notes/archived/feature/2026-08-05-pwsh-ui-bash-parity.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-05-pwsh-ui-bash-parity.md rename to .agents/notes/archived/feature/2026-08-05-pwsh-ui-bash-parity.md index ee7a6146fc..a41541a8ef 100644 --- a/.agents/notes/implemented/feature/2026-08-05-pwsh-ui-bash-parity.md +++ b/.agents/notes/archived/feature/2026-08-05-pwsh-ui-bash-parity.md @@ -1,6 +1,7 @@ # Agent Note: pwsh UI presentation matches bash Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-05-pwsh-ui-bash-parity.zh.md) diff --git a/.agents/notes/implemented/feature/2026-08-05-pwsh-ui-bash-parity.zh.md b/.agents/notes/archived/feature/2026-08-05-pwsh-ui-bash-parity.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-05-pwsh-ui-bash-parity.zh.md rename to .agents/notes/archived/feature/2026-08-05-pwsh-ui-bash-parity.zh.md index cc6e7fb8c3..c0e4fe0df3 100644 --- a/.agents/notes/implemented/feature/2026-08-05-pwsh-ui-bash-parity.zh.md +++ b/.agents/notes/archived/feature/2026-08-05-pwsh-ui-bash-parity.zh.md @@ -1,6 +1,7 @@ # Agent Note: pwsh UI presentation matches bash Status: implemented +Archived: 2026-09-04 [English](2026-08-05-pwsh-ui-bash-parity.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-08-05-web-preview-product-badge.i18n.yaml b/.agents/notes/archived/feature/2026-08-05-web-preview-product-badge.i18n.yaml new file mode 100644 index 0000000000..94e408742e --- /dev/null +++ b/.agents/notes/archived/feature/2026-08-05-web-preview-product-badge.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-08-05-web-preview-product-badge.md +2026-08-05-web-preview-product-badge.md: 784b80cc72aea66bf9669c72eb346f45a83c1721 +2026-08-05-web-preview-product-badge.zh.md: 49ab20a956d0f6d1ee735bf91440cb78538ad8c8 diff --git a/.agents/notes/implemented/feature/2026-08-05-web-preview-product-badge.md b/.agents/notes/archived/feature/2026-08-05-web-preview-product-badge.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-05-web-preview-product-badge.md rename to .agents/notes/archived/feature/2026-08-05-web-preview-product-badge.md index c20dedf8ca..784b80cc72 100644 --- a/.agents/notes/implemented/feature/2026-08-05-web-preview-product-badge.md +++ b/.agents/notes/archived/feature/2026-08-05-web-preview-product-badge.md @@ -1,6 +1,7 @@ # Agent Note: Web preview product badge Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-05-web-preview-product-badge.zh.md) diff --git a/.agents/notes/implemented/feature/2026-08-05-web-preview-product-badge.zh.md b/.agents/notes/archived/feature/2026-08-05-web-preview-product-badge.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-05-web-preview-product-badge.zh.md rename to .agents/notes/archived/feature/2026-08-05-web-preview-product-badge.zh.md index 415a7cb3eb..49ab20a956 100644 --- a/.agents/notes/implemented/feature/2026-08-05-web-preview-product-badge.zh.md +++ b/.agents/notes/archived/feature/2026-08-05-web-preview-product-badge.zh.md @@ -1,6 +1,7 @@ # Agent Note: Web 预览版产品徽标 Status: implemented +Archived: 2026-09-04 [English](2026-08-05-web-preview-product-badge.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-08-06-agent-teams-web.i18n.yaml b/.agents/notes/archived/feature/2026-08-06-agent-teams-web.i18n.yaml new file mode 100644 index 0000000000..f59d5f9e79 --- /dev/null +++ b/.agents/notes/archived/feature/2026-08-06-agent-teams-web.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-08-06-agent-teams-web.md +2026-08-06-agent-teams-web.md: 3984c2842d7f78152465b8d0792bddda10f61a03 +2026-08-06-agent-teams-web.zh.md: 5154e2f918c611266cc95480807c1f08427d155f diff --git a/.agents/notes/implemented/feature/2026-08-06-agent-teams-web.md b/.agents/notes/archived/feature/2026-08-06-agent-teams-web.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-06-agent-teams-web.md rename to .agents/notes/archived/feature/2026-08-06-agent-teams-web.md index 5002146f7d..3984c2842d 100644 --- a/.agents/notes/implemented/feature/2026-08-06-agent-teams-web.md +++ b/.agents/notes/archived/feature/2026-08-06-agent-teams-web.md @@ -1,6 +1,7 @@ # Agent Note: Experimental Agent Teams Web controls Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-06-agent-teams-web.zh.md) diff --git a/.agents/notes/implemented/feature/2026-08-06-agent-teams-web.zh.md b/.agents/notes/archived/feature/2026-08-06-agent-teams-web.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-06-agent-teams-web.zh.md rename to .agents/notes/archived/feature/2026-08-06-agent-teams-web.zh.md index 7b55ac0a13..5154e2f918 100644 --- a/.agents/notes/implemented/feature/2026-08-06-agent-teams-web.zh.md +++ b/.agents/notes/archived/feature/2026-08-06-agent-teams-web.zh.md @@ -1,6 +1,7 @@ # Agent Note: 实验性 Agent Teams Web 控件 Status: implemented +Archived: 2026-09-04 [English](2026-08-06-agent-teams-web.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-08-06-mcp-client-auto-reconnect.i18n.yaml b/.agents/notes/archived/feature/2026-08-06-mcp-client-auto-reconnect.i18n.yaml new file mode 100644 index 0000000000..dd1c72b503 --- /dev/null +++ b/.agents/notes/archived/feature/2026-08-06-mcp-client-auto-reconnect.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-08-06-mcp-client-auto-reconnect.md +2026-08-06-mcp-client-auto-reconnect.md: 3843d727db4d582b6a2fd884720ef2e17d9c1ebb +2026-08-06-mcp-client-auto-reconnect.zh.md: fe030c069a6f1db41ab53dc84bd637dc6e577d55 diff --git a/.agents/notes/implemented/feature/2026-08-06-mcp-client-auto-reconnect.md b/.agents/notes/archived/feature/2026-08-06-mcp-client-auto-reconnect.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-06-mcp-client-auto-reconnect.md rename to .agents/notes/archived/feature/2026-08-06-mcp-client-auto-reconnect.md index 0f9119c620..3843d727db 100644 --- a/.agents/notes/implemented/feature/2026-08-06-mcp-client-auto-reconnect.md +++ b/.agents/notes/archived/feature/2026-08-06-mcp-client-auto-reconnect.md @@ -1,6 +1,7 @@ # Agent Note: MCP client auto-reconnect with bounded backoff Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-06-mcp-client-auto-reconnect.zh.md) diff --git a/.agents/notes/implemented/feature/2026-08-06-mcp-client-auto-reconnect.zh.md b/.agents/notes/archived/feature/2026-08-06-mcp-client-auto-reconnect.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-06-mcp-client-auto-reconnect.zh.md rename to .agents/notes/archived/feature/2026-08-06-mcp-client-auto-reconnect.zh.md index 62be78821d..fe030c069a 100644 --- a/.agents/notes/implemented/feature/2026-08-06-mcp-client-auto-reconnect.zh.md +++ b/.agents/notes/archived/feature/2026-08-06-mcp-client-auto-reconnect.zh.md @@ -1,6 +1,7 @@ # Agent Note: MCP client auto-reconnect with bounded backoff Status: implemented +Archived: 2026-09-04 [English](2026-08-06-mcp-client-auto-reconnect.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-08-06-resolved-theme-color-metadata.i18n.yaml b/.agents/notes/archived/feature/2026-08-06-resolved-theme-color-metadata.i18n.yaml new file mode 100644 index 0000000000..36fc861dc4 --- /dev/null +++ b/.agents/notes/archived/feature/2026-08-06-resolved-theme-color-metadata.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-08-06-resolved-theme-color-metadata.md +2026-08-06-resolved-theme-color-metadata.md: 35b3fa2eea5ef117921fc35833c0ab4f7244129f +2026-08-06-resolved-theme-color-metadata.zh.md: 5617be708721d30cdb0cf0bab36ae0225f57a47b diff --git a/.agents/notes/implemented/feature/2026-08-06-resolved-theme-color-metadata.md b/.agents/notes/archived/feature/2026-08-06-resolved-theme-color-metadata.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-06-resolved-theme-color-metadata.md rename to .agents/notes/archived/feature/2026-08-06-resolved-theme-color-metadata.md index 2f7a6f0bde..35b3fa2eea 100644 --- a/.agents/notes/implemented/feature/2026-08-06-resolved-theme-color-metadata.md +++ b/.agents/notes/archived/feature/2026-08-06-resolved-theme-color-metadata.md @@ -1,6 +1,7 @@ # Agent Note: Resolved theme color metadata Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-06-resolved-theme-color-metadata.zh.md) diff --git a/.agents/notes/implemented/feature/2026-08-06-resolved-theme-color-metadata.zh.md b/.agents/notes/archived/feature/2026-08-06-resolved-theme-color-metadata.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-06-resolved-theme-color-metadata.zh.md rename to .agents/notes/archived/feature/2026-08-06-resolved-theme-color-metadata.zh.md index 0312794c60..5617be7087 100644 --- a/.agents/notes/implemented/feature/2026-08-06-resolved-theme-color-metadata.zh.md +++ b/.agents/notes/archived/feature/2026-08-06-resolved-theme-color-metadata.zh.md @@ -1,6 +1,7 @@ # Agent Note: 基于解析后主题的颜色元数据 Status: implemented +Archived: 2026-09-04 [English](2026-08-06-resolved-theme-color-metadata.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-08-06-session-completed-done-dot.i18n.yaml b/.agents/notes/archived/feature/2026-08-06-session-completed-done-dot.i18n.yaml new file mode 100644 index 0000000000..2946e7078c --- /dev/null +++ b/.agents/notes/archived/feature/2026-08-06-session-completed-done-dot.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-08-06-session-completed-done-dot.md +2026-08-06-session-completed-done-dot.md: 3fa09b4ec6d57986977da84d1c0de9697d27c11d +2026-08-06-session-completed-done-dot.zh.md: 42e2d9ca24485379944f44d089f85d5c3cd08151 diff --git a/.agents/notes/implemented/feature/2026-08-06-session-completed-done-dot.md b/.agents/notes/archived/feature/2026-08-06-session-completed-done-dot.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-06-session-completed-done-dot.md rename to .agents/notes/archived/feature/2026-08-06-session-completed-done-dot.md index bd6911ce13..3fa09b4ec6 100644 --- a/.agents/notes/implemented/feature/2026-08-06-session-completed-done-dot.md +++ b/.agents/notes/archived/feature/2026-08-06-session-completed-done-dot.md @@ -1,6 +1,7 @@ # Agent Note: Session completion dot in the sidebar Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-06-session-completed-done-dot.zh.md) diff --git a/.agents/notes/implemented/feature/2026-08-06-session-completed-done-dot.zh.md b/.agents/notes/archived/feature/2026-08-06-session-completed-done-dot.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-06-session-completed-done-dot.zh.md rename to .agents/notes/archived/feature/2026-08-06-session-completed-done-dot.zh.md index 41da7d126a..42e2d9ca24 100644 --- a/.agents/notes/implemented/feature/2026-08-06-session-completed-done-dot.zh.md +++ b/.agents/notes/archived/feature/2026-08-06-session-completed-done-dot.zh.md @@ -1,6 +1,7 @@ # Agent Note: 侧边栏会话完成提醒点 Status: implemented +Archived: 2026-09-04 [English](2026-08-06-session-completed-done-dot.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-08-06-web-install-manifest.i18n.yaml b/.agents/notes/archived/feature/2026-08-06-web-install-manifest.i18n.yaml new file mode 100644 index 0000000000..e46d1b30d4 --- /dev/null +++ b/.agents/notes/archived/feature/2026-08-06-web-install-manifest.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-08-06-web-install-manifest.md +2026-08-06-web-install-manifest.md: dea7dcafb16948abe23f873da2a9a4417b7e7f1c +2026-08-06-web-install-manifest.zh.md: 0052b399aa1fd01ac1f7119bf848976e03c35efa diff --git a/.agents/notes/implemented/feature/2026-08-06-web-install-manifest.md b/.agents/notes/archived/feature/2026-08-06-web-install-manifest.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-06-web-install-manifest.md rename to .agents/notes/archived/feature/2026-08-06-web-install-manifest.md index 9efddc03af..dea7dcafb1 100644 --- a/.agents/notes/implemented/feature/2026-08-06-web-install-manifest.md +++ b/.agents/notes/archived/feature/2026-08-06-web-install-manifest.md @@ -1,6 +1,7 @@ # Agent Note: Web install manifest metadata Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-06-web-install-manifest.zh.md) diff --git a/.agents/notes/implemented/feature/2026-08-06-web-install-manifest.zh.md b/.agents/notes/archived/feature/2026-08-06-web-install-manifest.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-06-web-install-manifest.zh.md rename to .agents/notes/archived/feature/2026-08-06-web-install-manifest.zh.md index a27bd46a05..0052b399aa 100644 --- a/.agents/notes/implemented/feature/2026-08-06-web-install-manifest.zh.md +++ b/.agents/notes/archived/feature/2026-08-06-web-install-manifest.zh.md @@ -1,6 +1,7 @@ # Agent Note: Web 安装 manifest 元数据 Status: implemented +Archived: 2026-09-04 [English](2026-08-06-web-install-manifest.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-08-06-web-queue-steer-all-gesture.i18n.yaml b/.agents/notes/archived/feature/2026-08-06-web-queue-steer-all-gesture.i18n.yaml new file mode 100644 index 0000000000..94e801f1fb --- /dev/null +++ b/.agents/notes/archived/feature/2026-08-06-web-queue-steer-all-gesture.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-08-06-web-queue-steer-all-gesture.md +2026-08-06-web-queue-steer-all-gesture.md: 3589c01edaa28e0a07fabeb685a0771e4cbdef7a +2026-08-06-web-queue-steer-all-gesture.zh.md: 65d62b69e15dfa37cbb2a1fa2c86118c80b5a863 diff --git a/.agents/notes/implemented/feature/2026-08-06-web-queue-steer-all-gesture.md b/.agents/notes/archived/feature/2026-08-06-web-queue-steer-all-gesture.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-06-web-queue-steer-all-gesture.md rename to .agents/notes/archived/feature/2026-08-06-web-queue-steer-all-gesture.md index c51e837d37..3589c01eda 100644 --- a/.agents/notes/implemented/feature/2026-08-06-web-queue-steer-all-gesture.md +++ b/.agents/notes/archived/feature/2026-08-06-web-queue-steer-all-gesture.md @@ -1,6 +1,7 @@ # Agent Note: Steer the whole Web queue with an empty-draft Cmd/Ctrl+Enter Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-06-web-queue-steer-all-gesture.zh.md) diff --git a/.agents/notes/implemented/feature/2026-08-06-web-queue-steer-all-gesture.zh.md b/.agents/notes/archived/feature/2026-08-06-web-queue-steer-all-gesture.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-06-web-queue-steer-all-gesture.zh.md rename to .agents/notes/archived/feature/2026-08-06-web-queue-steer-all-gesture.zh.md index b0009a7a51..65d62b69e1 100644 --- a/.agents/notes/implemented/feature/2026-08-06-web-queue-steer-all-gesture.zh.md +++ b/.agents/notes/archived/feature/2026-08-06-web-queue-steer-all-gesture.zh.md @@ -1,6 +1,7 @@ # Agent Note: 空输入时 Cmd/Ctrl+Enter 将 Web 排队消息全部插话 Status: implemented +Archived: 2026-09-04 [English](2026-08-06-web-queue-steer-all-gesture.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-08-06-web-skill-tool-row.i18n.yaml b/.agents/notes/archived/feature/2026-08-06-web-skill-tool-row.i18n.yaml new file mode 100644 index 0000000000..911ae9fc82 --- /dev/null +++ b/.agents/notes/archived/feature/2026-08-06-web-skill-tool-row.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-08-06-web-skill-tool-row.md +2026-08-06-web-skill-tool-row.md: 69550d5afda67696bb55924b4db7a7a49c04ad17 +2026-08-06-web-skill-tool-row.zh.md: c0e9c3ab1ccd6c737cf797f26410ff370b18d399 diff --git a/.agents/notes/implemented/feature/2026-08-06-web-skill-tool-row.md b/.agents/notes/archived/feature/2026-08-06-web-skill-tool-row.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-06-web-skill-tool-row.md rename to .agents/notes/archived/feature/2026-08-06-web-skill-tool-row.md index a78afd5d37..69550d5afd 100644 --- a/.agents/notes/implemented/feature/2026-08-06-web-skill-tool-row.md +++ b/.agents/notes/archived/feature/2026-08-06-web-skill-tool-row.md @@ -1,6 +1,7 @@ # Agent Note: Web skill tool row Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-06-web-skill-tool-row.zh.md) diff --git a/.agents/notes/implemented/feature/2026-08-06-web-skill-tool-row.zh.md b/.agents/notes/archived/feature/2026-08-06-web-skill-tool-row.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-06-web-skill-tool-row.zh.md rename to .agents/notes/archived/feature/2026-08-06-web-skill-tool-row.zh.md index 469f9510ea..c0e9c3ab1c 100644 --- a/.agents/notes/implemented/feature/2026-08-06-web-skill-tool-row.zh.md +++ b/.agents/notes/archived/feature/2026-08-06-web-skill-tool-row.zh.md @@ -1,6 +1,7 @@ # Agent Note: Web skill 工具行 Status: implemented +Archived: 2026-09-04 [English](2026-08-06-web-skill-tool-row.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-08-07-default-model-follows-the-picker.i18n.yaml b/.agents/notes/archived/feature/2026-08-07-default-model-follows-the-picker.i18n.yaml new file mode 100644 index 0000000000..b48e708cae --- /dev/null +++ b/.agents/notes/archived/feature/2026-08-07-default-model-follows-the-picker.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-08-07-default-model-follows-the-picker.md +2026-08-07-default-model-follows-the-picker.md: 5fa14b8eb9c354586ef9b953fc13e7df931544e6 +2026-08-07-default-model-follows-the-picker.zh.md: ea5f8d936a2f649e128fea8f2d173ea55b1b605c diff --git a/.agents/notes/implemented/feature/2026-08-07-default-model-follows-the-picker.md b/.agents/notes/archived/feature/2026-08-07-default-model-follows-the-picker.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-07-default-model-follows-the-picker.md rename to .agents/notes/archived/feature/2026-08-07-default-model-follows-the-picker.md index b2d9c0fe58..5fa14b8eb9 100644 --- a/.agents/notes/implemented/feature/2026-08-07-default-model-follows-the-picker.md +++ b/.agents/notes/archived/feature/2026-08-07-default-model-follows-the-picker.md @@ -1,6 +1,7 @@ # Agent Note: the default model follows the picker Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-07-default-model-follows-the-picker.zh.md) diff --git a/.agents/notes/implemented/feature/2026-08-07-default-model-follows-the-picker.zh.md b/.agents/notes/archived/feature/2026-08-07-default-model-follows-the-picker.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-07-default-model-follows-the-picker.zh.md rename to .agents/notes/archived/feature/2026-08-07-default-model-follows-the-picker.zh.md index 7d3e5bc924..ea5f8d936a 100644 --- a/.agents/notes/implemented/feature/2026-08-07-default-model-follows-the-picker.zh.md +++ b/.agents/notes/archived/feature/2026-08-07-default-model-follows-the-picker.zh.md @@ -1,6 +1,7 @@ # Agent Note: 默认模型跟随选择器 Status: implemented +Archived: 2026-09-04 [English](2026-08-07-default-model-follows-the-picker.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-08-07-feedback-acknowledgement-sharing-disclosure.i18n.yaml b/.agents/notes/archived/feature/2026-08-07-feedback-acknowledgement-sharing-disclosure.i18n.yaml new file mode 100644 index 0000000000..59023a8821 --- /dev/null +++ b/.agents/notes/archived/feature/2026-08-07-feedback-acknowledgement-sharing-disclosure.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-08-07-feedback-acknowledgement-sharing-disclosure.md +2026-08-07-feedback-acknowledgement-sharing-disclosure.md: 82cc77275520bb713361f9a687d8962347af63f8 +2026-08-07-feedback-acknowledgement-sharing-disclosure.zh.md: 266a87c8a036081cdf4caf9fe8e430d214b1e29a diff --git a/.agents/notes/implemented/feature/2026-08-07-feedback-acknowledgement-sharing-disclosure.md b/.agents/notes/archived/feature/2026-08-07-feedback-acknowledgement-sharing-disclosure.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-07-feedback-acknowledgement-sharing-disclosure.md rename to .agents/notes/archived/feature/2026-08-07-feedback-acknowledgement-sharing-disclosure.md index daba82708b..82cc772755 100644 --- a/.agents/notes/implemented/feature/2026-08-07-feedback-acknowledgement-sharing-disclosure.md +++ b/.agents/notes/archived/feature/2026-08-07-feedback-acknowledgement-sharing-disclosure.md @@ -1,6 +1,7 @@ # Agent Note: Feedback acknowledgement sharing disclosure Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-07-feedback-acknowledgement-sharing-disclosure.zh.md) diff --git a/.agents/notes/implemented/feature/2026-08-07-feedback-acknowledgement-sharing-disclosure.zh.md b/.agents/notes/archived/feature/2026-08-07-feedback-acknowledgement-sharing-disclosure.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-07-feedback-acknowledgement-sharing-disclosure.zh.md rename to .agents/notes/archived/feature/2026-08-07-feedback-acknowledgement-sharing-disclosure.zh.md index 2be6c95dd5..266a87c8a0 100644 --- a/.agents/notes/implemented/feature/2026-08-07-feedback-acknowledgement-sharing-disclosure.zh.md +++ b/.agents/notes/archived/feature/2026-08-07-feedback-acknowledgement-sharing-disclosure.zh.md @@ -1,6 +1,7 @@ # Agent Note: 反馈确认中的会话共享披露 Status: implemented +Archived: 2026-09-04 [English](2026-08-07-feedback-acknowledgement-sharing-disclosure.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-08-07-web-inline-file-mentions.i18n.yaml b/.agents/notes/archived/feature/2026-08-07-web-inline-file-mentions.i18n.yaml new file mode 100644 index 0000000000..6cce34d778 --- /dev/null +++ b/.agents/notes/archived/feature/2026-08-07-web-inline-file-mentions.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-08-07-web-inline-file-mentions.md +2026-08-07-web-inline-file-mentions.md: a742d7eb0e420cdf4fa22b89b7ec45fc368a3268 +2026-08-07-web-inline-file-mentions.zh.md: 8c6ac4744c9172e0d2a4aece906eb5a8661a010a diff --git a/.agents/notes/implemented/feature/2026-08-07-web-inline-file-mentions.md b/.agents/notes/archived/feature/2026-08-07-web-inline-file-mentions.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-07-web-inline-file-mentions.md rename to .agents/notes/archived/feature/2026-08-07-web-inline-file-mentions.md index 0c7341e9ae..a742d7eb0e 100644 --- a/.agents/notes/implemented/feature/2026-08-07-web-inline-file-mentions.md +++ b/.agents/notes/archived/feature/2026-08-07-web-inline-file-mentions.md @@ -1,6 +1,7 @@ # Agent Note: inline-code file mentions open the file they name Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-07-web-inline-file-mentions.zh.md) diff --git a/.agents/notes/implemented/feature/2026-08-07-web-inline-file-mentions.zh.md b/.agents/notes/archived/feature/2026-08-07-web-inline-file-mentions.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-07-web-inline-file-mentions.zh.md rename to .agents/notes/archived/feature/2026-08-07-web-inline-file-mentions.zh.md index 3483672b42..8c6ac4744c 100644 --- a/.agents/notes/implemented/feature/2026-08-07-web-inline-file-mentions.zh.md +++ b/.agents/notes/archived/feature/2026-08-07-web-inline-file-mentions.zh.md @@ -1,6 +1,7 @@ # Agent Note: 行内代码文件提及可打开其命名的文件 Status: implemented +Archived: 2026-09-04 [English](2026-08-07-web-inline-file-mentions.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-08-08-pi-ai-per-model-reasoning-declarations.i18n.yaml b/.agents/notes/archived/feature/2026-08-08-pi-ai-per-model-reasoning-declarations.i18n.yaml new file mode 100644 index 0000000000..2ef32755f3 --- /dev/null +++ b/.agents/notes/archived/feature/2026-08-08-pi-ai-per-model-reasoning-declarations.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-08-08-pi-ai-per-model-reasoning-declarations.md +2026-08-08-pi-ai-per-model-reasoning-declarations.md: 8cd6b91832dc71cb7eda10f3faa9791f3d301730 +2026-08-08-pi-ai-per-model-reasoning-declarations.zh.md: fd8ff9965e382f7e2728caf0ae1eb2978a25aaf5 diff --git a/.agents/notes/implemented/feature/2026-08-08-pi-ai-per-model-reasoning-declarations.md b/.agents/notes/archived/feature/2026-08-08-pi-ai-per-model-reasoning-declarations.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-08-pi-ai-per-model-reasoning-declarations.md rename to .agents/notes/archived/feature/2026-08-08-pi-ai-per-model-reasoning-declarations.md index 0e8d5c3ca4..8cd6b91832 100644 --- a/.agents/notes/implemented/feature/2026-08-08-pi-ai-per-model-reasoning-declarations.md +++ b/.agents/notes/archived/feature/2026-08-08-pi-ai-per-model-reasoning-declarations.md @@ -1,6 +1,7 @@ # Agent Note: Per-Model Reasoning Declarations in llm-pi-ai Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-08-pi-ai-per-model-reasoning-declarations.zh.md) diff --git a/.agents/notes/implemented/feature/2026-08-08-pi-ai-per-model-reasoning-declarations.zh.md b/.agents/notes/archived/feature/2026-08-08-pi-ai-per-model-reasoning-declarations.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-08-pi-ai-per-model-reasoning-declarations.zh.md rename to .agents/notes/archived/feature/2026-08-08-pi-ai-per-model-reasoning-declarations.zh.md index c4c060b21c..fd8ff9965e 100644 --- a/.agents/notes/implemented/feature/2026-08-08-pi-ai-per-model-reasoning-declarations.zh.md +++ b/.agents/notes/archived/feature/2026-08-08-pi-ai-per-model-reasoning-declarations.zh.md @@ -1,6 +1,7 @@ # Agent Note: llm-pi-ai 的按模型推理声明 Status: implemented +Archived: 2026-09-04 [English](2026-08-08-pi-ai-per-model-reasoning-declarations.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-08-08-user-explicit-skill-invocation.i18n.yaml b/.agents/notes/archived/feature/2026-08-08-user-explicit-skill-invocation.i18n.yaml new file mode 100644 index 0000000000..1fa0b46adf --- /dev/null +++ b/.agents/notes/archived/feature/2026-08-08-user-explicit-skill-invocation.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-08-08-user-explicit-skill-invocation.md +2026-08-08-user-explicit-skill-invocation.md: 65ef9a2ddfa4d83d56c2e10ea4377b05e3c83182 +2026-08-08-user-explicit-skill-invocation.zh.md: 2b86d590bf788fb60e220e98085a18eb5d76040f diff --git a/.agents/notes/implemented/feature/2026-08-08-user-explicit-skill-invocation.md b/.agents/notes/archived/feature/2026-08-08-user-explicit-skill-invocation.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-08-user-explicit-skill-invocation.md rename to .agents/notes/archived/feature/2026-08-08-user-explicit-skill-invocation.md index 87f4d04fb4..65ef9a2ddf 100644 --- a/.agents/notes/implemented/feature/2026-08-08-user-explicit-skill-invocation.md +++ b/.agents/notes/archived/feature/2026-08-08-user-explicit-skill-invocation.md @@ -1,6 +1,7 @@ # Agent Note: User-explicit skill invocation at the pre-step gesture boundary Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-08-user-explicit-skill-invocation.zh.md) diff --git a/.agents/notes/implemented/feature/2026-08-08-user-explicit-skill-invocation.zh.md b/.agents/notes/archived/feature/2026-08-08-user-explicit-skill-invocation.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-08-user-explicit-skill-invocation.zh.md rename to .agents/notes/archived/feature/2026-08-08-user-explicit-skill-invocation.zh.md index 7b1aa18808..2b86d590bf 100644 --- a/.agents/notes/implemented/feature/2026-08-08-user-explicit-skill-invocation.zh.md +++ b/.agents/notes/archived/feature/2026-08-08-user-explicit-skill-invocation.zh.md @@ -1,6 +1,7 @@ # Agent Note: pre-step 手势边界上的用户显式 skill 调用 Status: implemented +Archived: 2026-09-04 [English](2026-08-08-user-explicit-skill-invocation.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-08-09-parallel-subagent-delegations.i18n.yaml b/.agents/notes/archived/feature/2026-08-09-parallel-subagent-delegations.i18n.yaml new file mode 100644 index 0000000000..9d60baa801 --- /dev/null +++ b/.agents/notes/archived/feature/2026-08-09-parallel-subagent-delegations.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-08-09-parallel-subagent-delegations.md +2026-08-09-parallel-subagent-delegations.md: c252f9395014a889b66f5b70ee5ebbc9782827a6 +2026-08-09-parallel-subagent-delegations.zh.md: 575d5babb53d9524caed43cd1dbe3e91417e9f16 diff --git a/.agents/notes/implemented/feature/2026-08-09-parallel-subagent-delegations.md b/.agents/notes/archived/feature/2026-08-09-parallel-subagent-delegations.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-09-parallel-subagent-delegations.md rename to .agents/notes/archived/feature/2026-08-09-parallel-subagent-delegations.md index 7e6f933749..c252f93950 100644 --- a/.agents/notes/implemented/feature/2026-08-09-parallel-subagent-delegations.md +++ b/.agents/notes/archived/feature/2026-08-09-parallel-subagent-delegations.md @@ -1,6 +1,7 @@ # Agent Note: Parallel subagent delegations Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-09-parallel-subagent-delegations.zh.md) diff --git a/.agents/notes/implemented/feature/2026-08-09-parallel-subagent-delegations.zh.md b/.agents/notes/archived/feature/2026-08-09-parallel-subagent-delegations.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-09-parallel-subagent-delegations.zh.md rename to .agents/notes/archived/feature/2026-08-09-parallel-subagent-delegations.zh.md index 1072697355..575d5babb5 100644 --- a/.agents/notes/implemented/feature/2026-08-09-parallel-subagent-delegations.zh.md +++ b/.agents/notes/archived/feature/2026-08-09-parallel-subagent-delegations.zh.md @@ -1,6 +1,7 @@ # Agent Note: 并行 subagent 委派 Status: implemented +Archived: 2026-09-04 [English](2026-08-09-parallel-subagent-delegations.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-08-10-continuable-subagent-policy-inheritance.i18n.yaml b/.agents/notes/archived/feature/2026-08-10-continuable-subagent-policy-inheritance.i18n.yaml new file mode 100644 index 0000000000..b72a971de1 --- /dev/null +++ b/.agents/notes/archived/feature/2026-08-10-continuable-subagent-policy-inheritance.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-08-10-continuable-subagent-policy-inheritance.md +2026-08-10-continuable-subagent-policy-inheritance.md: c54222cc96a1fc6b8ca615212bb6a47e93ae4f56 +2026-08-10-continuable-subagent-policy-inheritance.zh.md: 4ca38a37276d3014dd6f3ee1cebac0e57a449579 diff --git a/.agents/notes/implemented/feature/2026-08-10-continuable-subagent-policy-inheritance.md b/.agents/notes/archived/feature/2026-08-10-continuable-subagent-policy-inheritance.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-10-continuable-subagent-policy-inheritance.md rename to .agents/notes/archived/feature/2026-08-10-continuable-subagent-policy-inheritance.md index e567c0557b..c54222cc96 100644 --- a/.agents/notes/implemented/feature/2026-08-10-continuable-subagent-policy-inheritance.md +++ b/.agents/notes/archived/feature/2026-08-10-continuable-subagent-policy-inheritance.md @@ -1,6 +1,7 @@ # Agent Note: Continuable subagent policy inheritance — the durable child log owns the delegation-time snapshot Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-10-continuable-subagent-policy-inheritance.zh.md) diff --git a/.agents/notes/implemented/feature/2026-08-10-continuable-subagent-policy-inheritance.zh.md b/.agents/notes/archived/feature/2026-08-10-continuable-subagent-policy-inheritance.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-10-continuable-subagent-policy-inheritance.zh.md rename to .agents/notes/archived/feature/2026-08-10-continuable-subagent-policy-inheritance.zh.md index 5c9cc677e9..4ca38a3727 100644 --- a/.agents/notes/implemented/feature/2026-08-10-continuable-subagent-policy-inheritance.zh.md +++ b/.agents/notes/archived/feature/2026-08-10-continuable-subagent-policy-inheritance.zh.md @@ -1,6 +1,7 @@ # Agent Note: 可继续 subagent 策略继承——持久化子日志拥有委派时快照 Status: implemented +Archived: 2026-09-04 [English](2026-08-10-continuable-subagent-policy-inheritance.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-08-10-durable-workflow-runs-in-chat.i18n.yaml b/.agents/notes/archived/feature/2026-08-10-durable-workflow-runs-in-chat.i18n.yaml new file mode 100644 index 0000000000..284f43658a --- /dev/null +++ b/.agents/notes/archived/feature/2026-08-10-durable-workflow-runs-in-chat.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-08-10-durable-workflow-runs-in-chat.md +2026-08-10-durable-workflow-runs-in-chat.md: 01c59ef25996d6349ab2904f148bf4e72fdd5f09 +2026-08-10-durable-workflow-runs-in-chat.zh.md: 5f6b39b59beca5e2363261605ec58fbdcf71ea6f diff --git a/.agents/notes/implemented/feature/2026-08-10-durable-workflow-runs-in-chat.md b/.agents/notes/archived/feature/2026-08-10-durable-workflow-runs-in-chat.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-10-durable-workflow-runs-in-chat.md rename to .agents/notes/archived/feature/2026-08-10-durable-workflow-runs-in-chat.md index 817fd4debd..01c59ef259 100644 --- a/.agents/notes/implemented/feature/2026-08-10-durable-workflow-runs-in-chat.md +++ b/.agents/notes/archived/feature/2026-08-10-durable-workflow-runs-in-chat.md @@ -1,6 +1,7 @@ # Agent Note: Durable workflow runs in Chat Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-10-durable-workflow-runs-in-chat.zh.md) diff --git a/.agents/notes/implemented/feature/2026-08-10-durable-workflow-runs-in-chat.zh.md b/.agents/notes/archived/feature/2026-08-10-durable-workflow-runs-in-chat.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-10-durable-workflow-runs-in-chat.zh.md rename to .agents/notes/archived/feature/2026-08-10-durable-workflow-runs-in-chat.zh.md index 1a31e54dc9..5f6b39b59b 100644 --- a/.agents/notes/implemented/feature/2026-08-10-durable-workflow-runs-in-chat.zh.md +++ b/.agents/notes/archived/feature/2026-08-10-durable-workflow-runs-in-chat.zh.md @@ -1,6 +1,7 @@ # Agent Note: Chat 中的持久工作流运行 Status: implemented +Archived: 2026-09-04 [English](2026-08-10-durable-workflow-runs-in-chat.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-08-10-minimal-read-image-tool.i18n.yaml b/.agents/notes/archived/feature/2026-08-10-minimal-read-image-tool.i18n.yaml new file mode 100644 index 0000000000..a0bde204a4 --- /dev/null +++ b/.agents/notes/archived/feature/2026-08-10-minimal-read-image-tool.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-08-10-minimal-read-image-tool.md +2026-08-10-minimal-read-image-tool.md: 52476b9d050c0c06cd81460c4160aba010b50797 +2026-08-10-minimal-read-image-tool.zh.md: 936197b8bdde498b5cdc4d84a41bbb1d96850361 diff --git a/.agents/notes/implemented/feature/2026-08-10-minimal-read-image-tool.md b/.agents/notes/archived/feature/2026-08-10-minimal-read-image-tool.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-10-minimal-read-image-tool.md rename to .agents/notes/archived/feature/2026-08-10-minimal-read-image-tool.md index fa6cbca90e..52476b9d05 100644 --- a/.agents/notes/implemented/feature/2026-08-10-minimal-read-image-tool.md +++ b/.agents/notes/archived/feature/2026-08-10-minimal-read-image-tool.md @@ -1,6 +1,7 @@ # Agent Note: A minimal read_image tool over existing seams Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-10-minimal-read-image-tool.zh.md) diff --git a/.agents/notes/implemented/feature/2026-08-10-minimal-read-image-tool.zh.md b/.agents/notes/archived/feature/2026-08-10-minimal-read-image-tool.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-10-minimal-read-image-tool.zh.md rename to .agents/notes/archived/feature/2026-08-10-minimal-read-image-tool.zh.md index 0629bac744..936197b8bd 100644 --- a/.agents/notes/implemented/feature/2026-08-10-minimal-read-image-tool.zh.md +++ b/.agents/notes/archived/feature/2026-08-10-minimal-read-image-tool.zh.md @@ -1,6 +1,7 @@ # Agent Note: 基于既有 seam 的最小 read_image 工具 Status: implemented +Archived: 2026-09-04 [English](2026-08-10-minimal-read-image-tool.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-08-10-telemetry-default-off.i18n.yaml b/.agents/notes/archived/feature/2026-08-10-telemetry-default-off.i18n.yaml new file mode 100644 index 0000000000..9dcd23f8c2 --- /dev/null +++ b/.agents/notes/archived/feature/2026-08-10-telemetry-default-off.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-08-10-telemetry-default-off.md +2026-08-10-telemetry-default-off.md: 56d356f66ea0cb05397a571606c1768da6c08aec +2026-08-10-telemetry-default-off.zh.md: 1033758a7b15db2f6d8ea387553dba2699e7d44b diff --git a/.agents/notes/implemented/feature/2026-08-10-telemetry-default-off.md b/.agents/notes/archived/feature/2026-08-10-telemetry-default-off.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-10-telemetry-default-off.md rename to .agents/notes/archived/feature/2026-08-10-telemetry-default-off.md index 1bc9719f70..56d356f66e 100644 --- a/.agents/notes/implemented/feature/2026-08-10-telemetry-default-off.md +++ b/.agents/notes/archived/feature/2026-08-10-telemetry-default-off.md @@ -1,6 +1,7 @@ # Agent Note: SessionTelemetryBackend requires explicit opt-in Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-10-telemetry-default-off.zh.md) diff --git a/.agents/notes/implemented/feature/2026-08-10-telemetry-default-off.zh.md b/.agents/notes/archived/feature/2026-08-10-telemetry-default-off.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-10-telemetry-default-off.zh.md rename to .agents/notes/archived/feature/2026-08-10-telemetry-default-off.zh.md index 8f8bbb5781..1033758a7b 100644 --- a/.agents/notes/implemented/feature/2026-08-10-telemetry-default-off.zh.md +++ b/.agents/notes/archived/feature/2026-08-10-telemetry-default-off.zh.md @@ -1,6 +1,7 @@ # Agent Note: 遥测必须显式启用 Status: implemented +Archived: 2026-09-04 [English](2026-08-10-telemetry-default-off.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-08-10-web-plugin-configuration.i18n.yaml b/.agents/notes/archived/feature/2026-08-10-web-plugin-configuration.i18n.yaml new file mode 100644 index 0000000000..d6688c1454 --- /dev/null +++ b/.agents/notes/archived/feature/2026-08-10-web-plugin-configuration.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-08-10-web-plugin-configuration.md +2026-08-10-web-plugin-configuration.md: 38d682cfc766733cf886e0170cb59438c821e3cd +2026-08-10-web-plugin-configuration.zh.md: 7bb406ce16c0e9fa4c3d9c0700b846b6917e79da diff --git a/.agents/notes/implemented/feature/2026-08-10-web-plugin-configuration.md b/.agents/notes/archived/feature/2026-08-10-web-plugin-configuration.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-10-web-plugin-configuration.md rename to .agents/notes/archived/feature/2026-08-10-web-plugin-configuration.md index 8b8d231fd2..38d682cfc7 100644 --- a/.agents/notes/implemented/feature/2026-08-10-web-plugin-configuration.md +++ b/.agents/notes/archived/feature/2026-08-10-web-plugin-configuration.md @@ -1,6 +1,7 @@ # Agent Note: Plugin configuration in the web settings page Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-10-web-plugin-configuration.zh.md) diff --git a/.agents/notes/implemented/feature/2026-08-10-web-plugin-configuration.zh.md b/.agents/notes/archived/feature/2026-08-10-web-plugin-configuration.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-10-web-plugin-configuration.zh.md rename to .agents/notes/archived/feature/2026-08-10-web-plugin-configuration.zh.md index 70a3b68730..7bb406ce16 100644 --- a/.agents/notes/implemented/feature/2026-08-10-web-plugin-configuration.zh.md +++ b/.agents/notes/archived/feature/2026-08-10-web-plugin-configuration.zh.md @@ -1,6 +1,7 @@ # Agent Note: Plugin configuration in the web settings page Status: implemented +Archived: 2026-09-04 [English](2026-08-10-web-plugin-configuration.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-08-10-web-session-log-export.i18n.yaml b/.agents/notes/archived/feature/2026-08-10-web-session-log-export.i18n.yaml new file mode 100644 index 0000000000..5e11283162 --- /dev/null +++ b/.agents/notes/archived/feature/2026-08-10-web-session-log-export.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-08-10-web-session-log-export.md +2026-08-10-web-session-log-export.md: 40b23fe277fb205a61078f450dbe0c1205d6e390 +2026-08-10-web-session-log-export.zh.md: d0937ba4344fc89e0ca48f587183be1c3db388d7 diff --git a/.agents/notes/implemented/feature/2026-08-10-web-session-log-export.md b/.agents/notes/archived/feature/2026-08-10-web-session-log-export.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-10-web-session-log-export.md rename to .agents/notes/archived/feature/2026-08-10-web-session-log-export.md index dceee66d0a..40b23fe277 100644 --- a/.agents/notes/implemented/feature/2026-08-10-web-session-log-export.md +++ b/.agents/notes/archived/feature/2026-08-10-web-session-log-export.md @@ -1,6 +1,7 @@ # Agent Note: Web session-log export as a host-streamed ZIP download Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-10-web-session-log-export.zh.md) diff --git a/.agents/notes/implemented/feature/2026-08-10-web-session-log-export.zh.md b/.agents/notes/archived/feature/2026-08-10-web-session-log-export.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-10-web-session-log-export.zh.md rename to .agents/notes/archived/feature/2026-08-10-web-session-log-export.zh.md index bfd4254b2b..d0937ba434 100644 --- a/.agents/notes/implemented/feature/2026-08-10-web-session-log-export.zh.md +++ b/.agents/notes/archived/feature/2026-08-10-web-session-log-export.zh.md @@ -1,6 +1,7 @@ # Agent Note: Web 会话日志导出——宿主流式 ZIP 下载 Status: implemented +Archived: 2026-09-04 [English](2026-08-10-web-session-log-export.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-08-11-background-first-continuable-delegation.i18n.yaml b/.agents/notes/archived/feature/2026-08-11-background-first-continuable-delegation.i18n.yaml new file mode 100644 index 0000000000..b1eee89e50 --- /dev/null +++ b/.agents/notes/archived/feature/2026-08-11-background-first-continuable-delegation.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-08-11-background-first-continuable-delegation.md +2026-08-11-background-first-continuable-delegation.md: b71fe00af0f5b35bb2749f5fe71d069f2810dc0f +2026-08-11-background-first-continuable-delegation.zh.md: d1aa651fce59b97aafd226944d9ebc95badc8dd3 diff --git a/.agents/notes/implemented/feature/2026-08-11-background-first-continuable-delegation.md b/.agents/notes/archived/feature/2026-08-11-background-first-continuable-delegation.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-11-background-first-continuable-delegation.md rename to .agents/notes/archived/feature/2026-08-11-background-first-continuable-delegation.md index a3dcd75c82..b71fe00af0 100644 --- a/.agents/notes/implemented/feature/2026-08-11-background-first-continuable-delegation.md +++ b/.agents/notes/archived/feature/2026-08-11-background-first-continuable-delegation.md @@ -1,6 +1,7 @@ # Agent Note: Continuable delegation is background-first Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-11-background-first-continuable-delegation.zh.md) diff --git a/.agents/notes/implemented/feature/2026-08-11-background-first-continuable-delegation.zh.md b/.agents/notes/archived/feature/2026-08-11-background-first-continuable-delegation.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-11-background-first-continuable-delegation.zh.md rename to .agents/notes/archived/feature/2026-08-11-background-first-continuable-delegation.zh.md index f0cbdca1c1..d1aa651fce 100644 --- a/.agents/notes/implemented/feature/2026-08-11-background-first-continuable-delegation.zh.md +++ b/.agents/notes/archived/feature/2026-08-11-background-first-continuable-delegation.zh.md @@ -1,6 +1,7 @@ # Agent Note: 可继续委派采用后台优先 Status: implemented +Archived: 2026-09-04 [English](2026-08-11-background-first-continuable-delegation.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-08-11-message-feedback-web-surface.i18n.yaml b/.agents/notes/archived/feature/2026-08-11-message-feedback-web-surface.i18n.yaml new file mode 100644 index 0000000000..378617f04e --- /dev/null +++ b/.agents/notes/archived/feature/2026-08-11-message-feedback-web-surface.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-08-11-message-feedback-web-surface.md +2026-08-11-message-feedback-web-surface.md: d82256d002008d5e2088a5e2a3af59ac9af99119 +2026-08-11-message-feedback-web-surface.zh.md: 794e5768c7e211162368b4ae7d8b2e40107f5c9b diff --git a/.agents/notes/implemented/feature/2026-08-11-message-feedback-web-surface.md b/.agents/notes/archived/feature/2026-08-11-message-feedback-web-surface.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-11-message-feedback-web-surface.md rename to .agents/notes/archived/feature/2026-08-11-message-feedback-web-surface.md index a1fbce695f..d82256d002 100644 --- a/.agents/notes/implemented/feature/2026-08-11-message-feedback-web-surface.md +++ b/.agents/notes/archived/feature/2026-08-11-message-feedback-web-surface.md @@ -1,6 +1,7 @@ # Agent Note: Web surface for message feedback Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-11-message-feedback-web-surface.zh.md) diff --git a/.agents/notes/implemented/feature/2026-08-11-message-feedback-web-surface.zh.md b/.agents/notes/archived/feature/2026-08-11-message-feedback-web-surface.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-11-message-feedback-web-surface.zh.md rename to .agents/notes/archived/feature/2026-08-11-message-feedback-web-surface.zh.md index a6e1b7af84..794e5768c7 100644 --- a/.agents/notes/implemented/feature/2026-08-11-message-feedback-web-surface.zh.md +++ b/.agents/notes/archived/feature/2026-08-11-message-feedback-web-surface.zh.md @@ -1,6 +1,7 @@ # Agent Note: 消息反馈的 Web 界面 Status: implemented +Archived: 2026-09-04 [English](2026-08-11-message-feedback-web-surface.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-08-11-web-attachment-display-alignment.i18n.yaml b/.agents/notes/archived/feature/2026-08-11-web-attachment-display-alignment.i18n.yaml new file mode 100644 index 0000000000..d1e53b3cea --- /dev/null +++ b/.agents/notes/archived/feature/2026-08-11-web-attachment-display-alignment.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-08-11-web-attachment-display-alignment.md +2026-08-11-web-attachment-display-alignment.md: a9fd9436bc5fd132c18baa9b393bf1759feda7ea +2026-08-11-web-attachment-display-alignment.zh.md: f2d550f633ab5e9411bc174b0b932be9e95fc4a9 diff --git a/.agents/notes/implemented/feature/2026-08-11-web-attachment-display-alignment.md b/.agents/notes/archived/feature/2026-08-11-web-attachment-display-alignment.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-11-web-attachment-display-alignment.md rename to .agents/notes/archived/feature/2026-08-11-web-attachment-display-alignment.md index dd38166617..a9fd9436bc 100644 --- a/.agents/notes/implemented/feature/2026-08-11-web-attachment-display-alignment.md +++ b/.agents/notes/archived/feature/2026-08-11-web-attachment-display-alignment.md @@ -1,6 +1,7 @@ # Agent Note: Web attachment display aligns with DeepSeek Chat via attachment atoms Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-11-web-attachment-display-alignment.zh.md) diff --git a/.agents/notes/implemented/feature/2026-08-11-web-attachment-display-alignment.zh.md b/.agents/notes/archived/feature/2026-08-11-web-attachment-display-alignment.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-11-web-attachment-display-alignment.zh.md rename to .agents/notes/archived/feature/2026-08-11-web-attachment-display-alignment.zh.md index 522527a446..f2d550f633 100644 --- a/.agents/notes/implemented/feature/2026-08-11-web-attachment-display-alignment.zh.md +++ b/.agents/notes/archived/feature/2026-08-11-web-attachment-display-alignment.zh.md @@ -1,6 +1,7 @@ # Agent Note: Web 附件展示经附件原子组件对齐 DeepSeek Chat Status: implemented +Archived: 2026-09-04 [English](2026-08-11-web-attachment-display-alignment.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-08-11-workflow-run-status-driven-disclosure.i18n.yaml b/.agents/notes/archived/feature/2026-08-11-workflow-run-status-driven-disclosure.i18n.yaml new file mode 100644 index 0000000000..5e317c9329 --- /dev/null +++ b/.agents/notes/archived/feature/2026-08-11-workflow-run-status-driven-disclosure.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-08-11-workflow-run-status-driven-disclosure.md +2026-08-11-workflow-run-status-driven-disclosure.md: 725fd95483265b410646d99c744006eeb3dde75a +2026-08-11-workflow-run-status-driven-disclosure.zh.md: 4e2256abe970888de58720c2a6e7b0c262df6274 diff --git a/.agents/notes/implemented/feature/2026-08-11-workflow-run-status-driven-disclosure.md b/.agents/notes/archived/feature/2026-08-11-workflow-run-status-driven-disclosure.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-11-workflow-run-status-driven-disclosure.md rename to .agents/notes/archived/feature/2026-08-11-workflow-run-status-driven-disclosure.md index e97ead9046..725fd95483 100644 --- a/.agents/notes/implemented/feature/2026-08-11-workflow-run-status-driven-disclosure.md +++ b/.agents/notes/archived/feature/2026-08-11-workflow-run-status-driven-disclosure.md @@ -1,6 +1,7 @@ # Agent Note: Status-driven disclosure for workflow runs Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-11-workflow-run-status-driven-disclosure.zh.md) diff --git a/.agents/notes/implemented/feature/2026-08-11-workflow-run-status-driven-disclosure.zh.md b/.agents/notes/archived/feature/2026-08-11-workflow-run-status-driven-disclosure.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-11-workflow-run-status-driven-disclosure.zh.md rename to .agents/notes/archived/feature/2026-08-11-workflow-run-status-driven-disclosure.zh.md index ef3da3ee7c..4e2256abe9 100644 --- a/.agents/notes/implemented/feature/2026-08-11-workflow-run-status-driven-disclosure.zh.md +++ b/.agents/notes/archived/feature/2026-08-11-workflow-run-status-driven-disclosure.zh.md @@ -1,6 +1,7 @@ # Agent Note: 工作流运行的状态驱动 disclosure Status: implemented +Archived: 2026-09-04 [English](2026-08-11-workflow-run-status-driven-disclosure.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-08-11-workspace-sidebar-order-and-folding.i18n.yaml b/.agents/notes/archived/feature/2026-08-11-workspace-sidebar-order-and-folding.i18n.yaml new file mode 100644 index 0000000000..2af140c119 --- /dev/null +++ b/.agents/notes/archived/feature/2026-08-11-workspace-sidebar-order-and-folding.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-08-11-workspace-sidebar-order-and-folding.md +2026-08-11-workspace-sidebar-order-and-folding.md: c83f839ff7f9abf1a12aaba036380329f01707d0 +2026-08-11-workspace-sidebar-order-and-folding.zh.md: f0798445b8baa07e7141e5281c6ef731403d7b62 diff --git a/.agents/notes/implemented/feature/2026-08-11-workspace-sidebar-order-and-folding.md b/.agents/notes/archived/feature/2026-08-11-workspace-sidebar-order-and-folding.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-11-workspace-sidebar-order-and-folding.md rename to .agents/notes/archived/feature/2026-08-11-workspace-sidebar-order-and-folding.md index a802693690..c83f839ff7 100644 --- a/.agents/notes/implemented/feature/2026-08-11-workspace-sidebar-order-and-folding.md +++ b/.agents/notes/archived/feature/2026-08-11-workspace-sidebar-order-and-folding.md @@ -1,6 +1,7 @@ # Agent Note: Workspace Sidebar Order and Folding Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-11-workspace-sidebar-order-and-folding.zh.md) diff --git a/.agents/notes/implemented/feature/2026-08-11-workspace-sidebar-order-and-folding.zh.md b/.agents/notes/archived/feature/2026-08-11-workspace-sidebar-order-and-folding.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-11-workspace-sidebar-order-and-folding.zh.md rename to .agents/notes/archived/feature/2026-08-11-workspace-sidebar-order-and-folding.zh.md index 83a66c9b4a..f0798445b8 100644 --- a/.agents/notes/implemented/feature/2026-08-11-workspace-sidebar-order-and-folding.zh.md +++ b/.agents/notes/archived/feature/2026-08-11-workspace-sidebar-order-and-folding.zh.md @@ -1,6 +1,7 @@ # Agent Note: Workspace 侧边栏顺序与折叠 Status: implemented +Archived: 2026-09-04 [English](2026-08-11-workspace-sidebar-order-and-folding.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-08-12-hero-fish-hover-swim-morph.i18n.yaml b/.agents/notes/archived/feature/2026-08-12-hero-fish-hover-swim-morph.i18n.yaml new file mode 100644 index 0000000000..a99124fe8f --- /dev/null +++ b/.agents/notes/archived/feature/2026-08-12-hero-fish-hover-swim-morph.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-08-12-hero-fish-hover-swim-morph.md +2026-08-12-hero-fish-hover-swim-morph.md: 60bcb082f0d7a251161d7727392eebb63a354711 +2026-08-12-hero-fish-hover-swim-morph.zh.md: d051bae8d156aeee02beb94c8895ffecd328e2fc diff --git a/.agents/notes/implemented/feature/2026-08-12-hero-fish-hover-swim-morph.md b/.agents/notes/archived/feature/2026-08-12-hero-fish-hover-swim-morph.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-12-hero-fish-hover-swim-morph.md rename to .agents/notes/archived/feature/2026-08-12-hero-fish-hover-swim-morph.md index c485f94e24..60bcb082f0 100644 --- a/.agents/notes/implemented/feature/2026-08-12-hero-fish-hover-swim-morph.md +++ b/.agents/notes/archived/feature/2026-08-12-hero-fish-hover-swim-morph.md @@ -1,6 +1,7 @@ # Agent Note: Hero fish hover swim morph Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-12-hero-fish-hover-swim-morph.zh.md) diff --git a/.agents/notes/implemented/feature/2026-08-12-hero-fish-hover-swim-morph.zh.md b/.agents/notes/archived/feature/2026-08-12-hero-fish-hover-swim-morph.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-12-hero-fish-hover-swim-morph.zh.md rename to .agents/notes/archived/feature/2026-08-12-hero-fish-hover-swim-morph.zh.md index ee39a75ca2..d051bae8d1 100644 --- a/.agents/notes/implemented/feature/2026-08-12-hero-fish-hover-swim-morph.zh.md +++ b/.agents/notes/archived/feature/2026-08-12-hero-fish-hover-swim-morph.zh.md @@ -1,6 +1,7 @@ # Agent Note: 主页鲸鱼 hover 游动变形 Status: implemented +Archived: 2026-09-04 [English](2026-08-12-hero-fish-hover-swim-morph.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-08-12-open-ready-web-ui.i18n.yaml b/.agents/notes/archived/feature/2026-08-12-open-ready-web-ui.i18n.yaml new file mode 100644 index 0000000000..10c244ad26 --- /dev/null +++ b/.agents/notes/archived/feature/2026-08-12-open-ready-web-ui.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-08-12-open-ready-web-ui.md +2026-08-12-open-ready-web-ui.md: 869b0deb44dcc31a9fdcfd4a6026b3b34cea9a43 +2026-08-12-open-ready-web-ui.zh.md: 64997cd0f9cf93ea607ff3524e89a55cfc909a09 diff --git a/.agents/notes/implemented/feature/2026-08-12-open-ready-web-ui.md b/.agents/notes/archived/feature/2026-08-12-open-ready-web-ui.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-12-open-ready-web-ui.md rename to .agents/notes/archived/feature/2026-08-12-open-ready-web-ui.md index 075082aff6..869b0deb44 100644 --- a/.agents/notes/implemented/feature/2026-08-12-open-ready-web-ui.md +++ b/.agents/notes/archived/feature/2026-08-12-open-ready-web-ui.md @@ -1,6 +1,7 @@ # Agent Note: `dsh web` opens its ready page Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-12-open-ready-web-ui.zh.md) diff --git a/.agents/notes/implemented/feature/2026-08-12-open-ready-web-ui.zh.md b/.agents/notes/archived/feature/2026-08-12-open-ready-web-ui.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-12-open-ready-web-ui.zh.md rename to .agents/notes/archived/feature/2026-08-12-open-ready-web-ui.zh.md index de73ab0c85..64997cd0f9 100644 --- a/.agents/notes/implemented/feature/2026-08-12-open-ready-web-ui.zh.md +++ b/.agents/notes/archived/feature/2026-08-12-open-ready-web-ui.zh.md @@ -1,6 +1,7 @@ # Agent Note: `dsh web` 打开已就绪页面 Status: implemented +Archived: 2026-09-04 [English](2026-08-12-open-ready-web-ui.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-08-12-product-subagent-one-shot-background-tasks.i18n.yaml b/.agents/notes/archived/feature/2026-08-12-product-subagent-one-shot-background-tasks.i18n.yaml new file mode 100644 index 0000000000..3d13132e88 --- /dev/null +++ b/.agents/notes/archived/feature/2026-08-12-product-subagent-one-shot-background-tasks.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-08-12-product-subagent-one-shot-background-tasks.md +2026-08-12-product-subagent-one-shot-background-tasks.md: 4138d50ccd8760373e79221f1d122e40f432f4ca +2026-08-12-product-subagent-one-shot-background-tasks.zh.md: 4984be826a1048f519cde048f25f038a067d58f6 diff --git a/.agents/notes/implemented/feature/2026-08-12-product-subagent-one-shot-background-tasks.md b/.agents/notes/archived/feature/2026-08-12-product-subagent-one-shot-background-tasks.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-12-product-subagent-one-shot-background-tasks.md rename to .agents/notes/archived/feature/2026-08-12-product-subagent-one-shot-background-tasks.md index 5e9522f6fa..4138d50ccd 100644 --- a/.agents/notes/implemented/feature/2026-08-12-product-subagent-one-shot-background-tasks.md +++ b/.agents/notes/archived/feature/2026-08-12-product-subagent-one-shot-background-tasks.md @@ -1,6 +1,7 @@ # Agent Note: Product one-shot subagents use generic background Jobs Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-12-product-subagent-one-shot-background-tasks.zh.md) diff --git a/.agents/notes/implemented/feature/2026-08-12-product-subagent-one-shot-background-tasks.zh.md b/.agents/notes/archived/feature/2026-08-12-product-subagent-one-shot-background-tasks.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-12-product-subagent-one-shot-background-tasks.zh.md rename to .agents/notes/archived/feature/2026-08-12-product-subagent-one-shot-background-tasks.zh.md index fdf7fa58e4..4984be826a 100644 --- a/.agents/notes/implemented/feature/2026-08-12-product-subagent-one-shot-background-tasks.zh.md +++ b/.agents/notes/archived/feature/2026-08-12-product-subagent-one-shot-background-tasks.zh.md @@ -1,6 +1,7 @@ # Agent Note: 产品 one-shot subagent 使用通用后台 Job Status: implemented +Archived: 2026-09-04 [English](2026-08-12-product-subagent-one-shot-background-tasks.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-08-12-web-image-intake-and-limits-alignment.i18n.yaml b/.agents/notes/archived/feature/2026-08-12-web-image-intake-and-limits-alignment.i18n.yaml new file mode 100644 index 0000000000..2720455f8c --- /dev/null +++ b/.agents/notes/archived/feature/2026-08-12-web-image-intake-and-limits-alignment.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-08-12-web-image-intake-and-limits-alignment.md +2026-08-12-web-image-intake-and-limits-alignment.md: 516a4922a43907a465716920d40a6490b1b36d66 +2026-08-12-web-image-intake-and-limits-alignment.zh.md: db3485fd6a5c50337d38b342c38e89169aa615da diff --git a/.agents/notes/implemented/feature/2026-08-12-web-image-intake-and-limits-alignment.md b/.agents/notes/archived/feature/2026-08-12-web-image-intake-and-limits-alignment.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-12-web-image-intake-and-limits-alignment.md rename to .agents/notes/archived/feature/2026-08-12-web-image-intake-and-limits-alignment.md index 0bb8cadc8d..516a4922a4 100644 --- a/.agents/notes/implemented/feature/2026-08-12-web-image-intake-and-limits-alignment.md +++ b/.agents/notes/archived/feature/2026-08-12-web-image-intake-and-limits-alignment.md @@ -1,6 +1,7 @@ # Agent Note: Whole-page image drop, projected intake limits, and thumbnail tiling Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-12-web-image-intake-and-limits-alignment.zh.md) diff --git a/.agents/notes/implemented/feature/2026-08-12-web-image-intake-and-limits-alignment.zh.md b/.agents/notes/archived/feature/2026-08-12-web-image-intake-and-limits-alignment.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-12-web-image-intake-and-limits-alignment.zh.md rename to .agents/notes/archived/feature/2026-08-12-web-image-intake-and-limits-alignment.zh.md index fa2c1d83d8..db3485fd6a 100644 --- a/.agents/notes/implemented/feature/2026-08-12-web-image-intake-and-limits-alignment.zh.md +++ b/.agents/notes/archived/feature/2026-08-12-web-image-intake-and-limits-alignment.zh.md @@ -1,6 +1,7 @@ # Agent Note: 整页图片拖放、上限投影预检与缩略图平铺 Status: implemented +Archived: 2026-09-04 [English](2026-08-12-web-image-intake-and-limits-alignment.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-08-13-shared-modal-product-onboarding.i18n.yaml b/.agents/notes/archived/feature/2026-08-13-shared-modal-product-onboarding.i18n.yaml new file mode 100644 index 0000000000..a5f1dbafe3 --- /dev/null +++ b/.agents/notes/archived/feature/2026-08-13-shared-modal-product-onboarding.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-08-13-shared-modal-product-onboarding.md +2026-08-13-shared-modal-product-onboarding.md: 33f4d9149e87d1453ae8a0951d9f4a5e3ce70bea +2026-08-13-shared-modal-product-onboarding.zh.md: 9baaec3ee86635635448ddbd5ebfbe26a273a793 diff --git a/.agents/notes/implemented/feature/2026-08-13-shared-modal-product-onboarding.md b/.agents/notes/archived/feature/2026-08-13-shared-modal-product-onboarding.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-13-shared-modal-product-onboarding.md rename to .agents/notes/archived/feature/2026-08-13-shared-modal-product-onboarding.md index 9f72ee5b4e..33f4d9149e 100644 --- a/.agents/notes/implemented/feature/2026-08-13-shared-modal-product-onboarding.md +++ b/.agents/notes/archived/feature/2026-08-13-shared-modal-product-onboarding.md @@ -1,6 +1,7 @@ # Agent Note: Shared-modal product onboarding Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-13-shared-modal-product-onboarding.zh.md) diff --git a/.agents/notes/implemented/feature/2026-08-13-shared-modal-product-onboarding.zh.md b/.agents/notes/archived/feature/2026-08-13-shared-modal-product-onboarding.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-13-shared-modal-product-onboarding.zh.md rename to .agents/notes/archived/feature/2026-08-13-shared-modal-product-onboarding.zh.md index 867b23202f..9baaec3ee8 100644 --- a/.agents/notes/implemented/feature/2026-08-13-shared-modal-product-onboarding.zh.md +++ b/.agents/notes/archived/feature/2026-08-13-shared-modal-product-onboarding.zh.md @@ -1,6 +1,7 @@ # Agent Note: 共用弹窗的产品引导 Status: implemented +Archived: 2026-09-04 [English](2026-08-13-shared-modal-product-onboarding.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-08-14-web-turn-process-folding.i18n.yaml b/.agents/notes/archived/feature/2026-08-14-web-turn-process-folding.i18n.yaml new file mode 100644 index 0000000000..dbcbe86092 --- /dev/null +++ b/.agents/notes/archived/feature/2026-08-14-web-turn-process-folding.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-08-14-web-turn-process-folding.md +2026-08-14-web-turn-process-folding.md: 6cd139dde26a84c02e74e9ca785f20c5919d6260 +2026-08-14-web-turn-process-folding.zh.md: aae20eaff67c4fc2064c1eb611e7ac57a70dd32a diff --git a/.agents/notes/implemented/feature/2026-08-14-web-turn-process-folding.md b/.agents/notes/archived/feature/2026-08-14-web-turn-process-folding.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-14-web-turn-process-folding.md rename to .agents/notes/archived/feature/2026-08-14-web-turn-process-folding.md index e0d666a0e5..6cd139dde2 100644 --- a/.agents/notes/implemented/feature/2026-08-14-web-turn-process-folding.md +++ b/.agents/notes/archived/feature/2026-08-14-web-turn-process-folding.md @@ -1,6 +1,7 @@ # Agent Note: Web Turn process folding Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-14-web-turn-process-folding.zh.md) diff --git a/.agents/notes/implemented/feature/2026-08-14-web-turn-process-folding.zh.md b/.agents/notes/archived/feature/2026-08-14-web-turn-process-folding.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-14-web-turn-process-folding.zh.md rename to .agents/notes/archived/feature/2026-08-14-web-turn-process-folding.zh.md index cacf7ecfdc..aae20eaff6 100644 --- a/.agents/notes/implemented/feature/2026-08-14-web-turn-process-folding.zh.md +++ b/.agents/notes/archived/feature/2026-08-14-web-turn-process-folding.zh.md @@ -1,6 +1,7 @@ # Agent Note: Web 轮次过程折叠 Status: implemented +Archived: 2026-09-04 [English](2026-08-14-web-turn-process-folding.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-08-17-web-search-multiple-queries.i18n.yaml b/.agents/notes/archived/feature/2026-08-17-web-search-multiple-queries.i18n.yaml new file mode 100644 index 0000000000..ff8003ae59 --- /dev/null +++ b/.agents/notes/archived/feature/2026-08-17-web-search-multiple-queries.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-08-17-web-search-multiple-queries.md +2026-08-17-web-search-multiple-queries.md: fd7553b332f3906f678ab337cfed4c60a072cc6c +2026-08-17-web-search-multiple-queries.zh.md: a16b407418be80c4f002eb931d799aff919fc802 diff --git a/.agents/notes/implemented/feature/2026-08-17-web-search-multiple-queries.md b/.agents/notes/archived/feature/2026-08-17-web-search-multiple-queries.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-17-web-search-multiple-queries.md rename to .agents/notes/archived/feature/2026-08-17-web-search-multiple-queries.md index f0a8bf3d69..fd7553b332 100644 --- a/.agents/notes/implemented/feature/2026-08-17-web-search-multiple-queries.md +++ b/.agents/notes/archived/feature/2026-08-17-web-search-multiple-queries.md @@ -1,6 +1,7 @@ # Agent Note: web_search accepts multiple queries in one call Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-17-web-search-multiple-queries.zh.md) diff --git a/.agents/notes/implemented/feature/2026-08-17-web-search-multiple-queries.zh.md b/.agents/notes/archived/feature/2026-08-17-web-search-multiple-queries.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-17-web-search-multiple-queries.zh.md rename to .agents/notes/archived/feature/2026-08-17-web-search-multiple-queries.zh.md index 5c6be5e20f..a16b407418 100644 --- a/.agents/notes/implemented/feature/2026-08-17-web-search-multiple-queries.zh.md +++ b/.agents/notes/archived/feature/2026-08-17-web-search-multiple-queries.zh.md @@ -1,6 +1,7 @@ # Agent Note: web_search 支持一次传入多个查询 Status: implemented +Archived: 2026-09-04 [English](2026-08-17-web-search-multiple-queries.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-08-17-web-system-prompt-opaque-body.i18n.yaml b/.agents/notes/archived/feature/2026-08-17-web-system-prompt-opaque-body.i18n.yaml new file mode 100644 index 0000000000..78cb189dba --- /dev/null +++ b/.agents/notes/archived/feature/2026-08-17-web-system-prompt-opaque-body.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-08-17-web-system-prompt-opaque-body.md +2026-08-17-web-system-prompt-opaque-body.md: 89a3b83311372d85c751b7d8132350f64676986c +2026-08-17-web-system-prompt-opaque-body.zh.md: 31c298ad8b850f4c1763d646658bd7bd007fa35f diff --git a/.agents/notes/implemented/feature/2026-08-17-web-system-prompt-opaque-body.md b/.agents/notes/archived/feature/2026-08-17-web-system-prompt-opaque-body.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-17-web-system-prompt-opaque-body.md rename to .agents/notes/archived/feature/2026-08-17-web-system-prompt-opaque-body.md index 9b1992dd8e..89a3b83311 100644 --- a/.agents/notes/implemented/feature/2026-08-17-web-system-prompt-opaque-body.md +++ b/.agents/notes/archived/feature/2026-08-17-web-system-prompt-opaque-body.md @@ -1,6 +1,7 @@ # Agent Note: System prompt expands into the opaque context body Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-17-web-system-prompt-opaque-body.zh.md) diff --git a/.agents/notes/implemented/feature/2026-08-17-web-system-prompt-opaque-body.zh.md b/.agents/notes/archived/feature/2026-08-17-web-system-prompt-opaque-body.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-17-web-system-prompt-opaque-body.zh.md rename to .agents/notes/archived/feature/2026-08-17-web-system-prompt-opaque-body.zh.md index 6f2fbba9d3..31c298ad8b 100644 --- a/.agents/notes/implemented/feature/2026-08-17-web-system-prompt-opaque-body.zh.md +++ b/.agents/notes/archived/feature/2026-08-17-web-system-prompt-opaque-body.zh.md @@ -1,6 +1,7 @@ # Agent Note: System prompt expands into the opaque context body Status: implemented +Archived: 2026-09-04 [English](2026-08-17-web-system-prompt-opaque-body.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-08-18-conversation-adaptive-content-width.i18n.yaml b/.agents/notes/archived/feature/2026-08-18-conversation-adaptive-content-width.i18n.yaml new file mode 100644 index 0000000000..12eb1724b7 --- /dev/null +++ b/.agents/notes/archived/feature/2026-08-18-conversation-adaptive-content-width.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-08-18-conversation-adaptive-content-width.md +2026-08-18-conversation-adaptive-content-width.md: 17964f7c79496f451adfa5822def3a2dc1f2e941 +2026-08-18-conversation-adaptive-content-width.zh.md: d2f89cb18db04be75a1d1ae21df69a898e1fe1c0 diff --git a/.agents/notes/implemented/feature/2026-08-18-conversation-adaptive-content-width.md b/.agents/notes/archived/feature/2026-08-18-conversation-adaptive-content-width.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-18-conversation-adaptive-content-width.md rename to .agents/notes/archived/feature/2026-08-18-conversation-adaptive-content-width.md index 9b0e7afbde..17964f7c79 100644 --- a/.agents/notes/implemented/feature/2026-08-18-conversation-adaptive-content-width.md +++ b/.agents/notes/archived/feature/2026-08-18-conversation-adaptive-content-width.md @@ -1,6 +1,7 @@ # Agent Note: Adaptive and drag-resizable conversation content width Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-18-conversation-adaptive-content-width.zh.md) diff --git a/.agents/notes/implemented/feature/2026-08-18-conversation-adaptive-content-width.zh.md b/.agents/notes/archived/feature/2026-08-18-conversation-adaptive-content-width.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-18-conversation-adaptive-content-width.zh.md rename to .agents/notes/archived/feature/2026-08-18-conversation-adaptive-content-width.zh.md index 82273e35ba..d2f89cb18d 100644 --- a/.agents/notes/implemented/feature/2026-08-18-conversation-adaptive-content-width.zh.md +++ b/.agents/notes/archived/feature/2026-08-18-conversation-adaptive-content-width.zh.md @@ -1,6 +1,7 @@ # Agent Note: 会话正文宽度自适应与拖拽调宽 Status: implemented +Archived: 2026-09-04 [English](2026-08-18-conversation-adaptive-content-width.md) | 中文 diff --git a/.agents/notes/implemented/feature/2026-07-31-web-telemetry-default-mount.i18n.yaml b/.agents/notes/archived/feature/2026-08-18-pi-ai-wire-compat-surface.i18n.yaml similarity index 57% rename from .agents/notes/implemented/feature/2026-07-31-web-telemetry-default-mount.i18n.yaml rename to .agents/notes/archived/feature/2026-08-18-pi-ai-wire-compat-surface.i18n.yaml index dd8a8cdb84..301b91ae11 100644 --- a/.agents/notes/implemented/feature/2026-07-31-web-telemetry-default-mount.i18n.yaml +++ b/.agents/notes/archived/feature/2026-08-18-pi-ai-wire-compat-surface.i18n.yaml @@ -1,6 +1,6 @@ # Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-07-31-web-telemetry-default-mount.md -2026-07-31-web-telemetry-default-mount.md: aea90ef928afaa7669df8046fa98f16c575618f0 -2026-07-31-web-telemetry-default-mount.zh.md: 122b7ad593c18cd547ade835827e8903d34da441 +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-08-18-pi-ai-wire-compat-surface.md +2026-08-18-pi-ai-wire-compat-surface.md: bc8bee409caa0c90edd609140b6ce09ef4c84a59 +2026-08-18-pi-ai-wire-compat-surface.zh.md: edf114fd09b59e202dd195d4338b1c59e1312d45 diff --git a/.agents/notes/implemented/feature/2026-08-18-pi-ai-wire-compat-surface.md b/.agents/notes/archived/feature/2026-08-18-pi-ai-wire-compat-surface.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-18-pi-ai-wire-compat-surface.md rename to .agents/notes/archived/feature/2026-08-18-pi-ai-wire-compat-surface.md index 280ce2dd16..bc8bee409c 100644 --- a/.agents/notes/implemented/feature/2026-08-18-pi-ai-wire-compat-surface.md +++ b/.agents/notes/archived/feature/2026-08-18-pi-ai-wire-compat-surface.md @@ -1,6 +1,7 @@ # Agent Note: pi-ai Wire-Compatibility Surface in llm-pi-ai Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-18-pi-ai-wire-compat-surface.zh.md) diff --git a/.agents/notes/implemented/feature/2026-08-18-pi-ai-wire-compat-surface.zh.md b/.agents/notes/archived/feature/2026-08-18-pi-ai-wire-compat-surface.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-18-pi-ai-wire-compat-surface.zh.md rename to .agents/notes/archived/feature/2026-08-18-pi-ai-wire-compat-surface.zh.md index 1a5704dc8c..edf114fd09 100644 --- a/.agents/notes/implemented/feature/2026-08-18-pi-ai-wire-compat-surface.zh.md +++ b/.agents/notes/archived/feature/2026-08-18-pi-ai-wire-compat-surface.zh.md @@ -1,6 +1,7 @@ # Agent Note: pi-ai Wire-Compatibility Surface in llm-pi-ai Status: implemented +Archived: 2026-09-04 [English](2026-08-18-pi-ai-wire-compat-surface.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-08-18-product-subagent-named-instances.i18n.yaml b/.agents/notes/archived/feature/2026-08-18-product-subagent-named-instances.i18n.yaml new file mode 100644 index 0000000000..3c9444ef91 --- /dev/null +++ b/.agents/notes/archived/feature/2026-08-18-product-subagent-named-instances.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-08-18-product-subagent-named-instances.md +2026-08-18-product-subagent-named-instances.md: bc1c3e9515b13c9d6ff22ebe6689709a254e9d03 +2026-08-18-product-subagent-named-instances.zh.md: 3bd2bfe48c66f7be21ea6b860b7178f1950f3cbe diff --git a/.agents/notes/implemented/feature/2026-08-18-product-subagent-named-instances.md b/.agents/notes/archived/feature/2026-08-18-product-subagent-named-instances.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-18-product-subagent-named-instances.md rename to .agents/notes/archived/feature/2026-08-18-product-subagent-named-instances.md index 749267e311..bc1c3e9515 100644 --- a/.agents/notes/implemented/feature/2026-08-18-product-subagent-named-instances.md +++ b/.agents/notes/archived/feature/2026-08-18-product-subagent-named-instances.md @@ -1,6 +1,7 @@ # Agent Note: Product subagent named instances Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-18-product-subagent-named-instances.zh.md) diff --git a/.agents/notes/implemented/feature/2026-08-18-product-subagent-named-instances.zh.md b/.agents/notes/archived/feature/2026-08-18-product-subagent-named-instances.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-18-product-subagent-named-instances.zh.md rename to .agents/notes/archived/feature/2026-08-18-product-subagent-named-instances.zh.md index d39fdd46a3..3bd2bfe48c 100644 --- a/.agents/notes/implemented/feature/2026-08-18-product-subagent-named-instances.zh.md +++ b/.agents/notes/archived/feature/2026-08-18-product-subagent-named-instances.zh.md @@ -1,6 +1,7 @@ # Agent Note: 产品 subagent 命名实例 Status: implemented +Archived: 2026-09-04 [English](2026-08-18-product-subagent-named-instances.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-08-18-settings-font-size-control.i18n.yaml b/.agents/notes/archived/feature/2026-08-18-settings-font-size-control.i18n.yaml new file mode 100644 index 0000000000..5660dc1942 --- /dev/null +++ b/.agents/notes/archived/feature/2026-08-18-settings-font-size-control.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-08-18-settings-font-size-control.md +2026-08-18-settings-font-size-control.md: d0b2ae847aeea8ed249ad452342b5d3e3c5a6766 +2026-08-18-settings-font-size-control.zh.md: 11624f5317053c333491d4808ba5f497cf6a579a diff --git a/.agents/notes/implemented/feature/2026-08-18-settings-font-size-control.md b/.agents/notes/archived/feature/2026-08-18-settings-font-size-control.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-18-settings-font-size-control.md rename to .agents/notes/archived/feature/2026-08-18-settings-font-size-control.md index 778893a2c0..d0b2ae847a 100644 --- a/.agents/notes/implemented/feature/2026-08-18-settings-font-size-control.md +++ b/.agents/notes/archived/feature/2026-08-18-settings-font-size-control.md @@ -1,6 +1,7 @@ # Agent Note: Settings-backed conversation content font size Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-18-settings-font-size-control.zh.md) diff --git a/.agents/notes/implemented/feature/2026-08-18-settings-font-size-control.zh.md b/.agents/notes/archived/feature/2026-08-18-settings-font-size-control.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-18-settings-font-size-control.zh.md rename to .agents/notes/archived/feature/2026-08-18-settings-font-size-control.zh.md index c653e6d6a6..11624f5317 100644 --- a/.agents/notes/implemented/feature/2026-08-18-settings-font-size-control.zh.md +++ b/.agents/notes/archived/feature/2026-08-18-settings-font-size-control.zh.md @@ -1,6 +1,7 @@ # Agent Note: Settings 支撑的会话正文字号 Status: implemented +Archived: 2026-09-04 [English](2026-08-18-settings-font-size-control.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-08-19-web-markdown-wide-table-view.i18n.yaml b/.agents/notes/archived/feature/2026-08-19-web-markdown-wide-table-view.i18n.yaml new file mode 100644 index 0000000000..39b0f1c65c --- /dev/null +++ b/.agents/notes/archived/feature/2026-08-19-web-markdown-wide-table-view.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-08-19-web-markdown-wide-table-view.md +2026-08-19-web-markdown-wide-table-view.md: df89f8f2024321c1aef8cc175f251e91a6a4a014 +2026-08-19-web-markdown-wide-table-view.zh.md: 047e30d310f6179c48970ddc1588785524ff613c diff --git a/.agents/notes/implemented/feature/2026-08-19-web-markdown-wide-table-view.md b/.agents/notes/archived/feature/2026-08-19-web-markdown-wide-table-view.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-19-web-markdown-wide-table-view.md rename to .agents/notes/archived/feature/2026-08-19-web-markdown-wide-table-view.md index fc025f6755..df89f8f202 100644 --- a/.agents/notes/implemented/feature/2026-08-19-web-markdown-wide-table-view.md +++ b/.agents/notes/archived/feature/2026-08-19-web-markdown-wide-table-view.md @@ -1,6 +1,7 @@ # Agent Note: Web markdown tables fill the column by count, wide ones break out Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-19-web-markdown-wide-table-view.zh.md) diff --git a/.agents/notes/implemented/feature/2026-08-19-web-markdown-wide-table-view.zh.md b/.agents/notes/archived/feature/2026-08-19-web-markdown-wide-table-view.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-19-web-markdown-wide-table-view.zh.md rename to .agents/notes/archived/feature/2026-08-19-web-markdown-wide-table-view.zh.md index 1c3049d69c..047e30d310 100644 --- a/.agents/notes/implemented/feature/2026-08-19-web-markdown-wide-table-view.zh.md +++ b/.agents/notes/archived/feature/2026-08-19-web-markdown-wide-table-view.zh.md @@ -1,6 +1,7 @@ # Agent Note: Web markdown 表格按列数填充消息列,宽表突破列宽 Status: implemented +Archived: 2026-09-04 [English](2026-08-19-web-markdown-wide-table-view.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-08-20-multiline-question-answer-field.i18n.yaml b/.agents/notes/archived/feature/2026-08-20-multiline-question-answer-field.i18n.yaml new file mode 100644 index 0000000000..e23a53479b --- /dev/null +++ b/.agents/notes/archived/feature/2026-08-20-multiline-question-answer-field.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-08-20-multiline-question-answer-field.md +2026-08-20-multiline-question-answer-field.md: 2445c48ad08b9a8d9feefe0ccf24f187f51cdd4f +2026-08-20-multiline-question-answer-field.zh.md: bd141a6239f0c777ccae98ca6593a9860fb57f85 diff --git a/.agents/notes/implemented/feature/2026-08-20-multiline-question-answer-field.md b/.agents/notes/archived/feature/2026-08-20-multiline-question-answer-field.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-20-multiline-question-answer-field.md rename to .agents/notes/archived/feature/2026-08-20-multiline-question-answer-field.md index 207a7e5303..2445c48ad0 100644 --- a/.agents/notes/implemented/feature/2026-08-20-multiline-question-answer-field.md +++ b/.agents/notes/archived/feature/2026-08-20-multiline-question-answer-field.md @@ -1,6 +1,7 @@ # Agent Note: Multi-line answers in the question composer Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-20-multiline-question-answer-field.zh.md) diff --git a/.agents/notes/implemented/feature/2026-08-20-multiline-question-answer-field.zh.md b/.agents/notes/archived/feature/2026-08-20-multiline-question-answer-field.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-20-multiline-question-answer-field.zh.md rename to .agents/notes/archived/feature/2026-08-20-multiline-question-answer-field.zh.md index 3c7644675a..bd141a6239 100644 --- a/.agents/notes/implemented/feature/2026-08-20-multiline-question-answer-field.zh.md +++ b/.agents/notes/archived/feature/2026-08-20-multiline-question-answer-field.zh.md @@ -1,6 +1,7 @@ # Agent Note: Multi-line answers in the question composer Status: implemented +Archived: 2026-09-04 [English](2026-08-20-multiline-question-answer-field.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-08-20-tool-card-image-results.i18n.yaml b/.agents/notes/archived/feature/2026-08-20-tool-card-image-results.i18n.yaml new file mode 100644 index 0000000000..9e46252573 --- /dev/null +++ b/.agents/notes/archived/feature/2026-08-20-tool-card-image-results.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-08-20-tool-card-image-results.md +2026-08-20-tool-card-image-results.md: 49168f741ce5d4f31ca08ad17eb2f8410a72d45c +2026-08-20-tool-card-image-results.zh.md: 957fa4fbfdecfdc0b1d8152511566041d6862b4f diff --git a/.agents/notes/implemented/feature/2026-08-20-tool-card-image-results.md b/.agents/notes/archived/feature/2026-08-20-tool-card-image-results.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-20-tool-card-image-results.md rename to .agents/notes/archived/feature/2026-08-20-tool-card-image-results.md index 7659bc4685..49168f741c 100644 --- a/.agents/notes/implemented/feature/2026-08-20-tool-card-image-results.md +++ b/.agents/notes/archived/feature/2026-08-20-tool-card-image-results.md @@ -1,6 +1,7 @@ # Agent Note: Tool-card image results Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-20-tool-card-image-results.zh.md) diff --git a/.agents/notes/implemented/feature/2026-08-20-tool-card-image-results.zh.md b/.agents/notes/archived/feature/2026-08-20-tool-card-image-results.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-20-tool-card-image-results.zh.md rename to .agents/notes/archived/feature/2026-08-20-tool-card-image-results.zh.md index b18f0c42c6..957fa4fbfd 100644 --- a/.agents/notes/implemented/feature/2026-08-20-tool-card-image-results.zh.md +++ b/.agents/notes/archived/feature/2026-08-20-tool-card-image-results.zh.md @@ -1,6 +1,7 @@ # Agent Note: 工具卡片的图像结果 Status: implemented +Archived: 2026-09-04 [English](2026-08-20-tool-card-image-results.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-08-20-web-streaming-fence-highlight.i18n.yaml b/.agents/notes/archived/feature/2026-08-20-web-streaming-fence-highlight.i18n.yaml new file mode 100644 index 0000000000..42109d2137 --- /dev/null +++ b/.agents/notes/archived/feature/2026-08-20-web-streaming-fence-highlight.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-08-20-web-streaming-fence-highlight.md +2026-08-20-web-streaming-fence-highlight.md: 096e319c1573ec6f382a08772a181c74b37d14f5 +2026-08-20-web-streaming-fence-highlight.zh.md: fd113afbb8e73778e42286b097d0861afd33649e diff --git a/.agents/notes/implemented/feature/2026-08-20-web-streaming-fence-highlight.md b/.agents/notes/archived/feature/2026-08-20-web-streaming-fence-highlight.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-20-web-streaming-fence-highlight.md rename to .agents/notes/archived/feature/2026-08-20-web-streaming-fence-highlight.md index aa44a8c7ea..096e319c15 100644 --- a/.agents/notes/implemented/feature/2026-08-20-web-streaming-fence-highlight.md +++ b/.agents/notes/archived/feature/2026-08-20-web-streaming-fence-highlight.md @@ -1,6 +1,7 @@ # Agent Note: Streaming fences highlight incrementally Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-20-web-streaming-fence-highlight.zh.md) diff --git a/.agents/notes/implemented/feature/2026-08-20-web-streaming-fence-highlight.zh.md b/.agents/notes/archived/feature/2026-08-20-web-streaming-fence-highlight.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-20-web-streaming-fence-highlight.zh.md rename to .agents/notes/archived/feature/2026-08-20-web-streaming-fence-highlight.zh.md index 88bae36928..fd113afbb8 100644 --- a/.agents/notes/implemented/feature/2026-08-20-web-streaming-fence-highlight.zh.md +++ b/.agents/notes/archived/feature/2026-08-20-web-streaming-fence-highlight.zh.md @@ -1,6 +1,7 @@ # Agent Note: 流式围栏代码增量高亮 Status: implemented +Archived: 2026-09-04 [English](2026-08-20-web-streaming-fence-highlight.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-08-21-headless-reasoning-progress.i18n.yaml b/.agents/notes/archived/feature/2026-08-21-headless-reasoning-progress.i18n.yaml new file mode 100644 index 0000000000..ff6da150da --- /dev/null +++ b/.agents/notes/archived/feature/2026-08-21-headless-reasoning-progress.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-08-21-headless-reasoning-progress.md +2026-08-21-headless-reasoning-progress.md: 499a6c4f583a7ed16eac52a1539bebcd5c6938f4 +2026-08-21-headless-reasoning-progress.zh.md: a679f2d68db900e704b9b757a386accf85429ef7 diff --git a/.agents/notes/implemented/feature/2026-08-21-headless-reasoning-progress.md b/.agents/notes/archived/feature/2026-08-21-headless-reasoning-progress.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-21-headless-reasoning-progress.md rename to .agents/notes/archived/feature/2026-08-21-headless-reasoning-progress.md index 7486841083..499a6c4f58 100644 --- a/.agents/notes/implemented/feature/2026-08-21-headless-reasoning-progress.md +++ b/.agents/notes/archived/feature/2026-08-21-headless-reasoning-progress.md @@ -1,6 +1,7 @@ # Agent Note: headless streams provider reasoning to stderr Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-21-headless-reasoning-progress.zh.md) diff --git a/.agents/notes/implemented/feature/2026-08-21-headless-reasoning-progress.zh.md b/.agents/notes/archived/feature/2026-08-21-headless-reasoning-progress.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-21-headless-reasoning-progress.zh.md rename to .agents/notes/archived/feature/2026-08-21-headless-reasoning-progress.zh.md index a03a380b7d..a679f2d68d 100644 --- a/.agents/notes/implemented/feature/2026-08-21-headless-reasoning-progress.zh.md +++ b/.agents/notes/archived/feature/2026-08-21-headless-reasoning-progress.zh.md @@ -1,6 +1,7 @@ # Agent Note: headless 将提供方推理流式写入 stderr Status: implemented +Archived: 2026-09-04 [English](2026-08-21-headless-reasoning-progress.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-08-21-model-readable-image-paths.i18n.yaml b/.agents/notes/archived/feature/2026-08-21-model-readable-image-paths.i18n.yaml new file mode 100644 index 0000000000..a21ace0355 --- /dev/null +++ b/.agents/notes/archived/feature/2026-08-21-model-readable-image-paths.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-08-21-model-readable-image-paths.md +2026-08-21-model-readable-image-paths.md: 123ac91021051afb0cba55ddbe5302b49698c666 +2026-08-21-model-readable-image-paths.zh.md: be34bf3e56ecaae1ef1994abf9ee3176dedb9510 diff --git a/.agents/notes/implemented/feature/2026-08-21-model-readable-image-paths.md b/.agents/notes/archived/feature/2026-08-21-model-readable-image-paths.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-21-model-readable-image-paths.md rename to .agents/notes/archived/feature/2026-08-21-model-readable-image-paths.md index 728d25ee84..123ac91021 100644 --- a/.agents/notes/implemented/feature/2026-08-21-model-readable-image-paths.md +++ b/.agents/notes/archived/feature/2026-08-21-model-readable-image-paths.md @@ -1,6 +1,7 @@ # Agent Note: Execution-world image paths in model requests Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-21-model-readable-image-paths.zh.md) diff --git a/.agents/notes/implemented/feature/2026-08-21-model-readable-image-paths.zh.md b/.agents/notes/archived/feature/2026-08-21-model-readable-image-paths.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-21-model-readable-image-paths.zh.md rename to .agents/notes/archived/feature/2026-08-21-model-readable-image-paths.zh.md index 9d2733aff7..be34bf3e56 100644 --- a/.agents/notes/implemented/feature/2026-08-21-model-readable-image-paths.zh.md +++ b/.agents/notes/archived/feature/2026-08-21-model-readable-image-paths.zh.md @@ -1,6 +1,7 @@ # Agent Note: 在模型请求中提供执行环境图片路径 Status: implemented +Archived: 2026-09-04 [English](2026-08-21-model-readable-image-paths.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-08-21-out-of-process-subagent-minimal-diagnostics.i18n.yaml b/.agents/notes/archived/feature/2026-08-21-out-of-process-subagent-minimal-diagnostics.i18n.yaml new file mode 100644 index 0000000000..340a830f65 --- /dev/null +++ b/.agents/notes/archived/feature/2026-08-21-out-of-process-subagent-minimal-diagnostics.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-08-21-out-of-process-subagent-minimal-diagnostics.md +2026-08-21-out-of-process-subagent-minimal-diagnostics.md: 24fc06064f24fe0ff6a88d5da590f2ca7f90af02 +2026-08-21-out-of-process-subagent-minimal-diagnostics.zh.md: 29bdbd00cb47f06310e5ee90b6867e69bfbd1038 diff --git a/.agents/notes/implemented/feature/2026-08-21-out-of-process-subagent-minimal-diagnostics.md b/.agents/notes/archived/feature/2026-08-21-out-of-process-subagent-minimal-diagnostics.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-21-out-of-process-subagent-minimal-diagnostics.md rename to .agents/notes/archived/feature/2026-08-21-out-of-process-subagent-minimal-diagnostics.md index 82f2d2b131..24fc06064f 100644 --- a/.agents/notes/implemented/feature/2026-08-21-out-of-process-subagent-minimal-diagnostics.md +++ b/.agents/notes/archived/feature/2026-08-21-out-of-process-subagent-minimal-diagnostics.md @@ -1,6 +1,7 @@ # Agent Note: Out-of-process subagents expose minimal actionable diagnostics Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-21-out-of-process-subagent-minimal-diagnostics.zh.md) diff --git a/.agents/notes/implemented/feature/2026-08-21-out-of-process-subagent-minimal-diagnostics.zh.md b/.agents/notes/archived/feature/2026-08-21-out-of-process-subagent-minimal-diagnostics.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-21-out-of-process-subagent-minimal-diagnostics.zh.md rename to .agents/notes/archived/feature/2026-08-21-out-of-process-subagent-minimal-diagnostics.zh.md index 4cf5a1ebef..29bdbd00cb 100644 --- a/.agents/notes/implemented/feature/2026-08-21-out-of-process-subagent-minimal-diagnostics.zh.md +++ b/.agents/notes/archived/feature/2026-08-21-out-of-process-subagent-minimal-diagnostics.zh.md @@ -1,6 +1,7 @@ # Agent Note: 进程外 subagent 公开最小可行动诊断 Status: implemented +Archived: 2026-09-04 [English](2026-08-21-out-of-process-subagent-minimal-diagnostics.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-08-24-folder-reference-pick-vs-drill.i18n.yaml b/.agents/notes/archived/feature/2026-08-24-folder-reference-pick-vs-drill.i18n.yaml new file mode 100644 index 0000000000..c8327b99b1 --- /dev/null +++ b/.agents/notes/archived/feature/2026-08-24-folder-reference-pick-vs-drill.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-08-24-folder-reference-pick-vs-drill.md +2026-08-24-folder-reference-pick-vs-drill.md: 18e994784f4148e306a98bfb457c43a67565a60e +2026-08-24-folder-reference-pick-vs-drill.zh.md: c752db974b93011f89f1c3778b77b6ccb4186b8b diff --git a/.agents/notes/implemented/feature/2026-08-24-folder-reference-pick-vs-drill.md b/.agents/notes/archived/feature/2026-08-24-folder-reference-pick-vs-drill.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-24-folder-reference-pick-vs-drill.md rename to .agents/notes/archived/feature/2026-08-24-folder-reference-pick-vs-drill.md index de5d4930eb..18e994784f 100644 --- a/.agents/notes/implemented/feature/2026-08-24-folder-reference-pick-vs-drill.md +++ b/.agents/notes/archived/feature/2026-08-24-folder-reference-pick-vs-drill.md @@ -1,6 +1,7 @@ # Agent Note: Folder references settle on pick; descent moves to an explicit drill verb Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-24-folder-reference-pick-vs-drill.zh.md) diff --git a/.agents/notes/implemented/feature/2026-08-24-folder-reference-pick-vs-drill.zh.md b/.agents/notes/archived/feature/2026-08-24-folder-reference-pick-vs-drill.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-24-folder-reference-pick-vs-drill.zh.md rename to .agents/notes/archived/feature/2026-08-24-folder-reference-pick-vs-drill.zh.md index 773e5b2b7c..c752db974b 100644 --- a/.agents/notes/implemented/feature/2026-08-24-folder-reference-pick-vs-drill.zh.md +++ b/.agents/notes/archived/feature/2026-08-24-folder-reference-pick-vs-drill.zh.md @@ -1,6 +1,7 @@ # Agent Note: 文件夹引用 pick 即选定;下钻移交给显式 drill 动词 Status: implemented +Archived: 2026-09-04 [English](2026-08-24-folder-reference-pick-vs-drill.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-08-24-route-priced-image-request-pressure.i18n.yaml b/.agents/notes/archived/feature/2026-08-24-route-priced-image-request-pressure.i18n.yaml new file mode 100644 index 0000000000..ba7d92e3de --- /dev/null +++ b/.agents/notes/archived/feature/2026-08-24-route-priced-image-request-pressure.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-08-24-route-priced-image-request-pressure.md +2026-08-24-route-priced-image-request-pressure.md: 691349467651c7bc7686eb47bb28abd771f37b6c +2026-08-24-route-priced-image-request-pressure.zh.md: d6e9689942f6eb378ca05bef0f7cbc0bd18af712 diff --git a/.agents/notes/implemented/feature/2026-08-24-route-priced-image-request-pressure.md b/.agents/notes/archived/feature/2026-08-24-route-priced-image-request-pressure.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-24-route-priced-image-request-pressure.md rename to .agents/notes/archived/feature/2026-08-24-route-priced-image-request-pressure.md index 45a2921173..6913494676 100644 --- a/.agents/notes/implemented/feature/2026-08-24-route-priced-image-request-pressure.md +++ b/.agents/notes/archived/feature/2026-08-24-route-priced-image-request-pressure.md @@ -1,6 +1,7 @@ # Agent Note: Route-priced image request pressure Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-24-route-priced-image-request-pressure.zh.md) diff --git a/.agents/notes/implemented/feature/2026-08-24-route-priced-image-request-pressure.zh.md b/.agents/notes/archived/feature/2026-08-24-route-priced-image-request-pressure.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-24-route-priced-image-request-pressure.zh.md rename to .agents/notes/archived/feature/2026-08-24-route-priced-image-request-pressure.zh.md index cf005a3ee3..d6e9689942 100644 --- a/.agents/notes/implemented/feature/2026-08-24-route-priced-image-request-pressure.zh.md +++ b/.agents/notes/archived/feature/2026-08-24-route-priced-image-request-pressure.zh.md @@ -1,6 +1,7 @@ # Agent Note: 按路由定价的图片请求压力 Status: implemented +Archived: 2026-09-04 [English](2026-08-24-route-priced-image-request-pressure.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-08-24-trajectory-image-attachments.i18n.yaml b/.agents/notes/archived/feature/2026-08-24-trajectory-image-attachments.i18n.yaml new file mode 100644 index 0000000000..0e644d5fed --- /dev/null +++ b/.agents/notes/archived/feature/2026-08-24-trajectory-image-attachments.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-08-24-trajectory-image-attachments.md +2026-08-24-trajectory-image-attachments.md: be35b762dba6ed35ada83dc0d24e9c6e46c84ecc +2026-08-24-trajectory-image-attachments.zh.md: 5e28d0de4b20ce4fcb6599d6b8202c8998faf7c1 diff --git a/.agents/notes/implemented/feature/2026-08-24-trajectory-image-attachments.md b/.agents/notes/archived/feature/2026-08-24-trajectory-image-attachments.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-24-trajectory-image-attachments.md rename to .agents/notes/archived/feature/2026-08-24-trajectory-image-attachments.md index 6f89840a7d..be35b762db 100644 --- a/.agents/notes/implemented/feature/2026-08-24-trajectory-image-attachments.md +++ b/.agents/notes/archived/feature/2026-08-24-trajectory-image-attachments.md @@ -1,6 +1,7 @@ # Agent Note: Trajectory durable image attachments Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-24-trajectory-image-attachments.zh.md) diff --git a/.agents/notes/implemented/feature/2026-08-24-trajectory-image-attachments.zh.md b/.agents/notes/archived/feature/2026-08-24-trajectory-image-attachments.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-24-trajectory-image-attachments.zh.md rename to .agents/notes/archived/feature/2026-08-24-trajectory-image-attachments.zh.md index f1e8634639..5e28d0de4b 100644 --- a/.agents/notes/implemented/feature/2026-08-24-trajectory-image-attachments.zh.md +++ b/.agents/notes/archived/feature/2026-08-24-trajectory-image-attachments.zh.md @@ -1,6 +1,7 @@ # Agent Note: Trajectory 持久化图片附件 Status: implemented +Archived: 2026-09-04 [English](2026-08-24-trajectory-image-attachments.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-08-24-web-per-turn-token-usage.i18n.yaml b/.agents/notes/archived/feature/2026-08-24-web-per-turn-token-usage.i18n.yaml new file mode 100644 index 0000000000..f0e41eb8ff --- /dev/null +++ b/.agents/notes/archived/feature/2026-08-24-web-per-turn-token-usage.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-08-24-web-per-turn-token-usage.md +2026-08-24-web-per-turn-token-usage.md: eb3c82e5c0fe188566cbccbdb8c0ed1c361ed73e +2026-08-24-web-per-turn-token-usage.zh.md: ea8b57a50dc9c77055c5ecd25e62c125c42a9a7a diff --git a/.agents/notes/implemented/feature/2026-08-24-web-per-turn-token-usage.md b/.agents/notes/archived/feature/2026-08-24-web-per-turn-token-usage.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-24-web-per-turn-token-usage.md rename to .agents/notes/archived/feature/2026-08-24-web-per-turn-token-usage.md index 91aab0f2c2..eb3c82e5c0 100644 --- a/.agents/notes/implemented/feature/2026-08-24-web-per-turn-token-usage.md +++ b/.agents/notes/archived/feature/2026-08-24-web-per-turn-token-usage.md @@ -1,6 +1,7 @@ # Agent Note: Exact Web per-Turn token usage Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-24-web-per-turn-token-usage.zh.md) diff --git a/.agents/notes/implemented/feature/2026-08-24-web-per-turn-token-usage.zh.md b/.agents/notes/archived/feature/2026-08-24-web-per-turn-token-usage.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-24-web-per-turn-token-usage.zh.md rename to .agents/notes/archived/feature/2026-08-24-web-per-turn-token-usage.zh.md index f9c424fa0f..ea8b57a50d 100644 --- a/.agents/notes/implemented/feature/2026-08-24-web-per-turn-token-usage.zh.md +++ b/.agents/notes/archived/feature/2026-08-24-web-per-turn-token-usage.zh.md @@ -1,6 +1,7 @@ # Agent Note: Web 单轮次精确 token 用量 Status: implemented +Archived: 2026-09-04 [English](2026-08-24-web-per-turn-token-usage.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-08-25-loaded-turn-chat-navigation.i18n.yaml b/.agents/notes/archived/feature/2026-08-25-loaded-turn-chat-navigation.i18n.yaml new file mode 100644 index 0000000000..7f6312ded3 --- /dev/null +++ b/.agents/notes/archived/feature/2026-08-25-loaded-turn-chat-navigation.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-08-25-loaded-turn-chat-navigation.md +2026-08-25-loaded-turn-chat-navigation.md: 514456c13e97596c6b818846a91d4a040d0844f6 +2026-08-25-loaded-turn-chat-navigation.zh.md: 9344a9dba599baf99ae2115be3a55d9f2526388a diff --git a/.agents/notes/implemented/feature/2026-08-25-loaded-turn-chat-navigation.md b/.agents/notes/archived/feature/2026-08-25-loaded-turn-chat-navigation.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-25-loaded-turn-chat-navigation.md rename to .agents/notes/archived/feature/2026-08-25-loaded-turn-chat-navigation.md index b01e64d23f..514456c13e 100644 --- a/.agents/notes/implemented/feature/2026-08-25-loaded-turn-chat-navigation.md +++ b/.agents/notes/archived/feature/2026-08-25-loaded-turn-chat-navigation.md @@ -1,6 +1,7 @@ # Agent Note: Loaded-Turn chat navigation Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-25-loaded-turn-chat-navigation.zh.md) diff --git a/.agents/notes/implemented/feature/2026-08-25-loaded-turn-chat-navigation.zh.md b/.agents/notes/archived/feature/2026-08-25-loaded-turn-chat-navigation.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-25-loaded-turn-chat-navigation.zh.md rename to .agents/notes/archived/feature/2026-08-25-loaded-turn-chat-navigation.zh.md index cb481e5ca2..9344a9dba5 100644 --- a/.agents/notes/implemented/feature/2026-08-25-loaded-turn-chat-navigation.zh.md +++ b/.agents/notes/archived/feature/2026-08-25-loaded-turn-chat-navigation.zh.md @@ -1,6 +1,7 @@ # Agent Note: 已加载 Turn 的聊天导航 Status: implemented +Archived: 2026-09-04 [English](2026-08-25-loaded-turn-chat-navigation.md) | 中文 diff --git a/.agents/notes/implemented/simplification/2026-06-19-drop-mutable-session-summary.i18n.yaml b/.agents/notes/archived/feature/2026-08-26-web-trigger-menu-presentation-polish.i18n.yaml similarity index 54% rename from .agents/notes/implemented/simplification/2026-06-19-drop-mutable-session-summary.i18n.yaml rename to .agents/notes/archived/feature/2026-08-26-web-trigger-menu-presentation-polish.i18n.yaml index fbde7aa853..7f8a0a9e4c 100644 --- a/.agents/notes/implemented/simplification/2026-06-19-drop-mutable-session-summary.i18n.yaml +++ b/.agents/notes/archived/feature/2026-08-26-web-trigger-menu-presentation-polish.i18n.yaml @@ -1,6 +1,6 @@ # Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/simplification/2026-06-19-drop-mutable-session-summary.md -2026-06-19-drop-mutable-session-summary.md: b93566914a490b5054b865e51a8fda21925be1b5 -2026-06-19-drop-mutable-session-summary.zh.md: 9a36ba6f20e38a571099372c47588024cfea4853 +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-08-26-web-trigger-menu-presentation-polish.md +2026-08-26-web-trigger-menu-presentation-polish.md: ff5903f3118b9ea8a4b1fe8c0fae063c275212d5 +2026-08-26-web-trigger-menu-presentation-polish.zh.md: e735fa1d8185741dec810972ef5431e7ef9edbde diff --git a/.agents/notes/implemented/feature/2026-08-26-web-trigger-menu-presentation-polish.md b/.agents/notes/archived/feature/2026-08-26-web-trigger-menu-presentation-polish.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-26-web-trigger-menu-presentation-polish.md rename to .agents/notes/archived/feature/2026-08-26-web-trigger-menu-presentation-polish.md index 07417b29e3..ff5903f311 100644 --- a/.agents/notes/implemented/feature/2026-08-26-web-trigger-menu-presentation-polish.md +++ b/.agents/notes/archived/feature/2026-08-26-web-trigger-menu-presentation-polish.md @@ -1,6 +1,7 @@ # Agent Note: Web trigger menu presentation polish Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-26-web-trigger-menu-presentation-polish.zh.md) diff --git a/.agents/notes/implemented/feature/2026-08-26-web-trigger-menu-presentation-polish.zh.md b/.agents/notes/archived/feature/2026-08-26-web-trigger-menu-presentation-polish.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-26-web-trigger-menu-presentation-polish.zh.md rename to .agents/notes/archived/feature/2026-08-26-web-trigger-menu-presentation-polish.zh.md index 2f03146151..e735fa1d81 100644 --- a/.agents/notes/implemented/feature/2026-08-26-web-trigger-menu-presentation-polish.zh.md +++ b/.agents/notes/archived/feature/2026-08-26-web-trigger-menu-presentation-polish.zh.md @@ -1,6 +1,7 @@ # Agent Note: Web 触发菜单呈现打磨 Status: implemented +Archived: 2026-09-04 [English](2026-08-26-web-trigger-menu-presentation-polish.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-08-27-web-at-mention-discovery-and-row-content.i18n.yaml b/.agents/notes/archived/feature/2026-08-27-web-at-mention-discovery-and-row-content.i18n.yaml new file mode 100644 index 0000000000..9bc5ccda35 --- /dev/null +++ b/.agents/notes/archived/feature/2026-08-27-web-at-mention-discovery-and-row-content.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-08-27-web-at-mention-discovery-and-row-content.md +2026-08-27-web-at-mention-discovery-and-row-content.md: b668105c8bdca4df829e07fb702f8ab401c8a3ae +2026-08-27-web-at-mention-discovery-and-row-content.zh.md: f2c5bb02719fd82a4f03e67b793cf1d72f68364e diff --git a/.agents/notes/implemented/feature/2026-08-27-web-at-mention-discovery-and-row-content.md b/.agents/notes/archived/feature/2026-08-27-web-at-mention-discovery-and-row-content.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-27-web-at-mention-discovery-and-row-content.md rename to .agents/notes/archived/feature/2026-08-27-web-at-mention-discovery-and-row-content.md index defe3eaffb..b668105c8b 100644 --- a/.agents/notes/implemented/feature/2026-08-27-web-at-mention-discovery-and-row-content.md +++ b/.agents/notes/archived/feature/2026-08-27-web-at-mention-discovery-and-row-content.md @@ -1,6 +1,7 @@ # Agent Note: Web @ mention discovery cost and row content Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-27-web-at-mention-discovery-and-row-content.zh.md) diff --git a/.agents/notes/implemented/feature/2026-08-27-web-at-mention-discovery-and-row-content.zh.md b/.agents/notes/archived/feature/2026-08-27-web-at-mention-discovery-and-row-content.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-27-web-at-mention-discovery-and-row-content.zh.md rename to .agents/notes/archived/feature/2026-08-27-web-at-mention-discovery-and-row-content.zh.md index b730ce64ef..f2c5bb0271 100644 --- a/.agents/notes/implemented/feature/2026-08-27-web-at-mention-discovery-and-row-content.zh.md +++ b/.agents/notes/archived/feature/2026-08-27-web-at-mention-discovery-and-row-content.zh.md @@ -1,6 +1,7 @@ # Agent Note: Web @ mention 的发现成本与行内容 Status: implemented +Archived: 2026-09-04 [English](2026-08-27-web-at-mention-discovery-and-row-content.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-08-28-web-connection-recovery-control.i18n.yaml b/.agents/notes/archived/feature/2026-08-28-web-connection-recovery-control.i18n.yaml new file mode 100644 index 0000000000..eb076623f6 --- /dev/null +++ b/.agents/notes/archived/feature/2026-08-28-web-connection-recovery-control.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-08-28-web-connection-recovery-control.md +2026-08-28-web-connection-recovery-control.md: 22baf100f4cdc12054b8f1b06150abf6e5a43a29 +2026-08-28-web-connection-recovery-control.zh.md: 748c8325d5da15299517c54cce72a18639da3f86 diff --git a/.agents/notes/implemented/feature/2026-08-28-web-connection-recovery-control.md b/.agents/notes/archived/feature/2026-08-28-web-connection-recovery-control.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-28-web-connection-recovery-control.md rename to .agents/notes/archived/feature/2026-08-28-web-connection-recovery-control.md index 649c840b20..22baf100f4 100644 --- a/.agents/notes/implemented/feature/2026-08-28-web-connection-recovery-control.md +++ b/.agents/notes/archived/feature/2026-08-28-web-connection-recovery-control.md @@ -1,6 +1,7 @@ # Agent Note: Web connection recovery control Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-28-web-connection-recovery-control.zh.md) diff --git a/.agents/notes/implemented/feature/2026-08-28-web-connection-recovery-control.zh.md b/.agents/notes/archived/feature/2026-08-28-web-connection-recovery-control.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-28-web-connection-recovery-control.zh.md rename to .agents/notes/archived/feature/2026-08-28-web-connection-recovery-control.zh.md index 5d68c6acff..748c8325d5 100644 --- a/.agents/notes/implemented/feature/2026-08-28-web-connection-recovery-control.zh.md +++ b/.agents/notes/archived/feature/2026-08-28-web-connection-recovery-control.zh.md @@ -1,6 +1,7 @@ # Agent Note: Web 连接恢复控件 Status: implemented +Archived: 2026-09-04 [English](2026-08-28-web-connection-recovery-control.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-08-28-web-turn-stat-pills.i18n.yaml b/.agents/notes/archived/feature/2026-08-28-web-turn-stat-pills.i18n.yaml new file mode 100644 index 0000000000..19b0217c5e --- /dev/null +++ b/.agents/notes/archived/feature/2026-08-28-web-turn-stat-pills.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-08-28-web-turn-stat-pills.md +2026-08-28-web-turn-stat-pills.md: 9d4642f14ce8214167a038b43b5cc9c17ea16558 +2026-08-28-web-turn-stat-pills.zh.md: 7010048cb9e2603c2a08977d076ae4069f9a1bd4 diff --git a/.agents/notes/implemented/feature/2026-08-28-web-turn-stat-pills.md b/.agents/notes/archived/feature/2026-08-28-web-turn-stat-pills.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-28-web-turn-stat-pills.md rename to .agents/notes/archived/feature/2026-08-28-web-turn-stat-pills.md index 2661c228b9..9d4642f14c 100644 --- a/.agents/notes/implemented/feature/2026-08-28-web-turn-stat-pills.md +++ b/.agents/notes/archived/feature/2026-08-28-web-turn-stat-pills.md @@ -1,6 +1,7 @@ # Agent Note: Turn-tail stat pills with anchored dialogs Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-28-web-turn-stat-pills.zh.md) diff --git a/.agents/notes/implemented/feature/2026-08-28-web-turn-stat-pills.zh.md b/.agents/notes/archived/feature/2026-08-28-web-turn-stat-pills.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-28-web-turn-stat-pills.zh.md rename to .agents/notes/archived/feature/2026-08-28-web-turn-stat-pills.zh.md index 7038781996..7010048cb9 100644 --- a/.agents/notes/implemented/feature/2026-08-28-web-turn-stat-pills.zh.md +++ b/.agents/notes/archived/feature/2026-08-28-web-turn-stat-pills.zh.md @@ -1,6 +1,7 @@ # Agent Note: Turn 尾部统计 pill 与锚定弹层 Status: implemented +Archived: 2026-09-04 [English](2026-08-28-web-turn-stat-pills.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-08-30-web-turn-rail-outline-jump.i18n.yaml b/.agents/notes/archived/feature/2026-08-30-web-turn-rail-outline-jump.i18n.yaml new file mode 100644 index 0000000000..528c10e790 --- /dev/null +++ b/.agents/notes/archived/feature/2026-08-30-web-turn-rail-outline-jump.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-08-30-web-turn-rail-outline-jump.md +2026-08-30-web-turn-rail-outline-jump.md: 2e5042903ec4d9bad37c351737959d6d0d14f3b8 +2026-08-30-web-turn-rail-outline-jump.zh.md: 5be9d5828d487832bf7c7d56cef89e127621bd7e diff --git a/.agents/notes/implemented/feature/2026-08-30-web-turn-rail-outline-jump.md b/.agents/notes/archived/feature/2026-08-30-web-turn-rail-outline-jump.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-30-web-turn-rail-outline-jump.md rename to .agents/notes/archived/feature/2026-08-30-web-turn-rail-outline-jump.md index af2a464513..2e5042903e 100644 --- a/.agents/notes/implemented/feature/2026-08-30-web-turn-rail-outline-jump.md +++ b/.agents/notes/archived/feature/2026-08-30-web-turn-rail-outline-jump.md @@ -1,6 +1,7 @@ # Agent Note: Full-session turn rail with outline projection and jump paging Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-30-web-turn-rail-outline-jump.zh.md) diff --git a/.agents/notes/implemented/feature/2026-08-30-web-turn-rail-outline-jump.zh.md b/.agents/notes/archived/feature/2026-08-30-web-turn-rail-outline-jump.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-08-30-web-turn-rail-outline-jump.zh.md rename to .agents/notes/archived/feature/2026-08-30-web-turn-rail-outline-jump.zh.md index b63b1c1f65..5be9d5828d 100644 --- a/.agents/notes/implemented/feature/2026-08-30-web-turn-rail-outline-jump.zh.md +++ b/.agents/notes/archived/feature/2026-08-30-web-turn-rail-outline-jump.zh.md @@ -1,6 +1,7 @@ # Agent Note: 基于大纲投影与跳转分页的整会话轮次导航栏 Status: implemented +Archived: 2026-09-04 [English](2026-08-30-web-turn-rail-outline-jump.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-09-01-shared-base-web-fetch-default.i18n.yaml b/.agents/notes/archived/feature/2026-09-01-shared-base-web-fetch-default.i18n.yaml new file mode 100644 index 0000000000..4d18995242 --- /dev/null +++ b/.agents/notes/archived/feature/2026-09-01-shared-base-web-fetch-default.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-09-01-shared-base-web-fetch-default.md +2026-09-01-shared-base-web-fetch-default.md: b07121fb864969da0547793be3fda30a6ee45d78 +2026-09-01-shared-base-web-fetch-default.zh.md: 6a5b94744d0ca59047c411f6a34d2e98d7bf7593 diff --git a/.agents/notes/implemented/feature/2026-09-01-shared-base-web-fetch-default.md b/.agents/notes/archived/feature/2026-09-01-shared-base-web-fetch-default.md similarity index 99% rename from .agents/notes/implemented/feature/2026-09-01-shared-base-web-fetch-default.md rename to .agents/notes/archived/feature/2026-09-01-shared-base-web-fetch-default.md index eceb2009d8..b07121fb86 100644 --- a/.agents/notes/implemented/feature/2026-09-01-shared-base-web-fetch-default.md +++ b/.agents/notes/archived/feature/2026-09-01-shared-base-web-fetch-default.md @@ -1,6 +1,7 @@ # Agent Note: Shared-base Web fetch default Status: implemented +Archived: 2026-09-04 English | [中文](2026-09-01-shared-base-web-fetch-default.zh.md) diff --git a/.agents/notes/implemented/feature/2026-09-01-shared-base-web-fetch-default.zh.md b/.agents/notes/archived/feature/2026-09-01-shared-base-web-fetch-default.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-09-01-shared-base-web-fetch-default.zh.md rename to .agents/notes/archived/feature/2026-09-01-shared-base-web-fetch-default.zh.md index 9be9c6350b..6a5b94744d 100644 --- a/.agents/notes/implemented/feature/2026-09-01-shared-base-web-fetch-default.zh.md +++ b/.agents/notes/archived/feature/2026-09-01-shared-base-web-fetch-default.zh.md @@ -1,6 +1,7 @@ # Agent Note: 共享 base 的 Web 抓取默认值 Status: implemented +Archived: 2026-09-04 [English](2026-09-01-shared-base-web-fetch-default.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-09-01-web-elevation-stroke-shadows.i18n.yaml b/.agents/notes/archived/feature/2026-09-01-web-elevation-stroke-shadows.i18n.yaml new file mode 100644 index 0000000000..d1ec3ae568 --- /dev/null +++ b/.agents/notes/archived/feature/2026-09-01-web-elevation-stroke-shadows.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-09-01-web-elevation-stroke-shadows.md +2026-09-01-web-elevation-stroke-shadows.md: 53c0e5a84d487697f9560d3052a0da790b7d002d +2026-09-01-web-elevation-stroke-shadows.zh.md: f32fa2a02bac12bcd37974977b1fbcd3e36930f4 diff --git a/.agents/notes/implemented/feature/2026-09-01-web-elevation-stroke-shadows.md b/.agents/notes/archived/feature/2026-09-01-web-elevation-stroke-shadows.md similarity index 99% rename from .agents/notes/implemented/feature/2026-09-01-web-elevation-stroke-shadows.md rename to .agents/notes/archived/feature/2026-09-01-web-elevation-stroke-shadows.md index 2bc3105203..53c0e5a84d 100644 --- a/.agents/notes/implemented/feature/2026-09-01-web-elevation-stroke-shadows.md +++ b/.agents/notes/archived/feature/2026-09-01-web-elevation-stroke-shadows.md @@ -1,6 +1,7 @@ # Agent Note: Web elevation — hairline stroke drawn in shadow Status: implemented +Archived: 2026-09-04 English | [中文](2026-09-01-web-elevation-stroke-shadows.zh.md) diff --git a/.agents/notes/implemented/feature/2026-09-01-web-elevation-stroke-shadows.zh.md b/.agents/notes/archived/feature/2026-09-01-web-elevation-stroke-shadows.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-09-01-web-elevation-stroke-shadows.zh.md rename to .agents/notes/archived/feature/2026-09-01-web-elevation-stroke-shadows.zh.md index bda3ee27af..f32fa2a02b 100644 --- a/.agents/notes/implemented/feature/2026-09-01-web-elevation-stroke-shadows.zh.md +++ b/.agents/notes/archived/feature/2026-09-01-web-elevation-stroke-shadows.zh.md @@ -1,6 +1,7 @@ # Agent Note: Web elevation — hairline stroke drawn in shadow Status: implemented +Archived: 2026-09-04 [English](2026-09-01-web-elevation-stroke-shadows.md) | 中文 diff --git a/.agents/notes/archived/feature/2026-09-01-web-superellipse-corner-smoothing.i18n.yaml b/.agents/notes/archived/feature/2026-09-01-web-superellipse-corner-smoothing.i18n.yaml new file mode 100644 index 0000000000..56a95d70ca --- /dev/null +++ b/.agents/notes/archived/feature/2026-09-01-web-superellipse-corner-smoothing.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/feature/2026-09-01-web-superellipse-corner-smoothing.md +2026-09-01-web-superellipse-corner-smoothing.md: 6817c6640532251a72cfbff51af62555d95da6d1 +2026-09-01-web-superellipse-corner-smoothing.zh.md: bc784ad44a66215ed125abe3809af7693abed752 diff --git a/.agents/notes/implemented/feature/2026-09-01-web-superellipse-corner-smoothing.md b/.agents/notes/archived/feature/2026-09-01-web-superellipse-corner-smoothing.md similarity index 99% rename from .agents/notes/implemented/feature/2026-09-01-web-superellipse-corner-smoothing.md rename to .agents/notes/archived/feature/2026-09-01-web-superellipse-corner-smoothing.md index 7088438a80..6817c66405 100644 --- a/.agents/notes/implemented/feature/2026-09-01-web-superellipse-corner-smoothing.md +++ b/.agents/notes/archived/feature/2026-09-01-web-superellipse-corner-smoothing.md @@ -1,6 +1,7 @@ # Agent Note: Web superellipse corner smoothing Status: implemented +Archived: 2026-09-04 English | [中文](2026-09-01-web-superellipse-corner-smoothing.zh.md) diff --git a/.agents/notes/implemented/feature/2026-09-01-web-superellipse-corner-smoothing.zh.md b/.agents/notes/archived/feature/2026-09-01-web-superellipse-corner-smoothing.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-09-01-web-superellipse-corner-smoothing.zh.md rename to .agents/notes/archived/feature/2026-09-01-web-superellipse-corner-smoothing.zh.md index 26aa64fda9..bc784ad44a 100644 --- a/.agents/notes/implemented/feature/2026-09-01-web-superellipse-corner-smoothing.zh.md +++ b/.agents/notes/archived/feature/2026-09-01-web-superellipse-corner-smoothing.zh.md @@ -1,6 +1,7 @@ # Agent Note: Web superellipse corner smoothing Status: implemented +Archived: 2026-09-04 [English](2026-09-01-web-superellipse-corner-smoothing.md) | 中文 diff --git a/.agents/notes/archived/manifest.json b/.agents/notes/archived/manifest.json index 88606a0992..f540320056 100644 --- a/.agents/notes/archived/manifest.json +++ b/.agents/notes/archived/manifest.json @@ -4,72 +4,387 @@ "architecture/2026-06-11-custom-schema-dsl.i18n.yaml": "sha256:f05d94c11762e506183044ddb1494a2b200ca16999ef3cef51c7b3a324eec945", "architecture/2026-06-11-custom-schema-dsl.md": "sha256:71286f2676f8b47d0bd56c6cc43cf8102946e6d195942860a5810b9c534d2b2b", "architecture/2026-06-11-custom-schema-dsl.zh.md": "sha256:999ff59565a4459184a644c4de6ef98c1bb1a174712e529f5c8417342abdd437", + "architecture/2026-06-11-runtime-arg-validation.i18n.yaml": "sha256:2298b757376b5be2d15c9431f484344bbd9a2dbf5786ff27464ec079d6f1ff36", + "architecture/2026-06-11-runtime-arg-validation.md": "sha256:19b8cc0fb42371aae27fb942a6d1ea31dacd59f46afb7eef1f2f2984487d5ec6", + "architecture/2026-06-11-runtime-arg-validation.zh.md": "sha256:690b7a109a719bd416bf41ffe35029c8c9101df3c52f9896b9adf7d2f0b8d194", + "architecture/2026-06-11-structured-error-taxonomy.i18n.yaml": "sha256:ff5b92f533dea20d2029899adfa101bf03bbc927fa4e3910df33633c762798ea", + "architecture/2026-06-11-structured-error-taxonomy.md": "sha256:f8890925e4cccb167201282c0195d808a20ebe8f60672eb92511149ecfdb2523", + "architecture/2026-06-11-structured-error-taxonomy.zh.md": "sha256:b836fb7d72e4e7a913e1b8575a23c4c84be5da970c7ed1b5d8b486c0971a0d3d", "architecture/2026-06-11-tool-schemas-in-prompt-assembly.i18n.yaml": "sha256:37230a2f5b9dbe160b4f36b6906065637846261cbef380c3e2b777cf0d8e9013", "architecture/2026-06-11-tool-schemas-in-prompt-assembly.md": "sha256:6f7b7f15f53f857ccb8477b3fdf65bf2de3a6f96acd93049c03ce4aff1629538", "architecture/2026-06-11-tool-schemas-in-prompt-assembly.zh.md": "sha256:fd5ddfc53f8a1c4afa86599c858c2ad27858166e676754ee6e2ce0881f55cef7", "architecture/2026-06-15-turn-enclosure-invariant.i18n.yaml": "sha256:7eb471a53b7bef104c57e9343b80d672763f062ecb086b01b318b65b488d3c02", "architecture/2026-06-15-turn-enclosure-invariant.md": "sha256:afefa3a268c84f26cf5461e08933245352a9e63cff688d3c398c8064a4ac6e85", "architecture/2026-06-15-turn-enclosure-invariant.zh.md": "sha256:c54fdac980abc922cdc252a8fef59e4bdd7567316c7fbb6f7dbc035e470d95fa", + "architecture/2026-06-17-filesystem-capability-seam.i18n.yaml": "sha256:5e69d31c437cabe7c369b34f2d8dd3210f401abb6a36a544d0883f32183a3c11", + "architecture/2026-06-17-filesystem-capability-seam.md": "sha256:c6b1da21bddf8f328ed2bb8b548e684e112a70f560885f8940a4f5002f9e3d1d", + "architecture/2026-06-17-filesystem-capability-seam.zh.md": "sha256:182745b6deef85b8764ddeca1aeee423a70383832fcdcbf9f4e7730dd7eee6bb", + "architecture/2026-06-18-agent-lifecycle-and-ownership-contracts.i18n.yaml": "sha256:bb7cb77f28f39a1d7a9cafa650a34670231c266dc59b1d14e1d04e33856820ee", + "architecture/2026-06-18-agent-lifecycle-and-ownership-contracts.md": "sha256:3b0f6199911c416b5c2abbcffbefc65945a54ddaefdc246c96d2d572a18c3e95", + "architecture/2026-06-18-agent-lifecycle-and-ownership-contracts.zh.md": "sha256:7ba760d8d0702b046035d65d1f1a973bba4017b49ce475b7a89f8cc504e75fee", "architecture/2026-06-18-shared-persistence-write-coordinator.i18n.yaml": "sha256:3c5c22e9e6a63598ba648cad46d783af322cf3afd6021426a2d738f4b026bf65", "architecture/2026-06-18-shared-persistence-write-coordinator.md": "sha256:d5242c770101086b6f0a0c40eab500d405ef4a98cae07e28d9ec21e89d94f90e", "architecture/2026-06-18-shared-persistence-write-coordinator.zh.md": "sha256:3dce52e302600a0eea29b4821a2718b6bbc1ebe4c6c2ae372cd0cbe66cb05519", + "architecture/2026-06-20-branded-ids.i18n.yaml": "sha256:ca0e6043d6459b781493737e4410f6773cad3085e1586b9a993b3ad5f2d19c56", + "architecture/2026-06-20-branded-ids.md": "sha256:7f304dc81d57d9a8db598dfb4f55dcf64e56d97cb5be646e317f57838237ee87", + "architecture/2026-06-20-branded-ids.zh.md": "sha256:6720d64717b685dacd707e68d0d62f4010bf513aa66c5bcc6e5133c0e3718c90", "architecture/2026-06-20-extract-example-app-packages.i18n.yaml": "sha256:d99b612cc1051c86d883d74737c72e921735e7a28e0b5e6351d3870c664bdcc4", "architecture/2026-06-20-extract-example-app-packages.md": "sha256:9c7aca3a1e9a1ccc3729961663bc649b90076e671cae23e3db8203305983ccce", "architecture/2026-06-20-extract-example-app-packages.zh.md": "sha256:19bd50232d9f25d35aa3f9dc72d9af0df457dd0eaca8b982d5aa625e5b95bcff", "architecture/2026-06-20-package-hierarchy.i18n.yaml": "sha256:02b9c383c0fc4e9d6cdd2d28b70b73d02ed913861834db8e2a3111ad82e05dee", "architecture/2026-06-20-package-hierarchy.md": "sha256:a0c6b3022e27f6106996b7aaf5d087b3e3f66f24f7b5fd7b7c12f172ab5dc2f4", "architecture/2026-06-20-package-hierarchy.zh.md": "sha256:40eec478cc5ff8ae76996e567d1f58309ed71b3bf0068ee06b088deae283512a", + "architecture/2026-06-30-bash-stdin-env-trusted-plugin-api.i18n.yaml": "sha256:32605633787a782818314707569f45e9c90d2ca21b707c46567d845fb641bb11", + "architecture/2026-06-30-bash-stdin-env-trusted-plugin-api.md": "sha256:7433ba1518acb9f2fd0645ddca46c376b8b1b1ba7828ff2f7af9555c576aac9a", + "architecture/2026-06-30-bash-stdin-env-trusted-plugin-api.zh.md": "sha256:7f4090e5764f9545671ce86be5eac7cae30a86aaf95e089aea16b1427c87b6d8", + "architecture/2026-07-02-fs-per-session-cwd.i18n.yaml": "sha256:8558c35353aac33f33a4e41e032de8c253403603654516fed522a8d949ca5d96", + "architecture/2026-07-02-fs-per-session-cwd.md": "sha256:5eb7a57a84ce430f6eda3259b8733173d37a8ca6c9489d9f9ba118b57e6e2f5f", + "architecture/2026-07-02-fs-per-session-cwd.zh.md": "sha256:5b94169db27342f96d3d90a5af7841bc548035ce2711d5afce25e9f2d05d1e39", "architecture/2026-07-02-result-time-applied-hunk-diffs.i18n.yaml": "sha256:e26441a73c76fb4217d7458c2772d0cefc09eaef638ea9d302ebcf5d65c42c18", "architecture/2026-07-02-result-time-applied-hunk-diffs.md": "sha256:537f57877cc2e86b2d3a8a482043db8d7a51880159b1077c5a45b89cd5d0114c", "architecture/2026-07-02-result-time-applied-hunk-diffs.zh.md": "sha256:7661634cb816caea859287327e37c5536381ee7ad9c77e320ff9b8bb7a7e62ce", "architecture/2026-07-03-filesystem-directory-listing-seam.i18n.yaml": "sha256:636a822f3240e0401cdddad6a21f3454af1c1593fff14d4c9ce6613495f7dac1", "architecture/2026-07-03-filesystem-directory-listing-seam.md": "sha256:809a3c79f4d602607e8fa93aafd1ebccf4fae50c31f1fb1b1e386bb7ad089153", "architecture/2026-07-03-filesystem-directory-listing-seam.zh.md": "sha256:13735cd4c9fe990e6df3b028d6da01da89e94fde454dc0e968e517151cbd4281", + "architecture/2026-07-05-subagent-provider-lifecycle-events.i18n.yaml": "sha256:b27eae75c335503265777bac251ab1f42492fd1c29c050494aa5b951264d0dc3", + "architecture/2026-07-05-subagent-provider-lifecycle-events.md": "sha256:8d5aac912c51a3e9e12a9037c13d79c0fa9bb1c8901f31b33e91bb07624a1b85", + "architecture/2026-07-05-subagent-provider-lifecycle-events.zh.md": "sha256:13e2dff78fba11f62210a33f6ed1db088a19c6d6cf1495259dfe736f9ec13781", "architecture/2026-07-05-windows-fs-permissions.i18n.yaml": "sha256:7e61ee9bbd9de4bf3285a6f250d9625bd062e5fb90279dbffd64c820f1f7fe6b", "architecture/2026-07-05-windows-fs-permissions.md": "sha256:03734da511eae3b0736f7cad73d9da76ae2f69f9d5ed09089b0121ccb135a861", "architecture/2026-07-05-windows-fs-permissions.zh.md": "sha256:454848057ea905fe76c88d17264e71e71fb685f08f82088de6976878372865c3", + "architecture/2026-07-06-tool-result-retention-library.i18n.yaml": "sha256:3d658500765ece3eb305fed4775e36a9846d922bcd0bc8e9c057e8746dde910e", + "architecture/2026-07-06-tool-result-retention-library.md": "sha256:2d2877fd52d32f027a6974c3e887282cd5f8b2050bf2533adf12a2b9ad4e4cb5", + "architecture/2026-07-06-tool-result-retention-library.zh.md": "sha256:b1c3f980ddf6a299902d5dd7f211cd384b89c2ea26afc0d642c167b07d965dc8", + "architecture/2026-07-12-scoped-layers-store.i18n.yaml": "sha256:c2a1251102215d60bf06e2de7f3f497d162f52210485524df1f512462afc0f03", + "architecture/2026-07-12-scoped-layers-store.md": "sha256:0db4c96247ccd15f37edd2d00fea1bd11df6aa9d505ec710e8a606797deedf11", + "architecture/2026-07-12-scoped-layers-store.zh.md": "sha256:dd20c33a397898901931579b7a01339d1997327f64dc561e87f3bafcd3ec8e9b", + "architecture/2026-07-15-llm-model-catalog-and-acp-selection.i18n.yaml": "sha256:2e2976fcb4b6a401206dd5b3bee009e3400b063b4df99b9e320a1d59be14e45f", + "architecture/2026-07-15-llm-model-catalog-and-acp-selection.md": "sha256:83bd3406c18bba4c290935fba984f8d69623c5155c04daa18d28c9240140f0e3", + "architecture/2026-07-15-llm-model-catalog-and-acp-selection.zh.md": "sha256:c9919384ec0eee646a882a2be849c18198b9610a75edb80e4401593051abba78", + "architecture/2026-07-15-lsp-capability-seam.i18n.yaml": "sha256:499a01e0dbb337a621398a8bb951ac0dd715adbb58ed763a94f693b21f7131b3", + "architecture/2026-07-15-lsp-capability-seam.md": "sha256:2cfc24374f03a384f358f6044e78fa4bd106897af52344da6623367b487e0029", + "architecture/2026-07-15-lsp-capability-seam.zh.md": "sha256:db1ca9e08a618650ce6bccdf4b3fb6532d75cea46ba49fc886f7fddcc55e93c4", + "architecture/2026-07-15-replay-token-meter-service.i18n.yaml": "sha256:cb2356e0771b0c06da8c3cf494d1e36f09b4034d015cf213bd2413202c34a6fb", + "architecture/2026-07-15-replay-token-meter-service.md": "sha256:dab85a043b5a71b49aed3b0cba810e95bedfb4f318033b50664337fe4bb69f25", + "architecture/2026-07-15-replay-token-meter-service.zh.md": "sha256:725f5773e52b2f580aa217be43c26acfada21570d266d407a995ed9a9f7b99c0", + "architecture/2026-07-17-local-spill-startup-cleanup.i18n.yaml": "sha256:8aac3691a971964dfb7df662c11930119832f8f4a207906b49c2dc7824fdf987", + "architecture/2026-07-17-local-spill-startup-cleanup.md": "sha256:5abf50a2bec99734477a7c885c0c44d57ad12f3c59621ea1502927193364917d", + "architecture/2026-07-17-local-spill-startup-cleanup.zh.md": "sha256:17f574516921abd0c84915822d08699fdbaadb00447c15e6b4c1410783b61478", "architecture/2026-07-19-gui-layering-and-rpc-protocol.i18n.yaml": "sha256:855477999c84236430dc9308e16797eb21658a67a72b8537315c6964ff0c0c0a", "architecture/2026-07-19-gui-layering-and-rpc-protocol.md": "sha256:3517f37e98e74865dced37d5e1559d443e8fa827031c8335e99a1e910586e9ac", "architecture/2026-07-19-gui-layering-and-rpc-protocol.zh.md": "sha256:8181386d957fa6d6b3eb9b05d29adb10804b5a926853425415d368cc7fceaefa", + "architecture/2026-07-19-package-owned-invariant-service.i18n.yaml": "sha256:9ea696b84c3af215eb3640e8acfe75a73b0f16109cbdffd4ce18cbf616221231", + "architecture/2026-07-19-package-owned-invariant-service.md": "sha256:514f93f2261fecab9eb7efa8613340b1f01b729b411ac4adce903c50935fa95e", + "architecture/2026-07-19-package-owned-invariant-service.zh.md": "sha256:cbcc5550b68bc6699ac7411c46c5da67db3fc4fe8330873f1d190ef8141f1280", + "architecture/2026-07-20-todo-event-ownership.i18n.yaml": "sha256:d8c7537ec3110834eef3f5ec934842acc23315e6cd235ed92baea967244c78b4", + "architecture/2026-07-20-todo-event-ownership.md": "sha256:4c92c6dd9a5879437224f57616d1e106bf5a6afc1dd6229b033a01a51a035470", + "architecture/2026-07-20-todo-event-ownership.zh.md": "sha256:9218336958487145fbb7bdf2a47259f2d43646db3233800364c234fb061be2e4", "architecture/2026-07-22-tui-interactive-extension-service.i18n.yaml": "sha256:1b4822af5c8d642b73e3a0b04fb0a1dea9f50d0147046fbef53f5e49c030fb91", "architecture/2026-07-22-tui-interactive-extension-service.md": "sha256:ca6b2774f4821e66f7c8397f20fcd34926728ded853fa48cbe451db7a8d2f883", "architecture/2026-07-22-tui-interactive-extension-service.zh.md": "sha256:5b060c7626ee796c27108be7467a5e4be0677d7525d383336e7ec31ddce5c303", + "architecture/2026-07-22-unified-send-and-coalesced-user-messages.i18n.yaml": "sha256:f790cca0af2f4cf634651471effc09fc6e8be295bbc24ad6f55fbf41a49982d7", + "architecture/2026-07-22-unified-send-and-coalesced-user-messages.md": "sha256:67d34ee546cbc9461b78e93462f75ff4a8ce4c2a29c6ac13b6df79cf9ca83e7b", + "architecture/2026-07-22-unified-send-and-coalesced-user-messages.zh.md": "sha256:d9e70ad7c032a2410f8b379bedcbdad2e5d07d761c766666e832737944799eca", + "architecture/2026-07-23-toolview-dissolution.i18n.yaml": "sha256:289d378c759e9108f879c153fa3cd4223329deb4d3ae71c140bec3d86d5f3beb", + "architecture/2026-07-23-toolview-dissolution.md": "sha256:783dba9d82c126e1c909f1717531bdbc68fdd58f17006bb3051f7400ce6ca8a6", + "architecture/2026-07-23-toolview-dissolution.zh.md": "sha256:21ed1f0841c18260c5698bbbb4d53c4b460f8048d92ac351a791ccc77f17d632", "architecture/2026-07-23-unified-session-query-service.i18n.yaml": "sha256:e8733b6543d9602ec206a087d9e89815f041f60fb57e93bee80e1309b9f03067", "architecture/2026-07-23-unified-session-query-service.md": "sha256:28d003686f29ec5e072e51e73da353575bcdcba5af20fefdfad88340e1ddd32c", "architecture/2026-07-23-unified-session-query-service.zh.md": "sha256:cfbe6525bc3b072fbc6db6bdca7a4d8cb4fc5507b1655bebc6af0589ed29ed31", + "architecture/2026-07-24-adapter-owned-reasoning-effort-capabilities.i18n.yaml": "sha256:8f114ca4860fe298020778780cc98192c14625f1c565998e5bb77294b4f01cfe", + "architecture/2026-07-24-adapter-owned-reasoning-effort-capabilities.md": "sha256:08090290a25b9f067b56e9bf3b07a1dd1d652c49ab45aeb8bcae0ec09b79ba8f", + "architecture/2026-07-24-adapter-owned-reasoning-effort-capabilities.zh.md": "sha256:b309560bb8f3b9720ed3bde2709ca6cbb54b8aeb23c2d7ba098f2eee08f55133", "architecture/2026-07-24-dsh-commander-argument-adapter.i18n.yaml": "sha256:cf99eda0e58b49630d5f95792459d7095666fafbef61f614165d5cdd031b7118", "architecture/2026-07-24-dsh-commander-argument-adapter.md": "sha256:705654c8a43bcd199f72c21a77d24ca8bfa02447aff1c7f3e4e820be61dcd562", "architecture/2026-07-24-dsh-commander-argument-adapter.zh.md": "sha256:3844f02d7659d18caf5d39e1131ed775c789cbf92dc44b4a446c7d6468aa5d00", + "architecture/2026-07-25-web-command-surfaces-and-assembly.i18n.yaml": "sha256:726092004674738dfaf8a6cace26d9d39d567b9710a147fbc56b0bfa6bd780d0", + "architecture/2026-07-25-web-command-surfaces-and-assembly.md": "sha256:8415f54cc7b2c1ed06d55863c8c2f9800c32caaf10f62e7ad0c9593c49e2f7ec", + "architecture/2026-07-25-web-command-surfaces-and-assembly.zh.md": "sha256:acd5de934fcf43d87334feded440d4109f1fab6735e6480cabc847a27f8a75ad", + "architecture/2026-07-25-web-input-machine-and-slash-pipeline.i18n.yaml": "sha256:0f9883ac1287f97a0d3ed6a52a811a47e50a22b295cbc2fbcdef2d1713911bf0", + "architecture/2026-07-25-web-input-machine-and-slash-pipeline.md": "sha256:69370df04d91df2978bce18ac53d32476ea0e6ca50827a3fa32062b468d974e6", + "architecture/2026-07-25-web-input-machine-and-slash-pipeline.zh.md": "sha256:ba54a9e9fcc8a13fac3a7fe5f434a0e799cad910241655d820e219c7066d22de", + "architecture/2026-07-26-job-registry-seam.i18n.yaml": "sha256:54caa099acc6943f46c986ab15587674eafd784eaa614bae46844f3ae31da21a", + "architecture/2026-07-26-job-registry-seam.md": "sha256:ed66f845310c85e967bb7c2388ebbd125bb54b1adb1da1400f559aa27d310b25", + "architecture/2026-07-26-job-registry-seam.zh.md": "sha256:1e7683f8d7b095003fee5973ce52f831dd6bc3fef3d7e4512000574e48d35c2e", "architecture/2026-07-26-packed-chunk-rows-by-default.i18n.yaml": "sha256:41aa86c65f78e125ca2178295d02d5994d5e0f2e9359b1465777db1aba4a105b", "architecture/2026-07-26-packed-chunk-rows-by-default.md": "sha256:2b4e14675d12a1fc07eb373ab8566c3e63c7c15e2b5a0b391e6acbc896c7359d", "architecture/2026-07-26-packed-chunk-rows-by-default.zh.md": "sha256:e0b0e8a4ab529a3461c22f434cbbe1e7b0ea381592871caf7e3fe5157ef844ba", + "architecture/2026-07-26-subprocess-seam.i18n.yaml": "sha256:cfa13513cd540378a99c3ef3c09b0bd5e1cc0e4d9f5501546ee7dbfb3042afe8", + "architecture/2026-07-26-subprocess-seam.md": "sha256:8e9151948293bb1b07a56953e4f6430abfde3f007d79f629de4eabbdaa8ff766", + "architecture/2026-07-26-subprocess-seam.zh.md": "sha256:bc801335257edde72c3beff0a2c207df9dea6fbbd7f5d1fd514f9e500809854d", + "architecture/2026-07-27-dispose-ladder-to-consumer.i18n.yaml": "sha256:1f17131dd62dae9498376d10110a07510dc5c7a3c62949f844438fb842e30063", + "architecture/2026-07-27-dispose-ladder-to-consumer.md": "sha256:6efe5e5f421b18c53d9b7beda1326a74d3b9318291f969e4a583d0051166e41c", + "architecture/2026-07-27-dispose-ladder-to-consumer.zh.md": "sha256:66aa115bddbceff3fc636cdb49447b00b71ad99989c51a4dbb9d0f8ec723ccbc", "architecture/2026-07-27-tui-chat-channel-module-split.i18n.yaml": "sha256:7b9dbe8b4a340640610abe7e54fb29492d77a187c176996a53d0e1fc7c8e1945", "architecture/2026-07-27-tui-chat-channel-module-split.md": "sha256:3e2cd43f306a18b3eaf9bac23e6bdc3a5dbdc7388b7c399ce71e4f71b8f71d2a", "architecture/2026-07-27-tui-chat-channel-module-split.zh.md": "sha256:d6b84fdcd91a2693b72cf6884b3a0c39e56e571b2b694f630805d894a6ba292f", "architecture/2026-07-28-consolidated-tui-presentation.i18n.yaml": "sha256:1eb43c420a21b7a3adf0aa5274d9aa597187630a29d7e535c5e266f82e803665", "architecture/2026-07-28-consolidated-tui-presentation.md": "sha256:e6fa4ea0c9d1d94942ab98de47c554f4e8aa3b639a1cce52113107b1dbb0f4b0", "architecture/2026-07-28-consolidated-tui-presentation.zh.md": "sha256:01814434482a84ebd7f672eb5c26fc468b568e773452563bf39ba52ad25d054a", + "architecture/2026-07-28-directory-picker-capability-seam.i18n.yaml": "sha256:a951218d4a98a0e4fb03bb0b1c4a976b3576a0c8f326f7471a78b03b2cb0878d", + "architecture/2026-07-28-directory-picker-capability-seam.md": "sha256:d2ed57ea031637debe9d0d652fc9183484ecbac796f586c84a4e06ca73638a9b", + "architecture/2026-07-28-directory-picker-capability-seam.zh.md": "sha256:36abb6a702c8f67a99d7b9fee3b0e31cfe0f92f43c80a911968740c6ba89e52d", "architecture/2026-07-28-dsh-native-typescript-source-launch.i18n.yaml": "sha256:af071e07bce5d9bc8f3df65fed9dcd9b3779a98c5864badbd530363bda021b55", "architecture/2026-07-28-dsh-native-typescript-source-launch.md": "sha256:1b56e3454277ace713e2a01c4da538c756c45bf633fd24d7b16443d584afac5d", "architecture/2026-07-28-dsh-native-typescript-source-launch.zh.md": "sha256:8c0f97472c2c89d2c19ae5cfa68c6e67f32b50960b08b60b46496f78ea6ffad1", + "architecture/2026-07-28-user-settings-seam.i18n.yaml": "sha256:ff21413c1b4a580a3fbba34207c75cb1b2682ac81eea220a143cd11d67072308", + "architecture/2026-07-28-user-settings-seam.md": "sha256:fef7066e83abc23d57489df2f01bb21d12e3b211d59181c31b953d77eb1a6190", + "architecture/2026-07-28-user-settings-seam.zh.md": "sha256:3c42ff79a93c0ed3d8b82c928f06f9198e520d1075d81771fd538485f6c4c1b8", + "architecture/2026-07-29-package-regrouping.i18n.yaml": "sha256:ae20969e74c84e81e9171b62af28753d99b83a1f9469e675c83080312b74c5cd", + "architecture/2026-07-29-package-regrouping.md": "sha256:85670ac62fe173cc37bd7cb9a73647d82c51a96946723e78dcbe7cfe9f81de70", + "architecture/2026-07-29-package-regrouping.zh.md": "sha256:0099c78f71a6e84421c8bf747e409268b790be391a4c8172d17b5fc0e5b190f2", + "architecture/2026-07-29-request-level-llm-config-credentials.i18n.yaml": "sha256:e03ef58f4e6134a9a5ad56a6c9b6b58d7c7facb9ceed2d9b8067a73fdd00516e", + "architecture/2026-07-29-request-level-llm-config-credentials.md": "sha256:7ce96be6664e9529000e3436eab6844ccd757a5ca0d8205e2891c1078b58f8ea", + "architecture/2026-07-29-request-level-llm-config-credentials.zh.md": "sha256:06ae7966f9699721cb89f95188b0e8c42561c0427dafcd7394103641db33594d", + "architecture/2026-07-30-adapter-owned-max-token-defaults.i18n.yaml": "sha256:b3e7cfea1a1afe8ed81e98d059c0c762f11103810a2839bace5dd2a700576b76", + "architecture/2026-07-30-adapter-owned-max-token-defaults.md": "sha256:bf06ad9aa2f83aae069dd47430c7d44bb60310db1edef4c2bc7e151d68792ee8", + "architecture/2026-07-30-adapter-owned-max-token-defaults.zh.md": "sha256:54d0558acdd0e58d1e59e95df1d16c7ba8e72e221ca3a4baaac1ba1f1a55c03e", + "architecture/2026-07-30-client-locale-full-rollout.i18n.yaml": "sha256:ae3eb4b266395dfea107705441ada7e2c3d3bc208371521403aa80691c9a5324", + "architecture/2026-07-30-client-locale-full-rollout.md": "sha256:a9ea3b3f18dc74bea670e18921df9598cdce1d4f033b825b089362f6d3908dee", + "architecture/2026-07-30-client-locale-full-rollout.zh.md": "sha256:f486b788e0803bc8d30082a38cf66ee205f0ece3bcc534740dc4f0727b48573e", + "architecture/2026-07-30-command-row-copy-contract.i18n.yaml": "sha256:f59ce4158d6d263e996f45c2daf38400448c2e7e46dcd9b352d0ad030db596c6", + "architecture/2026-07-30-command-row-copy-contract.md": "sha256:10c20ace91ca6122952c60b747866e4359ad93c3866ecd1bfd14fdf9c968f567", + "architecture/2026-07-30-command-row-copy-contract.zh.md": "sha256:8839bbd70a75d0933d9e1f327834891a97454a75eefa7a9733410592e1d7ab81", + "architecture/2026-07-30-config-plane-boundaries.i18n.yaml": "sha256:af908b31293de6da141ed4e7a61422174ededda06c99d01f900fe96509910f39", + "architecture/2026-07-30-config-plane-boundaries.md": "sha256:7d628e144fd9d872f0f7bcf7c5e29e0a75069aba7aef4d3be8f9ac8091495701", + "architecture/2026-07-30-config-plane-boundaries.zh.md": "sha256:8cc0c48a73aae63201e1225980c675c72b9277ea6056acf104e8073468b8bef9", + "architecture/2026-07-30-settings-write-path-integrity.i18n.yaml": "sha256:729e669c522107d5029db8a61a239f225587130e769f0a806a60a045e834983f", + "architecture/2026-07-30-settings-write-path-integrity.md": "sha256:648c2302ccd60835d94ee94a3516d534541a37bfd4d3a2902509995e3429c43f", + "architecture/2026-07-30-settings-write-path-integrity.zh.md": "sha256:c2de9383504ea00ef940df5f6174606893b4665bd196bb7c5f1db19e515ee038", + "architecture/2026-07-30-web-config-plane.i18n.yaml": "sha256:81f973a05eed7ed6845b37e5c3e28db6141abd7d133c27fef9bb0e0ac0eb4486", + "architecture/2026-07-30-web-config-plane.md": "sha256:80ec41d4cc43c9f6096d0269700f6ea2d26f06aee3a4b12afeddce1e51916944", + "architecture/2026-07-30-web-config-plane.zh.md": "sha256:b7821469eb9fe37fe1bc178be4ac803fdb19d55c9d36e7c69048a51b9bfe52f6", + "architecture/2026-07-31-code-runtime-portable-identifier-seam.i18n.yaml": "sha256:e243a62d3b468b6a65c80b284fe934fad09099a42d33c1dca47f435427a851b7", + "architecture/2026-07-31-code-runtime-portable-identifier-seam.md": "sha256:d7a050d3a654b7b0445b8dbe6e87331bbd91ce0bf6ad23c6d83ee32ada85fc2f", + "architecture/2026-07-31-code-runtime-portable-identifier-seam.zh.md": "sha256:286c53e0000bd0a109b67bf3ce5f190197fa674f103075461168768d78ea6770", + "architecture/2026-08-01-packaged-ripgrep-search.i18n.yaml": "sha256:43c9128079955e974fe1da3ce1a10779b4f5a25ac3629f92e3b1de847ad45050", + "architecture/2026-08-01-packaged-ripgrep-search.md": "sha256:36cf2d6daa654abced690965338aec4628069dc77be3a1da6368a9b097a59ff4", + "architecture/2026-08-01-packaged-ripgrep-search.zh.md": "sha256:45b2fe8e0d492eeff313d2ef3c98fd69761b3257eee3476b8bf53312e8b6095f", + "architecture/2026-08-03-pi-ai-declared-provider-catalog.i18n.yaml": "sha256:c1a59c3c04afada633740c808b98e765ccad09220c4c79d8f4207313c9e9aab6", + "architecture/2026-08-03-pi-ai-declared-provider-catalog.md": "sha256:fae0c59ece887f7d9344b6254d20cc671894074d53eefffb85dbf45b9104d2b6", + "architecture/2026-08-03-pi-ai-declared-provider-catalog.zh.md": "sha256:8032cefedd51b292d810051ff32e8825958e6d90b2e523a374294ef2f859ca1e", + "architecture/2026-08-04-credentials-yaml-and-user-environment-layer.i18n.yaml": "sha256:3ed6d54ad340a33eba5eaaaba60862deb39bfb71c7bbe23a45dda1e1a557b00c", + "architecture/2026-08-04-credentials-yaml-and-user-environment-layer.md": "sha256:943dc33ac6cc47c9e6e273787fa4187bea3a5268cefc9b5fca31df417e2e8c7f", + "architecture/2026-08-04-credentials-yaml-and-user-environment-layer.zh.md": "sha256:940e37f93a8949be46e2275cfed1624d0305b70e1099a69f614f8e488ee0aeba", + "architecture/2026-08-04-declaring-a-provider-from-the-models-page.i18n.yaml": "sha256:0d8bce49724dddba6fb8aa5d4beedadebce36f38838111c59a18ee418c9b61c9", + "architecture/2026-08-04-declaring-a-provider-from-the-models-page.md": "sha256:99c4faf487b177a8231803ed68551c93f2f8f4902ad02ebdd6cd09d273c79603", + "architecture/2026-08-04-declaring-a-provider-from-the-models-page.zh.md": "sha256:1443455cf5da2963612285b8852d8663def596f86e79066456a48e933c66825f", "architecture/2026-08-04-websocket-downlink-carrier.i18n.yaml": "sha256:b9d742d068a0e36df2f3030f6a04a3638f3461f7e10b50ed0cd6bd5e85de5019", "architecture/2026-08-04-websocket-downlink-carrier.md": "sha256:b9be27a4cda8abd410c6e8b728c571f96b4891eb003c5200e9a0ffbbc9145b42", "architecture/2026-08-04-websocket-downlink-carrier.zh.md": "sha256:118b71b33710a7a3d28375c48b42c1ec19993ca7e13f286dd6ea64f934456f46", + "architecture/2026-08-05-large-session-jsonl-restore-pipeline.i18n.yaml": "sha256:3dd516d460c3a352f1c40037e7659ab5d1bb858367c788a8b05a842612a70dbe", + "architecture/2026-08-05-large-session-jsonl-restore-pipeline.md": "sha256:469632c911525744141216c5b9117439fa98670ce74ab9fbc27fb9af27ce0705", + "architecture/2026-08-05-large-session-jsonl-restore-pipeline.zh.md": "sha256:7869fc66241c9ff6d27057a8b674eeb51c2ee5dc051a8f6c927deb8dc3611e57", + "architecture/2026-08-05-session-preparation.i18n.yaml": "sha256:34f9a0c816b2e9614b66d1403dca250c379f67e75a526a882c0e8feda21efd4e", + "architecture/2026-08-05-session-preparation.md": "sha256:2421e1ec398bd7c13dc1fc3d767fdb6c21f93e90412a613f8adc5954cee6804d", + "architecture/2026-08-05-session-preparation.zh.md": "sha256:2004cd68576cf9a29a66430a4a32c48f8218690bca67d3d1ce5da128e02b55de", + "architecture/2026-08-05-slot-declaration-injection.i18n.yaml": "sha256:98524dd1e4f92f0fd88ede1232e83d39e481cc61ffc381d8147099cc99167385", + "architecture/2026-08-05-slot-declaration-injection.md": "sha256:3cfd96c66d174ff821aef433224d52acc0dedff3b88e7b7f7cf11513393edc68", + "architecture/2026-08-05-slot-declaration-injection.zh.md": "sha256:847cc249429605c97b4d6910e25da3ddef162353f73c84b41a0652bf9688de1f", + "architecture/2026-08-06-agent-event-payload-objects.i18n.yaml": "sha256:2ad73590b94e8b10240fd9310bc3e22f226552e7fbed43f2c3ce3f04d7616575", + "architecture/2026-08-06-agent-event-payload-objects.md": "sha256:cf929674e8e5767537c5461e12ad20b41b04cc303475f7909e39ecf978bc4ab6", + "architecture/2026-08-06-agent-event-payload-objects.zh.md": "sha256:a73fc1703bb3ccc4d8d17271b19786e50a337abdf93b28e132ec21036782e2ee", + "architecture/2026-08-06-app-owned-command-line.i18n.yaml": "sha256:232d7c86216865664d3e8c0cfd5feecc7ebc3c20ef3314d2855920761676351b", + "architecture/2026-08-06-app-owned-command-line.md": "sha256:b6597137e149f8881d77007560b8af9af14098290ed22196dbb867ebcfb13167", + "architecture/2026-08-06-app-owned-command-line.zh.md": "sha256:900c8a3770ac76998e1f34a0c7e6a4d40fe744b4a1d57fa79f3690bde76544f8", + "architecture/2026-08-06-subagent-list-identity-projection.i18n.yaml": "sha256:1cc91b065102b6deca5a4c9382754ca1984870df264b976ea13c56810a70aa32", + "architecture/2026-08-06-subagent-list-identity-projection.md": "sha256:32689a48e9856efe993b5e0f87a0f65d60d00a962e59491f53b2597fee87f2a2", + "architecture/2026-08-06-subagent-list-identity-projection.zh.md": "sha256:23f067d9bc31469df0f4445592678df075fb1d24efb22fda5965335f623cd307", + "architecture/2026-08-06-web-markdown-incremental-ast-renderer.i18n.yaml": "sha256:26ce2ae77eda2f1fe4c50fed7f66fb5b4a507ba7c025c73ec56a2cac540c6442", + "architecture/2026-08-06-web-markdown-incremental-ast-renderer.md": "sha256:99f201a2a824a1f26edf8bae273ff4e940be1fd3b89d43db2358eeb7b751b361", + "architecture/2026-08-06-web-markdown-incremental-ast-renderer.zh.md": "sha256:5b3de0a59c849eb6ffc7e9eb84e41cd414f6871bc787e9975e1c3c3fd6597f61", + "architecture/2026-08-06-web-shell-dist-chunk-layout.i18n.yaml": "sha256:040d6acdcac82d5a1bc955f5834a9fbc95463c3b1cdaf7ffc32fdb5b0e7945fa", + "architecture/2026-08-06-web-shell-dist-chunk-layout.md": "sha256:8e21f8a1e9f9ab5bae7b84e833716c0b9ea7dd4b84f48fa5b02b8b097da4054b", + "architecture/2026-08-06-web-shell-dist-chunk-layout.zh.md": "sha256:33d1f1f3959b4df97969fa8f05810f5a3cf606f125ca69e3565f26d977c6229c", + "architecture/2026-08-07-shared-feedback-telemetry-user-id.i18n.yaml": "sha256:d65b8a5eb3636c3b45aa856e594905799df3b46803c60b8c4e50f8c92e871d68", + "architecture/2026-08-07-shared-feedback-telemetry-user-id.md": "sha256:a9e4d2d5e75d2d52dbebca58d4719ec4d6472390b29253aa98f2d3ca9d5b9de1", + "architecture/2026-08-07-shared-feedback-telemetry-user-id.zh.md": "sha256:48aa77c1f55196a8cc46f2007e1ea661ba5b5217187a1bdbff92b10b4b7be016", + "architecture/2026-08-08-bounded-session-persistence-write-batching.i18n.yaml": "sha256:4f0580b0cbb25deeb91c34a5d89271b458d456ef60578b2ea5116edcf387da87", + "architecture/2026-08-08-bounded-session-persistence-write-batching.md": "sha256:3e025aeb1831fe00cf36594823c5d2e54814ba04cc0bdbdb29c9c3d83ae24042", + "architecture/2026-08-08-bounded-session-persistence-write-batching.zh.md": "sha256:308d30e0786bd250e4982faca1eb1287c7298aade2223dd84c9550e5929d0b3b", + "architecture/2026-08-08-client-tool-presentation-ownership.i18n.yaml": "sha256:5bc3b20139c811737eb337d597f253e315e40f2903a13b7583b63f86ca1c8ed4", + "architecture/2026-08-08-client-tool-presentation-ownership.md": "sha256:a8b9e8963e278d7b74222b38b5f2d96baaeb57aa74c9a982c98411f911e68361", + "architecture/2026-08-08-client-tool-presentation-ownership.zh.md": "sha256:03253dfe627c6bf4a71cc1ebbde03a2c970bff7f891bcee623cc92d6e964ccb6", + "architecture/2026-08-08-per-preset-standing-mounts.i18n.yaml": "sha256:4f044984e952190ff33df2218d4036a4c8026d8d5181c4c0e136f8154403d496", + "architecture/2026-08-08-per-preset-standing-mounts.md": "sha256:78e4e735c7c33d188bd9be3259ece4db0549c067062f8aa9dd25c29587a090c7", + "architecture/2026-08-08-per-preset-standing-mounts.zh.md": "sha256:9e51b93cbe1a3ae41e6cdae6858ecf880c54d8ccabf9855ace707927562e6cf3", + "architecture/2026-08-09-cordis-event-walk-backstop.i18n.yaml": "sha256:420628f7bcfdc1be7fd898f3c1c7d85a25a4d18c27aa3d365e8144b352d36585", + "architecture/2026-08-09-cordis-event-walk-backstop.md": "sha256:8931659dfd03383660f09e10e1e7cefcb3729b6e5cd4e97f2832af4aa0313618", + "architecture/2026-08-09-cordis-event-walk-backstop.zh.md": "sha256:ef1b92c56eb770a5c8a5546f7e80790dbc23f2302bd6a45c4105222c97a48c3c", + "architecture/2026-08-09-headless-direct-core-entry-point.i18n.yaml": "sha256:4e4a59f14b7dea10f745c6ba88b1ef9e5aec7f752399235d0af8f64310fdda3f", + "architecture/2026-08-09-headless-direct-core-entry-point.md": "sha256:ce32a3cf4e1bdd3e2f5b6c8a2be2e084763f4745cf6b575ef29a405f4230a87e", + "architecture/2026-08-09-headless-direct-core-entry-point.zh.md": "sha256:cfb72dec612092c0543cf4ba7b628b96c6bacb6af87a575931073c524f666d24", + "architecture/2026-08-09-layered-skill-registry.i18n.yaml": "sha256:686bf0ac3616451b1dadf8148a1c8206646ee313f8bd55ecd89b3e7efc5a1e9f", + "architecture/2026-08-09-layered-skill-registry.md": "sha256:1c977286e51ddf4b65286c33caddac45731e5bfabdcfc03d94240dddd5025851", + "architecture/2026-08-09-layered-skill-registry.zh.md": "sha256:89c807fad4508225148119b918ed25207fdccd89c7406640c1628e0bb3883c0d", + "architecture/2026-08-10-message-feedback-sidecar.i18n.yaml": "sha256:1c00fa5535952d8d68bfb6f5f1485214f6cfd72d9aff40ba68b48f394e04d755", + "architecture/2026-08-10-message-feedback-sidecar.md": "sha256:9e708da316232cf0dbdd7e9bfce4893787bbb9d515537f618565601586e4b3f8", + "architecture/2026-08-10-message-feedback-sidecar.zh.md": "sha256:d2c409206a18b56194a36ee26a7194466316bc8af3ead5963ed70b851cabde9e", + "architecture/2026-08-10-product-subagent-providers-in-shared-host.i18n.yaml": "sha256:09fa68844f08eca349a49cb82a3b949a4a57856334679fb43cb95a12243669e3", + "architecture/2026-08-10-product-subagent-providers-in-shared-host.md": "sha256:d7918f9ef4164035f29bb9f3f7851efdc42f6f7a5f12dc77af0c6f865c4580e0", + "architecture/2026-08-10-product-subagent-providers-in-shared-host.zh.md": "sha256:f9ec3b3e6fb3173c4eed84b09956b923cf7a7a8a00fc495e36e306712795a97d", + "architecture/2026-08-10-unary-apiproxy-remote-migration.i18n.yaml": "sha256:53a0193dca8f4164b59210df550a3c17436c28c7a78c75d9e3c2c9d3dd0ff8d2", + "architecture/2026-08-10-unary-apiproxy-remote-migration.md": "sha256:a95a1a85baefecd74dec1641692a6990c0b935869210409f01c9c1757876dd0f", + "architecture/2026-08-10-unary-apiproxy-remote-migration.zh.md": "sha256:8118a06af8672aa87ffb3733a36cbf7d142b2c6fcfedf5db3e545c0ca7ace52e", + "architecture/2026-08-11-cmdline-seam-trim.i18n.yaml": "sha256:31fb4b11b477b9dd3fed95a5a9d4a51eaa8aab225d43c9b6becb6f8458aebb48", + "architecture/2026-08-11-cmdline-seam-trim.md": "sha256:47101cfc0d972103603f99f1cdc66181bf8dac0ded84e4a17592f48708c03d8b", + "architecture/2026-08-11-cmdline-seam-trim.zh.md": "sha256:ecb51317c41f5383ff7d2ae3eb80e4f33adcf853de5e941a28415d005867c726", + "architecture/2026-08-11-loader-entry-disabled-interpolation.i18n.yaml": "sha256:c6fecf4e37f42765ab8c2c1f9a1a0091b69e93cc42dc823907ad96ca08268da3", + "architecture/2026-08-11-loader-entry-disabled-interpolation.md": "sha256:39a725c1b243adce309dde65797f3be0665ee938bb0d4f01d32fc58497e8de47", + "architecture/2026-08-11-loader-entry-disabled-interpolation.zh.md": "sha256:4a0b431c2263464268bd2a85906e41fd0037cb870c78004b001a7bc5d53c139f", "architecture/2026-08-11-plugin-settings-tabs.i18n.yaml": "sha256:0365da2b317fc5f94dd190064198565f4c624afc91d2e62161ab9170f79d11bc", "architecture/2026-08-11-plugin-settings-tabs.md": "sha256:fdd92cfe55b6c4cd31b3f768dd46a2ecf129a04c9818249cbdd33857cf722bbf", "architecture/2026-08-11-plugin-settings-tabs.zh.md": "sha256:8993df1a0178aba1ea35c460ee67c522900344a4b386287bba9dfac2bfb87efa", + "architecture/2026-08-11-pwsh-persistent-pty.i18n.yaml": "sha256:9cb1fe403066c6e7831da7d2769af4211738076caa42571499481f4b4d362037", + "architecture/2026-08-11-pwsh-persistent-pty.md": "sha256:4dc789e83cbee17d143a5f40f129fa6ab96be8b9b6c4aee089550aa2da9aba95", + "architecture/2026-08-11-pwsh-persistent-pty.zh.md": "sha256:a39f3b1a75d27c119711cf172ee52b7167f1e165a3f5378a87ef511e101453b4", + "architecture/2026-08-11-repository-naming-contract-and-rename-ledger.i18n.yaml": "sha256:28870f058d9bfa084015ccd3031fc86aa60db3b638e33bde70328e4d741584ab", + "architecture/2026-08-11-repository-naming-contract-and-rename-ledger.md": "sha256:651117ea494c8e2735d1cc6499c31302c22f8a03e267ef108825f5d500663950", + "architecture/2026-08-11-repository-naming-contract-and-rename-ledger.zh.md": "sha256:d3018806ef388df153722a0ffeeddb2139884de3099e3ee9bfe7a1c3263cbb1d", + "architecture/2026-08-11-trajectory-conversation-context-assembly.i18n.yaml": "sha256:4f4ab2e649deb89bee5f4822560b492495c0270c8fd5e4b6b54898491b550c7d", + "architecture/2026-08-11-trajectory-conversation-context-assembly.md": "sha256:f74e0e8c75948cc5cc7c181e5240ed10466752a74617bbb1591c08b12e45d579", + "architecture/2026-08-11-trajectory-conversation-context-assembly.zh.md": "sha256:93b455846c863ddabc1dd86b646cdfd9cc4d8aa0bf64875dca93dce1b6abbaca", + "architecture/2026-08-12-pi-ai-route-default-input-modalities.i18n.yaml": "sha256:a31ea309d5f27a59135854a09d0547358feedf561fcf73eaf463209a1373aad0", + "architecture/2026-08-12-pi-ai-route-default-input-modalities.md": "sha256:89606e939a229fa1760d85869d47603b7a23701ede7418807c4917ae994893bf", + "architecture/2026-08-12-pi-ai-route-default-input-modalities.zh.md": "sha256:e74d132eaffd4349b20c19122aac7750e9660d36fd09a24f4037974fbb3a6335", + "architecture/2026-08-12-plugin-owned-settings-surface.i18n.yaml": "sha256:4d2184d8bf1b1028706643a035e8e536a8a3fd5d7908754cf5d0cb46fcc0f5e8", + "architecture/2026-08-12-plugin-owned-settings-surface.md": "sha256:c4ee54ecd28c4949c6e4d800767077eed6c0ff1e150f44913d21521ad1f49975", + "architecture/2026-08-12-plugin-owned-settings-surface.zh.md": "sha256:57a1cde4261d1b7205e86553f58f554dd71e3edc83bcacf3e226549218374b2b", + "architecture/2026-08-13-session-content-search-opt-in.i18n.yaml": "sha256:dac256352307fc5ae6cafd0deac83d6af46c62002d4a26524063bed865e0543a", + "architecture/2026-08-13-session-content-search-opt-in.md": "sha256:e3f1048c8a590791420e46ce238ebeccb0579f299d164f991732515af06e810f", + "architecture/2026-08-13-session-content-search-opt-in.zh.md": "sha256:67b245a0cae448d9dac4b3a59f1904dbca996b92961a2cc2e2dfa43322b3c9b9", "architecture/2026-08-15-packed-session-history-transport.i18n.yaml": "sha256:547b89497b009593db5acfae2a3b989f17b8392f5df73ef631b38f8f68f629f1", "architecture/2026-08-15-packed-session-history-transport.md": "sha256:ec7f84d59eea95668a8cb6c92ae433a2b7e7b76446a27e57dd5dba05856f563f", "architecture/2026-08-15-packed-session-history-transport.zh.md": "sha256:0d8eb5444557a18f76c68ce5ae9f0779c580eaddb921ee8651464baea34e0e53", + "architecture/2026-08-17-dynamic-client-render-and-attachment-ownership.i18n.yaml": "sha256:863c11d0a376f3f261e23928a363a955f2031b503bac70fd695e3d1645b395e2", + "architecture/2026-08-17-dynamic-client-render-and-attachment-ownership.md": "sha256:062e5392c2c2ddecaa36bf0b71316e889d1dc72a90bf519ad4048cb5846673c7", + "architecture/2026-08-17-dynamic-client-render-and-attachment-ownership.zh.md": "sha256:53312abcbe706c90ac274a691486d2902a26e51aa2f138db45c90b524529be34", + "architecture/2026-08-17-settings-describe-mirror.i18n.yaml": "sha256:88d0abce8c6ede268b0983414030fbe5d34fc0ccf77ec6c26109734cf82e6785", + "architecture/2026-08-17-settings-describe-mirror.md": "sha256:50507755803f459fb101d7b0dafd21672918436e0b4f09ef6879cc72cf147133", + "architecture/2026-08-17-settings-describe-mirror.zh.md": "sha256:5756f3ad11443b5ae2c492168fa06623c51efe0c1cc330d2de72deaca9156928", + "architecture/2026-08-18-client-build-environment.i18n.yaml": "sha256:a5c953aa89b9084c76ff6fad64d93e5cb53814787c088875ef53b3c3730997e0", + "architecture/2026-08-18-client-build-environment.md": "sha256:a962d301170e54d1f82b68868f9717c2aaaf110bf397ca64366cb67216292fa0", + "architecture/2026-08-18-client-build-environment.zh.md": "sha256:08982b9ae233596e04bc485d5b67176ece0767f9671cd15aa928f8774c4d86dc", "architecture/2026-08-18-sqlite-physical-chunk-row-compression.i18n.yaml": "sha256:42bce930799cb511e9fb245dec5e26efd78bdab4c9b75f7393e37b40fbee4d10", "architecture/2026-08-18-sqlite-physical-chunk-row-compression.md": "sha256:4fe241f1b272278d9f3ca1a4431971220e1fa54411df043826ef6f59225bf949", "architecture/2026-08-18-sqlite-physical-chunk-row-compression.zh.md": "sha256:73178c9ec5abf571680d8facfb145cbadc1efbb2e67e3f039747c2f9cf4bb730", + "architecture/2026-08-19-experimental-package-name-prefix.i18n.yaml": "sha256:b0f8de50a4bdcc96baf0af9ae3dde8087e41d8200fa228233d0f44ddf770131b", + "architecture/2026-08-19-experimental-package-name-prefix.md": "sha256:d95ab61cd38321d40ac137d80d05f430ce6d38917f4cb24d4a16a39030e9df3e", + "architecture/2026-08-19-experimental-package-name-prefix.zh.md": "sha256:4fc5c9b90cc13e6e2a033a4eeed5920907dcdf414f31bc87da8a658bd220351f", + "architecture/2026-08-19-projection-cache-per-session-files.i18n.yaml": "sha256:f72f7a98413778d627e35002cc609b9b81130e0783fc53840da2343a96cf4ac2", + "architecture/2026-08-19-projection-cache-per-session-files.md": "sha256:4197117af4d4a022b28ab84a79b93e4e9d3f3d856e7f164e4e0b3f6c818406f2", + "architecture/2026-08-19-projection-cache-per-session-files.zh.md": "sha256:cc32ae3fb829b0e4afbe2dbcfd55e0fa57cc1d769f60d4c7d0f8c489876b45af", + "architecture/2026-08-19-session-projection-state-and-client-views.i18n.yaml": "sha256:ad6d63838b3211fb1486566900b410fc30ac6e380f570647452469b764943af4", + "architecture/2026-08-19-session-projection-state-and-client-views.md": "sha256:db09c07fc7fcaf5ef6930a0ad7905ec0c5daf90e50794c4d89b62d526ac30798", + "architecture/2026-08-19-session-projection-state-and-client-views.zh.md": "sha256:ce3d9aecf9ba4d5eeb00a0d3878354513591f5fdeef781224063261c5728c170", + "architecture/2026-08-19-shared-win32-process-primitives.i18n.yaml": "sha256:5e898133da722e05ccc0b04a876955a3f660c39b9a62615770ab6b39df70091b", + "architecture/2026-08-19-shared-win32-process-primitives.md": "sha256:1bd644527c49fb6053f64b7c86655e0d1e3856c4486be75f50a35332c556629e", + "architecture/2026-08-19-shared-win32-process-primitives.zh.md": "sha256:5bc9e6b6785e29ac708825239681067a5b45b6a636602f24502704aa619710bb", + "architecture/2026-08-19-web-index-injection-table.i18n.yaml": "sha256:02ee03899871133a170f2a028874cd1676d9911a6ecbe93e3a583e393bee2063", + "architecture/2026-08-19-web-index-injection-table.md": "sha256:0ff38f7dc6581fbf39693b4e83dcd024991803fb8adcd414f41b064411d3ad16", + "architecture/2026-08-19-web-index-injection-table.zh.md": "sha256:6509ffe8c65a45c2cecdea4140fddd98f7e1299997fc26656d2e4af5485a4bcc", + "architecture/2026-08-20-preview-cloudflare-pages-deploy.i18n.yaml": "sha256:4793d8ae04f417123e4afb197f186b61cdf024c506b7da1f2fb9df58db4cf302", + "architecture/2026-08-20-preview-cloudflare-pages-deploy.md": "sha256:b910d7d79b164e41a0642c2f32c27db042117d2e513857d4c903079489e7ded9", + "architecture/2026-08-20-preview-cloudflare-pages-deploy.zh.md": "sha256:d43d0a9458f0226419477ab01fc9c78862161a26e98e3f2cb4f446cd376a40ed", + "architecture/2026-08-20-web-composer-lexical-editor.i18n.yaml": "sha256:3fb9c84e2c149818560762d2aa2b278385423db678bd2b26ee2e0a1f608ddcd5", + "architecture/2026-08-20-web-composer-lexical-editor.md": "sha256:3b37575bb74ad865e49533bd9d7a4ef5d89c559c56d664e37b84cdf4eaa9fbc7", + "architecture/2026-08-20-web-composer-lexical-editor.zh.md": "sha256:3a62fce7d8ba7c341d126aeaf6b16e05d80ff542341a0e27e5ff811c30c44631", + "architecture/2026-08-20-webworker-node-face.i18n.yaml": "sha256:2d3aad249ed89a3ab25017d450f3450b1641d794a491a291b508e3c2a4880b80", + "architecture/2026-08-20-webworker-node-face.md": "sha256:963c228f52a66cfbc199169fd6b44ee5530c6bbef758cb86648ac7c6672352bc", + "architecture/2026-08-20-webworker-node-face.zh.md": "sha256:a5a093dcb93ff20b2ad4c6437c78d4db42ef3923f6d9ed874c2f28a882bbb7ce", + "architecture/2026-08-20-webworker-pack-lowering-and-preview.i18n.yaml": "sha256:49cd82c0ea4ae27f39c15b4de2a9216fca95306aeed06df37f572c8d97fdf89b", + "architecture/2026-08-20-webworker-pack-lowering-and-preview.md": "sha256:1693b19ab246a08076a01b3e58757be8b06a4e2c01034c4f100cb9083830f907", + "architecture/2026-08-20-webworker-pack-lowering-and-preview.zh.md": "sha256:0a6251659d813abde21bc1f95af568e20cc07e80a505513cb958f2ac5f0a073f", + "architecture/2026-08-21-session-log-read-intent.i18n.yaml": "sha256:49dbc5aebd2348b1f107f3871746be13b20f264fdb7ef1a2df11f36386c2d04f", + "architecture/2026-08-21-session-log-read-intent.md": "sha256:318fe7b743693d9492bb3ba4d0e8b2fbcdc1fdacadceab02d51f7282127d084e", + "architecture/2026-08-21-session-log-read-intent.zh.md": "sha256:5b1ba57f063ac1adff350020530ab59d38135217e17442393129aa2fb1405360", + "architecture/2026-08-23-cross-realm-cdp-inspector.i18n.yaml": "sha256:64d585467bb1fbc6e91c90b7f3e879c2b9ac89c50899f257f22072fd5ce0ce1f", + "architecture/2026-08-23-cross-realm-cdp-inspector.md": "sha256:376474632de3e75e10ce597b10295280b87b91aac88011231409aaa534484962", + "architecture/2026-08-23-cross-realm-cdp-inspector.zh.md": "sha256:60d5a7c192fc07920fb9435af3c2ba671b27324bc37a9dedf996dc4253de58d2", + "architecture/2026-08-23-python-sdk-dsh-profile-runtime.i18n.yaml": "sha256:f6ac53e8c869d276f56257357b83caab619ab42f426e92eb6f9d726e7fe0c8b7", + "architecture/2026-08-23-python-sdk-dsh-profile-runtime.md": "sha256:f5f7cb2dc91dd6ec7462e78cc49a5a03d8cc11976106e21e84512547e4823f98", + "architecture/2026-08-23-python-sdk-dsh-profile-runtime.zh.md": "sha256:cc4e3efe3fedcf9853fc52b6faf72efa9db9e5ee5dfdc11cca2a81a36ccef131", + "architecture/2026-08-23-python-sdk-windows-x64-runtime.i18n.yaml": "sha256:0a5dde5f111ac390192744b6f6caa6d15c4041d87d37751ffdb24d3611edaf16", + "architecture/2026-08-23-python-sdk-windows-x64-runtime.md": "sha256:2ba8d49c07e70dde5c86005bc44641f85edd8232bfb84ca1ccd79ba252dbaec7", + "architecture/2026-08-23-python-sdk-windows-x64-runtime.zh.md": "sha256:f8f924ac91b0b8dd681199ef389801d8f264800c914cd481a3179d9243935dcb", + "architecture/2026-08-23-webworker-vfs-watch-and-landlock.i18n.yaml": "sha256:0dba84fd1bec0cf024a69f14924909346947358d8da5d9ce890bdb499a10d2e1", + "architecture/2026-08-23-webworker-vfs-watch-and-landlock.md": "sha256:f5e9b71162d817ddfa39f0a085e2e2e5468e8420fad2150479b96bb22de601f7", + "architecture/2026-08-23-webworker-vfs-watch-and-landlock.zh.md": "sha256:b06ac34ba6e8b99c4812e98fea77c9f76f142d6113c54c1993ac30fa3c004554", + "architecture/2026-08-24-cordis-runtime-tree-inspection.i18n.yaml": "sha256:80b6620618c7ed8e8414fe064b3188455de2c1de774d7102fb00b96692e66874", + "architecture/2026-08-24-cordis-runtime-tree-inspection.md": "sha256:40fdfea38bd90d48d0ea810155ee011ddd24253e1e04c4a8ffa5f8ec288bc9f3", + "architecture/2026-08-24-cordis-runtime-tree-inspection.zh.md": "sha256:97a53359df1ab731f67a56385485543d8e14f370409a022fee9fd045a27a226c", + "architecture/2026-08-24-standalone-sdk-minimal-profile.i18n.yaml": "sha256:cc8dbb773065a3b0fbf50ae718aa778f04c2b32acc841e5cbf2261cd69686ec0", + "architecture/2026-08-24-standalone-sdk-minimal-profile.md": "sha256:56d209b1c5391ae4ddb43c4eb6af2c10331b78b2319470c48461e895885fb95e", + "architecture/2026-08-24-standalone-sdk-minimal-profile.zh.md": "sha256:1c7a1f002953f1a6b7a97bfc39589941251e51f5cd3823c8032149aa0cdf195e", + "architecture/2026-08-25-persistence-latency-and-page-size.i18n.yaml": "sha256:5bc991a94ff903fa32858709e0520357192807550a2dca614be272dcf9f19125", + "architecture/2026-08-25-persistence-latency-and-page-size.md": "sha256:e2ad056d2651512cf2ea4894438dc7581fe422182d88a13df028451f310b8757", + "architecture/2026-08-25-persistence-latency-and-page-size.zh.md": "sha256:2afe0ec635b6b1fb676962d493ae09eb807d60d6a67192c40ab20b002dcbd806", + "architecture/2026-08-25-rename-code-mode-to-ptc.i18n.yaml": "sha256:0c382f5446066fbbe2fa0f770358e42cf9dca679a7c2ba545e76eb7429e2badf", + "architecture/2026-08-25-rename-code-mode-to-ptc.md": "sha256:aac4329fd0adfde02ef2c53e96ace1a24619f353afdc6d298ce607827dbb60bc", + "architecture/2026-08-25-rename-code-mode-to-ptc.zh.md": "sha256:4579f85004248233aa3af5a445306201b31b7411a3e429f69eae6e40196be29c", + "architecture/2026-08-25-sparse-first-party-prompt-section-orders.i18n.yaml": "sha256:ecd0321328720ecf4eaafd2abbd9a35fa03a25a7a8bf3c9be27980f8eef4763e", + "architecture/2026-08-25-sparse-first-party-prompt-section-orders.md": "sha256:b70159d112dbd5955d91dff367fa39259e78fe747389124a15b44af26124ea5d", + "architecture/2026-08-25-sparse-first-party-prompt-section-orders.zh.md": "sha256:50cc55babd7db5322554fe58c85b1425cadde72bab207fa0812f72826117d50f", + "architecture/2026-08-26-inspector-execution-realms-and-protocol-planes.i18n.yaml": "sha256:ca99ab3937f3659b2fb8f0c60ac965852977506be49e126d37bb2b924c659a4a", + "architecture/2026-08-26-inspector-execution-realms-and-protocol-planes.md": "sha256:ed24c3876541a890605c6314c6b355c20751c0920652a45bcb649201c609a680", + "architecture/2026-08-26-inspector-execution-realms-and-protocol-planes.zh.md": "sha256:20d3545ebfa0f49e52c78da2f28e455e11a7786cffddbbe73cd5adc5839c07f7", + "architecture/2026-08-26-local-submission-echoes.i18n.yaml": "sha256:7cbcd7440ed1db7511d847db96b63a8be79901a0884b044bba3fc71646d41337", + "architecture/2026-08-26-local-submission-echoes.md": "sha256:826188a8714b7545c86c0ce1826210e64d5b7a75a4576ede033b3228ea18b045", + "architecture/2026-08-26-local-submission-echoes.zh.md": "sha256:f16c4d29dc226a06b1ed26d907595696aad5b72b9f213d7a705495a8c792e578", + "architecture/2026-08-26-models-page-extension-slots.i18n.yaml": "sha256:a9e9b4d850d25fd2adf50b4410a85b895abd69f8f689e3e608d6b3858fe4e499", + "architecture/2026-08-26-models-page-extension-slots.md": "sha256:856b6846b28f204e9579cb39bb2bf7b3e81d7be2c7e3f5128bed5bfdc507b6af", + "architecture/2026-08-26-models-page-extension-slots.zh.md": "sha256:f7b81a2d3bb086a66cd4cbea2985b235b6bdd4b7f788358ff4005550420679e5", + "architecture/2026-08-26-preset-health-resolves-rows.i18n.yaml": "sha256:39b7e672b585e13ed1ce2ae6d14001002635a35b089b19c348ff722e9e9e378f", + "architecture/2026-08-26-preset-health-resolves-rows.md": "sha256:009130fd869a5432ddf2b92142f94a6f637113a90861a0d973de11f0c5fd6c43", + "architecture/2026-08-26-preset-health-resolves-rows.zh.md": "sha256:750fcec1735664da2ee8eaab1f8f5121ae6398302b8e1fb3c3fc2863f8a72a3e", + "architecture/2026-08-27-inspector-development-mount.i18n.yaml": "sha256:2757d3417458499e7dbc8c340847ee52ccc9163d084700cbd8ff1ae4405b0934", + "architecture/2026-08-27-inspector-development-mount.md": "sha256:78c822537be2460be42888a94f0fac373066b44d98a8c9e035ac71f283a88fda", + "architecture/2026-08-27-inspector-development-mount.zh.md": "sha256:074a1c87b725c2a0ffd31dd9e0ab0eb683129e2dde92cf9d69d3c477eef7502b", + "architecture/2026-08-27-process-table-snapshots.i18n.yaml": "sha256:d43fc5cd1d2439a2a9d20b1ab85b78c2007e635770b99fa8e8f36ca2476075ef", + "architecture/2026-08-27-process-table-snapshots.md": "sha256:583a5aa1ee3949ace886237b151e94092cd7abd1f6d0c775bd7a2d132f8fa1e5", + "architecture/2026-08-27-process-table-snapshots.zh.md": "sha256:0dfe98b3220a790bf2d67b5b791d7fc288e9960f813afe55275215ea4f930c3d", + "architecture/2026-08-29-plugin-inventory-agent-preset-scopes.i18n.yaml": "sha256:0ead49a8471f0f2db56c114b89825d7c3a913db24d3c69e9b89aac717cf4338d", + "architecture/2026-08-29-plugin-inventory-agent-preset-scopes.md": "sha256:cf111d4863a2b64a7ecfd1abd12768755e311c9a229fa6f7adc1885298c806af", + "architecture/2026-08-29-plugin-inventory-agent-preset-scopes.zh.md": "sha256:6688736349c677c7698f4417e795167b84cc5e368e247424080b746fdaf9fcbf", + "architecture/2026-08-31-live-assistant-stream-frames.i18n.yaml": "sha256:43324945c7e89643ccbd1478571867fa20ed61ad0046181ebb2afd0738dd7f9d", + "architecture/2026-08-31-live-assistant-stream-frames.md": "sha256:6f3fd47ceb06896d2d84dad6bb44d4564416217e196ca12a2aca2224319663d5", + "architecture/2026-08-31-live-assistant-stream-frames.zh.md": "sha256:402a0d3a07697c3550e6e10a27e41f5a4f3111d62b641244db3b420e63766b22", + "architecture/2026-08-31-session-sequence-and-log-offset-brands.i18n.yaml": "sha256:457ebbaafbc2dc2c838b283619c2f9c2481e20587876b5e3dcd8ccbbc2608881", + "architecture/2026-08-31-session-sequence-and-log-offset-brands.md": "sha256:bdf92ff7e36fd2ea8bd47e4f8237ac663171eca362eebcb6feeec433312dea06", + "architecture/2026-08-31-session-sequence-and-log-offset-brands.zh.md": "sha256:b272c9cea73ed54df2677c69317ca6c6fc381e15d23d71f65d5eb865c8ce5f42", + "architecture/2026-08-31-viewport-activated-syntax-highlighting.i18n.yaml": "sha256:f45afe590c67c8874480b8a2e1739b918c69c709d53e5e1ab673797eb6619bd2", + "architecture/2026-08-31-viewport-activated-syntax-highlighting.md": "sha256:df1c5883c13611104fd41e4df920513724a1daee3f5cf06db8d1da97627bdec5", + "architecture/2026-08-31-viewport-activated-syntax-highlighting.zh.md": "sha256:da3fd4b4d22b20f204e4418b8249f719fd9d8860f5e148af8f960d8983b379b7", + "architecture/2026-09-01-streamed-tool-call-identity.i18n.yaml": "sha256:5193bf7429a0300f743ea7e6087c3175a7d28c2c468ca1cfd1f77702b68b6399", + "architecture/2026-09-01-streamed-tool-call-identity.md": "sha256:303433b95c22571bf6a801da604b42a4c7231f5f6d07daeb518354f0d7019141", + "architecture/2026-09-01-streamed-tool-call-identity.zh.md": "sha256:53728d3ee06b29d6023e28024fb3ab6fa4a7473ae5e55368cd19690719d120f3", + "architecture/2026-09-02-protocol-specific-model-listing-discovery.i18n.yaml": "sha256:ba8a62a9fa3263de4162709cb1aaf81f6ad4feee5011d7a5d8b24eb92ad81d30", + "architecture/2026-09-02-protocol-specific-model-listing-discovery.md": "sha256:9db9c47559c17f0e2931b9e646f1d2d17b590df4d5699d4e779ed6d7f65fc371", + "architecture/2026-09-02-protocol-specific-model-listing-discovery.zh.md": "sha256:9a266590d49093a097bcdb5d09865757cdd07625cfaaddce1303046d580551f1", + "bug-fix/2026-07-19-windows-atomic-write-dacl-preservation.i18n.yaml": "sha256:8be5b0afd8820c593e2ec254d35fb8c384267814104f6234bb9af824c5f974ba", + "bug-fix/2026-07-19-windows-atomic-write-dacl-preservation.md": "sha256:861e6130e893489271478def5f54f212a106a1580b744e6e40f56356f73c7e10", + "bug-fix/2026-07-19-windows-atomic-write-dacl-preservation.zh.md": "sha256:3549257e06f074591de580ebfaa71284c7c384fb0ffb1963c30258d7a7c26db7", "bug-fix/2026-07-20-code-mode-result-card-completeness.i18n.yaml": "sha256:1035dae11d049d32ab09fd7d4f950eceae44bf46ba498b3cfaf3c75102b9fb64", "bug-fix/2026-07-20-code-mode-result-card-completeness.md": "sha256:6ca2c9d4df98be18813ef38b7462db880900b5bcd6944fbcd1b8f2258006b93e", "bug-fix/2026-07-20-code-mode-result-card-completeness.zh.md": "sha256:ed85fa7f935e5f525d566bc37a92014614983e649c75de9a9f244939097a7991", + "bug-fix/2026-07-20-config-hot-reload-resilience.i18n.yaml": "sha256:aaabf14319df79bc0929c97d114e079b2b8a4acea32079fa5d7dca33f5542da1", + "bug-fix/2026-07-20-config-hot-reload-resilience.md": "sha256:5bd240f3f6107e6b8c97c7609c19ee9e99a94ee3664c7122f57b5fc469f952bf", + "bug-fix/2026-07-20-config-hot-reload-resilience.zh.md": "sha256:a39c0fdd0324d5ef158a6e02ed30349ed260547c877215b6ad9838c7aae9d4b3", + "bug-fix/2026-07-20-error-cause-chain-diagnostics.i18n.yaml": "sha256:5a7634080e9921149565827e1cc3f5bea39b04ea171b57ba45c259a201f204be", + "bug-fix/2026-07-20-error-cause-chain-diagnostics.md": "sha256:82d231e5632d0e582e26b54a9f65d0ce05afb7d6bb9bfc3d324737fd43c45c1b", + "bug-fix/2026-07-20-error-cause-chain-diagnostics.zh.md": "sha256:b8c0669a5d0475a5ddffa644a17bd1009f525cf69edb36b7fade90014b97daca", + "bug-fix/2026-07-21-compaction-summary-prefix-cache-reuse.i18n.yaml": "sha256:3093deb3286c628da23f738a6169044da63e04def5167319db25db5346eb3d17", + "bug-fix/2026-07-21-compaction-summary-prefix-cache-reuse.md": "sha256:eb981a14d178470e9861df0d9f14ed0575d452485e5dd11b80f56578375ee4ef", + "bug-fix/2026-07-21-compaction-summary-prefix-cache-reuse.zh.md": "sha256:e3105954814e83a52ef483b4b24ac260dd5c13d79861ebd218f8b7aa0e54b2bb", + "bug-fix/2026-07-21-semantic-session-checkpoints.i18n.yaml": "sha256:3ead9389060e7ad26d933514b02e27671becd405ef37bef3dccae63f6752ebc9", + "bug-fix/2026-07-21-semantic-session-checkpoints.md": "sha256:beda6fa01308f0ca381ca76136a917acff3d8da91f09dafd354363fcf86f1375", + "bug-fix/2026-07-21-semantic-session-checkpoints.zh.md": "sha256:449e5399b6f93a8379a9498c3d2dad5de3c0aa980caa4bfbab055dacb24f361d", "bug-fix/2026-07-22-collapsed-sidebar-control-rail.i18n.yaml": "sha256:98de4a1ae016608b88010d413a204c2d33695f4b1d7217e5d1b705be09c1b669", "bug-fix/2026-07-22-collapsed-sidebar-control-rail.md": "sha256:b58620a3cf203507a5d651b90554bb7897e9d271613dc7c32d0f3bec992475bb", "bug-fix/2026-07-22-collapsed-sidebar-control-rail.zh.md": "sha256:f36ef24f26ead60b01169c8e4a2a01b396c3f4284f14979e4d52b47c9589075c", + "bug-fix/2026-07-22-pi-ai-transport-truncation-classification.i18n.yaml": "sha256:196321fd1be24635a5d5c19564ad6ec358831dc05291aa8fb1871b739d99289e", + "bug-fix/2026-07-22-pi-ai-transport-truncation-classification.md": "sha256:fcf0b5259c094395e9fb157f6d0c0aa2703717558a5acf0111826970851c3fd1", + "bug-fix/2026-07-22-pi-ai-transport-truncation-classification.zh.md": "sha256:80feea3d4ef39b5601c4bb69478795324d7ed085e00e5ca24f313bfea2de257e", "bug-fix/2026-07-23-demo-web-builds-client-bundles.i18n.yaml": "sha256:f657e2166a05d6164c1ca65560bdd168ed969f7354217d8ec7a00274fd6c4307", "bug-fix/2026-07-23-demo-web-builds-client-bundles.md": "sha256:a9d8dfcd153b1d10479e9d42848f07adf89398cb685e1a09afafcecff14e36d9", "bug-fix/2026-07-23-demo-web-builds-client-bundles.zh.md": "sha256:dd06828964980798f343b8aafdeded2580b5b2e4c794305221fe73dab0a7eba2", @@ -79,15 +394,27 @@ "bug-fix/2026-07-23-tui-generic-card-markdown.i18n.yaml": "sha256:51fec8e6d7a998fd6189e70d32a6be293500abc8435b23257449e6f6d15a0053", "bug-fix/2026-07-23-tui-generic-card-markdown.md": "sha256:7dda1114a392737465837e014059c1049da37330e3069b74f6e2ea34eccbce6e", "bug-fix/2026-07-23-tui-generic-card-markdown.zh.md": "sha256:5040a1aaa8ff9dddeeb572a628410a79d870a90f84be00bf421e4b63e1974a4b", + "bug-fix/2026-07-24-empty-model-response-is-retryable.i18n.yaml": "sha256:f3ba95cc44c5b7df57dfb130696c49e90a5735ee581aa067b4f38b5a95ddbdf0", + "bug-fix/2026-07-24-empty-model-response-is-retryable.md": "sha256:843ce9a3126ad4b5f6cd70181cb0654a0dfe0c256b951fa5bcd48f4f726a7459", + "bug-fix/2026-07-24-empty-model-response-is-retryable.zh.md": "sha256:d2aef2659116d4ebd751be2b69e740bf35c1a82c5acf241b934a8c091efa0d6d", + "bug-fix/2026-07-24-recursive-python-sdk-session-notifications.i18n.yaml": "sha256:e1e8f31bff8b8ef03944f52ccdfb85d40ab5ffdfc57cf59859819bde11abc317", + "bug-fix/2026-07-24-recursive-python-sdk-session-notifications.md": "sha256:9cbe61d21e2d1696f5db5f92f6538974643091c44cb5f076f74c3d33ef0c2fb4", + "bug-fix/2026-07-24-recursive-python-sdk-session-notifications.zh.md": "sha256:db0ff4835d159e34763ca988559bb67d2222bc6dac2aa256dca33b6c8a9648c2", "bug-fix/2026-07-24-tui-turn-end-stop-reason-notices.i18n.yaml": "sha256:8ac9e40a4a7ac1f526b5a23656579414322bd947d991cfc02c0be0e1aacf2d68", "bug-fix/2026-07-24-tui-turn-end-stop-reason-notices.md": "sha256:5a1f6ba4baf25ad412eda3601ee074aeb607388da0375979797797a81eeba9da", "bug-fix/2026-07-24-tui-turn-end-stop-reason-notices.zh.md": "sha256:a7bbc530b9fc5e31ceb0f72d87edc720a0bd04ce7613b2ca9f9704cd5e7f682e", "bug-fix/2026-07-26-intent-draft-same-tick-echo.i18n.yaml": "sha256:c623947c4fa00e6d4b51792c7972ba09582bbcb7605beb373725c0dd666f2c81", "bug-fix/2026-07-26-intent-draft-same-tick-echo.md": "sha256:fa8b1417b2cdd3deecbf8e55bdddd73dd3a8c6e3486fd399b0b8bdf317e56373", "bug-fix/2026-07-26-intent-draft-same-tick-echo.zh.md": "sha256:00ce72552dbaa11562fbc541343a5d33f9449edabbe6dd354eb879a7d4d530f8", + "bug-fix/2026-07-27-glob-sampling.i18n.yaml": "sha256:79237365f4ba19661edd78d70126a3a3ffb036a9c3e24a2ac2db2206c4983099", + "bug-fix/2026-07-27-glob-sampling.md": "sha256:f78ac78db8235d8df4a88d90243a2cf321505751eed305a06a14e1c481154b1d", + "bug-fix/2026-07-27-glob-sampling.zh.md": "sha256:9669a6f06fd603834090accf22d12e60dd79741a6a1a8a5823abff9d497841be", "bug-fix/2026-07-27-question-composer-rows-do-not-shrink.i18n.yaml": "sha256:9b8fd6c3fc5f6527890d74a70372de90ade6db5fa957246d4bbdc06ee06e072c", "bug-fix/2026-07-27-question-composer-rows-do-not-shrink.md": "sha256:0411033becc2835ce53cd268c9fa149830274c9f61016514087bea89562cfbb8", "bug-fix/2026-07-27-question-composer-rows-do-not-shrink.zh.md": "sha256:41f024f8b7a4587a92026b4d36d77879086bc86716b0b28bf2131b85db35ee75", + "bug-fix/2026-07-27-stable-snapshot-refresh-volatiles.i18n.yaml": "sha256:436fc7cff97426aa752ec402bc860722c082f86372b2ab2460d2dacd68ef3f44", + "bug-fix/2026-07-27-stable-snapshot-refresh-volatiles.md": "sha256:55a37e236ee99307dbdf3649ff4a1a218be4e6bff01d93a0778de198e0a77dff", + "bug-fix/2026-07-27-stable-snapshot-refresh-volatiles.zh.md": "sha256:a27be8de90d47603187a76defae12259e5e9a201ffa32bf9a6cf2020b4d26c84", "bug-fix/2026-07-27-tool-card-single-row-fields-inline.i18n.yaml": "sha256:4b94aded16c60628d22414dce524e8a98a8af4fff298805ee7efc63cae02c90d", "bug-fix/2026-07-27-tool-card-single-row-fields-inline.md": "sha256:40adcd522a9a2eeacc6f2b0196d1f24888a4f57830b7490a3be3d78c86c4e968", "bug-fix/2026-07-27-tool-card-single-row-fields-inline.zh.md": "sha256:a79d56c9b781442ee596b47707d1a8c80abcd6466094b01802189c8e55f16da7", @@ -97,99 +424,432 @@ "bug-fix/2026-07-27-tui-step-timing-trails-tool-cards.i18n.yaml": "sha256:280b93ece72662501f65edd58a00cdafb5b5941e4ef1314d7198fab18950cb03", "bug-fix/2026-07-27-tui-step-timing-trails-tool-cards.md": "sha256:112bdbde16b6023eeb5b8a79cd2a711385e7198d51bbfc0520e9612acaa95c8a", "bug-fix/2026-07-27-tui-step-timing-trails-tool-cards.zh.md": "sha256:fc4e7f778ea63c4583cf81132c264cf6c4b9cc3e1818778061b0497ff16b8ef6", + "bug-fix/2026-07-28-themed-scrollbars-and-reserved-gutter.i18n.yaml": "sha256:d353a7bfae9299513c35f3f73bcaed7ea3430ad116d6ad633b7c412c01774133", + "bug-fix/2026-07-28-themed-scrollbars-and-reserved-gutter.md": "sha256:671108fbcd2979661f9680c05fd5d710b492bb1ebf81183051f1b54b89d8ad6b", + "bug-fix/2026-07-28-themed-scrollbars-and-reserved-gutter.zh.md": "sha256:82d89db786326ffe38f25369c10ac0ed4c3b413d2c15c61277d013105a3d83a4", + "bug-fix/2026-07-28-web-agent-runtime-context.i18n.yaml": "sha256:53659a2156aad033026b7469af5c6064c4b35f2fdf553881605217385d596cc0", + "bug-fix/2026-07-28-web-agent-runtime-context.md": "sha256:ccf8851718c6c07acec11b7394db930abac28a0909c8ba275076ae3cb3728524", + "bug-fix/2026-07-28-web-agent-runtime-context.zh.md": "sha256:5d7af25e4f69e8852d946f6186ff15e0dd79e14b1a0ef7826fad283392335015", "bug-fix/2026-07-28-web-conversation-polish-sweep.i18n.yaml": "sha256:27e60a7d822b201dee65eebc8335da8edd416ee19b9b89c056302bae69c830fd", "bug-fix/2026-07-28-web-conversation-polish-sweep.md": "sha256:92647f06202f8711107918da9d9947767385a8b6307e772b1e868b0b1cb07412", "bug-fix/2026-07-28-web-conversation-polish-sweep.zh.md": "sha256:95ccc18f4b35396bdcabee8b8745e75008f6c07f829fd8719bbb35d77ac0fd95", + "bug-fix/2026-07-28-web-gui-feedback-loop.i18n.yaml": "sha256:0641e02c68148db0dbba9c2ffce68a509625fdae34f698ef0ae01772aac29a8e", + "bug-fix/2026-07-28-web-gui-feedback-loop.md": "sha256:e177aa63e1b7b7038628d3476b174f671b71bf4bd06f1228f738f700d85a088d", + "bug-fix/2026-07-28-web-gui-feedback-loop.zh.md": "sha256:4f04d6f08cf32185c37ff31e4fdd785feb6318688f931747f9505cd9b8234d85", + "bug-fix/2026-07-29-atomic-web-image-admission.i18n.yaml": "sha256:9c34b0cc78f9607e08ed780436771e805b67fc51328b6b3b29557ad7db6e950a", + "bug-fix/2026-07-29-atomic-web-image-admission.md": "sha256:6aba3f878eb4ab7fbcb2c85c493b42e75b9d51671dea953edcb32adda7783724", + "bug-fix/2026-07-29-atomic-web-image-admission.zh.md": "sha256:9eab22e2a95f5297699885199230cd27078e49ea597816584f5a2f1b3780bb1e", + "bug-fix/2026-07-29-human-transcript-append-origin.i18n.yaml": "sha256:7954d1a6fdd7205cb0dd8290fa1dc7a9686cd0538d5d9ad52eee3874dc7cc0b1", + "bug-fix/2026-07-29-human-transcript-append-origin.md": "sha256:1a025201fbf751e830a9150551bbaa7991287acd948cb2daf6f1799a0b9c05dd", + "bug-fix/2026-07-29-human-transcript-append-origin.zh.md": "sha256:3fafc4e32a0403240dadaa028f8fd914b176e0708eb28126c6cc5dbe95dcfe86", + "bug-fix/2026-07-29-pnpm-setup-runner-isolation.i18n.yaml": "sha256:7a0cbb6e2ad598c6bad4277dade7acaae7264659654fc413ac872b76cc6b4dce", + "bug-fix/2026-07-29-pnpm-setup-runner-isolation.md": "sha256:e3f5fb291dc57089422487792266df1e08671f9037c3c99d094c8ce1c46d3687", + "bug-fix/2026-07-29-pnpm-setup-runner-isolation.zh.md": "sha256:c96b1f307dc1d3a5baeebdfd4edadd12024934c395c9167afe828944757a3b7d", + "bug-fix/2026-07-29-sticky-composer-conversation-scroll.i18n.yaml": "sha256:d95819864a2285de5a1f0121f012527caae28097df5fcb4b254c84a6732b886a", + "bug-fix/2026-07-29-sticky-composer-conversation-scroll.md": "sha256:393c6624ad50c2c7172103f3f279afe1179a6aa20da2b8d84ae1cfca2ee13fbb", + "bug-fix/2026-07-29-sticky-composer-conversation-scroll.zh.md": "sha256:4da0f25ffe6fd7d4d52fe101e71fee03cd34cf89423966e174655697b076fa2c", + "bug-fix/2026-07-29-web-details-session-lifecycle.i18n.yaml": "sha256:6ec0f3fa1900a808088a3a2f9e1f8e68d5c8a85fca293afa28fc84d56418c99d", + "bug-fix/2026-07-29-web-details-session-lifecycle.md": "sha256:ece5177396252736d509acbdae20e469f25e5858370a0be4754d4fcac21e118d", + "bug-fix/2026-07-29-web-details-session-lifecycle.zh.md": "sha256:61e302a7f0b97406050bea11413463825e8876c95038f6e136ca1cfb146b7704", + "bug-fix/2026-07-30-approval-panel-command-cap.i18n.yaml": "sha256:b39b6289a18ee3c0bce1c81eac6daab8d348c5696404b8ba11ba6d5c0d76a253", + "bug-fix/2026-07-30-approval-panel-command-cap.md": "sha256:cd9b396cb775c6c380c4c1a6ec0d6407d182af930b98be3e541195b77cc24b9a", + "bug-fix/2026-07-30-approval-panel-command-cap.zh.md": "sha256:ff82dcc976d98bb34ed2ebc48107c1369873c58f3464fd0346c8d641aa890304", + "bug-fix/2026-07-30-bounded-overwrite-diff-basis.i18n.yaml": "sha256:e961273c8ef34743397ae076bedbebc7e577d09f6e4e06dfaa472935d9d95bcb", + "bug-fix/2026-07-30-bounded-overwrite-diff-basis.md": "sha256:68f228fd91930a99b660fba5338daa7745a6f96c3e796f3b7b6a1d8e91e850aa", + "bug-fix/2026-07-30-bounded-overwrite-diff-basis.zh.md": "sha256:8c12df7093870ab9a70639bf7512315faf079f052a1ddf80041097e4bf2acb34", + "bug-fix/2026-07-30-composer-context-stack-order.i18n.yaml": "sha256:c7d2132eb3c6d43437c13e9097af01a10e5182dc24c4c5b40279447a301b5c13", + "bug-fix/2026-07-30-composer-context-stack-order.md": "sha256:838fc5a7214653159778a24225236646f8c9d249c26bbe97699f86fe719fb1ba", + "bug-fix/2026-07-30-composer-context-stack-order.zh.md": "sha256:24bec19b5280ee2590cfba65aac521f03c10394c7a248f434a1f10d31cad98af", + "bug-fix/2026-07-30-hover-popup-pointer-grace.i18n.yaml": "sha256:bc23163743fcf317893dd33bf7288b793d01d3f036d35636fb92fd8d3910ffaf", + "bug-fix/2026-07-30-hover-popup-pointer-grace.md": "sha256:4ff7b5b93d2003bdac56f3635ab8e067920327456e5daf383862062b17b4e1f7", + "bug-fix/2026-07-30-hover-popup-pointer-grace.zh.md": "sha256:f277fdcc69e9da55c3eba5d1aeeff11f68ec990d7a5ab6eee2bc8bca316c454e", + "bug-fix/2026-07-30-multi-select-custom-answer-composition.i18n.yaml": "sha256:cd1385c005ed2dcf902fa0b4246c7153ad206c0e0ab599b4544ec7703d38791f", + "bug-fix/2026-07-30-multi-select-custom-answer-composition.md": "sha256:53608255289abc55fd0857baf7a0b8a91897a270522e75e657c35f413d17fefc", + "bug-fix/2026-07-30-multi-select-custom-answer-composition.zh.md": "sha256:fd0f9992fa1e7d31d604078bfaf4392c00d58e910624e337f5626c9cbbcd489d", + "bug-fix/2026-07-30-source-checkout-workdir-distinction.i18n.yaml": "sha256:a44c3743c44f6000779aa5b4bccc66057076337480dcff9e35fea2d74c143a82", + "bug-fix/2026-07-30-source-checkout-workdir-distinction.md": "sha256:e05169d4ee99d3d41e7808256bdd97a596036073e94fbb3ca257fd28315cfc37", + "bug-fix/2026-07-30-source-checkout-workdir-distinction.zh.md": "sha256:ceac75ec7d974e31dbddb28dfff42cab15d76736ba8cc0c2ae2d807cde14beb4", "bug-fix/2026-07-30-tui-adapter-registration-race.i18n.yaml": "sha256:50b7a32e11591719c249258ecc2ec0f45e58f1a04050d2e53f6e2650f58ba137", "bug-fix/2026-07-30-tui-adapter-registration-race.md": "sha256:7e17eb1dd8f92e1efb7a18477df277b13580840b473ffe8a5309fc70ec3cfa3e", "bug-fix/2026-07-30-tui-adapter-registration-race.zh.md": "sha256:efcbd3d82af6a58677efe1a0580edd715945b6a93418fde47badac9c01a29866", "bug-fix/2026-07-30-web-details-default-closed.i18n.yaml": "sha256:2af5559d727f3e4afdd4946eaf89ac212c81db611db78dbd9bfabb1c4661db17", "bug-fix/2026-07-30-web-details-default-closed.md": "sha256:27a280a817c8048718bb22927e7d9572cf99ffd0c044631e99e0fd6ea236876f", "bug-fix/2026-07-30-web-details-default-closed.zh.md": "sha256:e047c7d02cf4b95b0c7f78f4b79af254091294b05cc75e98a8bb860ae2074189", + "bug-fix/2026-07-30-web-transcript-log-ordered-projection.i18n.yaml": "sha256:741b95ad6f296758c6c3dff0236d473c2d7dca5112ef36968677c3155a5372a9", + "bug-fix/2026-07-30-web-transcript-log-ordered-projection.md": "sha256:2a4969298747cf80d6e2052e438434e9919005bd6d867373fbeb0153f3cdfd36", + "bug-fix/2026-07-30-web-transcript-log-ordered-projection.zh.md": "sha256:68c3ad521c671f64d909b0cd7d5c4e87ca06d251b7bb32a9b22b58a3dfde135a", + "bug-fix/2026-07-31-code-runtime-python-settlement-fixes.i18n.yaml": "sha256:94d761854a365327913087879e2d12384c39ab37814301aa58d12ee9079852f1", + "bug-fix/2026-07-31-code-runtime-python-settlement-fixes.md": "sha256:c728533d06835a851704357d997d736b4f31ae75c314af5343c209ee0429e9a6", + "bug-fix/2026-07-31-code-runtime-python-settlement-fixes.zh.md": "sha256:1710e99d570eac525c0a22930d85796c11485de254830cee4c1b86ca13e4725d", "bug-fix/2026-07-31-composer-text-layers-share-one-scrollport.i18n.yaml": "sha256:36fc626dcbf1e276a36713e85860752cef0b36a5881f2493bdeb6d9654621b02", "bug-fix/2026-07-31-composer-text-layers-share-one-scrollport.md": "sha256:3ece47f91ee5f7354ef73ca0562aafeec19f89a19d9a64c9e0a565fe6d8c2049", "bug-fix/2026-07-31-composer-text-layers-share-one-scrollport.zh.md": "sha256:578e772ecbc1a4a39bddbb0a9f3fdbf67c70ff8c8952cc80d2caa3d8b76e9b36", + "bug-fix/2026-07-31-english-compaction-checkpoints.i18n.yaml": "sha256:d2727c1a67a615afbc4b21ad2a26936a298302a9cef9e666c17dfed4d31391a6", + "bug-fix/2026-07-31-english-compaction-checkpoints.md": "sha256:54922365cebb173ea5bb0691a162e4d9743a146ca1eab8355ae6379cc6f5aa5c", + "bug-fix/2026-07-31-english-compaction-checkpoints.zh.md": "sha256:d0ec253b79e3d698df2bbc37967bb49d35b4e553ce8f427cb502eea3bbc0e997", + "bug-fix/2026-07-31-fork-anchor-floors-to-event-seq.i18n.yaml": "sha256:8fc15495a7450ff24740919496764aec978aed0c3014c59d5ff8033a01f5bca6", + "bug-fix/2026-07-31-fork-anchor-floors-to-event-seq.md": "sha256:e36d3c6af393d02e872ba9e0f99ab64dd64246bf6e91ad9e5ae8c9619b206840", + "bug-fix/2026-07-31-fork-anchor-floors-to-event-seq.zh.md": "sha256:790b8bb755b9b5919eb200036e45fd133987399299b95d6a1bf20ace30a676da", "bug-fix/2026-07-31-hero-visible-while-blank-session-opens.i18n.yaml": "sha256:42218a762ce0141d3cb43deb6c688d3705cdc4405e03851d486c78f3d25b70ef", "bug-fix/2026-07-31-hero-visible-while-blank-session-opens.md": "sha256:a40992e89736131f5c487e5357848f14accd06e135dbec9ce242c968a5b11d43", "bug-fix/2026-07-31-hero-visible-while-blank-session-opens.zh.md": "sha256:e0cc576bc1c196affc9220ddabf15d735c347029c530c56454f0e585979101e1", + "bug-fix/2026-07-31-resume-selector-batch-projection.i18n.yaml": "sha256:68736dd4414a2d2b591d8733d0a909b4a5043b0ebf01c3d53ba28abfc755470d", + "bug-fix/2026-07-31-resume-selector-batch-projection.md": "sha256:c449e99ae3c5d221fc9c06da32faa1052204a24fa5dc57b37bfd0cddfb8e6d10", + "bug-fix/2026-07-31-resume-selector-batch-projection.zh.md": "sha256:fb261b802bd5171f0a096d91221c12da03c97032df4ebd3c5a2b59da8f362d0a", + "bug-fix/2026-07-31-same-basename-workspace-adoption.i18n.yaml": "sha256:0ffce3c562285c09373b298a72940e33e3608fb6800a0165a910a71081fedbff", + "bug-fix/2026-07-31-same-basename-workspace-adoption.md": "sha256:9387805f6493a341239295ba9ac73ce0a03365721ec5621a75a342b2dcaea0a2", + "bug-fix/2026-07-31-same-basename-workspace-adoption.zh.md": "sha256:40c9f1a9c68c50e0f16b15c1333130f3f53106187cbb007409e9261dad32cd34", "bug-fix/2026-07-31-tui-diff-context-line-accounting.i18n.yaml": "sha256:cd39ae2646fdc6827bf29a63953b5463faa37d5b404ae8cc3c0913c47bc92d0c", "bug-fix/2026-07-31-tui-diff-context-line-accounting.md": "sha256:57066bccd22c2dc2c3546b363de73d13b55ff8683ee12b17a81ed2bcf536645b", "bug-fix/2026-07-31-tui-diff-context-line-accounting.zh.md": "sha256:a658d886c5eb203f5f30a6fac70ad18e4a24cf756746254723d8f1d144653c04", + "bug-fix/2026-07-31-web-stop-preserves-queue.i18n.yaml": "sha256:2570be350f8c9ea551dbc53e8f7fd845aa89757d3eeca8069415a9769f46e490", + "bug-fix/2026-07-31-web-stop-preserves-queue.md": "sha256:96a45b45d65cf03617bad8380bfe628fde41282cc0c193aedc272c4d7e48f02c", + "bug-fix/2026-07-31-web-stop-preserves-queue.zh.md": "sha256:c7e565c6d9fb1362f958c70fce0eff12b33fab0a05a7d864dd8b0954f70ba57d", + "bug-fix/2026-08-01-ask-user-delegated-caller-guard.i18n.yaml": "sha256:b5bbc8f3da9281f1e4e642d2da76c580a654227322a8aa93bfaab26cf1990f25", + "bug-fix/2026-08-01-ask-user-delegated-caller-guard.md": "sha256:e8b52a235fd83fed94953dcdc9f6e0fd074e767268d870962d064b950f03da59", + "bug-fix/2026-08-01-ask-user-delegated-caller-guard.zh.md": "sha256:612238eab2193b69b934876ec89d3b40edae034c54c3edfffea2dac99ca9ad1d", + "bug-fix/2026-08-02-goal-round-wrapup-message.i18n.yaml": "sha256:086bd56b582d279cd1173ec507958ff7b3354c2f298dae30ce75190bf95f545f", + "bug-fix/2026-08-02-goal-round-wrapup-message.md": "sha256:c9e441cffc800ebf7eed52e916118ac56ad02bd0a3a304a1421d79ed4f452a2e", + "bug-fix/2026-08-02-goal-round-wrapup-message.zh.md": "sha256:743832ad2d7486afa2173bbe3dc5ab3b8df18287512dc4583f8db0ed6d86cd77", + "bug-fix/2026-08-02-message-fork-actions-require-completed-turn-tail.i18n.yaml": "sha256:a923376234038ea8d70210c22a445b4fd933dc7537108b5efaea305c35aae817", + "bug-fix/2026-08-02-message-fork-actions-require-completed-turn-tail.md": "sha256:232dbd25767c70b398b21303b09f3e03981148a106f08fefbf73e607ac26506b", + "bug-fix/2026-08-02-message-fork-actions-require-completed-turn-tail.zh.md": "sha256:e343f392c9a49ab93006a71f0ceab91d20f3994cbb6a0f220dafe4c88fbd2246", + "bug-fix/2026-08-02-todo-first-composer-context-order.i18n.yaml": "sha256:130fad68ea68a0d2dbef704288f4fd4b9ba6bae6ef7e376021631b62d249956a", + "bug-fix/2026-08-02-todo-first-composer-context-order.md": "sha256:0d8c29d7e67990f85d07ebde9c44a3247188e9910c47376a772e8ae951fd7bbe", + "bug-fix/2026-08-02-todo-first-composer-context-order.zh.md": "sha256:ac1d1b9bdd18aedd847d59624716e5ffd4aa0fc966ed93d69e8899ccdcedca88", + "bug-fix/2026-08-03-hmr-initial-scan-boot-deadlock.i18n.yaml": "sha256:80114779ec809c23251be5acea561ff3c5959336471d3241414c59dfaadbf746", + "bug-fix/2026-08-03-hmr-initial-scan-boot-deadlock.md": "sha256:4e4c4e0e512c1bd14bb30ab5749f2bb7b8ef8986781b157f1a6dea0641ed2c91", + "bug-fix/2026-08-03-hmr-initial-scan-boot-deadlock.zh.md": "sha256:b0f7708f29d078e511d03dbffc6ad5e16de1fad4e9ed36faf6fdeee08ddfc32d", "bug-fix/2026-08-03-tui-long-session-render-costs.i18n.yaml": "sha256:f65f7bf8fc84c7a1f022ee393c8d969c06d9bde8bed3a0206de86fb35b246ac6", "bug-fix/2026-08-03-tui-long-session-render-costs.md": "sha256:6ecf2ef831f527f361ade18a882d79bc6eccf15cc676d05728e7753f41cde051", "bug-fix/2026-08-03-tui-long-session-render-costs.zh.md": "sha256:5f44e707b332e13fa06d625212173ea055c1c3c0aee60888435a0ff099ec6037", + "bug-fix/2026-08-04-composer-tab-gutter-reservation.i18n.yaml": "sha256:5b72e7887b79b2131ee5ce3c31b4a617e3fc94a11f966d219c7df224f9c2b8e8", + "bug-fix/2026-08-04-composer-tab-gutter-reservation.md": "sha256:932b30e959b96d7ac5074972021fd9b139842724273658658bc0a1cc37f6aec9", + "bug-fix/2026-08-04-composer-tab-gutter-reservation.zh.md": "sha256:a64dd06c0e8846df978bcf5341aab22cba6fb9f2aa11ef204bfa3695e21baf64", "bug-fix/2026-08-04-large-history-pagination-call-stack.i18n.yaml": "sha256:9bb1ceec013521116ee73eb9ec28c5708ae9520d6e53dcd4a3621fd2283b215c", "bug-fix/2026-08-04-large-history-pagination-call-stack.md": "sha256:38c5afd347b131abd6b73634d25210d593bcb1fd72c7ba501bad0b33fb639810", "bug-fix/2026-08-04-large-history-pagination-call-stack.zh.md": "sha256:2a2790b3b3400c747e20b998edfa96788b4035ccfa5fd4100dbc9a0e694ed30e", + "bug-fix/2026-08-05-context-meter-blind-to-compaction.i18n.yaml": "sha256:5bcff74782b608cc7826212be2b4e51fab298a6373400f6b35af57c727687495", + "bug-fix/2026-08-05-context-meter-blind-to-compaction.md": "sha256:285a1b5dd1e899408adf8675a876f0ec1a3a78b440c42446b338070120699289", + "bug-fix/2026-08-05-context-meter-blind-to-compaction.zh.md": "sha256:ab912621eafb8ced6e2b9ad7e31c61b80e23a087649f51eb6b1b3782470e3d77", + "bug-fix/2026-08-05-turn-tail-actions-require-a-completed-turn.i18n.yaml": "sha256:edc5eb2eae409be322dc18697d1730f07bc19ee2f9ae1bbfad4a76f242a932d7", + "bug-fix/2026-08-05-turn-tail-actions-require-a-completed-turn.md": "sha256:3b0a4fb7511f18a504bd3c45f111ecd0eb3705cee42c54deb6fd571db3116a16", + "bug-fix/2026-08-05-turn-tail-actions-require-a-completed-turn.zh.md": "sha256:7d854e56bffcab0c99d61b90f6e77ccc926aec35467fa2341d335ab1bffdd886", + "bug-fix/2026-08-05-workspace-blank-session-reuse-membership.i18n.yaml": "sha256:30217d332aab2a1136919534de5eaeee310f3a7aa0aaceb48a72b3f44750665f", + "bug-fix/2026-08-05-workspace-blank-session-reuse-membership.md": "sha256:a95e599d2f035bfda28b7fec8b346364aad28ccb825fd69f0952b62907c8c62a", + "bug-fix/2026-08-05-workspace-blank-session-reuse-membership.zh.md": "sha256:e862a75b6f290713deaa221b9d46153e0156f35463a55fb32171f9487f18bc6b", + "bug-fix/2026-08-06-api-key-format-validation.i18n.yaml": "sha256:83c9f4aca0f65020f0a456733512b77fb324d694d6c32b2f92efb8ef0542872b", + "bug-fix/2026-08-06-api-key-format-validation.md": "sha256:0a18b8dccc5a67f8b6dbbc8f596e73cc95b797dc6280fb48455c2a0cb9229b76", + "bug-fix/2026-08-06-api-key-format-validation.zh.md": "sha256:fa8ddc9b35d2f1b25407881797f4b407d906528a0c0ab3a99f11a16ea8e7512f", + "bug-fix/2026-08-06-list-agents-residency-vocabulary.i18n.yaml": "sha256:816a582c4a71304b0499c18aadea56a180d876dd81c4b22f6c1798e2e37d21f3", + "bug-fix/2026-08-06-list-agents-residency-vocabulary.md": "sha256:f8ccd05c93bf7b5ee389c50c0ec248c29b04bbed9cca0354354032bb9099cc33", + "bug-fix/2026-08-06-list-agents-residency-vocabulary.zh.md": "sha256:5dbdc24587823be669a727104780dbbe59ef9a510dd89893b79a93d0ba8289ed", + "bug-fix/2026-08-06-onboarding-step-owned-takeover-chrome.i18n.yaml": "sha256:232aa90d4d0cf2cc331e07a7ff5268b63efa8ba7c45913a015ca8cabc2185d3f", + "bug-fix/2026-08-06-onboarding-step-owned-takeover-chrome.md": "sha256:ac16c2027de6f9cb1e7f38e2c1aa8b6fc260d4beb4207b9df0a62e2a4e395ef5", + "bug-fix/2026-08-06-onboarding-step-owned-takeover-chrome.zh.md": "sha256:8ecc9300d608e8968d12621b354ab32c119648950f5b604ec3883b617075e60f", "bug-fix/2026-08-06-plan-narrow-viewport-regression.i18n.yaml": "sha256:fe0539da9ce4015c6deaf585350e586e99d86e0073a36e131b6f1f62cc13382b", "bug-fix/2026-08-06-plan-narrow-viewport-regression.md": "sha256:ccecdf52213dd1f6ab9935db31906520b83a7d9166f612376877d612230d1331", "bug-fix/2026-08-06-plan-narrow-viewport-regression.zh.md": "sha256:be10805f0cd5a4f0812c883ab7f3e1e9396b579be455696d5cd726434a26b3e1", + "bug-fix/2026-08-06-provider-credential-lifecycle.i18n.yaml": "sha256:2639d3b97e0f781f6a951e82466b03364e0ad41d7d980fb0ed684848ef5b996c", + "bug-fix/2026-08-06-provider-credential-lifecycle.md": "sha256:da4c09b04f3e93283897b57a3b25ed1641e36bc248d622444f0baffd074acc6a", + "bug-fix/2026-08-06-provider-credential-lifecycle.zh.md": "sha256:70ada2d1cebc59e5aee9fc23b9b5d8b1ad6a74723b3313569d6f83e2beb638e2", + "bug-fix/2026-08-06-reader-scroll-attribution-observed-top-ledger.i18n.yaml": "sha256:e7100c54f67df5ef93af36b5af54018995674fd734bd5b8936c8671c1250d37d", + "bug-fix/2026-08-06-reader-scroll-attribution-observed-top-ledger.md": "sha256:51699701171414ef83c88921242539602685ac9b5de654860f17691bfdb6dda8", + "bug-fix/2026-08-06-reader-scroll-attribution-observed-top-ledger.zh.md": "sha256:91b6b3742075f4a586a804ac4add8de3c4b57ff578e6d6f76dd296e89e1b760f", + "bug-fix/2026-08-06-token-surface-unpriced-replace-compatibility.i18n.yaml": "sha256:dd13d2717a8555e8dbfd6c33938c1eea714ac57ed50e3db792381237b7d676dd", + "bug-fix/2026-08-06-token-surface-unpriced-replace-compatibility.md": "sha256:b1b034bfd8dcf4d1181cf5848a41ecc3c66e9b55b576d5973bfee749af0b242a", + "bug-fix/2026-08-06-token-surface-unpriced-replace-compatibility.zh.md": "sha256:df7994d75351aea633642bca2fde5e41d78ff6e090637c253cc5755d664f8bf3", + "bug-fix/2026-08-09-broken-preset-roster-rows.i18n.yaml": "sha256:945ca2ed436331d7b4f69a6eda26d7a0eff9ae03512842384f65ad433ad5f4d4", + "bug-fix/2026-08-09-broken-preset-roster-rows.md": "sha256:4abc2668d328de3b7194fa76441acc79619cfa0653f0f985b1649f7b1f116320", + "bug-fix/2026-08-09-broken-preset-roster-rows.zh.md": "sha256:7918e051c4a18bfef9905cf5cbacb9f761314673771fc9ac975a6a67a6856228", + "bug-fix/2026-08-09-filesystem-absence-observation.i18n.yaml": "sha256:b0e7440c6527bdb4bec5f69073858f755f7a7ac1f6cfcb4d3bb8bc7f40cbdb3d", + "bug-fix/2026-08-09-filesystem-absence-observation.md": "sha256:524b6d965587dc2a4c2c27440a20b189714f9112714df0984e6753553af061e6", + "bug-fix/2026-08-09-filesystem-absence-observation.zh.md": "sha256:51a52dd1534c2db42ca07cd292e57eb46e18b1d1a8f458e6adc3efab926bf5ff", + "bug-fix/2026-08-10-minimal-preset-owns-rl-composition.i18n.yaml": "sha256:97df20c38d7794cdf3d0d8dbad23e72417953ab6444cf2ad4cf40e91d1c36b84", + "bug-fix/2026-08-10-minimal-preset-owns-rl-composition.md": "sha256:5c35a0b892d47f637aec94dde869d2b3f1c22b238ae7c6dd9d3a59104d48827e", + "bug-fix/2026-08-10-minimal-preset-owns-rl-composition.zh.md": "sha256:b69dd72ab2ae5bf3118e3bd14dd7cf351ce00a1bdc5f119c25c8b56435503bc1", + "bug-fix/2026-08-10-pre-plugin-theme-bootstrap.i18n.yaml": "sha256:36d6f4bd2f7abbb1ae3445fa994a378f338386d3937ccd92ec14c7c1de9f6687", + "bug-fix/2026-08-10-pre-plugin-theme-bootstrap.md": "sha256:8b051324f4906081490889f7c4f07942f8c445ea3618844a8bab09f5652d688c", + "bug-fix/2026-08-10-pre-plugin-theme-bootstrap.zh.md": "sha256:fccf87f851881ba55466a02ef19cd7e4bb21efa1b15d963d3971011d651788b7", + "bug-fix/2026-08-10-session-row-identity-covers-the-preset.i18n.yaml": "sha256:509177adf55f65d3a95441f36a9e5162bd4d136f6feab99b5106e4817c2ac251", + "bug-fix/2026-08-10-session-row-identity-covers-the-preset.md": "sha256:cc9d9dab67b10c7bcf887e3994b065c9b3934bf8411c78dc29f5de0be97c8670", + "bug-fix/2026-08-10-session-row-identity-covers-the-preset.zh.md": "sha256:070e9812ff59ae8275c9b80a2315551f383aef88397821d0af9d3342ca54c2ff", + "bug-fix/2026-08-10-slash-catalog-follows-preset-switch.i18n.yaml": "sha256:0aa612625c4e63616431f816d0b83d8d64633f8b80a00bf7a1161e82513ed6fe", + "bug-fix/2026-08-10-slash-catalog-follows-preset-switch.md": "sha256:868fbe20dd7fa3f5c5aedfd02b7a3b6b06b3aefbcb18c3034ece7a7eb844e27b", + "bug-fix/2026-08-10-slash-catalog-follows-preset-switch.zh.md": "sha256:a2b5f18d97342fecf6fc564c63a6402835f944d906daf5bbd51efb3973bd8321", + "bug-fix/2026-08-10-subagent-empty-terminal-message-output.i18n.yaml": "sha256:286523f5dbe8c3af34837a6f6dbb5d3f2b91631201eb676be7ec57594e8d4d43", + "bug-fix/2026-08-10-subagent-empty-terminal-message-output.md": "sha256:7ad6b28a0e7ffe967394539d9f8e62aa816bf6c683092942394d334aad533ed6", + "bug-fix/2026-08-10-subagent-empty-terminal-message-output.zh.md": "sha256:f265027ec3318fb59b460ece17513436ba627c92145a75fb2f7098d7df05c4c6", "bug-fix/2026-08-10-web-favicon-dark-mode.i18n.yaml": "sha256:859c4399f9a017a68ba89552fdafa05e73c0599d94cee9551c84ea5b749a14f3", "bug-fix/2026-08-10-web-favicon-dark-mode.md": "sha256:4d17e247abd76ae3aed5fb4e075fd66a2838292f89f7021c82a79fe37ed905e6", "bug-fix/2026-08-10-web-favicon-dark-mode.zh.md": "sha256:7bbff8a3b7061c127afcc75cd2a8043b02a999b78c0180edd8f7e4807fcfe71d", + "bug-fix/2026-08-11-bounded-background-job-admission.i18n.yaml": "sha256:056a521c98dd8a9b6adc77e10d69eedc853d6445ebcffb77b5076a920a7eba6e", + "bug-fix/2026-08-11-bounded-background-job-admission.md": "sha256:062815ecdff86fec2bbf7d09f23613c76f8e927ed3f7dff524615320c646244c", + "bug-fix/2026-08-11-bounded-background-job-admission.zh.md": "sha256:121ac57f536a0dd30f4e8ba67b14d16a663322dc383813b94bed7e934af0fcad", + "bug-fix/2026-08-11-owned-run-finish-reason.i18n.yaml": "sha256:8be8b5c88dd12e9ef2a8966415940db86ab5bc95ce3e1c86f7b67b729c521a80", + "bug-fix/2026-08-11-owned-run-finish-reason.md": "sha256:0c938976de495ca828d7bba2c9b9aefbb193387ed95f2d87e7fa0081f7771705", + "bug-fix/2026-08-11-owned-run-finish-reason.zh.md": "sha256:168388201eb7d7518966c0a02da43e337376f53fb7f72b7b40ecf07cae16fbd7", + "bug-fix/2026-08-11-preset-authoring-agent-validates-its-own-composition.i18n.yaml": "sha256:54b949b351a31a3bc4628320b6e3eb71bf6d72fff85f3f85e4d20569aa933845", + "bug-fix/2026-08-11-preset-authoring-agent-validates-its-own-composition.md": "sha256:1c4902ad59b216e7f8d44b7250d4a1c1512e52ccc045a71a0dd333119dee3d52", + "bug-fix/2026-08-11-preset-authoring-agent-validates-its-own-composition.zh.md": "sha256:485364d0152b8e9270958a0dd7d2b3449cc71f154984feb562ae81b1c9634edf", "bug-fix/2026-08-11-preset-card-description-clamp.i18n.yaml": "sha256:d50452503b59aa22c81617888f9391f31f12a779c4b18efb2b4b6de1bd9702a6", "bug-fix/2026-08-11-preset-card-description-clamp.md": "sha256:7eb8db697f3ad3dea8c0a6045331c05730a010404a89e2b08348cb7b0fad26c8", "bug-fix/2026-08-11-preset-card-description-clamp.zh.md": "sha256:6d2f7b55ce02275a45adfdd853805e7daf2d6534929b77beb86685a54fc34f85", + "bug-fix/2026-08-11-synchronous-subprocess-exit-cleanup.i18n.yaml": "sha256:5a7d91500fe9b89c33660e2be4a82a9a4febead77d58abb1842df2cbae5c53a2", + "bug-fix/2026-08-11-synchronous-subprocess-exit-cleanup.md": "sha256:d2eb41db32c2b03c225ee744f3019603825cf2393e2e6c4c72bfdfcf906a4255", + "bug-fix/2026-08-11-synchronous-subprocess-exit-cleanup.zh.md": "sha256:56f5ae9ce8014deb1c66fca64fd5503d9c2ae5368d4739bce4653424e2efd0cd", "bug-fix/2026-08-12-collapsed-sidebar-shared-entry-motion.i18n.yaml": "sha256:3ce4f6e39e173fc304bf64deca9c95bcddc1dbb492e065ca8c267a7a40788588", "bug-fix/2026-08-12-collapsed-sidebar-shared-entry-motion.md": "sha256:7b169aa4543edfc965de5a8b7b9e60aa9d9d5218693cd0b57908e2d482280723", "bug-fix/2026-08-12-collapsed-sidebar-shared-entry-motion.zh.md": "sha256:88db36c698800bf55c3c7531d6f92665576d978c29c15ff7d74215fb93376cb1", + "bug-fix/2026-08-12-composer-overlay-seat-width-compensation.i18n.yaml": "sha256:f239efd11a5000d6f6727d15ed233e4962b1642c14ccdd627d9afad651a51988", + "bug-fix/2026-08-12-composer-overlay-seat-width-compensation.md": "sha256:8174a70d74182cc1c899417223b63faad0cca25e02071286ccd3d06a111f98e5", + "bug-fix/2026-08-12-composer-overlay-seat-width-compensation.zh.md": "sha256:b9a6bb903b6c34ba8a01e640c00d0338dff42368dbf4fb08d54933af83a467a1", + "bug-fix/2026-08-12-fix-pwsh-terminal-overlay-dup.i18n.yaml": "sha256:73129b72d00ec40a804ba4c2dd48201a0b7c4c81d72bf408067c136a7ac81c40", + "bug-fix/2026-08-12-fix-pwsh-terminal-overlay-dup.md": "sha256:fe3f0acea5b93baa5047cc0ed01a3ce6a609e0ed133baba121fe045965719a69", + "bug-fix/2026-08-12-fix-pwsh-terminal-overlay-dup.zh.md": "sha256:5b062f63c8a1949f1d623d05de89dd06c5734d1899c6fabe241b73647a92e4a2", + "bug-fix/2026-08-12-full-session-turn-step-counts.i18n.yaml": "sha256:6e5ac7ecc036d0c8675306c74e215d2e97ca9db896a693c0f5787c8a986e96cb", + "bug-fix/2026-08-12-full-session-turn-step-counts.md": "sha256:4dd626bf4434062859a806c7858f0d3d6b338fbde7ad1bff606a8d490fa0e242", + "bug-fix/2026-08-12-full-session-turn-step-counts.zh.md": "sha256:23a0f047bb204f704d7fefed04705f1a4703552733cbcdaac5563634dcf0512f", + "bug-fix/2026-08-12-max-tokens-turn-end-notice.i18n.yaml": "sha256:2f5af3f613ef61799bdc16517cf0c4d38cfcaf33564bd3f6d73d07009697d7e9", + "bug-fix/2026-08-12-max-tokens-turn-end-notice.md": "sha256:25ce16e2f7da42e16e9894d0d1bed05131e44d41518c2c3fafdbd5c39b0c3c95", + "bug-fix/2026-08-12-max-tokens-turn-end-notice.zh.md": "sha256:07fc3319895a40e1561a36c01f8f5a4bb8b6a516b446fe90d538899bf2b6beb5", + "bug-fix/2026-08-12-onboarding-reads-every-provider.i18n.yaml": "sha256:fd49ff25fc4555e46802de9c8221a049881780bf11efb5c85a1a0bc3fbd43c5c", + "bug-fix/2026-08-12-onboarding-reads-every-provider.md": "sha256:52e1e05a01e78ba50f24a99acd7daf2e8258e98e8845e5cf6d9eed19a38033e5", + "bug-fix/2026-08-12-onboarding-reads-every-provider.zh.md": "sha256:0c1cf0ea06fc96c35f84fb8027b145efa4ff4712db51d2f9cc6fa660f1c0f3b0", + "bug-fix/2026-08-12-resolve-store-pwsh-aliases.i18n.yaml": "sha256:08f83395fc336bed1cbba31988a3a6e5121d28f6566fcde0819e7d09fb9f4aa5", + "bug-fix/2026-08-12-resolve-store-pwsh-aliases.md": "sha256:146b9e5d1c844b585183b364de74ad0f339d6933a22e965401e93e6d68195801", + "bug-fix/2026-08-12-resolve-store-pwsh-aliases.zh.md": "sha256:d13f429f786fb5bf48198a0123f87db28f68545b1a1d68065e38914bbf5799ef", + "bug-fix/2026-08-12-unlink-fixture-junctions-before-delete.i18n.yaml": "sha256:314eda26fa4168bcf6c34a81c63d4162518cf4114082d49f101b0ab2558b5d13", + "bug-fix/2026-08-12-unlink-fixture-junctions-before-delete.md": "sha256:fc22c87cbfcfeee454cd4ca45c7370b7a10a2afb0670294d97422443c06149ea", + "bug-fix/2026-08-12-unlink-fixture-junctions-before-delete.zh.md": "sha256:12536d8ed04280f3a14d682d9d43a538ddb795d7a600110de875ea090a1816b5", + "bug-fix/2026-08-12-unlink-stale-profile-fallback-links.i18n.yaml": "sha256:4c891e7ae749596ef4f06740b250832756b31f2ff2763b0684bf612d23aafe61", + "bug-fix/2026-08-12-unlink-stale-profile-fallback-links.md": "sha256:153237035456f7878f2b143493e8507c46fa551ab01ee60807c8d123d9bed16f", + "bug-fix/2026-08-12-unlink-stale-profile-fallback-links.zh.md": "sha256:cf0280fd69f4b6cda7e549fa405fde9c702fadc9bb75dc7abce72a57ab01b3dc", + "bug-fix/2026-08-13-bounded-cold-blank-verification.i18n.yaml": "sha256:798322e92995a76b175196d3093e831d5d4547e8c48943218baa59a5ae613e8d", + "bug-fix/2026-08-13-bounded-cold-blank-verification.md": "sha256:0f3595c91affa420dab6f6032bc39fdc6ed2ef5a0d284ed44e3cdfc0072a28b9", + "bug-fix/2026-08-13-bounded-cold-blank-verification.zh.md": "sha256:97657d28806da556d76647abf7a6734643b97c6a13817b9b3f9ff6f5d504d1e2", + "bug-fix/2026-08-13-feedback-note-editor-popover.i18n.yaml": "sha256:2609175133fd7de7b3a948914d8043a66302f7bc27bb90590e031a7162ba740a", + "bug-fix/2026-08-13-feedback-note-editor-popover.md": "sha256:b802ea4b077f12ad6ae262159308518656d610774ae4d6fd2015f864f6f4cc94", + "bug-fix/2026-08-13-feedback-note-editor-popover.zh.md": "sha256:d0be45150ae20e4f73fc28bf882ab5c1932fb27eb345e656bd4c5ae9f8b48543", + "bug-fix/2026-08-13-oauth-only-providers-withheld.i18n.yaml": "sha256:cb34a8477755612cba7f80bb8e0f5364bedbc17b96b577e6e27f39dba7c74bf7", + "bug-fix/2026-08-13-oauth-only-providers-withheld.md": "sha256:d9e06120239e90eafae17a8df4c87db09752c62fe2c16b97ac03c0bedd00144a", + "bug-fix/2026-08-13-oauth-only-providers-withheld.zh.md": "sha256:2ca47aad833b7c791ccc8090af0cf20b5a7220d3764f6a53abd2cad0f0a8d7cf", "bug-fix/2026-08-13-safari-textarea-soft-wrap-reflow.i18n.yaml": "sha256:23c26323f92a2172fd30fd724177b84d012cf4e18f1eff79ab092d4e0687ad4e", "bug-fix/2026-08-13-safari-textarea-soft-wrap-reflow.md": "sha256:f9edea8501df36d444d84790ef9b0ae5bed4283a9cc5a5403800b80908f3db39", "bug-fix/2026-08-13-safari-textarea-soft-wrap-reflow.zh.md": "sha256:ddcf6bb67823d19dc98964fcb9d663a10bcf663573394cfd7b235d9801d6525a", + "bug-fix/2026-08-15-max-token-replay-state-alignment.i18n.yaml": "sha256:de552d3ecfc021004a58fc1913c5eeb001ecef2777c82dc9720714be85dee229", + "bug-fix/2026-08-15-max-token-replay-state-alignment.md": "sha256:a9a519d8fdcd4d9fcc57adc0039d4d7bca8fd3f4d6e65910f2a280aa1494a785", + "bug-fix/2026-08-15-max-token-replay-state-alignment.zh.md": "sha256:a1d0229cc36a76d4b8b7defceefada0e00be5ba3a0e33295067b7403ef985572", + "bug-fix/2026-08-15-persistent-bash-keeps-controlled-prompt.i18n.yaml": "sha256:9fb062cdd41c23ca2137de9954f962acea2c0286356ce8bdb6f9275840db41c6", + "bug-fix/2026-08-15-persistent-bash-keeps-controlled-prompt.md": "sha256:099fd51594b18c256477908b834dfeb0adefae37951aad5d578f88194d3621a7", + "bug-fix/2026-08-15-persistent-bash-keeps-controlled-prompt.zh.md": "sha256:d5e207828e95097bead324ca0df7b2c1d815e0afaf52d8d46e46e626206e7b27", + "bug-fix/2026-08-18-rail-search-outside-click-self-dismissal.i18n.yaml": "sha256:23e9e6028f95c1dd6543875e80debf49b11b780b0fa1bdb5988c4f204f2a67d3", + "bug-fix/2026-08-18-rail-search-outside-click-self-dismissal.md": "sha256:76f43ad63a0a8f93ed56239f5687025533fcbe012b44a726305f6b59fbbb1396", + "bug-fix/2026-08-18-rail-search-outside-click-self-dismissal.zh.md": "sha256:d481e3378c57bb0465221a3c1922d606a3e04dd42c191db32ddc8119629709e3", + "bug-fix/2026-08-18-tool-row-file-open-failure.i18n.yaml": "sha256:0bbdde71531a22c54ed773ca8a35c8fa9bc315ecf08a9f650ea1275fb2419af9", + "bug-fix/2026-08-18-tool-row-file-open-failure.md": "sha256:d2bb45deb00fe0225754af56371acbf73625a644c47b3ffaa9e56a6bd881283b", + "bug-fix/2026-08-18-tool-row-file-open-failure.zh.md": "sha256:36889f811fe8f74efd7f0f7b776eb8bcfe09b6e566b5d33eb08bc20b191c5682", + "bug-fix/2026-08-19-deepseek-reasoning-passback-every-turn.i18n.yaml": "sha256:57ce04a3990a73a8e2eb7fdad23acdc52a10de40396a469cfe23edf00647c5cb", + "bug-fix/2026-08-19-deepseek-reasoning-passback-every-turn.md": "sha256:56e44e0fbd99ac191977cd0f2807c8ac075befe1e5aef779dbb6f08592fad9e8", + "bug-fix/2026-08-19-deepseek-reasoning-passback-every-turn.zh.md": "sha256:1797247f8cb725607df9139d8355a84151f141dba34f6071b670851214b2d659", "bug-fix/2026-08-20-composer-edit-range-from-selection.i18n.yaml": "sha256:c91ed2d9cb2a9891011fcbbe46885bc1808e36831279d56bc5cea0b9b1515b55", "bug-fix/2026-08-20-composer-edit-range-from-selection.md": "sha256:e36920dee0318a35eaf49bff8c574698902f3be51d6115d40a3f97fa1436bd47", "bug-fix/2026-08-20-composer-edit-range-from-selection.zh.md": "sha256:41f44adc93797cf9073f19f954b6ac87147a2e6806f1ad051c80c3423f0175ae", "bug-fix/2026-08-20-composer-reference-decoration-keys.i18n.yaml": "sha256:cadf1de336aa2756d1bc1c20c7679449390b0a7a4217fe9602996801b6bc1958", "bug-fix/2026-08-20-composer-reference-decoration-keys.md": "sha256:0093eabd710f10ae1faca53be01c9404a9d63cf6a2cf4dbf226e458e6315e201", "bug-fix/2026-08-20-composer-reference-decoration-keys.zh.md": "sha256:a5fb2a748cf6ff8353d536448a5469e731157ccc2d0bb43210ea5dc44dd8ed31", + "bug-fix/2026-08-20-explicit-web-index-paths.i18n.yaml": "sha256:5568882d66cce46924ba9c3a3dbadcf8aa7c8f2f47d781f2634cfbbd47c0cd01", + "bug-fix/2026-08-20-explicit-web-index-paths.md": "sha256:a4e7ce37c340b4546fd3e65c360bf02ed416483655349dbb1a4df2db108c6714", + "bug-fix/2026-08-20-explicit-web-index-paths.zh.md": "sha256:32a98dc42d30c70ce7b0d65ac2cad3189b5ec060649d1223138a4359d4248d5d", + "bug-fix/2026-08-20-plugin-owned-shipped-preset-root.i18n.yaml": "sha256:46530d1dd908a70d4116ebc561faaccb3a5707ecacebaa88e9dbfe3ab68c278d", + "bug-fix/2026-08-20-plugin-owned-shipped-preset-root.md": "sha256:f6bc872eb5d6e6063329e99b13ae3131a8ddac2e88c5f516fa12001ceb11ab2a", + "bug-fix/2026-08-20-plugin-owned-shipped-preset-root.zh.md": "sha256:2a1e3184fbf3014d6bd6d610b6bb7cc9e9e27ec2b6c3bf62a9b2c34e15ab4026", + "bug-fix/2026-08-20-running-draft-primary-send.i18n.yaml": "sha256:cd9ee0b8cfe1940ad128264b0b6052f73cfbb7a54009a961dd7cdd9580fc1fd9", + "bug-fix/2026-08-20-running-draft-primary-send.md": "sha256:5edf5531471a4f4c763a5ed5d5f69795048b727f91b1df062ada7c51f18e4e78", + "bug-fix/2026-08-20-running-draft-primary-send.zh.md": "sha256:140082c1996876bfe1fb0bef15ad1cb1a64a4874f009f1460096b830d346c2f3", + "bug-fix/2026-08-20-turn-error-survives-same-turn-retry-history.i18n.yaml": "sha256:237403e3d4dbaadbb570fc338cf27d4a56ea44aa17b0ffec727bc4e408c4417a", + "bug-fix/2026-08-20-turn-error-survives-same-turn-retry-history.md": "sha256:f591b7c016dd6cf4ba44386c2db0a6342bd5f61245b86e9ebc9d6abba9c15399", + "bug-fix/2026-08-20-turn-error-survives-same-turn-retry-history.zh.md": "sha256:944eaa0745673c0e19ef06a38de305e3a7bdf9962d1b86cb3b074ad2cf107fca", + "bug-fix/2026-08-21-deepseek-files-inline-fallback.i18n.yaml": "sha256:2731213aa2e4d831c2912713dedff8f14245853bbe6c155107aff5c2383c4020", + "bug-fix/2026-08-21-deepseek-files-inline-fallback.md": "sha256:abca9728f1dbeb12adfc004104190f58b26cac66da9dd26d23738f649cc2a635", + "bug-fix/2026-08-21-deepseek-files-inline-fallback.zh.md": "sha256:dc0a4ad13533846baf9ab77c0cec3b4a2f7b61731a432e52bf2d727f9a94019d", + "bug-fix/2026-08-21-inline-user-text-projection.i18n.yaml": "sha256:54239dd46a45fb2d94bb11600f1835a56f7c2402205c3185533602c5c19e029c", + "bug-fix/2026-08-21-inline-user-text-projection.md": "sha256:79095aa36402ff97fe103eefce374263604c782c2edcb66073ee4a42b14853f0", + "bug-fix/2026-08-21-inline-user-text-projection.zh.md": "sha256:c03855414a55d6ced07f6ca0d0a3db5bc368967d5141e25546178619cd077411", + "bug-fix/2026-08-23-win32-utf16-nul-truncation.i18n.yaml": "sha256:fd27aaf586f7dc7c25a20d8edafe9865f1e39b4f35a0a94719e07799bc06a8f9", + "bug-fix/2026-08-23-win32-utf16-nul-truncation.md": "sha256:18802f9953bb420f71fc564e3669ad48341259eaf00af753915e090c9172b5d2", + "bug-fix/2026-08-23-win32-utf16-nul-truncation.zh.md": "sha256:cedc8ef2040e63e1a98e5a5a3b8e25cc726bc3c7a2bba4d5a0199d39bd046d6c", "bug-fix/2026-08-24-system-prompt-section-order-ties.i18n.yaml": "sha256:f7a20bddd4544738ec0dbbfc52ea931f42317defa1674beb9a3c0daebd52fc2d", "bug-fix/2026-08-24-system-prompt-section-order-ties.md": "sha256:108a97346eb7a62f1ab01f48dbb9fdd965e8991f53e382b0f501b916af0e9e23", "bug-fix/2026-08-24-system-prompt-section-order-ties.zh.md": "sha256:3deaddfcf9736b3ff8d61b51093d7e46fdcc86103705033e4aa4c9d043794b16", + "bug-fix/2026-08-24-token-meter-surface-fold-plan-commit.i18n.yaml": "sha256:a2263932769ee7b9b118c4d695c8792f6418525cc9d94302643d12bf0dcdbee7", + "bug-fix/2026-08-24-token-meter-surface-fold-plan-commit.md": "sha256:4e5f7e369710ccffeff737c9496a7d06731c58977c6712f13465ac77a0693e47", + "bug-fix/2026-08-24-token-meter-surface-fold-plan-commit.zh.md": "sha256:df7814c9a8909b1fd3b30606cc559c0bbac3f12e9a167eca6891bc646a6a1c7a", + "bug-fix/2026-08-26-composer-gesture-editable-gate.i18n.yaml": "sha256:65064b8862f0d9e6b5da86d9b48ae934235660734c572093aa6df6a26fc85c15", + "bug-fix/2026-08-26-composer-gesture-editable-gate.md": "sha256:8d65d5a89a4304054533b6548c13e42c84a6b6e03547ce8012718d088acfbada", + "bug-fix/2026-08-26-composer-gesture-editable-gate.zh.md": "sha256:d096078b8b11ad4d5e0644acfced123404aa2f6659fb32b34b231cb3bb9fdcff", + "bug-fix/2026-08-26-pi-ai-grant-payload-json-image.i18n.yaml": "sha256:be2a6df8219a561d5d5283aa1b99a9d8ebb9e01a5768ecda15ef0065a5566cb9", + "bug-fix/2026-08-26-pi-ai-grant-payload-json-image.md": "sha256:c54ccfdc8ab9cbe1f4d9f64de2bf181f534ca749f0f3a1b3162cf1bb001b8c0e", + "bug-fix/2026-08-26-pi-ai-grant-payload-json-image.zh.md": "sha256:40107801f491bead9a65084f0b7b548a9e403e7cac7b9ceb5ba0dcf4a888b0d2", + "bug-fix/2026-08-26-question-drafts-survive-session-switch.i18n.yaml": "sha256:5f4db840d5ef74b60375992c3b73b91b524e769ef96af54ff5e2fd2091a48616", + "bug-fix/2026-08-26-question-drafts-survive-session-switch.md": "sha256:3447840e36786c72198d8213ea6fff2879c5c9d8ba582f36ddf2140eb70a1ce3", + "bug-fix/2026-08-26-question-drafts-survive-session-switch.zh.md": "sha256:13818ec1d18950dc6439719f58f9339a81c4e1a05f42ac30738e1bb5071fcc0e", + "bug-fix/2026-08-26-stable-turn-process-order.i18n.yaml": "sha256:ef6622b15c633abd4b0da49d2d17cd7416ae738c6eb2d6793d56c4df9a607188", + "bug-fix/2026-08-26-stable-turn-process-order.md": "sha256:936553b220e553776a872e6957f59f0ef6839ce0f9f99c5b7cc11424d4310038", + "bug-fix/2026-08-26-stable-turn-process-order.zh.md": "sha256:213ac73fc8e056fc1f17f504aee6b99eb9d82c786467f2101d7f1658848adaaf", + "bug-fix/2026-08-27-steer-followup-image-delivery.i18n.yaml": "sha256:de204c21e9ce8c53c07d6ec0af6504a1e275b38e2fe6212bcd0700634bf8d07f", + "bug-fix/2026-08-27-steer-followup-image-delivery.md": "sha256:fd8f65782d4acbab3a3a8579caed0fa69870322b78a51ab2d06829d27d7ef9ce", + "bug-fix/2026-08-27-steer-followup-image-delivery.zh.md": "sha256:38e45b0ef15f655b42c585727f59fd11ea6f1bb42f51543b3e2cfa04cff1b0de", + "bug-fix/2026-08-28-linear-stream-queue-drain.i18n.yaml": "sha256:9e1afc54af3142492a229821a35dbff6e5c13721c079e6d5ddd07375c9eb9c18", + "bug-fix/2026-08-28-linear-stream-queue-drain.md": "sha256:d1bb9620a796987e80f028b6833d7c1e537f1a4f93f261a27a4a338c19dc0641", + "bug-fix/2026-08-28-linear-stream-queue-drain.zh.md": "sha256:8c42b56759869c6e6d73c92962808608ac0f5a73cbeaf222ae899bbb6789298d", + "bug-fix/2026-08-28-read-image-extensionless-paths.i18n.yaml": "sha256:444421405f39e17064686efe66275bf3105ebf3ceda19ceea2f40c5fe049d2b6", + "bug-fix/2026-08-28-read-image-extensionless-paths.md": "sha256:db889ca9f6a90c95188131d82fd6a280e09183683b942a272debc467f264ef3a", + "bug-fix/2026-08-28-read-image-extensionless-paths.zh.md": "sha256:88d215dac5dc017339a71790fb832da37c24fae81cdea8508cb3ae59a66d4f77", + "bug-fix/2026-08-28-trigger-menu-stale-while-revalidate.i18n.yaml": "sha256:272ef47b778303cf556da4bc58fbfc4ece39660de73563ef9a1543948b680598", + "bug-fix/2026-08-28-trigger-menu-stale-while-revalidate.md": "sha256:f21bc1c8a6eac3d917a1cf748622090ed97993bd06669738a0a3acf024d01064", + "bug-fix/2026-08-28-trigger-menu-stale-while-revalidate.zh.md": "sha256:c5915178c672599f19b9e89567a29ac9ee9e7eec2b82fd946037ea992df55b37", + "bug-fix/2026-08-29-code-runtime-python-call-backlog-and-binding-metadata-snapshot.i18n.yaml": "sha256:5891245c5f93f4fac1bf352a27335ba9ef91bf3d530e9f166978959638773bf8", + "bug-fix/2026-08-29-code-runtime-python-call-backlog-and-binding-metadata-snapshot.md": "sha256:98b0f11aa71641eec4596169f70e9557755eef70430f39b9e6aa2ed8adad5828", + "bug-fix/2026-08-29-code-runtime-python-call-backlog-and-binding-metadata-snapshot.zh.md": "sha256:ab85357bf44a04d7c2f67845b5a1cd7c53cc431f4068a3238939ffad08470a3c", + "bug-fix/2026-08-29-code-runtime-python-load-and-dispatch-hardening.i18n.yaml": "sha256:bd834d1952e009b88fc2b8bb6c44b8f83bf16e7d4966ade62dfd50e90df39fd1", + "bug-fix/2026-08-29-code-runtime-python-load-and-dispatch-hardening.md": "sha256:0c6fbf707912f66bbfee80ab235bcfd26b4337b8bcbc6a06898587e114e65a18", + "bug-fix/2026-08-29-code-runtime-python-load-and-dispatch-hardening.zh.md": "sha256:938283229ae4eca3c86deed05f570f9521623513e6af5476b0e315abfbae102a", + "bug-fix/2026-08-29-code-runtime-python-reply-backlog-and-surrogate-count.i18n.yaml": "sha256:13b61776b25a9532296f2d7637e5446648c6c9e1fd471fdfa29a5b3b2db43b94", + "bug-fix/2026-08-29-code-runtime-python-reply-backlog-and-surrogate-count.md": "sha256:a19c66218381d3b3639d51d61c33bf1d92d3d52a04fd9929f20f7899f5cf3b0e", + "bug-fix/2026-08-29-code-runtime-python-reply-backlog-and-surrogate-count.zh.md": "sha256:0b2e6d9e107a21b21107faa1c112139a35a449718e680b1ae0129b19b5d6c93b", + "bug-fix/2026-08-29-drill-claim-precedes-the-drill-edit.i18n.yaml": "sha256:c496bec9d8fc2fa172d258c4eb786b1ef445cabd925c21207409d5e35525d2de", + "bug-fix/2026-08-29-drill-claim-precedes-the-drill-edit.md": "sha256:900796819da7e27a683cdfc5038fd4e74e228e4d0f42cf32a12170167e619fdb", + "bug-fix/2026-08-29-drill-claim-precedes-the-drill-edit.zh.md": "sha256:9c1fba0a84dab324495d62dd1dfbd928b2a608bcc644558923cee4404436754a", + "bug-fix/2026-08-29-windows-atomic-replace-retry.i18n.yaml": "sha256:0a0c0f6b9e679bfc35cfa87a0103c6115c89545bab52243d83aca6de4bdcf654", + "bug-fix/2026-08-29-windows-atomic-replace-retry.md": "sha256:7706103c846a6d349a3b22025afe68e68e34f74ad74ad806bf171135577cee55", + "bug-fix/2026-08-29-windows-atomic-replace-retry.zh.md": "sha256:f888c6a0a69483957372b0511ddd13c659400d8629a231a50bd8f5aa5f89b3e6", + "bug-fix/2026-09-01-host-goal-pause-aborts-turn.i18n.yaml": "sha256:670caaf2216ee3f7ba7b86b6e7e475a258f7cfff83b675fede8b12f6bb147c7c", + "bug-fix/2026-09-01-host-goal-pause-aborts-turn.md": "sha256:e4301ce3a7de253cf6088a035e34fb0bf5888a06552219e28afaa19a042673ef", + "bug-fix/2026-09-01-host-goal-pause-aborts-turn.zh.md": "sha256:ec922ecc0b99907fcedd1c092a74382f8f295fb7f39aefc2e1155b79b250b4ea", + "bug-fix/2026-09-03-fully-qualified-workspace-paths.i18n.yaml": "sha256:edd2935fb843bec2cd5cf4b5916a732da257a796f484afe5ee24478d93048af8", + "bug-fix/2026-09-03-fully-qualified-workspace-paths.md": "sha256:3545b29554509f4c8854a9557a34ede4320066ac075f5dcec20e4abdcb275c15", + "bug-fix/2026-09-03-fully-qualified-workspace-paths.zh.md": "sha256:0d6cc7d24ed732bc59af8175b28a10d6e9d14cb2b92359279bf89a9435c90236", + "bug-fix/2026-09-03-hidden-windows-subprocess-windows.i18n.yaml": "sha256:2e5bcbd321006c22d6dc8e5de237f35b86839b48762c4d68a45334badf167b2f", + "bug-fix/2026-09-03-hidden-windows-subprocess-windows.md": "sha256:2e26223d6b6cb7ffd098f4eb761bb44b669a1119b80d4ddff7d0ad03fb8ebff7", + "bug-fix/2026-09-03-hidden-windows-subprocess-windows.zh.md": "sha256:30b64a935e3adce7b9114c580c427d058876928a10e97deb3981c58d517c768c", "bug-fix/2026-09-03-session-search-result-reveal.i18n.yaml": "sha256:ad9dcedeb25ab3eddbc51660935abaf6e6e92eefb66fd14f8852ba5f30e725b5", "bug-fix/2026-09-03-session-search-result-reveal.md": "sha256:ce8983a9ffa3d1b59946aeecf0e10177c8316c3621d5d0718a03e8eedcd05fd9", "bug-fix/2026-09-03-session-search-result-reveal.zh.md": "sha256:cd3ca0290f259a252e0b19fd0f15ac62232847be6f186e16f72652044a034bbe", "feature/2026-06-14-acp-agent-client-protocol.i18n.yaml": "sha256:006795baa43ae962a8d125cc0f1e9f134bc2ee9fb758b6e7669e3fa0126e1918", "feature/2026-06-14-acp-agent-client-protocol.md": "sha256:6828c0af74bb3fb96206ca6b21c0e56a000b50e4744aad4bc2c05092f3a5a31b", "feature/2026-06-14-acp-agent-client-protocol.zh.md": "sha256:ba104e841a1fb84edbd3b6c8119d50445b7785255a7a8d13bb9ac8a2cb4d2e69", + "feature/2026-06-14-acp-multi-session.i18n.yaml": "sha256:f788bb94325480844bd47d90d393c594070e96d7aa018342ada1bc438b6c7cb0", + "feature/2026-06-14-acp-multi-session.md": "sha256:13fec933bac65ff296f8e72b3acfe5627c11fada42adc715f1fcfcb9266865f6", + "feature/2026-06-14-acp-multi-session.zh.md": "sha256:94b398fde7dbce9c37cffeab4529c3eb698d5a75c4152bd9b4f13d5d1aec998b", + "feature/2026-06-17-filesystem-tool-schemas.i18n.yaml": "sha256:f96db43f37c7ec2254b46eecfb4e3a36a4c6f257ad3b47f36fabf263d7902b30", + "feature/2026-06-17-filesystem-tool-schemas.md": "sha256:063068decd8610c0fe6fa0cc56d1bb31e0256e3a9ec08c7454f8d97eae279037", + "feature/2026-06-17-filesystem-tool-schemas.zh.md": "sha256:4542bd2a09d9c4fca9b592e41a9752298aa03f5724e23e91c9e9ecd76ff28544", "feature/2026-06-18-acp-terminal-and-tool-rendering.i18n.yaml": "sha256:79592f96bb25713d01865f37972a6919b2bfb3b66368df0f275bbd59d09ebcf6", "feature/2026-06-18-acp-terminal-and-tool-rendering.md": "sha256:946d0c580705ef2e7c7ac1897ada074e72f2ec4209c1e7531b6eccf116e9aecc", "feature/2026-06-18-acp-terminal-and-tool-rendering.zh.md": "sha256:fd815817925a038f79b52b6fab43abdb2d655db3ec07974ce1320ea3674f2afc", + "feature/2026-06-22-acp-subagent-backend.i18n.yaml": "sha256:cdcf46b80055bac08245d5b0ae52752339cb751eda65becbbceb17eb7d980d62", + "feature/2026-06-22-acp-subagent-backend.md": "sha256:abd48c09c7c909c8dd3f6861cdc076a56d6b19ad870fcaba5a27ed7db433cf5b", + "feature/2026-06-22-acp-subagent-backend.zh.md": "sha256:7e702480d60bb261d7e01e807de42a1f81a62c85f8aa59c87774471eb00530ec", + "feature/2026-06-24-workspace-context.i18n.yaml": "sha256:12f5f4296febd7ab4decc83215f75f8cfb17dffe4a3d68a6318cc05875b42358", + "feature/2026-06-24-workspace-context.md": "sha256:4321ae1f1eafa4d9c865dcecf4eabce431f5e114a808b1365108e6c68e9e094d", + "feature/2026-06-24-workspace-context.zh.md": "sha256:2c96fd3386cf09e7e18a78bf828e21b6a8647eb875214c30883394ba03bb10ee", "feature/2026-06-25-ask-user-question.i18n.yaml": "sha256:8ed9d420908e79650a427c82970407c0b8fd49e00e129d2bd0bf3ff3e0c63ed4", "feature/2026-06-25-ask-user-question.md": "sha256:d9ecff7baec5ca59c61822f7a41e719c17558044b8d23a30a8573e794ed828b7", "feature/2026-06-25-ask-user-question.zh.md": "sha256:bdeb4869f880d6083563b4e6aefaa601d2fd1de7d46f3a7fa6e0bed376bc34ee", + "feature/2026-06-29-todo-write-tool.i18n.yaml": "sha256:bad7407408235ac0ab28627b910d3fde159d380eb46fee8ed1dda965e2b79cef", + "feature/2026-06-29-todo-write-tool.md": "sha256:21f0b9febc07e70deadf52ea7abb63c2a61194eb7004d9fa433b02281487fde1", + "feature/2026-06-29-todo-write-tool.zh.md": "sha256:e6e38b7aad78dafcef90fd30526b0d29e4617d7fa1b44327e5adf82cc5969b38", + "feature/2026-06-30-hook-bridges.i18n.yaml": "sha256:ce79fb902403bd8790b524c046dd7460b7f52969c6b30f8067b5826b1e037790", + "feature/2026-06-30-hook-bridges.md": "sha256:753421efb1d91de7adc573fa9717ee9eac0c88c0702067a4149b753aa109e68e", + "feature/2026-06-30-hook-bridges.zh.md": "sha256:87c75e47ffa1d2c2b3cc6038fe718a952fcf3ebb485ca1ec637f3d6d8479cd3b", + "feature/2026-06-30-hook-protocol-lib.i18n.yaml": "sha256:3545b0e36ac0a8ccd02ff4b355747a7431530ae8c12d2efe1d516687dc4185b1", + "feature/2026-06-30-hook-protocol-lib.md": "sha256:76fd45e8eec8faab06afb5393dfbc54555942f32e4939546d40fbf23622acf1f", + "feature/2026-06-30-hook-protocol-lib.zh.md": "sha256:217ad562326adfb90129c2c87437bbd0aafada9c976d053bf142f616203f0d1f", + "feature/2026-06-30-session-store-fork-api.i18n.yaml": "sha256:874b1f53eff4003028210c3f598cfe77bee7fcd69b950b69aea3a4059fa0faef", + "feature/2026-06-30-session-store-fork-api.md": "sha256:38508b6689e3cd253e968c0257f60f12b62544498ecc863631488f4a957a3eec", + "feature/2026-06-30-session-store-fork-api.zh.md": "sha256:2cb9dfdcb304b5f73588fd74895c63a0a02c2c9ac23da967ebff608543222b57", "feature/2026-06-30-subagent-observe-enrich.i18n.yaml": "sha256:08c2478ba394429f46c1e87a9f055e88704a9000e5d250d5600c0c85124cb17f", "feature/2026-06-30-subagent-observe-enrich.md": "sha256:0630975c3e325975a932f58a65a178b79c624dc56ebd29e288e96f5a189cfbfa", "feature/2026-06-30-subagent-observe-enrich.zh.md": "sha256:b9fbb44a7d81f4063faf3baaf97c382a2f5106be533feb4de792ee57b766c1a4", + "feature/2026-07-05-skill-system.i18n.yaml": "sha256:ed37e752eeb327fc436f910f96f9ad0fd429e0c9271e2c9268ede1304f9ac2ea", + "feature/2026-07-05-skill-system.md": "sha256:abee9fe973b9603f0a60e7efc034ab90910e3807d87862f8e7023b76624e09b1", + "feature/2026-07-05-skill-system.zh.md": "sha256:92cc3776bb24b29cec24f80a40a5939ed407c9240b97c93bb1bcac445682c571", + "feature/2026-07-06-explicit-tool-order.i18n.yaml": "sha256:126fefb60b6439a7bf962d9b4b028c269663855e72e56a204ef811e4f7a5fbb1", + "feature/2026-07-06-explicit-tool-order.md": "sha256:3fda289680337fcd07067ff2461469dfb1649ac9610c4cd46f1fe0fc1795f9c2", + "feature/2026-07-06-explicit-tool-order.zh.md": "sha256:37a1e54e9bfb21cafa7f664d0769d0c72c435ab4dda522c0cbff9c22be21f15c", "feature/2026-07-07-plan-mode.i18n.yaml": "sha256:c59b6a6c218d741cdef8edf625f1d015e409a39411fa64e65200fdebb1c49394", "feature/2026-07-07-plan-mode.md": "sha256:7bf1bb8e826edf68f0ec919dfd4f66955b935b46b4400d7de85fac3e4663edbc", "feature/2026-07-07-plan-mode.zh.md": "sha256:5b08cbcd8023f26744e481386177dd0e82423e8b0032829d0dbc22a92cced0cd", "feature/2026-07-07-session-prefix.i18n.yaml": "sha256:943c50f778521f1800009cebed56d9ec192fda23b5ee9025a4f2b0e4dd8bd729", "feature/2026-07-07-session-prefix.md": "sha256:1cfd8e46467111b671b0bd9c2370ef07316ff9b2846fecc0cd29389686c6bbf8", "feature/2026-07-07-session-prefix.zh.md": "sha256:9a15bbed3a53db84ac12e3dfb93b00bf93dabe6b9e39bebfdfc04e00ba8ff135", + "feature/2026-07-08-background-subagent-tasks.i18n.yaml": "sha256:a7f70d1c3a7164488f920716a8a47dbd93be25504a5240a19c9e48df64e48444", + "feature/2026-07-08-background-subagent-tasks.md": "sha256:8e6620ee8f53999b8236042496b5f8bf424eccde8551c3cb1096eca7cef5929b", + "feature/2026-07-08-background-subagent-tasks.zh.md": "sha256:7eb45fcaf7c647fd1687ad2ea632301040250b32ffbc0a8aca3538c910272b76", "feature/2026-07-08-repeat-tool-guard.i18n.yaml": "sha256:e4382e8d25f23d728f1869c5195723698842dfe5422443a22f21fa8ae9b2c63c", "feature/2026-07-08-repeat-tool-guard.md": "sha256:95df2c423624c5c56e0b3bb76ced49e91878c7e5096cfef0faf4b20203d8a2aa", "feature/2026-07-08-repeat-tool-guard.zh.md": "sha256:cbe63d163aa19fc5a63233b05c8f6ed9a8a0ca215cf6f337a3c1e8e48af11b28", "feature/2026-07-09-bash-backed-grep-glob-discovery.i18n.yaml": "sha256:8eb6ec1312c55b93c2d51c6e54585d6f4d5bf6db444fb9c336681848676e3638", "feature/2026-07-09-bash-backed-grep-glob-discovery.md": "sha256:908521563012a17d312de664f380444aeafffd401d2200ec97e7bf004bac9ee7", "feature/2026-07-09-bash-backed-grep-glob-discovery.zh.md": "sha256:52eec49e454357a7e0c3f27c8aaa63840b5822b5d103f49ed48a5c4f25081b00", + "feature/2026-07-10-agent-session-identity-and-log-location.i18n.yaml": "sha256:feda972852a0f58975a963ddb3fd597dd956bb845f639e7780f81531f9fae8a3", + "feature/2026-07-10-agent-session-identity-and-log-location.md": "sha256:3c15686ab8041aaf4ba89ddfa0e44fa6311d66af478e9dd349a772c3716d8fd9", + "feature/2026-07-10-agent-session-identity-and-log-location.zh.md": "sha256:c4d001f71690fccb31d86d0b837ebe950cf1c2361af5a37c425fbd35af059f77", "feature/2026-07-10-session-query-service.i18n.yaml": "sha256:5c3f2ce6db1add66b9cdb82d3d115dde0f68762810bdbf7558070b9ff98c371e", "feature/2026-07-10-session-query-service.md": "sha256:2d7cdb2629856eb16679c576c3d54b9f0468456ddc5be1cbaa4008d4f353033d", "feature/2026-07-10-session-query-service.zh.md": "sha256:48d5a2d5f679bad90124c19a2b7a563f5d6551274c2bef9b3ce3eb9612ba0649", + "feature/2026-07-10-sqlite-session-query-provider.i18n.yaml": "sha256:2960811a515908772c14f138551f479212a3ab0c0b6c0e853c0a0d4d9c04c9f5", + "feature/2026-07-10-sqlite-session-query-provider.md": "sha256:f350a0d1dcf0f0ce9e0fec208d554100874ff5b93947ddf15fbd08ad7f3d0c3d", + "feature/2026-07-10-sqlite-session-query-provider.zh.md": "sha256:733e1c0d3a52edb64400c8b80cc00b1ea9a67c55910f77562a5cd601301019a0", + "feature/2026-07-13-session-query-tracing.i18n.yaml": "sha256:8dfcc41c31d13474e0f8e00bd2983354f860f2d8e8b3a255f5448bbac13ee368", + "feature/2026-07-13-session-query-tracing.md": "sha256:76af305255f569b86a4c4fc00cd6c8a058926d507a8f5a56ca60b8211ebbf853", + "feature/2026-07-13-session-query-tracing.zh.md": "sha256:3681be5241766179ca1a01754a0314c9f8481f6f91c60fc95eac9d3a18398c0b", "feature/2026-07-14-time-context-plugin.i18n.yaml": "sha256:670c093817c77e093562e02f43984d42ed44ebcced7c91d09366839e412d05e1", "feature/2026-07-14-time-context-plugin.md": "sha256:618b121da38a8b610bcadaecf121ca823b2c8c13598c012b350c214b82fd238f", "feature/2026-07-14-time-context-plugin.zh.md": "sha256:1e9eee8ba427a6f2ee08c79e2fcb33c0948e67a80758fdf9f8c9f7dff9aea361", + "feature/2026-07-16-durable-per-step-time-context.i18n.yaml": "sha256:7521670265eacbdb875dadd45ad806ce2ae9529634998ce902c275ab18142052", + "feature/2026-07-16-durable-per-step-time-context.md": "sha256:2fd420bec9a40f7e2e4c7399176a243d193ec5e8e25328da1204361eecb1d1ec", + "feature/2026-07-16-durable-per-step-time-context.zh.md": "sha256:2c383c738f42e786a3d97398dc44dad91596a317eb44078243f1e5ac372ad512", "feature/2026-07-17-dedicated-full-screen-tui-front-door.i18n.yaml": "sha256:c04ec462f846887f349ffeb48aef8febf50f06903e7177ffd7679a694f6c1a57", "feature/2026-07-17-dedicated-full-screen-tui-front-door.md": "sha256:feb70faaad016965e8cc1bd7339947e48937fb3e8ea1425dada581073396f50c", "feature/2026-07-17-dedicated-full-screen-tui-front-door.zh.md": "sha256:71e4a4abf01e5fc46f7da60e0a66bca659c1ee3c4ea2c4bc20587844f33920fe", + "feature/2026-07-19-fresh-agent-ralph-workflow-tool.i18n.yaml": "sha256:e69fd6ea76f935fb364f18b828f0684045be629a3b5fbe630369d5f93b85a567", + "feature/2026-07-19-fresh-agent-ralph-workflow-tool.md": "sha256:943eeee9d14dcd3087f747506be03e1035a2d87509990905429ab23e22e7851d", + "feature/2026-07-19-fresh-agent-ralph-workflow-tool.zh.md": "sha256:1ea4026e56c6e13109f47b570f9ce81c59f04bcbb38db5abd3b2d318bdc3977b", + "feature/2026-07-19-human-goal-command.i18n.yaml": "sha256:29ee3554aa2335a3d85ff4743a1b427ae192ab428070ad4378615ac85877baff", + "feature/2026-07-19-human-goal-command.md": "sha256:9cfe4bc4c3bd05e59dabb3344139e29237fe9ca9804b3cac776043bd0c2943eb", + "feature/2026-07-19-human-goal-command.zh.md": "sha256:b29b38fd6536dd1578ef441cf587d5467b9a03eaba335d9cbe17a5e32f6a24fd", + "feature/2026-07-19-same-session-goal-round-driver.i18n.yaml": "sha256:cb7e2c23199366aab1c2399abd050d94ae5eab5b0430d0e96d9de4c522331a49", + "feature/2026-07-19-same-session-goal-round-driver.md": "sha256:fce94c819f720a972564afe7a1dfef1905c5f088154e5e13bfe5507e613265cc", + "feature/2026-07-19-same-session-goal-round-driver.zh.md": "sha256:cc32045a7f60f1d0c56a6b5c61f7b57f5651dbb3394dfa9d810462740f748867", + "feature/2026-07-20-dsh-cli-personal-config.i18n.yaml": "sha256:25a3c88118af6d6b56d538399aa181e7764289216a66ea51a9f3733aefdcc4dd", + "feature/2026-07-20-dsh-cli-personal-config.md": "sha256:0d6348018e34649721519025af1386b30c07762b90dcac85e56a7c05b36a99d2", + "feature/2026-07-20-dsh-cli-personal-config.zh.md": "sha256:baacd4114849530d2225f031752c3910ebdb87f2cac9d5960552daec4d3b793f", "feature/2026-07-20-tui-startup-slogans.i18n.yaml": "sha256:265d1fd79dae6c785201c81ffe2de3baa9fe9e3b6c0f84aac79c90f4040ced15", "feature/2026-07-20-tui-startup-slogans.md": "sha256:aaaab4b419d35ce24317b7730f15af0029878bf3d17c6f184b05138c2cd44930", "feature/2026-07-20-tui-startup-slogans.zh.md": "sha256:01fba568cd92e9c54857f6dba1a3a5a6a4d0e906f36915d7e64682e67d456708", "feature/2026-07-20-windows-tui-support.i18n.yaml": "sha256:fa7253a8e20308b216c21d201720a4b7d6b74ccc9a650c0d30081c9e5b6bf04c", "feature/2026-07-20-windows-tui-support.md": "sha256:abf80ade38ec4d9e558c0fa9b0ecc8877acc18442f4ed945ebc2f4b153d85087", "feature/2026-07-20-windows-tui-support.zh.md": "sha256:6690a7693b8a4c8ce495c13ae84d9dc81f41c691d217db3152ea0d926dffa0f8", + "feature/2026-07-21-continuable-background-subagents.i18n.yaml": "sha256:2d8f79ae76898217e927e037f337f65b7e1d49c553c0c719a5710688fbe39ff9", + "feature/2026-07-21-continuable-background-subagents.md": "sha256:ef300b8a9705149aa0e16b6540c5878e505333c80fbebc18360288111b347227", + "feature/2026-07-21-continuable-background-subagents.zh.md": "sha256:6fcc5b89c624b860ebc12afc5c04efdf147a1e6aacf3bbc6f8d513c363f63bef", + "feature/2026-07-21-cross-session-references.i18n.yaml": "sha256:6b0ec2f2d61a6807a733e5a97512b6f36eb1067d500aa30c69c0a964e29039a2", + "feature/2026-07-21-cross-session-references.md": "sha256:798908eb038391d239cef5b4a8c549a4f6fe2f4e692443514f0f0b1ddd7c59de", + "feature/2026-07-21-cross-session-references.zh.md": "sha256:5847ad6d3d19a5f71154cb6d4086a36a72695ff6f2d97f73ccfb041a0dc9e3bf", "feature/2026-07-21-dsh-system-prompt-source-path.i18n.yaml": "sha256:22efaf3237425fecbac1b40a444454e0fc244a3c85c2f6a14535de22ea777719", "feature/2026-07-21-dsh-system-prompt-source-path.md": "sha256:5fa554932c62a8bbd5a619581710d7f8b6b65d79ec1e340129cda96d279c5ae3", "feature/2026-07-21-dsh-system-prompt-source-path.zh.md": "sha256:995cd593074881c72510a6af3ba80108bbf986d49508cce9f698c2fcb493fd23", + "feature/2026-07-21-instruction-load-all-dedup.i18n.yaml": "sha256:8355cb3e30dab043df91579c9f9300f684bcc70ea36b211b6879acc6d6faba41", + "feature/2026-07-21-instruction-load-all-dedup.md": "sha256:ccc4db9687273ed12a9bc6ae5a35abc05051ac33fc3ddbdbd2ec0fccddb35e19", + "feature/2026-07-21-instruction-load-all-dedup.zh.md": "sha256:b55d85db8e7409360e0751c643ca444a871d6142e804f9dd30d39d8218ef5578", + "feature/2026-07-21-local-instruction-overlay.i18n.yaml": "sha256:747924cd629b624c864cce511138c97e975bdda2b3e587cd0df87174aa260b02", + "feature/2026-07-21-local-instruction-overlay.md": "sha256:111f56c7762e9b8435c2c6092338cc4b295f128c3cea0e2cc6d1f323489be5c5", + "feature/2026-07-21-local-instruction-overlay.zh.md": "sha256:2234465431d9eebe2fa9420a1f1c67b12932431faefc94e19a9feb6ca9c11421", + "feature/2026-07-21-log-backed-session-titles.i18n.yaml": "sha256:fa15734cd1b4599d96c754c0cf26157fd879b54f80fa47a8f6f6b5ae4916330c", + "feature/2026-07-21-log-backed-session-titles.md": "sha256:306b941927fb25e98a7ef33234fde0620fb83fd2c6b171b1a257a33a34f4a131", + "feature/2026-07-21-log-backed-session-titles.zh.md": "sha256:4b7167e8d75113be0e9a0e4d71e6ff4591ce5a0549f1c38003b3f520b2a91c89", "feature/2026-07-21-tui-auto-pane-title.i18n.yaml": "sha256:0e9ad2adf0810811b2981435e761fd57b1e2cd89e5aa084522150c41e3cf3876", "feature/2026-07-21-tui-auto-pane-title.md": "sha256:0dd4572eacefc5fba508df8d1ff3f28b55e10b4b178e1f9773db3434a337c527", "feature/2026-07-21-tui-auto-pane-title.zh.md": "sha256:3ac195bf3fc63d40c2d36e6a38d6a41c73d8b21daa5e668412fd28b8a2630aa1", @@ -229,6 +889,15 @@ "feature/2026-07-22-docked-web-goal-bar.i18n.yaml": "sha256:4fae22f5b921ae37feda632addace14bab8d1578c861228dd1df89a7b579f057", "feature/2026-07-22-docked-web-goal-bar.md": "sha256:94a4b00afc231eddd0fdcf6a494157d12a12b3ae40e8d732c3c05c6811b1c1f8", "feature/2026-07-22-docked-web-goal-bar.zh.md": "sha256:90dfa4f855a810bce6d57157049eacd6b0d9aa45e99fc296d9024adae4ebac7a", + "feature/2026-07-22-durable-subagent-catalog-and-list-agents.i18n.yaml": "sha256:dcc5403127e7b79d904e21cda6a218843ffc86d0098a1e2edf7925f63658323d", + "feature/2026-07-22-durable-subagent-catalog-and-list-agents.md": "sha256:2b006e7946aabc1887d0b4104b2fb471f7e0eda67003acd36c0469fe48c2f751", + "feature/2026-07-22-durable-subagent-catalog-and-list-agents.zh.md": "sha256:88ece4d9975f950c023915bf2ab2cce2d1db5b88b230dfd12d30b7fc219e1075", + "feature/2026-07-22-web-bind-address.i18n.yaml": "sha256:0d0dd89c08276dcc098e228fe95d660881bea88d43b57526c45e76d850f7e827", + "feature/2026-07-22-web-bind-address.md": "sha256:2bcbcf3b048c20f0d0c4c27a0aa2df30ea810690e1f6ad07db2a872d286d7877", + "feature/2026-07-22-web-bind-address.zh.md": "sha256:edabacef9543f1f024f75992417f19ad5509059d3da8e8f87c4460b65aac1d96", + "feature/2026-07-22-web-multimodal-image-input-and-durable-attachments.i18n.yaml": "sha256:d046fe7d735bf6bfc0e6cb8eaf8961db5b7368e2d21519c1257c648eb9060a5e", + "feature/2026-07-22-web-multimodal-image-input-and-durable-attachments.md": "sha256:88f400ae4eeaee44aea8ac45bf574f8346ea473fffe86885fdcce4ca4166c010", + "feature/2026-07-22-web-multimodal-image-input-and-durable-attachments.zh.md": "sha256:32f7e6302b19ae25a2d04cc9c02eebf95ae4592ecc9321a7168a6a8a627d7be2", "feature/2026-07-23-trajectory-step-cell.i18n.yaml": "sha256:fe2e935a0affdef877902a40d9861ef5f55b30f40650469f6a52a4d45a92793f", "feature/2026-07-23-trajectory-step-cell.md": "sha256:185e3b87174cb6d2f2d2271fd2a74b1517d03e8570be602570d027bf6002d106", "feature/2026-07-23-trajectory-step-cell.zh.md": "sha256:51f46be43d2f5c4f78a05ed9aeec92d1f33ac988f45cf24d35528e9c43828ef3", @@ -238,42 +907,129 @@ "feature/2026-07-23-tui-status-prompt-tools.i18n.yaml": "sha256:e8072d6661c91b43d13ef88b69fc49b9a312a7b5cb0b6f0171c0fdafc36b0435", "feature/2026-07-23-tui-status-prompt-tools.md": "sha256:0dd669c70ac34024b389d76c81dcf4f1d5b747f56b7d6d82587c8c15a421c0a2", "feature/2026-07-23-tui-status-prompt-tools.zh.md": "sha256:6a488b18e1516887d6073375651fba59c3a266b888f9ca2d4804f6681838059b", + "feature/2026-07-23-web-assistant-markdown.i18n.yaml": "sha256:02acfd00cfa3a1c45b5573b1da0bd1e78d6592ddd83ee60dc1b957830b4e2d69", + "feature/2026-07-23-web-assistant-markdown.md": "sha256:a83354cda2ef869bea65fea12e350ad0ee623476373b4d88bdb904778a38c9b1", + "feature/2026-07-23-web-assistant-markdown.zh.md": "sha256:d1c1792747a7cfd18949eeb5e1d325e574f83cfb6359cb106a6cea2bc382751c", + "feature/2026-07-23-web-permission-and-approval.i18n.yaml": "sha256:feddb8c4604125e1f5cb038e8faebb14bdd550b33e9c17c0ff76d4c61afa58f3", + "feature/2026-07-23-web-permission-and-approval.md": "sha256:7be3b5a0f30160c37b177721c0c0b6bb6f3d44e9e5255e676d12ffba9de1f848", + "feature/2026-07-23-web-permission-and-approval.zh.md": "sha256:a8a0a07f3bdc7aaeb6df689430c948ca26529e2424ef5839ccc4cee86d8b819a", + "feature/2026-07-23-web-todo-display.i18n.yaml": "sha256:a92a7f3d27d8b27cddf598f5c24292db1ae015e5a4ba05349ac02225d5f8cc91", + "feature/2026-07-23-web-todo-display.md": "sha256:30e1c989eec6d52232c75a52c4ea38cf8515e685168bc5bf74f0d317f33baa36", + "feature/2026-07-23-web-todo-display.zh.md": "sha256:a190fcd3aabb419fb7f06674c848bbbb07c10a70585e626bcb1a5e4a67c4527d", "feature/2026-07-24-configurable-tui-prompt-theme.i18n.yaml": "sha256:694de3851ca1e3de76c4f4fb7f3581ad0df568a99046c905f56d24a54407a5ba", "feature/2026-07-24-configurable-tui-prompt-theme.md": "sha256:694136b6d9bf7de25c240c373cb268cf798f8617c206d53c1d0ef7443e75adeb", "feature/2026-07-24-configurable-tui-prompt-theme.zh.md": "sha256:ee083f864bf6915a887b7883d14a6662ff6ecb4e702f4ac0f583d0c8f823bf50", + "feature/2026-07-24-model-facing-session-query-tools.i18n.yaml": "sha256:798bc2159abd5bd6fa3d7eb37a0b0999b839f9e87ced4804d8cc5a1454419187", + "feature/2026-07-24-model-facing-session-query-tools.md": "sha256:94a5dda88c2de1fc9f101a85d43e1479ea2fb5a55232f223f0058134574d4141", + "feature/2026-07-24-model-facing-session-query-tools.zh.md": "sha256:4aca426c68f85b4014a5ff697f41fbffaf53c2289c0fea38cfeac8ae29eab69b", "feature/2026-07-24-new-session-clears-to-empty-state.i18n.yaml": "sha256:978638cbf18bc6dce9fea0817654f41cc307f99004a637b85a63ae2208fe9095", "feature/2026-07-24-new-session-clears-to-empty-state.md": "sha256:b6b71d3883a167056070713e3dffb5046de953bdd218074d17c88e7690e03d83", "feature/2026-07-24-new-session-clears-to-empty-state.zh.md": "sha256:82a80b48337487029acd05a0137d268f0850f46801fa44a0e62733cacd00d5e9", + "feature/2026-07-24-provider-retry-policies.i18n.yaml": "sha256:c7663ffb5b1af8c14f63ae3bb6c3afd9602479923cac2ac9ab321d274bb2ad99", + "feature/2026-07-24-provider-retry-policies.md": "sha256:c1bc71e72a34323188e1f1b75878af806aee58376281117de7fb170575915898", + "feature/2026-07-24-provider-retry-policies.zh.md": "sha256:0bd7e5f44076340344f2d95f399859acf8cd5d6e06ac9ab5633617e35a09fe60", "feature/2026-07-24-tui-question-dialog-multiline.i18n.yaml": "sha256:b8a90f13f579c17476e94740079ac2e058f2a97ec4d723fe2841398426129858", "feature/2026-07-24-tui-question-dialog-multiline.md": "sha256:0bf07eb8731cf6928db275f160ba36b07ce93d53873eec2fb6dcaabaa0c57f76", "feature/2026-07-24-tui-question-dialog-multiline.zh.md": "sha256:85f5dedc794014152792557158b826650b147fe6d439e71ea23c115d2c2c84de", "feature/2026-07-24-tui-shell-prompt-editor.i18n.yaml": "sha256:f40b5ba2d22e3a52fea2d3d0f3f481ef710764c3ec4379e7c859f52c61434b1b", "feature/2026-07-24-tui-shell-prompt-editor.md": "sha256:7bbb99108a7dfe219c031f77cafa5bbcfacd1dd05080822fe11e0ca58da4b3f5", "feature/2026-07-24-tui-shell-prompt-editor.zh.md": "sha256:6e20225724941290bbdc9af86d4f91e1beb93bde5c2d67144f0a32c4abb30e7b", + "feature/2026-07-24-web-session-model-selector.i18n.yaml": "sha256:424caa09b584930f5b715d070817f60112540f00c779e25fdbaa8accb8c6c8bd", + "feature/2026-07-24-web-session-model-selector.md": "sha256:b3257e96205990cb78ef7ebfe64e0e98bac571869b1c257cb161894f745ca7d5", + "feature/2026-07-24-web-session-model-selector.zh.md": "sha256:21b2494e2609df254f3a99451421a4350764918b3a27effa1dff000c5cbe933a", + "feature/2026-07-25-session-list-browsing-and-manual-order.i18n.yaml": "sha256:3430aba7bc6d8cebe158ecf292ffb6384b9d8c66553f41843e91da199030fbaf", + "feature/2026-07-25-session-list-browsing-and-manual-order.md": "sha256:1f2e78f24617844ef5b8f2906c4d6f14ef9b2d5a52223baec3493888676e9f0a", + "feature/2026-07-25-session-list-browsing-and-manual-order.zh.md": "sha256:04052b9ac92da61a941959f148af5ba91ee7b15fa5205ff4103f25f8bd431e48", + "feature/2026-07-25-workspace-ui-product-flow.i18n.yaml": "sha256:8a51ba028c2568471ded13a7eba9e1d41393e0f4194b754b84e398d92bc76edf", + "feature/2026-07-25-workspace-ui-product-flow.md": "sha256:3799f3ecbba9cdc44a2df420c41f291ad1220f1cddc84ab27bde518823c74095", + "feature/2026-07-25-workspace-ui-product-flow.zh.md": "sha256:0f2db4d277cc0eb000d190d3dc35ac99b946a6eed602b7a081b85714ae5a8318", "feature/2026-07-26-code-mode-trajectory-waterfall-spans.i18n.yaml": "sha256:916525fdc3a12061928380fd8f7b81cd9763a7873663aad564843fccab0ccedc", "feature/2026-07-26-code-mode-trajectory-waterfall-spans.md": "sha256:a822963e4c34c9737681d6d70d8167731d4350e66ef7f356684ad096c04fa7ab", "feature/2026-07-26-code-mode-trajectory-waterfall-spans.zh.md": "sha256:ef01163adf1245f75cc8291db70d389314dee43b6bff958a9da49b097531218d", + "feature/2026-07-26-ptc-chat-subcall-rows.i18n.yaml": "sha256:2a4145bcc3cdefce3c592d08c63a9377a12d2c53be67e77b554c0e73472e6a5d", + "feature/2026-07-26-ptc-chat-subcall-rows.md": "sha256:f61a20aecfc5532f8333749e72fc0ac5694fced5b557142490dced2a71282447", + "feature/2026-07-26-ptc-chat-subcall-rows.zh.md": "sha256:76d01a0153c6b414d6e8fb498d18459bc9394e29ad790ec3d63327a3a896e77a", + "feature/2026-07-26-ptc-dispatch-log-spill.i18n.yaml": "sha256:535ce5ddd3344b1f7c90f2af018ca3531e173ffa99da1f42b672892586b5eb3d", + "feature/2026-07-26-ptc-dispatch-log-spill.md": "sha256:d467bc74726e0ee1d48433f08bce67710712caca1928f09720bd7c3229a902c1", + "feature/2026-07-26-ptc-dispatch-log-spill.zh.md": "sha256:ce3208e9380d2aa58433509eb09de3d5c644af20b293b5c62722999ff81e1097", + "feature/2026-07-26-ptc-dispatch-ui-foundation.i18n.yaml": "sha256:06ff1aa77e9ac138f343341fb5e5defa87dbec037be06680bfe7ad70c6ddebe9", + "feature/2026-07-26-ptc-dispatch-ui-foundation.md": "sha256:d06ab3a41c4ac57bb651f709fee6abf1e443dfe88c1ad1c09ccb8fa73a217014", + "feature/2026-07-26-ptc-dispatch-ui-foundation.zh.md": "sha256:ef1b781407e6e0bf4a3e0eefe00ce8fd9bd93ed9cafbb886401d5c99d7e23980", + "feature/2026-07-26-todo-parallel-in-progress.i18n.yaml": "sha256:2a6b9075e538fa158189ec725e75cf1e39fbf4e800f04a6dc95612a40d1e7582", + "feature/2026-07-26-todo-parallel-in-progress.md": "sha256:73e630a7a3d689bc01c2f77d74ed6929e6b50d20780931a90452cd0dd9b5c11c", + "feature/2026-07-26-todo-parallel-in-progress.zh.md": "sha256:3f95dd6d3b3fb7c934a9be48336df829871a818374e7c63329e934c91836547c", "feature/2026-07-27-assistant-timing-header-trailing.i18n.yaml": "sha256:e5a8aa9e5194dae6f4369299a64acae2c751d7f85e457e8dec1c14e1dbcee3e9", "feature/2026-07-27-assistant-timing-header-trailing.md": "sha256:85fac4a712ac5b4d61c224eddede08edb27db2e3718321c094a55034c75ce984", "feature/2026-07-27-assistant-timing-header-trailing.zh.md": "sha256:260d115d2da429eeac73b7256944e60cb03a93714f5d13b5e219dff316f5a958", + "feature/2026-07-27-native-workspace-directory-picker.i18n.yaml": "sha256:e904d389b50fc017db73a138d903ace0ac8be12d68fffd563069927317f9042c", + "feature/2026-07-27-native-workspace-directory-picker.md": "sha256:b0b0d93de182c840e8d0d857d44f69008f713c31034b061cae8b8dc3edf82527", + "feature/2026-07-27-native-workspace-directory-picker.zh.md": "sha256:e4b6e4e283547aadf8a0dab916e4dcf96a5d2ee2ebbfcb83631641fd96e181a7", + "feature/2026-07-27-skill-catalog-hot-refresh.i18n.yaml": "sha256:35ee67294eb9ea9534affcb8be2dc540335c53facb8235f90e324886a145b69c", + "feature/2026-07-27-skill-catalog-hot-refresh.md": "sha256:861e13cf9ec8f5343b897260d169e18d8c3e2f703d58f77eb2ccefdf31f0703e", + "feature/2026-07-27-skill-catalog-hot-refresh.zh.md": "sha256:0f0d8b9805439131df518b1080dfb5474bb76a20a258dadf5d39d9ad2b9f9a99", + "feature/2026-07-27-tmux-location-context.i18n.yaml": "sha256:2e64f7738ee2cbdfbb3fe781eac6ee37b1f7bf5c302bad17919cb15d7b485cba", + "feature/2026-07-27-tmux-location-context.md": "sha256:31125901cedde6edbebe0672968ebe10c1cc993cf1130108f9e39bce89d74c14", + "feature/2026-07-27-tmux-location-context.zh.md": "sha256:7de02a2f5cda654da5cfe4144afb15dfe423369bf679a2e892fd7937b858c465", + "feature/2026-07-27-trajectory-inspection-ledger.i18n.yaml": "sha256:0c2a3250933b3c30f46f40217baf044ae18b38555e55eec1851c9f6da46150e8", + "feature/2026-07-27-trajectory-inspection-ledger.md": "sha256:318ea1f551bae886f8d01992be4168259963464731e045c00b2fa6fef0926cc1", + "feature/2026-07-27-trajectory-inspection-ledger.zh.md": "sha256:7c974db5426f3683a4e89620558d5f78cad21edf2f6e1cf21d43d837dcdf11b2", "feature/2026-07-27-tui-running-glyph-smooth-fade.i18n.yaml": "sha256:e440b7f4800f722f1a0f9d089081ac19a7fbf809cb75136566ae363b4aa0aab9", "feature/2026-07-27-tui-running-glyph-smooth-fade.md": "sha256:cc58dce4788c8478c97ce589e4519cfb1b6a6cc3ec46d263f3038823231e5ae5", "feature/2026-07-27-tui-running-glyph-smooth-fade.zh.md": "sha256:c1735d5bd4b5e75989a9aead8af29136e7fadc01e79fb8c8cc68601a31fbf94a", "feature/2026-07-27-tui-tool-card-header.i18n.yaml": "sha256:1ed2c377f6d2c589195a00e84f92e6511b9a0793a2684a75ec3a0ca1f2b98670", "feature/2026-07-27-tui-tool-card-header.md": "sha256:ebb3d913960cdb0949a753c5811bd7d68a96f64f3b0549cd2ab7e4997b6b2d28", "feature/2026-07-27-tui-tool-card-header.zh.md": "sha256:402a619dce15534fbf88a59361b693eeb2121584fbb2e7af4e93eeaccaf2d0ea", + "feature/2026-07-27-typescript-sdk-and-sdk-subagent-backend.i18n.yaml": "sha256:2f2c8d55bc06c6a92e3cafdbd40505d91ca672d27a47eb09cf664a840c0fe45b", + "feature/2026-07-27-typescript-sdk-and-sdk-subagent-backend.md": "sha256:9cb8f0620567373370c6636b993ba41c1e4ce42dfc5b4d2ba98a2bf318deb1a8", + "feature/2026-07-27-typescript-sdk-and-sdk-subagent-backend.zh.md": "sha256:d5bd58c9c2a8738961a0863e5d972e732b678e8ac5fc4624cf89d3ce470299f0", "feature/2026-07-27-user-message-icon-actions.i18n.yaml": "sha256:b33e480f19ec58c8c60417a6c03999953d463ca54606a5ac80ec528edf57c49b", "feature/2026-07-27-user-message-icon-actions.md": "sha256:b6332e67c6dad0a3fcdb597cec9e4dc32b44ad33665f39c1a50501cf38d3f5ad", "feature/2026-07-27-user-message-icon-actions.zh.md": "sha256:0fc824eac66a18063f7098e1c395c09b580d5a30b96f2b856608c084212c2ac2", + "feature/2026-07-27-web-file-and-session-references.i18n.yaml": "sha256:6ff2e37a3a0680839a41143191043dfd3710cc8dab2fb9cafbce7910cdc00728", + "feature/2026-07-27-web-file-and-session-references.md": "sha256:7b2936c3535ca5e4df6efd4d828b11241d8ba0e816615cdc6321de0ab25ca51e", + "feature/2026-07-27-web-file-and-session-references.zh.md": "sha256:a22d4a1f3104c2ca277a2de3ede1ab66f128a82f8796a2763bc75d9a236f758e", + "feature/2026-07-27-web-session-fork-actions.i18n.yaml": "sha256:10a6e38209755c3a2e93dc28ff5ca20076919dfba49c5dd651804d0c63c60b55", + "feature/2026-07-27-web-session-fork-actions.md": "sha256:581e48e34007dabbb1d08092fdeb3133c863ee158c62ec8eeb85142f450163b7", + "feature/2026-07-27-web-session-fork-actions.zh.md": "sha256:79dfb6407d068b6dfed488d0f0f550217fa4ef19afec3568b1aba2f1076a09d3", + "feature/2026-07-27-web-session-search.i18n.yaml": "sha256:511e0ca45eda11423ec8407438d0cd2cb144ff23fdafbaac0c90f8a7160f35e1", + "feature/2026-07-27-web-session-search.md": "sha256:8c5310b450fe722ceb1a90da3352514a2822ab7a58d4414a787c1ec8bc475ad0", + "feature/2026-07-27-web-session-search.zh.md": "sha256:48352ac09ac255e3761526ea688df799475a5609ff88ebeadd106aeeaad10bc4", + "feature/2026-07-28-cross-workspace-resume.i18n.yaml": "sha256:b8a356e297d187a382aa3575a9093ac256f9027ac7813e8bcfba3c03284dcff2", + "feature/2026-07-28-cross-workspace-resume.md": "sha256:50a663e01be46d2f5d205743a844e2e4610c46d80626d2dc76a42e8a50300ff2", + "feature/2026-07-28-cross-workspace-resume.zh.md": "sha256:2679654a6ef71200b919175d3c3c69d5c105401f83c60bc000b2e321a56e1e43", "feature/2026-07-28-dsh-guided-skill-session-commands.i18n.yaml": "sha256:cf56e0ff7f2af7a5b50b27818fddb66a0c5300de98fc5733673ce094cd14bb22", "feature/2026-07-28-dsh-guided-skill-session-commands.md": "sha256:9234465259f89fbedd5dfc07f26acbc9e48e16ce829cc6ada672c4d597b0b255", "feature/2026-07-28-dsh-guided-skill-session-commands.zh.md": "sha256:57ee966476f755c1a6832d35d5f045f9d9e63a97a824e8a3723ba914502ade7f", "feature/2026-07-28-dsh-meta-source-workspace.i18n.yaml": "sha256:f7c6b5db53c32c7475f4f6bb3ae189ed8d67f2163196ab315d6f81fde3aa37d9", "feature/2026-07-28-dsh-meta-source-workspace.md": "sha256:ee8b2f6055b27957fa27258f26a07183b7102933af68c64d0df418e32d3d8754", "feature/2026-07-28-dsh-meta-source-workspace.zh.md": "sha256:0b10db368e04c24be03569a56ec4b69fed66b70c39a3c4f168b5f1c912efcd96", + "feature/2026-07-28-feedback-command.i18n.yaml": "sha256:0ce01bfce8df2088bc81e97dfd8ca7ac3b60d12cfb9c5b260e71b9bdb3a68854", + "feature/2026-07-28-feedback-command.md": "sha256:57243fa5c5131354c9e6ae7f817cbe350f88a796fb25b5730e7f657ba9130c5f", + "feature/2026-07-28-feedback-command.zh.md": "sha256:cad25331c5348fd2797b7ddac583a2c789733d94971dab389355420fbf542e15", + "feature/2026-07-28-sdk-max-output-tokens.i18n.yaml": "sha256:7e6e899a848e8feabb1a2a9cdc7adca8d79c5dcbad70ce9b6993dee27fd0675c", + "feature/2026-07-28-sdk-max-output-tokens.md": "sha256:8c354d085c164e2e14209d7bf192adbd4dee9953c9813c0c28c9f6f732c803f2", + "feature/2026-07-28-sdk-max-output-tokens.zh.md": "sha256:24323876389ddfe677dc8667df64a82e97ed599d7dc4fd140929ee91d65e28e7", + "feature/2026-07-28-todo-plan-clears-on-next-turn.i18n.yaml": "sha256:d9ca84732d19f8d84fe7003d09cf437b572406490f52a23ecd2841239bd1eda6", + "feature/2026-07-28-todo-plan-clears-on-next-turn.md": "sha256:af16dd33b87cf31d097e8e1292c590461a6e4428f80b21580c724c61ae602b51", + "feature/2026-07-28-todo-plan-clears-on-next-turn.zh.md": "sha256:ece7eb492ef653ebb693903d7ff6609201f02fbe4a2ddec47a26da6e75cb7f4e", + "feature/2026-07-28-tool-call-file-open-in-os.i18n.yaml": "sha256:7b626d894329c55eadc59e8d23b57b08bff84e70a5dc41e1a497f59d7d9a3cc4", + "feature/2026-07-28-tool-call-file-open-in-os.md": "sha256:b24a5f8e739dee2bf8b7eec12d3c7b7a755023e29a83f16f79f56a77ce40558d", + "feature/2026-07-28-tool-call-file-open-in-os.zh.md": "sha256:8a0813486191360632a703625affd89383e194046906ae44c16f54e0a054939a", + "feature/2026-07-28-web-terminal-card.i18n.yaml": "sha256:a4625d1a330fb4342ca4cfcc049cd764d1e2a0d557bfbe57968146a8a797ad54", + "feature/2026-07-28-web-terminal-card.md": "sha256:5093d93e918e1bc05d8fe26d27f1d48b1bb7d23b6a6fc8342c8edb5738ef3236", + "feature/2026-07-28-web-terminal-card.zh.md": "sha256:8cd9ed9be379d943952367a1a320ecf10312ccf0a8bf2064b8fe3543441148e7", "feature/2026-07-29-addressable-queue-operations.i18n.yaml": "sha256:0a067b38dd3c02ac41148ed03a7a6fa4c3dee88d5a4b9bad325ff76ebc03c443", "feature/2026-07-29-addressable-queue-operations.md": "sha256:f4d38d6cc49ad23cda2a287ba7ea5ce0e5fdb0edd41f33e68633f439654ca9fa", "feature/2026-07-29-addressable-queue-operations.zh.md": "sha256:9aedd7e241cf46ec7a78ae999a7fb105d73da4baf57c9ecf7ae745ee9b98182b", + "feature/2026-07-29-ask-question-web-presentation.i18n.yaml": "sha256:58523e4e739d69d1a1bace5dda93e24e3a95cfc93e32d104bf7eba7eb6c03921", + "feature/2026-07-29-ask-question-web-presentation.md": "sha256:5d08ff7cf38db6a2474da34ff4d6b626c640aa771ff0c66be26be69bbce2d681", + "feature/2026-07-29-ask-question-web-presentation.zh.md": "sha256:3cabf935fac12365e39cb49f3f1e4aa13fbbb777e152184101b92fdc102f92ed", + "feature/2026-07-29-directory-picker-adaptive-default.i18n.yaml": "sha256:542aef8d1a1aa1e9476afda820b125e01f15f8b042184caf25ee2dbb8f8d2270", + "feature/2026-07-29-directory-picker-adaptive-default.md": "sha256:fbe11a14d2674e02625e779b2eb966c65cf1a01a849baf02b3b3aae41766b4c6", + "feature/2026-07-29-directory-picker-adaptive-default.zh.md": "sha256:6534216c481d7e7d29d7e11a66070cd4077f84dbe034b3ff740baee52d63ac60", + "feature/2026-07-29-persistent-bash-str-replace-editor.i18n.yaml": "sha256:0f8fe9c005214ef504d4b4376f90910512712167f789e967498324eceb088d81", + "feature/2026-07-29-persistent-bash-str-replace-editor.md": "sha256:2088f4bd1bc46677db502ec9e44e3bb946557f2dbf13184b57907a783b0330b8", + "feature/2026-07-29-persistent-bash-str-replace-editor.zh.md": "sha256:e0d428704c57adcf5f19a72db2853274a41d5d62e0150fb4a997db1fcf39a106", "feature/2026-07-29-tui-hidden-mode-assistant-fold.i18n.yaml": "sha256:0865835802348b730542adbe6b7db613750f3786993c6a14dbb2f47686c13c70", "feature/2026-07-29-tui-hidden-mode-assistant-fold.md": "sha256:a5fefebd802e2d9c3c79c7852c1c34c7bbef3f2ac2150d224608b9ec44e966ad", "feature/2026-07-29-tui-hidden-mode-assistant-fold.zh.md": "sha256:21bccd1e07ec8dc73b618f428461848bb90b6235afe0b842afb0afab2d5cc575", @@ -283,9 +1039,21 @@ "feature/2026-07-30-compaction-progress-visibility.i18n.yaml": "sha256:4c2267054ad5d73aecc8d39d138a0cb532981b33175252e67252d07c3314b0f5", "feature/2026-07-30-compaction-progress-visibility.md": "sha256:2dfe07244cd784f27a9e5850801d40e96eae21a20ba10aaf56f9a793cdf5b505", "feature/2026-07-30-compaction-progress-visibility.zh.md": "sha256:6180b8aff0536147ab6ed6a78ecdbe1448fd12d89407746ecb1c7c05c73d4d60", + "feature/2026-07-30-current-sandbox-policy-context.i18n.yaml": "sha256:6dac0643251334898a9333c2bc874af3561022d6283865f3f416209de903a858", + "feature/2026-07-30-current-sandbox-policy-context.md": "sha256:8d60c42688d75b2ff5aab71f46fd6e7ccd6ae80006011c174c9e9007d81c694b", + "feature/2026-07-30-current-sandbox-policy-context.zh.md": "sha256:1eb8b799eaffb12d3caac0b33e115491aaf4f79376483c19d00e033578333087", + "feature/2026-07-30-deepseek-onboarding-credential-setup.i18n.yaml": "sha256:243f2b82a3eb6b4063671be1915f98717dccd80e53526d097030e1e6cce850fc", + "feature/2026-07-30-deepseek-onboarding-credential-setup.md": "sha256:56156f86d4bd6e04f97c279b561f5fa770807f9ddcb03e8fb260a1602edd379e", + "feature/2026-07-30-deepseek-onboarding-credential-setup.zh.md": "sha256:1b70fe333e49bede2cddc2861b2625544ed6ba1c1dcbafb21fef99ab58f09c16", "feature/2026-07-30-dsh-dump-config.i18n.yaml": "sha256:b400c8cce902328989e5493301f66451de7a36e966d69c43b20935fc635aca0f", "feature/2026-07-30-dsh-dump-config.md": "sha256:85b81dd517aaa6bb7510780acd961739c6da223bf2ddf6747d62f7a74e652d1f", "feature/2026-07-30-dsh-dump-config.zh.md": "sha256:d0d55947bcb0ef53d534844c15928ae26eebe3fb6d43f98ab176ec36a8eac640", + "feature/2026-07-30-plan-review-presentation-intent.i18n.yaml": "sha256:5a68291220b29a4e1588ddbc205d0f72f142cfd166389465390ac402aa0a9a2d", + "feature/2026-07-30-plan-review-presentation-intent.md": "sha256:2ad115ac571ddc44e620d0a452a634027d0cf5efe7b42e121d080ebd8517e2fb", + "feature/2026-07-30-plan-review-presentation-intent.zh.md": "sha256:348ed63e665296a69b93fa6d6eb39abc9b2b31f0f87b28b83925e9ee6898e167", + "feature/2026-07-30-search-render-card.i18n.yaml": "sha256:f6cd5cb7ef8bb0e649f7f130eef60dbd05f484a77742f57b3dc70116549af062", + "feature/2026-07-30-search-render-card.md": "sha256:3d4efce36de933ccae1a34ec49ff6d8d086e644946cf07587ac16d793f326593", + "feature/2026-07-30-search-render-card.zh.md": "sha256:2dceb2079912016ee2be018b3ee073126952289fde2b40a11565cbcb074be05c", "feature/2026-07-30-tui-details-command.i18n.yaml": "sha256:033cea6df0a16fc68cbdb435babdc6e75c1199a8e70e1a71d87c800c40f5a044", "feature/2026-07-30-tui-details-command.md": "sha256:a13478d4e55ec6d358209b51b541413ec75d0e20dfc22196ace28020f03f0c2d", "feature/2026-07-30-tui-details-command.zh.md": "sha256:de9c449b98468cef34ce4f9a9d2a854a5d8905eecd61f80e27a9a0e4495e9901", @@ -301,51 +1069,342 @@ "feature/2026-07-30-web-context-injection-disclosure.i18n.yaml": "sha256:83a8b78b0140afc8f18034674b594b998099c162ed9b9d939cb99e49cea2272b", "feature/2026-07-30-web-context-injection-disclosure.md": "sha256:00f869b29861ff8f30e64ea3ca65aa9f8a06b33be205453ea3b679e5dfe05c4d", "feature/2026-07-30-web-context-injection-disclosure.zh.md": "sha256:9bca10469e4d77b20c3785ce7ab6cbc628a03b8919de8a47c14466c1dbc94d36", + "feature/2026-07-30-web-diff-card.i18n.yaml": "sha256:a7061fc557ad29826b86301c44580527af2101b811734e07cb899612ed86a299", + "feature/2026-07-30-web-diff-card.md": "sha256:54d5b9f755be91810b4ed079bfcc9b7bf7b626280c6ad313e1f050d9ffc214a8", + "feature/2026-07-30-web-diff-card.zh.md": "sha256:9a4b4070b5e33f45b1119d62a4983e64d3d78d70dcec2810509380e319db9c38", + "feature/2026-07-30-web-queue-steer-action.i18n.yaml": "sha256:bf9d5019d796158d9c6092bca400719c5d812ffdb3ff5eef5fbf42a51700e23b", + "feature/2026-07-30-web-queue-steer-action.md": "sha256:bc1d03f44af9db7e286c76fb1795de223a5a9a91a3960fb0709d24a34ad31b0d", + "feature/2026-07-30-web-queue-steer-action.zh.md": "sha256:dc2decb923ea22c6df19aa11f3508fd458d5d034dbb3643793d754c71e65177d", + "feature/2026-07-30-web-read-card-frontend.i18n.yaml": "sha256:0cb6a29302fe315837ce381a3100385969ac7435c845f066d259696c780bf4c0", + "feature/2026-07-30-web-read-card-frontend.md": "sha256:682b005075d9ae1fe658df91d7cfda5141d068a7ba61cfa28816e925782404bb", + "feature/2026-07-30-web-read-card-frontend.zh.md": "sha256:9dcc1d23acaacb1e58d28734ca24b6f0852198d65b572edd6b3bd70ca47bcf78", + "feature/2026-07-30-web-read-card.i18n.yaml": "sha256:6d833572067f197e9914cf50b91bd52a0b217cdadc86a8bce32f561e1334eeb7", + "feature/2026-07-30-web-read-card.md": "sha256:3a0d3fbdb4731f2b395927d0f6bc7e7d4d9e6a1f4d1f7cc82761ed0c9d27e427", + "feature/2026-07-30-web-read-card.zh.md": "sha256:2bf2675f87ed5758331161ed0d0d327d899575c1698458d33b1513710a9decf2", + "feature/2026-07-30-web-result-card-frontend.i18n.yaml": "sha256:14733b85dca48c338ce38d9b0c8d3e5bdf6a3e3936de245c2ef8c86c77486fbd", + "feature/2026-07-30-web-result-card-frontend.md": "sha256:2f4731bc35e6e67030f0cb440a592403089b7b237b72dcd649e0fceef76e09e1", + "feature/2026-07-30-web-result-card-frontend.zh.md": "sha256:5aecc2df79c7df169b508071354115e3198aeecb24923e531c3be4651c35352c", + "feature/2026-07-30-web-result-card.i18n.yaml": "sha256:5aa05c82972919891f7098acd52be845c5490600a13a42c1430b0eb57beef332", + "feature/2026-07-30-web-result-card.md": "sha256:28903d3e5048087601a3ad5747eaf192526ea0c53ed7ce3e0ebc3c0af41f515b", + "feature/2026-07-30-web-result-card.zh.md": "sha256:452b14e1c2aca15867a4c3d5271f0fcd8758b294e1e94e1c4336a7d7541e226d", + "feature/2026-07-30-web-search-card.i18n.yaml": "sha256:018375372f77e6791be94ae0d100e65ee117008be1d8d591a807f600bf519af3", + "feature/2026-07-30-web-search-card.md": "sha256:564017ee66ca0be7f9bf717845d0f7e835920a6036cf4db3644c9b71cfc6bdfb", + "feature/2026-07-30-web-search-card.zh.md": "sha256:11a17ff988dc202d15c555f55fb351e570e0d4a8810f7dc2580bbcac75e88b44", + "feature/2026-07-30-web-tool-row-unified-expand-and-inspect.i18n.yaml": "sha256:345e605782243201a1fc2be714baba9f6270ce8327a5077e8a63ab581fe41b0e", + "feature/2026-07-30-web-tool-row-unified-expand-and-inspect.md": "sha256:0b205f75215e375150877f13e3aad261996e1c91f547ecac99a51121457aa554", + "feature/2026-07-30-web-tool-row-unified-expand-and-inspect.zh.md": "sha256:11bccd1325992e52812ab0363fbf3ef2e1edab9416fe9ec5cc493d5aabb40e52", + "feature/2026-07-31-browser-derived-initial-locale.i18n.yaml": "sha256:ecd8114e6d2d6b407d2a79e719486ca80950ff2f8b16b41f6db1b0c6044755d1", + "feature/2026-07-31-browser-derived-initial-locale.md": "sha256:696b56929237dc470295a78ca1b00434574194c449eea108db82949b34036c14", + "feature/2026-07-31-browser-derived-initial-locale.zh.md": "sha256:b0632048bdd6577fe04ac281e6a1d956befb07024a6de5cb2cc7d7b2fd63b83b", "feature/2026-07-31-experimental-subcommand-gate.i18n.yaml": "sha256:d223669bebbf6ea65b4ec636e8e7ed618eff389117335946be713897151c6968", "feature/2026-07-31-experimental-subcommand-gate.md": "sha256:8fdee37340f7e72397cf2f440a2ca70639a987d07f0c2102e02e79c0fec4bfeb", "feature/2026-07-31-experimental-subcommand-gate.zh.md": "sha256:bcdec0f82319670a1d1de54a27b103b5e2d86306b884a5f9f415b89cd5a373f4", + "feature/2026-07-31-gui-full-access-confirmation.i18n.yaml": "sha256:1fdabc1742fa1a969222f2a8a2eee8de86bf9a535e13a65f781461a408f67683", + "feature/2026-07-31-gui-full-access-confirmation.md": "sha256:3917e86d47a88b9e7534e4da27006c5a517b40449e580a9c8edb94f8af6acce9", + "feature/2026-07-31-gui-full-access-confirmation.zh.md": "sha256:3297425255ae3bcedf1d6c4b12e6adf2132353115a43236cb3c966a3fbad16fb", "feature/2026-07-31-hover-card-click-copy.i18n.yaml": "sha256:2b95987c23e13a4499f5f3851770e8f97aa6f6df457a36b6aa818a8db08785c9", "feature/2026-07-31-hover-card-click-copy.md": "sha256:f9a85c1603dcbdd36d26f730bf2a1f7bfaaa2267c7c30bee08cb9a94a7ce774e", "feature/2026-07-31-hover-card-click-copy.zh.md": "sha256:b01e6edda5c6b031b5265ca0d868583fecce04cbc817fa7e8cc4433d10056e64", + "feature/2026-07-31-permission-default-for-new-sessions.i18n.yaml": "sha256:ab7e2d6f8aec13ab9f78e8ad60b72897c067d1048ad1a5829856fad2b4c076d6", + "feature/2026-07-31-permission-default-for-new-sessions.md": "sha256:7a3123c80ff641b2e93b72372fdc52374d7e16593673787c7e4aaf7c8cfadec3", + "feature/2026-07-31-permission-default-for-new-sessions.zh.md": "sha256:73cbb1dd3dd18ba5ef935b5d1fc60f6556b24e7cc31165fe12fa52dca06d60c2", + "feature/2026-07-31-ptc-language-dispatch.i18n.yaml": "sha256:d575b760e11f57272053fdf378a7afb61f5d05512eb0d54d6183e12f8df36348", + "feature/2026-07-31-ptc-language-dispatch.md": "sha256:11079345c7117232d8e5e706d7b6638630b60228bfbab5802057d88f22d75041", + "feature/2026-07-31-ptc-language-dispatch.zh.md": "sha256:3c98eb6b0d23f3b49306f2201ecbb665aaa319fa2e52a1ac83c5e66ec9e7b3fd", + "feature/2026-07-31-session-archive-global-set.i18n.yaml": "sha256:82efe4f70e37857616c4c1384d6abf6fc9e5cabe147d3166b139b6c4fde0c24b", + "feature/2026-07-31-session-archive-global-set.md": "sha256:a7af2b3db880bc8eef4ee06b1d364758fc0265067da5fa73ecac2e5ebcf17b9e", + "feature/2026-07-31-session-archive-global-set.zh.md": "sha256:bf6e47df2c55192448ca87847524e35f50cdbc5e39afd3e521970b2607ada1eb", + "feature/2026-07-31-telemetry-anonymous-user-id.i18n.yaml": "sha256:530ab371295decac20af52ee1050fb3a48516f33ea3a3a37b3bc8997fafbf5a3", + "feature/2026-07-31-telemetry-anonymous-user-id.md": "sha256:2e787c474fbdffd1ddc063f5cb85533be526d02312cd57a4ca0062269c6588e4", + "feature/2026-07-31-telemetry-anonymous-user-id.zh.md": "sha256:b0215a4fbe4f2c17c8df3b499c408d60e38f4076087c2d4949b37c07a8f25797", + "feature/2026-07-31-third-party-memory-mcp-examples.i18n.yaml": "sha256:44ff80facb94f8f005a9d4f28b2b8ef9bab66524fd788b010ed34f4c6d82a363", + "feature/2026-07-31-third-party-memory-mcp-examples.md": "sha256:b401b282e0b3c9a92330a96f3a55f73f312bbf28b1d46ea8744f13c9f799c21a", + "feature/2026-07-31-third-party-memory-mcp-examples.zh.md": "sha256:b68543f95670003c35133e05e55d2d3cffff07d7195b0844fcdb2135fb22d1c1", "feature/2026-07-31-web-cards-toolrow.i18n.yaml": "sha256:f9a6ab72a77934cdcc02167c7313f08d7e9925362017b34bed7ad56c8c70fbaa", "feature/2026-07-31-web-cards-toolrow.md": "sha256:5058f7cec4497d1cb0a5c8e77b88fddacac6eead034f3edec88e8514919b8a3e", "feature/2026-07-31-web-cards-toolrow.zh.md": "sha256:ba84ef2e1be61211ab5ba6950b78ede3d3a979f252bc068d3e04e2c025f7bc03", + "feature/2026-07-31-web-telemetry-default-mount.i18n.yaml": "sha256:9763b57b3373fd9082ccd10e6c8a80d676ba9598b9c6d58084af7b21122b1cdf", + "feature/2026-07-31-web-telemetry-default-mount.md": "sha256:dd7a7c1e246f414acd77d767326cc14ed875351229d03e84d2bb7de9ec5a8956", + "feature/2026-07-31-web-telemetry-default-mount.zh.md": "sha256:eba00332fae8c0374a002ead25d1f35842c4239c3f9343b46fba6c99b2e3e804", + "feature/2026-07-31-workspace-write-surface-default.i18n.yaml": "sha256:ca2131ba0c95b7fd2f3472c9f0acebf1a54bbc0b494deef2438e62e45715d4e6", + "feature/2026-07-31-workspace-write-surface-default.md": "sha256:b96292c03ea7f7f0dcb6d2f9f7921706020881d86e71f73c9209b414071c56e1", + "feature/2026-07-31-workspace-write-surface-default.zh.md": "sha256:53c5212239f3ca8d5f975b6aaa4c127b8ccf5de3943ff4f54aedf89129e619b3", + "feature/2026-08-01-goal-command-input-projection.i18n.yaml": "sha256:6f848ca4311f1988612b3efe56cdbadbdb5aff2709d00fdb576c5287b2a279b6", + "feature/2026-08-01-goal-command-input-projection.md": "sha256:83fb4ce10bcae161983d48049e112f04566089c8c42d9681c3ff69b7d8ac961b", + "feature/2026-08-01-goal-command-input-projection.zh.md": "sha256:16cf3b44106057beb15917e4c20c24faba9f8779878db7b969e55b26c75353bb", + "feature/2026-08-01-pwsh-tool-and-executor.i18n.yaml": "sha256:67444343cf21fc7141fd90ba1c28e77dc0ba68d283f8dca3741718335032b23c", + "feature/2026-08-01-pwsh-tool-and-executor.md": "sha256:475283286cfcf5936cbdc41fca26819b246cf4cf4a2593fb23bc2273e7a42503", + "feature/2026-08-01-pwsh-tool-and-executor.zh.md": "sha256:f44d5b3c7d75c40b24064472905ed494e2f9c3f34b7b211e9aa4e1fd748038e2", + "feature/2026-08-01-windows-pwsh-default.i18n.yaml": "sha256:7dbec4f48f94f96af3c957f24345880a6c09eff699d0e7e506b5ee72744cd505", + "feature/2026-08-01-windows-pwsh-default.md": "sha256:7a00686bd786c14422fe1b89f79a26ea5869d34767220946d1092f32218dc16f", + "feature/2026-08-01-windows-pwsh-default.zh.md": "sha256:fe6d285f7fcd1ae6f238d7256daf4bfb164f9cbe568610177e38e153f760478e", + "feature/2026-08-02-session-search-not-shipped-default.i18n.yaml": "sha256:ca274275b57975561a30c65cade508f57fde1a7fb38c8c5e0527f99200f5078d", + "feature/2026-08-02-session-search-not-shipped-default.md": "sha256:4a7c6cd9fbe156fb5bab839bf065ba7241bb72ee3a959886e8b265156dae7138", + "feature/2026-08-02-session-search-not-shipped-default.zh.md": "sha256:fb258724d7b43eff65f1176bc74a922b3158f32d1ca48236b2d59ed7fbec7986", + "feature/2026-08-02-web-thinking-tail-scroll.i18n.yaml": "sha256:8a18b1e3fadc885ec5d2439f45fe5a2217dcb09d2f70b83f16009c93b3ca32d7", + "feature/2026-08-02-web-thinking-tail-scroll.md": "sha256:cb9fd39e3f9fe721bdf5dd1a88c5e8b58716af08d46e0cafd46a8f931f888278", + "feature/2026-08-02-web-thinking-tail-scroll.zh.md": "sha256:1a94b9111eee07ac8550db067157d9a0b905f9d2e3608ed65e26bba90f9a831f", + "feature/2026-08-02-win32-in-process-folder-dialog.i18n.yaml": "sha256:1b4954faf9164f689a44c4c6fa8301b324335d900ec7d59845eb0848c6cd952d", + "feature/2026-08-02-win32-in-process-folder-dialog.md": "sha256:cb063b227e0c0585e3109ea87167b72042508645a5b59886d6851799df21bb4e", + "feature/2026-08-02-win32-in-process-folder-dialog.zh.md": "sha256:b8527ddfa6fd540bd32aa343a84fb9f3c1f0139edd7ba22d4706c47ee3d986b4", + "feature/2026-08-03-fs-tool-error-remedy.i18n.yaml": "sha256:9197a06271cfebf4db7a1fa1bb789b7cd860a91b21e46d9eb87495f347fa4ab3", + "feature/2026-08-03-fs-tool-error-remedy.md": "sha256:961707d5129b934ccd463659daca9cb3eb9c9a849ac4125ab3cb67f3c0bb8f9f", + "feature/2026-08-03-fs-tool-error-remedy.zh.md": "sha256:33ebfc0d67008bd248064d9b1cc31af2102aef8891dc5c2b5acf18f906270e37", + "feature/2026-08-03-web-search-source-scroll.i18n.yaml": "sha256:1754ab17e15fae0b443783c9642d1ef99ac6b2f2b2c6b3aa3620b07f13938b23", + "feature/2026-08-03-web-search-source-scroll.md": "sha256:56152b14cd81fb9c0878e8938249aca79c922024f62f091b4ebae5bef58e9f0d", + "feature/2026-08-03-web-search-source-scroll.zh.md": "sha256:5f94af1d18d09c7cb765dcef93e2125845f1e1b643234e7055c4bf079233bd4b", + "feature/2026-08-03-web-turn-run-time.i18n.yaml": "sha256:aa0ed89476908932ee7f95c95be67c49751f595c604afe107eaa8f7a857842c7", + "feature/2026-08-03-web-turn-run-time.md": "sha256:5274b10edd0d73f90ddc3720e0b69fe15ca6abe8b4c88bb661c73d6e312d8761", + "feature/2026-08-03-web-turn-run-time.zh.md": "sha256:e9e6664177adf24f6815882dd4aa4076f83dca8a4f3bc333f56f18446d2f8304", + "feature/2026-08-04-pointer-revealed-sidebar-scrollbars.i18n.yaml": "sha256:36d632e657acbcf966d7124984b8da9ea9a42e922a47b73fe2ed4f4c071382b4", + "feature/2026-08-04-pointer-revealed-sidebar-scrollbars.md": "sha256:ff5bbf8b485074dd72bb86e2f3c5a2a779e8156a46cc06cc8d79b0fea57142b2", + "feature/2026-08-04-pointer-revealed-sidebar-scrollbars.zh.md": "sha256:ace1304545f6f282107530bf3bd7b05b376bd5347237899c57d61aca1b125797", + "feature/2026-08-04-web-composer-shared-width-axis.i18n.yaml": "sha256:ff5f566430c9117a2db3f2db04c9e6e917232f5ba2060f94c150a59d21dd1da4", + "feature/2026-08-04-web-composer-shared-width-axis.md": "sha256:3c00429e55be7b813d8d0db099bba58b1fc45fd3fd5ae64b1c83b1cc9533a7af", + "feature/2026-08-04-web-composer-shared-width-axis.zh.md": "sha256:e23a2251184ca41e877576783751aef3f5856b6071fb539b10860d479b6618ee", + "feature/2026-08-04-web-context-source-and-steer-marks.i18n.yaml": "sha256:0b776513e52251930168a80ff52cc22571d058a0015100c7c6e320967f0396c8", + "feature/2026-08-04-web-context-source-and-steer-marks.md": "sha256:263f729d70cd6203b68423ad7b179238d92762790cacde298bb4dae408f53284", + "feature/2026-08-04-web-context-source-and-steer-marks.zh.md": "sha256:9907e766554fda749f03f08bd7c1ecdbbbe935bf183061b4099f742e89170e8d", + "feature/2026-08-04-web-latency-throughput-metrics.i18n.yaml": "sha256:7a294ff821b09f13defbe9ea3e2d9b6353109fdbbf6e59f879174aa9f402da8b", + "feature/2026-08-04-web-latency-throughput-metrics.md": "sha256:d279ddb8ce8406542b5f056f9c1158a65d3a7ada7bea2910ea07f38e1cb3bf78", + "feature/2026-08-04-web-latency-throughput-metrics.zh.md": "sha256:a6181b91342d0849cf65cd03c609243d1404b0a32b1563e463c89270840e3abe", + "feature/2026-08-04-web-slash-command-fuzzy-discovery.i18n.yaml": "sha256:97137c8b04dd4139529ab4029642251e3df631622bed790ae5d9bba67ce85ab8", + "feature/2026-08-04-web-slash-command-fuzzy-discovery.md": "sha256:021e7d7baaebe7421abde765a60bc0d40d9991500fca7dad197468beef0f8267", + "feature/2026-08-04-web-slash-command-fuzzy-discovery.zh.md": "sha256:46af8da9803f0b20ce5cd4603435fbc0ad9235b582fa06e64a06ec85422f3194", + "feature/2026-08-05-composer-context-meter-breakdown.i18n.yaml": "sha256:fb90a9e9f27dec45a5a7a18d577f3678104ca7fbd14a4eb33ca721e84ce7e27c", + "feature/2026-08-05-composer-context-meter-breakdown.md": "sha256:1fc3dc02e8fb0d07b6d866f825f80d38b3e414d58de60d14df7ca6c849ce317a", + "feature/2026-08-05-composer-context-meter-breakdown.zh.md": "sha256:098ad3c97be6a9887ff3dfbf77f42fd253b42a10df96d041c3e3993bc1ca166f", + "feature/2026-08-05-feedback-gated-session-telemetry.i18n.yaml": "sha256:e357cae2bb409f3360a61227b470b3c53d32a748604cef57593486dc3603d625", + "feature/2026-08-05-feedback-gated-session-telemetry.md": "sha256:91a5e0c59c134e573133bc09e2d15d0d69bb5e2c42b90970deab42059c204238", + "feature/2026-08-05-feedback-gated-session-telemetry.zh.md": "sha256:27b1bcaf901e9284a2cc3e12958a785fee53c6ba179b6e7bc92db51c9d406bf5", + "feature/2026-08-05-per-agent-tool-presentation.i18n.yaml": "sha256:3922c2043452d53fd98c8d6940c432ec5a46cdf84dc368187ab84ec66fa26565", + "feature/2026-08-05-per-agent-tool-presentation.md": "sha256:1a12c7f8d4dfcb805e2def8a2d9840eeca9225197aa66c74a8427d092f1da2e2", + "feature/2026-08-05-per-agent-tool-presentation.zh.md": "sha256:7e58061b4209254aab72da54149daacdfe6d81857d5391e140f9e4d7d5f2b47a", + "feature/2026-08-05-pwsh-ui-bash-parity.i18n.yaml": "sha256:fe6dd01a9b0cc35778e2ff7d712a7c4048233f81306e789dea47217d062d4dbb", + "feature/2026-08-05-pwsh-ui-bash-parity.md": "sha256:22c9ea8d067b8ed61b31218454d4f18273e13ce192e3433b36eb630065d74ac6", + "feature/2026-08-05-pwsh-ui-bash-parity.zh.md": "sha256:ad86e77ba42f0cd0ab927f836aadc46cad73c6741c25729697fe763b8e0af56d", + "feature/2026-08-05-web-preview-product-badge.i18n.yaml": "sha256:a77a73076eed4448c2ea537e9068e21115bb2b3d40a9deb53299694f6d8f5e0f", + "feature/2026-08-05-web-preview-product-badge.md": "sha256:c107591cbaff15887ba565795c2e8618a6a5c60e2c683b65631b332e57d56e62", + "feature/2026-08-05-web-preview-product-badge.zh.md": "sha256:41f30e4abdce564f510decd23c916c3407ef95769e4ded3a449ebc3caa6f9c5e", + "feature/2026-08-06-agent-teams-web.i18n.yaml": "sha256:b50587d2393f17467946586ddf19ad890ef572e6236db6f9bb088420d4b9132c", + "feature/2026-08-06-agent-teams-web.md": "sha256:9765f0482f81e49b71c58440cbe14cf98041ff9ae7f273e8c50f0d273fa7b10e", + "feature/2026-08-06-agent-teams-web.zh.md": "sha256:05824b80fc4934d50866957ef079c9c89a0048ab9953b8209cacffb86882afbe", "feature/2026-08-06-bundled-dsh-badge-skill.i18n.yaml": "sha256:4b568d89976a71b7b3864e13b36925bf055479213739ffd4ac81614e00e93e36", "feature/2026-08-06-bundled-dsh-badge-skill.md": "sha256:7b67f7c09b7e2b2ca756983a8951dad3a15786b8cd3adc6e819f316c67d31b2c", "feature/2026-08-06-bundled-dsh-badge-skill.zh.md": "sha256:dcc0acb2dca596196ac034a8e86a644131c5b7fb09b184ec9d8493f93019d2b1", + "feature/2026-08-06-mcp-client-auto-reconnect.i18n.yaml": "sha256:63f0156346ae66d402c4494deac585021b980ab3baf9263222e0ce49a7ca04db", + "feature/2026-08-06-mcp-client-auto-reconnect.md": "sha256:b70436035ef9f320e345a17f91e6083d50dc87c523b08114fa98ba1ee5d58372", + "feature/2026-08-06-mcp-client-auto-reconnect.zh.md": "sha256:2de73b49d485d514e44d4be85c4faecf797c2c407e2d87cdb1399ef6e21e770d", + "feature/2026-08-06-resolved-theme-color-metadata.i18n.yaml": "sha256:3324c59f5609d6b2ee32cd70ad7259fd0623b42207eb93f5250563897afecca4", + "feature/2026-08-06-resolved-theme-color-metadata.md": "sha256:95437b0553fb43abac4a041a6d4ed7bff82c495c9d6c48efd99aa8bcce0c1256", + "feature/2026-08-06-resolved-theme-color-metadata.zh.md": "sha256:f02f774b92c1e62d150495f5494ae140be9d5f94ca1f2ab80f334d656af05125", + "feature/2026-08-06-session-completed-done-dot.i18n.yaml": "sha256:e4bf4c89ae54a1f6b4231f0c0ccf58ace788e5c52cf930959793e651455e9059", + "feature/2026-08-06-session-completed-done-dot.md": "sha256:3fe838cee8685f1b1c68a3cfd0d7396639ed79d643df752211e611cac4536c71", + "feature/2026-08-06-session-completed-done-dot.zh.md": "sha256:3727e8793d2cebca536b156f0f6d5fef053fe8dd2a4aa3a36e78bf86cf8e4a1a", + "feature/2026-08-06-web-install-manifest.i18n.yaml": "sha256:345b5bb1669da275c40c4f106c21922d7029462b5be2d3d08d8602fc56b9038f", + "feature/2026-08-06-web-install-manifest.md": "sha256:6298149b63d861d43657941bd945065d2d3bdf0eec1e73b12b9edae8d635967e", + "feature/2026-08-06-web-install-manifest.zh.md": "sha256:98f9f95679d03c90801e7614c15fe4b9a033dfd658c0743b1fa274062c8928e5", + "feature/2026-08-06-web-queue-steer-all-gesture.i18n.yaml": "sha256:a2df9071063f35a385f34bfb975b781c1304ad831285c391c86d4aff99b5238c", + "feature/2026-08-06-web-queue-steer-all-gesture.md": "sha256:23d726d9d5d454936ca2f66e590e8271873e8afc1ebc72c7b4e8598811ea52f0", + "feature/2026-08-06-web-queue-steer-all-gesture.zh.md": "sha256:c9d3df111960b97ac32a3a39ba302e95476a0d7843c16ce503bbba5f1ee09516", + "feature/2026-08-06-web-skill-tool-row.i18n.yaml": "sha256:51503241f70960ee7583aef932cc1ac069c3770b304a3bca8f438b42c295ebf7", + "feature/2026-08-06-web-skill-tool-row.md": "sha256:08cbdfad6a36565f8e14df384d9cf73641037e48c94774016bebfca701585029", + "feature/2026-08-06-web-skill-tool-row.zh.md": "sha256:f44351c84fc4fac8bc64342abc0e58b8c0fc794f3a30abc94341b49eb2622245", + "feature/2026-08-07-default-model-follows-the-picker.i18n.yaml": "sha256:2dc9d6f6a4cc6a298fcc1f4af696ca61c2525d7d4e0115115ec08d5d218bd2d0", + "feature/2026-08-07-default-model-follows-the-picker.md": "sha256:2dd3e5adae92a0a7ef237e3910ed438b44246b60bd8979090687fddc001ee73f", + "feature/2026-08-07-default-model-follows-the-picker.zh.md": "sha256:edde3ff8355f9d01129bf331dd6a1f0921787d23f75486fd325bc7f7e6074b63", + "feature/2026-08-07-feedback-acknowledgement-sharing-disclosure.i18n.yaml": "sha256:8d8be12bd257fb4337e90c415df0f52f6766e8c0e3e9570e615e1690863c51f7", + "feature/2026-08-07-feedback-acknowledgement-sharing-disclosure.md": "sha256:2d6b383c84e71a35c6a8c0887bc778f74c7e29ca7f6b5754872e3c5b3bd2091f", + "feature/2026-08-07-feedback-acknowledgement-sharing-disclosure.zh.md": "sha256:36a3c029a4d95d78790c3a267f86317f1e498fb70646407933e6add96b7add91", + "feature/2026-08-07-web-inline-file-mentions.i18n.yaml": "sha256:ab4234b8f1e69f782e08121490ac0737e037efdb8a8fd6457fe6d66df48d884f", + "feature/2026-08-07-web-inline-file-mentions.md": "sha256:8bb62214b9777ec5d30421ef134592632d999e6b8682a806f768650d861fa57c", + "feature/2026-08-07-web-inline-file-mentions.zh.md": "sha256:fcc2a479d52cb4082525e1e56e41ed05d2d3b682dddf22ad018d9add306814d2", "feature/2026-08-07-workspace-picker-composer-entry.i18n.yaml": "sha256:24a8bb2956371c7c840a662ac16dffbe04a6bb40a7296d01db86cb85da58d238", "feature/2026-08-07-workspace-picker-composer-entry.md": "sha256:036212fbae6f5d7194e8c7fc9b1e7cd1c35251e9c227e895834a7d00bd5f69f8", "feature/2026-08-07-workspace-picker-composer-entry.zh.md": "sha256:fb65c3330e8324f90d1270345e1ac941fc800e8caaf3b4bbee1bbb743f713262", "feature/2026-08-08-dsh-run-headless-command.i18n.yaml": "sha256:1c2b4c5b61b9263b6267275d6fc69faeaad3cc887f0728a7ed4172d817af812b", "feature/2026-08-08-dsh-run-headless-command.md": "sha256:7695fe7fd322377d5986f14e35f13337f4cd376405c758218a81230f6d182d1c", "feature/2026-08-08-dsh-run-headless-command.zh.md": "sha256:113c14a36c64d2facc8ae46f37c7aa76359d8cacb9c18fcba26a723f15d036fb", + "feature/2026-08-08-pi-ai-per-model-reasoning-declarations.i18n.yaml": "sha256:f1ca7c38b879f214ec5bcc038fc8b9113bf8db5ea62d15d34941efa4e05f99ed", + "feature/2026-08-08-pi-ai-per-model-reasoning-declarations.md": "sha256:d7747701cb2235850c543711eaeea0f5bd5eb8a9029728b91eaa8b5d09614474", + "feature/2026-08-08-pi-ai-per-model-reasoning-declarations.zh.md": "sha256:6047a74a382facde9436f0790126d47e179e0da55e0f126cba8bedee09b9470f", + "feature/2026-08-08-user-explicit-skill-invocation.i18n.yaml": "sha256:cb5c01f4571155956c549c755c73a94edc5869c6a3a5d248c1cbadda4014880e", + "feature/2026-08-08-user-explicit-skill-invocation.md": "sha256:a5a38d76a74a820625b32f75868cb05def4a80c371f991876d0a9499aebb3c2e", + "feature/2026-08-08-user-explicit-skill-invocation.zh.md": "sha256:1c725a82fd47d39169182bb5c8ef29de4bbf7b1c069c455b9dfe423bacf9956c", + "feature/2026-08-09-parallel-subagent-delegations.i18n.yaml": "sha256:d86ffd44b2d3e45018ffd63a3dcbbdd9001c9f9a2658b327d2bdff08662e0c36", + "feature/2026-08-09-parallel-subagent-delegations.md": "sha256:0397fe0685f41a4b898557efacbbff5b8562d6d94088aeae83ade6a2aaa92cb8", + "feature/2026-08-09-parallel-subagent-delegations.zh.md": "sha256:dab8373f0f8f38e70cd34a64e24a8fcdf77600e1da2d1b201bcbc36d1359094d", + "feature/2026-08-10-continuable-subagent-policy-inheritance.i18n.yaml": "sha256:2435470ce6387a8ea7fb5c9375150125cfe25818d90cae08ac327e18858f807c", + "feature/2026-08-10-continuable-subagent-policy-inheritance.md": "sha256:78a130a2fb0607b278a48b80dd9991a635c837f34dae319d4a7555848e675c91", + "feature/2026-08-10-continuable-subagent-policy-inheritance.zh.md": "sha256:f263a86aef5bdca24f8372ef1d98db5804a5c743eab8f26c759deb5ea92e3732", "feature/2026-08-10-creator-guidance-introduce-cue.i18n.yaml": "sha256:74f519839f0cf82c7304bdeae41ae1cab8bb930bfb94f79ab44708acd3b72128", "feature/2026-08-10-creator-guidance-introduce-cue.md": "sha256:3e25409dda498de150de18943ee332e1760963e377a40a365902b66f667fdc9f", "feature/2026-08-10-creator-guidance-introduce-cue.zh.md": "sha256:203847010cab9e9d13c3969f17921d3a5aa0d69377eccfef555c7ff96572f162", + "feature/2026-08-10-durable-workflow-runs-in-chat.i18n.yaml": "sha256:0db3c21a3c8785e56d5d7b90df990b158069cd1cea664e62fc4786c6d7588450", + "feature/2026-08-10-durable-workflow-runs-in-chat.md": "sha256:f9f5290cd880908d17b1080ae5776f22e182f5253471f90cf8bead418b33b502", + "feature/2026-08-10-durable-workflow-runs-in-chat.zh.md": "sha256:f4ffd2700bc9c2a0cc4b9d90f84e1d0a576939e2e6f0b130c5b142fd8cd518b0", + "feature/2026-08-10-minimal-read-image-tool.i18n.yaml": "sha256:2311b6453b90a1f81d4fcbdaa723ab233cc0998f34393956364c8b92bc4d1213", + "feature/2026-08-10-minimal-read-image-tool.md": "sha256:debe6b570d11634f57a80eaa5891e4fd1e7a5aac19f10fb7dd1683c316515150", + "feature/2026-08-10-minimal-read-image-tool.zh.md": "sha256:572d080340682b354cb1f8a0f74af153d6542bd3dffbe3b72b32591e5d5d3baf", + "feature/2026-08-10-telemetry-default-off.i18n.yaml": "sha256:4d49b6ad0199c9128bb0393ccef75b2b46eab15a16d5117417fdd49c6e8e0252", + "feature/2026-08-10-telemetry-default-off.md": "sha256:def8531ebf8cc88f07bb7169f949321132bc702ffbb0458acfacaefd5abe5674", + "feature/2026-08-10-telemetry-default-off.zh.md": "sha256:0b6b85c858897e7e01aa0c54112a4a1644e548b584561c1d8b9e879dadf2c738", + "feature/2026-08-10-web-plugin-configuration.i18n.yaml": "sha256:735ee9770c3a75b05a2f2dc05eaa74e7f2086f2d466c15251f0847d6191532e7", + "feature/2026-08-10-web-plugin-configuration.md": "sha256:70aed934f2c10e25ee97299b82a2e5449798282fd2e63e4a819102cbbbe17b67", + "feature/2026-08-10-web-plugin-configuration.zh.md": "sha256:ac3fe54ba71a2cd44457c44ef49fcbb256b929a0ccf5a8931fab17167d43ca20", + "feature/2026-08-10-web-session-log-export.i18n.yaml": "sha256:c1af2bf4248c9fe3f0fb1cdf5e3922a7768bc298ff9591c5f6ea04e0923c54e3", + "feature/2026-08-10-web-session-log-export.md": "sha256:06576b6bc985754afe16444940715ba5824265de8ae6f746acb873b6fb107afd", + "feature/2026-08-10-web-session-log-export.zh.md": "sha256:8c73ae4976c97a9c61dbff573221264f850c3d794681f2f8858eb9abb0a026d7", + "feature/2026-08-11-background-first-continuable-delegation.i18n.yaml": "sha256:0cb5636ca94f5793503c1769ff5353fc8bc944e3060269e80349ef1144d3228e", + "feature/2026-08-11-background-first-continuable-delegation.md": "sha256:6c7877c9ecda5c1591ff58da46094b6fef006a79c76bead4a2fe2b1c6d70a3d1", + "feature/2026-08-11-background-first-continuable-delegation.zh.md": "sha256:991b14b8d40fc06f1beb98185734824f8ec0664452722886a10d37d26dc25fd5", "feature/2026-08-11-collapsible-ask-user-question-card.i18n.yaml": "sha256:9c0873bbb1437bcd5025f5859e1dc447a6b936f19c2c2ad2250521a3aa773a12", "feature/2026-08-11-collapsible-ask-user-question-card.md": "sha256:4f3b3f5d7020fefbbac8a3c36a97642721ef14a0476a7d8117bde8a128d25f42", "feature/2026-08-11-collapsible-ask-user-question-card.zh.md": "sha256:e7186c92f77d337a875f981ae39b16331a1c5466a948415bcacfe108ad98fb63", + "feature/2026-08-11-message-feedback-web-surface.i18n.yaml": "sha256:4dc65040403c97e6d7d7768877ece068a19ee39678a3734d070a3601a8c61885", + "feature/2026-08-11-message-feedback-web-surface.md": "sha256:891b718b8d4c7410c783a4799985021db40f4121d367f668ed14bb74babf9be3", + "feature/2026-08-11-message-feedback-web-surface.zh.md": "sha256:3620be1a57cbd41823b1ffb2fdd836c9cb8cc96f14fc6afb206fc52d0a7d0fb4", + "feature/2026-08-11-web-attachment-display-alignment.i18n.yaml": "sha256:e0259ebc08e1cd6ffa91bf7d89ddb96fcdccf3adbd370d3fa1b0b083ae57b752", + "feature/2026-08-11-web-attachment-display-alignment.md": "sha256:977554ff2ce926580fa1ae0bc5c2e50ca8e29f6a5902d98c43b1f286e2661d6b", + "feature/2026-08-11-web-attachment-display-alignment.zh.md": "sha256:72f8548f910e2e58830e6d0ffa6e76a4bf4389426479534ab172a8c87a24b974", "feature/2026-08-11-web-export-command-and-dialog.i18n.yaml": "sha256:db7d523a2a1f82a86f532661bd2953ee8538d971d91f886e4bd4e0d88f7226b2", "feature/2026-08-11-web-export-command-and-dialog.md": "sha256:ec44b47589ca7924018dc24f7fa73379a97b8f053d9e8ccce2aebb600230e47b", "feature/2026-08-11-web-export-command-and-dialog.zh.md": "sha256:ad28e67d397c87300cfe1705ba3d206cc4d054e07f5647c095c718ac8cf4ec98", + "feature/2026-08-11-workflow-run-status-driven-disclosure.i18n.yaml": "sha256:dc33664fdf281c97f0a310519f2e15895fe6d47003b3acc0a04e6a2acfcedbfc", + "feature/2026-08-11-workflow-run-status-driven-disclosure.md": "sha256:0f0fce39565f1ca95fbebb894182e05a7aac342c8c0e5f4c6da6e7cdab081902", + "feature/2026-08-11-workflow-run-status-driven-disclosure.zh.md": "sha256:e2b4f82e13d85606c421652f961dcd813b973b5e731c86db1d9dd63e6d147dfc", + "feature/2026-08-11-workspace-sidebar-order-and-folding.i18n.yaml": "sha256:525f50d040741a51b507bf4bb042928c7a191d008c151b30db67a34d01f01b39", + "feature/2026-08-11-workspace-sidebar-order-and-folding.md": "sha256:c88b61aa8d81168deba36e1d88f291f58537e0f38932924b4fd07b774e313878", + "feature/2026-08-11-workspace-sidebar-order-and-folding.zh.md": "sha256:e39812beed8450cd0434293cc3ecd4ba7ffa161b14e98a5f5290ab9b8b043b17", + "feature/2026-08-12-hero-fish-hover-swim-morph.i18n.yaml": "sha256:2131af9d22fcebc2091a5b5bf59787482109709ac06a9ad2980ef4eee8c41378", + "feature/2026-08-12-hero-fish-hover-swim-morph.md": "sha256:05e5605eedd89961d47cf117e4784dcd32c3191d4ebc2b0d1a01b69bd4e02c67", + "feature/2026-08-12-hero-fish-hover-swim-morph.zh.md": "sha256:1c92f53eb9d1be1dd695081e3839269fd6f2dcf43578e0b1595e9e6544a9bf09", + "feature/2026-08-12-open-ready-web-ui.i18n.yaml": "sha256:0396f2f6488cfdfe89b5750cb266c13986f20a001e110ee78bfbca4b67a689dd", + "feature/2026-08-12-open-ready-web-ui.md": "sha256:765673ad8718871763b385e47f9d31772362448bbecf56a043a2a3fa5a7cd2f0", + "feature/2026-08-12-open-ready-web-ui.zh.md": "sha256:13b1a86e99413604a8aa0d4048d5ad4f257f316bf77589656873604bd06e6fc3", + "feature/2026-08-12-product-subagent-one-shot-background-tasks.i18n.yaml": "sha256:3d77b86c8010a7fa7fa1cfe48638218ce04d5f20be6201b4dd469b617814c6ee", + "feature/2026-08-12-product-subagent-one-shot-background-tasks.md": "sha256:b570dcce99257f9acba412f6d1389adae93e7efbade4a43a5a4079a85e3a4d04", + "feature/2026-08-12-product-subagent-one-shot-background-tasks.zh.md": "sha256:35341c06d5f8a1e251420b716ddbcc5937bfd9baed9597ad96c0d99c94d5c33d", + "feature/2026-08-12-web-image-intake-and-limits-alignment.i18n.yaml": "sha256:60c894a606cee413c2a39991a3655dd709693597ca45b7be0b1586ee186b0529", + "feature/2026-08-12-web-image-intake-and-limits-alignment.md": "sha256:72583f948f0c82ccc9b6242a398fb5395d6011b74830e2c7ab439e762d668aab", + "feature/2026-08-12-web-image-intake-and-limits-alignment.zh.md": "sha256:bff62e89b0f6187392bd05d1b5e14b5a3af8e43abd5405c59630998c80b584fa", + "feature/2026-08-13-shared-modal-product-onboarding.i18n.yaml": "sha256:e2cab4649f990a87a25d32ae5aa6f95fb3f30d7aad2ebbece23b2a0eeb4d0633", + "feature/2026-08-13-shared-modal-product-onboarding.md": "sha256:9eec99ed1bfb668f18155714eaf59609c098eedc068e9357851551a11a30bae1", + "feature/2026-08-13-shared-modal-product-onboarding.zh.md": "sha256:6e3e3c3d443bc1c3e9a85be40d18fea035a5d1f0404a667a0b649559461654c9", + "feature/2026-08-14-web-turn-process-folding.i18n.yaml": "sha256:6f15becaf7a1519ec6a3e2b83359e6cd79f7ff98b7c0507c35780e9cdad895dc", + "feature/2026-08-14-web-turn-process-folding.md": "sha256:d21d4cb116ddce06989a4062c2b53373a8f4123bd0190a88f870d72f3142bd7b", + "feature/2026-08-14-web-turn-process-folding.zh.md": "sha256:eef128c55dda00fffd2d035f7a70c39d714ceacc99827245872501106bfa038c", + "feature/2026-08-17-web-search-multiple-queries.i18n.yaml": "sha256:613a8bbf6d26152ce255f33cd7c144e31f9bc7c6cdd7f8243d3d82dd2e41c0ad", + "feature/2026-08-17-web-search-multiple-queries.md": "sha256:36bcf5ce5874b9b4d35019c79180911ba86f65202063ba81669a0ab6ea3aaa7b", + "feature/2026-08-17-web-search-multiple-queries.zh.md": "sha256:7188d58f1d448aa6caee3a648b055e40f9613a1d69fd383700036ea31497cad1", + "feature/2026-08-17-web-system-prompt-opaque-body.i18n.yaml": "sha256:f571ff4ff529a71a6220795df3fb27006ecb41f11bbe2adcbf2176a2fb5dae34", + "feature/2026-08-17-web-system-prompt-opaque-body.md": "sha256:93bc0347dd1e0c9ab5d4222c67afeaadbe18375654718a8302b7a5738233af1f", + "feature/2026-08-17-web-system-prompt-opaque-body.zh.md": "sha256:6dcd226723afc5c3559b1ff4db6ea2f3544aa5ecb85105cbc752c8f3afa3f2b6", + "feature/2026-08-18-conversation-adaptive-content-width.i18n.yaml": "sha256:145f22377e231439665b83751c7e4dd924b0197414bebda188b88f533e5bb47e", + "feature/2026-08-18-conversation-adaptive-content-width.md": "sha256:0644f856ac475d43a9bf28c8091e3bd20a95ec13a6261f366af95cbf43e5cdb5", + "feature/2026-08-18-conversation-adaptive-content-width.zh.md": "sha256:28246084689dac867ea7b1b2b75f2f38a8406ac97786fa993f9c9b2925b0e6a5", + "feature/2026-08-18-pi-ai-wire-compat-surface.i18n.yaml": "sha256:b0b0c921bdc335aeee3dd86a68fd0a73b1958d8a245fb77947c28083a5c3daca", + "feature/2026-08-18-pi-ai-wire-compat-surface.md": "sha256:964d578d20deca2d3a9e6e49fe9cea4d554ddc901cefa7f823558a9d7d91dc4b", + "feature/2026-08-18-pi-ai-wire-compat-surface.zh.md": "sha256:55c946465f8c58254c4c13401206990f79111ef4f2a067863f31e0157e8dd63a", "feature/2026-08-18-product-subagent-failure-facts.i18n.yaml": "sha256:0aa7a873fdd878ee7f4b0a850ecf16d7b652b4f85de979acb7efcdf90883b6c1", "feature/2026-08-18-product-subagent-failure-facts.md": "sha256:f7e05703c44106359798e6e4b76e442a4107b62ff0363554382d4767e4806788", "feature/2026-08-18-product-subagent-failure-facts.zh.md": "sha256:19d2619fb5b5c6e40305dd82432d837357afa433ab735504ec204a2c25582ce6", + "feature/2026-08-18-product-subagent-named-instances.i18n.yaml": "sha256:f92d2364761e92be503496a80ef84fac4da6b5217762664fcd3747def951526e", + "feature/2026-08-18-product-subagent-named-instances.md": "sha256:69cbb9dd2b18e93f41f012a07e47c76d3d35fadce744af0096ebde33e6a14588", + "feature/2026-08-18-product-subagent-named-instances.zh.md": "sha256:6cf70b38107f97c9b7f241e9bf2e4315825b3d4936df337b5656926215ced01f", + "feature/2026-08-18-settings-font-size-control.i18n.yaml": "sha256:b31dc467a31edc98c6b16d32e36dd3f5cc4aa9806adced111f9695f5ecad9136", + "feature/2026-08-18-settings-font-size-control.md": "sha256:af8c17588e9ef97ad692e46c7311b1bdc922d5b26b90a34cbb16b57a4c64e457", + "feature/2026-08-18-settings-font-size-control.zh.md": "sha256:ae6b7a0e8ab34f0c1718aa9d815b34a639f72c81f09f2ae37797aef356298430", "feature/2026-08-18-web-home-path-tilde.i18n.yaml": "sha256:f151e3e3514f59784fc646c2feb3075dc954c65110d48c2cc482ad486fc0b86f", "feature/2026-08-18-web-home-path-tilde.md": "sha256:8c7ecf120ff8c81826160acab5fc906a2a0a14213bcd2958343cfea47328d68e", "feature/2026-08-18-web-home-path-tilde.zh.md": "sha256:3486c5b42aed5bcadf12c62c5e1e6cf7c1b493fc1085ad7d154cdf2ec34076cc", "feature/2026-08-19-high-cache-hit-decimal-display.i18n.yaml": "sha256:c2cb839ed676040ed62153c2aab65b677fa59739f69253af50246e79a2347620", "feature/2026-08-19-high-cache-hit-decimal-display.md": "sha256:08cb68bfc379da47a05b816afac26126146d36d6248350d4380f7cb98607d573", "feature/2026-08-19-high-cache-hit-decimal-display.zh.md": "sha256:9d7afe3e2fc3029fbccc643b432a01bcb3b5671750adb6945ac414ec843ca063", + "feature/2026-08-19-web-markdown-wide-table-view.i18n.yaml": "sha256:56df77a52c7153251f8a78738f5407b83790ba6072e0cb9db9528f080987bf38", + "feature/2026-08-19-web-markdown-wide-table-view.md": "sha256:fd01be420649ff3ce8ee519febb3951d8fb17e3b6ea8f6333cf2aba65965ecdf", + "feature/2026-08-19-web-markdown-wide-table-view.zh.md": "sha256:e91b3b99a2d3dfca288bce0bd589aa6176426b1f437ec668b3f4374f74dffe9a", + "feature/2026-08-20-multiline-question-answer-field.i18n.yaml": "sha256:fd9f24599744743023578a0ac18950529ba85d824a658393296a8e4884645bb7", + "feature/2026-08-20-multiline-question-answer-field.md": "sha256:3f734d63826b7339efdfd0e839cdeb51e2c278f15f5fd021dfb7b482b30a7ae1", + "feature/2026-08-20-multiline-question-answer-field.zh.md": "sha256:8b30d31eb01fd21e318e17940650b2f0dad0f724f2d8fff37e11dba996f2ee2f", + "feature/2026-08-20-tool-card-image-results.i18n.yaml": "sha256:a0f4307de3bf37a582817f1ff052c1ee599c7bee95db8647867508a3729eac09", + "feature/2026-08-20-tool-card-image-results.md": "sha256:f29668d5b53284ef5042624f499b9e90ed7680f01c5e1a2e15842453075cf08c", + "feature/2026-08-20-tool-card-image-results.zh.md": "sha256:15867fbaacfc01a485104e8790236b647b8550d7f65dbbd349a0b1c9554731e8", + "feature/2026-08-20-web-streaming-fence-highlight.i18n.yaml": "sha256:ab35f0675214e80dd6566bbb3f452c9eb43e70bc56bbf01030728176bdb2e075", + "feature/2026-08-20-web-streaming-fence-highlight.md": "sha256:4c672a677bd70f89141d3ac9668274b71ba83be105c2db8bb8c6dbe3123c2af1", + "feature/2026-08-20-web-streaming-fence-highlight.zh.md": "sha256:236abfcb846a34bf9b869e553f51e354ced7262cdfc5c0cb3595573d956beaae", + "feature/2026-08-21-headless-reasoning-progress.i18n.yaml": "sha256:b7f5362d3f378e4348dbc1e4f3f4522f1e2e92c4c3a4e338f09c5e9ac8b5de16", + "feature/2026-08-21-headless-reasoning-progress.md": "sha256:89914dbf3723b4b5fde07494eaa35971e47b8c3658388b6aca2dcd81409840f1", + "feature/2026-08-21-headless-reasoning-progress.zh.md": "sha256:79c148dfd0d7d47cb01c4eb909ea239050ec2de16db64d3dc070798070bfc6fc", + "feature/2026-08-21-model-readable-image-paths.i18n.yaml": "sha256:676a965f57e9515e298d6f92e287e219ce6c54afee034afb87d33246117dd870", + "feature/2026-08-21-model-readable-image-paths.md": "sha256:f27dbc7dcfb73d92568060923c96a970c45ca5162e3374fcc5f781f5aa9bd45e", + "feature/2026-08-21-model-readable-image-paths.zh.md": "sha256:16b207f871eaaa1fe8178451be07d04de093244af023e0890aa307ab0a9df5f5", + "feature/2026-08-21-out-of-process-subagent-minimal-diagnostics.i18n.yaml": "sha256:dbe9c81bb02ed6d5dd9a9fd41630502908fa841babf9fc7db108682757a081cc", + "feature/2026-08-21-out-of-process-subagent-minimal-diagnostics.md": "sha256:4689c6eac9083908e7c3f8c818c318598c3776ddf8438d49468e7400c73dc4c8", + "feature/2026-08-21-out-of-process-subagent-minimal-diagnostics.zh.md": "sha256:257089b0def9fc143fd015e4450e440b993ea57826fe41af4df2b68f63548d1d", + "feature/2026-08-24-folder-reference-pick-vs-drill.i18n.yaml": "sha256:94b1bbf6a536318a41051757b07767876cbafbf63c419664c9a220a7426f608e", + "feature/2026-08-24-folder-reference-pick-vs-drill.md": "sha256:0677902082634f1dfc536d3530b17dae1a555ca223f63875a1850d587720d74d", + "feature/2026-08-24-folder-reference-pick-vs-drill.zh.md": "sha256:071791690d272af7a220c63469e29412aef582a5028ac9aed307f1ef0b507705", + "feature/2026-08-24-route-priced-image-request-pressure.i18n.yaml": "sha256:bfe26c784413c170d0648b74e262770c6c572124e2edfa345176573c3ac547f9", + "feature/2026-08-24-route-priced-image-request-pressure.md": "sha256:b92a2ba9150716ef23e2d6bd76a1c2ab2491e6b952804593d79e2807d4657a4f", + "feature/2026-08-24-route-priced-image-request-pressure.zh.md": "sha256:048395a54a523baa7bb6a62a1c434c2db33009e280b16e66f7fae6e1e1763f7c", + "feature/2026-08-24-trajectory-image-attachments.i18n.yaml": "sha256:96e7dfbe45f024bdfa2c2c7aeacaed46cf0a275cb20b3dd7b7f299dc05f22e87", + "feature/2026-08-24-trajectory-image-attachments.md": "sha256:2287e3a7c3d39662ff2eedec3d181b2dd9beb3f7bbe6de031cb7a77cc5ed7815", + "feature/2026-08-24-trajectory-image-attachments.zh.md": "sha256:480e95e71acf87cf24e43c18e09188b077fa6286dfdc1386265b94740d837031", + "feature/2026-08-24-web-per-turn-token-usage.i18n.yaml": "sha256:a7795b217a41945da095c214f66775d9af0c051db655bf6f35502c5f5232de39", + "feature/2026-08-24-web-per-turn-token-usage.md": "sha256:6ed076816d928dc5510621e7ffbafec35b6a94721609ad4faa01cd5ec6cee732", + "feature/2026-08-24-web-per-turn-token-usage.zh.md": "sha256:e14b827943a8901c188a74aab1d14624a134942fd61a216446ff3e72b2e5ab2e", + "feature/2026-08-25-loaded-turn-chat-navigation.i18n.yaml": "sha256:86bd02d56cf95ac465d0f6e326ccf75432ffb9c3db47373ae6a795195cff9ea7", + "feature/2026-08-25-loaded-turn-chat-navigation.md": "sha256:0ee1cb6da76b93e467d747aa8ba07697ba648cb213ba52202c51ee1e85dff1a8", + "feature/2026-08-25-loaded-turn-chat-navigation.zh.md": "sha256:5d3e567027fc65241856bf9f9cf0d73a20d53214c49bfbc884ab2ddd19503918", + "feature/2026-08-26-web-trigger-menu-presentation-polish.i18n.yaml": "sha256:69179f3056c6d5fc35119e83dd7a5af30213502dac3c1f2d4fd43eae96ee2ecf", + "feature/2026-08-26-web-trigger-menu-presentation-polish.md": "sha256:c54e3bbe528d6be711541c61e777e6e4ed4fbc1374df97d846b015d3693679f4", + "feature/2026-08-26-web-trigger-menu-presentation-polish.zh.md": "sha256:7db49018eebbba539838d734a80fbb330e2b73fea3b343900591a3605c6c03b5", + "feature/2026-08-27-web-at-mention-discovery-and-row-content.i18n.yaml": "sha256:f67e6607f99da020ce7994c35163ade3260d9058c3f77ea68119c13962375ee3", + "feature/2026-08-27-web-at-mention-discovery-and-row-content.md": "sha256:e25c5cfb9ad194a68e4db958a80006ebc18a2bfd1c567beeb255e8700e61d80c", + "feature/2026-08-27-web-at-mention-discovery-and-row-content.zh.md": "sha256:0fc7079645f0a8bff5048f2709650c325eca7d34109e33807ca4ed770b931dfb", + "feature/2026-08-28-web-connection-recovery-control.i18n.yaml": "sha256:8ce8b8fa3879cf607f1ea8ca140d1657ccce4bd913e774612e6f6d92103cd066", + "feature/2026-08-28-web-connection-recovery-control.md": "sha256:6685cd5737deda62abf1c22140708545a74f01b1aec55160881bf2fd5c068225", + "feature/2026-08-28-web-connection-recovery-control.zh.md": "sha256:bcad0e13c3e345ce75fb2c368558508034b018883842aeb87fe50bdf3f526790", + "feature/2026-08-28-web-turn-stat-pills.i18n.yaml": "sha256:05cda9d8ea6dc23bd8af775f7925dbc14cf540db1aa8bb8ad34f8d6aa8ea98a3", + "feature/2026-08-28-web-turn-stat-pills.md": "sha256:6e893f645ea294530d211df27a575f7cae08ffdeec74e51fbe29cd31ba715125", + "feature/2026-08-28-web-turn-stat-pills.zh.md": "sha256:916fa507458dd7c59c8980de84e9c3c465e72fd10fb745eda8fb1725e4d113ff", + "feature/2026-08-30-web-turn-rail-outline-jump.i18n.yaml": "sha256:d9db6a109b5db9cf943d8e851e0f3a31b416e7c463ff291fd6acbc666101d3a2", + "feature/2026-08-30-web-turn-rail-outline-jump.md": "sha256:f5cbf6f5d7a53785bde566affd860999c90e9611eb5833d807264c602f6867a1", + "feature/2026-08-30-web-turn-rail-outline-jump.zh.md": "sha256:46dc08ea0351e1f135087219742c9466e0a88ffb1b2f3747b357453baec1efbd", + "feature/2026-09-01-shared-base-web-fetch-default.i18n.yaml": "sha256:70f20da0ea4a1d5f59cc270cfa09138c855c8658131361dde11065addfd6f420", + "feature/2026-09-01-shared-base-web-fetch-default.md": "sha256:fcb0c83f838eab64ab18efc4b8fcc71a77fef8dfb128fb2cb3e57d94831d7429", + "feature/2026-09-01-shared-base-web-fetch-default.zh.md": "sha256:adda442209251791851a92acad033dbfbb064a50d0f2872a69feeee2ff81b24e", + "feature/2026-09-01-web-elevation-stroke-shadows.i18n.yaml": "sha256:5bc665e2b6ca4a6dd992c44c422497bcc915c387fff13a5bb0a9e8936a7ce6dd", + "feature/2026-09-01-web-elevation-stroke-shadows.md": "sha256:b9d2633c7d6bed6e4826d3ac9af034fd652c335d599dc3c08c14eb3c020855c0", + "feature/2026-09-01-web-elevation-stroke-shadows.zh.md": "sha256:8bab2c8815bbfedebc590d4508ba8e4d657bef066c3bdc0d91c1ab27e15cef66", + "feature/2026-09-01-web-superellipse-corner-smoothing.i18n.yaml": "sha256:50afdbe5b5e19889918af6d86ab3218c05205be35938b6d33d158c60777e3b58", + "feature/2026-09-01-web-superellipse-corner-smoothing.md": "sha256:b1445101c49e74bbcb4f607af850cd6df105d4034828d0dd47081e8079148f15", + "feature/2026-09-01-web-superellipse-corner-smoothing.zh.md": "sha256:1a278c417c0d7de3b4c3c35061b419303b4a1a0707831c283d8f862ab9b6fd23", "process/2026-06-11-doc-sync-enforcement.i18n.yaml": "sha256:33b6d5874427bd7a2bd82e7e2f4f482b12448b2464aef15a9c57975edb48554d", "process/2026-06-11-doc-sync-enforcement.md": "sha256:aa2fe83d519fc30d48dff19e596e83c8922aacc9e063e14fe2cc35b769b9100e", "process/2026-06-11-doc-sync-enforcement.zh.md": "sha256:698017bd35f030fdea3eac51df9e43138c48140f504739d687b7251d13fced2b", "process/2026-06-11-tsdown-over-dumble.i18n.yaml": "sha256:22791adb84a4b6c545173d4f1708eea51151d57e426d875e0e5423be9b6e0212", "process/2026-06-11-tsdown-over-dumble.md": "sha256:8d3c35dddd8869cc3361059dfe4b7b8ab6716d29dda232c97c2f37e92c841dc0", "process/2026-06-11-tsdown-over-dumble.zh.md": "sha256:cf11c651c13f5ffef5474e7795006ba3653c5eb08eae75a879be6499353455dc", + "process/2026-06-11-vendor-cordis-as-source.i18n.yaml": "sha256:b02b3c0469de87acd3abbe7352d50da208b0e049752543b1ada0140890218d9b", + "process/2026-06-11-vendor-cordis-as-source.md": "sha256:e1e9b70e9439eef26d68428b0829e1d07b6dcecd5601a05754189770586f8a20", + "process/2026-06-11-vendor-cordis-as-source.zh.md": "sha256:ade0a6196e0b0188a2ef19217b32f980d7e129f6252c5c10115e5582d4c4c32f", + "process/2026-06-18-markdown-cross-link-lint.i18n.yaml": "sha256:8d3e9fc65db2d4cee347a077923c664f661821026fef837c4eda923baad765dc", + "process/2026-06-18-markdown-cross-link-lint.md": "sha256:cdbe7ba8995f7430c7e2cef59ab7bb3a61992147408fae41c5dcffe4e60a2261", + "process/2026-06-18-markdown-cross-link-lint.zh.md": "sha256:6bc822d10549cc687dad42da379bfca56b5140fbee6d7787a206fe39a82aad7f", + "process/2026-06-20-agent-note-classification.i18n.yaml": "sha256:c6b61a2811a74b65775606bc5876087ca570624d15aac5f524e7e0140f373567", + "process/2026-06-20-agent-note-classification.md": "sha256:a75d91d79b88833fc72ec0abd208b46489f8cf80282efce5c2cf575d5f332d91", + "process/2026-06-20-agent-note-classification.zh.md": "sha256:fc5beab1c80ecf2fc6907f85d1c851b9833ec6491bb7eae1c524c5dfdcef9905", + "process/2026-06-20-core-data-structures-catalog.i18n.yaml": "sha256:1ed1497d9ee2b967e61d3ba4ec605555fb213b39896085fa55d32ed92a96ba39", + "process/2026-06-20-core-data-structures-catalog.md": "sha256:bbd2c6c1625c8bcae50dce41748e2eeccb15a6cb4878909a47b99a664d5a8b25", + "process/2026-06-20-core-data-structures-catalog.zh.md": "sha256:c99338ed5ec9eef03183405e984106895b07c066879b9091418ec38c783a457f", "process/2026-06-20-generated-cordis-catalog.i18n.yaml": "sha256:5250aaec698b25bdf5e3a02f67e531793fc968f9c38348f0c8bd11418571967f", "process/2026-06-20-generated-cordis-catalog.md": "sha256:1f3190b759bf1445b35f25f2f18ac1c8b16d7f2e9263e2627bf3c94fac54d275", "process/2026-06-20-generated-cordis-catalog.zh.md": "sha256:5d46da71bd73bba62ba15a9f11b21da422dbecc8ed68b6f530ceb302e1935ddb", + "process/2026-07-02-tool-schema-catalog.i18n.yaml": "sha256:6a6dcd025c320c7fe50d99982716c6724ba8ccfda7170f9541fb70d53da2e008", + "process/2026-07-02-tool-schema-catalog.md": "sha256:43536908e3698bf75e77e204a9c72425b2289a67c18a3b905986351832334d5b", + "process/2026-07-02-tool-schema-catalog.zh.md": "sha256:de2da2ec2828e769d4dd282bf7c16437562a9155111726a981842e58891aaf53", "process/2026-07-03-documentation-graph-atlas.i18n.yaml": "sha256:b1e1ed4b7865d87f939dbf8c94c0ea1069fdf7af6fa68f695e6c9d6eccbeb123", "process/2026-07-03-documentation-graph-atlas.md": "sha256:b62e92bb12123bfa4c4dac806f584aabb6b60af4c5a6a4ab88f84bb9153e766d", "process/2026-07-03-documentation-graph-atlas.zh.md": "sha256:3485ede4a5e695643bcf9e744a62f8914cff788ae35717dac5eb6bf77e0d65cf", @@ -355,15 +1414,30 @@ "process/2026-07-04-persistence-log-catalog.i18n.yaml": "sha256:23119a0769808279d7caef9e84934cc53b6a86580b703c205fa47ad181a2bf76", "process/2026-07-04-persistence-log-catalog.md": "sha256:fbb44218b77fd92f7b0cc7af2559200547018ceb5c34aca560371227c8bf5898", "process/2026-07-04-persistence-log-catalog.zh.md": "sha256:a39ee31bec043e97ad6b7e8433d4c1d24200642049e371ac0167a2092a6e5286", + "process/2026-07-06-export-jsdoc-gate.i18n.yaml": "sha256:e96b33ffe7ca4eb891e4757ad415334a02bda0a1659dc0e7db8d39c83ab54c27", + "process/2026-07-06-export-jsdoc-gate.md": "sha256:a772ca941c1e3dc29820cb8287bda1d44a7a4ec51dba71513101f5ff8b329819", + "process/2026-07-06-export-jsdoc-gate.zh.md": "sha256:223ad583f4b165fc48f5fa2764f971bf194c4fe92be0a7361b37f6bc87e71198", "process/2026-07-06-generated-config-catalog.i18n.yaml": "sha256:48e64ccfc7622559a9b964e2741ad82a9fa37243a0d5c472f0482d9c748d7739", "process/2026-07-06-generated-config-catalog.md": "sha256:c8654a4e084bfbf4f7d8eb78239dc1d5d62e1384b2aed309fa2526a4d6de0f04", "process/2026-07-06-generated-config-catalog.zh.md": "sha256:5ab8d964f12e0cf9a04251e988f0b2a114d7ae8ea7ed337c00f625213cb1dc94", "process/2026-07-06-parallel-github-ci-gates.i18n.yaml": "sha256:0f6ece268d9a51bc20cb8eb929f26d8838761603a64eb08dc24521198f10da36", "process/2026-07-06-parallel-github-ci-gates.md": "sha256:6249bd7396ae7f2d0dc671879ce21cefab33a47ace6ef17a25a70e8650b815af", "process/2026-07-06-parallel-github-ci-gates.zh.md": "sha256:cf7edb9bcf97ab1d4e452330c0df0b127a664509ec3f11597ace3eabeb663a5b", + "process/2026-07-10-readme-known-limitations-gate.i18n.yaml": "sha256:57635340ba3a9d1a0d20e0c6222fb153488dd3f198e5d67fc2cf107645d537b4", + "process/2026-07-10-readme-known-limitations-gate.md": "sha256:ffb5969f1a4e9196d18510cda3905bcf6ca26509fd0106c0bc6e7dac63806b0d", + "process/2026-07-10-readme-known-limitations-gate.zh.md": "sha256:9b7f9fa5b1b171f7961487e303eca55b7e50f9a558cd91942991376d1d77f57c", + "process/2026-07-13-documentation-site-projection.i18n.yaml": "sha256:3711a572c20d906bfe7d6ddfe6edfc2fbb2a6bb4a46c65ab98e0c68d248977fa", + "process/2026-07-13-documentation-site-projection.md": "sha256:638e257222fa5d21d33b2da3450159edd6fbe60b98a405aef79a6df42dcdb12b", + "process/2026-07-13-documentation-site-projection.zh.md": "sha256:d51155d83bbc95ba490b632498bbd57fbde021636537d6d8bb8768b4a33a1742", + "process/2026-07-14-typescript-program-backed-semantic-gates.i18n.yaml": "sha256:2e0b55817dcb5ec12ff75e3ca28253531c7a6ddd3adcac8b11b770aa8ec6731d", + "process/2026-07-14-typescript-program-backed-semantic-gates.md": "sha256:61a0b69f3349b24ea891355f1593e067fc127eff3797c79d9dee545fedb7f230", + "process/2026-07-14-typescript-program-backed-semantic-gates.zh.md": "sha256:7ac18f9968c57fa352cc8c7ad3b902fe563809b3b9a4c34a0693bb4cfb946601", "process/2026-07-17-run-ci-examples-from-built-lib.i18n.yaml": "sha256:0a2e97095be592e2c603f23d9b3b8959c4556b5636fa2c6e4539be18cfcc7a6c", "process/2026-07-17-run-ci-examples-from-built-lib.md": "sha256:d7e8901c67e9850b05cef65132f193b8be566be40d0f54b28b11043871955263", "process/2026-07-17-run-ci-examples-from-built-lib.zh.md": "sha256:9bb720b65a0d5933b5804dfbe0104c831a26695687b7f1a72f4ed4cfb4bd4415", + "process/2026-07-19-require-agent-notes-for-non-trivial-changes.i18n.yaml": "sha256:3f02660aa672f62e03f29c23878c1f4809be37994e96074e649556326a273956", + "process/2026-07-19-require-agent-notes-for-non-trivial-changes.md": "sha256:b10a2b7fb24daacb1e0eb41c926686c5ce5ebc7afb6c3fccf872a0318c4f9dbd", + "process/2026-07-19-require-agent-notes-for-non-trivial-changes.zh.md": "sha256:71b7d8aec3c6c75a17d41f910db405ad63cbea03fd4db74f40851adbd0ca67b3", "process/2026-07-20-generated-cordis-core-api.i18n.yaml": "sha256:4405f216d4beefdbb33f521dc8126be4f8d3a664abfed3a4cdad04fef84ab0f9", "process/2026-07-20-generated-cordis-core-api.md": "sha256:eed4dde36984f584c211bd00fa88ce4aef9ee296a0814b46a8d759f953a90660", "process/2026-07-20-generated-cordis-core-api.zh.md": "sha256:74f4316abc78500097f1b25bac06b460cb20a7dd3d5f323da875cc0575148991", @@ -373,36 +1447,165 @@ "process/2026-07-22-cordis-tutorial-docs.i18n.yaml": "sha256:4a7d80b72fd1d86379937250817459324a71b03385ebd35cd6e5a7c8cdc32dd9", "process/2026-07-22-cordis-tutorial-docs.md": "sha256:a4332b4357eb1f6f0f576e4f87c0d5697c12c8486dc2d92785556a54f2c7af90", "process/2026-07-22-cordis-tutorial-docs.zh.md": "sha256:dd9edc0e37abbf6f6975fdf0df5d498bc3589acf23bb8b31d72e3216fd930a62", + "process/2026-07-22-evidence-based-larger-hosted-runners.i18n.yaml": "sha256:0b4808e59b0503ab74d2cfb0a72379d35f8e0c527374026ccddf5e5984a35811", + "process/2026-07-22-evidence-based-larger-hosted-runners.md": "sha256:96f3acbc5ce4e310c132e6e88073086b853f988818cf90b44e189a575746fb83", + "process/2026-07-22-evidence-based-larger-hosted-runners.zh.md": "sha256:d2a668911c431fb44542c799c5091b8c6806fe986fc4b469baca3e10ffcc64b9", + "process/2026-07-22-fast-local-git-hooks.i18n.yaml": "sha256:88466f44dc0389d0a53e7e78bb976599876983ba9cf5d4a43a2690fbe824a5fc", + "process/2026-07-22-fast-local-git-hooks.md": "sha256:551b44a12b19dadf6f829a46320453f1bd03e0c8dab7377b19acf9a757466865", + "process/2026-07-22-fast-local-git-hooks.zh.md": "sha256:060d081efd9be6575fe85576202ff0d2755749de20bb2aad8844f39951dfc777", "process/2026-07-22-installer-in-repo-skip-clone.i18n.yaml": "sha256:677aa91c3ccd9eda8a658b10410699ac608d3891d2fa32529898a3432fb56660", "process/2026-07-22-installer-in-repo-skip-clone.md": "sha256:4e30c0dd5429db33638a91a30afdd3386ac1a4705bd259a5eef325b5f86cced8", "process/2026-07-22-installer-in-repo-skip-clone.zh.md": "sha256:1d93c99f5a8d56077e766242c33245621626be55cf481d01c83bb5cbbe9a74d7", + "process/2026-07-22-product-first-root-readme.i18n.yaml": "sha256:15a2649b0bb30e7974b020344e266f88674dae8ada334e72e86912ab75dc3b2a", + "process/2026-07-22-product-first-root-readme.md": "sha256:b62798c881956e17279e650e63d10ecc894939abb3273d6a090913993f07e239", + "process/2026-07-22-product-first-root-readme.zh.md": "sha256:f62c128e42211758140e5e7cc3f73a6f74b80627d6bc3d5d2c56c4b294fa65fa", + "process/2026-07-22-tsconfig-solution-root-two-aggregates.i18n.yaml": "sha256:5403b971d067c38c093588c917cc9eff16f588b15c375031be96e4e4b15a528a", + "process/2026-07-22-tsconfig-solution-root-two-aggregates.md": "sha256:3100683c40690e9fdbc2120c66f1c6bc2d8de36ab1c9067fb577c4b284ee59e9", + "process/2026-07-22-tsconfig-solution-root-two-aggregates.zh.md": "sha256:f8cb6b796c21952e44c1e47fc8b3bc6e91cc7ff99f0edc03156cc1117c3c4a3c", "process/2026-07-23-browser-demo-gif-recording.i18n.yaml": "sha256:808ccdda39e540645b440e40a2124baed737b98636265d8f6d8cf036a70f0d50", "process/2026-07-23-browser-demo-gif-recording.md": "sha256:4d3a3dc829c75b66f4f57a6a763b4b9562ce10efb90a19308142f598c5ea8524", "process/2026-07-23-browser-demo-gif-recording.zh.md": "sha256:409e5d31ea87f35c5227fcd1bd105167f580a8a24d29a223ce390b29eb31639a", "process/2026-07-23-personal-staging-maintenance-skills.i18n.yaml": "sha256:cbd5c32f2997713339699f4c12876b1950895fcb21594927c7509e3cb4c5b8d5", "process/2026-07-23-personal-staging-maintenance-skills.md": "sha256:a1ef960ddc47c8bc14578d8432ed0ac4272e31178937780989e4e3b3e3f4d49f", "process/2026-07-23-personal-staging-maintenance-skills.zh.md": "sha256:c0f3fcf0914af88cafcc7e094a2131bd1f764003defc6eaa446b743319e73ec1", + "process/2026-07-23-portable-required-pull-request-ci.i18n.yaml": "sha256:5ab6c0838907120c704d12ab173e0265462ddffbb3732a56a8a2a27d37e41067", + "process/2026-07-23-portable-required-pull-request-ci.md": "sha256:5f80c6735a0e25796e75862806abbdbc10dffa425353e47dac362bfa7b38981e", + "process/2026-07-23-portable-required-pull-request-ci.zh.md": "sha256:099a7c598ccf8f29406030c947dd440aac171ad6bd88220c79014f3d1f02b016", + "process/2026-07-23-translation-prompt-v4-contract.i18n.yaml": "sha256:0439144dc0dddce253969fed3907f06a8831dd2839b6765b69c079d727c04225", + "process/2026-07-23-translation-prompt-v4-contract.md": "sha256:0443343bf263131bc77a3587c7b9f7147bcc8008eb45562a17aaf8168757bf4b", + "process/2026-07-23-translation-prompt-v4-contract.zh.md": "sha256:2269e993a27f3144c92eab54b2a359177653f1d97e44707842481735cc28e9ed", + "process/2026-07-26-briefed-minimal-translation-updates.i18n.yaml": "sha256:3921dfcbe1b0f9f6e79452fd11f8430d7c7cd7704f58c66b2543d910b2266ecb", + "process/2026-07-26-briefed-minimal-translation-updates.md": "sha256:ff824875947c3c191331296faa5c6329cf95b0ff5706c0d7b53c70f2e0bf5c69", + "process/2026-07-26-briefed-minimal-translation-updates.zh.md": "sha256:a5d077f213dd26bbdbb5479656b8e3fcf35bd540544062a871d5347ab5e40754", "process/2026-07-26-gui-pr-gif-evidence-and-assets-branch.i18n.yaml": "sha256:89b6dc255cb0dd9d97ae6f34f37d185412d4260d7bf2f87d6b25e340f01dc26e", "process/2026-07-26-gui-pr-gif-evidence-and-assets-branch.md": "sha256:1742e09435ade4a09349c8843eb381e870a2be2d51b74449f08260422c8096b3", "process/2026-07-26-gui-pr-gif-evidence-and-assets-branch.zh.md": "sha256:220bd53a88617b09ee8970627c46540fa8951724b102acfe296a7ed7d0f7b5fe", + "process/2026-07-26-incremental-pr-base-retargeting.i18n.yaml": "sha256:f6d86de7eae91797cf91a5a558e0b4b509bdb3a89a3581fd7c6fc65904b072a4", + "process/2026-07-26-incremental-pr-base-retargeting.md": "sha256:8886fe9e9e0884d20565cd3a4a5dca7522c3e3c9de732c6df1be03bca2b7cb72", + "process/2026-07-26-incremental-pr-base-retargeting.zh.md": "sha256:266b1c75f3c64b1eed6150565ba6e264dd7fa639ed46736b661f0bf31499d254", + "process/2026-07-26-pnpm-action-setup-for-symmetric-ci-caching.i18n.yaml": "sha256:7f39dcc2db5a5c3e06646d5c8439f6ca05b2378a64f6f0adadb42b4bde2d1b53", + "process/2026-07-26-pnpm-action-setup-for-symmetric-ci-caching.md": "sha256:2561deafd3f90758713fdf4e3d41b284eb2d6975bee34c142b6dae42a8fc087e", + "process/2026-07-26-pnpm-action-setup-for-symmetric-ci-caching.zh.md": "sha256:24b9fa252fe58603d5816e200499cff2ad786c26e8d6f61183fb93f01f1bef0e", + "process/2026-07-26-web-syntax-highlighting-shiki.i18n.yaml": "sha256:1304fa0c38f18faeda5320317bad74d744303a8f3a78d7377de812e4fd7384ad", + "process/2026-07-26-web-syntax-highlighting-shiki.md": "sha256:84f88f0bb2201d9c7b219637e087c858b2f95b426da7d4848ce12ce01f1137b3", + "process/2026-07-26-web-syntax-highlighting-shiki.zh.md": "sha256:e3ec7bbab3ec323a67a2e66a14c80848fb9d6d06556a03018e2284b8422bb671", + "process/2026-07-27-dependabot-version-updates.i18n.yaml": "sha256:97fedbc9fb7517918604ba0bd984f88354b4330a6fd32721b40ef23ef6444997", + "process/2026-07-27-dependabot-version-updates.md": "sha256:5228cc127e3a00188a71aa603199d05ef4e1a23b2a43297f916147b0e6d123ed", + "process/2026-07-27-dependabot-version-updates.zh.md": "sha256:b656a75354fd94b488c9ec4e230831abb59d4045a7ace39b91d4c753fcada2b0", + "process/2026-07-27-explicit-change-scope-report.i18n.yaml": "sha256:ac4066004e48471c7948f1f10fabfa8f684ac573a7b6c79d718a39594e5d3cb7", + "process/2026-07-27-explicit-change-scope-report.md": "sha256:be2cf61ede74611fbbe8f1f2d60fc4264823a2bc0733101c7bbccd49e58f7026", + "process/2026-07-27-explicit-change-scope-report.zh.md": "sha256:9160468e290e64e57440461bc645cce17a3d5a3fe155aa38a8b2707f0248ae3c", "process/2026-07-27-wine-windows-gates-experiment.i18n.yaml": "sha256:6f4cbc12ee9cddbb297bf7e138ccabcd204f66898a0f7411b1633f03d5a9eab5", "process/2026-07-27-wine-windows-gates-experiment.md": "sha256:8d37dcdab058098c7de3da1de00ce61bef92bbc8d6ee71add959474c6fb3e936", "process/2026-07-27-wine-windows-gates-experiment.zh.md": "sha256:77fbf04df36af09e55007a93bd6b22d08ff99869efe8de3e97dac5b4701e0a9e", + "process/2026-07-28-per-subsystem-cordis-surface-regions.i18n.yaml": "sha256:828b9c4ccebed178ef1727c3c5a9ffdbd60a4b065ddf651558af979daa0027e6", + "process/2026-07-28-per-subsystem-cordis-surface-regions.md": "sha256:4dd66c172c3d9edabddf2e8f08a5f6f2afe71947ec4980d3410e07d00f173544", + "process/2026-07-28-per-subsystem-cordis-surface-regions.zh.md": "sha256:d6fbf3b4876c00d8e673319adf28252903e95ebb05e201386e021e5c3be96cc4", + "process/2026-07-29-oxlint-linter.i18n.yaml": "sha256:423b5ed28f25b127182e6a04338167252a96ed0bffa66641fe694a2070929a46", + "process/2026-07-29-oxlint-linter.md": "sha256:0c36ba50025d82056a80c0550d906a602a770c180ac7a51a7c7001241a4ba973", + "process/2026-07-29-oxlint-linter.zh.md": "sha256:55238ce3c3f250666528625806ca2e2c536e5fbd995938597f5986ad6c4c5b33", + "process/2026-07-30-cordis-config-source-plane-resolution-gate.i18n.yaml": "sha256:44109ee400944c2cdf7dc21eced7892308c9a828fafc6e32822df74b3474c2d7", + "process/2026-07-30-cordis-config-source-plane-resolution-gate.md": "sha256:206263ba37525a9a4606cd3b5850ed4b379e05acec98391601f7aa2807af836c", + "process/2026-07-30-cordis-config-source-plane-resolution-gate.zh.md": "sha256:bc3bd7358e37d54a43ee94dee4c0a9d05b68cfbaa4145ea2ba4ca50747df8186", + "process/2026-07-30-independent-ci-consumer-build.i18n.yaml": "sha256:a87208db1b73bc2eee4b1af59019dac009f8d7d8af35429a64dda810e44f2c92", + "process/2026-07-30-independent-ci-consumer-build.md": "sha256:3e8e947d824ea9f0294d22194992819283d5caeb80a010dff02e6bd8f66a4e96", + "process/2026-07-30-independent-ci-consumer-build.zh.md": "sha256:a57232d59dd1ffe6f71f6c5551d81309c926d3afc1f531111ca8d42aa6d50950", + "process/2026-07-31-coverage-exempt-heavy-suites.i18n.yaml": "sha256:1e782d6eab4863396d5543ccbcb3e08e0d6787cd89e47a78e811a17dc7f14ba9", + "process/2026-07-31-coverage-exempt-heavy-suites.md": "sha256:8b7c2ad543443562140d53e252c1d7b2939cd6ac29ba0915e0e7a4624db4fa5d", + "process/2026-07-31-coverage-exempt-heavy-suites.zh.md": "sha256:11af4876b08f76f23b0146ffae59b8b2e046c2a3a04b4ec8a1ba7df33ea8f4a5", "process/2026-07-31-installer-adopts-existing-checkout.i18n.yaml": "sha256:e7d072856cd3df3b717d94647be4ea05db087b114df4b11d68a171677b94c970", "process/2026-07-31-installer-adopts-existing-checkout.md": "sha256:d97e39d07bde30d534417a406fc6c56ee6765dbc7b671888d17ef2cac9a7c6dc", "process/2026-07-31-installer-adopts-existing-checkout.zh.md": "sha256:ab445493c1aacf3f8dc091bdbd765ad56c551ae613e0d8156610f0c4614a7431", "process/2026-08-04-forward-only-pr-issue-status.i18n.yaml": "sha256:af23e203a66a95674154899410e2f420d1d0685dbf856c24cfccdaa547a17925", "process/2026-08-04-forward-only-pr-issue-status.md": "sha256:2d31077da47d95ab3ddf64d5efc6b1b8fb7c7709d39aca4a825ef9e9d382d501", "process/2026-08-04-forward-only-pr-issue-status.zh.md": "sha256:b61f865b7a8a0ac901250a3edbb92ea73177067c4c25448c7088925c2caeccd7", + "process/2026-08-06-coverage-uncovered-locations.i18n.yaml": "sha256:0fe6068c00dc59db7d8843c0713d5377663b57876debb3a3aede459f28dd1226", + "process/2026-08-06-coverage-uncovered-locations.md": "sha256:1a76bd612cd0586306be6929bab9bced2728ad24c9fc93d803c4a0817e24dc5a", + "process/2026-08-06-coverage-uncovered-locations.zh.md": "sha256:b12bd196a5d6c8df40e5bd7e4087fbc0461b843830078b3651e886da7e8e6179", + "process/2026-08-06-doc-site-carries-its-images.i18n.yaml": "sha256:f51e2991b1b630a7f8ea3439dc70b6459c83de2248b45070644b987a54e94ffb", + "process/2026-08-06-doc-site-carries-its-images.md": "sha256:a3aeda5a11ff79c93cea8ecd683dee3389d092e8062cee81d4b2a63d3679c7aa", + "process/2026-08-06-doc-site-carries-its-images.zh.md": "sha256:03226de7c74b41efe102055b9e3d02d3ee753be3d1f6965c704b775a0bfc4b83", + "process/2026-08-06-in-repository-landlock-release.i18n.yaml": "sha256:92199bbb04ab0ccf606441e45b75393cacc09b3ff6c8defc58a4c3f4c1f64536", + "process/2026-08-06-in-repository-landlock-release.md": "sha256:f35f70b2a6c3b88b1d436f77c8a8f2400626a5406ffe0313fb3ddefee993d58a", + "process/2026-08-06-in-repository-landlock-release.zh.md": "sha256:d1d298a2747536ff6335789b157d16a2d5159e7962a26898e87958d29853971e", + "process/2026-08-08-api-remotes-generated-contract-build.i18n.yaml": "sha256:da10469121712bd6ac4fb1f665ca8bd59597a94b56324d2fe4bdef5235498b6e", + "process/2026-08-08-api-remotes-generated-contract-build.md": "sha256:8c3d7712cce4913cd3c02d1ac2b87def3f7104a7503681afc3c755896ac45d1f", + "process/2026-08-08-api-remotes-generated-contract-build.zh.md": "sha256:e32e1f53c763e769d152c8c41cf8f8977210e82a0d3f7cc7f0421da7e589e9ad", + "process/2026-08-08-lightweight-routine-documentation-translation.i18n.yaml": "sha256:f3b44e6148941de9840ef54be60e60ed6ec32ee04b42a1a472e38838b6aa7b14", + "process/2026-08-08-lightweight-routine-documentation-translation.md": "sha256:264fe2ee2338053a11fe0f0d5ccf12772897fe9fd4f4a7e8a1d6ba226f853e14", + "process/2026-08-08-lightweight-routine-documentation-translation.zh.md": "sha256:3d309e2fc34a6a99bbce4891c32d681e0a23b233791b29a550884f3e753d593c", "process/2026-08-08-review-driven-issue-lifecycle-triggers.i18n.yaml": "sha256:4c28c59d3fc323e7cd01eff31f1fe759834719c5bede1e82b39f868970bf856d", "process/2026-08-08-review-driven-issue-lifecycle-triggers.md": "sha256:1b0514de5d030170e91e12e4d6ba788a9247f840e82700faa385a1c0c76ab857", "process/2026-08-08-review-driven-issue-lifecycle-triggers.zh.md": "sha256:028d78d61f603d8bac64c4cce20b393a78f8e029d3bb4976e79a47ecaefa6032", + "process/2026-08-09-chinese-contract-terminology.i18n.yaml": "sha256:25cc7d0b0bb1947931858c0b9bec7d0adb3af247d276da8c8fb8e052b632b1d8", + "process/2026-08-09-chinese-contract-terminology.md": "sha256:e32145c8f467d5a43eb93a16af24d4dd45bff84acf682d768b9f49eb347efb15", + "process/2026-08-09-chinese-contract-terminology.zh.md": "sha256:12efa9c57002d71745373e9afb2f1bd047888e8b45df6b115719b77bfeaa2dd2", + "process/2026-08-09-md-fragment-anchor-gate.i18n.yaml": "sha256:1fed8e5c83099d128819afcc1f80a3727f0fb69ad939865b21c18c27a7db31d3", + "process/2026-08-09-md-fragment-anchor-gate.md": "sha256:60b887fa78d6c0e6176cd906b8b10695a230ae8c5286a93b6f5c7048f3770874", + "process/2026-08-09-md-fragment-anchor-gate.zh.md": "sha256:8cb7c156697cc1d3018b20ebc7477479cee6ce51368297fef394db572fbe7e09", + "process/2026-08-09-oxlint-only-fix-workflow.i18n.yaml": "sha256:7dccbb03ec97f3c2894114024379aa236143d1e653f346598d4f3ce62e87f613", + "process/2026-08-09-oxlint-only-fix-workflow.md": "sha256:b8cae7d2a51dc7669df23a3fe820ce4a5caa92e36e0e1a29d98dc42f8dbd94da", + "process/2026-08-09-oxlint-only-fix-workflow.zh.md": "sha256:1993b098b06c16708c13c8e452ebe4fdebdccf354cf2e60a1cf38938c2d190ab", + "process/2026-08-10-vendor-package-rescope.i18n.yaml": "sha256:f59c9419e63923eaada464cedb2a75600413a21cc5bb19315a0d656660ece5f7", + "process/2026-08-10-vendor-package-rescope.md": "sha256:e89447662c0e17cef2e043e6a05855665962c81cfdce77d1736434090e23ff79", + "process/2026-08-10-vendor-package-rescope.zh.md": "sha256:eaff05582575a8ec8d8690b3a2f5715e10e510c94ab2b609abf691288c5903de", + "process/2026-08-11-python-publication-workflow.i18n.yaml": "sha256:928c742612848d5b76e0f58f55532212424f3b2176bbcd40d1673d8919011021", + "process/2026-08-11-python-publication-workflow.md": "sha256:43c1ded5b3180147605543588f15b4ee98004cb04d454a401173507ed15772ea", + "process/2026-08-11-python-publication-workflow.zh.md": "sha256:4f33306e41696cf31d08eb6c8080bbb2ee60518e71f1d69a8bf3fe189a7c3a98", "process/2026-08-12-documentation-site-navigation-and-chrome.i18n.yaml": "sha256:dde0041399b253e3758045f0858488db8178ffc563ce889c8b396c87af6c3730", "process/2026-08-12-documentation-site-navigation-and-chrome.md": "sha256:56cb836ed862378afd33eb5c1a9dc159958b35a0aed3bf4336fcf26ab0b84b8b", "process/2026-08-12-documentation-site-navigation-and-chrome.zh.md": "sha256:f2dd4adde38a09fe312866a1e6dad0f465684d809287862f40f1a488acd4fe18", + "process/2026-08-12-face-named-client-test-files.i18n.yaml": "sha256:a2fcec18631f2a5ec163b0e1fce93e96650c268c6a44696710aa92fed341b225", + "process/2026-08-12-face-named-client-test-files.md": "sha256:7838475c382f52e55a7d055696a4084265fbc9352d413285f366220fde5f23c6", + "process/2026-08-12-face-named-client-test-files.zh.md": "sha256:52a2c2a3d3fd7b3f4c0e87bfaed16bc6139a7cbf41206650e108d12a43172862", + "process/2026-08-13-public-vendor-and-native-sequences.i18n.yaml": "sha256:1b36a1bc663b0d3e8758bb3aeee6ac5bd655e974a990da9c741571b19cc5dc12", + "process/2026-08-13-public-vendor-and-native-sequences.md": "sha256:6e74662ce606a0e535fba0e1bbf96c55ae9ba029e1d3836722cbc01fc5f0c80b", + "process/2026-08-13-public-vendor-and-native-sequences.zh.md": "sha256:f40e057bbd092cd4aea307a333ac35254f85bf8d6dd2bbc3fc0e438d84f7fb38", + "process/2026-08-13-published-document-fragments.i18n.yaml": "sha256:0fc95cf82fc932fa0398719a3b773e95516dafe76e1a4ff299675c9e2532b861", + "process/2026-08-13-published-document-fragments.md": "sha256:94e2b60ead19b6bb8d30596f3fc72233b4c1a3025befad3cb0dd5089e7d1f816", + "process/2026-08-13-published-document-fragments.zh.md": "sha256:7f52d38b2c038817389286427e5fc73d979c71e238471d102782b96023df67ad", + "process/2026-08-17-readme-assets-on-cdn.i18n.yaml": "sha256:6127ebccb5ad673f539b6043bd12018182de5eda1ddcf9701e8b3cf8fdc75da4", + "process/2026-08-17-readme-assets-on-cdn.md": "sha256:c1c7a47f6eda815e13a497b15ce4226e2e021202f1c9b61c2b7330c5ede9b1bb", + "process/2026-08-17-readme-assets-on-cdn.zh.md": "sha256:e55d6d236076755ddfd79cb03d3942b8a083c29d586bf04f1344a6a925c02d88", + "process/2026-08-18-localized-bilingual-links.i18n.yaml": "sha256:ae4e71d3893050019de59ab0499e500acc0af59a9a1546efe05cbb77e1a00784", + "process/2026-08-18-localized-bilingual-links.md": "sha256:de8afbdc1aa64b51e4df8332b52e87d1622fe3dadb1a5b1cb33b4fd3713eb43a", + "process/2026-08-18-localized-bilingual-links.zh.md": "sha256:89eb74665d5a38a87209dfc172696cb530f6152b2511c9cee675f3c649514575", + "process/2026-08-20-doc-site-raw-markdown-twins.i18n.yaml": "sha256:de18336460253fa8c3f0729a8961b229c039692aac3f4ec3922ea8f0fb97c7a7", + "process/2026-08-20-doc-site-raw-markdown-twins.md": "sha256:a630777a349b1af4a6006aca086ba540ea8613522c3c211b6145c88945303457", + "process/2026-08-20-doc-site-raw-markdown-twins.zh.md": "sha256:90b5c927dec2238e06daa03b45eecbb8a10c50288c99816718aa0b41f8bf9ecb", + "process/2026-08-21-documentation-site-tag-release.i18n.yaml": "sha256:357c314b30fad4c30604e1deea1c2b595b5de801222f9de731a58d1ec1cbe3a5", + "process/2026-08-21-documentation-site-tag-release.md": "sha256:e65028c0ff1742eec07d9e19cdfadbc35d62a11ce8d5234904c0a4112100bbf4", + "process/2026-08-21-documentation-site-tag-release.zh.md": "sha256:6a13e6150ffa298723b45998ad6c176a0fb25db650f3a91a052b01408f2192e4", + "process/2026-08-23-client-cross-package-value-dependencies.i18n.yaml": "sha256:db323576b19b0978a2913367084d159f48c1d57272e26c42c41382c16ea6bc08", + "process/2026-08-23-client-cross-package-value-dependencies.md": "sha256:67cc1e2333a43e019ae3ae2415bf184bea0b0dc1db6acb3b23ec132bf1b46d84", + "process/2026-08-23-client-cross-package-value-dependencies.zh.md": "sha256:7632873d1b27fdb85068ae8d94f244c7934d383ce4bd0fbfca306d02fd8ad083", + "process/2026-08-27-explicit-workspace-path-aliases.i18n.yaml": "sha256:2c27007d7bd2e1652250a0bd80687ff8408e8c8823c848824aa0e8c6d4c70e53", + "process/2026-08-27-explicit-workspace-path-aliases.md": "sha256:b4e2872a5ba5dcd7e4014b3a2e8ae725d5c60356a4d72708215f8665a69f29d9", + "process/2026-08-27-explicit-workspace-path-aliases.zh.md": "sha256:a26eb4929471fdf058804a03c6b44cd7bcb8345cb59ee059d0ffa3136bbb79af", + "process/2026-08-27-gate-runner-fail-fast.i18n.yaml": "sha256:b6003a8a7232ae05d4cc5a24d4f93274f6b05e81dd1cdb1b59767e194aeb2897", + "process/2026-08-27-gate-runner-fail-fast.md": "sha256:c0445303d6bcedef055c7b87c513c1c81d8ae151a18462f40d7293be928c083c", + "process/2026-08-27-gate-runner-fail-fast.zh.md": "sha256:633e8698d7f0aabee210da2d0b6a06da857a60a8bab05943ae6bb993ba6e96cf", + "process/2026-08-28-test-temp-dir-self-cleanup.i18n.yaml": "sha256:b801b7be8503f620b78e6231fa756eb73bd7ba9706991b831b7ae6e23b093cdf", + "process/2026-08-28-test-temp-dir-self-cleanup.md": "sha256:66e62abf171f1393f0b4cdf4c1d932f6bae0ca660d0948d780e355bb4c1bfe87", + "process/2026-08-28-test-temp-dir-self-cleanup.zh.md": "sha256:c6f96a3f429196e96ac98722b42d4f0a77840bc36c9694773bb57fdea7d765ac", + "process/2026-08-30-windows-refs-store-block-clone-install.i18n.yaml": "sha256:3aac7347746a54e4dbc3b7da1c0fc7f7f90ac70fc153ecb7a5b260f98dbe68cb", + "process/2026-08-30-windows-refs-store-block-clone-install.md": "sha256:703d3e0552ee8959aeec8f28538d5b934f460f02d503cdb504b0d131501bf6d0", + "process/2026-08-30-windows-refs-store-block-clone-install.zh.md": "sha256:3072b0097ee7b3d1166388964dac41fe82f83c2d7b24c8bbdc9c26ca82d8e3c4", "process/2026-08-31-pr-opened-issue-start-dates.i18n.yaml": "sha256:c522daca5e126bf64227d6259f447648a589831125113dcf49814817d4b28f17", "process/2026-08-31-pr-opened-issue-start-dates.md": "sha256:749f343576006b0d4950b9c67f434cea0bb9ae21a5fd8d74fefe77b59289ffbf", "process/2026-08-31-pr-opened-issue-start-dates.zh.md": "sha256:a227dc6cba6e62d08a15b1c6b69b5941297c2d10035d257d6f3bc95d6ea54591", + "process/2026-08-31-serial-windows-notices-timeout-budget.i18n.yaml": "sha256:b9444ebc3fe67a4d85f7efbf7dfb921cee3c7dfe2269386883b64d6af1b616eb", + "process/2026-08-31-serial-windows-notices-timeout-budget.md": "sha256:f12c1cadc1062cfbf89358afa2ae242162c3ff1abc4fb6bd3481f4a26913b977", + "process/2026-08-31-serial-windows-notices-timeout-budget.zh.md": "sha256:21ecacb2b3c40c152a05cd6194ed2e33f6e33f4f816edad7ebcaf31c7fecc9a1", + "process/2026-08-31-windows-coverage-flaky-test-budgets.i18n.yaml": "sha256:9f79d6164ea4100e5dda7f5fd301ec190ec9f601b4f50f713a6a34055e4f3be0", + "process/2026-08-31-windows-coverage-flaky-test-budgets.md": "sha256:f08e98e002781b8b45af0b16c375aabc8ea66195733b4552a3586f9029e6210c", + "process/2026-08-31-windows-coverage-flaky-test-budgets.zh.md": "sha256:784d200d253ef9db7559d5d1a444f6b05a798ec9ed66e518b973b24084606f3b", + "process/2026-09-03-workspace-version-coherence-gate.i18n.yaml": "sha256:ac442dee172d396395b8516d6d38c4fcedbc855d735c86c378aec5c1098ecd8d", + "process/2026-09-03-workspace-version-coherence-gate.md": "sha256:37b63a78506a8741eb04826dc1eea7e3a64c19fd4494c2d7754054a5602d308b", + "process/2026-09-03-workspace-version-coherence-gate.zh.md": "sha256:cfa2c8fe6cf1d4665121a987861b70a91b5b41eb99e7ed192c85760a916fddf6", + "simplification/2026-06-19-drop-mutable-session-summary.i18n.yaml": "sha256:43fe5daadc1491f94a3e34595182cad1591f76b64e1f13b48811b80fd7e53b94", + "simplification/2026-06-19-drop-mutable-session-summary.md": "sha256:01647a5a14aa4e195328d4d39c6d80eb0723739e5a543115314716b280a93560", + "simplification/2026-06-19-drop-mutable-session-summary.zh.md": "sha256:22389e0c29158b1f7a5a43ed6073f8795bb87cf51c04cf83be055359cd65c9f5", "simplification/2026-06-20-drop-unconsumed-llm-adapter-change-event.i18n.yaml": "sha256:ad3d1263cb0051b885173bf064de62065e2c646ccaae2d7250723da3b4eab90c", "simplification/2026-06-20-drop-unconsumed-llm-adapter-change-event.md": "sha256:8fb061d51c8c23b47d2367814bab3623c6d5b972f38d207a273caa9030b579bd", "simplification/2026-06-20-drop-unconsumed-llm-adapter-change-event.zh.md": "sha256:2ffeaca91f82844a5616d6dcce6b4af514bb8a7c46f78e47f668b204ac6edc04", @@ -412,6 +1615,12 @@ "simplification/2026-06-20-prune-dead-seam-methods.i18n.yaml": "sha256:0594648368c942f429599ac0ff5977d62c89c70a31d4bdbac61b0a30fe15ef3b", "simplification/2026-06-20-prune-dead-seam-methods.md": "sha256:fd3b0eaf600e178eeeef0c6cedc71f2382878733c557f1915d3b47f74a1d0d6d", "simplification/2026-06-20-prune-dead-seam-methods.zh.md": "sha256:4f5feef9331e3a1346bc362ffb39cfa373db2c609041bfeee6d88a10392464b1", + "simplification/2026-06-20-public-agent-stop-api.i18n.yaml": "sha256:1361af7ba63ec677b7dc972076168aa9572113d7c8a7e698559bb1eeee086403", + "simplification/2026-06-20-public-agent-stop-api.md": "sha256:27155766e62a772963dbd1db2366f428c6fe1781ebb60a45f975837cfdeffacf", + "simplification/2026-06-20-public-agent-stop-api.zh.md": "sha256:9ec55ea92584e1de847938b6603d0fbaa75b701ce79d67848743194e63170afa", + "simplification/2026-06-20-remove-agent-boundary-mirror-events.i18n.yaml": "sha256:449d72fef793fba249462bcc61a87271c17b1c709ce6ac51dc0907e1cc72f4b5", + "simplification/2026-06-20-remove-agent-boundary-mirror-events.md": "sha256:a0603180ce487894ffb7f27341b9aa7bd5ce7f0e02c7dc0dc3178ec6ec1423b3", + "simplification/2026-06-20-remove-agent-boundary-mirror-events.zh.md": "sha256:c3a58df81e6f94a7a303c36e00a74c30896630a409f0d6bef9a2af6b79a5f435", "simplification/2026-07-02-remove-stream-chunk-mirror.i18n.yaml": "sha256:eef600eafd70a576b2ac16a74f5dd5010ee601376008a90be10f1da56d746cee", "simplification/2026-07-02-remove-stream-chunk-mirror.md": "sha256:0c22a896260c6eb8991cc8babd8172f7b6889fc41bb891d748f34650b3eee5ec", "simplification/2026-07-02-remove-stream-chunk-mirror.zh.md": "sha256:ae7a3c2450b16fdf2f8da9e1f83cd987bf387671ecc8ebb76d2e7541695e7ee1", @@ -439,6 +1648,9 @@ "simplification/2026-07-04-share-app-bin-boot-glue.i18n.yaml": "sha256:bd64279826444b41f6f1dc5d92fecd974edc3663885470f2eae226978926a59b", "simplification/2026-07-04-share-app-bin-boot-glue.md": "sha256:de0f4dca1e89c0c19d649aa37989df1991376d2cac1a5ec72c1a3ca0dce27e49", "simplification/2026-07-04-share-app-bin-boot-glue.zh.md": "sha256:e014ac4c2b609b70c467540ff0985c59a74df0eaf3062c43ffcaf1ac35d18ce2", + "simplification/2026-07-04-tighten-hook-protocol-contract.i18n.yaml": "sha256:3945dda821fcb94bcf9f86f24f5f2c6d255fe281d516852ccc036666849e77c1", + "simplification/2026-07-04-tighten-hook-protocol-contract.md": "sha256:a17d6834b42d5377d51c4f6b07a6fddb4806b525c940b81fbde3e2f118f656cb", + "simplification/2026-07-04-tighten-hook-protocol-contract.zh.md": "sha256:90b6f65262d7030c70bef489ed845888cc313d17cbfea2674972a74cdd7a27e4", "simplification/2026-07-04-trim-acp-bridge-unreachable-surface.i18n.yaml": "sha256:9080af48de70cc519f935896ae90134bcecdf4cee56bb5abb3e909672f2dded3", "simplification/2026-07-04-trim-acp-bridge-unreachable-surface.md": "sha256:c11fbdea4bdd14eba517dc6377f8e59eb73fc05779424f38833cc662baf04fd5", "simplification/2026-07-04-trim-acp-bridge-unreachable-surface.zh.md": "sha256:f1bceae26fdea3fc71d8a0e32530eadb00342590a611b9fbc7ff09d0fc8aa3b8", @@ -448,12 +1660,18 @@ "simplification/2026-07-12-prune-unused-web-seam-fields.i18n.yaml": "sha256:896dea8f5430603c445169fa79bfba997421a76d48fa4336349ec693572e6167", "simplification/2026-07-12-prune-unused-web-seam-fields.md": "sha256:e732eb5eed007e95f40f32eddd8d94cd34f0ce579f1a70b16ca072a48a3989b4", "simplification/2026-07-12-prune-unused-web-seam-fields.zh.md": "sha256:ac427d5cf6525c155b12dc7605954ebe3ce1f3edb6da0d0305e8d79cf475460b", + "simplification/2026-07-12-simplify-session-log-representation.i18n.yaml": "sha256:b1d12e88c67aed406683c7da1e75f53ab70c2ca47c7a7f43f928ed334f967537", + "simplification/2026-07-12-simplify-session-log-representation.md": "sha256:47bc2374cc579cefdcaa7cfedd3cb9818bb8d43269ffc9fc7bb6eb38ece236aa", + "simplification/2026-07-12-simplify-session-log-representation.zh.md": "sha256:89ae2d690109c723d2792d8a1d625c7f7334d752f374214a30ebd32a1732326b", "simplification/2026-07-19-retire-subagent-mock-package.i18n.yaml": "sha256:a7e5e21bf8a3a06bbf1272c677a7fff980e7548459405835416b88f1537bfe92", "simplification/2026-07-19-retire-subagent-mock-package.md": "sha256:3df91519b77efcc413a54927adb2f829e944ce7f827211ac6ae66d4b5e0398a7", "simplification/2026-07-19-retire-subagent-mock-package.zh.md": "sha256:c86d96800abc5aebf2d63694cb2cdcb21867091b2867de44493212f302498889", "simplification/2026-07-19-use-one-session-surface-manager.i18n.yaml": "sha256:602ab8fda1facb04a8f04d088267cbbd0426d607a8cc8c3fc056887f4a2696d9", "simplification/2026-07-19-use-one-session-surface-manager.md": "sha256:267882c357527a12d8581c9d78249819a987c766a74a2d47f351dc5b14bf7d0a", "simplification/2026-07-19-use-one-session-surface-manager.zh.md": "sha256:21c68a432c22209a3c19c8424da8e03fe91415d9ce3753cf17d727663077e4c9", + "simplification/2026-07-20-remove-stdio-and-echo-agents.i18n.yaml": "sha256:faf29be2bbf3ba7146a6420b5b86ec7b4f4352a7989bc10a787d9af6d439e48e", + "simplification/2026-07-20-remove-stdio-and-echo-agents.md": "sha256:a4ca94f12a4b6786c49975ccf21be428d558a75feb2dab78fd3c391fbfddcf5a", + "simplification/2026-07-20-remove-stdio-and-echo-agents.zh.md": "sha256:602ae6a1a23c07092a2c0986d920c50b4e138c23ba857547f5e954be4def6404", "simplification/2026-07-20-retire-readline-front-door.i18n.yaml": "sha256:48b8573d325d280b65e7debde660140e7afdf1db793d4eb32c839c635121a965", "simplification/2026-07-20-retire-readline-front-door.md": "sha256:f632cd22fd81cc470992ff4e5f695a118a2aaed53748a860da7e9a78ca99ebbd", "simplification/2026-07-20-retire-readline-front-door.zh.md": "sha256:3612b25120a87f0e1c9d075c9e3c4b6a9449f38c8b219dd1aef506c6e6f92d98", @@ -466,45 +1684,159 @@ "simplification/2026-07-22-tui-titles-from-session-title-service.i18n.yaml": "sha256:b02b34f76599eef44ef6cbacac36345716bed52eafe8f30e5300d654a93eecbb", "simplification/2026-07-22-tui-titles-from-session-title-service.md": "sha256:c84b34c2c4700f78e3060e64f49f16625bab002e8211dcd6fce431e7fd076392", "simplification/2026-07-22-tui-titles-from-session-title-service.zh.md": "sha256:99df66f452004df84efb215e3b58bf73e39af0538ddf038bbed4ac6b65c630ea", + "simplification/2026-07-23-collapse-persistence-flush-state.i18n.yaml": "sha256:117b3c55ccb34b83334fa446042c044914953c541a7880183986888a44ac2049", + "simplification/2026-07-23-collapse-persistence-flush-state.md": "sha256:f759dba2bb805ac2857cd9239bf4298776228b3413b52765fcf60831be438db7", + "simplification/2026-07-23-collapse-persistence-flush-state.zh.md": "sha256:78dea969e20b7f8fa8d3fc70ba7015266ab38def7c8762d1c14f30130c6ac06f", "simplification/2026-07-26-consolidate-gate-scripts-on-existing-deps.i18n.yaml": "sha256:7acf002ea8c1533f052c7bfc0c4e3da013ecf43c5872866a3ee4a8c2691c5e33", "simplification/2026-07-26-consolidate-gate-scripts-on-existing-deps.md": "sha256:f18a913096b7defd2192c4bac888a33f68075c3662703a0e28a6146897d17777", "simplification/2026-07-26-consolidate-gate-scripts-on-existing-deps.zh.md": "sha256:ff48a37673c97059536fe5b61aff746133eac682145550badb049eb5c83b097c", "simplification/2026-07-26-eventsource-parser-for-deepseek-sse.i18n.yaml": "sha256:534abd90ddde9ccd35ab7e595de4242d8fa30a75908a638e5b3290f749553e5a", "simplification/2026-07-26-eventsource-parser-for-deepseek-sse.md": "sha256:ce449c72ed09238ba5dbe6068689db13bd33225694b2ad2c7696541f32dc0eec", "simplification/2026-07-26-eventsource-parser-for-deepseek-sse.zh.md": "sha256:2f66b407b626f1f8c661d849b3b359c959e690715e0ac3f61f7e3d57d59e89c3", + "simplification/2026-07-26-merge-subagent-control-service.i18n.yaml": "sha256:ee4d50bf2184d79a9a13ca7b8912eb538864fb65858a633b9d2ee82e57d8165e", + "simplification/2026-07-26-merge-subagent-control-service.md": "sha256:122a445e165b95b739b09ba57f01f6ba3049dc7d3939843470463c80d0777f0c", + "simplification/2026-07-26-merge-subagent-control-service.zh.md": "sha256:b8c56cc3d4f453744e5023a43ccf771d62b41475dbc9e24ae471785f5e8d5b8e", "simplification/2026-07-26-turndown-for-tool-web-html-markdown.i18n.yaml": "sha256:6df56f5f5639847f0fac445abb5fea8a07f3cf9a0703d9022e50728c8f5055ca", "simplification/2026-07-26-turndown-for-tool-web-html-markdown.md": "sha256:344c5cc2a1e79287eeda6996ae417dd2e02a7545987df0f2c9016b20ae094d93", "simplification/2026-07-26-turndown-for-tool-web-html-markdown.zh.md": "sha256:8c4f2ac12ccd23f7ada90694502f5da689344e6bba72080a89672aa9b4f1903a", "simplification/2026-07-27-copyable-transcript-no-gutter-bar.i18n.yaml": "sha256:821f96f3e203e03b80553c07b10a511926bb5014be95c7df6bffb30c8e226d31", "simplification/2026-07-27-copyable-transcript-no-gutter-bar.md": "sha256:4b6aa150bbc8a4da0acac4d20f5fb8c2b77fef7e9c4c4dba8fd8e84dec36d619", "simplification/2026-07-27-copyable-transcript-no-gutter-bar.zh.md": "sha256:5225e627ff301be171434a5b9f18905fe1578f50eb2d4bf9998e126aba6cc3e3", + "simplification/2026-07-27-intent-named-subagent-continuation-operations.i18n.yaml": "sha256:29460e03376a7c7f4f9c8f0db330ee29da0db2035e8218b3b6350e1797e43b3c", + "simplification/2026-07-27-intent-named-subagent-continuation-operations.md": "sha256:234ec4c6deaf66b434b3dfdfd247b5aa68898fa1fb05faf9f9399fe055a7c8d7", + "simplification/2026-07-27-intent-named-subagent-continuation-operations.zh.md": "sha256:dd1e8b92ba7d2990f7f43401bcebf21b8847bd9bb4422cf1722cbf285da6cb05", + "simplification/2026-07-28-local-json-tree-renderer.i18n.yaml": "sha256:52903d45c69f0996f86cd45b9fe9ec6fe3912a0d27bbbf2f126c874ec6ef5710", + "simplification/2026-07-28-local-json-tree-renderer.md": "sha256:86f90ba8e6c5963598f276e11a7dc3a621cba42ead5b2d48b8ead6bd1b9fbc47", + "simplification/2026-07-28-local-json-tree-renderer.zh.md": "sha256:09f839200b46d328e36bff424db4493a3ce07e7a264941887359cb931874a223", + "simplification/2026-07-29-shared-base-config-overlays.i18n.yaml": "sha256:1991796ad47e1fd230456afb284a3f581fdb4f87a3df2a16f3cb60bc4bf9e0d7", + "simplification/2026-07-29-shared-base-config-overlays.md": "sha256:955f2dccd68a3a7f0767aea1521f52427c54ab5d87104254f0e51a4a6831ef7c", + "simplification/2026-07-29-shared-base-config-overlays.zh.md": "sha256:4dabbd3d815cac89ac24464fb01c1f3f00f37d3821a31aa5b0edc4c3e842bcab", + "simplification/2026-07-29-simplify-web-image-input-v1.i18n.yaml": "sha256:78650ffebb041d0ea79ff696ae59cd146f5065de53035c9d317522716da7e938", + "simplification/2026-07-29-simplify-web-image-input-v1.md": "sha256:b21ab9e82d95813aaf247d0a0cfbda5ad2b0a5a8e0be72cbbbbaefddb6f03732", + "simplification/2026-07-29-simplify-web-image-input-v1.zh.md": "sha256:0827388447fd03837a0a87972d0a9de34f3161f378eb3614259eca2b56b17348", + "simplification/2026-07-30-private-agent-send.i18n.yaml": "sha256:45f30de320f613cd8a8e80afd260729e522f16966e02c752cb35422d6d2611e9", + "simplification/2026-07-30-private-agent-send.md": "sha256:7961f5385abb3a2e257db882b6e30203ee42feca1f0dfd0203c8e82eadd3ae96", + "simplification/2026-07-30-private-agent-send.zh.md": "sha256:04a51dabc33317643b274565ae55783c7831a0560d4480f5e011f7cfcac5767b", "simplification/2026-07-30-sidebar-resize-without-visible-pill.i18n.yaml": "sha256:ad42430fef4a5db610f8c56acfcda79b40396418694f664a5b0fb093bff1f114", "simplification/2026-07-30-sidebar-resize-without-visible-pill.md": "sha256:6f2cfc5121371ec19c7178b31777c223e16bebdc9b63b7654a61cadc4a765b63", "simplification/2026-07-30-sidebar-resize-without-visible-pill.zh.md": "sha256:ab859eeb12c6a74da3c37d411af52fce37bed3195941570b2f23ccd9a00d55fe", + "simplification/2026-07-31-capability-neutral-sandbox-policy-context.i18n.yaml": "sha256:0ce56086a78ba9e01d14e299be033adb07798610889bd496fb6989608b8bcfa0", + "simplification/2026-07-31-capability-neutral-sandbox-policy-context.md": "sha256:2c857fa8db0e8cf067d330e35976ee450e525e80100ba4e8b34aaa1152a68d62", + "simplification/2026-07-31-capability-neutral-sandbox-policy-context.zh.md": "sha256:b39eddb49c9ae3a2263d9a4c9c2d14a229e53cb99f82ff3a527d2787cc6a2727", + "simplification/2026-07-31-drop-user-message-edit-stub.i18n.yaml": "sha256:c170eb004821cc56b3edebe57c7d7a2d36e1ee96546c6f83dee1a149653c891e", + "simplification/2026-07-31-drop-user-message-edit-stub.md": "sha256:4f4bdba53b2b39416d4832d258521753c4212c62d292fdd57faea334b8ebcf5b", + "simplification/2026-07-31-drop-user-message-edit-stub.zh.md": "sha256:1912b429e9e37186af2bc9f4ef26d6b4b9860ef3d99c1720192ac1ff78d33b39", + "simplification/2026-07-31-one-route-to-add-a-workspace.i18n.yaml": "sha256:560ba8f32c2b63633e15dccd07a3e10e326916f7572a62dca3285f7ecbf68f71", + "simplification/2026-07-31-one-route-to-add-a-workspace.md": "sha256:f12d42a4744ff6b04f2e5a23157a4602b7e0b18a49e9604dbf7c52886e83d035", + "simplification/2026-07-31-one-route-to-add-a-workspace.zh.md": "sha256:968de8c5f52ded7cc50a6a04d30eaa2fbba395b2612de5a0f6462c31de3c2fad", "simplification/2026-07-31-web-ui-no-steer-entry-or-interjection-chrome.i18n.yaml": "sha256:531c446f0e95054f8ced17be9a180f8b0a823f7e9d5ce466c94c2f9cff90a111", "simplification/2026-07-31-web-ui-no-steer-entry-or-interjection-chrome.md": "sha256:a35a6372aabdf7cbc211f1bd5820d85d3467c9ed50f84e05caa3339382379ce7", "simplification/2026-07-31-web-ui-no-steer-entry-or-interjection-chrome.zh.md": "sha256:a6ed9530289a783c3d7a1ddb038fba6b7daf7feb773298a57e811791e354d438", "simplification/2026-08-03-explicit-config-dsh-entrypoint.i18n.yaml": "sha256:5466161f3fb8f2e8117fe8ff242675cc9fe9ef264d1e29b9bc586891c73c051a", "simplification/2026-08-03-explicit-config-dsh-entrypoint.md": "sha256:f23accae7d05c2e75cb73ec69b492307f1ce7526ecfa9f6b12a621e02fd1a0c3", "simplification/2026-08-03-explicit-config-dsh-entrypoint.zh.md": "sha256:a32d2c6ecf748a16a2c35b59cd2da2fda75769e3ab24be6a2e026d8655466db4", + "simplification/2026-08-03-omit-invariants-from-shipped-config.i18n.yaml": "sha256:7d8d9c7b4b2b07eb983da892f0d0ee6555b98ef0d0c52f78ae44f93760eba786", + "simplification/2026-08-03-omit-invariants-from-shipped-config.md": "sha256:49f9acad8bed316e64877123dc37aaf26270a7e886ab812d55ea7578ed5e884d", + "simplification/2026-08-03-omit-invariants-from-shipped-config.zh.md": "sha256:40cb30d6fc8844b94014beb0c82c042e613b21fdf4d73736c69696d9fc0351d1", + "simplification/2026-08-04-drop-windows-powershell-picker-fallback.i18n.yaml": "sha256:a0deeb45d4261698beb3c98708285b7e9fb98d00aa25f7fbeeb2b7d4e3ae62c5", + "simplification/2026-08-04-drop-windows-powershell-picker-fallback.md": "sha256:696ebf5100eccb8baf7cb3fc0da617717c001c2dd81e08c1e2aaeac65bcd593b", + "simplification/2026-08-04-drop-windows-powershell-picker-fallback.zh.md": "sha256:a72a8fab50abf1b4d6f67af10075db5826ba7f9d60f4e7fec46b021ed5d0ce61", + "simplification/2026-08-04-remove-tui-package.i18n.yaml": "sha256:08777d9c5753116ea3f93e9720cd7b3c5c8483f05e41b6c9eeca6e9ad5be6cc4", + "simplification/2026-08-04-remove-tui-package.md": "sha256:93832b8f01e03ff4b253ba5305902bf0469a2e07567c3611bf52eab2fc61688a", + "simplification/2026-08-04-remove-tui-package.zh.md": "sha256:87e226ba5709b785381810e8a205befa4e9f6c47a3cc921243410ca2ecdfa620", + "simplification/2026-08-06-buffer-free-feedback-telemetry.i18n.yaml": "sha256:4ade93bbc752fef787f0e068520daeefbb25d370fd11d74fb8a4a71c4e725866", + "simplification/2026-08-06-buffer-free-feedback-telemetry.md": "sha256:ff511d7d705247d47751e85bdccd5f0fede4f548016f292f74c1649369679cf7", + "simplification/2026-08-06-buffer-free-feedback-telemetry.zh.md": "sha256:f9ba3c033fc0784ac18e58a287c76ce5055d4348c99eeb0b20ed7b1ef805f0b9", + "simplification/2026-08-06-user-bubbles-drop-the-branch-action.i18n.yaml": "sha256:e000606d801984d4ee473779891ffe8c197f64f54b75efd82fb46dc84217cd59", + "simplification/2026-08-06-user-bubbles-drop-the-branch-action.md": "sha256:b93ce0d79ee72306d569d80fd81308a2b5704d95df8854b7cbd2f3d898b3f776", + "simplification/2026-08-06-user-bubbles-drop-the-branch-action.zh.md": "sha256:999e3e1252f771c420506a80b7c0d512b70da6770e3e62bb92169180b4cee3e8", + "simplification/2026-08-08-remove-cli-demo.i18n.yaml": "sha256:1baa8649e186e159afb03f112059f46f7a35c303a6039374db8bc4ca743d4bdf", + "simplification/2026-08-08-remove-cli-demo.md": "sha256:a34ce79b674c67a6a47d99c1fa7141b2ae58e36b99da5989d323d229d1921baa", + "simplification/2026-08-08-remove-cli-demo.zh.md": "sha256:96a2a7cc34c7b0abf71b77d666a6349d681fd8a0d9a9c81e30d2aa538d62797a", + "simplification/2026-08-09-bounded-fixed-rate-schedule.i18n.yaml": "sha256:e3870a1cf9ed9391305c46c31187394ecd1878c9ef6fc31c70032221ce834c45", + "simplification/2026-08-09-bounded-fixed-rate-schedule.md": "sha256:61fc499b6ffb26efe6b5d30b9f60a5de4b60b6d54765244033be7fa72c15a818", + "simplification/2026-08-09-bounded-fixed-rate-schedule.zh.md": "sha256:30b3e7919843714964a4887fbaca900b7de05f224f99bef746a4f5ccd9d113dc", + "simplification/2026-08-09-conversational-schedule-delivery.i18n.yaml": "sha256:8a0e1df4e7021ea5ff496a7102a62f29ec7aa8dfab2cde5f131b7fa8bea31ed3", + "simplification/2026-08-09-conversational-schedule-delivery.md": "sha256:3f1451ea5b6dde82a4de58abba1cdba7f4a68a6940dc8a41bd902af943948ccf", + "simplification/2026-08-09-conversational-schedule-delivery.zh.md": "sha256:c027dc1d1be1b4e372a63fa13e241a81c3e18b2611deef0d286963c97aaa65dd", + "simplification/2026-08-09-remove-repository-plugin.i18n.yaml": "sha256:e7466f971e87b8c9a3e5a29a205bdd2b79924c9a03b6901d70a6225dc9bf3305", + "simplification/2026-08-09-remove-repository-plugin.md": "sha256:1952174f92d88a0ae9ffb0fa80326d521d44e3024f7eb2affce511e2a7eed2f0", + "simplification/2026-08-09-remove-repository-plugin.zh.md": "sha256:61520f51c5461adc72c7a7ac11655d9f6b76edb10a97949250144278071a734e", + "simplification/2026-08-10-default-presets-single-editor.i18n.yaml": "sha256:d222aaf5e8160484e9e685677c46f643c1f181c3f928abc9bb3c0a54510a4f2e", + "simplification/2026-08-10-default-presets-single-editor.md": "sha256:a69eb3d2115ee02f72e6ab2e12a89505501bd2856203cf63b95d15512d273757", + "simplification/2026-08-10-default-presets-single-editor.zh.md": "sha256:3cc57312dbbc1d9baec34157cc56109fe0bb7fa4039af2cfd3b26ec4d9293342", + "simplification/2026-08-10-source-run-without-managed-installer.i18n.yaml": "sha256:449b90bd074ca8724d6ec4f42dbe70ef27d34b7ba4e255fba28784dff0ba5b20", + "simplification/2026-08-10-source-run-without-managed-installer.md": "sha256:a05d6cdc8715e09894039bb0bf52e6a43164548135bf7ed4667212ee7ee521e5", + "simplification/2026-08-10-source-run-without-managed-installer.zh.md": "sha256:410342af4c9df0ba2b1c7acd190109303f6cf4da9382fd844ca404963da1d520", + "simplification/2026-08-10-web-remove-steering-interjection-caption.i18n.yaml": "sha256:f5d37186db44ce8b1cbfb1d5be349cf7903316bd18a26638d0f6920428d67d9a", + "simplification/2026-08-10-web-remove-steering-interjection-caption.md": "sha256:55f2768f00782f5a5c581ebeb47c0e527598914dc6180e0c73d3d0da3255a0f8", + "simplification/2026-08-10-web-remove-steering-interjection-caption.zh.md": "sha256:7bb856b63d12d2eadafa69a87c2eaed53cc7f507e5b384688c814bdce0cc0579", "simplification/2026-08-11-cmdline-program-action.i18n.yaml": "sha256:e33b6dee66e23beabf03275e4e4f15134d23a82740ae7be6afd28c11c3163fca", "simplification/2026-08-11-cmdline-program-action.md": "sha256:e6a274bd92a35c98ea24704161b408507876de3162c0f640b4bc70a86ab4d86f", "simplification/2026-08-11-cmdline-program-action.zh.md": "sha256:bd213ad65ea6129c5360f28b2f52e6f3e224a58d07f56da190702939e7b402ee", "simplification/2026-08-11-quickstart-documentation-home.i18n.yaml": "sha256:548c0ff16d40fed3b3318b0b9a26e11d53a60582ff457098a212fc64e7d67eac", "simplification/2026-08-11-quickstart-documentation-home.md": "sha256:21946a828417aca4a214a874a35e88fe5a3e5989c330421f3849937b35bb9a9b", "simplification/2026-08-11-quickstart-documentation-home.zh.md": "sha256:cb292a428d427cf36aff0a184347f0ab653331edb874daf3c5b58a0d1f8e6964", + "simplification/2026-08-11-remove-sdk-project-toolchain.i18n.yaml": "sha256:900bc3b82025743b2d36969cb84db59b05ea0a442bde57f52f5517edd5a447d9", + "simplification/2026-08-11-remove-sdk-project-toolchain.md": "sha256:58d2cfaa18781fea902791a3dd135eaea03df0882956524bf2563344ecd0cd85", + "simplification/2026-08-11-remove-sdk-project-toolchain.zh.md": "sha256:e1b8d269a3a01272b02bdbe5dbbccfe2de88d75392ac9aa4de225174582b29f5", + "simplification/2026-08-12-production-dsh-excludes-product-subagent-providers.i18n.yaml": "sha256:24165390976d4d2c8163dbfd1de3a74c7791c0f7c24b7eea5ea817f1e459bcfe", + "simplification/2026-08-12-production-dsh-excludes-product-subagent-providers.md": "sha256:693ba5c5d1fbd8ba4e895c0297e20111a438688a79db9273f6185d500f7bffb2", + "simplification/2026-08-12-production-dsh-excludes-product-subagent-providers.zh.md": "sha256:ae6292abd1f423df826d46d48e06671efa96d3d700818cb612507594dd520fa3", + "simplification/2026-08-12-separate-source-launch-from-build.i18n.yaml": "sha256:31275244636ac73754297db7331e98241ffeb0832a707af7fa8b4897f1dfb87a", + "simplification/2026-08-12-separate-source-launch-from-build.md": "sha256:6e41573dc574717377d8cebcd2c3bfca7c030f672f42fc0d57300252e97d00b0", + "simplification/2026-08-12-separate-source-launch-from-build.zh.md": "sha256:5af098796af620ac5353c669cb732f275b69f8e94551bb7a1311fad496241f19", + "simplification/2026-08-12-trim-agent-teams-read-and-lifecycle-surface.i18n.yaml": "sha256:ecead5cb22bdf5dcd21f5bea3423b3d12e65d5603659f6d01c2f59d064768d3f", + "simplification/2026-08-12-trim-agent-teams-read-and-lifecycle-surface.md": "sha256:6df59e808f7101d0019d8958eb0ec7ced15eb3664555a1dec322af4e95a1b1cb", + "simplification/2026-08-12-trim-agent-teams-read-and-lifecycle-surface.zh.md": "sha256:9b413efcc565b79d503b5d57fdcbd45aa6009b36c576a65eaebcada91a7b2787", "simplification/2026-08-13-remove-first-run-beta-notice.i18n.yaml": "sha256:51267b74e39544991bfe606e3f749a26914162e454cf357f26223a6ed8de5fad", "simplification/2026-08-13-remove-first-run-beta-notice.md": "sha256:7ef5c712b8dff1152becee6a3f800acd5f7589d7b000f01544f57b175660bcc1", "simplification/2026-08-13-remove-first-run-beta-notice.zh.md": "sha256:f899c79f838b97d1eea4a118de2cf00a97bae910d86d4aabdc447b4e02fb585f", "simplification/2026-08-19-knip-config-cleanup.i18n.yaml": "sha256:ca8f5726aed57ce376c3fbd8b70113e235f3ba37dbf290683157fb4bf143ab13", "simplification/2026-08-19-knip-config-cleanup.md": "sha256:18c61713b3358d3019dac096afc26ce8e5189002f626b25e858dfc5e6f626c8d", "simplification/2026-08-19-knip-config-cleanup.zh.md": "sha256:b8ff16089c1a331603bb80278544c637cb16c1fa3bcfca3c5e1187152a1a0947", + "simplification/2026-08-21-product-subagent-minimal-diagnostics.i18n.yaml": "sha256:23301f321d26def21fbcf1d6058b6b6613673bdb6cae6778cdc8a6d89b8e21f1", + "simplification/2026-08-21-product-subagent-minimal-diagnostics.md": "sha256:a7b9f6885c67c181964e87894dc2ba14e86e0c659ff36a37bfd481b72735ab9b", + "simplification/2026-08-21-product-subagent-minimal-diagnostics.zh.md": "sha256:c8b6810fc0219d35a57c3471074f27feaa0f4dae5adfcd4feca817201e641780", + "simplification/2026-08-24-owner-local-profile-tests-and-guides.i18n.yaml": "sha256:1efba5180c7e131d416a4f630aa224b1bea8971c58568f3779155b4a1bb6fd56", + "simplification/2026-08-24-owner-local-profile-tests-and-guides.md": "sha256:e0fea4341c0243454b1f5640f4d5e6b2d95684d60e4bff28810b7d49ed55b550", + "simplification/2026-08-24-owner-local-profile-tests-and-guides.zh.md": "sha256:240ba1e67105458ffe52476d610fe9fbfda56ae4304a7e416187b8aa453b31eb", + "simplification/2026-08-26-remove-agent-spine-demo.i18n.yaml": "sha256:0bd60a13621bbb259204eda374447b0cd551cc45b0517c1e025dfe8032ab07f0", + "simplification/2026-08-26-remove-agent-spine-demo.md": "sha256:a605d5715278db1a6bccc028dba452da1f69555dec0df3c1e3775365a14625cd", + "simplification/2026-08-26-remove-agent-spine-demo.zh.md": "sha256:54125286a4b7614b1668c382abc1f67822097fe608e0e7f8d659d66f0a56e4ba", + "simplification/2026-08-27-persistence-export-and-pre-release-trims.i18n.yaml": "sha256:1c6779c70d8d327844d69390a449b0c4f0603364666b7d30c93cbeb01899d3ec", + "simplification/2026-08-27-persistence-export-and-pre-release-trims.md": "sha256:715ecdf9be8eda840c8ad37e56569d91aeac8128a171cbc783aba898cea240fc", + "simplification/2026-08-27-persistence-export-and-pre-release-trims.zh.md": "sha256:244a2225316ad54edbeaeef558cba8a01c68f6f366e22abd5688553c77b71629", + "simplification/2026-08-28-remove-hero-input-glow.i18n.yaml": "sha256:68af9690c3463de8e658dbc14194edb438ebf75c8788bba740332d11b0420819", + "simplification/2026-08-28-remove-hero-input-glow.md": "sha256:1d492977342fae8542c2781b0b3df8a95388ce97bedf9dc69db74868167b782c", + "simplification/2026-08-28-remove-hero-input-glow.zh.md": "sha256:b5e52a51adddee66a7f738e0345203cc339f0aaf2dbdfd9ad7524592a300837c", + "simplification/2026-08-28-windows-only-absent-probe-repair.i18n.yaml": "sha256:514413985e730ba5cbe44c1b0220ce14d203939c4617b41b983304a78e97de4e", + "simplification/2026-08-28-windows-only-absent-probe-repair.md": "sha256:dc41d2570cd749641e981ed7ca4cd5ec9a0ceb58c955b9d80f2603c9d790f1f2", + "simplification/2026-08-28-windows-only-absent-probe-repair.zh.md": "sha256:9e81954b7e1bfd59a0f8b977c61922416da0ff654b0a0ae679dfe267c0d775a0", + "simplification/2026-08-30-team-send-message-steer.i18n.yaml": "sha256:236acbb2ed3cad42e1ba084ef0d60b8b2294791eb96043a420c29dabbc912aae", + "simplification/2026-08-30-team-send-message-steer.md": "sha256:98ca92c3e311440c63355331ce2210373b9a70f63f1e4106cf042d96dc62fe48", + "simplification/2026-08-30-team-send-message-steer.zh.md": "sha256:21ae577e9f7e209d7c46d359b43b4cefa8dd961f59606cd2d93665d4d8b56593", + "simplification/2026-09-01-css-produced-file-layout.i18n.yaml": "sha256:9eebdbb523a583e82edfec87c0fb024e7f39d2eeb954ea5033178c8388048e24", + "simplification/2026-09-01-css-produced-file-layout.md": "sha256:1af6cffe25391ea8967c5af9c9a0c93f53944d70535e2abec62660b8b49295d8", + "simplification/2026-09-01-css-produced-file-layout.zh.md": "sha256:1ebd5c1241fa6f0311dcdcd0436e17e9017d6853f2dd52c954498551065f1ac1", + "simplification/2026-09-01-ptc-omits-workflow-tool.i18n.yaml": "sha256:84318dde2d7955dae069138a3bb223002beeec859e536be9c42c51a9bbb333d3", + "simplification/2026-09-01-ptc-omits-workflow-tool.md": "sha256:c5ba23ff9dfbba90d55e1585ad78e11151bb4370d3c5b1ad0414390f86d2bc7c", + "simplification/2026-09-01-ptc-omits-workflow-tool.zh.md": "sha256:e06ed5bb82e5f5372546704e340dea6539b438c76363fa23a74d7c512f4acafc", + "testing/2026-06-11-property-based-testing.i18n.yaml": "sha256:9d378912101ad30203f1fcbcad23e0f5d6ec6f39e04a83f17f90887b5c5d761e", + "testing/2026-06-11-property-based-testing.md": "sha256:cca3b6299784cff94965f21b6d59966109a0bb41fdc2f8cf56653fa6c417a20a", + "testing/2026-06-11-property-based-testing.zh.md": "sha256:09f3d1e2defd2792f87fb0e9892fb7e1db006f3c75ea4581f97e9cde4ea98175", "testing/2026-06-20-remove-redundant-snapshot-log-expected-output.i18n.yaml": "sha256:4177012c0821a8c22499852ecdf096af56d7263cb91c5d9d1bcd552cc26a3e00", "testing/2026-06-20-remove-redundant-snapshot-log-expected-output.md": "sha256:45234e7cc04b6010c6141f8d5924c04547300098f96262d423c50108e7c7011a", "testing/2026-06-20-remove-redundant-snapshot-log-expected-output.zh.md": "sha256:15e5a4ad3dee0bb711480cabe45cd97ec37bbdba19c2c2b47d1e9c203b07a48b", + "testing/2026-06-22-fork-child-replay-seed-boundary.i18n.yaml": "sha256:d5825e686608667c0ba741751653e5cafe14fe77f53e8575742ce7f055a0dfee", + "testing/2026-06-22-fork-child-replay-seed-boundary.md": "sha256:9a6d180126fc0e0a3c31b0aacd3105ea3229469d174aa98d193bc6d67e7b6006", + "testing/2026-06-22-fork-child-replay-seed-boundary.zh.md": "sha256:8b5fa040c21b5266e7c673f822511265a8fa7cb4de4ff60a4b2f8c0bb71416d3", "testing/2026-06-22-fork-snapshot-scenarios.i18n.yaml": "sha256:d9fb0a30bbf58bbd6fcb45c84bee204f3f97a8a4cf7b867eec7320ba8663abf7", "testing/2026-06-22-fork-snapshot-scenarios.md": "sha256:2bd6458490789f68110ec6a7fb6ea55af544f09df854c163fcb83f04a440da98", "testing/2026-06-22-fork-snapshot-scenarios.zh.md": "sha256:f39e26c527dcb92d364b00bd3294f79bb30960ff35a4309bde00563aa594ec08", + "testing/2026-06-22-subagent-snapshot-replay.i18n.yaml": "sha256:161807583dcc125dbc6e9191979e539b358fc1fceffe1ecb1c60b91c533db694", + "testing/2026-06-22-subagent-snapshot-replay.md": "sha256:5808a34da672965a6016a39332b11e63d1ed37501e1a9faf51468e9b6d112e29", + "testing/2026-06-22-subagent-snapshot-replay.zh.md": "sha256:f2735fcb9d29caf56722257ece2488fa934e903d0d2e92681b0a01ef63fb3b6a", "testing/2026-07-04-hook-snapshot-matrix.i18n.yaml": "sha256:f8fe2a2893e929d3a0476151f4f44ce9b4c26790aae84f6ddbf365239ce6a0bb", "testing/2026-07-04-hook-snapshot-matrix.md": "sha256:287b9e0d97ea2e79a3ec6175c02ab01ef1314652528d5911a3a971e008094b6e", "testing/2026-07-04-hook-snapshot-matrix.zh.md": "sha256:25b33993da3b8eb94113b90050ac03b72d40bf085bff72b3119d38105a2d7ee2", @@ -520,11 +1852,35 @@ "testing/2026-07-18-tui-terminal-state-snapshots.i18n.yaml": "sha256:c1a22174274b9f34ef4368039b3547f221507b040bd51b87af73a2722ee6b4d2", "testing/2026-07-18-tui-terminal-state-snapshots.md": "sha256:9a7fdcbeafc34376cb049b9668e0f4e9e541f523116fb11c3af9d35c2963e908", "testing/2026-07-18-tui-terminal-state-snapshots.zh.md": "sha256:26750f240f6c8a7b28746f62fe161b357e9c5dd52867cc7037399f1ed6ff37fa", + "testing/2026-07-22-cross-platform-test-fixtures.i18n.yaml": "sha256:eebe2d6bfd3fcf4e064a49a540441ee3bfd43c02ce0f0820944caaac52736f3d", + "testing/2026-07-22-cross-platform-test-fixtures.md": "sha256:7f2e977086800edc3fda12a997d86d33252b37ac63e3c6495b4139ba7875c75f", + "testing/2026-07-22-cross-platform-test-fixtures.zh.md": "sha256:34fa1eb29b27ff3e2af9e43882bf071079cf38fbb0202fa4e4fd7dfcc304f129", + "testing/2026-07-25-scriptable-llm-wire-fault-server.i18n.yaml": "sha256:cd143c9aa3d23aa9d1bb19a5e6f2d4182f5f883d1d65c3fdbc510b5b030894e4", + "testing/2026-07-25-scriptable-llm-wire-fault-server.md": "sha256:39d4aa16a91d793b83f4d6c8e1c3fce8ab4b47dfd54643e1ccf8a7681acb342c", + "testing/2026-07-25-scriptable-llm-wire-fault-server.zh.md": "sha256:a8dc3b74285c45fb6ad576a0a15145adcc972843ac79d7cb608a6f7f3aa17328", "testing/2026-07-26-execa-for-test-subprocess-plumbing.i18n.yaml": "sha256:dd45cddb591b892739b75b0c180bde7f14008f4769227b863571475be295e1e0", "testing/2026-07-26-execa-for-test-subprocess-plumbing.md": "sha256:1f45a69d0a7367ec5afbf112a77b355339b35270af8ff52696bee879cdf770d3", "testing/2026-07-26-execa-for-test-subprocess-plumbing.zh.md": "sha256:8a24bdc8376373d7a97f65cefc07078824bf918d6a9934056a025ecfafe8634b", + "testing/2026-07-30-vitest-jsdom-webstorage-ownership.i18n.yaml": "sha256:3752fb76874000ae95da9c404e9f5ec47332c92bc46bce7b42ab92997b5084c1", + "testing/2026-07-30-vitest-jsdom-webstorage-ownership.md": "sha256:c3f0da0213a3024cd15bc31952a7e13573d18eb4edf0905e3c63b1af5fd2f7ba", + "testing/2026-07-30-vitest-jsdom-webstorage-ownership.zh.md": "sha256:08ea14581f7485f4af7e945afbd5c2a2a52dafff7be723849bcbd1c91cf9160d", "testing/2026-08-12-required-python-runtime-pull-request-ci.i18n.yaml": "sha256:741e7e58e5e8a9c82d901c4a16a70cea9bd256eac0e94179b5a24a231bb9fe1f", "testing/2026-08-12-required-python-runtime-pull-request-ci.md": "sha256:1f1273d7a550667533e29c76efd148aebf57581a91729c877b44a5e43a52d9ad", - "testing/2026-08-12-required-python-runtime-pull-request-ci.zh.md": "sha256:6b9bf126c6b83d9b21e135d38df677c0d5623168b4353c6ddb706f76762c2193" + "testing/2026-08-12-required-python-runtime-pull-request-ci.zh.md": "sha256:6b9bf126c6b83d9b21e135d38df677c0d5623168b4353c6ddb706f76762c2193", + "testing/2026-08-13-python-minimal-model-visible-snapshot.i18n.yaml": "sha256:7fc0b51d9520e8df73d05589d4ce52f05d38307b04ce49186cf363f02de2b3fd", + "testing/2026-08-13-python-minimal-model-visible-snapshot.md": "sha256:f2fd0176c87b3af3d26b5cb935aca2162e16d9bc5ec72f289c4be80897f80ab7", + "testing/2026-08-13-python-minimal-model-visible-snapshot.zh.md": "sha256:e17b6d7c6f74405c33d64d2743e2a9c1e88abfd04d53aa336608d75689f60c50", + "testing/2026-08-18-session-snapshot-envelope-projection.i18n.yaml": "sha256:dc7ca48e54b336b9f809f43d25059b11e046ccacc2c51785f521de6c89b84be2", + "testing/2026-08-18-session-snapshot-envelope-projection.md": "sha256:4fe577862b474740b35fcd693ca39911e57650ccf6b5990ecece847535725ebd", + "testing/2026-08-18-session-snapshot-envelope-projection.zh.md": "sha256:3d64617f06bb661be017fb38607edfc16f2301604414618aa0ae644767afa2c1", + "testing/2026-08-27-translation-pairing-merge-budget.i18n.yaml": "sha256:06bfed97191f2e22dd8bd5fe770a8af94f8a7d41880d45f719c49772702c905b", + "testing/2026-08-27-translation-pairing-merge-budget.md": "sha256:6654b6befda7e1d4d3b70aceeb9ffcfcd46d855920509a1f64d8cefc417baef1", + "testing/2026-08-27-translation-pairing-merge-budget.zh.md": "sha256:568e4ec0c9a810175a98dfe6649529e688cf0abe05ea192d30440be66a96c8be", + "testing/2026-08-28-ci-test-reliability-skill.i18n.yaml": "sha256:3728e9c4ebcf7dc3d98ad6e8f08563e3d1f9ee9085497f7a4c796b4845ac78f5", + "testing/2026-08-28-ci-test-reliability-skill.md": "sha256:7b2d32590f4625d61252157ae3d8bced8a7e0554e60ce8dbef1cbe15fb51a876", + "testing/2026-08-28-ci-test-reliability-skill.zh.md": "sha256:f58bc370c9a1bf2fe2badd5bf10bd1a8c1012133bb506206113d5c12cb60f93a", + "testing/2026-08-29-windows-lane-hook-and-lefthook-budget.i18n.yaml": "sha256:d6bd5a532f5ed27678291659c5a9424a854e97da6c8bdddba16e4ac4764b9762", + "testing/2026-08-29-windows-lane-hook-and-lefthook-budget.md": "sha256:18a9c2d55ddf166ea3ae854e48cdbd69a9851ab6d68da71c650085ff9611753a", + "testing/2026-08-29-windows-lane-hook-and-lefthook-budget.zh.md": "sha256:571322ae3764969df7bfca845ab5fbec2b577762c53701333db7f6c10489cb9b" } } diff --git a/.agents/notes/archived/process/2026-06-11-vendor-cordis-as-source.i18n.yaml b/.agents/notes/archived/process/2026-06-11-vendor-cordis-as-source.i18n.yaml new file mode 100644 index 0000000000..d302b092c1 --- /dev/null +++ b/.agents/notes/archived/process/2026-06-11-vendor-cordis-as-source.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/process/2026-06-11-vendor-cordis-as-source.md +2026-06-11-vendor-cordis-as-source.md: 9736c64e6419a443e54c586120592d53be90b10a +2026-06-11-vendor-cordis-as-source.zh.md: d4fdb810c1565bbd2822a0e638e059d5f938741e diff --git a/.agents/notes/implemented/process/2026-06-11-vendor-cordis-as-source.md b/.agents/notes/archived/process/2026-06-11-vendor-cordis-as-source.md similarity index 99% rename from .agents/notes/implemented/process/2026-06-11-vendor-cordis-as-source.md rename to .agents/notes/archived/process/2026-06-11-vendor-cordis-as-source.md index 265966ad0a..9736c64e64 100644 --- a/.agents/notes/implemented/process/2026-06-11-vendor-cordis-as-source.md +++ b/.agents/notes/archived/process/2026-06-11-vendor-cordis-as-source.md @@ -1,6 +1,7 @@ # Agent Note: Vendor Cordis as source, not npm dependencies Status: implemented +Archived: 2026-09-04 English | [中文](2026-06-11-vendor-cordis-as-source.zh.md) diff --git a/.agents/notes/implemented/process/2026-06-11-vendor-cordis-as-source.zh.md b/.agents/notes/archived/process/2026-06-11-vendor-cordis-as-source.zh.md similarity index 99% rename from .agents/notes/implemented/process/2026-06-11-vendor-cordis-as-source.zh.md rename to .agents/notes/archived/process/2026-06-11-vendor-cordis-as-source.zh.md index af8c640e21..d4fdb810c1 100644 --- a/.agents/notes/implemented/process/2026-06-11-vendor-cordis-as-source.zh.md +++ b/.agents/notes/archived/process/2026-06-11-vendor-cordis-as-source.zh.md @@ -1,6 +1,7 @@ # Agent Note: 将 Cordis 以源码形式收录,而非作为 NPM 依赖 Status: implemented +Archived: 2026-09-04 [English](2026-06-11-vendor-cordis-as-source.md) | 中文 diff --git a/.agents/notes/archived/process/2026-06-18-markdown-cross-link-lint.i18n.yaml b/.agents/notes/archived/process/2026-06-18-markdown-cross-link-lint.i18n.yaml new file mode 100644 index 0000000000..4a888f7f75 --- /dev/null +++ b/.agents/notes/archived/process/2026-06-18-markdown-cross-link-lint.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/process/2026-06-18-markdown-cross-link-lint.md +2026-06-18-markdown-cross-link-lint.md: cc3c752ff952ca45288a6fbb539686fb255c7056 +2026-06-18-markdown-cross-link-lint.zh.md: 37ec469b11157d2ce7a951b46c3f08e11dde3da0 diff --git a/.agents/notes/implemented/process/2026-06-18-markdown-cross-link-lint.md b/.agents/notes/archived/process/2026-06-18-markdown-cross-link-lint.md similarity index 99% rename from .agents/notes/implemented/process/2026-06-18-markdown-cross-link-lint.md rename to .agents/notes/archived/process/2026-06-18-markdown-cross-link-lint.md index 37e0a41c08..cc3c752ff9 100644 --- a/.agents/notes/implemented/process/2026-06-18-markdown-cross-link-lint.md +++ b/.agents/notes/archived/process/2026-06-18-markdown-cross-link-lint.md @@ -1,6 +1,7 @@ # Agent Note: Markdown cross-link validity linting Status: implemented +Archived: 2026-09-04 English | [中文](2026-06-18-markdown-cross-link-lint.zh.md) diff --git a/.agents/notes/implemented/process/2026-06-18-markdown-cross-link-lint.zh.md b/.agents/notes/archived/process/2026-06-18-markdown-cross-link-lint.zh.md similarity index 99% rename from .agents/notes/implemented/process/2026-06-18-markdown-cross-link-lint.zh.md rename to .agents/notes/archived/process/2026-06-18-markdown-cross-link-lint.zh.md index 56a1c9e90d..37ec469b11 100644 --- a/.agents/notes/implemented/process/2026-06-18-markdown-cross-link-lint.zh.md +++ b/.agents/notes/archived/process/2026-06-18-markdown-cross-link-lint.zh.md @@ -1,6 +1,7 @@ # Agent Note: Markdown 交叉链接有效性检查 Status: implemented +Archived: 2026-09-04 [English](2026-06-18-markdown-cross-link-lint.md) | 中文 diff --git a/.agents/notes/archived/process/2026-06-20-agent-note-classification.i18n.yaml b/.agents/notes/archived/process/2026-06-20-agent-note-classification.i18n.yaml new file mode 100644 index 0000000000..9d0203b5e0 --- /dev/null +++ b/.agents/notes/archived/process/2026-06-20-agent-note-classification.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/process/2026-06-20-agent-note-classification.md +2026-06-20-agent-note-classification.md: 41304e1d64873c93649ff21d66a365dcc2a1ba77 +2026-06-20-agent-note-classification.zh.md: c0463499bd6b817152c9be62fd1ff7f54d79f9a5 diff --git a/.agents/notes/implemented/process/2026-06-20-agent-note-classification.md b/.agents/notes/archived/process/2026-06-20-agent-note-classification.md similarity index 99% rename from .agents/notes/implemented/process/2026-06-20-agent-note-classification.md rename to .agents/notes/archived/process/2026-06-20-agent-note-classification.md index 36d79d2ba1..41304e1d64 100644 --- a/.agents/notes/implemented/process/2026-06-20-agent-note-classification.md +++ b/.agents/notes/archived/process/2026-06-20-agent-note-classification.md @@ -1,6 +1,7 @@ # Agent Note: Classify Agent Notes by kind via path-encoded subdirectories Status: implemented +Archived: 2026-09-04 English | [中文](2026-06-20-agent-note-classification.zh.md) diff --git a/.agents/notes/implemented/process/2026-06-20-agent-note-classification.zh.md b/.agents/notes/archived/process/2026-06-20-agent-note-classification.zh.md similarity index 99% rename from .agents/notes/implemented/process/2026-06-20-agent-note-classification.zh.md rename to .agents/notes/archived/process/2026-06-20-agent-note-classification.zh.md index 569c437a9c..c0463499bd 100644 --- a/.agents/notes/implemented/process/2026-06-20-agent-note-classification.zh.md +++ b/.agents/notes/archived/process/2026-06-20-agent-note-classification.zh.md @@ -1,6 +1,7 @@ # Agent Note: 通过路径编码的子目录对 Agent Note 进行分类 Status: implemented +Archived: 2026-09-04 [English](2026-06-20-agent-note-classification.md) | 中文 diff --git a/.agents/notes/archived/process/2026-06-20-core-data-structures-catalog.i18n.yaml b/.agents/notes/archived/process/2026-06-20-core-data-structures-catalog.i18n.yaml new file mode 100644 index 0000000000..dd66d4d7b2 --- /dev/null +++ b/.agents/notes/archived/process/2026-06-20-core-data-structures-catalog.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/process/2026-06-20-core-data-structures-catalog.md +2026-06-20-core-data-structures-catalog.md: 37c63bbfba36cafc8d800bc858107c8607f7be11 +2026-06-20-core-data-structures-catalog.zh.md: b17417102c7701a9e4760e336140c5e9557ab011 diff --git a/.agents/notes/implemented/process/2026-06-20-core-data-structures-catalog.md b/.agents/notes/archived/process/2026-06-20-core-data-structures-catalog.md similarity index 99% rename from .agents/notes/implemented/process/2026-06-20-core-data-structures-catalog.md rename to .agents/notes/archived/process/2026-06-20-core-data-structures-catalog.md index 489dc488b8..37c63bbfba 100644 --- a/.agents/notes/implemented/process/2026-06-20-core-data-structures-catalog.md +++ b/.agents/notes/archived/process/2026-06-20-core-data-structures-catalog.md @@ -1,6 +1,7 @@ # Agent Note: Subsystems catalog and the `ts type-equiv` drift gate Status: implemented +Archived: 2026-09-04 English | [中文](2026-06-20-core-data-structures-catalog.zh.md) diff --git a/.agents/notes/implemented/process/2026-06-20-core-data-structures-catalog.zh.md b/.agents/notes/archived/process/2026-06-20-core-data-structures-catalog.zh.md similarity index 99% rename from .agents/notes/implemented/process/2026-06-20-core-data-structures-catalog.zh.md rename to .agents/notes/archived/process/2026-06-20-core-data-structures-catalog.zh.md index 2742603cd6..b17417102c 100644 --- a/.agents/notes/implemented/process/2026-06-20-core-data-structures-catalog.zh.md +++ b/.agents/notes/archived/process/2026-06-20-core-data-structures-catalog.zh.md @@ -1,6 +1,7 @@ # Agent Note: 子系统目录与 `ts type-equiv` 漂移门禁 Status: implemented +Archived: 2026-09-04 [English](2026-06-20-core-data-structures-catalog.md) | 中文 diff --git a/.agents/notes/archived/process/2026-07-02-tool-schema-catalog.i18n.yaml b/.agents/notes/archived/process/2026-07-02-tool-schema-catalog.i18n.yaml new file mode 100644 index 0000000000..cd60212fd5 --- /dev/null +++ b/.agents/notes/archived/process/2026-07-02-tool-schema-catalog.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/process/2026-07-02-tool-schema-catalog.md +2026-07-02-tool-schema-catalog.md: c9dab8f83bcab73f4cb357b6534198020be5ea8b +2026-07-02-tool-schema-catalog.zh.md: 89d8e6f3f14d47504e0e6ea739ba07fd2be92d84 diff --git a/.agents/notes/implemented/process/2026-07-02-tool-schema-catalog.md b/.agents/notes/archived/process/2026-07-02-tool-schema-catalog.md similarity index 99% rename from .agents/notes/implemented/process/2026-07-02-tool-schema-catalog.md rename to .agents/notes/archived/process/2026-07-02-tool-schema-catalog.md index 21192b8caf..c9dab8f83b 100644 --- a/.agents/notes/implemented/process/2026-07-02-tool-schema-catalog.md +++ b/.agents/notes/archived/process/2026-07-02-tool-schema-catalog.md @@ -1,6 +1,7 @@ # Agent Note: Generated tool-schema catalog (boot-and-harvest) Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-02-tool-schema-catalog.zh.md) diff --git a/.agents/notes/implemented/process/2026-07-02-tool-schema-catalog.zh.md b/.agents/notes/archived/process/2026-07-02-tool-schema-catalog.zh.md similarity index 99% rename from .agents/notes/implemented/process/2026-07-02-tool-schema-catalog.zh.md rename to .agents/notes/archived/process/2026-07-02-tool-schema-catalog.zh.md index 756f279b1a..89d8e6f3f1 100644 --- a/.agents/notes/implemented/process/2026-07-02-tool-schema-catalog.zh.md +++ b/.agents/notes/archived/process/2026-07-02-tool-schema-catalog.zh.md @@ -1,6 +1,7 @@ # Agent Note: 生成的工具 schema 目录(启动并采集) Status: implemented +Archived: 2026-09-04 [English](2026-07-02-tool-schema-catalog.md) | 中文 diff --git a/.agents/notes/archived/process/2026-07-06-export-jsdoc-gate.i18n.yaml b/.agents/notes/archived/process/2026-07-06-export-jsdoc-gate.i18n.yaml new file mode 100644 index 0000000000..b1abba20d2 --- /dev/null +++ b/.agents/notes/archived/process/2026-07-06-export-jsdoc-gate.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/process/2026-07-06-export-jsdoc-gate.md +2026-07-06-export-jsdoc-gate.md: 309236a03b11c3a02ff40494ec799a2e11c2eae1 +2026-07-06-export-jsdoc-gate.zh.md: 4d69037c5d31d842bdce63df048a55e1f3e89d8c diff --git a/.agents/notes/implemented/process/2026-07-06-export-jsdoc-gate.md b/.agents/notes/archived/process/2026-07-06-export-jsdoc-gate.md similarity index 99% rename from .agents/notes/implemented/process/2026-07-06-export-jsdoc-gate.md rename to .agents/notes/archived/process/2026-07-06-export-jsdoc-gate.md index 5f594cf279..309236a03b 100644 --- a/.agents/notes/implemented/process/2026-07-06-export-jsdoc-gate.md +++ b/.agents/notes/archived/process/2026-07-06-export-jsdoc-gate.md @@ -1,6 +1,7 @@ # Agent Note: Export JSDoc gate Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-06-export-jsdoc-gate.zh.md) diff --git a/.agents/notes/implemented/process/2026-07-06-export-jsdoc-gate.zh.md b/.agents/notes/archived/process/2026-07-06-export-jsdoc-gate.zh.md similarity index 99% rename from .agents/notes/implemented/process/2026-07-06-export-jsdoc-gate.zh.md rename to .agents/notes/archived/process/2026-07-06-export-jsdoc-gate.zh.md index a45c790900..4d69037c5d 100644 --- a/.agents/notes/implemented/process/2026-07-06-export-jsdoc-gate.zh.md +++ b/.agents/notes/archived/process/2026-07-06-export-jsdoc-gate.zh.md @@ -1,6 +1,7 @@ # Agent Note: 导出 JSDoc 门禁 Status: implemented +Archived: 2026-09-04 [English](2026-07-06-export-jsdoc-gate.md) | 中文 diff --git a/.agents/notes/archived/process/2026-07-10-readme-known-limitations-gate.i18n.yaml b/.agents/notes/archived/process/2026-07-10-readme-known-limitations-gate.i18n.yaml new file mode 100644 index 0000000000..1bfde6a2f5 --- /dev/null +++ b/.agents/notes/archived/process/2026-07-10-readme-known-limitations-gate.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/process/2026-07-10-readme-known-limitations-gate.md +2026-07-10-readme-known-limitations-gate.md: 69c037e6a7ef2741247680886a0e31a23b614e66 +2026-07-10-readme-known-limitations-gate.zh.md: 1b32373618dfb8b57f2b3ed962fa4c6fddab2fb2 diff --git a/.agents/notes/implemented/process/2026-07-10-readme-known-limitations-gate.md b/.agents/notes/archived/process/2026-07-10-readme-known-limitations-gate.md similarity index 99% rename from .agents/notes/implemented/process/2026-07-10-readme-known-limitations-gate.md rename to .agents/notes/archived/process/2026-07-10-readme-known-limitations-gate.md index 2ca1168d79..69c037e6a7 100644 --- a/.agents/notes/implemented/process/2026-07-10-readme-known-limitations-gate.md +++ b/.agents/notes/archived/process/2026-07-10-readme-known-limitations-gate.md @@ -1,6 +1,7 @@ # Agent Note: A gated Known-Limitations section in every package README Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-10-readme-known-limitations-gate.zh.md) diff --git a/.agents/notes/implemented/process/2026-07-10-readme-known-limitations-gate.zh.md b/.agents/notes/archived/process/2026-07-10-readme-known-limitations-gate.zh.md similarity index 99% rename from .agents/notes/implemented/process/2026-07-10-readme-known-limitations-gate.zh.md rename to .agents/notes/archived/process/2026-07-10-readme-known-limitations-gate.zh.md index cabb368af5..1b32373618 100644 --- a/.agents/notes/implemented/process/2026-07-10-readme-known-limitations-gate.zh.md +++ b/.agents/notes/archived/process/2026-07-10-readme-known-limitations-gate.zh.md @@ -1,6 +1,7 @@ # Agent Note: 每个包 README 中受门禁保护的「已知限制」章节 Status: implemented +Archived: 2026-09-04 [English](2026-07-10-readme-known-limitations-gate.md) | 中文 diff --git a/.agents/notes/archived/process/2026-07-13-documentation-site-projection.i18n.yaml b/.agents/notes/archived/process/2026-07-13-documentation-site-projection.i18n.yaml new file mode 100644 index 0000000000..8a625e3792 --- /dev/null +++ b/.agents/notes/archived/process/2026-07-13-documentation-site-projection.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/process/2026-07-13-documentation-site-projection.md +2026-07-13-documentation-site-projection.md: fdad85599cad940df03f7f2f750e3ade79281709 +2026-07-13-documentation-site-projection.zh.md: 756ec23183107c7733ea89fa0f40767ec1d27b4f diff --git a/.agents/notes/implemented/process/2026-07-13-documentation-site-projection.md b/.agents/notes/archived/process/2026-07-13-documentation-site-projection.md similarity index 99% rename from .agents/notes/implemented/process/2026-07-13-documentation-site-projection.md rename to .agents/notes/archived/process/2026-07-13-documentation-site-projection.md index 05e76963ec..fdad85599c 100644 --- a/.agents/notes/implemented/process/2026-07-13-documentation-site-projection.md +++ b/.agents/notes/archived/process/2026-07-13-documentation-site-projection.md @@ -1,6 +1,7 @@ # Agent Note: Project canonical documentation into the website Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-13-documentation-site-projection.zh.md) diff --git a/.agents/notes/implemented/process/2026-07-13-documentation-site-projection.zh.md b/.agents/notes/archived/process/2026-07-13-documentation-site-projection.zh.md similarity index 99% rename from .agents/notes/implemented/process/2026-07-13-documentation-site-projection.zh.md rename to .agents/notes/archived/process/2026-07-13-documentation-site-projection.zh.md index c3e9bafac1..756ec23183 100644 --- a/.agents/notes/implemented/process/2026-07-13-documentation-site-projection.zh.md +++ b/.agents/notes/archived/process/2026-07-13-documentation-site-projection.zh.md @@ -1,6 +1,7 @@ # Agent Note: 将权威文档投影到网站 Status: implemented +Archived: 2026-09-04 [English](2026-07-13-documentation-site-projection.md) | 中文 diff --git a/.agents/notes/archived/process/2026-07-14-typescript-program-backed-semantic-gates.i18n.yaml b/.agents/notes/archived/process/2026-07-14-typescript-program-backed-semantic-gates.i18n.yaml new file mode 100644 index 0000000000..15d74cfca7 --- /dev/null +++ b/.agents/notes/archived/process/2026-07-14-typescript-program-backed-semantic-gates.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/process/2026-07-14-typescript-program-backed-semantic-gates.md +2026-07-14-typescript-program-backed-semantic-gates.md: 412cb801aa1ed5d95e01a88d467f3afd177cccc8 +2026-07-14-typescript-program-backed-semantic-gates.zh.md: 450e06826e149c797f0d775bdf735802871ff684 diff --git a/.agents/notes/implemented/process/2026-07-14-typescript-program-backed-semantic-gates.md b/.agents/notes/archived/process/2026-07-14-typescript-program-backed-semantic-gates.md similarity index 99% rename from .agents/notes/implemented/process/2026-07-14-typescript-program-backed-semantic-gates.md rename to .agents/notes/archived/process/2026-07-14-typescript-program-backed-semantic-gates.md index 91639d53b6..412cb801aa 100644 --- a/.agents/notes/implemented/process/2026-07-14-typescript-program-backed-semantic-gates.md +++ b/.agents/notes/archived/process/2026-07-14-typescript-program-backed-semantic-gates.md @@ -1,6 +1,7 @@ # Agent Note: TypeScript Program-backed semantic gates Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-14-typescript-program-backed-semantic-gates.zh.md) diff --git a/.agents/notes/implemented/process/2026-07-14-typescript-program-backed-semantic-gates.zh.md b/.agents/notes/archived/process/2026-07-14-typescript-program-backed-semantic-gates.zh.md similarity index 99% rename from .agents/notes/implemented/process/2026-07-14-typescript-program-backed-semantic-gates.zh.md rename to .agents/notes/archived/process/2026-07-14-typescript-program-backed-semantic-gates.zh.md index 2ccb6a9518..450e06826e 100644 --- a/.agents/notes/implemented/process/2026-07-14-typescript-program-backed-semantic-gates.zh.md +++ b/.agents/notes/archived/process/2026-07-14-typescript-program-backed-semantic-gates.zh.md @@ -1,6 +1,7 @@ # Agent Note: 基于 TypeScript Program 的语义门禁 Status: implemented +Archived: 2026-09-04 [English](2026-07-14-typescript-program-backed-semantic-gates.md) | 中文 diff --git a/.agents/notes/archived/process/2026-07-19-require-agent-notes-for-non-trivial-changes.i18n.yaml b/.agents/notes/archived/process/2026-07-19-require-agent-notes-for-non-trivial-changes.i18n.yaml new file mode 100644 index 0000000000..b69bc3eda9 --- /dev/null +++ b/.agents/notes/archived/process/2026-07-19-require-agent-notes-for-non-trivial-changes.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/process/2026-07-19-require-agent-notes-for-non-trivial-changes.md +2026-07-19-require-agent-notes-for-non-trivial-changes.md: 47b922f6bb974a39f79d162560a1546683f09704 +2026-07-19-require-agent-notes-for-non-trivial-changes.zh.md: cb96f1f5859e5c99ddeceb047aa7d7539f00b8cb diff --git a/.agents/notes/implemented/process/2026-07-19-require-agent-notes-for-non-trivial-changes.md b/.agents/notes/archived/process/2026-07-19-require-agent-notes-for-non-trivial-changes.md similarity index 99% rename from .agents/notes/implemented/process/2026-07-19-require-agent-notes-for-non-trivial-changes.md rename to .agents/notes/archived/process/2026-07-19-require-agent-notes-for-non-trivial-changes.md index 162ae61aff..47b922f6bb 100644 --- a/.agents/notes/implemented/process/2026-07-19-require-agent-notes-for-non-trivial-changes.md +++ b/.agents/notes/archived/process/2026-07-19-require-agent-notes-for-non-trivial-changes.md @@ -1,6 +1,7 @@ # Agent Note: Require an Agent Note for every non-trivial change Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-19-require-agent-notes-for-non-trivial-changes.zh.md) diff --git a/.agents/notes/implemented/process/2026-07-19-require-agent-notes-for-non-trivial-changes.zh.md b/.agents/notes/archived/process/2026-07-19-require-agent-notes-for-non-trivial-changes.zh.md similarity index 99% rename from .agents/notes/implemented/process/2026-07-19-require-agent-notes-for-non-trivial-changes.zh.md rename to .agents/notes/archived/process/2026-07-19-require-agent-notes-for-non-trivial-changes.zh.md index cc342547fa..cb96f1f585 100644 --- a/.agents/notes/implemented/process/2026-07-19-require-agent-notes-for-non-trivial-changes.zh.md +++ b/.agents/notes/archived/process/2026-07-19-require-agent-notes-for-non-trivial-changes.zh.md @@ -1,6 +1,7 @@ # Agent Note: 每项实质性变更都必须附带 Agent Note Status: implemented +Archived: 2026-09-04 [English](2026-07-19-require-agent-notes-for-non-trivial-changes.md) | 中文 diff --git a/.agents/notes/archived/process/2026-07-22-evidence-based-larger-hosted-runners.i18n.yaml b/.agents/notes/archived/process/2026-07-22-evidence-based-larger-hosted-runners.i18n.yaml new file mode 100644 index 0000000000..7a55aa408e --- /dev/null +++ b/.agents/notes/archived/process/2026-07-22-evidence-based-larger-hosted-runners.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/process/2026-07-22-evidence-based-larger-hosted-runners.md +2026-07-22-evidence-based-larger-hosted-runners.md: 1862f2491509695404aa2ef868b65f2a5701d57c +2026-07-22-evidence-based-larger-hosted-runners.zh.md: 4a403a80d1ef1297e6f10eb91b1ad0b9a2bfa06f diff --git a/.agents/notes/implemented/process/2026-07-22-evidence-based-larger-hosted-runners.md b/.agents/notes/archived/process/2026-07-22-evidence-based-larger-hosted-runners.md similarity index 99% rename from .agents/notes/implemented/process/2026-07-22-evidence-based-larger-hosted-runners.md rename to .agents/notes/archived/process/2026-07-22-evidence-based-larger-hosted-runners.md index db08a4eb98..1862f24915 100644 --- a/.agents/notes/implemented/process/2026-07-22-evidence-based-larger-hosted-runners.md +++ b/.agents/notes/archived/process/2026-07-22-evidence-based-larger-hosted-runners.md @@ -1,6 +1,7 @@ # Agent Note: Evidence-based larger hosted runners Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-22-evidence-based-larger-hosted-runners.zh.md) diff --git a/.agents/notes/implemented/process/2026-07-22-evidence-based-larger-hosted-runners.zh.md b/.agents/notes/archived/process/2026-07-22-evidence-based-larger-hosted-runners.zh.md similarity index 99% rename from .agents/notes/implemented/process/2026-07-22-evidence-based-larger-hosted-runners.zh.md rename to .agents/notes/archived/process/2026-07-22-evidence-based-larger-hosted-runners.zh.md index c6a3a5c121..4a403a80d1 100644 --- a/.agents/notes/implemented/process/2026-07-22-evidence-based-larger-hosted-runners.zh.md +++ b/.agents/notes/archived/process/2026-07-22-evidence-based-larger-hosted-runners.zh.md @@ -1,6 +1,7 @@ # Agent Note: 基于实证选用 GitHub 托管大型运行器 Status: implemented +Archived: 2026-09-04 [English](2026-07-22-evidence-based-larger-hosted-runners.md) | 中文 diff --git a/.agents/notes/archived/process/2026-07-22-fast-local-git-hooks.i18n.yaml b/.agents/notes/archived/process/2026-07-22-fast-local-git-hooks.i18n.yaml new file mode 100644 index 0000000000..c4e8350d4d --- /dev/null +++ b/.agents/notes/archived/process/2026-07-22-fast-local-git-hooks.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/process/2026-07-22-fast-local-git-hooks.md +2026-07-22-fast-local-git-hooks.md: b13708a96cda088342b6991ff6d9ab797065fc53 +2026-07-22-fast-local-git-hooks.zh.md: 9f7f872c845a5210537701a3c09eb59e820cd62f diff --git a/.agents/notes/implemented/process/2026-07-22-fast-local-git-hooks.md b/.agents/notes/archived/process/2026-07-22-fast-local-git-hooks.md similarity index 99% rename from .agents/notes/implemented/process/2026-07-22-fast-local-git-hooks.md rename to .agents/notes/archived/process/2026-07-22-fast-local-git-hooks.md index ad187c5cfd..b13708a96c 100644 --- a/.agents/notes/implemented/process/2026-07-22-fast-local-git-hooks.md +++ b/.agents/notes/archived/process/2026-07-22-fast-local-git-hooks.md @@ -1,6 +1,7 @@ # Agent Note: Fast local Git hooks Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-22-fast-local-git-hooks.zh.md) diff --git a/.agents/notes/implemented/process/2026-07-22-fast-local-git-hooks.zh.md b/.agents/notes/archived/process/2026-07-22-fast-local-git-hooks.zh.md similarity index 99% rename from .agents/notes/implemented/process/2026-07-22-fast-local-git-hooks.zh.md rename to .agents/notes/archived/process/2026-07-22-fast-local-git-hooks.zh.md index f38de6cc80..9f7f872c84 100644 --- a/.agents/notes/implemented/process/2026-07-22-fast-local-git-hooks.zh.md +++ b/.agents/notes/archived/process/2026-07-22-fast-local-git-hooks.zh.md @@ -1,6 +1,7 @@ # Agent Note: 快速本地 Git 钩子 Status: implemented +Archived: 2026-09-04 [English](2026-07-22-fast-local-git-hooks.md) | 中文 diff --git a/.agents/notes/archived/process/2026-07-22-product-first-root-readme.i18n.yaml b/.agents/notes/archived/process/2026-07-22-product-first-root-readme.i18n.yaml new file mode 100644 index 0000000000..9156965ae3 --- /dev/null +++ b/.agents/notes/archived/process/2026-07-22-product-first-root-readme.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/process/2026-07-22-product-first-root-readme.md +2026-07-22-product-first-root-readme.md: 040334389f7507d340fb25ce7e97e69de5e106e3 +2026-07-22-product-first-root-readme.zh.md: 114fa948145b86244b263e8f6cbd1e5f2d13066e diff --git a/.agents/notes/implemented/process/2026-07-22-product-first-root-readme.md b/.agents/notes/archived/process/2026-07-22-product-first-root-readme.md similarity index 99% rename from .agents/notes/implemented/process/2026-07-22-product-first-root-readme.md rename to .agents/notes/archived/process/2026-07-22-product-first-root-readme.md index 662ff33453..040334389f 100644 --- a/.agents/notes/implemented/process/2026-07-22-product-first-root-readme.md +++ b/.agents/notes/archived/process/2026-07-22-product-first-root-readme.md @@ -1,6 +1,7 @@ # Agent Note: Product-first root README Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-22-product-first-root-readme.zh.md) diff --git a/.agents/notes/implemented/process/2026-07-22-product-first-root-readme.zh.md b/.agents/notes/archived/process/2026-07-22-product-first-root-readme.zh.md similarity index 99% rename from .agents/notes/implemented/process/2026-07-22-product-first-root-readme.zh.md rename to .agents/notes/archived/process/2026-07-22-product-first-root-readme.zh.md index 3295794339..114fa94814 100644 --- a/.agents/notes/implemented/process/2026-07-22-product-first-root-readme.zh.md +++ b/.agents/notes/archived/process/2026-07-22-product-first-root-readme.zh.md @@ -1,6 +1,7 @@ # Agent Note: 产品优先的根 README Status: implemented +Archived: 2026-09-04 [English](2026-07-22-product-first-root-readme.md) | 中文 diff --git a/.agents/notes/archived/process/2026-07-22-tsconfig-solution-root-two-aggregates.i18n.yaml b/.agents/notes/archived/process/2026-07-22-tsconfig-solution-root-two-aggregates.i18n.yaml new file mode 100644 index 0000000000..96a4a5246c --- /dev/null +++ b/.agents/notes/archived/process/2026-07-22-tsconfig-solution-root-two-aggregates.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/process/2026-07-22-tsconfig-solution-root-two-aggregates.md +2026-07-22-tsconfig-solution-root-two-aggregates.md: 40e2f8c8826f7b93d0c8c7a28fedc059548e9c55 +2026-07-22-tsconfig-solution-root-two-aggregates.zh.md: 2dd3dcc617019e56a350560b46461eac1bf5d6fe diff --git a/.agents/notes/implemented/process/2026-07-22-tsconfig-solution-root-two-aggregates.md b/.agents/notes/archived/process/2026-07-22-tsconfig-solution-root-two-aggregates.md similarity index 99% rename from .agents/notes/implemented/process/2026-07-22-tsconfig-solution-root-two-aggregates.md rename to .agents/notes/archived/process/2026-07-22-tsconfig-solution-root-two-aggregates.md index 714f7c4b6a..40e2f8c882 100644 --- a/.agents/notes/implemented/process/2026-07-22-tsconfig-solution-root-two-aggregates.md +++ b/.agents/notes/archived/process/2026-07-22-tsconfig-solution-root-two-aggregates.md @@ -1,6 +1,7 @@ # Agent Note: Solution root over two aggregate programs Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-22-tsconfig-solution-root-two-aggregates.zh.md) diff --git a/.agents/notes/implemented/process/2026-07-22-tsconfig-solution-root-two-aggregates.zh.md b/.agents/notes/archived/process/2026-07-22-tsconfig-solution-root-two-aggregates.zh.md similarity index 99% rename from .agents/notes/implemented/process/2026-07-22-tsconfig-solution-root-two-aggregates.zh.md rename to .agents/notes/archived/process/2026-07-22-tsconfig-solution-root-two-aggregates.zh.md index 53fe3c4342..2dd3dcc617 100644 --- a/.agents/notes/implemented/process/2026-07-22-tsconfig-solution-root-two-aggregates.zh.md +++ b/.agents/notes/archived/process/2026-07-22-tsconfig-solution-root-two-aggregates.zh.md @@ -1,6 +1,7 @@ # Agent Note: 以 solution 根文件统辖两个聚合 program Status: implemented +Archived: 2026-09-04 [English](2026-07-22-tsconfig-solution-root-two-aggregates.md) | 中文 diff --git a/.agents/notes/archived/process/2026-07-23-portable-required-pull-request-ci.i18n.yaml b/.agents/notes/archived/process/2026-07-23-portable-required-pull-request-ci.i18n.yaml new file mode 100644 index 0000000000..9b36480ab3 --- /dev/null +++ b/.agents/notes/archived/process/2026-07-23-portable-required-pull-request-ci.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/process/2026-07-23-portable-required-pull-request-ci.md +2026-07-23-portable-required-pull-request-ci.md: e3995d164cc3c3280f53811a5a789033353fdf02 +2026-07-23-portable-required-pull-request-ci.zh.md: 4fa1a798cc73236e73b02dd7ea1e3012bc8095c0 diff --git a/.agents/notes/implemented/process/2026-07-23-portable-required-pull-request-ci.md b/.agents/notes/archived/process/2026-07-23-portable-required-pull-request-ci.md similarity index 99% rename from .agents/notes/implemented/process/2026-07-23-portable-required-pull-request-ci.md rename to .agents/notes/archived/process/2026-07-23-portable-required-pull-request-ci.md index 00a58136b8..e3995d164c 100644 --- a/.agents/notes/implemented/process/2026-07-23-portable-required-pull-request-ci.md +++ b/.agents/notes/archived/process/2026-07-23-portable-required-pull-request-ci.md @@ -1,6 +1,7 @@ # Agent Note: Portable pull-request CI recovery boundary Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-23-portable-required-pull-request-ci.zh.md) diff --git a/.agents/notes/implemented/process/2026-07-23-portable-required-pull-request-ci.zh.md b/.agents/notes/archived/process/2026-07-23-portable-required-pull-request-ci.zh.md similarity index 99% rename from .agents/notes/implemented/process/2026-07-23-portable-required-pull-request-ci.zh.md rename to .agents/notes/archived/process/2026-07-23-portable-required-pull-request-ci.zh.md index e367408850..4fa1a798cc 100644 --- a/.agents/notes/implemented/process/2026-07-23-portable-required-pull-request-ci.zh.md +++ b/.agents/notes/archived/process/2026-07-23-portable-required-pull-request-ci.zh.md @@ -1,6 +1,7 @@ # Agent Note: 拉取请求 CI 的可移植恢复边界 Status: implemented +Archived: 2026-09-04 [English](2026-07-23-portable-required-pull-request-ci.md) | 中文 diff --git a/.agents/notes/archived/process/2026-07-23-translation-prompt-v4-contract.i18n.yaml b/.agents/notes/archived/process/2026-07-23-translation-prompt-v4-contract.i18n.yaml new file mode 100644 index 0000000000..c82d75bca0 --- /dev/null +++ b/.agents/notes/archived/process/2026-07-23-translation-prompt-v4-contract.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/process/2026-07-23-translation-prompt-v4-contract.md +2026-07-23-translation-prompt-v4-contract.md: bca5b37e04339812e16f906c86b6d9a86694fd34 +2026-07-23-translation-prompt-v4-contract.zh.md: fd1edff07367f1df1e604805e186622ff98e4035 diff --git a/.agents/notes/implemented/process/2026-07-23-translation-prompt-v4-contract.md b/.agents/notes/archived/process/2026-07-23-translation-prompt-v4-contract.md similarity index 99% rename from .agents/notes/implemented/process/2026-07-23-translation-prompt-v4-contract.md rename to .agents/notes/archived/process/2026-07-23-translation-prompt-v4-contract.md index 68d6837971..bca5b37e04 100644 --- a/.agents/notes/implemented/process/2026-07-23-translation-prompt-v4-contract.md +++ b/.agents/notes/archived/process/2026-07-23-translation-prompt-v4-contract.md @@ -1,6 +1,7 @@ # Agent Note: Calibrated translation prompt v4 contract Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-23-translation-prompt-v4-contract.zh.md) diff --git a/.agents/notes/implemented/process/2026-07-23-translation-prompt-v4-contract.zh.md b/.agents/notes/archived/process/2026-07-23-translation-prompt-v4-contract.zh.md similarity index 99% rename from .agents/notes/implemented/process/2026-07-23-translation-prompt-v4-contract.zh.md rename to .agents/notes/archived/process/2026-07-23-translation-prompt-v4-contract.zh.md index e1505e2984..fd1edff073 100644 --- a/.agents/notes/implemented/process/2026-07-23-translation-prompt-v4-contract.zh.md +++ b/.agents/notes/archived/process/2026-07-23-translation-prompt-v4-contract.zh.md @@ -1,6 +1,7 @@ # Agent Note: 经校准的翻译提示词 v4 约定 Status: implemented +Archived: 2026-09-04 [English](2026-07-23-translation-prompt-v4-contract.md) | 中文 diff --git a/.agents/notes/archived/process/2026-07-26-briefed-minimal-translation-updates.i18n.yaml b/.agents/notes/archived/process/2026-07-26-briefed-minimal-translation-updates.i18n.yaml new file mode 100644 index 0000000000..5fb7735374 --- /dev/null +++ b/.agents/notes/archived/process/2026-07-26-briefed-minimal-translation-updates.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/process/2026-07-26-briefed-minimal-translation-updates.md +2026-07-26-briefed-minimal-translation-updates.md: b2aa072741ae34877b862fe69d0921d8b0b2c4b4 +2026-07-26-briefed-minimal-translation-updates.zh.md: 9c86a825b6a15d6b11af138d9067963aba499101 diff --git a/.agents/notes/implemented/process/2026-07-26-briefed-minimal-translation-updates.md b/.agents/notes/archived/process/2026-07-26-briefed-minimal-translation-updates.md similarity index 99% rename from .agents/notes/implemented/process/2026-07-26-briefed-minimal-translation-updates.md rename to .agents/notes/archived/process/2026-07-26-briefed-minimal-translation-updates.md index 049e0a2771..b2aa072741 100644 --- a/.agents/notes/implemented/process/2026-07-26-briefed-minimal-translation-updates.md +++ b/.agents/notes/archived/process/2026-07-26-briefed-minimal-translation-updates.md @@ -1,6 +1,7 @@ # Agent Note: Briefed minimal translation updates Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-26-briefed-minimal-translation-updates.zh.md) diff --git a/.agents/notes/implemented/process/2026-07-26-briefed-minimal-translation-updates.zh.md b/.agents/notes/archived/process/2026-07-26-briefed-minimal-translation-updates.zh.md similarity index 99% rename from .agents/notes/implemented/process/2026-07-26-briefed-minimal-translation-updates.zh.md rename to .agents/notes/archived/process/2026-07-26-briefed-minimal-translation-updates.zh.md index 1574617bd1..9c86a825b6 100644 --- a/.agents/notes/implemented/process/2026-07-26-briefed-minimal-translation-updates.zh.md +++ b/.agents/notes/archived/process/2026-07-26-briefed-minimal-translation-updates.zh.md @@ -1,6 +1,7 @@ # Agent Note: 基于简报的最小化翻译更新 Status: implemented +Archived: 2026-09-04 [English](2026-07-26-briefed-minimal-translation-updates.md) | 中文 diff --git a/.agents/notes/archived/process/2026-07-26-incremental-pr-base-retargeting.i18n.yaml b/.agents/notes/archived/process/2026-07-26-incremental-pr-base-retargeting.i18n.yaml new file mode 100644 index 0000000000..ed7c99777c --- /dev/null +++ b/.agents/notes/archived/process/2026-07-26-incremental-pr-base-retargeting.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/process/2026-07-26-incremental-pr-base-retargeting.md +2026-07-26-incremental-pr-base-retargeting.md: dadea45fe9e5c76870c7d963cd7a46262b9b03ee +2026-07-26-incremental-pr-base-retargeting.zh.md: 2bcc9c172e7c813e7e6700fd7ebb3cbe08c54fa5 diff --git a/.agents/notes/implemented/process/2026-07-26-incremental-pr-base-retargeting.md b/.agents/notes/archived/process/2026-07-26-incremental-pr-base-retargeting.md similarity index 98% rename from .agents/notes/implemented/process/2026-07-26-incremental-pr-base-retargeting.md rename to .agents/notes/archived/process/2026-07-26-incremental-pr-base-retargeting.md index b2e644d998..dadea45fe9 100644 --- a/.agents/notes/implemented/process/2026-07-26-incremental-pr-base-retargeting.md +++ b/.agents/notes/archived/process/2026-07-26-incremental-pr-base-retargeting.md @@ -1,6 +1,7 @@ # Agent Note: Retarget PR bases incrementally Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-26-incremental-pr-base-retargeting.zh.md) diff --git a/.agents/notes/implemented/process/2026-07-26-incremental-pr-base-retargeting.zh.md b/.agents/notes/archived/process/2026-07-26-incremental-pr-base-retargeting.zh.md similarity index 98% rename from .agents/notes/implemented/process/2026-07-26-incremental-pr-base-retargeting.zh.md rename to .agents/notes/archived/process/2026-07-26-incremental-pr-base-retargeting.zh.md index 1d7bb95520..2bcc9c172e 100644 --- a/.agents/notes/implemented/process/2026-07-26-incremental-pr-base-retargeting.zh.md +++ b/.agents/notes/archived/process/2026-07-26-incremental-pr-base-retargeting.zh.md @@ -1,6 +1,7 @@ # Agent Note: 增量更新 PR 的 base 分支 Status: implemented +Archived: 2026-09-04 [English](2026-07-26-incremental-pr-base-retargeting.md) | 中文 diff --git a/.agents/notes/archived/process/2026-07-26-pnpm-action-setup-for-symmetric-ci-caching.i18n.yaml b/.agents/notes/archived/process/2026-07-26-pnpm-action-setup-for-symmetric-ci-caching.i18n.yaml new file mode 100644 index 0000000000..3ed6b107ed --- /dev/null +++ b/.agents/notes/archived/process/2026-07-26-pnpm-action-setup-for-symmetric-ci-caching.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/process/2026-07-26-pnpm-action-setup-for-symmetric-ci-caching.md +2026-07-26-pnpm-action-setup-for-symmetric-ci-caching.md: 777ad5f2d3d9c2a5b0d14ebae66e2c455491deb2 +2026-07-26-pnpm-action-setup-for-symmetric-ci-caching.zh.md: 4ede34558e7e961217362f6f684411daf5ab873a diff --git a/.agents/notes/implemented/process/2026-07-26-pnpm-action-setup-for-symmetric-ci-caching.md b/.agents/notes/archived/process/2026-07-26-pnpm-action-setup-for-symmetric-ci-caching.md similarity index 99% rename from .agents/notes/implemented/process/2026-07-26-pnpm-action-setup-for-symmetric-ci-caching.md rename to .agents/notes/archived/process/2026-07-26-pnpm-action-setup-for-symmetric-ci-caching.md index 2519b9e8bc..777ad5f2d3 100644 --- a/.agents/notes/implemented/process/2026-07-26-pnpm-action-setup-for-symmetric-ci-caching.md +++ b/.agents/notes/archived/process/2026-07-26-pnpm-action-setup-for-symmetric-ci-caching.md @@ -1,6 +1,7 @@ # Agent Note: Provision CI pnpm via pnpm/action-setup Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-26-pnpm-action-setup-for-symmetric-ci-caching.zh.md) diff --git a/.agents/notes/implemented/process/2026-07-26-pnpm-action-setup-for-symmetric-ci-caching.zh.md b/.agents/notes/archived/process/2026-07-26-pnpm-action-setup-for-symmetric-ci-caching.zh.md similarity index 99% rename from .agents/notes/implemented/process/2026-07-26-pnpm-action-setup-for-symmetric-ci-caching.zh.md rename to .agents/notes/archived/process/2026-07-26-pnpm-action-setup-for-symmetric-ci-caching.zh.md index 2157541c4b..4ede34558e 100644 --- a/.agents/notes/implemented/process/2026-07-26-pnpm-action-setup-for-symmetric-ci-caching.zh.md +++ b/.agents/notes/archived/process/2026-07-26-pnpm-action-setup-for-symmetric-ci-caching.zh.md @@ -1,6 +1,7 @@ # Agent Note: 经由 pnpm/action-setup 提供 CI 的 pnpm Status: implemented +Archived: 2026-09-04 [English](2026-07-26-pnpm-action-setup-for-symmetric-ci-caching.md) | 中文 diff --git a/.agents/notes/archived/process/2026-07-26-web-syntax-highlighting-shiki.i18n.yaml b/.agents/notes/archived/process/2026-07-26-web-syntax-highlighting-shiki.i18n.yaml new file mode 100644 index 0000000000..ea1a13757f --- /dev/null +++ b/.agents/notes/archived/process/2026-07-26-web-syntax-highlighting-shiki.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/process/2026-07-26-web-syntax-highlighting-shiki.md +2026-07-26-web-syntax-highlighting-shiki.md: 25e895e7361acfd5a586f99504822586bba98f3f +2026-07-26-web-syntax-highlighting-shiki.zh.md: 77913e8713004f2a02c5d132a317432797ff0adf diff --git a/.agents/notes/implemented/process/2026-07-26-web-syntax-highlighting-shiki.md b/.agents/notes/archived/process/2026-07-26-web-syntax-highlighting-shiki.md similarity index 99% rename from .agents/notes/implemented/process/2026-07-26-web-syntax-highlighting-shiki.md rename to .agents/notes/archived/process/2026-07-26-web-syntax-highlighting-shiki.md index ba50318d30..25e895e736 100644 --- a/.agents/notes/implemented/process/2026-07-26-web-syntax-highlighting-shiki.md +++ b/.agents/notes/archived/process/2026-07-26-web-syntax-highlighting-shiki.md @@ -1,6 +1,7 @@ # Agent Note: Web client syntax highlighting — synchronous fine-grained shiki Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-26-web-syntax-highlighting-shiki.zh.md) diff --git a/.agents/notes/implemented/process/2026-07-26-web-syntax-highlighting-shiki.zh.md b/.agents/notes/archived/process/2026-07-26-web-syntax-highlighting-shiki.zh.md similarity index 99% rename from .agents/notes/implemented/process/2026-07-26-web-syntax-highlighting-shiki.zh.md rename to .agents/notes/archived/process/2026-07-26-web-syntax-highlighting-shiki.zh.md index 5533bcb534..77913e8713 100644 --- a/.agents/notes/implemented/process/2026-07-26-web-syntax-highlighting-shiki.zh.md +++ b/.agents/notes/archived/process/2026-07-26-web-syntax-highlighting-shiki.zh.md @@ -1,6 +1,7 @@ # Agent Note: web client 的语法高亮——同步细粒度的 shiki Status: implemented +Archived: 2026-09-04 [English](2026-07-26-web-syntax-highlighting-shiki.md) | 中文 diff --git a/.agents/notes/archived/process/2026-07-27-dependabot-version-updates.i18n.yaml b/.agents/notes/archived/process/2026-07-27-dependabot-version-updates.i18n.yaml new file mode 100644 index 0000000000..59db42ab08 --- /dev/null +++ b/.agents/notes/archived/process/2026-07-27-dependabot-version-updates.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/process/2026-07-27-dependabot-version-updates.md +2026-07-27-dependabot-version-updates.md: 8b8cb08bf3c2e1dbee5ddcd944ffc67afaa44280 +2026-07-27-dependabot-version-updates.zh.md: 6a30cd7ae418dc00cdbbb67a068006d595d6f5ad diff --git a/.agents/notes/implemented/process/2026-07-27-dependabot-version-updates.md b/.agents/notes/archived/process/2026-07-27-dependabot-version-updates.md similarity index 99% rename from .agents/notes/implemented/process/2026-07-27-dependabot-version-updates.md rename to .agents/notes/archived/process/2026-07-27-dependabot-version-updates.md index bba83c9e72..8b8cb08bf3 100644 --- a/.agents/notes/implemented/process/2026-07-27-dependabot-version-updates.md +++ b/.agents/notes/archived/process/2026-07-27-dependabot-version-updates.md @@ -1,6 +1,7 @@ # Agent Note: Dependabot version updates with a 30-day cooldown Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-27-dependabot-version-updates.zh.md) diff --git a/.agents/notes/implemented/process/2026-07-27-dependabot-version-updates.zh.md b/.agents/notes/archived/process/2026-07-27-dependabot-version-updates.zh.md similarity index 99% rename from .agents/notes/implemented/process/2026-07-27-dependabot-version-updates.zh.md rename to .agents/notes/archived/process/2026-07-27-dependabot-version-updates.zh.md index 7a615fb282..6a30cd7ae4 100644 --- a/.agents/notes/implemented/process/2026-07-27-dependabot-version-updates.zh.md +++ b/.agents/notes/archived/process/2026-07-27-dependabot-version-updates.zh.md @@ -1,6 +1,7 @@ # Agent Note: Dependabot 版本更新采用 30 天冷却期 Status: implemented +Archived: 2026-09-04 [English](2026-07-27-dependabot-version-updates.md) | 中文 diff --git a/.agents/notes/archived/process/2026-07-27-explicit-change-scope-report.i18n.yaml b/.agents/notes/archived/process/2026-07-27-explicit-change-scope-report.i18n.yaml new file mode 100644 index 0000000000..26be08fd6a --- /dev/null +++ b/.agents/notes/archived/process/2026-07-27-explicit-change-scope-report.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/process/2026-07-27-explicit-change-scope-report.md +2026-07-27-explicit-change-scope-report.md: 9aa7ab9ca8ef8d9b72fc8012c97ecd8dd8c9464a +2026-07-27-explicit-change-scope-report.zh.md: 6c6a78a43abcd287156bd8fb4079e8664729e643 diff --git a/.agents/notes/implemented/process/2026-07-27-explicit-change-scope-report.md b/.agents/notes/archived/process/2026-07-27-explicit-change-scope-report.md similarity index 99% rename from .agents/notes/implemented/process/2026-07-27-explicit-change-scope-report.md rename to .agents/notes/archived/process/2026-07-27-explicit-change-scope-report.md index 51f79039f2..9aa7ab9ca8 100644 --- a/.agents/notes/implemented/process/2026-07-27-explicit-change-scope-report.md +++ b/.agents/notes/archived/process/2026-07-27-explicit-change-scope-report.md @@ -1,6 +1,7 @@ # Agent Note: Report an explicit repository change scope Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-27-explicit-change-scope-report.zh.md) diff --git a/.agents/notes/implemented/process/2026-07-27-explicit-change-scope-report.zh.md b/.agents/notes/archived/process/2026-07-27-explicit-change-scope-report.zh.md similarity index 99% rename from .agents/notes/implemented/process/2026-07-27-explicit-change-scope-report.zh.md rename to .agents/notes/archived/process/2026-07-27-explicit-change-scope-report.zh.md index 4ea99f15c0..6c6a78a43a 100644 --- a/.agents/notes/implemented/process/2026-07-27-explicit-change-scope-report.zh.md +++ b/.agents/notes/archived/process/2026-07-27-explicit-change-scope-report.zh.md @@ -1,6 +1,7 @@ # Agent Note: 显式报告仓库变更范围 Status: implemented +Archived: 2026-09-04 [English](2026-07-27-explicit-change-scope-report.md) | 中文 diff --git a/.agents/notes/archived/process/2026-07-28-per-subsystem-cordis-surface-regions.i18n.yaml b/.agents/notes/archived/process/2026-07-28-per-subsystem-cordis-surface-regions.i18n.yaml new file mode 100644 index 0000000000..88d5361f92 --- /dev/null +++ b/.agents/notes/archived/process/2026-07-28-per-subsystem-cordis-surface-regions.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/process/2026-07-28-per-subsystem-cordis-surface-regions.md +2026-07-28-per-subsystem-cordis-surface-regions.md: 3d1065b9cc5eb86d3183883a0995e456e7d11494 +2026-07-28-per-subsystem-cordis-surface-regions.zh.md: bd934fded62b48f6f1f5f2e2d7f9ae72f7f0d185 diff --git a/.agents/notes/implemented/process/2026-07-28-per-subsystem-cordis-surface-regions.md b/.agents/notes/archived/process/2026-07-28-per-subsystem-cordis-surface-regions.md similarity index 99% rename from .agents/notes/implemented/process/2026-07-28-per-subsystem-cordis-surface-regions.md rename to .agents/notes/archived/process/2026-07-28-per-subsystem-cordis-surface-regions.md index 66973223ec..3d1065b9cc 100644 --- a/.agents/notes/implemented/process/2026-07-28-per-subsystem-cordis-surface-regions.md +++ b/.agents/notes/archived/process/2026-07-28-per-subsystem-cordis-surface-regions.md @@ -1,6 +1,7 @@ # Agent Note: Per-subsystem generated cordis-surface regions Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-28-per-subsystem-cordis-surface-regions.zh.md) diff --git a/.agents/notes/implemented/process/2026-07-28-per-subsystem-cordis-surface-regions.zh.md b/.agents/notes/archived/process/2026-07-28-per-subsystem-cordis-surface-regions.zh.md similarity index 99% rename from .agents/notes/implemented/process/2026-07-28-per-subsystem-cordis-surface-regions.zh.md rename to .agents/notes/archived/process/2026-07-28-per-subsystem-cordis-surface-regions.zh.md index de000402bd..bd934fded6 100644 --- a/.agents/notes/implemented/process/2026-07-28-per-subsystem-cordis-surface-regions.zh.md +++ b/.agents/notes/archived/process/2026-07-28-per-subsystem-cordis-surface-regions.zh.md @@ -1,6 +1,7 @@ # Agent Note: 按子系统生成的 cordis-surface 区块 Status: implemented +Archived: 2026-09-04 [English](2026-07-28-per-subsystem-cordis-surface-regions.md) | 中文 diff --git a/.agents/notes/archived/process/2026-07-29-oxlint-linter.i18n.yaml b/.agents/notes/archived/process/2026-07-29-oxlint-linter.i18n.yaml new file mode 100644 index 0000000000..2de0209f80 --- /dev/null +++ b/.agents/notes/archived/process/2026-07-29-oxlint-linter.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/process/2026-07-29-oxlint-linter.md +2026-07-29-oxlint-linter.md: 882ee9a4fc2316840387bd7ebd6234bd65ed4e6c +2026-07-29-oxlint-linter.zh.md: 16eab94610ccc09622689d96785bf40c4346f414 diff --git a/.agents/notes/implemented/process/2026-07-29-oxlint-linter.md b/.agents/notes/archived/process/2026-07-29-oxlint-linter.md similarity index 99% rename from .agents/notes/implemented/process/2026-07-29-oxlint-linter.md rename to .agents/notes/archived/process/2026-07-29-oxlint-linter.md index 3a4723f227..882ee9a4fc 100644 --- a/.agents/notes/implemented/process/2026-07-29-oxlint-linter.md +++ b/.agents/notes/archived/process/2026-07-29-oxlint-linter.md @@ -1,6 +1,7 @@ # Agent Note: Oxlint as the repository linter Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-29-oxlint-linter.zh.md) diff --git a/.agents/notes/implemented/process/2026-07-29-oxlint-linter.zh.md b/.agents/notes/archived/process/2026-07-29-oxlint-linter.zh.md similarity index 99% rename from .agents/notes/implemented/process/2026-07-29-oxlint-linter.zh.md rename to .agents/notes/archived/process/2026-07-29-oxlint-linter.zh.md index b0d5191f9f..16eab94610 100644 --- a/.agents/notes/implemented/process/2026-07-29-oxlint-linter.zh.md +++ b/.agents/notes/archived/process/2026-07-29-oxlint-linter.zh.md @@ -1,6 +1,7 @@ # Agent Note: 使用 Oxlint 作为仓库 linter Status: implemented +Archived: 2026-09-04 [English](2026-07-29-oxlint-linter.md) | 中文 diff --git a/.agents/notes/archived/process/2026-07-30-cordis-config-source-plane-resolution-gate.i18n.yaml b/.agents/notes/archived/process/2026-07-30-cordis-config-source-plane-resolution-gate.i18n.yaml new file mode 100644 index 0000000000..d4b24801e0 --- /dev/null +++ b/.agents/notes/archived/process/2026-07-30-cordis-config-source-plane-resolution-gate.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/process/2026-07-30-cordis-config-source-plane-resolution-gate.md +2026-07-30-cordis-config-source-plane-resolution-gate.md: 038ecdd436abcfc9e3973e1ac2865e5167d38d0c +2026-07-30-cordis-config-source-plane-resolution-gate.zh.md: ca6324a412afea338e7613941cf2d22c08dde5e1 diff --git a/.agents/notes/implemented/process/2026-07-30-cordis-config-source-plane-resolution-gate.md b/.agents/notes/archived/process/2026-07-30-cordis-config-source-plane-resolution-gate.md similarity index 99% rename from .agents/notes/implemented/process/2026-07-30-cordis-config-source-plane-resolution-gate.md rename to .agents/notes/archived/process/2026-07-30-cordis-config-source-plane-resolution-gate.md index f9070d3955..038ecdd436 100644 --- a/.agents/notes/implemented/process/2026-07-30-cordis-config-source-plane-resolution-gate.md +++ b/.agents/notes/archived/process/2026-07-30-cordis-config-source-plane-resolution-gate.md @@ -1,6 +1,7 @@ # Agent Note: verify-cordis-config gates source-plane resolution of configured plugins Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-30-cordis-config-source-plane-resolution-gate.zh.md) diff --git a/.agents/notes/implemented/process/2026-07-30-cordis-config-source-plane-resolution-gate.zh.md b/.agents/notes/archived/process/2026-07-30-cordis-config-source-plane-resolution-gate.zh.md similarity index 99% rename from .agents/notes/implemented/process/2026-07-30-cordis-config-source-plane-resolution-gate.zh.md rename to .agents/notes/archived/process/2026-07-30-cordis-config-source-plane-resolution-gate.zh.md index 0e8a2d22e8..ca6324a412 100644 --- a/.agents/notes/implemented/process/2026-07-30-cordis-config-source-plane-resolution-gate.zh.md +++ b/.agents/notes/archived/process/2026-07-30-cordis-config-source-plane-resolution-gate.zh.md @@ -1,6 +1,7 @@ # Agent Note: verify-cordis-config 对配置中插件的源码面解析实施门禁 Status: implemented +Archived: 2026-09-04 [English](2026-07-30-cordis-config-source-plane-resolution-gate.md) | 中文 diff --git a/.agents/notes/archived/process/2026-07-30-independent-ci-consumer-build.i18n.yaml b/.agents/notes/archived/process/2026-07-30-independent-ci-consumer-build.i18n.yaml new file mode 100644 index 0000000000..c0d994c9e7 --- /dev/null +++ b/.agents/notes/archived/process/2026-07-30-independent-ci-consumer-build.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/process/2026-07-30-independent-ci-consumer-build.md +2026-07-30-independent-ci-consumer-build.md: 28fb8706b4d7e5e3b6b3de7f84673315de97006b +2026-07-30-independent-ci-consumer-build.zh.md: 1ebd4dabf5b2ff5b2662d09e4abfcca882735637 diff --git a/.agents/notes/implemented/process/2026-07-30-independent-ci-consumer-build.md b/.agents/notes/archived/process/2026-07-30-independent-ci-consumer-build.md similarity index 99% rename from .agents/notes/implemented/process/2026-07-30-independent-ci-consumer-build.md rename to .agents/notes/archived/process/2026-07-30-independent-ci-consumer-build.md index a6d8379579..28fb8706b4 100644 --- a/.agents/notes/implemented/process/2026-07-30-independent-ci-consumer-build.md +++ b/.agents/notes/archived/process/2026-07-30-independent-ci-consumer-build.md @@ -1,6 +1,7 @@ # Agent Note: Independent CI consumer build Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-30-independent-ci-consumer-build.zh.md) diff --git a/.agents/notes/implemented/process/2026-07-30-independent-ci-consumer-build.zh.md b/.agents/notes/archived/process/2026-07-30-independent-ci-consumer-build.zh.md similarity index 99% rename from .agents/notes/implemented/process/2026-07-30-independent-ci-consumer-build.zh.md rename to .agents/notes/archived/process/2026-07-30-independent-ci-consumer-build.zh.md index a48553564c..1ebd4dabf5 100644 --- a/.agents/notes/implemented/process/2026-07-30-independent-ci-consumer-build.zh.md +++ b/.agents/notes/archived/process/2026-07-30-independent-ci-consumer-build.zh.md @@ -1,6 +1,7 @@ # Agent Note: CI 消费方独立构建 Status: implemented +Archived: 2026-09-04 [English](2026-07-30-independent-ci-consumer-build.md) | 中文 diff --git a/.agents/notes/archived/process/2026-07-31-coverage-exempt-heavy-suites.i18n.yaml b/.agents/notes/archived/process/2026-07-31-coverage-exempt-heavy-suites.i18n.yaml new file mode 100644 index 0000000000..b2afcef0c3 --- /dev/null +++ b/.agents/notes/archived/process/2026-07-31-coverage-exempt-heavy-suites.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/process/2026-07-31-coverage-exempt-heavy-suites.md +2026-07-31-coverage-exempt-heavy-suites.md: a175623e6d778fa9dcbf9d17fcae036461f92c68 +2026-07-31-coverage-exempt-heavy-suites.zh.md: c08dcd172f802248d9c51712f80df8d1319c27ee diff --git a/.agents/notes/implemented/process/2026-07-31-coverage-exempt-heavy-suites.md b/.agents/notes/archived/process/2026-07-31-coverage-exempt-heavy-suites.md similarity index 99% rename from .agents/notes/implemented/process/2026-07-31-coverage-exempt-heavy-suites.md rename to .agents/notes/archived/process/2026-07-31-coverage-exempt-heavy-suites.md index fe33308cfc..a175623e6d 100644 --- a/.agents/notes/implemented/process/2026-07-31-coverage-exempt-heavy-suites.md +++ b/.agents/notes/archived/process/2026-07-31-coverage-exempt-heavy-suites.md @@ -1,6 +1,7 @@ # Agent Note: Coverage-exempt heavy suites Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-31-coverage-exempt-heavy-suites.zh.md) diff --git a/.agents/notes/implemented/process/2026-07-31-coverage-exempt-heavy-suites.zh.md b/.agents/notes/archived/process/2026-07-31-coverage-exempt-heavy-suites.zh.md similarity index 99% rename from .agents/notes/implemented/process/2026-07-31-coverage-exempt-heavy-suites.zh.md rename to .agents/notes/archived/process/2026-07-31-coverage-exempt-heavy-suites.zh.md index 233fdc403f..c08dcd172f 100644 --- a/.agents/notes/implemented/process/2026-07-31-coverage-exempt-heavy-suites.zh.md +++ b/.agents/notes/archived/process/2026-07-31-coverage-exempt-heavy-suites.zh.md @@ -1,6 +1,7 @@ # Agent Note: 覆盖率豁免重型套件 Status: implemented +Archived: 2026-09-04 [English](2026-07-31-coverage-exempt-heavy-suites.md) | 中文 diff --git a/.agents/notes/archived/process/2026-08-06-coverage-uncovered-locations.i18n.yaml b/.agents/notes/archived/process/2026-08-06-coverage-uncovered-locations.i18n.yaml new file mode 100644 index 0000000000..7083a3b77c --- /dev/null +++ b/.agents/notes/archived/process/2026-08-06-coverage-uncovered-locations.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/process/2026-08-06-coverage-uncovered-locations.md +2026-08-06-coverage-uncovered-locations.md: a93793b4084ae2d9c8d9e67bc975f79a213363df +2026-08-06-coverage-uncovered-locations.zh.md: c4333bfcfc1a910959f2f4c6abf7f61519115f9c diff --git a/.agents/notes/implemented/process/2026-08-06-coverage-uncovered-locations.md b/.agents/notes/archived/process/2026-08-06-coverage-uncovered-locations.md similarity index 99% rename from .agents/notes/implemented/process/2026-08-06-coverage-uncovered-locations.md rename to .agents/notes/archived/process/2026-08-06-coverage-uncovered-locations.md index d4036ab17a..a93793b408 100644 --- a/.agents/notes/implemented/process/2026-08-06-coverage-uncovered-locations.md +++ b/.agents/notes/archived/process/2026-08-06-coverage-uncovered-locations.md @@ -1,6 +1,7 @@ # Agent Note: Exact uncovered locations on coverage failure Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-06-coverage-uncovered-locations.zh.md) diff --git a/.agents/notes/implemented/process/2026-08-06-coverage-uncovered-locations.zh.md b/.agents/notes/archived/process/2026-08-06-coverage-uncovered-locations.zh.md similarity index 99% rename from .agents/notes/implemented/process/2026-08-06-coverage-uncovered-locations.zh.md rename to .agents/notes/archived/process/2026-08-06-coverage-uncovered-locations.zh.md index 6a10efd216..c4333bfcfc 100644 --- a/.agents/notes/implemented/process/2026-08-06-coverage-uncovered-locations.zh.md +++ b/.agents/notes/archived/process/2026-08-06-coverage-uncovered-locations.zh.md @@ -1,6 +1,7 @@ # Agent Note: 覆盖率未达标时输出精确未覆盖位置 Status: implemented +Archived: 2026-09-04 [English](2026-08-06-coverage-uncovered-locations.md) | 中文 diff --git a/.agents/notes/archived/process/2026-08-06-doc-site-carries-its-images.i18n.yaml b/.agents/notes/archived/process/2026-08-06-doc-site-carries-its-images.i18n.yaml new file mode 100644 index 0000000000..8dbc9c7a81 --- /dev/null +++ b/.agents/notes/archived/process/2026-08-06-doc-site-carries-its-images.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/process/2026-08-06-doc-site-carries-its-images.md +2026-08-06-doc-site-carries-its-images.md: 039f4aabf21f14f6b55504fd4a08ad4395d9ef5e +2026-08-06-doc-site-carries-its-images.zh.md: 170d721c574b2867756af7916f4e2e7304f44d94 diff --git a/.agents/notes/implemented/process/2026-08-06-doc-site-carries-its-images.md b/.agents/notes/archived/process/2026-08-06-doc-site-carries-its-images.md similarity index 99% rename from .agents/notes/implemented/process/2026-08-06-doc-site-carries-its-images.md rename to .agents/notes/archived/process/2026-08-06-doc-site-carries-its-images.md index 4078a9b625..039f4aabf2 100644 --- a/.agents/notes/implemented/process/2026-08-06-doc-site-carries-its-images.md +++ b/.agents/notes/archived/process/2026-08-06-doc-site-carries-its-images.md @@ -1,6 +1,7 @@ # Agent Note: The documentation site carries its own images Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-06-doc-site-carries-its-images.zh.md) diff --git a/.agents/notes/implemented/process/2026-08-06-doc-site-carries-its-images.zh.md b/.agents/notes/archived/process/2026-08-06-doc-site-carries-its-images.zh.md similarity index 99% rename from .agents/notes/implemented/process/2026-08-06-doc-site-carries-its-images.zh.md rename to .agents/notes/archived/process/2026-08-06-doc-site-carries-its-images.zh.md index 4ab90f9736..170d721c57 100644 --- a/.agents/notes/implemented/process/2026-08-06-doc-site-carries-its-images.zh.md +++ b/.agents/notes/archived/process/2026-08-06-doc-site-carries-its-images.zh.md @@ -1,6 +1,7 @@ # Agent Note: 文档站点自带图片 Status: implemented +Archived: 2026-09-04 [English](2026-08-06-doc-site-carries-its-images.md) | 中文 diff --git a/.agents/notes/archived/process/2026-08-06-in-repository-landlock-release.i18n.yaml b/.agents/notes/archived/process/2026-08-06-in-repository-landlock-release.i18n.yaml new file mode 100644 index 0000000000..31edbf3658 --- /dev/null +++ b/.agents/notes/archived/process/2026-08-06-in-repository-landlock-release.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/process/2026-08-06-in-repository-landlock-release.md +2026-08-06-in-repository-landlock-release.md: c71c7b4c0d5481c768322dd6c04b98caeee80b63 +2026-08-06-in-repository-landlock-release.zh.md: d902a8015ba6947a5a316125c2d17230356d8af2 diff --git a/.agents/notes/implemented/process/2026-08-06-in-repository-landlock-release.md b/.agents/notes/archived/process/2026-08-06-in-repository-landlock-release.md similarity index 99% rename from .agents/notes/implemented/process/2026-08-06-in-repository-landlock-release.md rename to .agents/notes/archived/process/2026-08-06-in-repository-landlock-release.md index 25c31c3cdc..c71c7b4c0d 100644 --- a/.agents/notes/implemented/process/2026-08-06-in-repository-landlock-release.md +++ b/.agents/notes/archived/process/2026-08-06-in-repository-landlock-release.md @@ -1,6 +1,7 @@ # Agent Note: In-repository Landlock release Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-06-in-repository-landlock-release.zh.md) diff --git a/.agents/notes/implemented/process/2026-08-06-in-repository-landlock-release.zh.md b/.agents/notes/archived/process/2026-08-06-in-repository-landlock-release.zh.md similarity index 99% rename from .agents/notes/implemented/process/2026-08-06-in-repository-landlock-release.zh.md rename to .agents/notes/archived/process/2026-08-06-in-repository-landlock-release.zh.md index 71cd2b7fe3..d902a8015b 100644 --- a/.agents/notes/implemented/process/2026-08-06-in-repository-landlock-release.zh.md +++ b/.agents/notes/archived/process/2026-08-06-in-repository-landlock-release.zh.md @@ -1,6 +1,7 @@ # Agent Note: 仓库内 Landlock 发布 Status: implemented +Archived: 2026-09-04 [English](2026-08-06-in-repository-landlock-release.md) | 中文 diff --git a/.agents/notes/archived/process/2026-08-08-api-remotes-generated-contract-build.i18n.yaml b/.agents/notes/archived/process/2026-08-08-api-remotes-generated-contract-build.i18n.yaml new file mode 100644 index 0000000000..2971fe1af7 --- /dev/null +++ b/.agents/notes/archived/process/2026-08-08-api-remotes-generated-contract-build.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/process/2026-08-08-api-remotes-generated-contract-build.md +2026-08-08-api-remotes-generated-contract-build.md: c34b25a9605fed0e7543bc9de27c2fbd5d4b0678 +2026-08-08-api-remotes-generated-contract-build.zh.md: 73fa9992c3c8228012727b2ab95de2786a89907e diff --git a/.agents/notes/implemented/process/2026-08-08-api-remotes-generated-contract-build.md b/.agents/notes/archived/process/2026-08-08-api-remotes-generated-contract-build.md similarity index 99% rename from .agents/notes/implemented/process/2026-08-08-api-remotes-generated-contract-build.md rename to .agents/notes/archived/process/2026-08-08-api-remotes-generated-contract-build.md index 319b0205aa..c34b25a960 100644 --- a/.agents/notes/implemented/process/2026-08-08-api-remotes-generated-contract-build.md +++ b/.agents/notes/archived/process/2026-08-08-api-remotes-generated-contract-build.md @@ -1,6 +1,7 @@ # Agent Note: Ordered Build for API Remotes Generated Contracts Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-08-api-remotes-generated-contract-build.zh.md) diff --git a/.agents/notes/implemented/process/2026-08-08-api-remotes-generated-contract-build.zh.md b/.agents/notes/archived/process/2026-08-08-api-remotes-generated-contract-build.zh.md similarity index 99% rename from .agents/notes/implemented/process/2026-08-08-api-remotes-generated-contract-build.zh.md rename to .agents/notes/archived/process/2026-08-08-api-remotes-generated-contract-build.zh.md index 21ed4593f0..73fa9992c3 100644 --- a/.agents/notes/implemented/process/2026-08-08-api-remotes-generated-contract-build.zh.md +++ b/.agents/notes/archived/process/2026-08-08-api-remotes-generated-contract-build.zh.md @@ -1,6 +1,7 @@ # Agent Note: API Remotes 生成约定的有序构建 Status: implemented +Archived: 2026-09-04 [English](2026-08-08-api-remotes-generated-contract-build.md) | 中文 diff --git a/.agents/notes/implemented/process/2026-08-08-lightweight-routine-documentation-translation.i18n.yaml b/.agents/notes/archived/process/2026-08-08-lightweight-routine-documentation-translation.i18n.yaml similarity index 51% rename from .agents/notes/implemented/process/2026-08-08-lightweight-routine-documentation-translation.i18n.yaml rename to .agents/notes/archived/process/2026-08-08-lightweight-routine-documentation-translation.i18n.yaml index b9841d4f7c..8c7279bf48 100644 --- a/.agents/notes/implemented/process/2026-08-08-lightweight-routine-documentation-translation.i18n.yaml +++ b/.agents/notes/archived/process/2026-08-08-lightweight-routine-documentation-translation.i18n.yaml @@ -1,6 +1,6 @@ # Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/process/2026-08-08-lightweight-routine-documentation-translation.md -2026-08-08-lightweight-routine-documentation-translation.md: ff4d6005588b562018bf1ee40d6dabb5569766f0 -2026-08-08-lightweight-routine-documentation-translation.zh.md: 42645f010d81f43d29411b0cfa4b094f23003f6f +# pnpm run verify-translation-pairing --write .agents/notes/archived/process/2026-08-08-lightweight-routine-documentation-translation.md +2026-08-08-lightweight-routine-documentation-translation.md: 9c1037d22b2c5aca660f4f35649947c59d9910e1 +2026-08-08-lightweight-routine-documentation-translation.zh.md: 76cbc10f84d9fe1262a5c0cefed0433e79567e28 diff --git a/.agents/notes/implemented/process/2026-08-08-lightweight-routine-documentation-translation.md b/.agents/notes/archived/process/2026-08-08-lightweight-routine-documentation-translation.md similarity index 99% rename from .agents/notes/implemented/process/2026-08-08-lightweight-routine-documentation-translation.md rename to .agents/notes/archived/process/2026-08-08-lightweight-routine-documentation-translation.md index ff4d600558..9c1037d22b 100644 --- a/.agents/notes/implemented/process/2026-08-08-lightweight-routine-documentation-translation.md +++ b/.agents/notes/archived/process/2026-08-08-lightweight-routine-documentation-translation.md @@ -1,6 +1,7 @@ # Agent Note: Lightweight routine documentation translation Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-08-lightweight-routine-documentation-translation.zh.md) diff --git a/.agents/notes/implemented/process/2026-08-08-lightweight-routine-documentation-translation.zh.md b/.agents/notes/archived/process/2026-08-08-lightweight-routine-documentation-translation.zh.md similarity index 99% rename from .agents/notes/implemented/process/2026-08-08-lightweight-routine-documentation-translation.zh.md rename to .agents/notes/archived/process/2026-08-08-lightweight-routine-documentation-translation.zh.md index 42645f010d..76cbc10f84 100644 --- a/.agents/notes/implemented/process/2026-08-08-lightweight-routine-documentation-translation.zh.md +++ b/.agents/notes/archived/process/2026-08-08-lightweight-routine-documentation-translation.zh.md @@ -1,6 +1,7 @@ # Agent Note: 轻量化日常文档翻译 Status: implemented +Archived: 2026-09-04 [English](2026-08-08-lightweight-routine-documentation-translation.md) | 中文 diff --git a/.agents/notes/archived/process/2026-08-09-chinese-contract-terminology.i18n.yaml b/.agents/notes/archived/process/2026-08-09-chinese-contract-terminology.i18n.yaml new file mode 100644 index 0000000000..11639fd9fc --- /dev/null +++ b/.agents/notes/archived/process/2026-08-09-chinese-contract-terminology.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/process/2026-08-09-chinese-contract-terminology.md +2026-08-09-chinese-contract-terminology.md: 9cccebf2a4d751887c6b058488c6bb094143a82b +2026-08-09-chinese-contract-terminology.zh.md: 3c19b0b7fcf8287b246aa1f77e8c11c47b079506 diff --git a/.agents/notes/implemented/process/2026-08-09-chinese-contract-terminology.md b/.agents/notes/archived/process/2026-08-09-chinese-contract-terminology.md similarity index 99% rename from .agents/notes/implemented/process/2026-08-09-chinese-contract-terminology.md rename to .agents/notes/archived/process/2026-08-09-chinese-contract-terminology.md index fa9e3ab911..9cccebf2a4 100644 --- a/.agents/notes/implemented/process/2026-08-09-chinese-contract-terminology.md +++ b/.agents/notes/archived/process/2026-08-09-chinese-contract-terminology.md @@ -1,6 +1,7 @@ # Agent Note: Standardize Chinese contract terminology on 约定 Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-09-chinese-contract-terminology.zh.md) diff --git a/.agents/notes/implemented/process/2026-08-09-chinese-contract-terminology.zh.md b/.agents/notes/archived/process/2026-08-09-chinese-contract-terminology.zh.md similarity index 99% rename from .agents/notes/implemented/process/2026-08-09-chinese-contract-terminology.zh.md rename to .agents/notes/archived/process/2026-08-09-chinese-contract-terminology.zh.md index 1079d7d79e..3c19b0b7fc 100644 --- a/.agents/notes/implemented/process/2026-08-09-chinese-contract-terminology.zh.md +++ b/.agents/notes/archived/process/2026-08-09-chinese-contract-terminology.zh.md @@ -1,6 +1,7 @@ # Agent Note: 将中文 contract 术语统一为「约定」 Status: implemented +Archived: 2026-09-04 [English](2026-08-09-chinese-contract-terminology.md) | 中文 diff --git a/.agents/notes/archived/process/2026-08-09-md-fragment-anchor-gate.i18n.yaml b/.agents/notes/archived/process/2026-08-09-md-fragment-anchor-gate.i18n.yaml new file mode 100644 index 0000000000..01d9a25c8c --- /dev/null +++ b/.agents/notes/archived/process/2026-08-09-md-fragment-anchor-gate.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/process/2026-08-09-md-fragment-anchor-gate.md +2026-08-09-md-fragment-anchor-gate.md: 7f6ac3f2eb73e984bd4c414aee271cd7e0f52ae8 +2026-08-09-md-fragment-anchor-gate.zh.md: 5bf52eb2f5498763ccb24c3260b3b63dca1c07a3 diff --git a/.agents/notes/implemented/process/2026-08-09-md-fragment-anchor-gate.md b/.agents/notes/archived/process/2026-08-09-md-fragment-anchor-gate.md similarity index 99% rename from .agents/notes/implemented/process/2026-08-09-md-fragment-anchor-gate.md rename to .agents/notes/archived/process/2026-08-09-md-fragment-anchor-gate.md index de0d02318b..7f6ac3f2eb 100644 --- a/.agents/notes/implemented/process/2026-08-09-md-fragment-anchor-gate.md +++ b/.agents/notes/archived/process/2026-08-09-md-fragment-anchor-gate.md @@ -1,6 +1,7 @@ # Agent Note: verify-md-links validates fragment anchors, closing the last dead-link class Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-09-md-fragment-anchor-gate.zh.md) diff --git a/.agents/notes/implemented/process/2026-08-09-md-fragment-anchor-gate.zh.md b/.agents/notes/archived/process/2026-08-09-md-fragment-anchor-gate.zh.md similarity index 99% rename from .agents/notes/implemented/process/2026-08-09-md-fragment-anchor-gate.zh.md rename to .agents/notes/archived/process/2026-08-09-md-fragment-anchor-gate.zh.md index 54ac751900..5bf52eb2f5 100644 --- a/.agents/notes/implemented/process/2026-08-09-md-fragment-anchor-gate.zh.md +++ b/.agents/notes/archived/process/2026-08-09-md-fragment-anchor-gate.zh.md @@ -1,6 +1,7 @@ # Agent Note: verify-md-links 校验 fragment 锚点,消除最后一类死链 Status: implemented +Archived: 2026-09-04 [English](2026-08-09-md-fragment-anchor-gate.md) | 中文 diff --git a/.agents/notes/archived/process/2026-08-09-oxlint-only-fix-workflow.i18n.yaml b/.agents/notes/archived/process/2026-08-09-oxlint-only-fix-workflow.i18n.yaml new file mode 100644 index 0000000000..2243864113 --- /dev/null +++ b/.agents/notes/archived/process/2026-08-09-oxlint-only-fix-workflow.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/process/2026-08-09-oxlint-only-fix-workflow.md +2026-08-09-oxlint-only-fix-workflow.md: 482c823ecd8bc4299e17ca789f92e3b1a8d23a87 +2026-08-09-oxlint-only-fix-workflow.zh.md: e9e8bf0132c05618c4e12f34b566975a369489b7 diff --git a/.agents/notes/implemented/process/2026-08-09-oxlint-only-fix-workflow.md b/.agents/notes/archived/process/2026-08-09-oxlint-only-fix-workflow.md similarity index 99% rename from .agents/notes/implemented/process/2026-08-09-oxlint-only-fix-workflow.md rename to .agents/notes/archived/process/2026-08-09-oxlint-only-fix-workflow.md index bc38812db1..482c823ecd 100644 --- a/.agents/notes/implemented/process/2026-08-09-oxlint-only-fix-workflow.md +++ b/.agents/notes/archived/process/2026-08-09-oxlint-only-fix-workflow.md @@ -1,6 +1,7 @@ # Agent Note: Oxlint-only fix workflow Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-09-oxlint-only-fix-workflow.zh.md) diff --git a/.agents/notes/implemented/process/2026-08-09-oxlint-only-fix-workflow.zh.md b/.agents/notes/archived/process/2026-08-09-oxlint-only-fix-workflow.zh.md similarity index 99% rename from .agents/notes/implemented/process/2026-08-09-oxlint-only-fix-workflow.zh.md rename to .agents/notes/archived/process/2026-08-09-oxlint-only-fix-workflow.zh.md index 350fe92bc1..e9e8bf0132 100644 --- a/.agents/notes/implemented/process/2026-08-09-oxlint-only-fix-workflow.zh.md +++ b/.agents/notes/archived/process/2026-08-09-oxlint-only-fix-workflow.zh.md @@ -1,6 +1,7 @@ # Agent Note: 仅使用 Oxlint 的修复工作流 Status: implemented +Archived: 2026-09-04 [English](2026-08-09-oxlint-only-fix-workflow.md) | 中文 diff --git a/.agents/notes/archived/process/2026-08-10-vendor-package-rescope.i18n.yaml b/.agents/notes/archived/process/2026-08-10-vendor-package-rescope.i18n.yaml new file mode 100644 index 0000000000..463f68c62a --- /dev/null +++ b/.agents/notes/archived/process/2026-08-10-vendor-package-rescope.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/process/2026-08-10-vendor-package-rescope.md +2026-08-10-vendor-package-rescope.md: 7cbbf89d4dcb1e998e98b4f247dc66872e00f0b6 +2026-08-10-vendor-package-rescope.zh.md: 1b57305bb8c330fe38b30ac481ca3a044179e4ec diff --git a/.agents/notes/implemented/process/2026-08-10-vendor-package-rescope.md b/.agents/notes/archived/process/2026-08-10-vendor-package-rescope.md similarity index 99% rename from .agents/notes/implemented/process/2026-08-10-vendor-package-rescope.md rename to .agents/notes/archived/process/2026-08-10-vendor-package-rescope.md index 5b5bc186bd..7cbbf89d4d 100644 --- a/.agents/notes/implemented/process/2026-08-10-vendor-package-rescope.md +++ b/.agents/notes/archived/process/2026-08-10-vendor-package-rescope.md @@ -1,6 +1,7 @@ # Agent Note: Rescope vendored Cordis into @deepseek-ai Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-10-vendor-package-rescope.zh.md) diff --git a/.agents/notes/implemented/process/2026-08-10-vendor-package-rescope.zh.md b/.agents/notes/archived/process/2026-08-10-vendor-package-rescope.zh.md similarity index 99% rename from .agents/notes/implemented/process/2026-08-10-vendor-package-rescope.zh.md rename to .agents/notes/archived/process/2026-08-10-vendor-package-rescope.zh.md index 66aab87709..1b57305bb8 100644 --- a/.agents/notes/implemented/process/2026-08-10-vendor-package-rescope.zh.md +++ b/.agents/notes/archived/process/2026-08-10-vendor-package-rescope.zh.md @@ -1,6 +1,7 @@ # Agent Note: 把 vendored Cordis 重命名进 @deepseek-ai scope Status: implemented +Archived: 2026-09-04 [English](2026-08-10-vendor-package-rescope.md) | 中文 diff --git a/.agents/notes/archived/process/2026-08-11-python-publication-workflow.i18n.yaml b/.agents/notes/archived/process/2026-08-11-python-publication-workflow.i18n.yaml new file mode 100644 index 0000000000..da3045fa0e --- /dev/null +++ b/.agents/notes/archived/process/2026-08-11-python-publication-workflow.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/process/2026-08-11-python-publication-workflow.md +2026-08-11-python-publication-workflow.md: eb17d5bc947daa9f5725ae330f9d628d46c9cf35 +2026-08-11-python-publication-workflow.zh.md: 85e261bfc51cf21f2cbeb1c651d93f0fe3efb651 diff --git a/.agents/notes/implemented/process/2026-08-11-python-publication-workflow.md b/.agents/notes/archived/process/2026-08-11-python-publication-workflow.md similarity index 99% rename from .agents/notes/implemented/process/2026-08-11-python-publication-workflow.md rename to .agents/notes/archived/process/2026-08-11-python-publication-workflow.md index afb18ee97d..eb17d5bc94 100644 --- a/.agents/notes/implemented/process/2026-08-11-python-publication-workflow.md +++ b/.agents/notes/archived/process/2026-08-11-python-publication-workflow.md @@ -1,6 +1,7 @@ # Agent Note: Python public publication workflow Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-11-python-publication-workflow.zh.md) diff --git a/.agents/notes/implemented/process/2026-08-11-python-publication-workflow.zh.md b/.agents/notes/archived/process/2026-08-11-python-publication-workflow.zh.md similarity index 99% rename from .agents/notes/implemented/process/2026-08-11-python-publication-workflow.zh.md rename to .agents/notes/archived/process/2026-08-11-python-publication-workflow.zh.md index f2d045f686..85e261bfc5 100644 --- a/.agents/notes/implemented/process/2026-08-11-python-publication-workflow.zh.md +++ b/.agents/notes/archived/process/2026-08-11-python-publication-workflow.zh.md @@ -1,6 +1,7 @@ # Agent Note: Python 公开发布工作流 Status: implemented +Archived: 2026-09-04 [English](2026-08-11-python-publication-workflow.md) | 中文 diff --git a/.agents/notes/archived/process/2026-08-12-face-named-client-test-files.i18n.yaml b/.agents/notes/archived/process/2026-08-12-face-named-client-test-files.i18n.yaml new file mode 100644 index 0000000000..c7417e258f --- /dev/null +++ b/.agents/notes/archived/process/2026-08-12-face-named-client-test-files.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/process/2026-08-12-face-named-client-test-files.md +2026-08-12-face-named-client-test-files.md: 66a1def12187300b7c4c2b5a1bab73a5630ab415 +2026-08-12-face-named-client-test-files.zh.md: ddb2b34725ad1fb51fa236edcad1c9061da4616d diff --git a/.agents/notes/implemented/process/2026-08-12-face-named-client-test-files.md b/.agents/notes/archived/process/2026-08-12-face-named-client-test-files.md similarity index 99% rename from .agents/notes/implemented/process/2026-08-12-face-named-client-test-files.md rename to .agents/notes/archived/process/2026-08-12-face-named-client-test-files.md index 9bc82ba429..66a1def121 100644 --- a/.agents/notes/implemented/process/2026-08-12-face-named-client-test-files.md +++ b/.agents/notes/archived/process/2026-08-12-face-named-client-test-files.md @@ -1,6 +1,7 @@ # Agent Note: Face-named client test files Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-12-face-named-client-test-files.zh.md) diff --git a/.agents/notes/implemented/process/2026-08-12-face-named-client-test-files.zh.md b/.agents/notes/archived/process/2026-08-12-face-named-client-test-files.zh.md similarity index 99% rename from .agents/notes/implemented/process/2026-08-12-face-named-client-test-files.zh.md rename to .agents/notes/archived/process/2026-08-12-face-named-client-test-files.zh.md index c6f62b6055..ddb2b34725 100644 --- a/.agents/notes/implemented/process/2026-08-12-face-named-client-test-files.zh.md +++ b/.agents/notes/archived/process/2026-08-12-face-named-client-test-files.zh.md @@ -1,6 +1,7 @@ # Agent Note: 用文件名标明 client 测试的编译面 Status: implemented +Archived: 2026-09-04 [English](2026-08-12-face-named-client-test-files.md) | 中文 diff --git a/.agents/notes/archived/process/2026-08-13-public-vendor-and-native-sequences.i18n.yaml b/.agents/notes/archived/process/2026-08-13-public-vendor-and-native-sequences.i18n.yaml new file mode 100644 index 0000000000..b14d155c27 --- /dev/null +++ b/.agents/notes/archived/process/2026-08-13-public-vendor-and-native-sequences.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/process/2026-08-13-public-vendor-and-native-sequences.md +2026-08-13-public-vendor-and-native-sequences.md: c9f050ef6568c5f228db062a9daac925a9dd4da0 +2026-08-13-public-vendor-and-native-sequences.zh.md: 6578fa9f10f8d836e8e0998bbbe60555424b4da6 diff --git a/.agents/notes/implemented/process/2026-08-13-public-vendor-and-native-sequences.md b/.agents/notes/archived/process/2026-08-13-public-vendor-and-native-sequences.md similarity index 99% rename from .agents/notes/implemented/process/2026-08-13-public-vendor-and-native-sequences.md rename to .agents/notes/archived/process/2026-08-13-public-vendor-and-native-sequences.md index 2b2b8039f8..c9f050ef65 100644 --- a/.agents/notes/implemented/process/2026-08-13-public-vendor-and-native-sequences.md +++ b/.agents/notes/archived/process/2026-08-13-public-vendor-and-native-sequences.md @@ -1,6 +1,7 @@ # Agent Note: npm access per release sequence: the vendored framework and the native packages publish publicly Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-13-public-vendor-and-native-sequences.zh.md) diff --git a/.agents/notes/implemented/process/2026-08-13-public-vendor-and-native-sequences.zh.md b/.agents/notes/archived/process/2026-08-13-public-vendor-and-native-sequences.zh.md similarity index 99% rename from .agents/notes/implemented/process/2026-08-13-public-vendor-and-native-sequences.zh.md rename to .agents/notes/archived/process/2026-08-13-public-vendor-and-native-sequences.zh.md index 8ee806f0d4..6578fa9f10 100644 --- a/.agents/notes/implemented/process/2026-08-13-public-vendor-and-native-sequences.zh.md +++ b/.agents/notes/archived/process/2026-08-13-public-vendor-and-native-sequences.zh.md @@ -1,6 +1,7 @@ # Agent Note: 按发布序列区分 npm access:vendored 框架与 native 包公开发布 Status: implemented +Archived: 2026-09-04 [English](2026-08-13-public-vendor-and-native-sequences.md) | 中文 diff --git a/.agents/notes/archived/process/2026-08-13-published-document-fragments.i18n.yaml b/.agents/notes/archived/process/2026-08-13-published-document-fragments.i18n.yaml new file mode 100644 index 0000000000..2dfbb77b2c --- /dev/null +++ b/.agents/notes/archived/process/2026-08-13-published-document-fragments.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/process/2026-08-13-published-document-fragments.md +2026-08-13-published-document-fragments.md: 53d406976e14d01862ddab207dc009f4d767c287 +2026-08-13-published-document-fragments.zh.md: dc1cfe60adbb306aed98f3b45c359255c56e0321 diff --git a/.agents/notes/implemented/process/2026-08-13-published-document-fragments.md b/.agents/notes/archived/process/2026-08-13-published-document-fragments.md similarity index 99% rename from .agents/notes/implemented/process/2026-08-13-published-document-fragments.md rename to .agents/notes/archived/process/2026-08-13-published-document-fragments.md index 5b4727c361..53d406976e 100644 --- a/.agents/notes/implemented/process/2026-08-13-published-document-fragments.md +++ b/.agents/notes/archived/process/2026-08-13-published-document-fragments.md @@ -1,6 +1,7 @@ # Agent Note: Validate published document fragments Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-13-published-document-fragments.zh.md) diff --git a/.agents/notes/implemented/process/2026-08-13-published-document-fragments.zh.md b/.agents/notes/archived/process/2026-08-13-published-document-fragments.zh.md similarity index 99% rename from .agents/notes/implemented/process/2026-08-13-published-document-fragments.zh.md rename to .agents/notes/archived/process/2026-08-13-published-document-fragments.zh.md index f927e068a5..dc1cfe60ad 100644 --- a/.agents/notes/implemented/process/2026-08-13-published-document-fragments.zh.md +++ b/.agents/notes/archived/process/2026-08-13-published-document-fragments.zh.md @@ -1,6 +1,7 @@ # Agent Note: 校验已发布文档的 fragment Status: implemented +Archived: 2026-09-04 [English](2026-08-13-published-document-fragments.md) | 中文 diff --git a/.agents/notes/archived/process/2026-08-17-readme-assets-on-cdn.i18n.yaml b/.agents/notes/archived/process/2026-08-17-readme-assets-on-cdn.i18n.yaml new file mode 100644 index 0000000000..111b0f5036 --- /dev/null +++ b/.agents/notes/archived/process/2026-08-17-readme-assets-on-cdn.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/process/2026-08-17-readme-assets-on-cdn.md +2026-08-17-readme-assets-on-cdn.md: 49a4620c0298c621ce5a60f7d870be9c8c2ff117 +2026-08-17-readme-assets-on-cdn.zh.md: f890284df23ac765decbddd8ef21e2b49cae681c diff --git a/.agents/notes/implemented/process/2026-08-17-readme-assets-on-cdn.md b/.agents/notes/archived/process/2026-08-17-readme-assets-on-cdn.md similarity index 99% rename from .agents/notes/implemented/process/2026-08-17-readme-assets-on-cdn.md rename to .agents/notes/archived/process/2026-08-17-readme-assets-on-cdn.md index 8918e21181..49a4620c02 100644 --- a/.agents/notes/implemented/process/2026-08-17-readme-assets-on-cdn.md +++ b/.agents/notes/archived/process/2026-08-17-readme-assets-on-cdn.md @@ -1,6 +1,7 @@ # Agent Note: README assets publish from a dedicated repository Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-17-readme-assets-on-cdn.zh.md) diff --git a/.agents/notes/implemented/process/2026-08-17-readme-assets-on-cdn.zh.md b/.agents/notes/archived/process/2026-08-17-readme-assets-on-cdn.zh.md similarity index 99% rename from .agents/notes/implemented/process/2026-08-17-readme-assets-on-cdn.zh.md rename to .agents/notes/archived/process/2026-08-17-readme-assets-on-cdn.zh.md index a1314068ff..f890284df2 100644 --- a/.agents/notes/implemented/process/2026-08-17-readme-assets-on-cdn.zh.md +++ b/.agents/notes/archived/process/2026-08-17-readme-assets-on-cdn.zh.md @@ -1,6 +1,7 @@ # Agent Note: README 资产通过专用仓库发布 Status: implemented +Archived: 2026-09-04 [English](2026-08-17-readme-assets-on-cdn.md) | 中文 diff --git a/.agents/notes/archived/process/2026-08-18-localized-bilingual-links.i18n.yaml b/.agents/notes/archived/process/2026-08-18-localized-bilingual-links.i18n.yaml new file mode 100644 index 0000000000..6127d41e8f --- /dev/null +++ b/.agents/notes/archived/process/2026-08-18-localized-bilingual-links.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/process/2026-08-18-localized-bilingual-links.md +2026-08-18-localized-bilingual-links.md: 44283f59b1139dbbcbe761ecfbd04732d51fcbd8 +2026-08-18-localized-bilingual-links.zh.md: bb45bf3f5e3f47027131d35eda394aea4c3e7823 diff --git a/.agents/notes/implemented/process/2026-08-18-localized-bilingual-links.md b/.agents/notes/archived/process/2026-08-18-localized-bilingual-links.md similarity index 99% rename from .agents/notes/implemented/process/2026-08-18-localized-bilingual-links.md rename to .agents/notes/archived/process/2026-08-18-localized-bilingual-links.md index d8b792d5d1..44283f59b1 100644 --- a/.agents/notes/implemented/process/2026-08-18-localized-bilingual-links.md +++ b/.agents/notes/archived/process/2026-08-18-localized-bilingual-links.md @@ -1,6 +1,7 @@ # Agent Note: Localize bilingual document links Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-18-localized-bilingual-links.zh.md) diff --git a/.agents/notes/implemented/process/2026-08-18-localized-bilingual-links.zh.md b/.agents/notes/archived/process/2026-08-18-localized-bilingual-links.zh.md similarity index 99% rename from .agents/notes/implemented/process/2026-08-18-localized-bilingual-links.zh.md rename to .agents/notes/archived/process/2026-08-18-localized-bilingual-links.zh.md index ed49fccd97..bb45bf3f5e 100644 --- a/.agents/notes/implemented/process/2026-08-18-localized-bilingual-links.zh.md +++ b/.agents/notes/archived/process/2026-08-18-localized-bilingual-links.zh.md @@ -1,6 +1,7 @@ # Agent Note: 双语文档链接本地化 Status: implemented +Archived: 2026-09-04 [English](2026-08-18-localized-bilingual-links.md) | 中文 diff --git a/.agents/notes/implemented/process/2026-08-21-documentation-site-tag-release.i18n.yaml b/.agents/notes/archived/process/2026-08-20-doc-site-raw-markdown-twins.i18n.yaml similarity index 56% rename from .agents/notes/implemented/process/2026-08-21-documentation-site-tag-release.i18n.yaml rename to .agents/notes/archived/process/2026-08-20-doc-site-raw-markdown-twins.i18n.yaml index 7ef939a968..3d15f2eeb5 100644 --- a/.agents/notes/implemented/process/2026-08-21-documentation-site-tag-release.i18n.yaml +++ b/.agents/notes/archived/process/2026-08-20-doc-site-raw-markdown-twins.i18n.yaml @@ -1,6 +1,6 @@ # Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/process/2026-08-21-documentation-site-tag-release.md -2026-08-21-documentation-site-tag-release.md: 3f7a9d04a018bdcaefb1f09e5f2410b138c0c8d4 -2026-08-21-documentation-site-tag-release.zh.md: 0033492270a648204ec634554549fb908a128aa9 +# pnpm run verify-translation-pairing --write .agents/notes/archived/process/2026-08-20-doc-site-raw-markdown-twins.md +2026-08-20-doc-site-raw-markdown-twins.md: 610cda8f366a703ac2de7049954c3b87b6012ab8 +2026-08-20-doc-site-raw-markdown-twins.zh.md: c7d01fce8e607b1baf720b8caa823ee9783489ac diff --git a/.agents/notes/implemented/process/2026-08-20-doc-site-raw-markdown-twins.md b/.agents/notes/archived/process/2026-08-20-doc-site-raw-markdown-twins.md similarity index 99% rename from .agents/notes/implemented/process/2026-08-20-doc-site-raw-markdown-twins.md rename to .agents/notes/archived/process/2026-08-20-doc-site-raw-markdown-twins.md index 7f557d1327..610cda8f36 100644 --- a/.agents/notes/implemented/process/2026-08-20-doc-site-raw-markdown-twins.md +++ b/.agents/notes/archived/process/2026-08-20-doc-site-raw-markdown-twins.md @@ -1,6 +1,7 @@ # Agent Note: Raw-Markdown twins and llms.txt on the documentation site Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-20-doc-site-raw-markdown-twins.zh.md) diff --git a/.agents/notes/implemented/process/2026-08-20-doc-site-raw-markdown-twins.zh.md b/.agents/notes/archived/process/2026-08-20-doc-site-raw-markdown-twins.zh.md similarity index 99% rename from .agents/notes/implemented/process/2026-08-20-doc-site-raw-markdown-twins.zh.md rename to .agents/notes/archived/process/2026-08-20-doc-site-raw-markdown-twins.zh.md index e2a7a050c1..c7d01fce8e 100644 --- a/.agents/notes/implemented/process/2026-08-20-doc-site-raw-markdown-twins.zh.md +++ b/.agents/notes/archived/process/2026-08-20-doc-site-raw-markdown-twins.zh.md @@ -1,6 +1,7 @@ # Agent Note: 文档站的纯 Markdown 孪生页与 llms.txt Status: implemented +Archived: 2026-09-04 [English](2026-08-20-doc-site-raw-markdown-twins.md) | 中文 diff --git a/.agents/notes/archived/process/2026-08-21-documentation-site-tag-release.i18n.yaml b/.agents/notes/archived/process/2026-08-21-documentation-site-tag-release.i18n.yaml new file mode 100644 index 0000000000..80cf2e91f3 --- /dev/null +++ b/.agents/notes/archived/process/2026-08-21-documentation-site-tag-release.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/process/2026-08-21-documentation-site-tag-release.md +2026-08-21-documentation-site-tag-release.md: a6658b59b73c4fceb17557fdf7262a0e69d96f1b +2026-08-21-documentation-site-tag-release.zh.md: d5f7d64a739966323a0b163fd54aac4f42c9ebb2 diff --git a/.agents/notes/implemented/process/2026-08-21-documentation-site-tag-release.md b/.agents/notes/archived/process/2026-08-21-documentation-site-tag-release.md similarity index 99% rename from .agents/notes/implemented/process/2026-08-21-documentation-site-tag-release.md rename to .agents/notes/archived/process/2026-08-21-documentation-site-tag-release.md index 3f7a9d04a0..a6658b59b7 100644 --- a/.agents/notes/implemented/process/2026-08-21-documentation-site-tag-release.md +++ b/.agents/notes/archived/process/2026-08-21-documentation-site-tag-release.md @@ -1,6 +1,7 @@ # Agent Note: Publish the documentation site from a release tag Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-21-documentation-site-tag-release.zh.md) diff --git a/.agents/notes/implemented/process/2026-08-21-documentation-site-tag-release.zh.md b/.agents/notes/archived/process/2026-08-21-documentation-site-tag-release.zh.md similarity index 99% rename from .agents/notes/implemented/process/2026-08-21-documentation-site-tag-release.zh.md rename to .agents/notes/archived/process/2026-08-21-documentation-site-tag-release.zh.md index 0033492270..d5f7d64a73 100644 --- a/.agents/notes/implemented/process/2026-08-21-documentation-site-tag-release.zh.md +++ b/.agents/notes/archived/process/2026-08-21-documentation-site-tag-release.zh.md @@ -1,6 +1,7 @@ # Agent Note: 文档站从发布 tag 发布 Status: implemented +Archived: 2026-09-04 [English](2026-08-21-documentation-site-tag-release.md) | 中文 diff --git a/.agents/notes/archived/process/2026-08-23-client-cross-package-value-dependencies.i18n.yaml b/.agents/notes/archived/process/2026-08-23-client-cross-package-value-dependencies.i18n.yaml new file mode 100644 index 0000000000..8e44df9b11 --- /dev/null +++ b/.agents/notes/archived/process/2026-08-23-client-cross-package-value-dependencies.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/process/2026-08-23-client-cross-package-value-dependencies.md +2026-08-23-client-cross-package-value-dependencies.md: fcc773e274a164f9c1798f60131415bfab634504 +2026-08-23-client-cross-package-value-dependencies.zh.md: f23244bef8512c0ce296c89cc157902cb2f24a83 diff --git a/.agents/notes/implemented/process/2026-08-23-client-cross-package-value-dependencies.md b/.agents/notes/archived/process/2026-08-23-client-cross-package-value-dependencies.md similarity index 99% rename from .agents/notes/implemented/process/2026-08-23-client-cross-package-value-dependencies.md rename to .agents/notes/archived/process/2026-08-23-client-cross-package-value-dependencies.md index b4db6c75e2..fcc773e274 100644 --- a/.agents/notes/implemented/process/2026-08-23-client-cross-package-value-dependencies.md +++ b/.agents/notes/archived/process/2026-08-23-client-cross-package-value-dependencies.md @@ -1,6 +1,7 @@ # Agent Note: Classifying Client cross-package value dependencies Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-23-client-cross-package-value-dependencies.zh.md) diff --git a/.agents/notes/implemented/process/2026-08-23-client-cross-package-value-dependencies.zh.md b/.agents/notes/archived/process/2026-08-23-client-cross-package-value-dependencies.zh.md similarity index 99% rename from .agents/notes/implemented/process/2026-08-23-client-cross-package-value-dependencies.zh.md rename to .agents/notes/archived/process/2026-08-23-client-cross-package-value-dependencies.zh.md index 9894f74311..f23244bef8 100644 --- a/.agents/notes/implemented/process/2026-08-23-client-cross-package-value-dependencies.zh.md +++ b/.agents/notes/archived/process/2026-08-23-client-cross-package-value-dependencies.zh.md @@ -1,6 +1,7 @@ # Agent Note: Client 跨包值依赖分类 Status: implemented +Archived: 2026-09-04 [English](2026-08-23-client-cross-package-value-dependencies.md) | 中文 diff --git a/.agents/notes/archived/process/2026-08-27-explicit-workspace-path-aliases.i18n.yaml b/.agents/notes/archived/process/2026-08-27-explicit-workspace-path-aliases.i18n.yaml new file mode 100644 index 0000000000..b31043cfb0 --- /dev/null +++ b/.agents/notes/archived/process/2026-08-27-explicit-workspace-path-aliases.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/process/2026-08-27-explicit-workspace-path-aliases.md +2026-08-27-explicit-workspace-path-aliases.md: 7b31c4d5427ea309a33861f0f432f2f612d80b4e +2026-08-27-explicit-workspace-path-aliases.zh.md: dd82b3b0ea79d4a18565ec3a2d188dd5e8d950d4 diff --git a/.agents/notes/implemented/process/2026-08-27-explicit-workspace-path-aliases.md b/.agents/notes/archived/process/2026-08-27-explicit-workspace-path-aliases.md similarity index 99% rename from .agents/notes/implemented/process/2026-08-27-explicit-workspace-path-aliases.md rename to .agents/notes/archived/process/2026-08-27-explicit-workspace-path-aliases.md index 51d2dee791..7b31c4d542 100644 --- a/.agents/notes/implemented/process/2026-08-27-explicit-workspace-path-aliases.md +++ b/.agents/notes/archived/process/2026-08-27-explicit-workspace-path-aliases.md @@ -1,6 +1,7 @@ # Agent Note: Explicit workspace path aliases replace per-group wildcards Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-27-explicit-workspace-path-aliases.zh.md) diff --git a/.agents/notes/implemented/process/2026-08-27-explicit-workspace-path-aliases.zh.md b/.agents/notes/archived/process/2026-08-27-explicit-workspace-path-aliases.zh.md similarity index 99% rename from .agents/notes/implemented/process/2026-08-27-explicit-workspace-path-aliases.zh.md rename to .agents/notes/archived/process/2026-08-27-explicit-workspace-path-aliases.zh.md index 702d3d7a8c..dd82b3b0ea 100644 --- a/.agents/notes/implemented/process/2026-08-27-explicit-workspace-path-aliases.zh.md +++ b/.agents/notes/archived/process/2026-08-27-explicit-workspace-path-aliases.zh.md @@ -1,6 +1,7 @@ # Agent Note: Explicit workspace path aliases replace per-group wildcards Status: implemented +Archived: 2026-09-04 [English](2026-08-27-explicit-workspace-path-aliases.md) | 中文 diff --git a/.agents/notes/archived/process/2026-08-27-gate-runner-fail-fast.i18n.yaml b/.agents/notes/archived/process/2026-08-27-gate-runner-fail-fast.i18n.yaml new file mode 100644 index 0000000000..3eb1448c40 --- /dev/null +++ b/.agents/notes/archived/process/2026-08-27-gate-runner-fail-fast.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/process/2026-08-27-gate-runner-fail-fast.md +2026-08-27-gate-runner-fail-fast.md: 504929b256567f4cc71765c33eca55b925bd8f6f +2026-08-27-gate-runner-fail-fast.zh.md: 1d9f49ad8b35502a4e8cb8f9eb071106d99ca122 diff --git a/.agents/notes/implemented/process/2026-08-27-gate-runner-fail-fast.md b/.agents/notes/archived/process/2026-08-27-gate-runner-fail-fast.md similarity index 99% rename from .agents/notes/implemented/process/2026-08-27-gate-runner-fail-fast.md rename to .agents/notes/archived/process/2026-08-27-gate-runner-fail-fast.md index b11e3336aa..504929b256 100644 --- a/.agents/notes/implemented/process/2026-08-27-gate-runner-fail-fast.md +++ b/.agents/notes/archived/process/2026-08-27-gate-runner-fail-fast.md @@ -1,6 +1,7 @@ # Agent Note: Gate-runner fail-fast Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-27-gate-runner-fail-fast.zh.md) diff --git a/.agents/notes/implemented/process/2026-08-27-gate-runner-fail-fast.zh.md b/.agents/notes/archived/process/2026-08-27-gate-runner-fail-fast.zh.md similarity index 99% rename from .agents/notes/implemented/process/2026-08-27-gate-runner-fail-fast.zh.md rename to .agents/notes/archived/process/2026-08-27-gate-runner-fail-fast.zh.md index 93e1b03142..1d9f49ad8b 100644 --- a/.agents/notes/implemented/process/2026-08-27-gate-runner-fail-fast.zh.md +++ b/.agents/notes/archived/process/2026-08-27-gate-runner-fail-fast.zh.md @@ -1,6 +1,7 @@ # Agent Note: 门禁运行器快速失败 Status: implemented +Archived: 2026-09-04 [English](2026-08-27-gate-runner-fail-fast.md) | 中文 diff --git a/.agents/notes/archived/process/2026-08-28-test-temp-dir-self-cleanup.i18n.yaml b/.agents/notes/archived/process/2026-08-28-test-temp-dir-self-cleanup.i18n.yaml new file mode 100644 index 0000000000..b71ed15bd9 --- /dev/null +++ b/.agents/notes/archived/process/2026-08-28-test-temp-dir-self-cleanup.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/process/2026-08-28-test-temp-dir-self-cleanup.md +2026-08-28-test-temp-dir-self-cleanup.md: 901c697f39c39ecb94ddd3d8b35017ca89851d2d +2026-08-28-test-temp-dir-self-cleanup.zh.md: 3e9dd62e8a9f5286a7806bee1ef9213695fe9c85 diff --git a/.agents/notes/implemented/process/2026-08-28-test-temp-dir-self-cleanup.md b/.agents/notes/archived/process/2026-08-28-test-temp-dir-self-cleanup.md similarity index 99% rename from .agents/notes/implemented/process/2026-08-28-test-temp-dir-self-cleanup.md rename to .agents/notes/archived/process/2026-08-28-test-temp-dir-self-cleanup.md index 175fe82b0a..901c697f39 100644 --- a/.agents/notes/implemented/process/2026-08-28-test-temp-dir-self-cleanup.md +++ b/.agents/notes/archived/process/2026-08-28-test-temp-dir-self-cleanup.md @@ -1,6 +1,7 @@ # Agent Note: Unit tests remove the dsh-* temp dirs they create Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-28-test-temp-dir-self-cleanup.zh.md) diff --git a/.agents/notes/implemented/process/2026-08-28-test-temp-dir-self-cleanup.zh.md b/.agents/notes/archived/process/2026-08-28-test-temp-dir-self-cleanup.zh.md similarity index 99% rename from .agents/notes/implemented/process/2026-08-28-test-temp-dir-self-cleanup.zh.md rename to .agents/notes/archived/process/2026-08-28-test-temp-dir-self-cleanup.zh.md index e56ab31c3e..3e9dd62e8a 100644 --- a/.agents/notes/implemented/process/2026-08-28-test-temp-dir-self-cleanup.zh.md +++ b/.agents/notes/archived/process/2026-08-28-test-temp-dir-self-cleanup.zh.md @@ -1,6 +1,7 @@ # Agent Note: 单测删除自己创建的 dsh-* 临时目录 Status: implemented +Archived: 2026-09-04 [English](2026-08-28-test-temp-dir-self-cleanup.md) | 中文 diff --git a/.agents/notes/archived/process/2026-08-30-windows-refs-store-block-clone-install.i18n.yaml b/.agents/notes/archived/process/2026-08-30-windows-refs-store-block-clone-install.i18n.yaml new file mode 100644 index 0000000000..36f23852ff --- /dev/null +++ b/.agents/notes/archived/process/2026-08-30-windows-refs-store-block-clone-install.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/process/2026-08-30-windows-refs-store-block-clone-install.md +2026-08-30-windows-refs-store-block-clone-install.md: 9b08d4865dc46ebb0103095d6f030c7a3e4879fb +2026-08-30-windows-refs-store-block-clone-install.zh.md: 6569d624f3ec3f70e8d980a4a55e486110623d7c diff --git a/.agents/notes/implemented/process/2026-08-30-windows-refs-store-block-clone-install.md b/.agents/notes/archived/process/2026-08-30-windows-refs-store-block-clone-install.md similarity index 99% rename from .agents/notes/implemented/process/2026-08-30-windows-refs-store-block-clone-install.md rename to .agents/notes/archived/process/2026-08-30-windows-refs-store-block-clone-install.md index 086c00453f..9b08d4865d 100644 --- a/.agents/notes/implemented/process/2026-08-30-windows-refs-store-block-clone-install.md +++ b/.agents/notes/archived/process/2026-08-30-windows-refs-store-block-clone-install.md @@ -1,6 +1,7 @@ # Agent Note: Windows self-hosted ReFS store and block-clone installs Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-30-windows-refs-store-block-clone-install.zh.md) diff --git a/.agents/notes/implemented/process/2026-08-30-windows-refs-store-block-clone-install.zh.md b/.agents/notes/archived/process/2026-08-30-windows-refs-store-block-clone-install.zh.md similarity index 99% rename from .agents/notes/implemented/process/2026-08-30-windows-refs-store-block-clone-install.zh.md rename to .agents/notes/archived/process/2026-08-30-windows-refs-store-block-clone-install.zh.md index 6d1a6ad387..6569d624f3 100644 --- a/.agents/notes/implemented/process/2026-08-30-windows-refs-store-block-clone-install.zh.md +++ b/.agents/notes/archived/process/2026-08-30-windows-refs-store-block-clone-install.zh.md @@ -1,6 +1,7 @@ # Agent Note: Windows 自托管 ReFS store 与块克隆安装 Status: implemented +Archived: 2026-09-04 [English](2026-08-30-windows-refs-store-block-clone-install.md) | 中文 diff --git a/.agents/notes/archived/process/2026-08-31-serial-windows-notices-timeout-budget.i18n.yaml b/.agents/notes/archived/process/2026-08-31-serial-windows-notices-timeout-budget.i18n.yaml new file mode 100644 index 0000000000..5a840416c0 --- /dev/null +++ b/.agents/notes/archived/process/2026-08-31-serial-windows-notices-timeout-budget.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/process/2026-08-31-serial-windows-notices-timeout-budget.md +2026-08-31-serial-windows-notices-timeout-budget.md: 2f1a93d9c7cc703a93ea655d8ff538cb0742bcf3 +2026-08-31-serial-windows-notices-timeout-budget.zh.md: 1658cca2608a737cc85427e342a0fc76a9eaf72f diff --git a/.agents/notes/implemented/process/2026-08-31-serial-windows-notices-timeout-budget.md b/.agents/notes/archived/process/2026-08-31-serial-windows-notices-timeout-budget.md similarity index 99% rename from .agents/notes/implemented/process/2026-08-31-serial-windows-notices-timeout-budget.md rename to .agents/notes/archived/process/2026-08-31-serial-windows-notices-timeout-budget.md index 184004122b..2f1a93d9c7 100644 --- a/.agents/notes/implemented/process/2026-08-31-serial-windows-notices-timeout-budget.md +++ b/.agents/notes/archived/process/2026-08-31-serial-windows-notices-timeout-budget.md @@ -1,6 +1,7 @@ # Agent Note: serial-windows notices timeout budget and generator store-scan cost Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-31-serial-windows-notices-timeout-budget.zh.md) diff --git a/.agents/notes/implemented/process/2026-08-31-serial-windows-notices-timeout-budget.zh.md b/.agents/notes/archived/process/2026-08-31-serial-windows-notices-timeout-budget.zh.md similarity index 99% rename from .agents/notes/implemented/process/2026-08-31-serial-windows-notices-timeout-budget.zh.md rename to .agents/notes/archived/process/2026-08-31-serial-windows-notices-timeout-budget.zh.md index f6a68dabcf..1658cca260 100644 --- a/.agents/notes/implemented/process/2026-08-31-serial-windows-notices-timeout-budget.zh.md +++ b/.agents/notes/archived/process/2026-08-31-serial-windows-notices-timeout-budget.zh.md @@ -1,6 +1,7 @@ # Agent Note: serial-windows 的 notices 超时预算与 generator store 扫描成本 Status: implemented +Archived: 2026-09-04 [English](2026-08-31-serial-windows-notices-timeout-budget.md) | 中文 diff --git a/.agents/notes/archived/process/2026-08-31-windows-coverage-flaky-test-budgets.i18n.yaml b/.agents/notes/archived/process/2026-08-31-windows-coverage-flaky-test-budgets.i18n.yaml new file mode 100644 index 0000000000..e9f1903537 --- /dev/null +++ b/.agents/notes/archived/process/2026-08-31-windows-coverage-flaky-test-budgets.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/process/2026-08-31-windows-coverage-flaky-test-budgets.md +2026-08-31-windows-coverage-flaky-test-budgets.md: e026cb20c83648ad5d99070981a22f54c031f546 +2026-08-31-windows-coverage-flaky-test-budgets.zh.md: 7109756422738d994a4d733198404f4c3d065faf diff --git a/.agents/notes/implemented/process/2026-08-31-windows-coverage-flaky-test-budgets.md b/.agents/notes/archived/process/2026-08-31-windows-coverage-flaky-test-budgets.md similarity index 99% rename from .agents/notes/implemented/process/2026-08-31-windows-coverage-flaky-test-budgets.md rename to .agents/notes/archived/process/2026-08-31-windows-coverage-flaky-test-budgets.md index 475bd79adf..e026cb20c8 100644 --- a/.agents/notes/implemented/process/2026-08-31-windows-coverage-flaky-test-budgets.md +++ b/.agents/notes/archived/process/2026-08-31-windows-coverage-flaky-test-budgets.md @@ -1,6 +1,7 @@ # Agent Note: deterministic assertions and dispose budgets for the Windows coverage lane Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-31-windows-coverage-flaky-test-budgets.zh.md) diff --git a/.agents/notes/implemented/process/2026-08-31-windows-coverage-flaky-test-budgets.zh.md b/.agents/notes/archived/process/2026-08-31-windows-coverage-flaky-test-budgets.zh.md similarity index 99% rename from .agents/notes/implemented/process/2026-08-31-windows-coverage-flaky-test-budgets.zh.md rename to .agents/notes/archived/process/2026-08-31-windows-coverage-flaky-test-budgets.zh.md index cd01331369..7109756422 100644 --- a/.agents/notes/implemented/process/2026-08-31-windows-coverage-flaky-test-budgets.zh.md +++ b/.agents/notes/archived/process/2026-08-31-windows-coverage-flaky-test-budgets.zh.md @@ -1,6 +1,7 @@ # Agent Note: Windows coverage lane 的确定性断言与 dispose 预算 Status: implemented +Archived: 2026-09-04 [English](2026-08-31-windows-coverage-flaky-test-budgets.md) | 中文 diff --git a/.agents/notes/archived/process/2026-09-03-workspace-version-coherence-gate.i18n.yaml b/.agents/notes/archived/process/2026-09-03-workspace-version-coherence-gate.i18n.yaml new file mode 100644 index 0000000000..63a8005833 --- /dev/null +++ b/.agents/notes/archived/process/2026-09-03-workspace-version-coherence-gate.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/process/2026-09-03-workspace-version-coherence-gate.md +2026-09-03-workspace-version-coherence-gate.md: 65c8a2e6c1eabd14d67a8dff10fc90c38d07eb64 +2026-09-03-workspace-version-coherence-gate.zh.md: 9c309e673945cbc6e9a3c73a6a48d9610ae868be diff --git a/.agents/notes/implemented/process/2026-09-03-workspace-version-coherence-gate.md b/.agents/notes/archived/process/2026-09-03-workspace-version-coherence-gate.md similarity index 99% rename from .agents/notes/implemented/process/2026-09-03-workspace-version-coherence-gate.md rename to .agents/notes/archived/process/2026-09-03-workspace-version-coherence-gate.md index c1647631ca..65c8a2e6c1 100644 --- a/.agents/notes/implemented/process/2026-09-03-workspace-version-coherence-gate.md +++ b/.agents/notes/archived/process/2026-09-03-workspace-version-coherence-gate.md @@ -1,6 +1,7 @@ # Agent Note: Workspace version coherence is a static gate Status: implemented +Archived: 2026-09-04 English | [中文](2026-09-03-workspace-version-coherence-gate.zh.md) diff --git a/.agents/notes/implemented/process/2026-09-03-workspace-version-coherence-gate.zh.md b/.agents/notes/archived/process/2026-09-03-workspace-version-coherence-gate.zh.md similarity index 99% rename from .agents/notes/implemented/process/2026-09-03-workspace-version-coherence-gate.zh.md rename to .agents/notes/archived/process/2026-09-03-workspace-version-coherence-gate.zh.md index 13bb619ccd..9c309e6739 100644 --- a/.agents/notes/implemented/process/2026-09-03-workspace-version-coherence-gate.zh.md +++ b/.agents/notes/archived/process/2026-09-03-workspace-version-coherence-gate.zh.md @@ -1,6 +1,7 @@ # Agent Note: 工作区版本一致性是静态门禁 Status: implemented +Archived: 2026-09-04 [English](2026-09-03-workspace-version-coherence-gate.md) | 中文 diff --git a/.agents/notes/archived/simplification/2026-06-19-drop-mutable-session-summary.i18n.yaml b/.agents/notes/archived/simplification/2026-06-19-drop-mutable-session-summary.i18n.yaml new file mode 100644 index 0000000000..b6a6587cc9 --- /dev/null +++ b/.agents/notes/archived/simplification/2026-06-19-drop-mutable-session-summary.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/simplification/2026-06-19-drop-mutable-session-summary.md +2026-06-19-drop-mutable-session-summary.md: a524eec83da76bdec6971cda3c793ca6b27031d3 +2026-06-19-drop-mutable-session-summary.zh.md: 50e350251859f0b1620c2cbc203723d5f670d58a diff --git a/.agents/notes/implemented/simplification/2026-06-19-drop-mutable-session-summary.md b/.agents/notes/archived/simplification/2026-06-19-drop-mutable-session-summary.md similarity index 99% rename from .agents/notes/implemented/simplification/2026-06-19-drop-mutable-session-summary.md rename to .agents/notes/archived/simplification/2026-06-19-drop-mutable-session-summary.md index b93566914a..a524eec83d 100644 --- a/.agents/notes/implemented/simplification/2026-06-19-drop-mutable-session-summary.md +++ b/.agents/notes/archived/simplification/2026-06-19-drop-mutable-session-summary.md @@ -1,6 +1,7 @@ # Agent Note: Drop the mutable session summary Status: implemented +Archived: 2026-09-04 English | [中文](2026-06-19-drop-mutable-session-summary.zh.md) diff --git a/.agents/notes/implemented/simplification/2026-06-19-drop-mutable-session-summary.zh.md b/.agents/notes/archived/simplification/2026-06-19-drop-mutable-session-summary.zh.md similarity index 99% rename from .agents/notes/implemented/simplification/2026-06-19-drop-mutable-session-summary.zh.md rename to .agents/notes/archived/simplification/2026-06-19-drop-mutable-session-summary.zh.md index 9a36ba6f20..50e3502518 100644 --- a/.agents/notes/implemented/simplification/2026-06-19-drop-mutable-session-summary.zh.md +++ b/.agents/notes/archived/simplification/2026-06-19-drop-mutable-session-summary.zh.md @@ -1,6 +1,7 @@ # Agent Note: 移除可变的会话摘要 Status: implemented +Archived: 2026-09-04 [English](2026-06-19-drop-mutable-session-summary.md) | 中文 diff --git a/.agents/notes/archived/simplification/2026-06-20-public-agent-stop-api.i18n.yaml b/.agents/notes/archived/simplification/2026-06-20-public-agent-stop-api.i18n.yaml new file mode 100644 index 0000000000..1281b4c271 --- /dev/null +++ b/.agents/notes/archived/simplification/2026-06-20-public-agent-stop-api.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/simplification/2026-06-20-public-agent-stop-api.md +2026-06-20-public-agent-stop-api.md: 07666e354cfc316e45ab9fd019929b92bf57f608 +2026-06-20-public-agent-stop-api.zh.md: a80ae4ae0bf5e6f9aa78ce2b4ccd87b995adec27 diff --git a/.agents/notes/implemented/simplification/2026-06-20-public-agent-stop-api.md b/.agents/notes/archived/simplification/2026-06-20-public-agent-stop-api.md similarity index 99% rename from .agents/notes/implemented/simplification/2026-06-20-public-agent-stop-api.md rename to .agents/notes/archived/simplification/2026-06-20-public-agent-stop-api.md index bb4a24e706..07666e354c 100644 --- a/.agents/notes/implemented/simplification/2026-06-20-public-agent-stop-api.md +++ b/.agents/notes/archived/simplification/2026-06-20-public-agent-stop-api.md @@ -1,6 +1,7 @@ # Agent Note: Keep one public stop primitive Status: implemented +Archived: 2026-09-04 English | [中文](2026-06-20-public-agent-stop-api.zh.md) diff --git a/.agents/notes/implemented/simplification/2026-06-20-public-agent-stop-api.zh.md b/.agents/notes/archived/simplification/2026-06-20-public-agent-stop-api.zh.md similarity index 99% rename from .agents/notes/implemented/simplification/2026-06-20-public-agent-stop-api.zh.md rename to .agents/notes/archived/simplification/2026-06-20-public-agent-stop-api.zh.md index 7673b680c1..a80ae4ae0b 100644 --- a/.agents/notes/implemented/simplification/2026-06-20-public-agent-stop-api.zh.md +++ b/.agents/notes/archived/simplification/2026-06-20-public-agent-stop-api.zh.md @@ -1,6 +1,7 @@ # Agent Note: 保留单一公开停止原语 Status: implemented +Archived: 2026-09-04 [English](2026-06-20-public-agent-stop-api.md) | 中文 diff --git a/.agents/notes/archived/simplification/2026-06-20-remove-agent-boundary-mirror-events.i18n.yaml b/.agents/notes/archived/simplification/2026-06-20-remove-agent-boundary-mirror-events.i18n.yaml new file mode 100644 index 0000000000..b2072faa55 --- /dev/null +++ b/.agents/notes/archived/simplification/2026-06-20-remove-agent-boundary-mirror-events.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/simplification/2026-06-20-remove-agent-boundary-mirror-events.md +2026-06-20-remove-agent-boundary-mirror-events.md: 3d59cef0d6a2473adc170f15c480ed345c5db08c +2026-06-20-remove-agent-boundary-mirror-events.zh.md: fe9fbda591053ea792d502d3a5403eecf9c5ae51 diff --git a/.agents/notes/implemented/simplification/2026-06-20-remove-agent-boundary-mirror-events.md b/.agents/notes/archived/simplification/2026-06-20-remove-agent-boundary-mirror-events.md similarity index 99% rename from .agents/notes/implemented/simplification/2026-06-20-remove-agent-boundary-mirror-events.md rename to .agents/notes/archived/simplification/2026-06-20-remove-agent-boundary-mirror-events.md index cb3cb83e7e..3d59cef0d6 100644 --- a/.agents/notes/implemented/simplification/2026-06-20-remove-agent-boundary-mirror-events.md +++ b/.agents/notes/archived/simplification/2026-06-20-remove-agent-boundary-mirror-events.md @@ -1,6 +1,7 @@ # Agent Note: Stop mirroring durable boundaries as agent events Status: implemented +Archived: 2026-09-04 English | [中文](2026-06-20-remove-agent-boundary-mirror-events.zh.md) diff --git a/.agents/notes/implemented/simplification/2026-06-20-remove-agent-boundary-mirror-events.zh.md b/.agents/notes/archived/simplification/2026-06-20-remove-agent-boundary-mirror-events.zh.md similarity index 99% rename from .agents/notes/implemented/simplification/2026-06-20-remove-agent-boundary-mirror-events.zh.md rename to .agents/notes/archived/simplification/2026-06-20-remove-agent-boundary-mirror-events.zh.md index 85572deb66..fe9fbda591 100644 --- a/.agents/notes/implemented/simplification/2026-06-20-remove-agent-boundary-mirror-events.zh.md +++ b/.agents/notes/archived/simplification/2026-06-20-remove-agent-boundary-mirror-events.zh.md @@ -1,6 +1,7 @@ # Agent Note: 停止将持久化边界镜像为 agent 事件 Status: implemented +Archived: 2026-09-04 [English](2026-06-20-remove-agent-boundary-mirror-events.md) | 中文 diff --git a/.agents/notes/archived/simplification/2026-07-04-tighten-hook-protocol-contract.i18n.yaml b/.agents/notes/archived/simplification/2026-07-04-tighten-hook-protocol-contract.i18n.yaml new file mode 100644 index 0000000000..f47554e9d4 --- /dev/null +++ b/.agents/notes/archived/simplification/2026-07-04-tighten-hook-protocol-contract.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/simplification/2026-07-04-tighten-hook-protocol-contract.md +2026-07-04-tighten-hook-protocol-contract.md: 59697f102b87dbd92ff2b58da4ec1d8d923d7795 +2026-07-04-tighten-hook-protocol-contract.zh.md: a68d2ff9c40d189bcc493aee0941e7ad5b079092 diff --git a/.agents/notes/implemented/simplification/2026-07-04-tighten-hook-protocol-contract.md b/.agents/notes/archived/simplification/2026-07-04-tighten-hook-protocol-contract.md similarity index 99% rename from .agents/notes/implemented/simplification/2026-07-04-tighten-hook-protocol-contract.md rename to .agents/notes/archived/simplification/2026-07-04-tighten-hook-protocol-contract.md index 70cf7a15fe..59697f102b 100644 --- a/.agents/notes/implemented/simplification/2026-07-04-tighten-hook-protocol-contract.md +++ b/.agents/notes/archived/simplification/2026-07-04-tighten-hook-protocol-contract.md @@ -1,6 +1,7 @@ # Agent Note: Tighten the hook-protocol contract — dialect, discarded fields, double defaults, and lib-owned `hook/result` semantics Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-04-tighten-hook-protocol-contract.zh.md) diff --git a/.agents/notes/implemented/simplification/2026-07-04-tighten-hook-protocol-contract.zh.md b/.agents/notes/archived/simplification/2026-07-04-tighten-hook-protocol-contract.zh.md similarity index 99% rename from .agents/notes/implemented/simplification/2026-07-04-tighten-hook-protocol-contract.zh.md rename to .agents/notes/archived/simplification/2026-07-04-tighten-hook-protocol-contract.zh.md index 3be16b4b8c..a68d2ff9c4 100644 --- a/.agents/notes/implemented/simplification/2026-07-04-tighten-hook-protocol-contract.zh.md +++ b/.agents/notes/archived/simplification/2026-07-04-tighten-hook-protocol-contract.zh.md @@ -1,6 +1,7 @@ # Agent Note: 收紧 hook-protocol 约定——dialect、被丢弃的字段、双重默认值与 lib 拥有的 `hook/result` 语义 Status: implemented +Archived: 2026-09-04 [English](2026-07-04-tighten-hook-protocol-contract.md) | 中文 diff --git a/.agents/notes/archived/simplification/2026-07-12-simplify-session-log-representation.i18n.yaml b/.agents/notes/archived/simplification/2026-07-12-simplify-session-log-representation.i18n.yaml new file mode 100644 index 0000000000..ccb74994ab --- /dev/null +++ b/.agents/notes/archived/simplification/2026-07-12-simplify-session-log-representation.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/simplification/2026-07-12-simplify-session-log-representation.md +2026-07-12-simplify-session-log-representation.md: ff01975bc31436936358c55db6d63ef5259abe0c +2026-07-12-simplify-session-log-representation.zh.md: 429ee3c0eaf236c43e786975aa2a257f7c4927dd diff --git a/.agents/notes/implemented/simplification/2026-07-12-simplify-session-log-representation.md b/.agents/notes/archived/simplification/2026-07-12-simplify-session-log-representation.md similarity index 99% rename from .agents/notes/implemented/simplification/2026-07-12-simplify-session-log-representation.md rename to .agents/notes/archived/simplification/2026-07-12-simplify-session-log-representation.md index 9c8383d72b..ff01975bc3 100644 --- a/.agents/notes/implemented/simplification/2026-07-12-simplify-session-log-representation.md +++ b/.agents/notes/archived/simplification/2026-07-12-simplify-session-log-representation.md @@ -1,6 +1,7 @@ # Agent Note: Simplify session-log representation Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-12-simplify-session-log-representation.zh.md) diff --git a/.agents/notes/implemented/simplification/2026-07-12-simplify-session-log-representation.zh.md b/.agents/notes/archived/simplification/2026-07-12-simplify-session-log-representation.zh.md similarity index 99% rename from .agents/notes/implemented/simplification/2026-07-12-simplify-session-log-representation.zh.md rename to .agents/notes/archived/simplification/2026-07-12-simplify-session-log-representation.zh.md index c77f97c3a5..429ee3c0ea 100644 --- a/.agents/notes/implemented/simplification/2026-07-12-simplify-session-log-representation.zh.md +++ b/.agents/notes/archived/simplification/2026-07-12-simplify-session-log-representation.zh.md @@ -1,6 +1,7 @@ # Agent Note: 简化会话日志表示 Status: implemented +Archived: 2026-09-04 [English](2026-07-12-simplify-session-log-representation.md) | 中文 diff --git a/.agents/notes/archived/simplification/2026-07-20-remove-stdio-and-echo-agents.i18n.yaml b/.agents/notes/archived/simplification/2026-07-20-remove-stdio-and-echo-agents.i18n.yaml new file mode 100644 index 0000000000..50922ba931 --- /dev/null +++ b/.agents/notes/archived/simplification/2026-07-20-remove-stdio-and-echo-agents.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/simplification/2026-07-20-remove-stdio-and-echo-agents.md +2026-07-20-remove-stdio-and-echo-agents.md: bf2177e5622d28931bb769fea69ec8028d8b7f40 +2026-07-20-remove-stdio-and-echo-agents.zh.md: 2c763ebb71239d10b9d7aab1c4bca643a72e33c8 diff --git a/.agents/notes/implemented/simplification/2026-07-20-remove-stdio-and-echo-agents.md b/.agents/notes/archived/simplification/2026-07-20-remove-stdio-and-echo-agents.md similarity index 99% rename from .agents/notes/implemented/simplification/2026-07-20-remove-stdio-and-echo-agents.md rename to .agents/notes/archived/simplification/2026-07-20-remove-stdio-and-echo-agents.md index cb0f53737a..bf2177e562 100644 --- a/.agents/notes/implemented/simplification/2026-07-20-remove-stdio-and-echo-agents.md +++ b/.agents/notes/archived/simplification/2026-07-20-remove-stdio-and-echo-agents.md @@ -1,6 +1,7 @@ # Agent Note: Remove the stdio and Echo agents Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-20-remove-stdio-and-echo-agents.zh.md) diff --git a/.agents/notes/implemented/simplification/2026-07-20-remove-stdio-and-echo-agents.zh.md b/.agents/notes/archived/simplification/2026-07-20-remove-stdio-and-echo-agents.zh.md similarity index 99% rename from .agents/notes/implemented/simplification/2026-07-20-remove-stdio-and-echo-agents.zh.md rename to .agents/notes/archived/simplification/2026-07-20-remove-stdio-and-echo-agents.zh.md index f7374fa6fb..2c763ebb71 100644 --- a/.agents/notes/implemented/simplification/2026-07-20-remove-stdio-and-echo-agents.zh.md +++ b/.agents/notes/archived/simplification/2026-07-20-remove-stdio-and-echo-agents.zh.md @@ -1,6 +1,7 @@ # Agent Note: 移除 stdio 和 Echo agent Status: implemented +Archived: 2026-09-04 [English](2026-07-20-remove-stdio-and-echo-agents.md) | 中文 diff --git a/.agents/notes/archived/simplification/2026-07-23-collapse-persistence-flush-state.i18n.yaml b/.agents/notes/archived/simplification/2026-07-23-collapse-persistence-flush-state.i18n.yaml new file mode 100644 index 0000000000..f1130e015c --- /dev/null +++ b/.agents/notes/archived/simplification/2026-07-23-collapse-persistence-flush-state.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/simplification/2026-07-23-collapse-persistence-flush-state.md +2026-07-23-collapse-persistence-flush-state.md: 95b007d5c23fd99a144333f7b9386134868cc5bc +2026-07-23-collapse-persistence-flush-state.zh.md: 8369887ae1ebf2cc8196fe8f665c7dc11282487d diff --git a/.agents/notes/implemented/simplification/2026-07-23-collapse-persistence-flush-state.md b/.agents/notes/archived/simplification/2026-07-23-collapse-persistence-flush-state.md similarity index 99% rename from .agents/notes/implemented/simplification/2026-07-23-collapse-persistence-flush-state.md rename to .agents/notes/archived/simplification/2026-07-23-collapse-persistence-flush-state.md index d64be38a58..95b007d5c2 100644 --- a/.agents/notes/implemented/simplification/2026-07-23-collapse-persistence-flush-state.md +++ b/.agents/notes/archived/simplification/2026-07-23-collapse-persistence-flush-state.md @@ -1,6 +1,7 @@ # Agent Note: Collapse live persistence into one flush controller Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-23-collapse-persistence-flush-state.zh.md) diff --git a/.agents/notes/implemented/simplification/2026-07-23-collapse-persistence-flush-state.zh.md b/.agents/notes/archived/simplification/2026-07-23-collapse-persistence-flush-state.zh.md similarity index 99% rename from .agents/notes/implemented/simplification/2026-07-23-collapse-persistence-flush-state.zh.md rename to .agents/notes/archived/simplification/2026-07-23-collapse-persistence-flush-state.zh.md index 9114640f6d..8369887ae1 100644 --- a/.agents/notes/implemented/simplification/2026-07-23-collapse-persistence-flush-state.zh.md +++ b/.agents/notes/archived/simplification/2026-07-23-collapse-persistence-flush-state.zh.md @@ -1,6 +1,7 @@ # Agent Note: 将实时持久化归并到单个刷写控制器 Status: implemented +Archived: 2026-09-04 [English](2026-07-23-collapse-persistence-flush-state.md) | 中文 diff --git a/.agents/notes/archived/simplification/2026-07-26-merge-subagent-control-service.i18n.yaml b/.agents/notes/archived/simplification/2026-07-26-merge-subagent-control-service.i18n.yaml new file mode 100644 index 0000000000..4af95c6d50 --- /dev/null +++ b/.agents/notes/archived/simplification/2026-07-26-merge-subagent-control-service.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/simplification/2026-07-26-merge-subagent-control-service.md +2026-07-26-merge-subagent-control-service.md: 3ab9d7d1468ca8e58f8bcd23cdb824e4588122df +2026-07-26-merge-subagent-control-service.zh.md: 77e7306cd721168e4b4c6a2dd05899b2f5c85a34 diff --git a/.agents/notes/implemented/simplification/2026-07-26-merge-subagent-control-service.md b/.agents/notes/archived/simplification/2026-07-26-merge-subagent-control-service.md similarity index 99% rename from .agents/notes/implemented/simplification/2026-07-26-merge-subagent-control-service.md rename to .agents/notes/archived/simplification/2026-07-26-merge-subagent-control-service.md index 1d8aadc6a9..3ab9d7d146 100644 --- a/.agents/notes/implemented/simplification/2026-07-26-merge-subagent-control-service.md +++ b/.agents/notes/archived/simplification/2026-07-26-merge-subagent-control-service.md @@ -1,6 +1,7 @@ # Agent Note: Merge subagent control into the subagent service Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-26-merge-subagent-control-service.zh.md) diff --git a/.agents/notes/implemented/simplification/2026-07-26-merge-subagent-control-service.zh.md b/.agents/notes/archived/simplification/2026-07-26-merge-subagent-control-service.zh.md similarity index 99% rename from .agents/notes/implemented/simplification/2026-07-26-merge-subagent-control-service.zh.md rename to .agents/notes/archived/simplification/2026-07-26-merge-subagent-control-service.zh.md index 2843a913a1..77e7306cd7 100644 --- a/.agents/notes/implemented/simplification/2026-07-26-merge-subagent-control-service.zh.md +++ b/.agents/notes/archived/simplification/2026-07-26-merge-subagent-control-service.zh.md @@ -1,6 +1,7 @@ # Agent Note: 将 subagent 控制合并到 subagent 服务 Status: implemented +Archived: 2026-09-04 [English](2026-07-26-merge-subagent-control-service.md) | 中文 diff --git a/.agents/notes/implemented/simplification/2026-07-27-intent-named-subagent-continuation-operations.i18n.yaml b/.agents/notes/archived/simplification/2026-07-27-intent-named-subagent-continuation-operations.i18n.yaml similarity index 51% rename from .agents/notes/implemented/simplification/2026-07-27-intent-named-subagent-continuation-operations.i18n.yaml rename to .agents/notes/archived/simplification/2026-07-27-intent-named-subagent-continuation-operations.i18n.yaml index e41a28a586..b11c3e26c0 100644 --- a/.agents/notes/implemented/simplification/2026-07-27-intent-named-subagent-continuation-operations.i18n.yaml +++ b/.agents/notes/archived/simplification/2026-07-27-intent-named-subagent-continuation-operations.i18n.yaml @@ -1,6 +1,6 @@ # Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/simplification/2026-07-27-intent-named-subagent-continuation-operations.md -2026-07-27-intent-named-subagent-continuation-operations.md: cb0827e63ed6bf88f7f661cf071d15aaa2278bde -2026-07-27-intent-named-subagent-continuation-operations.zh.md: fba07eac66af8e27d1f548a68f2ac060d39d10e7 +# pnpm run verify-translation-pairing --write .agents/notes/archived/simplification/2026-07-27-intent-named-subagent-continuation-operations.md +2026-07-27-intent-named-subagent-continuation-operations.md: 1d8429b4583f0ca30c8c6c75fe3cdfd056cc12b9 +2026-07-27-intent-named-subagent-continuation-operations.zh.md: 5fadabac3bd73df0b58aa7fb7da77c4bd910fe7c diff --git a/.agents/notes/implemented/simplification/2026-07-27-intent-named-subagent-continuation-operations.md b/.agents/notes/archived/simplification/2026-07-27-intent-named-subagent-continuation-operations.md similarity index 99% rename from .agents/notes/implemented/simplification/2026-07-27-intent-named-subagent-continuation-operations.md rename to .agents/notes/archived/simplification/2026-07-27-intent-named-subagent-continuation-operations.md index cb0827e63e..1d8429b458 100644 --- a/.agents/notes/implemented/simplification/2026-07-27-intent-named-subagent-continuation-operations.md +++ b/.agents/notes/archived/simplification/2026-07-27-intent-named-subagent-continuation-operations.md @@ -1,6 +1,7 @@ # Agent Note: Intent-named subagent continuation operations Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-27-intent-named-subagent-continuation-operations.zh.md) diff --git a/.agents/notes/implemented/simplification/2026-07-27-intent-named-subagent-continuation-operations.zh.md b/.agents/notes/archived/simplification/2026-07-27-intent-named-subagent-continuation-operations.zh.md similarity index 99% rename from .agents/notes/implemented/simplification/2026-07-27-intent-named-subagent-continuation-operations.zh.md rename to .agents/notes/archived/simplification/2026-07-27-intent-named-subagent-continuation-operations.zh.md index fba07eac66..5fadabac3b 100644 --- a/.agents/notes/implemented/simplification/2026-07-27-intent-named-subagent-continuation-operations.zh.md +++ b/.agents/notes/archived/simplification/2026-07-27-intent-named-subagent-continuation-operations.zh.md @@ -1,6 +1,7 @@ # Agent Note: 按意图命名的 subagent 继续执行操作 Status: implemented +Archived: 2026-09-04 [English](2026-07-27-intent-named-subagent-continuation-operations.md) | 中文 diff --git a/.agents/notes/archived/simplification/2026-07-28-local-json-tree-renderer.i18n.yaml b/.agents/notes/archived/simplification/2026-07-28-local-json-tree-renderer.i18n.yaml new file mode 100644 index 0000000000..b4bf3f4ca2 --- /dev/null +++ b/.agents/notes/archived/simplification/2026-07-28-local-json-tree-renderer.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/simplification/2026-07-28-local-json-tree-renderer.md +2026-07-28-local-json-tree-renderer.md: cce4d8aba6f9fee2eb512a8fc4d78d947e41c83d +2026-07-28-local-json-tree-renderer.zh.md: 25a3a5747421e04c2772ea03cd6a6cd4a503bd91 diff --git a/.agents/notes/implemented/simplification/2026-07-28-local-json-tree-renderer.md b/.agents/notes/archived/simplification/2026-07-28-local-json-tree-renderer.md similarity index 99% rename from .agents/notes/implemented/simplification/2026-07-28-local-json-tree-renderer.md rename to .agents/notes/archived/simplification/2026-07-28-local-json-tree-renderer.md index 5e8e6d6968..cce4d8aba6 100644 --- a/.agents/notes/implemented/simplification/2026-07-28-local-json-tree-renderer.md +++ b/.agents/notes/archived/simplification/2026-07-28-local-json-tree-renderer.md @@ -1,6 +1,7 @@ # Agent Note: Local JSON tree renderer Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-28-local-json-tree-renderer.zh.md) diff --git a/.agents/notes/implemented/simplification/2026-07-28-local-json-tree-renderer.zh.md b/.agents/notes/archived/simplification/2026-07-28-local-json-tree-renderer.zh.md similarity index 99% rename from .agents/notes/implemented/simplification/2026-07-28-local-json-tree-renderer.zh.md rename to .agents/notes/archived/simplification/2026-07-28-local-json-tree-renderer.zh.md index 1c83ac319f..25a3a57474 100644 --- a/.agents/notes/implemented/simplification/2026-07-28-local-json-tree-renderer.zh.md +++ b/.agents/notes/archived/simplification/2026-07-28-local-json-tree-renderer.zh.md @@ -1,6 +1,7 @@ # Agent Note: 本地 JSON 树渲染器 Status: implemented +Archived: 2026-09-04 [English](2026-07-28-local-json-tree-renderer.md) | 中文 diff --git a/.agents/notes/archived/simplification/2026-07-29-shared-base-config-overlays.i18n.yaml b/.agents/notes/archived/simplification/2026-07-29-shared-base-config-overlays.i18n.yaml new file mode 100644 index 0000000000..92192c4dd7 --- /dev/null +++ b/.agents/notes/archived/simplification/2026-07-29-shared-base-config-overlays.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/simplification/2026-07-29-shared-base-config-overlays.md +2026-07-29-shared-base-config-overlays.md: bffd001203c67ab93ed131643501bf7a7194a29d +2026-07-29-shared-base-config-overlays.zh.md: 178f618b75d6119076099c6140ca4de8895cae01 diff --git a/.agents/notes/implemented/simplification/2026-07-29-shared-base-config-overlays.md b/.agents/notes/archived/simplification/2026-07-29-shared-base-config-overlays.md similarity index 99% rename from .agents/notes/implemented/simplification/2026-07-29-shared-base-config-overlays.md rename to .agents/notes/archived/simplification/2026-07-29-shared-base-config-overlays.md index de9dcafeab..bffd001203 100644 --- a/.agents/notes/implemented/simplification/2026-07-29-shared-base-config-overlays.md +++ b/.agents/notes/archived/simplification/2026-07-29-shared-base-config-overlays.md @@ -1,6 +1,7 @@ # Agent Note: One shared base config with per-surface overlays Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-29-shared-base-config-overlays.zh.md) diff --git a/.agents/notes/implemented/simplification/2026-07-29-shared-base-config-overlays.zh.md b/.agents/notes/archived/simplification/2026-07-29-shared-base-config-overlays.zh.md similarity index 99% rename from .agents/notes/implemented/simplification/2026-07-29-shared-base-config-overlays.zh.md rename to .agents/notes/archived/simplification/2026-07-29-shared-base-config-overlays.zh.md index 0e5b76df33..178f618b75 100644 --- a/.agents/notes/implemented/simplification/2026-07-29-shared-base-config-overlays.zh.md +++ b/.agents/notes/archived/simplification/2026-07-29-shared-base-config-overlays.zh.md @@ -1,6 +1,7 @@ # Agent Note: 一份共享 base 配置加各 surface 的 overlay Status: implemented +Archived: 2026-09-04 [English](2026-07-29-shared-base-config-overlays.md) | 中文 diff --git a/.agents/notes/archived/simplification/2026-07-29-simplify-web-image-input-v1.i18n.yaml b/.agents/notes/archived/simplification/2026-07-29-simplify-web-image-input-v1.i18n.yaml new file mode 100644 index 0000000000..e11a896224 --- /dev/null +++ b/.agents/notes/archived/simplification/2026-07-29-simplify-web-image-input-v1.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/simplification/2026-07-29-simplify-web-image-input-v1.md +2026-07-29-simplify-web-image-input-v1.md: 64433129fe4a97e430cbcbecc89bcad247521a80 +2026-07-29-simplify-web-image-input-v1.zh.md: cff54434b504ffb29306625c566834866578d1d5 diff --git a/.agents/notes/implemented/simplification/2026-07-29-simplify-web-image-input-v1.md b/.agents/notes/archived/simplification/2026-07-29-simplify-web-image-input-v1.md similarity index 99% rename from .agents/notes/implemented/simplification/2026-07-29-simplify-web-image-input-v1.md rename to .agents/notes/archived/simplification/2026-07-29-simplify-web-image-input-v1.md index f13abfda3b..64433129fe 100644 --- a/.agents/notes/implemented/simplification/2026-07-29-simplify-web-image-input-v1.md +++ b/.agents/notes/archived/simplification/2026-07-29-simplify-web-image-input-v1.md @@ -1,6 +1,7 @@ # Agent Note: Simplify Web image input version one Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-29-simplify-web-image-input-v1.zh.md) diff --git a/.agents/notes/implemented/simplification/2026-07-29-simplify-web-image-input-v1.zh.md b/.agents/notes/archived/simplification/2026-07-29-simplify-web-image-input-v1.zh.md similarity index 99% rename from .agents/notes/implemented/simplification/2026-07-29-simplify-web-image-input-v1.zh.md rename to .agents/notes/archived/simplification/2026-07-29-simplify-web-image-input-v1.zh.md index c92974efe5..cff54434b5 100644 --- a/.agents/notes/implemented/simplification/2026-07-29-simplify-web-image-input-v1.zh.md +++ b/.agents/notes/archived/simplification/2026-07-29-simplify-web-image-input-v1.zh.md @@ -1,6 +1,7 @@ # Agent Note: 简化 Web 图片输入第一版 Status: implemented +Archived: 2026-09-04 [English](2026-07-29-simplify-web-image-input-v1.md) | 中文 diff --git a/.agents/notes/archived/simplification/2026-07-30-private-agent-send.i18n.yaml b/.agents/notes/archived/simplification/2026-07-30-private-agent-send.i18n.yaml new file mode 100644 index 0000000000..2ff2c66702 --- /dev/null +++ b/.agents/notes/archived/simplification/2026-07-30-private-agent-send.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/simplification/2026-07-30-private-agent-send.md +2026-07-30-private-agent-send.md: 16c6f43dccc8b9e661b5fb9f43d2754a0c4fdfe5 +2026-07-30-private-agent-send.zh.md: 16c4ae70cf6361c752699cc1df46e15db96b31eb diff --git a/.agents/notes/implemented/simplification/2026-07-30-private-agent-send.md b/.agents/notes/archived/simplification/2026-07-30-private-agent-send.md similarity index 99% rename from .agents/notes/implemented/simplification/2026-07-30-private-agent-send.md rename to .agents/notes/archived/simplification/2026-07-30-private-agent-send.md index 43353c309f..16c6f43dcc 100644 --- a/.agents/notes/implemented/simplification/2026-07-30-private-agent-send.md +++ b/.agents/notes/archived/simplification/2026-07-30-private-agent-send.md @@ -1,6 +1,7 @@ # Agent Note: Keep agent routing private Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-30-private-agent-send.zh.md) diff --git a/.agents/notes/implemented/simplification/2026-07-30-private-agent-send.zh.md b/.agents/notes/archived/simplification/2026-07-30-private-agent-send.zh.md similarity index 98% rename from .agents/notes/implemented/simplification/2026-07-30-private-agent-send.zh.md rename to .agents/notes/archived/simplification/2026-07-30-private-agent-send.zh.md index 97fe89610d..16c4ae70cf 100644 --- a/.agents/notes/implemented/simplification/2026-07-30-private-agent-send.zh.md +++ b/.agents/notes/archived/simplification/2026-07-30-private-agent-send.zh.md @@ -1,6 +1,7 @@ # Agent Note: 将 agent 路由保留为私有实现 Status: implemented +Archived: 2026-09-04 [English](2026-07-30-private-agent-send.md) | 中文 diff --git a/.agents/notes/archived/simplification/2026-07-31-capability-neutral-sandbox-policy-context.i18n.yaml b/.agents/notes/archived/simplification/2026-07-31-capability-neutral-sandbox-policy-context.i18n.yaml new file mode 100644 index 0000000000..a860397c4d --- /dev/null +++ b/.agents/notes/archived/simplification/2026-07-31-capability-neutral-sandbox-policy-context.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/simplification/2026-07-31-capability-neutral-sandbox-policy-context.md +2026-07-31-capability-neutral-sandbox-policy-context.md: 0cf2f451616fa23e6c64b4e695bc394c32421323 +2026-07-31-capability-neutral-sandbox-policy-context.zh.md: 2a3b0bda81e3286c594b2945ef6a7c3ac36dac63 diff --git a/.agents/notes/implemented/simplification/2026-07-31-capability-neutral-sandbox-policy-context.md b/.agents/notes/archived/simplification/2026-07-31-capability-neutral-sandbox-policy-context.md similarity index 99% rename from .agents/notes/implemented/simplification/2026-07-31-capability-neutral-sandbox-policy-context.md rename to .agents/notes/archived/simplification/2026-07-31-capability-neutral-sandbox-policy-context.md index d45c6c652f..0cf2f45161 100644 --- a/.agents/notes/implemented/simplification/2026-07-31-capability-neutral-sandbox-policy-context.md +++ b/.agents/notes/archived/simplification/2026-07-31-capability-neutral-sandbox-policy-context.md @@ -1,6 +1,7 @@ # Agent Note: Capability-neutral sandbox policy context Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-31-capability-neutral-sandbox-policy-context.zh.md) diff --git a/.agents/notes/implemented/simplification/2026-07-31-capability-neutral-sandbox-policy-context.zh.md b/.agents/notes/archived/simplification/2026-07-31-capability-neutral-sandbox-policy-context.zh.md similarity index 99% rename from .agents/notes/implemented/simplification/2026-07-31-capability-neutral-sandbox-policy-context.zh.md rename to .agents/notes/archived/simplification/2026-07-31-capability-neutral-sandbox-policy-context.zh.md index 5d209b6b78..2a3b0bda81 100644 --- a/.agents/notes/implemented/simplification/2026-07-31-capability-neutral-sandbox-policy-context.zh.md +++ b/.agents/notes/archived/simplification/2026-07-31-capability-neutral-sandbox-policy-context.zh.md @@ -1,6 +1,7 @@ # Agent Note: 不依赖具体能力的沙箱策略上下文 Status: implemented +Archived: 2026-09-04 [English](2026-07-31-capability-neutral-sandbox-policy-context.md) | 中文 diff --git a/.agents/notes/implemented/feature/2026-08-04-web-latency-throughput-metrics.i18n.yaml b/.agents/notes/archived/simplification/2026-07-31-drop-user-message-edit-stub.i18n.yaml similarity index 56% rename from .agents/notes/implemented/feature/2026-08-04-web-latency-throughput-metrics.i18n.yaml rename to .agents/notes/archived/simplification/2026-07-31-drop-user-message-edit-stub.i18n.yaml index f1ed369ae8..e3435e0370 100644 --- a/.agents/notes/implemented/feature/2026-08-04-web-latency-throughput-metrics.i18n.yaml +++ b/.agents/notes/archived/simplification/2026-07-31-drop-user-message-edit-stub.i18n.yaml @@ -1,6 +1,6 @@ # Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-08-04-web-latency-throughput-metrics.md -2026-08-04-web-latency-throughput-metrics.md: 14ec765a7aadb8a54609c7d4e0e6af149c3c96ba -2026-08-04-web-latency-throughput-metrics.zh.md: 52e6c33c52895f5a075f78019c5f353ecc8cc4b4 +# pnpm run verify-translation-pairing --write .agents/notes/archived/simplification/2026-07-31-drop-user-message-edit-stub.md +2026-07-31-drop-user-message-edit-stub.md: 4080fd0aae688810f19779b2c452deea170a70c4 +2026-07-31-drop-user-message-edit-stub.zh.md: f0da1da052a92ae4e695de0a1109f415dd59c79b diff --git a/.agents/notes/implemented/simplification/2026-07-31-drop-user-message-edit-stub.md b/.agents/notes/archived/simplification/2026-07-31-drop-user-message-edit-stub.md similarity index 98% rename from .agents/notes/implemented/simplification/2026-07-31-drop-user-message-edit-stub.md rename to .agents/notes/archived/simplification/2026-07-31-drop-user-message-edit-stub.md index 5a34be1dd2..4080fd0aae 100644 --- a/.agents/notes/implemented/simplification/2026-07-31-drop-user-message-edit-stub.md +++ b/.agents/notes/archived/simplification/2026-07-31-drop-user-message-edit-stub.md @@ -1,6 +1,7 @@ # Agent Note: Drop the user-message edit stub Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-31-drop-user-message-edit-stub.zh.md) diff --git a/.agents/notes/implemented/simplification/2026-07-31-drop-user-message-edit-stub.zh.md b/.agents/notes/archived/simplification/2026-07-31-drop-user-message-edit-stub.zh.md similarity index 98% rename from .agents/notes/implemented/simplification/2026-07-31-drop-user-message-edit-stub.zh.md rename to .agents/notes/archived/simplification/2026-07-31-drop-user-message-edit-stub.zh.md index 288f2bda5d..f0da1da052 100644 --- a/.agents/notes/implemented/simplification/2026-07-31-drop-user-message-edit-stub.zh.md +++ b/.agents/notes/archived/simplification/2026-07-31-drop-user-message-edit-stub.zh.md @@ -1,6 +1,7 @@ # Agent Note: 移除 user 消息的编辑存根 Status: implemented +Archived: 2026-09-04 [English](2026-07-31-drop-user-message-edit-stub.md) | 中文 diff --git a/.agents/notes/archived/simplification/2026-07-31-one-route-to-add-a-workspace.i18n.yaml b/.agents/notes/archived/simplification/2026-07-31-one-route-to-add-a-workspace.i18n.yaml new file mode 100644 index 0000000000..81f0ade0cf --- /dev/null +++ b/.agents/notes/archived/simplification/2026-07-31-one-route-to-add-a-workspace.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/simplification/2026-07-31-one-route-to-add-a-workspace.md +2026-07-31-one-route-to-add-a-workspace.md: f4aa8c404e6ea07bc822d61da03fbc85c2cd6a0a +2026-07-31-one-route-to-add-a-workspace.zh.md: a5cf8aabc2fa451c5c78a89ee362e2c985cdcda4 diff --git a/.agents/notes/implemented/simplification/2026-07-31-one-route-to-add-a-workspace.md b/.agents/notes/archived/simplification/2026-07-31-one-route-to-add-a-workspace.md similarity index 99% rename from .agents/notes/implemented/simplification/2026-07-31-one-route-to-add-a-workspace.md rename to .agents/notes/archived/simplification/2026-07-31-one-route-to-add-a-workspace.md index bcbe77899d..f4aa8c404e 100644 --- a/.agents/notes/implemented/simplification/2026-07-31-one-route-to-add-a-workspace.md +++ b/.agents/notes/archived/simplification/2026-07-31-one-route-to-add-a-workspace.md @@ -1,6 +1,7 @@ # Agent Note: One route to add a Workspace Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-31-one-route-to-add-a-workspace.zh.md) diff --git a/.agents/notes/implemented/simplification/2026-07-31-one-route-to-add-a-workspace.zh.md b/.agents/notes/archived/simplification/2026-07-31-one-route-to-add-a-workspace.zh.md similarity index 99% rename from .agents/notes/implemented/simplification/2026-07-31-one-route-to-add-a-workspace.zh.md rename to .agents/notes/archived/simplification/2026-07-31-one-route-to-add-a-workspace.zh.md index edd17af03c..a5cf8aabc2 100644 --- a/.agents/notes/implemented/simplification/2026-07-31-one-route-to-add-a-workspace.zh.md +++ b/.agents/notes/archived/simplification/2026-07-31-one-route-to-add-a-workspace.zh.md @@ -1,6 +1,7 @@ # Agent Note: 添加 Workspace 的唯一路径 Status: implemented +Archived: 2026-09-04 [English](2026-07-31-one-route-to-add-a-workspace.md) | 中文 diff --git a/.agents/notes/archived/simplification/2026-08-03-omit-invariants-from-shipped-config.i18n.yaml b/.agents/notes/archived/simplification/2026-08-03-omit-invariants-from-shipped-config.i18n.yaml new file mode 100644 index 0000000000..b5eab73c7e --- /dev/null +++ b/.agents/notes/archived/simplification/2026-08-03-omit-invariants-from-shipped-config.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/simplification/2026-08-03-omit-invariants-from-shipped-config.md +2026-08-03-omit-invariants-from-shipped-config.md: 135b939ff62bddee46eaa7b8144d151560a0e31d +2026-08-03-omit-invariants-from-shipped-config.zh.md: 968b575c9b799aba225b85a3b9d85f7c6d55d9ef diff --git a/.agents/notes/implemented/simplification/2026-08-03-omit-invariants-from-shipped-config.md b/.agents/notes/archived/simplification/2026-08-03-omit-invariants-from-shipped-config.md similarity index 99% rename from .agents/notes/implemented/simplification/2026-08-03-omit-invariants-from-shipped-config.md rename to .agents/notes/archived/simplification/2026-08-03-omit-invariants-from-shipped-config.md index a691a09498..135b939ff6 100644 --- a/.agents/notes/implemented/simplification/2026-08-03-omit-invariants-from-shipped-config.md +++ b/.agents/notes/archived/simplification/2026-08-03-omit-invariants-from-shipped-config.md @@ -1,6 +1,7 @@ # Agent Note: Omit runtime invariants from shipped dsh config Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-03-omit-invariants-from-shipped-config.zh.md) diff --git a/.agents/notes/implemented/simplification/2026-08-03-omit-invariants-from-shipped-config.zh.md b/.agents/notes/archived/simplification/2026-08-03-omit-invariants-from-shipped-config.zh.md similarity index 99% rename from .agents/notes/implemented/simplification/2026-08-03-omit-invariants-from-shipped-config.zh.md rename to .agents/notes/archived/simplification/2026-08-03-omit-invariants-from-shipped-config.zh.md index c1593f6a9b..968b575c9b 100644 --- a/.agents/notes/implemented/simplification/2026-08-03-omit-invariants-from-shipped-config.zh.md +++ b/.agents/notes/archived/simplification/2026-08-03-omit-invariants-from-shipped-config.zh.md @@ -1,6 +1,7 @@ # Agent Note: 从交付的 dsh 配置中省略运行时不变式 Status: implemented +Archived: 2026-09-04 [English](2026-08-03-omit-invariants-from-shipped-config.md) | 中文 diff --git a/.agents/notes/archived/simplification/2026-08-04-drop-windows-powershell-picker-fallback.i18n.yaml b/.agents/notes/archived/simplification/2026-08-04-drop-windows-powershell-picker-fallback.i18n.yaml new file mode 100644 index 0000000000..d644c3b785 --- /dev/null +++ b/.agents/notes/archived/simplification/2026-08-04-drop-windows-powershell-picker-fallback.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/simplification/2026-08-04-drop-windows-powershell-picker-fallback.md +2026-08-04-drop-windows-powershell-picker-fallback.md: 5f9dfc6a2b71bc9e6cc957aa1d492a9f3e80df5f +2026-08-04-drop-windows-powershell-picker-fallback.zh.md: 01cd789f9a1c1fe36ef2e149a7e3106346cb158c diff --git a/.agents/notes/implemented/simplification/2026-08-04-drop-windows-powershell-picker-fallback.md b/.agents/notes/archived/simplification/2026-08-04-drop-windows-powershell-picker-fallback.md similarity index 99% rename from .agents/notes/implemented/simplification/2026-08-04-drop-windows-powershell-picker-fallback.md rename to .agents/notes/archived/simplification/2026-08-04-drop-windows-powershell-picker-fallback.md index 619afd31d9..5f9dfc6a2b 100644 --- a/.agents/notes/implemented/simplification/2026-08-04-drop-windows-powershell-picker-fallback.md +++ b/.agents/notes/archived/simplification/2026-08-04-drop-windows-powershell-picker-fallback.md @@ -1,6 +1,7 @@ # Agent Note: Drop the Windows PowerShell picker fallback Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-04-drop-windows-powershell-picker-fallback.zh.md) diff --git a/.agents/notes/implemented/simplification/2026-08-04-drop-windows-powershell-picker-fallback.zh.md b/.agents/notes/archived/simplification/2026-08-04-drop-windows-powershell-picker-fallback.zh.md similarity index 99% rename from .agents/notes/implemented/simplification/2026-08-04-drop-windows-powershell-picker-fallback.zh.md rename to .agents/notes/archived/simplification/2026-08-04-drop-windows-powershell-picker-fallback.zh.md index 14716f405e..01cd789f9a 100644 --- a/.agents/notes/implemented/simplification/2026-08-04-drop-windows-powershell-picker-fallback.zh.md +++ b/.agents/notes/archived/simplification/2026-08-04-drop-windows-powershell-picker-fallback.zh.md @@ -1,6 +1,7 @@ # Agent Note: 删除 Windows PowerShell 选择器回退 Status: implemented +Archived: 2026-09-04 [English](2026-08-04-drop-windows-powershell-picker-fallback.md) | 中文 diff --git a/.agents/notes/archived/simplification/2026-08-04-remove-tui-package.i18n.yaml b/.agents/notes/archived/simplification/2026-08-04-remove-tui-package.i18n.yaml new file mode 100644 index 0000000000..eb499e2c45 --- /dev/null +++ b/.agents/notes/archived/simplification/2026-08-04-remove-tui-package.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/simplification/2026-08-04-remove-tui-package.md +2026-08-04-remove-tui-package.md: d6862ce6c7927cc33de51c13aac502be1a3abf49 +2026-08-04-remove-tui-package.zh.md: 702a40d957abbfc977986ad35e87143d0116733b diff --git a/.agents/notes/implemented/simplification/2026-08-04-remove-tui-package.md b/.agents/notes/archived/simplification/2026-08-04-remove-tui-package.md similarity index 99% rename from .agents/notes/implemented/simplification/2026-08-04-remove-tui-package.md rename to .agents/notes/archived/simplification/2026-08-04-remove-tui-package.md index 2834ec10aa..d6862ce6c7 100644 --- a/.agents/notes/implemented/simplification/2026-08-04-remove-tui-package.md +++ b/.agents/notes/archived/simplification/2026-08-04-remove-tui-package.md @@ -1,6 +1,7 @@ # Agent Note: Remove the TUI package Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-04-remove-tui-package.zh.md) diff --git a/.agents/notes/implemented/simplification/2026-08-04-remove-tui-package.zh.md b/.agents/notes/archived/simplification/2026-08-04-remove-tui-package.zh.md similarity index 99% rename from .agents/notes/implemented/simplification/2026-08-04-remove-tui-package.zh.md rename to .agents/notes/archived/simplification/2026-08-04-remove-tui-package.zh.md index 6532bb690a..702a40d957 100644 --- a/.agents/notes/implemented/simplification/2026-08-04-remove-tui-package.zh.md +++ b/.agents/notes/archived/simplification/2026-08-04-remove-tui-package.zh.md @@ -1,6 +1,7 @@ # Agent Note: 移除 TUI 包 Status: implemented +Archived: 2026-09-04 [English](2026-08-04-remove-tui-package.md) | 中文 diff --git a/.agents/notes/archived/simplification/2026-08-06-buffer-free-feedback-telemetry.i18n.yaml b/.agents/notes/archived/simplification/2026-08-06-buffer-free-feedback-telemetry.i18n.yaml new file mode 100644 index 0000000000..a617d5589c --- /dev/null +++ b/.agents/notes/archived/simplification/2026-08-06-buffer-free-feedback-telemetry.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/simplification/2026-08-06-buffer-free-feedback-telemetry.md +2026-08-06-buffer-free-feedback-telemetry.md: 7b35b5fff5c0d56f33a1888bb75853cfbe67cd74 +2026-08-06-buffer-free-feedback-telemetry.zh.md: be29674eba532c0020cb016915bd87a430bab7e8 diff --git a/.agents/notes/implemented/simplification/2026-08-06-buffer-free-feedback-telemetry.md b/.agents/notes/archived/simplification/2026-08-06-buffer-free-feedback-telemetry.md similarity index 99% rename from .agents/notes/implemented/simplification/2026-08-06-buffer-free-feedback-telemetry.md rename to .agents/notes/archived/simplification/2026-08-06-buffer-free-feedback-telemetry.md index 9e2822e144..7b35b5fff5 100644 --- a/.agents/notes/implemented/simplification/2026-08-06-buffer-free-feedback-telemetry.md +++ b/.agents/notes/archived/simplification/2026-08-06-buffer-free-feedback-telemetry.md @@ -1,6 +1,7 @@ # Agent Note: Buffer-free feedback telemetry Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-06-buffer-free-feedback-telemetry.zh.md) diff --git a/.agents/notes/implemented/simplification/2026-08-06-buffer-free-feedback-telemetry.zh.md b/.agents/notes/archived/simplification/2026-08-06-buffer-free-feedback-telemetry.zh.md similarity index 99% rename from .agents/notes/implemented/simplification/2026-08-06-buffer-free-feedback-telemetry.zh.md rename to .agents/notes/archived/simplification/2026-08-06-buffer-free-feedback-telemetry.zh.md index cc77c60ada..be29674eba 100644 --- a/.agents/notes/implemented/simplification/2026-08-06-buffer-free-feedback-telemetry.zh.md +++ b/.agents/notes/archived/simplification/2026-08-06-buffer-free-feedback-telemetry.zh.md @@ -1,6 +1,7 @@ # Agent Note: 无缓冲反馈遥测 Status: implemented +Archived: 2026-09-04 [English](2026-08-06-buffer-free-feedback-telemetry.md) | 中文 diff --git a/.agents/notes/implemented/simplification/2026-08-24-owner-local-profile-tests-and-guides.i18n.yaml b/.agents/notes/archived/simplification/2026-08-06-user-bubbles-drop-the-branch-action.i18n.yaml similarity index 53% rename from .agents/notes/implemented/simplification/2026-08-24-owner-local-profile-tests-and-guides.i18n.yaml rename to .agents/notes/archived/simplification/2026-08-06-user-bubbles-drop-the-branch-action.i18n.yaml index 9768def496..d83886b9bb 100644 --- a/.agents/notes/implemented/simplification/2026-08-24-owner-local-profile-tests-and-guides.i18n.yaml +++ b/.agents/notes/archived/simplification/2026-08-06-user-bubbles-drop-the-branch-action.i18n.yaml @@ -1,6 +1,6 @@ # Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/simplification/2026-08-24-owner-local-profile-tests-and-guides.md -2026-08-24-owner-local-profile-tests-and-guides.md: 26a62dd9c28a55d5195ab9a8a56c5369bf521362 -2026-08-24-owner-local-profile-tests-and-guides.zh.md: fa65c09b8b886b1bf442ff5a52976e06032bb75c +# pnpm run verify-translation-pairing --write .agents/notes/archived/simplification/2026-08-06-user-bubbles-drop-the-branch-action.md +2026-08-06-user-bubbles-drop-the-branch-action.md: 0cafa412aae45a02512c5e9911a4dfd46b4c8cad +2026-08-06-user-bubbles-drop-the-branch-action.zh.md: 8bf511d1ed16b57be69510479b849eab203fe4b9 diff --git a/.agents/notes/implemented/simplification/2026-08-06-user-bubbles-drop-the-branch-action.md b/.agents/notes/archived/simplification/2026-08-06-user-bubbles-drop-the-branch-action.md similarity index 99% rename from .agents/notes/implemented/simplification/2026-08-06-user-bubbles-drop-the-branch-action.md rename to .agents/notes/archived/simplification/2026-08-06-user-bubbles-drop-the-branch-action.md index 817b5e72b7..0cafa412aa 100644 --- a/.agents/notes/implemented/simplification/2026-08-06-user-bubbles-drop-the-branch-action.md +++ b/.agents/notes/archived/simplification/2026-08-06-user-bubbles-drop-the-branch-action.md @@ -1,6 +1,7 @@ # Agent Note: User and steering bubbles drop the branch action Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-06-user-bubbles-drop-the-branch-action.zh.md) diff --git a/.agents/notes/implemented/simplification/2026-08-06-user-bubbles-drop-the-branch-action.zh.md b/.agents/notes/archived/simplification/2026-08-06-user-bubbles-drop-the-branch-action.zh.md similarity index 99% rename from .agents/notes/implemented/simplification/2026-08-06-user-bubbles-drop-the-branch-action.zh.md rename to .agents/notes/archived/simplification/2026-08-06-user-bubbles-drop-the-branch-action.zh.md index 0f53831510..8bf511d1ed 100644 --- a/.agents/notes/implemented/simplification/2026-08-06-user-bubbles-drop-the-branch-action.zh.md +++ b/.agents/notes/archived/simplification/2026-08-06-user-bubbles-drop-the-branch-action.zh.md @@ -1,6 +1,7 @@ # Agent Note: user 与 steering 气泡移除分支操作 Status: implemented +Archived: 2026-09-04 [English](2026-08-06-user-bubbles-drop-the-branch-action.md) | 中文 diff --git a/.agents/notes/archived/simplification/2026-08-08-remove-cli-demo.i18n.yaml b/.agents/notes/archived/simplification/2026-08-08-remove-cli-demo.i18n.yaml new file mode 100644 index 0000000000..4c2de1b2bc --- /dev/null +++ b/.agents/notes/archived/simplification/2026-08-08-remove-cli-demo.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/simplification/2026-08-08-remove-cli-demo.md +2026-08-08-remove-cli-demo.md: c23b622ccc1d9a7d87750c44c9b8df0bc68e314f +2026-08-08-remove-cli-demo.zh.md: dec370ff11b099feab2d760b5646b6dc9bd422e5 diff --git a/.agents/notes/implemented/simplification/2026-08-08-remove-cli-demo.md b/.agents/notes/archived/simplification/2026-08-08-remove-cli-demo.md similarity index 99% rename from .agents/notes/implemented/simplification/2026-08-08-remove-cli-demo.md rename to .agents/notes/archived/simplification/2026-08-08-remove-cli-demo.md index 1bfb4cdf8d..c23b622ccc 100644 --- a/.agents/notes/implemented/simplification/2026-08-08-remove-cli-demo.md +++ b/.agents/notes/archived/simplification/2026-08-08-remove-cli-demo.md @@ -1,6 +1,7 @@ # Agent Note: Remove the separate CLI demo Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-08-remove-cli-demo.zh.md) diff --git a/.agents/notes/implemented/simplification/2026-08-08-remove-cli-demo.zh.md b/.agents/notes/archived/simplification/2026-08-08-remove-cli-demo.zh.md similarity index 99% rename from .agents/notes/implemented/simplification/2026-08-08-remove-cli-demo.zh.md rename to .agents/notes/archived/simplification/2026-08-08-remove-cli-demo.zh.md index 9e84831aa5..dec370ff11 100644 --- a/.agents/notes/implemented/simplification/2026-08-08-remove-cli-demo.zh.md +++ b/.agents/notes/archived/simplification/2026-08-08-remove-cli-demo.zh.md @@ -1,6 +1,7 @@ # Agent Note: 移除独立的 CLI demo Status: implemented +Archived: 2026-09-04 [English](2026-08-08-remove-cli-demo.md) | 中文 diff --git a/.agents/notes/archived/simplification/2026-08-09-bounded-fixed-rate-schedule.i18n.yaml b/.agents/notes/archived/simplification/2026-08-09-bounded-fixed-rate-schedule.i18n.yaml new file mode 100644 index 0000000000..2c1d862c8e --- /dev/null +++ b/.agents/notes/archived/simplification/2026-08-09-bounded-fixed-rate-schedule.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/simplification/2026-08-09-bounded-fixed-rate-schedule.md +2026-08-09-bounded-fixed-rate-schedule.md: 849ff666c38d92cf28edef7e6ea551584c152b03 +2026-08-09-bounded-fixed-rate-schedule.zh.md: da4868f0d23080e37cf8d78afd98700d3e88ed74 diff --git a/.agents/notes/implemented/simplification/2026-08-09-bounded-fixed-rate-schedule.md b/.agents/notes/archived/simplification/2026-08-09-bounded-fixed-rate-schedule.md similarity index 99% rename from .agents/notes/implemented/simplification/2026-08-09-bounded-fixed-rate-schedule.md rename to .agents/notes/archived/simplification/2026-08-09-bounded-fixed-rate-schedule.md index 83d7e149f6..849ff666c3 100644 --- a/.agents/notes/implemented/simplification/2026-08-09-bounded-fixed-rate-schedule.md +++ b/.agents/notes/archived/simplification/2026-08-09-bounded-fixed-rate-schedule.md @@ -1,6 +1,7 @@ # Agent Note: Bounded fixed-rate Schedule Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-09-bounded-fixed-rate-schedule.zh.md) diff --git a/.agents/notes/implemented/simplification/2026-08-09-bounded-fixed-rate-schedule.zh.md b/.agents/notes/archived/simplification/2026-08-09-bounded-fixed-rate-schedule.zh.md similarity index 99% rename from .agents/notes/implemented/simplification/2026-08-09-bounded-fixed-rate-schedule.zh.md rename to .agents/notes/archived/simplification/2026-08-09-bounded-fixed-rate-schedule.zh.md index a8b287ce7f..da4868f0d2 100644 --- a/.agents/notes/implemented/simplification/2026-08-09-bounded-fixed-rate-schedule.zh.md +++ b/.agents/notes/archived/simplification/2026-08-09-bounded-fixed-rate-schedule.zh.md @@ -1,6 +1,7 @@ # Agent Note: 有界固定速率 Schedule Status: implemented +Archived: 2026-09-04 [English](2026-08-09-bounded-fixed-rate-schedule.md) | 中文 diff --git a/.agents/notes/archived/simplification/2026-08-09-conversational-schedule-delivery.i18n.yaml b/.agents/notes/archived/simplification/2026-08-09-conversational-schedule-delivery.i18n.yaml new file mode 100644 index 0000000000..a3dab2a7b8 --- /dev/null +++ b/.agents/notes/archived/simplification/2026-08-09-conversational-schedule-delivery.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/simplification/2026-08-09-conversational-schedule-delivery.md +2026-08-09-conversational-schedule-delivery.md: bd0497031bdaa1e23158851c4de05b2e3d16f97d +2026-08-09-conversational-schedule-delivery.zh.md: cf902b6a1c190c8ab4c00d808d6b27088a562ea8 diff --git a/.agents/notes/implemented/simplification/2026-08-09-conversational-schedule-delivery.md b/.agents/notes/archived/simplification/2026-08-09-conversational-schedule-delivery.md similarity index 99% rename from .agents/notes/implemented/simplification/2026-08-09-conversational-schedule-delivery.md rename to .agents/notes/archived/simplification/2026-08-09-conversational-schedule-delivery.md index 84a97b8945..bd0497031b 100644 --- a/.agents/notes/implemented/simplification/2026-08-09-conversational-schedule-delivery.md +++ b/.agents/notes/archived/simplification/2026-08-09-conversational-schedule-delivery.md @@ -1,6 +1,7 @@ # Agent Note: Conversational Schedule delivery Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-09-conversational-schedule-delivery.zh.md) diff --git a/.agents/notes/implemented/simplification/2026-08-09-conversational-schedule-delivery.zh.md b/.agents/notes/archived/simplification/2026-08-09-conversational-schedule-delivery.zh.md similarity index 99% rename from .agents/notes/implemented/simplification/2026-08-09-conversational-schedule-delivery.zh.md rename to .agents/notes/archived/simplification/2026-08-09-conversational-schedule-delivery.zh.md index 1d3430a8c7..cf902b6a1c 100644 --- a/.agents/notes/implemented/simplification/2026-08-09-conversational-schedule-delivery.zh.md +++ b/.agents/notes/archived/simplification/2026-08-09-conversational-schedule-delivery.zh.md @@ -1,6 +1,7 @@ # Agent Note: 对话式 Schedule 交付 Status: implemented +Archived: 2026-09-04 [English](2026-08-09-conversational-schedule-delivery.md) | 中文 diff --git a/.agents/notes/archived/simplification/2026-08-09-remove-repository-plugin.i18n.yaml b/.agents/notes/archived/simplification/2026-08-09-remove-repository-plugin.i18n.yaml new file mode 100644 index 0000000000..eb4c53605e --- /dev/null +++ b/.agents/notes/archived/simplification/2026-08-09-remove-repository-plugin.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/simplification/2026-08-09-remove-repository-plugin.md +2026-08-09-remove-repository-plugin.md: 34743014667d381af92a267b798d418756b9f4af +2026-08-09-remove-repository-plugin.zh.md: 778499d9830e83c0336a198aad25685b2af1dcb8 diff --git a/.agents/notes/implemented/simplification/2026-08-09-remove-repository-plugin.md b/.agents/notes/archived/simplification/2026-08-09-remove-repository-plugin.md similarity index 99% rename from .agents/notes/implemented/simplification/2026-08-09-remove-repository-plugin.md rename to .agents/notes/archived/simplification/2026-08-09-remove-repository-plugin.md index f9d1c00849..3474301466 100644 --- a/.agents/notes/implemented/simplification/2026-08-09-remove-repository-plugin.md +++ b/.agents/notes/archived/simplification/2026-08-09-remove-repository-plugin.md @@ -1,6 +1,7 @@ # Agent Note: Remove the dedicated repository Plugin path Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-09-remove-repository-plugin.zh.md) diff --git a/.agents/notes/implemented/simplification/2026-08-09-remove-repository-plugin.zh.md b/.agents/notes/archived/simplification/2026-08-09-remove-repository-plugin.zh.md similarity index 99% rename from .agents/notes/implemented/simplification/2026-08-09-remove-repository-plugin.zh.md rename to .agents/notes/archived/simplification/2026-08-09-remove-repository-plugin.zh.md index 7f89f7f20f..778499d983 100644 --- a/.agents/notes/implemented/simplification/2026-08-09-remove-repository-plugin.zh.md +++ b/.agents/notes/archived/simplification/2026-08-09-remove-repository-plugin.zh.md @@ -1,6 +1,7 @@ # Agent Note: 移除专用 repository 插件路径 Status: implemented +Archived: 2026-09-04 [English](2026-08-09-remove-repository-plugin.md) | 中文 diff --git a/.agents/notes/archived/simplification/2026-08-10-default-presets-single-editor.i18n.yaml b/.agents/notes/archived/simplification/2026-08-10-default-presets-single-editor.i18n.yaml new file mode 100644 index 0000000000..afecce73a7 --- /dev/null +++ b/.agents/notes/archived/simplification/2026-08-10-default-presets-single-editor.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/simplification/2026-08-10-default-presets-single-editor.md +2026-08-10-default-presets-single-editor.md: 2095cb4b6a436f21918e5ac0c4800a031174f7a1 +2026-08-10-default-presets-single-editor.zh.md: 2ea6109e13776a39e7c03a4f5d7a06e631c8c97a diff --git a/.agents/notes/implemented/simplification/2026-08-10-default-presets-single-editor.md b/.agents/notes/archived/simplification/2026-08-10-default-presets-single-editor.md similarity index 99% rename from .agents/notes/implemented/simplification/2026-08-10-default-presets-single-editor.md rename to .agents/notes/archived/simplification/2026-08-10-default-presets-single-editor.md index 3d1c1dea4f..2095cb4b6a 100644 --- a/.agents/notes/implemented/simplification/2026-08-10-default-presets-single-editor.md +++ b/.agents/notes/archived/simplification/2026-08-10-default-presets-single-editor.md @@ -1,6 +1,7 @@ # Agent Note: One editor family in general-purpose presets Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-10-default-presets-single-editor.zh.md) diff --git a/.agents/notes/implemented/simplification/2026-08-10-default-presets-single-editor.zh.md b/.agents/notes/archived/simplification/2026-08-10-default-presets-single-editor.zh.md similarity index 98% rename from .agents/notes/implemented/simplification/2026-08-10-default-presets-single-editor.zh.md rename to .agents/notes/archived/simplification/2026-08-10-default-presets-single-editor.zh.md index 5212156a6a..2ea6109e13 100644 --- a/.agents/notes/implemented/simplification/2026-08-10-default-presets-single-editor.zh.md +++ b/.agents/notes/archived/simplification/2026-08-10-default-presets-single-editor.zh.md @@ -1,6 +1,7 @@ # Agent Note: 通用 preset 只提供一套编辑工具 Status: implemented +Archived: 2026-09-04 [English](2026-08-10-default-presets-single-editor.md) | 中文 diff --git a/.agents/notes/archived/simplification/2026-08-10-source-run-without-managed-installer.i18n.yaml b/.agents/notes/archived/simplification/2026-08-10-source-run-without-managed-installer.i18n.yaml new file mode 100644 index 0000000000..b23eedc142 --- /dev/null +++ b/.agents/notes/archived/simplification/2026-08-10-source-run-without-managed-installer.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/simplification/2026-08-10-source-run-without-managed-installer.md +2026-08-10-source-run-without-managed-installer.md: 4e39ab10af027c3ba80d781fb8481e127a2687c7 +2026-08-10-source-run-without-managed-installer.zh.md: e0ee88e5d76f29feb4e4253cae02d14b000fcd0b diff --git a/.agents/notes/implemented/simplification/2026-08-10-source-run-without-managed-installer.md b/.agents/notes/archived/simplification/2026-08-10-source-run-without-managed-installer.md similarity index 99% rename from .agents/notes/implemented/simplification/2026-08-10-source-run-without-managed-installer.md rename to .agents/notes/archived/simplification/2026-08-10-source-run-without-managed-installer.md index b9e86c3c32..4e39ab10af 100644 --- a/.agents/notes/implemented/simplification/2026-08-10-source-run-without-managed-installer.md +++ b/.agents/notes/archived/simplification/2026-08-10-source-run-without-managed-installer.md @@ -1,6 +1,7 @@ # Agent Note: Source run without a managed installer Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-10-source-run-without-managed-installer.zh.md) diff --git a/.agents/notes/implemented/simplification/2026-08-10-source-run-without-managed-installer.zh.md b/.agents/notes/archived/simplification/2026-08-10-source-run-without-managed-installer.zh.md similarity index 99% rename from .agents/notes/implemented/simplification/2026-08-10-source-run-without-managed-installer.zh.md rename to .agents/notes/archived/simplification/2026-08-10-source-run-without-managed-installer.zh.md index 48c1fdb7cc..e0ee88e5d7 100644 --- a/.agents/notes/implemented/simplification/2026-08-10-source-run-without-managed-installer.zh.md +++ b/.agents/notes/archived/simplification/2026-08-10-source-run-without-managed-installer.zh.md @@ -1,6 +1,7 @@ # Agent Note: 无需托管安装器的源码运行 Status: implemented +Archived: 2026-09-04 [English](2026-08-10-source-run-without-managed-installer.md) | 中文 diff --git a/.agents/notes/archived/simplification/2026-08-10-web-remove-steering-interjection-caption.i18n.yaml b/.agents/notes/archived/simplification/2026-08-10-web-remove-steering-interjection-caption.i18n.yaml new file mode 100644 index 0000000000..8465d6e5d1 --- /dev/null +++ b/.agents/notes/archived/simplification/2026-08-10-web-remove-steering-interjection-caption.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/simplification/2026-08-10-web-remove-steering-interjection-caption.md +2026-08-10-web-remove-steering-interjection-caption.md: 4a2d5df1757154584a897147b5d6a7d492945b89 +2026-08-10-web-remove-steering-interjection-caption.zh.md: 82e24a16e7d8efb12a79b12069a5cb3ce39a3da7 diff --git a/.agents/notes/implemented/simplification/2026-08-10-web-remove-steering-interjection-caption.md b/.agents/notes/archived/simplification/2026-08-10-web-remove-steering-interjection-caption.md similarity index 99% rename from .agents/notes/implemented/simplification/2026-08-10-web-remove-steering-interjection-caption.md rename to .agents/notes/archived/simplification/2026-08-10-web-remove-steering-interjection-caption.md index 2c396f5494..4a2d5df175 100644 --- a/.agents/notes/implemented/simplification/2026-08-10-web-remove-steering-interjection-caption.md +++ b/.agents/notes/archived/simplification/2026-08-10-web-remove-steering-interjection-caption.md @@ -1,6 +1,7 @@ # Agent Note: Remove the steering interjection caption Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-10-web-remove-steering-interjection-caption.zh.md) diff --git a/.agents/notes/implemented/simplification/2026-08-10-web-remove-steering-interjection-caption.zh.md b/.agents/notes/archived/simplification/2026-08-10-web-remove-steering-interjection-caption.zh.md similarity index 99% rename from .agents/notes/implemented/simplification/2026-08-10-web-remove-steering-interjection-caption.zh.md rename to .agents/notes/archived/simplification/2026-08-10-web-remove-steering-interjection-caption.zh.md index 10a3f66d16..82e24a16e7 100644 --- a/.agents/notes/implemented/simplification/2026-08-10-web-remove-steering-interjection-caption.zh.md +++ b/.agents/notes/archived/simplification/2026-08-10-web-remove-steering-interjection-caption.zh.md @@ -1,6 +1,7 @@ # Agent Note: 移除 steering(中途引导)插话标注 Status: implemented +Archived: 2026-09-04 [English](2026-08-10-web-remove-steering-interjection-caption.md) | 中文 diff --git a/.agents/notes/archived/simplification/2026-08-11-remove-sdk-project-toolchain.i18n.yaml b/.agents/notes/archived/simplification/2026-08-11-remove-sdk-project-toolchain.i18n.yaml new file mode 100644 index 0000000000..8917707fe2 --- /dev/null +++ b/.agents/notes/archived/simplification/2026-08-11-remove-sdk-project-toolchain.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/simplification/2026-08-11-remove-sdk-project-toolchain.md +2026-08-11-remove-sdk-project-toolchain.md: 865e80d2ee42f6aa38057d61f7151cf1802d962b +2026-08-11-remove-sdk-project-toolchain.zh.md: e978a5aecf349d1fd01b6d947609fa3b7692eb35 diff --git a/.agents/notes/implemented/simplification/2026-08-11-remove-sdk-project-toolchain.md b/.agents/notes/archived/simplification/2026-08-11-remove-sdk-project-toolchain.md similarity index 99% rename from .agents/notes/implemented/simplification/2026-08-11-remove-sdk-project-toolchain.md rename to .agents/notes/archived/simplification/2026-08-11-remove-sdk-project-toolchain.md index fc896c2823..865e80d2ee 100644 --- a/.agents/notes/implemented/simplification/2026-08-11-remove-sdk-project-toolchain.md +++ b/.agents/notes/archived/simplification/2026-08-11-remove-sdk-project-toolchain.md @@ -1,6 +1,7 @@ # Agent Note: Remove the SDK project toolchain Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-11-remove-sdk-project-toolchain.zh.md) diff --git a/.agents/notes/implemented/simplification/2026-08-11-remove-sdk-project-toolchain.zh.md b/.agents/notes/archived/simplification/2026-08-11-remove-sdk-project-toolchain.zh.md similarity index 99% rename from .agents/notes/implemented/simplification/2026-08-11-remove-sdk-project-toolchain.zh.md rename to .agents/notes/archived/simplification/2026-08-11-remove-sdk-project-toolchain.zh.md index 9d33a89e28..e978a5aecf 100644 --- a/.agents/notes/implemented/simplification/2026-08-11-remove-sdk-project-toolchain.zh.md +++ b/.agents/notes/archived/simplification/2026-08-11-remove-sdk-project-toolchain.zh.md @@ -1,6 +1,7 @@ # Agent Note: 移除 SDK 项目工具链 Status: implemented +Archived: 2026-09-04 [English](2026-08-11-remove-sdk-project-toolchain.md) | 中文 diff --git a/.agents/notes/implemented/simplification/2026-08-12-production-dsh-excludes-product-subagent-providers.i18n.yaml b/.agents/notes/archived/simplification/2026-08-12-production-dsh-excludes-product-subagent-providers.i18n.yaml similarity index 60% rename from .agents/notes/implemented/simplification/2026-08-12-production-dsh-excludes-product-subagent-providers.i18n.yaml rename to .agents/notes/archived/simplification/2026-08-12-production-dsh-excludes-product-subagent-providers.i18n.yaml index a017cbbc22..ea5f3d83be 100644 --- a/.agents/notes/implemented/simplification/2026-08-12-production-dsh-excludes-product-subagent-providers.i18n.yaml +++ b/.agents/notes/archived/simplification/2026-08-12-production-dsh-excludes-product-subagent-providers.i18n.yaml @@ -1,6 +1,6 @@ # Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/simplification/2026-08-12-production-dsh-excludes-product-subagent-providers.md -2026-08-12-production-dsh-excludes-product-subagent-providers.md: 551cf86bd0d1901e5ad8e33588b7bf274cb2c8fe -2026-08-12-production-dsh-excludes-product-subagent-providers.zh.md: 611c6192c501f6289911c18c36ca21a31c57e2cd +# pnpm run verify-translation-pairing --write .agents/notes/archived/simplification/2026-08-12-production-dsh-excludes-product-subagent-providers.md +2026-08-12-production-dsh-excludes-product-subagent-providers.md: ba37c2d81edda5c695743a080e83498ce6582b51 +2026-08-12-production-dsh-excludes-product-subagent-providers.zh.md: 827f4f3a91da334766c11cbf4fd72a127ac80742 diff --git a/.agents/notes/implemented/simplification/2026-08-12-production-dsh-excludes-product-subagent-providers.md b/.agents/notes/archived/simplification/2026-08-12-production-dsh-excludes-product-subagent-providers.md similarity index 99% rename from .agents/notes/implemented/simplification/2026-08-12-production-dsh-excludes-product-subagent-providers.md rename to .agents/notes/archived/simplification/2026-08-12-production-dsh-excludes-product-subagent-providers.md index 551cf86bd0..ba37c2d81e 100644 --- a/.agents/notes/implemented/simplification/2026-08-12-production-dsh-excludes-product-subagent-providers.md +++ b/.agents/notes/archived/simplification/2026-08-12-production-dsh-excludes-product-subagent-providers.md @@ -1,6 +1,7 @@ # Agent Note: Production dsh excludes product subagent providers Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-12-production-dsh-excludes-product-subagent-providers.zh.md) diff --git a/.agents/notes/implemented/simplification/2026-08-12-production-dsh-excludes-product-subagent-providers.zh.md b/.agents/notes/archived/simplification/2026-08-12-production-dsh-excludes-product-subagent-providers.zh.md similarity index 99% rename from .agents/notes/implemented/simplification/2026-08-12-production-dsh-excludes-product-subagent-providers.zh.md rename to .agents/notes/archived/simplification/2026-08-12-production-dsh-excludes-product-subagent-providers.zh.md index 611c6192c5..827f4f3a91 100644 --- a/.agents/notes/implemented/simplification/2026-08-12-production-dsh-excludes-product-subagent-providers.zh.md +++ b/.agents/notes/archived/simplification/2026-08-12-production-dsh-excludes-product-subagent-providers.zh.md @@ -1,6 +1,7 @@ # Agent Note: 生产 dsh 排除产品 subagent 提供方 Status: implemented +Archived: 2026-09-04 [English](2026-08-12-production-dsh-excludes-product-subagent-providers.md) | 中文 diff --git a/.agents/notes/archived/simplification/2026-08-12-separate-source-launch-from-build.i18n.yaml b/.agents/notes/archived/simplification/2026-08-12-separate-source-launch-from-build.i18n.yaml new file mode 100644 index 0000000000..d699bfa22b --- /dev/null +++ b/.agents/notes/archived/simplification/2026-08-12-separate-source-launch-from-build.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/simplification/2026-08-12-separate-source-launch-from-build.md +2026-08-12-separate-source-launch-from-build.md: 2d285407b23071237ea02098204b09da45e39728 +2026-08-12-separate-source-launch-from-build.zh.md: 69c035ce7e6d1717cad780524afee01be82ac7c5 diff --git a/.agents/notes/implemented/simplification/2026-08-12-separate-source-launch-from-build.md b/.agents/notes/archived/simplification/2026-08-12-separate-source-launch-from-build.md similarity index 99% rename from .agents/notes/implemented/simplification/2026-08-12-separate-source-launch-from-build.md rename to .agents/notes/archived/simplification/2026-08-12-separate-source-launch-from-build.md index 639e9de0ce..2d285407b2 100644 --- a/.agents/notes/implemented/simplification/2026-08-12-separate-source-launch-from-build.md +++ b/.agents/notes/archived/simplification/2026-08-12-separate-source-launch-from-build.md @@ -1,6 +1,7 @@ # Agent Note: Separate source launch from repository build Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-12-separate-source-launch-from-build.zh.md) diff --git a/.agents/notes/implemented/simplification/2026-08-12-separate-source-launch-from-build.zh.md b/.agents/notes/archived/simplification/2026-08-12-separate-source-launch-from-build.zh.md similarity index 99% rename from .agents/notes/implemented/simplification/2026-08-12-separate-source-launch-from-build.zh.md rename to .agents/notes/archived/simplification/2026-08-12-separate-source-launch-from-build.zh.md index c8fd662605..69c035ce7e 100644 --- a/.agents/notes/implemented/simplification/2026-08-12-separate-source-launch-from-build.zh.md +++ b/.agents/notes/archived/simplification/2026-08-12-separate-source-launch-from-build.zh.md @@ -1,6 +1,7 @@ # Agent Note: 将源码启动与仓库构建分离 Status: implemented +Archived: 2026-09-04 [English](2026-08-12-separate-source-launch-from-build.md) | 中文 diff --git a/.agents/notes/archived/simplification/2026-08-12-trim-agent-teams-read-and-lifecycle-surface.i18n.yaml b/.agents/notes/archived/simplification/2026-08-12-trim-agent-teams-read-and-lifecycle-surface.i18n.yaml new file mode 100644 index 0000000000..c08d227781 --- /dev/null +++ b/.agents/notes/archived/simplification/2026-08-12-trim-agent-teams-read-and-lifecycle-surface.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/simplification/2026-08-12-trim-agent-teams-read-and-lifecycle-surface.md +2026-08-12-trim-agent-teams-read-and-lifecycle-surface.md: f4be797c47b804592818895db8daad0bb5b9e26d +2026-08-12-trim-agent-teams-read-and-lifecycle-surface.zh.md: 196c3b241eb2552b98c186e78d6a161b8b5cd5b5 diff --git a/.agents/notes/implemented/simplification/2026-08-12-trim-agent-teams-read-and-lifecycle-surface.md b/.agents/notes/archived/simplification/2026-08-12-trim-agent-teams-read-and-lifecycle-surface.md similarity index 99% rename from .agents/notes/implemented/simplification/2026-08-12-trim-agent-teams-read-and-lifecycle-surface.md rename to .agents/notes/archived/simplification/2026-08-12-trim-agent-teams-read-and-lifecycle-surface.md index 69a54dae6e..f4be797c47 100644 --- a/.agents/notes/implemented/simplification/2026-08-12-trim-agent-teams-read-and-lifecycle-surface.md +++ b/.agents/notes/archived/simplification/2026-08-12-trim-agent-teams-read-and-lifecycle-surface.md @@ -1,6 +1,7 @@ # Agent Note: Trim the Agent Teams read and lifecycle surface Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-12-trim-agent-teams-read-and-lifecycle-surface.zh.md) diff --git a/.agents/notes/implemented/simplification/2026-08-12-trim-agent-teams-read-and-lifecycle-surface.zh.md b/.agents/notes/archived/simplification/2026-08-12-trim-agent-teams-read-and-lifecycle-surface.zh.md similarity index 99% rename from .agents/notes/implemented/simplification/2026-08-12-trim-agent-teams-read-and-lifecycle-surface.zh.md rename to .agents/notes/archived/simplification/2026-08-12-trim-agent-teams-read-and-lifecycle-surface.zh.md index f43dc68006..196c3b241e 100644 --- a/.agents/notes/implemented/simplification/2026-08-12-trim-agent-teams-read-and-lifecycle-surface.zh.md +++ b/.agents/notes/archived/simplification/2026-08-12-trim-agent-teams-read-and-lifecycle-surface.zh.md @@ -1,6 +1,7 @@ # Agent Note: Trim the Agent Teams read and lifecycle surface Status: implemented +Archived: 2026-09-04 [English](2026-08-12-trim-agent-teams-read-and-lifecycle-surface.md) | 中文 diff --git a/.agents/notes/archived/simplification/2026-08-21-product-subagent-minimal-diagnostics.i18n.yaml b/.agents/notes/archived/simplification/2026-08-21-product-subagent-minimal-diagnostics.i18n.yaml new file mode 100644 index 0000000000..2d4a67eb95 --- /dev/null +++ b/.agents/notes/archived/simplification/2026-08-21-product-subagent-minimal-diagnostics.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/simplification/2026-08-21-product-subagent-minimal-diagnostics.md +2026-08-21-product-subagent-minimal-diagnostics.md: 8ba1e1a8d2ad5896421f029ae79265e00450b1da +2026-08-21-product-subagent-minimal-diagnostics.zh.md: 857d0c7d6127c3dadb661fbc73f9516b385b297a diff --git a/.agents/notes/implemented/simplification/2026-08-21-product-subagent-minimal-diagnostics.md b/.agents/notes/archived/simplification/2026-08-21-product-subagent-minimal-diagnostics.md similarity index 99% rename from .agents/notes/implemented/simplification/2026-08-21-product-subagent-minimal-diagnostics.md rename to .agents/notes/archived/simplification/2026-08-21-product-subagent-minimal-diagnostics.md index b99ed48791..8ba1e1a8d2 100644 --- a/.agents/notes/implemented/simplification/2026-08-21-product-subagent-minimal-diagnostics.md +++ b/.agents/notes/archived/simplification/2026-08-21-product-subagent-minimal-diagnostics.md @@ -1,6 +1,7 @@ # Agent Note: Product subagents expose minimal actionable diagnostics Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-21-product-subagent-minimal-diagnostics.zh.md) diff --git a/.agents/notes/implemented/simplification/2026-08-21-product-subagent-minimal-diagnostics.zh.md b/.agents/notes/archived/simplification/2026-08-21-product-subagent-minimal-diagnostics.zh.md similarity index 99% rename from .agents/notes/implemented/simplification/2026-08-21-product-subagent-minimal-diagnostics.zh.md rename to .agents/notes/archived/simplification/2026-08-21-product-subagent-minimal-diagnostics.zh.md index 46f948334d..857d0c7d61 100644 --- a/.agents/notes/implemented/simplification/2026-08-21-product-subagent-minimal-diagnostics.zh.md +++ b/.agents/notes/archived/simplification/2026-08-21-product-subagent-minimal-diagnostics.zh.md @@ -1,6 +1,7 @@ # Agent Note: 产品 subagent 公开最小可行动诊断 Status: implemented +Archived: 2026-09-04 [English](2026-08-21-product-subagent-minimal-diagnostics.md) | 中文 diff --git a/.agents/notes/archived/simplification/2026-08-24-owner-local-profile-tests-and-guides.i18n.yaml b/.agents/notes/archived/simplification/2026-08-24-owner-local-profile-tests-and-guides.i18n.yaml new file mode 100644 index 0000000000..828dd4a4d2 --- /dev/null +++ b/.agents/notes/archived/simplification/2026-08-24-owner-local-profile-tests-and-guides.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/simplification/2026-08-24-owner-local-profile-tests-and-guides.md +2026-08-24-owner-local-profile-tests-and-guides.md: fb9f1ad5c79fbf686cb84c4a9c8e4e4b835c6aef +2026-08-24-owner-local-profile-tests-and-guides.zh.md: 904d21d32651728fa567f3a18146cb8a36351371 diff --git a/.agents/notes/implemented/simplification/2026-08-24-owner-local-profile-tests-and-guides.md b/.agents/notes/archived/simplification/2026-08-24-owner-local-profile-tests-and-guides.md similarity index 99% rename from .agents/notes/implemented/simplification/2026-08-24-owner-local-profile-tests-and-guides.md rename to .agents/notes/archived/simplification/2026-08-24-owner-local-profile-tests-and-guides.md index 26a62dd9c2..fb9f1ad5c7 100644 --- a/.agents/notes/implemented/simplification/2026-08-24-owner-local-profile-tests-and-guides.md +++ b/.agents/notes/archived/simplification/2026-08-24-owner-local-profile-tests-and-guides.md @@ -1,6 +1,7 @@ # Agent Note: Owner-local profile tests and runnable guides Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-24-owner-local-profile-tests-and-guides.zh.md) diff --git a/.agents/notes/implemented/simplification/2026-08-24-owner-local-profile-tests-and-guides.zh.md b/.agents/notes/archived/simplification/2026-08-24-owner-local-profile-tests-and-guides.zh.md similarity index 99% rename from .agents/notes/implemented/simplification/2026-08-24-owner-local-profile-tests-and-guides.zh.md rename to .agents/notes/archived/simplification/2026-08-24-owner-local-profile-tests-and-guides.zh.md index fa65c09b8b..904d21d326 100644 --- a/.agents/notes/implemented/simplification/2026-08-24-owner-local-profile-tests-and-guides.zh.md +++ b/.agents/notes/archived/simplification/2026-08-24-owner-local-profile-tests-and-guides.zh.md @@ -1,6 +1,7 @@ # Agent Note: 归属方本地的 Profile 测试与可运行指南 Status: implemented +Archived: 2026-09-04 [English](2026-08-24-owner-local-profile-tests-and-guides.md) | 中文 diff --git a/.agents/notes/archived/simplification/2026-08-26-remove-agent-spine-demo.i18n.yaml b/.agents/notes/archived/simplification/2026-08-26-remove-agent-spine-demo.i18n.yaml new file mode 100644 index 0000000000..bf5eb496ee --- /dev/null +++ b/.agents/notes/archived/simplification/2026-08-26-remove-agent-spine-demo.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/simplification/2026-08-26-remove-agent-spine-demo.md +2026-08-26-remove-agent-spine-demo.md: 15768c10e15779c15c0207fc036af98d469d6a7c +2026-08-26-remove-agent-spine-demo.zh.md: 31c6cf46aaadb8895bcdc2ea8e8958390f279786 diff --git a/.agents/notes/implemented/simplification/2026-08-26-remove-agent-spine-demo.md b/.agents/notes/archived/simplification/2026-08-26-remove-agent-spine-demo.md similarity index 99% rename from .agents/notes/implemented/simplification/2026-08-26-remove-agent-spine-demo.md rename to .agents/notes/archived/simplification/2026-08-26-remove-agent-spine-demo.md index 47c9341ed9..15768c10e1 100644 --- a/.agents/notes/implemented/simplification/2026-08-26-remove-agent-spine-demo.md +++ b/.agents/notes/archived/simplification/2026-08-26-remove-agent-spine-demo.md @@ -1,6 +1,7 @@ # Agent Note: Remove the agent-spine demo package Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-26-remove-agent-spine-demo.zh.md) diff --git a/.agents/notes/implemented/simplification/2026-08-26-remove-agent-spine-demo.zh.md b/.agents/notes/archived/simplification/2026-08-26-remove-agent-spine-demo.zh.md similarity index 99% rename from .agents/notes/implemented/simplification/2026-08-26-remove-agent-spine-demo.zh.md rename to .agents/notes/archived/simplification/2026-08-26-remove-agent-spine-demo.zh.md index 5b48f71d3b..31c6cf46aa 100644 --- a/.agents/notes/implemented/simplification/2026-08-26-remove-agent-spine-demo.zh.md +++ b/.agents/notes/archived/simplification/2026-08-26-remove-agent-spine-demo.zh.md @@ -1,6 +1,7 @@ # Agent Note: 删除 agent-spine demo 包 Status: implemented +Archived: 2026-09-04 [English](2026-08-26-remove-agent-spine-demo.md) | 中文 diff --git a/.agents/notes/archived/simplification/2026-08-27-persistence-export-and-pre-release-trims.i18n.yaml b/.agents/notes/archived/simplification/2026-08-27-persistence-export-and-pre-release-trims.i18n.yaml new file mode 100644 index 0000000000..a20c04354d --- /dev/null +++ b/.agents/notes/archived/simplification/2026-08-27-persistence-export-and-pre-release-trims.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/simplification/2026-08-27-persistence-export-and-pre-release-trims.md +2026-08-27-persistence-export-and-pre-release-trims.md: 5a99bb7b38e0ce0ce6974897b09ec90fbe6bb074 +2026-08-27-persistence-export-and-pre-release-trims.zh.md: 2eb87104cf292d31e0775b8aa94e32947dd4f36b diff --git a/.agents/notes/implemented/simplification/2026-08-27-persistence-export-and-pre-release-trims.md b/.agents/notes/archived/simplification/2026-08-27-persistence-export-and-pre-release-trims.md similarity index 99% rename from .agents/notes/implemented/simplification/2026-08-27-persistence-export-and-pre-release-trims.md rename to .agents/notes/archived/simplification/2026-08-27-persistence-export-and-pre-release-trims.md index 90b050edee..5a99bb7b38 100644 --- a/.agents/notes/implemented/simplification/2026-08-27-persistence-export-and-pre-release-trims.md +++ b/.agents/notes/archived/simplification/2026-08-27-persistence-export-and-pre-release-trims.md @@ -1,6 +1,7 @@ # Agent Note: Persistence export() and pre-release read-path trims Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-27-persistence-export-and-pre-release-trims.zh.md) diff --git a/.agents/notes/implemented/simplification/2026-08-27-persistence-export-and-pre-release-trims.zh.md b/.agents/notes/archived/simplification/2026-08-27-persistence-export-and-pre-release-trims.zh.md similarity index 99% rename from .agents/notes/implemented/simplification/2026-08-27-persistence-export-and-pre-release-trims.zh.md rename to .agents/notes/archived/simplification/2026-08-27-persistence-export-and-pre-release-trims.zh.md index aa05be1ee0..2eb87104cf 100644 --- a/.agents/notes/implemented/simplification/2026-08-27-persistence-export-and-pre-release-trims.zh.md +++ b/.agents/notes/archived/simplification/2026-08-27-persistence-export-and-pre-release-trims.zh.md @@ -1,6 +1,7 @@ # Agent Note: 持久化 export() 与预发布读取路径精简 Status: implemented +Archived: 2026-09-04 [English](2026-08-27-persistence-export-and-pre-release-trims.md) | 中文 diff --git a/.agents/notes/archived/simplification/2026-08-28-remove-hero-input-glow.i18n.yaml b/.agents/notes/archived/simplification/2026-08-28-remove-hero-input-glow.i18n.yaml new file mode 100644 index 0000000000..cdcb9fae43 --- /dev/null +++ b/.agents/notes/archived/simplification/2026-08-28-remove-hero-input-glow.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/simplification/2026-08-28-remove-hero-input-glow.md +2026-08-28-remove-hero-input-glow.md: 43ef64cabca2dd07c4ac5a65f8098823b3291dfc +2026-08-28-remove-hero-input-glow.zh.md: 9ae9e1ac83326ee09a545a8d5b0057e2e1b84330 diff --git a/.agents/notes/implemented/simplification/2026-08-28-remove-hero-input-glow.md b/.agents/notes/archived/simplification/2026-08-28-remove-hero-input-glow.md similarity index 99% rename from .agents/notes/implemented/simplification/2026-08-28-remove-hero-input-glow.md rename to .agents/notes/archived/simplification/2026-08-28-remove-hero-input-glow.md index 929fce91d3..43ef64cabc 100644 --- a/.agents/notes/implemented/simplification/2026-08-28-remove-hero-input-glow.md +++ b/.agents/notes/archived/simplification/2026-08-28-remove-hero-input-glow.md @@ -1,6 +1,7 @@ # Agent Note: The hero input glow is removed Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-28-remove-hero-input-glow.zh.md) diff --git a/.agents/notes/implemented/simplification/2026-08-28-remove-hero-input-glow.zh.md b/.agents/notes/archived/simplification/2026-08-28-remove-hero-input-glow.zh.md similarity index 99% rename from .agents/notes/implemented/simplification/2026-08-28-remove-hero-input-glow.zh.md rename to .agents/notes/archived/simplification/2026-08-28-remove-hero-input-glow.zh.md index e8a32c8dc6..9ae9e1ac83 100644 --- a/.agents/notes/implemented/simplification/2026-08-28-remove-hero-input-glow.zh.md +++ b/.agents/notes/archived/simplification/2026-08-28-remove-hero-input-glow.zh.md @@ -1,6 +1,7 @@ # Agent Note: The hero input glow is removed Status: implemented +Archived: 2026-09-04 [English](2026-08-28-remove-hero-input-glow.md) | 中文 diff --git a/.agents/notes/archived/simplification/2026-08-28-windows-only-absent-probe-repair.i18n.yaml b/.agents/notes/archived/simplification/2026-08-28-windows-only-absent-probe-repair.i18n.yaml new file mode 100644 index 0000000000..1a9fe55050 --- /dev/null +++ b/.agents/notes/archived/simplification/2026-08-28-windows-only-absent-probe-repair.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/simplification/2026-08-28-windows-only-absent-probe-repair.md +2026-08-28-windows-only-absent-probe-repair.md: 887e5fcf2280700b0f9b5c3fed821fdc4327a6ca +2026-08-28-windows-only-absent-probe-repair.zh.md: 478110899d5faf931298c2e022ebaf859a1ebfc9 diff --git a/.agents/notes/implemented/simplification/2026-08-28-windows-only-absent-probe-repair.md b/.agents/notes/archived/simplification/2026-08-28-windows-only-absent-probe-repair.md similarity index 99% rename from .agents/notes/implemented/simplification/2026-08-28-windows-only-absent-probe-repair.md rename to .agents/notes/archived/simplification/2026-08-28-windows-only-absent-probe-repair.md index 55fa7bee8d..887e5fcf22 100644 --- a/.agents/notes/implemented/simplification/2026-08-28-windows-only-absent-probe-repair.md +++ b/.agents/notes/archived/simplification/2026-08-28-windows-only-absent-probe-repair.md @@ -1,6 +1,7 @@ # Agent Note: The absent-probe parent repair runs on Windows only Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-28-windows-only-absent-probe-repair.zh.md) diff --git a/.agents/notes/implemented/simplification/2026-08-28-windows-only-absent-probe-repair.zh.md b/.agents/notes/archived/simplification/2026-08-28-windows-only-absent-probe-repair.zh.md similarity index 99% rename from .agents/notes/implemented/simplification/2026-08-28-windows-only-absent-probe-repair.zh.md rename to .agents/notes/archived/simplification/2026-08-28-windows-only-absent-probe-repair.zh.md index 5a459cab1f..478110899d 100644 --- a/.agents/notes/implemented/simplification/2026-08-28-windows-only-absent-probe-repair.zh.md +++ b/.agents/notes/archived/simplification/2026-08-28-windows-only-absent-probe-repair.zh.md @@ -1,6 +1,7 @@ # Agent Note: 缺失探测的父目录修复只在 Windows 上执行 Status: implemented +Archived: 2026-09-04 [English](2026-08-28-windows-only-absent-probe-repair.md) | 中文 diff --git a/.agents/notes/archived/simplification/2026-08-30-team-send-message-steer.i18n.yaml b/.agents/notes/archived/simplification/2026-08-30-team-send-message-steer.i18n.yaml new file mode 100644 index 0000000000..7a5d9770fd --- /dev/null +++ b/.agents/notes/archived/simplification/2026-08-30-team-send-message-steer.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/simplification/2026-08-30-team-send-message-steer.md +2026-08-30-team-send-message-steer.md: f313a6fb11e4e32ff63944e961c615972807a820 +2026-08-30-team-send-message-steer.zh.md: fd5f7f3b9641048b1d1a113e5e82bef5e0fdf845 diff --git a/.agents/notes/implemented/simplification/2026-08-30-team-send-message-steer.md b/.agents/notes/archived/simplification/2026-08-30-team-send-message-steer.md similarity index 99% rename from .agents/notes/implemented/simplification/2026-08-30-team-send-message-steer.md rename to .agents/notes/archived/simplification/2026-08-30-team-send-message-steer.md index 9eb38ec96f..f313a6fb11 100644 --- a/.agents/notes/implemented/simplification/2026-08-30-team-send-message-steer.md +++ b/.agents/notes/archived/simplification/2026-08-30-team-send-message-steer.md @@ -1,6 +1,7 @@ # Agent Note: Team messaging uses one Steer send_message operation Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-30-team-send-message-steer.zh.md) diff --git a/.agents/notes/implemented/simplification/2026-08-30-team-send-message-steer.zh.md b/.agents/notes/archived/simplification/2026-08-30-team-send-message-steer.zh.md similarity index 99% rename from .agents/notes/implemented/simplification/2026-08-30-team-send-message-steer.zh.md rename to .agents/notes/archived/simplification/2026-08-30-team-send-message-steer.zh.md index 44ed792a1c..fd5f7f3b96 100644 --- a/.agents/notes/implemented/simplification/2026-08-30-team-send-message-steer.zh.md +++ b/.agents/notes/archived/simplification/2026-08-30-team-send-message-steer.zh.md @@ -1,6 +1,7 @@ # Agent Note: Team 消息使用单一 Steer send_message 操作 Status: implemented +Archived: 2026-09-04 [English](2026-08-30-team-send-message-steer.md) | 中文 diff --git a/.agents/notes/archived/simplification/2026-09-01-css-produced-file-layout.i18n.yaml b/.agents/notes/archived/simplification/2026-09-01-css-produced-file-layout.i18n.yaml new file mode 100644 index 0000000000..134b7310e5 --- /dev/null +++ b/.agents/notes/archived/simplification/2026-09-01-css-produced-file-layout.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/simplification/2026-09-01-css-produced-file-layout.md +2026-09-01-css-produced-file-layout.md: cc25fc2ab86cbbc03f49db72d12f107dd8c7aaf9 +2026-09-01-css-produced-file-layout.zh.md: f9b670d9f7451304e818c4d1e2febe704caa617d diff --git a/.agents/notes/implemented/simplification/2026-09-01-css-produced-file-layout.md b/.agents/notes/archived/simplification/2026-09-01-css-produced-file-layout.md similarity index 99% rename from .agents/notes/implemented/simplification/2026-09-01-css-produced-file-layout.md rename to .agents/notes/archived/simplification/2026-09-01-css-produced-file-layout.md index fce7d70b21..cc25fc2ab8 100644 --- a/.agents/notes/implemented/simplification/2026-09-01-css-produced-file-layout.md +++ b/.agents/notes/archived/simplification/2026-09-01-css-produced-file-layout.md @@ -1,6 +1,7 @@ # Agent Note: replace produced-file probes with CSS width bands Status: implemented +Archived: 2026-09-04 English | [中文](2026-09-01-css-produced-file-layout.zh.md) diff --git a/.agents/notes/implemented/simplification/2026-09-01-css-produced-file-layout.zh.md b/.agents/notes/archived/simplification/2026-09-01-css-produced-file-layout.zh.md similarity index 99% rename from .agents/notes/implemented/simplification/2026-09-01-css-produced-file-layout.zh.md rename to .agents/notes/archived/simplification/2026-09-01-css-produced-file-layout.zh.md index bc8ad941db..f9b670d9f7 100644 --- a/.agents/notes/implemented/simplification/2026-09-01-css-produced-file-layout.zh.md +++ b/.agents/notes/archived/simplification/2026-09-01-css-produced-file-layout.zh.md @@ -1,6 +1,7 @@ # Agent Note: 以 CSS 宽度档位替代产出文件探针 Status: implemented +Archived: 2026-09-04 [English](2026-09-01-css-produced-file-layout.md) | 中文 diff --git a/.agents/notes/archived/simplification/2026-09-01-ptc-omits-workflow-tool.i18n.yaml b/.agents/notes/archived/simplification/2026-09-01-ptc-omits-workflow-tool.i18n.yaml new file mode 100644 index 0000000000..33c0ca7ecf --- /dev/null +++ b/.agents/notes/archived/simplification/2026-09-01-ptc-omits-workflow-tool.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/simplification/2026-09-01-ptc-omits-workflow-tool.md +2026-09-01-ptc-omits-workflow-tool.md: ae53b30e43f9c27701724961162a1844111b1d2e +2026-09-01-ptc-omits-workflow-tool.zh.md: 2fc839d0729b083ee86a8dff0c586fc426519421 diff --git a/.agents/notes/implemented/simplification/2026-09-01-ptc-omits-workflow-tool.md b/.agents/notes/archived/simplification/2026-09-01-ptc-omits-workflow-tool.md similarity index 99% rename from .agents/notes/implemented/simplification/2026-09-01-ptc-omits-workflow-tool.md rename to .agents/notes/archived/simplification/2026-09-01-ptc-omits-workflow-tool.md index 7453e06187..ae53b30e43 100644 --- a/.agents/notes/implemented/simplification/2026-09-01-ptc-omits-workflow-tool.md +++ b/.agents/notes/archived/simplification/2026-09-01-ptc-omits-workflow-tool.md @@ -1,6 +1,7 @@ # Agent Note: PTC preset omits the general workflow tool Status: implemented +Archived: 2026-09-04 English | [中文](2026-09-01-ptc-omits-workflow-tool.zh.md) diff --git a/.agents/notes/implemented/simplification/2026-09-01-ptc-omits-workflow-tool.zh.md b/.agents/notes/archived/simplification/2026-09-01-ptc-omits-workflow-tool.zh.md similarity index 99% rename from .agents/notes/implemented/simplification/2026-09-01-ptc-omits-workflow-tool.zh.md rename to .agents/notes/archived/simplification/2026-09-01-ptc-omits-workflow-tool.zh.md index 71f64c1104..2fc839d072 100644 --- a/.agents/notes/implemented/simplification/2026-09-01-ptc-omits-workflow-tool.zh.md +++ b/.agents/notes/archived/simplification/2026-09-01-ptc-omits-workflow-tool.zh.md @@ -1,6 +1,7 @@ # Agent Note: PTC preset 不提供通用 workflow 工具 Status: implemented +Archived: 2026-09-04 [English](2026-09-01-ptc-omits-workflow-tool.md) | 中文 diff --git a/.agents/notes/archived/testing/2026-06-11-property-based-testing.i18n.yaml b/.agents/notes/archived/testing/2026-06-11-property-based-testing.i18n.yaml new file mode 100644 index 0000000000..1b9153e1d6 --- /dev/null +++ b/.agents/notes/archived/testing/2026-06-11-property-based-testing.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/testing/2026-06-11-property-based-testing.md +2026-06-11-property-based-testing.md: e05574c8afba0eba19df7f59dd68225c3202ce18 +2026-06-11-property-based-testing.zh.md: 20ccf68c3a28cda2b5ae1c5f3f8e720c5213e914 diff --git a/.agents/notes/implemented/testing/2026-06-11-property-based-testing.md b/.agents/notes/archived/testing/2026-06-11-property-based-testing.md similarity index 99% rename from .agents/notes/implemented/testing/2026-06-11-property-based-testing.md rename to .agents/notes/archived/testing/2026-06-11-property-based-testing.md index 7ab6f2daeb..e05574c8af 100644 --- a/.agents/notes/implemented/testing/2026-06-11-property-based-testing.md +++ b/.agents/notes/archived/testing/2026-06-11-property-based-testing.md @@ -1,6 +1,7 @@ # Agent Note: Property-based testing for protocol-shaped code Status: implemented +Archived: 2026-09-04 English | [中文](2026-06-11-property-based-testing.zh.md) diff --git a/.agents/notes/implemented/testing/2026-06-11-property-based-testing.zh.md b/.agents/notes/archived/testing/2026-06-11-property-based-testing.zh.md similarity index 99% rename from .agents/notes/implemented/testing/2026-06-11-property-based-testing.zh.md rename to .agents/notes/archived/testing/2026-06-11-property-based-testing.zh.md index 36855c74f6..20ccf68c3a 100644 --- a/.agents/notes/implemented/testing/2026-06-11-property-based-testing.zh.md +++ b/.agents/notes/archived/testing/2026-06-11-property-based-testing.zh.md @@ -1,6 +1,7 @@ # Agent Note: 对协议形态代码进行基于属性的测试 Status: implemented +Archived: 2026-09-04 [English](2026-06-11-property-based-testing.md) | 中文 diff --git a/.agents/notes/archived/testing/2026-06-22-fork-child-replay-seed-boundary.i18n.yaml b/.agents/notes/archived/testing/2026-06-22-fork-child-replay-seed-boundary.i18n.yaml new file mode 100644 index 0000000000..06dd1f69a7 --- /dev/null +++ b/.agents/notes/archived/testing/2026-06-22-fork-child-replay-seed-boundary.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/testing/2026-06-22-fork-child-replay-seed-boundary.md +2026-06-22-fork-child-replay-seed-boundary.md: da08d6dd9bf3719d1775686877a258c80ffd19d1 +2026-06-22-fork-child-replay-seed-boundary.zh.md: 7be2527414aca87799f339c82cd6333e6ae2b51d diff --git a/.agents/notes/implemented/testing/2026-06-22-fork-child-replay-seed-boundary.md b/.agents/notes/archived/testing/2026-06-22-fork-child-replay-seed-boundary.md similarity index 99% rename from .agents/notes/implemented/testing/2026-06-22-fork-child-replay-seed-boundary.md rename to .agents/notes/archived/testing/2026-06-22-fork-child-replay-seed-boundary.md index 3c1148f4c7..da08d6dd9b 100644 --- a/.agents/notes/implemented/testing/2026-06-22-fork-child-replay-seed-boundary.md +++ b/.agents/notes/archived/testing/2026-06-22-fork-child-replay-seed-boundary.md @@ -1,6 +1,7 @@ # Agent Note: Persist the seed boundary so fork-child replay routes correctly Status: implemented +Archived: 2026-09-04 English | [中文](2026-06-22-fork-child-replay-seed-boundary.zh.md) diff --git a/.agents/notes/implemented/testing/2026-06-22-fork-child-replay-seed-boundary.zh.md b/.agents/notes/archived/testing/2026-06-22-fork-child-replay-seed-boundary.zh.md similarity index 99% rename from .agents/notes/implemented/testing/2026-06-22-fork-child-replay-seed-boundary.zh.md rename to .agents/notes/archived/testing/2026-06-22-fork-child-replay-seed-boundary.zh.md index f7646132a2..7be2527414 100644 --- a/.agents/notes/implemented/testing/2026-06-22-fork-child-replay-seed-boundary.zh.md +++ b/.agents/notes/archived/testing/2026-06-22-fork-child-replay-seed-boundary.zh.md @@ -1,6 +1,7 @@ # Agent Note: 持久化 seed 边界以确保 fork 子会话回放正确路由 Status: implemented +Archived: 2026-09-04 [English](2026-06-22-fork-child-replay-seed-boundary.md) | 中文 diff --git a/.agents/notes/archived/testing/2026-06-22-subagent-snapshot-replay.i18n.yaml b/.agents/notes/archived/testing/2026-06-22-subagent-snapshot-replay.i18n.yaml new file mode 100644 index 0000000000..cc919c9d7d --- /dev/null +++ b/.agents/notes/archived/testing/2026-06-22-subagent-snapshot-replay.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/testing/2026-06-22-subagent-snapshot-replay.md +2026-06-22-subagent-snapshot-replay.md: 7beb35764ae81154c1d5f73d74acf341eca7b0e2 +2026-06-22-subagent-snapshot-replay.zh.md: c45acdfcdcddf84fc22cc564406b5497f7c42996 diff --git a/.agents/notes/implemented/testing/2026-06-22-subagent-snapshot-replay.md b/.agents/notes/archived/testing/2026-06-22-subagent-snapshot-replay.md similarity index 99% rename from .agents/notes/implemented/testing/2026-06-22-subagent-snapshot-replay.md rename to .agents/notes/archived/testing/2026-06-22-subagent-snapshot-replay.md index 0d5d1fd2c9..7beb35764a 100644 --- a/.agents/notes/implemented/testing/2026-06-22-subagent-snapshot-replay.md +++ b/.agents/notes/archived/testing/2026-06-22-subagent-snapshot-replay.md @@ -1,6 +1,7 @@ # Agent Note: Per-session snapshot replay for nested agents Status: implemented +Archived: 2026-09-04 English | [中文](2026-06-22-subagent-snapshot-replay.zh.md) diff --git a/.agents/notes/implemented/testing/2026-06-22-subagent-snapshot-replay.zh.md b/.agents/notes/archived/testing/2026-06-22-subagent-snapshot-replay.zh.md similarity index 99% rename from .agents/notes/implemented/testing/2026-06-22-subagent-snapshot-replay.zh.md rename to .agents/notes/archived/testing/2026-06-22-subagent-snapshot-replay.zh.md index 130ea1fac9..c45acdfcdc 100644 --- a/.agents/notes/implemented/testing/2026-06-22-subagent-snapshot-replay.zh.md +++ b/.agents/notes/archived/testing/2026-06-22-subagent-snapshot-replay.zh.md @@ -1,6 +1,7 @@ # Agent Note: 嵌套 agent 的逐会话快照回放 Status: implemented +Archived: 2026-09-04 [English](2026-06-22-subagent-snapshot-replay.md) | 中文 diff --git a/.agents/notes/archived/testing/2026-07-22-cross-platform-test-fixtures.i18n.yaml b/.agents/notes/archived/testing/2026-07-22-cross-platform-test-fixtures.i18n.yaml new file mode 100644 index 0000000000..eabb9df467 --- /dev/null +++ b/.agents/notes/archived/testing/2026-07-22-cross-platform-test-fixtures.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/testing/2026-07-22-cross-platform-test-fixtures.md +2026-07-22-cross-platform-test-fixtures.md: edf2eb6b97f55dfa25c986978503cdd578f481f4 +2026-07-22-cross-platform-test-fixtures.zh.md: 88a7904db3ca6e7811c94c1a66ab5cc4a83213e9 diff --git a/.agents/notes/implemented/testing/2026-07-22-cross-platform-test-fixtures.md b/.agents/notes/archived/testing/2026-07-22-cross-platform-test-fixtures.md similarity index 99% rename from .agents/notes/implemented/testing/2026-07-22-cross-platform-test-fixtures.md rename to .agents/notes/archived/testing/2026-07-22-cross-platform-test-fixtures.md index 9114481543..edf2eb6b97 100644 --- a/.agents/notes/implemented/testing/2026-07-22-cross-platform-test-fixtures.md +++ b/.agents/notes/archived/testing/2026-07-22-cross-platform-test-fixtures.md @@ -1,6 +1,7 @@ # Agent Note: Keep supported-platform tests semantic Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-22-cross-platform-test-fixtures.zh.md) diff --git a/.agents/notes/implemented/testing/2026-07-22-cross-platform-test-fixtures.zh.md b/.agents/notes/archived/testing/2026-07-22-cross-platform-test-fixtures.zh.md similarity index 99% rename from .agents/notes/implemented/testing/2026-07-22-cross-platform-test-fixtures.zh.md rename to .agents/notes/archived/testing/2026-07-22-cross-platform-test-fixtures.zh.md index 710ec5887f..88a7904db3 100644 --- a/.agents/notes/implemented/testing/2026-07-22-cross-platform-test-fixtures.zh.md +++ b/.agents/notes/archived/testing/2026-07-22-cross-platform-test-fixtures.zh.md @@ -1,6 +1,7 @@ # Agent Note: 让受支持平台的测试聚焦语义 Status: implemented +Archived: 2026-09-04 [English](2026-07-22-cross-platform-test-fixtures.md) | 中文 diff --git a/.agents/notes/archived/testing/2026-07-25-scriptable-llm-wire-fault-server.i18n.yaml b/.agents/notes/archived/testing/2026-07-25-scriptable-llm-wire-fault-server.i18n.yaml new file mode 100644 index 0000000000..69aee2eb3a --- /dev/null +++ b/.agents/notes/archived/testing/2026-07-25-scriptable-llm-wire-fault-server.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/testing/2026-07-25-scriptable-llm-wire-fault-server.md +2026-07-25-scriptable-llm-wire-fault-server.md: 5a691b8885bb6fbc99d9b59c28f64f2218acea7f +2026-07-25-scriptable-llm-wire-fault-server.zh.md: e2c6e7244b187c2eddaf1163c14fc04bd58066d3 diff --git a/.agents/notes/implemented/testing/2026-07-25-scriptable-llm-wire-fault-server.md b/.agents/notes/archived/testing/2026-07-25-scriptable-llm-wire-fault-server.md similarity index 99% rename from .agents/notes/implemented/testing/2026-07-25-scriptable-llm-wire-fault-server.md rename to .agents/notes/archived/testing/2026-07-25-scriptable-llm-wire-fault-server.md index b8e64d92db..5a691b8885 100644 --- a/.agents/notes/implemented/testing/2026-07-25-scriptable-llm-wire-fault-server.md +++ b/.agents/notes/archived/testing/2026-07-25-scriptable-llm-wire-fault-server.md @@ -1,6 +1,7 @@ # Agent Note: Scriptable LLM wire fault server Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-25-scriptable-llm-wire-fault-server.zh.md) diff --git a/.agents/notes/implemented/testing/2026-07-25-scriptable-llm-wire-fault-server.zh.md b/.agents/notes/archived/testing/2026-07-25-scriptable-llm-wire-fault-server.zh.md similarity index 99% rename from .agents/notes/implemented/testing/2026-07-25-scriptable-llm-wire-fault-server.zh.md rename to .agents/notes/archived/testing/2026-07-25-scriptable-llm-wire-fault-server.zh.md index 54604e2d8c..e2c6e7244b 100644 --- a/.agents/notes/implemented/testing/2026-07-25-scriptable-llm-wire-fault-server.zh.md +++ b/.agents/notes/archived/testing/2026-07-25-scriptable-llm-wire-fault-server.zh.md @@ -1,6 +1,7 @@ # Agent Note: 可脚本控制的 LLM 协议层故障服务器 Status: implemented +Archived: 2026-09-04 [English](2026-07-25-scriptable-llm-wire-fault-server.md) | 中文 diff --git a/.agents/notes/archived/testing/2026-07-30-vitest-jsdom-webstorage-ownership.i18n.yaml b/.agents/notes/archived/testing/2026-07-30-vitest-jsdom-webstorage-ownership.i18n.yaml new file mode 100644 index 0000000000..59b3c2b384 --- /dev/null +++ b/.agents/notes/archived/testing/2026-07-30-vitest-jsdom-webstorage-ownership.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/testing/2026-07-30-vitest-jsdom-webstorage-ownership.md +2026-07-30-vitest-jsdom-webstorage-ownership.md: 1cc5d7ff306b6f1426d6ee36359674f826b2cd8a +2026-07-30-vitest-jsdom-webstorage-ownership.zh.md: cdd64d26f06e9b3fe62b8e01739f0e30e8b39212 diff --git a/.agents/notes/implemented/testing/2026-07-30-vitest-jsdom-webstorage-ownership.md b/.agents/notes/archived/testing/2026-07-30-vitest-jsdom-webstorage-ownership.md similarity index 99% rename from .agents/notes/implemented/testing/2026-07-30-vitest-jsdom-webstorage-ownership.md rename to .agents/notes/archived/testing/2026-07-30-vitest-jsdom-webstorage-ownership.md index 3956a7566f..1cc5d7ff30 100644 --- a/.agents/notes/implemented/testing/2026-07-30-vitest-jsdom-webstorage-ownership.md +++ b/.agents/notes/archived/testing/2026-07-30-vitest-jsdom-webstorage-ownership.md @@ -1,6 +1,7 @@ # Agent Note: Keep browser storage owned by jsdom in Vitest Status: implemented +Archived: 2026-09-04 English | [中文](2026-07-30-vitest-jsdom-webstorage-ownership.zh.md) diff --git a/.agents/notes/implemented/testing/2026-07-30-vitest-jsdom-webstorage-ownership.zh.md b/.agents/notes/archived/testing/2026-07-30-vitest-jsdom-webstorage-ownership.zh.md similarity index 99% rename from .agents/notes/implemented/testing/2026-07-30-vitest-jsdom-webstorage-ownership.zh.md rename to .agents/notes/archived/testing/2026-07-30-vitest-jsdom-webstorage-ownership.zh.md index bd01ffdc68..cdd64d26f0 100644 --- a/.agents/notes/implemented/testing/2026-07-30-vitest-jsdom-webstorage-ownership.zh.md +++ b/.agents/notes/archived/testing/2026-07-30-vitest-jsdom-webstorage-ownership.zh.md @@ -1,6 +1,7 @@ # Agent Note: 在 Vitest 中将浏览器存储交由 jsdom 管理 Status: implemented +Archived: 2026-09-04 [English](2026-07-30-vitest-jsdom-webstorage-ownership.md) | 中文 diff --git a/.agents/notes/archived/testing/2026-08-13-python-minimal-model-visible-snapshot.i18n.yaml b/.agents/notes/archived/testing/2026-08-13-python-minimal-model-visible-snapshot.i18n.yaml new file mode 100644 index 0000000000..614bd95f6f --- /dev/null +++ b/.agents/notes/archived/testing/2026-08-13-python-minimal-model-visible-snapshot.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/testing/2026-08-13-python-minimal-model-visible-snapshot.md +2026-08-13-python-minimal-model-visible-snapshot.md: c97e92237c16a25d3b52a4af10c26fb6e48bb370 +2026-08-13-python-minimal-model-visible-snapshot.zh.md: 0baed199b6edf33ca2e72d4643718b4e46098cf3 diff --git a/.agents/notes/implemented/testing/2026-08-13-python-minimal-model-visible-snapshot.md b/.agents/notes/archived/testing/2026-08-13-python-minimal-model-visible-snapshot.md similarity index 99% rename from .agents/notes/implemented/testing/2026-08-13-python-minimal-model-visible-snapshot.md rename to .agents/notes/archived/testing/2026-08-13-python-minimal-model-visible-snapshot.md index 1cef57c440..c97e92237c 100644 --- a/.agents/notes/implemented/testing/2026-08-13-python-minimal-model-visible-snapshot.md +++ b/.agents/notes/archived/testing/2026-08-13-python-minimal-model-visible-snapshot.md @@ -1,6 +1,7 @@ # Agent Note: Python minimal-composition model-visible snapshot Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-13-python-minimal-model-visible-snapshot.zh.md) diff --git a/.agents/notes/implemented/testing/2026-08-13-python-minimal-model-visible-snapshot.zh.md b/.agents/notes/archived/testing/2026-08-13-python-minimal-model-visible-snapshot.zh.md similarity index 99% rename from .agents/notes/implemented/testing/2026-08-13-python-minimal-model-visible-snapshot.zh.md rename to .agents/notes/archived/testing/2026-08-13-python-minimal-model-visible-snapshot.zh.md index 0d2cc327cf..0baed199b6 100644 --- a/.agents/notes/implemented/testing/2026-08-13-python-minimal-model-visible-snapshot.zh.md +++ b/.agents/notes/archived/testing/2026-08-13-python-minimal-model-visible-snapshot.zh.md @@ -1,6 +1,7 @@ # Agent Note: Python 极简组合的模型可见快照 Status: implemented +Archived: 2026-09-04 [English](2026-08-13-python-minimal-model-visible-snapshot.md) | 中文 diff --git a/.agents/notes/archived/testing/2026-08-18-session-snapshot-envelope-projection.i18n.yaml b/.agents/notes/archived/testing/2026-08-18-session-snapshot-envelope-projection.i18n.yaml new file mode 100644 index 0000000000..7cb8c1cbf2 --- /dev/null +++ b/.agents/notes/archived/testing/2026-08-18-session-snapshot-envelope-projection.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/testing/2026-08-18-session-snapshot-envelope-projection.md +2026-08-18-session-snapshot-envelope-projection.md: 9542330b16c4395837653a7c5118012be467e0d2 +2026-08-18-session-snapshot-envelope-projection.zh.md: 49cce9a60a9aa267391c35542230a0bd402713f8 diff --git a/.agents/notes/implemented/testing/2026-08-18-session-snapshot-envelope-projection.md b/.agents/notes/archived/testing/2026-08-18-session-snapshot-envelope-projection.md similarity index 99% rename from .agents/notes/implemented/testing/2026-08-18-session-snapshot-envelope-projection.md rename to .agents/notes/archived/testing/2026-08-18-session-snapshot-envelope-projection.md index 28f8f7f823..9542330b16 100644 --- a/.agents/notes/implemented/testing/2026-08-18-session-snapshot-envelope-projection.md +++ b/.agents/notes/archived/testing/2026-08-18-session-snapshot-envelope-projection.md @@ -1,6 +1,7 @@ # Agent Note: Session snapshot envelope projection Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-18-session-snapshot-envelope-projection.zh.md) diff --git a/.agents/notes/implemented/testing/2026-08-18-session-snapshot-envelope-projection.zh.md b/.agents/notes/archived/testing/2026-08-18-session-snapshot-envelope-projection.zh.md similarity index 99% rename from .agents/notes/implemented/testing/2026-08-18-session-snapshot-envelope-projection.zh.md rename to .agents/notes/archived/testing/2026-08-18-session-snapshot-envelope-projection.zh.md index 80eb14da23..49cce9a60a 100644 --- a/.agents/notes/implemented/testing/2026-08-18-session-snapshot-envelope-projection.zh.md +++ b/.agents/notes/archived/testing/2026-08-18-session-snapshot-envelope-projection.zh.md @@ -1,6 +1,7 @@ # Agent Note: 会话快照 envelope 投影 Status: implemented +Archived: 2026-09-04 [English](2026-08-18-session-snapshot-envelope-projection.md) | 中文 diff --git a/.agents/notes/archived/testing/2026-08-27-translation-pairing-merge-budget.i18n.yaml b/.agents/notes/archived/testing/2026-08-27-translation-pairing-merge-budget.i18n.yaml new file mode 100644 index 0000000000..15d87cb8ed --- /dev/null +++ b/.agents/notes/archived/testing/2026-08-27-translation-pairing-merge-budget.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/testing/2026-08-27-translation-pairing-merge-budget.md +2026-08-27-translation-pairing-merge-budget.md: b8b01f8647687fd2f0a1f30b0a63aafe5d5f910b +2026-08-27-translation-pairing-merge-budget.zh.md: 06e1d1ff356f582da8841d42035a8c13c5474ff0 diff --git a/.agents/notes/implemented/testing/2026-08-27-translation-pairing-merge-budget.md b/.agents/notes/archived/testing/2026-08-27-translation-pairing-merge-budget.md similarity index 99% rename from .agents/notes/implemented/testing/2026-08-27-translation-pairing-merge-budget.md rename to .agents/notes/archived/testing/2026-08-27-translation-pairing-merge-budget.md index 296e71fbbe..b8b01f8647 100644 --- a/.agents/notes/implemented/testing/2026-08-27-translation-pairing-merge-budget.md +++ b/.agents/notes/archived/testing/2026-08-27-translation-pairing-merge-budget.md @@ -1,6 +1,7 @@ # Agent Note: Coverage-lane budget for the translation-pairing-merge suite Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-27-translation-pairing-merge-budget.zh.md) diff --git a/.agents/notes/implemented/testing/2026-08-27-translation-pairing-merge-budget.zh.md b/.agents/notes/archived/testing/2026-08-27-translation-pairing-merge-budget.zh.md similarity index 99% rename from .agents/notes/implemented/testing/2026-08-27-translation-pairing-merge-budget.zh.md rename to .agents/notes/archived/testing/2026-08-27-translation-pairing-merge-budget.zh.md index 8bdac59023..06e1d1ff35 100644 --- a/.agents/notes/implemented/testing/2026-08-27-translation-pairing-merge-budget.zh.md +++ b/.agents/notes/archived/testing/2026-08-27-translation-pairing-merge-budget.zh.md @@ -1,6 +1,7 @@ # Agent Note: translation-pairing-merge 套件的 coverage lane 预算 Status: implemented +Archived: 2026-09-04 [English](2026-08-27-translation-pairing-merge-budget.md) | 中文 diff --git a/.agents/notes/archived/testing/2026-08-28-ci-test-reliability-skill.i18n.yaml b/.agents/notes/archived/testing/2026-08-28-ci-test-reliability-skill.i18n.yaml new file mode 100644 index 0000000000..a281314188 --- /dev/null +++ b/.agents/notes/archived/testing/2026-08-28-ci-test-reliability-skill.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/testing/2026-08-28-ci-test-reliability-skill.md +2026-08-28-ci-test-reliability-skill.md: c48cd48cab5d3fcedd55c1f47f45278ffad6e998 +2026-08-28-ci-test-reliability-skill.zh.md: 7251b38298adb95d2f1610bed757ac3feb971564 diff --git a/.agents/notes/implemented/testing/2026-08-28-ci-test-reliability-skill.md b/.agents/notes/archived/testing/2026-08-28-ci-test-reliability-skill.md similarity index 99% rename from .agents/notes/implemented/testing/2026-08-28-ci-test-reliability-skill.md rename to .agents/notes/archived/testing/2026-08-28-ci-test-reliability-skill.md index 1c8e0389df..c48cd48cab 100644 --- a/.agents/notes/implemented/testing/2026-08-28-ci-test-reliability-skill.md +++ b/.agents/notes/archived/testing/2026-08-28-ci-test-reliability-skill.md @@ -1,6 +1,7 @@ # Agent Note: CI test reliability skill Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-28-ci-test-reliability-skill.zh.md) diff --git a/.agents/notes/implemented/testing/2026-08-28-ci-test-reliability-skill.zh.md b/.agents/notes/archived/testing/2026-08-28-ci-test-reliability-skill.zh.md similarity index 99% rename from .agents/notes/implemented/testing/2026-08-28-ci-test-reliability-skill.zh.md rename to .agents/notes/archived/testing/2026-08-28-ci-test-reliability-skill.zh.md index ef36eab497..7251b38298 100644 --- a/.agents/notes/implemented/testing/2026-08-28-ci-test-reliability-skill.zh.md +++ b/.agents/notes/archived/testing/2026-08-28-ci-test-reliability-skill.zh.md @@ -1,6 +1,7 @@ # Agent Note: CI 测试可靠性 Skill Status: implemented +Archived: 2026-09-04 [English](2026-08-28-ci-test-reliability-skill.md) | 中文 diff --git a/.agents/notes/archived/testing/2026-08-29-windows-lane-hook-and-lefthook-budget.i18n.yaml b/.agents/notes/archived/testing/2026-08-29-windows-lane-hook-and-lefthook-budget.i18n.yaml new file mode 100644 index 0000000000..bca15b8761 --- /dev/null +++ b/.agents/notes/archived/testing/2026-08-29-windows-lane-hook-and-lefthook-budget.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/archived/testing/2026-08-29-windows-lane-hook-and-lefthook-budget.md +2026-08-29-windows-lane-hook-and-lefthook-budget.md: 414d9b32fa4a80a5f690659213246e10daa42177 +2026-08-29-windows-lane-hook-and-lefthook-budget.zh.md: 9589134e954d7b1491d35f5430c96f9f20935396 diff --git a/.agents/notes/implemented/testing/2026-08-29-windows-lane-hook-and-lefthook-budget.md b/.agents/notes/archived/testing/2026-08-29-windows-lane-hook-and-lefthook-budget.md similarity index 99% rename from .agents/notes/implemented/testing/2026-08-29-windows-lane-hook-and-lefthook-budget.md rename to .agents/notes/archived/testing/2026-08-29-windows-lane-hook-and-lefthook-budget.md index 40ebba25e4..414d9b32fa 100644 --- a/.agents/notes/implemented/testing/2026-08-29-windows-lane-hook-and-lefthook-budget.md +++ b/.agents/notes/archived/testing/2026-08-29-windows-lane-hook-and-lefthook-budget.md @@ -1,6 +1,7 @@ # Agent Note: Hook budget and Lefthook suite budget on the Windows coverage lane Status: implemented +Archived: 2026-09-04 English | [中文](2026-08-29-windows-lane-hook-and-lefthook-budget.zh.md) diff --git a/.agents/notes/implemented/testing/2026-08-29-windows-lane-hook-and-lefthook-budget.zh.md b/.agents/notes/archived/testing/2026-08-29-windows-lane-hook-and-lefthook-budget.zh.md similarity index 99% rename from .agents/notes/implemented/testing/2026-08-29-windows-lane-hook-and-lefthook-budget.zh.md rename to .agents/notes/archived/testing/2026-08-29-windows-lane-hook-and-lefthook-budget.zh.md index c14be5da09..9589134e95 100644 --- a/.agents/notes/implemented/testing/2026-08-29-windows-lane-hook-and-lefthook-budget.zh.md +++ b/.agents/notes/archived/testing/2026-08-29-windows-lane-hook-and-lefthook-budget.zh.md @@ -1,6 +1,7 @@ # Agent Note: Windows 覆盖率 lane 的 hook 预算与 Lefthook 套件预算 Status: implemented +Archived: 2026-09-04 [English](2026-08-29-windows-lane-hook-and-lefthook-budget.md) | 中文 diff --git a/.agents/notes/implemented/architecture/2026-06-11-dev-invariants-over-deep-readonly.i18n.yaml b/.agents/notes/implemented/architecture/2026-06-11-dev-invariants-over-deep-readonly.i18n.yaml index 6c6ebd4788..5b233e16db 100644 --- a/.agents/notes/implemented/architecture/2026-06-11-dev-invariants-over-deep-readonly.i18n.yaml +++ b/.agents/notes/implemented/architecture/2026-06-11-dev-invariants-over-deep-readonly.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-06-11-dev-invariants-over-deep-readonly.md -2026-06-11-dev-invariants-over-deep-readonly.md: 7e5f55e8910797bd46674050ea5eb8abbca4aef7 -2026-06-11-dev-invariants-over-deep-readonly.zh.md: c1413e9c89284312af41b6c115b7e50a99d1b5e3 +2026-06-11-dev-invariants-over-deep-readonly.md: 9adb741db1e26e3a9f750fed60524351159cfeaa +2026-06-11-dev-invariants-over-deep-readonly.zh.md: d352eca985b6594ec5d10c9b73c2ecc18ea458b5 diff --git a/.agents/notes/implemented/architecture/2026-06-11-dev-invariants-over-deep-readonly.md b/.agents/notes/implemented/architecture/2026-06-11-dev-invariants-over-deep-readonly.md index 7e5f55e891..9adb741db1 100644 --- a/.agents/notes/implemented/architecture/2026-06-11-dev-invariants-over-deep-readonly.md +++ b/.agents/notes/implemented/architecture/2026-06-11-dev-invariants-over-deep-readonly.md @@ -32,7 +32,7 @@ This guarantee belongs in `Session`, not in an optional listener, because every ### Package-owned invariant companions check relationships -`dsh-invariants` registers the configurable `ctx.invariants` service and contains no product checks. A package publishes a `./invariant` ownership companion only for an independently observable runtime relationship; packages without one omit the companion and record the reason in their README. `dsh-session`, `dsh-agent`, `dsh-scope`, and `dsh-agent-loop` provide the initial rules that require trace state or observation of another seam: monotonic sequence numbers, turn and step nesting, tool-call/result pairing, legal agent-status transitions, subject-correct scoped dispatch, and equality between a loop-built request and the request reconstructed from its session-log prefix. Global enablement and package-name regex filters belong to the service ([package-owned invariant service](2026-07-19-package-owned-invariant-service.md); [omission decision](../simplification/2026-08-28-omit-unneeded-invariant-companions.md)). +`dsh-invariants` registers the configurable `ctx.invariants` service and contains no product checks. A package publishes a `./invariant` ownership companion only for an independently observable runtime relationship; packages without one omit the companion and record the reason in their README. `dsh-session`, `dsh-agent`, `dsh-scope`, and `dsh-agent-loop` provide the initial rules that require trace state or observation of another seam: monotonic sequence numbers, turn and step nesting, tool-call/result pairing, legal agent-status transitions, subject-correct scoped dispatch, and equality between a loop-built request and the request reconstructed from its session-log prefix. Global enablement and package-name regex filters belong to the service ([package-owned invariant service](../../archived/architecture/2026-07-19-package-owned-invariant-service.md); [omission decision](../simplification/2026-08-28-omit-unneeded-invariant-companions.md)). When the session companion attaches to an existing or seeded session, it replays the immutable log to rebuild trace state. The service gives each contribution a disposable child fiber, so hot reload is safe in the middle of a turn without giving diagnostics ownership of session storage. diff --git a/.agents/notes/implemented/architecture/2026-06-11-dev-invariants-over-deep-readonly.zh.md b/.agents/notes/implemented/architecture/2026-06-11-dev-invariants-over-deep-readonly.zh.md index c1413e9c89..d352eca985 100644 --- a/.agents/notes/implemented/architecture/2026-06-11-dev-invariants-over-deep-readonly.zh.md +++ b/.agents/notes/implemented/architecture/2026-06-11-dev-invariants-over-deep-readonly.zh.md @@ -32,7 +32,7 @@ TypeScript readonly 类型不是充分的运行时边界。它们在程序运行 ### 包拥有的不变式配套插件检查关系 -`dsh-invariants` 注册可配置的 `ctx.invariants` 服务,本身不包含产品检查。只有拥有可独立观察的运行时关系时,包才发布 `./invariant` 所有权配套插件;没有该关系的包会省略 companion 并在 README 中记录原因。`dsh-session`、`dsh-agent`、`dsh-scope` 和 `dsh-agent-loop` 提供首批需要跟踪状态或观察另一个 seam 的规则:单调递增的序列号、轮次与步骤嵌套、工具调用/结果配对、合法的 agent(智能体)状态转换、主体正确的作用域分发,以及循环构建的请求与从其会话日志前缀重建的请求之间的相等性。全局启用和包名 regex 过滤器归该服务所有(见[包拥有的不变式服务](2026-07-19-package-owned-invariant-service.zh.md)与[省略决策](../simplification/2026-08-28-omit-unneeded-invariant-companions.zh.md))。 +`dsh-invariants` 注册可配置的 `ctx.invariants` 服务,本身不包含产品检查。只有拥有可独立观察的运行时关系时,包才发布 `./invariant` 所有权配套插件;没有该关系的包会省略 companion 并在 README 中记录原因。`dsh-session`、`dsh-agent`、`dsh-scope` 和 `dsh-agent-loop` 提供首批需要跟踪状态或观察另一个 seam 的规则:单调递增的序列号、轮次与步骤嵌套、工具调用/结果配对、合法的 agent(智能体)状态转换、主体正确的作用域分发,以及循环构建的请求与从其会话日志前缀重建的请求之间的相等性。全局启用和包名 regex 过滤器归该服务所有(见[包拥有的不变式服务](../../archived/architecture/2026-07-19-package-owned-invariant-service.md)与[省略决策](../simplification/2026-08-28-omit-unneeded-invariant-companions.zh.md))。 当会话配套插件附加到已有会话或以种子记录初始化的会话时,它回放不可变日志以重建跟踪状态。服务为每项贡献提供一个可 dispose(资源释放)的子 fiber,因此轮次中途热重载是安全的,同时不赋予诊断逻辑对会话存储的所有权。 diff --git a/.agents/notes/implemented/architecture/2026-06-11-runtime-arg-validation.i18n.yaml b/.agents/notes/implemented/architecture/2026-06-11-runtime-arg-validation.i18n.yaml deleted file mode 100644 index 821a220d9a..0000000000 --- a/.agents/notes/implemented/architecture/2026-06-11-runtime-arg-validation.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-06-11-runtime-arg-validation.md -2026-06-11-runtime-arg-validation.md: 520823c76f147205805d306e97b5461f38b84c35 -2026-06-11-runtime-arg-validation.zh.md: bc2f743300be78cc2a01f027d5aca81fcb18b468 diff --git a/.agents/notes/implemented/architecture/2026-06-11-structured-error-taxonomy.i18n.yaml b/.agents/notes/implemented/architecture/2026-06-11-structured-error-taxonomy.i18n.yaml deleted file mode 100644 index c878105c4b..0000000000 --- a/.agents/notes/implemented/architecture/2026-06-11-structured-error-taxonomy.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-06-11-structured-error-taxonomy.md -2026-06-11-structured-error-taxonomy.md: 9122193b3d01cf5a4c315e6f7a7218153fd4a60a -2026-06-11-structured-error-taxonomy.zh.md: 71814954bdadae575cdfa63d399f7b5b37da19e4 diff --git a/.agents/notes/implemented/architecture/2026-06-14-session-persistence.i18n.yaml b/.agents/notes/implemented/architecture/2026-06-14-session-persistence.i18n.yaml index eda01d5256..26d0ef4417 100644 --- a/.agents/notes/implemented/architecture/2026-06-14-session-persistence.i18n.yaml +++ b/.agents/notes/implemented/architecture/2026-06-14-session-persistence.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-06-14-session-persistence.md -2026-06-14-session-persistence.md: 8f6c8753007e1998f9b072974e154c5a76ef116b -2026-06-14-session-persistence.zh.md: b6d8e16377e0c294f19c69334c0770a66add756e +2026-06-14-session-persistence.md: 55c1bbab94bb7854fd6bbcaace56c30dbcdb01dc +2026-06-14-session-persistence.zh.md: 16546ab61773da47064de8388803e92c8b454eae diff --git a/.agents/notes/implemented/architecture/2026-06-14-session-persistence.md b/.agents/notes/implemented/architecture/2026-06-14-session-persistence.md index 8f6c875300..55c1bbab94 100644 --- a/.agents/notes/implemented/architecture/2026-06-14-session-persistence.md +++ b/.agents/notes/implemented/architecture/2026-06-14-session-persistence.md @@ -20,10 +20,10 @@ Persistence is a **capability seam** with an abstract Service Definition ([capab Key durable, contested choices: - **The canonical durable log persists every current `SessionEvent` losslessly.** In v2, one `assistant/message` or `assistant/attempt` embeds the exact timed provider stream for an attempt; `deriveMessages()` projects only the surface message. Dropping embedded stream members is tempting, but it loses replay, timing, usage, partial-failure, and diagnostic facts. Removing a complete event likewise requires dense renumbering because `seq = log.length` and `events[i].seq === i`; the [v1-to-v2 migration](2026-09-01-v2-embedded-assistant-streams.md) performs that rewrite explicitly rather than filtering the canonical log. -- **Append-only; a crashed turn is closed, never truncated.** Flushed events are never rewritten. The [semantic checkpoint policy](../bug-fix/2026-07-21-semantic-session-checkpoints.md) drains the request before model dispatch, a recorded top-level call before tool dispatch, and the complete response/result batch after a step; the loop drains the final turn boundary. Because one interrupted turn may contain substantial valid work, persistence returns its contiguous, parseable events unmodified; the reader owns balancing — resume computes risk-classified error results for unanswered assistant calls, a missing `step/end`, and `turn/end` with `{ kind: 'interrupted' }` (`interruptedTurnClosers`) and appends them through its write handle, while read-only observers add the same closers in memory. The synthetic results keep resumed provider transcripts valid. Only the incomplete fragment of a torn final append is discarded — complete records recovered from it are durably rewritten by the write path before its first new append; a parse error or sequence gap in the committed prefix is corruption and makes the session unloadable. +- **Append-only; a crashed turn is closed, never truncated.** Flushed events are never rewritten. The [semantic checkpoint policy](../../../../packages/session/session-checkpoint-policy/README.md) drains the request before model dispatch, a recorded top-level call before tool dispatch, and the complete response/result batch after a step; the loop drains the final turn boundary. Because one interrupted turn may contain substantial valid work, persistence returns its contiguous, parseable events unmodified; the reader owns balancing — resume computes risk-classified error results for unanswered assistant calls, a missing `step/end`, and `turn/end` with `{ kind: 'interrupted' }` (`interruptedTurnClosers`) and appends them through its write handle, while read-only observers add the same closers in memory. The synthetic results keep resumed provider transcripts valid. Only the incomplete fragment of a torn final append is discarded — complete records recovered from it are durably rewritten by the write path before its first new append; a parse error or sequence gap in the committed prefix is corruption and makes the session unloadable. - **The file backend is canonical while the service remains extensible.** `dsh-session-persistence-jsonl` is the sole first-party provider and passes `runPersistenceContract`; the abstract service remains available to out-of-tree providers. The [JSONL-only persistence decision](../simplification/2026-08-30-jsonl-only-session-persistence.md) owns removal of the first-party database provider and its deliberate compatibility cut. -- **Metadata is out-of-log.** Format version, cwd, and lineage are storage concerns, not replayable conversation state, so they live in a `SessionHeader` owned by `dsh-session` and attached to a `Session` via a new readonly `session.header` — never in `SessionEventMap`, never reaching `deriveMessages()`. `createdAt` is non-negative safe-integer Unix epoch milliseconds: live creation and persistence registration reject fractional values, and JSONL validates the decoded header. The alternative (a merge-extensible `session/meta` event as log line 0) was rejected: an in-log event would ride along with a seeded/forked session for free, but metadata is not replayable state, so the explicit out-of-log header boundary is the cleaner cost. (The header was originally split into an immutable `SessionHeader` plus a mutable `SessionSummary` whose union was `SessionMeta`; the mutable summary was later removed as dead state — see [Drop the mutable session summary](../simplification/2026-06-19-drop-mutable-session-summary.md).) -- **`ctx.agents.create()` and `ctx.agents.resume()` are async factories; resume additionally crosses the persistence boundary.** `ctx.agents.resume({ resumeSessionId })` opens the session's write handle, reads the stored log, and publishes the prepared Session under the persisted id, continuing its projections. The [Session preparation decision](2026-08-05-session-preparation.md) owns the unpublished-Session ownership window. The agent-loop does NOT hard-inject `sessionPersistence` (that would pend non-persistent demos forever); `resume` rejects with a clear error when it is absent. +- **Metadata is out-of-log.** Format version, cwd, and lineage are storage concerns, not replayable conversation state, so they live in a `SessionHeader` owned by `dsh-session` and attached to a `Session` via a new readonly `session.header` — never in `SessionEventMap`, never reaching `deriveMessages()`. `createdAt` is non-negative safe-integer Unix epoch milliseconds: live creation and persistence registration reject fractional values, and JSONL validates the decoded header. The alternative (a merge-extensible `session/meta` event as log line 0) was rejected: an in-log event would ride along with a seeded/forked session for free, but metadata is not replayable state, so the explicit out-of-log header boundary is the cleaner cost. (The header was originally split into an immutable `SessionHeader` plus a mutable `SessionSummary` whose union was `SessionMeta`; the mutable summary was later removed as dead state — see [Drop the mutable session summary](../../archived/simplification/2026-06-19-drop-mutable-session-summary.md).) +- **`ctx.agents.create()` and `ctx.agents.resume()` are async factories; resume additionally crosses the persistence boundary.** `ctx.agents.resume({ resumeSessionId })` opens the session's write handle, reads the stored log, and publishes the prepared Session under the persisted id, continuing its projections. The [Session preparation decision](../../archived/architecture/2026-08-05-session-preparation.md) owns the unpublished-Session ownership window. The agent-loop does NOT hard-inject `sessionPersistence` (that would pend non-persistent demos forever); `resume` rejects with a clear error when it is absent. ## Alternatives considered diff --git a/.agents/notes/implemented/architecture/2026-06-14-session-persistence.zh.md b/.agents/notes/implemented/architecture/2026-06-14-session-persistence.zh.md index b6d8e16377..16546ab617 100644 --- a/.agents/notes/implemented/architecture/2026-06-14-session-persistence.zh.md +++ b/.agents/notes/implemented/architecture/2026-06-14-session-persistence.zh.md @@ -20,10 +20,10 @@ Status: implemented 长期有效、存在争议的关键选择: - **规范持久日志无损保留每个当前 `SessionEvent`。** 在 v2 中,一个 `assistant/message` 或 `assistant/attempt` 会嵌入该 attempt 的精确带时间 provider stream;`deriveMessages()` 只投影 surface message。删除嵌入 stream 成员看似诱人,但会丢失 replay、timing、usage、部分失败与诊断事实。移除完整事件同样需要密集重新编号,因为 `seq = log.length` 且 `events[i].seq === i`;[v1 到 v2 迁移](2026-09-01-v2-embedded-assistant-streams.zh.md)会显式执行该改写,而不是过滤规范日志。 -- **仅追加;崩溃的轮次被关闭,而非截断。** 已刷写的事件永不被重写。[语义检查点策略](../bug-fix/2026-07-21-semantic-session-checkpoints.zh.md)会在调用模型前排空请求、在调用工具前排空已记录的顶层调用,并在步骤结束后排空完整的响应/结果批次;循环则排空最终轮次边界。由于一个被中断的轮次可能包含大量有效工作,持久化会原样返回其连续、可解析的事件;配平是读方的职责——resume 会为未应答的 assistant 调用计算按风险分类的错误结果、补一个缺失的 `step/end`,以及带 `{ kind: 'interrupted' }` 的 `turn/end`(`interruptedTurnClosers`),并通过其写句柄追加它们,而只读观察方仅在内存中添加同样的收尾事件。合成结果保证恢复后的提供方 transcript(文本记录)仍然有效。只有撕裂的最终 append 中不完整的碎片会被丢弃——从中恢复的完整记录由写路径在第一次新 append 之前持久重写;已提交前缀中的解析错误或序号间隙,属于数据损坏,会使该会话不可加载。 +- **仅追加;崩溃的轮次被关闭,而非截断。** 已刷写的事件永不被重写。[语义检查点策略](../../../../packages/session/session-checkpoint-policy/README.zh.md)会在调用模型前排空请求、在调用工具前排空已记录的顶层调用,并在步骤结束后排空完整的响应/结果批次;循环则排空最终轮次边界。由于一个被中断的轮次可能包含大量有效工作,持久化会原样返回其连续、可解析的事件;配平是读方的职责——resume 会为未应答的 assistant 调用计算按风险分类的错误结果、补一个缺失的 `step/end`,以及带 `{ kind: 'interrupted' }` 的 `turn/end`(`interruptedTurnClosers`),并通过其写句柄追加它们,而只读观察方仅在内存中添加同样的收尾事件。合成结果保证恢复后的提供方 transcript(文本记录)仍然有效。只有撕裂的最终 append 中不完整的碎片会被丢弃——从中恢复的完整记录由写路径在第一次新 append 之前持久重写;已提交前缀中的解析错误或序号间隙,属于数据损坏,会使该会话不可加载。 - **文件后端为规范实现,服务保持可扩展。** `dsh-session-persistence-jsonl` 是唯一 first-party provider,并通过 `runPersistenceContract`;抽象服务继续供仓库外 provider 使用。[JSONL-only 持久化决策](../simplification/2026-08-30-jsonl-only-session-persistence.zh.md)负责 first-party 数据库 provider 的删除及其明确 compatibility cut。 -- **元数据在日志之外。** 格式版本、cwd 和谱系是存储关注点,不是可回放的对话状态,因此它们存放在 `dsh-session` 拥有的 `SessionHeader` 中,并通过新的只读属性 `session.header` 附加到 `Session` 上——永远不进入 `SessionEventMap`,永远不到达 `deriveMessages()`。`createdAt` 是以 Unix epoch 毫秒表示的非负安全整数:运行时创建和持久化注册会拒绝小数值,JSONL 会验证解码后的 header。替代方案(一个可合并扩展的 `session/meta` 事件作为日志第 0 行)被否决:日志内事件会自然随 seed/fork 的会话携带,但元数据不是可回放状态,因此显式的日志外 header 边界是更清晰的取舍。(header 最初被拆分为不可变的 `SessionHeader` 加可变的 `SessionSummary`,二者的联合类型为 `SessionMeta`;可变 summary 后来因属于死状态而被移除——见 [移除可变会话摘要](../simplification/2026-06-19-drop-mutable-session-summary.zh.md)。) -- **`ctx.agents.create()` 和 `ctx.agents.resume()` 是异步工厂;恢复还跨越持久化边界。** `ctx.agents.resume({ resumeSessionId })` 打开该会话的写句柄,读取已存储的日志,并以持久化 id 发布准备好的 Session,继续其投影。[Session 准备阶段决策](2026-08-05-session-preparation.zh.md)定义未发布 Session 的所有权窗口。agent loop(智能体循环)不会硬注入 `sessionPersistence`(那样会让非持久化的演示永远挂起);当它不存在时,`resume` 会以明确的错误拒绝。 +- **元数据在日志之外。** 格式版本、cwd 和谱系是存储关注点,不是可回放的对话状态,因此它们存放在 `dsh-session` 拥有的 `SessionHeader` 中,并通过新的只读属性 `session.header` 附加到 `Session` 上——永远不进入 `SessionEventMap`,永远不到达 `deriveMessages()`。`createdAt` 是以 Unix epoch 毫秒表示的非负安全整数:运行时创建和持久化注册会拒绝小数值,JSONL 会验证解码后的 header。替代方案(一个可合并扩展的 `session/meta` 事件作为日志第 0 行)被否决:日志内事件会自然随 seed/fork 的会话携带,但元数据不是可回放状态,因此显式的日志外 header 边界是更清晰的取舍。(header 最初被拆分为不可变的 `SessionHeader` 加可变的 `SessionSummary`,二者的联合类型为 `SessionMeta`;可变 summary 后来因属于死状态而被移除——见 [移除可变会话摘要](../../archived/simplification/2026-06-19-drop-mutable-session-summary.md)。) +- **`ctx.agents.create()` 和 `ctx.agents.resume()` 是异步工厂;恢复还跨越持久化边界。** `ctx.agents.resume({ resumeSessionId })` 打开该会话的写句柄,读取已存储的日志,并以持久化 id 发布准备好的 Session,继续其投影。[Session 准备阶段决策](../../archived/architecture/2026-08-05-session-preparation.md)定义未发布 Session 的所有权窗口。agent loop(智能体循环)不会硬注入 `sessionPersistence`(那样会让非持久化的演示永远挂起);当它不存在时,`resume` 会以明确的错误拒绝。 ## 曾考虑的替代方案 diff --git a/.agents/notes/implemented/architecture/2026-06-17-filesystem-capability-seam.i18n.yaml b/.agents/notes/implemented/architecture/2026-06-17-filesystem-capability-seam.i18n.yaml deleted file mode 100644 index c3984a9fa9..0000000000 --- a/.agents/notes/implemented/architecture/2026-06-17-filesystem-capability-seam.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-06-17-filesystem-capability-seam.md -2026-06-17-filesystem-capability-seam.md: 6265aebf5e7ffdd4ec4dc0083aa55adb34ee78a1 -2026-06-17-filesystem-capability-seam.zh.md: f0f1cb132fe06ebf669f0310f0066f4fdd36ad0b diff --git a/.agents/notes/implemented/architecture/2026-06-18-agent-lifecycle-and-ownership-contracts.i18n.yaml b/.agents/notes/implemented/architecture/2026-06-18-agent-lifecycle-and-ownership-contracts.i18n.yaml deleted file mode 100644 index 03a0440ca1..0000000000 --- a/.agents/notes/implemented/architecture/2026-06-18-agent-lifecycle-and-ownership-contracts.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-06-18-agent-lifecycle-and-ownership-contracts.md -2026-06-18-agent-lifecycle-and-ownership-contracts.md: 9bc558bfce75892b0ebdb80e9f8735d440cabaf4 -2026-06-18-agent-lifecycle-and-ownership-contracts.zh.md: bbd0a7219f902e5ead4d190c58e9a5d4da2131fd diff --git a/.agents/notes/implemented/architecture/2026-06-20-branded-ids.i18n.yaml b/.agents/notes/implemented/architecture/2026-06-20-branded-ids.i18n.yaml deleted file mode 100644 index e847027821..0000000000 --- a/.agents/notes/implemented/architecture/2026-06-20-branded-ids.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-06-20-branded-ids.md -2026-06-20-branded-ids.md: 1f579a7afb7ac5f7facd6c5e8040d5df719c4bed -2026-06-20-branded-ids.zh.md: eaf032027f2f61bec9e4ab624622a5012c97e9b9 diff --git a/.agents/notes/implemented/architecture/2026-06-20-generic-long-running-tool-runtime.i18n.yaml b/.agents/notes/implemented/architecture/2026-06-20-generic-long-running-tool-runtime.i18n.yaml index 7d4ccbd4e1..e7aa78354c 100644 --- a/.agents/notes/implemented/architecture/2026-06-20-generic-long-running-tool-runtime.i18n.yaml +++ b/.agents/notes/implemented/architecture/2026-06-20-generic-long-running-tool-runtime.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-06-20-generic-long-running-tool-runtime.md -2026-06-20-generic-long-running-tool-runtime.md: 7db43323dd83f8e99698a7163412c9b33a607dfb -2026-06-20-generic-long-running-tool-runtime.zh.md: 040ea6a01e97c9dc1d93e8f3a0fd9c1f4b0f31fc +2026-06-20-generic-long-running-tool-runtime.md: c386d3b338c94e0e5bbf8e99c2c7a30971ba92b7 +2026-06-20-generic-long-running-tool-runtime.zh.md: 002514740a15c5961960d20976fc18f7fd8071ff diff --git a/.agents/notes/implemented/architecture/2026-06-20-generic-long-running-tool-runtime.md b/.agents/notes/implemented/architecture/2026-06-20-generic-long-running-tool-runtime.md index 7db43323dd..c386d3b338 100644 --- a/.agents/notes/implemented/architecture/2026-06-20-generic-long-running-tool-runtime.md +++ b/.agents/notes/implemented/architecture/2026-06-20-generic-long-running-tool-runtime.md @@ -19,13 +19,13 @@ The `jobs/` package group owns background-job semantics: Long-running tools are producers. `dsh-tool-bash` adapts a `ShellProcess` into incremental output and process cancellation; `dsh-tool-subagent` adapts a child run into final output and child disposal. The bash and subagent capability seams remain independent of sessions and the job registry. -`JobRegistry` is the Service Definition in `@deepseek-ai/dsh-jobs`; the process-local provider is `LocalJobRegistry` in `@deepseek-ai/dsh-jobs-local` (the [task-registry contract Agent Note](2026-07-26-job-registry-seam.md) records that split). +`JobRegistry` is the Service Definition in `@deepseek-ai/dsh-jobs`; the process-local provider is `LocalJobRegistry` in `@deepseek-ai/dsh-jobs-local` (the [task-registry contract Agent Note](../../archived/architecture/2026-07-26-job-registry-seam.md) records that split). ## Runtime contract The literal types live on the [tasks subsystem page](../../../../docs/subsystems/jobs.md). A producer calls `ctx.jobs.start()` with a kind, label, optional owning `Agent`, optional positive `outputLimitBytes`, and a `run()` function. The runtime completes all failable preflight work before calling `run()` and invokes it once. After `run()` returns hooks, registration commits without another failable step; a producer cannot start work that lacks a collectable job id. -The process-local provider also owns bounded admission, whose rationale is recorded in the [bounded background job admission decision](../bug-fix/2026-08-11-bounded-background-job-admission.md). Its positive-safe-integer `maxConcurrentJobsPerOwner` config defaults to `10`; `start()` derives each exact `Agent` object's active count from `running` and `stopping` records, while every unowned task shares one service bucket. Capacity rejection occurs before `run()` and id allocation, and producer `done` settlement is the only event that releases a stopping task's place. The provider does not queue, preempt, or retain a second mutable count. +The process-local provider also owns bounded admission, whose rationale is recorded in the [bounded background job admission decision](../../archived/bug-fix/2026-08-11-bounded-background-job-admission.md). Its positive-safe-integer `maxConcurrentJobsPerOwner` config defaults to `10`; `start()` derives each exact `Agent` object's active count from `running` and `stopping` records, while every unowned task shares one service bucket. Capacity rejection occurs before `run()` and id allocation, and producer `done` settlement is the only event that releases a stopping task's place. The provider does not queue, preempt, or retain a second mutable count. `outputLimitBytes` is producer-owned presentation policy, not a registry buffer. The registry validates and projects it unchanged into `JobSnapshot`; generic control APIs apply the cap to complete model-facing output after adding their own status or notice metadata. Omitting it preserves the existing controller behavior, so the runtime does not impose a hidden default on unrelated producer families. @@ -105,7 +105,7 @@ Separate bash and subagent output/stop tools duplicate ids, isolation, cleanup, ### An immediate abstract task-runtime backend -The current `JobStart.run()` contract passes in-process callbacks and exact `Agent` objects. A durable backend changes identity, restart, ownership, and observation semantics, so at introduction time the registry stayed one concrete service rather than freezing the wrong boundary. The [task-registry contract Agent Note](2026-07-26-job-registry-seam.md) later separated the contract from the process-local implementation without changing these in-process semantics. +The current `JobStart.run()` contract passes in-process callbacks and exact `Agent` objects. A durable backend changes identity, restart, ownership, and observation semantics, so at introduction time the registry stayed one concrete service rather than freezing the wrong boundary. The [task-registry contract Agent Note](../../archived/architecture/2026-07-26-job-registry-seam.md) later separated the contract from the process-local implementation without changing these in-process semantics. ### Consumer-owned authorization or cleanup events diff --git a/.agents/notes/implemented/architecture/2026-06-20-generic-long-running-tool-runtime.zh.md b/.agents/notes/implemented/architecture/2026-06-20-generic-long-running-tool-runtime.zh.md index 040ea6a01e..002514740a 100644 --- a/.agents/notes/implemented/architecture/2026-06-20-generic-long-running-tool-runtime.zh.md +++ b/.agents/notes/implemented/architecture/2026-06-20-generic-long-running-tool-runtime.zh.md @@ -19,13 +19,13 @@ Status: implemented 长时间运行工具是生产方。`dsh-tool-bash` 将 `ShellProcess` 适配为增量输出与进程取消;`dsh-tool-subagent` 将子运行适配为最终输出与子运行释放。bash 与 subagent 能力 seam 保持独立,不依赖会话或任务注册表。 -`JobRegistry` 是 `@deepseek-ai/dsh-jobs` 中的 Service Definition;进程内 Service Provider 是 `@deepseek-ai/dsh-jobs-local` 中的 `LocalJobRegistry`(该拆分记录在[任务注册表约定 Agent Note](2026-07-26-job-registry-seam.zh.md)中)。 +`JobRegistry` 是 `@deepseek-ai/dsh-jobs` 中的 Service Definition;进程内 Service Provider 是 `@deepseek-ai/dsh-jobs-local` 中的 `LocalJobRegistry`(该拆分记录在[任务注册表约定 Agent Note](../../archived/architecture/2026-07-26-job-registry-seam.md)中)。 ## 运行时约定 字面类型见[任务子系统页面](../../../../docs/subsystems/jobs.zh.md)。生产方调用 `ctx.jobs.start()`,传入 kind、label、可选的所属 `Agent`、可选的正数 `outputLimitBytes` 与一个 `run()` 函数。运行时会在调用 `run()` 前完成所有可能失败的预检工作,并且只调用一次。`run()` 返回钩子后,注册过程不会再执行可能失败的步骤而直接提交;生产方无法启动没有可收集 job id 的工作。 -进程内 Service Provider 还拥有有界准入,其理由记录在[有界后台任务准入决策](../bug-fix/2026-08-11-bounded-background-job-admission.zh.md)中。它的 `maxConcurrentJobsPerOwner` 配置必须是正的安全整数,默认值为 `10`;`start()` 从 `running` 与 `stopping` 记录派生每个确切 `Agent` 对象的活动数量,而全部无 owner 任务共享一个服务级桶。容量拒绝发生在 `run()` 与 id 分配之前,处于 stopping 的任务只有在生产方 `done` 结算时才释放名额。Service Provider 不排队或抢占任务,也不保留第二份可变计数。 +进程内 Service Provider 还拥有有界准入,其理由记录在[有界后台任务准入决策](../../archived/bug-fix/2026-08-11-bounded-background-job-admission.md)中。它的 `maxConcurrentJobsPerOwner` 配置必须是正的安全整数,默认值为 `10`;`start()` 从 `running` 与 `stopping` 记录派生每个确切 `Agent` 对象的活动数量,而全部无 owner 任务共享一个服务级桶。容量拒绝发生在 `run()` 与 id 分配之前,处于 stopping 的任务只有在生产方 `done` 结算时才释放名额。Service Provider 不排队或抢占任务,也不保留第二份可变计数。 `outputLimitBytes` 是生产方拥有的呈现策略,而非注册表缓冲区。注册表校验该值,并将其原样投影到 `JobSnapshot`;通用任务控制器添加自身的状态或通知元数据后,再将该上限应用于完整的面向模型输出。省略该值时保持现有控制器行为,因此运行时不会向无关的生产方类别施加隐式默认值。 @@ -105,7 +105,7 @@ bash seam 暴露 `resolve`、`run` 和 `start`。`start(spec)` 返回一个 `She ### 立即抽象任务运行时后端 -当前 `JobStart.run()` 约定传入进程内回调与确切的 `Agent` 对象。持久化后端会改变身份、重启、所有权与观察语义,因此在引入之时注册表保持为单一具体服务,而非固化错误的边界。[任务注册表约定 Agent Note](2026-07-26-job-registry-seam.zh.md)后来在不改变这些进程内语义的前提下,将约定与进程内实现分离。 +当前 `JobStart.run()` 约定传入进程内回调与确切的 `Agent` 对象。持久化后端会改变身份、重启、所有权与观察语义,因此在引入之时注册表保持为单一具体服务,而非固化错误的边界。[任务注册表约定 Agent Note](../../archived/architecture/2026-07-26-job-registry-seam.md)后来在不改变这些进程内语义的前提下,将约定与进程内实现分离。 ### 由消费方负责授权或清理事件 diff --git a/.agents/notes/implemented/architecture/2026-06-21-bounded-llm-request-recovery.i18n.yaml b/.agents/notes/implemented/architecture/2026-06-21-bounded-llm-request-recovery.i18n.yaml index 670e4f18e9..065618fd55 100644 --- a/.agents/notes/implemented/architecture/2026-06-21-bounded-llm-request-recovery.i18n.yaml +++ b/.agents/notes/implemented/architecture/2026-06-21-bounded-llm-request-recovery.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-06-21-bounded-llm-request-recovery.md -2026-06-21-bounded-llm-request-recovery.md: 6ae3915462c00eadcc550c80165fab7247a9170c -2026-06-21-bounded-llm-request-recovery.zh.md: 82e2e783fffaedcb5bfaabe72f56f7c4176d3784 +2026-06-21-bounded-llm-request-recovery.md: aa8604f6edcf7746c55167f6a013a11db3a2760e +2026-06-21-bounded-llm-request-recovery.zh.md: 924eae73856bd879d4f93b7d34bc36124536de0f diff --git a/.agents/notes/implemented/architecture/2026-06-21-bounded-llm-request-recovery.md b/.agents/notes/implemented/architecture/2026-06-21-bounded-llm-request-recovery.md index 6ae3915462..aa8604f6ed 100644 --- a/.agents/notes/implemented/architecture/2026-06-21-bounded-llm-request-recovery.md +++ b/.agents/notes/implemented/architecture/2026-06-21-bounded-llm-request-recovery.md @@ -4,7 +4,7 @@ Status: implemented English | [中文](2026-06-21-bounded-llm-request-recovery.zh.md) -The [per-provider request retry policy](../feature/2026-07-24-provider-retry-policies.md) extends this foundation with exact-provider configuration and an explicit unbounded mode. This note continues to own structured failure facts, the failed-attempt recovery boundary, normal mode's transient defaults, visible single attempts, and durable retry status. [Terminal LLM stream failures](2026-07-29-terminal-llm-stream-failures.md) supersedes its thrown-error identity and stream-sidecar mechanism. +The [per-provider request retry policy](../../archived/feature/2026-07-24-provider-retry-policies.md) extends this foundation with exact-provider configuration and an explicit unbounded mode. This note continues to own structured failure facts, the failed-attempt recovery boundary, normal mode's transient defaults, visible single attempts, and durable retry status. [Terminal LLM stream failures](2026-07-29-terminal-llm-stream-failures.md) supersedes its thrown-error identity and stream-sidecar mechanism. ## Problem @@ -46,7 +46,7 @@ The agent loop passes the terminal finish's `LlmFailure` to `agent/request-error Adapters extract structured facts before falling back to message inspection. They validate HTTP status, parse `Retry-After` seconds or dates into a positive finite millisecond delay, brand the provider request id when exposed, and distinguish their own timeout from the caller's abort. Provider-specific codes and messages may refine a mapping, but no recovery listener parses them. -The shared transient-code set is intentionally small: adapter mappings for `RATE_LIMIT` and `SERVER`, explicit `TIMEOUT` and `TRANSPORT` codes for remote failures, and `EMPTY_RESPONSE` for a completed provider response with no content blocks. Both adapters classify the last case as an error finish; see [empty model responses are retryable](../bug-fix/2026-07-24-empty-model-response-is-retryable.md). Authentication, quota, invalid request, context overflow, protocol, abort, and unknown failures keep distinct stable codes and are not transient by default. Adding a code requires adapter fixtures and a documented policy decision; it does not require expanding a second failure-class enum. +The shared transient-code set is intentionally small: adapter mappings for `RATE_LIMIT` and `SERVER`, explicit `TIMEOUT` and `TRANSPORT` codes for remote failures, and `EMPTY_RESPONSE` for a completed provider response with no content blocks. Both adapters classify the last case as an error finish; see [empty model responses are retryable](../../archived/bug-fix/2026-07-24-empty-model-response-is-retryable.md). Authentication, quota, invalid request, context overflow, protocol, abort, and unknown failures keep distinct stable codes and are not transient by default. Adding a code requires adapter fixtures and a documented policy decision; it does not require expanding a second failure-class enum. ### Put retry policy on the existing failed-step extension point @@ -54,7 +54,7 @@ The shared transient-code set is intentionally small: adapter mappings for `RATE The `agent/request-error` waterfall carries the current `LlmFailure`, an immutable list of prior failures that authorized retries in the consecutive recovery sequence, and the serving registration's immutable retry policy. The loop transports but does not interpret that policy, owns the consecutive failure history, and clears it after a successful model request. Normal `dsh-llm-retry` policy counts durable retry records scheduled by the same exact-provider policy, while `dsh-compaction-basic` keeps its own context-overflow budget. Alternating transient and context-overflow failures therefore consume their owning finite budgets independently; the maximum request count is one plus the sum of the loaded finite budgets. -The [provider-policy decision](../feature/2026-07-24-provider-retry-policies.md) owns the current configuration shape. Provider adapters register their nested `retryPolicy`; omission uses normal defaults: two transient retries, a 500 millisecond initial delay, a 10 second delay cap, 10 percent jitter, and the five transient codes above. The count and delay bounds match the conservative edge of the inspected implementations: [OpenCode uses two request retries with 500 ms/10 s bounds](https://github.com/anomalyco/opencode/blob/9976269ab1accfc9f9dc98a4a688c516934de422/%70ackages/llm/src/route/executor.ts#L36-L39), [Pi separates three agent-level retries from provider retries and defaults provider retries to zero](https://github.com/earendil-works/pi/blob/3da591ab74ab9ab407e72ed882600b2c851fae21/%70ackages/coding-agent/docs/settings.md#L139-L147), and [Codex uses finite request/stream budgets plus a five-minute idle timeout](https://github.com/openai/codex/blob/0fb559f0f6e231a88ac02ea002d3ecd248e2b515/codex-rs/model-provider-info/src/lib.rs#L25-L33). Ten percent follows [Codex's bounded jitter](https://github.com/openai/codex/blob/0fb559f0f6e231a88ac02ea002d3ecd248e2b515/codex-rs/codex-client/src/retry.rs#L40-L47). +The [provider-policy decision](../../archived/feature/2026-07-24-provider-retry-policies.md) owns the current configuration shape. Provider adapters register their nested `retryPolicy`; omission uses normal defaults: two transient retries, a 500 millisecond initial delay, a 10 second delay cap, 10 percent jitter, and the five transient codes above. The count and delay bounds match the conservative edge of the inspected implementations: [OpenCode uses two request retries with 500 ms/10 s bounds](https://github.com/anomalyco/opencode/blob/9976269ab1accfc9f9dc98a4a688c516934de422/%70ackages/llm/src/route/executor.ts#L36-L39), [Pi separates three agent-level retries from provider retries and defaults provider retries to zero](https://github.com/earendil-works/pi/blob/3da591ab74ab9ab407e72ed882600b2c851fae21/%70ackages/coding-agent/docs/settings.md#L139-L147), and [Codex uses finite request/stream budgets plus a five-minute idle timeout](https://github.com/openai/codex/blob/0fb559f0f6e231a88ac02ea002d3ecd248e2b515/codex-rs/model-provider-info/src/lib.rs#L25-L33). Ten percent follows [Codex's bounded jitter](https://github.com/openai/codex/blob/0fb559f0f6e231a88ac02ea002d3ecd248e2b515/codex-rs/codex-client/src/retry.rs#L40-L47). For an eligible failure with budget remaining, the one-based transient retry count uses bounded exponential backoff. A valid `providerRetryAfterMs` replaces exponential backoff only when it does not exceed `maxDelayMs`; a longer provider delay causes delegation instead of an earlier retry that violates the provider instruction. Local backoff multiplies by an injected random factor in `[1 - jitterRatio, 1 + jitterRatio]` and clamps the final value to `maxDelayMs`; provider delay is not jittered. @@ -100,7 +100,7 @@ If recovery is exhausted, the final failure is stored once on `turn/end.reason` - **Add response start, interrupted, discarded, failed, and committed events to `dsh-llm`** — rejected because the agent log already separates raw chunks, successful messages, and numbered attempts. A second state machine would duplicate ownership without enabling the bounded same-route retry. - **Add logical routes, capability matrices, and failover selection** — rejected because current requests already name provider and model explicitly, one adapter owns each provider, and no current consumer requires automatic fallback or can prove semantic compatibility. - **Put `retryable` or `failover` on `LlmFailure`** — rejected because adapters report facts while deployment policy decides action. The same 429 may be retried in an interactive bundle and rejected in a cost-capped batch. -- **Retry forever while the caller remains active** — the [per-provider policy](../feature/2026-07-24-provider-retry-policies.md) supersedes this rejection for explicit `always` entries while retaining bounded normal mode as the default. +- **Retry forever while the caller remains active** — the [per-provider policy](../../archived/feature/2026-07-24-provider-retry-policies.md) supersedes this rejection for explicit `always` entries while retaining bounded normal mode as the default. - **Log retry status only through the process logger** — rejected because process logs do not reconstruct session behavior and cannot drive replayed UI state. - **Keep only flat codes** — rejected because retry delay and provider request id are structured provider facts, and HTTP status is necessary for diagnosis when different wire failures share one stable code. @@ -131,9 +131,9 @@ If recovery is exhausted, the final failure is stored once on `turn/end.reason` ## Related -- [Structured error taxonomy](../../implemented/architecture/2026-06-11-structured-error-taxonomy.md) owns stable machine-routable codes and cause chaining. +- [Structured error taxonomy](../../archived/architecture/2026-06-11-structured-error-taxonomy.md) owns stable machine-routable codes and cause chaining. - [Reconstructable requests](../../implemented/architecture/2026-07-05-reconstructable-requests.md) makes provider/model and complete request inputs durable before dispatch. - [Timeout deadline library](../../implemented/architecture/2026-07-06-timeout-deadline-library.md) separates shared deadline classification from capability-owned termination. - [After-call compaction pressure and context-overflow recovery](../../implemented/architecture/2026-07-10-after-call-compaction-pressure-and-overflow-recovery.md) owns the current closed-step request-recovery extension point and bounded overflow retry. - [Provider-routed LLM adapters](../../implemented/architecture/2026-07-14-provider-routed-llm-adapters.md) owns explicit provider/model routing and the one-adapter-per-provider invariant. -- [Terminal turn errors survive same-turn retry history](../bug-fix/2026-08-20-turn-error-survives-same-turn-retry-history.md) owns the removal of the Web retry-history suppression that hid exhausted recovery's terminal error row. +- [Terminal turn errors survive same-turn retry history](../../archived/bug-fix/2026-08-20-turn-error-survives-same-turn-retry-history.md) owns the removal of the Web retry-history suppression that hid exhausted recovery's terminal error row. diff --git a/.agents/notes/implemented/architecture/2026-06-21-bounded-llm-request-recovery.zh.md b/.agents/notes/implemented/architecture/2026-06-21-bounded-llm-request-recovery.zh.md index 82e2e783ff..924eae7385 100644 --- a/.agents/notes/implemented/architecture/2026-06-21-bounded-llm-request-recovery.zh.md +++ b/.agents/notes/implemented/architecture/2026-06-21-bounded-llm-request-recovery.zh.md @@ -4,7 +4,7 @@ Status: implemented [English](2026-06-21-bounded-llm-request-recovery.md) | 中文 -[按提供方配置的请求重试策略](../feature/2026-07-24-provider-retry-policies.zh.md)在此基础上增加了确切提供方配置与显式无界 mode。本说明继续负责结构化失败事实、失败尝试的恢复边界、normal mode 的暂时性默认值、可见的单次尝试和持久重试状态。[LLM(大语言模型)流的终止失败](2026-07-29-terminal-llm-stream-failures.zh.md)取代了其中关于抛出错误身份和流 sidecar 的机制。 +[按提供方配置的请求重试策略](../../archived/feature/2026-07-24-provider-retry-policies.md)在此基础上增加了确切提供方配置与显式无界 mode。本说明继续负责结构化失败事实、失败尝试的恢复边界、normal mode 的暂时性默认值、可见的单次尝试和持久重试状态。[LLM(大语言模型)流的终止失败](2026-07-29-terminal-llm-stream-failures.zh.md)取代了其中关于抛出错误身份和流 sidecar 的机制。 ## 问题 @@ -46,7 +46,7 @@ agent loop(智能体循环)会将终止 finish 的 `LlmFailure` 传给 `agen 适配器会先提取结构化事实,再回退到消息检查。它们会验证 HTTP 状态,将 `Retry-After` 的秒数或日期解析为正的有限毫秒延迟,在提供方公开请求 id 时将其品牌化,并区分自身超时与调用方中止。提供方专用 code 和消息可以细化映射,但恢复监听器不会解析它们。 -共享的暂时性 code 集有意保持很小:适配器针对 `RATE_LIMIT` 和 `SERVER` 的映射,远程失败使用的显式 `TIMEOUT` 和 `TRANSPORT` code,以及提供方响应已完成却没有内容块时使用的 `EMPTY_RESPONSE`。两个适配器都会把最后一种情况归类为错误 finish;详见[空模型响应可重试](../bug-fix/2026-07-24-empty-model-response-is-retryable.zh.md)。身份验证、配额、无效请求、上下文溢出、协议、中止和未知失败都保留不同的稳定 code,且默认不属于暂时性失败。新增 code 需要适配器 fixture(测试前置数据)和已记录的策略决策;无需扩展第二个失败类枚举。 +共享的暂时性 code 集有意保持很小:适配器针对 `RATE_LIMIT` 和 `SERVER` 的映射,远程失败使用的显式 `TIMEOUT` 和 `TRANSPORT` code,以及提供方响应已完成却没有内容块时使用的 `EMPTY_RESPONSE`。两个适配器都会把最后一种情况归类为错误 finish;详见[空模型响应可重试](../../archived/bug-fix/2026-07-24-empty-model-response-is-retryable.md)。身份验证、配额、无效请求、上下文溢出、协议、中止和未知失败都保留不同的稳定 code,且默认不属于暂时性失败。新增 code 需要适配器 fixture(测试前置数据)和已记录的策略决策;无需扩展第二个失败类枚举。 ### 将重试策略放在现有失败步骤扩展点上 @@ -54,7 +54,7 @@ agent loop(智能体循环)会将终止 finish 的 `LlmFailure` 传给 `agen `agent/request-error` waterfall 携带当前 `LlmFailure`、在连续恢复序列中授权重试的不可变先前失败列表,以及提供服务的注册项所携带的不可变重试策略。循环只传递而不解释该策略;它拥有连续失败历史,并在模型请求成功后清除。`dsh-llm-retry` 的 normal 策略统计由同一项确切提供方策略安排的持久重试记录,`dsh-compaction-basic` 则维护自己的上下文溢出预算。因此,暂时性失败与上下文溢出交替出现时,会各自独立消耗其有限预算;最大请求数等于 1 加上所有已加载有限预算之和。 -当前配置形状由[提供方策略决策](../feature/2026-07-24-provider-retry-policies.zh.md)规定。提供方适配器会注册嵌套的 `retryPolicy`;省略时使用 normal 默认值:两次暂时性重试、500 毫秒初始延迟、10 秒延迟上限、10% 抖动,以及上述五个暂时性 code。计数与延迟边界参考了所调查实现中较保守的一端:[OpenCode 使用两次请求重试,延迟边界为 500 毫秒/10 秒](https://github.com/anomalyco/opencode/blob/9976269ab1accfc9f9dc98a4a688c516934de422/%70ackages/llm/src/route/executor.ts#L36-L39);[Pi 将三次 agent 级重试与提供方重试分开,且提供方重试默认为零](https://github.com/earendil-works/pi/blob/3da591ab74ab9ab407e72ed882600b2c851fae21/%70ackages/coding-agent/docs/settings.md#L139-L147);[Codex 使用有限请求/流预算以及五分钟空闲超时](https://github.com/openai/codex/blob/0fb559f0f6e231a88ac02ea002d3ecd248e2b515/codex-rs/model-provider-info/src/lib.rs#L25-L33)。10% 抖动参考 [Codex 的有界抖动](https://github.com/openai/codex/blob/0fb559f0f6e231a88ac02ea002d3ecd248e2b515/codex-rs/codex-client/src/retry.rs#L40-L47)。 +当前配置形状由[提供方策略决策](../../archived/feature/2026-07-24-provider-retry-policies.md)规定。提供方适配器会注册嵌套的 `retryPolicy`;省略时使用 normal 默认值:两次暂时性重试、500 毫秒初始延迟、10 秒延迟上限、10% 抖动,以及上述五个暂时性 code。计数与延迟边界参考了所调查实现中较保守的一端:[OpenCode 使用两次请求重试,延迟边界为 500 毫秒/10 秒](https://github.com/anomalyco/opencode/blob/9976269ab1accfc9f9dc98a4a688c516934de422/%70ackages/llm/src/route/executor.ts#L36-L39);[Pi 将三次 agent 级重试与提供方重试分开,且提供方重试默认为零](https://github.com/earendil-works/pi/blob/3da591ab74ab9ab407e72ed882600b2c851fae21/%70ackages/coding-agent/docs/settings.md#L139-L147);[Codex 使用有限请求/流预算以及五分钟空闲超时](https://github.com/openai/codex/blob/0fb559f0f6e231a88ac02ea002d3ecd248e2b515/codex-rs/model-provider-info/src/lib.rs#L25-L33)。10% 抖动参考 [Codex 的有界抖动](https://github.com/openai/codex/blob/0fb559f0f6e231a88ac02ea002d3ecd248e2b515/codex-rs/codex-client/src/retry.rs#L40-L47)。 对于预算未耗尽的合格失败,从 1 开始的暂时性重试计数使用有界指数退避。有效的 `providerRetryAfterMs` 只有在不超过 `maxDelayMs` 时才会取代指数退避;提供方延迟更长时,系统会委托给下一监听器,而不会违反提供方指令提前重试。本地退避乘以 `[1 - jitterRatio, 1 + jitterRatio]` 内的注入随机因子,并将最终值限制到 `maxDelayMs`;提供方延迟不加抖动。 @@ -100,7 +100,7 @@ agent loop(智能体循环)会将终止 finish 的 `LlmFailure` 传给 `agen - **向 `dsh-llm` 增加响应开始、中断、丢弃、失败和提交事件**:拒绝采用,因为 agent 日志已经分隔原始分片、成功消息和编号尝试。第二套状态机会重复归属关系,又不能支持有界的同路由重试。 - **增加逻辑路由、能力矩阵和故障转移选择**:拒绝采用,因为当前请求已经显式指定提供方和模型,每个提供方由一个适配器负责,而且没有当前消费方要求自动回退或能够证明语义兼容性。 - **把 `retryable` 或 `failover` 放在 `LlmFailure` 上**:拒绝采用,因为适配器报告事实,部署策略决定动作。同一个 429 可以在交互式组合包中重试,也可以在成本受限的批处理中被拒绝。 -- **只要调用方仍处于活跃状态就无限重试**:[按提供方配置的策略](../feature/2026-07-24-provider-retry-policies.zh.md)对显式 `always` 配置项推翻了这项拒绝,同时保留有界的 normal mode 作为默认值。 +- **只要调用方仍处于活跃状态就无限重试**:[按提供方配置的策略](../../archived/feature/2026-07-24-provider-retry-policies.md)对显式 `always` 配置项推翻了这项拒绝,同时保留有界的 normal mode 作为默认值。 - **只通过进程 logger 记录重试状态**:拒绝采用,因为进程日志无法重建会话行为,也不能驱动回放后的 UI 状态。 - **只保留扁平 code**:拒绝采用,因为重试延迟和提供方请求 id 是结构化的提供方事实,而当不同协议失败共用一个稳定 code 时,诊断还需要 HTTP 状态。 @@ -131,9 +131,9 @@ agent loop(智能体循环)会将终止 finish 的 `LlmFailure` 传给 `agen ## 相关资料 -- [结构化错误分类体系](../../implemented/architecture/2026-06-11-structured-error-taxonomy.zh.md)负责稳定、可供机器路由的 code 与 cause chaining。 +- [结构化错误分类体系](../../archived/architecture/2026-06-11-structured-error-taxonomy.md)负责稳定、可供机器路由的 code 与 cause chaining。 - [可重建请求](../../implemented/architecture/2026-07-05-reconstructable-requests.zh.md)使提供方/模型和完整请求输入在分发前持久化。 - [超时 deadline 库](../../implemented/architecture/2026-07-06-timeout-deadline-library.zh.md)将共享的 deadline 分类与能力自身拥有的终止操作分开。 - [调用后压缩压力与上下文溢出恢复](../../implemented/architecture/2026-07-10-after-call-compaction-pressure-and-overflow-recovery.zh.md)负责当前已关闭步骤的请求恢复扩展点与有界溢出重试。 - [提供方路由的 LLM 适配器](../../implemented/architecture/2026-07-14-provider-routed-llm-adapters.zh.md)负责显式提供方/模型路由与每个提供方仅有一个适配器的不变量。 -- [Terminal turn errors survive same-turn retry history](../bug-fix/2026-08-20-turn-error-survives-same-turn-retry-history.zh.md)负责移除曾藏掉耗尽恢复终态错误行的 Web 重试历史抑制。 +- [Terminal turn errors survive same-turn retry history](../../archived/bug-fix/2026-08-20-turn-error-survives-same-turn-retry-history.md)负责移除曾藏掉耗尽恢复终态错误行的 Web 重试历史抑制。 diff --git a/.agents/notes/implemented/architecture/2026-06-26-file-context-as-event-gate.i18n.yaml b/.agents/notes/implemented/architecture/2026-06-26-file-context-as-event-gate.i18n.yaml index 421739cb57..7db4727f48 100644 --- a/.agents/notes/implemented/architecture/2026-06-26-file-context-as-event-gate.i18n.yaml +++ b/.agents/notes/implemented/architecture/2026-06-26-file-context-as-event-gate.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-06-26-file-context-as-event-gate.md -2026-06-26-file-context-as-event-gate.md: a8316741c3ce8548db5b5def431425589994995c -2026-06-26-file-context-as-event-gate.zh.md: 618985f33073cf9fd69cf2c7fda7112d9752468f +2026-06-26-file-context-as-event-gate.md: 2943f11190533f84f3aebea0a25a88372d1204f1 +2026-06-26-file-context-as-event-gate.zh.md: 053f4269b13c8583def01c144badd17b10a5a41a diff --git a/.agents/notes/implemented/architecture/2026-06-26-file-context-as-event-gate.md b/.agents/notes/implemented/architecture/2026-06-26-file-context-as-event-gate.md index a8316741c3..2943f11190 100644 --- a/.agents/notes/implemented/architecture/2026-06-26-file-context-as-event-gate.md +++ b/.agents/notes/implemented/architecture/2026-06-26-file-context-as-event-gate.md @@ -33,7 +33,7 @@ provider dsh-fs-local local implementation of ctx.fs The model is additive: bare `ctx.fs` performs atomic, unconstrained text I/O, while `dsh-fs-observation-policy` adds observed state, read-before-edit, and version guards. Removing the policy therefore leaves the tools usable but unconstrained. Shipped agent configs load the policy; the bare mode exists to keep policy optional at the service boundary, not as the normal deployment stance. -The [filesystem absence-observation follow-up](../bug-fix/2026-08-09-filesystem-absence-observation.md) refines the recording payload from a success-only version to explicit present/absent state and requires guarded creation to publish without replacement. The event-gate ownership and no-I/O policy boundary remain unchanged. +The [filesystem absence-observation follow-up](../../archived/bug-fix/2026-08-09-filesystem-absence-observation.md) refines the recording payload from a success-only version to explicit present/absent state and requires guarded creation to publish without replacement. The event-gate ownership and no-I/O policy boundary remain unchanged. `dsh-tool-fs` no longer injects `fileContext`. It injects `fs` and `tools`/`systemPrompt`. diff --git a/.agents/notes/implemented/architecture/2026-06-26-file-context-as-event-gate.zh.md b/.agents/notes/implemented/architecture/2026-06-26-file-context-as-event-gate.zh.md index 618985f330..053f4269b1 100644 --- a/.agents/notes/implemented/architecture/2026-06-26-file-context-as-event-gate.zh.md +++ b/.agents/notes/implemented/architecture/2026-06-26-file-context-as-event-gate.zh.md @@ -33,7 +33,7 @@ provider dsh-fs-local local implementation of ctx.fs 该模型是叠加式的:裸 `ctx.fs` 执行原子化、无约束的文本 I/O,而 `dsh-fs-observation-policy` 叠加观测状态、先读后编辑和版本守卫。因此移除策略层后工具仍可用,只是不受约束。正式发布的 agent(智能体)配置会加载策略;裸模式的存在是为了让策略在服务边界保持可选,而非作为正常部署姿态。 -[文件系统缺失观测后续决策](../bug-fix/2026-08-09-filesystem-absence-observation.zh.md)把记录载荷从仅表示成功的版本细化为显式的存在/缺失状态,并要求带防护的创建以不替换方式发布。事件门控归属与无 I/O 策略边界保持不变。 +[文件系统缺失观测后续决策](../../archived/bug-fix/2026-08-09-filesystem-absence-observation.md)把记录载荷从仅表示成功的版本细化为显式的存在/缺失状态,并要求带防护的创建以不替换方式发布。事件门控归属与无 I/O 策略边界保持不变。 `dsh-tool-fs` 不再注入 `fileContext`。它注入 `fs` 和 `tools`/`systemPrompt`。 diff --git a/.agents/notes/implemented/architecture/2026-06-30-bash-stdin-env-trusted-plugin-api.i18n.yaml b/.agents/notes/implemented/architecture/2026-06-30-bash-stdin-env-trusted-plugin-api.i18n.yaml deleted file mode 100644 index 04eec8e0e1..0000000000 --- a/.agents/notes/implemented/architecture/2026-06-30-bash-stdin-env-trusted-plugin-api.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-06-30-bash-stdin-env-trusted-plugin-api.md -2026-06-30-bash-stdin-env-trusted-plugin-api.md: 41be63fff598587ee9b873cf7edf51da788bc02a -2026-06-30-bash-stdin-env-trusted-plugin-api.zh.md: 60721539d9d37857e145e289bb262482588139bf diff --git a/.agents/notes/implemented/architecture/2026-06-30-event-domain-semantics.i18n.yaml b/.agents/notes/implemented/architecture/2026-06-30-event-domain-semantics.i18n.yaml index 94a99ad44f..4a4342d1f2 100644 --- a/.agents/notes/implemented/architecture/2026-06-30-event-domain-semantics.i18n.yaml +++ b/.agents/notes/implemented/architecture/2026-06-30-event-domain-semantics.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-06-30-event-domain-semantics.md -2026-06-30-event-domain-semantics.md: f3e4686a1e9e14c9284de5a4bff16501c50aa907 -2026-06-30-event-domain-semantics.zh.md: f4bc92111666b0c30586222e14ee1aeab49ebb3f +2026-06-30-event-domain-semantics.md: 7e0aee220a62777ebe1d8f6a5018aba0f5fa20ee +2026-06-30-event-domain-semantics.zh.md: 14568c7a4660c42cecc47f094373d299380fa563 diff --git a/.agents/notes/implemented/architecture/2026-06-30-event-domain-semantics.md b/.agents/notes/implemented/architecture/2026-06-30-event-domain-semantics.md index f3e4686a1e..7e0aee220a 100644 --- a/.agents/notes/implemented/architecture/2026-06-30-event-domain-semantics.md +++ b/.agents/notes/implemented/architecture/2026-06-30-event-domain-semantics.md @@ -26,14 +26,14 @@ This vocabulary is the foundation for interception decisions, the durable `hook/ **The boundary rule:** a durable, replayable fact is a `SessionEvent`; a live interception or a transient/live-object signal is an `agent`/`tools` Cordis event. A turn or step boundary is a durable fact, so it lives in the session log and is read off the `session/event` feed — it is NOT mirrored as an `agent/*` emit. -**Applying the rule to the boundary twins:** all four boundary mirrors — `agent/turn-start`, `agent/turn-end`, `agent/step-start`, `agent/step-end` — are **REMOVED**. No production consumer needs the live `Agent` at a boundary: the ACP bridge correlates its in-flight prompt with the exact `session/event` `turn/start`/`turn/end` pair, and other transcript consumers likewise derive boundaries from the durable stream. See [the remove-boundary-mirror-events Agent Note](../simplification/2026-06-20-remove-agent-boundary-mirror-events.md), which owns that decision. Removing the emits also simplifies the loop's `closeStep`/`closeTurn` (one append each, no paired emit). +**Applying the rule to the boundary twins:** all four boundary mirrors — `agent/turn-start`, `agent/turn-end`, `agent/step-start`, `agent/step-end` — are **REMOVED**. No production consumer needs the live `Agent` at a boundary: the ACP bridge correlates its in-flight prompt with the exact `session/event` `turn/start`/`turn/end` pair, and other transcript consumers likewise derive boundaries from the durable stream. See [the remove-boundary-mirror-events Agent Note](../../archived/simplification/2026-06-20-remove-agent-boundary-mirror-events.md), which owns that decision. Removing the emits also simplifies the loop's `closeStep`/`closeTurn` (one append each, no paired emit). ## Consequences - The loop no longer emits any boundary mirror; `closeStep` appends `step/end` only and `closeTurn` appends `turn/end` only. `Session.append` owns post-commit observer containment, so a throwing boundary observer cannot change the turn outcome or starve later consumers; an acceptance or internal validation failure still escapes before the boundary enters the log. - Tests that observed boundaries via the removed emits now observe the durable `turn/start`/`turn/end`/`step/start`/`step/end` session events — the behavior they pin (boundary ordering, step counting) is unchanged; only the feed they read moved to the canonical one. The tests that exercised a *throwing turn-boundary emit listener* were deleted, because that code path no longer exists (there is no emit to throw from). Per [AGENTS.md "tests document behavior, not golden truth"](../../../../AGENTS.md), the behavior and its test moved (or died) together. - The loop marks the step open (`stepOpen = true`) only after `append('step/start')` returns. Internal dispatch validation runs before the log push and may reject without opening a step; post-commit `session/event` observer failures are contained inside `Session.append`. The marker therefore represents exactly the committed boundary that owes a later `step/end`. -- The full realization of this is [the simplification Agent Note "Stop mirroring durable boundaries as agent events"](../simplification/2026-06-20-remove-agent-boundary-mirror-events.md): all four boundary mirrors are removed and every consumer reads boundaries off `session/event`. `agent/steering` (not a boundary mirror) stayed outside that Agent Note's scope and was removed by its own follow-up, [Remove the `agent/steering` mirror emit](../../archived/simplification/2026-07-04-remove-agent-steering-mirror.md) — it mirrored the durable mid-turn steering `user/message`. +- The full realization of this is [the simplification Agent Note "Stop mirroring durable boundaries as agent events"](../../archived/simplification/2026-06-20-remove-agent-boundary-mirror-events.md): all four boundary mirrors are removed and every consumer reads boundaries off `session/event`. `agent/steering` (not a boundary mirror) stayed outside that Agent Note's scope and was removed by its own follow-up, [Remove the `agent/steering` mirror emit](../../archived/simplification/2026-07-04-remove-agent-steering-mirror.md) — it mirrored the durable mid-turn steering `user/message`. - The generated cordis event surface (the `docs/subsystems/` pages) no longer lists the mirror events. diff --git a/.agents/notes/implemented/architecture/2026-06-30-event-domain-semantics.zh.md b/.agents/notes/implemented/architecture/2026-06-30-event-domain-semantics.zh.md index f4bc921116..14568c7a46 100644 --- a/.agents/notes/implemented/architecture/2026-06-30-event-domain-semantics.zh.md +++ b/.agents/notes/implemented/architecture/2026-06-30-event-domain-semantics.zh.md @@ -26,14 +26,14 @@ harness 通过 Cordis 事件分类体系扩展 agent loop(智能体循环) **边界规则:** 持久的、可回放的事实是 `SessionEvent`;实时拦截或瞬态/活对象信号是 `agent`/`tools` Cordis 事件。轮次或步骤边界是持久事实,因此存在于会话日志中并从 `session/event` 源读取——不会被镜像为 `agent/*` emit。 -**将规则应用于边界镜像:** 全部四个边界镜像——`agent/turn-start`、`agent/turn-end`、`agent/step-start`、`agent/step-end`——被**移除**。没有生产消费方需要在边界处获取活的 `Agent`:ACP(Agent Client Protocol)桥接将其进行中的提示词与精确对应的 `session/event` `turn/start`/`turn/end` 事件对关联,其他 transcript 消费方同样从持久流派生边界。见[移除边界镜像事件 Agent Note](../simplification/2026-06-20-remove-agent-boundary-mirror-events.zh.md),该决策由它负责。移除 emit 也简化了循环的 `closeStep`/`closeTurn`(各只需一次 append,无需配对 emit)。 +**将规则应用于边界镜像:** 全部四个边界镜像——`agent/turn-start`、`agent/turn-end`、`agent/step-start`、`agent/step-end`——被**移除**。没有生产消费方需要在边界处获取活的 `Agent`:ACP(Agent Client Protocol)桥接将其进行中的提示词与精确对应的 `session/event` `turn/start`/`turn/end` 事件对关联,其他 transcript 消费方同样从持久流派生边界。见[移除边界镜像事件 Agent Note](../../archived/simplification/2026-06-20-remove-agent-boundary-mirror-events.md),该决策由它负责。移除 emit 也简化了循环的 `closeStep`/`closeTurn`(各只需一次 append,无需配对 emit)。 ## 后果 - 循环不再 emit 任何边界镜像;`closeStep` 仅追加 `step/end`,`closeTurn` 仅追加 `turn/end`。`Session.append` 负责 post-commit observer 隔离,因此抛出异常的边界 observer 无法改变轮次结果或饿死后续消费方;事件接纳失败或内部校验失败仍会在边界进入日志之前向外抛出。 - 之前通过已移除 emit 观察边界的测试,现在观察持久的 `turn/start`/`turn/end`/`step/start`/`step/end` 会话事件——它们所锁定的行为(边界顺序、步骤计数)不变;只是读取的源移到了规范源。那些测试*抛出异常的轮次边界 emit 监听器*的用例被删除,因为该代码路径不再存在(没有 emit 可供抛出)。按照 [AGENTS.md「测试记录行为,而非黄金真相」](../../../../AGENTS.md),行为与其测试一同迁移(或一同消亡)。 - 循环仅在 `append('step/start')` 返回后才标记步骤已打开(`stepOpen = true`)。内部分发校验在日志推入之前运行,可能在不打开步骤的情况下拒绝;post-commit `session/event` observer 的失败被隔离在 `Session.append` 内部。因此该标记精确表示已提交的、欠一个后续 `step/end` 的边界。 -- 完整实现见[简化 Agent Note「停止将持久边界镜像为 agent 事件」](../simplification/2026-06-20-remove-agent-boundary-mirror-events.zh.md):全部四个边界镜像被移除,所有消费方从 `session/event` 读取边界。`agent/steering`(不是边界镜像)不在该 Agent Note 范围内,由其后续 Agent Note [移除 `agent/steering` 镜像 emit](../../archived/simplification/2026-07-04-remove-agent-steering-mirror.md) 单独移除——它镜像的是持久的中途 steering `user/message`。 +- 完整实现见[简化 Agent Note「停止将持久边界镜像为 agent 事件」](../../archived/simplification/2026-06-20-remove-agent-boundary-mirror-events.md):全部四个边界镜像被移除,所有消费方从 `session/event` 读取边界。`agent/steering`(不是边界镜像)不在该 Agent Note 范围内,由其后续 Agent Note [移除 `agent/steering` 镜像 emit](../../archived/simplification/2026-07-04-remove-agent-steering-mirror.md) 单独移除——它镜像的是持久的中途 steering `user/message`。 - 生成的 Cordis 事件表面(`docs/subsystems/` 各页)不再列出镜像事件。 diff --git a/.agents/notes/implemented/architecture/2026-07-02-fs-per-session-cwd.i18n.yaml b/.agents/notes/implemented/architecture/2026-07-02-fs-per-session-cwd.i18n.yaml deleted file mode 100644 index 6536d7e735..0000000000 --- a/.agents/notes/implemented/architecture/2026-07-02-fs-per-session-cwd.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-07-02-fs-per-session-cwd.md -2026-07-02-fs-per-session-cwd.md: 23c9f414590df8c79109e46f24af031b765b8f58 -2026-07-02-fs-per-session-cwd.zh.md: 6a8ffb357d43bdd61c09a2766e9977d4ad33b128 diff --git a/.agents/notes/implemented/architecture/2026-07-05-prompt-variables-and-tool-guidance-ownership.i18n.yaml b/.agents/notes/implemented/architecture/2026-07-05-prompt-variables-and-tool-guidance-ownership.i18n.yaml index fcdffd69cd..04a20028d5 100644 --- a/.agents/notes/implemented/architecture/2026-07-05-prompt-variables-and-tool-guidance-ownership.i18n.yaml +++ b/.agents/notes/implemented/architecture/2026-07-05-prompt-variables-and-tool-guidance-ownership.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-07-05-prompt-variables-and-tool-guidance-ownership.md -2026-07-05-prompt-variables-and-tool-guidance-ownership.md: 361184fa7dbdaccd49ac19235c016daf5eb5ca53 -2026-07-05-prompt-variables-and-tool-guidance-ownership.zh.md: 6b462572883fb69ca64f2babf28974ae59e7bd74 +2026-07-05-prompt-variables-and-tool-guidance-ownership.md: f4364453c5ddded2fc0cb1d733732059feee6632 +2026-07-05-prompt-variables-and-tool-guidance-ownership.zh.md: d8ee8ef906d02d5a96ae7db3fb705685618223ee diff --git a/.agents/notes/implemented/architecture/2026-07-05-prompt-variables-and-tool-guidance-ownership.md b/.agents/notes/implemented/architecture/2026-07-05-prompt-variables-and-tool-guidance-ownership.md index 361184fa7d..f4364453c5 100644 --- a/.agents/notes/implemented/architecture/2026-07-05-prompt-variables-and-tool-guidance-ownership.md +++ b/.agents/notes/implemented/architecture/2026-07-05-prompt-variables-and-tool-guidance-ownership.md @@ -32,7 +32,7 @@ Plugins register `{{name}}` values through `ctx.systemPrompt.variable(name, prov ### Persona as the order-0 section -`dsh-system-prompt` owns `harness:identity` at first-party order `-1000` and the configured `deployment:persona` at order 0, so both survive a replacement loop. Prompt rendering has one path, `renderPrompt(assembly)`, and the routed request header therefore records the exact prompt later replayed by `ctx.tokenMeter` for compaction pressure. An agent-scoped `deployment:persona` shadows the global default and lets subagent providers install a persona before publication. The [first-party order allocation](2026-08-25-sparse-first-party-prompt-section-orders.md) owns the sparse named placements for identity, policy, tool guidance, generated protocol, and final-output obligations. +`dsh-system-prompt` owns `harness:identity` at first-party order `-1000` and the configured `deployment:persona` at order 0, so both survive a replacement loop. Prompt rendering has one path, `renderPrompt(assembly)`, and the routed request header therefore records the exact prompt later replayed by `ctx.tokenMeter` for compaction pressure. An agent-scoped `deployment:persona` shadows the global default and lets subagent providers install a persona before publication. The [`dsh-system-prompt` README](../../../../packages/core/system-prompt/README.md) owns the sparse named placements for identity, policy, tool guidance, generated protocol, and final-output obligations. ### Tool guidance ownership @@ -40,7 +40,7 @@ Per-tool semantics and selection guidance live in tool descriptions. Prompt sect ### The subagent conversation-history descriptor -`SubagentProvider.inheritsParentContext` describes conversation seeding, not scope, services, tools, or authority. Spawn and ACP set it to `false`; fork sets it to `true`. `dsh-tool-subagent` derives its tool and prompt-parameter descriptions from the flag, including that fork inherits completed turns but not the in-flight turn. Provider lifecycle events keep that wording synchronized with reactive provider registration; their rationale lives in the [provider-lifecycle-events Agent Note](2026-07-05-subagent-provider-lifecycle-events.md). +`SubagentProvider.inheritsParentContext` describes conversation seeding, not scope, services, tools, or authority. Spawn and ACP set it to `false`; fork sets it to `true`. `dsh-tool-subagent` derives its tool and prompt-parameter descriptions from the flag, including that fork inherits completed turns but not the in-flight turn. Provider lifecycle events keep that wording synchronized with reactive provider registration; their rationale lives in the [provider-lifecycle-events Agent Note](../../archived/architecture/2026-07-05-subagent-provider-lifecycle-events.md). ## Alternatives considered @@ -49,7 +49,7 @@ Per-tool semantics and selection guidance live in tool descriptions. Prompt sect - **Hand-write the model name in each persona** — duplicates the `model:` key one line above and silently lies after a config edit; the exact disease this decision cures. - **Lenient interpolation (leave unknown refs verbatim, or substitute empty)** — a typo ships `{{modle}}` (or a hole) to the model and nobody notices until transcript review. - **Per-instance subagent wording in config** — returns model-facing prose to every deployment × instance, reviving the hand-written-guidance-in-leaf-YAML drift. **Keying wording off the provider NAME** — `providerName` is itself config, so a renamed provider silently gets the wrong words. -- **Resolving the provider at `apply` time (a load-order requirement)** and **section-only subagent wording (lazily resolved at assemble)** — the alternatives to the provider-lifecycle events; both rejected in [the provider-lifecycle-events Agent Note](2026-07-05-subagent-provider-lifecycle-events.md). +- **Resolving the provider at `apply` time (a load-order requirement)** and **section-only subagent wording (lazily resolved at assemble)** — the alternatives to the provider-lifecycle events; both rejected in [the provider-lifecycle-events Agent Note](../../archived/architecture/2026-07-05-subagent-provider-lifecycle-events.md). ## Out of scope diff --git a/.agents/notes/implemented/architecture/2026-07-05-prompt-variables-and-tool-guidance-ownership.zh.md b/.agents/notes/implemented/architecture/2026-07-05-prompt-variables-and-tool-guidance-ownership.zh.md index 6b46257288..d8ee8ef906 100644 --- a/.agents/notes/implemented/architecture/2026-07-05-prompt-variables-and-tool-guidance-ownership.zh.md +++ b/.agents/notes/implemented/architecture/2026-07-05-prompt-variables-and-tool-guidance-ownership.zh.md @@ -32,7 +32,7 @@ Status: implemented ### Persona 作为 order-0 section -`dsh-system-prompt` 拥有 first-party order 为 `-1000` 的 `harness:identity` 和 order 为 0 的配置 `deployment:persona`,因此两者在循环被替换时仍然存活。提示词渲染只有一条路径 `renderPrompt(assembly)`,已路由请求 header 因此会记录准确的提示词,稍后由 `ctx.tokenMeter` 为压缩(compaction)压力回放。agent 作用域的 `deployment:persona` 遮蔽全局默认值,允许 subagent 提供方在发布前安装 persona。[first-party 顺序分配](2026-08-25-sparse-first-party-prompt-section-orders.zh.md)规定身份、策略、工具指导、生成协议和最终输出义务的稀疏具名位置。 +`dsh-system-prompt` 拥有 first-party order 为 `-1000` 的 `harness:identity` 和 order 为 0 的配置 `deployment:persona`,因此两者在循环被替换时仍然存活。提示词渲染只有一条路径 `renderPrompt(assembly)`,已路由请求 header 因此会记录准确的提示词,稍后由 `ctx.tokenMeter` 为压缩(compaction)压力回放。agent 作用域的 `deployment:persona` 遮蔽全局默认值,允许 subagent 提供方在发布前安装 persona。[`dsh-system-prompt` README](../../../../packages/core/system-prompt/README.zh.md)规定身份、策略、工具指导、生成协议和最终输出义务的稀疏具名位置。 ### 工具指导归属 @@ -40,7 +40,7 @@ Status: implemented ### Subagent 对话历史描述符 -`SubagentProvider.inheritsParentContext` 描述的是对话历史初始化,而非作用域、服务、工具或权限。spawn 和 ACP 将其设为 `false`;fork 设为 `true`。`dsh-tool-subagent` 根据该标志派生工具描述和提示词参数描述,包括 fork 继承已完成轮次但不继承进行中轮次这一点。提供方生命周期事件使该措辞与响应式提供方注册保持同步;其设计动机见[提供方生命周期事件 Agent Note](2026-07-05-subagent-provider-lifecycle-events.zh.md)。 +`SubagentProvider.inheritsParentContext` 描述的是对话历史初始化,而非作用域、服务、工具或权限。spawn 和 ACP 将其设为 `false`;fork 设为 `true`。`dsh-tool-subagent` 根据该标志派生工具描述和提示词参数描述,包括 fork 继承已完成轮次但不继承进行中轮次这一点。提供方生命周期事件使该措辞与响应式提供方注册保持同步;其设计动机见[提供方生命周期事件 Agent Note](../../archived/architecture/2026-07-05-subagent-provider-lifecycle-events.md)。 ## 曾考虑的替代方案 @@ -49,7 +49,7 @@ Status: implemented - **在每个 persona 中手写模型名称**:与上方一行的 `model:` 键重复,配置修改后静默失实;正是本决策要治愈的病症。 - **宽松插值(未知引用保留原样或替换为空)**:一个拼写错误 `{{modle}}`(或一个空洞)会被发送给模型,直到 transcript(文本记录)审查时才会被发现。 - **在配置中为每个 subagent 实例编写措辞**:面向模型的行文回到每个部署 × 实例中,重蹈在 leaf YAML 中手写指导的漂移。**根据提供方名称选择措辞**:`providerName` 本身是配置,重命名提供方后会静默获得错误的措辞。 -- **在 `apply` 时解析提供方(加载顺序要求)**与**仅用 section 承载 subagent 措辞(在 assemble 时惰性解析)**:提供方生命周期事件的替代方案;两者均在[提供方生命周期事件 Agent Note](2026-07-05-subagent-provider-lifecycle-events.zh.md)中被否决。 +- **在 `apply` 时解析提供方(加载顺序要求)**与**仅用 section 承载 subagent 措辞(在 assemble 时惰性解析)**:提供方生命周期事件的替代方案;两者均在[提供方生命周期事件 Agent Note](../../archived/architecture/2026-07-05-subagent-provider-lifecycle-events.md)中被否决。 ## 不在范围内 diff --git a/.agents/notes/implemented/architecture/2026-07-05-subagent-provider-lifecycle-events.i18n.yaml b/.agents/notes/implemented/architecture/2026-07-05-subagent-provider-lifecycle-events.i18n.yaml deleted file mode 100644 index a66c6f6065..0000000000 --- a/.agents/notes/implemented/architecture/2026-07-05-subagent-provider-lifecycle-events.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-07-05-subagent-provider-lifecycle-events.md -2026-07-05-subagent-provider-lifecycle-events.md: 503c0d638785e3a4944c8903b8d7d469c68b1881 -2026-07-05-subagent-provider-lifecycle-events.zh.md: d9d15b4ff688506b84b81c8649e1de4ce50e086d diff --git a/.agents/notes/implemented/architecture/2026-07-06-timeout-deadline-library.i18n.yaml b/.agents/notes/implemented/architecture/2026-07-06-timeout-deadline-library.i18n.yaml index 66dd29f3a4..aaa3f9f1d1 100644 --- a/.agents/notes/implemented/architecture/2026-07-06-timeout-deadline-library.i18n.yaml +++ b/.agents/notes/implemented/architecture/2026-07-06-timeout-deadline-library.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-07-06-timeout-deadline-library.md -2026-07-06-timeout-deadline-library.md: 95adc41bffff6d7711685ebc52cb73b2b455df41 -2026-07-06-timeout-deadline-library.zh.md: 8b7b18a2d1e7757102afc81bea03245de2707d86 +2026-07-06-timeout-deadline-library.md: 24dcabfd039e553af28fd3cc1d2c7f717ee66509 +2026-07-06-timeout-deadline-library.zh.md: 5f31cf21606345bb323ce3f839b5cb939def5a48 diff --git a/.agents/notes/implemented/architecture/2026-07-06-timeout-deadline-library.md b/.agents/notes/implemented/architecture/2026-07-06-timeout-deadline-library.md index 95adc41bff..24dcabfd03 100644 --- a/.agents/notes/implemented/architecture/2026-07-06-timeout-deadline-library.md +++ b/.agents/notes/implemented/architecture/2026-07-06-timeout-deadline-library.md @@ -103,7 +103,7 @@ The signal only *notifies*; termination is always the listener's job, and the li - `AbortSignal.any` and `using`/`Symbol.dispose` enter the repo for the first time here (Node ≥ 24 baseline, already met). - Model streams now share one rearmable timer contract without turning a sliding idle interval into a total-call deadline or charging consumer think time. Adapters that can observe out-of-band transport activity may pulse an outstanding demand; suppressed activity remains invisible to the watchdog. The primitive still only notifies; adapter tests prove their transports observe its stable signal and terminate. -Out of scope, named to mark the boundary: `web_search` can gain an optional model-facing `timeout_ms` once its tool-schema/snapshot coverage is planned; the ripgrep-backed fs discovery tools ([packaged ripgrep search](2026-08-01-packaged-ripgrep-search.md)) consume the same provider-owned deadline shape through `dsh-tool-call-timeout-policy` and `exec.signal`; a `tools/execute` waterfall middleware could arm a default deadline for every tool call by driving `exec.signal` — that would be a plugin that *consumes* this library and still only notifies, the hard kill remaining each capability's job. +Out of scope, named to mark the boundary: `web_search` can gain an optional model-facing `timeout_ms` once its tool-schema/snapshot coverage is planned; the ripgrep-backed fs discovery tools ([packaged ripgrep search](../../archived/architecture/2026-08-01-packaged-ripgrep-search.md)) consume the same provider-owned deadline shape through `dsh-tool-call-timeout-policy` and `exec.signal`; a `tools/execute` waterfall middleware could arm a default deadline for every tool call by driving `exec.signal` — that would be a plugin that *consumes* this library and still only notifies, the hard kill remaining each capability's job. ## Alternatives considered diff --git a/.agents/notes/implemented/architecture/2026-07-06-timeout-deadline-library.zh.md b/.agents/notes/implemented/architecture/2026-07-06-timeout-deadline-library.zh.md index 8b7b18a2d1..5f31cf2160 100644 --- a/.agents/notes/implemented/architecture/2026-07-06-timeout-deadline-library.zh.md +++ b/.agents/notes/implemented/architecture/2026-07-06-timeout-deadline-library.zh.md @@ -103,7 +103,7 @@ export function timeoutOf(x: AbortSignal | { reason?: unknown }, code?: string): - `AbortSignal.any` 和 `using`/`Symbol.dispose` 在此首次进入本仓库(Node ≥ 24 基线,已满足)。 - 模型流现在共享一个可重启的定时器约定,不会把滑动的空闲间隔变成总调用截止时间,也不会计入消费方思考时间。能够观察到带外传输活动的适配器可以对尚未结算的 demand 调用 `pulse()`;被屏蔽的活动对 watchdog 仍不可见。该原语仍然只做通知;适配器测试证明其传输观察到稳定信号并终止。 -以下内容不在本次范围内,列出以标明边界:`web_search` 可以在其工具 schema 和快照覆盖规划完成后获得可选的面向模型的 `timeout_ms`;基于 ripgrep 的文件系统发现工具([打包的 ripgrep 搜索](2026-08-01-packaged-ripgrep-search.zh.md))通过 `dsh-tool-call-timeout-policy` 和 `exec.signal` 消费同样的提供方自有 deadline 形状;`tools/execute` waterfall(瀑布式事件)中间件可以通过驱动 `exec.signal` 为每次工具调用设置默认 deadline——那将是一个*消费*本库的插件,仍然只做通知,硬终止仍是各能力自己的事。 +以下内容不在本次范围内,列出以标明边界:`web_search` 可以在其工具 schema 和快照覆盖规划完成后获得可选的面向模型的 `timeout_ms`;基于 ripgrep 的文件系统发现工具([打包的 ripgrep 搜索](../../archived/architecture/2026-08-01-packaged-ripgrep-search.md))通过 `dsh-tool-call-timeout-policy` 和 `exec.signal` 消费同样的提供方自有 deadline 形状;`tools/execute` waterfall(瀑布式事件)中间件可以通过驱动 `exec.signal` 为每次工具调用设置默认 deadline——那将是一个*消费*本库的插件,仍然只做通知,硬终止仍是各能力自己的事。 ## 曾考虑的替代方案 diff --git a/.agents/notes/implemented/architecture/2026-07-06-tool-result-retention-library.i18n.yaml b/.agents/notes/implemented/architecture/2026-07-06-tool-result-retention-library.i18n.yaml deleted file mode 100644 index 554114fff0..0000000000 --- a/.agents/notes/implemented/architecture/2026-07-06-tool-result-retention-library.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-07-06-tool-result-retention-library.md -2026-07-06-tool-result-retention-library.md: 464e3d51a0051487b7c29f0c01a11acb91d160e5 -2026-07-06-tool-result-retention-library.zh.md: 49361eec4b649d2d68dc36929baa0f9ff580eb68 diff --git a/.agents/notes/implemented/architecture/2026-07-07-tool-call-timeout-policy.i18n.yaml b/.agents/notes/implemented/architecture/2026-07-07-tool-call-timeout-policy.i18n.yaml index 373b1293ce..4cacefaca8 100644 --- a/.agents/notes/implemented/architecture/2026-07-07-tool-call-timeout-policy.i18n.yaml +++ b/.agents/notes/implemented/architecture/2026-07-07-tool-call-timeout-policy.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-07-07-tool-call-timeout-policy.md -2026-07-07-tool-call-timeout-policy.md: 92618cc8c761b38d7e516c9d00eb3de1c37831a8 -2026-07-07-tool-call-timeout-policy.zh.md: 0303fadd134c6eb8c41449823b62f1458f4523ba +2026-07-07-tool-call-timeout-policy.md: 60d82c1d591f0a32350b1a21ed74e148c4c93576 +2026-07-07-tool-call-timeout-policy.zh.md: 49ca7f397d15c1a351cba4837d4d531e54120ea6 diff --git a/.agents/notes/implemented/architecture/2026-07-07-tool-call-timeout-policy.md b/.agents/notes/implemented/architecture/2026-07-07-tool-call-timeout-policy.md index 92618cc8c7..60d82c1d59 100644 --- a/.agents/notes/implemented/architecture/2026-07-07-tool-call-timeout-policy.md +++ b/.agents/notes/implemented/architecture/2026-07-07-tool-call-timeout-policy.md @@ -16,7 +16,7 @@ Tool-call timeout is a policy that applies only to model-facing tool execution, - `@deepseek-ai/dsh-timeout` remains the shared library that owns `deadline()` and `timeoutOf()`. - `@deepseek-ai/dsh-tools` has an around-dispatch waterfall, `tools/execute`, between `tools/pre-execute` and `tools/post-execute`. -- The [repository naming contract](2026-08-11-repository-naming-contract-and-rename-ledger.md) names `@deepseek-ai/dsh-tool-call-timeout-policy` for the exact operation it limits. The plugin reads each tool's declared `timeoutMs` from the runtime and wraps a call that has one by deriving a new `exec.signal`. +- The [repository naming contract](../../archived/architecture/2026-08-11-repository-naming-contract-and-rename-ledger.md) names `@deepseek-ai/dsh-tool-call-timeout-policy` for the exact operation it limits. The plugin reads each tool's declared `timeoutMs` from the runtime and wraps a call that has one by deriving a new `exec.signal`. The execution pipeline is: diff --git a/.agents/notes/implemented/architecture/2026-07-07-tool-call-timeout-policy.zh.md b/.agents/notes/implemented/architecture/2026-07-07-tool-call-timeout-policy.zh.md index 0303fadd13..49ca7f397d 100644 --- a/.agents/notes/implemented/architecture/2026-07-07-tool-call-timeout-policy.zh.md +++ b/.agents/notes/implemented/architecture/2026-07-07-tool-call-timeout-policy.zh.md @@ -16,7 +16,7 @@ Status: implemented - `@deepseek-ai/dsh-timeout` 仍是拥有 `deadline()` 和 `timeoutOf()` 的共享库。 - `@deepseek-ai/dsh-tools` 在 `tools/pre-execute` 和 `tools/post-execute` 之间有一个环绕分发的 waterfall(瀑布式事件)`tools/execute`。 -- [仓库命名约定](2026-08-11-repository-naming-contract-and-rename-ledger.zh.md)使用 `@deepseek-ai/dsh-tool-call-timeout-policy`,准确说明该策略所限制的操作。插件从 runtime 读取每个工具声明的 `timeoutMs`,并通过派生新的 `exec.signal` 来包装有此声明的调用。 +- [仓库命名约定](../../archived/architecture/2026-08-11-repository-naming-contract-and-rename-ledger.md)使用 `@deepseek-ai/dsh-tool-call-timeout-policy`,准确说明该策略所限制的操作。插件从 runtime 读取每个工具声明的 `timeoutMs`,并通过派生新的 `exec.signal` 来包装有此声明的调用。 执行流水线如下: diff --git a/.agents/notes/implemented/architecture/2026-07-08-tool-output-spill-files.i18n.yaml b/.agents/notes/implemented/architecture/2026-07-08-tool-output-spill-files.i18n.yaml index f1135aa2b3..0e76ec6ebc 100644 --- a/.agents/notes/implemented/architecture/2026-07-08-tool-output-spill-files.i18n.yaml +++ b/.agents/notes/implemented/architecture/2026-07-08-tool-output-spill-files.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-07-08-tool-output-spill-files.md -2026-07-08-tool-output-spill-files.md: 915e22f1245adb6f7cfc7d358e9d5802531bab63 -2026-07-08-tool-output-spill-files.zh.md: 8d08b05483a302f4188506531da6f507931bea9c +2026-07-08-tool-output-spill-files.md: 4e18e9887ab636d31dfe40b1cd38e078e4b30c23 +2026-07-08-tool-output-spill-files.zh.md: b900c168d81253189c7229cc77d6400c614aa89c diff --git a/.agents/notes/implemented/architecture/2026-07-08-tool-output-spill-files.md b/.agents/notes/implemented/architecture/2026-07-08-tool-output-spill-files.md index 915e22f124..4e18e9887a 100644 --- a/.agents/notes/implemented/architecture/2026-07-08-tool-output-spill-files.md +++ b/.agents/notes/implemented/architecture/2026-07-08-tool-output-spill-files.md @@ -8,7 +8,7 @@ English | [中文](2026-07-08-tool-output-spill-files.zh.md) Tool outputs need bounded model-facing previews, but some oversized results are still useful later. A fetched page body or a verbose tool response should not consume the next model request in full, but the model should be able to inspect the complete formatted result later with existing file-reading tools. -Before this change the behavior was uneven. `dsh-bash-local` already writes complete stdout/stderr streams to private temp spill files when its in-memory tail overflows, but ordinary text tool results were returned inline unless the tool hand-rolled its own cap. The [tool result retention library](2026-07-06-tool-result-retention-library.md) owns preview mechanics, but it does not own storage or an execution-pipeline policy that applies those mechanics to final tool results. +Before this change the behavior was uneven. `dsh-bash-local` already writes complete stdout/stderr streams to private temp spill files when its in-memory tail overflows, but ordinary text tool results were returned inline unless the tool hand-rolled its own cap. The [tool result retention library](../../archived/architecture/2026-07-06-tool-result-retention-library.md) owns preview mechanics, but it does not own storage or an execution-pipeline policy that applies those mechanics to final tool results. The shape matches the timeout policy design: a tool author declares a canonical value plus Native renderer, and a policy plugin enforces the deployment's default context budget on rendered content. Tool-specific early spill remains possible for provider acquisition bounds; tool-owned presentation spill may retain a complete acquired canonical value while replacing only presentation. The [canonical tool-output contract](2026-07-20-canonical-tool-output-contract.md) owns that split. @@ -57,7 +57,7 @@ interface SpillRef { `SpillLocator` is a [branded](../../../../packages/util/brand) model-facing handle returned by the backend. The local backend renders it as a filesystem path; a remote or database backend can render a URI, key, or command token. Consumers treat it as opaque and render it with `retrievalHint` instead of assuming `read` is always the right retrieval mechanism. `SpillOwner.sessionId` is the save-time storage namespace: forked sessions inherit existing spill locators from the seeded log without copying or re-owning them, and new spills after the fork use the child session id. A retention-period cleanup may expire old locators with other old session artifacts; the spill seam does not define a per-session cleanup policy. -`dsh-spill-local` owns storage details: session-scoped directory selection, safe names, path-traversal protection, the write, local artifact lifetime, and returning `{ locator, bytes, retrievalHint }`. It does not own tool-result replacement, model-facing preview policy, search, file inspection, or a seam-wide/per-session retention policy. Files land at `/session-/-`, where `root` is a configured path or a lazily-created private (0700) per-process temp dir, the session subdir is a short `sha256(sessionId)` prefix, and the leaf is a random hex prefix plus the caller's `suggestedName` sanitized to one path segment (mirrors the JSONL backend's `encodeSegment`). The write is `open(path, 'wx', 0o600)` — exclusive and owner-only, so a planted symlink cannot redirect it. The locator is the path, and the retrieval hint tells the model it can use `read` or `grep` on that path. Its one-shot startup cleanup applies the backend-specific artifact lifetime described in the [local spill cleanup note](./2026-07-17-local-spill-startup-cleanup.md). +`dsh-spill-local` owns storage details: session-scoped directory selection, safe names, path-traversal protection, the write, local artifact lifetime, and returning `{ locator, bytes, retrievalHint }`. It does not own tool-result replacement, model-facing preview policy, search, file inspection, or a seam-wide/per-session retention policy. Files land at `/session-/-`, where `root` is a configured path or a lazily-created private (0700) per-process temp dir, the session subdir is a short `sha256(sessionId)` prefix, and the leaf is a random hex prefix plus the caller's `suggestedName` sanitized to one path segment (mirrors the JSONL backend's `encodeSegment`). The write is `open(path, 'wx', 0o600)` — exclusive and owner-only, so a planted symlink cannot redirect it. The locator is the path, and the retrieval hint tells the model it can use `read` or `grep` on that path. Its one-shot startup cleanup applies the backend-specific artifact lifetime described in the [local spill cleanup note](../../archived/architecture/2026-07-17-local-spill-startup-cleanup.md). ### Spill policy @@ -161,7 +161,7 @@ Those cases can consume `ctx.spillStore` directly in later work. They are not pa - Per-tool opt-out or per-tool policy declarations if the built-in `read` skip is insufficient. - Remote or database storage backends for ACP or remote environments where a local path is not meaningful. -Cleanup shipped for the local backend as a one-shot startup sweep, not tied to session deletion — see the [startup-cleanup Agent Note](./2026-07-17-local-spill-startup-cleanup.md). The seam still defines no per-session cleanup policy; retention is a backend concern. +Cleanup shipped for the local backend as a one-shot startup sweep, not tied to session deletion — see the [startup-cleanup Agent Note](../../archived/architecture/2026-07-17-local-spill-startup-cleanup.md). The seam still defines no per-session cleanup policy; retention is a backend concern. ## Testing diff --git a/.agents/notes/implemented/architecture/2026-07-08-tool-output-spill-files.zh.md b/.agents/notes/implemented/architecture/2026-07-08-tool-output-spill-files.zh.md index 8d08b05483..b900c168d8 100644 --- a/.agents/notes/implemented/architecture/2026-07-08-tool-output-spill-files.zh.md +++ b/.agents/notes/implemented/architecture/2026-07-08-tool-output-spill-files.zh.md @@ -8,7 +8,7 @@ Status: implemented 工具输出需要有界的模型可见预览,但部分超大结果仍可能在之后有用。抓取的页面正文或冗长的工具响应不应完整占用下一次模型请求,但模型应能使用现有文件读取工具,在之后查看经过格式化的完整结果。 -这项改动之前的行为并不一致。`dsh-bash-local` 已经会在内存尾部溢出时,把完整 stdout/stderr 流写入私有的临时 spill 文件;普通文本工具结果则仍以内联形式返回,除非工具自行实现上限。[工具结果保留库](2026-07-06-tool-result-retention-library.zh.md)负责预览机制,但不负责存储,也不负责把这些机制应用于最终工具结果的执行流水线策略。 +这项改动之前的行为并不一致。`dsh-bash-local` 已经会在内存尾部溢出时,把完整 stdout/stderr 流写入私有的临时 spill 文件;普通文本工具结果则仍以内联形式返回,除非工具自行实现上限。[工具结果保留库](../../archived/architecture/2026-07-06-tool-result-retention-library.md)负责预览机制,但不负责存储,也不负责把这些机制应用于最终工具结果的执行流水线策略。 其形态与超时策略设计一致:工具作者声明规范值与 Native renderer(原生渲染器),由策略插件在渲染后的内容上执行部署默认的上下文预算。工具仍可在提供方采集上限处提前 spill;由工具负责的展示 spill 可以保留已完整采集的规范值,而只替换展示内容。[规范工具输出约定](2026-07-20-canonical-tool-output-contract.zh.md)规定了这项区分。 @@ -57,7 +57,7 @@ interface SpillRef { `SpillLocator` 是一个[品牌化的](../../../../packages/util/brand)模型可见句柄,由后端返回。本地后端将其渲染为文件系统路径;远程或数据库后端可以渲染 URI、键或命令 token。消费方把它视为不透明值,并使用 `retrievalHint` 渲染,而不是假定 `read` 始终是正确的检索机制。`SpillOwner.sessionId` 是保存时的存储命名空间:fork 后的会话会从种子日志继承已有的 spill 定位符,无需复制它们或重新取得所有权;fork 后的新 spill 使用子会话 id。保留期清理可以连同其他旧会话产物一起使旧定位符失效;spill seam 不定义逐会话的清理策略。 -`dsh-spill-local` 负责存储细节:选择会话作用域的目录、安全名称、防止路径遍历、执行写入、本地产物生命周期,以及返回 `{ locator, bytes, retrievalHint }`。它不负责工具结果替换、模型可见的预览策略、搜索、文件检查,也不定义 seam 级或逐会话保留策略。文件写入 `/session-/-`:`root` 是配置路径,或延迟创建的私有(0700)进程级临时目录;会话子目录是 `sha256(sessionId)` 的短前缀;叶节点由随机十六进制前缀与调用方的 `suggestedName` 组成,后者会被清理成单一路径段(与 JSONL 后端的 `encodeSegment` 一致)。系统使用 `open(path, 'wx', 0o600)` 写入,确保独占且仅所有者可访问,因此预先植入的符号链接无法重定向写入。定位符就是该路径,检索提示则告知模型可以在该路径上使用 `read` 或 `grep`。它的一次性启动清理会应用[本地 spill 清理说明](./2026-07-17-local-spill-startup-cleanup.zh.md)所述的后端专属产物生命周期。 +`dsh-spill-local` 负责存储细节:选择会话作用域的目录、安全名称、防止路径遍历、执行写入、本地产物生命周期,以及返回 `{ locator, bytes, retrievalHint }`。它不负责工具结果替换、模型可见的预览策略、搜索、文件检查,也不定义 seam 级或逐会话保留策略。文件写入 `/session-/-`:`root` 是配置路径,或延迟创建的私有(0700)进程级临时目录;会话子目录是 `sha256(sessionId)` 的短前缀;叶节点由随机十六进制前缀与调用方的 `suggestedName` 组成,后者会被清理成单一路径段(与 JSONL 后端的 `encodeSegment` 一致)。系统使用 `open(path, 'wx', 0o600)` 写入,确保独占且仅所有者可访问,因此预先植入的符号链接无法重定向写入。定位符就是该路径,检索提示则告知模型可以在该路径上使用 `read` 或 `grep`。它的一次性启动清理会应用[本地 spill 清理说明](../../archived/architecture/2026-07-17-local-spill-startup-cleanup.md)所述的后端专属产物生命周期。 ### spill 策略 @@ -161,7 +161,7 @@ ctx.tools.register(defineTool({ - 如果内置的 `read` 跳过规则不足,再增加逐工具选择退出或逐工具策略声明。 - 面向 ACP(Agent Client Protocol)或远程环境的远程/数据库存储后端,因为本地路径在这些环境中没有意义。 -本地后端通过一次性启动扫描清理旧文件,而不是绑定到会话删除——参见[启动清理 Agent Note](./2026-07-17-local-spill-startup-cleanup.zh.md)。seam 仍未定义逐会话清理策略;保留策略属于后端。 +本地后端通过一次性启动扫描清理旧文件,而不是绑定到会话删除——参见[启动清理 Agent Note](../../archived/architecture/2026-07-17-local-spill-startup-cleanup.md)。seam 仍未定义逐会话清理策略;保留策略属于后端。 ## 测试 diff --git a/.agents/notes/implemented/architecture/2026-07-10-single-file-executable-sdk-runtime-distribution.i18n.yaml b/.agents/notes/implemented/architecture/2026-07-10-single-file-executable-sdk-runtime-distribution.i18n.yaml index bda4bc2ddb..c2c2fb38b7 100644 --- a/.agents/notes/implemented/architecture/2026-07-10-single-file-executable-sdk-runtime-distribution.i18n.yaml +++ b/.agents/notes/implemented/architecture/2026-07-10-single-file-executable-sdk-runtime-distribution.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-07-10-single-file-executable-sdk-runtime-distribution.md -2026-07-10-single-file-executable-sdk-runtime-distribution.md: 558358167a5e7d37bc79c42003a183b0c4c40d17 -2026-07-10-single-file-executable-sdk-runtime-distribution.zh.md: 0f7daec5b79e6f526dde7a01c5ef85b07e955707 +2026-07-10-single-file-executable-sdk-runtime-distribution.md: ac365ade126cb14d84dc4fe5dcba45e890511621 +2026-07-10-single-file-executable-sdk-runtime-distribution.zh.md: df40831d45551d313d82571cfffe95c5f6a19164 diff --git a/.agents/notes/implemented/architecture/2026-07-10-single-file-executable-sdk-runtime-distribution.md b/.agents/notes/implemented/architecture/2026-07-10-single-file-executable-sdk-runtime-distribution.md index 558358167a..ac365ade12 100644 --- a/.agents/notes/implemented/architecture/2026-07-10-single-file-executable-sdk-runtime-distribution.md +++ b/.agents/notes/implemented/architecture/2026-07-10-single-file-executable-sdk-runtime-distribution.md @@ -32,7 +32,7 @@ The deterministic serving surface is a plugin selected by the packaged `dsh` app - [`packages/sdk/server`](../../../../packages/sdk/server/README.md) (`@deepseek-ai/dsh-sdk-jsonrpc-server`): the pure protocol plugin; on apply it mounts `HarnessSdkJsonRpcServer` plus a line-delimited JSON-RPC transport on the process stdio, with disposal through `ctx.effect()`. Whether to serve is decided by `cordis.yml`; a yml that does not mount it is a legitimate process that does not serve. Protocol-level exit belongs to the plugin (after answering and flushing the `shutdown` response it disposes the root runtime so persistence drains, then `exit(0)`; an HMR-style unload only stops the service without exiting the process). - [`apps/cli`](../../../../apps/cli/README.md) (`@deepseek-ai/dsh`): the packaged application entry; its `sdk` profile mounts `dsh-sdk-jsonrpc-server`, and the CLI owns environment layering, profile composition, stdin/signal shutdown, and process exit. -The Python client supplies an explicit Harness home and selects the `sdk` profile plus ordered patch files. A missing home, profile, bundle, or server row fails loudly; there is no external complete-config fallback. The [Python profile-runtime decision](2026-08-23-python-sdk-dsh-profile-runtime.md) owns this application surface. +The Python client supplies an explicit Harness home and selects the `sdk` profile plus ordered patch files. A missing home, profile, bundle, or server row fails loudly; there is no external complete-config fallback. [docs/architecture.md](../../../../docs/architecture.md) owns this application surface. ### Plugin resolution: the VFS holds a real package tree, the closure manifest IS the deploy root @@ -46,7 +46,7 @@ The deploy root includes `@deepseek-ai/dsh-mcp-client` as an explicitly supporte [`scripts/build-exe-for-python-sdk.ts`](../../../../scripts/build-exe-for-python-sdk.ts): runtime closure verification → `pnpm run build` → (after clearing) `pnpm --filter dsh-python-runtime-closure deploy --legacy --prod --config.node-linker=hoisted --config.auto-install-peers=false --config.link-workspace-packages=true` **directly into** `python/sdk-runtime/src/deepseek_harness_runtime/runtime/node/` → restore direct workspace packages omitted by legacy deploy and reject any remaining manifest gap → replace staged dependency symlinks with their target bytes, remove package-manager `.bin` links, and fail if any symlink remains → inject pkg configuration whose bin is `node_modules/@deepseek-ai/dsh/lib/bin.js` and whose assets cover dynamic profile, bundle, frontend, preset, native-library, and configuration reads → stage the target `node-pty` addon → invoke `pkg --sea` once per target → write `deepseek-harness-sdk-runtime--` under `dist-exe/` and copy it into the runtime directory. Linux CI rebuilds `pty.node` inside the matching manylinux 2.28 container because legacy deploy omits that install side effect. Every target copies its native `@vscode/ripgrep` binary beside the executable as the required `-rg` sidecar; pkg runtimes select that sidecar through `process.pkg`, while ordinary Node execution uses `@vscode/ripgrep` directly. macOS uses its target prebuild and also emits the required `-spawn-helper`. All four deploy flags are grounded in measurement: `--legacy` is the mandatory path with inject-workspace-packages off; hoisted gives pkg a stable single-instance layout that the explicit materialization pass makes symlink-free; disabling automatic peer installation prevents undeclared peers from expanding the closure; link-workspace-packages selects direct workspace dependencies. [`pnpm-workspace.yaml`](../../../../pnpm-workspace.yaml) overrides the transitive `@deepseek-ai/cosmokit` and `@deepseek-ai/schemastery` semver requests to the pinned vendor sources so legacy deploy never resolves those unpublished names from a registry. -CI: [`.github/workflows/build-exe-for-python-sdk.yml`](../../../../.github/workflows/build-exe-for-python-sdk.yml) is called for all five targets by the [installed-wheel Python runtime pull-request validation](../testing/2026-08-23-installed-python-wheel-black-box-ci.md) and the [public publication workflow](../process/2026-08-11-python-publication-workflow.md); `workflow_dispatch` can still select a subset. Native builds run on linux-x64 / linux-arm64 (`ubuntu-24.04-arm`) / macos-arm64 / macos-x64 (`macos-15-intel`) / win-x64 (`windows-2025`), with `~/.pkg-cache` cached where applicable, and pkg handles macOS ad-hoc signing. Each leg installs the release-shaped SDK and runtime wheels into a clean venv outside the checkout, proves their package and executable provenance, then drives the complete keyless scenario set through the public SDK and direct NDJSON JSON-RPC. Trusted pull requests additionally run a real DeepSeek two-turn tool smoke on every target; fork and Dependabot heads receive no key. Linux inspects the executable and native addon's GLIBC requirements and runs an additional manylinux 2.28 smoke, while macOS checks the runtime, ripgrep, and PTY helper architectures and verifies that all three deployment targets fit the wheel tag. A full five-target run retains six artifacts, each containing one release file: the platform-independent SDK wheel and five native runtime wheels; a subset dispatch retains the SDK wheel and selected runtime wheels. Bare executables and source bundles remain intermediate test inputs. [`.gitlab-ci.yml`](../../../../.gitlab-ci.yml) accepts `python-v` tag pipelines whose version matches the root `package.json`, builds one SDK wheel and five native runtime wheels, then a single serialized job checks and publishes all six to the project PyPI registry. The [Windows x64 runtime decision](2026-08-23-python-sdk-windows-x64-runtime.md) owns the Windows target and the explicit exclusion of Windows arm64. +CI: [`.github/workflows/build-exe-for-python-sdk.yml`](../../../../.github/workflows/build-exe-for-python-sdk.yml) is called for all five targets by the [installed-wheel Python runtime pull-request validation](../testing/2026-08-23-installed-python-wheel-black-box-ci.md) and the [public publication workflow](../../archived/process/2026-08-11-python-publication-workflow.md); `workflow_dispatch` can still select a subset. Native builds run on linux-x64 / linux-arm64 (`ubuntu-24.04-arm`) / macos-arm64 / macos-x64 (`macos-15-intel`) / win-x64 (`windows-2025`), with `~/.pkg-cache` cached where applicable, and pkg handles macOS ad-hoc signing. Each leg installs the release-shaped SDK and runtime wheels into a clean venv outside the checkout, proves their package and executable provenance, then drives the complete keyless scenario set through the public SDK and direct NDJSON JSON-RPC. Trusted pull requests additionally run a real DeepSeek two-turn tool smoke on every target; fork and Dependabot heads receive no key. Linux inspects the executable and native addon's GLIBC requirements and runs an additional manylinux 2.28 smoke, while macOS checks the runtime, ripgrep, and PTY helper architectures and verifies that all three deployment targets fit the wheel tag. A full five-target run retains six artifacts, each containing one release file: the platform-independent SDK wheel and five native runtime wheels; a subset dispatch retains the SDK wheel and selected runtime wheels. Bare executables and source bundles remain intermediate test inputs. [`.gitlab-ci.yml`](../../../../.gitlab-ci.yml) accepts `python-v` tag pipelines whose version matches the root `package.json`, builds one SDK wheel and five native runtime wheels, then a single serialized job checks and publishes all six to the project PyPI registry. The [`python/sdk-runtime` README](../../../../python/sdk-runtime/README.md) owns the Windows target and the explicit exclusion of Windows arm64. ### Python SDK distribution: two carriers, exe for production, node for development diff --git a/.agents/notes/implemented/architecture/2026-07-10-single-file-executable-sdk-runtime-distribution.zh.md b/.agents/notes/implemented/architecture/2026-07-10-single-file-executable-sdk-runtime-distribution.zh.md index 0f7daec5b7..df40831d45 100644 --- a/.agents/notes/implemented/architecture/2026-07-10-single-file-executable-sdk-runtime-distribution.zh.md +++ b/.agents/notes/implemented/architecture/2026-07-10-single-file-executable-sdk-runtime-distribution.zh.md @@ -32,7 +32,7 @@ exe 使用 [@yao-pkg/pkg](https://github.com/yao-pkg/pkg)(vercel/pkg 归档后 - [`packages/sdk/server`](../../../../packages/sdk/server/README.zh.md)(`@deepseek-ai/dsh-sdk-jsonrpc-server`):纯协议插件;执行 `apply` 时,在进程 stdio 上挂载 `HarnessSdkJsonRpcServer` 与按行分隔的 JSON-RPC 传输层,资源释放走 `ctx.effect()`。是否提供服务由 `cordis.yml` 决定;未挂载该插件的配置会启动一个不提供此服务的合法进程。协议级退出归插件所有(应答并确保 `shutdown` 响应发送完毕后,对根运行时执行 dispose(资源释放),让待处理的持久化操作完成,再调用 `exit(0)`;HMR(热模块替换)式卸载只停止服务,不退出进程)。 - [`apps/cli`](../../../../apps/cli/README.zh.md)(`@deepseek-ai/dsh`):打包后的应用入口;其 `sdk` profile 挂载 `dsh-sdk-jsonrpc-server`,CLI 负责环境分层、profile 组合、stdin/signal 关闭与进程退出。 -Python 客户端提供显式 Harness home,并选择 `sdk` profile 与有序 patch 文件。缺失 home、profile、bundle 或 server 配置项都会明确失败;不存在外部完整配置回退。[Python profile 运行时决策](2026-08-23-python-sdk-dsh-profile-runtime.zh.md)负责该应用接口。 +Python 客户端提供显式 Harness home,并选择 `sdk` profile 与有序 patch 文件。缺失 home、profile、bundle 或 server 配置项都会明确失败;不存在外部完整配置回退。[docs/architecture.md](../../../../docs/architecture.zh.md)负责该应用接口。 ### 插件解析:VFS 装载真实包树,闭包 manifest(元数据清单)就是部署根目录 @@ -46,7 +46,7 @@ exe 的 VFS 内是**构建产物形态的真实包树**(各包的 `lib/` + 真 [`scripts/build-exe-for-python-sdk.ts`](../../../../scripts/build-exe-for-python-sdk.ts):运行时闭包校验 → `pnpm run build` →(清空后)`pnpm --filter dsh-python-runtime-closure deploy --legacy --prod --config.node-linker=hoisted --config.auto-install-peers=false --config.link-workspace-packages=true` **直接写入** `python/sdk-runtime/src/deepseek_harness_runtime/runtime/node/` → 恢复 legacy deploy 遗漏的直接工作区包,并拒绝剩余的 manifest 缺口 → 将暂存依赖中的符号链接替换为目标文件内容,删除包管理器的 `.bin` 链接,并在仍有任何符号链接时失败 → 注入 pkg 配置,其中 bin 为 `node_modules/@deepseek-ai/dsh/lib/bin.js`,assets 覆盖动态读取的 profile、bundle、前端、preset、原生库与配置文件 → 暂存目标平台的 `node-pty` addon → 每个构建目标调用一次 `pkg --sea` → 将 `deepseek-harness-sdk-runtime--` 写入 `dist-exe/` 并拷回运行时目录。Linux CI 会在匹配的 manylinux 2.28 容器中重新构建 `pty.node`,因为 legacy deploy 会遗漏这一安装副作用。每个目标都会把对应的原生 `@vscode/ripgrep` 二进制复制到可执行文件旁,作为必需的 `-rg` 伴随文件;pkg 运行时通过 `process.pkg` 选择该伴随文件,普通 Node 执行则直接使用 `@vscode/ripgrep`。macOS 使用对应目标的预构建产物,并额外生成所需的 `-spawn-helper`。四个部署标志都有实测依据:未启用 `inject-workspace-packages` 时必须使用 `--legacy`;`hoisted` 为 pkg 提供稳定的单实例布局,再由显式物化步骤消除符号链接;关闭对等依赖自动安装可防止未声明的对等依赖扩大闭包;`link-workspace-packages` 选择直接工作区依赖。[`pnpm-workspace.yaml`](../../../../pnpm-workspace.yaml) 将传递的 `@deepseek-ai/cosmokit` 与 `@deepseek-ai/schemastery` semver 请求覆盖到固定的 vendor 源码,使 legacy deploy 不会从注册表解析这些未发布名称。 -CI 使用 [`.github/workflows/build-exe-for-python-sdk.yml`](../../../../.github/workflows/build-exe-for-python-sdk.yml):[安装后 wheel Python 运行时拉取请求验证](../testing/2026-08-23-installed-python-wheel-black-box-ci.zh.md)与[公开发布工作流](../process/2026-08-11-python-publication-workflow.zh.md)都会调用它构建全部五个目标;`workflow_dispatch` 仍可选择部分目标。linux-x64、linux-arm64(`ubuntu-24.04-arm`)、macos-arm64、macos-x64(`macos-15-intel`)与 win-x64(`windows-2025`)分别进行原生构建,并在适用平台缓存 `~/.pkg-cache`;macOS 的 ad-hoc 签名由 pkg 处理。每个平台都把发布形态的 SDK wheel 包与运行时 wheel 包安装到 checkout 外的干净 venv,证明包与可执行文件来源,再通过公开 SDK 与直接 NDJSON JSON-RPC 运行完整 keyless 场景。可信拉取请求还会在每个目标上运行真实 DeepSeek 双轮工具冒烟测试;fork 与 Dependabot head 不会获得密钥。Linux 会检查可执行文件和原生 addon 各自的 GLIBC 依赖,并额外运行 manylinux 2.28 冒烟测试;macOS 则检查 runtime、ripgrep 与 PTY helper 的架构,并验证三个载荷的部署目标都符合 wheel 包标签。完整构建五个目标时保留 6 个产物,每个产物只含一个发布文件:平台无关的 SDK wheel 包与 5 个原生运行时 wheel 包;手动选择部分目标时保留 SDK wheel 与所选运行时 wheel。裸 exe 与源码包只作为测试中间输入。[`.gitlab-ci.yml`](../../../../.gitlab-ci.yml) 只接受版本与根目录 `package.json` 匹配的 `python-v` 标签流水线,构建一个 SDK wheel 包和 5 个原生运行时 wheel 包,再由单个串行任务校验并将这 6 个文件发布到项目的 PyPI 注册表。[Windows x64 运行时决策](2026-08-23-python-sdk-windows-x64-runtime.zh.md)负责 Windows 目标及对 Windows arm64 的明确排除。 +CI 使用 [`.github/workflows/build-exe-for-python-sdk.yml`](../../../../.github/workflows/build-exe-for-python-sdk.yml):[安装后 wheel Python 运行时拉取请求验证](../testing/2026-08-23-installed-python-wheel-black-box-ci.zh.md)与[公开发布工作流](../../archived/process/2026-08-11-python-publication-workflow.md)都会调用它构建全部五个目标;`workflow_dispatch` 仍可选择部分目标。linux-x64、linux-arm64(`ubuntu-24.04-arm`)、macos-arm64、macos-x64(`macos-15-intel`)与 win-x64(`windows-2025`)分别进行原生构建,并在适用平台缓存 `~/.pkg-cache`;macOS 的 ad-hoc 签名由 pkg 处理。每个平台都把发布形态的 SDK wheel 包与运行时 wheel 包安装到 checkout 外的干净 venv,证明包与可执行文件来源,再通过公开 SDK 与直接 NDJSON JSON-RPC 运行完整 keyless 场景。可信拉取请求还会在每个目标上运行真实 DeepSeek 双轮工具冒烟测试;fork 与 Dependabot head 不会获得密钥。Linux 会检查可执行文件和原生 addon 各自的 GLIBC 依赖,并额外运行 manylinux 2.28 冒烟测试;macOS 则检查 runtime、ripgrep 与 PTY helper 的架构,并验证三个载荷的部署目标都符合 wheel 包标签。完整构建五个目标时保留 6 个产物,每个产物只含一个发布文件:平台无关的 SDK wheel 包与 5 个原生运行时 wheel 包;手动选择部分目标时保留 SDK wheel 与所选运行时 wheel。裸 exe 与源码包只作为测试中间输入。[`.gitlab-ci.yml`](../../../../.gitlab-ci.yml) 只接受版本与根目录 `package.json` 匹配的 `python-v` 标签流水线,构建一个 SDK wheel 包和 5 个原生运行时 wheel 包,再由单个串行任务校验并将这 6 个文件发布到项目的 PyPI 注册表。[`python/sdk-runtime` README](../../../../python/sdk-runtime/README.zh.md)负责 Windows 目标及对 Windows arm64 的明确排除。 ### Python SDK 分发:双载体,exe 用于生产,`node` 用于开发 diff --git a/.agents/notes/implemented/architecture/2026-07-12-agent-scope-runtime-design.i18n.yaml b/.agents/notes/implemented/architecture/2026-07-12-agent-scope-runtime-design.i18n.yaml index 241dcf71db..e469f71c7b 100644 --- a/.agents/notes/implemented/architecture/2026-07-12-agent-scope-runtime-design.i18n.yaml +++ b/.agents/notes/implemented/architecture/2026-07-12-agent-scope-runtime-design.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-07-12-agent-scope-runtime-design.md -2026-07-12-agent-scope-runtime-design.md: 7aebac35d1a5477f0b1d3857e983680ea38bd9f5 -2026-07-12-agent-scope-runtime-design.zh.md: c636bf6f51c58aa5d9f1e3b6f9988b4f4ab5b86c +2026-07-12-agent-scope-runtime-design.md: b6001a5ef9f2dc69ec21908f8350b765dd00acf1 +2026-07-12-agent-scope-runtime-design.zh.md: be12c53ffa9b89e007888935002a5c484c038fd7 diff --git a/.agents/notes/implemented/architecture/2026-07-12-agent-scope-runtime-design.md b/.agents/notes/implemented/architecture/2026-07-12-agent-scope-runtime-design.md index 7aebac35d1..b6001a5ef9 100644 --- a/.agents/notes/implemented/architecture/2026-07-12-agent-scope-runtime-design.md +++ b/.agents/notes/implemented/architecture/2026-07-12-agent-scope-runtime-design.md @@ -72,7 +72,7 @@ The receiver is a small carrier rather than a transparent proxy for the domain o ### Registry reads overlay one exact layer -Scope-aware registries use `ScopedLayers` to own one eager global aggregate and lazily created identity-keyed aggregates. A read resolves the global layer and at most one exact local layer; it never creates state or traverses parentage. Registration visibility and Cordis effect ownership derive from the same context, and reclamation waits until the concrete layer's complete aggregate is empty ([decision](2026-07-12-scoped-layers-store.md)). +Scope-aware registries use `ScopedLayers` to own one eager global aggregate and lazily created identity-keyed aggregates. A read resolves the global layer and at most one exact local layer; it never creates state or traverses parentage. Registration visibility and Cordis effect ownership derive from the same context, and reclamation waits until the concrete layer's complete aggregate is empty ([decision](../../archived/architecture/2026-07-12-scoped-layers-store.md)). Each service retains its domain rule. Named command and prompt views use the shared insertion-ordered shadow merge; tools keep a richer resolver because restrictions filter globals before local tools are added and the reserved PTC mode transport is inserted separately. Prompt variables and tool guards retain live iteration, while tool-provider membership is materialized per assembly. Scope supplies storage lifecycle and named shadowing, not a universal registry view. @@ -266,7 +266,7 @@ Subagent startup has one ownership transfer. The provider owns unpublished resou ### The service contract has one cancellation channel -`SubagentProvider.start()` and `SubagentRuntime.start()` return `Promise`. The promise fulfills after the backend crosses its publication boundary, so callers and `subagent/start` observers never need a second `run.started` promise. Provider work that fails before publication rejects `start()`; prompt, turn, cancellation, and infrastructure outcomes after publication settle through `SubagentRun.result` without hiding the child id, as required by the [durable catalog decision](../feature/2026-07-22-durable-subagent-catalog-and-list-agents.md). +`SubagentProvider.start()` and `SubagentRuntime.start()` return `Promise`. The promise fulfills after the backend crosses its publication boundary, so callers and `subagent/start` observers never need a second `run.started` promise. Provider work that fails before publication rejects `start()`; prompt, turn, cancellation, and infrastructure outcomes after publication settle through `SubagentRun.result` without hiding the child id, as required by the [durable catalog decision](../../archived/feature/2026-07-22-durable-subagent-catalog-and-list-agents.md). `SubagentStartRequest.signal` is required. Aborting it requests cancellation during startup and across the published run's remaining readiness or turn work. `SubagentRun.dispose()` also requests cancellation and awaits quiescence. There is no separate public `run.cancel()` channel. @@ -330,7 +330,7 @@ The plugin does not police trusted setup by scanning registries or reject prompt ### Generated artifacts keep public contracts aligned -The event catalog, service catalog, producer/consumer matrix, configuration catalog, module graph, tool catalog, type-equivalence blocks, and scoped-event resolver map are generated or freshness-gated from source. The [TypeScript semantic-gates Agent Note](../process/2026-07-14-typescript-program-backed-semantic-gates.md) owns Program construction, semantic event discovery, and resolver-generation rules. +The event catalog, service catalog, producer/consumer matrix, configuration catalog, module graph, tool catalog, type-equivalence blocks, and scoped-event resolver map are generated or freshness-gated from source. The [TypeScript semantic-gates Agent Note](../../archived/process/2026-07-14-typescript-program-backed-semantic-gates.md) owns Program construction, semantic event discovery, and resolver-generation rules. Behavioral tests pin scoped routing and disposal, final-entry collision cleanup, publication rollback, ordered quiescence, durable pre/post-commit behavior, live tool filtering across presentation and execution, cooperative prompt assembly, structured-output commit in native and PTC mode, async subagent startup and signal cancellation, worker terminal arbitration, ACP settlement, and process teardown. diff --git a/.agents/notes/implemented/architecture/2026-07-12-agent-scope-runtime-design.zh.md b/.agents/notes/implemented/architecture/2026-07-12-agent-scope-runtime-design.zh.md index c636bf6f51..be12c53ffa 100644 --- a/.agents/notes/implemented/architecture/2026-07-12-agent-scope-runtime-design.zh.md +++ b/.agents/notes/implemented/architecture/2026-07-12-agent-scope-runtime-design.zh.md @@ -74,7 +74,7 @@ Receiver 是一个小型载体而非领域对象的透明代理。需要 agent ### 注册表读取叠加一个精确 layer -作用域感知的注册表使用 `ScopedLayers`,拥有一个即时创建的全局 aggregate 和按标识键惰性创建的 aggregate。读取解析全局 layer 和至多一个精确局部 layer;它不创建状态,也从不遍历父级链。注册可见性与 Cordis effect 所有权都从同一个上下文派生,而回收会等待具体 layer 的完整 aggregate 变空(见[决策](2026-07-12-scoped-layers-store.zh.md))。 +作用域感知的注册表使用 `ScopedLayers`,拥有一个即时创建的全局 aggregate 和按标识键惰性创建的 aggregate。读取解析全局 layer 和至多一个精确局部 layer;它不创建状态,也从不遍历父级链。注册可见性与 Cordis effect 所有权都从同一个上下文派生,而回收会等待具体 layer 的完整 aggregate 变空(见[决策](../../archived/architecture/2026-07-12-scoped-layers-store.md))。 每个服务保留其领域规则。命名 command 和提示词视图使用共享的、保持插入顺序的 shadow 合并;工具保留更丰富的 resolver,因为限制会在加入局部工具前过滤全局工具,保留的 PTC mode transport 则单独插入。提示词变量和工具 guard 保持实时迭代,而工具提供方成员关系按每次 assembly 物化。Scope 提供存储生命周期和命名遮蔽,而非通用的注册表视图。 @@ -274,7 +274,7 @@ subagent 启动有一次所有权转移。提供方拥有未发布资源,直 ### 服务约定有一个取消通道 -`SubagentProvider.start()` 和 `SubagentRuntime.start()` 返回 `Promise`。Promise 会在后端跨过发布边界后兑现,因此调用方和 `subagent/start` 观察者从不需要第二个 `run.started` promise。提供方工作如果在发布前失败,`start()` 就会被拒绝;发布后的提示词、轮次、取消与基础设施结果会通过 `SubagentRun.result` 结算,且不会隐藏 child id,这也是[持久化目录决策](../feature/2026-07-22-durable-subagent-catalog-and-list-agents.zh.md)所要求的约定。 +`SubagentProvider.start()` 和 `SubagentRuntime.start()` 返回 `Promise`。Promise 会在后端跨过发布边界后兑现,因此调用方和 `subagent/start` 观察者从不需要第二个 `run.started` promise。提供方工作如果在发布前失败,`start()` 就会被拒绝;发布后的提示词、轮次、取消与基础设施结果会通过 `SubagentRun.result` 结算,且不会隐藏 child id,这也是[持久化目录决策](../../archived/feature/2026-07-22-durable-subagent-catalog-and-list-agents.md)所要求的约定。 `SubagentStartRequest.signal` 是必需的。中止它会在启动期间,以及已发布 run 的剩余就绪或轮次工作中请求取消。`SubagentRun.dispose()` 也请求取消并等待完全停稳。没有单独的公开 `run.cancel()` 通道。 @@ -340,7 +340,7 @@ TypeScript 无法管控 JavaScript 强制转换、直接 Cordis dispatch、进 ### 生成的产物使公开约定保持对齐 -事件目录、服务目录、生产者/消费方矩阵、配置目录、模块图、工具目录、type-equiv 块和作用域事件解析器映射都是从源码生成或受新鲜度门禁约束的。[TypeScript 语义门禁 Agent Note](../process/2026-07-14-typescript-program-backed-semantic-gates.zh.md) 拥有 Program 构造、语义事件发现和解析器生成规则。 +事件目录、服务目录、生产者/消费方矩阵、配置目录、模块图、工具目录、type-equiv 块和作用域事件解析器映射都是从源码生成或受新鲜度门禁约束的。[TypeScript 语义门禁 Agent Note](../../archived/process/2026-07-14-typescript-program-backed-semantic-gates.md) 拥有 Program 构造、语义事件发现和解析器生成规则。 行为测试固定了作用域路由和 dispose、最终写入注册表时的碰撞清理、发布回滚、有序完全停稳、持久化前/后提交行为、跨展示和执行的活跃工具过滤、协作式提示词组装、原生和 PTC mode 中的结构化输出提交、异步 subagent 启动和信号取消、worker 终端仲裁、ACP 结算和进程拆除。 diff --git a/.agents/notes/implemented/architecture/2026-07-12-scoped-layers-store.i18n.yaml b/.agents/notes/implemented/architecture/2026-07-12-scoped-layers-store.i18n.yaml deleted file mode 100644 index 205c3c4e39..0000000000 --- a/.agents/notes/implemented/architecture/2026-07-12-scoped-layers-store.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-07-12-scoped-layers-store.md -2026-07-12-scoped-layers-store.md: 221711748007d5f909aec3fdfcf3919884d11cdb -2026-07-12-scoped-layers-store.zh.md: 97ad637b91a2b9b2cad9847d8b4cdbe23ff14a48 diff --git a/.agents/notes/implemented/architecture/2026-07-14-provider-routed-llm-adapters.i18n.yaml b/.agents/notes/implemented/architecture/2026-07-14-provider-routed-llm-adapters.i18n.yaml index a060f0ddd9..9b7bdba826 100644 --- a/.agents/notes/implemented/architecture/2026-07-14-provider-routed-llm-adapters.i18n.yaml +++ b/.agents/notes/implemented/architecture/2026-07-14-provider-routed-llm-adapters.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-07-14-provider-routed-llm-adapters.md -2026-07-14-provider-routed-llm-adapters.md: ab4c485b79f37d9360da9a9a32f38063cae99755 -2026-07-14-provider-routed-llm-adapters.zh.md: c431d710af95352a2ecfc7b76b6393428ebedfec +2026-07-14-provider-routed-llm-adapters.md: 11f99a51dc4f4dc3670d29d691f366567d75f836 +2026-07-14-provider-routed-llm-adapters.zh.md: e2e5526c4bb7a29480dde37af1c4e493ebe0e111 diff --git a/.agents/notes/implemented/architecture/2026-07-14-provider-routed-llm-adapters.md b/.agents/notes/implemented/architecture/2026-07-14-provider-routed-llm-adapters.md index ab4c485b79..11f99a51dc 100644 --- a/.agents/notes/implemented/architecture/2026-07-14-provider-routed-llm-adapters.md +++ b/.agents/notes/implemented/architecture/2026-07-14-provider-routed-llm-adapters.md @@ -20,7 +20,7 @@ The adapter configuration also assumes one DeepSeek API key and endpoint. A gene `GenerateOptions` and `LlmCallConfig` carry `provider: string` beside `model: string`; `AgentOptions` carries the corresponding optional creation field. A loop request is valid only after both values are non-empty, and both values are part of the logged request header. `agent/request` may return a replacement pair on any step, so a session can switch providers and models without changing the Cordis plugin lifecycle. -`LlmRuntime` registers and resolves adapters by provider. `registerAdapter(providers, adapter)` checks the entire provider list before mutating the registry, rejects a duplicate with `DUPLICATE_ADAPTER`, and disposes the whole registration as one effect. Model ids are not registration keys; the selected adapter still validates or forwards them. The later [LLM catalog and ACP selection Agent Note](2026-07-15-llm-model-catalog-and-acp-selection.md) added advisory `listProviders()` / `listModels()` discovery without turning model membership into request validation. +`LlmRuntime` registers and resolves adapters by provider. `registerAdapter(providers, adapter)` checks the entire provider list before mutating the registry, rejects a duplicate with `DUPLICATE_ADAPTER`, and disposes the whole registration as one effect. Model ids are not registration keys; the selected adapter still validates or forwards them. The later [LLM catalog and ACP selection Agent Note](../../archived/architecture/2026-07-15-llm-model-catalog-and-acp-selection.md) added advisory `listProviders()` / `listModels()` discovery without turning model membership into request validation. A provider has exactly one adapter owner in a Cordis context. `dsh-llm-deepseek` registers `deepseek`; `dsh-llm-pi-ai` may also register `deepseek`, but loading both owners is a configuration error rather than an ordering rule or fallback. A deployment that wants the hand-rolled DeepSeek implementation excludes `deepseek` from the pi-ai profiles. A deployment that wants pi-ai's DeepSeek implementation does not mount `dsh-llm-deepseek`. @@ -40,7 +40,7 @@ pi-ai's common stream options do not expose stop sequences. `dsh-llm-pi-ai` reje Assistant messages carry the request's `provider` and `model`, plus an optional JSON-serializable adapter replay state. A successful `assistant/message` session event records those fields and `deriveMessages()` returns them with the assistant message. User, system, context, and tool-result messages carry no assistant route fields. The provider/model fields are authoritative loop data; an adapter owns only its opaque replay-state payload. -A terminal successful `finish` chunk may carry replay state as a `ReplayEnvelope`: opaque response-level metadata plus optional per-block entries aligned with the emitted block sequence. `BlockAssembler` makes one keep/drop decision for content and metadata — when max-token assembly drops a tool call, the envelope loses the entry at the same position — so the state the loop attaches to the assembled assistant message's model source always describes the stored blocks, per the [max-token replay-state alignment decision](../bug-fix/2026-08-15-max-token-replay-state-alignment.md). The loop exposes no response-rewrite hook. Error and aborted responses do not produce a normal assistant message and therefore do not enter future model history. +A terminal successful `finish` chunk may carry replay state as a `ReplayEnvelope`: opaque response-level metadata plus optional per-block entries aligned with the emitted block sequence. `BlockAssembler` makes one keep/drop decision for content and metadata — when max-token assembly drops a tool call, the envelope loses the entry at the same position — so the state the loop attaches to the assembled assistant message's model source always describes the stored blocks, per the [max-token replay-state alignment decision](../../archived/bug-fix/2026-08-15-max-token-replay-state-alignment.md). The loop exposes no response-rewrite hook. Error and aborted responses do not produce a normal assistant message and therefore do not enter future model history. The pi-ai replay state fills that envelope with a versioned, minimal projection of its successful `AssistantMessage`: a response half (source API/provider/model, response id/model, stop reason) and per-block text, thinking, and tool-call signatures. It does not duplicate text or tool arguments already carried by Harness content blocks, and it omits diagnostics, timestamps, usage, and errors. On a later request, `LlmRuntime` gives replay state to the target adapter only when the historical provider and target provider are currently owned by the same adapter instance. That adapter combines the logged Harness content with replay state when it can restore the historical response, and owns any required cross-model or cross-provider conversion. Durable content stays authoritative: an adapter receiving replay state it cannot use — an unknown kind or version, malformed metadata, or a block shape that no longer matches the content — degrades that message to provider-neutral conversion with a diagnostic; a different adapter receives only provider-neutral content plus provider/model fields. diff --git a/.agents/notes/implemented/architecture/2026-07-14-provider-routed-llm-adapters.zh.md b/.agents/notes/implemented/architecture/2026-07-14-provider-routed-llm-adapters.zh.md index c431d710af..e2e5526c4b 100644 --- a/.agents/notes/implemented/architecture/2026-07-14-provider-routed-llm-adapters.zh.md +++ b/.agents/notes/implemented/architecture/2026-07-14-provider-routed-llm-adapters.zh.md @@ -20,7 +20,7 @@ Status: implemented `GenerateOptions` 与 `LlmCallConfig` 在 `model: string` 之外携带 `provider: string`,`AgentOptions` 则携带对应的可选创建字段。只有两个值都非空时,agent loop(智能体循环)请求才有效;两个值也都会写入请求头日志。`agent/request` 可以在任意步骤返回替换后的字段组合,因此会话可以切换提供方与模型,无需改变 Cordis 插件生命周期。 -`LlmRuntime` 按提供方注册和解析适配器。`registerAdapter(providers, adapter)` 在修改注册表前检查整个提供方列表,遇到重复项时返回 `DUPLICATE_ADAPTER`,并以一个 effect 为单位整体 dispose(资源释放)。模型 ID 不作为注册键;仍由选中的适配器负责验证或转发。后续的 [LLM 目录与 ACP 模型选择 Agent Note](2026-07-15-llm-model-catalog-and-acp-selection.zh.md) 增加了建议性的 `listProviders()` / `listModels()` 发现接口,但不会把目录成员关系变成请求校验规则。 +`LlmRuntime` 按提供方注册和解析适配器。`registerAdapter(providers, adapter)` 在修改注册表前检查整个提供方列表,遇到重复项时返回 `DUPLICATE_ADAPTER`,并以一个 effect 为单位整体 dispose(资源释放)。模型 ID 不作为注册键;仍由选中的适配器负责验证或转发。后续的 [LLM 目录与 ACP 模型选择 Agent Note](../../archived/architecture/2026-07-15-llm-model-catalog-and-acp-selection.md) 增加了建议性的 `listProviders()` / `listModels()` 发现接口,但不会把目录成员关系变成请求校验规则。 在一个 Cordis 上下文中,一个提供方只能有一个适配器所有者。`dsh-llm-deepseek` 注册 `deepseek`;`dsh-llm-pi-ai` 也可以注册 `deepseek`,但同时加载两个所有者属于配置错误,不采用顺序规则或回退行为。若部署选择手写的 DeepSeek 实现,需从 pi-ai 配置中排除 `deepseek`;若部署选择 pi-ai 的 DeepSeek 实现,则不挂载 `dsh-llm-deepseek`。 @@ -40,7 +40,7 @@ pi-ai 的通用流选项不支持停止序列。若 Harness `stop` 选项已定 助手消息携带请求的 `provider` 和 `model`,以及可选的 JSON 可序列化适配器回放状态。成功的 `assistant/message` 会话事件记录这些字段,`deriveMessages()` 返回助手消息时也会包含它们。用户、系统、上下文与工具结果消息不携带助手路由字段。提供方/模型字段是 agent loop 的权威数据;适配器仅拥有其不透明回放状态 payload。 -成功的终止 `finish` 分片可以以 `ReplayEnvelope` 形式携带回放状态:不透明的响应级元数据,加上与发射块序列对齐的可选逐块条目。`BlockAssembler` 对内容与元数据只做一次保留/丢弃决定——max-token 组装丢弃工具调用时,数据同一位置的条目一并丢弃——因此 agent loop 附加到已组装助手消息模型来源中的状态始终描述存储的块,见 [max-token 回放状态对齐决定](../bug-fix/2026-08-15-max-token-replay-state-alignment.zh.md)。agent loop 不公开响应改写钩子。错误或中止响应不会生成正常助手消息,因此不会进入后续模型历史。 +成功的终止 `finish` 分片可以以 `ReplayEnvelope` 形式携带回放状态:不透明的响应级元数据,加上与发射块序列对齐的可选逐块条目。`BlockAssembler` 对内容与元数据只做一次保留/丢弃决定——max-token 组装丢弃工具调用时,数据同一位置的条目一并丢弃——因此 agent loop 附加到已组装助手消息模型来源中的状态始终描述存储的块,见 [max-token 回放状态对齐决定](../../archived/bug-fix/2026-08-15-max-token-replay-state-alignment.md)。agent loop 不公开响应改写钩子。错误或中止响应不会生成正常助手消息,因此不会进入后续模型历史。 pi-ai 回放状态用其成功 `AssistantMessage` 的带版本最小投影填充该结构:一个响应半区(源 API/提供方/模型、响应 ID/模型、停止原因),以及逐块的文本签名、thinking 签名和工具调用签名。它不会重复 Harness 内容块中已有的文本或工具参数,也不包含诊断信息、时间戳、用量或错误。后续请求中,只有历史提供方和目标提供方当前归同一个适配器实例所有时,`LlmRuntime` 才会把回放状态交给目标适配器。适配器在能够恢复历史响应时,将 Harness 记录的内容与回放状态组合,并负责所需的跨模型或跨提供方转换。持久化内容保持权威:适配器收到无法使用的回放状态——未知 kind 或版本、格式错误的元数据、或与内容不再匹配的块结构——会把该消息降级为提供方无关转换并带出诊断;其他适配器只能收到提供方无关的内容以及提供方/模型字段。 diff --git a/.agents/notes/implemented/architecture/2026-07-15-llm-model-catalog-and-acp-selection.i18n.yaml b/.agents/notes/implemented/architecture/2026-07-15-llm-model-catalog-and-acp-selection.i18n.yaml deleted file mode 100644 index eb7a9adfab..0000000000 --- a/.agents/notes/implemented/architecture/2026-07-15-llm-model-catalog-and-acp-selection.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-07-15-llm-model-catalog-and-acp-selection.md -2026-07-15-llm-model-catalog-and-acp-selection.md: fef23711a9214eae414809833bcd9ee9e26105ae -2026-07-15-llm-model-catalog-and-acp-selection.zh.md: 85e9fa35ac99b72a7df207fdb4971b57cf6dc525 diff --git a/.agents/notes/implemented/architecture/2026-07-15-lsp-capability-seam.i18n.yaml b/.agents/notes/implemented/architecture/2026-07-15-lsp-capability-seam.i18n.yaml deleted file mode 100644 index 277e0b097d..0000000000 --- a/.agents/notes/implemented/architecture/2026-07-15-lsp-capability-seam.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-07-15-lsp-capability-seam.md -2026-07-15-lsp-capability-seam.md: 90f9daf4b890bd53621916e492d4d82baaa3e8cc -2026-07-15-lsp-capability-seam.zh.md: bdb5e812e94a4aec4402fe83ca9c818bfa00f9f9 diff --git a/.agents/notes/implemented/architecture/2026-07-15-replay-token-meter-service.i18n.yaml b/.agents/notes/implemented/architecture/2026-07-15-replay-token-meter-service.i18n.yaml deleted file mode 100644 index 6ad1773f6f..0000000000 --- a/.agents/notes/implemented/architecture/2026-07-15-replay-token-meter-service.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-07-15-replay-token-meter-service.md -2026-07-15-replay-token-meter-service.md: 10261189fca621b305b3ec6347b54471d81c8ba3 -2026-07-15-replay-token-meter-service.zh.md: 370d3cf932d37702c5298bc79e9dc8f5a37835b9 diff --git a/.agents/notes/implemented/architecture/2026-07-16-explicit-turn-cancellation.i18n.yaml b/.agents/notes/implemented/architecture/2026-07-16-explicit-turn-cancellation.i18n.yaml index fcca895513..e23ba3b605 100644 --- a/.agents/notes/implemented/architecture/2026-07-16-explicit-turn-cancellation.i18n.yaml +++ b/.agents/notes/implemented/architecture/2026-07-16-explicit-turn-cancellation.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-07-16-explicit-turn-cancellation.md -2026-07-16-explicit-turn-cancellation.md: 86faad9929d3eb5b00e66bb1c46a2e35b135d954 -2026-07-16-explicit-turn-cancellation.zh.md: acf56e0629668a227324045ffd0521619dc45f33 +2026-07-16-explicit-turn-cancellation.md: ee4253ba607d3468c05b61d6fb0fbc5efcf9f9d7 +2026-07-16-explicit-turn-cancellation.zh.md: d98d2c114056c44f131a2fe989f0b1f544127976 diff --git a/.agents/notes/implemented/architecture/2026-07-16-explicit-turn-cancellation.md b/.agents/notes/implemented/architecture/2026-07-16-explicit-turn-cancellation.md index 86faad9929..ee4253ba60 100644 --- a/.agents/notes/implemented/architecture/2026-07-16-explicit-turn-cancellation.md +++ b/.agents/notes/implemented/architecture/2026-07-16-explicit-turn-cancellation.md @@ -20,7 +20,7 @@ AgentLoop privately owns one `TurnCancellation` per prospective turn. It install The driver keeps only a cause-less pre-run marker for queued work cancelled before a turn is claimed. An effective `cancel()` emits the observe-only `agent/cancel-requested` notification with its resolved typed cause before clearing queued and steering work or aborting the holder; notification failures cannot veto the stop, and an idle call emits nothing. Work synchronously queued by a notification observer is included in that clear, while work queued by a later signal abort observer is latched and runs when the aborted activity converges to idle — a `disposed` cancel leaves it parked ([cancel-convergence wake latch](../bug-fix/2026-08-07-cancel-convergence-wake-latch.md)). If a `running` listener synchronously cancels old work and sends a replacement, the driver discards the aborted holder and creates a fresh one for the replacement. Repeated cancellation is first-wins for the active holder, while later calls may still clear newly queued pending work. -The explicit event signatures pass a single payload object: agent-scoped events carry `agent` and `signal` in the payload with `next` last, and the remaining APIs keep `signal` immediately before a waterfall's final `next`. `PreStepContext` and `RequestFailureContext` are retired, with their fields folded into the `agent/pre-step` and `agent/request-error` payloads ([payload-object events](2026-08-06-agent-event-payload-objects.md)). Pre-step entry, request configuration, request-error recovery, model generation, tool execution, approval, turn stopping, and subagent or workflow requests all receive the current signal. Hook bridges must also supply `RunHookOptions.signal`, so a turn cancellation reaches the bash executor's process-group kill and join boundary. `SystemPrompt.assemble()` carries `signal?: AbortSignal` in `AssembleContext` because that object is an explicit request value that can also represent signal-less assembly outside a turn. Listeners may cooperate with the signal but must not retain it to control another turn. +The explicit event signatures pass a single payload object: agent-scoped events carry `agent` and `signal` in the payload with `next` last, and the remaining APIs keep `signal` immediately before a waterfall's final `next`. `PreStepContext` and `RequestFailureContext` are retired, with their fields folded into the `agent/pre-step` and `agent/request-error` payloads ([payload-object events](../../archived/architecture/2026-08-06-agent-event-payload-objects.md)). Pre-step entry, request configuration, request-error recovery, model generation, tool execution, approval, turn stopping, and subagent or workflow requests all receive the current signal. Hook bridges must also supply `RunHookOptions.signal`, so a turn cancellation reaches the bash executor's process-group kill and join boundary. `SystemPrompt.assemble()` carries `signal?: AbortSignal` in `AssembleContext` because that object is an explicit request value that can also represent signal-less assembly outside a turn. Listeners may cooperate with the signal but must not retain it to control another turn. `ctx.agents` continues to carry only the initiating Agent. Ambient Agent presence does not imply liveness, a current turn, or cancellation authority. The cause reader is private to the loop and states the machine-private slot invariant (only `cancel()` aborts a turn controller, always with a canonical frozen cause) instead of re-validating the reason structurally; no public helper reads a cause off an arbitrary signal. Concurrent Agents isolate both their initiator identities and their turn signals; a child driver shadows the parent initiator while its parent request signal still travels through the subagent seam. diff --git a/.agents/notes/implemented/architecture/2026-07-16-explicit-turn-cancellation.zh.md b/.agents/notes/implemented/architecture/2026-07-16-explicit-turn-cancellation.zh.md index acf56e0629..d98d2c1140 100644 --- a/.agents/notes/implemented/architecture/2026-07-16-explicit-turn-cancellation.zh.md +++ b/.agents/notes/implemented/architecture/2026-07-16-explicit-turn-cancellation.zh.md @@ -20,7 +20,7 @@ AgentLoop 为每个待启动轮次私有地持有一个 `TurnCancellation`。它 对于轮次被认领前已取消的排队工作,驱动器只保留一个不携带取消原因的运行前标记。实际生效的 `cancel()` 会先发出仅供观察的 `agent/cancel-requested` 通知并携带最终确定的类型化取消原因,然后才清除排队工作和 steering(中途引导)工作或中止持有者;通知失败不能阻止此次停止,空闲状态下调用则不发出任何通知。通知观察者同步加入队列的工作也会被这次清除,而稍后由 signal 中止观察者加入队列的工作会被锁存,并在被中止的活动收敛到空闲时执行——`disposed` 取消则将其停放([取消收敛窗口唤醒锁存](../bug-fix/2026-08-07-cancel-convergence-wake-latch.zh.md))。若 `running` 监听器同步取消旧工作并发送替代提示词,驱动器会丢弃已中止的持有者,并为替代提示词创建全新的持有者。同一活跃持有者上的重复取消遵循首次请求优先,后续调用仍可清除新入队的待处理工作。 -显式事件签名传递单个 payload 对象:agent 作用域事件在 payload 中携带 `agent` 和 `signal`,`next` 位于最后;其余 API 保持 `signal` 紧邻 waterfall(瀑布式事件)的最终 `next` 之前。`PreStepContext` 与 `RequestFailureContext` 已退役,其字段并入 `agent/pre-step` 与 `agent/request-error` 的 payload([payload-object 事件](2026-08-06-agent-event-payload-objects.zh.md))。进入 pre-step 时、请求配置、请求错误恢复、模型生成、工具执行、审批、轮次停止以及 subagent 或工作流请求都会收到当前 signal。钩子桥接器也必须提供 `RunHookOptions.signal`,使轮次取消能够到达 Bash 执行器终止进程组并等待其退出的边界。`SystemPrompt.assemble()` 在 `AssembleContext` 中携带 `signal?: AbortSignal`,因为该对象是显式请求值,也可表示轮次之外不携带 signal 的组装。监听器可以配合该 signal 取消,但不得保留它来控制其他轮次。 +显式事件签名传递单个 payload 对象:agent 作用域事件在 payload 中携带 `agent` 和 `signal`,`next` 位于最后;其余 API 保持 `signal` 紧邻 waterfall(瀑布式事件)的最终 `next` 之前。`PreStepContext` 与 `RequestFailureContext` 已退役,其字段并入 `agent/pre-step` 与 `agent/request-error` 的 payload([payload-object 事件](../../archived/architecture/2026-08-06-agent-event-payload-objects.md))。进入 pre-step 时、请求配置、请求错误恢复、模型生成、工具执行、审批、轮次停止以及 subagent 或工作流请求都会收到当前 signal。钩子桥接器也必须提供 `RunHookOptions.signal`,使轮次取消能够到达 Bash 执行器终止进程组并等待其退出的边界。`SystemPrompt.assemble()` 在 `AssembleContext` 中携带 `signal?: AbortSignal`,因为该对象是显式请求值,也可表示轮次之外不携带 signal 的组装。监听器可以配合该 signal 取消,但不得保留它来控制其他轮次。 `ctx.agents` 仍只携带发起 Agent。环境中的 Agent 并不代表存活、当前轮次或取消权限。cause 读取器是 loop 私有的,它直接陈述机器私有的 slot 不变量(只有 `cancel()` 会中止轮次控制器,且总是携带规范的冻结 cause),而不是对 reason 做结构化再校验;不存在从任意 signal 读取 cause 的公开辅助函数。并发 Agent 会同时隔离各自的发起方身份和轮次 signal;子驱动会遮蔽父发起方,而父请求 signal 仍通过 subagent seam 传递。 diff --git a/.agents/notes/implemented/architecture/2026-07-17-local-spill-startup-cleanup.i18n.yaml b/.agents/notes/implemented/architecture/2026-07-17-local-spill-startup-cleanup.i18n.yaml deleted file mode 100644 index 06f4d81cb0..0000000000 --- a/.agents/notes/implemented/architecture/2026-07-17-local-spill-startup-cleanup.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-07-17-local-spill-startup-cleanup.md -2026-07-17-local-spill-startup-cleanup.md: fc64938c1af07d9dd0d7ecec379115d22d1e2464 -2026-07-17-local-spill-startup-cleanup.zh.md: 583a33ead84f552c67e2e770a8b3fabc3ce88120 diff --git a/.agents/notes/implemented/architecture/2026-07-19-gui-web-client-architecture.i18n.yaml b/.agents/notes/implemented/architecture/2026-07-19-gui-web-client-architecture.i18n.yaml index e48351a2ef..612ab83bdd 100644 --- a/.agents/notes/implemented/architecture/2026-07-19-gui-web-client-architecture.i18n.yaml +++ b/.agents/notes/implemented/architecture/2026-07-19-gui-web-client-architecture.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-07-19-gui-web-client-architecture.md -2026-07-19-gui-web-client-architecture.md: 703bf2b873eee8afc7e13f89acba99b06fc98745 -2026-07-19-gui-web-client-architecture.zh.md: d61cc8119929b3efc912221df3343918e4851308 +2026-07-19-gui-web-client-architecture.md: 409c4347bca42dd96fd134e0133a1721fdaebd5d +2026-07-19-gui-web-client-architecture.zh.md: 58235981471eeb365f7416fcd2e5530468e1e3ff diff --git a/.agents/notes/implemented/architecture/2026-07-19-gui-web-client-architecture.md b/.agents/notes/implemented/architecture/2026-07-19-gui-web-client-architecture.md index 703bf2b873..409c4347bc 100644 --- a/.agents/notes/implemented/architecture/2026-07-19-gui-web-client-architecture.md +++ b/.agents/notes/implemented/architecture/2026-07-19-gui-web-client-architecture.md @@ -44,7 +44,7 @@ Implementation homes: registry core and the props-share types live in `packages/ A service is a plugin's only API toward other plugins (UI components and injection faces are not APIs; a plugin nobody calls mounts no service — ui-trajectory is the minimal-plugin exemplar: no ctx service, only view-slot registrations). The roster: `ctx.connection` (RPC transport + generation state), `ctx.slots` (registry wrapper emitting `slots/changed`, render entry, renderer installation contract), `ctx.sessions` (list store, current-session state, scope tree), `ctx.loader`, `ctx.theme`, `ctx.i18n`, `ctx.layout` (cross-plugin view navigation), `ctx.conversation` (send/cancel/startSession). Viewing state that used to live in service stores (panel widths, selection, drafts) now lives in entry-declared stores per the [slot system standard](2026-07-22-slot-type-chain-implementation.md). -There is no component registration model besides slots — the former view and tool rings both dissolved into it. Conversation views are entries of the `'conversation.view'` list slot ui-conversation declares, tab metadata rides the registration options (`id`/`order`/`label`), and per-view chrome lives inside the view components themselves. Final Chat business Nodes dispatch through the keyed/session `'conversation.chat.node'` slot; ui-tool owns its `tool-call` entry, recursively renders the supplied `subCalls`, and declares the keyed/session `'tool.call.toolview'` child slot. The key space stays runtime-open (SlotMap declares slots, never keys), and roots and descendants dispatch by `entryKey: toolName` with `GenericToolCard` as the fallback. Business packages register atomic views through `ctx.slots.inject('tool.call.toolview', () => ctx.slots.register({ name: 'tool.call.toolview', key: '' }, Row))`; the declaration is the load and reload dependency ([decision](2026-08-05-slot-declaration-injection.md)). ui-conversation separately delegates the selected call's details body through `'conversation.details.tool'`, so ui-tool's card models remain the single presentation owner without making conversation import Tool components. The target-neutral event and view registries are data assembly seams rather than parallel component registries ([decision](2026-08-09-client-conversation-node-assembly.md)). +There is no component registration model besides slots — the former view and tool rings both dissolved into it. Conversation views are entries of the `'conversation.view'` list slot ui-conversation declares, tab metadata rides the registration options (`id`/`order`/`label`), and per-view chrome lives inside the view components themselves. Final Chat business Nodes dispatch through the keyed/session `'conversation.chat.node'` slot; ui-tool owns its `tool-call` entry, recursively renders the supplied `subCalls`, and declares the keyed/session `'tool.call.toolview'` child slot. The key space stays runtime-open (SlotMap declares slots, never keys), and roots and descendants dispatch by `entryKey: toolName` with `GenericToolCard` as the fallback. Business packages register atomic views through `ctx.slots.inject('tool.call.toolview', () => ctx.slots.register({ name: 'tool.call.toolview', key: '' }, Row))`; the declaration is the load and reload dependency ([decision](../../archived/architecture/2026-08-05-slot-declaration-injection.md)). ui-conversation separately delegates the selected call's details body through `'conversation.details.tool'`, so ui-tool's card models remain the single presentation owner without making conversation import Tool components. The target-neutral event and view registries are data assembly seams rather than parallel component registries ([decision](2026-08-09-client-conversation-node-assembly.md)). **Scope addressing** mirrors the host's agent-scope idiom: services are root singletons whose methods take no sessionId — they read the caller's scope mark (`scopeOf(ctx)`). Inside a session scope, `ctx.conversation.send('hi', 'queue')` targets that session; cross-session calls re-target by switching ctx (`ctx.sessions.scope(id)!.conversation.send(...)`); calling a scoped method from root ctx throws. Client session scopes are minted like host agent scopes (a no-op plugin fiber + a scope-key extend), built lazily on first viewing and torn down only when the session is removed and unwatched — host-session death alone does not tear a scope (it freezes into a read-only viewport). @@ -72,7 +72,7 @@ Notifier 微任务合批 ──► ConversationSnapshot 缓存 ──uSES── - **ConversationSnapshot** (conversation.ts): the top-level immutable snapshot contract. `chat` contains structural `order`, an identity-stable keyed Node reader, Turn/Step indexes, and the timeline; `nodes`, `partial`, `runningCalls`, `turnTimings`, and `turnEnds` are the compatibility slice for unmigrated Trajectory consumers. Pending interactions, queue, running, removal, open state, paging, and prompt errors remain Session facts. **Reference discipline** (the premise of memo and uSES): unchanged substructures and Node values keep their references; one business update replaces only the corresponding key's value unless its order or Location changes. React still subscribes to the Session as the sole observable source, while the framework-provided `useSession(selector)` isolates Node and Location aggregate updates. - **SessionManager** (manager.ts): instance cluster + frame entry + the session list. sessionId-bearing frames go only to existing instances (a mux broadcast must not instantiate every session); approval/question `requested` frames are the exception — they never land in history, so they buffer in `pendingBuffers` and replay on instantiation. - **Notifier** (notifier.ts): two channels chosen by change source. `markDirty()` (default; frame-driven changes always) batches per microtask — N changes, one notification, one re-render; the flush rebuilds the snapshot cache before notifying. `notifyNow()` (only direct echoes of user gestures) rebuilds and notifies in the same tick — controlled inputs roll the DOM back and jump the caret if their echo defers to a microtask. Frame-driven code using notifyNow collapses batching back to per-frame renders; banned. -- **ConversationNodeAssembler** (`runtime/src/client/conversation/`): the Session-owned incremental engine runs independently registered Definitions over raw events. `match(event)` selects `(kind, id)` without Context scans; start/update build Definition state; engine-computed Locations carry Turn/Step closure; backward Context reads record dependencies repaired by later prepends; `buildViewNode(target)` materializes only dirty Contexts. The Chat builder preserves structural order and per-key value identity, `useSession` selectors isolate consumption, and Assistant token publication coalesces to one animation frame. The [Conversation Node decision](2026-08-09-client-conversation-node-assembly.md) owns assembly, while [Tool presentation ownership](2026-08-08-client-tool-presentation-ownership.md) owns recursive Tool rendering. +- **ConversationNodeAssembler** (`runtime/src/client/conversation/`): the Session-owned incremental engine runs independently registered Definitions over raw events. `match(event)` selects `(kind, id)` without Context scans; start/update build Definition state; engine-computed Locations carry Turn/Step closure; backward Context reads record dependencies repaired by later prepends; `buildViewNode(target)` materializes only dirty Contexts. The Chat builder preserves structural order and per-key value identity, `useSession` selectors isolate consumption, and Assistant token publication coalesces to one animation frame. The [Conversation Node decision](2026-08-09-client-conversation-node-assembly.md) owns assembly, while [Tool presentation ownership](../../archived/architecture/2026-08-08-client-tool-presentation-ownership.md) owns recursive Tool rendering. - **ConnectionController** (in `packages/client/connection`): opens the `$events` Remote stream, pumps with for-await, and reconnects with exponential backoff (500ms doubling to 10s, jitter, unlimited) behind a generation fence; sinks are injected one-way (the Controller does not know Session). Reconnect = rebuild: `onConnected` → list refresh + per-open-session resync. The object layer calls generated namespaces through `ctx.remote`; Web carriage uses HTTP POST for unary Remote calls and API Gateway's WebSocket mux for logical streams, while Connection owns request transport and generations. ## The React face (`packages/client/ui-renderer`) @@ -124,5 +124,5 @@ Token streams no longer shake the render tree: Assistant chunks update one busin | One statically-linked SPA bundle | Plugins must be host-composable at runtime (config-driven); a monolith re-couples every UI feature to one build | | window globals / import maps for shared deps | The DI require table keeps sharing explicit, fail-loud, and swappable; globals leak identity and version silently | | Business data in zustand slices | The event window/accumulator is a behavioral state machine, not a flat slice; the object layer keeps snapshot granularity and batching controllable | -| Parallel string-keyed component registry for Tool rows | ui-tool's keyed child slot carries the runtime-open Tool-name set through the one slot registration model ([toolview dissolution](2026-07-23-toolview-dissolution.md)) | +| Parallel string-keyed component registry for Tool rows | ui-tool's keyed child slot carries the runtime-open Tool-name set through the one slot registration model ([toolview dissolution](../../archived/architecture/2026-07-23-toolview-dissolution.md)) | | Progressive/Suspense boot in the initial web client delivery | One-flip boot is strictly simpler; the loader's per-plugin status face is kept so progressive lighting can land later without re-architecture | diff --git a/.agents/notes/implemented/architecture/2026-07-19-gui-web-client-architecture.zh.md b/.agents/notes/implemented/architecture/2026-07-19-gui-web-client-architecture.zh.md index d61cc81199..5823598147 100644 --- a/.agents/notes/implemented/architecture/2026-07-19-gui-web-client-architecture.zh.md +++ b/.agents/notes/implemented/architecture/2026-07-19-gui-web-client-architecture.zh.md @@ -44,7 +44,7 @@ slot 体系有自己的笔记——[slot 体系标准](2026-07-22-slot-type-chai 服务是插件对其他插件的唯一 API(UI 组件与注入面都不是 API;无人调用的插件不挂服务——ui-trajectory 即最小插件样板:无 ctx 服务,只做视图 slot 注册)。名册:`ctx.connection`(RPC 传输 + generation 状态)、`ctx.slots`(注册表包装层,发 `slots/changed`,渲染入口,渲染器安装约定)、`ctx.sessions`(列表 store、当前会话状态、scope 树)、`ctx.loader`、`ctx.theme`、`ctx.i18n`、`ctx.layout`(跨插件视图导航)、`ctx.conversation`(send/cancel/startSession)。过去住在服务 store 里的观看态(面板宽、选中、草稿)现按 [slot 体系标准](2026-07-22-slot-type-chain-implementation.zh.md) 住 entry 声明的 store。 -slot 之外不存在第二种组件注册模型——原视图环与工具环都已溶解进来。会话视图即 ui-conversation 声明的 `'conversation.view'` list slot entry,tab 元数据随注册 options(`id`/`order`/`label`)走,per-view chrome 住视图组件自身。最终 Chat 业务 Node 通过 keyed/session `'conversation.chat.node'` slot 分发;ui-tool 拥有其中的 `tool-call` entry,递归渲染传入的 `subCalls`,并声明 keyed/session `'tool.call.toolview'` 子 slot。key 空间仍在运行时开放(SlotMap 声明 slot、从不声明 key),root 与任意深度的后代都按 `entryKey: toolName` 分发,以 `GenericToolCard` 兜底。业务包通过 `ctx.slots.inject('tool.call.toolview', () => ctx.slots.register({ name: 'tool.call.toolview', key: '' }, Row))` 注册原子视图;声明本身就是加载与重载依赖([决策](2026-08-05-slot-declaration-injection.zh.md))。ui-conversation 还通过 `'conversation.details.tool'` 委托 selected call 的详情正文,使 ui-tool 的 card model 保持为唯一展示所有者,同时避免 conversation 导入 Tool 组件。与 target 无关的事件注册表和视图注册表是数据组装 seam,不是平行组件注册表([决策](2026-08-09-client-conversation-node-assembly.zh.md))。 +slot 之外不存在第二种组件注册模型——原视图环与工具环都已溶解进来。会话视图即 ui-conversation 声明的 `'conversation.view'` list slot entry,tab 元数据随注册 options(`id`/`order`/`label`)走,per-view chrome 住视图组件自身。最终 Chat 业务 Node 通过 keyed/session `'conversation.chat.node'` slot 分发;ui-tool 拥有其中的 `tool-call` entry,递归渲染传入的 `subCalls`,并声明 keyed/session `'tool.call.toolview'` 子 slot。key 空间仍在运行时开放(SlotMap 声明 slot、从不声明 key),root 与任意深度的后代都按 `entryKey: toolName` 分发,以 `GenericToolCard` 兜底。业务包通过 `ctx.slots.inject('tool.call.toolview', () => ctx.slots.register({ name: 'tool.call.toolview', key: '' }, Row))` 注册原子视图;声明本身就是加载与重载依赖([决策](../../archived/architecture/2026-08-05-slot-declaration-injection.md))。ui-conversation 还通过 `'conversation.details.tool'` 委托 selected call 的详情正文,使 ui-tool 的 card model 保持为唯一展示所有者,同时避免 conversation 导入 Tool 组件。与 target 无关的事件注册表和视图注册表是数据组装 seam,不是平行组件注册表([决策](2026-08-09-client-conversation-node-assembly.zh.md))。 **scope 寻址**与 host 侧 agent(智能体)scope 惯例同构:服务是 root 单例,方法不收 sessionId——它们读调用方 ctx 上的 scope 标(`scopeOf(ctx)`)。在会话 scope 内,`ctx.conversation.send('hi', 'queue')` 自动打到该会话;跨会话调用换 ctx 定向(`ctx.sessions.scope(id)!.conversation.send(...)`);从 root ctx 直接调 scoped 方法即 throw。client 会话 scope 的铸造方式与 host agent scope 相同(no-op 插件 fiber + scope 键 extend),首次观看时惰性建,只有会话被移除且无人观看才拆——仅 host 会话死亡不拆 scope(冻结为只读视窗)。 @@ -72,7 +72,7 @@ Notifier 微任务合批 ──► ConversationSnapshot 缓存 ──uSES── - **ConversationSnapshot**(conversation.ts):顶层不可变快照约定。`chat` 包含结构化 `order`、identity 稳定的 keyed Node reader、Turn/Step index 和 timeline;`nodes`、`partial`、`runningCalls`、`turnTimings`、`turnEnds` 是未迁移 Trajectory 消费方使用的兼容 slice。pending interaction、queue、running、removed、open state、paging 和 prompt error 仍是 Session 信息。**引用纪律**(memo 与 uSES 的前提):未变化的子结构和 Node value 保持引用;单个业务更新只替换对应 key 的 value,除非它的顺序或 Location 发生变化。React 仍只订阅 Session 这一处 observable source,并由框架提供的 `useSession(selector)` 隔离 Node 与 Location 聚合更新。 - **SessionManager**(manager.ts):实例簇 + 帧总入口 + 会话列表。带 sessionId 的帧只投已存在实例(mux 广播不得把每个会话都实例化);例外是审批/问答 `requested` 帧——它们不落 history、open 无法回补,故缓冲进 `pendingBuffers`,实例化时回放。 - **Notifier**(notifier.ts):两条通知通道,按变更来源取用。`markDirty()`(默认;帧驱动一律用它)按微任务合批——N 次变更、一次通知、一次重渲染;flush 先重建快照缓存再通知。`notifyNow()`(仅用户手势的直接回响)同 tick 重建并通知——受控输入的回响若延到微任务,DOM 会回滚、光标跳尾。帧驱动代码用 notifyNow 会让合批塌回逐帧渲染;禁。 -- **ConversationNodeAssembler**(`runtime/src/client/conversation/`):Session 拥有的增量引擎在原始事件上运行各自独立注册的 Definition。`match(event)` 无须扫描 Context 即可选出 `(kind, id)`;start/update 构造 Definition state;引擎计算的 Location 携带 Turn/Step 关闭信息;向前查询 Context 时记录依赖,并由后续 prepend 修复;`buildViewNode(target)` 只物化 dirty Context。Chat builder 保留结构顺序和 per-key value identity,`useSession` selector 负责消费隔离,Assistant token 发布则合并到每个 animation frame 一次。[Conversation Node 决策](2026-08-09-client-conversation-node-assembly.zh.md)拥有组装边界,[Tool 展示所有权](2026-08-08-client-tool-presentation-ownership.zh.md)拥有 Tool 递归渲染。 +- **ConversationNodeAssembler**(`runtime/src/client/conversation/`):Session 拥有的增量引擎在原始事件上运行各自独立注册的 Definition。`match(event)` 无须扫描 Context 即可选出 `(kind, id)`;start/update 构造 Definition state;引擎计算的 Location 携带 Turn/Step 关闭信息;向前查询 Context 时记录依赖,并由后续 prepend 修复;`buildViewNode(target)` 只物化 dirty Context。Chat builder 保留结构顺序和 per-key value identity,`useSession` selector 负责消费隔离,Assistant token 发布则合并到每个 animation frame 一次。[Conversation Node 决策](2026-08-09-client-conversation-node-assembly.zh.md)拥有组装边界,[Tool 展示所有权](../../archived/architecture/2026-08-08-client-tool-presentation-ownership.md)拥有 Tool 递归渲染。 - **ConnectionController**(位于 `packages/client/connection`):打开 `$events` Remote 流、通过 for-await 泵入,并在 generation 围栏内指数退避重连(500ms 翻倍至 10s 封顶、抖动、无限重试);sink 单向注入,Controller 不认识 Session。重连即重建:`onConnected` → 列表刷新 + 各已打开会话 resync。对象层通过 `ctx.remote` 调用生成的命名空间;Web 载体以 HTTP POST 承载 Remote 一元调用,以 API Gateway 的 WebSocket mux 承载逻辑流,Connection 则拥有请求传输与 generation。 ## React 面(`packages/client/ui-renderer`) @@ -124,5 +124,5 @@ token 流不再震荡渲染树:Assistant chunk 只更新一个业务 Context | 静态链接的单 SPA bundle | 插件必须由 host 在运行时按配置组合;单体把每个 UI 功能重新耦回一次构建 | | window 全局变量 / import map 供共享依赖 | DI require 表让共享显式、大声失败、可替换;全局变量静默泄漏身份与版本 | | 业务数据进 zustand 切片 | 事件窗口/累积器是行为状态机,不是扁平切片;对象层保住快照粒度与合批的可控性 | -| Tool 行使用平行的字符串键组件注册表 | ui-tool 的 keyed 子 slot 通过唯一的 slot 注册模型承载运行时开放的 Tool 名称集合([toolview 溶解](2026-07-23-toolview-dissolution.zh.md)) | +| Tool 行使用平行的字符串键组件注册表 | ui-tool 的 keyed 子 slot 通过唯一的 slot 注册模型承载运行时开放的 Tool 名称集合([toolview 溶解](../../archived/architecture/2026-07-23-toolview-dissolution.md)) | | 首个 web 客户端交付就做渐进/Suspense 启动 | 一次成型严格更简单;loader 的按插件状态面已保留,渐进点亮日后可落地而无需重构 | diff --git a/.agents/notes/implemented/architecture/2026-07-19-package-owned-invariant-service.i18n.yaml b/.agents/notes/implemented/architecture/2026-07-19-package-owned-invariant-service.i18n.yaml deleted file mode 100644 index 8a58bc4d9b..0000000000 --- a/.agents/notes/implemented/architecture/2026-07-19-package-owned-invariant-service.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-07-19-package-owned-invariant-service.md -2026-07-19-package-owned-invariant-service.md: b955c99a2576b6b2f8208a16ad2792af181c3468 -2026-07-19-package-owned-invariant-service.zh.md: 4fc0fb5d615753c0c057e927f59359847fc1328f diff --git a/.agents/notes/implemented/architecture/2026-07-19-zstandard-jsonl-session-logs.i18n.yaml b/.agents/notes/implemented/architecture/2026-07-19-zstandard-jsonl-session-logs.i18n.yaml index f98292787c..5e0c9ab302 100644 --- a/.agents/notes/implemented/architecture/2026-07-19-zstandard-jsonl-session-logs.i18n.yaml +++ b/.agents/notes/implemented/architecture/2026-07-19-zstandard-jsonl-session-logs.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-07-19-zstandard-jsonl-session-logs.md -2026-07-19-zstandard-jsonl-session-logs.md: a893a79f063842dfa93e57cb3972ea151421b05d -2026-07-19-zstandard-jsonl-session-logs.zh.md: bdaeab701359acbd02f47a2a3d83fe4913d607e7 +2026-07-19-zstandard-jsonl-session-logs.md: 96b76febee1c8853f70d7e4897894ea26390f524 +2026-07-19-zstandard-jsonl-session-logs.zh.md: 4cf184ce107b9de6dbbf3f0e571d4009d50ca636 diff --git a/.agents/notes/implemented/architecture/2026-07-19-zstandard-jsonl-session-logs.md b/.agents/notes/implemented/architecture/2026-07-19-zstandard-jsonl-session-logs.md index a893a79f06..96b76febee 100644 --- a/.agents/notes/implemented/architecture/2026-07-19-zstandard-jsonl-session-logs.md +++ b/.agents/notes/implemented/architecture/2026-07-19-zstandard-jsonl-session-logs.md @@ -28,11 +28,11 @@ First materialization compresses the two initial frames before opening the tempo ### Read, listing, and crash recovery -A frame-boundary scanner reads the standard magic, variable header fields, block headers and payload sizes, and optional checksum trailer. It does not interpret compressed blocks. Complete frames are independently checksum-validated and passed through the [large-session restore pipeline](2026-08-05-large-session-jsonl-restore-pipeline.md), which owns decoder reuse, cooperative yielding, and incremental JSONL scanning. A checksum/decompression failure in any complete frame, a malformed complete-frame JSONL tail, or invalid frame structure is corruption and rejects. +A frame-boundary scanner reads the standard magic, variable header fields, block headers and payload sizes, and optional checksum trailer. It does not interpret compressed blocks. Complete frames are independently checksum-validated and passed through the [large-session restore pipeline](../../archived/architecture/2026-08-05-large-session-jsonl-restore-pipeline.md), which owns decoder reuse, cooperative yielding, and incremental JSONL scanning. A checksum/decompression failure in any complete frame, a malformed complete-frame JSONL tail, or invalid frame structure is corruption and rejects. Listing reads in bounded chunks only until the first complete frame is available, validates and decompresses that header frame, and never reads an event frame. The dedicated header frame therefore preserves metadata-only listing even for very large session logs. -EOF inside the final frame is a torn tail. The frame belongs to an append that never resolved, so none of its records were acknowledged durable: repair truncates from that frame's starting byte, retains all prior complete frames, and appends the coordinator's synthetic tool, step, and turn closers as one new checksummed frame ([export and pre-release trims](../simplification/2026-08-27-persistence-export-and-pre-release-trims.md) owns dropping the earlier partial-plaintext salvage). +EOF inside the final frame is a torn tail. The frame belongs to an append that never resolved, so none of its records were acknowledged durable: repair truncates from that frame's starting byte, retains all prior complete frames, and appends the coordinator's synthetic tool, step, and turn closers as one new checksummed frame ([export and pre-release trims](../../archived/simplification/2026-08-27-persistence-export-and-pre-release-trims.md) owns dropping the earlier partial-plaintext salvage). ### Consumers and verification @@ -53,5 +53,5 @@ The shared persistence and coordinator contracts run against both encodings. Bac - Ordinary session roots store `.jsonl.zstd` and retain append-only, fsync, rollback, and interrupted-turn recovery semantics. - Raw JSONL remains a deliberate configuration, but changing encoding requires a fresh/separate root or selecting the mode that matches existing artifacts. - One frame per durable batch adds bounded framing/checksum overhead and allows header-only listing plus repair from an exact append boundary. -- External tools must understand concatenated Zstandard frames or consume raw-mode artifacts; generic one-shot Node decompression reads only the first independent frame, so backend reads walk frames through the [restore pipeline](2026-08-05-large-session-jsonl-restore-pipeline.md). +- External tools must understand concatenated Zstandard frames or consume raw-mode artifacts; generic one-shot Node decompression reads only the first independent frame, so backend reads walk frames through the [restore pipeline](../../archived/architecture/2026-08-05-large-session-jsonl-restore-pipeline.md). - The implementation depends on Node's experimental built-in Zstandard API without an npm dependency; the supported-version compatibility gate makes drift visible. diff --git a/.agents/notes/implemented/architecture/2026-07-19-zstandard-jsonl-session-logs.zh.md b/.agents/notes/implemented/architecture/2026-07-19-zstandard-jsonl-session-logs.zh.md index bdaeab7013..4cf184ce10 100644 --- a/.agents/notes/implemented/architecture/2026-07-19-zstandard-jsonl-session-logs.zh.md +++ b/.agents/notes/implemented/architecture/2026-07-19-zstandard-jsonl-session-logs.zh.md @@ -28,11 +28,11 @@ JSONL 持久化后端会逐字保留每个 `SessionEvent`,包括嵌入模型 s ### 读取、列举与崩溃恢复 -帧边界扫描器会读取标准魔数、可变头字段、块头与负载长度,以及可选校验和尾部,但不会解释压缩块。完整帧会独立验证校验和,再进入[大型会话恢复流水线](2026-08-05-large-session-jsonl-restore-pipeline.zh.md);该流水线负责复用解码器、协作式让出事件循环和增量扫描 JSONL。任何完整帧的校验和或解压失败、完整帧中畸形的 JSONL 尾部,或者无效帧结构都属于损坏并拒绝加载。 +帧边界扫描器会读取标准魔数、可变头字段、块头与负载长度,以及可选校验和尾部,但不会解释压缩块。完整帧会独立验证校验和,再进入[大型会话恢复流水线](../../archived/architecture/2026-08-05-large-session-jsonl-restore-pipeline.md);该流水线负责复用解码器、协作式让出事件循环和增量扫描 JSONL。任何完整帧的校验和或解压失败、完整帧中畸形的 JSONL 尾部,或者无效帧结构都属于损坏并拒绝加载。 列举只按有界分片读取到第一个完整帧可用为止,验证并解压该头部帧,绝不读取事件帧。因此,即使会话日志很大,专用头部帧仍能维持仅元数据列举。 -最终帧内部遇到 EOF 属于撕裂尾部。该帧属于一次从未完成结算的追加,因此其中没有任何记录被确认为持久:修复从该帧起始字节截断,保留此前全部完整帧,并把协调器生成的工具、步骤与轮次闭合事件作为一个新的带校验和帧追加(对早先部分明文抢救路径的移除由[导出与预发布精简](../simplification/2026-08-27-persistence-export-and-pre-release-trims.zh.md)负责)。 +最终帧内部遇到 EOF 属于撕裂尾部。该帧属于一次从未完成结算的追加,因此其中没有任何记录被确认为持久:修复从该帧起始字节截断,保留此前全部完整帧,并把协调器生成的工具、步骤与轮次闭合事件作为一个新的带校验和帧追加(对早先部分明文抢救路径的移除由[导出与预发布精简](../../archived/simplification/2026-08-27-persistence-export-and-pre-release-trims.md)负责)。 ### 消费方与验证 @@ -53,5 +53,5 @@ CLI(命令行界面)、ACP(Agent Client Protocol)与 stdio 应用包公 - 普通会话根目录存储 `.jsonl.zstd`,并保留仅追加、fsync、回滚与中断轮次恢复语义。 - 原始 JSONL 仍是显式配置,但切换编码需要使用全新或单独根目录,或者选择与既有产物匹配的模式。 - 每个持久批次一个帧会增加有界的帧与校验和开销,同时支持仅头部列举和从精确追加边界开始修复。 -- 外部工具必须理解串联的 Zstandard 帧,或者消费原始模式产物;Node 通用的一次性解压只读取第一个独立帧,因此后端读取会通过[恢复流水线](2026-08-05-large-session-jsonl-restore-pipeline.zh.md)遍历各帧。 +- 外部工具必须理解串联的 Zstandard 帧,或者消费原始模式产物;Node 通用的一次性解压只读取第一个独立帧,因此后端读取会通过[恢复流水线](../../archived/architecture/2026-08-05-large-session-jsonl-restore-pipeline.md)遍历各帧。 - 实现依赖 Node 的实验性内置 Zstandard API,但不增加 NPM 依赖;受支持版本兼容性门禁会暴露 API 漂移。 diff --git a/.agents/notes/implemented/architecture/2026-07-20-routed-model-context-and-compaction-policy.i18n.yaml b/.agents/notes/implemented/architecture/2026-07-20-routed-model-context-and-compaction-policy.i18n.yaml index f328cb25c3..98f54d5d26 100644 --- a/.agents/notes/implemented/architecture/2026-07-20-routed-model-context-and-compaction-policy.i18n.yaml +++ b/.agents/notes/implemented/architecture/2026-07-20-routed-model-context-and-compaction-policy.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-07-20-routed-model-context-and-compaction-policy.md -2026-07-20-routed-model-context-and-compaction-policy.md: ca898acefa4dde9190e0d17249ec07cc875d454f -2026-07-20-routed-model-context-and-compaction-policy.zh.md: 7eddcd6d9c71670532b7be5409439dc079ca79ca +2026-07-20-routed-model-context-and-compaction-policy.md: 26d8a4a85c284e50b9635017f0dd0bf905a4427f +2026-07-20-routed-model-context-and-compaction-policy.zh.md: 8656200a4b25c2ca70160e8f5949a7518e390168 diff --git a/.agents/notes/implemented/architecture/2026-07-20-routed-model-context-and-compaction-policy.md b/.agents/notes/implemented/architecture/2026-07-20-routed-model-context-and-compaction-policy.md index ca898acefa..26d8a4a85c 100644 --- a/.agents/notes/implemented/architecture/2026-07-20-routed-model-context-and-compaction-policy.md +++ b/.agents/notes/implemented/architecture/2026-07-20-routed-model-context-and-compaction-policy.md @@ -54,4 +54,4 @@ Service tests cover detached context metadata, invalid adapter output, catalog i - DeepSeek deployments may set exact per-model capacities, or use `defaultContextWindow` for entries without capacity and unlisted pass-through ids. - Ratio defaults scale naturally across models, while exact-target absolute retention remains available for deployment-specific behavior. -This note supersedes the global-capacity and no-model-policy parts of the [replay token meter service Agent Note](2026-07-15-replay-token-meter-service.md). Its single-fold measurement decision remains unchanged. +This note supersedes the global-capacity and no-model-policy parts of the [replay token meter service Agent Note](../../archived/architecture/2026-07-15-replay-token-meter-service.md). Its single-fold measurement decision remains unchanged. diff --git a/.agents/notes/implemented/architecture/2026-07-20-routed-model-context-and-compaction-policy.zh.md b/.agents/notes/implemented/architecture/2026-07-20-routed-model-context-and-compaction-policy.zh.md index 7eddcd6d9c..8656200a4b 100644 --- a/.agents/notes/implemented/architecture/2026-07-20-routed-model-context-and-compaction-policy.zh.md +++ b/.agents/notes/implemented/architecture/2026-07-20-routed-model-context-and-compaction-policy.zh.md @@ -54,4 +54,4 @@ Compact-basic 拥有消费方策略。顶层字段定义默认值;`modelPolici - DeepSeek 部署可以设置精确的逐模型容量,也可以让未提供容量的模型项与未列出的透传 id 使用 `defaultContextWindow`。 - 比例默认值会随模型自然缩放,同时仍可按精确目标使用绝对保留值,以满足部署专用行为。 -本记录取代[回放式 token 计量服务 Agent Note](2026-07-15-replay-token-meter-service.zh.md) 中的全局容量与无模型策略部分,单折叠计量决策保持不变。 +本记录取代[回放式 token 计量服务 Agent Note](../../archived/architecture/2026-07-15-replay-token-meter-service.md) 中的全局容量与无模型策略部分,单折叠计量决策保持不变。 diff --git a/.agents/notes/implemented/architecture/2026-07-20-todo-event-ownership.i18n.yaml b/.agents/notes/implemented/architecture/2026-07-20-todo-event-ownership.i18n.yaml deleted file mode 100644 index 5b18b13430..0000000000 --- a/.agents/notes/implemented/architecture/2026-07-20-todo-event-ownership.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-07-20-todo-event-ownership.md -2026-07-20-todo-event-ownership.md: f3f7f872b24d8f20b6b9acb57710fae388c8b9d8 -2026-07-20-todo-event-ownership.zh.md: a05622dc39163c4f5b30a93190d9d56bb02cf29a diff --git a/.agents/notes/implemented/architecture/2026-07-22-slot-type-chain-implementation.i18n.yaml b/.agents/notes/implemented/architecture/2026-07-22-slot-type-chain-implementation.i18n.yaml index c15d8bf28f..7d108bbf7d 100644 --- a/.agents/notes/implemented/architecture/2026-07-22-slot-type-chain-implementation.i18n.yaml +++ b/.agents/notes/implemented/architecture/2026-07-22-slot-type-chain-implementation.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-07-22-slot-type-chain-implementation.md -2026-07-22-slot-type-chain-implementation.md: e4072f95678f13de302acf84c0b35218fa5dd8d4 -2026-07-22-slot-type-chain-implementation.zh.md: 6b4df87c86bbfbc48620048aa5e975c2403280b3 +2026-07-22-slot-type-chain-implementation.md: 0e493a19e232acf6f289714e53e0cf64b3ffc4b0 +2026-07-22-slot-type-chain-implementation.zh.md: 5e5c2ec808cec6949396a333c6a86e267bb4268b diff --git a/.agents/notes/implemented/architecture/2026-07-22-slot-type-chain-implementation.md b/.agents/notes/implemented/architecture/2026-07-22-slot-type-chain-implementation.md index e4072f9567..0e493a19e2 100644 --- a/.agents/notes/implemented/architecture/2026-07-22-slot-type-chain-implementation.md +++ b/.agents/notes/implemented/architecture/2026-07-22-slot-type-chain-implementation.md @@ -36,7 +36,7 @@ There is no separate slot-definition API. The `children` object both **declares Parity rule: **the declaring entry holds the exclusive right to render its child slots**, settled entirely at register time (misconfiguration fails loud at load; the render hot path carries no checks). Loud-at-load cases: a second entry declaring an already-declared slot; registering into an undeclared slot; one store handle mounted under two scopes; a chain registration missing its `select`. -A contributor whose activation order is independent from the declaring entry uses `ctx.slots.inject(key, callback)` and keeps direct `register()` fail-loud. The declaration, contributor, replacement, and failure lifetimes are specified by the [slot declaration injection decision](2026-08-05-slot-declaration-injection.md). +A contributor whose activation order is independent from the declaring entry uses `ctx.slots.inject(key, callback)` and keeps direct `register()` fail-loud. The declaration, contributor, replacement, and failure lifetimes are specified by the [slot declaration injection decision](../../archived/architecture/2026-08-05-slot-declaration-injection.md). `SlotMap` declaration merging remains the type authority, and an entry declares only its own axes plus the **owner share** — the registrant's injected props never enter the global table ("whoever injects it, owns its type"). diff --git a/.agents/notes/implemented/architecture/2026-07-22-slot-type-chain-implementation.zh.md b/.agents/notes/implemented/architecture/2026-07-22-slot-type-chain-implementation.zh.md index 6b4df87c86..5e5c2ec808 100644 --- a/.agents/notes/implemented/architecture/2026-07-22-slot-type-chain-implementation.zh.md +++ b/.agents/notes/implemented/architecture/2026-07-22-slot-type-chain-implementation.zh.md @@ -36,7 +36,7 @@ ctx.slots.register({ 对等原则:**声明子 slot 的 entry 独占渲染这些子 slot 的权力**,全部在 register 时确定(配置错误会在装载时明确失败;渲染热路径不再校验)。装载即炸的情形:第二个 entry 声明已被声明的 slot;向未声明的 slot register;同一个 store 句柄挂到两个 scope 之下;chain 注册缺 `select`。 -激活顺序独立于声明条目的贡献方使用 `ctx.slots.inject(key, callback)`,并让直接调用 `register()` 继续大声失败。声明、贡献方、替换与失败各自的生命周期由 [slot 声明注入决策](2026-08-05-slot-declaration-injection.zh.md) 规定。 +激活顺序独立于声明条目的贡献方使用 `ctx.slots.inject(key, callback)`,并让直接调用 `register()` 继续大声失败。声明、贡献方、替换与失败各自的生命周期由 [slot 声明注入决策](../../archived/architecture/2026-08-05-slot-declaration-injection.md) 规定。 `SlotMap` 声明合并仍是类型权威,且 entry 只声明自己的轴加 **owner 份额**——注册方注入的 props 永不进入全局表(「谁注入的,类型归谁」)。 diff --git a/.agents/notes/implemented/architecture/2026-07-22-unified-send-and-coalesced-user-messages.i18n.yaml b/.agents/notes/implemented/architecture/2026-07-22-unified-send-and-coalesced-user-messages.i18n.yaml deleted file mode 100644 index 4bb9345820..0000000000 --- a/.agents/notes/implemented/architecture/2026-07-22-unified-send-and-coalesced-user-messages.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-07-22-unified-send-and-coalesced-user-messages.md -2026-07-22-unified-send-and-coalesced-user-messages.md: bc195e77c71b554d60c03c91134bbcef95678fff -2026-07-22-unified-send-and-coalesced-user-messages.zh.md: 414b5542aae2972b22ba015ba9397ec44921a6fa diff --git a/.agents/notes/implemented/architecture/2026-07-23-toolview-dissolution.i18n.yaml b/.agents/notes/implemented/architecture/2026-07-23-toolview-dissolution.i18n.yaml deleted file mode 100644 index c09133e0c0..0000000000 --- a/.agents/notes/implemented/architecture/2026-07-23-toolview-dissolution.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-07-23-toolview-dissolution.md -2026-07-23-toolview-dissolution.md: 3e38d2faf45d851b3f8f9a10459588570190b3fb -2026-07-23-toolview-dissolution.zh.md: 79c1f7d7630389462bf77d34df614bfd32798d50 diff --git a/.agents/notes/implemented/architecture/2026-07-24-adapter-owned-reasoning-effort-capabilities.i18n.yaml b/.agents/notes/implemented/architecture/2026-07-24-adapter-owned-reasoning-effort-capabilities.i18n.yaml deleted file mode 100644 index 48967a6faa..0000000000 --- a/.agents/notes/implemented/architecture/2026-07-24-adapter-owned-reasoning-effort-capabilities.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-07-24-adapter-owned-reasoning-effort-capabilities.md -2026-07-24-adapter-owned-reasoning-effort-capabilities.md: f59e5d351970e785e6ade32797f1c1a5dd9e2591 -2026-07-24-adapter-owned-reasoning-effort-capabilities.zh.md: 6e657a90e8ef3cd400a3e252f728bb1aadd9f4f2 diff --git a/.agents/notes/implemented/architecture/2026-07-24-project-session-directories.i18n.yaml b/.agents/notes/implemented/architecture/2026-07-24-project-session-directories.i18n.yaml index e1483287f0..95adf4e6c5 100644 --- a/.agents/notes/implemented/architecture/2026-07-24-project-session-directories.i18n.yaml +++ b/.agents/notes/implemented/architecture/2026-07-24-project-session-directories.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-07-24-project-session-directories.md -2026-07-24-project-session-directories.md: a37f9231167822e409308f8da60f6c1e837c74d5 -2026-07-24-project-session-directories.zh.md: 469567764219d7baabea89bd94aecd81bd0e5ab3 +2026-07-24-project-session-directories.md: 0074c8b31304e6a7d32199b7461575356e406448 +2026-07-24-project-session-directories.zh.md: 3a1d348255588fd120221dc277a2841359c0a038 diff --git a/.agents/notes/implemented/architecture/2026-07-24-project-session-directories.md b/.agents/notes/implemented/architecture/2026-07-24-project-session-directories.md index a37f923116..0074c8b313 100644 --- a/.agents/notes/implemented/architecture/2026-07-24-project-session-directories.md +++ b/.agents/notes/implemented/architecture/2026-07-24-project-session-directories.md @@ -29,7 +29,7 @@ Case-insensitive filesystems can also make differently cased project keys refer The configured root remains a deployment choice. The layout neither selects a global root nor requires projects to share one. When a deployment does centralize storage, project paths remain recognizable; a project-local root uses the same deterministic structure. -The encoded session id names an ownership directory rather than the transcript itself. The backend's diagnostics-only `locate` hook resolves the fixed transcript path inside it for format-refusal messages ([export and pre-release trims](../simplification/2026-08-27-persistence-export-and-pre-release-trims.md) owns removing the consumer-facing path query). Discovery ignores other entries inside the session directory so the backend can add session-owned artifacts without another layout change. +The encoded session id names an ownership directory rather than the transcript itself. The backend's diagnostics-only `locate` hook resolves the fixed transcript path inside it for format-refusal messages ([export and pre-release trims](../../archived/simplification/2026-08-27-persistence-export-and-pre-release-trims.md) owns removing the consumer-facing path query). Discovery ignores other entries inside the session directory so the backend can add session-owned artifacts without another layout change. Lazy materialization remains tied to the transcript: `create()` performs no filesystem I/O, and the first append creates the project/session directories before collision-safe transcript publication. Empty directories are not listed as sessions. The backend rejects flat `/.jsonl*` artifacts with an explicit layout error; the pre-release format provides no automatic data migration. diff --git a/.agents/notes/implemented/architecture/2026-07-24-project-session-directories.zh.md b/.agents/notes/implemented/architecture/2026-07-24-project-session-directories.zh.md index 4695677642..3a1d348255 100644 --- a/.agents/notes/implemented/architecture/2026-07-24-project-session-directories.zh.md +++ b/.agents/notes/implemented/architecture/2026-07-24-project-session-directories.zh.md @@ -29,7 +29,7 @@ JSONL 后端按可读的项目键存储会话,并为每个会话提供独立 根目录由部署配置决定。这种布局既不选择全局根目录,也不要求项目共享根目录。部署选择集中存储时,目录名仍能让项目路径易于辨认;使用项目本地根目录时,也采用同样的确定性结构。 -编码后的会话 id 用于命名归属目录,而不是 transcript 文件本身。后端仅供诊断的 `locate` 钩子在其中解析固定的 transcript 路径,供格式拒绝消息使用(移除面向消费者的路径查询由[导出与预发布裁剪](../simplification/2026-08-27-persistence-export-and-pre-release-trims.zh.md)负责)。发现过程会忽略会话目录中的其他条目,因此后端以后添加会话自有产物时无需再次改变布局。 +编码后的会话 id 用于命名归属目录,而不是 transcript 文件本身。后端仅供诊断的 `locate` 钩子在其中解析固定的 transcript 路径,供格式拒绝消息使用(移除面向消费者的路径查询由[导出与预发布裁剪](../../archived/simplification/2026-08-27-persistence-export-and-pre-release-trims.md)负责)。发现过程会忽略会话目录中的其他条目,因此后端以后添加会话自有产物时无需再次改变布局。 延迟物化仍以 transcript 为界:`create()` 不执行文件系统 I/O,首次追加会先创建项目目录和会话目录,再以无冲突方式发布 transcript。空目录不会被列为会话。后端会显式报告布局错误并拒绝扁平的 `/.jsonl*` 产物;预发布格式不提供自动数据迁移。 diff --git a/.agents/notes/implemented/architecture/2026-07-24-separate-context-injection-from-turn-execution.i18n.yaml b/.agents/notes/implemented/architecture/2026-07-24-separate-context-injection-from-turn-execution.i18n.yaml index d4dc9fde57..b192622981 100644 --- a/.agents/notes/implemented/architecture/2026-07-24-separate-context-injection-from-turn-execution.i18n.yaml +++ b/.agents/notes/implemented/architecture/2026-07-24-separate-context-injection-from-turn-execution.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-07-24-separate-context-injection-from-turn-execution.md -2026-07-24-separate-context-injection-from-turn-execution.md: 719c4562b6687e42cc70721658152992735ec662 -2026-07-24-separate-context-injection-from-turn-execution.zh.md: cb4621f891cd07d53b423a919bdfff1ec4fbdbb6 +2026-07-24-separate-context-injection-from-turn-execution.md: d22d3966767ae9888f2140141b1c7743792184c0 +2026-07-24-separate-context-injection-from-turn-execution.zh.md: 2c567511b21891ada3e0027f666d1163861fb090 diff --git a/.agents/notes/implemented/architecture/2026-07-24-separate-context-injection-from-turn-execution.md b/.agents/notes/implemented/architecture/2026-07-24-separate-context-injection-from-turn-execution.md index 719c4562b6..d22d396676 100644 --- a/.agents/notes/implemented/architecture/2026-07-24-separate-context-injection-from-turn-execution.md +++ b/.agents/notes/implemented/architecture/2026-07-24-separate-context-injection-from-turn-execution.md @@ -40,7 +40,7 @@ The enter branch's `PreStepDecision.messages` is the complete batch for the prop Caller-driven injection and current-step context deliberately use different timing. `inject()` joins the next pre-step available and cannot promise that a request already being finalized will consume it. A listener that must affect that exact request returns the context in `PreStepDecision.messages`; downstream rejection or failure then prevents it from materializing. -Cross-session references use that domain composition: TUI prepares the snapshot, returns it from the idle direct message's pre-step beside that message, or injects it before waking steering during a running turn. The target log contains two simple messages, so later source mutation cannot change replay and transcript consumers do not need a prompt envelope. This supersedes the attachment mechanism in the [cross-session reference decision](../feature/2026-07-21-cross-session-references.md) while retaining its snapshot and trust-boundary rules. +Cross-session references use that domain composition: TUI prepares the snapshot, returns it from the idle direct message's pre-step beside that message, or injects it before waking steering during a running turn. The target log contains two simple messages, so later source mutation cannot change replay and transcript consumers do not need a prompt envelope. This supersedes the attachment mechanism in the [cross-session reference decision](../../archived/feature/2026-07-21-cross-session-references.md) while retaining its snapshot and trust-boundary rules. This decision preserves the caller-owned framing decision from [unwrapped injected content](../simplification/2026-07-20-unwrap-injected-content-envelopes.md) and the one-item turn rule from [one send, one turn](../simplification/2026-07-17-one-send-one-turn.md). The later [standalone log-only event decision](../simplification/2026-07-28-remove-synthetic-log-only-turns.md) applies the same execution-only meaning to plugin-owned records. diff --git a/.agents/notes/implemented/architecture/2026-07-24-separate-context-injection-from-turn-execution.zh.md b/.agents/notes/implemented/architecture/2026-07-24-separate-context-injection-from-turn-execution.zh.md index cb4621f891..2c567511b2 100644 --- a/.agents/notes/implemented/architecture/2026-07-24-separate-context-injection-from-turn-execution.zh.md +++ b/.agents/notes/implemented/architecture/2026-07-24-separate-context-injection-from-turn-execution.zh.md @@ -40,7 +40,7 @@ enter 分支的 `PreStepDecision.messages` 是拟议步骤的完整批次。wate 调用方主动注入与当前步骤上下文刻意采用不同的时序。`inject()` 会加入下一个可用 pre-step,无法保证正在最终确定的请求会消费它。必须影响该请求的监听器在 `PreStepDecision.messages` 中返回上下文;下游 reject 或失败时,该上下文不会落入日志。 -跨会话引用采用这种领域组合方式:TUI 先准备快照,然后在 idle 直接消息的 pre-step 中把快照与该消息一同返回,或在 running 轮次中先注入快照再唤醒 steering。目标日志包含两条简单消息,因此来源会话后续变化不会改变回放,transcript 消费方也不需要提示词封套。本决策取代[跨会话引用决策](../feature/2026-07-21-cross-session-references.zh.md)中的附件机制,但保留其快照与信任边界规则。 +跨会话引用采用这种领域组合方式:TUI 先准备快照,然后在 idle 直接消息的 pre-step 中把快照与该消息一同返回,或在 running 轮次中先注入快照再唤醒 steering。目标日志包含两条简单消息,因此来源会话后续变化不会改变回放,transcript 消费方也不需要提示词封套。本决策取代[跨会话引用决策](../../archived/feature/2026-07-21-cross-session-references.md)中的附件机制,但保留其快照与信任边界规则。 本决策保留[移除注入内容封套](../simplification/2026-07-20-unwrap-injected-content-envelopes.zh.md)确立的由调用方决定内容框架的原则,以及[一次 send、一个轮次](../simplification/2026-07-17-one-send-one-turn.zh.md)确立的单条目轮次规则。后续的[独立纯日志事件决策](../simplification/2026-07-28-remove-synthetic-log-only-turns.zh.md)将同样的「轮次仅表示执行」语义应用于插件所属记录。 diff --git a/.agents/notes/implemented/architecture/2026-07-24-single-harness-home-resolver.i18n.yaml b/.agents/notes/implemented/architecture/2026-07-24-single-harness-home-resolver.i18n.yaml index 4af7abd046..b8ff3f88c2 100644 --- a/.agents/notes/implemented/architecture/2026-07-24-single-harness-home-resolver.i18n.yaml +++ b/.agents/notes/implemented/architecture/2026-07-24-single-harness-home-resolver.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-07-24-single-harness-home-resolver.md -2026-07-24-single-harness-home-resolver.md: 2351766e73167a6afd241c87f733aeff326bc6ac -2026-07-24-single-harness-home-resolver.zh.md: b1c6db85941c440e4b34862ab11a4331fdd98753 +2026-07-24-single-harness-home-resolver.md: 02578674b4547bae54b2edce99c6c4ef53748588 +2026-07-24-single-harness-home-resolver.zh.md: 5764be3f85901196cd2a2db77d1fc3838668163f diff --git a/.agents/notes/implemented/architecture/2026-07-24-single-harness-home-resolver.md b/.agents/notes/implemented/architecture/2026-07-24-single-harness-home-resolver.md index 2351766e73..02578674b4 100644 --- a/.agents/notes/implemented/architecture/2026-07-24-single-harness-home-resolver.md +++ b/.agents/notes/implemented/architecture/2026-07-24-single-harness-home-resolver.md @@ -25,7 +25,7 @@ An empty or whitespace-only `$DSH_HOME` is treated as unset; otherwise `resolve( `@deepseek-ai/dsh-home` is deleted. Home-owning providers and boot packages import `resolveDshHome` from `dsh-home-paths`; composition bundles contain only the resolved configuration rows. -`dsh-telemetry` and its separate home policy are absent under the [SDK project toolchain removal](../simplification/2026-08-11-remove-sdk-project-toolchain.md), leaving this resolver as the sole home policy. +`dsh-telemetry` and its separate home policy are absent under the [SDK project toolchain removal](../../archived/simplification/2026-08-11-remove-sdk-project-toolchain.md), leaving this resolver as the sole home policy. ## Alternatives considered diff --git a/.agents/notes/implemented/architecture/2026-07-24-single-harness-home-resolver.zh.md b/.agents/notes/implemented/architecture/2026-07-24-single-harness-home-resolver.zh.md index b1c6db8594..5764be3f85 100644 --- a/.agents/notes/implemented/architecture/2026-07-24-single-harness-home-resolver.zh.md +++ b/.agents/notes/implemented/architecture/2026-07-24-single-harness-home-resolver.zh.md @@ -25,7 +25,7 @@ explicit configured path > $DSH_HOME > ~/.dsh `@deepseek-ai/dsh-home` 被删除。拥有 home 配置的提供方与 boot 包从 `dsh-home-paths` 导入 `resolveDshHome`;组合包只包含解析后的配置行。 -`dsh-telemetry` 及其独立 home 策略已随 [SDK 项目工具链移除](../simplification/2026-08-11-remove-sdk-project-toolchain.zh.md)一并消失,因此该解析器是唯一的 home 策略。 +`dsh-telemetry` 及其独立 home 策略已随 [SDK 项目工具链移除](../../archived/simplification/2026-08-11-remove-sdk-project-toolchain.md)一并消失,因此该解析器是唯一的 home 策略。 ## 备选方案 diff --git a/.agents/notes/implemented/architecture/2026-07-24-web-config-tree-boot-and-transport-layering.i18n.yaml b/.agents/notes/implemented/architecture/2026-07-24-web-config-tree-boot-and-transport-layering.i18n.yaml index e935dd601a..43a487556f 100644 --- a/.agents/notes/implemented/architecture/2026-07-24-web-config-tree-boot-and-transport-layering.i18n.yaml +++ b/.agents/notes/implemented/architecture/2026-07-24-web-config-tree-boot-and-transport-layering.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-07-24-web-config-tree-boot-and-transport-layering.md -2026-07-24-web-config-tree-boot-and-transport-layering.md: c44f68bb65758ec4879da8bded60f27f2f11e0bc -2026-07-24-web-config-tree-boot-and-transport-layering.zh.md: 80f385a0a76a427c8f604a0df76decf77d2e62b0 +2026-07-24-web-config-tree-boot-and-transport-layering.md: e7c0781e1504bce12a8b0d2197bd47b37d3e873a +2026-07-24-web-config-tree-boot-and-transport-layering.zh.md: 9a0affa397151a3994c5731bebda4b45a4139b6c diff --git a/.agents/notes/implemented/architecture/2026-07-24-web-config-tree-boot-and-transport-layering.md b/.agents/notes/implemented/architecture/2026-07-24-web-config-tree-boot-and-transport-layering.md index c44f68bb65..e7c0781e15 100644 --- a/.agents/notes/implemented/architecture/2026-07-24-web-config-tree-boot-and-transport-layering.md +++ b/.agents/notes/implemented/architecture/2026-07-24-web-config-tree-boot-and-transport-layering.md @@ -12,11 +12,11 @@ English | [中文](2026-07-24-web-config-tree-boot-and-transport-layering.zh.md) ## Decision -**Composition is one flat assembled tree.** `apps/cli/config/base.cordis.yml` plus `apps/cli/config/web.cordis.yml` holds every row — the host runtime (32 rows), the `api-gateway` row, the `webserver` row, and the `dsh.client` rows (the browser roster; the modules row is simultaneously a host row). No spine bundle: every plugin is one row and every config field is yml-editable. That stance later became repository-wide, with the rows both surfaces share factored into `apps/cli/config/base.cordis.yml` and each surface reduced to an overlay ([shared-base overlays](../simplification/2026-07-29-shared-base-config-overlays.md)). The `dsh-client-hmr` row is an ordinary always-on bundle row (originally appended in code by `--dev`; the flag is retired). Row order carries no load semantics; activation is service-availability driven. The shared audit rejects imports with no fiber, awaits only failed fibers to recover original activation errors, and reports services that leave a fiber `PENDING`; before throwing, it marks those exact rejection reasons through one process checkpoint so `installFailLoud` coalesces Loader's duplicate notification while unrelated unhandled rejections remain fatal. The Node app-boot artifact embeds `@cordisjs/plugin-include` while leaving `@cordisjs/plugin-loader` external, so the include's `EntryTree` and the host bind to one Loader peer instead of splitting a config tree across two Loader implementations. +**Composition is one flat assembled tree.** `apps/cli/config/base.cordis.yml` plus `apps/cli/config/web.cordis.yml` holds every row — the host runtime (32 rows), the `api-gateway` row, the `webserver` row, and the `dsh.client` rows (the browser roster; the modules row is simultaneously a host row). No spine bundle: every plugin is one row and every config field is yml-editable. That stance later became repository-wide, with the rows both surfaces share factored into `apps/cli/config/base.cordis.yml` and each surface reduced to an overlay ([shared-base overlays](../../archived/simplification/2026-07-29-shared-base-config-overlays.md)). The `dsh-client-hmr` row is an ordinary always-on bundle row (originally appended in code by `--dev`; the flag is retired). Row order carries no load semantics; activation is service-availability driven. The shared audit rejects imports with no fiber, awaits only failed fibers to recover original activation errors, and reports services that leave a fiber `PENDING`; before throwing, it marks those exact rejection reasons through one process checkpoint so `installFailLoud` coalesces Loader's duplicate notification while unrelated unhandled rejections remain fatal. The Node app-boot artifact embeds `@cordisjs/plugin-include` while leaving `@cordisjs/plugin-loader` external, so the include's `EntryTree` and the host bind to one Loader peer instead of splitting a config tree across two Loader implementations. **Boot glue is a class pair.** `AppCLIEntry` (apps/cli) and `AppWebEntry` (the shell kernel) hold only what must exist independently of cordis: argv facts, the composed patch set, the parsed boot manifest, the module system instance, loading-page handles — everything else lives in plugins. `AppCLIEntry.run()` is three stages: layered env (ambient > cwd `.env` > `$DSH_HOME/.env`, closing the defect above) → patch composition → Loader include boot plus the activation audit. `AppWebEntry.run()` mirrors it browser-side: parse `window.__DSH_BOOT__` into a `BootManifest` (two views: npm-package rows for the module table, cordis-plugin rows for entry composition; malformed wire throws), build the module system, render the loading page, prefetch the `immediately` tier in parallel with Context/Loader setup, **await the prefetch before creating entries** (materialization is `tree.import`'s synchronous require, unprotected by fiber inject waiting; cross-package require edges such as i18n → runtime/client need every immediately-tier factory registered first — an empirically found 10–25% boot race otherwise), adopt the modules entry, create the graph rows, settle, sweep. -**Config sources have one declaration place each.** Bundle yml values are engineering defaults, Settings sections are writable user preferences, CLI flags address their owning launcher rows, and env values enter through yml `!!js` expressions. Patches replace a row's config wholesale. The resolved frontend `distIndex` uses that patch channel as an assembly fact. The transport-independent provider/model default belongs to `ctx.agentDefaultModel`; the [direct headless entry point](2026-08-09-headless-direct-core-entry-point.md) and the Session Controller consume the same state. +**Config sources have one declaration place each.** Bundle yml values are engineering defaults, Settings sections are writable user preferences, CLI flags address their owning launcher rows, and env values enter through yml `!!js` expressions. Patches replace a row's config wholesale. The resolved frontend `distIndex` uses that patch channel as an assembly fact. The transport-independent provider/model default belongs to `ctx.agentDefaultModel`; the [direct headless entry point](../../archived/architecture/2026-08-09-headless-direct-core-entry-point.md) and the Session Controller consume the same state. **Transport responsibilities have explicit owners.** `dsh-client-connection` owns the `/api` route, request and response envelopes, browser authentication, Host/Origin checks, exact Fetch route registration, and the shared Typert interceptor seat. `dsh-api-gateway` owns typed Remote dispatch and the multiplexed WebSocket. `dsh-host-webserver` is a plain route-registration plugin: `WebServer` provides `ctx.webServer` (`register(route) → disposer` with duplicate-pattern throw, `renderIndex` rendering — structured `webserver/index-inject` rows, then raw `tapIndex` transforms in registration order — and `port`), listens on activation, answers per-request failures with 400 and logging, and knows no harness concepts. Its socket-backed Node HTTP entry may apply configured gzip through maintained middleware without adding a response-writing service method or changing route owners; the Web Worker tunnel carries identity bytes. The modules node half (`ClientModuleRegistry`, providing `ctx.clientModules`) owns incremental package scanning, the bundle route, the boot injection rows, and `onRebuilt`/`onGraphChanged` notification. The hmr node half owns dev reload through `fs.watchFile` membership and the `/plugins/events` SSE route. @@ -25,7 +25,7 @@ English | [中文](2026-07-24-web-config-tree-boot-and-transport-layering.zh.md) ## Consequences - Recomposing a web deployment is a yml/patch edit; the retired pieces (`mountWebPlugins`, `CLIENT_PACKAGES`, `createHostWebPluginRegistry`, `startWebServer`, the webserver's graph/SSE/api knowledge) are deleted. -- [Headless is a direct core entry point](2026-08-09-headless-direct-core-entry-point.md): its shipped profile contains the shared base Agent capabilities and omits Host, HTTP, Web, and browser layers. The transport split in this note is the browser surface's contract. +- [Headless is a direct core entry point](../../archived/architecture/2026-08-09-headless-direct-core-entry-point.md): its shipped profile contains the shared base Agent capabilities and omits Host, HTTP, Web, and browser layers. The transport split in this note is the browser surface's contract. - A TypeScript pitfall worth remembering: a `declare module 'cordis'` augmentation in a file with **no cordis import** is demoted to a standalone module declaration and silently shatters the program-wide `Context` merge (`ctx.on`/`ctx.effect` vanish across the program). Anchor with `import type {} from 'cordis'`. ## Alternatives considered diff --git a/.agents/notes/implemented/architecture/2026-07-24-web-config-tree-boot-and-transport-layering.zh.md b/.agents/notes/implemented/architecture/2026-07-24-web-config-tree-boot-and-transport-layering.zh.md index 80f385a0a7..9a0affa397 100644 --- a/.agents/notes/implemented/architecture/2026-07-24-web-config-tree-boot-and-transport-layering.zh.md +++ b/.agents/notes/implemented/architecture/2026-07-24-web-config-tree-boot-and-transport-layering.zh.md @@ -12,11 +12,11 @@ Status: implemented ## 决策 -**组合结果是一棵平铺配置树。** `apps/cli/config/base.cordis.yml` 与 `apps/cli/config/web.cordis.yml` 共同持有全部行——host 运行时(32 行)、`api-gateway` 行、`webserver` 行、`dsh.client` 行(浏览器 roster;modules 行同时是 host 行)。不做主干 bundle:每插件一行、每个 config 字段 yml 可改。这一立场后来推广到全仓:两个 surface 共享的配置项被抽取进 `apps/cli/config/base.cordis.yml`,各 surface 则收敛为一份 overlay([共享 base overlay](../simplification/2026-07-29-shared-base-config-overlays.zh.md))。`dsh-client-hmr` 行是普通的始终启用的 bundle 行(最初由 `--dev` 在代码中追加;该旗标已废除)。行序无装载语义;激活由服务可用性驱动。共享 audit 会拒绝没有 fiber 的 import、仅等待失败的 fiber 以恢复原始激活错误,并报告让 fiber 停在 `PENDING` 的服务;抛出错误前,审计会通过一个进程级检查点标记这些 rejection 的确切原因,从而让 `installFailLoud` 将 Loader 的重复通知合并为一次,而无关的未处理 rejection 仍然致命。Node app-boot 产物内嵌 `@cordisjs/plugin-include`,但将 `@cordisjs/plugin-loader` 保持为外部依赖,因此 include 的 `EntryTree` 与 host 会绑定到同一个 Loader peer,而不会让一棵配置树横跨两个 Loader 实现。 +**组合结果是一棵平铺配置树。** `apps/cli/config/base.cordis.yml` 与 `apps/cli/config/web.cordis.yml` 共同持有全部行——host 运行时(32 行)、`api-gateway` 行、`webserver` 行、`dsh.client` 行(浏览器 roster;modules 行同时是 host 行)。不做主干 bundle:每插件一行、每个 config 字段 yml 可改。这一立场后来推广到全仓:两个 surface 共享的配置项被抽取进 `apps/cli/config/base.cordis.yml`,各 surface 则收敛为一份 overlay([共享 base overlay](../../archived/simplification/2026-07-29-shared-base-config-overlays.md))。`dsh-client-hmr` 行是普通的始终启用的 bundle 行(最初由 `--dev` 在代码中追加;该旗标已废除)。行序无装载语义;激活由服务可用性驱动。共享 audit 会拒绝没有 fiber 的 import、仅等待失败的 fiber 以恢复原始激活错误,并报告让 fiber 停在 `PENDING` 的服务;抛出错误前,审计会通过一个进程级检查点标记这些 rejection 的确切原因,从而让 `installFailLoud` 将 Loader 的重复通知合并为一次,而无关的未处理 rejection 仍然致命。Node app-boot 产物内嵌 `@cordisjs/plugin-include`,但将 `@cordisjs/plugin-loader` 保持为外部依赖,因此 include 的 `EntryTree` 与 host 会绑定到同一个 Loader peer,而不会让一棵配置树横跨两个 Loader 实现。 **boot 胶水由两个类组成。** `AppCLIEntry`(apps/cli)与 `AppWebEntry`(壳内核)只持有那些必须独立于 cordis、提前存在的东西:argv 事实、合成的 patch 集、解析出的 boot manifest(元数据清单)、模块系统实例、loading 页句柄——其余一律进插件。`AppCLIEntry.run()` 三段:分层 env(ambient > cwd `.env` > `$DSH_HOME/.env`,顺手关掉上述缺陷)→ patch 合成 → Loader include boot 加 activation audit。`AppWebEntry.run()` 在浏览器侧镜像它:把 `window.__DSH_BOOT__` 解析成 `BootManifest`(双视角:npm 包行给模块表、cordis 插件行给 entry 组合;畸形 wire 大声抛)、建模块系统、渲染 loading 页、immediately 层预取与 Context/Loader 准备并行、**create entry 之前等预取齐**(物化是 `tree.import` 的同步 require,不受 fiber inject 等待保护;i18n → runtime/client 这类跨包 require 边要求 immediately 层工厂全部注册完——否则有实测 10–25% 的 boot 竞态)、收编 modules entry、逐一创建图行、settle、sweep。 -**每个配置源有唯一声明位置。** 组合包 yml 值是工程默认,Settings 分节是可写的用户偏好,CLI(命令行界面)flags 面向其归属的启动器配置行,env 值则通过 yml `!!js` 表达式进入。patch 会整体替换一行的 config。解析后的前端 `distIndex` 通过同一条 patch 通道作为组装事实传递。与传输无关的提供方/模型默认值归 `ctx.agentDefaultModel` 所有;[直接 headless 入口](2026-08-09-headless-direct-core-entry-point.zh.md)与 Session Controller 消费同一份状态。 +**每个配置源有唯一声明位置。** 组合包 yml 值是工程默认,Settings 分节是可写的用户偏好,CLI(命令行界面)flags 面向其归属的启动器配置行,env 值则通过 yml `!!js` 表达式进入。patch 会整体替换一行的 config。解析后的前端 `distIndex` 通过同一条 patch 通道作为组装事实传递。与传输无关的提供方/模型默认值归 `ctx.agentDefaultModel` 所有;[直接 headless 入口](../../archived/architecture/2026-08-09-headless-direct-core-entry-point.md)与 Session Controller 消费同一份状态。 **传输职责各有明确 owner。** `dsh-client-connection` 持有 `/api` 路由、请求与响应 envelope、浏览器认证、Host/Origin 检查、精确 Fetch 路由注册以及共享 Typert interceptor 席位。`dsh-api-gateway` 持有类型化 Remote 分发和多路复用 WebSocket。`dsh-host-webserver` 是朴素的路由注册插件:`WebServer` provide `ctx.webServer`(`register(route) → disposer`、重复 pattern 即抛、`renderIndex` 渲染——先结构化 `webserver/index-inject` 行、后原始 `tapIndex` 按注册序应用——与 `port`),激活即 listen,单请求失败时答 400 并记日志,且不认识任何 harness 概念。其基于 socket 的 Node HTTP 入口可以通过受维护的中间件应用已配置的 gzip,无需新增响应写出服务方法或改变 route owner;Web Worker 隧道传递 identity 字节。modules node 半(`ClientModuleRegistry`,provide `ctx.clientModules`)持有单包增量扫描、bundle 路由、启动注入行与 `onRebuilt`/`onGraphChanged` 通知。HMR(热模块替换)node 半通过 `fs.watchFile` membership 与 `/plugins/events` SSE 路由持有开发期重载。 @@ -25,7 +25,7 @@ Status: implemented ## 后果 - 重组一个 web 部署 = 改 yml/patch;退役件(`mountWebPlugins`、`CLIENT_PACKAGES`、`createHostWebPluginRegistry`、`startWebServer`、webserver 的图/SSE/api 知识)全部删除。 -- [Headless 是直接 core 入口](2026-08-09-headless-direct-core-entry-point.zh.md):其随附 profile 包含共享的 base Agent 能力,并省去 Host、HTTP、Web 与浏览器层。本笔记的传输划分是浏览器 surface 的约定。 +- [Headless 是直接 core 入口](../../archived/architecture/2026-08-09-headless-direct-core-entry-point.md):其随附 profile 包含共享的 base Agent 能力,并省去 Host、HTTP、Web 与浏览器层。本笔记的传输划分是浏览器 surface 的约定。 - 一个值得记住的 TypeScript 坑:`declare module 'cordis'` augmentation 所在文件若**没有任何 cordis import**,会被降级成独立模块声明,无声打散全程序的 `Context` merge(`ctx.on`/`ctx.effect` 全程序消失)。用 `import type {} from 'cordis'` 锚定。 ## 考虑过的替代方案 diff --git a/.agents/notes/implemented/architecture/2026-07-25-web-client-session-scope-and-provide-channel.i18n.yaml b/.agents/notes/implemented/architecture/2026-07-25-web-client-session-scope-and-provide-channel.i18n.yaml index cc913ae925..f1780bcbf7 100644 --- a/.agents/notes/implemented/architecture/2026-07-25-web-client-session-scope-and-provide-channel.i18n.yaml +++ b/.agents/notes/implemented/architecture/2026-07-25-web-client-session-scope-and-provide-channel.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-07-25-web-client-session-scope-and-provide-channel.md -2026-07-25-web-client-session-scope-and-provide-channel.md: feffb1ac0c5bb91c33e61ea18583202e96bad34d -2026-07-25-web-client-session-scope-and-provide-channel.zh.md: 5d368b4fd810264cb1b451d583de51e1d4cb232b +2026-07-25-web-client-session-scope-and-provide-channel.md: 4cdca4c1cb5b512c1696a397bbb6e4d070a6a487 +2026-07-25-web-client-session-scope-and-provide-channel.zh.md: 0258609fd8df90dc2133fcb8bf6e7e50efaab941 diff --git a/.agents/notes/implemented/architecture/2026-07-25-web-client-session-scope-and-provide-channel.md b/.agents/notes/implemented/architecture/2026-07-25-web-client-session-scope-and-provide-channel.md index feffb1ac0c..4cdca4c1cb 100644 --- a/.agents/notes/implemented/architecture/2026-07-25-web-client-session-scope-and-provide-channel.md +++ b/.agents/notes/implemented/architecture/2026-07-25-web-client-session-scope-and-provide-channel.md @@ -4,7 +4,7 @@ Status: implemented English | [中文](2026-07-25-web-client-session-scope-and-provide-channel.zh.md) -> Scope: the client Agent scope (actx) and targeted events, the client/host materialization parity model, the blank-session bit and reuse (`connectWorkspace`), the per-session provisioning channel (`sessions.provide`), and the host wire smalls that carry these capabilities (the summary `blank` column, the `host/session-added` frame field, and the `host/commands-changed` frame). The input state machine and the slash pipeline live in the [input machine note](2026-07-25-web-input-machine-and-slash-pipeline.md); the command business surfaces live in the [command surfaces note](2026-07-25-web-command-surfaces-and-assembly.md). +> Scope: the client Agent scope (actx) and targeted events, the client/host materialization parity model, the blank-session bit and reuse (`connectWorkspace`), the per-session provisioning channel (`sessions.provide`), and the host wire smalls that carry these capabilities (the summary `blank` column, the `host/session-added` frame field, and the `host/commands-changed` frame). The input state machine and the slash pipeline live in the [input machine note](../../archived/architecture/2026-07-25-web-input-machine-and-slash-pipeline.md); the command business surfaces live in the [command surfaces note](../../archived/architecture/2026-07-25-web-command-surfaces-and-assembly.md). ## Problem @@ -74,7 +74,7 @@ A session "materialized but with no first prompt" is governed by the summary-der `workspaces.connectWorkspace(workspaceId): Promise` (owned by WorkspaceRuntime — it holds both the workspace canonical path and the sessions reference): -- The reuse arm: the list mirror is searched for `blank && cwd == workspace.path && sessionIds.includes(id)` — the host's own membership rule, never cwd alone. A cwd match without the account slot (a CLI/TUI session birthed at the host cwd, or a deleted/recreated registration) would open a session no grouping surface can show under this Workspace, so it falls through to the create arm instead (see the [membership reuse fix](../bug-fix/2026-08-05-workspace-blank-session-reuse-membership.md)); a hit returns that id directly, creating nothing. +- The reuse arm: the list mirror is searched for `blank && cwd == workspace.path && sessionIds.includes(id)` — the host's own membership rule, never cwd alone. A cwd match without the account slot (a CLI/TUI session birthed at the host cwd, or a deleted/recreated registration) would open a session no grouping surface can show under this Workspace, so it falls through to the create arm instead (see the [membership reuse fix](../../archived/bug-fix/2026-08-05-workspace-blank-session-reuse-membership.md)); a hit returns that id directly, creating nothing. - The create arm: on a miss, `session.create({workspaceId})` returns the new id. - An unknown workspaceId fails loud (never silently creating somewhere else). - The resolution guarantee (one contract for both arms): when the promise resolves, the returned id is already in the list store and `sessions.binding(id)` resolves synchronously — `SessionRuntime.create` projects the list synchronously after RPC success before resolving, so a draft mover can write text into the new scope's machine before open, without waiting for a notifier flush. @@ -107,7 +107,7 @@ Slot scope is the closed set `root | session-maybe | session`: - The summary `blank` column and the `host/session-added` frame's `blank` field (see the blank bit above). - The SSE frame `host/commands-changed` (a pure invalidation signal); the client routes it into the typed events `commands/changed` and `connection/reset` (broadcast after each connection generation is established; wire-derived caches uniformly treat prior state as stale). The commands frame and its typed client event were later replaced by verbatim forwarding of `commands/change` through `ctx.remote.$on` ([forwarded Remote events](2026-08-10-remote-event-delivery.md)); `connection/reset` is unchanged, and the invalidation-not-diffing contract this bullet states still holds. -- `command.list/execute` and `skills/list` are uniformly single-addressed by `sessionId` (a session always has an Agent; `agentFor`'s resume semantics come ready-made); the command-surface narrative lives in the [command surfaces note](2026-07-25-web-command-surfaces-and-assembly.md). +- `command.list/execute` and `skills/list` are uniformly single-addressed by `sessionId` (a session always has an Agent; `agentFor`'s resume semantics come ready-made); the command-surface narrative lives in the [command surfaces note](../../archived/architecture/2026-07-25-web-command-surfaces-and-assembly.md). - The `session.create` request shape: workspaceId/cwd as either-or, plus an optional caller-preallocated sessionId (a same-id same-cwd retry is idempotent; a different cwd reports `session-conflict`). ## Alternatives considered diff --git a/.agents/notes/implemented/architecture/2026-07-25-web-client-session-scope-and-provide-channel.zh.md b/.agents/notes/implemented/architecture/2026-07-25-web-client-session-scope-and-provide-channel.zh.md index 5d368b4fd8..0258609fd8 100644 --- a/.agents/notes/implemented/architecture/2026-07-25-web-client-session-scope-and-provide-channel.zh.md +++ b/.agents/notes/implemented/architecture/2026-07-25-web-client-session-scope-and-provide-channel.zh.md @@ -4,7 +4,7 @@ Status: implemented [English](2026-07-25-web-client-session-scope-and-provide-channel.md) | 中文 -> 范围:client Agent scope(actx)与定向事件、client/host 实体化对等模型、空会话 blank 位与复用(`connectWorkspace`)、逐会话供数通道(`sessions.provide`),以及承载这些能力的 host wire 小件(summary `blank` 列、`host/session-added` 帧字段、`host/commands-changed` 帧)。输入状态机与 slash 管线见[输入状态机 note](2026-07-25-web-input-machine-and-slash-pipeline.zh.md);命令业务面见[命令业务面 note](2026-07-25-web-command-surfaces-and-assembly.zh.md)。 +> 范围:client Agent scope(actx)与定向事件、client/host 实体化对等模型、空会话 blank 位与复用(`connectWorkspace`)、逐会话供数通道(`sessions.provide`),以及承载这些能力的 host wire 小件(summary `blank` 列、`host/session-added` 帧字段、`host/commands-changed` 帧)。输入状态机与 slash 管线见[输入状态机 note](../../archived/architecture/2026-07-25-web-input-machine-and-slash-pipeline.md);命令业务面见[命令业务面 note](../../archived/architecture/2026-07-25-web-command-surfaces-and-assembly.md)。 ## 问题 @@ -74,7 +74,7 @@ Session 实例与 scope 同生命周期,存活资格 = host listed(一个判 `workspaces.connectWorkspace(workspaceId): Promise`(归属 WorkspaceRuntime——它同时持有 workspace 规范 path 与 sessions 引用): -- 复用臂:list mirror 中找 `blank && cwd == workspace.path && sessionIds.includes(id)`——host 自己的成员规则,绝不只按 cwd。没有账户槽位的 cwd 匹配(CLI(命令行界面)/TUI 在 host cwd 创建的会话,或已删除/重建的注册)会打开一个任何分组表面都无法显示在该工作区下的会话,因此落到新建臂(见[成员复用修复](../bug-fix/2026-08-05-workspace-blank-session-reuse-membership.zh.md));命中直接返回该 id,不新建。 +- 复用臂:list mirror 中找 `blank && cwd == workspace.path && sessionIds.includes(id)`——host 自己的成员规则,绝不只按 cwd。没有账户槽位的 cwd 匹配(CLI(命令行界面)/TUI 在 host cwd 创建的会话,或已删除/重建的注册)会打开一个任何分组表面都无法显示在该工作区下的会话,因此落到新建臂(见[成员复用修复](../../archived/bug-fix/2026-08-05-workspace-blank-session-reuse-membership.md));命中直接返回该 id,不新建。 - 新建臂:未命中则 `session.create({workspaceId})`,返回新 id。 - 未知 workspaceId fail loud(不静默创建到别处)。 - 解析保证(两臂同约定):promise resolve 时返回的 id 已在 list store 且 `sessions.binding(id)` 同步可解析——`SessionRuntime.create` 在 RPC 成功后同步投影列表再 resolve,使 draft 搬运方可以在 open 之前往新 scope 的 machine 写文本,不等 notifier flush。 @@ -107,7 +107,7 @@ slot scope 是闭集 `root | session-maybe | session`: - summary `blank` 列与 `host/session-added` 帧 `blank` 字段(见上文 blank 位)。 - SSE(Server-Sent Events)帧 `host/commands-changed`(纯失效信号);client 路由为类型事件 `commands/changed` 与 `connection/reset`(连接代建立后广播,wire 派生缓存一律视旧态为陈旧)。 该 commands 帧及其类型化 client 事件后来被「`commands/change` 经 `ctx.remote.$on` 原样转发」取代([转发的 Remote 事件](2026-08-10-remote-event-delivery.zh.md));`connection/reset` 不变;本条陈述的「失效而非差分」契约依然成立。 -- `command.list/execute`、`skills/list` 一律 `sessionId` 单址(会话恒有 Agent,`agentFor` 的恢复语义现成);命令面叙述见[命令业务面 note](2026-07-25-web-command-surfaces-and-assembly.zh.md)。 +- `command.list/execute`、`skills/list` 一律 `sessionId` 单址(会话恒有 Agent,`agentFor` 的恢复语义现成);命令面叙述见[命令业务面 note](../../archived/architecture/2026-07-25-web-command-surfaces-and-assembly.md)。 - `session.create` 请求形状:workspaceId/cwd 二选一 + 可选调用方预分配 sessionId(同 id 同 cwd 重试幂等,异 cwd 报 `session-conflict`)。 ## 考虑过的替代方案 diff --git a/.agents/notes/implemented/architecture/2026-07-25-web-command-surfaces-and-assembly.i18n.yaml b/.agents/notes/implemented/architecture/2026-07-25-web-command-surfaces-and-assembly.i18n.yaml deleted file mode 100644 index c04c301afa..0000000000 --- a/.agents/notes/implemented/architecture/2026-07-25-web-command-surfaces-and-assembly.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-07-25-web-command-surfaces-and-assembly.md -2026-07-25-web-command-surfaces-and-assembly.md: 943b68416d896c674783156b05997840c6df3255 -2026-07-25-web-command-surfaces-and-assembly.zh.md: c35d47202894af99377932df57e5de118186c1ce diff --git a/.agents/notes/implemented/architecture/2026-07-25-web-input-machine-and-slash-pipeline.i18n.yaml b/.agents/notes/implemented/architecture/2026-07-25-web-input-machine-and-slash-pipeline.i18n.yaml deleted file mode 100644 index fbb3f653a0..0000000000 --- a/.agents/notes/implemented/architecture/2026-07-25-web-input-machine-and-slash-pipeline.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-07-25-web-input-machine-and-slash-pipeline.md -2026-07-25-web-input-machine-and-slash-pipeline.md: 1b9e9d95b5a30efbf297be5fc5f788f9a1ac77c4 -2026-07-25-web-input-machine-and-slash-pipeline.zh.md: c9bee217da1dbffaeff69dfe5a2dcf8f0e8e3cb0 diff --git a/.agents/notes/implemented/architecture/2026-07-26-job-registry-seam.i18n.yaml b/.agents/notes/implemented/architecture/2026-07-26-job-registry-seam.i18n.yaml deleted file mode 100644 index 9c2d1f291f..0000000000 --- a/.agents/notes/implemented/architecture/2026-07-26-job-registry-seam.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-07-26-job-registry-seam.md -2026-07-26-job-registry-seam.md: 2040b3a40debd181ebbdb0f1a9916b1a10ddcc4b -2026-07-26-job-registry-seam.zh.md: 12785584f6cf9f121bcc6c6922994c06027fef58 diff --git a/.agents/notes/implemented/architecture/2026-07-26-subprocess-seam.i18n.yaml b/.agents/notes/implemented/architecture/2026-07-26-subprocess-seam.i18n.yaml deleted file mode 100644 index bf39cc34b1..0000000000 --- a/.agents/notes/implemented/architecture/2026-07-26-subprocess-seam.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-07-26-subprocess-seam.md -2026-07-26-subprocess-seam.md: aa7a989a0321760c9bc278df8356a57f4dd0d459 -2026-07-26-subprocess-seam.zh.md: bb9755957f2de35a884d51f1fadc037a7bbbeddd diff --git a/.agents/notes/implemented/architecture/2026-07-27-dispose-ladder-to-consumer.i18n.yaml b/.agents/notes/implemented/architecture/2026-07-27-dispose-ladder-to-consumer.i18n.yaml deleted file mode 100644 index a81c4706e7..0000000000 --- a/.agents/notes/implemented/architecture/2026-07-27-dispose-ladder-to-consumer.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-07-27-dispose-ladder-to-consumer.md -2026-07-27-dispose-ladder-to-consumer.md: 58d835864d2f6544152fdf09cf6e93380793a2ae -2026-07-27-dispose-ladder-to-consumer.zh.md: dc7413e85fa6e52de14f51fd175c7b37b43029a4 diff --git a/.agents/notes/implemented/architecture/2026-07-28-directory-picker-capability-seam.i18n.yaml b/.agents/notes/implemented/architecture/2026-07-28-directory-picker-capability-seam.i18n.yaml deleted file mode 100644 index d09e7e13cd..0000000000 --- a/.agents/notes/implemented/architecture/2026-07-28-directory-picker-capability-seam.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-07-28-directory-picker-capability-seam.md -2026-07-28-directory-picker-capability-seam.md: 10ab8e393d5d33da6a09af5caa4024f02c57165c -2026-07-28-directory-picker-capability-seam.zh.md: 8764dc208bef1ead3fc1ef608c4d3b2b37400602 diff --git a/.agents/notes/implemented/architecture/2026-07-28-identified-immutable-message-values.i18n.yaml b/.agents/notes/implemented/architecture/2026-07-28-identified-immutable-message-values.i18n.yaml index b5337bdd71..1b91468214 100644 --- a/.agents/notes/implemented/architecture/2026-07-28-identified-immutable-message-values.i18n.yaml +++ b/.agents/notes/implemented/architecture/2026-07-28-identified-immutable-message-values.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-07-28-identified-immutable-message-values.md -2026-07-28-identified-immutable-message-values.md: b77891970cb3e5456989436565e5b8b118dedc45 -2026-07-28-identified-immutable-message-values.zh.md: ebf274ffa3877f34a081ded232a46b6f39689b57 +2026-07-28-identified-immutable-message-values.md: 9d2b22a5a1fc87ea7b0ff8eb24b2e8c4b86543e1 +2026-07-28-identified-immutable-message-values.zh.md: 6b36cfec0a24196ca526b0ffb21180967aa640eb diff --git a/.agents/notes/implemented/architecture/2026-07-28-identified-immutable-message-values.md b/.agents/notes/implemented/architecture/2026-07-28-identified-immutable-message-values.md index b77891970c..9d2b22a5a1 100644 --- a/.agents/notes/implemented/architecture/2026-07-28-identified-immutable-message-values.md +++ b/.agents/notes/implemented/architecture/2026-07-28-identified-immutable-message-values.md @@ -46,5 +46,5 @@ The message and helper unit tests pin immediate identity, detachment, deep immut ## Related -- [Unified agent delivery routing and coalesced injected context](2026-07-22-unified-send-and-coalesced-user-messages.md) — this note supersedes its input-representation and agent-assigned-id details while retaining its routing decision. +- [Unified agent delivery routing and coalesced injected context](../../archived/architecture/2026-07-22-unified-send-and-coalesced-user-messages.md) — this note supersedes its input-representation and agent-assigned-id details while retaining its routing decision. - [Reconstructable requests](2026-07-05-reconstructable-requests.md) — the session log remains the authority for every model-visible input. diff --git a/.agents/notes/implemented/architecture/2026-07-28-identified-immutable-message-values.zh.md b/.agents/notes/implemented/architecture/2026-07-28-identified-immutable-message-values.zh.md index ebf274ffa3..6b36cfec0a 100644 --- a/.agents/notes/implemented/architecture/2026-07-28-identified-immutable-message-values.zh.md +++ b/.agents/notes/implemented/architecture/2026-07-28-identified-immutable-message-values.zh.md @@ -46,5 +46,5 @@ harness 曾存在多种形似消息的表示,各自采用不同的标识规则 ## 相关 -- [统一 agent 交付路由,并合并注入上下文](2026-07-22-unified-send-and-coalesced-user-messages.zh.md)——本记录取代其中的输入表示和由 agent 分配 id 的细节,同时保留其路由决策。 +- [统一 agent 交付路由,并合并注入上下文](../../archived/architecture/2026-07-22-unified-send-and-coalesced-user-messages.md)——本记录取代其中的输入表示和由 agent 分配 id 的细节,同时保留其路由决策。 - [可重建的请求](2026-07-05-reconstructable-requests.zh.md)——会话日志仍是每项模型可见输入的权威来源。 diff --git a/.agents/notes/implemented/architecture/2026-07-28-user-settings-seam.i18n.yaml b/.agents/notes/implemented/architecture/2026-07-28-user-settings-seam.i18n.yaml deleted file mode 100644 index f45a86e65a..0000000000 --- a/.agents/notes/implemented/architecture/2026-07-28-user-settings-seam.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-07-28-user-settings-seam.md -2026-07-28-user-settings-seam.md: 686c98d89025200e3de5d31d5d95c782f67e2aa3 -2026-07-28-user-settings-seam.zh.md: 85287634ba0c6bd7848f54d680f375106d7bfc53 diff --git a/.agents/notes/implemented/architecture/2026-07-29-dsh-source-launch-tsx-esm.i18n.yaml b/.agents/notes/implemented/architecture/2026-07-29-dsh-source-launch-tsx-esm.i18n.yaml index a46174dd21..f5d261079d 100644 --- a/.agents/notes/implemented/architecture/2026-07-29-dsh-source-launch-tsx-esm.i18n.yaml +++ b/.agents/notes/implemented/architecture/2026-07-29-dsh-source-launch-tsx-esm.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-07-29-dsh-source-launch-tsx-esm.md -2026-07-29-dsh-source-launch-tsx-esm.md: 23cf4023e91d148b2e129faa7395fdccdd3e0a2b -2026-07-29-dsh-source-launch-tsx-esm.zh.md: e2dede0036dd1128718bdf41a11f5949555b69a5 +2026-07-29-dsh-source-launch-tsx-esm.md: 5401b0257faa69eaf76b11e7b51d06afd7ec2b8c +2026-07-29-dsh-source-launch-tsx-esm.zh.md: f32fa3ece91bf7b9829d7012ceb090cabaa833a9 diff --git a/.agents/notes/implemented/architecture/2026-07-29-dsh-source-launch-tsx-esm.md b/.agents/notes/implemented/architecture/2026-07-29-dsh-source-launch-tsx-esm.md index 23cf4023e9..5401b0257f 100644 --- a/.agents/notes/implemented/architecture/2026-07-29-dsh-source-launch-tsx-esm.md +++ b/.agents/notes/implemented/architecture/2026-07-29-dsh-source-launch-tsx-esm.md @@ -14,7 +14,7 @@ Startup latency also mattered: the off-thread `module.register()` hooks worker s ## Decision -The `dsh` TUI, Web, and headless source launches run `node --import tsx/esm`: tsx's ESM-only hook owns both TypeScript transformation and tsconfig `paths` projection. The root `dsh` script uses that vector directly from the repository root; artifact generation is a separate operation under the [source-launch/build separation decision](../simplification/2026-08-12-separate-source-launch-from-build.md). The CJS hook stays off because the CLI source graph is ESM-only; measured runtime launch to the TUI banner is ~0.7s versus ~1.1s under the full tsx default and ~0.75s under the removed native chain. +The `dsh` TUI, Web, and headless source launches run `node --import tsx/esm`: tsx's ESM-only hook owns both TypeScript transformation and tsconfig `paths` projection. The root `dsh` script uses that vector directly from the repository root; artifact generation is a separate operation under the [source-launch/build separation decision](../../archived/simplification/2026-08-12-separate-source-launch-from-build.md). The CJS hook stays off because the CLI source graph is ESM-only; measured runtime launch to the TUI banner is ~0.7s versus ~1.1s under the full tsx default and ~0.75s under the removed native chain. `scripts/tspath-loader.ts` and `apps/cli/src/tsconfig-paths-loader.ts` are deleted. With them went the loader's runtime rule of mapping a workspace import only for declared runtime dependencies — tsx applies the `paths` map unconditionally. Declaration completeness now rests on the static gates alone: `verify-cordis-config` for configured bare plugins, and workspace constraints for manifests. (That runtime rule found real bugs: `dsh-plan-mode` and `dsh-tool-jobs` imported `@deepseek-ai/dsh-llm` while declaring it only in devDependencies; since fixed.) diff --git a/.agents/notes/implemented/architecture/2026-07-29-dsh-source-launch-tsx-esm.zh.md b/.agents/notes/implemented/architecture/2026-07-29-dsh-source-launch-tsx-esm.zh.md index e2dede0036..f32fa3ece9 100644 --- a/.agents/notes/implemented/architecture/2026-07-29-dsh-source-launch-tsx-esm.zh.md +++ b/.agents/notes/implemented/architecture/2026-07-29-dsh-source-launch-tsx-esm.zh.md @@ -14,7 +14,7 @@ Status: implemented ## 决策 -`dsh` 的 TUI、Web 与无头源码启动运行 `node --import tsx/esm`:由 tsx 的 ESM-only 钩子同时负责 TypeScript 转换与 tsconfig `paths` 投影。根目录的 `dsh` 脚本直接从仓库根目录使用同一启动方式;产物生成是独立操作,由[源码启动与构建分离决策](../simplification/2026-08-12-separate-source-launch-from-build.zh.md)规定。CJS 钩子保持关闭,因为 CLI(命令行界面)源码图是纯 ESM;实测运行时启动至 TUI banner 耗时约 0.7s,对比完整 tsx 默认形态约 1.1s、已移除的原生链约 0.75s。 +`dsh` 的 TUI、Web 与无头源码启动运行 `node --import tsx/esm`:由 tsx 的 ESM-only 钩子同时负责 TypeScript 转换与 tsconfig `paths` 投影。根目录的 `dsh` 脚本直接从仓库根目录使用同一启动方式;产物生成是独立操作,由[源码启动与构建分离决策](../../archived/simplification/2026-08-12-separate-source-launch-from-build.md)规定。CJS 钩子保持关闭,因为 CLI(命令行界面)源码图是纯 ESM;实测运行时启动至 TUI banner 耗时约 0.7s,对比完整 tsx 默认形态约 1.1s、已移除的原生链约 0.75s。 `scripts/tspath-loader.ts` 与 `apps/cli/src/tsconfig-paths-loader.ts` 已删除。随之消失的还有该 loader「仅为已声明运行时依赖映射 workspace import」的运行时规则——tsx 无条件应用 `paths` 映射。声明完整性现在仅由静态门禁保障:配置的裸插件走 `verify-cordis-config`,manifest(元数据清单)走 workspace constraints。(该运行时规则确实发现过真实缺陷:`dsh-plan-mode` 与 `dsh-tool-jobs` 导入 `@deepseek-ai/dsh-llm` 却只声明在 devDependencies;后已修复。) diff --git a/.agents/notes/implemented/architecture/2026-07-29-package-regrouping.i18n.yaml b/.agents/notes/implemented/architecture/2026-07-29-package-regrouping.i18n.yaml deleted file mode 100644 index 186d4321e2..0000000000 --- a/.agents/notes/implemented/architecture/2026-07-29-package-regrouping.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-07-29-package-regrouping.md -2026-07-29-package-regrouping.md: 2d585547db03fa54701850fe48bf936eb0ec4fd5 -2026-07-29-package-regrouping.zh.md: 0667bff7e0697978955823977ca6b98dd71ab4f4 diff --git a/.agents/notes/implemented/architecture/2026-07-29-request-level-llm-config-credentials.i18n.yaml b/.agents/notes/implemented/architecture/2026-07-29-request-level-llm-config-credentials.i18n.yaml deleted file mode 100644 index f8ea7225ac..0000000000 --- a/.agents/notes/implemented/architecture/2026-07-29-request-level-llm-config-credentials.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-07-29-request-level-llm-config-credentials.md -2026-07-29-request-level-llm-config-credentials.md: d929d286d79c168bcf968c8cadf9c4e824589914 -2026-07-29-request-level-llm-config-credentials.zh.md: 6455ee7c1057a564039546363eb7dfb8dc6d9292 diff --git a/.agents/notes/implemented/architecture/2026-07-30-adapter-owned-max-token-defaults.i18n.yaml b/.agents/notes/implemented/architecture/2026-07-30-adapter-owned-max-token-defaults.i18n.yaml deleted file mode 100644 index b025f076f0..0000000000 --- a/.agents/notes/implemented/architecture/2026-07-30-adapter-owned-max-token-defaults.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-07-30-adapter-owned-max-token-defaults.md -2026-07-30-adapter-owned-max-token-defaults.md: ec6a68b74d0cdaefcd214be98efb32377721169a -2026-07-30-adapter-owned-max-token-defaults.zh.md: 700d90125c125184625afc33ebf64add4ab9191c diff --git a/.agents/notes/implemented/architecture/2026-07-30-client-locale-full-rollout.i18n.yaml b/.agents/notes/implemented/architecture/2026-07-30-client-locale-full-rollout.i18n.yaml deleted file mode 100644 index 19e4ac9d22..0000000000 --- a/.agents/notes/implemented/architecture/2026-07-30-client-locale-full-rollout.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-07-30-client-locale-full-rollout.md -2026-07-30-client-locale-full-rollout.md: 2d7c919d420f5681007843d5b8aae5c9c53cc275 -2026-07-30-client-locale-full-rollout.zh.md: 8546d06a365cabad50cd26c0f50e45e762671588 diff --git a/.agents/notes/implemented/architecture/2026-07-30-command-row-copy-contract.i18n.yaml b/.agents/notes/implemented/architecture/2026-07-30-command-row-copy-contract.i18n.yaml deleted file mode 100644 index 62ea89bc3b..0000000000 --- a/.agents/notes/implemented/architecture/2026-07-30-command-row-copy-contract.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-07-30-command-row-copy-contract.md -2026-07-30-command-row-copy-contract.md: d410adf62dbbc4445936c70309d5902bc184b16f -2026-07-30-command-row-copy-contract.zh.md: 0f680f9beb8b335dd6311cadc6c7e022809fb8f2 diff --git a/.agents/notes/implemented/architecture/2026-07-30-config-plane-boundaries.i18n.yaml b/.agents/notes/implemented/architecture/2026-07-30-config-plane-boundaries.i18n.yaml deleted file mode 100644 index 08e1de4e5f..0000000000 --- a/.agents/notes/implemented/architecture/2026-07-30-config-plane-boundaries.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-07-30-config-plane-boundaries.md -2026-07-30-config-plane-boundaries.md: d7ae13f08ca5c3957a8a5c1871b0022453e9b562 -2026-07-30-config-plane-boundaries.zh.md: e53a68f91f4d961af5a01fd7bbfb4472b4b17dfe diff --git a/.agents/notes/implemented/architecture/2026-07-30-credential-boundaries-and-atomic-registration.i18n.yaml b/.agents/notes/implemented/architecture/2026-07-30-credential-boundaries-and-atomic-registration.i18n.yaml index ab7e9786ec..ccbabe4e0d 100644 --- a/.agents/notes/implemented/architecture/2026-07-30-credential-boundaries-and-atomic-registration.i18n.yaml +++ b/.agents/notes/implemented/architecture/2026-07-30-credential-boundaries-and-atomic-registration.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-07-30-credential-boundaries-and-atomic-registration.md -2026-07-30-credential-boundaries-and-atomic-registration.md: f1176805f9f5e29770e46d94af32b3224a601850 -2026-07-30-credential-boundaries-and-atomic-registration.zh.md: 53803fbb36cce8745fc3b324a2cf4ce412c01ef5 +2026-07-30-credential-boundaries-and-atomic-registration.md: 0e65bb1093bb21c3a0dbee71b4e80ba4276b9d00 +2026-07-30-credential-boundaries-and-atomic-registration.zh.md: cbc66efa26065beb54ee1deea0f69221ebd92337 diff --git a/.agents/notes/implemented/architecture/2026-07-30-credential-boundaries-and-atomic-registration.md b/.agents/notes/implemented/architecture/2026-07-30-credential-boundaries-and-atomic-registration.md index f1176805f9..0e65bb1093 100644 --- a/.agents/notes/implemented/architecture/2026-07-30-credential-boundaries-and-atomic-registration.md +++ b/.agents/notes/implemented/architecture/2026-07-30-credential-boundaries-and-atomic-registration.md @@ -4,7 +4,7 @@ Status: implemented English | [中文](2026-07-30-credential-boundaries-and-atomic-registration.zh.md) -> Scope: hardening the [request-level LLM configuration boundary](2026-07-29-request-level-llm-config-credentials.md) — where a stored credential lives and who can read it, how one request's facts stay one generation, and how a route set changes without a window. Companion to the [settings write-path note](2026-07-30-settings-write-path-integrity.md), whose provider fixes this note applies to `credentials-local` and whose writer lock it promotes into `dsh-atomic-write`. +> Scope: hardening the [request-level LLM configuration boundary](../../archived/architecture/2026-07-29-request-level-llm-config-credentials.md) — where a stored credential lives and who can read it, how one request's facts stay one generation, and how a route set changes without a window. Companion to the [settings write-path note](../../archived/architecture/2026-07-30-settings-write-path-integrity.md), whose provider fixes this note applies to `credentials-local` and whose writer lock it promotes into `dsh-atomic-write`. ## Problem @@ -14,7 +14,7 @@ Two request-path defects sat beside them. DeepSeek resolved connection and crede ## Decision -**The credential document belongs to the credential provider alone.** No surface loads it into `process.env`. It was `$DSH_HOME/.env` here; the [credentials document split](2026-08-04-credentials-yaml-and-user-environment-layer.md) later moved it to `$DSH_HOME/.credentials.yaml`, so `$DSH_HOME/.env` is the user's ordinary environment layer, holding no provider-managed secret. The genuine launch environment and the invoking directory's `.env` (loaded by the bin) stay the read-only ambient layer, so a composition without the provider resolves keys exactly as before, while a stored key stays file-sourced and writable across restarts — proven by a real restart in the loader composition rather than by a unit assertion about `describe()`. +**The credential document belongs to the credential provider alone.** No surface loads it into `process.env`. It was `$DSH_HOME/.env` here; the [credentials document split](../../archived/architecture/2026-08-04-credentials-yaml-and-user-environment-layer.md) later moved it to `$DSH_HOME/.credentials.yaml`, so `$DSH_HOME/.env` is the user's ordinary environment layer, holding no provider-managed secret. The genuine launch environment and the invoking directory's `.env` (loaded by the bin) stay the read-only ambient layer, so a composition without the provider resolves keys exactly as before, while a stored key stays file-sourced and writable across restarts — proven by a real restart in the loader composition rather than by a unit assertion about `describe()`. **The stored credential has no boundary against the model, and the READMEs say so.** `0600` under a `0700` directory stops other OS users; the model's bash and filesystem tools run as that same user, and the shipped default confines nothing. What the harness does hold to is narrower and stated as exactly that: no surface hoists the document into `process.env`, and the model is never handed a resolved path to it, so reaching the value takes a deliberate read of a path it was not given. An OS-keychain provider — a store the model's processes cannot read at all — is recorded as the real answer rather than implied by a partial one. diff --git a/.agents/notes/implemented/architecture/2026-07-30-credential-boundaries-and-atomic-registration.zh.md b/.agents/notes/implemented/architecture/2026-07-30-credential-boundaries-and-atomic-registration.zh.md index 53803fbb36..cbc66efa26 100644 --- a/.agents/notes/implemented/architecture/2026-07-30-credential-boundaries-and-atomic-registration.zh.md +++ b/.agents/notes/implemented/architecture/2026-07-30-credential-boundaries-and-atomic-registration.zh.md @@ -4,7 +4,7 @@ Status: implemented [English](2026-07-30-credential-boundaries-and-atomic-registration.md) | 中文 -> 范围:加固[请求级 LLM(大语言模型)配置边界](2026-07-29-request-level-llm-config-credentials.zh.md)——存下来的凭据落在哪里、谁能读到它,一次请求所用的事实如何保持在同一代,以及一组路由如何在不留空窗的前提下更换。本 note 与 [settings 写路径 note](2026-07-30-settings-write-path-integrity.zh.md) 配套:它把那篇 note 的提供方修复套用到 `credentials-local`,并把其中的写锁提升进 `dsh-atomic-write`。 +> 范围:加固[请求级 LLM(大语言模型)配置边界](../../archived/architecture/2026-07-29-request-level-llm-config-credentials.md)——存下来的凭据落在哪里、谁能读到它,一次请求所用的事实如何保持在同一代,以及一组路由如何在不留空窗的前提下更换。本 note 与 [settings 写路径 note](../../archived/architecture/2026-07-30-settings-write-path-integrity.md) 配套:它把那篇 note 的提供方修复套用到 `credentials-local`,并把其中的写锁提升进 `dsh-atomic-write`。 ## 问题 @@ -18,7 +18,7 @@ Status: implemented ## 决策 -**凭据文档只归凭据提供方所有。**没有任何一个面会把它加载进 `process.env`。当时该文档是 `$DSH_HOME/.env`;[凭据文档拆分](2026-08-04-credentials-yaml-and-user-environment-layer.zh.md)后来把它移到 `$DSH_HOME/.credentials.yaml`,因此 `$DSH_HOME/.env` 是用户的普通环境层,其中不含任何提供方管理的密钥。真正的启动环境,以及调用目录中由 bin 加载的 `.env`,仍然是那一层只读的环境来源,因此不挂载该提供方的组合,解析密钥的方式与从前完全一致,而存下的密钥跨重启仍然来源于文件、仍然可写——这一点由 loader 组合中的一次真实重启来证明,而不是靠对 `describe()` 的单元断言。 +**凭据文档只归凭据提供方所有。**没有任何一个面会把它加载进 `process.env`。当时该文档是 `$DSH_HOME/.env`;[凭据文档拆分](../../archived/architecture/2026-08-04-credentials-yaml-and-user-environment-layer.md)后来把它移到 `$DSH_HOME/.credentials.yaml`,因此 `$DSH_HOME/.env` 是用户的普通环境层,其中不含任何提供方管理的密钥。真正的启动环境,以及调用目录中由 bin 加载的 `.env`,仍然是那一层只读的环境来源,因此不挂载该提供方的组合,解析密钥的方式与从前完全一致,而存下的密钥跨重启仍然来源于文件、仍然可写——这一点由 loader 组合中的一次真实重启来证明,而不是靠对 `describe()` 的单元断言。 **存下的凭据对模型没有边界,而 README 就是这么写的。**`0700` 目录下的 `0600` 挡得住其他 OS 用户;模型的 bash 与文件系统工具正是以同一用户身份运行,而已交付的默认配置不提供任何约束。harness 真正守住的边界更窄,文档也严格按这一范围表述:没有任何一个面会把该文档提升进 `process.env`,模型也从不会拿到它的解析后路径,因此要拿到这个值,需要刻意去读一条并未交给它的路径。OS 钥匙串(keychain)提供方——一个模型的进程根本读不到的存储——被记录为真正的答案,而不是靠一个残缺的方案去暗示它。 diff --git a/.agents/notes/implemented/architecture/2026-07-30-followup-enqueue-and-owned-runs.i18n.yaml b/.agents/notes/implemented/architecture/2026-07-30-followup-enqueue-and-owned-runs.i18n.yaml index 41be5b3340..b729d9dd5b 100644 --- a/.agents/notes/implemented/architecture/2026-07-30-followup-enqueue-and-owned-runs.i18n.yaml +++ b/.agents/notes/implemented/architecture/2026-07-30-followup-enqueue-and-owned-runs.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-07-30-followup-enqueue-and-owned-runs.md -2026-07-30-followup-enqueue-and-owned-runs.md: e056d23d72121053c2aeaec44ff307c514c1ae49 -2026-07-30-followup-enqueue-and-owned-runs.zh.md: 4200c6b480298a2e487667cf953f6eea7d553736 +2026-07-30-followup-enqueue-and-owned-runs.md: c9b3b992dffb39c94b476cd6541b8ec9e2256047 +2026-07-30-followup-enqueue-and-owned-runs.zh.md: 7f272484cad4f9d0fd918e5c1b05fb8fcb0384c0 diff --git a/.agents/notes/implemented/architecture/2026-07-30-followup-enqueue-and-owned-runs.md b/.agents/notes/implemented/architecture/2026-07-30-followup-enqueue-and-owned-runs.md index e056d23d72..c9b3b992df 100644 --- a/.agents/notes/implemented/architecture/2026-07-30-followup-enqueue-and-owned-runs.md +++ b/.agents/notes/implemented/architecture/2026-07-30-followup-enqueue-and-owned-runs.md @@ -16,7 +16,7 @@ Keep `Agent.followup(message): void` as an enqueue-only operation. `Agent.whenId The low-level SDK protocol answers `session/prompt` as soon as enqueue succeeds with `{ messageId }`. It streams durable facts through `session.event`, publishes whole-agent transitions through `session.status`, and has no `session.finished`. A low-level client may observe that receipt and later idleness, but receives no prompt result. -High-level automation APIs return a `RunResult` only when they explicitly own an activity interval. The TypeScript and Python SDK `run()` methods collect from the submitted message's durable inbox receipt through the next whole-agent `idle`; their final response is the last committed assistant message in that interval, not a response causally attributed to the submitted prompt. The Python SDK also reports the last root turn's reason kind as the run-level [`finish_reason`](../bug-fix/2026-08-11-owned-run-finish-reason.md), without attributing it to the submitted prompt. The one-shot CLI owns the analogous idle-to-idle interval. An isolated child-agent run may report a result because its caller owns the complete child lifecycle and any steering belongs to that run. +High-level automation APIs return a `RunResult` only when they explicitly own an activity interval. The TypeScript and Python SDK `run()` methods collect from the submitted message's durable inbox receipt through the next whole-agent `idle`; their final response is the last committed assistant message in that interval, not a response causally attributed to the submitted prompt. The Python SDK also reports the last root turn's reason kind as the run-level [`finish_reason`](../../archived/bug-fix/2026-08-11-owned-run-finish-reason.md), without attributing it to the submitted prompt. The one-shot CLI owns the analogous idle-to-idle interval. An isolated child-agent run may report a result because its caller owns the complete child lifecycle and any steering belongs to that run. ACP must return a protocol `stopReason`. Its bridge serializes one in-flight prompt per ACP session and owns the interval from admission through whole-Agent idle and ordered update delivery. It correlates the turn that admits the identified ACP message without claiming that every activity in the interval was caused only by that message. A correlated token-limit ending maps to standard `max_tokens`; a correlated model error rejects at the same quiescence boundary; a turnless slot settles as `cancelled` alongside explicit ACP cancellation or disposal. Other normal quiescence reports `end_turn`. diff --git a/.agents/notes/implemented/architecture/2026-07-30-followup-enqueue-and-owned-runs.zh.md b/.agents/notes/implemented/architecture/2026-07-30-followup-enqueue-and-owned-runs.zh.md index 4200c6b480..7f272484ca 100644 --- a/.agents/notes/implemented/architecture/2026-07-30-followup-enqueue-and-owned-runs.zh.md +++ b/.agents/notes/implemented/architecture/2026-07-30-followup-enqueue-and-owned-runs.zh.md @@ -16,7 +16,7 @@ Status: implemented 底层 SDK 协议在入队成功后立即以 `{ messageId }` 响应 `session/prompt`。它通过 `session.event` 流式传输持久事实,通过 `session.status` 发布整个 agent 的状态转换,且不包含 `session.finished`。底层客户端可以观察该回执和之后的 idle,但不会收到提示词结果。 -只有明确拥有一个活动区间时,高层自动化 API 才返回 `RunResult`。TypeScript 和 Python SDK 的 `run()` 方法从已提交消息的持久 inbox 回执开始收集,直至整个 agent 下一次进入 `idle`;其最终响应是该区间内最后一条已提交的 assistant 消息,而不是按因果关系归属于已提交提示词的响应。Python SDK 还把根会话最后一个轮次的结束原因 kind 作为运行级 [`finish_reason`](../bug-fix/2026-08-11-owned-run-finish-reason.zh.md) 返回,但不会将其归因于已提交的提示词。单次 CLI(命令行界面)拥有相应的 idle 到 idle 区间。隔离的子 agent 运行可以报告结果,因为调用方拥有完整的子级生命周期,任何 steering 都属于该运行。 +只有明确拥有一个活动区间时,高层自动化 API 才返回 `RunResult`。TypeScript 和 Python SDK 的 `run()` 方法从已提交消息的持久 inbox 回执开始收集,直至整个 agent 下一次进入 `idle`;其最终响应是该区间内最后一条已提交的 assistant 消息,而不是按因果关系归属于已提交提示词的响应。Python SDK 还把根会话最后一个轮次的结束原因 kind 作为运行级 [`finish_reason`](../../archived/bug-fix/2026-08-11-owned-run-finish-reason.md) 返回,但不会将其归因于已提交的提示词。单次 CLI(命令行界面)拥有相应的 idle 到 idle 区间。隔离的子 agent 运行可以报告结果,因为调用方拥有完整的子级生命周期,任何 steering 都属于该运行。 ACP(Agent Client Protocol)必须返回协议规定的 `stopReason`。其桥接层对每个 ACP 会话中的提示词进行串行处理,并拥有从准入到整个 Agent idle 和有序更新交付的区间。它会关联准入该已识别 ACP 消息的轮次,但不会声称区间内所有活动都只由该消息引起。关联的 token 上限结尾映射为标准 `max_tokens`;关联模型错误在同一个完全停稳边界拒绝;无轮次 slot 与显式 ACP 取消或 dispose 一样以 `cancelled` 结算。其他正常完全停稳报告 `end_turn`。 diff --git a/.agents/notes/implemented/architecture/2026-07-30-settings-write-path-integrity.i18n.yaml b/.agents/notes/implemented/architecture/2026-07-30-settings-write-path-integrity.i18n.yaml deleted file mode 100644 index a2a413d4b5..0000000000 --- a/.agents/notes/implemented/architecture/2026-07-30-settings-write-path-integrity.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-07-30-settings-write-path-integrity.md -2026-07-30-settings-write-path-integrity.md: 7a2d377586ff2bfa7caeb9d4196ee99f70d3e63f -2026-07-30-settings-write-path-integrity.zh.md: 596f4814674e6fc471959a6c1637dd7a818c50dc diff --git a/.agents/notes/implemented/architecture/2026-07-30-web-config-plane.i18n.yaml b/.agents/notes/implemented/architecture/2026-07-30-web-config-plane.i18n.yaml deleted file mode 100644 index 33d4ec3daa..0000000000 --- a/.agents/notes/implemented/architecture/2026-07-30-web-config-plane.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-07-30-web-config-plane.md -2026-07-30-web-config-plane.md: a919487ba48cd7735a9f7fbc65a548bc5bfb7114 -2026-07-30-web-config-plane.zh.md: ca9e9f4427bba80a63865e891e42656aeb1b5c64 diff --git a/.agents/notes/implemented/architecture/2026-07-31-code-runtime-portable-identifier-seam.i18n.yaml b/.agents/notes/implemented/architecture/2026-07-31-code-runtime-portable-identifier-seam.i18n.yaml deleted file mode 100644 index d40897535b..0000000000 --- a/.agents/notes/implemented/architecture/2026-07-31-code-runtime-portable-identifier-seam.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-07-31-code-runtime-portable-identifier-seam.md -2026-07-31-code-runtime-portable-identifier-seam.md: e4cf236f62407c9fda42a3e2cdcc5d3ef02a1f92 -2026-07-31-code-runtime-portable-identifier-seam.zh.md: 63fc89eb0d674a381ce7a5a626bd51d5f8b234d3 diff --git a/.agents/notes/implemented/architecture/2026-07-31-code-runtime-python-fd3-protocol.i18n.yaml b/.agents/notes/implemented/architecture/2026-07-31-code-runtime-python-fd3-protocol.i18n.yaml index 06974904b9..f656d54418 100644 --- a/.agents/notes/implemented/architecture/2026-07-31-code-runtime-python-fd3-protocol.i18n.yaml +++ b/.agents/notes/implemented/architecture/2026-07-31-code-runtime-python-fd3-protocol.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-07-31-code-runtime-python-fd3-protocol.md -2026-07-31-code-runtime-python-fd3-protocol.md: cd8a42b509598d4782fc7c0637839e0dfd06f289 -2026-07-31-code-runtime-python-fd3-protocol.zh.md: a6454c17dc23e3f6385fe2dc3b46eabdb241faff +2026-07-31-code-runtime-python-fd3-protocol.md: 7f928b9cc996b545538e86a67399d5441509471a +2026-07-31-code-runtime-python-fd3-protocol.zh.md: 568b6ff3d7025ba55080e9677375c4b88303f621 diff --git a/.agents/notes/implemented/architecture/2026-07-31-code-runtime-python-fd3-protocol.md b/.agents/notes/implemented/architecture/2026-07-31-code-runtime-python-fd3-protocol.md index cd8a42b509..7f928b9cc9 100644 --- a/.agents/notes/implemented/architecture/2026-07-31-code-runtime-python-fd3-protocol.md +++ b/.agents/notes/implemented/architecture/2026-07-31-code-runtime-python-fd3-protocol.md @@ -10,7 +10,7 @@ English | [中文](2026-07-31-code-runtime-python-fd3-protocol.zh.md) `@deepseek-ai/dsh-experimental-code-runtime-python` owns the wire protocol intended for a CPython code-runtime provider. Such a provider runs each model program in a fresh `python3 -I` subprocess and bridges binding calls and completion values over the child's fd 3. The host cannot trust that channel: model code has full access to fd 3 and can forge any frame, so every inbound frame is hostile input that the host must validate and rebuild before reading. The protocol also has to carry lossless JSON without the depth limit `JSON.stringify` and `json.dumps` impose, because the seam's `CodeJsonValue` is depth-unbounded. -The private experimental package contains both the protocol and runtime implementation: `PythonCodeRuntime` (the plugin's default export), the `python3 -I` subprocess path, and the Python-side JSON codec all live in `@deepseek-ai/dsh-experimental-code-runtime-python`. The protocol builds on the [portable identifier seam](2026-07-31-code-runtime-portable-identifier-seam.md). +The private experimental package contains both the protocol and runtime implementation: `PythonCodeRuntime` (the plugin's default export), the `python3 -I` subprocess path, and the Python-side JSON codec all live in `@deepseek-ai/dsh-experimental-code-runtime-python`. The protocol builds on the [portable identifier seam](../../archived/architecture/2026-07-31-code-runtime-portable-identifier-seam.md). ## Decision diff --git a/.agents/notes/implemented/architecture/2026-07-31-code-runtime-python-fd3-protocol.zh.md b/.agents/notes/implemented/architecture/2026-07-31-code-runtime-python-fd3-protocol.zh.md index a6454c17dc..568b6ff3d7 100644 --- a/.agents/notes/implemented/architecture/2026-07-31-code-runtime-python-fd3-protocol.zh.md +++ b/.agents/notes/implemented/architecture/2026-07-31-code-runtime-python-fd3-protocol.zh.md @@ -10,7 +10,7 @@ CPython 代码运行时现在位于 `packages/experimental/code-runtime-python` `@deepseek-ai/dsh-experimental-code-runtime-python` 负责供 CPython code-runtime 提供方使用的 wire protocol。这样的提供方会在全新的 `python3 -I` 子进程中运行每个模型程序,并通过子进程 fd 3 桥接 binding 调用与完成值。Host 不能信任这条通道:模型代码可以完全访问 fd 3 并伪造任意帧,因此 host 必须把每个入站帧视为敌意输入,先校验并重建后才能读取。协议还必须承载无深度限制的 lossless JSON,因为 seam 的 `CodeJsonValue` 深度无界,而 `JSON.stringify` 和 `json.dumps` 都有递归深度限制。 -这个私有实验包同时包含协议与 runtime 实现:`PythonCodeRuntime`(插件的默认导出)、`python3 -I` 子进程路径与 Python 侧 JSON codec 都在 `@deepseek-ai/dsh-experimental-code-runtime-python` 中。协议建立在[可移植标识符 seam](2026-07-31-code-runtime-portable-identifier-seam.zh.md)之上。 +这个私有实验包同时包含协议与 runtime 实现:`PythonCodeRuntime`(插件的默认导出)、`python3 -I` 子进程路径与 Python 侧 JSON codec 都在 `@deepseek-ai/dsh-experimental-code-runtime-python` 中。协议建立在[可移植标识符 seam](../../archived/architecture/2026-07-31-code-runtime-portable-identifier-seam.md)之上。 ## Decision diff --git a/.agents/notes/implemented/architecture/2026-08-01-packaged-ripgrep-search.i18n.yaml b/.agents/notes/implemented/architecture/2026-08-01-packaged-ripgrep-search.i18n.yaml deleted file mode 100644 index 870bf8ec05..0000000000 --- a/.agents/notes/implemented/architecture/2026-08-01-packaged-ripgrep-search.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-08-01-packaged-ripgrep-search.md -2026-08-01-packaged-ripgrep-search.md: c401bc1e30df0c3443ad58b37f64523b1c10cb31 -2026-08-01-packaged-ripgrep-search.zh.md: 6a195e59f77aa73b9d0918461cef45360e617098 diff --git a/.agents/notes/implemented/architecture/2026-08-03-per-session-agent-presets.i18n.yaml b/.agents/notes/implemented/architecture/2026-08-03-per-session-agent-presets.i18n.yaml index 105e1367ce..56cdebf198 100644 --- a/.agents/notes/implemented/architecture/2026-08-03-per-session-agent-presets.i18n.yaml +++ b/.agents/notes/implemented/architecture/2026-08-03-per-session-agent-presets.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-08-03-per-session-agent-presets.md -2026-08-03-per-session-agent-presets.md: dabbb74855d884ac0185a1f9b3eb15ca4cd06bde -2026-08-03-per-session-agent-presets.zh.md: c863a62c6a3fc0121aad1821e5a9368963c669ab +2026-08-03-per-session-agent-presets.md: 14d568689a662e3e7d1fedf26c22aea6faddd56b +2026-08-03-per-session-agent-presets.zh.md: 9b296fa7a1c2b9164d9e7a0ad676929179a64fef diff --git a/.agents/notes/implemented/architecture/2026-08-03-per-session-agent-presets.md b/.agents/notes/implemented/architecture/2026-08-03-per-session-agent-presets.md index dabbb74855..14d568689a 100644 --- a/.agents/notes/implemented/architecture/2026-08-03-per-session-agent-presets.md +++ b/.agents/notes/implemented/architecture/2026-08-03-per-session-agent-presets.md @@ -55,7 +55,7 @@ Which preset an unnamed session gets is a user setting (`agent-presets.default`) **Authoring a preset is an RPC, and a privileged one.** A composition is a file, but "edit it on the filesystem" is not a browser affordance, so the roster gained `read`/`write`/`remove` beside `select`. Connection authenticates authoring, `list`, `select`, and the complete Host API with one browser session: a composition names the plugins a session runs, so reading one is reconnaissance and writing one is arbitrary capability, while choosing a preset grants nothing `session.create` with `agentPreset` did not already grant. The capability is not the preset's to grant either: the deployment's own default already carries `bash` and the filesystem tools, so any caller that may start a session at all can already run commands as this process. Containment is a property of the id (`[a-z0-9][a-z0-9-]*`), checked before it becomes a directory name rather than by inspecting the joined path afterwards; the text is parsed with the loader's own schema and dialect, so a save cannot leave a file no session could load. Shipped presets are refused for writes and deletes, because the deployment's copy is what a broken local preset is compared against — which also makes "duplicate, then edit" the authoring path rather than an afterthought. -**A service with a consumer outside the agent plane cannot move into a preset.** The aggressive split moved the `subagents` registry and its spawn/fork backends into the delegation group's entry-local realm, and `dsh web` then failed to boot: `SubagentRuntime` is a Host row that exposes the browser's cross-session Remote queries (`list`, `prompt`), so it waited forever for a service only sessions provided. A per-session copy is wrong twice over — a provider name registers once, so the second session would have collided anyway. The registry and every shared backend, including the [fixed Codex and Claude Code product providers](2026-08-10-product-subagent-providers-in-shared-host.md), are host-plane; a preset contributes whichever delegation TOOLS its agent should see, and those tools resolve the host registry. `workflows` stays entry-local because nothing outside an agent reads it. Grepping injectors is what should have caught this and did not: the search has to include the host packages, not just the agent-plane ones. +**A service with a consumer outside the agent plane cannot move into a preset.** The aggressive split moved the `subagents` registry and its spawn/fork backends into the delegation group's entry-local realm, and `dsh web` then failed to boot: `SubagentRuntime` is a Host row that exposes the browser's cross-session Remote queries (`list`, `prompt`), so it waited forever for a service only sessions provided. A per-session copy is wrong twice over — a provider name registers once, so the second session would have collided anyway. The registry and every shared backend, including the [fixed Codex and Claude Code product providers](../../archived/architecture/2026-08-10-product-subagent-providers-in-shared-host.md), are host-plane; a preset contributes whichever delegation TOOLS its agent should see, and those tools resolve the host registry. `workflows` stays entry-local because nothing outside an agent reads it. Grepping injectors is what should have caught this and did not: the search has to include the host packages, not just the agent-plane ones. **A real-composition test that disables a host row cannot audit that row.** The web composition test keeps API Gateway and the domain Remote services active while disabling the transport-only webserver, Connection, Session export, asset, and telemetry rows. With the browse directory picker substituted, its startup audit covers the host-plane service graph without binding a port. diff --git a/.agents/notes/implemented/architecture/2026-08-03-per-session-agent-presets.zh.md b/.agents/notes/implemented/architecture/2026-08-03-per-session-agent-presets.zh.md index c863a62c6a..9b296fa7a1 100644 --- a/.agents/notes/implemented/architecture/2026-08-03-per-session-agent-presets.zh.md +++ b/.agents/notes/implemented/architecture/2026-08-03-per-session-agent-presets.zh.md @@ -56,7 +56,7 @@ Status: implemented **创作 preset 是一次 RPC,而且是特权 RPC。** 组装是一个文件,但“去文件系统里改它”并不是浏览器能提供的操作,因此名单在 `select` 之外新增了 `read`/`write`/`remove`。Connection 用一个浏览器会话认证创作操作、`list`、`select` 与完整 Host API:组装指明一个会话所运行的插件,因此读取它是侦察,写入它是任意能力;选择 preset 则没有授予 `session.create` 携带 `agentPreset` 时尚未拥有的能力。这份能力也不由 preset 授予:部署自带的默认 preset 本就带着 `bash` 与文件系统工具,因此任何被允许开启会话的调用方,早已能以本进程的身份执行命令。约束是 id 自身的性质(`[a-z0-9][a-z0-9-]*`),在它成为目录名之前就检查,而不是事后再去审视拼接出的路径;文本使用 loader 自身的 schema 与方言解析,因此保存不会留下任何会话都无法加载的文件。随部署提供的 preset 拒绝写入与删除,因为部署自带的那一份正是用来对照有问题的本地 preset 的——这也让“先复制、再编辑”成为创作路径本身,而非事后补充。 -**在 agent 平面之外还有消费方的服务,不能搬进 preset。** 激进拆分把 `subagents` 注册表连同 spawn/fork 后端一起搬进了 delegation 组的 entry-local realm,于是 `dsh web` 直接起不来:`SubagentRuntime` 是 Host 行,它公开浏览器的跨会话 Remote 查询(`list`、`prompt`),因而永远等待一个只有会话才提供的服务。按会话各一份在两个层面上都是错的——provider 名只能注册一次,第二个会话本来也会相撞。注册表与所有共享后端,包括[固定的 Codex 与 Claude Code 产品 provider](2026-08-10-product-subagent-providers-in-shared-host.zh.md),都属于宿主平面;preset 只贡献自己的 agent 应看见的委派**工具**,这些工具解析宿主注册表。`workflows` 保持 entry-local,因为 agent 之外没有任何东西读它。本该拦下它的是「检索注入方」这一步,而它没拦住:检索必须覆盖宿主包,而不只是 agent 平面的包。 +**在 agent 平面之外还有消费方的服务,不能搬进 preset。** 激进拆分把 `subagents` 注册表连同 spawn/fork 后端一起搬进了 delegation 组的 entry-local realm,于是 `dsh web` 直接起不来:`SubagentRuntime` 是 Host 行,它公开浏览器的跨会话 Remote 查询(`list`、`prompt`),因而永远等待一个只有会话才提供的服务。按会话各一份在两个层面上都是错的——provider 名只能注册一次,第二个会话本来也会相撞。注册表与所有共享后端,包括[固定的 Codex 与 Claude Code 产品 provider](../../archived/architecture/2026-08-10-product-subagent-providers-in-shared-host.md),都属于宿主平面;preset 只贡献自己的 agent 应看见的委派**工具**,这些工具解析宿主注册表。`workflows` 保持 entry-local,因为 agent 之外没有任何东西读它。本该拦下它的是「检索注入方」这一步,而它没拦住:检索必须覆盖宿主包,而不只是 agent 平面的包。 **真实组装测试若禁用了某个宿主行,就无法审计该行。** web 组装测试保持 API Gateway 与各业务 Remote 服务启用,同时禁用只承载传输的 webserver、Connection、Session export、资源与遥测行。替换为 browse 目录选择器后,其启动审计无需绑定端口即可覆盖 Host 平面的服务图。 diff --git a/.agents/notes/implemented/architecture/2026-08-03-pi-ai-declared-provider-catalog.i18n.yaml b/.agents/notes/implemented/architecture/2026-08-03-pi-ai-declared-provider-catalog.i18n.yaml deleted file mode 100644 index 768d1bbee1..0000000000 --- a/.agents/notes/implemented/architecture/2026-08-03-pi-ai-declared-provider-catalog.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-08-03-pi-ai-declared-provider-catalog.md -2026-08-03-pi-ai-declared-provider-catalog.md: 571986a94c8547538b44b11510609e0000923537 -2026-08-03-pi-ai-declared-provider-catalog.zh.md: d6f616f48d71378b90238b6087dfa48700e4d911 diff --git a/.agents/notes/implemented/architecture/2026-08-04-configuration-source-ownership.i18n.yaml b/.agents/notes/implemented/architecture/2026-08-04-configuration-source-ownership.i18n.yaml index d8fbaea3d4..25b28406c4 100644 --- a/.agents/notes/implemented/architecture/2026-08-04-configuration-source-ownership.i18n.yaml +++ b/.agents/notes/implemented/architecture/2026-08-04-configuration-source-ownership.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-08-04-configuration-source-ownership.md -2026-08-04-configuration-source-ownership.md: 29dd5fd623d38532502af8c4e4afd972236fc139 -2026-08-04-configuration-source-ownership.zh.md: e5cbf70826b9314daccb7a62e5da4603e38158de +2026-08-04-configuration-source-ownership.md: 6dea1f08a9f2a0319f894a504082ff70bbe1118f +2026-08-04-configuration-source-ownership.zh.md: 1ccf2c266c3e52f2f10d3bceb3b1505ae6266b15 diff --git a/.agents/notes/implemented/architecture/2026-08-04-configuration-source-ownership.md b/.agents/notes/implemented/architecture/2026-08-04-configuration-source-ownership.md index 29dd5fd623..6dea1f08a9 100644 --- a/.agents/notes/implemented/architecture/2026-08-04-configuration-source-ownership.md +++ b/.agents/notes/implemented/architecture/2026-08-04-configuration-source-ownership.md @@ -6,7 +6,7 @@ English | [中文](2026-08-04-configuration-source-ownership.zh.md) ## Problem -`$DSH_HOME/.env` had just [become an ordinary environment layer](2026-08-04-credentials-yaml-and-user-environment-layer.md), which left the harness resolving user-facing values from a flattened `process.env` that could no longer say where a value came from. Three consequences followed. +`$DSH_HOME/.env` had just [become an ordinary environment layer](../../archived/architecture/2026-08-04-credentials-yaml-and-user-environment-layer.md), which left the harness resolving user-facing values from a flattened `process.env` that could no longer say where a value came from. Three consequences followed. A key stored through the web page stayed shadowed by an older key in the user's own `.env`, because the credential provider compared "the environment" against its file and the environment now included that file. The migration dead end the split was supposed to remove had simply moved. @@ -27,7 +27,7 @@ explicit for this run per-operation override, CLI argument > defaults schema default, provider public default ``` -Settings sit above composition because that is what the [settings seam](2026-07-28-user-settings-seam.md) does: a plugin registers its cordis entry config as the `base` layer and the user's section layers over it, and the seam cannot tell a value a profile's bundles set from one its user patch layer or a `--patch` overlay set — all arrive as entry config. The product CLI has no lever above stored settings, so a deployment that must pin a field against a user's settings ships its own bin or loader tree, or mounts no settings provider at all. Composition still outranks the environment, so a stale `DEEPSEEK_BASE_URL` in a shell cannot rewrite a configured endpoint. +Settings sit above composition because that is what the [settings seam](../../archived/architecture/2026-07-28-user-settings-seam.md) does: a plugin registers its cordis entry config as the `base` layer and the user's section layers over it, and the seam cannot tell a value a profile's bundles set from one its user patch layer or a `--patch` overlay set — all arrive as entry config. The product CLI has no lever above stored settings, so a deployment that must pin a field against a user's settings ships its own bin or loader tree, or mounts no settings provider at all. Composition still outranks the environment, so a stale `DEEPSEEK_BASE_URL` in a shell cannot rewrite a configured endpoint. **Credentials keep a narrower, separate ordering**, and this note does not unify them: diff --git a/.agents/notes/implemented/architecture/2026-08-04-configuration-source-ownership.zh.md b/.agents/notes/implemented/architecture/2026-08-04-configuration-source-ownership.zh.md index e5cbf70826..1ccf2c266c 100644 --- a/.agents/notes/implemented/architecture/2026-08-04-configuration-source-ownership.zh.md +++ b/.agents/notes/implemented/architecture/2026-08-04-configuration-source-ownership.zh.md @@ -6,7 +6,7 @@ Status: implemented ## Problem -`$DSH_HOME/.env` 刚刚[变成普通环境层](2026-08-04-credentials-yaml-and-user-environment-layer.zh.md),这使得 harness 解析面向用户的值时面对的是一个压平的 `process.env`,再也说不清某个值来自哪里。由此产生三个后果。 +`$DSH_HOME/.env` 刚刚[变成普通环境层](../../archived/architecture/2026-08-04-credentials-yaml-and-user-environment-layer.md),这使得 harness 解析面向用户的值时面对的是一个压平的 `process.env`,再也说不清某个值来自哪里。由此产生三个后果。 通过 Web 页面存下的密钥仍然被用户自己 `.env` 里更旧的密钥遮蔽,因为凭据提供方是拿「环境」与自己的文件比较,而现在环境包含了那个文件。这次拆分本该消除的迁移死路,只是换了个位置。 @@ -28,7 +28,7 @@ explicit for this run per-operation override, CLI argument ``` -settings 在 composition 之上,因为 [settings seam](2026-07-28-user-settings-seam.zh.md) 就是这么做的:插件把自己的 cordis entry config 注册为 `base` 层,用户 section 叠加其上,而 seam 无法区分某个值是 profile 的 bundle 设的,还是它的用户 patch 层或某个 `--patch` overlay 设的——它们都以 entry config 的形式抵达。产品 CLI(命令行界面)没有高于已存 settings 的手段,因此需要把某字段钉死、不被用户已存 settings 覆盖的部署方,应自带 bin 或 loader 配置树,或者干脆不挂载 settings 提供方。composition 仍然高于环境,所以 shell 里陈旧的 `DEEPSEEK_BASE_URL` 无法改写已配置的 endpoint。 +settings 在 composition 之上,因为 [settings seam](../../archived/architecture/2026-07-28-user-settings-seam.md) 就是这么做的:插件把自己的 cordis entry config 注册为 `base` 层,用户 section 叠加其上,而 seam 无法区分某个值是 profile 的 bundle 设的,还是它的用户 patch 层或某个 `--patch` overlay 设的——它们都以 entry config 的形式抵达。产品 CLI(命令行界面)没有高于已存 settings 的手段,因此需要把某字段钉死、不被用户已存 settings 覆盖的部署方,应自带 bin 或 loader 配置树,或者干脆不挂载 settings 提供方。composition 仍然高于环境,所以 shell 里陈旧的 `DEEPSEEK_BASE_URL` 无法改写已配置的 endpoint。 **凭据保留一条更窄的独立顺序**,本 Note 不把它并入上表: diff --git a/.agents/notes/implemented/architecture/2026-08-04-declaring-a-provider-from-the-models-page.i18n.yaml b/.agents/notes/implemented/architecture/2026-08-04-declaring-a-provider-from-the-models-page.i18n.yaml deleted file mode 100644 index a3fea8ebb1..0000000000 --- a/.agents/notes/implemented/architecture/2026-08-04-declaring-a-provider-from-the-models-page.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-08-04-declaring-a-provider-from-the-models-page.md -2026-08-04-declaring-a-provider-from-the-models-page.md: ad4c6695b2caabd7270694bdbb6e5b3d24c50081 -2026-08-04-declaring-a-provider-from-the-models-page.zh.md: 2ca26e4b601b51b34598b8ce8bb59f31f83b58a2 diff --git a/.agents/notes/implemented/architecture/2026-08-04-draft-provider-endpoint-interrogation.i18n.yaml b/.agents/notes/implemented/architecture/2026-08-04-draft-provider-endpoint-interrogation.i18n.yaml index 82f9d4ae6b..14b9ebbac9 100644 --- a/.agents/notes/implemented/architecture/2026-08-04-draft-provider-endpoint-interrogation.i18n.yaml +++ b/.agents/notes/implemented/architecture/2026-08-04-draft-provider-endpoint-interrogation.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-08-04-draft-provider-endpoint-interrogation.md -2026-08-04-draft-provider-endpoint-interrogation.md: a6d8d32f12711744cb1380d2ab2767dcd3dd63f6 -2026-08-04-draft-provider-endpoint-interrogation.zh.md: e162ddb30706e871a2a42b5bbe7e09a451296289 +2026-08-04-draft-provider-endpoint-interrogation.md: 462b8ba3e771018126aa6483a8cd72999361144d +2026-08-04-draft-provider-endpoint-interrogation.zh.md: c7612513b95bc3dc9736b9bfaf70cca26a776181 diff --git a/.agents/notes/implemented/architecture/2026-08-04-draft-provider-endpoint-interrogation.md b/.agents/notes/implemented/architecture/2026-08-04-draft-provider-endpoint-interrogation.md index a6d8d32f12..462b8ba3e7 100644 --- a/.agents/notes/implemented/architecture/2026-08-04-draft-provider-endpoint-interrogation.md +++ b/.agents/notes/implemented/architecture/2026-08-04-draft-provider-endpoint-interrogation.md @@ -6,7 +6,7 @@ English | [中文](2026-08-04-draft-provider-endpoint-interrogation.zh.md) ## Problem -Once a pi-ai route became [a declaration rather than a catalog lookup](2026-08-03-pi-ai-declared-provider-catalog.md), a person adding a compatible gateway had to know its model ids before they could configure it. The adapter no longer constrains them to an installed catalog, which is the point, but it also means nothing tells the user what the endpoint actually serves — and OpenAI- and Anthropic-compatible endpoints publish that list through protocol-specific model-listing routes. +Once a pi-ai route became [a declaration rather than a catalog lookup](../../archived/architecture/2026-08-03-pi-ai-declared-provider-catalog.md), a person adding a compatible gateway had to know its model ids before they could configure it. The adapter no longer constrains them to an installed catalog, which is the point, but it also means nothing tells the user what the endpoint actually serves — and OpenAI- and Anthropic-compatible endpoints publish that list through protocol-specific model-listing routes. The obvious answer, a dynamic runtime catalog refreshed in the background, was rejected with the layer below it: it makes a route's model list external mutable state needing a cache, an invalidation story, and an offline path, while the product need is narrower. What is needed is a *question asked once*, whose answer the user adopts into `settings.yaml` — so `settings.yaml` remains the only thing deciding what a route serves. @@ -21,7 +21,7 @@ Interrogation is keyed by **settings namespace**, not by provider route: - `LlmDiscoveredModel` makes every field but `id` optional, because most listings disclose an id and nothing else. The reply is candidates, not a catalog: a surface adopting one still owes the capacities the adapter requires. - `llm.discoverModels` carries the same draft over the wire. Its `apiKey` is the third and last payload on which a secret may ride, alongside `settings.update`/`mutate` and `credentials.set`, and it is never stored or echoed back. It does ride the client's outgoing envelope like every other secret-bearing payload, where a `subscribeEnvelopes()` observer can see it; redacting that tap is a configuration-plane-wide change, not this method's to make alone. Connection authenticates the method with the complete Host API: it makes the host issue a GET to a caller-chosen URL and reports the outcome, which an anonymous caller must not receive. Every refusal folds into `model-discovery-failed`, whose message is the adapter's own text and whose details name the endpoint asked but never the credential offered. -`dsh-llm-pi-ai` applies the protocol-specific listing routes, authentication, URL normalization, response formats, and metadata rules recorded by [protocol-specific model listing discovery](2026-09-02-protocol-specific-model-listing-discovery.md). Profile resolution rejects names and values Fetch cannot represent, so a malformed deployment header is reported as a configuration error before interrogation. Configured profile headers are installed first; fixed protocol headers, a typed-or-stored protocol credential, and Harness attribution then win their case-insensitive collisions. A protocol without a documented listing contract answers `DISCOVERY_UNSUPPORTED`, so the surface falls back to hand-entry rather than reporting guessed response fields as an empty provider. `baseURL` is treated as a prefix rather than a URL to resolve against, so deployment path segments remain intact. The reply is read under a four-megabyte ceiling enforced on the bytes actually received — the endpoint is a URL the user typed, so a declared `content-length` is checked first as a courtesy but never trusted as the bound, matching `dsh-web-fetch`'s two-stage pattern for its own caller-supplied URLs. +`dsh-llm-pi-ai` applies the protocol-specific listing routes, authentication, URL normalization, response formats, and metadata rules documented in the [`dsh-llm-pi-ai` README](../../../../packages/llm/llm-pi-ai/README.md). Profile resolution rejects names and values Fetch cannot represent, so a malformed deployment header is reported as a configuration error before interrogation. Configured profile headers are installed first; fixed protocol headers, a typed-or-stored protocol credential, and Harness attribution then win their case-insensitive collisions. A protocol without a documented listing contract answers `DISCOVERY_UNSUPPORTED`, so the surface falls back to hand-entry rather than reporting guessed response fields as an empty provider. `baseURL` is treated as a prefix rather than a URL to resolve against, so deployment path segments remain intact. The reply is read under a four-megabyte ceiling enforced on the bytes actually received — the endpoint is a URL the user typed, so a declared `content-length` is checked first as a courtesy but never trusted as the bound, matching `dsh-web-fetch`'s two-stage pattern for its own caller-supplied URLs. ### Why not pi-ai's own refresh machinery @@ -35,7 +35,7 @@ pi-ai supplies `createProvider({ fetchModels })` plus `Models.refresh()` and a ` **Have the host read the entire stored profile instead of accepting a draft.** No secret would cross the wire for an already-configured provider. But adding a provider would then require saving an unusable configuration first, and a form whose endpoint was edited but not yet saved would silently interrogate the old one. The draft remains authoritative for the endpoint and protocol. The narrow Host-side exceptions are the stored credential, which is write-only, and profile headers, which remain deployment configuration rather than Models-page fields. -**Interrogate every pi-ai protocol.** Coverage based on convenient response similarities would be arbitrary and would make a wrong guess indistinguishable from a provider with no models. Anthropic is included only through its documented native listing contract, as the [protocol-specific extension](2026-09-02-protocol-specific-model-listing-discovery.md) records; Google's field set and Azure's request contract differ, while Codex uses OAuth. An unsupported protocol sends the user to hand-entry, which remains the documented fallback. +**Interrogate every pi-ai protocol.** Coverage based on convenient response similarities would be arbitrary and would make a wrong guess indistinguishable from a provider with no models. Anthropic is included only through its documented native listing contract, as the [`dsh-llm-pi-ai` README](../../../../packages/llm/llm-pi-ai/README.md) documents; Google's field set and Azure's request contract differ, while Codex uses OAuth. An unsupported protocol sends the user to hand-entry, which remains the documented fallback. **Buffer the reply with `response.text()` and check its length.** Simpler, but the bound would arrive after the bytes did, and the endpoint is whatever URL the user typed. diff --git a/.agents/notes/implemented/architecture/2026-08-04-draft-provider-endpoint-interrogation.zh.md b/.agents/notes/implemented/architecture/2026-08-04-draft-provider-endpoint-interrogation.zh.md index e162ddb307..c7612513b9 100644 --- a/.agents/notes/implemented/architecture/2026-08-04-draft-provider-endpoint-interrogation.zh.md +++ b/.agents/notes/implemented/architecture/2026-08-04-draft-provider-endpoint-interrogation.zh.md @@ -6,7 +6,7 @@ Status: implemented ## Problem -当 pi-ai 路由变成[一份声明而非 catalog 查表](2026-08-03-pi-ai-declared-provider-catalog.zh.md)之后,要接入一个兼容网关的人,必须先知道它的模型 id 才能完成配置。适配器不再把人限制在已安装 catalog 里——这正是那次改动的目的——但也意味着没有任何东西告诉用户该端点究竟服务什么,而 OpenAI 与 Anthropic 兼容端点会通过各自协议的模型列表路由公布这份信息。 +当 pi-ai 路由变成[一份声明而非 catalog 查表](../../archived/architecture/2026-08-03-pi-ai-declared-provider-catalog.md)之后,要接入一个兼容网关的人,必须先知道它的模型 id 才能完成配置。适配器不再把人限制在已安装 catalog 里——这正是那次改动的目的——但也意味着没有任何东西告诉用户该端点究竟服务什么,而 OpenAI 与 Anthropic 兼容端点会通过各自协议的模型列表路由公布这份信息。 显而易见的答案——后台刷新的运行时动态 catalog——已随下层一并被拒绝:它会把路由的模型列表变成需要缓存、失效语义与离线路径的外部可变状态,而产品需求要窄得多。真正需要的是*一次性询问*,其答案由用户采纳进 `settings.yaml`,从而让 `settings.yaml` 始终是决定路由服务内容的唯一真源。 @@ -21,7 +21,7 @@ Status: implemented - `LlmDiscoveredModel` 除 `id` 外每个字段都可选,因为大多数列表只公布 id。回复是候选而非 catalog:采纳其中一条的界面仍要补上适配器所需的容量。 - `llm.discoverModels` 把同一份草稿送过协议层。它的 `apiKey` 是可承载机密的第三个、也是最后一个载荷(另两个是 `settings.update`/`mutate` 与 `credentials.set`),且绝不被存储或回显。它确实会像其他承载机密的载荷一样随客户端外发信封同行,`subscribeEnvelopes()` 观察者看得到;把那个抽头脱敏是整个配置面的改动,不该由这一个方法独自决定。Connection 用与完整 Host API 相同的会话认证该方法:它让宿主向调用方选定的 URL 发起 GET 并回报结果,匿名调用者绝不能获得这类探测能力。每一种拒绝都折叠为 `model-discovery-failed`,其消息是适配器自己的文本,details 点名被询问的端点,绝不点名所提供的凭据。 -`dsh-llm-pi-ai` 会应用[协议特定模型列表发现](2026-09-02-protocol-specific-model-listing-discovery.zh.md)记录的列表路由、认证、URL 归一化、响应格式与元数据规则。Profile 解析会拒绝 Fetch 无法表示的名称与值,因此格式错误的部署 header 会在询问前以配置错误报告。已配置的 profile headers 最先装入;固定协议 headers、键入或已存的协议凭据以及 Harness attribution 随后分别以大小写不敏感方式赢得相应冲突。没有文档化列表约定的协议会以 `DISCOVERY_UNSUPPORTED` 回答,让界面回退到手工填写,而不是把猜错的响应字段报成一个空提供方。`baseURL` 按前缀而非待解析 URL 处理,因此部署路径段会保持不变。回复在四兆字节上限下读取,且上限落在实际收到的字节上——端点是用户自己填的 URL,因此会先看声明的 `content-length` 作为善意提示,但绝不把它当作边界;这与 `dsh-web-fetch` 面对自己的调用方提供 URL 时所用的两段式模式一致。 +`dsh-llm-pi-ai` 会应用[`dsh-llm-pi-ai` README](../../../../packages/llm/llm-pi-ai/README.zh.md)记录的列表路由、认证、URL 归一化、响应格式与元数据规则。Profile 解析会拒绝 Fetch 无法表示的名称与值,因此格式错误的部署 header 会在询问前以配置错误报告。已配置的 profile headers 最先装入;固定协议 headers、键入或已存的协议凭据以及 Harness attribution 随后分别以大小写不敏感方式赢得相应冲突。没有文档化列表约定的协议会以 `DISCOVERY_UNSUPPORTED` 回答,让界面回退到手工填写,而不是把猜错的响应字段报成一个空提供方。`baseURL` 按前缀而非待解析 URL 处理,因此部署路径段会保持不变。回复在四兆字节上限下读取,且上限落在实际收到的字节上——端点是用户自己填的 URL,因此会先看声明的 `content-length` 作为善意提示,但绝不把它当作边界;这与 `dsh-web-fetch` 面对自己的调用方提供 URL 时所用的两段式模式一致。 ### 为什么不用 pi-ai 自己的 refresh 机制 @@ -35,7 +35,7 @@ pi-ai 提供了 `createProvider({ fetchModels })` 加上 `Models.refresh()` 与 **让 Host 读取整个已存 profile,而不是接受草稿。** 对已配置好的提供方来说,不会有机密跨越协议层。但这样一来新增提供方就必须先保存一份不可用的配置,而端点已改却尚未保存的表单会静默地去询问旧地址。草稿仍是端点和协议的权威来源。Host 侧的狭窄例外是只写的已存凭据,以及仍属部署配置、而非 Models 页面字段的 profile headers。 -**询问每一种 pi-ai 协议。** 根据便利的响应相似性选择覆盖范围会显得武断,也会让猜错的响应与「提供方没有模型」无法区分。Anthropic 仅通过其文档化原生列表约定纳入支持,具体由[协议特定扩展](2026-09-02-protocol-specific-model-listing-discovery.zh.md)记录;Google 的字段集合与 Azure 的请求约定不同,Codex 则使用 OAuth。不支持的协议会把用户送去手工填写,这仍是既定回退路径。 +**询问每一种 pi-ai 协议。** 根据便利的响应相似性选择覆盖范围会显得武断,也会让猜错的响应与「提供方没有模型」无法区分。Anthropic 仅通过其文档化原生列表约定纳入支持,具体由[`dsh-llm-pi-ai` README](../../../../packages/llm/llm-pi-ai/README.zh.md)记录;Google 的字段集合与 Azure 的请求约定不同,Codex 则使用 OAuth。不支持的协议会把用户送去手工填写,这仍是既定回退路径。 **用 `response.text()` 缓冲整个回复再判断长度。** 更简单,但上限会在字节已经到达之后才生效,而端点是用户随手填的任意 URL。 diff --git a/.agents/notes/implemented/architecture/2026-08-05-large-session-jsonl-restore-pipeline.i18n.yaml b/.agents/notes/implemented/architecture/2026-08-05-large-session-jsonl-restore-pipeline.i18n.yaml deleted file mode 100644 index 3d54f62991..0000000000 --- a/.agents/notes/implemented/architecture/2026-08-05-large-session-jsonl-restore-pipeline.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-08-05-large-session-jsonl-restore-pipeline.md -2026-08-05-large-session-jsonl-restore-pipeline.md: e87777cc407e50a0e4808b77c3a7d554659d62e7 -2026-08-05-large-session-jsonl-restore-pipeline.zh.md: 32762bd19914423ef38c6472f0a8087e3e7e45fa diff --git a/.agents/notes/implemented/architecture/2026-08-05-profile-plugin-bundles.i18n.yaml b/.agents/notes/implemented/architecture/2026-08-05-profile-plugin-bundles.i18n.yaml index a70ebb7db2..f1d03b2fae 100644 --- a/.agents/notes/implemented/architecture/2026-08-05-profile-plugin-bundles.i18n.yaml +++ b/.agents/notes/implemented/architecture/2026-08-05-profile-plugin-bundles.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-08-05-profile-plugin-bundles.md -2026-08-05-profile-plugin-bundles.md: 493568691dac3a54185f11cbbf8162bf6b6355b1 -2026-08-05-profile-plugin-bundles.zh.md: adfa95b6f8d0fdd6fe3c0ebbc7a62d935ebb1987 +2026-08-05-profile-plugin-bundles.md: ccfa3306fd88b4f291085cae2bd02305b2c11fc6 +2026-08-05-profile-plugin-bundles.zh.md: e15ad15978ab57dcada8ecc877e0036cfde6b21e diff --git a/.agents/notes/implemented/architecture/2026-08-05-profile-plugin-bundles.md b/.agents/notes/implemented/architecture/2026-08-05-profile-plugin-bundles.md index 493568691d..ccfa3306fd 100644 --- a/.agents/notes/implemented/architecture/2026-08-05-profile-plugin-bundles.md +++ b/.agents/notes/implemented/architecture/2026-08-05-profile-plugin-bundles.md @@ -10,13 +10,13 @@ The `dsh` launcher hardcoded its compositions: `base.cordis.yml` + `web.cordis.y ## Decision -Everything becomes a **profile**: a directory `$DSH_HOME/profiles/` with a `package.json` (pnpm-managed out-of-tree plugin `dependencies` plus the profile manifest `dsh.profile` with its ordered `bundles` layer list) and a user `cordis.patch.yml`. A **bundle** is an npm package declaring `"dsh": { "bundle": { "patch": "./cordis.patch.yml" } }`; the two manifest kinds live under distinct `dsh.profile` / `dsh.bundle` keys so a package.json states which role it plays. The tree composes over an empty root by applying each bundle's patch in `dsh.profile.bundles` order, then the user layer and `--patch` overlays — one `applyEntryPatches` call shared by boot and `--dump-config`. App invocation values later moved from launcher-derived patches to startup services in the [app-owned command-line decision](2026-08-06-app-owned-command-line.md). +Everything becomes a **profile**: a directory `$DSH_HOME/profiles/` with a `package.json` (pnpm-managed out-of-tree plugin `dependencies` plus the profile manifest `dsh.profile` with its ordered `bundles` layer list) and a user `cordis.patch.yml`. A **bundle** is an npm package declaring `"dsh": { "bundle": { "patch": "./cordis.patch.yml" } }`; the two manifest kinds live under distinct `dsh.profile` / `dsh.bundle` keys so a package.json states which role it plays. The tree composes over an empty root by applying each bundle's patch in `dsh.profile.bundles` order, then the user layer and `--patch` overlays — one `applyEntryPatches` call shared by boot and `--dump-config`. App invocation values later moved from launcher-derived patches to startup services in the [app-owned command-line decision](../../archived/architecture/2026-08-06-app-owned-command-line.md). -The default Profile templates use `@deepseek-ai/dsh-base` as the shared core for `web`, `headless`, `sdk`, and `acp`, with one mode bundle above it. The [standalone `sdk-minimal` profile](2026-08-24-standalone-sdk-minimal-profile.md) instead lists one bundle that owns its complete explicit tree. Generic `dsh --profile ` hands its remaining arguments to that profile's command-line startup row: Web owns its flag family, headless owns its task positional, and the protocol profiles accept no app options. Patch overlays use launcher-owned `--patch`. `dsh plugin --profile ` is a thin pnpm forwarder that initializes the profile and reconciles `dsh.profile.bundles` with installed bundle declarations; a package without a bundle declaration remains a plain dependency. [Headless as a direct core entry point](2026-08-09-headless-direct-core-entry-point.md) owns the headless composition contract. +The default Profile templates use `@deepseek-ai/dsh-base` as the shared core for `web`, `headless`, `sdk`, and `acp`, with one mode bundle above it. The [standalone `sdk-minimal` profile](../../../../packages/bundle/sdk-minimal/README.md) instead lists one bundle that owns its complete explicit tree. Generic `dsh --profile ` hands its remaining arguments to that profile's command-line startup row: Web owns its flag family, headless owns its task positional, and the protocol profiles accept no app options. Patch overlays use launcher-owned `--patch`. `dsh plugin --profile ` is a thin pnpm forwarder that initializes the profile and reconciles `dsh.profile.bundles` with installed bundle declarations; a package without a bundle declaration remains a plain dependency. [Headless as a direct core entry point](../../archived/architecture/2026-08-09-headless-direct-core-entry-point.md) owns the headless composition contract. Resolution is two-anchored by construction: `dsh.profile.bundles` names resolve from the dsh installation first, then the profile directory — so in-box bundles always come from the same installation as the running `dsh` and pnpm never manages them — while bare plugin names in patch rows resolve through the profile directory's Node parent-walk into the maintained flat fallback `$DSH_HOME/profiles/node_modules` (one symlink per package the installation's app and bundles depend on, healed on every launch). -Two supporting refactors: the webserver's built-in static dist serving became the single-owner **fallback seat** (`registerFallback`/`applyIndexTaps`), with the SPA server extracted to `@deepseek-ai/dsh-host-frontend-static` so the web bundle owns its dist as composition, not launcher code; and the personal-overlay machinery of the [dsh CLI personal-config decision](../feature/2026-07-20-dsh-cli-personal-config.md) (`loadPersonalPatches`, `$DSH_HOME/config.yaml`) was retargeted to the per-profile and home-level `cordis.patch.yml` layers (`loadOptionalPatches`, `watchUserPatches` taking a filename), superseding that note's entry modes and file location while keeping its Harness-home root, patch semantics, and fail-loud parsing. +Two supporting refactors: the webserver's built-in static dist serving became the single-owner **fallback seat** (`registerFallback`/`applyIndexTaps`), with the SPA server extracted to `@deepseek-ai/dsh-host-frontend-static` so the web bundle owns its dist as composition, not launcher code; and the personal-overlay machinery of the [dsh CLI personal-config decision](../../archived/feature/2026-07-20-dsh-cli-personal-config.md) (`loadPersonalPatches`, `$DSH_HOME/config.yaml`) was retargeted to the per-profile and home-level `cordis.patch.yml` layers (`loadOptionalPatches`, `watchUserPatches` taking a filename), superseding that note's entry modes and file location while keeping its Harness-home root, patch semantics, and fail-loud parsing. ## Alternatives considered diff --git a/.agents/notes/implemented/architecture/2026-08-05-profile-plugin-bundles.zh.md b/.agents/notes/implemented/architecture/2026-08-05-profile-plugin-bundles.zh.md index adfa95b6f8..e15ad15978 100644 --- a/.agents/notes/implemented/architecture/2026-08-05-profile-plugin-bundles.zh.md +++ b/.agents/notes/implemented/architecture/2026-08-05-profile-plugin-bundles.zh.md @@ -10,13 +10,13 @@ Status: implemented ## Decision -一切都变成 **profile**:即目录 `$DSH_HOME/profiles/`,其中包含一个 `package.json`(pnpm 管理的树外插件 `dependencies`,加上 profile manifest `dsh.profile` 及其有序的 `bundles` 层列表)和一份用户 `cordis.patch.yml`。**组合包**(bundle)是声明了 `"dsh": { "bundle": { "patch": "./cordis.patch.yml" } }` 的 npm 包;两种 manifest 分别位于互不相同的 `dsh.profile` / `dsh.bundle` 键下,因此一份 package.json 能说明自己扮演哪种角色。配置树在空的根之上组合:按 `dsh.profile.bundles` 顺序应用每个组合包的 patch,然后是用户层与 `--patch` overlay——启动与 `--dump-config` 共享同一条 `applyEntryPatches` 路径。随后,[应用持有命令行的决策](2026-08-06-app-owned-command-line.zh.md)又把调用期取值从启动器派生的 patch 迁移到了启动服务。 +一切都变成 **profile**:即目录 `$DSH_HOME/profiles/`,其中包含一个 `package.json`(pnpm 管理的树外插件 `dependencies`,加上 profile manifest `dsh.profile` 及其有序的 `bundles` 层列表)和一份用户 `cordis.patch.yml`。**组合包**(bundle)是声明了 `"dsh": { "bundle": { "patch": "./cordis.patch.yml" } }` 的 npm 包;两种 manifest 分别位于互不相同的 `dsh.profile` / `dsh.bundle` 键下,因此一份 package.json 能说明自己扮演哪种角色。配置树在空的根之上组合:按 `dsh.profile.bundles` 顺序应用每个组合包的 patch,然后是用户层与 `--patch` overlay——启动与 `--dump-config` 共享同一条 `applyEntryPatches` 路径。随后,[应用持有命令行的决策](../../archived/architecture/2026-08-06-app-owned-command-line.md)又把调用期取值从启动器派生的 patch 迁移到了启动服务。 -默认 Profile 模板为 `web`、`headless`、`sdk` 与 `acp` 使用 `@deepseek-ai/dsh-base` 作为共享核心,并在其上叠加一个模式组合包。[独立 `sdk-minimal` profile](2026-08-24-standalone-sdk-minimal-profile.zh.md)则只列出一个拥有完整显式配置树的组合包。通用的 `dsh --profile ` 把剩余参数交给该 profile 的命令行启动行:Web 持有自己的 flag 家族,headless 持有任务位置参数,协议 profile 不接受应用选项。patch overlay 使用启动器持有的 `--patch`。`dsh plugin --profile ` 是一层薄薄的 pnpm 转发器,负责初始化 profile,并依据已安装包的组合包声明调和 `dsh.profile.bundles`;没有组合包声明的包保持为普通依赖。[Headless 作为直接 core 入口](2026-08-09-headless-direct-core-entry-point.zh.md)负责 headless 组合约定。 +默认 Profile 模板为 `web`、`headless`、`sdk` 与 `acp` 使用 `@deepseek-ai/dsh-base` 作为共享核心,并在其上叠加一个模式组合包。[独立 `sdk-minimal` profile](../../../../packages/bundle/sdk-minimal/README.zh.md)则只列出一个拥有完整显式配置树的组合包。通用的 `dsh --profile ` 把剩余参数交给该 profile 的命令行启动行:Web 持有自己的 flag 家族,headless 持有任务位置参数,协议 profile 不接受应用选项。patch overlay 使用启动器持有的 `--patch`。`dsh plugin --profile ` 是一层薄薄的 pnpm 转发器,负责初始化 profile,并依据已安装包的组合包声明调和 `dsh.profile.bundles`;没有组合包声明的包保持为普通依赖。[Headless 作为直接 core 入口](../../archived/architecture/2026-08-09-headless-direct-core-entry-point.md)负责 headless 组合约定。 解析在构造上就是双锚点的:`dsh.profile.bundles` 中的名称先从 dsh 安装目录解析,再从 profile 目录解析——因此内置组合包始终来自与运行中 `dsh` 相同的安装,pnpm 从不管理它们——而 patch 行中的裸插件名称经 profile 目录的 Node 父目录逐级查找,落到受维护的扁平回退目录 `$DSH_HOME/profiles/node_modules`(安装目录的应用与各组合包所依赖的每个包各一个符号链接,每次启动时修复)。 -两项配套重构:webserver 内置的静态 dist 服务改为单一所有者的**回退席位**(`registerFallback`/`applyIndexTaps`),SPA 服务器提取到 `@deepseek-ai/dsh-host-frontend-static`,使 web 组合包以组合的方式持有自己的 dist,而不是靠启动器代码;[dsh CLI 个人配置决策](../feature/2026-07-20-dsh-cli-personal-config.zh.md)的个人 overlay 机制(`loadPersonalPatches`、`$DSH_HOME/config.yaml`)改为面向逐 profile 与 home 级的 `cordis.patch.yml` 层(`loadOptionalPatches`、接受文件名的 `watchUserPatches`),取代该笔记的各入口模式与文件位置,同时保留其 Harness home 根目录、patch 语义与响亮失败的解析。 +两项配套重构:webserver 内置的静态 dist 服务改为单一所有者的**回退席位**(`registerFallback`/`applyIndexTaps`),SPA 服务器提取到 `@deepseek-ai/dsh-host-frontend-static`,使 web 组合包以组合的方式持有自己的 dist,而不是靠启动器代码;[dsh CLI 个人配置决策](../../archived/feature/2026-07-20-dsh-cli-personal-config.md)的个人 overlay 机制(`loadPersonalPatches`、`$DSH_HOME/config.yaml`)改为面向逐 profile 与 home 级的 `cordis.patch.yml` 层(`loadOptionalPatches`、接受文件名的 `watchUserPatches`),取代该笔记的各入口模式与文件位置,同时保留其 Harness home 根目录、patch 语义与响亮失败的解析。 ## Alternatives considered diff --git a/.agents/notes/implemented/architecture/2026-08-05-session-preparation.i18n.yaml b/.agents/notes/implemented/architecture/2026-08-05-session-preparation.i18n.yaml deleted file mode 100644 index e96c1b2e6b..0000000000 --- a/.agents/notes/implemented/architecture/2026-08-05-session-preparation.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-08-05-session-preparation.md -2026-08-05-session-preparation.md: 040c9f788173a7cedd91be33cbe7ced3ca758a06 -2026-08-05-session-preparation.zh.md: 44b609d488c6f8bb406370f9097eb2a085f7cc2b diff --git a/.agents/notes/implemented/architecture/2026-08-05-slot-declaration-injection.i18n.yaml b/.agents/notes/implemented/architecture/2026-08-05-slot-declaration-injection.i18n.yaml deleted file mode 100644 index 48cb803888..0000000000 --- a/.agents/notes/implemented/architecture/2026-08-05-slot-declaration-injection.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-08-05-slot-declaration-injection.md -2026-08-05-slot-declaration-injection.md: 92f08efec288cc8844c664c2d6c2bf5e1f5933d2 -2026-08-05-slot-declaration-injection.zh.md: eed6873bb4f36b0ba4a5bf6a45681c555d4993fa diff --git a/.agents/notes/implemented/architecture/2026-08-06-agent-event-payload-objects.i18n.yaml b/.agents/notes/implemented/architecture/2026-08-06-agent-event-payload-objects.i18n.yaml deleted file mode 100644 index bd036ba86e..0000000000 --- a/.agents/notes/implemented/architecture/2026-08-06-agent-event-payload-objects.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-08-06-agent-event-payload-objects.md -2026-08-06-agent-event-payload-objects.md: 470c8fb3f9282005829846307778d3d1088c3888 -2026-08-06-agent-event-payload-objects.zh.md: 861a1b9c12c4ff050a9825212b02bc6c4e1c662d diff --git a/.agents/notes/implemented/architecture/2026-08-06-app-owned-command-line.i18n.yaml b/.agents/notes/implemented/architecture/2026-08-06-app-owned-command-line.i18n.yaml deleted file mode 100644 index 37ab609908..0000000000 --- a/.agents/notes/implemented/architecture/2026-08-06-app-owned-command-line.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-08-06-app-owned-command-line.md -2026-08-06-app-owned-command-line.md: 6d84ba457564ef250e1acfbcc71fcc91b1d49aee -2026-08-06-app-owned-command-line.zh.md: f964f7a7de7aae7e97b52fbc572443352dc5ae26 diff --git a/.agents/notes/implemented/architecture/2026-08-06-subagent-list-identity-projection.i18n.yaml b/.agents/notes/implemented/architecture/2026-08-06-subagent-list-identity-projection.i18n.yaml deleted file mode 100644 index cfdc3bd607..0000000000 --- a/.agents/notes/implemented/architecture/2026-08-06-subagent-list-identity-projection.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-08-06-subagent-list-identity-projection.md -2026-08-06-subagent-list-identity-projection.md: cbb15696314930acfaf20ba8651699c53c5dbde2 -2026-08-06-subagent-list-identity-projection.zh.md: dbb62dbfc6bb6ca3ab63504de1ba8dd35327bbbf diff --git a/.agents/notes/implemented/architecture/2026-08-06-web-markdown-incremental-ast-renderer.i18n.yaml b/.agents/notes/implemented/architecture/2026-08-06-web-markdown-incremental-ast-renderer.i18n.yaml deleted file mode 100644 index 53e4b6cd80..0000000000 --- a/.agents/notes/implemented/architecture/2026-08-06-web-markdown-incremental-ast-renderer.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-08-06-web-markdown-incremental-ast-renderer.md -2026-08-06-web-markdown-incremental-ast-renderer.md: 3599bfcc78dc4eefe5e82f461a469bdba15f3aae -2026-08-06-web-markdown-incremental-ast-renderer.zh.md: 70261f5ef9800308e68762d14255d50d3c9bb908 diff --git a/.agents/notes/implemented/architecture/2026-08-06-web-shell-dist-chunk-layout.i18n.yaml b/.agents/notes/implemented/architecture/2026-08-06-web-shell-dist-chunk-layout.i18n.yaml deleted file mode 100644 index 81249420ff..0000000000 --- a/.agents/notes/implemented/architecture/2026-08-06-web-shell-dist-chunk-layout.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-08-06-web-shell-dist-chunk-layout.md -2026-08-06-web-shell-dist-chunk-layout.md: 5407188dab4aaebb1032b49af33731d1cbdbc6e5 -2026-08-06-web-shell-dist-chunk-layout.zh.md: 15dcc7775f05916884ed704d4c1eace9df8eaaa5 diff --git a/.agents/notes/implemented/architecture/2026-08-07-shared-feedback-telemetry-user-id.i18n.yaml b/.agents/notes/implemented/architecture/2026-08-07-shared-feedback-telemetry-user-id.i18n.yaml deleted file mode 100644 index 7c877704b0..0000000000 --- a/.agents/notes/implemented/architecture/2026-08-07-shared-feedback-telemetry-user-id.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-08-07-shared-feedback-telemetry-user-id.md -2026-08-07-shared-feedback-telemetry-user-id.md: 2efc5b9f5fcc59542924567bf976fcb9ae60ac5a -2026-08-07-shared-feedback-telemetry-user-id.zh.md: 2f04536aec613b51ccf2f628a4b5d53604f4fb35 diff --git a/.agents/notes/implemented/architecture/2026-08-08-bounded-session-persistence-write-batching.i18n.yaml b/.agents/notes/implemented/architecture/2026-08-08-bounded-session-persistence-write-batching.i18n.yaml deleted file mode 100644 index 51d7ddff3b..0000000000 --- a/.agents/notes/implemented/architecture/2026-08-08-bounded-session-persistence-write-batching.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-08-08-bounded-session-persistence-write-batching.md -2026-08-08-bounded-session-persistence-write-batching.md: 350a4dd7a4af64156b6d68939fbc10ea8f06b7b1 -2026-08-08-bounded-session-persistence-write-batching.zh.md: 495d7a7824fb2c622e37b5e233e4cb8fe45755de diff --git a/.agents/notes/implemented/architecture/2026-08-08-client-tool-presentation-ownership.i18n.yaml b/.agents/notes/implemented/architecture/2026-08-08-client-tool-presentation-ownership.i18n.yaml deleted file mode 100644 index 4c904a894f..0000000000 --- a/.agents/notes/implemented/architecture/2026-08-08-client-tool-presentation-ownership.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-08-08-client-tool-presentation-ownership.md -2026-08-08-client-tool-presentation-ownership.md: bf8568150cc173f0dc46ba0a125ca9c784d18f2e -2026-08-08-client-tool-presentation-ownership.zh.md: 015a48a0499b84bf034dc905780eca0dcef99c10 diff --git a/.agents/notes/implemented/architecture/2026-08-08-per-preset-standing-mounts.i18n.yaml b/.agents/notes/implemented/architecture/2026-08-08-per-preset-standing-mounts.i18n.yaml deleted file mode 100644 index 0f947ef7f5..0000000000 --- a/.agents/notes/implemented/architecture/2026-08-08-per-preset-standing-mounts.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-08-08-per-preset-standing-mounts.md -2026-08-08-per-preset-standing-mounts.md: fe4bb0e2c39712d4b975b30c8b36d853d2051709 -2026-08-08-per-preset-standing-mounts.zh.md: bd9b29612015149cccdd1e5d38e6e50855286006 diff --git a/.agents/notes/implemented/architecture/2026-08-09-client-conversation-node-assembly.i18n.yaml b/.agents/notes/implemented/architecture/2026-08-09-client-conversation-node-assembly.i18n.yaml index eee0bed2ef..b7a8cc094a 100644 --- a/.agents/notes/implemented/architecture/2026-08-09-client-conversation-node-assembly.i18n.yaml +++ b/.agents/notes/implemented/architecture/2026-08-09-client-conversation-node-assembly.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-08-09-client-conversation-node-assembly.md -2026-08-09-client-conversation-node-assembly.md: 50e11b04d6461e99cdddb8e5e2d94bf864228841 -2026-08-09-client-conversation-node-assembly.zh.md: 7be1cd1b7f356caf51b8003821369771b0a6e269 +2026-08-09-client-conversation-node-assembly.md: 7f5b948f9083b20edd037fe32c55df7ba3378692 +2026-08-09-client-conversation-node-assembly.zh.md: 8716b25584a8cefd8d2239f242d430775ed2a8ef diff --git a/.agents/notes/implemented/architecture/2026-08-09-client-conversation-node-assembly.md b/.agents/notes/implemented/architecture/2026-08-09-client-conversation-node-assembly.md index 50e11b04d6..7f5b948f90 100644 --- a/.agents/notes/implemented/architecture/2026-08-09-client-conversation-node-assembly.md +++ b/.agents/notes/implemented/architecture/2026-08-09-client-conversation-node-assembly.md @@ -335,11 +335,11 @@ Assistant streaming to final and Tool running to settled stay in one Seat while When business logic deliberately changes a materialized Node to hidden, it leaves visible order and remounts when visible again. This is explicit business withdrawal of presentation, distinct from the stable-Seat guarantee for running→settled. -The concrete Tool renderer remains governed by the [`ui-tool ownership decision`](2026-08-08-client-tool-presentation-ownership.md). Tool Definition supplies recursive root/subcall data, and `ui-tool` dispatches concrete presentation by the Tool-name keyed slot. +The concrete Tool renderer remains governed by the [`ui-tool ownership decision`](../../archived/architecture/2026-08-08-client-tool-presentation-ownership.md). Tool Definition supplies recursive root/subcall data, and `ui-tool` dispatches concrete presentation by the Tool-name keyed slot. Trajectory registers its own target and business Definitions against the same Assembler and `SessionEventLikeEntry` window as Chat. Its target builder preserves the stage-oriented read model without consuming the Chat Builder's legacy slice or running an independent history fold. Chat and Trajectory keep independent scalar and packed Assistant reducers; target-specific Definitions do not change the shared Context, Reader, or Location contracts. -The target-specific Trajectory Definitions, retained stage model, Steering adaptation, complexity bounds, and presentation hot paths are owned by the [Trajectory Context assembly decision](2026-08-11-trajectory-conversation-context-assembly.md). +The target-specific Trajectory Definitions, retained stage model, Steering adaptation, complexity bounds, and presentation hot paths are owned by the [Trajectory Context assembly decision](../../archived/architecture/2026-08-11-trajectory-conversation-context-assembly.md). ## Runtime and render path diff --git a/.agents/notes/implemented/architecture/2026-08-09-client-conversation-node-assembly.zh.md b/.agents/notes/implemented/architecture/2026-08-09-client-conversation-node-assembly.zh.md index 7be1cd1b7f..8716b25584 100644 --- a/.agents/notes/implemented/architecture/2026-08-09-client-conversation-node-assembly.zh.md +++ b/.agents/notes/implemented/architecture/2026-08-09-client-conversation-node-assembly.zh.md @@ -335,11 +335,11 @@ Assistant streaming 到 final、Tool running 到 settled 始终留在同一个 S 业务主动把已发布 Node 改成 hidden 时,它会退出 visible order,恢复 visible 时会重新 mount。这是明确的业务撤显语义,与 running→settled 的稳定 Seat 保证不同。 -具体 Tool renderer 仍由 [`ui-tool ownership decision`](2026-08-08-client-tool-presentation-ownership.zh.md) 约束。Tool Definition 只交付递归 root/subcall data,`ui-tool` 再按 Tool name keyed slot 分发具体表现。 +具体 Tool renderer 仍由 [`ui-tool ownership decision`](../../archived/architecture/2026-08-08-client-tool-presentation-ownership.md) 约束。Tool Definition 只交付递归 root/subcall data,`ui-tool` 再按 Tool name keyed slot 分发具体表现。 Trajectory 针对与 Chat 相同的 Assembler 和 `SessionEventLikeEntry` window 注册自己的 target 与业务 Definition。它的 target builder 保留 stage-oriented read model,既不消费 Chat Builder 的 legacy slice,也不运行独立 history fold。Chat 与 Trajectory 分别维护独立的 scalar 和 packed Assistant reducer;target 专属 Definition 不改变共享的 Context、Reader 或 Location 契约。 -target 专属 Trajectory Definition、保留的 stage model、Steering 适配、复杂度上界与表现层热点由 [Trajectory Context 组装决策](2026-08-11-trajectory-conversation-context-assembly.zh.md)负责。 +target 专属 Trajectory Definition、保留的 stage model、Steering 适配、复杂度上界与表现层热点由 [Trajectory Context 组装决策](../../archived/architecture/2026-08-11-trajectory-conversation-context-assembly.md)负责。 ## 运行时与渲染链路 diff --git a/.agents/notes/implemented/architecture/2026-08-09-cordis-event-walk-backstop.i18n.yaml b/.agents/notes/implemented/architecture/2026-08-09-cordis-event-walk-backstop.i18n.yaml deleted file mode 100644 index cc9768eeac..0000000000 --- a/.agents/notes/implemented/architecture/2026-08-09-cordis-event-walk-backstop.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-08-09-cordis-event-walk-backstop.md -2026-08-09-cordis-event-walk-backstop.md: 5a85c5df2705c69f7a045e04a32345149135c427 -2026-08-09-cordis-event-walk-backstop.zh.md: 17660d90bd60c770b63eec95c42b0aeacf269d43 diff --git a/.agents/notes/implemented/architecture/2026-08-09-headless-direct-core-entry-point.i18n.yaml b/.agents/notes/implemented/architecture/2026-08-09-headless-direct-core-entry-point.i18n.yaml deleted file mode 100644 index 13317f8219..0000000000 --- a/.agents/notes/implemented/architecture/2026-08-09-headless-direct-core-entry-point.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-08-09-headless-direct-core-entry-point.md -2026-08-09-headless-direct-core-entry-point.md: ca3effd6c054ba70bb2f5d4db0794386c37cbcab -2026-08-09-headless-direct-core-entry-point.zh.md: 4da5c9539358dd275bcde18c23907c31d35d2519 diff --git a/.agents/notes/implemented/architecture/2026-08-10-message-feedback-sidecar.i18n.yaml b/.agents/notes/implemented/architecture/2026-08-10-message-feedback-sidecar.i18n.yaml deleted file mode 100644 index 44c31bc1cd..0000000000 --- a/.agents/notes/implemented/architecture/2026-08-10-message-feedback-sidecar.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-08-10-message-feedback-sidecar.md -2026-08-10-message-feedback-sidecar.md: d047bebf47f844a6d88932c7e19a3952f43d94cc -2026-08-10-message-feedback-sidecar.zh.md: 4ee1b861a8013dacfd5eba40d9e30b23237be2e5 diff --git a/.agents/notes/implemented/architecture/2026-08-10-product-subagent-providers-in-shared-host.i18n.yaml b/.agents/notes/implemented/architecture/2026-08-10-product-subagent-providers-in-shared-host.i18n.yaml deleted file mode 100644 index 339ff2b869..0000000000 --- a/.agents/notes/implemented/architecture/2026-08-10-product-subagent-providers-in-shared-host.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-08-10-product-subagent-providers-in-shared-host.md -2026-08-10-product-subagent-providers-in-shared-host.md: a998408c4dd01ba8f7ab09eab453a963beb855a4 -2026-08-10-product-subagent-providers-in-shared-host.zh.md: cce746399b7ec553d145441cc3d51df3e051ca9b diff --git a/.agents/notes/implemented/architecture/2026-08-10-unary-apiproxy-remote-migration.i18n.yaml b/.agents/notes/implemented/architecture/2026-08-10-unary-apiproxy-remote-migration.i18n.yaml deleted file mode 100644 index 0f52ac4e28..0000000000 --- a/.agents/notes/implemented/architecture/2026-08-10-unary-apiproxy-remote-migration.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-08-10-unary-apiproxy-remote-migration.md -2026-08-10-unary-apiproxy-remote-migration.md: ee93276b08e204b8c10c22c9fbb890a73691c5a9 -2026-08-10-unary-apiproxy-remote-migration.zh.md: 63eb30a1c079c4f5beb3c6aa328ae31f9dbc51b2 diff --git a/.agents/notes/implemented/architecture/2026-08-11-cmdline-seam-trim.i18n.yaml b/.agents/notes/implemented/architecture/2026-08-11-cmdline-seam-trim.i18n.yaml deleted file mode 100644 index 3b0d58c816..0000000000 --- a/.agents/notes/implemented/architecture/2026-08-11-cmdline-seam-trim.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-08-11-cmdline-seam-trim.md -2026-08-11-cmdline-seam-trim.md: d7908d2c80552f13500ccd36c59a249f1374cbb1 -2026-08-11-cmdline-seam-trim.zh.md: 75a57c022fe71494e0a7165277c4cb351240f1b1 diff --git a/.agents/notes/implemented/architecture/2026-08-11-loader-entry-disabled-interpolation.i18n.yaml b/.agents/notes/implemented/architecture/2026-08-11-loader-entry-disabled-interpolation.i18n.yaml deleted file mode 100644 index 96ec8dfb31..0000000000 --- a/.agents/notes/implemented/architecture/2026-08-11-loader-entry-disabled-interpolation.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-08-11-loader-entry-disabled-interpolation.md -2026-08-11-loader-entry-disabled-interpolation.md: 2d8fb73d95bab53367209afb2a9479a1b94cb949 -2026-08-11-loader-entry-disabled-interpolation.zh.md: 9e45278fdcb52e4f5e41ed7ea7711f4267cc5a1b diff --git a/.agents/notes/implemented/architecture/2026-08-11-pwsh-persistent-pty.i18n.yaml b/.agents/notes/implemented/architecture/2026-08-11-pwsh-persistent-pty.i18n.yaml deleted file mode 100644 index b1391a43f8..0000000000 --- a/.agents/notes/implemented/architecture/2026-08-11-pwsh-persistent-pty.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-08-11-pwsh-persistent-pty.md -2026-08-11-pwsh-persistent-pty.md: 4c523d3c7c45e6d86942868df92b981576e76859 -2026-08-11-pwsh-persistent-pty.zh.md: 4f87490fd60ecc37ad9390e0ce990173bbafc3b8 diff --git a/.agents/notes/implemented/architecture/2026-08-11-repository-naming-contract-and-rename-ledger.i18n.yaml b/.agents/notes/implemented/architecture/2026-08-11-repository-naming-contract-and-rename-ledger.i18n.yaml deleted file mode 100644 index 2d6a1888aa..0000000000 --- a/.agents/notes/implemented/architecture/2026-08-11-repository-naming-contract-and-rename-ledger.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-08-11-repository-naming-contract-and-rename-ledger.md -2026-08-11-repository-naming-contract-and-rename-ledger.md: 269f18c494a17a1af5ab4252ad812a5ded03d672 -2026-08-11-repository-naming-contract-and-rename-ledger.zh.md: 614332795d46d810bdef32c0d0f7e1010fc7f8a0 diff --git a/.agents/notes/implemented/architecture/2026-08-11-trajectory-conversation-context-assembly.i18n.yaml b/.agents/notes/implemented/architecture/2026-08-11-trajectory-conversation-context-assembly.i18n.yaml deleted file mode 100644 index 321dd79463..0000000000 --- a/.agents/notes/implemented/architecture/2026-08-11-trajectory-conversation-context-assembly.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-08-11-trajectory-conversation-context-assembly.md -2026-08-11-trajectory-conversation-context-assembly.md: fd246922b0ecce146da00e212ecb8053a939017d -2026-08-11-trajectory-conversation-context-assembly.zh.md: 2568de889fc3b6c227d9faa51166186b388de18f diff --git a/.agents/notes/implemented/architecture/2026-08-12-pi-ai-route-default-input-modalities.i18n.yaml b/.agents/notes/implemented/architecture/2026-08-12-pi-ai-route-default-input-modalities.i18n.yaml deleted file mode 100644 index 9ec5397ac3..0000000000 --- a/.agents/notes/implemented/architecture/2026-08-12-pi-ai-route-default-input-modalities.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-08-12-pi-ai-route-default-input-modalities.md -2026-08-12-pi-ai-route-default-input-modalities.md: 83158d686b028a085fc8801f83a7cea1a369471b -2026-08-12-pi-ai-route-default-input-modalities.zh.md: 9083070867bc026c88408ca1779f6c902be9c04f diff --git a/.agents/notes/implemented/architecture/2026-08-12-plugin-owned-settings-surface.i18n.yaml b/.agents/notes/implemented/architecture/2026-08-12-plugin-owned-settings-surface.i18n.yaml deleted file mode 100644 index 822f8fa0e2..0000000000 --- a/.agents/notes/implemented/architecture/2026-08-12-plugin-owned-settings-surface.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-08-12-plugin-owned-settings-surface.md -2026-08-12-plugin-owned-settings-surface.md: f1c9b48abd3459ed58e3e10fbdd95558884c9a22 -2026-08-12-plugin-owned-settings-surface.zh.md: ff9f37290a8dd8f1ab9ef1bfef3790a3ef20086b diff --git a/.agents/notes/implemented/architecture/2026-08-13-credential-records-and-authorization-flows.i18n.yaml b/.agents/notes/implemented/architecture/2026-08-13-credential-records-and-authorization-flows.i18n.yaml index 5dba989cb5..b54dd0639b 100644 --- a/.agents/notes/implemented/architecture/2026-08-13-credential-records-and-authorization-flows.i18n.yaml +++ b/.agents/notes/implemented/architecture/2026-08-13-credential-records-and-authorization-flows.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-08-13-credential-records-and-authorization-flows.md -2026-08-13-credential-records-and-authorization-flows.md: 23d3dda6e90809817b74dce98f380334bbbc0f4d -2026-08-13-credential-records-and-authorization-flows.zh.md: c6ec580b4ed73f8d0a9d6f9922b2b6b220f2c428 +2026-08-13-credential-records-and-authorization-flows.md: 6bf65761c98689d62935d6e36a040e05c38aa653 +2026-08-13-credential-records-and-authorization-flows.zh.md: 72ec310c2ff0141f83096c805d5ccd60fe5cd57e diff --git a/.agents/notes/implemented/architecture/2026-08-13-credential-records-and-authorization-flows.md b/.agents/notes/implemented/architecture/2026-08-13-credential-records-and-authorization-flows.md index 23d3dda6e9..6bf65761c9 100644 --- a/.agents/notes/implemented/architecture/2026-08-13-credential-records-and-authorization-flows.md +++ b/.agents/notes/implemented/architecture/2026-08-13-credential-records-and-authorization-flows.md @@ -8,7 +8,7 @@ English | [中文](2026-08-13-credential-records-and-authorization-flows.zh.md) The harness credential plane could only express one kind of secret: a value behind an environment-variable name. `CredentialRef` is a POSIX identifier, resolution layers the process environment over a managed file and `.env` fallbacks, and every consumer reads it per operation. That covers an API key exactly and covers nothing else. -Some credentials are not values a deployment can be told to store. They are obtained — by a conversation with a human who opens a page, approves an account, and pastes a code back — and what comes out is a token document with a refresh half that rotates behind the user's back. pi-ai models this directly (`Credential = ApiKeyCredential | OAuthCredential`, an app-owned `CredentialStore`, `Models.login()`), and the harness had nowhere to put any of it. `PiAiAdapter` built its collection with `createModels()` and no options, so the store was pi-ai's in-memory default: empty at every boot, discarded on every configuration change. `openai-codex`, whose only method is OAuth, therefore failed every request with `Provider is not configured` — [withheld from the directory](../bug-fix/2026-08-13-oauth-only-providers-withheld.md) as a release fix, which removed the broken offer without adding the capability. +Some credentials are not values a deployment can be told to store. They are obtained — by a conversation with a human who opens a page, approves an account, and pastes a code back — and what comes out is a token document with a refresh half that rotates behind the user's back. pi-ai models this directly (`Credential = ApiKeyCredential | OAuthCredential`, an app-owned `CredentialStore`, `Models.login()`), and the harness had nowhere to put any of it. `PiAiAdapter` built its collection with `createModels()` and no options, so the store was pi-ai's in-memory default: empty at every boot, discarded on every configuration change. `openai-codex`, whose only method is OAuth, therefore failed every request with `Provider is not configured` — [withheld from the directory](../../archived/bug-fix/2026-08-13-oauth-only-providers-withheld.md) as a release fix, which removed the broken offer without adding the capability. Two further gaps followed from the same missing plane. A provider's own ambient discovery ran against the raw process environment, so a key held by the credential seam was invisible to it and a local credential file was never even looked for. And a login had no surface to run from, because nothing in the harness could ask a human a question on a plugin's behalf. diff --git a/.agents/notes/implemented/architecture/2026-08-13-credential-records-and-authorization-flows.zh.md b/.agents/notes/implemented/architecture/2026-08-13-credential-records-and-authorization-flows.zh.md index c6ec580b4e..72ec310c2f 100644 --- a/.agents/notes/implemented/architecture/2026-08-13-credential-records-and-authorization-flows.zh.md +++ b/.agents/notes/implemented/architecture/2026-08-13-credential-records-and-authorization-flows.zh.md @@ -8,7 +8,7 @@ Status: implemented harness 的凭据平面只能表达一种机密:藏在某个环境变量名之后的值。`CredentialRef` 是一个 POSIX 标识符,解析时按进程环境、受管文件、`.env` 回退分层,每个消费方按操作读取。这恰好覆盖 API key,此外什么都不覆盖。 -有些凭据不是"可以让部署方去存"的值。它们是被**取得**的——与人对话:对方打开页面、批准账号、把码粘回来——产出的是一份带 refresh 半边、会在用户背后轮换的 token 文档。pi-ai 直接建模了这一点(`Credential = ApiKeyCredential | OAuthCredential`、由应用拥有的 `CredentialStore`、`Models.login()`),而 harness 无处安放其中任何一项。`PiAiAdapter` 用不带参数的 `createModels()` 构造集合,于是那个 store 就是 pi-ai 的内存默认实现:每次启动为空,每次配置变更被丢弃。只以 OAuth 认证的 `openai-codex` 因此每个请求都以 `Provider is not configured` 失败——[被目录withheld](../bug-fix/2026-08-13-oauth-only-providers-withheld.zh.md) 作为发布前修复,它移除了错误的供给,但没有补上能力。 +有些凭据不是"可以让部署方去存"的值。它们是被**取得**的——与人对话:对方打开页面、批准账号、把码粘回来——产出的是一份带 refresh 半边、会在用户背后轮换的 token 文档。pi-ai 直接建模了这一点(`Credential = ApiKeyCredential | OAuthCredential`、由应用拥有的 `CredentialStore`、`Models.login()`),而 harness 无处安放其中任何一项。`PiAiAdapter` 用不带参数的 `createModels()` 构造集合,于是那个 store 就是 pi-ai 的内存默认实现:每次启动为空,每次配置变更被丢弃。只以 OAuth 认证的 `openai-codex` 因此每个请求都以 `Provider is not configured` 失败——[被目录withheld](../../archived/bug-fix/2026-08-13-oauth-only-providers-withheld.md) 作为发布前修复,它移除了错误的供给,但没有补上能力。 同一处缺失还带来另外两个缺口。提供方自带的凭据发现是对着裸进程环境跑的,因此凭据 seam 保管的密钥对它不可见,本地凭据文件更是从未被查找过。而登录没有任何界面可以发起,因为 harness 里没有任何东西能代替插件向人发问。 diff --git a/.agents/notes/implemented/architecture/2026-08-13-session-content-search-opt-in.i18n.yaml b/.agents/notes/implemented/architecture/2026-08-13-session-content-search-opt-in.i18n.yaml deleted file mode 100644 index 2079802d24..0000000000 --- a/.agents/notes/implemented/architecture/2026-08-13-session-content-search-opt-in.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-08-13-session-content-search-opt-in.md -2026-08-13-session-content-search-opt-in.md: 2d14b2def00186c2957dc03ae712fbcb63d2c820 -2026-08-13-session-content-search-opt-in.zh.md: 5231b37cf13adacd191638e0be437c34929a2981 diff --git a/.agents/notes/implemented/architecture/2026-08-17-settings-describe-mirror.i18n.yaml b/.agents/notes/implemented/architecture/2026-08-17-settings-describe-mirror.i18n.yaml deleted file mode 100644 index 06693c731e..0000000000 --- a/.agents/notes/implemented/architecture/2026-08-17-settings-describe-mirror.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-08-17-settings-describe-mirror.md -2026-08-17-settings-describe-mirror.md: 81be16c83e61f8c44b4903b4cc57e26d80fe065e -2026-08-17-settings-describe-mirror.zh.md: 80ba087afe406c205f12732ff25672a4695fd39b diff --git a/.agents/notes/implemented/architecture/2026-08-18-client-build-environment.i18n.yaml b/.agents/notes/implemented/architecture/2026-08-18-client-build-environment.i18n.yaml deleted file mode 100644 index 7a9fa44aef..0000000000 --- a/.agents/notes/implemented/architecture/2026-08-18-client-build-environment.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-08-18-client-build-environment.md -2026-08-18-client-build-environment.md: c23a73e9520392e41949f95d04029dbf34213dd0 -2026-08-18-client-build-environment.zh.md: 5dbb5deeee75eb0f1b2cadf7e38ad8bfc5661f5c diff --git a/.agents/notes/implemented/architecture/2026-08-18-experimental-agent-teams-packages.i18n.yaml b/.agents/notes/implemented/architecture/2026-08-18-experimental-agent-teams-packages.i18n.yaml index 3318134b3b..3609897421 100644 --- a/.agents/notes/implemented/architecture/2026-08-18-experimental-agent-teams-packages.i18n.yaml +++ b/.agents/notes/implemented/architecture/2026-08-18-experimental-agent-teams-packages.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-08-18-experimental-agent-teams-packages.md -2026-08-18-experimental-agent-teams-packages.md: b769791d52472290f76eec7e518f24001db919ad -2026-08-18-experimental-agent-teams-packages.zh.md: 25227770b5029b1baedef6bd9b7ad78b79586365 +2026-08-18-experimental-agent-teams-packages.md: bff91f9c735f541eb6ef055a5bf70c31b5d88912 +2026-08-18-experimental-agent-teams-packages.zh.md: f3753a3be9679962c30b566a5a411ca568e1c982 diff --git a/.agents/notes/implemented/architecture/2026-08-18-experimental-agent-teams-packages.md b/.agents/notes/implemented/architecture/2026-08-18-experimental-agent-teams-packages.md index b769791d52..bff91f9c73 100644 --- a/.agents/notes/implemented/architecture/2026-08-18-experimental-agent-teams-packages.md +++ b/.agents/notes/implemented/architecture/2026-08-18-experimental-agent-teams-packages.md @@ -12,7 +12,7 @@ An experimental directory without a current package previously imposed placement ## Decision -`packages/experimental/agent-team`, `packages/experimental/tool-agent-team`, `packages/experimental/agent-team-profile`, `packages/experimental/client-ui-agent-team`, and `packages/experimental/agent-team-web-profile` are private workspace packages. The [experimental package naming decision](2026-08-19-experimental-package-name-prefix.md) owns their npm names and promotion rename; this note owns their placement, release exclusion, and dependency isolation. +`packages/experimental/agent-team`, `packages/experimental/tool-agent-team`, `packages/experimental/agent-team-profile`, `packages/experimental/client-ui-agent-team`, and `packages/experimental/agent-team-web-profile` are private workspace packages. The [experimental package rules](../../../../packages/experimental/AGENTS.md) own their npm names and promotion rename; this note owns their placement, release exclusion, and dependency isolation. The dsh pack and publish set and the local baseline publisher exclude every manifest below `packages/experimental/`. `release:dsh` still advances their manifest versions with the shared dsh version without creating release tags. Workspace constraints require each experimental package to set `private: true` and omit `publishConfig`. The same top-level check rejects `dependencies`, `optionalDependencies`, and `peerDependencies` from release packages, release apps, or the Python runtime to an experimental package. Experimental packages may depend on release packages and each other; tests may use them through `devDependencies`, and examples may load them explicitly. @@ -36,4 +36,4 @@ Experimental status changes publication and compatibility expectations only. The Agent Teams can use the full repository graph and quality checks without entering official tarballs or becoming a supported runtime dependency. A release package cannot expose Team until the Team packages are promoted, so the CLI experiment installs an explicit private profile layer instead of changing shipped bundles. The generic profile launcher accepts that layer without making its plugin dependencies part of the dsh release closure. -The product-role grouping is less direct while the packages incubate. Promotion creates path and npm-name churn as specified by the experimental package naming decision. +The product-role grouping is less direct while the packages incubate. Promotion creates path and npm-name churn as specified by the experimental package rules. diff --git a/.agents/notes/implemented/architecture/2026-08-18-experimental-agent-teams-packages.zh.md b/.agents/notes/implemented/architecture/2026-08-18-experimental-agent-teams-packages.zh.md index 25227770b5..f3753a3be9 100644 --- a/.agents/notes/implemented/architecture/2026-08-18-experimental-agent-teams-packages.zh.md +++ b/.agents/notes/implemented/architecture/2026-08-18-experimental-agent-teams-packages.zh.md @@ -12,7 +12,7 @@ Agent Teams 的服务与工具约定仍在变化,但它需要使用真实 Sess ## 决策 -`packages/experimental/agent-team`、`packages/experimental/tool-agent-team`、`packages/experimental/agent-team-profile`、`packages/experimental/client-ui-agent-team` 与 `packages/experimental/agent-team-web-profile` 是私有 workspace 包。[实验性包命名决策](2026-08-19-experimental-package-name-prefix.zh.md)负责其 npm 名和 promotion 重命名;本记录负责其目录归属、发布排除与依赖隔离。 +`packages/experimental/agent-team`、`packages/experimental/tool-agent-team`、`packages/experimental/agent-team-profile`、`packages/experimental/client-ui-agent-team` 与 `packages/experimental/agent-team-web-profile` 是私有 workspace 包。[实验性包规则](../../../../packages/experimental/AGENTS.md)负责其 npm 名和 promotion 重命名;本记录负责其目录归属、发布排除与依赖隔离。 dsh pack 与 publish 集合以及本地 baseline 发布器均排除 `packages/experimental/` 下的所有 manifest。`release:dsh` 仍会让这些 manifest 跟随 dsh 共享版本递增,但不会创建发布 tag。workspace 约束要求每个实验性包设置 `private: true` 并省略 `publishConfig`。同一个顶层检查会拒绝发布包、发布 app 或 Python runtime 通过 `dependencies`、`optionalDependencies` 或 `peerDependencies` 依赖实验性包。实验性包可以依赖发布包和其他实验性包;测试可以通过 `devDependencies` 使用它们,示例可以显式加载它们。 @@ -36,4 +36,4 @@ profile 启动会先解析所选 bundle,再修复模块 fallback。共享 fall Agent Teams 可以使用完整仓库依赖图与质量检查,而不进入正式 tarball,也不会成为受支持的运行时依赖。在 Team 包 promotion 前,发布包不能暴露 Team,因此 CLI 实验会安装显式的私有 profile 层,而不是修改已发布 bundle。通用 profile launcher 可以接受该层,而不会让它的 plugin 依赖进入 dsh 发布闭包。 -孵化期间的产品职责分组不够直接。promotion 会按照实验性包命名决策产生路径和 npm 名改动。 +孵化期间的产品职责分组不够直接。promotion 会按照实验性包规则产生路径和 npm 名改动。 diff --git a/.agents/notes/implemented/architecture/2026-08-18-session-history-and-event-transport.i18n.yaml b/.agents/notes/implemented/architecture/2026-08-18-session-history-and-event-transport.i18n.yaml index d94e07f60b..e1c0c5061d 100644 --- a/.agents/notes/implemented/architecture/2026-08-18-session-history-and-event-transport.i18n.yaml +++ b/.agents/notes/implemented/architecture/2026-08-18-session-history-and-event-transport.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-08-18-session-history-and-event-transport.md -2026-08-18-session-history-and-event-transport.md: acb6321937ce1b1c67933752f3b93ac82ddcfe0d -2026-08-18-session-history-and-event-transport.zh.md: 3828eb5cfe6c496c3d5c2d7085ac550fe94f3101 +2026-08-18-session-history-and-event-transport.md: 9a593ca9bfe4a80657d3eeeaa89cf0dcc73dd829 +2026-08-18-session-history-and-event-transport.zh.md: a7f8b8f27153a1814ca65bbf9042d78717b50849 diff --git a/.agents/notes/implemented/architecture/2026-08-18-session-history-and-event-transport.md b/.agents/notes/implemented/architecture/2026-08-18-session-history-and-event-transport.md index acb6321937..9a593ca9bf 100644 --- a/.agents/notes/implemented/architecture/2026-08-18-session-history-and-event-transport.md +++ b/.agents/notes/implemented/architecture/2026-08-18-session-history-and-event-transport.md @@ -64,7 +64,8 @@ The browser's Client Remote plugin starts `RemoteStreamMuxClient` idempotently o The Host sends one RFC 6455 Ping control frame to every open mux socket at the configured `websocketHeartbeatIntervalMs` interval (two seconds by default). The browser replies with Pong at the protocol layer; neither control frame enters the Remote stream JSON union or changes Connection generation state. Before each Ping, the Host marks the socket as awaiting Pong and terminates it at the next interval if no Pong arrived. -After an initial connection failure or the loss of a connected socket, open logical streams end their current physical generation with `RemoteStreamCarrierError`. `ConnectionController` owns the continuous exponential retry schedule with a capped delay; each attempt asks the mux to replace any candidate or active socket exactly once before reopening `$events`. A user-requested reconnect resets the attempt sequence and bypasses the delay through the same path ([decision](../feature/2026-08-28-web-connection-recovery-control.md)). +After an initial connection failure or the loss of a connected socket, open logical streams end their current physical generation with `RemoteStreamCarrierError`. `ConnectionController` owns the continuous exponential retry schedule with a capped delay; each attempt asks the mux to replace any candidate or active socket exactly once before reopening `$events`. A user-requested reconnect resets the attempt sequence and bypasses the delay through the same path ([decision](../../archived/feature/2026-08-28-web-connection-recovery-control.md)). + The browser's network-status events are inputs to the same Controller. `offline` withdraws the Connection generation and suspends automatic retries; the next `online` transition restarts the base backoff. These events never establish connectivity: only a fresh `$events` ready frame publishes a Connection generation. @@ -380,4 +381,4 @@ Remote waterfalls preserve first claim across multiple Clients, continuation of This decision extends the allowlist and single Cordis-signature design from [Remote event delivery](2026-08-10-remote-event-delivery.md): ordinary notifications use `emit`, while Agent-scoped async waterfalls use the same `ctx.remote.$on` surface with explicit `waterfall` mode. It creates no second invocation map. -This decision takes over the Session, Workspace, and Host-event carriers retained by [simple unary API Proxy migration](2026-08-10-unary-apiproxy-remote-migration.md) while preserving the complete jobs snapshot, process-local lifecycle, and “observation does not resume an Agent” semantics required by [background job display](../feature/2026-08-08-web-background-job-display.md). +This decision takes over the Session, Workspace, and Host-event carriers retained by [simple unary API Proxy migration](../../archived/architecture/2026-08-10-unary-apiproxy-remote-migration.md) while preserving the complete jobs snapshot, process-local lifecycle, and “observation does not resume an Agent” semantics required by [background job display](../feature/2026-08-08-web-background-job-display.md). diff --git a/.agents/notes/implemented/architecture/2026-08-18-session-history-and-event-transport.zh.md b/.agents/notes/implemented/architecture/2026-08-18-session-history-and-event-transport.zh.md index 3828eb5cfe..a7f8b8f271 100644 --- a/.agents/notes/implemented/architecture/2026-08-18-session-history-and-event-transport.zh.md +++ b/.agents/notes/implemented/architecture/2026-08-18-session-history-and-event-transport.zh.md @@ -64,7 +64,8 @@ API Proxy 不拥有 Session 或 Workspace Remote namespace,也不拥有 Host Host 按配置的 `websocketHeartbeatIntervalMs` 间隔(默认 2 秒)向每条已打开的 mux socket 发送一个 RFC 6455 Ping 控制帧;浏览器在协议层回复 Pong。两种控制帧都不进入 Remote stream JSON union,也不改变 Connection generation 状态。每次 Ping 前,Host 把 socket 标记为等待 Pong;若到下一间隔仍未收到 Pong,Host 会终止该 socket。 -首次建连失败或已连接 socket 丢失后,已打开的 logical stream 会以 `RemoteStreamCarrierError` 结束当前物理 generation。`ConnectionController` 拥有持续且间隔封顶的指数 retry 调度;每次尝试都要求 mux 恰好一次替换候选或活动 socket,再重开 `$events`。用户要求的重连通过同一路径重置 attempt 序列并跳过等待(见[决策](../feature/2026-08-28-web-connection-recovery-control.zh.md))。 +首次建连失败或已连接 socket 丢失后,已打开的 logical stream 会以 `RemoteStreamCarrierError` 结束当前物理 generation。`ConnectionController` 拥有持续且间隔封顶的指数 retry 调度;每次尝试都要求 mux 恰好一次替换候选或活动 socket,再重开 `$events`。用户要求的重连通过同一路径重置 attempt 序列并跳过等待(见[决策](../../archived/feature/2026-08-28-web-connection-recovery-control.md))。 + 浏览器网络状态事件是同一 Controller 的输入。`offline` 会撤回 Connection generation 并暂停自动 retry;下一次 `online` 转换会从基础退避档重新开始。这些事件不会建立连接;只有新的 `$events` ready 帧才会发布 Connection generation。 @@ -380,4 +381,4 @@ Remote waterfall 保留多 Client 首个 claim、全体 `next` 后继续 Host ch 本决定扩展[Remote 事件投递](2026-08-10-remote-event-delivery.zh.md)的 allowlist 与单一 Cordis 签名设计:普通通知继续使用 `emit`,Agent-scoped async waterfall 使用同一 `ctx.remote.$on` 面和显式 `waterfall` mode;不建立第二套 invocation map。 -本决定接管[简单一元 API Proxy 迁移](2026-08-10-unary-apiproxy-remote-migration.zh.md)中保留的 Session、Workspace 与 Host event carrier,并保留[后台任务展示](../feature/2026-08-08-web-background-job-display.zh.md)所要求的完整 jobs snapshot、进程内生命周期和“观察不恢复 Agent”语义。 +本决定接管[简单一元 API Proxy 迁移](../../archived/architecture/2026-08-10-unary-apiproxy-remote-migration.md)中保留的 Session、Workspace 与 Host event carrier,并保留[后台任务展示](../feature/2026-08-08-web-background-job-display.zh.md)所要求的完整 jobs snapshot、进程内生命周期和“观察不恢复 Agent”语义。 diff --git a/.agents/notes/implemented/architecture/2026-08-19-experimental-package-name-prefix.i18n.yaml b/.agents/notes/implemented/architecture/2026-08-19-experimental-package-name-prefix.i18n.yaml deleted file mode 100644 index e25d832371..0000000000 --- a/.agents/notes/implemented/architecture/2026-08-19-experimental-package-name-prefix.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-08-19-experimental-package-name-prefix.md -2026-08-19-experimental-package-name-prefix.md: 3420fa20a0dd9519af5684142fc8f3e70f2ed779 -2026-08-19-experimental-package-name-prefix.zh.md: b7e7d073157eab272baed4ffb75f987a685f53d7 diff --git a/.agents/notes/implemented/architecture/2026-08-19-projection-cache-per-session-files.i18n.yaml b/.agents/notes/implemented/architecture/2026-08-19-projection-cache-per-session-files.i18n.yaml deleted file mode 100644 index 81c72ece36..0000000000 --- a/.agents/notes/implemented/architecture/2026-08-19-projection-cache-per-session-files.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-08-19-projection-cache-per-session-files.md -2026-08-19-projection-cache-per-session-files.md: 0792ed6cac23d1ae09767f608c74f82430db68e9 -2026-08-19-projection-cache-per-session-files.zh.md: 44894a0d52065d7a916252fd6c02ff9f4864ef70 diff --git a/.agents/notes/implemented/architecture/2026-08-19-session-projection-mandatory-seam.i18n.yaml b/.agents/notes/implemented/architecture/2026-08-19-session-projection-mandatory-seam.i18n.yaml index 8934ffe4ea..0642d7aaad 100644 --- a/.agents/notes/implemented/architecture/2026-08-19-session-projection-mandatory-seam.i18n.yaml +++ b/.agents/notes/implemented/architecture/2026-08-19-session-projection-mandatory-seam.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-08-19-session-projection-mandatory-seam.md -2026-08-19-session-projection-mandatory-seam.md: 7d67e0222d8ddead708d4ac62c30a99164f69d71 -2026-08-19-session-projection-mandatory-seam.zh.md: 40c05cec723290a52dc400015bb17009886c933d +2026-08-19-session-projection-mandatory-seam.md: 371faa254809649e93685a8f3ada3e640d5f391e +2026-08-19-session-projection-mandatory-seam.zh.md: 5d6a5169a556febae3f5c960b2d519c324d99863 diff --git a/.agents/notes/implemented/architecture/2026-08-19-session-projection-mandatory-seam.md b/.agents/notes/implemented/architecture/2026-08-19-session-projection-mandatory-seam.md index 7d67e0222d..371faa2548 100644 --- a/.agents/notes/implemented/architecture/2026-08-19-session-projection-mandatory-seam.md +++ b/.agents/notes/implemented/architecture/2026-08-19-session-projection-mandatory-seam.md @@ -10,7 +10,7 @@ An optional projection registry lets a plugin whose host behavior reads projecte ## Decision -This decision builds on the split between host projection state and client views in [Session projection state and client views](2026-08-19-session-projection-state-and-client-views.md). +This decision builds on the split between host projection state and client views in [Session projection state and client views](../../archived/architecture/2026-08-19-session-projection-state-and-client-views.md). Every host reader treats the projection registry and its required key as mandatory state. A plugin either declares `sessionProjections` as a required injection or resolves the registry and key explicitly and throws on the first dependent access. Official compositions mount the registry before those plugins. `ApiProxyService` follows the required-injection form; the lower-level `createApiProxy` factory remains tolerant for isolated tests and diagnostics. diff --git a/.agents/notes/implemented/architecture/2026-08-19-session-projection-mandatory-seam.zh.md b/.agents/notes/implemented/architecture/2026-08-19-session-projection-mandatory-seam.zh.md index 40c05cec72..5d6a5169a5 100644 --- a/.agents/notes/implemented/architecture/2026-08-19-session-projection-mandatory-seam.zh.md +++ b/.agents/notes/implemented/architecture/2026-08-19-session-projection-mandatory-seam.zh.md @@ -10,7 +10,7 @@ Status: implemented ## 决策 -本决策建立在[会话投影的 host 状态与客户端视图](2026-08-19-session-projection-state-and-client-views.zh.md)所定义的拆分之上。 +本决策建立在[会话投影的 host 状态与客户端视图](../../archived/architecture/2026-08-19-session-projection-state-and-client-views.md)所定义的拆分之上。 每个 host 读取方都把投影注册表及其所需 key 视为必需状态。插件要么把 `sessionProjections` 声明为必需注入,要么显式解析注册表与 key,并在第一次依赖它们的访问时抛错。正式组合在这些插件之前挂载注册表。`ApiProxyService` 采用必需注入形式;较低层的 `createApiProxy` factory 对隔离测试和诊断保持容错。 diff --git a/.agents/notes/implemented/architecture/2026-08-19-session-projection-state-and-client-views.i18n.yaml b/.agents/notes/implemented/architecture/2026-08-19-session-projection-state-and-client-views.i18n.yaml deleted file mode 100644 index aa29bb5028..0000000000 --- a/.agents/notes/implemented/architecture/2026-08-19-session-projection-state-and-client-views.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-08-19-session-projection-state-and-client-views.md -2026-08-19-session-projection-state-and-client-views.md: e8b4c3c052ba3f172515a4d131b2f58f75d902d8 -2026-08-19-session-projection-state-and-client-views.zh.md: 0c28d61764415a65c71adc7f9b7060c55f10d23f diff --git a/.agents/notes/implemented/architecture/2026-08-19-shared-win32-process-primitives.i18n.yaml b/.agents/notes/implemented/architecture/2026-08-19-shared-win32-process-primitives.i18n.yaml deleted file mode 100644 index 90243395ef..0000000000 --- a/.agents/notes/implemented/architecture/2026-08-19-shared-win32-process-primitives.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-08-19-shared-win32-process-primitives.md -2026-08-19-shared-win32-process-primitives.md: 8765e5f7350dab56ad42169f6e16b55679ca8982 -2026-08-19-shared-win32-process-primitives.zh.md: f1cdfd32dae3ef83980fe837b664e44274f05583 diff --git a/.agents/notes/implemented/architecture/2026-08-19-web-index-injection-table.i18n.yaml b/.agents/notes/implemented/architecture/2026-08-19-web-index-injection-table.i18n.yaml deleted file mode 100644 index d3fab99c56..0000000000 --- a/.agents/notes/implemented/architecture/2026-08-19-web-index-injection-table.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-08-19-web-index-injection-table.md -2026-08-19-web-index-injection-table.md: 050690946a73ce453946f6d1152c9e86e1ba3aaf -2026-08-19-web-index-injection-table.zh.md: 27d1cbce1dc39ebe22e0b79e52f9ce935279ee69 diff --git a/.agents/notes/implemented/architecture/2026-08-20-client-session-conversation-ownership.i18n.yaml b/.agents/notes/implemented/architecture/2026-08-20-client-session-conversation-ownership.i18n.yaml index 6de3fe99ef..7f7cdf3089 100644 --- a/.agents/notes/implemented/architecture/2026-08-20-client-session-conversation-ownership.i18n.yaml +++ b/.agents/notes/implemented/architecture/2026-08-20-client-session-conversation-ownership.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-08-20-client-session-conversation-ownership.md -2026-08-20-client-session-conversation-ownership.md: 34848b3d9be4046993f11290a96f963d9cc78bba -2026-08-20-client-session-conversation-ownership.zh.md: 48557a2fc81a71858cc38c96fea630c0aa190c89 +2026-08-20-client-session-conversation-ownership.md: 89f27f745c13e070b7f9794d98747bc73bda3b5a +2026-08-20-client-session-conversation-ownership.zh.md: 79be1b898a1fb5a75e5438d55d739d84775fe6d9 diff --git a/.agents/notes/implemented/architecture/2026-08-20-client-session-conversation-ownership.md b/.agents/notes/implemented/architecture/2026-08-20-client-session-conversation-ownership.md index 34848b3d9b..89f27f745c 100644 --- a/.agents/notes/implemented/architecture/2026-08-20-client-session-conversation-ownership.md +++ b/.agents/notes/implemented/architecture/2026-08-20-client-session-conversation-ownership.md @@ -302,7 +302,7 @@ It registers the `chat` target source through `ctx.uiSession.provide()`. `ChatVi Only visible non-command Chat Nodes activate Chat. Ordinary command-only history keeps the Hero visible; the `/goal` `command-input` Node activates a fresh Conversation. -The historical-image cache moved to `ui-conversation` (`ctx.uiConversation.imageUrl`), so Chat and Trajectory share one authorized read and one browser URL per session attachment ([Trajectory durable image attachments](../feature/2026-08-24-trajectory-image-attachments.md)); draft images remain part of Conversation input. +The historical-image cache moved to `ui-conversation` (`ctx.uiConversation.imageUrl`), so Chat and Trajectory share one authorized read and one browser URL per session attachment ([Trajectory durable image attachments](../../archived/feature/2026-08-24-trajectory-image-attachments.md)); draft images remain part of Conversation input. ### Trajectory owner diff --git a/.agents/notes/implemented/architecture/2026-08-20-client-session-conversation-ownership.zh.md b/.agents/notes/implemented/architecture/2026-08-20-client-session-conversation-ownership.zh.md index 48557a2fc8..79be1b898a 100644 --- a/.agents/notes/implemented/architecture/2026-08-20-client-session-conversation-ownership.zh.md +++ b/.agents/notes/implemented/architecture/2026-08-20-client-session-conversation-ownership.zh.md @@ -302,7 +302,7 @@ Draft 与输入状态属于 Conversation UI,不进入 Session snapshot。Queue Chat activity 只由可见且非 command 的 Chat Node 激活。普通 command-only history 保持 Hero,`/goal` 的 `command-input` Node 激活 fresh Conversation。 -历史图片 cache 已移入 `ui-conversation`(`ctx.uiConversation.imageUrl`),Chat 与 Trajectory 对同一会话附件共享一次授权读取和一个浏览器 URL([Trajectory 持久化图片附件](../feature/2026-08-24-trajectory-image-attachments.zh.md));Draft 图片仍属于 Conversation input。 +历史图片 cache 已移入 `ui-conversation`(`ctx.uiConversation.imageUrl`),Chat 与 Trajectory 对同一会话附件共享一次授权读取和一个浏览器 URL([Trajectory 持久化图片附件](../../archived/feature/2026-08-24-trajectory-image-attachments.md));Draft 图片仍属于 Conversation input。 ### Trajectory owner diff --git a/.agents/notes/implemented/architecture/2026-08-20-web-composer-lexical-editor.i18n.yaml b/.agents/notes/implemented/architecture/2026-08-20-web-composer-lexical-editor.i18n.yaml deleted file mode 100644 index b151e5dca9..0000000000 --- a/.agents/notes/implemented/architecture/2026-08-20-web-composer-lexical-editor.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-08-20-web-composer-lexical-editor.md -2026-08-20-web-composer-lexical-editor.md: bc1f2f55c894ef547454d59977c70d696c071529 -2026-08-20-web-composer-lexical-editor.zh.md: 2d61debd9d6cf028e16da31005cf85021ab98bbf diff --git a/.agents/notes/implemented/architecture/2026-08-20-webworker-node-face.i18n.yaml b/.agents/notes/implemented/architecture/2026-08-20-webworker-node-face.i18n.yaml deleted file mode 100644 index 664cdf8003..0000000000 --- a/.agents/notes/implemented/architecture/2026-08-20-webworker-node-face.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-08-20-webworker-node-face.md -2026-08-20-webworker-node-face.md: 05c3bfe7fa07b34189229f6454be597d4956226a -2026-08-20-webworker-node-face.zh.md: 79e444275cd99d0b060e021d695ee36900ca2321 diff --git a/.agents/notes/implemented/architecture/2026-08-20-webworker-pack-lowering-and-preview.i18n.yaml b/.agents/notes/implemented/architecture/2026-08-20-webworker-pack-lowering-and-preview.i18n.yaml deleted file mode 100644 index 7d7be92484..0000000000 --- a/.agents/notes/implemented/architecture/2026-08-20-webworker-pack-lowering-and-preview.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-08-20-webworker-pack-lowering-and-preview.md -2026-08-20-webworker-pack-lowering-and-preview.md: 24dd5ba6e3eb633253321b219781b537f1faf429 -2026-08-20-webworker-pack-lowering-and-preview.zh.md: 1976c7e5915fd132d2477167deff2bc21b8859d1 diff --git a/.agents/notes/implemented/architecture/2026-08-21-session-log-read-intent.i18n.yaml b/.agents/notes/implemented/architecture/2026-08-21-session-log-read-intent.i18n.yaml deleted file mode 100644 index c002ef3859..0000000000 --- a/.agents/notes/implemented/architecture/2026-08-21-session-log-read-intent.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-08-21-session-log-read-intent.md -2026-08-21-session-log-read-intent.md: 81cdd770886b24588052d9860e42e4a07650fb03 -2026-08-21-session-log-read-intent.zh.md: e5d0425981e6425323260661bee42281b1e96c98 diff --git a/.agents/notes/implemented/architecture/2026-08-22-single-dsh-application-launcher.i18n.yaml b/.agents/notes/implemented/architecture/2026-08-22-single-dsh-application-launcher.i18n.yaml index 4d503cf33a..43ff35c345 100644 --- a/.agents/notes/implemented/architecture/2026-08-22-single-dsh-application-launcher.i18n.yaml +++ b/.agents/notes/implemented/architecture/2026-08-22-single-dsh-application-launcher.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-08-22-single-dsh-application-launcher.md -2026-08-22-single-dsh-application-launcher.md: 068c59c1695ac41216e4df7012eaeb9f80e1e5a6 -2026-08-22-single-dsh-application-launcher.zh.md: 1e082a3d6de391c70a38031caafc44781bc2c7e4 +2026-08-22-single-dsh-application-launcher.md: 5729ed770b1d26969079e6341d2d2da4b17d0b90 +2026-08-22-single-dsh-application-launcher.zh.md: 45d5b9758fd1f01057de0f34e580249b63f9877e diff --git a/.agents/notes/implemented/architecture/2026-08-22-single-dsh-application-launcher.md b/.agents/notes/implemented/architecture/2026-08-22-single-dsh-application-launcher.md index 068c59c169..5729ed770b 100644 --- a/.agents/notes/implemented/architecture/2026-08-22-single-dsh-application-launcher.md +++ b/.agents/notes/implemented/architecture/2026-08-22-single-dsh-application-launcher.md @@ -20,7 +20,7 @@ Vendor CLIs, build-only and test-only executables, direct in-process plugin moun ### Profile applications -`@deepseek-ai/dsh-sdk-app` and `@deepseek-ai/dsh-acp-app` compose the full protocol applications over `@deepseek-ai/dsh-base`. The SDK bundle adds the JSON-RPC server plus app-owned help and stdio lifetime; the ACP bundle adds the automation-only ACP server plus the same application responsibilities. Both adopt the base model, tools, persistence, settings, credentials, policy, and environment behavior. The [standalone sdk-minimal profile](2026-08-24-standalone-sdk-minimal-profile.md) reuses SDK startup and JSON-RPC serving but deliberately owns a complete explicit tree without `dsh-base`. +`@deepseek-ai/dsh-sdk-app` and `@deepseek-ai/dsh-acp-app` compose the full protocol applications over `@deepseek-ai/dsh-base`. The SDK bundle adds the JSON-RPC server plus app-owned help and stdio lifetime; the ACP bundle adds the automation-only ACP server plus the same application responsibilities. Both adopt the base model, tools, persistence, settings, credentials, policy, and environment behavior. The [standalone sdk-minimal profile](../../archived/architecture/2026-08-24-standalone-sdk-minimal-profile.md) reuses SDK startup and JSON-RPC serving but deliberately owns a complete explicit tree without `dsh-base`. Profile manifests own patch reload: @@ -48,7 +48,7 @@ Direct SDK use follows normal Harness-home resolution: explicit `dshHome`, inher The Python runtime wheel packages the ordinary `@deepseek-ai/dsh` CLI from `node_modules/@deepseek-ai/dsh/lib/bin.js` through the private `dsh-python-runtime-closure` deploy manifest. The Python client selects `dsh --profile sdk` by default, ordered patch files, and an explicit Harness home; the runnable example under `python/sdk/examples` selects `sdk-minimal`. The installed `dsh` console command exposes the same profile grammar and the separately packaged `web` application. -The executable family is `deepseek-harness-sdk-runtime--`. The SDK wire, wheel and import distribution names, sidecar names, and wire identity `deepseek-harness-sdk-runtime` remain stable. The SDK package family is `@deepseek-ai/dsh-sdk-client`, `@deepseek-ai/dsh-sdk-protocol`, and `@deepseek-ai/dsh-sdk-jsonrpc-server`; `@deepseek-ai/dsh-acp` remains the ACP protocol plugin. There is no Python-specific Node application, checked-in complete config, compatibility package, forwarding executable, fallback parser, or SDK/ACP launcher alias. The [Python profile-runtime decision](2026-08-23-python-sdk-dsh-profile-runtime.md) owns this launch, and the [Windows x64 runtime decision](2026-08-23-python-sdk-windows-x64-runtime.md) owns the Windows carrier. +The executable family is `deepseek-harness-sdk-runtime--`. The SDK wire, wheel and import distribution names, sidecar names, and wire identity `deepseek-harness-sdk-runtime` remain stable. The SDK package family is `@deepseek-ai/dsh-sdk-client`, `@deepseek-ai/dsh-sdk-protocol`, and `@deepseek-ai/dsh-sdk-jsonrpc-server`; `@deepseek-ai/dsh-acp` remains the ACP protocol plugin. There is no Python-specific Node application, checked-in complete config, compatibility package, forwarding executable, fallback parser, or SDK/ACP launcher alias. [docs/architecture.md](../../../../docs/architecture.md) owns this launch, and the [`python/sdk-runtime` README](../../../../python/sdk-runtime/README.md) owns the Windows carrier. ### Enforcement @@ -56,9 +56,9 @@ The executable family is `deepseek-harness-sdk-runtime--`. The S ## Existing decisions and supersession -This decision supersedes the application-launch and package-name facts in [profile plugin bundles](2026-08-05-profile-plugin-bundles.md), [TypeScript SDK client and subagent backend](../feature/2026-07-27-typescript-sdk-and-sdk-subagent-backend.md), [remove the SDK project toolchain](../simplification/2026-08-11-remove-sdk-project-toolchain.md), and [single-file Python SDK runtime distribution](2026-07-10-single-file-executable-sdk-runtime-distribution.md). Those notes retain independent authority for profile layering, client/wire semantics, deleted project tooling, and native packaging. +This decision supersedes the application-launch and package-name facts in [profile plugin bundles](2026-08-05-profile-plugin-bundles.md), [TypeScript SDK client and subagent backend](../../archived/feature/2026-07-27-typescript-sdk-and-sdk-subagent-backend.md), [remove the SDK project toolchain](../../archived/simplification/2026-08-11-remove-sdk-project-toolchain.md), and [single-file Python SDK runtime distribution](2026-07-10-single-file-executable-sdk-runtime-distribution.md). Those notes retain independent authority for profile layering, client/wire semantics, deleted project tooling, and native packaging. -The [ACP automation-only protocol](../simplification/2026-07-23-acp-automation-only-protocol.md) remains authoritative for ACP wire and interaction scope. The [repository naming contract](2026-08-11-repository-naming-contract-and-rename-ledger.md) remains authoritative for role-based package names. The [standalone sdk-minimal profile](2026-08-24-standalone-sdk-minimal-profile.md) partially supersedes this note's base-first rule and complete-tree alternative while retaining this note's launcher ownership. No active note is fully superseded or eligible for archival. +The [ACP automation-only protocol](../simplification/2026-07-23-acp-automation-only-protocol.md) remains authoritative for ACP wire and interaction scope. The [adding-a-package cookbook](../../../../docs/cookbook/adding-a-package.md) owns role-based package names. The [standalone sdk-minimal profile](../../archived/architecture/2026-08-24-standalone-sdk-minimal-profile.md) partially supersedes this note's base-first rule and complete-tree alternative while retaining this note's launcher ownership. No active note is fully superseded or eligible for archival. ## Alternatives considered @@ -66,7 +66,7 @@ The [ACP automation-only protocol](../simplification/2026-07-23-acp-automation-o **Keep forwarding compatibility bins.** Rejected: a forwarding executable remains another public launch name and compatibility promise. The pre-release repository can move callers directly to profiles. -**Put caller-supplied complete Cordis trees behind profile wrappers.** Rejected: that centralizes argv without centralizing application composition. Full profiles use `dsh-base` plus thin app bundles so shared policy has one owner. A repository-owned, versioned standalone bundle is allowed only when an explicit roster is the product behavior, as [sdk-minimal](2026-08-24-standalone-sdk-minimal-profile.md) records. +**Put caller-supplied complete Cordis trees behind profile wrappers.** Rejected: that centralizes argv without centralizing application composition. Full profiles use `dsh-base` plus thin app bundles so shared policy has one owner. A repository-owned, versioned standalone bundle is allowed only when an explicit roster is the product behavior, as [sdk-minimal](../../archived/architecture/2026-08-24-standalone-sdk-minimal-profile.md) records. **Accept inline plugins or a complete `cordis.yml` in the TypeScript constructor.** Rejected: the SDK would become another package installer and application composer. Named profiles and patch files already provide persistent and per-launch customization through one resolution model. diff --git a/.agents/notes/implemented/architecture/2026-08-22-single-dsh-application-launcher.zh.md b/.agents/notes/implemented/architecture/2026-08-22-single-dsh-application-launcher.zh.md index 1e082a3d6d..45d5b9758f 100644 --- a/.agents/notes/implemented/architecture/2026-08-22-single-dsh-application-launcher.zh.md +++ b/.agents/notes/implemented/architecture/2026-08-22-single-dsh-application-launcher.zh.md @@ -20,7 +20,7 @@ Vendor CLI、仅用于构建和测试的可执行文件、进程内直接挂载 ### Profile 应用 -`@deepseek-ai/dsh-sdk-app` 与 `@deepseek-ai/dsh-acp-app` 在 `@deepseek-ai/dsh-base` 之上组合完整协议应用。SDK 组合包增加 JSON-RPC 服务器、应用自有帮助和 stdio 生命周期;ACP 组合包增加仅用于自动化的 ACP 服务器与相同的应用职责。两者都采用 base 层的模型、工具、持久化、settings、credentials、策略和环境行为。[独立 sdk-minimal profile](2026-08-24-standalone-sdk-minimal-profile.zh.md)复用 SDK 启动与 JSON-RPC 服务,但刻意拥有不含 `dsh-base` 的完整显式配置树。 +`@deepseek-ai/dsh-sdk-app` 与 `@deepseek-ai/dsh-acp-app` 在 `@deepseek-ai/dsh-base` 之上组合完整协议应用。SDK 组合包增加 JSON-RPC 服务器、应用自有帮助和 stdio 生命周期;ACP 组合包增加仅用于自动化的 ACP 服务器与相同的应用职责。两者都采用 base 层的模型、工具、持久化、settings、credentials、策略和环境行为。[独立 sdk-minimal profile](../../archived/architecture/2026-08-24-standalone-sdk-minimal-profile.md)复用 SDK 启动与 JSON-RPC 服务,但刻意拥有不含 `dsh-base` 的完整显式配置树。 Profile manifest 负责 patch 重载: @@ -48,7 +48,7 @@ SDK 用户通过 profile 自定义插件。`dsh plugin --profile ...` 管 Python 运行时 wheel 通过私有 `dsh-python-runtime-closure` 部署 manifest,打包来自 `node_modules/@deepseek-ai/dsh/lib/bin.js` 的普通 `@deepseek-ai/dsh` CLI。Python 客户端默认选择 `dsh --profile sdk`、有序 patch 文件与显式 Harness home;`python/sdk/examples` 下的可运行示例选择 `sdk-minimal`。安装的 `dsh` 控制台命令暴露相同 profile 语法与单独打包的 `web` 应用。 -可执行文件族是 `deepseek-harness-sdk-runtime--`。SDK 协议格式、wheel 与 import 分发名称、伴随文件名称,以及协议 identity `deepseek-harness-sdk-runtime` 保持稳定。SDK 包族是 `@deepseek-ai/dsh-sdk-client`、`@deepseek-ai/dsh-sdk-protocol` 与 `@deepseek-ai/dsh-sdk-jsonrpc-server`;`@deepseek-ai/dsh-acp` 继续作为 ACP 协议插件。仓库不保留 Python 专用 Node 应用、检入的完整配置、兼容包、转发可执行文件、后备解析器或 SDK/ACP 启动别名。[Python profile 运行时决策](2026-08-23-python-sdk-dsh-profile-runtime.zh.md)负责该启动方式,[Windows x64 运行时决策](2026-08-23-python-sdk-windows-x64-runtime.zh.md)负责 Windows 载体。 +可执行文件族是 `deepseek-harness-sdk-runtime--`。SDK 协议格式、wheel 与 import 分发名称、伴随文件名称,以及协议 identity `deepseek-harness-sdk-runtime` 保持稳定。SDK 包族是 `@deepseek-ai/dsh-sdk-client`、`@deepseek-ai/dsh-sdk-protocol` 与 `@deepseek-ai/dsh-sdk-jsonrpc-server`;`@deepseek-ai/dsh-acp` 继续作为 ACP 协议插件。仓库不保留 Python 专用 Node 应用、检入的完整配置、兼容包、转发可执行文件、后备解析器或 SDK/ACP 启动别名。[docs/architecture.md](../../../../docs/architecture.zh.md)负责该启动方式,[`python/sdk-runtime` README](../../../../python/sdk-runtime/README.zh.md)负责 Windows 载体。 ### 强制校验 @@ -56,9 +56,9 @@ Python 运行时 wheel 通过私有 `dsh-python-runtime-closure` 部署 manifest ## 既有决策与取代关系 -本决策取代 [profile 插件组合包](2026-08-05-profile-plugin-bundles.zh.md)、[TypeScript SDK 客户端与 SDK subagent 后端](../feature/2026-07-27-typescript-sdk-and-sdk-subagent-backend.zh.md)、[移除 SDK 项目工具链](../simplification/2026-08-11-remove-sdk-project-toolchain.zh.md)和[单文件 Python SDK 运行时分发](2026-07-10-single-file-executable-sdk-runtime-distribution.zh.md)中的应用启动与包名事实。这些 Note 对 profile 分层、客户端/协议语义、已删除的项目工具链与原生打包仍分别具有独立权威。 +本决策取代 [profile 插件组合包](2026-08-05-profile-plugin-bundles.zh.md)、[TypeScript SDK 客户端与 SDK subagent 后端](../../archived/feature/2026-07-27-typescript-sdk-and-sdk-subagent-backend.md)、[移除 SDK 项目工具链](../../archived/simplification/2026-08-11-remove-sdk-project-toolchain.md)和[单文件 Python SDK 运行时分发](2026-07-10-single-file-executable-sdk-runtime-distribution.zh.md)中的应用启动与包名事实。这些 Note 对 profile 分层、客户端/协议语义、已删除的项目工具链与原生打包仍分别具有独立权威。 -[ACP 仅自动化协议](../simplification/2026-07-23-acp-automation-only-protocol.zh.md)继续负责 ACP 协议格式与交互范围。[仓库命名约定](2026-08-11-repository-naming-contract-and-rename-ledger.zh.md)继续负责基于角色的包名。[独立 sdk-minimal profile](2026-08-24-standalone-sdk-minimal-profile.zh.md)部分取代本 Note 的 base 优先规则与完整配置树替代方案,同时保留本 Note 对 launcher 所有权的决策。没有任何活跃 Note 被完全取代,也没有 Note 符合归档条件。 +[ACP 仅自动化协议](../simplification/2026-07-23-acp-automation-only-protocol.zh.md)继续负责 ACP 协议格式与交互范围。[添加包实操手册](../../../../docs/cookbook/adding-a-package.zh.md)负责基于角色的包名。[独立 sdk-minimal profile](../../archived/architecture/2026-08-24-standalone-sdk-minimal-profile.md)部分取代本 Note 的 base 优先规则与完整配置树替代方案,同时保留本 Note 对 launcher 所有权的决策。没有任何活跃 Note 被完全取代,也没有 Note 符合归档条件。 ## 考虑过的替代方案 @@ -66,7 +66,7 @@ Python 运行时 wheel 通过私有 `dsh-python-runtime-closure` 部署 manifest **保留转发兼容 bin。** 拒绝:转发可执行文件仍然形成另一个公开启动名称与兼容承诺。预发布仓库可以让调用方直接迁移到 profile。 -**把调用方提供的完整 Cordis 树放到 profile wrapper 后面。** 拒绝:这只集中 argv,没有集中应用组合。完整 profile 使用 `dsh-base` 加轻量应用组合包,使共享策略只有一个归属。只有当显式清单本身属于产品行为时,才允许仓库自有且有版本的独立组合包,具体见 [sdk-minimal](2026-08-24-standalone-sdk-minimal-profile.zh.md)。 +**把调用方提供的完整 Cordis 树放到 profile wrapper 后面。** 拒绝:这只集中 argv,没有集中应用组合。完整 profile 使用 `dsh-base` 加轻量应用组合包,使共享策略只有一个归属。只有当显式清单本身属于产品行为时,才允许仓库自有且有版本的独立组合包,具体见 [sdk-minimal](../../archived/architecture/2026-08-24-standalone-sdk-minimal-profile.md)。 **在 TypeScript 构造函数中接受内联插件或完整 `cordis.yml`。** 拒绝:SDK 会因此成为另一个包安装器和应用组合器。具名 profile 与 patch 文件已通过统一解析模型提供持久与逐次启动自定义。 diff --git a/.agents/notes/implemented/architecture/2026-08-23-client-derived-tool-presentation.i18n.yaml b/.agents/notes/implemented/architecture/2026-08-23-client-derived-tool-presentation.i18n.yaml index dc2902d1ca..8db5bedb52 100644 --- a/.agents/notes/implemented/architecture/2026-08-23-client-derived-tool-presentation.i18n.yaml +++ b/.agents/notes/implemented/architecture/2026-08-23-client-derived-tool-presentation.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-08-23-client-derived-tool-presentation.md -2026-08-23-client-derived-tool-presentation.md: 5598c1fbc6073a71f63a20274cd5a791b6b5e6b3 -2026-08-23-client-derived-tool-presentation.zh.md: 5a87433377af58b1ca9d378b76393dada4ca4a1e +2026-08-23-client-derived-tool-presentation.md: ada444ab06bebd3e50018cea4a8dcde6b13956c4 +2026-08-23-client-derived-tool-presentation.zh.md: 8c1d60d5ed11e79b4428c7245f0db9c6b91c8b2c diff --git a/.agents/notes/implemented/architecture/2026-08-23-client-derived-tool-presentation.md b/.agents/notes/implemented/architecture/2026-08-23-client-derived-tool-presentation.md index 5598c1fbc6..ada444ab06 100644 --- a/.agents/notes/implemented/architecture/2026-08-23-client-derived-tool-presentation.md +++ b/.agents/notes/implemented/architecture/2026-08-23-client-derived-tool-presentation.md @@ -684,9 +684,9 @@ The absence of optional `view` is a prerelease wire-type decision shared by all ## Relationship to Existing Decisions -This note partially supersedes the implementation fact in [Client tool presentation ownership](2026-08-08-client-tool-presentation-ownership.md) that “card models receive Host views.” Its core decisions remain: `ui-tool` owns presentation, business plugins use keyed slots, and Conversation owns only lifecycle and topology. +This note partially supersedes the implementation fact in [Client tool presentation ownership](../../archived/architecture/2026-08-08-client-tool-presentation-ownership.md) that “card models receive Host views.” Its core decisions remain: `ui-tool` owns presentation, business plugins use keyed slots, and Conversation owns only lifecycle and topology. -This note preserves [toolview dissolution](2026-07-23-toolview-dissolution.md): the Client still has one slot registration model and does not restore `ToolViewRegistry`. +This note preserves [toolview dissolution](../../archived/architecture/2026-07-23-toolview-dissolution.md): the Client still has one slot registration model and does not restore `ToolViewRegistry`. This note narrows the consumer scope of the [render-intent union](2026-07-02-tool-render-intent-union.md). The Host APIs and types remain, while the Session Remote and Web Client do not consume them. This note owns the transport split without rewriting that presenter decision. diff --git a/.agents/notes/implemented/architecture/2026-08-23-client-derived-tool-presentation.zh.md b/.agents/notes/implemented/architecture/2026-08-23-client-derived-tool-presentation.zh.md index 5a87433377..8c1d60d5ed 100644 --- a/.agents/notes/implemented/architecture/2026-08-23-client-derived-tool-presentation.zh.md +++ b/.agents/notes/implemented/architecture/2026-08-23-client-derived-tool-presentation.zh.md @@ -684,9 +684,9 @@ optional `view` 的缺失是所有 consumer 共同遵守的预发布 wire 类型 ## 与现有决策的关系 -本文部分取代 [Client 工具展示所有权](2026-08-08-client-tool-presentation-ownership.zh.md) 中“card model 接收 Host view”的实现事实;`ui-tool` 拥有展示、业务插件使用 keyed slot、Conversation 只拥有生命周期与拓扑的核心决定保持不变。 +本文部分取代 [Client 工具展示所有权](../../archived/architecture/2026-08-08-client-tool-presentation-ownership.md) 中“card model 接收 Host view”的实现事实;`ui-tool` 拥有展示、业务插件使用 keyed slot、Conversation 只拥有生命周期与拓扑的核心决定保持不变。 -本文保留 [toolview 溶解](2026-07-23-toolview-dissolution.zh.md) 的决定:Client 仍只有 slot 注册模型,不恢复 `ToolViewRegistry`。 +本文保留 [toolview 溶解](../../archived/architecture/2026-07-23-toolview-dissolution.md) 的决定:Client 仍只有 slot 注册模型,不恢复 `ToolViewRegistry`。 本文收窄 [render-intent union](2026-07-02-tool-render-intent-union.zh.md) 的消费范围:Host API 与类型保留,Session Remote 与 Web Client 不消费它。本文独自规定 transport 拆分,不改写该 presenter 决策。 diff --git a/.agents/notes/implemented/architecture/2026-08-23-cross-realm-cdp-inspector.i18n.yaml b/.agents/notes/implemented/architecture/2026-08-23-cross-realm-cdp-inspector.i18n.yaml deleted file mode 100644 index 47b37fad16..0000000000 --- a/.agents/notes/implemented/architecture/2026-08-23-cross-realm-cdp-inspector.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-08-23-cross-realm-cdp-inspector.md -2026-08-23-cross-realm-cdp-inspector.md: e6e1d48da4f7b2dfab2772e24cb49711e3e50f5a -2026-08-23-cross-realm-cdp-inspector.zh.md: 9d67868caf9b4e5e0eb06583facd608b71468b22 diff --git a/.agents/notes/implemented/architecture/2026-08-23-locale-owned-client-ui-copy.i18n.yaml b/.agents/notes/implemented/architecture/2026-08-23-locale-owned-client-ui-copy.i18n.yaml index a0680163b7..49ee6b91b8 100644 --- a/.agents/notes/implemented/architecture/2026-08-23-locale-owned-client-ui-copy.i18n.yaml +++ b/.agents/notes/implemented/architecture/2026-08-23-locale-owned-client-ui-copy.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-08-23-locale-owned-client-ui-copy.md -2026-08-23-locale-owned-client-ui-copy.md: 5f645a34c386ba340c5a8d52e8bdef2258dd77bd -2026-08-23-locale-owned-client-ui-copy.zh.md: 996ef56b17637a4ca60b8793075e9975faf0e1e1 +2026-08-23-locale-owned-client-ui-copy.md: 623189b8faa45f0ef2a1b724d3e050d33f7d59bd +2026-08-23-locale-owned-client-ui-copy.zh.md: e2a6f49de89e6e6ba2734dd69cf536a3e13d2aea diff --git a/.agents/notes/implemented/architecture/2026-08-23-locale-owned-client-ui-copy.md b/.agents/notes/implemented/architecture/2026-08-23-locale-owned-client-ui-copy.md index 5f645a34c3..623189b8fa 100644 --- a/.agents/notes/implemented/architecture/2026-08-23-locale-owned-client-ui-copy.md +++ b/.agents/notes/implemented/architecture/2026-08-23-locale-owned-client-ui-copy.md @@ -6,7 +6,7 @@ English | [中文](2026-08-23-locale-owned-client-ui-copy.zh.md) ## Problem -Typed locale namespaces and bilingual dictionary parity proved that registered dictionaries were complete, but they could not prove that presentation code used them. JSX text, accessibility attributes, formatter returns, and zero-Cordis primitive defaults could bypass `t` while every locale check remained green. The deferred and supposedly language-neutral exceptions recorded in the [initial full-rollout decision](2026-07-30-client-locale-full-rollout.md) accumulated into a mixed-language UI, especially in trajectory inspection and generic Tool cards. +Typed locale namespaces and bilingual dictionary parity proved that registered dictionaries were complete, but they could not prove that presentation code used them. JSX text, accessibility attributes, formatter returns, and zero-Cordis primitive defaults could bypass `t` while every locale check remained green. The deferred and supposedly language-neutral exceptions recorded in the [initial full-rollout decision](../../archived/architecture/2026-07-30-client-locale-full-rollout.md) accumulated into a mixed-language UI, especially in trajectory inspection and generic Tool cards. ## Decision @@ -18,7 +18,7 @@ Typed locale namespaces and bilingual dictionary parity proved that registered d **`verify-client-ui-i18n` enforces source ownership.** The TypeScript-AST check discovers every package `src/client` tree that contains TSX, all helper TS files under `packages/client/ui-*`, and the web app source. It rejects natural-language JSX text, copy-bearing attributes and component props, literal JSX branches, label/copy data, named copy helpers, string-returning display formatters, and destructuring defaults. Locale dictionary owners and immutable language tokens are the narrow syntactic exclusions. Discovery refuses a narrowed corpus, unit fixtures pin admitted and excluded forms, and the check runs in the static CI and `hygiene` graphs. Dictionary-key parity remains a separate check: one gate proves copy enters the locale path, while the other proves both shipped languages implement that path. -The product-authored error and design-literal exclusions, primitive defaults, and trajectory deferral in the [initial rollout](2026-07-30-client-locale-full-rollout.md) are superseded by this decision. Its label-thunk, typed-seat, browser-locale, date-formatting, and search-placeholder decisions remain active. +The product-authored error and design-literal exclusions, primitive defaults, and trajectory deferral in the [initial rollout](../../archived/architecture/2026-07-30-client-locale-full-rollout.md) are superseded by this decision. Its label-thunk, typed-seat, browser-locale, date-formatting, and search-placeholder decisions remain active. ## Verification diff --git a/.agents/notes/implemented/architecture/2026-08-23-locale-owned-client-ui-copy.zh.md b/.agents/notes/implemented/architecture/2026-08-23-locale-owned-client-ui-copy.zh.md index 996ef56b17..e2a6f49de8 100644 --- a/.agents/notes/implemented/architecture/2026-08-23-locale-owned-client-ui-copy.zh.md +++ b/.agents/notes/implemented/architecture/2026-08-23-locale-owned-client-ui-copy.zh.md @@ -6,7 +6,7 @@ Status: implemented ## Problem -typed locale namespace 与双语字典对等性可以证明已注册字典完整,却无法证明展示代码使用了字典。JSX 文本、无障碍属性、格式化函数返回值和 zero-Cordis 原子组件默认值都可能绕过 `t`,而全部 locale 检查仍保持绿色。[最初的全量接入决策](2026-07-30-client-locale-full-rollout.zh.md)中缓做或假定为语言无关的例外逐渐形成混合语言 UI,trajectory 检查面和通用工具卡尤为明显。 +typed locale namespace 与双语字典对等性可以证明已注册字典完整,却无法证明展示代码使用了字典。JSX 文本、无障碍属性、格式化函数返回值和 zero-Cordis 原子组件默认值都可能绕过 `t`,而全部 locale 检查仍保持绿色。[最初的全量接入决策](../../archived/architecture/2026-07-30-client-locale-full-rollout.md)中缓做或假定为语言无关的例外逐渐形成混合语言 UI,trajectory 检查面和通用工具卡尤为明显。 ## Decision @@ -18,7 +18,7 @@ typed locale namespace 与双语字典对等性可以证明已注册字典完整 **`verify-client-ui-i18n` 强制源码归属。** 基于 TypeScript AST 的检查会发现每个包含 TSX 的 package `src/client` 目录树、`packages/client/ui-*` 下的所有辅助 TS 文件和 web 应用源码;它拒绝自然语言 JSX 文本、承载文案的属性与组件 prop、JSX 字面量分支、label/copy 数据、具名文案辅助函数、返回字符串的展示格式化函数和解构默认值。locale 字典 owner 与不可变语言 token 是严格的语法级排除项。发现范围缩窄会直接失败,单元 fixture 固定纳入与排除形态,检查加入静态 CI 与 `hygiene` 图。字典 key 对等性仍由独立检查负责:一道门禁证明文案进入 locale 路径,另一道门禁证明两种发布语言都实现该路径。 -[最初接入决策](2026-07-30-client-locale-full-rollout.zh.md)中的产品自产错误与设计字面量例外、原子组件默认文案和 trajectory 缓做均由本决定取代;其 label thunk、typed 席位、浏览器 locale、日期格式化和搜索占位行决定仍有效。 +[最初接入决策](../../archived/architecture/2026-07-30-client-locale-full-rollout.md)中的产品自产错误与设计字面量例外、原子组件默认文案和 trajectory 缓做均由本决定取代;其 label thunk、typed 席位、浏览器 locale、日期格式化和搜索占位行决定仍有效。 ## Verification diff --git a/.agents/notes/implemented/architecture/2026-08-23-python-sdk-dsh-profile-runtime.i18n.yaml b/.agents/notes/implemented/architecture/2026-08-23-python-sdk-dsh-profile-runtime.i18n.yaml deleted file mode 100644 index 448cf3bafe..0000000000 --- a/.agents/notes/implemented/architecture/2026-08-23-python-sdk-dsh-profile-runtime.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-08-23-python-sdk-dsh-profile-runtime.md -2026-08-23-python-sdk-dsh-profile-runtime.md: 07e3bd522b1952a8e6257f79eb292fa0ef18e5ef -2026-08-23-python-sdk-dsh-profile-runtime.zh.md: 1b68c50d93e0fd6d2555115891772b00f95bb7d4 diff --git a/.agents/notes/implemented/architecture/2026-08-23-python-sdk-windows-x64-runtime.i18n.yaml b/.agents/notes/implemented/architecture/2026-08-23-python-sdk-windows-x64-runtime.i18n.yaml deleted file mode 100644 index ba521bfc87..0000000000 --- a/.agents/notes/implemented/architecture/2026-08-23-python-sdk-windows-x64-runtime.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-08-23-python-sdk-windows-x64-runtime.md -2026-08-23-python-sdk-windows-x64-runtime.md: 1b59dec47036e7351b212b408a31847a1a1c9639 -2026-08-23-python-sdk-windows-x64-runtime.zh.md: 75cea660c3e5cc8e0222e72dc2d07a0c802aeecd diff --git a/.agents/notes/implemented/architecture/2026-08-23-webworker-vfs-watch-and-landlock.i18n.yaml b/.agents/notes/implemented/architecture/2026-08-23-webworker-vfs-watch-and-landlock.i18n.yaml deleted file mode 100644 index 4260ae5238..0000000000 --- a/.agents/notes/implemented/architecture/2026-08-23-webworker-vfs-watch-and-landlock.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-08-23-webworker-vfs-watch-and-landlock.md -2026-08-23-webworker-vfs-watch-and-landlock.md: 2705c63aa6bf0f2e2de33d00029a4f41e1b1d4af -2026-08-23-webworker-vfs-watch-and-landlock.zh.md: 4470720e1ff968aa06578b231b054c9053f27283 diff --git a/.agents/notes/implemented/architecture/2026-08-24-cordis-runtime-tree-inspection.i18n.yaml b/.agents/notes/implemented/architecture/2026-08-24-cordis-runtime-tree-inspection.i18n.yaml deleted file mode 100644 index 212a394e8a..0000000000 --- a/.agents/notes/implemented/architecture/2026-08-24-cordis-runtime-tree-inspection.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-08-24-cordis-runtime-tree-inspection.md -2026-08-24-cordis-runtime-tree-inspection.md: 2cd63aa41567adc19d52d584874583183aef3cdc -2026-08-24-cordis-runtime-tree-inspection.zh.md: 88cf2b344d4feef10f3632918539d3cb98750fc9 diff --git a/.agents/notes/implemented/architecture/2026-08-24-standalone-sdk-minimal-profile.i18n.yaml b/.agents/notes/implemented/architecture/2026-08-24-standalone-sdk-minimal-profile.i18n.yaml deleted file mode 100644 index 549a861394..0000000000 --- a/.agents/notes/implemented/architecture/2026-08-24-standalone-sdk-minimal-profile.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-08-24-standalone-sdk-minimal-profile.md -2026-08-24-standalone-sdk-minimal-profile.md: 3c53ea86479742e5bfddd7c13f22d370af90f0e4 -2026-08-24-standalone-sdk-minimal-profile.zh.md: c6f4d705d9e2c3d7c4acd404f94aebc1e83b77f7 diff --git a/.agents/notes/implemented/architecture/2026-08-25-persistence-latency-and-page-size.i18n.yaml b/.agents/notes/implemented/architecture/2026-08-25-persistence-latency-and-page-size.i18n.yaml deleted file mode 100644 index b7147e9af2..0000000000 --- a/.agents/notes/implemented/architecture/2026-08-25-persistence-latency-and-page-size.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-08-25-persistence-latency-and-page-size.md -2026-08-25-persistence-latency-and-page-size.md: 3f8147f50feaee4aac10c5fd3920313611a6f449 -2026-08-25-persistence-latency-and-page-size.zh.md: d50563dcc801d684cd2558c29e7180e99dc25cca diff --git a/.agents/notes/implemented/architecture/2026-08-25-rename-code-mode-to-ptc.i18n.yaml b/.agents/notes/implemented/architecture/2026-08-25-rename-code-mode-to-ptc.i18n.yaml deleted file mode 100644 index 38435b4fcf..0000000000 --- a/.agents/notes/implemented/architecture/2026-08-25-rename-code-mode-to-ptc.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-08-25-rename-code-mode-to-ptc.md -2026-08-25-rename-code-mode-to-ptc.md: 10c81fdca8acc67ab0e5e3b29c785ab4aec1d925 -2026-08-25-rename-code-mode-to-ptc.zh.md: 881ea86030ae09f198f12ac769d5ccd07159dba2 diff --git a/.agents/notes/implemented/architecture/2026-08-25-session-observations-and-projection-owned-client-state.i18n.yaml b/.agents/notes/implemented/architecture/2026-08-25-session-observations-and-projection-owned-client-state.i18n.yaml index df7268de5c..5ced7939be 100644 --- a/.agents/notes/implemented/architecture/2026-08-25-session-observations-and-projection-owned-client-state.i18n.yaml +++ b/.agents/notes/implemented/architecture/2026-08-25-session-observations-and-projection-owned-client-state.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-08-25-session-observations-and-projection-owned-client-state.md -2026-08-25-session-observations-and-projection-owned-client-state.md: 554d003da1e1767b8955be7a067cbea716f130ef -2026-08-25-session-observations-and-projection-owned-client-state.zh.md: a63b0414f8b0250e4cea95ac39a39aa2c62cd958 +2026-08-25-session-observations-and-projection-owned-client-state.md: 71c0aa92ddb2ad5bacb238dcc7f6e44e33f84305 +2026-08-25-session-observations-and-projection-owned-client-state.zh.md: f8d4a629501dd354e1210bccab1a3a3862b8c6c3 diff --git a/.agents/notes/implemented/architecture/2026-08-25-session-observations-and-projection-owned-client-state.md b/.agents/notes/implemented/architecture/2026-08-25-session-observations-and-projection-owned-client-state.md index 554d003da1..71c0aa92dd 100644 --- a/.agents/notes/implemented/architecture/2026-08-25-session-observations-and-projection-owned-client-state.md +++ b/.agents/notes/implemented/architecture/2026-08-25-session-observations-and-projection-owned-client-state.md @@ -164,10 +164,10 @@ These rules apply to new Session-derived Client state even when a direct event s ### Relationship to existing decisions -- [Reusable Session preparation](2026-08-05-session-preparation.md) owns cold materialization, repair, reservation, and publication. Observation adds a shared read lease over that prepared object; it does not move preparation into SessionQuery. +- [Reusable Session preparation](../../archived/architecture/2026-08-05-session-preparation.md) owns cold materialization, repair, reservation, and publication. Observation adds a shared read lease over that prepared object; it does not move preparation into SessionQuery. - [Session history and Remote event transport](2026-08-18-session-history-and-event-transport.md) owns stream generations and replacement semantics. This decision supplies the exact snapshot that opens each journal generation. -- [Projection state and Client views](2026-08-19-session-projection-state-and-client-views.md) owns the distinction between Host fold state and Client values. This decision governs where those values are consumed and how partial list hints differ from a complete baseline. -- [Subagent identity projection](2026-08-06-subagent-list-identity-projection.md) continues to own descriptor folding, the serializable `null` sentinel, and the own-suffix sequence check. This decision supersedes only its independent corpus merge and direct cold-inspection path: listing now uses SessionQuery's corpus and observation. +- [Projection state and Client views](../../archived/architecture/2026-08-19-session-projection-state-and-client-views.md) owns the distinction between Host fold state and Client values. This decision governs where those values are consumed and how partial list hints differ from a complete baseline. +- [Subagent identity projection](../../archived/architecture/2026-08-06-subagent-list-identity-projection.md) continues to own descriptor folding, the serializable `null` sentinel, and the own-suffix sequence check. This decision supersedes only its independent corpus merge and direct cold-inspection path: listing now uses SessionQuery's corpus and observation. - The broader [session projection and command-log proposal](../../proposed/architecture/2026-07-27-session-projection-and-command-log.md) remains proposed for the portions not represented by shipped code. This decision records the shipped observation and Client-ownership subset. ## Verification diff --git a/.agents/notes/implemented/architecture/2026-08-25-session-observations-and-projection-owned-client-state.zh.md b/.agents/notes/implemented/architecture/2026-08-25-session-observations-and-projection-owned-client-state.zh.md index a63b0414f8..f8d4a62950 100644 --- a/.agents/notes/implemented/architecture/2026-08-25-session-observations-and-projection-owned-client-state.zh.md +++ b/.agents/notes/implemented/architecture/2026-08-25-session-observations-and-projection-owned-client-state.zh.md @@ -164,10 +164,10 @@ Client 本地交互状态也继续留在本地:loading 和 error 状态、打 ### 与既有决策的关系 -- [可复用 Session preparation](2026-08-05-session-preparation.zh.md)拥有冷物化、修复、reservation 和发布。Observation 在该 prepared object 之上增加共享读取 lease,并未把 preparation 移入 SessionQuery。 +- [可复用 Session preparation](../../archived/architecture/2026-08-05-session-preparation.md)拥有冷物化、修复、reservation 和发布。Observation 在该 prepared object 之上增加共享读取 lease,并未把 preparation 移入 SessionQuery。 - [Session 历史与 Remote event transport](2026-08-18-session-history-and-event-transport.zh.md)拥有 stream generation 与 replacement 语义。本决策提供每个日志 generation 的精确 opening snapshot。 -- [Projection state 与 Client view](2026-08-19-session-projection-state-and-client-views.zh.md)拥有 Host fold state 和 Client value 的区分。本决策规定这些值在哪里消费,以及部分 list hints 与完整 baseline 的差别。 -- [Subagent identity projection](2026-08-06-subagent-list-identity-projection.zh.md)继续拥有 descriptor folding、可序列化 `null` sentinel 和 own-suffix sequence 检查。本决策只取代其中独立 corpus merge 和直接 cold inspection 路径:listing 改为使用 SessionQuery corpus 和 observation。 +- [Projection state 与 Client view](../../archived/architecture/2026-08-19-session-projection-state-and-client-views.md)拥有 Host fold state 和 Client value 的区分。本决策规定这些值在哪里消费,以及部分 list hints 与完整 baseline 的差别。 +- [Subagent identity projection](../../archived/architecture/2026-08-06-subagent-list-identity-projection.md)继续拥有 descriptor folding、可序列化 `null` sentinel 和 own-suffix sequence 检查。本决策只取代其中独立 corpus merge 和直接 cold inspection 路径:listing 改为使用 SessionQuery corpus 和 observation。 - 更广泛的 [session projection 与 command-log 提案](../../proposed/architecture/2026-07-27-session-projection-and-command-log.zh.md)仍为 proposed,其中尚未由已交付代码体现的部分不受影响。本决策记录已经交付的 observation 与 Client ownership 子集。 ## 验证 diff --git a/.agents/notes/implemented/architecture/2026-08-25-sparse-first-party-prompt-section-orders.i18n.yaml b/.agents/notes/implemented/architecture/2026-08-25-sparse-first-party-prompt-section-orders.i18n.yaml deleted file mode 100644 index 9ac6e44cd5..0000000000 --- a/.agents/notes/implemented/architecture/2026-08-25-sparse-first-party-prompt-section-orders.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-08-25-sparse-first-party-prompt-section-orders.md -2026-08-25-sparse-first-party-prompt-section-orders.md: 3cfdb58af3c576b3e46449a763db1c811073517e -2026-08-25-sparse-first-party-prompt-section-orders.zh.md: 31cbb98eab9eb786ac9d854b76df4c18efb88563 diff --git a/.agents/notes/implemented/architecture/2026-08-26-local-submission-echoes.i18n.yaml b/.agents/notes/implemented/architecture/2026-08-26-local-submission-echoes.i18n.yaml deleted file mode 100644 index 3b77de8bad..0000000000 --- a/.agents/notes/implemented/architecture/2026-08-26-local-submission-echoes.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-08-26-local-submission-echoes.md -2026-08-26-local-submission-echoes.md: 0fdb6b65e6e682a955fab770a543e82715d56d90 -2026-08-26-local-submission-echoes.zh.md: 41b0533f5aa87d64cf0c6976826995c500e89ce7 diff --git a/.agents/notes/implemented/architecture/2026-08-26-models-page-extension-slots.i18n.yaml b/.agents/notes/implemented/architecture/2026-08-26-models-page-extension-slots.i18n.yaml deleted file mode 100644 index e6e2dae0a2..0000000000 --- a/.agents/notes/implemented/architecture/2026-08-26-models-page-extension-slots.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-08-26-models-page-extension-slots.md -2026-08-26-models-page-extension-slots.md: 9983c669b7838de00d49a634a54e5d115ef4945a -2026-08-26-models-page-extension-slots.zh.md: 639654ea4b912d43a95f0a9295969523f4e1c5f8 diff --git a/.agents/notes/implemented/architecture/2026-08-26-preset-health-resolves-rows.i18n.yaml b/.agents/notes/implemented/architecture/2026-08-26-preset-health-resolves-rows.i18n.yaml deleted file mode 100644 index 0d92211439..0000000000 --- a/.agents/notes/implemented/architecture/2026-08-26-preset-health-resolves-rows.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-08-26-preset-health-resolves-rows.md -2026-08-26-preset-health-resolves-rows.md: 909423e373bc2368b5fb1e81b1172275920282aa -2026-08-26-preset-health-resolves-rows.zh.md: d2cffae66f7bd7fb78e068bd4242d009b95d3c5c diff --git a/.agents/notes/implemented/architecture/2026-08-27-adjacent-agent-steer-messaging.i18n.yaml b/.agents/notes/implemented/architecture/2026-08-27-adjacent-agent-steer-messaging.i18n.yaml index 00b52be148..a75186206d 100644 --- a/.agents/notes/implemented/architecture/2026-08-27-adjacent-agent-steer-messaging.i18n.yaml +++ b/.agents/notes/implemented/architecture/2026-08-27-adjacent-agent-steer-messaging.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-08-27-adjacent-agent-steer-messaging.md -2026-08-27-adjacent-agent-steer-messaging.md: 31c5a4fc8c0e807ff8ab869561d0acd32eccc060 -2026-08-27-adjacent-agent-steer-messaging.zh.md: c49da882a5beb7a7e8379d15a0628fb5c617e040 +2026-08-27-adjacent-agent-steer-messaging.md: 7bd97d5c992acac240a28d61d27e35e1f1058ae3 +2026-08-27-adjacent-agent-steer-messaging.zh.md: 1fd0fc39b937287ac34a2862c7cb9cde90256c09 diff --git a/.agents/notes/implemented/architecture/2026-08-27-adjacent-agent-steer-messaging.md b/.agents/notes/implemented/architecture/2026-08-27-adjacent-agent-steer-messaging.md index 31c5a4fc8c..7bd97d5c99 100644 --- a/.agents/notes/implemented/architecture/2026-08-27-adjacent-agent-steer-messaging.md +++ b/.agents/notes/implemented/architecture/2026-08-27-adjacent-agent-steer-messaging.md @@ -79,4 +79,4 @@ The standalone `@deepseek-ai/dsh-tool-subagent-report` package, `report` schema, - The initial task carries JSON-encoded dynamic parent addressing after a fork prefix, while the request-head system prompt and tool ordering remain reusable. - Human prompts, settlement notices, QueueDock, and the base bundle's one-shot fork policy remain separate decisions. -This decision consolidates and removes the fully superseded report-tool and child-report-obligation records. It supersedes the `followup` naming choice in [Intent-named subagent continuation operations](../simplification/2026-07-27-intent-named-subagent-continuation-operations.md) and retains the accepted-order guarantee in [Child Agent messages precede their settlement notices](../bug-fix/2026-08-17-subagent-message-settlement-ordering.md). +This decision consolidates and removes the fully superseded report-tool and child-report-obligation records. It supersedes the `followup` naming choice in [Intent-named subagent continuation operations](../../archived/simplification/2026-07-27-intent-named-subagent-continuation-operations.md) and retains the accepted-order guarantee in [Child Agent messages precede their settlement notices](../bug-fix/2026-08-17-subagent-message-settlement-ordering.md). diff --git a/.agents/notes/implemented/architecture/2026-08-27-adjacent-agent-steer-messaging.zh.md b/.agents/notes/implemented/architecture/2026-08-27-adjacent-agent-steer-messaging.zh.md index c49da882a5..1fd0fc39b9 100644 --- a/.agents/notes/implemented/architecture/2026-08-27-adjacent-agent-steer-messaging.zh.md +++ b/.agents/notes/implemented/architecture/2026-08-27-adjacent-agent-steer-messaging.zh.md @@ -79,4 +79,4 @@ parent 与 child 以相同注册表顺序继承相同定义。标准定义携带 - 初始任务在 fork 前缀之后携带经过 JSON 编码的动态 parent 地址,而请求头系统提示词与工具顺序保持可复用。 - 人类提示、结算通知、QueueDock 与 base bundle 的一次性 fork 策略仍是独立决策。 -本决策合并并删除了已完全被取代的 report 工具与 child report 义务记录。它取代[按意图命名的 subagent 继续执行操作](../simplification/2026-07-27-intent-named-subagent-continuation-operations.zh.md)中的 `followup` 命名选择,并保留[Child Agent 消息先于其结算通知](../bug-fix/2026-08-17-subagent-message-settlement-ordering.zh.md)中的接受顺序保证。 +本决策合并并删除了已完全被取代的 report 工具与 child report 义务记录。它取代[按意图命名的 subagent 继续执行操作](../../archived/simplification/2026-07-27-intent-named-subagent-continuation-operations.md)中的 `followup` 命名选择,并保留[Child Agent 消息先于其结算通知](../bug-fix/2026-08-17-subagent-message-settlement-ordering.zh.md)中的接受顺序保证。 diff --git a/.agents/notes/implemented/architecture/2026-08-27-handle-based-session-persistence.i18n.yaml b/.agents/notes/implemented/architecture/2026-08-27-handle-based-session-persistence.i18n.yaml index 82633faa9a..6d86465557 100644 --- a/.agents/notes/implemented/architecture/2026-08-27-handle-based-session-persistence.i18n.yaml +++ b/.agents/notes/implemented/architecture/2026-08-27-handle-based-session-persistence.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-08-27-handle-based-session-persistence.md -2026-08-27-handle-based-session-persistence.md: d3fbbe8137c8ac4a1b6897914db26c010036faa8 -2026-08-27-handle-based-session-persistence.zh.md: f8846f4b54cd6b8bb654cb29bbf49d0ee99ccfa8 +2026-08-27-handle-based-session-persistence.md: 9b5ff5d46444ac924859c4121abc1cf5d1538485 +2026-08-27-handle-based-session-persistence.zh.md: c9230c899141f4ab9979f93256da42a3aaae0984 diff --git a/.agents/notes/implemented/architecture/2026-08-27-handle-based-session-persistence.md b/.agents/notes/implemented/architecture/2026-08-27-handle-based-session-persistence.md index d3fbbe8137..9b5ff5d464 100644 --- a/.agents/notes/implemented/architecture/2026-08-27-handle-based-session-persistence.md +++ b/.agents/notes/implemented/architecture/2026-08-27-handle-based-session-persistence.md @@ -37,6 +37,6 @@ Resume, fork, subagent, ACP, webhook, and SDK sessions all persist through one e ## Related - [Session persistence as an abstract service](2026-06-14-session-persistence.md) — the seam this reshapes; its interface list reflects the handle API. -- [Persistence export() and pre-release trims](../simplification/2026-08-27-persistence-export-and-pre-release-trims.md) — the preparatory removals, including the retired cold blank probe. +- [Persistence export() and pre-release trims](../../archived/simplification/2026-08-27-persistence-export-and-pre-release-trims.md) — the preparatory removals, including the retired cold blank probe. - [Retain ignorable external session events](2026-08-30-retain-ignorable-external-session-events.md) — the read-side refusal contract, now shared through `storage-contract` helpers. -- [Bounded session-persistence write batching](2026-08-08-bounded-session-persistence-write-batching.md) — the batching semantics the routed write path preserves as internal scheduling policy. +- [Bounded session-persistence write batching](../../archived/architecture/2026-08-08-bounded-session-persistence-write-batching.md) — the batching semantics the routed write path preserves as internal scheduling policy. diff --git a/.agents/notes/implemented/architecture/2026-08-27-handle-based-session-persistence.zh.md b/.agents/notes/implemented/architecture/2026-08-27-handle-based-session-persistence.zh.md index f8846f4b54..c9230c8991 100644 --- a/.agents/notes/implemented/architecture/2026-08-27-handle-based-session-persistence.zh.md +++ b/.agents/notes/implemented/architecture/2026-08-27-handle-based-session-persistence.zh.md @@ -37,6 +37,6 @@ Status: implemented ## 相关 - [作为抽象服务的会话持久化](2026-06-14-session-persistence.zh.md)——本 Note 重塑的 seam;其接口列表已反映句柄 API。 -- [持久化 export() 与预发布读取路径精简](../simplification/2026-08-27-persistence-export-and-pre-release-trims.zh.md)——预备性的移除,包括已退役的冷空白探测。 +- [持久化 export() 与预发布读取路径精简](../../archived/simplification/2026-08-27-persistence-export-and-pre-release-trims.md)——预备性的移除,包括已退役的冷空白探测。 - [保留可忽略的外部会话事件](2026-08-30-retain-ignorable-external-session-events.zh.md)——读取侧的拒绝约定,现经由 `storage-contract` 辅助函数共享。 -- [为会话持久化写入批处理设定上界](2026-08-08-bounded-session-persistence-write-batching.zh.md)——被路由写路径作为内部调度策略保留的批处理语义。 +- [为会话持久化写入批处理设定上界](../../archived/architecture/2026-08-08-bounded-session-persistence-write-batching.md)——被路由写路径作为内部调度策略保留的批处理语义。 diff --git a/.agents/notes/implemented/architecture/2026-08-27-inspector-development-mount.i18n.yaml b/.agents/notes/implemented/architecture/2026-08-27-inspector-development-mount.i18n.yaml deleted file mode 100644 index e42f33eb3d..0000000000 --- a/.agents/notes/implemented/architecture/2026-08-27-inspector-development-mount.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-08-27-inspector-development-mount.md -2026-08-27-inspector-development-mount.md: a8660c664f6fba49369af075bc998171a454a842 -2026-08-27-inspector-development-mount.zh.md: 39ebf9777bca5d73b6ab22e571af16a474bf8402 diff --git a/.agents/notes/implemented/architecture/2026-08-27-process-table-snapshots.i18n.yaml b/.agents/notes/implemented/architecture/2026-08-27-process-table-snapshots.i18n.yaml deleted file mode 100644 index 138ca27a49..0000000000 --- a/.agents/notes/implemented/architecture/2026-08-27-process-table-snapshots.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-08-27-process-table-snapshots.md -2026-08-27-process-table-snapshots.md: 27c364607ca1e03a926c309f26007477a8785636 -2026-08-27-process-table-snapshots.zh.md: 9c5fe65bb83a0d04fe5639b3ffefcf377c3588ef diff --git a/.agents/notes/implemented/architecture/2026-08-28-ctx-remote-failure-vocabulary.i18n.yaml b/.agents/notes/implemented/architecture/2026-08-28-ctx-remote-failure-vocabulary.i18n.yaml index e659db7435..5952b7afe6 100644 --- a/.agents/notes/implemented/architecture/2026-08-28-ctx-remote-failure-vocabulary.i18n.yaml +++ b/.agents/notes/implemented/architecture/2026-08-28-ctx-remote-failure-vocabulary.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-08-28-ctx-remote-failure-vocabulary.md -2026-08-28-ctx-remote-failure-vocabulary.md: fe8cafb6116d73797e1dae07fb28fe52d42c9285 -2026-08-28-ctx-remote-failure-vocabulary.zh.md: 6b75aae454fb9e4d7c4622525220d1949c45404d +2026-08-28-ctx-remote-failure-vocabulary.md: 7238ae23b4581ab645b2bc9a780b77dc4a59d574 +2026-08-28-ctx-remote-failure-vocabulary.zh.md: db0b2969bc94c3d9c848b187a0521ce5ec387492 diff --git a/.agents/notes/implemented/architecture/2026-08-28-ctx-remote-failure-vocabulary.md b/.agents/notes/implemented/architecture/2026-08-28-ctx-remote-failure-vocabulary.md index fe8cafb611..7238ae23b4 100644 --- a/.agents/notes/implemented/architecture/2026-08-28-ctx-remote-failure-vocabulary.md +++ b/.agents/notes/implemented/architecture/2026-08-28-ctx-remote-failure-vocabulary.md @@ -85,4 +85,4 @@ The type of `details` follows from the code, so a code-and-details mismatch is r `RemoteError` is an `Error`, so it keeps `message` and `cause` through any logger and through `errorChain()`; but `cause` holds only in-process, and the wire carries exactly `code`, `message`, and `details`. Cross-realm discrimination always reads the structural marker, and any new transport (a worker, a bundle split) must carry that marker or an equivalent marker frame across, or failure values degrade into plain `Error`s. -Consumer signatures for Remote methods are uniformly `Promise>`, matching the generated projection described in [the method-call surface](2026-08-02-typert-remote-method-calls.md); the ledger for the unary endpoints is [the unary endpoint migration](2026-08-10-unary-apiproxy-remote-migration.md). +Consumer signatures for Remote methods are uniformly `Promise>`, matching the generated projection described in [the method-call surface](2026-08-02-typert-remote-method-calls.md); the ledger for the unary endpoints is [the unary endpoint migration](../../archived/architecture/2026-08-10-unary-apiproxy-remote-migration.md). diff --git a/.agents/notes/implemented/architecture/2026-08-28-ctx-remote-failure-vocabulary.zh.md b/.agents/notes/implemented/architecture/2026-08-28-ctx-remote-failure-vocabulary.zh.md index 6b75aae454..db0b2969bc 100644 --- a/.agents/notes/implemented/architecture/2026-08-28-ctx-remote-failure-vocabulary.zh.md +++ b/.agents/notes/implemented/architecture/2026-08-28-ctx-remote-failure-vocabulary.zh.md @@ -85,4 +85,4 @@ envelope 不变:wire 上仍是 `{ code, message, details }` 数据,`RemoteEr `RemoteError` 是 `Error`,所以它进任何日志与 `errorChain()` 都保留 `message` 与 `cause`;但 `cause` 只在进程内成立,wire 上只有 `code`、`message`、`details` 三个字段。跨 realm 的判别永远读结构标记,任何新增的传输(worker、bundle 分片)都必须把标记或等价的 marker 帧带过去,否则失败值会退化为普通 `Error`。 -Remote 方法的消费端签名统一为 `Promise>`,与[方法调用面](2026-08-02-typert-remote-method-calls.zh.md)描述的生成投影一致;一元调用的迁移账本见[一元端点迁移](2026-08-10-unary-apiproxy-remote-migration.zh.md)。 +Remote 方法的消费端签名统一为 `Promise>`,与[方法调用面](2026-08-02-typert-remote-method-calls.zh.md)描述的生成投影一致;一元调用的迁移账本见[一元端点迁移](../../archived/architecture/2026-08-10-unary-apiproxy-remote-migration.md)。 diff --git a/.agents/notes/implemented/architecture/2026-08-29-plugin-inventory-agent-preset-scopes.i18n.yaml b/.agents/notes/implemented/architecture/2026-08-29-plugin-inventory-agent-preset-scopes.i18n.yaml deleted file mode 100644 index 95203cb95e..0000000000 --- a/.agents/notes/implemented/architecture/2026-08-29-plugin-inventory-agent-preset-scopes.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-08-29-plugin-inventory-agent-preset-scopes.md -2026-08-29-plugin-inventory-agent-preset-scopes.md: a07f5a14a2c9f39e9a789aaf09d6fb4627618e92 -2026-08-29-plugin-inventory-agent-preset-scopes.zh.md: bee7e4ed2f51af8e38a489cf3eff51cc958dd372 diff --git a/.agents/notes/implemented/architecture/2026-08-31-live-assistant-stream-frames.i18n.yaml b/.agents/notes/implemented/architecture/2026-08-31-live-assistant-stream-frames.i18n.yaml deleted file mode 100644 index e57ffd7f33..0000000000 --- a/.agents/notes/implemented/architecture/2026-08-31-live-assistant-stream-frames.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-08-31-live-assistant-stream-frames.md -2026-08-31-live-assistant-stream-frames.md: 25d86d152714baeca1df18c353f40bc0052bdeee -2026-08-31-live-assistant-stream-frames.zh.md: 924649932b29520ad3effa88f18267a3ae20ac02 diff --git a/.agents/notes/implemented/architecture/2026-08-31-session-sequence-and-log-offset-brands.i18n.yaml b/.agents/notes/implemented/architecture/2026-08-31-session-sequence-and-log-offset-brands.i18n.yaml deleted file mode 100644 index 06883b0ef8..0000000000 --- a/.agents/notes/implemented/architecture/2026-08-31-session-sequence-and-log-offset-brands.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-08-31-session-sequence-and-log-offset-brands.md -2026-08-31-session-sequence-and-log-offset-brands.md: 0057b2b6c95391abbb4ec2464ee58b54e2fe24f2 -2026-08-31-session-sequence-and-log-offset-brands.zh.md: f51ad5953cab34294a53db6e3c91884292497faf diff --git a/.agents/notes/implemented/architecture/2026-08-31-viewport-activated-syntax-highlighting.i18n.yaml b/.agents/notes/implemented/architecture/2026-08-31-viewport-activated-syntax-highlighting.i18n.yaml deleted file mode 100644 index d8166a7a02..0000000000 --- a/.agents/notes/implemented/architecture/2026-08-31-viewport-activated-syntax-highlighting.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-08-31-viewport-activated-syntax-highlighting.md -2026-08-31-viewport-activated-syntax-highlighting.md: 050c4e50240f9e1d1eb4f2708df6bc93c3a1faf1 -2026-08-31-viewport-activated-syntax-highlighting.zh.md: abd02161ae00d8bdd31863826565175e1d8fddf9 diff --git a/.agents/notes/implemented/architecture/2026-09-01-streamed-tool-call-identity.i18n.yaml b/.agents/notes/implemented/architecture/2026-09-01-streamed-tool-call-identity.i18n.yaml deleted file mode 100644 index 18478d8636..0000000000 --- a/.agents/notes/implemented/architecture/2026-09-01-streamed-tool-call-identity.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-09-01-streamed-tool-call-identity.md -2026-09-01-streamed-tool-call-identity.md: c52f39b735199270d65ed30a388333a217003237 -2026-09-01-streamed-tool-call-identity.zh.md: 5226e1ba5cae70238826eb22397915cc4884735c diff --git a/.agents/notes/implemented/architecture/2026-09-02-projcache-cross-version-read-compat.i18n.yaml b/.agents/notes/implemented/architecture/2026-09-02-projcache-cross-version-read-compat.i18n.yaml index 59132acff3..ebe52594b7 100644 --- a/.agents/notes/implemented/architecture/2026-09-02-projcache-cross-version-read-compat.i18n.yaml +++ b/.agents/notes/implemented/architecture/2026-09-02-projcache-cross-version-read-compat.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-09-02-projcache-cross-version-read-compat.md -2026-09-02-projcache-cross-version-read-compat.md: b08b651e7c826cd1c22b8e5c563ab594331e3c98 -2026-09-02-projcache-cross-version-read-compat.zh.md: 637bca397e054f3b62160fc10c5809e449ef40e2 +2026-09-02-projcache-cross-version-read-compat.md: 82f7f26d5cd0484f5adcd51db17748f41a298294 +2026-09-02-projcache-cross-version-read-compat.zh.md: 58705ec8f15fbffff6af31872a69f1f19ef5e3c5 diff --git a/.agents/notes/implemented/architecture/2026-09-02-projcache-cross-version-read-compat.md b/.agents/notes/implemented/architecture/2026-09-02-projcache-cross-version-read-compat.md index b08b651e7c..82f7f26d5c 100644 --- a/.agents/notes/implemented/architecture/2026-09-02-projcache-cross-version-read-compat.md +++ b/.agents/notes/implemented/architecture/2026-09-02-projcache-cross-version-read-compat.md @@ -24,7 +24,7 @@ The cache domain's own contract is "a stale or unreadable cache costs a longer t | 6 | pre-v1 mainline | per-record | same as v5 | same as v5 | same | | 7 | current | per-record | same as v5 | + `formatVersion`; current writes also require both lineage fields | same | -The only substantive v4→v5 difference is the two lineage identity fields; v6 changed only the write stamp. The `ver/seq/val` row representation is identical across these predecessor generations, and `seq` numbering did not change ([the 2026-08-31 seq/offset brands note](2026-08-31-session-sequence-and-log-offset-brands.md) pins the on-disk numbers as unchanged). v3→v4 was a layout migration with identical record content. Version 7 adds the Session format generation to the cache identity because row semantics cannot be inferred from the domain stamp. +The only substantive v4→v5 difference is the two lineage identity fields; v6 changed only the write stamp. The `ver/seq/val` row representation is identical across these predecessor generations, and `seq` numbering did not change ([the 2026-08-31 seq/offset brands note](../../archived/architecture/2026-08-31-session-sequence-and-log-offset-brands.md) pins the on-disk numbers as unchanged). v3→v4 was a layout migration with identical record content. Version 7 adds the Session format generation to the cache identity because row semantics cannot be inferred from the domain stamp. One derived shape also exists: a v3 home that ran the v5 build once (the poisoned state) — its new tree holds documents **stamped 5 whose content is a v3 record** (no lineage fields). diff --git a/.agents/notes/implemented/architecture/2026-09-02-projcache-cross-version-read-compat.zh.md b/.agents/notes/implemented/architecture/2026-09-02-projcache-cross-version-read-compat.zh.md index 637bca397e..58705ec8f1 100644 --- a/.agents/notes/implemented/architecture/2026-09-02-projcache-cross-version-read-compat.zh.md +++ b/.agents/notes/implemented/architecture/2026-09-02-projcache-cross-version-read-compat.zh.md @@ -24,7 +24,7 @@ Status: implemented | 6 | v1 之前的 mainline | per-record | 同 v5 | 同 v5 | 同上 | | 7 | 当前版本 | per-record | 同 v5 | + `formatVersion`;当前写入也要求两个 lineage 字段 | 同上 | -v4→v5 的唯一实质差异是 identity 新增两个 lineage 字段;v6 只改变写入版本戳。这些前代的行内 `ver/seq/val` 表示一致,`seq` 的数值含义未变([2026-08-31 seq/offset brands note](2026-08-31-session-sequence-and-log-offset-brands.zh.md) 明确 on-disk 数值不变)。v3→v4 是布局迁移,记录内容结构一致。v7 把 Session 格式代加入缓存 identity,因为无法从 domain 版本戳推导行语义。 +v4→v5 的唯一实质差异是 identity 新增两个 lineage 字段;v6 只改变写入版本戳。这些前代的行内 `ver/seq/val` 表示一致,`seq` 的数值含义未变([2026-08-31 seq/offset brands note](../../archived/architecture/2026-08-31-session-sequence-and-log-offset-brands.md) 明确 on-disk 数值不变)。v3→v4 是布局迁移,记录内容结构一致。v7 把 Session 格式代加入缓存 identity,因为无法从 domain 版本戳推导行语义。 另有一种衍生形态:跑过一次 v5 版本的 v3 home(投毒态)——新树里存在**版本戳为 5 但内容是 v3 记录**(缺 lineage 字段)的文档。 diff --git a/.agents/notes/implemented/architecture/2026-09-02-protocol-specific-model-listing-discovery.i18n.yaml b/.agents/notes/implemented/architecture/2026-09-02-protocol-specific-model-listing-discovery.i18n.yaml deleted file mode 100644 index 4458589c77..0000000000 --- a/.agents/notes/implemented/architecture/2026-09-02-protocol-specific-model-listing-discovery.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-09-02-protocol-specific-model-listing-discovery.md -2026-09-02-protocol-specific-model-listing-discovery.md: 69e684c284ff57da7ed61fd5dc417fd110d3e5b7 -2026-09-02-protocol-specific-model-listing-discovery.zh.md: 682806fb72c2cc24572e6e351d4d388cead84dc0 diff --git a/.agents/notes/implemented/bug-fix/2026-07-19-windows-atomic-write-dacl-preservation.i18n.yaml b/.agents/notes/implemented/bug-fix/2026-07-19-windows-atomic-write-dacl-preservation.i18n.yaml deleted file mode 100644 index a46aade24d..0000000000 --- a/.agents/notes/implemented/bug-fix/2026-07-19-windows-atomic-write-dacl-preservation.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/bug-fix/2026-07-19-windows-atomic-write-dacl-preservation.md -2026-07-19-windows-atomic-write-dacl-preservation.md: be9f82174300a7d605c6a6e63878728f08cb37be -2026-07-19-windows-atomic-write-dacl-preservation.zh.md: ed52773b0314e06ecdc470f9d569685c47a7aec3 diff --git a/.agents/notes/implemented/bug-fix/2026-07-20-config-hot-reload-resilience.i18n.yaml b/.agents/notes/implemented/bug-fix/2026-07-20-config-hot-reload-resilience.i18n.yaml deleted file mode 100644 index 0b59ec54b6..0000000000 --- a/.agents/notes/implemented/bug-fix/2026-07-20-config-hot-reload-resilience.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/bug-fix/2026-07-20-config-hot-reload-resilience.md -2026-07-20-config-hot-reload-resilience.md: 6f8503c93bcbf55b1bd0543cf49e41cfe32fbe2f -2026-07-20-config-hot-reload-resilience.zh.md: 359a34a2252b2999f896245a4bd07f7da32d98f5 diff --git a/.agents/notes/implemented/bug-fix/2026-07-20-error-cause-chain-diagnostics.i18n.yaml b/.agents/notes/implemented/bug-fix/2026-07-20-error-cause-chain-diagnostics.i18n.yaml deleted file mode 100644 index 7fd68b3bc7..0000000000 --- a/.agents/notes/implemented/bug-fix/2026-07-20-error-cause-chain-diagnostics.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/bug-fix/2026-07-20-error-cause-chain-diagnostics.md -2026-07-20-error-cause-chain-diagnostics.md: 4fb5eb99f83419cab490018fe69649d60b184058 -2026-07-20-error-cause-chain-diagnostics.zh.md: 690f32419b11cc54ccb9f381c9837b6d4f77ac34 diff --git a/.agents/notes/implemented/bug-fix/2026-07-21-compaction-summary-prefix-cache-reuse.i18n.yaml b/.agents/notes/implemented/bug-fix/2026-07-21-compaction-summary-prefix-cache-reuse.i18n.yaml deleted file mode 100644 index f2c184f557..0000000000 --- a/.agents/notes/implemented/bug-fix/2026-07-21-compaction-summary-prefix-cache-reuse.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/bug-fix/2026-07-21-compaction-summary-prefix-cache-reuse.md -2026-07-21-compaction-summary-prefix-cache-reuse.md: a1066cd9925b37a05ea06c22b60b81d6107cd336 -2026-07-21-compaction-summary-prefix-cache-reuse.zh.md: 3f487f63250713570ccc7962ba0afab869bc656a diff --git a/.agents/notes/implemented/bug-fix/2026-07-21-semantic-session-checkpoints.i18n.yaml b/.agents/notes/implemented/bug-fix/2026-07-21-semantic-session-checkpoints.i18n.yaml deleted file mode 100644 index 032ba43584..0000000000 --- a/.agents/notes/implemented/bug-fix/2026-07-21-semantic-session-checkpoints.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/bug-fix/2026-07-21-semantic-session-checkpoints.md -2026-07-21-semantic-session-checkpoints.md: 697d878dccbfab1ded9f73e134d594ba6f0665e1 -2026-07-21-semantic-session-checkpoints.zh.md: c72f2bbad33967f54013f05568b9d1082d549357 diff --git a/.agents/notes/implemented/bug-fix/2026-07-22-pi-ai-transport-truncation-classification.i18n.yaml b/.agents/notes/implemented/bug-fix/2026-07-22-pi-ai-transport-truncation-classification.i18n.yaml deleted file mode 100644 index c7891f6a05..0000000000 --- a/.agents/notes/implemented/bug-fix/2026-07-22-pi-ai-transport-truncation-classification.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/bug-fix/2026-07-22-pi-ai-transport-truncation-classification.md -2026-07-22-pi-ai-transport-truncation-classification.md: 4f645a26286bac3d95b285d1f37422797775e979 -2026-07-22-pi-ai-transport-truncation-classification.zh.md: 0625d6041ccaeaff9d0d6f659c7b3856ab985ef6 diff --git a/.agents/notes/implemented/bug-fix/2026-07-24-empty-model-response-is-retryable.i18n.yaml b/.agents/notes/implemented/bug-fix/2026-07-24-empty-model-response-is-retryable.i18n.yaml deleted file mode 100644 index 55b47568de..0000000000 --- a/.agents/notes/implemented/bug-fix/2026-07-24-empty-model-response-is-retryable.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/bug-fix/2026-07-24-empty-model-response-is-retryable.md -2026-07-24-empty-model-response-is-retryable.md: 62e45385fbcf1cdebd1b2c19abcbfe6888abdfe7 -2026-07-24-empty-model-response-is-retryable.zh.md: 459a5def0bbd5a82c83af67ea1c035259ec4f0a5 diff --git a/.agents/notes/implemented/bug-fix/2026-07-24-recursive-python-sdk-session-notifications.i18n.yaml b/.agents/notes/implemented/bug-fix/2026-07-24-recursive-python-sdk-session-notifications.i18n.yaml deleted file mode 100644 index 06d4078f76..0000000000 --- a/.agents/notes/implemented/bug-fix/2026-07-24-recursive-python-sdk-session-notifications.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/bug-fix/2026-07-24-recursive-python-sdk-session-notifications.md -2026-07-24-recursive-python-sdk-session-notifications.md: c90213659391b565acd043a1be64e225f8babd31 -2026-07-24-recursive-python-sdk-session-notifications.zh.md: f6f0a8c0e393bc19f24085b04db06056369bb329 diff --git a/.agents/notes/implemented/bug-fix/2026-07-27-glob-sampling.i18n.yaml b/.agents/notes/implemented/bug-fix/2026-07-27-glob-sampling.i18n.yaml deleted file mode 100644 index 3e97fb3f06..0000000000 --- a/.agents/notes/implemented/bug-fix/2026-07-27-glob-sampling.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/bug-fix/2026-07-27-glob-sampling.md -2026-07-27-glob-sampling.md: 67912cf290b127a96819d57f30387197af68323d -2026-07-27-glob-sampling.zh.md: b8d7bbe1bc70e94cc4239867244be554eaf33e63 diff --git a/.agents/notes/implemented/bug-fix/2026-07-27-stable-snapshot-refresh-volatiles.i18n.yaml b/.agents/notes/implemented/bug-fix/2026-07-27-stable-snapshot-refresh-volatiles.i18n.yaml deleted file mode 100644 index d17de641b9..0000000000 --- a/.agents/notes/implemented/bug-fix/2026-07-27-stable-snapshot-refresh-volatiles.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/bug-fix/2026-07-27-stable-snapshot-refresh-volatiles.md -2026-07-27-stable-snapshot-refresh-volatiles.md: c3eeeca01a7820b5f410bd895de998e944e58eb2 -2026-07-27-stable-snapshot-refresh-volatiles.zh.md: 79a2758e7a7353c983f4e8a9d2531830dec311e4 diff --git a/.agents/notes/implemented/bug-fix/2026-07-28-themed-scrollbars-and-reserved-gutter.i18n.yaml b/.agents/notes/implemented/bug-fix/2026-07-28-themed-scrollbars-and-reserved-gutter.i18n.yaml deleted file mode 100644 index f6cfff26ab..0000000000 --- a/.agents/notes/implemented/bug-fix/2026-07-28-themed-scrollbars-and-reserved-gutter.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/bug-fix/2026-07-28-themed-scrollbars-and-reserved-gutter.md -2026-07-28-themed-scrollbars-and-reserved-gutter.md: 3dbaf73158d7c5182b0992d1120965b008aff649 -2026-07-28-themed-scrollbars-and-reserved-gutter.zh.md: fa90304d541d097c9aabad3c5448f9ead0a3a213 diff --git a/.agents/notes/implemented/bug-fix/2026-07-28-web-agent-runtime-context.i18n.yaml b/.agents/notes/implemented/bug-fix/2026-07-28-web-agent-runtime-context.i18n.yaml deleted file mode 100644 index b88e0ba568..0000000000 --- a/.agents/notes/implemented/bug-fix/2026-07-28-web-agent-runtime-context.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/bug-fix/2026-07-28-web-agent-runtime-context.md -2026-07-28-web-agent-runtime-context.md: 6c2bb8faf0db56d2a29b47726ab295c3501cce2d -2026-07-28-web-agent-runtime-context.zh.md: c32be64ba0a90e87dbe483e64b4d01f0ad331654 diff --git a/.agents/notes/implemented/bug-fix/2026-07-28-web-gui-feedback-loop.i18n.yaml b/.agents/notes/implemented/bug-fix/2026-07-28-web-gui-feedback-loop.i18n.yaml deleted file mode 100644 index f2d57581bb..0000000000 --- a/.agents/notes/implemented/bug-fix/2026-07-28-web-gui-feedback-loop.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/bug-fix/2026-07-28-web-gui-feedback-loop.md -2026-07-28-web-gui-feedback-loop.md: dad85c37dac19c04c15ecb34c210c5376299d50f -2026-07-28-web-gui-feedback-loop.zh.md: 196912b8ba1b2f7737c73967d22c9e176566bd88 diff --git a/.agents/notes/implemented/bug-fix/2026-07-29-atomic-web-image-admission.i18n.yaml b/.agents/notes/implemented/bug-fix/2026-07-29-atomic-web-image-admission.i18n.yaml deleted file mode 100644 index a897753a57..0000000000 --- a/.agents/notes/implemented/bug-fix/2026-07-29-atomic-web-image-admission.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/bug-fix/2026-07-29-atomic-web-image-admission.md -2026-07-29-atomic-web-image-admission.md: dd2faf1e14c6147c80bcba571d5310899c2e8e22 -2026-07-29-atomic-web-image-admission.zh.md: 8f15f8848dcb38fe6be178b86082a72b4ff0c8eb diff --git a/.agents/notes/implemented/bug-fix/2026-07-29-human-transcript-append-origin.i18n.yaml b/.agents/notes/implemented/bug-fix/2026-07-29-human-transcript-append-origin.i18n.yaml deleted file mode 100644 index d8a34eb622..0000000000 --- a/.agents/notes/implemented/bug-fix/2026-07-29-human-transcript-append-origin.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/bug-fix/2026-07-29-human-transcript-append-origin.md -2026-07-29-human-transcript-append-origin.md: 00f4cf09139bdba4c0fffcdc476b698d098154bc -2026-07-29-human-transcript-append-origin.zh.md: 631ba71d841033c19a9daa21e646468a0e366966 diff --git a/.agents/notes/implemented/bug-fix/2026-07-29-pnpm-setup-runner-isolation.i18n.yaml b/.agents/notes/implemented/bug-fix/2026-07-29-pnpm-setup-runner-isolation.i18n.yaml deleted file mode 100644 index 01d1644420..0000000000 --- a/.agents/notes/implemented/bug-fix/2026-07-29-pnpm-setup-runner-isolation.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/bug-fix/2026-07-29-pnpm-setup-runner-isolation.md -2026-07-29-pnpm-setup-runner-isolation.md: d5cd02cceba920368f0dfe6535e4bd03ee075417 -2026-07-29-pnpm-setup-runner-isolation.zh.md: 5266112224b940c06ea2567247532eb15ce7fce8 diff --git a/.agents/notes/implemented/bug-fix/2026-07-29-sticky-composer-conversation-scroll.i18n.yaml b/.agents/notes/implemented/bug-fix/2026-07-29-sticky-composer-conversation-scroll.i18n.yaml deleted file mode 100644 index 4f96f44ab7..0000000000 --- a/.agents/notes/implemented/bug-fix/2026-07-29-sticky-composer-conversation-scroll.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/bug-fix/2026-07-29-sticky-composer-conversation-scroll.md -2026-07-29-sticky-composer-conversation-scroll.md: d628e10979318ba371d56f61c5e96363b4135ad7 -2026-07-29-sticky-composer-conversation-scroll.zh.md: 73ff61e7fac556f37392fdf604edb4d067f9fb9b diff --git a/.agents/notes/implemented/bug-fix/2026-07-29-web-details-session-lifecycle.i18n.yaml b/.agents/notes/implemented/bug-fix/2026-07-29-web-details-session-lifecycle.i18n.yaml deleted file mode 100644 index 89116403f6..0000000000 --- a/.agents/notes/implemented/bug-fix/2026-07-29-web-details-session-lifecycle.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/bug-fix/2026-07-29-web-details-session-lifecycle.md -2026-07-29-web-details-session-lifecycle.md: 41b89fc059a02e56f53b27e5a5b48fb9488b93d7 -2026-07-29-web-details-session-lifecycle.zh.md: af0565bf78b17ab91861b260537f4c70ef43f4f9 diff --git a/.agents/notes/implemented/bug-fix/2026-07-30-bounded-overwrite-diff-basis.i18n.yaml b/.agents/notes/implemented/bug-fix/2026-07-30-bounded-overwrite-diff-basis.i18n.yaml deleted file mode 100644 index ae909cb72b..0000000000 --- a/.agents/notes/implemented/bug-fix/2026-07-30-bounded-overwrite-diff-basis.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/bug-fix/2026-07-30-bounded-overwrite-diff-basis.md -2026-07-30-bounded-overwrite-diff-basis.md: 7a09934bd1798059de43a092f338d37aa9ccbd9a -2026-07-30-bounded-overwrite-diff-basis.zh.md: 761c0e6e5591ba8d31f7a43ac555d4b10b97659a diff --git a/.agents/notes/implemented/bug-fix/2026-07-30-composer-context-stack-order.i18n.yaml b/.agents/notes/implemented/bug-fix/2026-07-30-composer-context-stack-order.i18n.yaml deleted file mode 100644 index a9f7970095..0000000000 --- a/.agents/notes/implemented/bug-fix/2026-07-30-composer-context-stack-order.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/bug-fix/2026-07-30-composer-context-stack-order.md -2026-07-30-composer-context-stack-order.md: 150225ce27fa8459703170622cef754b7694e2fc -2026-07-30-composer-context-stack-order.zh.md: 25bdd9a5848e2987ffe9243b6d273c61845d33fa diff --git a/.agents/notes/implemented/bug-fix/2026-07-30-hover-popup-pointer-grace.i18n.yaml b/.agents/notes/implemented/bug-fix/2026-07-30-hover-popup-pointer-grace.i18n.yaml deleted file mode 100644 index 4db552343c..0000000000 --- a/.agents/notes/implemented/bug-fix/2026-07-30-hover-popup-pointer-grace.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/bug-fix/2026-07-30-hover-popup-pointer-grace.md -2026-07-30-hover-popup-pointer-grace.md: 302592a2e9de8e749ef2450e8877a3ccbffd15d5 -2026-07-30-hover-popup-pointer-grace.zh.md: 4020a6f1f7ab52b6340a07f4c099906a7353a8a5 diff --git a/.agents/notes/implemented/bug-fix/2026-07-30-multi-select-custom-answer-composition.i18n.yaml b/.agents/notes/implemented/bug-fix/2026-07-30-multi-select-custom-answer-composition.i18n.yaml deleted file mode 100644 index 22057b09dc..0000000000 --- a/.agents/notes/implemented/bug-fix/2026-07-30-multi-select-custom-answer-composition.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/bug-fix/2026-07-30-multi-select-custom-answer-composition.md -2026-07-30-multi-select-custom-answer-composition.md: db5be2dbed1108ff63c1fddb166be1de934f98d3 -2026-07-30-multi-select-custom-answer-composition.zh.md: 796d379312483be5063a3a5d67dd6a0d0e37803e diff --git a/.agents/notes/implemented/bug-fix/2026-07-30-source-checkout-workdir-distinction.i18n.yaml b/.agents/notes/implemented/bug-fix/2026-07-30-source-checkout-workdir-distinction.i18n.yaml deleted file mode 100644 index 7829446401..0000000000 --- a/.agents/notes/implemented/bug-fix/2026-07-30-source-checkout-workdir-distinction.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/bug-fix/2026-07-30-source-checkout-workdir-distinction.md -2026-07-30-source-checkout-workdir-distinction.md: 407d11bd2d0bb27bf1953f1a3a84848480e03328 -2026-07-30-source-checkout-workdir-distinction.zh.md: 91251aa040226d72cf431101aa0d064ba107823e diff --git a/.agents/notes/implemented/bug-fix/2026-07-30-web-transcript-log-ordered-projection.i18n.yaml b/.agents/notes/implemented/bug-fix/2026-07-30-web-transcript-log-ordered-projection.i18n.yaml deleted file mode 100644 index deb8efc160..0000000000 --- a/.agents/notes/implemented/bug-fix/2026-07-30-web-transcript-log-ordered-projection.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/bug-fix/2026-07-30-web-transcript-log-ordered-projection.md -2026-07-30-web-transcript-log-ordered-projection.md: ed6fa4df3ac25bf6fe2947e6fb7bb7cbde6ac00a -2026-07-30-web-transcript-log-ordered-projection.zh.md: cf8dc35099f416356310081f758d0b89fe8282b9 diff --git a/.agents/notes/implemented/bug-fix/2026-07-31-code-runtime-python-settlement-fixes.i18n.yaml b/.agents/notes/implemented/bug-fix/2026-07-31-code-runtime-python-settlement-fixes.i18n.yaml deleted file mode 100644 index 34a16685a4..0000000000 --- a/.agents/notes/implemented/bug-fix/2026-07-31-code-runtime-python-settlement-fixes.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/bug-fix/2026-07-31-code-runtime-python-settlement-fixes.md -2026-07-31-code-runtime-python-settlement-fixes.md: 26a5947b6602d56dc291f2f2e692743522580b12 -2026-07-31-code-runtime-python-settlement-fixes.zh.md: f2e7955a40b00f5b08017f44d2cf0529b2b31bfb diff --git a/.agents/notes/implemented/bug-fix/2026-07-31-english-compaction-checkpoints.i18n.yaml b/.agents/notes/implemented/bug-fix/2026-07-31-english-compaction-checkpoints.i18n.yaml deleted file mode 100644 index 9e02707a9b..0000000000 --- a/.agents/notes/implemented/bug-fix/2026-07-31-english-compaction-checkpoints.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/bug-fix/2026-07-31-english-compaction-checkpoints.md -2026-07-31-english-compaction-checkpoints.md: a1123b3d679a8bab2dbd9ecdc7b2079a78ffe28a -2026-07-31-english-compaction-checkpoints.zh.md: 1543d87493a9cbfb28b18f00afa4ee4d3a074179 diff --git a/.agents/notes/implemented/bug-fix/2026-07-31-fail-loud-releases-the-terminal.i18n.yaml b/.agents/notes/implemented/bug-fix/2026-07-31-fail-loud-releases-the-terminal.i18n.yaml index ef270bd493..1f631789a8 100644 --- a/.agents/notes/implemented/bug-fix/2026-07-31-fail-loud-releases-the-terminal.i18n.yaml +++ b/.agents/notes/implemented/bug-fix/2026-07-31-fail-loud-releases-the-terminal.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/implemented/bug-fix/2026-07-31-fail-loud-releases-the-terminal.md -2026-07-31-fail-loud-releases-the-terminal.md: d5a97d73ec60897a3a40f3c99417e43de190af9c -2026-07-31-fail-loud-releases-the-terminal.zh.md: 11c64ef408ec48753f00ad3ccbced2f2e52e8345 +2026-07-31-fail-loud-releases-the-terminal.md: e5196121a850997b5eff045a26dd7c638776196c +2026-07-31-fail-loud-releases-the-terminal.zh.md: 5cec9fe7d4ac75df1b5c88f2ea4cb0a665730719 diff --git a/.agents/notes/implemented/bug-fix/2026-07-31-fail-loud-releases-the-terminal.md b/.agents/notes/implemented/bug-fix/2026-07-31-fail-loud-releases-the-terminal.md index d5a97d73ec..e5196121a8 100644 --- a/.agents/notes/implemented/bug-fix/2026-07-31-fail-loud-releases-the-terminal.md +++ b/.agents/notes/implemented/bug-fix/2026-07-31-fail-loud-releases-the-terminal.md @@ -54,6 +54,6 @@ The guarantee belongs to whichever bin owns the terminal: a surface that grabs t `packages/boot/app-boot/tests/app-boot.spec.ts` covers the release contract: the hook is awaited before the exit commits, a rejecting hook still exits 1, a never-settling hook exits after `FAIL_LOUD_RELEASE_TIMEOUT_MS`, and a burst of rejections reports only the first while the release still completes. -Those fake-process tests cannot observe the two failure modes that matter most — process exit code with a real event loop, and terminal state after exit — so the regression lives in `apps/cli/tests/tui-keyless-smoke.e2e.ts`. It boots the shipped tree in a real PTY over `fixtures/tui-invalid-provider.cordis.yml` (a list-shaped `providers`, the mistake users actually make), expects exit 1, and asserts the captured bytes contain both the labelled boot rejection (`dsh: plugin tree failed to load:`) and `ESC[?2004l`. The same case pins the boot path end to end: it caught the [HMR initial-scan boot deadlock](2026-08-03-hmr-initial-scan-boot-deadlock.md) that silently exited 13 with the terminal stranded. +Those fake-process tests cannot observe the two failure modes that matter most — process exit code with a real event loop, and terminal state after exit — so the regression lives in `apps/cli/tests/tui-keyless-smoke.e2e.ts`. It boots the shipped tree in a real PTY over `fixtures/tui-invalid-provider.cordis.yml` (a list-shaped `providers`, the mistake users actually make), expects exit 1, and asserts the captured bytes contain both the labelled boot rejection (`dsh: plugin tree failed to load:`) and `ESC[?2004l`. The same case pins the boot path end to end: it caught the [HMR initial-scan boot deadlock](../../archived/bug-fix/2026-08-03-hmr-initial-scan-boot-deadlock.md) that silently exited 13 with the terminal stranded. The `/exit` path keeps its existing assertion that the same reset appears on a clean exit. diff --git a/.agents/notes/implemented/bug-fix/2026-07-31-fail-loud-releases-the-terminal.zh.md b/.agents/notes/implemented/bug-fix/2026-07-31-fail-loud-releases-the-terminal.zh.md index 11c64ef408..5cec9fe7d4 100644 --- a/.agents/notes/implemented/bug-fix/2026-07-31-fail-loud-releases-the-terminal.zh.md +++ b/.agents/notes/implemented/bug-fix/2026-07-31-fail-loud-releases-the-terminal.zh.md @@ -54,6 +54,6 @@ Loader 并发挂载各个条目,因此条目失败的顺序并不等于启动 `packages/boot/app-boot/tests/app-boot.spec.ts` 覆盖 release 约定:退出提交前会等待该钩子;钩子 rejection 时仍退出 1;永不结算的钩子会在 `FAIL_LOUD_RELEASE_TIMEOUT_MS` 后退出;以及一连串 rejection 只报告第一个,同时 release 仍能跑完。 -这些基于假进程的测试无法观测到最关键的两种失败形态——真实事件循环下的进程退出码,以及退出之后的终端状态——因此回归用例放在 `apps/cli/tests/tui-keyless-smoke.e2e.ts`。它在真实 PTY 中以 `fixtures/tui-invalid-provider.cordis.yml`(`providers` 为列表形状,正是用户真实会犯的错误)启动出厂配置树,期望退出码为 1,并断言捕获到的字节流同时包含带标签的启动 rejection(`dsh: plugin tree failed to load:`)与 `ESC[?2004l`。同一用例端到端钉住了启动路径:正是它发现了以 13 静默退出、终端状态未被恢复的 [HMR(热模块替换)初始扫描启动死锁](2026-08-03-hmr-initial-scan-boot-deadlock.zh.md)。 +这些基于假进程的测试无法观测到最关键的两种失败形态——真实事件循环下的进程退出码,以及退出之后的终端状态——因此回归用例放在 `apps/cli/tests/tui-keyless-smoke.e2e.ts`。它在真实 PTY 中以 `fixtures/tui-invalid-provider.cordis.yml`(`providers` 为列表形状,正是用户真实会犯的错误)启动出厂配置树,期望退出码为 1,并断言捕获到的字节流同时包含带标签的启动 rejection(`dsh: plugin tree failed to load:`)与 `ESC[?2004l`。同一用例端到端钉住了启动路径:正是它发现了以 13 静默退出、终端状态未被恢复的 [HMR(热模块替换)初始扫描启动死锁](../../archived/bug-fix/2026-08-03-hmr-initial-scan-boot-deadlock.md)。 `/exit` 路径保留其原有断言,确认正常退出时同样会出现该重置序列。 diff --git a/.agents/notes/implemented/bug-fix/2026-07-31-fork-anchor-floors-to-event-seq.i18n.yaml b/.agents/notes/implemented/bug-fix/2026-07-31-fork-anchor-floors-to-event-seq.i18n.yaml deleted file mode 100644 index ec6f7ff0c9..0000000000 --- a/.agents/notes/implemented/bug-fix/2026-07-31-fork-anchor-floors-to-event-seq.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/bug-fix/2026-07-31-fork-anchor-floors-to-event-seq.md -2026-07-31-fork-anchor-floors-to-event-seq.md: 760e73266570b149966be6af8264cd3699ffb7e0 -2026-07-31-fork-anchor-floors-to-event-seq.zh.md: c25a69462b7cbff4a6194d24793982479cae24e4 diff --git a/.agents/notes/implemented/bug-fix/2026-07-31-resume-selector-batch-projection.i18n.yaml b/.agents/notes/implemented/bug-fix/2026-07-31-resume-selector-batch-projection.i18n.yaml deleted file mode 100644 index a5e97e8e8e..0000000000 --- a/.agents/notes/implemented/bug-fix/2026-07-31-resume-selector-batch-projection.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/bug-fix/2026-07-31-resume-selector-batch-projection.md -2026-07-31-resume-selector-batch-projection.md: aa99ecf323b44432e360402f072d89436b2778bd -2026-07-31-resume-selector-batch-projection.zh.md: ebc9d43677edc23004c32736db989d39e59ef152 diff --git a/.agents/notes/implemented/bug-fix/2026-07-31-same-basename-workspace-adoption.i18n.yaml b/.agents/notes/implemented/bug-fix/2026-07-31-same-basename-workspace-adoption.i18n.yaml deleted file mode 100644 index 76462e861d..0000000000 --- a/.agents/notes/implemented/bug-fix/2026-07-31-same-basename-workspace-adoption.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/bug-fix/2026-07-31-same-basename-workspace-adoption.md -2026-07-31-same-basename-workspace-adoption.md: d7c4f7a9d67d760dccbdc536b4894292a171ee3e -2026-07-31-same-basename-workspace-adoption.zh.md: 968863a24c6e7c6237d814f20e9055fd029178a4 diff --git a/.agents/notes/implemented/bug-fix/2026-07-31-web-stop-preserves-queue.i18n.yaml b/.agents/notes/implemented/bug-fix/2026-07-31-web-stop-preserves-queue.i18n.yaml deleted file mode 100644 index a9eade53c1..0000000000 --- a/.agents/notes/implemented/bug-fix/2026-07-31-web-stop-preserves-queue.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/bug-fix/2026-07-31-web-stop-preserves-queue.md -2026-07-31-web-stop-preserves-queue.md: b8bba45009c126495a8b03ee36d6eb2cccac9a93 -2026-07-31-web-stop-preserves-queue.zh.md: af9c114fd06452e58322f2554a0f2ccd861c81c9 diff --git a/.agents/notes/implemented/bug-fix/2026-08-01-ask-user-delegated-caller-guard.i18n.yaml b/.agents/notes/implemented/bug-fix/2026-08-01-ask-user-delegated-caller-guard.i18n.yaml deleted file mode 100644 index 8d514c739b..0000000000 --- a/.agents/notes/implemented/bug-fix/2026-08-01-ask-user-delegated-caller-guard.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/bug-fix/2026-08-01-ask-user-delegated-caller-guard.md -2026-08-01-ask-user-delegated-caller-guard.md: ed4bfae1b647cdbb58e9f09abe544a9ac58b6bf5 -2026-08-01-ask-user-delegated-caller-guard.zh.md: 82779d0b31710356c1465ca9bc102a923f03410a diff --git a/.agents/notes/implemented/bug-fix/2026-08-02-goal-round-wrapup-message.i18n.yaml b/.agents/notes/implemented/bug-fix/2026-08-02-goal-round-wrapup-message.i18n.yaml deleted file mode 100644 index f6073384a8..0000000000 --- a/.agents/notes/implemented/bug-fix/2026-08-02-goal-round-wrapup-message.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/bug-fix/2026-08-02-goal-round-wrapup-message.md -2026-08-02-goal-round-wrapup-message.md: 22a7d329d28ec989faa890c1b3687ec8b96d4a86 -2026-08-02-goal-round-wrapup-message.zh.md: abd8e9803c24e68ac2456063565b5cb0a56ea156 diff --git a/.agents/notes/implemented/bug-fix/2026-08-02-todo-first-composer-context-order.i18n.yaml b/.agents/notes/implemented/bug-fix/2026-08-02-todo-first-composer-context-order.i18n.yaml deleted file mode 100644 index 9014e14d0e..0000000000 --- a/.agents/notes/implemented/bug-fix/2026-08-02-todo-first-composer-context-order.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/bug-fix/2026-08-02-todo-first-composer-context-order.md -2026-08-02-todo-first-composer-context-order.md: 26962426c763c6911fc61acab09cdb96725922b1 -2026-08-02-todo-first-composer-context-order.zh.md: a341dddfb759043dbd3d7cf8347530bb33afcf65 diff --git a/.agents/notes/implemented/bug-fix/2026-08-03-cli-signal-shutdown-escalation.i18n.yaml b/.agents/notes/implemented/bug-fix/2026-08-03-cli-signal-shutdown-escalation.i18n.yaml index da08aaac19..07c0e1b202 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-03-cli-signal-shutdown-escalation.i18n.yaml +++ b/.agents/notes/implemented/bug-fix/2026-08-03-cli-signal-shutdown-escalation.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/implemented/bug-fix/2026-08-03-cli-signal-shutdown-escalation.md -2026-08-03-cli-signal-shutdown-escalation.md: 0373a93314e0478bc8d0a8feff126295051cc2a0 -2026-08-03-cli-signal-shutdown-escalation.zh.md: 3d97e5ce64f63b29a472f93b27f5663028b92d6b +2026-08-03-cli-signal-shutdown-escalation.md: 2f8bdce548318b2172e8e0a5807958e5f8189179 +2026-08-03-cli-signal-shutdown-escalation.zh.md: 8e3b90ff158b896f363165708e34d4a300cf4677 diff --git a/.agents/notes/implemented/bug-fix/2026-08-03-cli-signal-shutdown-escalation.md b/.agents/notes/implemented/bug-fix/2026-08-03-cli-signal-shutdown-escalation.md index 0373a93314..2f8bdce548 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-03-cli-signal-shutdown-escalation.md +++ b/.agents/notes/implemented/bug-fix/2026-08-03-cli-signal-shutdown-escalation.md @@ -29,7 +29,7 @@ Normal completion deliberately avoids `process.exit()`: an immediately forced ex Headless preserves exit 0 for a completed turn, exit 1 for another turn-end reason or API business error, 130 for SIGINT, and 143 for SIGTERM. Web preserves its existing SIGTERM exit 0 and SIGINT exit 130 behavior. -This supersedes the [telemetry deployment Note's](../feature/2026-07-31-web-telemetry-default-mount.md) assumption that SDK exporter/processor timeouts bound complete provider shutdown, and its earlier decision to defer a process-level backstop. The backend owns its export loss/latency policy and closes the known SDK `forceFlush()` gap; the launcher owns the outer guarantee that no plugin can trap the process indefinitely. +This supersedes the [telemetry deployment Note's](../../archived/feature/2026-07-31-web-telemetry-default-mount.md) assumption that SDK exporter/processor timeouts bound complete provider shutdown, and its earlier decision to defer a process-level backstop. The backend owns its export loss/latency policy and closes the known SDK `forceFlush()` gap; the launcher owns the outer guarantee that no plugin can trap the process indefinitely. ## Alternatives considered diff --git a/.agents/notes/implemented/bug-fix/2026-08-03-cli-signal-shutdown-escalation.zh.md b/.agents/notes/implemented/bug-fix/2026-08-03-cli-signal-shutdown-escalation.zh.md index 3d97e5ce64..8e3b90ff15 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-03-cli-signal-shutdown-escalation.zh.md +++ b/.agents/notes/implemented/bug-fix/2026-08-03-cli-signal-shutdown-escalation.zh.md @@ -29,7 +29,7 @@ Web 与 headless 共用 `createProcessShutdown`,它是围绕根级 dispose 建 headless 对完成的轮次仍以 0 退出,对其他轮次结束原因或 API 业务错误仍以 1 退出,对 SIGINT 以 130 退出,对 SIGTERM 以 143 退出。Web 保留现有行为:SIGTERM 以 0 退出,SIGINT 以 130 退出。 -这项决策取代了[遥测部署 Agent Note](../feature/2026-07-31-web-telemetry-default-mount.zh.md) 中 SDK 导出器/处理器超时能够限制提供方完整关闭流程的假设,也取代了其中暂缓进程级退出兜底的决定。后端负责导出数据丢失与延迟策略,并封住已知的 SDK `forceFlush()` 缺口;启动器负责最外层保证,确保任何插件都无法无限期困住进程。 +这项决策取代了[遥测部署 Agent Note](../../archived/feature/2026-07-31-web-telemetry-default-mount.md) 中 SDK 导出器/处理器超时能够限制提供方完整关闭流程的假设,也取代了其中暂缓进程级退出兜底的决定。后端负责导出数据丢失与延迟策略,并封住已知的 SDK `forceFlush()` 缺口;启动器负责最外层保证,确保任何插件都无法无限期困住进程。 ## 考虑过的替代方案 diff --git a/.agents/notes/implemented/bug-fix/2026-08-03-hmr-initial-scan-boot-deadlock.i18n.yaml b/.agents/notes/implemented/bug-fix/2026-08-03-hmr-initial-scan-boot-deadlock.i18n.yaml deleted file mode 100644 index 1357111741..0000000000 --- a/.agents/notes/implemented/bug-fix/2026-08-03-hmr-initial-scan-boot-deadlock.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/bug-fix/2026-08-03-hmr-initial-scan-boot-deadlock.md -2026-08-03-hmr-initial-scan-boot-deadlock.md: e578b4d5fa973ee8f4986e570264c328f58bedc1 -2026-08-03-hmr-initial-scan-boot-deadlock.zh.md: 01aef0b53351084209ae25fbd0d1931bf43fc441 diff --git a/.agents/notes/implemented/bug-fix/2026-08-04-composer-tab-gutter-reservation.i18n.yaml b/.agents/notes/implemented/bug-fix/2026-08-04-composer-tab-gutter-reservation.i18n.yaml deleted file mode 100644 index b0a9caa27f..0000000000 --- a/.agents/notes/implemented/bug-fix/2026-08-04-composer-tab-gutter-reservation.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/bug-fix/2026-08-04-composer-tab-gutter-reservation.md -2026-08-04-composer-tab-gutter-reservation.md: ed8d973c289fcb92b33cc468551aabe5ebb9eee7 -2026-08-04-composer-tab-gutter-reservation.zh.md: 282151ecbfe6ab046b785c8a8bfcd88781607449 diff --git a/.agents/notes/implemented/bug-fix/2026-08-05-context-meter-blind-to-compaction.i18n.yaml b/.agents/notes/implemented/bug-fix/2026-08-05-context-meter-blind-to-compaction.i18n.yaml deleted file mode 100644 index abaae859ca..0000000000 --- a/.agents/notes/implemented/bug-fix/2026-08-05-context-meter-blind-to-compaction.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/bug-fix/2026-08-05-context-meter-blind-to-compaction.md -2026-08-05-context-meter-blind-to-compaction.md: a23e51771c74e350fd3fb04e3a23ab3cdfb6092e -2026-08-05-context-meter-blind-to-compaction.zh.md: 12fd41af0d8c8864a120f26d91148543f74b2e2b diff --git a/.agents/notes/implemented/bug-fix/2026-08-05-turn-tail-actions-require-a-completed-turn.i18n.yaml b/.agents/notes/implemented/bug-fix/2026-08-05-turn-tail-actions-require-a-completed-turn.i18n.yaml deleted file mode 100644 index f4a1549d87..0000000000 --- a/.agents/notes/implemented/bug-fix/2026-08-05-turn-tail-actions-require-a-completed-turn.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/bug-fix/2026-08-05-turn-tail-actions-require-a-completed-turn.md -2026-08-05-turn-tail-actions-require-a-completed-turn.md: 44a890c955089096204a5b2a2833905c9ef9f7ed -2026-08-05-turn-tail-actions-require-a-completed-turn.zh.md: 71eb7acc42e3c03065891a92c2ce82ce12e2cda0 diff --git a/.agents/notes/implemented/bug-fix/2026-08-05-workspace-blank-session-reuse-membership.i18n.yaml b/.agents/notes/implemented/bug-fix/2026-08-05-workspace-blank-session-reuse-membership.i18n.yaml deleted file mode 100644 index a148348ba4..0000000000 --- a/.agents/notes/implemented/bug-fix/2026-08-05-workspace-blank-session-reuse-membership.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/bug-fix/2026-08-05-workspace-blank-session-reuse-membership.md -2026-08-05-workspace-blank-session-reuse-membership.md: df8cc898f5a80937b8aac69ebd51a6a93882971b -2026-08-05-workspace-blank-session-reuse-membership.zh.md: 73ccdbbb002920eea8f7b01bc0fa8a18859bd3ee diff --git a/.agents/notes/implemented/bug-fix/2026-08-06-api-key-format-validation.i18n.yaml b/.agents/notes/implemented/bug-fix/2026-08-06-api-key-format-validation.i18n.yaml deleted file mode 100644 index c6b4e39184..0000000000 --- a/.agents/notes/implemented/bug-fix/2026-08-06-api-key-format-validation.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/bug-fix/2026-08-06-api-key-format-validation.md -2026-08-06-api-key-format-validation.md: 853ae9a4e2f21a6b2cfa92b5059181b2c2869623 -2026-08-06-api-key-format-validation.zh.md: 923798e5264a29fe95e6ee7616fdefeabea766b4 diff --git a/.agents/notes/implemented/bug-fix/2026-08-06-host-backed-web-preferences.i18n.yaml b/.agents/notes/implemented/bug-fix/2026-08-06-host-backed-web-preferences.i18n.yaml index a0c01325bf..1183d9cdc2 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-06-host-backed-web-preferences.i18n.yaml +++ b/.agents/notes/implemented/bug-fix/2026-08-06-host-backed-web-preferences.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/implemented/bug-fix/2026-08-06-host-backed-web-preferences.md -2026-08-06-host-backed-web-preferences.md: 83d4b87f35e2bb3710ecea60d64a8c800ce5df08 -2026-08-06-host-backed-web-preferences.zh.md: ead4a0d27a3bf94f6ef3ffc2915ba721c8379075 +2026-08-06-host-backed-web-preferences.md: 4ccd5cfe092e01fb266d51d5fc84b7cf1556214c +2026-08-06-host-backed-web-preferences.zh.md: fbfdda432821eba1d32cab781340fd5f7802c61d diff --git a/.agents/notes/implemented/bug-fix/2026-08-06-host-backed-web-preferences.md b/.agents/notes/implemented/bug-fix/2026-08-06-host-backed-web-preferences.md index 83d4b87f35..4ccd5cfe09 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-06-host-backed-web-preferences.md +++ b/.agents/notes/implemented/bug-fix/2026-08-06-host-backed-web-preferences.md @@ -14,7 +14,7 @@ The first theme implementation moved only Appearance to Host settings but awaite The owning Host halves register three schemas: optional `locale.preference` (`zh` or `en`, where absence delegates to the browser), `ui-theme.preference` (`light`, `dark`, or `system`, default `system`), and `ui-conversation.busyEnter` (`queue` or `steer`, default `queue`). The local settings provider stores explicit choices in `$DSH_HOME/settings.yaml`, which resolves to `~/.dsh/settings.yaml` under the default home. The API proxy serves every registered namespace behind Connection's browser authentication; field roles still redact secrets. -`dsh-client-ui-settings` owns one browser-wide settings describe mirror and provides `ctx.settingsScope.bind(spec)` as a per-namespace selector over it. The mirror installs `settings/document-updated` and `connection/reset` listeners before starting its background read, so no settings transport can block plugin activation and an invalidation cannot fall into a read-before-subscribe gap. Each bound scope publishes a snapshot store (status, section value, revision, writability, host/memory mode) the domain service subscribes to, without adding a wire read or listener of its own. The default decoder validates each incoming section against the namespace's own serialized wire schema, rehydrated through the colocated `ctx.settingsSchema` service, so domains carry no hand-written wire guards. Domain services take the scope as an ordinary constructor collaborator, publish their provisional defaults immediately—browser-derived locale, system theme, and Queue—then adopt an accepted Host section without writing it back; a service constructed without a scope (standalone dictionary or policy fixtures) simply stays process-local. The shared read and invalidation lifecycle is specified by the later [settings describe mirror decision](../architecture/2026-08-17-settings-describe-mirror.md). +`dsh-client-ui-settings` owns one browser-wide settings describe mirror and provides `ctx.settingsScope.bind(spec)` as a per-namespace selector over it. The mirror installs `settings/document-updated` and `connection/reset` listeners before starting its background read, so no settings transport can block plugin activation and an invalidation cannot fall into a read-before-subscribe gap. Each bound scope publishes a snapshot store (status, section value, revision, writability, host/memory mode) the domain service subscribes to, without adding a wire read or listener of its own. The default decoder validates each incoming section against the namespace's own serialized wire schema, rehydrated through the colocated `ctx.settingsSchema` service, so domains carry no hand-written wire guards. Domain services take the scope as an ordinary constructor collaborator, publish their provisional defaults immediately—browser-derived locale, system theme, and Queue—then adopt an accepted Host section without writing it back; a service constructed without a scope (standalone dictionary or policy fixtures) simply stays process-local. The shared read and invalidation lifecycle is specified by the later [settings describe mirror decision](../../archived/architecture/2026-08-17-settings-describe-mirror.md). User changes update the live service synchronously and queue a `settings.mutate` path operation through `scope.set`. The scope serializes gestures, sends the latest known namespace revision as `expectedRevision`, records every successful revision, and lets only the latest write settlement republish live state. A rejected or failed latest write reloads Host state. Disposal rejects new work, skips queued operations, suppresses publication by the in-flight operation, and waits for that operation to settle before the plugin reaches quiescence. diff --git a/.agents/notes/implemented/bug-fix/2026-08-06-host-backed-web-preferences.zh.md b/.agents/notes/implemented/bug-fix/2026-08-06-host-backed-web-preferences.zh.md index ead4a0d27a..fbfdda4328 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-06-host-backed-web-preferences.zh.md +++ b/.agents/notes/implemented/bug-fix/2026-08-06-host-backed-web-preferences.zh.md @@ -14,7 +14,7 @@ Web 的 Appearance、Language 和繁忙态 Enter 偏好原本存在浏览器 `lo 各领域所属的 Host half 注册三份 schema:可选的 `locale.preference`(`zh` 或 `en`,缺失时交由浏览器决定)、`ui-theme.preference`(`light`、`dark` 或 `system`,默认为 `system`),以及 `ui-conversation.busyEnter`(`queue` 或 `steer`,默认为 `queue`)。本地 settings 提供方将显式选择存入 `$DSH_HOME/settings.yaml`,在使用默认 home 时,该路径解析为 `~/.dsh/settings.yaml`。API 代理在 Connection 浏览器认证之后服务每一个已注册的 namespace;字段角色仍会脱敏机密值。 -`dsh-client-ui-settings` 持有一个浏览器全局的 settings describe 镜像,并提供 `ctx.settingsScope.bind(spec)` 作为该镜像上的逐 namespace selector。镜像在开始后台读取之前安装 `settings/document-updated` 和 `connection/reset` 监听器,因此任何 settings 传输都不会阻塞插件激活,失效通知也不会掉入先读取、后订阅的空档。每个绑定的 scope 会发布一个供领域服务订阅的快照 store(状态、分节值、revision、可写性、host/内存模式),自身不再增加协议读取或监听器。默认解码器会对照该 namespace 自身的序列化 wire schema(经同包的 `ctx.settingsSchema` 服务还原)校验每个传入分节,因此各领域无需携带手写的 wire 校验器。领域服务把 scope 当作普通的构造函数协作者接收,立即发布各自的暂定默认值:由浏览器派生的 locale、系统主题和 Queue;随后采纳已获接受的 Host 分节,但不将其写回;不带 scope 构造的服务——独立词典或政策 fixture(测试前置数据)——则仅停留在进程本地。共享读取与失效生命周期由后续的 [settings describe 镜像决策](../architecture/2026-08-17-settings-describe-mirror.zh.md)规定。 +`dsh-client-ui-settings` 持有一个浏览器全局的 settings describe 镜像,并提供 `ctx.settingsScope.bind(spec)` 作为该镜像上的逐 namespace selector。镜像在开始后台读取之前安装 `settings/document-updated` 和 `connection/reset` 监听器,因此任何 settings 传输都不会阻塞插件激活,失效通知也不会掉入先读取、后订阅的空档。每个绑定的 scope 会发布一个供领域服务订阅的快照 store(状态、分节值、revision、可写性、host/内存模式),自身不再增加协议读取或监听器。默认解码器会对照该 namespace 自身的序列化 wire schema(经同包的 `ctx.settingsSchema` 服务还原)校验每个传入分节,因此各领域无需携带手写的 wire 校验器。领域服务把 scope 当作普通的构造函数协作者接收,立即发布各自的暂定默认值:由浏览器派生的 locale、系统主题和 Queue;随后采纳已获接受的 Host 分节,但不将其写回;不带 scope 构造的服务——独立词典或政策 fixture(测试前置数据)——则仅停留在进程本地。共享读取与失效生命周期由后续的 [settings describe 镜像决策](../../archived/architecture/2026-08-17-settings-describe-mirror.md)规定。 用户变更会同步更新实时服务,并经 `scope.set` 将一项 `settings.mutate` 路径操作排入队列。scope 会串行处理手势,以最新已知 namespace revision 作为 `expectedRevision` 发送,记录每次成功写入的 revision,并且只允许最新写入的结算结果重新发布实时状态。最新写入被拒或失败时,scope 会重新加载 Host 状态。插件释放会拒绝新工作、跳过已排队操作、抑制运行中操作发布状态,并等待该操作结算后才让插件达到完全停稳。 diff --git a/.agents/notes/implemented/bug-fix/2026-08-06-list-agents-residency-vocabulary.i18n.yaml b/.agents/notes/implemented/bug-fix/2026-08-06-list-agents-residency-vocabulary.i18n.yaml deleted file mode 100644 index 9fa64736d0..0000000000 --- a/.agents/notes/implemented/bug-fix/2026-08-06-list-agents-residency-vocabulary.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/bug-fix/2026-08-06-list-agents-residency-vocabulary.md -2026-08-06-list-agents-residency-vocabulary.md: 01fff958921465909f5cd300dc355fdac6ec0772 -2026-08-06-list-agents-residency-vocabulary.zh.md: f0819626009bc9f1201898248e51474c91650f05 diff --git a/.agents/notes/implemented/bug-fix/2026-08-06-onboarding-step-owned-takeover-chrome.i18n.yaml b/.agents/notes/implemented/bug-fix/2026-08-06-onboarding-step-owned-takeover-chrome.i18n.yaml deleted file mode 100644 index c6a052905b..0000000000 --- a/.agents/notes/implemented/bug-fix/2026-08-06-onboarding-step-owned-takeover-chrome.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/bug-fix/2026-08-06-onboarding-step-owned-takeover-chrome.md -2026-08-06-onboarding-step-owned-takeover-chrome.md: 80d2dbbb94c3bf49dab58b394ecec0181fb7ccf2 -2026-08-06-onboarding-step-owned-takeover-chrome.zh.md: 6b930d805dca19b4c187279d348682508aa7ba65 diff --git a/.agents/notes/implemented/bug-fix/2026-08-06-provider-credential-lifecycle.i18n.yaml b/.agents/notes/implemented/bug-fix/2026-08-06-provider-credential-lifecycle.i18n.yaml deleted file mode 100644 index 4ffc3458c2..0000000000 --- a/.agents/notes/implemented/bug-fix/2026-08-06-provider-credential-lifecycle.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/bug-fix/2026-08-06-provider-credential-lifecycle.md -2026-08-06-provider-credential-lifecycle.md: c28788921e8f1b233b44e19b29ad4d4acaa25022 -2026-08-06-provider-credential-lifecycle.zh.md: 9b1c665e0bf4e2f988fc16f93bed2a415dca6d01 diff --git a/.agents/notes/implemented/bug-fix/2026-08-06-token-surface-unpriced-replace-compatibility.i18n.yaml b/.agents/notes/implemented/bug-fix/2026-08-06-token-surface-unpriced-replace-compatibility.i18n.yaml deleted file mode 100644 index 7ef0a2a2f9..0000000000 --- a/.agents/notes/implemented/bug-fix/2026-08-06-token-surface-unpriced-replace-compatibility.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/bug-fix/2026-08-06-token-surface-unpriced-replace-compatibility.md -2026-08-06-token-surface-unpriced-replace-compatibility.md: a271d3697c4ca27fcc2bb30358eb54dfe2b05ad8 -2026-08-06-token-surface-unpriced-replace-compatibility.zh.md: 21145723deb690c72bc8341f99efab8eb13e857b diff --git a/.agents/notes/implemented/bug-fix/2026-08-07-cancel-convergence-wake-latch.i18n.yaml b/.agents/notes/implemented/bug-fix/2026-08-07-cancel-convergence-wake-latch.i18n.yaml index 0463c654fe..ca1680270c 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-07-cancel-convergence-wake-latch.i18n.yaml +++ b/.agents/notes/implemented/bug-fix/2026-08-07-cancel-convergence-wake-latch.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/implemented/bug-fix/2026-08-07-cancel-convergence-wake-latch.md -2026-08-07-cancel-convergence-wake-latch.md: 3dc928a170457816cb262659a5cf3c0900b6a13b -2026-08-07-cancel-convergence-wake-latch.zh.md: 07178dac37690cdbb55b8af40fe5ed26d9945aad +2026-08-07-cancel-convergence-wake-latch.md: a6540a7b46b3e4af4058c7549ff056b92fcc708d +2026-08-07-cancel-convergence-wake-latch.zh.md: 2c4f368feaaca91386cac0a5a833ecd8e9f2e1e1 diff --git a/.agents/notes/implemented/bug-fix/2026-08-07-cancel-convergence-wake-latch.md b/.agents/notes/implemented/bug-fix/2026-08-07-cancel-convergence-wake-latch.md index 3dc928a170..a6540a7b46 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-07-cancel-convergence-wake-latch.md +++ b/.agents/notes/implemented/bug-fix/2026-08-07-cancel-convergence-wake-latch.md @@ -6,7 +6,7 @@ English | [中文](2026-08-07-cancel-convergence-wake-latch.zh.md) ## Problem -`Agent.cancel(cause, { keepInbox: true })` returns immediately after firing the abort signal, but the active driver may not have converged to `idle` yet: LLM stream teardown, tool cancellation, and the `turn/end` append all unwind asynchronously after `abort()` returns. A waking send arriving in that window was placed into `next-turn` while `wakeDriver()` returned early on the still-`running` phase, and the exiting driver never replayed the wake — the message stayed parked until another waking send arrived. The same dropped-wake window existed around aborted `runMaintenance` activities. Several tests enshrined the parked behavior ("waits for another wakeup"); the bug broke both `session.cancel` and the `subagent.interrupt` composition path (issue #1838). The owning cancellation and send contracts are the [explicit turn cancellation](../architecture/2026-07-16-explicit-turn-cancellation.md) and [unified send](../architecture/2026-07-22-unified-send-and-coalesced-user-messages.md) decisions; the production `keepInbox` consumer is [web stop preserves queue](2026-07-31-web-stop-preserves-queue.md). +`Agent.cancel(cause, { keepInbox: true })` returns immediately after firing the abort signal, but the active driver may not have converged to `idle` yet: LLM stream teardown, tool cancellation, and the `turn/end` append all unwind asynchronously after `abort()` returns. A waking send arriving in that window was placed into `next-turn` while `wakeDriver()` returned early on the still-`running` phase, and the exiting driver never replayed the wake — the message stayed parked until another waking send arrived. The same dropped-wake window existed around aborted `runMaintenance` activities. Several tests enshrined the parked behavior ("waits for another wakeup"); the bug broke both `session.cancel` and the `subagent.interrupt` composition path (issue #1838). The owning cancellation and send contracts are the [explicit turn cancellation](../architecture/2026-07-16-explicit-turn-cancellation.md) and [unified send](../../archived/architecture/2026-07-22-unified-send-and-coalesced-user-messages.md) decisions; the production `keepInbox` consumer is [web stop preserves queue](../../archived/bug-fix/2026-07-31-web-stop-preserves-queue.md). ## Decision diff --git a/.agents/notes/implemented/bug-fix/2026-08-07-cancel-convergence-wake-latch.zh.md b/.agents/notes/implemented/bug-fix/2026-08-07-cancel-convergence-wake-latch.zh.md index 07178dac37..2c4f368fea 100644 --- a/.agents/notes/implemented/bug-fix/2026-08-07-cancel-convergence-wake-latch.zh.md +++ b/.agents/notes/implemented/bug-fix/2026-08-07-cancel-convergence-wake-latch.zh.md @@ -6,7 +6,7 @@ Status: implemented ## 问题 -`Agent.cancel(cause, { keepInbox: true })` 在触发 abort 信号后立即返回,但活动 driver 可能尚未收敛到 `idle`:LLM(大语言模型)流拆除、工具取消与 `turn/end` 落盘都会在 `abort()` 返回后异步展开。在该窗口内到达的唤醒 send 被放入 `next-turn`,而 `wakeDriver()` 对仍处于 `running` 的 phase 直接返回,退出的 driver 也从不重放这次唤醒——消息会一直停放到下一条唤醒 send 到达。被中止的 `runMaintenance` 活动周围也存在同样的唤醒丢失窗口。多个测试固化了停放行为(「等待下一次唤醒」);该缺陷同时破坏了 `session.cancel` 与 `subagent.interrupt` 组合路径(issue #1838)。取消与发送约定由以下既有决策定义:[显式轮次取消](../architecture/2026-07-16-explicit-turn-cancellation.zh.md)与[统一发送](../architecture/2026-07-22-unified-send-and-coalesced-user-messages.zh.md);生产环境中的 `keepInbox` 消费方是[Web 停止保留队列](2026-07-31-web-stop-preserves-queue.zh.md)。 +`Agent.cancel(cause, { keepInbox: true })` 在触发 abort 信号后立即返回,但活动 driver 可能尚未收敛到 `idle`:LLM(大语言模型)流拆除、工具取消与 `turn/end` 落盘都会在 `abort()` 返回后异步展开。在该窗口内到达的唤醒 send 被放入 `next-turn`,而 `wakeDriver()` 对仍处于 `running` 的 phase 直接返回,退出的 driver 也从不重放这次唤醒——消息会一直停放到下一条唤醒 send 到达。被中止的 `runMaintenance` 活动周围也存在同样的唤醒丢失窗口。多个测试固化了停放行为(「等待下一次唤醒」);该缺陷同时破坏了 `session.cancel` 与 `subagent.interrupt` 组合路径(issue #1838)。取消与发送约定由以下既有决策定义:[显式轮次取消](../architecture/2026-07-16-explicit-turn-cancellation.zh.md)与[统一发送](../../archived/architecture/2026-07-22-unified-send-and-coalesced-user-messages.md);生产环境中的 `keepInbox` 消费方是[Web 停止保留队列](../../archived/bug-fix/2026-07-31-web-stop-preserves-queue.md)。 ## 决策 diff --git a/.agents/notes/implemented/bug-fix/2026-08-09-filesystem-absence-observation.i18n.yaml b/.agents/notes/implemented/bug-fix/2026-08-09-filesystem-absence-observation.i18n.yaml deleted file mode 100644 index 2656ce9926..0000000000 --- a/.agents/notes/implemented/bug-fix/2026-08-09-filesystem-absence-observation.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/bug-fix/2026-08-09-filesystem-absence-observation.md -2026-08-09-filesystem-absence-observation.md: 40338c4806607b262b93222b4a73a34538414e51 -2026-08-09-filesystem-absence-observation.zh.md: 4544424800844e61f839d5af1f92cef3b3655a27 diff --git a/.agents/notes/implemented/bug-fix/2026-08-10-minimal-preset-owns-rl-composition.i18n.yaml b/.agents/notes/implemented/bug-fix/2026-08-10-minimal-preset-owns-rl-composition.i18n.yaml deleted file mode 100644 index 38476183a5..0000000000 --- a/.agents/notes/implemented/bug-fix/2026-08-10-minimal-preset-owns-rl-composition.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/bug-fix/2026-08-10-minimal-preset-owns-rl-composition.md -2026-08-10-minimal-preset-owns-rl-composition.md: 4c296ed4af5df7a48bdfba6ff1972321cc2e54cf -2026-08-10-minimal-preset-owns-rl-composition.zh.md: 545f0a32fe9c7726d6fc910d0598174e7d7a3ec1 diff --git a/.agents/notes/implemented/bug-fix/2026-08-10-pre-plugin-theme-bootstrap.i18n.yaml b/.agents/notes/implemented/bug-fix/2026-08-10-pre-plugin-theme-bootstrap.i18n.yaml deleted file mode 100644 index 258824deae..0000000000 --- a/.agents/notes/implemented/bug-fix/2026-08-10-pre-plugin-theme-bootstrap.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/bug-fix/2026-08-10-pre-plugin-theme-bootstrap.md -2026-08-10-pre-plugin-theme-bootstrap.md: cf3b2d5b6c8e8b102df6a37bab0fc63d81d8736b -2026-08-10-pre-plugin-theme-bootstrap.zh.md: fcf4c4daacf33c1db1ba7f4d57643c716b6a7acc diff --git a/.agents/notes/implemented/bug-fix/2026-08-10-session-row-identity-covers-the-preset.i18n.yaml b/.agents/notes/implemented/bug-fix/2026-08-10-session-row-identity-covers-the-preset.i18n.yaml deleted file mode 100644 index 7ee58f0e52..0000000000 --- a/.agents/notes/implemented/bug-fix/2026-08-10-session-row-identity-covers-the-preset.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/bug-fix/2026-08-10-session-row-identity-covers-the-preset.md -2026-08-10-session-row-identity-covers-the-preset.md: 7a89dcb4e4ae292a06a1743842d2e9cf6bd96282 -2026-08-10-session-row-identity-covers-the-preset.zh.md: 2143134eb2a4c4a71159fe8b115ef5f0aa659698 diff --git a/.agents/notes/implemented/bug-fix/2026-08-10-slash-catalog-follows-preset-switch.i18n.yaml b/.agents/notes/implemented/bug-fix/2026-08-10-slash-catalog-follows-preset-switch.i18n.yaml deleted file mode 100644 index a2765a6580..0000000000 --- a/.agents/notes/implemented/bug-fix/2026-08-10-slash-catalog-follows-preset-switch.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/bug-fix/2026-08-10-slash-catalog-follows-preset-switch.md -2026-08-10-slash-catalog-follows-preset-switch.md: 4015b2659ff65c676902bac940d493e0f55ffa99 -2026-08-10-slash-catalog-follows-preset-switch.zh.md: b77564f00b2d7de03779339bb4f0d0ba51fd42fa diff --git a/.agents/notes/implemented/bug-fix/2026-08-10-subagent-empty-terminal-message-output.i18n.yaml b/.agents/notes/implemented/bug-fix/2026-08-10-subagent-empty-terminal-message-output.i18n.yaml deleted file mode 100644 index 006a91edf1..0000000000 --- a/.agents/notes/implemented/bug-fix/2026-08-10-subagent-empty-terminal-message-output.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/bug-fix/2026-08-10-subagent-empty-terminal-message-output.md -2026-08-10-subagent-empty-terminal-message-output.md: 6ecb0ef254bd9734664aac71fe63c1eb3caf45b7 -2026-08-10-subagent-empty-terminal-message-output.zh.md: bcc6cad60fb5c791c328da1057e836cc1267d11b diff --git a/.agents/notes/implemented/bug-fix/2026-08-11-bounded-background-job-admission.i18n.yaml b/.agents/notes/implemented/bug-fix/2026-08-11-bounded-background-job-admission.i18n.yaml deleted file mode 100644 index f23c1ad75b..0000000000 --- a/.agents/notes/implemented/bug-fix/2026-08-11-bounded-background-job-admission.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/bug-fix/2026-08-11-bounded-background-job-admission.md -2026-08-11-bounded-background-job-admission.md: c9c27ef6e3a063687cf3491d42270079d7720679 -2026-08-11-bounded-background-job-admission.zh.md: cdeb80a64956c9ccce5eb4c4c3229688fa5577f8 diff --git a/.agents/notes/implemented/bug-fix/2026-08-11-owned-run-finish-reason.i18n.yaml b/.agents/notes/implemented/bug-fix/2026-08-11-owned-run-finish-reason.i18n.yaml deleted file mode 100644 index 30102209b4..0000000000 --- a/.agents/notes/implemented/bug-fix/2026-08-11-owned-run-finish-reason.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/bug-fix/2026-08-11-owned-run-finish-reason.md -2026-08-11-owned-run-finish-reason.md: 87a158c7fedc8c6447306c489ba9f969d95dc412 -2026-08-11-owned-run-finish-reason.zh.md: 926a0d14c45168c5ec6ebd9f3493d4c2b3fe3c1c diff --git a/.agents/notes/implemented/bug-fix/2026-08-11-synchronous-subprocess-exit-cleanup.i18n.yaml b/.agents/notes/implemented/bug-fix/2026-08-11-synchronous-subprocess-exit-cleanup.i18n.yaml deleted file mode 100644 index 2bed5a650c..0000000000 --- a/.agents/notes/implemented/bug-fix/2026-08-11-synchronous-subprocess-exit-cleanup.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/bug-fix/2026-08-11-synchronous-subprocess-exit-cleanup.md -2026-08-11-synchronous-subprocess-exit-cleanup.md: 70b2a95dda22e1e2bf12d76acf9a471a59c7e73b -2026-08-11-synchronous-subprocess-exit-cleanup.zh.md: 3325c81c099730d36fff5d7d2e36919878393009 diff --git a/.agents/notes/implemented/bug-fix/2026-08-12-composer-overlay-seat-width-compensation.i18n.yaml b/.agents/notes/implemented/bug-fix/2026-08-12-composer-overlay-seat-width-compensation.i18n.yaml deleted file mode 100644 index 06746a97a8..0000000000 --- a/.agents/notes/implemented/bug-fix/2026-08-12-composer-overlay-seat-width-compensation.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/bug-fix/2026-08-12-composer-overlay-seat-width-compensation.md -2026-08-12-composer-overlay-seat-width-compensation.md: 35f1e25c2814d4123a7b70e1ba3fd35c90034da5 -2026-08-12-composer-overlay-seat-width-compensation.zh.md: 7979f25f2ff864f2212a675a2a8811043cdb482a diff --git a/.agents/notes/implemented/bug-fix/2026-08-12-fix-pwsh-terminal-overlay-dup.i18n.yaml b/.agents/notes/implemented/bug-fix/2026-08-12-fix-pwsh-terminal-overlay-dup.i18n.yaml deleted file mode 100644 index 232f92d949..0000000000 --- a/.agents/notes/implemented/bug-fix/2026-08-12-fix-pwsh-terminal-overlay-dup.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/bug-fix/2026-08-12-fix-pwsh-terminal-overlay-dup.md -2026-08-12-fix-pwsh-terminal-overlay-dup.md: 7a214ea093faf49141c66bfc2cbb065fbeb29825 -2026-08-12-fix-pwsh-terminal-overlay-dup.zh.md: baf284a8018f597ac45fa2852b20d141cc453238 diff --git a/.agents/notes/implemented/bug-fix/2026-08-12-full-session-turn-step-counts.i18n.yaml b/.agents/notes/implemented/bug-fix/2026-08-12-full-session-turn-step-counts.i18n.yaml deleted file mode 100644 index 18ed791f68..0000000000 --- a/.agents/notes/implemented/bug-fix/2026-08-12-full-session-turn-step-counts.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/bug-fix/2026-08-12-full-session-turn-step-counts.md -2026-08-12-full-session-turn-step-counts.md: ecfa00dc3e24101953a9d5a724dba17682d839bd -2026-08-12-full-session-turn-step-counts.zh.md: 85e2a26b5af51296e20f29af49e909c6e182ea05 diff --git a/.agents/notes/implemented/bug-fix/2026-08-12-max-tokens-turn-end-notice.i18n.yaml b/.agents/notes/implemented/bug-fix/2026-08-12-max-tokens-turn-end-notice.i18n.yaml deleted file mode 100644 index efda56abab..0000000000 --- a/.agents/notes/implemented/bug-fix/2026-08-12-max-tokens-turn-end-notice.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/bug-fix/2026-08-12-max-tokens-turn-end-notice.md -2026-08-12-max-tokens-turn-end-notice.md: bdb34d67a6d8271089af04f6bcd0f046ef7cdea6 -2026-08-12-max-tokens-turn-end-notice.zh.md: 9b9c679972570e791b607330195810d68f04c803 diff --git a/.agents/notes/implemented/bug-fix/2026-08-12-onboarding-reads-every-provider.i18n.yaml b/.agents/notes/implemented/bug-fix/2026-08-12-onboarding-reads-every-provider.i18n.yaml deleted file mode 100644 index 377d9ea1aa..0000000000 --- a/.agents/notes/implemented/bug-fix/2026-08-12-onboarding-reads-every-provider.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/bug-fix/2026-08-12-onboarding-reads-every-provider.md -2026-08-12-onboarding-reads-every-provider.md: 43895d6bc317f13ece91a48f9b44c0e8da705dc8 -2026-08-12-onboarding-reads-every-provider.zh.md: 67f12dd9e90435f61776d0eac048d588fcdd7252 diff --git a/.agents/notes/implemented/bug-fix/2026-08-12-resolve-store-pwsh-aliases.i18n.yaml b/.agents/notes/implemented/bug-fix/2026-08-12-resolve-store-pwsh-aliases.i18n.yaml deleted file mode 100644 index 140c7b9ae7..0000000000 --- a/.agents/notes/implemented/bug-fix/2026-08-12-resolve-store-pwsh-aliases.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/bug-fix/2026-08-12-resolve-store-pwsh-aliases.md -2026-08-12-resolve-store-pwsh-aliases.md: 20fe58e15e75462dc0a9ba76c7a1a94939f8a004 -2026-08-12-resolve-store-pwsh-aliases.zh.md: bbfa4616127a9dbdb6609fe2973283663de55b31 diff --git a/.agents/notes/implemented/bug-fix/2026-08-12-unlink-fixture-junctions-before-delete.i18n.yaml b/.agents/notes/implemented/bug-fix/2026-08-12-unlink-fixture-junctions-before-delete.i18n.yaml deleted file mode 100644 index 160f947daa..0000000000 --- a/.agents/notes/implemented/bug-fix/2026-08-12-unlink-fixture-junctions-before-delete.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/bug-fix/2026-08-12-unlink-fixture-junctions-before-delete.md -2026-08-12-unlink-fixture-junctions-before-delete.md: 4514a33d728866b817f4e9c1393f16c07976ed45 -2026-08-12-unlink-fixture-junctions-before-delete.zh.md: 3c212c052ab0303ccb8d31d2b310a365a1d8cc99 diff --git a/.agents/notes/implemented/bug-fix/2026-08-12-unlink-stale-profile-fallback-links.i18n.yaml b/.agents/notes/implemented/bug-fix/2026-08-12-unlink-stale-profile-fallback-links.i18n.yaml deleted file mode 100644 index 11d0cc29f4..0000000000 --- a/.agents/notes/implemented/bug-fix/2026-08-12-unlink-stale-profile-fallback-links.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/bug-fix/2026-08-12-unlink-stale-profile-fallback-links.md -2026-08-12-unlink-stale-profile-fallback-links.md: 32959eb1b83bcc290d1daa4e4a020a2721be489b -2026-08-12-unlink-stale-profile-fallback-links.zh.md: 18176f8c9832a2bc1564be68bf9136c9a9ae8740 diff --git a/.agents/notes/implemented/bug-fix/2026-08-13-bounded-cold-blank-verification.i18n.yaml b/.agents/notes/implemented/bug-fix/2026-08-13-bounded-cold-blank-verification.i18n.yaml deleted file mode 100644 index 4c597587e5..0000000000 --- a/.agents/notes/implemented/bug-fix/2026-08-13-bounded-cold-blank-verification.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/bug-fix/2026-08-13-bounded-cold-blank-verification.md -2026-08-13-bounded-cold-blank-verification.md: 9aec2a2b7df17c3a41c1f30c4ccef0b5a7a37950 -2026-08-13-bounded-cold-blank-verification.zh.md: a8ffe326ef5a43ab9e17f70ee1bf440f2239c1b1 diff --git a/.agents/notes/implemented/bug-fix/2026-08-13-feedback-note-editor-popover.i18n.yaml b/.agents/notes/implemented/bug-fix/2026-08-13-feedback-note-editor-popover.i18n.yaml deleted file mode 100644 index 8bbbdbf398..0000000000 --- a/.agents/notes/implemented/bug-fix/2026-08-13-feedback-note-editor-popover.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/bug-fix/2026-08-13-feedback-note-editor-popover.md -2026-08-13-feedback-note-editor-popover.md: 8f51f090cc24292ad02d96fefb1f45bc05df08c9 -2026-08-13-feedback-note-editor-popover.zh.md: 9b880002b910ef060cb6cef1153e14c34d05a111 diff --git a/.agents/notes/implemented/bug-fix/2026-08-13-oauth-only-providers-withheld.i18n.yaml b/.agents/notes/implemented/bug-fix/2026-08-13-oauth-only-providers-withheld.i18n.yaml deleted file mode 100644 index dde4a08d61..0000000000 --- a/.agents/notes/implemented/bug-fix/2026-08-13-oauth-only-providers-withheld.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/bug-fix/2026-08-13-oauth-only-providers-withheld.md -2026-08-13-oauth-only-providers-withheld.md: 138cae6f56c0d8355d8db3bddd27aede7caf5b09 -2026-08-13-oauth-only-providers-withheld.zh.md: 5665ac9ec8e1942f8879c58ee4d8e946aa3043de diff --git a/.agents/notes/implemented/bug-fix/2026-08-15-max-token-replay-state-alignment.i18n.yaml b/.agents/notes/implemented/bug-fix/2026-08-15-max-token-replay-state-alignment.i18n.yaml deleted file mode 100644 index 887950ad94..0000000000 --- a/.agents/notes/implemented/bug-fix/2026-08-15-max-token-replay-state-alignment.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/bug-fix/2026-08-15-max-token-replay-state-alignment.md -2026-08-15-max-token-replay-state-alignment.md: 0d8c9f2e55d826769325ea489d797a8561ac0e8e -2026-08-15-max-token-replay-state-alignment.zh.md: 30f11b990abbe1ddfb36241b2f80c188de75ed22 diff --git a/.agents/notes/implemented/bug-fix/2026-08-15-persistent-bash-keeps-controlled-prompt.i18n.yaml b/.agents/notes/implemented/bug-fix/2026-08-15-persistent-bash-keeps-controlled-prompt.i18n.yaml deleted file mode 100644 index a83fd48cda..0000000000 --- a/.agents/notes/implemented/bug-fix/2026-08-15-persistent-bash-keeps-controlled-prompt.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/bug-fix/2026-08-15-persistent-bash-keeps-controlled-prompt.md -2026-08-15-persistent-bash-keeps-controlled-prompt.md: 9ee71f2adc0d473c5490dbe2b29ce55c8377e275 -2026-08-15-persistent-bash-keeps-controlled-prompt.zh.md: 035d5b59b2f09ed0260be4cbd63f5bf46ca8a2d6 diff --git a/.agents/notes/implemented/bug-fix/2026-08-18-rail-search-outside-click-self-dismissal.i18n.yaml b/.agents/notes/implemented/bug-fix/2026-08-18-rail-search-outside-click-self-dismissal.i18n.yaml deleted file mode 100644 index 1aef254fee..0000000000 --- a/.agents/notes/implemented/bug-fix/2026-08-18-rail-search-outside-click-self-dismissal.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/bug-fix/2026-08-18-rail-search-outside-click-self-dismissal.md -2026-08-18-rail-search-outside-click-self-dismissal.md: b9f3aa33658919aa9061c0ec988878fea194de47 -2026-08-18-rail-search-outside-click-self-dismissal.zh.md: 72f19157dbef23c1109f799eca9686931a58156f diff --git a/.agents/notes/implemented/bug-fix/2026-08-18-tool-row-file-open-failure.i18n.yaml b/.agents/notes/implemented/bug-fix/2026-08-18-tool-row-file-open-failure.i18n.yaml deleted file mode 100644 index 762dc3711f..0000000000 --- a/.agents/notes/implemented/bug-fix/2026-08-18-tool-row-file-open-failure.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/bug-fix/2026-08-18-tool-row-file-open-failure.md -2026-08-18-tool-row-file-open-failure.md: c1887c834933199d5acf9035632cc83d470777d7 -2026-08-18-tool-row-file-open-failure.zh.md: 8a851b4b1bd40c66de92316967df612f828c8b38 diff --git a/.agents/notes/implemented/bug-fix/2026-08-19-deepseek-reasoning-passback-every-turn.i18n.yaml b/.agents/notes/implemented/bug-fix/2026-08-19-deepseek-reasoning-passback-every-turn.i18n.yaml deleted file mode 100644 index 8606912401..0000000000 --- a/.agents/notes/implemented/bug-fix/2026-08-19-deepseek-reasoning-passback-every-turn.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/bug-fix/2026-08-19-deepseek-reasoning-passback-every-turn.md -2026-08-19-deepseek-reasoning-passback-every-turn.md: 0fb9ff3cc0991bb2455bc0ef2ec6916b76e20be0 -2026-08-19-deepseek-reasoning-passback-every-turn.zh.md: d01c0c415ca4ce731cc8d9520729fe5b97119a9e diff --git a/.agents/notes/implemented/bug-fix/2026-08-20-explicit-web-index-paths.i18n.yaml b/.agents/notes/implemented/bug-fix/2026-08-20-explicit-web-index-paths.i18n.yaml deleted file mode 100644 index 1a3807ef26..0000000000 --- a/.agents/notes/implemented/bug-fix/2026-08-20-explicit-web-index-paths.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/bug-fix/2026-08-20-explicit-web-index-paths.md -2026-08-20-explicit-web-index-paths.md: 815cdd81d458547513225f9136a1d23b0f228ccc -2026-08-20-explicit-web-index-paths.zh.md: 4cbbac8413d3c4c8a5dcd25b5979dc0b70d47df5 diff --git a/.agents/notes/implemented/bug-fix/2026-08-20-plugin-owned-shipped-preset-root.i18n.yaml b/.agents/notes/implemented/bug-fix/2026-08-20-plugin-owned-shipped-preset-root.i18n.yaml deleted file mode 100644 index a3d9c60e2e..0000000000 --- a/.agents/notes/implemented/bug-fix/2026-08-20-plugin-owned-shipped-preset-root.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/bug-fix/2026-08-20-plugin-owned-shipped-preset-root.md -2026-08-20-plugin-owned-shipped-preset-root.md: 5af1d213f62acfc92ba053e7246adf55e32b4c34 -2026-08-20-plugin-owned-shipped-preset-root.zh.md: e5f2e08e221258899433f363109fb385b7472dc6 diff --git a/.agents/notes/implemented/bug-fix/2026-08-20-running-draft-primary-send.i18n.yaml b/.agents/notes/implemented/bug-fix/2026-08-20-running-draft-primary-send.i18n.yaml deleted file mode 100644 index 5a1d90d7f1..0000000000 --- a/.agents/notes/implemented/bug-fix/2026-08-20-running-draft-primary-send.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/bug-fix/2026-08-20-running-draft-primary-send.md -2026-08-20-running-draft-primary-send.md: 79c8c3a74fc49a325b229324b0d96b2387308d3d -2026-08-20-running-draft-primary-send.zh.md: 180352810f57ecc04882322318f9708cf247a09c diff --git a/.agents/notes/implemented/bug-fix/2026-08-20-turn-error-survives-same-turn-retry-history.i18n.yaml b/.agents/notes/implemented/bug-fix/2026-08-20-turn-error-survives-same-turn-retry-history.i18n.yaml deleted file mode 100644 index 61f0cc4e3e..0000000000 --- a/.agents/notes/implemented/bug-fix/2026-08-20-turn-error-survives-same-turn-retry-history.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/bug-fix/2026-08-20-turn-error-survives-same-turn-retry-history.md -2026-08-20-turn-error-survives-same-turn-retry-history.md: 9280d59d020a88d0f0f703d2e2adc54656687b16 -2026-08-20-turn-error-survives-same-turn-retry-history.zh.md: 1856d72e05c6261535df5f94c41cb3ff86c69362 diff --git a/.agents/notes/implemented/bug-fix/2026-08-21-deepseek-files-inline-fallback.i18n.yaml b/.agents/notes/implemented/bug-fix/2026-08-21-deepseek-files-inline-fallback.i18n.yaml deleted file mode 100644 index c4f148394e..0000000000 --- a/.agents/notes/implemented/bug-fix/2026-08-21-deepseek-files-inline-fallback.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/bug-fix/2026-08-21-deepseek-files-inline-fallback.md -2026-08-21-deepseek-files-inline-fallback.md: 7442089038e2cf47f37661c0f098054d03f67aef -2026-08-21-deepseek-files-inline-fallback.zh.md: 0534514f9bc52f7871f43c288466643cebc7d69c diff --git a/.agents/notes/implemented/bug-fix/2026-08-21-inline-user-text-projection.i18n.yaml b/.agents/notes/implemented/bug-fix/2026-08-21-inline-user-text-projection.i18n.yaml deleted file mode 100644 index 10d7ec3662..0000000000 --- a/.agents/notes/implemented/bug-fix/2026-08-21-inline-user-text-projection.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/bug-fix/2026-08-21-inline-user-text-projection.md -2026-08-21-inline-user-text-projection.md: deb0c54f41f950313246f3700d13b2a2c9f1b7ef -2026-08-21-inline-user-text-projection.zh.md: f7b8dd1d825aae05440256df267ae5bf7404ec29 diff --git a/.agents/notes/implemented/bug-fix/2026-08-23-win32-utf16-nul-truncation.i18n.yaml b/.agents/notes/implemented/bug-fix/2026-08-23-win32-utf16-nul-truncation.i18n.yaml deleted file mode 100644 index bf02c9b7dd..0000000000 --- a/.agents/notes/implemented/bug-fix/2026-08-23-win32-utf16-nul-truncation.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/bug-fix/2026-08-23-win32-utf16-nul-truncation.md -2026-08-23-win32-utf16-nul-truncation.md: 3962730c66d72b9927e5ce6dabde0f50101c5787 -2026-08-23-win32-utf16-nul-truncation.zh.md: 23df80053b23c5e2fbb810c95668bbeef7c91fe9 diff --git a/.agents/notes/implemented/bug-fix/2026-08-24-token-meter-surface-fold-plan-commit.i18n.yaml b/.agents/notes/implemented/bug-fix/2026-08-24-token-meter-surface-fold-plan-commit.i18n.yaml deleted file mode 100644 index e0910c810b..0000000000 --- a/.agents/notes/implemented/bug-fix/2026-08-24-token-meter-surface-fold-plan-commit.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/bug-fix/2026-08-24-token-meter-surface-fold-plan-commit.md -2026-08-24-token-meter-surface-fold-plan-commit.md: 878b2634c18e6bfbf5c341260659028f92399e96 -2026-08-24-token-meter-surface-fold-plan-commit.zh.md: 32ee8c6c44502e16fc0de9d3a62f0d375d662068 diff --git a/.agents/notes/implemented/bug-fix/2026-08-26-composer-gesture-editable-gate.i18n.yaml b/.agents/notes/implemented/bug-fix/2026-08-26-composer-gesture-editable-gate.i18n.yaml deleted file mode 100644 index 2b3943b416..0000000000 --- a/.agents/notes/implemented/bug-fix/2026-08-26-composer-gesture-editable-gate.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/bug-fix/2026-08-26-composer-gesture-editable-gate.md -2026-08-26-composer-gesture-editable-gate.md: 9b01a79d8d8a546641eaf87040d7a19fc5b4d5bc -2026-08-26-composer-gesture-editable-gate.zh.md: b5dc8d36c7b195a152d32e92fac7ae36eea880d9 diff --git a/.agents/notes/implemented/bug-fix/2026-08-26-pi-ai-grant-payload-json-image.i18n.yaml b/.agents/notes/implemented/bug-fix/2026-08-26-pi-ai-grant-payload-json-image.i18n.yaml deleted file mode 100644 index de1f46c4a5..0000000000 --- a/.agents/notes/implemented/bug-fix/2026-08-26-pi-ai-grant-payload-json-image.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/bug-fix/2026-08-26-pi-ai-grant-payload-json-image.md -2026-08-26-pi-ai-grant-payload-json-image.md: 9eb5e5ffd9ccbc18d409bd50e05061006bdca094 -2026-08-26-pi-ai-grant-payload-json-image.zh.md: 8329b4acf062a073dfe78ec10fe03852e7a64fd9 diff --git a/.agents/notes/implemented/bug-fix/2026-08-26-question-drafts-survive-session-switch.i18n.yaml b/.agents/notes/implemented/bug-fix/2026-08-26-question-drafts-survive-session-switch.i18n.yaml deleted file mode 100644 index df210daf29..0000000000 --- a/.agents/notes/implemented/bug-fix/2026-08-26-question-drafts-survive-session-switch.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/bug-fix/2026-08-26-question-drafts-survive-session-switch.md -2026-08-26-question-drafts-survive-session-switch.md: 2279c4efd5e79c51a0e2e2347f21fae4b0a47b7a -2026-08-26-question-drafts-survive-session-switch.zh.md: af275a704bef723cb3ed6fde83138a2be5b5cb3f diff --git a/.agents/notes/implemented/bug-fix/2026-08-26-stable-turn-process-order.i18n.yaml b/.agents/notes/implemented/bug-fix/2026-08-26-stable-turn-process-order.i18n.yaml deleted file mode 100644 index 565b158423..0000000000 --- a/.agents/notes/implemented/bug-fix/2026-08-26-stable-turn-process-order.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/bug-fix/2026-08-26-stable-turn-process-order.md -2026-08-26-stable-turn-process-order.md: 7122b901c8d24abc10c0bea51dcfc7a815b7aeeb -2026-08-26-stable-turn-process-order.zh.md: 574855fd4c9f923dfc3a2a80b815ffed3b2d7422 diff --git a/.agents/notes/implemented/bug-fix/2026-08-27-steer-followup-image-delivery.i18n.yaml b/.agents/notes/implemented/bug-fix/2026-08-27-steer-followup-image-delivery.i18n.yaml deleted file mode 100644 index 10a236e852..0000000000 --- a/.agents/notes/implemented/bug-fix/2026-08-27-steer-followup-image-delivery.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/bug-fix/2026-08-27-steer-followup-image-delivery.md -2026-08-27-steer-followup-image-delivery.md: 3a3d985e1dd09e17937d260253f3594b9a27a842 -2026-08-27-steer-followup-image-delivery.zh.md: 8015960eb899b1566cc1d738067acf3b318cdea6 diff --git a/.agents/notes/implemented/bug-fix/2026-08-28-linear-stream-queue-drain.i18n.yaml b/.agents/notes/implemented/bug-fix/2026-08-28-linear-stream-queue-drain.i18n.yaml deleted file mode 100644 index 74f7fa2569..0000000000 --- a/.agents/notes/implemented/bug-fix/2026-08-28-linear-stream-queue-drain.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/bug-fix/2026-08-28-linear-stream-queue-drain.md -2026-08-28-linear-stream-queue-drain.md: 3ec9ff3ae0f4df1265bc38dd86e44c126ea7e3e9 -2026-08-28-linear-stream-queue-drain.zh.md: c71b1da07408a8c502a60c84a38d8f009721d7bc diff --git a/.agents/notes/implemented/bug-fix/2026-08-28-read-image-extensionless-paths.i18n.yaml b/.agents/notes/implemented/bug-fix/2026-08-28-read-image-extensionless-paths.i18n.yaml deleted file mode 100644 index 0f9fa28a2a..0000000000 --- a/.agents/notes/implemented/bug-fix/2026-08-28-read-image-extensionless-paths.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/bug-fix/2026-08-28-read-image-extensionless-paths.md -2026-08-28-read-image-extensionless-paths.md: cf7d82b2ed86208bcb8ef6287dfcfc7c4391ccc4 -2026-08-28-read-image-extensionless-paths.zh.md: 8d4cd15f6c414bb28307863bfe61ea3a7181ed02 diff --git a/.agents/notes/implemented/bug-fix/2026-08-28-trigger-menu-stale-while-revalidate.i18n.yaml b/.agents/notes/implemented/bug-fix/2026-08-28-trigger-menu-stale-while-revalidate.i18n.yaml deleted file mode 100644 index bc6b1e4a09..0000000000 --- a/.agents/notes/implemented/bug-fix/2026-08-28-trigger-menu-stale-while-revalidate.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/bug-fix/2026-08-28-trigger-menu-stale-while-revalidate.md -2026-08-28-trigger-menu-stale-while-revalidate.md: 12541ba3ec6ee82ac6c12da85f99c0d8e044b9e8 -2026-08-28-trigger-menu-stale-while-revalidate.zh.md: 69b3d1b6a304562e1bb1835b1de2f09f8f38c5a4 diff --git a/.agents/notes/implemented/bug-fix/2026-08-29-drill-claim-precedes-the-drill-edit.i18n.yaml b/.agents/notes/implemented/bug-fix/2026-08-29-drill-claim-precedes-the-drill-edit.i18n.yaml deleted file mode 100644 index 0760aa642b..0000000000 --- a/.agents/notes/implemented/bug-fix/2026-08-29-drill-claim-precedes-the-drill-edit.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/bug-fix/2026-08-29-drill-claim-precedes-the-drill-edit.md -2026-08-29-drill-claim-precedes-the-drill-edit.md: 35ca60360c2c8647c44ce9a164cff71fa112f942 -2026-08-29-drill-claim-precedes-the-drill-edit.zh.md: 58f7ca84d201726c0630f7cb6e9bf9614de76c20 diff --git a/.agents/notes/implemented/bug-fix/2026-08-29-windows-atomic-replace-retry.i18n.yaml b/.agents/notes/implemented/bug-fix/2026-08-29-windows-atomic-replace-retry.i18n.yaml deleted file mode 100644 index 694e117443..0000000000 --- a/.agents/notes/implemented/bug-fix/2026-08-29-windows-atomic-replace-retry.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/bug-fix/2026-08-29-windows-atomic-replace-retry.md -2026-08-29-windows-atomic-replace-retry.md: 4db5de6403be7ec39a1568a11d8877cba1ed5838 -2026-08-29-windows-atomic-replace-retry.zh.md: 0138727ac0fe12af51b5a383b60859977300353c diff --git a/.agents/notes/implemented/bug-fix/2026-09-01-host-goal-pause-aborts-turn.i18n.yaml b/.agents/notes/implemented/bug-fix/2026-09-01-host-goal-pause-aborts-turn.i18n.yaml deleted file mode 100644 index f113c39c96..0000000000 --- a/.agents/notes/implemented/bug-fix/2026-09-01-host-goal-pause-aborts-turn.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/bug-fix/2026-09-01-host-goal-pause-aborts-turn.md -2026-09-01-host-goal-pause-aborts-turn.md: 8a6acc1403ea9d8f1dab241e7888bb98aadcde31 -2026-09-01-host-goal-pause-aborts-turn.zh.md: 60170cd1029ce210fa1002ab407b4083af36d72e diff --git a/.agents/notes/implemented/bug-fix/2026-09-03-fully-qualified-workspace-paths.i18n.yaml b/.agents/notes/implemented/bug-fix/2026-09-03-fully-qualified-workspace-paths.i18n.yaml deleted file mode 100644 index 70f8f76907..0000000000 --- a/.agents/notes/implemented/bug-fix/2026-09-03-fully-qualified-workspace-paths.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/bug-fix/2026-09-03-fully-qualified-workspace-paths.md -2026-09-03-fully-qualified-workspace-paths.md: 0bc6215ec5f6485856153b5a5c59d0ed68f485bb -2026-09-03-fully-qualified-workspace-paths.zh.md: b8e67f9d34fc8ccb7759c95017dd3ab4fde56113 diff --git a/.agents/notes/implemented/bug-fix/2026-09-03-hidden-windows-subprocess-windows.i18n.yaml b/.agents/notes/implemented/bug-fix/2026-09-03-hidden-windows-subprocess-windows.i18n.yaml deleted file mode 100644 index 49d1e84293..0000000000 --- a/.agents/notes/implemented/bug-fix/2026-09-03-hidden-windows-subprocess-windows.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/bug-fix/2026-09-03-hidden-windows-subprocess-windows.md -2026-09-03-hidden-windows-subprocess-windows.md: 97af84ddc0a51483fa0f1147caee0ea0374c240d -2026-09-03-hidden-windows-subprocess-windows.zh.md: d8f986278e974342cd24abd6fd3192165762c1f9 diff --git a/.agents/notes/implemented/bug-fix/2026-09-03-normalized-unread-fs-tool-diagnostic.i18n.yaml b/.agents/notes/implemented/bug-fix/2026-09-03-normalized-unread-fs-tool-diagnostic.i18n.yaml index 3f2dc80d45..573390ed70 100644 --- a/.agents/notes/implemented/bug-fix/2026-09-03-normalized-unread-fs-tool-diagnostic.i18n.yaml +++ b/.agents/notes/implemented/bug-fix/2026-09-03-normalized-unread-fs-tool-diagnostic.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/implemented/bug-fix/2026-09-03-normalized-unread-fs-tool-diagnostic.md -2026-09-03-normalized-unread-fs-tool-diagnostic.md: e7ae930ee6b5577d23a58caaeb096929255305a7 -2026-09-03-normalized-unread-fs-tool-diagnostic.zh.md: 907cd09ea28c79d0b26cb4791198ef055774d593 +2026-09-03-normalized-unread-fs-tool-diagnostic.md: 01287a080641e1272f9759532ae7333866c6352e +2026-09-03-normalized-unread-fs-tool-diagnostic.zh.md: 5aba96ce761376e8609267f251433fee11c9f114 diff --git a/.agents/notes/implemented/bug-fix/2026-09-03-normalized-unread-fs-tool-diagnostic.md b/.agents/notes/implemented/bug-fix/2026-09-03-normalized-unread-fs-tool-diagnostic.md index e7ae930ee6..01287a0806 100644 --- a/.agents/notes/implemented/bug-fix/2026-09-03-normalized-unread-fs-tool-diagnostic.md +++ b/.agents/notes/implemented/bug-fix/2026-09-03-normalized-unread-fs-tool-diagnostic.md @@ -12,7 +12,7 @@ The `dsh-tool-fs` write and edit operations can receive `FS_NOT_OBSERVED` from e `remediateFsError(error, displayPath)` replaces every `FS_NOT_OBSERVED` message at the `dsh-tool-fs` model boundary with `cannot modify "": file has not been read — read the file, then retry`. The wrapper preserves the structured error code and chains the source error as `cause`, so machine routing and diagnostics can still inspect the original failure. -`FS_STALE_VERSION` retains the appended re-read remedy owned by the [guarded-mutation remedy note](../feature/2026-08-03-fs-tool-error-remedy.md). Filesystem providers and policies keep their operation-specific messages because other consumers do not share the tool's model-facing presentation. +`FS_STALE_VERSION` retains the appended re-read remedy owned by the [guarded-mutation remedy note](../../archived/feature/2026-08-03-fs-tool-error-remedy.md). Filesystem providers and policies keep their operation-specific messages because other consumers do not share the tool's model-facing presentation. ## Alternatives considered diff --git a/.agents/notes/implemented/bug-fix/2026-09-03-normalized-unread-fs-tool-diagnostic.zh.md b/.agents/notes/implemented/bug-fix/2026-09-03-normalized-unread-fs-tool-diagnostic.zh.md index 907cd09ea2..5aba96ce76 100644 --- a/.agents/notes/implemented/bug-fix/2026-09-03-normalized-unread-fs-tool-diagnostic.zh.md +++ b/.agents/notes/implemented/bug-fix/2026-09-03-normalized-unread-fs-tool-diagnostic.zh.md @@ -12,7 +12,7 @@ Status: implemented `remediateFsError(error, displayPath)` 在 `dsh-tool-fs` 模型边界把每条 `FS_NOT_OBSERVED` 消息替换为 `cannot modify "": file has not been read — read the file, then retry`。包装层保留结构化错误码,并把来源错误链为 `cause`,因此机器路由与诊断仍能检查原始故障。 -`FS_STALE_VERSION` 继续使用[受防护变更恢复指令记录](../feature/2026-08-03-fs-tool-error-remedy.zh.md)拥有的追加式重新读取指令。文件系统提供方与策略保留其操作特定消息,因为其他消费方并不共享该工具面向模型的呈现。 +`FS_STALE_VERSION` 继续使用[受防护变更恢复指令记录](../../archived/feature/2026-08-03-fs-tool-error-remedy.md)拥有的追加式重新读取指令。文件系统提供方与策略保留其操作特定消息,因为其他消费方并不共享该工具面向模型的呈现。 ## 考虑过的替代方案 diff --git a/.agents/notes/implemented/bug-fix/2026-09-05-continuous-client-recovery.i18n.yaml b/.agents/notes/implemented/bug-fix/2026-09-05-continuous-client-recovery.i18n.yaml index 23b13400c7..a2bba51f16 100644 --- a/.agents/notes/implemented/bug-fix/2026-09-05-continuous-client-recovery.i18n.yaml +++ b/.agents/notes/implemented/bug-fix/2026-09-05-continuous-client-recovery.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/implemented/bug-fix/2026-09-05-continuous-client-recovery.md -2026-09-05-continuous-client-recovery.md: 3a017f69d78f9155dd513d44eb87e4bf0bdc1f9d -2026-09-05-continuous-client-recovery.zh.md: bc8b12d2ae4143ddb397334a76cdd65b49c32d96 +2026-09-05-continuous-client-recovery.md: 2eacaca4f8d4b76ab8d82bb10bb8cfa4c80cbd65 +2026-09-05-continuous-client-recovery.zh.md: 96908b1217ca1caa17514e16522080fa342e6813 diff --git a/.agents/notes/implemented/bug-fix/2026-09-05-continuous-client-recovery.md b/.agents/notes/implemented/bug-fix/2026-09-05-continuous-client-recovery.md index 3a017f69d7..2eacaca4f8 100644 --- a/.agents/notes/implemented/bug-fix/2026-09-05-continuous-client-recovery.md +++ b/.agents/notes/implemented/bug-fix/2026-09-05-continuous-client-recovery.md @@ -16,7 +16,7 @@ Retry caps grow from 500ms through 1s, 2s, 4s, and 8s to 10s, with the existing The Host Connection plugin validates `recovery` in its configuration and injects the resolved, non-secret timing into each page through `webserver/index-inject`. The Client validates that bootstrap input before providing Connection; direct loop options may override it. Timer values must be positive integers within the browser timer range, and the backoff factor must be finite and at least one. The shared resolver explicitly rejects `NaN`, which range comparisons alone cannot exclude. A factor of one selects continuous fixed-cap retries. Changes to Host timing apply to subsequently loaded pages. -The Settings indicator labels active recovery **Reconnecting** and keeps **Reconnect now** available. This decision supersedes the terminal retry policy in [Web connection recovery control](../feature/2026-08-28-web-connection-recovery-control.md). That note still owns manual recovery, browser offline suspension, the single-scheduler rule, and indicator presentation. A fresh `$events` ready frame alone establishes connectivity; domain streams retain their own baseline and cursor recovery. +The Settings indicator labels active recovery **Reconnecting** and keeps **Reconnect now** available. This decision supersedes the terminal retry policy in [Web connection recovery control](../../archived/feature/2026-08-28-web-connection-recovery-control.md). That note still owns manual recovery, browser offline suspension, the single-scheduler rule, and indicator presentation. A fresh `$events` ready frame alone establishes connectivity; domain streams retain their own baseline and cursor recovery. ## Alternatives considered diff --git a/.agents/notes/implemented/bug-fix/2026-09-05-continuous-client-recovery.zh.md b/.agents/notes/implemented/bug-fix/2026-09-05-continuous-client-recovery.zh.md index bc8b12d2ae..96908b1217 100644 --- a/.agents/notes/implemented/bug-fix/2026-09-05-continuous-client-recovery.zh.md +++ b/.agents/notes/implemented/bug-fix/2026-09-05-continuous-client-recovery.zh.md @@ -16,7 +16,7 @@ generation source 可能一直挂起,既不报告就绪,也不报告载体 Host Connection 插件校验配置中的 `recovery`,通过 `webserver/index-inject` 把已解析且不含秘密的时序数据注入每个页面。Client 在提供 Connection 之前校验启动输入;直接传给循环的选项可覆盖这些值。定时器值必须是浏览器定时器范围内的正整数,退避因子必须是至少为一的有限数。共享解析器显式拒绝仅靠范围比较无法排除的 `NaN`。一表示以固定上限持续重试。Host 时序配置的变更适用于随后加载的页面。 -Settings 指示器把活动恢复标为**自动重连中**,并始终提供**立即重连**。本决策取代[Web 连接恢复控制](../feature/2026-08-28-web-connection-recovery-control.zh.md)中的终态重试策略。该记录仍拥有手动恢复、浏览器离线暂停、唯一调度器规则与指示器展示。只有新的 `$events` ready 帧才能建立连接状态;各域的 stream 保留各自的 baseline 与 cursor 恢复方式。 +Settings 指示器把活动恢复标为**自动重连中**,并始终提供**立即重连**。本决策取代[Web 连接恢复控制](../../archived/feature/2026-08-28-web-connection-recovery-control.md)中的终态重试策略。该记录仍拥有手动恢复、浏览器离线暂停、唯一调度器规则与指示器展示。只有新的 `$events` ready 帧才能建立连接状态;各域的 stream 保留各自的 baseline 与 cursor 恢复方式。 ## 考虑过的替代方案 diff --git a/.agents/notes/implemented/feature/2026-06-14-acp-multi-session.i18n.yaml b/.agents/notes/implemented/feature/2026-06-14-acp-multi-session.i18n.yaml deleted file mode 100644 index 46d8b1a8ef..0000000000 --- a/.agents/notes/implemented/feature/2026-06-14-acp-multi-session.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-06-14-acp-multi-session.md -2026-06-14-acp-multi-session.md: 540bc0ee798b8e578fd8da293f4319285ec27beb -2026-06-14-acp-multi-session.zh.md: 814f28bb677169d1d65b2c954c28c21c2e2851fb diff --git a/.agents/notes/implemented/feature/2026-06-15-ptc.i18n.yaml b/.agents/notes/implemented/feature/2026-06-15-ptc.i18n.yaml index 255067c0f0..faa551cd78 100644 --- a/.agents/notes/implemented/feature/2026-06-15-ptc.i18n.yaml +++ b/.agents/notes/implemented/feature/2026-06-15-ptc.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-06-15-ptc.md -2026-06-15-ptc.md: c0a0b3ad54716761a74eed8b54c11480e9ca41bc -2026-06-15-ptc.zh.md: b774fc001509f30d41d1c519f344f67d797c2cbf +2026-06-15-ptc.md: 96dda525c677af638654cef042b583803d948707 +2026-06-15-ptc.zh.md: 1da45205c62eb054fd534e4f395e570244066c5a diff --git a/.agents/notes/implemented/feature/2026-06-15-ptc.md b/.agents/notes/implemented/feature/2026-06-15-ptc.md index c0a0b3ad54..96dda525c6 100644 --- a/.agents/notes/implemented/feature/2026-06-15-ptc.md +++ b/.agents/notes/implemented/feature/2026-06-15-ptc.md @@ -32,7 +32,7 @@ This note owns PTC mode's presentation, composition, isolation, and settlement f **Interaction with `toolOrder`:** a configured `systemPrompt.toolOrder` naming native capabilities rejects every assembly under `mode: 'ptc'`, because those names are outside that mode's wire-validation universe. This is correct behavior, not a bug: a deployment using PTC mode updates its order config or drops it. -**SDK prompt section.** In `'ptc'` and `'both'`, the lazy `tools:sdk` section in the tool-guidance order band renders the loaded runtime's language declarations plus fixed usage instructions for the scope's visible capabilities (TypeScript by default; the [language-dispatch note](2026-07-31-ptc-language-dispatch.md) added Python and the `ctx.codeRuntime.language` renderer table). It shares lookup and execution visibility, excludes `run_code`, and sorts tools lexicographically for byte-stable output. +**SDK prompt section.** In `'ptc'` and `'both'`, the lazy `tools:sdk` section in the tool-guidance order band renders the loaded runtime's language declarations plus fixed usage instructions for the scope's visible capabilities (TypeScript by default; the [language-dispatch note](../../archived/feature/2026-07-31-ptc-language-dispatch.md) added Python and the `ctx.codeRuntime.language` renderer table). It shares lookup and execution visibility, excludes `run_code`, and sorts tools lexicographically for byte-stable output. **Assembly ownership.** `run_code` and `tools:sdk` enter the trusted `system-prompt/assemble` waterfall as normal assembly inputs. A scoped `tools:sdk` section may shadow the global default before dispatch, and a listener may remove or replace either contribution. The waterfall's returned assembly is final, so whoever changes these inputs owns preserving a viable PTC mode protocol when the deployment expects PTC mode to remain usable; no restoration pass overrides deliberate composition. @@ -64,7 +64,7 @@ Each sub-dispatch appends a log-only `tool/code-dispatch-start` event at pool en - `CodeBindingNamespace = { global: string; functions: Record Promise>; errorClass?: { name: string; memberNameProperty: string } }` — the runtime exposes each namespace as a global object of async functions inside the program; the optional descriptor asks the runtime to inject a real program-visible rejection class without teaching the seam consumer-specific names. `CodeJsonValue` is this dependency-light seam's structural lossless-JSON type, so binding arguments and resolutions cross the implementation's serialization boundary whole. - `CodeRunResult = { value?: CodeJsonValue; logs: string[]; error?: CodeRunFailure }` — program execution outcomes resolve as the `error` field. `run()` may reject only for caller/seam misuse (for example a duplicate binding namespace); consumers still contain a non-conforming backend rejection at their own error boundary. - `CodeRunFailure = { kind: 'exception' | 'timeout' | 'abort' | 'worker-exit' | 'invalid-output' | 'output-limit'; message: string }` — orthogonal outcomes reported independently per [defensive patterns](../../../../docs/defensive-patterns.md); a timed-out run is not an exception, an abort is not a timeout, a lossy completion is not an overflow, and a substrate exit is none of them. -- Two readonly backend descriptors, informational not gating: `language` (what the program must be written in — `'typescript'` for the first backend; a Python backend says `'python'` and pairs with its own SDK generator on the presentation side) and `isolation` (`'worker-thread'` for the shipped backend; `'process'`, `'container'`, … for future ones). `dsh-tools` accepts any `language` with a registered SDK renderer and `run_code` flavor (TypeScript and Python ship; see the [language-dispatch note](2026-07-31-ptc-language-dispatch.md)) and fails the assembly loudly otherwise, the same misconfiguration idiom as `toolOrder` violations (as when `mode` is non-native with no `ctx.codeRuntime` loaded at all). +- Two readonly backend descriptors, informational not gating: `language` (what the program must be written in — `'typescript'` for the first backend; a Python backend says `'python'` and pairs with its own SDK generator on the presentation side) and `isolation` (`'worker-thread'` for the shipped backend; `'process'`, `'container'`, … for future ones). `dsh-tools` accepts any `language` with a registered SDK renderer and `run_code` flavor (TypeScript and Python ship; see the [language-dispatch note](../../archived/feature/2026-07-31-ptc-language-dispatch.md)) and fails the assembly loudly otherwise, the same misconfiguration idiom as `toolOrder` violations (as when `mode` is non-native with no `ctx.codeRuntime` loaded at all). Requests contain every runtime input; implementations own validated timeout and cap defaults. The registry looks up the optional runtime only when PTC mode is assembled, so native mode does not depend on one. Missing or language-incompatible runtimes fail loudly. Alternate substrates or languages can replace the implementation behind the same seam, paired with the appropriate SDK generator. @@ -85,7 +85,7 @@ The worker runtime provides containment, not a security boundary: model code can ### What the model sees -The SDK instructs the model to write an async body in the loaded runtime's language (an erasable-TypeScript body by default; a Python `async` body under a Python runtime — see the [language-dispatch note](2026-07-31-ptc-language-dispatch.md)), call tools through `await tools.name(args)`, catch rejected tool calls when needed, and return or log only the output that should re-enter context. Both flavors state the same contract in their own primitive: independent read-only calls MAY overlap under `Promise.all` (TypeScript) or `asyncio.gather` (Python), mutating calls run alone in submission order, and dependent work sequences with `await`. The declaration prefix can be as large as native schemas, especially in `'both'`, but remains stable for provider caching. +The SDK instructs the model to write an async body in the loaded runtime's language (an erasable-TypeScript body by default; a Python `async` body under a Python runtime — see the [language-dispatch note](../../archived/feature/2026-07-31-ptc-language-dispatch.md)), call tools through `await tools.name(args)`, catch rejected tool calls when needed, and return or log only the output that should re-enter context. Both flavors state the same contract in their own primitive: independent read-only calls MAY overlap under `Promise.all` (TypeScript) or `asyncio.gather` (Python), mutating calls run alone in submission order, and dependent work sequences with `await`. The declaration prefix can be as large as native schemas, especially in `'both'`, but remains stable for provider caching. The transport's own `description` and both SDK instruction flavors open by naming `code` and `description` as the call's two required arguments. Prose that describes the call as passing a program leaves the second argument discoverable only through the parameter schema, and a model that emits `{code}` alone loses the whole written program to an `INVALID_ARGS` rejection. diff --git a/.agents/notes/implemented/feature/2026-06-15-ptc.zh.md b/.agents/notes/implemented/feature/2026-06-15-ptc.zh.md index b774fc0015..1da45205c6 100644 --- a/.agents/notes/implemented/feature/2026-06-15-ptc.zh.md +++ b/.agents/notes/implemented/feature/2026-06-15-ptc.zh.md @@ -32,7 +32,7 @@ Cloudflare 的 [Code Mode](https://blog.cloudflare.com/code-mode/) 提出了一 **与 `toolOrder` 的交互:** 如果配置的 `systemPrompt.toolOrder` 引用了原生能力名称,在 `mode: 'ptc'` 下会拒绝所有组装,因为那些名称不在该模式的协议校验范围内。这是正确行为而非 bug:使用 PTC mode 的部署需要更新其 order 配置或移除它。 -**SDK 提示词段。** 在 `'ptc'` 和 `'both'` 下,tool-guidance order band 中的惰性 `tools:sdk` 段为当前 scope 的可见能力渲染所加载运行时语言的声明加固定的使用说明(默认 TypeScript;[语言分发 note](2026-07-31-ptc-language-dispatch.zh.md) 加入了 Python 与按 `ctx.codeRuntime.language` 选择的渲染器表)。它共享查找和执行可见性,排除 `run_code`,并按字典序排列工具以获得字节稳定的输出。 +**SDK 提示词段。** 在 `'ptc'` 和 `'both'` 下,tool-guidance order band 中的惰性 `tools:sdk` 段为当前 scope 的可见能力渲染所加载运行时语言的声明加固定的使用说明(默认 TypeScript;[语言分发 note](../../archived/feature/2026-07-31-ptc-language-dispatch.md) 加入了 Python 与按 `ctx.codeRuntime.language` 选择的渲染器表)。它共享查找和执行可见性,排除 `run_code`,并按字典序排列工具以获得字节稳定的输出。 **组装所有权。** `run_code` 和 `tools:sdk` 作为正常的组装输入进入受信任的 `system-prompt/assemble` waterfall。一个 scoped 的 `tools:sdk` 段可以在分发前遮蔽全局默认值,监听器也可以移除或替换任一贡献。waterfall 返回的组装结果是最终的,因此修改这些输入的人有责任在部署期望 PTC mode 可用时保持协议面的完整性;没有恢复 pass 会覆盖有意的组合。 @@ -64,7 +64,7 @@ Cloudflare 的 [Code Mode](https://blog.cloudflare.com/code-mode/) 提出了一 - `CodeBindingNamespace = { global: string; functions: Record Promise>; errorClass?: { name: string; memberNameProperty: string } }`——运行时将每个命名空间作为程序内部的全局异步函数对象暴露;可选描述符要求运行时注入真正的、程序可见的 reject 类,而无需让 seam 获知消费方专用名称。`CodeJsonValue` 是这个低依赖 seam 的结构化无损 JSON 类型,因此绑定参数与返回值可以完整跨越实现的序列化边界。 - `CodeRunResult = { value?: CodeJsonValue; logs: string[]; error?: CodeRunFailure }`——程序执行失败时,执行 promise 仍会 fulfill,并通过 `error` 字段返回失败结果。只有调用方/seam 误用(例如重复的绑定命名空间)时,`run()` 才会 reject;消费方仍在自己的错误边界处理不合规后端的拒绝。 - `CodeRunFailure = { kind: 'exception' | 'timeout' | 'abort' | 'worker-exit' | 'invalid-output' | 'output-limit'; message: string }`——按[防御性模式](../../../../docs/defensive-patterns.zh.md)独立报告的正交结果;超时的 run 不是异常,abort 不是超时,有损完成值不是溢出,基底退出也与上述情况相互独立。 -- 两个只读的后端描述符,仅供信息参考而非门禁判定:`language`(程序必须使用的语言——首个后端为 `'typescript'`;Python 后端声明 `'python'`,并在呈现侧配对自己的 SDK 生成器)和 `isolation`(交付的后端为 `'worker-thread'`;未来可为 `'process'`、`'container'` 等)。`dsh-tools` 接受任何注册了 SDK 渲染器与 `run_code` flavor 的 `language`(TypeScript 与 Python 已交付;见[语言分发 note](2026-07-31-ptc-language-dispatch.zh.md)),否则组装会显式失败,与 `toolOrder` 违规时的配置错误惯用法相同(如 `mode` 为非 native 但根本没有加载 `ctx.codeRuntime`)。 +- 两个只读的后端描述符,仅供信息参考而非门禁判定:`language`(程序必须使用的语言——首个后端为 `'typescript'`;Python 后端声明 `'python'`,并在呈现侧配对自己的 SDK 生成器)和 `isolation`(交付的后端为 `'worker-thread'`;未来可为 `'process'`、`'container'` 等)。`dsh-tools` 接受任何注册了 SDK 渲染器与 `run_code` flavor 的 `language`(TypeScript 与 Python 已交付;见[语言分发 note](../../archived/feature/2026-07-31-ptc-language-dispatch.md)),否则组装会显式失败,与 `toolOrder` 违规时的配置错误惯用法相同(如 `mode` 为非 native 但根本没有加载 `ctx.codeRuntime`)。 请求包含所有运行时输入;实现方拥有经校验的超时和上限默认值。注册表仅在组装 PTC mode 时查找可选的运行时,因此 native 模式不依赖它。缺失或语言不兼容的运行时会显式失败。替代基底或语言可以在同一 seam 背后替换实现,配对相应的 SDK 生成器。 @@ -85,7 +85,7 @@ worker 运行时只能约束程序的运行,而不构成安全边界:模型 ### 模型看到的内容 -SDK 指示模型编写一个所加载运行时语言的异步函数体(默认可擦除 TypeScript;Python 运行时下为 Python `async` 函数体——见[语言分发 note](2026-07-31-ptc-language-dispatch.zh.md)),通过 `await tools.name(args)` 调用工具,在需要时捕获被拒绝的工具调用,并仅 return 或 log 应重新进入上下文的输出。两种 flavor 用各自的原语陈述同一约定:相互独立的只读调用可以(MAY)在 `Promise.all`(TypeScript)或 `asyncio.gather`(Python)下重叠,有副作用的调用按提交顺序单独运行,有依赖的工作用 `await` 排序。声明前缀可能与原生 schema 一样大,尤其在 `'both'` 下,但对提供方缓存保持稳定。 +SDK 指示模型编写一个所加载运行时语言的异步函数体(默认可擦除 TypeScript;Python 运行时下为 Python `async` 函数体——见[语言分发 note](../../archived/feature/2026-07-31-ptc-language-dispatch.md)),通过 `await tools.name(args)` 调用工具,在需要时捕获被拒绝的工具调用,并仅 return 或 log 应重新进入上下文的输出。两种 flavor 用各自的原语陈述同一约定:相互独立的只读调用可以(MAY)在 `Promise.all`(TypeScript)或 `asyncio.gather`(Python)下重叠,有副作用的调用按提交顺序单独运行,有依赖的工作用 `await` 排序。声明前缀可能与原生 schema 一样大,尤其在 `'both'` 下,但对提供方缓存保持稳定。 传输自身的 `description` 与两种 flavor 的 SDK 说明都以点名 `code` 和 `description` 这两个必填参数开头。把该调用描述成「传入一个程序」的散文会让第二个参数只能从参数 schema 中发现,而只发出 `{code}` 的模型会因 `INVALID_ARGS` 被拒,连同已写好的整个程序一起丢失。 diff --git a/.agents/notes/implemented/feature/2026-06-17-filesystem-tool-schemas.i18n.yaml b/.agents/notes/implemented/feature/2026-06-17-filesystem-tool-schemas.i18n.yaml deleted file mode 100644 index 75cc5ae485..0000000000 --- a/.agents/notes/implemented/feature/2026-06-17-filesystem-tool-schemas.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-06-17-filesystem-tool-schemas.md -2026-06-17-filesystem-tool-schemas.md: 889129682f876a04c8ff7be0ce9118cc7b721e55 -2026-06-17-filesystem-tool-schemas.zh.md: 704bd4692bec760fa9ec8d01489ea48d67363d0d diff --git a/.agents/notes/implemented/feature/2026-06-18-compaction-capability-seam.i18n.yaml b/.agents/notes/implemented/feature/2026-06-18-compaction-capability-seam.i18n.yaml index d82b99bbc0..e7caf58a0e 100644 --- a/.agents/notes/implemented/feature/2026-06-18-compaction-capability-seam.i18n.yaml +++ b/.agents/notes/implemented/feature/2026-06-18-compaction-capability-seam.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-06-18-compaction-capability-seam.md -2026-06-18-compaction-capability-seam.md: 71ea7144cd843364fd77db0dd2c8a0d1e8bab1ac -2026-06-18-compaction-capability-seam.zh.md: f25c0d295e8d782213cc044e7109377feaa93e7e +2026-06-18-compaction-capability-seam.md: 770960498b0d873009ff2a5fc63af59c21259398 +2026-06-18-compaction-capability-seam.zh.md: a05df813cb573ee7adea60723063719f1d104cd9 diff --git a/.agents/notes/implemented/feature/2026-06-18-compaction-capability-seam.md b/.agents/notes/implemented/feature/2026-06-18-compaction-capability-seam.md index 71ea7144cd..770960498b 100644 --- a/.agents/notes/implemented/feature/2026-06-18-compaction-capability-seam.md +++ b/.agents/notes/implemented/feature/2026-06-18-compaction-capability-seam.md @@ -10,7 +10,7 @@ A long-running agent conversation grows without bound. As the event log accumula The [session surface](../architecture/2026-06-18-session-surface.md) was built as the foundation for exactly this — an ordered projection over the event log with a `surfaceOp: { op: 'replace', start, end }` operation purpose-built to shadow a range of entries and insert a replacement, with `sourceEventSeqs` listing every source event so replay can validate that the replacement cites every event it removes. What remained was the plugin that *decides what to compact and produces the summary*. -Two forces shape the design. First, compaction policy and reusable token measurement vary independently: measurement belongs to the LLM-family [`ctx.tokenMeter` service](../architecture/2026-07-15-replay-token-meter-service.md), while summarization can be a model call, a template, or a remote service. Second, `SurfaceEventType` is closed to the message-producing event types (`user/message`, `assistant/message`, `tool/result`); only those may carry `surfaceOp`. A bespoke `compaction/*` event therefore **cannot** itself appear on the surface — the compiler and Session's always-on append/seed boundary reject `surfaceOp` on it. +Two forces shape the design. First, compaction policy and reusable token measurement vary independently: measurement belongs to the LLM-family [`ctx.tokenMeter` service](../../archived/architecture/2026-07-15-replay-token-meter-service.md), while summarization can be a model call, a template, or a remote service. Second, `SurfaceEventType` is closed to the message-producing event types (`user/message`, `assistant/message`, `tool/result`); only those may carry `surfaceOp`. A bespoke `compaction/*` event therefore **cannot** itself appear on the surface — the compiler and Session's always-on append/seed boundary reject `surfaceOp` on it. ## Decision @@ -33,7 +33,7 @@ This is not a coupling smell — it is the contract's domain. The "only cordis" Putting the full algorithm (the retention walk, token-summing, text extraction) as concrete methods on the interface recouples the contract to one strategy: a backend that wants a different retention policy or event sequence would have to fight inherited concrete code. Making all three operations abstract puts every *how* decision in the backend and keeps the interface a statement of *what*. Token measurement is not a compaction hook at all; the singleton service lets multiple consumers share one per-session replay fold. -`compactIfNeeded(agent, trigger, signal)` takes an explicit `'pressure' | 'context-overflow'` trigger and cancellation. It reads only the latest durable routed request; no header means no work, while any routed provider/model target uses the singleton estimator. `compactNow(agent, signal)` requires an idle agent and performs one useful balanced reduction even below pressure, returning `null` without writes when none exists. `compactRegion(start, end, agent, signal?)` uses `agent.session` as its single session identity and keeps an optional signal for explicit callers. The default summarizer resolves its target from explicit config, the latest logged routed target, then agent options, and records the provider/model pair after any `llm/stream` routing. It replays the routed request's prefix and appends the compaction directive as a trailing user message so the provider's warm KV cache is reused — see the [summary prefix-cache Agent Note](../bug-fix/2026-07-21-compaction-summary-prefix-cache-reuse.md). The result carries `llmStreamCall: true` because it consumed exactly one call through this context's LLM service; a subclass sets that marker only under the same condition, since retained `rawOutput` alone does not identify the call path. The call sets the provider-neutral `GenerateOptions.purpose` to `compaction`; adapters may map that purpose to model-hidden transport metadata, and the DeepSeek adapter sends `x-deepseek-harness-compact: 1`. +`compactIfNeeded(agent, trigger, signal)` takes an explicit `'pressure' | 'context-overflow'` trigger and cancellation. It reads only the latest durable routed request; no header means no work, while any routed provider/model target uses the singleton estimator. `compactNow(agent, signal)` requires an idle agent and performs one useful balanced reduction even below pressure, returning `null` without writes when none exists. `compactRegion(start, end, agent, signal?)` uses `agent.session` as its single session identity and keeps an optional signal for explicit callers. The default summarizer resolves its target from explicit config, the latest logged routed target, then agent options, and records the provider/model pair after any `llm/stream` routing. It replays the routed request's prefix and appends the compaction directive as a trailing user message so the provider's warm KV cache is reused — see the [`dsh-compaction-basic` README](../../../../packages/compaction/compaction-basic/README.md). The result carries `llmStreamCall: true` because it consumed exactly one call through this context's LLM service; a subclass sets that marker only under the same condition, since retained `rawOutput` alone does not identify the call path. The call sets the provider-neutral `GenerateOptions.purpose` to `compaction`; adapters may map that purpose to model-hidden transport metadata, and the DeepSeek adapter sends `x-deepseek-harness-compact: 1`. ### Automatic pressure runs after successful durable step work @@ -119,7 +119,7 @@ The lifecycle boundary makes crash state unambiguous: ## Consequences - **Packages**: `packages/compaction/compaction` supplies the interface, `compaction-basic` supplies the backend, `compaction-tool-result-pruner` supplies optional deterministic rewriting, and `command-compact` supplies human `/compact`. `packages/llm/token-meter` owns replay-aware measurement independently. -- **Automatic extension points**: `agent/pre-step` (`@mode waterfall`) handles pressure before request derivation and `agent/request-error` (`@mode waterfall`) handles final request failures after the failed step closes. The pre-step payload carries the claimed batch, turn, step, and signal (see the [payload-object events decision](../architecture/2026-08-06-agent-event-payload-objects.md)), with no compaction-only prompt/prefix payload. +- **Automatic extension points**: `agent/pre-step` (`@mode waterfall`) handles pressure before request derivation and `agent/request-error` (`@mode waterfall`) handles final request failures after the failed step closes. The pre-step payload carries the claimed batch, turn, step, and signal (see the [payload-object events decision](../../archived/architecture/2026-08-06-agent-event-payload-objects.md)), with no compaction-only prompt/prefix payload. - **`SessionEventMap`** gains `compaction/start` / `compaction/summary` / `compaction/end` by declaration merging (merge-extensible); `SurfaceEventType` is **not** touched. These are session events, not cordis `Events`, so the event-taxonomy gate needs no entry. - **`dsh-compaction`** owns `COMPACT_CHECKPOINT_SOURCE`, `isCompactCheckpointSource(source)`, `toolPairingBalancedBefore(session, seq)`, and `toolPairingBalancedAfter(session, seq)`. The marker identifies replacement summaries across backend implementations. The cached surface-edge checks prevent `compactRegion` and `compactIfNeeded` from splitting a tool-call/result pair, validate current membership by seq, answer both edges from one per-cut balance sequence, and reject stale or missing seqs and orphan results. - **`dsh-session`** validates positional replacement, complete cited source-event coverage, and content-only single-node `tool/result` rewrites through its one surface manager. Its invariant companion treats fresh appended tool results as executions that require an open step and pending call, while the compaction companion owns numeric-turn versus standalone-null bracket relations. diff --git a/.agents/notes/implemented/feature/2026-06-18-compaction-capability-seam.zh.md b/.agents/notes/implemented/feature/2026-06-18-compaction-capability-seam.zh.md index f25c0d295e..a05df813cb 100644 --- a/.agents/notes/implemented/feature/2026-06-18-compaction-capability-seam.zh.md +++ b/.agents/notes/implemented/feature/2026-06-18-compaction-capability-seam.zh.md @@ -10,7 +10,7 @@ Status: implemented [会话接口面](../architecture/2026-06-18-session-surface.zh.md)正是为此而构建的基础设施:一份建立在事件日志之上的有序投影,带有专门设计的 `surfaceOp: { op: 'replace', start, end }` 操作,用于遮蔽一段条目并插入替换内容,`sourceEventSeqs` 列出每个来源事件,使回放可以验证替换是否引用了它移除的每个事件。剩下的是那个*决定压缩什么、并产出摘要*的插件。 -两股力量塑造了设计。第一,压缩策略与可复用的 token 测量独立变化:测量归 LLM(大语言模型)系列的 [`ctx.tokenMeter` 服务](../architecture/2026-07-15-replay-token-meter-service.zh.md)所有,摘要生成则可以使用模型调用、模板或远程服务。第二,`SurfaceEventType` 封闭为产生消息的事件类型(`user/message`、`assistant/message`、`tool/result`);只有这些类型可以携带 `surfaceOp`。因此一个专用的 `compaction/*` 事件**不能**出现在 surface 上,编译器与 Session 始终启用的 append/seed 边界都会拒绝在其上附加 `surfaceOp`。 +两股力量塑造了设计。第一,压缩策略与可复用的 token 测量独立变化:测量归 LLM(大语言模型)系列的 [`ctx.tokenMeter` 服务](../../archived/architecture/2026-07-15-replay-token-meter-service.md)所有,摘要生成则可以使用模型调用、模板或远程服务。第二,`SurfaceEventType` 封闭为产生消息的事件类型(`user/message`、`assistant/message`、`tool/result`);只有这些类型可以携带 `surfaceOp`。因此一个专用的 `compaction/*` 事件**不能**出现在 surface 上,编译器与 Session 始终启用的 append/seed 边界都会拒绝在其上附加 `surfaceOp`。 ## 决策 @@ -33,7 +33,7 @@ Status: implemented 将完整算法(保留遍历、token 求和、文本提取)作为接口上的具体方法,会将约定重新耦合到一种策略:想要不同保留策略或事件排序的后端必须与继承来的具体代码对抗。将三个操作都设为抽象,把所有*怎么做*的决策放在后端,并让接口保持为*做什么*的声明。token 测量根本不是压缩钩子;单例服务使多个消费方能够共享逐会话的回放折叠。 -`compactIfNeeded(agent, trigger, signal)` 接受显式的 `'pressure' | 'context-overflow'` 触发原因与取消信号。它只读取最新的持久化已路由请求;没有 header 就不执行工作,任何已路由的提供方/模型目标都使用单例估算器。`compactNow(agent, signal)` 要求 agent 处于 idle,即使未达到压力也进行一次有效的平衡缩减;不存在这种范围时返回 `null`,且不写入任何内容。`compactRegion(start, end, agent, signal?)` 将 `agent.session` 作为唯一会话身份,并为显式调用方保留可选 signal。默认摘要器依次从显式配置、最新记录的已路由目标和 agent 选项解析目标,并在任何 `llm/stream` 路由后记录提供方/模型对。它回放已路由请求的前缀,并将压缩指令追加为尾部 user 消息,从而复用提供方的热 KV Cache;见[摘要前缀缓存 Agent Note](../bug-fix/2026-07-21-compaction-summary-prefix-cache-reuse.zh.md)。该结果携带 `llmStreamCall: true`,因为生成它时恰好通过此上下文的 LLM 服务发起了一次调用;只有满足相同条件时,子类才设置该标记,因为单有保留的 `rawOutput` 并不能判定调用路径。该调用将提供方无关的 `GenerateOptions.purpose` 设为 `compaction`;适配器可以将此用途映射为对模型隐藏的传输元数据,DeepSeek 适配器会发送 `x-deepseek-harness-compact: 1`。 +`compactIfNeeded(agent, trigger, signal)` 接受显式的 `'pressure' | 'context-overflow'` 触发原因与取消信号。它只读取最新的持久化已路由请求;没有 header 就不执行工作,任何已路由的提供方/模型目标都使用单例估算器。`compactNow(agent, signal)` 要求 agent 处于 idle,即使未达到压力也进行一次有效的平衡缩减;不存在这种范围时返回 `null`,且不写入任何内容。`compactRegion(start, end, agent, signal?)` 将 `agent.session` 作为唯一会话身份,并为显式调用方保留可选 signal。默认摘要器依次从显式配置、最新记录的已路由目标和 agent 选项解析目标,并在任何 `llm/stream` 路由后记录提供方/模型对。它回放已路由请求的前缀,并将压缩指令追加为尾部 user 消息,从而复用提供方的热 KV Cache;见[`dsh-compaction-basic` README](../../../../packages/compaction/compaction-basic/README.zh.md)。该结果携带 `llmStreamCall: true`,因为生成它时恰好通过此上下文的 LLM 服务发起了一次调用;只有满足相同条件时,子类才设置该标记,因为单有保留的 `rawOutput` 并不能判定调用路径。该调用将提供方无关的 `GenerateOptions.purpose` 设为 `compaction`;适配器可以将此用途映射为对模型隐藏的传输元数据,DeepSeek 适配器会发送 `x-deepseek-harness-compact: 1`。 ### 成功的持久步骤工作完成后运行自动压力检查 @@ -119,7 +119,7 @@ compaction/end → log-only. Releases the lock (carries `error` on a recove ## 后果 - **包**:`packages/compaction/compaction` 提供接口,`compaction-basic` 提供后端,`compaction-tool-result-pruner` 提供可选的确定性重写,`command-compact` 提供面向用户的 `/compact`。`packages/llm/token-meter` 独立拥有回放感知的测量。 -- **自动扩展点**:`agent/pre-step`(`@mode waterfall`)在请求派生前处理压力,`agent/request-error`(`@mode waterfall`)处理失败步骤关闭后的最终请求失败。pre-step 的 payload 携带已领取批次、轮次、步骤与 signal(参见 [payload-object 事件决策](../architecture/2026-08-06-agent-event-payload-objects.zh.md)),不携带压缩专属的提示词/前缀 payload。 +- **自动扩展点**:`agent/pre-step`(`@mode waterfall`)在请求派生前处理压力,`agent/request-error`(`@mode waterfall`)处理失败步骤关闭后的最终请求失败。pre-step 的 payload 携带已领取批次、轮次、步骤与 signal(参见 [payload-object 事件决策](../../archived/architecture/2026-08-06-agent-event-payload-objects.md)),不携带压缩专属的提示词/前缀 payload。 - **`SessionEventMap`** 通过可合并扩展的声明合并获得 `compaction/start` / `compaction/summary` / `compaction/end`;`SurfaceEventType` **未被**触及。这些是会话事件,不是 cordis `Events`,因此事件分类门禁无需新增条目。 - **`dsh-compaction`** 拥有 `COMPACT_CHECKPOINT_SOURCE`、`isCompactCheckpointSource(source)`、`toolPairingBalancedBefore(session, seq)` 与 `toolPairingBalancedAfter(session, seq)`。该标记用于跨后端实现识别替换摘要。带缓存的 surface 边缘检查会防止 `compactRegion` 和 `compactIfNeeded` 拆分工具调用/结果对,按 seq 校验当前成员关系,从每个切割点的一条平衡序列回答两侧边缘,并拒绝陈旧或缺失的 seq 与孤立结果。 - **`dsh-session`** 通过唯一的 surface 管理器校验位置替换、引用的来源事件是否覆盖完整,以及仅内容的单节点 `tool/result` 重写。其不变式配套插件将新追加的工具结果视为执行,要求存在已打开的步骤与待处理调用,而压缩配套组件负责维护数字轮次 owner 与独立 `null` owner 事件对之间的关系。 diff --git a/.agents/notes/implemented/feature/2026-06-21-subagent-capability-seam.i18n.yaml b/.agents/notes/implemented/feature/2026-06-21-subagent-capability-seam.i18n.yaml index 57a5f4244b..1445f54bbb 100644 --- a/.agents/notes/implemented/feature/2026-06-21-subagent-capability-seam.i18n.yaml +++ b/.agents/notes/implemented/feature/2026-06-21-subagent-capability-seam.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-06-21-subagent-capability-seam.md -2026-06-21-subagent-capability-seam.md: 70ae99725dffee48292c3481df049563fb54a82c -2026-06-21-subagent-capability-seam.zh.md: 2f63c9022fb116daa2bb6ccd9150d96a823657de +2026-06-21-subagent-capability-seam.md: 6eedb3a4b03cd919aa8888853fac5fdaf3f74fe0 +2026-06-21-subagent-capability-seam.zh.md: 7e73fdc58f4b537ca2f6be481e359b267af31d96 diff --git a/.agents/notes/implemented/feature/2026-06-21-subagent-capability-seam.md b/.agents/notes/implemented/feature/2026-06-21-subagent-capability-seam.md index 70ae99725d..6eedb3a4b0 100644 --- a/.agents/notes/implemented/feature/2026-06-21-subagent-capability-seam.md +++ b/.agents/notes/implemented/feature/2026-06-21-subagent-capability-seam.md @@ -4,7 +4,7 @@ Status: implemented English | [中文](2026-06-21-subagent-capability-seam.zh.md) -> The full seam is shipped: the `dsh-subagent` interface and `dsh-tool-subagent` consumer; the two in-process backends (`dsh-subagent-spawn-in-process`, `dsh-subagent-fork-in-process`); the nested-agent snapshot infrastructure ([per-session snapshot replay](../testing/2026-06-22-subagent-snapshot-replay.md)); and the out-of-process ACP, Codex, and Claude Code backends ([ACP Agent Note](2026-06-22-acp-subagent-backend.md), [product-provider Agent Note](2026-08-04-claude-code-and-codex-subagent-backends.md)). +> The full seam is shipped: the `dsh-subagent` interface and `dsh-tool-subagent` consumer; the two in-process backends (`dsh-subagent-spawn-in-process`, `dsh-subagent-fork-in-process`); the nested-agent snapshot infrastructure ([per-session snapshot replay](../../archived/testing/2026-06-22-subagent-snapshot-replay.md)); and the out-of-process ACP, Codex, and Claude Code backends ([ACP Agent Note](../../archived/feature/2026-06-22-acp-subagent-backend.md), [product-provider Agent Note](2026-08-04-claude-code-and-codex-subagent-backends.md)). ## Problem @@ -66,7 +66,7 @@ Each in-process subagent runs in its **own `Session`** (own id, `parentSession` ## Testing -Registry and tool tests replace only the nondeterministic child with a package-local scripted provider while exercising the real `SubagentRuntime`, lifecycle, task integration, and model-facing tool. Loader regression tests still cover the provider and consumer exports for the failure described in [postmortem 0001](../../../../docs/postmortem/0001-acp-default-export-drops-inject.md). Registry tests cover reload safety, duplicate names, and start-time capability rejection; nested-agent scenarios replay keylessly through [per-session snapshot replay](../testing/2026-06-22-subagent-snapshot-replay.md); in-process backends also have real-loop unit tests and a with-key e2e. +Registry and tool tests replace only the nondeterministic child with a package-local scripted provider while exercising the real `SubagentRuntime`, lifecycle, task integration, and model-facing tool. Loader regression tests still cover the provider and consumer exports for the failure described in [postmortem 0001](../../../../docs/postmortem/0001-acp-default-export-drops-inject.md). Registry tests cover reload safety, duplicate names, and start-time capability rejection; nested-agent scenarios replay keylessly through [per-session snapshot replay](../../archived/testing/2026-06-22-subagent-snapshot-replay.md); in-process backends also have real-loop unit tests and a with-key e2e. ## Consequences diff --git a/.agents/notes/implemented/feature/2026-06-21-subagent-capability-seam.zh.md b/.agents/notes/implemented/feature/2026-06-21-subagent-capability-seam.zh.md index 2f63c9022f..7e73fdc58f 100644 --- a/.agents/notes/implemented/feature/2026-06-21-subagent-capability-seam.zh.md +++ b/.agents/notes/implemented/feature/2026-06-21-subagent-capability-seam.zh.md @@ -4,7 +4,7 @@ Status: implemented [English](2026-06-21-subagent-capability-seam.md) | 中文 -> 完整 seam 已交付:`dsh-subagent` 接口与 `dsh-tool-subagent` 消费方;两个进程内后端(`dsh-subagent-spawn-in-process`、`dsh-subagent-fork-in-process`);嵌套 agent(智能体)快照基础设施([逐会话快照回放](../testing/2026-06-22-subagent-snapshot-replay.zh.md));以及进程外的 ACP(Agent Client Protocol)、Codex 与 Claude Code 后端([ACP Agent Note](2026-06-22-acp-subagent-backend.zh.md)、[产品提供方 Agent Note](2026-08-04-claude-code-and-codex-subagent-backends.zh.md))。 +> 完整 seam 已交付:`dsh-subagent` 接口与 `dsh-tool-subagent` 消费方;两个进程内后端(`dsh-subagent-spawn-in-process`、`dsh-subagent-fork-in-process`);嵌套 agent(智能体)快照基础设施([逐会话快照回放](../../archived/testing/2026-06-22-subagent-snapshot-replay.md));以及进程外的 ACP(Agent Client Protocol)、Codex 与 Claude Code 后端([ACP Agent Note](../../archived/feature/2026-06-22-acp-subagent-backend.md)、[产品提供方 Agent Note](2026-08-04-claude-code-and-codex-subagent-backends.zh.md))。 ## 问题 @@ -66,7 +66,7 @@ bash seam([能力 seam](../architecture/2026-06-13-capability-seams.zh.md)) ## 测试 -注册表与工具测试仅用包内脚本化提供方替换非确定性的子 agent,同时测试真实的 `SubagentRuntime`、生命周期、任务集成和面向模型的工具。loader 回归测试仍覆盖提供方与消费方的 export,以防止[事故复盘(postmortem)0001](../../../../docs/postmortem/0001-acp-default-export-drops-inject.zh.md) 中描述的失败。注册表测试覆盖重载安全性、重名和启动时能力拒绝;嵌套 agent 场景通过[逐会话快照回放](../testing/2026-06-22-subagent-snapshot-replay.zh.md)进行无密钥回放;进程内后端还有真实循环的单元测试和带密钥的 e2e 测试。 +注册表与工具测试仅用包内脚本化提供方替换非确定性的子 agent,同时测试真实的 `SubagentRuntime`、生命周期、任务集成和面向模型的工具。loader 回归测试仍覆盖提供方与消费方的 export,以防止[事故复盘(postmortem)0001](../../../../docs/postmortem/0001-acp-default-export-drops-inject.zh.md) 中描述的失败。注册表测试覆盖重载安全性、重名和启动时能力拒绝;嵌套 agent 场景通过[逐会话快照回放](../../archived/testing/2026-06-22-subagent-snapshot-replay.md)进行无密钥回放;进程内后端还有真实循环的单元测试和带密钥的 e2e 测试。 ## 后果 diff --git a/.agents/notes/implemented/feature/2026-06-22-acp-subagent-backend.i18n.yaml b/.agents/notes/implemented/feature/2026-06-22-acp-subagent-backend.i18n.yaml deleted file mode 100644 index d80e8acfa6..0000000000 --- a/.agents/notes/implemented/feature/2026-06-22-acp-subagent-backend.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-06-22-acp-subagent-backend.md -2026-06-22-acp-subagent-backend.md: 85129ec6a5b1c5607ef3a89e6ebaf6cbfb29e7c9 -2026-06-22-acp-subagent-backend.zh.md: ed0b3488a91782cc1249f65e95935e2f7c00e9c3 diff --git a/.agents/notes/implemented/feature/2026-06-24-workspace-context.i18n.yaml b/.agents/notes/implemented/feature/2026-06-24-workspace-context.i18n.yaml deleted file mode 100644 index 98ac192fd7..0000000000 --- a/.agents/notes/implemented/feature/2026-06-24-workspace-context.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-06-24-workspace-context.md -2026-06-24-workspace-context.md: b676ab146b1449d15cfd20ff667899745344c0bf -2026-06-24-workspace-context.zh.md: e75adf39f3000e36aa2360b0225828cb5262a88c diff --git a/.agents/notes/implemented/feature/2026-06-29-todo-write-tool.i18n.yaml b/.agents/notes/implemented/feature/2026-06-29-todo-write-tool.i18n.yaml deleted file mode 100644 index 3680bd3b8a..0000000000 --- a/.agents/notes/implemented/feature/2026-06-29-todo-write-tool.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-06-29-todo-write-tool.md -2026-06-29-todo-write-tool.md: 4fe6cd5ce921e0f6fe71fd2548a0cfa6b8d2173b -2026-06-29-todo-write-tool.zh.md: eaeb70b02cdcbdee0ad83d24208e9c8bb0ec3bda diff --git a/.agents/notes/implemented/feature/2026-06-30-hook-bridges.i18n.yaml b/.agents/notes/implemented/feature/2026-06-30-hook-bridges.i18n.yaml deleted file mode 100644 index 0f1df83a62..0000000000 --- a/.agents/notes/implemented/feature/2026-06-30-hook-bridges.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-06-30-hook-bridges.md -2026-06-30-hook-bridges.md: 30d481f8bda2c65433863e55a75c862cc42479f0 -2026-06-30-hook-bridges.zh.md: 5d994bb0634aeca774d2265e1eba8487e8011ce2 diff --git a/.agents/notes/implemented/feature/2026-06-30-hook-protocol-lib.i18n.yaml b/.agents/notes/implemented/feature/2026-06-30-hook-protocol-lib.i18n.yaml deleted file mode 100644 index 587e1ba665..0000000000 --- a/.agents/notes/implemented/feature/2026-06-30-hook-protocol-lib.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-06-30-hook-protocol-lib.md -2026-06-30-hook-protocol-lib.md: db00d0f880a073fbdd53a591e5d2412f620ecedc -2026-06-30-hook-protocol-lib.zh.md: 7b0208ec95a8e6ecdf9ebca5badab871a9747b43 diff --git a/.agents/notes/implemented/feature/2026-06-30-interception-extension-points.i18n.yaml b/.agents/notes/implemented/feature/2026-06-30-interception-extension-points.i18n.yaml index 52b2f45c89..d5628fae1e 100644 --- a/.agents/notes/implemented/feature/2026-06-30-interception-extension-points.i18n.yaml +++ b/.agents/notes/implemented/feature/2026-06-30-interception-extension-points.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-06-30-interception-extension-points.md -2026-06-30-interception-extension-points.md: c16cb0d1f00256477ac79e739be91c8250765514 -2026-06-30-interception-extension-points.zh.md: b948b5574403d090dee0734b0b584ed4b969885e +2026-06-30-interception-extension-points.md: d628cdce0bc6c13a90a25eeebcfd977602dd76e3 +2026-06-30-interception-extension-points.zh.md: 689d7f6ee6d5a552c2eaf950ce5930be559eb5bb diff --git a/.agents/notes/implemented/feature/2026-06-30-interception-extension-points.md b/.agents/notes/implemented/feature/2026-06-30-interception-extension-points.md index c16cb0d1f0..d628cdce0b 100644 --- a/.agents/notes/implemented/feature/2026-06-30-interception-extension-points.md +++ b/.agents/notes/implemented/feature/2026-06-30-interception-extension-points.md @@ -16,7 +16,7 @@ The canonical surface separates transformable policy, around-dispatch control, a **Agent events** (`dsh-agent`): - `agent/session-start({ agent, source })` — emit, once before turn 1, carrying a `SessionStartSource` (`startup` for a fresh/forked create, `resume` for a reloaded persisted session; `clear`/`compact` reserved). A pure notification — it CANNOT block startup (a deliberate gap: a bridge logs/injects, it does not gate startup). A listener seeds context via `agent.inject()`. -- `agent/pre-step({ agent, messages, turn, step, signal }, next) → PreStepDecision` — waterfall, fired before every proposed step after the loop has atomically removed its exclusive inbox batch. The payload carries the request's `turn`, `step`, and cancellation `signal` (the retired `PreStepContext` fields live in the payload; see the [payload-object events decision](../architecture/2026-08-06-agent-event-payload-objects.md)); `messages` is empty for a tool continuation with no intervening input. `enter` returns the complete message batch, including any current-request context a listener contributes; `reject` opens no step and leaves the claimed messages removed. +- `agent/pre-step({ agent, messages, turn, step, signal }, next) → PreStepDecision` — waterfall, fired before every proposed step after the loop has atomically removed its exclusive inbox batch. The payload carries the request's `turn`, `step`, and cancellation `signal` (the retired `PreStepContext` fields live in the payload; see the [payload-object events decision](../../archived/architecture/2026-08-06-agent-event-payload-objects.md)); `messages` is empty for a tool continuation with no intervening input. `enter` returns the complete message batch, including any current-request context a listener contributes; `reject` opens no step and leaves the claimed messages removed. **`agent/turn-stopping`** is an awaited notification at the natural stop boundary. A listener that needs another step calls `agent.steer()` with explicitly sourced model-facing content; the loop then re-reads the outbox and either continues or closes the turn. @@ -52,7 +52,7 @@ The Service Definition package does **not** declare `hook/*` session events (the ## Alternatives considered - **Shipping pre-tool INPUT rewrite as part of this extension-point set** — deferred as the over-reach signal; the section above carries the consistency problem (audit, history, and presentation all read `tool/call.arguments` logged before execution), and [the pre-tool input-rewrite proposal](../../proposed/feature/2026-06-30-pre-tool-input-rewrite.md) owns the design. -- **Declaring the durable `hook/*` SessionEvents alongside the extension points** — rejected: a native plugin uses the typed Decisions with no hook log at all (the worked example proves it), so the durable log belongs to [the hook-protocol library](2026-06-30-hook-protocol-lib.md), not the extension surface. +- **Declaring the durable `hook/*` SessionEvents alongside the extension points** — rejected: a native plugin uses the typed Decisions with no hook log at all (the worked example proves it), so the durable log belongs to [the hook-protocol library](../../../../packages/hooks/hook-protocol/README.md), not the extension surface. ## Consequences diff --git a/.agents/notes/implemented/feature/2026-06-30-interception-extension-points.zh.md b/.agents/notes/implemented/feature/2026-06-30-interception-extension-points.zh.md index b948b55744..689d7f6ee6 100644 --- a/.agents/notes/implemented/feature/2026-06-30-interception-extension-points.zh.md +++ b/.agents/notes/implemented/feature/2026-06-30-interception-extension-points.zh.md @@ -16,7 +16,7 @@ harness 需要一套钩子子系统:用户像 Claude Code(CC)和 Codex 那 **Agent 事件**(`dsh-agent`): - `agent/session-start({ agent, source })` ——emit,在第 1 轮次之前触发一次,携带 `SessionStartSource`(`startup` 表示全新/fork 创建,`resume` 表示重新加载的持久化会话;`clear`/`compact` 保留)。纯通知,不能阻塞启动(这是有意的空白:桥接可以记录/注入,但不管控启动)。监听器通过 `agent.inject()` 注入上下文。 -- `agent/pre-step({ agent, messages, turn, step, signal }, next) → PreStepDecision` ——waterfall,在每个拟议步骤之前、循环原子移除其独占 inbox 批次后触发。payload 携带该请求的 `turn`、`step` 与取消 `signal`(已退役的 `PreStepContext` 字段位于 payload 中;参见 [payload-object 事件决策](../architecture/2026-08-06-agent-event-payload-objects.zh.md));没有中途输入的工具续步会收到空批次。`enter` 返回完整消息批次,其中包括监听器为当前请求贡献的上下文;`reject` 不打开步骤,并让已领取消息保持已删除。 +- `agent/pre-step({ agent, messages, turn, step, signal }, next) → PreStepDecision` ——waterfall,在每个拟议步骤之前、循环原子移除其独占 inbox 批次后触发。payload 携带该请求的 `turn`、`step` 与取消 `signal`(已退役的 `PreStepContext` 字段位于 payload 中;参见 [payload-object 事件决策](../../archived/architecture/2026-08-06-agent-event-payload-objects.md));没有中途输入的工具续步会收到空批次。`enter` 返回完整消息批次,其中包括监听器为当前请求贡献的上下文;`reject` 不打开步骤,并让已领取消息保持已删除。 **`agent/turn-stopping`** 是自然停止边界上的一次 awaited 通知。需要再执行一步的监听器调用 `agent.steer()`,传入来源显式的 steering(中途引导)内容供模型使用;循环随后重新读取 outbox,继续执行或关闭轮次。 @@ -52,7 +52,7 @@ Service Definition 包**不**声明 `hook/*` 会话事件(持久的钩子调 ## 曾考虑的替代方案 - **将工具执行前输入重写作为本扩展点集合的一部分发布**:推迟,视为越界信号;上文已阐述一致性问题(审计、历史和展示都读取执行前记录的 `tool/call.arguments`),[工具执行前输入重写提案](../../proposed/feature/2026-06-30-pre-tool-input-rewrite.zh.md)负责该设计。 -- **将持久的 `hook/*` SessionEvents 与扩展点一起声明**:否决。原生插件使用类型化 Decision 而完全不需要钩子日志(实际示例已证明),因此持久日志属于[钩子协议库](2026-06-30-hook-protocol-lib.zh.md),而非扩展接口。 +- **将持久的 `hook/*` SessionEvents 与扩展点一起声明**:否决。原生插件使用类型化 Decision 而完全不需要钩子日志(实际示例已证明),因此持久日志属于[钩子协议库](../../../../packages/hooks/hook-protocol/README.zh.md),而非扩展接口。 ## 后果 diff --git a/.agents/notes/implemented/feature/2026-06-30-session-store-fork-api.i18n.yaml b/.agents/notes/implemented/feature/2026-06-30-session-store-fork-api.i18n.yaml deleted file mode 100644 index fc258a1609..0000000000 --- a/.agents/notes/implemented/feature/2026-06-30-session-store-fork-api.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-06-30-session-store-fork-api.md -2026-06-30-session-store-fork-api.md: a2d169a36a8a0b624abef98377d644d713e5d64c -2026-06-30-session-store-fork-api.zh.md: 5ebf05e677f2d3676f860220b1cf9ff960565402 diff --git a/.agents/notes/implemented/feature/2026-07-05-dynamic-workflows.i18n.yaml b/.agents/notes/implemented/feature/2026-07-05-dynamic-workflows.i18n.yaml index 70f4e6e6dc..94e9a63e56 100644 --- a/.agents/notes/implemented/feature/2026-07-05-dynamic-workflows.i18n.yaml +++ b/.agents/notes/implemented/feature/2026-07-05-dynamic-workflows.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-07-05-dynamic-workflows.md -2026-07-05-dynamic-workflows.md: c1bce5d902c77aa1958905f4c31047524ea4b2b3 -2026-07-05-dynamic-workflows.zh.md: 035468a2f4c6dbb0a584a68ba3944681618d9d3b +2026-07-05-dynamic-workflows.md: 6d7dc43121df251d71a3305c083055b43d63f0f5 +2026-07-05-dynamic-workflows.zh.md: aaf527637f6fb5f58e088ab6021f5dcb9d4e0b5a diff --git a/.agents/notes/implemented/feature/2026-07-05-dynamic-workflows.md b/.agents/notes/implemented/feature/2026-07-05-dynamic-workflows.md index c1bce5d902..6d7dc43121 100644 --- a/.agents/notes/implemented/feature/2026-07-05-dynamic-workflows.md +++ b/.agents/notes/implemented/feature/2026-07-05-dynamic-workflows.md @@ -40,7 +40,7 @@ The engine exposes an in-process `MessageChannel` test path because main-process A `workflow` tool mirroring `dsh-tool-subagent`'s synchronous shape: start, await, `try/finally` dispose, abort-bridge `exec.signal`, non-`completed` → `isError`. Render intent: a `generic` card titled by the call's `meta.name` parameter (presentation is a pure function of args). The tool description IS the model-facing authoring spec. The usage policy ships with the tool as its own `tool:` prompt section (explicit-ask-only guidance — tool guidance lives in tool plugins, never in the deployment persona); the harness has no ultracode-style effort gate. -For a top-level tool execution, the same consumer also writes the run and actual member lifecycle into the calling parent Session as four log-only `tool-workflow/*` events. The recording path observes rather than controls execution: its first append failure disables later writes for that run and leaves a legal prefix without changing the tool result. [`ui-workflow-run`](../../../../packages/client/ui-workflow-run/README.md) rebuilds those facts through the Conversation Node engine as a separate keyed Chat row; the existing generic tool row remains its own presentation owner. The detailed persistence, replay, disclosure, and live-navigation decision lives in [durable workflow runs in Chat](2026-08-10-durable-workflow-runs-in-chat.md). +For a top-level tool execution, the same consumer also writes the run and actual member lifecycle into the calling parent Session as four log-only `tool-workflow/*` events. The recording path observes rather than controls execution: its first append failure disables later writes for that run and leaves a legal prefix without changing the tool result. [`ui-workflow-run`](../../../../packages/client/ui-workflow-run/README.md) rebuilds those facts through the Conversation Node engine as a separate keyed Chat row; the existing generic tool row remains its own presentation owner. The detailed persistence, replay, disclosure, and live-navigation decision lives in [durable workflow runs in Chat](../../archived/feature/2026-08-10-durable-workflow-runs-in-chat.md). ### The foundation: structured output on the subagent seam diff --git a/.agents/notes/implemented/feature/2026-07-05-dynamic-workflows.zh.md b/.agents/notes/implemented/feature/2026-07-05-dynamic-workflows.zh.md index 035468a2f4..aaf527637f 100644 --- a/.agents/notes/implemented/feature/2026-07-05-dynamic-workflows.zh.md +++ b/.agents/notes/implemented/feature/2026-07-05-dynamic-workflows.zh.md @@ -40,7 +40,7 @@ harness 可以通过 `dsh-tool-subagent` 将一个任务委派给一个子 agent 一个 `workflow` 工具,镜像 `dsh-tool-subagent` 的同步形态:启动、await、`try/finally` dispose、abort 桥接 `exec.signal`、非 `completed` → `isError`。渲染意图:一张以调用的 `meta.name` 参数为标题的 `generic` 卡片(展示是参数的纯函数)。工具描述即面向模型的编写规范。使用策略以工具自身的 `tool:` 提示词段落随工具发布(显式请求才使用的引导——工具引导存在于工具插件中,从不在部署 persona 中);harness 没有 ultracode 风格的 effort 门控。 -对于顶层工具执行,同一消费方还会把运行及实际成员生命周期写入调用方父 Session,形成四类 log-only `tool-workflow/*` 事件。记录路径只观察、不控制执行:第一次 append 失败会禁用本运行后续写入并留下合法前缀,不改变工具结果。[`ui-workflow-run`](../../../../packages/client/ui-workflow-run/README.zh.md) 通过 Conversation Node 引擎重建这些事实,形成独立 keyed Chat 行;现有 generic 工具行继续拥有自己的展示。持久化、回放、展开/收起与实时导航的详细决策见 [Chat 中的持久工作流运行](2026-08-10-durable-workflow-runs-in-chat.zh.md)。 +对于顶层工具执行,同一消费方还会把运行及实际成员生命周期写入调用方父 Session,形成四类 log-only `tool-workflow/*` 事件。记录路径只观察、不控制执行:第一次 append 失败会禁用本运行后续写入并留下合法前缀,不改变工具结果。[`ui-workflow-run`](../../../../packages/client/ui-workflow-run/README.zh.md) 通过 Conversation Node 引擎重建这些事实,形成独立 keyed Chat 行;现有 generic 工具行继续拥有自己的展示。持久化、回放、展开/收起与实时导航的详细决策见 [Chat 中的持久工作流运行](../../archived/feature/2026-08-10-durable-workflow-runs-in-chat.md)。 ### 基础:subagent seam 上的结构化输出 diff --git a/.agents/notes/implemented/feature/2026-07-05-skill-system.i18n.yaml b/.agents/notes/implemented/feature/2026-07-05-skill-system.i18n.yaml deleted file mode 100644 index fbba8fd85c..0000000000 --- a/.agents/notes/implemented/feature/2026-07-05-skill-system.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-07-05-skill-system.md -2026-07-05-skill-system.md: 21ad2c899e0f0507b5b09c0d64e7a0c54c73ce59 -2026-07-05-skill-system.zh.md: 44dbce33b5e655ebe511fe10fab91c4e08763538 diff --git a/.agents/notes/implemented/feature/2026-07-06-approval-seam.i18n.yaml b/.agents/notes/implemented/feature/2026-07-06-approval-seam.i18n.yaml index 5075fdd7a2..f3eb596443 100644 --- a/.agents/notes/implemented/feature/2026-07-06-approval-seam.i18n.yaml +++ b/.agents/notes/implemented/feature/2026-07-06-approval-seam.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-07-06-approval-seam.md -2026-07-06-approval-seam.md: 6e94ed945b4c568bd3c82c8e590736d8d1c27606 -2026-07-06-approval-seam.zh.md: 26447522ecf1d93a09944c0d2eb9574f1e0f9cb2 +2026-07-06-approval-seam.md: 03a4269dd7712f88d73e0439f944e6bf5bce14b5 +2026-07-06-approval-seam.zh.md: f11e0956c90cd60c9e34c7ccdee62111b5653545 diff --git a/.agents/notes/implemented/feature/2026-07-06-approval-seam.md b/.agents/notes/implemented/feature/2026-07-06-approval-seam.md index 6e94ed945b..03a4269dd7 100644 --- a/.agents/notes/implemented/feature/2026-07-06-approval-seam.md +++ b/.agents/notes/implemented/feature/2026-07-06-approval-seam.md @@ -69,7 +69,7 @@ The seam also owns the session-scoped `'ask' | 'never'` policy described by [the The ACP bridge answers only for an exact agent object owned by its session map. It sends `session/request_permission` with the existing `callId`, advertises one-shot allow/reject options, maps cancellation separately, and never grants an unknown option. Foreign or call-less requests delegate; a failed client RPC becomes `unavailable`. Hooks and `tools/pre-execute` decide whether a call asks at all. This channel is machine policy between an automated client and its agent, not ACP presentation. -The answerer routes through the bridge's exact-agent ownership check described by [the automation-only ACP Agent Note](../simplification/2026-07-23-acp-automation-only-protocol.md), preserving the per-session permission ownership required by [the multi-session Agent Note](2026-06-14-acp-multi-session.md). +The answerer routes through the bridge's exact-agent ownership check described by [the automation-only ACP Agent Note](../simplification/2026-07-23-acp-automation-only-protocol.md), preserving the per-session permission ownership required by [the multi-session Agent Note](../../archived/feature/2026-06-14-acp-multi-session.md). #### Audit, and what the model sees @@ -133,7 +133,7 @@ Costs and accepted limits: In-repo precedents this design copies or contrasts with: - The `fs/write-intent` gate (`packages/fs/fs/`) — the documented single-occupancy decision-slot waterfall semantics (first answer wins, delegate via `next()`) the answerer contract reuses. -- `hook/invoked`/`hook/result` — the log-only audit-pair precedent `approval/asked`/`approval/decided` follows; [the hook-bridges Agent Note](2026-06-30-hook-bridges.md) ships `permissionDecision: ask`, the first producer. +- `hook/invoked`/`hook/result` — the log-only audit-pair precedent `approval/asked`/`approval/decided` follows; [the hook-bridges Agent Note](../../archived/feature/2026-06-30-hook-bridges.md) ships `permissionDecision: ask`, the first producer. - [The interception extension-points Agent Note](2026-06-30-interception-extension-points.md) — the `tools/pre-execute` `allow`/`deny`/`ask` vocabulary whose `ask` this seam services. -- [The automation-only ACP Agent Note](../simplification/2026-07-23-acp-automation-only-protocol.md) — the exact-agent ownership check against the session map that the answerer routes through; [the multi-session Agent Note](2026-06-14-acp-multi-session.md) — the per-session permission-ownership blocker this implements. +- [The automation-only ACP Agent Note](../simplification/2026-07-23-acp-automation-only-protocol.md) — the exact-agent ownership check against the session map that the answerer routes through; [the multi-session Agent Note](../../archived/feature/2026-06-14-acp-multi-session.md) — the per-session permission-ownership blocker this implements. - The opportunistic `ctx.get()` consumption pattern (`tool-bash`'s owner-token lookup, the loop's persistence probe) — how `dsh-tools` consumes the seam without gating its fiber on it. diff --git a/.agents/notes/implemented/feature/2026-07-06-approval-seam.zh.md b/.agents/notes/implemented/feature/2026-07-06-approval-seam.zh.md index 26447522ec..f11e0956c9 100644 --- a/.agents/notes/implemented/feature/2026-07-06-approval-seam.zh.md +++ b/.agents/notes/implemented/feature/2026-07-06-approval-seam.zh.md @@ -69,7 +69,7 @@ seam 还拥有[沙箱 Agent Note](2026-07-06-sandbox.zh.md) 所描述的会话 ACP 桥只应答其会话映射所拥有的精确 agent 对象。它携带既有 `callId` 发送 `session/request_permission`,声明一次性的 allow/reject 选项,单独映射取消,并且绝不批准未知选项。不属于该桥或没有调用标识的请求会继续委派;客户端 RPC 失败会转换为 `unavailable`。钩子和 `tools/pre-execute` 决定一次调用是否需要询问。该通道是自动化客户端与其 agent 之间的机器策略,不是 ACP 展示层。 -应答者通过[仅面向自动化的 ACP Agent Note](../simplification/2026-07-23-acp-automation-only-protocol.zh.md)描述的桥精确 agent 归属检查进行路由,保留了[多会话 Agent Note](2026-06-14-acp-multi-session.zh.md) 要求的每会话权限归属。 +应答者通过[仅面向自动化的 ACP Agent Note](../simplification/2026-07-23-acp-automation-only-protocol.zh.md)描述的桥精确 agent 归属检查进行路由,保留了[多会话 Agent Note](../../archived/feature/2026-06-14-acp-multi-session.md) 要求的每会话权限归属。 #### 审计,以及模型看到什么 @@ -133,7 +133,7 @@ ACP 桥只应答其会话映射所拥有的精确 agent 对象。它携带既有 本设计复用或对照的仓库内先例: - `fs/write-intent` 门禁(`packages/fs/fs/`)——文档化的单占用决策槽 waterfall 语义(先到先得,通过 `next()` 委派),应答者约定复用了它。 -- `hook/invoked`/`hook/result`——仅日志审计对先例,`approval/asked`/`approval/decided` 沿用了它;[钩子桥 Agent Note](2026-06-30-hook-bridges.zh.md) 交付了 `permissionDecision: ask`,即第一个生产者。 +- `hook/invoked`/`hook/result`——仅日志审计对先例,`approval/asked`/`approval/decided` 沿用了它;[钩子桥 Agent Note](../../archived/feature/2026-06-30-hook-bridges.md) 交付了 `permissionDecision: ask`,即第一个生产者。 - [拦截扩展点 Agent Note](2026-06-30-interception-extension-points.zh.md)——`tools/pre-execute` 的 `allow`/`deny`/`ask` 词汇,本 seam 服务其中的 `ask`。 -- [仅面向自动化的 ACP Agent Note](../simplification/2026-07-23-acp-automation-only-protocol.zh.md)——应答者路由时对会话映射执行的精确 agent 归属检查;[多会话 Agent Note](2026-06-14-acp-multi-session.zh.md)——本设计实现的每会话权限归属阻塞项。 +- [仅面向自动化的 ACP Agent Note](../simplification/2026-07-23-acp-automation-only-protocol.zh.md)——应答者路由时对会话映射执行的精确 agent 归属检查;[多会话 Agent Note](../../archived/feature/2026-06-14-acp-multi-session.md)——本设计实现的每会话权限归属阻塞项。 - 机会性 `ctx.get()` 消费模式(`tool-bash` 的 owner-token 查找、loop 的持久化探测)——`dsh-tools` 消费该 seam 而不阻塞其 fiber 的方式。 diff --git a/.agents/notes/implemented/feature/2026-07-06-explicit-tool-order.i18n.yaml b/.agents/notes/implemented/feature/2026-07-06-explicit-tool-order.i18n.yaml deleted file mode 100644 index a76283f9e0..0000000000 --- a/.agents/notes/implemented/feature/2026-07-06-explicit-tool-order.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-07-06-explicit-tool-order.md -2026-07-06-explicit-tool-order.md: 735818ba5bbaabe6c3d33df844ca4b1fb29ad026 -2026-07-06-explicit-tool-order.zh.md: cb5fa1f7fb130b1e6819d07f64a5c8bd6fcd167b diff --git a/.agents/notes/implemented/feature/2026-07-06-sandbox.i18n.yaml b/.agents/notes/implemented/feature/2026-07-06-sandbox.i18n.yaml index e89b17232f..081433eb42 100644 --- a/.agents/notes/implemented/feature/2026-07-06-sandbox.i18n.yaml +++ b/.agents/notes/implemented/feature/2026-07-06-sandbox.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-07-06-sandbox.md -2026-07-06-sandbox.md: c4153c6ef47b6d11290094adf06b8107418be889 -2026-07-06-sandbox.zh.md: 9191b1b8d2d4e65acab8b935d0da170066876aea +2026-07-06-sandbox.md: ceffb260163bc21e2ed13275dde38ea0843aac7d +2026-07-06-sandbox.zh.md: 2b6753585b2778bc0dc898661d9f21779dc37f18 diff --git a/.agents/notes/implemented/feature/2026-07-06-sandbox.md b/.agents/notes/implemented/feature/2026-07-06-sandbox.md index c4153c6ef4..ceffb26016 100644 --- a/.agents/notes/implemented/feature/2026-07-06-sandbox.md +++ b/.agents/notes/implemented/feature/2026-07-06-sandbox.md @@ -64,7 +64,7 @@ Left open, for the phase that needs them: whether network restriction arrives as The launcher is a ~300-line C program (plain C11 over the raw Landlock UAPI — no libraries beyond a statically linked musl, so the audit surface is that one file plus the kernel's stable syscall contract): `--ro ` / `--rw ` grants, `--`, the wrapped argv; it installs the ruleset on itself and `exec`s (rulesets are inherited across `execve`, and it sets `no_new_privs` before restricting); `--probe` enforces a maximal ruleset in a short-lived child and exits 0 only when the kernel actually enforces; every launcher failure exits 125 without running the child and prints a fatal `landlock-run:` line. A successfully exec'd child may also return 125, so status alone is not launcher evidence. An older ABI prints the exact `landlock-run: partial enforcement (older Landlock ABI)` notice before it executes the child, so that line is not fatal evidence. -The Landlock launcher source and package family live at `native/landlock-run`, next to the harness consumers and inside the root pnpm workspace. The [in-repository Landlock release decision](../process/2026-08-06-in-repository-landlock-release.md) owns the shared lockfile, native build, pack rehearsal, and npm publication boundary. Platform binaries are selected by npm, and the entry package owns path resolution, probing, CLI flags, the fatal prefix, and the partial-enforcement notice while the harness maps sandbox modes to grants. Versioning the entry point with its binaries keeps probe parsing and launch syntax aligned. +The Landlock launcher source and package family live at `native/landlock-run`, next to the harness consumers and inside the root pnpm workspace. The [`native/` README](../../../../native/README.md) owns the shared lockfile, native build, pack rehearsal, and npm publication boundary. Platform binaries are selected by npm, and the entry package owns path resolution, probing, CLI flags, the fatal prefix, and the partial-enforcement notice while the harness maps sandbox modes to grants. Versioning the entry point with its binaries keeps probe parsing and launch syntax aligned. Backend profiles share the mode contract but differ in necessary host grants. Landlock and Seatbelt allow only `/dev/null` in read-only mode; workspace-write also permits their required host temp roots. Each wrap carries backend-specific denial signatures. Landlock reports partial enforcement on older ABIs that cannot govern every operation, while successful bwrap and Seatbelt profiles report full enforcement. @@ -72,7 +72,7 @@ Backend profiles share the mode contract but differ in necessary host grants. La `dsh-bash-sandbox` extends `LocalBashExecutor`, hands `ctx.sandbox` the exact `['bash', '-c', command]` argv, and directly spawns the provider result. This leaves shell semantics and `BASH_ENV` on the inner Bash after the shipped native runner establishes confinement. A provider error propagates unchanged. A pre-process rejection counts as a runner failure only when the caller-owned workdir is independently usable and Node reports `ENOENT` or `EACCES` with either an `error.path` equal to provider argv[0] or, when `error.path` is absent, an exact `syscall: 'spawn '`; a present path also requires `syscall: 'spawn'` or the exact `spawn `. Other codes, invalid workdirs, resource failures, unrelated syscalls, and unstructured rejections retain local command-start semantics. Foreground execution converts runner failures to `SANDBOX_UNAVAILABLE` with the original detail; an asynchronous background rejection stamps `runnerFailed: true`, `denied: false`. A `SubprocessRuntime` that synchronously throws the same runner-identifying shape makes background start throw `SANDBOX_UNAVAILABLE`, while other synchronous errors propagate unchanged. After a process starts, foreground and background use one runner-failure classifier that requires the rule's exit-code check and a remaining fatal line after informational exclusions. A match takes priority over denial: foreground execution throws `SANDBOX_UNAVAILABLE` with that fatal line as detail; a settled `ShellProcess` stamps `sandbox.runnerFailed`, and the bash producer renders it through generic `job_output`. -The model sees the current effective file policy in the owner-derived `sandbox:policy` context, while the static tool description explains the denial marker (`[sandbox: file access denied under mode]`), encourages attempting commands that may be denied, and forbids retrying around a denial; when the escalation fields are advertised, a denied result additionally carries the escalation hint itself, so the sanctioned same-turn retry is prompted at the decision point rather than depending on the model recalling the description (§ Escalation). [The current-policy decision](2026-07-30-current-sandbox-policy-context.md) owns the context's rationale and boundaries. +The model sees the current effective file policy in the owner-derived `sandbox:policy` context, while the static tool description explains the denial marker (`[sandbox: file access denied under mode]`), encourages attempting commands that may be denied, and forbids retrying around a denial; when the escalation fields are advertised, a denied result additionally carries the escalation hint itself, so the sanctioned same-turn retry is prompted at the decision point rather than depending on the model recalling the description (§ Escalation). [The current-policy decision](../../archived/feature/2026-07-30-current-sandbox-policy-context.md) owns the context's rationale and boundaries. #### Escalation: one approved wider retry after a denial @@ -149,7 +149,7 @@ Each phase gets its full design when picked up, validated against the code at th - **Hard-match the retry to a prior denial** — rejected: command-string identity is fragile (quoting, `workdir`, env prefixes, a pipeline retried as its failing stage) — false-rejects honest retries or is trivially satisfied; the real boundary is the human seeing command + justification. Revisit only if `allow_always` grant storage ever needs machine-checkable scopes. - **A generic `env/state` facts map with an owner service** — rejected: approval and sandbox compose independently, so neither's state may drag in a third package; single-key folds are one `findLast` each, dissolving the owner service; no invariant spans the knobs, so atomic multi-key patches bought nothing. - **Narrate each switch through `agent.inject()` plus a bus event** — rejected: independent notices expose owner ordering and intermediate combinations, while one pre-step composition can enqueue the complete current state atomically. -- **State sandbox mode in the stable system prompt** — shipped first, then removed on live evidence: with `Bash commands run under the "read-only" file sandbox.` in every request, the model refused to ATTEMPT denied-then-escalatable work (five of twelve turns in the first manual session ended with zero tool calls), turning the sandbox into a soft lockout. The denial marker names the mode at the moment it matters and the escalation fields carry the recovery. The absence decision is superseded by [the current-policy decision](2026-07-30-current-sandbox-policy-context.md); this measurement and causal observation remain the evidence that any replacement must counter-test. +- **State sandbox mode in the stable system prompt** — shipped first, then removed on live evidence: with `Bash commands run under the "read-only" file sandbox.` in every request, the model refused to ATTEMPT denied-then-escalatable work (five of twelve turns in the first manual session ended with zero tool calls), turning the sandbox into a soft lockout. The denial marker names the mode at the moment it matters and the escalation fields carry the recovery. The absence decision is superseded by [the current-policy decision](../../archived/feature/2026-07-30-current-sandbox-policy-context.md); this measurement and causal observation remain the evidence that any replacement must counter-test. - **Track "last told" with its own bookkeeping events** — rejected: session history records the exact policy context the model saw, while the claimed batch and pending inbox entry show what is entering or queued. Recomputing the desired message replaces a second bookkeeping stream — events are needed only where they ARE the store. - **Independent sandbox and approval selectors** — rejected: one deployment-defined permission preset keeps the two policy knobs coherent for UI clients that expose runtime switching. diff --git a/.agents/notes/implemented/feature/2026-07-06-sandbox.zh.md b/.agents/notes/implemented/feature/2026-07-06-sandbox.zh.md index 9191b1b8d2..2b6753585b 100644 --- a/.agents/notes/implemented/feature/2026-07-06-sandbox.zh.md +++ b/.agents/notes/implemented/feature/2026-07-06-sandbox.zh.md @@ -64,7 +64,7 @@ OS 子进程约束适用于 bash 执行器(包括钩子命令),后续还 launcher 是一个约 300 行的 C 程序(纯 C11,直接使用 Landlock UAPI——除静态链接的 musl 外无其他库,因此审计面仅为该文件加内核的稳定 syscall 约定):`--ro ` / `--rw ` 授权,`--`,被包装的 argv;它为自身安装规则集并执行 `exec`(规则集跨 `execve` 继承,且它在限制前设置 `no_new_privs`);`--probe` 在一个短生命周期子进程中强制最大规则集,仅当内核确实强制时才以 0 退出;所有 launcher 失败都会以 125 退出且不运行子进程,并打印一行致命的 `landlock-run:` 诊断。成功完成 exec 的子进程也可能返回 125,因此仅凭退出状态不能作为 launcher 失败的证据。较旧的 ABI 会在执行子进程之前打印精确的 `landlock-run: partial enforcement (older Landlock ABI)` 通知,因此该行不是致命证据。 -Landlock launcher 源码和包家族位于 `native/landlock-run`,与 harness 消费方同仓,并属于根 pnpm workspace。[仓库内 Landlock 发布决策](../process/2026-08-06-in-repository-landlock-release.zh.md)负责共享锁文件、原生构建、打包演练和 npm 发布边界。平台二进制由 npm 选择,入口包拥有路径解析、探测、CLI(命令行界面)参数、致命前缀和部分强制执行通知,而 harness 将沙箱模式映射为授权。将入口点与其二进制一起版本化,使探测解析和启动语法保持对齐。 +Landlock launcher 源码和包家族位于 `native/landlock-run`,与 harness 消费方同仓,并属于根 pnpm workspace。[`native/` README](../../../../native/README.zh.md)负责共享锁文件、原生构建、打包演练和 npm 发布边界。平台二进制由 npm 选择,入口包拥有路径解析、探测、CLI(命令行界面)参数、致命前缀和部分强制执行通知,而 harness 将沙箱模式映射为授权。将入口点与其二进制一起版本化,使探测解析和启动语法保持对齐。 后端 profile 共享模式约定但在必要的主机授权上有所不同。Landlock 和 Seatbelt 在 read-only 模式下仅允许 `/dev/null`;workspace-write 还允许各自所需的主机临时目录根。每次包装携带后端特定的拒绝签名。Landlock 在较旧的 ABI 无法管控所有操作时报告 partial enforcement,而成功的 bwrap 和 Seatbelt profile 报告 full enforcement。 @@ -72,7 +72,7 @@ Landlock launcher 源码和包家族位于 `native/landlock-run`,与 harness `dsh-bash-sandbox` 扩展 `LocalBashExecutor`,把精确的 `['bash', '-c', command]` argv 交给 `ctx.sandbox`,并直接 spawn 提供方返回的 argv。这样,随附的原生 runner 建立约束后,shell 语义与 `BASH_ENV` 仍由内层 Bash 处理。提供方错误原样传播。进程启动前,只有当调用方拥有的 workdir 经独立验证可用,Node 报告 `ENOENT` 或 `EACCES`,并且错误符合以下一种形态时,才判定为 runner 失败:`error.path` 等于提供方返回的 `argv[0]`,同时 `syscall` 为 `'spawn'` 或精确的 `'spawn '`;或者 `error.path` 不存在,同时 `syscall` 为精确的 `'spawn '`。其他错误码、无效 workdir、资源失败、无关 syscall 与无结构拒绝保留本地命令启动语义。前台执行会将 runner 失败转为 `SANDBOX_UNAVAILABLE` 并附上原始详细信息;异步后台拒绝则盖章 `runnerFailed: true`、`denied: false`。如果 `SubprocessRuntime` 同步抛出同样能指明 runner 的形态,后台启动会抛出 `SANDBOX_UNAVAILABLE`;其他同步错误原样传播。进程启动后,前台与后台共用一个 runner 失败分类器:先排除信息性行,再要求规则的退出码检查与余下的一行致命诊断同时匹配。匹配结果优先于拒绝:前台执行抛出 `SANDBOX_UNAVAILABLE`,并以该致命行作为详细信息;结算后的 `ShellProcess` 会盖章 `sandbox.runnerFailed`,bash 生产者再通过通用 `job_output` 渲染它。 -模型会在归属方派生的 `sandbox:policy` 上下文中看到当前有效的文件策略;静态工具描述则解释拒绝标记(`[sandbox: file access denied under mode]`),鼓励尝试可能被拒绝的命令,并禁止绕过拒绝重试。当升级字段被公布时,被拒绝的结果还会携带升级提示本身,使被认可的同轮次重试在决策点获得提示,而非依赖模型回忆描述(§ 升级机制)。[当前策略决策](2026-07-30-current-sandbox-policy-context.zh.md)负责该上下文的理由与边界。 +模型会在归属方派生的 `sandbox:policy` 上下文中看到当前有效的文件策略;静态工具描述则解释拒绝标记(`[sandbox: file access denied under mode]`),鼓励尝试可能被拒绝的命令,并禁止绕过拒绝重试。当升级字段被公布时,被拒绝的结果还会携带升级提示本身,使被认可的同轮次重试在决策点获得提示,而非依赖模型回忆描述(§ 升级机制)。[当前策略决策](../../archived/feature/2026-07-30-current-sandbox-policy-context.md)负责该上下文的理由与边界。 #### 升级机制:拒绝后一次经批准的更宽重试 @@ -149,7 +149,7 @@ fs/web/todo 在进程内执行,因此它们的沙箱语义是各自能力边 - **将重试硬匹配到先前的拒绝**:否决。命令字符串同一性脆弱(引号、`workdir`、env 前缀、作为失败阶段重试的管道)——要么误拒诚实的重试,要么被轻易满足;真正的边界是人看到命令 + 理由。仅在 `allow_always` 授权存储需要机器可检查的范围时才重新考虑。 - **通用 `env/state` facts map 加拥有者服务**:否决。approval 和沙箱独立组合,因此任何一方的状态都不应拖入第三个包;单键 fold 各自是一个 `findLast`,拥有者服务自然消解;没有跨旋钮的不变式,因此原子多键补丁无收益。 - **通过 `agent.inject()` 加总线事件逐次叙述切换**:否决。独立通知会暴露归属方顺序和中间组合,而一次 pre-step 组合可以原子排队完整的当前状态。 -- **在稳定系统提示词中声明沙箱模式**:先行交付,随后根据线上证据移除:每次请求都带有 `Bash commands run under the "read-only" file sandbox.` 时,模型会拒绝尝试本可在被拒后升级的工作(首次人工会话的十二个轮次中有五个以零工具调用结束),使沙箱变成软锁死。拒绝标记会在相关时刻指出模式,升级字段则承载恢复路径。[当前策略决策](2026-07-30-current-sandbox-policy-context.zh.md)取代了省略策略的决策;这项测量和因果观察仍是任何替代方案必须进行反证测试的依据。 +- **在稳定系统提示词中声明沙箱模式**:先行交付,随后根据线上证据移除:每次请求都带有 `Bash commands run under the "read-only" file sandbox.` 时,模型会拒绝尝试本可在被拒后升级的工作(首次人工会话的十二个轮次中有五个以零工具调用结束),使沙箱变成软锁死。拒绝标记会在相关时刻指出模式,升级字段则承载恢复路径。[当前策略决策](../../archived/feature/2026-07-30-current-sandbox-policy-context.md)取代了省略策略的决策;这项测量和因果观察仍是任何替代方案必须进行反证测试的依据。 - **用专门的簿记事件追踪「上次告知」**:否决。会话历史记录模型看到的确切策略上下文,已领取批次与待处理 inbox 条目则表明正在进入或已经排队的内容。重新计算目标消息取代了第二条簿记流——事件仅在它们本身即为存储时才需要。 - **相互独立的沙箱与批准选择器**:否决。一个部署定义的权限 preset 让两个策略旋钮对暴露运行时切换的 UI 客户端保持一致。 diff --git a/.agents/notes/implemented/feature/2026-07-07-mcp-client-plugin.i18n.yaml b/.agents/notes/implemented/feature/2026-07-07-mcp-client-plugin.i18n.yaml index e32202b83d..67227acc29 100644 --- a/.agents/notes/implemented/feature/2026-07-07-mcp-client-plugin.i18n.yaml +++ b/.agents/notes/implemented/feature/2026-07-07-mcp-client-plugin.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-07-07-mcp-client-plugin.md -2026-07-07-mcp-client-plugin.md: 59983abc6288534a82aef903a8c6bed93db24be6 -2026-07-07-mcp-client-plugin.zh.md: 791b6f9eb10bef6a481caa106a0bda31b803dc4c +2026-07-07-mcp-client-plugin.md: 1c451e14ea2a7c494454956ce9bb09d97d4e1e1d +2026-07-07-mcp-client-plugin.zh.md: 78a086d6c218a254e850777fe4024973e8848e17 diff --git a/.agents/notes/implemented/feature/2026-07-07-mcp-client-plugin.md b/.agents/notes/implemented/feature/2026-07-07-mcp-client-plugin.md index 59983abc62..1c451e14ea 100644 --- a/.agents/notes/implemented/feature/2026-07-07-mcp-client-plugin.md +++ b/.agents/notes/implemented/feature/2026-07-07-mcp-client-plugin.md @@ -153,7 +153,7 @@ Build the child environment from the subprocess seam's shared `scrubbedParentEnv ### Disconnection / crash -A per-instance connection supervisor reconnects automatically after a lost connection with bounded exponential backoff and a per-outage attempt budget, re-running discovery on success; exhaustion unregisters the server's tools and stops until reload. The [auto-reconnect Agent Note](2026-08-06-mcp-client-auto-reconnect.md) owns that decision, including the `reconnect` config block and the `reconnect.enabled: false` opt-out that restores manual HMR/restart recovery. +A per-instance connection supervisor reconnects automatically after a lost connection with bounded exponential backoff and a per-outage attempt budget, re-running discovery on success; exhaustion unregisters the server's tools and stops until reload. The [auto-reconnect Agent Note](../../archived/feature/2026-08-06-mcp-client-auto-reconnect.md) owns that decision, including the `reconnect` config block and the `reconnect.enabled: false` opt-out that restores manual HMR/restart recovery. ## Alternatives considered @@ -167,7 +167,7 @@ Rejected. There is no foreseeable alternative MCP client implementation — MCP ### Auto-reconnect with exponential backoff -Rejected by the connect-once design: it added a partial-availability state (tools registered but temporarily non-functional), and stdio crashes often indicate configuration problems retrying cannot fix; HMR was the recovery path. Operational feedback reversed the deferral — the [auto-reconnect Agent Note](2026-08-06-mcp-client-auto-reconnect.md) implements it with a bounded per-outage budget and an opt-out. +Rejected by the connect-once design: it added a partial-availability state (tools registered but temporarily non-functional), and stdio crashes often indicate configuration problems retrying cannot fix; HMR was the recovery path. Operational feedback reversed the deferral — the [auto-reconnect Agent Note](../../archived/feature/2026-08-06-mcp-client-auto-reconnect.md) implements it with a bounded per-outage budget and an opt-out. ### Bridge Resources and Prompts @@ -217,5 +217,5 @@ Coverage is named per tier; each behavior lives at the cheapest tier that can ex - **MCP SDK stability**: the `@modelcontextprotocol/sdk` is still evolving; breaking changes require updating the bridge. The version is pinned, and the SDK is widely adopted (Claude Desktop, Cursor, VS Code) so breaking changes are unlikely to be silent. - **Tool schema quality**: MCP servers may expose poorly-described tools (vague descriptions, incomplete JSON schemas). The harness passes them through as-is — garbage-in-garbage-out; that is the server author's responsibility, not the bridge's. - **Stdio process management**: a misbehaving MCP server that ignores signals could wedge dispose. The Cordis fiber disposal has bounded quiescence; a stuck transport eventually times out at the framework level. -- Crash recovery is automatic within the [reconnect budget](2026-08-06-mcp-client-auto-reconnect.md); manual reload remains the path after exhaustion or with `reconnect.enabled: false`. +- Crash recovery is automatic within the [reconnect budget](../../archived/feature/2026-08-06-mcp-client-auto-reconnect.md); manual reload remains the path after exhaustion or with `reconnect.enabled: false`. - Image payloads can enter model context only through the shared durable attachment store and an exact positive route capability. Audio and embedded-resource payloads remain execution-local with explicit diagnostics. diff --git a/.agents/notes/implemented/feature/2026-07-07-mcp-client-plugin.zh.md b/.agents/notes/implemented/feature/2026-07-07-mcp-client-plugin.zh.md index 791b6f9eb1..78a086d6c2 100644 --- a/.agents/notes/implemented/feature/2026-07-07-mcp-client-plugin.zh.md +++ b/.agents/notes/implemented/feature/2026-07-07-mcp-client-plugin.zh.md @@ -153,7 +153,7 @@ MCP 仅保证工具名在[单个服务器内](https://modelcontextprotocol.io/sp ### 断连 / 崩溃 -每个实例的连接监督器在连接丢失后以有界指数退避和单次故障尝试预算自动重连,成功后重新执行发现流程;尝试耗尽则注销该服务器的工具并停止,直到重新加载。[自动重连 Agent Note](2026-08-06-mcp-client-auto-reconnect.zh.md) 拥有该决策,包括 `reconnect` 配置块和恢复手动 HMR/重启恢复的 `reconnect.enabled: false` opt-out。 +每个实例的连接监督器在连接丢失后以有界指数退避和单次故障尝试预算自动重连,成功后重新执行发现流程;尝试耗尽则注销该服务器的工具并停止,直到重新加载。[自动重连 Agent Note](../../archived/feature/2026-08-06-mcp-client-auto-reconnect.md) 拥有该决策,包括 `reconnect` 配置块和恢复手动 HMR/重启恢复的 `reconnect.enabled: false` opt-out。 ## 曾考虑的替代方案 @@ -167,7 +167,7 @@ MCP 仅保证工具名在[单个服务器内](https://modelcontextprotocol.io/sp ### 指数退避自动重连 -单次连接设计否决了该方案:它会引入部分可用状态(工具已注册但暂时不可用),且 stdio 崩溃往往表明配置问题,重试无法修复;HMR 曾是恢复路径。运营反馈扭转了该延期决定——[自动重连 Agent Note](2026-08-06-mcp-client-auto-reconnect.zh.md)以有界的单次故障预算和 opt-out 实现了自动重连。 +单次连接设计否决了该方案:它会引入部分可用状态(工具已注册但暂时不可用),且 stdio 崩溃往往表明配置问题,重试无法修复;HMR 曾是恢复路径。运营反馈扭转了该延期决定——[自动重连 Agent Note](../../archived/feature/2026-08-06-mcp-client-auto-reconnect.md)以有界的单次故障预算和 opt-out 实现了自动重连。 ### 桥接 Resources 和 Prompts @@ -217,5 +217,5 @@ MCP 仅保证工具名在[单个服务器内](https://modelcontextprotocol.io/sp - **MCP SDK 稳定性**:`@modelcontextprotocol/sdk` 仍在演进中;破坏性变更需要更新桥接。版本已固定,且该 SDK 被广泛采用(Claude Desktop、Cursor、VS Code),因此破坏性变更不太可能悄然发生。 - **工具 schema 质量**:MCP 服务器可能暴露描述不佳的工具(模糊的描述、不完整的 JSON Schema)。harness 原样透传——垃圾进垃圾出;这是服务器作者的责任,不是桥接的。 - **Stdio 进程管理**:行为异常的 MCP 服务器如果忽略信号,可能卡住 dispose。Cordis fiber 的 dispose 具有有界的完全停稳过程;卡住的传输层最终会在框架层面超时。 -- 崩溃恢复在[重连预算](2026-08-06-mcp-client-auto-reconnect.zh.md)内自动进行;耗尽后或配置 `reconnect.enabled: false` 时回退为手动重新加载。 +- 崩溃恢复在[重连预算](../../archived/feature/2026-08-06-mcp-client-auto-reconnect.md)内自动进行;耗尽后或配置 `reconnect.enabled: false` 时回退为手动重新加载。 - 图片载荷只有通过共享持久附件存储和确切正向路由能力,才能进入模型上下文。音频与嵌入资源载荷仍只存在于执行局部,并附带明确诊断。 diff --git a/.agents/notes/implemented/feature/2026-07-08-background-subagent-tasks.i18n.yaml b/.agents/notes/implemented/feature/2026-07-08-background-subagent-tasks.i18n.yaml deleted file mode 100644 index 63fbd26e14..0000000000 --- a/.agents/notes/implemented/feature/2026-07-08-background-subagent-tasks.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-07-08-background-subagent-tasks.md -2026-07-08-background-subagent-tasks.md: 4dcd961ee5a5db925f8f6ad83e97890eaedb8e63 -2026-07-08-background-subagent-tasks.zh.md: f35ac9e040b02c55694cfe5255b7f62ddbb40281 diff --git a/.agents/notes/implemented/feature/2026-07-10-agent-session-identity-and-log-location.i18n.yaml b/.agents/notes/implemented/feature/2026-07-10-agent-session-identity-and-log-location.i18n.yaml deleted file mode 100644 index 9f4c455c9c..0000000000 --- a/.agents/notes/implemented/feature/2026-07-10-agent-session-identity-and-log-location.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-07-10-agent-session-identity-and-log-location.md -2026-07-10-agent-session-identity-and-log-location.md: c849ffb882a3334c380b6736a8c8fd8d07a9da40 -2026-07-10-agent-session-identity-and-log-location.zh.md: 07826993839257dd893ef2a56059170ef9d0db31 diff --git a/.agents/notes/implemented/feature/2026-07-10-parallel-tool-call-execution.i18n.yaml b/.agents/notes/implemented/feature/2026-07-10-parallel-tool-call-execution.i18n.yaml index 3c267eaf73..f317a3d223 100644 --- a/.agents/notes/implemented/feature/2026-07-10-parallel-tool-call-execution.i18n.yaml +++ b/.agents/notes/implemented/feature/2026-07-10-parallel-tool-call-execution.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-07-10-parallel-tool-call-execution.md -2026-07-10-parallel-tool-call-execution.md: 870ab3bd6f48e7e2aad63baafb55020fd4c6ccd5 -2026-07-10-parallel-tool-call-execution.zh.md: ccab1d9b912ce6332bb493859bcefdb4b173b0d3 +2026-07-10-parallel-tool-call-execution.md: d5d26e03a2081569a8dba4de966201abc312d420 +2026-07-10-parallel-tool-call-execution.zh.md: 707428985c872dcbbc82f59124f0d60aef7f1090 diff --git a/.agents/notes/implemented/feature/2026-07-10-parallel-tool-call-execution.md b/.agents/notes/implemented/feature/2026-07-10-parallel-tool-call-execution.md index 870ab3bd6f..d5d26e03a2 100644 --- a/.agents/notes/implemented/feature/2026-07-10-parallel-tool-call-execution.md +++ b/.agents/notes/implemented/feature/2026-07-10-parallel-tool-call-execution.md @@ -60,7 +60,7 @@ Any shared state touched during execution must be concurrency-safe. This include `maxParallelToolCalls` is a positive AgentLoop deployment cap shared by every agent the factory creates. It defaults to `10`; `1` preserves serial execution. Exact fields and defaults live in the generated [configuration catalog](../../../../docs/config-catalog.md). -The shipped declarations are conservative. Web search, web fetch, filesystem read, the session-query trace/read tools, and subagent delegation opt in — delegation because a child works in its own session and its run never mutates the parent session, with sibling workspace coordination owned by the model ([parallel subagent Agent Note](2026-08-09-parallel-subagent-delegations.md)). Filesystem writes and edits, bash tools, the session-query search tools, workflow, user interaction, todo mutation, PTC mode, and Cordis mutation tools remain exclusive. Bash has no proven input-sensitive classifier and remains exclusive. +The shipped declarations are conservative. Web search, web fetch, filesystem read, the session-query trace/read tools, and subagent delegation opt in — delegation because a child works in its own session and its run never mutates the parent session, with sibling workspace coordination owned by the model ([parallel subagent Agent Note](../../archived/feature/2026-08-09-parallel-subagent-delegations.md)). Filesystem writes and edits, bash tools, the session-query search tools, workflow, user interaction, todo mutation, PTC mode, and Cordis mutation tools remain exclusive. Bash has no proven input-sensitive classifier and remains exclusive. Filesystem read relies on a narrow recorder exception: its synchronous observation updates may settle out of order, but write and edit re-check the observed version before mutation, so stale state only produces `FS_STALE_VERSION`. diff --git a/.agents/notes/implemented/feature/2026-07-10-parallel-tool-call-execution.zh.md b/.agents/notes/implemented/feature/2026-07-10-parallel-tool-call-execution.zh.md index ccab1d9b91..707428985c 100644 --- a/.agents/notes/implemented/feature/2026-07-10-parallel-tool-call-execution.zh.md +++ b/.agents/notes/implemented/feature/2026-07-10-parallel-tool-call-execution.zh.md @@ -60,7 +60,7 @@ PTC mode 仍不使用此调度器,因为模型只会发出一个原生 `run_co `maxParallelToolCalls` 是 AgentLoop 的正整数部署上限,由工厂创建的所有 agent(智能体)共享。默认值为 `10`;`1` 保持串行执行。字段和默认值的精确定义见生成的[配置目录](../../../../docs/config-catalog.zh.md)。 -当前实现中的声明保持保守。Web 搜索、Web 获取、文件系统读取、会话查询的 trace/read 工具和 subagent 委派选择并行;委派之所以并行,是因为子 agent 在自己的会话中工作,其运行绝不变更父会话,并列委派间的工作区协调由模型负责([并行 subagent Agent Note](2026-08-09-parallel-subagent-delegations.zh.md))。文件系统写入与编辑、bash 工具、会话查询的 search 工具、工作流、用户交互、todo 变更、PTC mode 以及 Cordis 变更工具仍按独占方式执行。Bash 没有已证明的输入敏感分类器,因此仍按独占方式执行。 +当前实现中的声明保持保守。Web 搜索、Web 获取、文件系统读取、会话查询的 trace/read 工具和 subagent 委派选择并行;委派之所以并行,是因为子 agent 在自己的会话中工作,其运行绝不变更父会话,并列委派间的工作区协调由模型负责([并行 subagent Agent Note](../../archived/feature/2026-08-09-parallel-subagent-delegations.md))。文件系统写入与编辑、bash 工具、会话查询的 search 工具、工作流、用户交互、todo 变更、PTC mode 以及 Cordis 变更工具仍按独占方式执行。Bash 没有已证明的输入敏感分类器,因此仍按独占方式执行。 文件系统读取依赖一个范围很窄的记录器例外:其同步观察更新可以不按顺序结算,但写入和编辑在变更前会重新检查已观察的版本,因此陈旧状态只会导致 `FS_STALE_VERSION`。 diff --git a/.agents/notes/implemented/feature/2026-07-10-sqlite-session-query-provider.i18n.yaml b/.agents/notes/implemented/feature/2026-07-10-sqlite-session-query-provider.i18n.yaml deleted file mode 100644 index 8c6ae9f034..0000000000 --- a/.agents/notes/implemented/feature/2026-07-10-sqlite-session-query-provider.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-07-10-sqlite-session-query-provider.md -2026-07-10-sqlite-session-query-provider.md: 46af02d39ed687a1f4b418109a1da4b071b9e409 -2026-07-10-sqlite-session-query-provider.zh.md: ccb833886a459c5a6888637c6cb8354e9e9f7977 diff --git a/.agents/notes/implemented/feature/2026-07-13-session-query-tracing.i18n.yaml b/.agents/notes/implemented/feature/2026-07-13-session-query-tracing.i18n.yaml deleted file mode 100644 index 32663048e5..0000000000 --- a/.agents/notes/implemented/feature/2026-07-13-session-query-tracing.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-07-13-session-query-tracing.md -2026-07-13-session-query-tracing.md: 66ec68cff116c973c723ee086cdb273f9375842b -2026-07-13-session-query-tracing.zh.md: 315fc8d1b676894966f9d59792fb161babb68624 diff --git a/.agents/notes/implemented/feature/2026-07-16-durable-per-step-time-context.i18n.yaml b/.agents/notes/implemented/feature/2026-07-16-durable-per-step-time-context.i18n.yaml deleted file mode 100644 index f6c61d52d4..0000000000 --- a/.agents/notes/implemented/feature/2026-07-16-durable-per-step-time-context.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-07-16-durable-per-step-time-context.md -2026-07-16-durable-per-step-time-context.md: 9ebc16a054cd93414ea4cfa69a8a49ccfb7145d8 -2026-07-16-durable-per-step-time-context.zh.md: e470b13e6281b2b436a69af494a22d88a7aa0411 diff --git a/.agents/notes/implemented/feature/2026-07-16-harness-level-loop.i18n.yaml b/.agents/notes/implemented/feature/2026-07-16-harness-level-loop.i18n.yaml index f661b717ad..eb54244e5a 100644 --- a/.agents/notes/implemented/feature/2026-07-16-harness-level-loop.i18n.yaml +++ b/.agents/notes/implemented/feature/2026-07-16-harness-level-loop.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-07-16-harness-level-loop.md -2026-07-16-harness-level-loop.md: e9b0f16b17695aadaeb224760adbed4d78c7a87c -2026-07-16-harness-level-loop.zh.md: 8f21261e81a251caa4953b324dc726eb7d94c35c +2026-07-16-harness-level-loop.md: 90f9b9d9d78bab620a0150d6e480485e37cb762f +2026-07-16-harness-level-loop.zh.md: c1709f8743e6fecbf576bc540cbba934e8bb23bd diff --git a/.agents/notes/implemented/feature/2026-07-16-harness-level-loop.md b/.agents/notes/implemented/feature/2026-07-16-harness-level-loop.md index e9b0f16b17..90f9b9d9d7 100644 --- a/.agents/notes/implemented/feature/2026-07-16-harness-level-loop.md +++ b/.agents/notes/implemented/feature/2026-07-16-harness-level-loop.md @@ -42,7 +42,7 @@ Time-based `/loop` or scheduled execution is a third policy and is not implement | `@deepseek-ai/dsh-command-goal` | `packages/goal/command-goal/`, human-command producer | Registers `/goal` status, creation, edit, pause, resume, and clear over the goal domain for TUI. | | `@deepseek-ai/dsh-tool-ralph` | `packages/workflow/tool-ralph/`, fixed workflow consumer | Registers `ralph({ objective, maxRounds? })`, validates the fresh structured provider and bounded `RalphRoundReport`, and returns `complete`, `blocked`, or `budget-limited`. | -The detailed contracts live in the [goal-domain](2026-07-19-persisted-same-session-goal-domain.md), [goal-owned event](../architecture/2026-07-31-goal-owned-durable-events.md), [model goal-tools](2026-07-19-model-facing-goal-tools.md), [goal-round driver](2026-07-19-same-session-goal-round-driver.md), [command registry](2026-07-19-plugin-command-registration.md), [human goal-command](2026-07-19-human-goal-command.md), and [Ralph workflow-tool](2026-07-19-fresh-agent-ralph-workflow-tool.md) Agent Notes. +The detailed contracts live in the [goal-domain](2026-07-19-persisted-same-session-goal-domain.md), [goal-owned event](../architecture/2026-07-31-goal-owned-durable-events.md), [model goal-tools](2026-07-19-model-facing-goal-tools.md), [goal-round driver](../../archived/feature/2026-07-19-same-session-goal-round-driver.md), [command registry](2026-07-19-plugin-command-registration.md), [human goal-command](../../archived/feature/2026-07-19-human-goal-command.md), and [Ralph workflow-tool](../../archived/feature/2026-07-19-fresh-agent-ralph-workflow-tool.md) Agent Notes. ### Durable goal state and live authority diff --git a/.agents/notes/implemented/feature/2026-07-16-harness-level-loop.zh.md b/.agents/notes/implemented/feature/2026-07-16-harness-level-loop.zh.md index 8f21261e81..c1709f8743 100644 --- a/.agents/notes/implemented/feature/2026-07-16-harness-level-loop.zh.md +++ b/.agents/notes/implemented/feature/2026-07-16-harness-level-loop.zh.md @@ -42,7 +42,7 @@ Status: implemented | `@deepseek-ai/dsh-command-goal` | `packages/goal/command-goal/`,人类命令生产方 | 为 TUI 注册构建在目标领域之上的 `/goal` 状态、创建、编辑、暂停、恢复与清除。 | | `@deepseek-ai/dsh-tool-ralph` | `packages/workflow/tool-ralph/`,固定工作流消费方 | 注册 `ralph({ objective, maxRounds? })`,验证全新结构化提供方与有界 `RalphRoundReport`,并返回 `complete`、`blocked` 或 `budget-limited`。 | -详细约定见[目标领域](2026-07-19-persisted-same-session-goal-domain.zh.md)、[目标自有事件](../architecture/2026-07-31-goal-owned-durable-events.zh.md)、[模型目标工具](2026-07-19-model-facing-goal-tools.zh.md)、[Goal Round 驱动器](2026-07-19-same-session-goal-round-driver.zh.md)、[命令注册表](2026-07-19-plugin-command-registration.zh.md)、[人类目标命令](2026-07-19-human-goal-command.zh.md)与 [Ralph 工作流工具](2026-07-19-fresh-agent-ralph-workflow-tool.zh.md) Agent Note。 +详细约定见[目标领域](2026-07-19-persisted-same-session-goal-domain.zh.md)、[目标自有事件](../architecture/2026-07-31-goal-owned-durable-events.zh.md)、[模型目标工具](2026-07-19-model-facing-goal-tools.zh.md)、[Goal Round 驱动器](../../archived/feature/2026-07-19-same-session-goal-round-driver.md)、[命令注册表](2026-07-19-plugin-command-registration.zh.md)、[人类目标命令](../../archived/feature/2026-07-19-human-goal-command.md)与 [Ralph 工作流工具](../../archived/feature/2026-07-19-fresh-agent-ralph-workflow-tool.md) Agent Note。 ### 持久目标状态与实时权限 diff --git a/.agents/notes/implemented/feature/2026-07-16-persistent-pty-sessions.i18n.yaml b/.agents/notes/implemented/feature/2026-07-16-persistent-pty-sessions.i18n.yaml index d4e5b38da7..17bec079b4 100644 --- a/.agents/notes/implemented/feature/2026-07-16-persistent-pty-sessions.i18n.yaml +++ b/.agents/notes/implemented/feature/2026-07-16-persistent-pty-sessions.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-07-16-persistent-pty-sessions.md -2026-07-16-persistent-pty-sessions.md: 08ccf64586034b5a0524889f33da89213ac7275d -2026-07-16-persistent-pty-sessions.zh.md: 5225d781fc8eba1fb4a6c7f4d3b5d4d87547b71d +2026-07-16-persistent-pty-sessions.md: d0bbb230bdb1cf7ab723a3451f0524cc86996209 +2026-07-16-persistent-pty-sessions.zh.md: 359d8e2b6c7f0ea857d0e73349421fc673d5cc3b diff --git a/.agents/notes/implemented/feature/2026-07-16-persistent-pty-sessions.md b/.agents/notes/implemented/feature/2026-07-16-persistent-pty-sessions.md index 08ccf64586..d0bbb230bd 100644 --- a/.agents/notes/implemented/feature/2026-07-16-persistent-pty-sessions.md +++ b/.agents/notes/implemented/feature/2026-07-16-persistent-pty-sessions.md @@ -134,7 +134,7 @@ The package ships concise tool guidance explaining persistent state, owner isola - Declarative per-agent startup requires an agent-setup composition point; plugin-load global sessions remain prohibited. - Session restoration across harness-process loss requires an out-of-process owner and a versioned protocol. - Network-egress policy and rollback of external side effects are broader than PTY and remain separate security work. -- Windows/ConPTY sessions run through the subprocess-local Windows inspector (Toolhelp32 identities, pseudo foreground groups, taskkill teardown) and the `pty-local` pwsh dialect; see the [pwsh persistent tool note](../architecture/2026-08-11-pwsh-persistent-pty.md). +- Windows/ConPTY sessions run through the subprocess-local Windows inspector (Toolhelp32 identities, pseudo foreground groups, taskkill teardown) and the `pty-local` pwsh dialect; see the [pwsh persistent tool note](../../archived/architecture/2026-08-11-pwsh-persistent-pty.md). ## Alternatives considered diff --git a/.agents/notes/implemented/feature/2026-07-16-persistent-pty-sessions.zh.md b/.agents/notes/implemented/feature/2026-07-16-persistent-pty-sessions.zh.md index 5225d781fc..359d8e2b6c 100644 --- a/.agents/notes/implemented/feature/2026-07-16-persistent-pty-sessions.zh.md +++ b/.agents/notes/implemented/feature/2026-07-16-persistent-pty-sessions.zh.md @@ -134,7 +134,7 @@ plugins: - 声明式 per-agent 启动需要 agent-setup 组合点;仍然禁止插件加载期全局会话。 - harness 进程丢失后的会话恢复需要进程外 owner 和版本化协议。 - 网络出口策略与外部副作用回滚超出 PTY 范围,继续作为独立安全工作。 -- Windows/ConPTY 会话经由 subprocess-local 的 Windows inspector(Toolhelp32 身份、伪前台进程组、taskkill 拆卸)与 `pty-local` 的 pwsh 方言运行;见 [pwsh 持久工具 note](../architecture/2026-08-11-pwsh-persistent-pty.zh.md)。 +- Windows/ConPTY 会话经由 subprocess-local 的 Windows inspector(Toolhelp32 身份、伪前台进程组、taskkill 拆卸)与 `pty-local` 的 pwsh 方言运行;见 [pwsh 持久工具 note](../../archived/architecture/2026-08-11-pwsh-persistent-pty.md)。 ## 备选方案 diff --git a/.agents/notes/implemented/feature/2026-07-19-fresh-agent-ralph-workflow-tool.i18n.yaml b/.agents/notes/implemented/feature/2026-07-19-fresh-agent-ralph-workflow-tool.i18n.yaml deleted file mode 100644 index 75a4fe2cbc..0000000000 --- a/.agents/notes/implemented/feature/2026-07-19-fresh-agent-ralph-workflow-tool.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-07-19-fresh-agent-ralph-workflow-tool.md -2026-07-19-fresh-agent-ralph-workflow-tool.md: 9eedc022f04f733feb5c4e5abb4b0528c0d10f60 -2026-07-19-fresh-agent-ralph-workflow-tool.zh.md: 23c614d5b5eadbe583469acff1efa01b398498db diff --git a/.agents/notes/implemented/feature/2026-07-19-human-goal-command.i18n.yaml b/.agents/notes/implemented/feature/2026-07-19-human-goal-command.i18n.yaml deleted file mode 100644 index b65f7950b4..0000000000 --- a/.agents/notes/implemented/feature/2026-07-19-human-goal-command.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-07-19-human-goal-command.md -2026-07-19-human-goal-command.md: b87d52f2aa07dbd51248488804558a1760d4a30f -2026-07-19-human-goal-command.zh.md: 18d5829dafb326d034091b9fc46537f8aed3aa27 diff --git a/.agents/notes/implemented/feature/2026-07-19-model-facing-goal-tools.i18n.yaml b/.agents/notes/implemented/feature/2026-07-19-model-facing-goal-tools.i18n.yaml index 9bb8b17a82..b8dbc7c937 100644 --- a/.agents/notes/implemented/feature/2026-07-19-model-facing-goal-tools.i18n.yaml +++ b/.agents/notes/implemented/feature/2026-07-19-model-facing-goal-tools.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-07-19-model-facing-goal-tools.md -2026-07-19-model-facing-goal-tools.md: 2f2a1c2319dec96df9da83efbe92f1149001b8f2 -2026-07-19-model-facing-goal-tools.zh.md: 8da2482b24879afe618f9e5272d4ed2b84658bf1 +2026-07-19-model-facing-goal-tools.md: 67668652adfa29d0a702f363cd9b12367411382f +2026-07-19-model-facing-goal-tools.zh.md: 1db8d53393146a333738ad0248aba5ccf968a566 diff --git a/.agents/notes/implemented/feature/2026-07-19-model-facing-goal-tools.md b/.agents/notes/implemented/feature/2026-07-19-model-facing-goal-tools.md index 2f2a1c2319..67668652ad 100644 --- a/.agents/notes/implemented/feature/2026-07-19-model-facing-goal-tools.md +++ b/.agents/notes/implemented/feature/2026-07-19-model-facing-goal-tools.md @@ -22,7 +22,7 @@ The prompt tells the model that it may infer goal intent from a direct human req All three tools use exclusive execution so a model-ordered batch observes prior mutations and their new revisions. Results are compact JSON. UI presentation is a pure function of arguments and uses generic read or mutation cards; mutation cards select meaningful action values before the goal id, so accepted fillers cannot blank their input. Activation is reported only as live observation and is never written into replay state. -An autonomous goal round that successfully reports completion or blocking defers one wrap-up instruction onto its tool result so the model still addresses the user before the turn ends through the ordinary no-tool-calls stop; the original conclude-at-result stop is superseded by the [goal-round wrap-up decision](../bug-fix/2026-08-02-goal-round-wrapup-message.md). Direct-human mutations receive no instruction: the assistant can acknowledge the change, and concurrent human steering remains available to ordinary stopping checks. +An autonomous goal round that successfully reports completion or blocking defers one wrap-up instruction onto its tool result so the model still addresses the user before the turn ends through the ordinary no-tool-calls stop; the original conclude-at-result stop is superseded by the [goal-round wrap-up decision](../../archived/bug-fix/2026-08-02-goal-round-wrapup-message.md). Direct-human mutations receive no instruction: the assistant can acknowledge the change, and concurrent human steering remains available to ordinary stopping checks. ### Execution authority diff --git a/.agents/notes/implemented/feature/2026-07-19-model-facing-goal-tools.zh.md b/.agents/notes/implemented/feature/2026-07-19-model-facing-goal-tools.zh.md index 8da2482b24..1db8d53393 100644 --- a/.agents/notes/implemented/feature/2026-07-19-model-facing-goal-tools.zh.md +++ b/.agents/notes/implemented/feature/2026-07-19-model-facing-goal-tools.zh.md @@ -22,7 +22,7 @@ Status: implemented 三个工具都采用独占执行,使模型排序的批次可以观察此前变更及其新修订号。结果为紧凑 JSON。UI 展示是参数的纯函数,使用通用读取或变更卡片;变更卡片选择输入时,先取有实际意义的操作值,再取目标 id,因此允许的占位值不会使卡片输入留空。激活态仅作为实时观察返回,绝不会写入回放状态。 -自主 Goal Round 成功报告完成或阻塞后,其工具结果会附带一条收尾指令,模型仍会在轮次经由常规无工具调用停止路径结束前向用户发言;原先在结果处终结轮次的做法已被 [Goal Round 收尾决策](../bug-fix/2026-08-02-goal-round-wrapup-message.zh.md)取代。直接人类发起的变更不会收到指令:agent 可以确认该变更,并且并发的人类 steering(中途引导)仍可参与普通的停止检查。 +自主 Goal Round 成功报告完成或阻塞后,其工具结果会附带一条收尾指令,模型仍会在轮次经由常规无工具调用停止路径结束前向用户发言;原先在结果处终结轮次的做法已被 [Goal Round 收尾决策](../../archived/bug-fix/2026-08-02-goal-round-wrapup-message.md)取代。直接人类发起的变更不会收到指令:agent 可以确认该变更,并且并发的人类 steering(中途引导)仍可参与普通的停止检查。 ### 执行权限 diff --git a/.agents/notes/implemented/feature/2026-07-19-same-session-goal-round-driver.i18n.yaml b/.agents/notes/implemented/feature/2026-07-19-same-session-goal-round-driver.i18n.yaml deleted file mode 100644 index 844f00a5bb..0000000000 --- a/.agents/notes/implemented/feature/2026-07-19-same-session-goal-round-driver.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-07-19-same-session-goal-round-driver.md -2026-07-19-same-session-goal-round-driver.md: 9a2bbf40e86dd7ed5a35ca90e736bb321455488f -2026-07-19-same-session-goal-round-driver.zh.md: a094b1289cd38e5f2c4e58270b653ffe984b9cbb diff --git a/.agents/notes/implemented/feature/2026-07-20-dsh-cli-personal-config.i18n.yaml b/.agents/notes/implemented/feature/2026-07-20-dsh-cli-personal-config.i18n.yaml deleted file mode 100644 index c7a1607d19..0000000000 --- a/.agents/notes/implemented/feature/2026-07-20-dsh-cli-personal-config.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-07-20-dsh-cli-personal-config.md -2026-07-20-dsh-cli-personal-config.md: db1e5638f06b66f74d4761d1eab4e5248e6def0b -2026-07-20-dsh-cli-personal-config.zh.md: d796d9887421aa7c8e9f3e8d1de66c74e10c139d diff --git a/.agents/notes/implemented/feature/2026-07-21-continuable-background-subagents.i18n.yaml b/.agents/notes/implemented/feature/2026-07-21-continuable-background-subagents.i18n.yaml deleted file mode 100644 index 2bd3567191..0000000000 --- a/.agents/notes/implemented/feature/2026-07-21-continuable-background-subagents.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-07-21-continuable-background-subagents.md -2026-07-21-continuable-background-subagents.md: 24ab64879fa18f5de9952af2dba321e2cae17477 -2026-07-21-continuable-background-subagents.zh.md: 0cf06f7fe30d0953bb6e7f1a4c96527fa181805a diff --git a/.agents/notes/implemented/feature/2026-07-21-cross-session-references.i18n.yaml b/.agents/notes/implemented/feature/2026-07-21-cross-session-references.i18n.yaml deleted file mode 100644 index cfccec0de7..0000000000 --- a/.agents/notes/implemented/feature/2026-07-21-cross-session-references.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-07-21-cross-session-references.md -2026-07-21-cross-session-references.md: 48a3241871f0b65270aaf74e42c9d02c45eaf027 -2026-07-21-cross-session-references.zh.md: 0daeec7836c2cba476d1c427fe849db7a25339ab diff --git a/.agents/notes/implemented/feature/2026-07-21-follow-instruction-symlinks.i18n.yaml b/.agents/notes/implemented/feature/2026-07-21-follow-instruction-symlinks.i18n.yaml index e0178e523d..77a58fcc17 100644 --- a/.agents/notes/implemented/feature/2026-07-21-follow-instruction-symlinks.i18n.yaml +++ b/.agents/notes/implemented/feature/2026-07-21-follow-instruction-symlinks.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-07-21-follow-instruction-symlinks.md -2026-07-21-follow-instruction-symlinks.md: 9f6427ecb5a8a9540a0da1957d32418e936c4b0e -2026-07-21-follow-instruction-symlinks.zh.md: f439f53896d2100ac14b73786ffd70b7f9fa9b2c +2026-07-21-follow-instruction-symlinks.md: a6b4cb5d465d2ebf7088d8e3a04fbb32503e2e15 +2026-07-21-follow-instruction-symlinks.zh.md: a44f89d8ec3c636a875059aabe0683c6bf1da851 diff --git a/.agents/notes/implemented/feature/2026-07-21-follow-instruction-symlinks.md b/.agents/notes/implemented/feature/2026-07-21-follow-instruction-symlinks.md index 9f6427ecb5..a6b4cb5d46 100644 --- a/.agents/notes/implemented/feature/2026-07-21-follow-instruction-symlinks.md +++ b/.agents/notes/implemented/feature/2026-07-21-follow-instruction-symlinks.md @@ -6,13 +6,13 @@ English | [中文](2026-07-21-follow-instruction-symlinks.zh.md) ## Problem -The [agent-instructions plugin](2026-06-24-workspace-context.md) probed each instruction candidate with `ctx.fs.lstat` before resolving, rejecting any final-component symlink so a repository-owned link could not point instruction loading at content outside the workspace. That no-follow invariant blocked a deliberate, supported setup: a user who symlinks `$DSH_HOME/AGENTS.md` — or a project `AGENTS.md` — to a canonical instruction file kept elsewhere, sharing one house-style file across tools and homes, saw the link silently ignored. It also forced content dedup to treat the ubiquitous `CLAUDE.md → AGENTS.md` mirror as a special skipped case rather than an ordinary duplicate. The repository owner asked to follow symlinked instruction files unconditionally across every scope, accepting the residual trust-boundary risk recorded below. +The [agent-instructions plugin](../../archived/feature/2026-06-24-workspace-context.md) probed each instruction candidate with `ctx.fs.lstat` before resolving, rejecting any final-component symlink so a repository-owned link could not point instruction loading at content outside the workspace. That no-follow invariant blocked a deliberate, supported setup: a user who symlinks `$DSH_HOME/AGENTS.md` — or a project `AGENTS.md` — to a canonical instruction file kept elsewhere, sharing one house-style file across tools and homes, saw the link silently ignored. It also forced content dedup to treat the ubiquitous `CLAUDE.md → AGENTS.md` mirror as a special skipped case rather than an ordinary duplicate. The repository owner asked to follow symlinked instruction files unconditionally across every scope, accepting the residual trust-boundary risk recorded below. ## Decision Instruction discovery no longer inspects the final component with `lstat`. Every candidate — the user-global `$DSH_HOME/AGENTS.md`, each base candidate, and each local-overlay candidate — is resolved and its resolved target is stat-ed, at baseline composition and at each `tools/post-execute` reconciliation alike. A symlink whose target is a regular file loads that target's content; a resolved non-file target (including a link to a directory) is a confirmed absence that removes the scope like a missing file; a `resolve` or `stat` exception is classified as temporarily unavailable and never removes an already-loaded scope. `nodeStatFile` calls `stat` (host path) and `fsStatFile` calls `resolve` then `stat` (provider path); neither calls `lstat`. -A followed symlink is an ordinary file for every downstream step. It participates in per-directory content dedup ([load-all + dedup note](2026-07-21-instruction-load-all-dedup.md)), so a `CLAUDE.md` that symlinks its sibling `AGENTS.md` now resolves to identical content and collapses like any byte-identical real duplicate instead of being skipped as a special case. +A followed symlink is an ordinary file for every downstream step. It participates in per-directory content dedup ([load-all + dedup note](../../archived/feature/2026-07-21-instruction-load-all-dedup.md)), so a `CLAUDE.md` that symlinks its sibling `AGENTS.md` now resolves to identical content and collapses like any byte-identical real duplicate instead of being skipped as a special case. ### Trust boundary and residual risk @@ -28,4 +28,4 @@ Following repository-owned links crosses the plugin's trust boundary: a cloned, ## Consequences -A symlinked instruction file is now loaded and rendered like its target, enabling shared canonical instruction files across tools and homes, and the `CLAUDE.md → AGENTS.md` mirror deduplicates through content instead of being skipped. The plugin no longer depends on `ctx.fs.lstat` for instruction loading; a resolved non-file is a confirmed absence and only a provider exception is temporarily unavailable. The trust boundary moves out of this plugin into the filesystem policy and sandbox layers, which must confine `ctx.fs` when a deployment loads untrusted repositories. The [agent-instructions note](2026-06-24-workspace-context.md) and the package README carry the same follow behavior and residual-risk statement. +A symlinked instruction file is now loaded and rendered like its target, enabling shared canonical instruction files across tools and homes, and the `CLAUDE.md → AGENTS.md` mirror deduplicates through content instead of being skipped. The plugin no longer depends on `ctx.fs.lstat` for instruction loading; a resolved non-file is a confirmed absence and only a provider exception is temporarily unavailable. The trust boundary moves out of this plugin into the filesystem policy and sandbox layers, which must confine `ctx.fs` when a deployment loads untrusted repositories. The [agent-instructions note](../../archived/feature/2026-06-24-workspace-context.md) and the package README carry the same follow behavior and residual-risk statement. diff --git a/.agents/notes/implemented/feature/2026-07-21-follow-instruction-symlinks.zh.md b/.agents/notes/implemented/feature/2026-07-21-follow-instruction-symlinks.zh.md index f439f53896..a44f89d8ec 100644 --- a/.agents/notes/implemented/feature/2026-07-21-follow-instruction-symlinks.zh.md +++ b/.agents/notes/implemented/feature/2026-07-21-follow-instruction-symlinks.zh.md @@ -6,13 +6,13 @@ Status: implemented ## 问题 -[agent-instructions 插件](2026-06-24-workspace-context.zh.md)在解析前用 `ctx.fs.lstat` 探测每个指令候选,拒绝任何末段的符号链接,从而使仓库自有的链接无法把指令加载指向工作区之外的内容。这条「不跟随」不变式挡住了一个有意为之、且受支持的配置:用户若把 `$DSH_HOME/AGENTS.md`(或某个项目的 `AGENTS.md`)符号链接到别处保存的一个规范指令文件,以便在多个工具与多个 home 之间共享同一份规范文件,就会看到该链接被悄悄忽略。它还迫使内容去重把无处不在的 `CLAUDE.md → AGENTS.md` 镜像当作一个被跳过的特例来处理,而非一个普通的重复文件。仓库所有者要求在每个 scope 上无条件跟随符号链接指向的指令文件,并接受下文记录的残余信任边界风险。 +[agent-instructions 插件](../../archived/feature/2026-06-24-workspace-context.md)在解析前用 `ctx.fs.lstat` 探测每个指令候选,拒绝任何末段的符号链接,从而使仓库自有的链接无法把指令加载指向工作区之外的内容。这条「不跟随」不变式挡住了一个有意为之、且受支持的配置:用户若把 `$DSH_HOME/AGENTS.md`(或某个项目的 `AGENTS.md`)符号链接到别处保存的一个规范指令文件,以便在多个工具与多个 home 之间共享同一份规范文件,就会看到该链接被悄悄忽略。它还迫使内容去重把无处不在的 `CLAUDE.md → AGENTS.md` 镜像当作一个被跳过的特例来处理,而非一个普通的重复文件。仓库所有者要求在每个 scope 上无条件跟随符号链接指向的指令文件,并接受下文记录的残余信任边界风险。 ## 决策 指令发现不再用 `lstat` 检查末段。每个候选(用户全局的 `$DSH_HOME/AGENTS.md`、每个基础候选,以及每个本地覆盖候选)都会被解析,并对其解析后的目标做 stat,基线组合时与每一轮 `tools/post-execute` 协调时一视同仁。一个目标为常规文件的符号链接会加载该目标的内容;一个解析后的非文件目标(包括指向目录的链接)是被确认的缺失,会像缺失文件一样移除该 scope;一个 `resolve` 或 `stat` 异常被归类为暂时不可用,且从不移除已加载的 scope。`nodeStatFile` 调用 `stat`(宿主路径),`fsStatFile` 先 `resolve` 再 `stat`(提供方路径);两者都不调用 `lstat`。 -一个被跟随的符号链接对下游每一步都是普通文件。它参与按目录的内容去重([加载全部并去重说明](2026-07-21-instruction-load-all-dedup.zh.md)),因此一个符号链接指向其同级 `AGENTS.md` 的 `CLAUDE.md` 现在会解析到相同内容,并像任何逐字节相同的真实副本一样被合并,而不再作为特例被跳过。 +一个被跟随的符号链接对下游每一步都是普通文件。它参与按目录的内容去重([加载全部并去重说明](../../archived/feature/2026-07-21-instruction-load-all-dedup.md)),因此一个符号链接指向其同级 `AGENTS.md` 的 `CLAUDE.md` 现在会解析到相同内容,并像任何逐字节相同的真实副本一样被合并,而不再作为特例被跳过。 ### 信任边界与残余风险 @@ -28,4 +28,4 @@ Status: implemented ## 后果 -一个符号链接指向的指令文件现在会像其目标一样被加载和渲染,从而支持在多个工具与多个 home 之间共享规范指令文件,而 `CLAUDE.md → AGENTS.md` 镜像会通过内容去重而非被跳过。指令加载不再依赖 `ctx.fs.lstat`;一个解析后的非文件是被确认的缺失,只有提供方异常才是暂时不可用。信任边界从本插件移出,进入文件系统策略与沙箱层。当部署加载不受信任的仓库时,它们必须约束 `ctx.fs`。[agent-instructions note](2026-06-24-workspace-context.zh.md) 与包 README 承载相同的跟随行为与残余风险声明。 +一个符号链接指向的指令文件现在会像其目标一样被加载和渲染,从而支持在多个工具与多个 home 之间共享规范指令文件,而 `CLAUDE.md → AGENTS.md` 镜像会通过内容去重而非被跳过。指令加载不再依赖 `ctx.fs.lstat`;一个解析后的非文件是被确认的缺失,只有提供方异常才是暂时不可用。信任边界从本插件移出,进入文件系统策略与沙箱层。当部署加载不受信任的仓库时,它们必须约束 `ctx.fs`。[agent-instructions note](../../archived/feature/2026-06-24-workspace-context.md) 与包 README 承载相同的跟随行为与残余风险声明。 diff --git a/.agents/notes/implemented/feature/2026-07-21-instruction-load-all-dedup.i18n.yaml b/.agents/notes/implemented/feature/2026-07-21-instruction-load-all-dedup.i18n.yaml deleted file mode 100644 index 4cb9a826ee..0000000000 --- a/.agents/notes/implemented/feature/2026-07-21-instruction-load-all-dedup.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-07-21-instruction-load-all-dedup.md -2026-07-21-instruction-load-all-dedup.md: fc88b4ea6fcbdcda76b9a7da763a04ead2557f50 -2026-07-21-instruction-load-all-dedup.zh.md: f74585850ddaf814fce1cb36239bc666a4142696 diff --git a/.agents/notes/implemented/feature/2026-07-21-local-instruction-overlay.i18n.yaml b/.agents/notes/implemented/feature/2026-07-21-local-instruction-overlay.i18n.yaml deleted file mode 100644 index 2f11dc6de9..0000000000 --- a/.agents/notes/implemented/feature/2026-07-21-local-instruction-overlay.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-07-21-local-instruction-overlay.md -2026-07-21-local-instruction-overlay.md: 0574cb3568ce1dc41f49f9de2b76131ce75c409b -2026-07-21-local-instruction-overlay.zh.md: cd7406374cb6f39ff3c24fb95fee5f53410e11a0 diff --git a/.agents/notes/implemented/feature/2026-07-21-log-backed-session-titles.i18n.yaml b/.agents/notes/implemented/feature/2026-07-21-log-backed-session-titles.i18n.yaml deleted file mode 100644 index af9ab32475..0000000000 --- a/.agents/notes/implemented/feature/2026-07-21-log-backed-session-titles.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-07-21-log-backed-session-titles.md -2026-07-21-log-backed-session-titles.md: 7bf9257813c154b674e4b4d632c9fa2b712a1fdd -2026-07-21-log-backed-session-titles.zh.md: e09317b1c0e458b8278ee22d66c8afdb0386d071 diff --git a/.agents/notes/implemented/feature/2026-07-22-durable-subagent-catalog-and-list-agents.i18n.yaml b/.agents/notes/implemented/feature/2026-07-22-durable-subagent-catalog-and-list-agents.i18n.yaml deleted file mode 100644 index 5db52c12b5..0000000000 --- a/.agents/notes/implemented/feature/2026-07-22-durable-subagent-catalog-and-list-agents.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-07-22-durable-subagent-catalog-and-list-agents.md -2026-07-22-durable-subagent-catalog-and-list-agents.md: df7298b542a71e043cf00e0aae1201586f94321e -2026-07-22-durable-subagent-catalog-and-list-agents.zh.md: 2f280ea1bfda68d88ae453fd659ab3d7e36e5faf diff --git a/.agents/notes/implemented/feature/2026-07-22-web-bind-address.i18n.yaml b/.agents/notes/implemented/feature/2026-07-22-web-bind-address.i18n.yaml deleted file mode 100644 index ec7451e28d..0000000000 --- a/.agents/notes/implemented/feature/2026-07-22-web-bind-address.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-07-22-web-bind-address.md -2026-07-22-web-bind-address.md: 68275d220f2270ef924efdbc6a72f3dfcbfd10f8 -2026-07-22-web-bind-address.zh.md: 5bb4fdbbc3e58285b0d227c3ec376786be2782da diff --git a/.agents/notes/implemented/feature/2026-07-23-session-telemetry-otel-revival.i18n.yaml b/.agents/notes/implemented/feature/2026-07-23-session-telemetry-otel-revival.i18n.yaml index 261425248b..acde60a013 100644 --- a/.agents/notes/implemented/feature/2026-07-23-session-telemetry-otel-revival.i18n.yaml +++ b/.agents/notes/implemented/feature/2026-07-23-session-telemetry-otel-revival.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-07-23-session-telemetry-otel-revival.md -2026-07-23-session-telemetry-otel-revival.md: 1fbcacb128c07ec819517e24cc532d356c5ad63e -2026-07-23-session-telemetry-otel-revival.zh.md: 3d43ab8edc823f8dd4805edbef24a6ecf923f956 +2026-07-23-session-telemetry-otel-revival.md: f0dca55a3bf705f650a7a8fc998e81bba04649d4 +2026-07-23-session-telemetry-otel-revival.zh.md: 488716f9723238f1841f79d2cf55f52e269bb3db diff --git a/.agents/notes/implemented/feature/2026-07-23-session-telemetry-otel-revival.md b/.agents/notes/implemented/feature/2026-07-23-session-telemetry-otel-revival.md index 1fbcacb128..f0dca55a3b 100644 --- a/.agents/notes/implemented/feature/2026-07-23-session-telemetry-otel-revival.md +++ b/.agents/notes/implemented/feature/2026-07-23-session-telemetry-otel-revival.md @@ -14,7 +14,7 @@ Every deployment that wants harness sessions in an observability stack must hand - **`@deepseek-ai/dsh-session-telemetry`** — the seam. `SessionTelemetrySink` (`emit`/`flush?`/`shutdown`), the service-registered `SessionTelemetryBackend` form, and `SessionTelemetryCoordinator` own lifecycle-local capture: each new Session object starts immediately before `firstLiveSeq`, then the per-append firehose deep-copies, redacts, and hands off every event with zero I/O; re-adopting the same object resumes after its module-scope cursor. Buffer-free on-demand capture uses the same one-record-per-event mapping through an optional inclusive boundary. Ledger identity includes `session.id`, `session.format_version`, and `event.seq`; live capture also relays `agent/error` and creates dispose-time `shutdown` records. - **The `session-telemetry/record` waterfall** — the delta over the branch version and the seam's redaction extension point. Every record passes it before reaching any backend; the seam ships NO rules of its own — the innermost `next()` is a pass-through, deployments mount their rules as listeners (stacking by transforming `next()`'s return value), and a throwing rule withholds the record fail-closed. Redaction applies to the exported copy only; the canonical log is never rewritten. -- **`@deepseek-ai/dsh-session-telemetry-otel`** — the reference backend: OTel JS SDK log pipeline (`LoggerProvider` → `BatchLogRecordProcessor` → OTLP/HTTP exporter), configured verbatim through `exporter`/`processor` passthroughs. `DISABLED` is the default and constructs no transport; the [feedback-gated telemetry decision](2026-08-05-feedback-gated-session-telemetry.md) defines the explicit `FULL` and `FEEDBACK_ONLY` delivery modes, which require `exporter.url`, without moving the redaction or backend boundary. [Buffer-free feedback replay](../simplification/2026-08-06-buffer-free-feedback-telemetry.md) avoids a second in-memory copy of the session prefix. +- **`@deepseek-ai/dsh-session-telemetry-otel`** — the reference backend: OTel JS SDK log pipeline (`LoggerProvider` → `BatchLogRecordProcessor` → OTLP/HTTP exporter), configured verbatim through `exporter`/`processor` passthroughs. `DISABLED` is the default and constructs no transport; the [feedback-gated telemetry decision](../../archived/feature/2026-08-05-feedback-gated-session-telemetry.md) defines the explicit `FULL` and `FEEDBACK_ONLY` delivery modes, which require `exporter.url`, without moving the redaction or backend boundary. [Buffer-free feedback replay](../../archived/simplification/2026-08-06-buffer-free-feedback-telemetry.md) avoids a second in-memory copy of the session prefix. The boundary axiom holds: the harness's aspect ends at `emit()`. Batching, retry, queueing, and loss policy are the reporting SDK's, configured through passthroughs. Delivery is best-effort: a crash can lose queued records. Backend retry or losing the same live object's module-scope cursor can duplicate lifecycle-local rows, so receivers deduplicate on `(session.id, session.format_version, event.seq)`. @@ -34,4 +34,4 @@ The boundary axiom holds: the harness's aspect ends at `emit()`. Batching, retry ## Consequences -A deployment adds one `cordis.yml` entry with an OTLP endpoint and explicitly selects `FULL` to stream lifecycle-local canonical events into an OTel-compatible stack or `FEEDBACK_ONLY` to replay a lifecycle-local canonical-log prefix when feedback is recorded. `DISABLED` is the [default](2026-08-10-telemetry-default-off.md) and constructs no reporting pipeline; removing the entry remains a silent opt-out, while the disabled mode keeps the local feedback warning. A rule-free deployment exports each event body exactly as captured — including every assistant chunk and any credentials embedded in file contents or command output — so a deployment crossing a trust boundary must mount `session-telemetry/record` listeners, and both READMEs state this plainly. Where rules are mounted, exported bodies can differ from canonical log bytes, so receivers must not treat telemetry as a byte-exact replica; the log remains the source of truth. Same-object replay after lost cursor state can duplicate lifecycle-local ledger rows, and crash durability remains out of scope until the outbox decision above is revisited. +A deployment adds one `cordis.yml` entry with an OTLP endpoint and explicitly selects `FULL` to stream lifecycle-local canonical events into an OTel-compatible stack or `FEEDBACK_ONLY` to replay a lifecycle-local canonical-log prefix when feedback is recorded. `DISABLED` is the default ([`dsh-session-telemetry-otel` README](../../../../packages/session/session-telemetry-otel/README.md)) and constructs no reporting pipeline; removing the entry remains a silent opt-out, while the disabled mode keeps the local feedback warning. A rule-free deployment exports each event body exactly as captured — including every assistant chunk and any credentials embedded in file contents or command output — so a deployment crossing a trust boundary must mount `session-telemetry/record` listeners, and both READMEs state this plainly. Where rules are mounted, exported bodies can differ from canonical log bytes, so receivers must not treat telemetry as a byte-exact replica; the log remains the source of truth. Same-object replay after lost cursor state can duplicate lifecycle-local ledger rows, and crash durability remains out of scope until the outbox decision above is revisited. diff --git a/.agents/notes/implemented/feature/2026-07-23-session-telemetry-otel-revival.zh.md b/.agents/notes/implemented/feature/2026-07-23-session-telemetry-otel-revival.zh.md index 3d43ab8edc..488716f972 100644 --- a/.agents/notes/implemented/feature/2026-07-23-session-telemetry-otel-revival.zh.md +++ b/.agents/notes/implemented/feature/2026-07-23-session-telemetry-otel-revival.zh.md @@ -14,7 +14,7 @@ Status: implemented - **`@deepseek-ai/dsh-session-telemetry`** —— seam 本体。`SessionTelemetrySink`(`emit`/`flush?`/`shutdown`)、服务注册形态的 `SessionTelemetryBackend` 与 `SessionTelemetryCoordinator` 共同拥有生命周期本地捕获:每个新的 Session 对象从 `firstLiveSeq` 之前开始,随后逐 append firehose 以零 I/O 深拷贝、脱敏并交接每个事件;重新收养同一对象时从模块作用域游标之后继续。无缓冲按需捕获使用同样的一事件一记录映射,直到可选的包含式边界。Ledger 身份包含 `session.id`、`session.format_version` 与 `event.seq`;实时捕获还会转发 `agent/error`,并创建 dispose(资源释放)时的 `shutdown` 记录。 - **`session-telemetry/record` waterfall(瀑布式事件)** —— 相对分支版本的增量,也是该 seam 的脱敏扩展点。每条记录抵达任何后端前必经此处;seam 自身不带任何规则——最内层 `next()` 原样透传,部署方以监听器挂载自己的规则(通过变换 `next()` 的返回值堆叠),抛异常的规则将该记录 fail-closed 扣下。脱敏只作用于导出副本;canonical log 永不改写。 -- **`@deepseek-ai/dsh-session-telemetry-otel`** —— 参考后端:OTel JS SDK 日志流水线(`LoggerProvider` → `BatchLogRecordProcessor` → OTLP/HTTP exporter),经 `exporter`/`processor` passthrough 原样配置。`DISABLED` 是默认值,且不构造任何传输;[反馈门控遥测决策](2026-08-05-feedback-gated-session-telemetry.zh.md)定义了需显式启用的 `FULL` 与 `FEEDBACK_ONLY` 投递模式,这两种模式要求 `exporter.url`,且不移动脱敏或后端边界。[无缓冲反馈回放](../simplification/2026-08-06-buffer-free-feedback-telemetry.zh.md)避免在内存中创建会话前缀的第二份副本。 +- **`@deepseek-ai/dsh-session-telemetry-otel`** —— 参考后端:OTel JS SDK 日志流水线(`LoggerProvider` → `BatchLogRecordProcessor` → OTLP/HTTP exporter),经 `exporter`/`processor` passthrough 原样配置。`DISABLED` 是默认值,且不构造任何传输;[反馈门控遥测决策](../../archived/feature/2026-08-05-feedback-gated-session-telemetry.md)定义了需显式启用的 `FULL` 与 `FEEDBACK_ONLY` 投递模式,这两种模式要求 `exporter.url`,且不移动脱敏或后端边界。[无缓冲反馈回放](../../archived/simplification/2026-08-06-buffer-free-feedback-telemetry.md)避免在内存中创建会话前缀的第二份副本。 边界公理保持不变:harness 的职责止于 `emit()`。批处理、重试、排队与丢失策略属于 reporting SDK,并经 passthrough 配置。投递是尽力而为:崩溃可能丢失已排队记录。后端重试或丢失同一 live 对象的模块作用域游标可能重复生命周期本地 row,因此接收端基于 `(session.id, session.format_version, event.seq)` 去重。 @@ -35,4 +35,4 @@ Status: implemented ## 后果 -部署方在 `cordis.yml` 加一个带 OTLP endpoint 的 Cordis 配置项,并显式选择 `FULL`,即可把生命周期本地权威事件流接入任何 OTel 兼容体系;选择 `FEEDBACK_ONLY` 则会在记录反馈时回放生命周期本地权威日志前缀。`DISABLED` 是[默认值](2026-08-10-telemetry-default-off.zh.md),且不构造上报流水线;删除该配置项仍是静默退出方式,而禁用模式会保留本地反馈警告。未挂载规则的部署会按捕获原样导出每个事件 body,包括每条 assistant chunk,以及文件内容与命令输出中内嵌的任何凭据。因此,跨信任边界的部署必须挂载 `session-telemetry/record` 监听器,两份 README 对此如实陈述。挂载规则后,导出的 body 可能与 canonical log 字节不同,接收端不得把遥测当作字节精确副本;日志仍是真源。同一对象丢失游标状态后的回放可能重复生命周期本地 ledger 行,崩溃持久性则在上述 outbox 决定重新审议前继续不在范围内。 +部署方在 `cordis.yml` 加一个带 OTLP endpoint 的 Cordis 配置项,并显式选择 `FULL`,即可把生命周期本地权威事件流接入任何 OTel 兼容体系;选择 `FEEDBACK_ONLY` 则会在记录反馈时回放生命周期本地权威日志前缀。`DISABLED` 是默认值([`dsh-session-telemetry-otel` README](../../../../packages/session/session-telemetry-otel/README.zh.md)),且不构造上报流水线;删除该配置项仍是静默退出方式,而禁用模式会保留本地反馈警告。未挂载规则的部署会按捕获原样导出每个事件 body,包括每条 assistant chunk,以及文件内容与命令输出中内嵌的任何凭据。因此,跨信任边界的部署必须挂载 `session-telemetry/record` 监听器,两份 README 对此如实陈述。挂载规则后,导出的 body 可能与 canonical log 字节不同,接收端不得把遥测当作字节精确副本;日志仍是真源。同一对象丢失游标状态后的回放可能重复生命周期本地 ledger 行,崩溃持久性则在上述 outbox 决定重新审议前继续不在范围内。 diff --git a/.agents/notes/implemented/feature/2026-07-23-web-assistant-markdown.i18n.yaml b/.agents/notes/implemented/feature/2026-07-23-web-assistant-markdown.i18n.yaml deleted file mode 100644 index 706794e459..0000000000 --- a/.agents/notes/implemented/feature/2026-07-23-web-assistant-markdown.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-07-23-web-assistant-markdown.md -2026-07-23-web-assistant-markdown.md: 4063ad647c485be295a55087247681a494dbeabf -2026-07-23-web-assistant-markdown.zh.md: 6b062e155c88bc8c3f3cf048ec463f3db0b4f7bc diff --git a/.agents/notes/implemented/feature/2026-07-23-web-permission-and-approval.i18n.yaml b/.agents/notes/implemented/feature/2026-07-23-web-permission-and-approval.i18n.yaml deleted file mode 100644 index c700040fd5..0000000000 --- a/.agents/notes/implemented/feature/2026-07-23-web-permission-and-approval.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-07-23-web-permission-and-approval.md -2026-07-23-web-permission-and-approval.md: f533adc43e7aafe24d09f7998ba8f7336dea3c79 -2026-07-23-web-permission-and-approval.zh.md: 85e70bac153b4687cb46c1953784f184b8311637 diff --git a/.agents/notes/implemented/feature/2026-07-23-web-todo-display.i18n.yaml b/.agents/notes/implemented/feature/2026-07-23-web-todo-display.i18n.yaml deleted file mode 100644 index 0808939ddd..0000000000 --- a/.agents/notes/implemented/feature/2026-07-23-web-todo-display.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-07-23-web-todo-display.md -2026-07-23-web-todo-display.md: e97301160ff72d4e9c1a4e916bddaa47ac1a793e -2026-07-23-web-todo-display.zh.md: 84e4801d90311652f6fd66b972ada302cea20e35 diff --git a/.agents/notes/implemented/feature/2026-07-24-model-facing-session-query-tools.i18n.yaml b/.agents/notes/implemented/feature/2026-07-24-model-facing-session-query-tools.i18n.yaml deleted file mode 100644 index 161e4f3ed7..0000000000 --- a/.agents/notes/implemented/feature/2026-07-24-model-facing-session-query-tools.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-07-24-model-facing-session-query-tools.md -2026-07-24-model-facing-session-query-tools.md: 7dcb25fc4205442bd0b0743a6228427fa66ead1c -2026-07-24-model-facing-session-query-tools.zh.md: cb2fa764177bacc3b4dc3db0202999835b2f7362 diff --git a/.agents/notes/implemented/feature/2026-07-25-session-list-browsing-and-manual-order.i18n.yaml b/.agents/notes/implemented/feature/2026-07-25-session-list-browsing-and-manual-order.i18n.yaml deleted file mode 100644 index de738d9cda..0000000000 --- a/.agents/notes/implemented/feature/2026-07-25-session-list-browsing-and-manual-order.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-07-25-session-list-browsing-and-manual-order.md -2026-07-25-session-list-browsing-and-manual-order.md: 52a0fe0c94106cb4178c57e737b1c9a3f458f803 -2026-07-25-session-list-browsing-and-manual-order.zh.md: d2e24ef5d4bb83cf4f3fa0a2476a85daf3b141c8 diff --git a/.agents/notes/implemented/feature/2026-07-25-subagent-policy-inheritance.i18n.yaml b/.agents/notes/implemented/feature/2026-07-25-subagent-policy-inheritance.i18n.yaml index 73f0b1d9a6..194a38e0a1 100644 --- a/.agents/notes/implemented/feature/2026-07-25-subagent-policy-inheritance.i18n.yaml +++ b/.agents/notes/implemented/feature/2026-07-25-subagent-policy-inheritance.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-07-25-subagent-policy-inheritance.md -2026-07-25-subagent-policy-inheritance.md: c98a2536bdf736eea20aa5d5a9a5f1952d8d29d1 -2026-07-25-subagent-policy-inheritance.zh.md: 1cbfad43b3c7f6def6ad9df04647e5c624e698ea +2026-07-25-subagent-policy-inheritance.md: 14713bad411640974513bd42f809cdc56e39fb59 +2026-07-25-subagent-policy-inheritance.zh.md: ad4997ad8f0274139b8d95ddf3051c904ec83c7b diff --git a/.agents/notes/implemented/feature/2026-07-25-subagent-policy-inheritance.md b/.agents/notes/implemented/feature/2026-07-25-subagent-policy-inheritance.md index c98a2536bd..14713bad41 100644 --- a/.agents/notes/implemented/feature/2026-07-25-subagent-policy-inheritance.md +++ b/.agents/notes/implemented/feature/2026-07-25-subagent-policy-inheritance.md @@ -10,7 +10,7 @@ Sandbox and approval overrides are per-session log folds. An in-process subagent ## Decision -The delegation boundary snapshots `sandboxPolicy.overrideOf(parent.session)` before its first await, through the shared child-agent helpers (`captureDelegatedPolicyOverrides`/`appendDelegatedPolicyOverrides` in `dsh-subagent`), which the one-shot driver and the [continuable start](2026-08-10-continuable-subagent-policy-inheritance.md) both call. A later parent switch belongs to the parent's future; cancel-and-redelegate takes a new snapshot. The sandbox-policy service is optional, and only the explicit session override is copied, never deployment defaults or one-shot grants. The approval policy is not inherited: the same capture pins every child to `'never'` — the [approvals-pinned decision](2026-08-10-subagent-approval-pinned-never.md) supersedes this note's original approval-override inheritance. +The delegation boundary snapshots `sandboxPolicy.overrideOf(parent.session)` before its first await, through the shared child-agent helpers (`captureDelegatedPolicyOverrides`/`appendDelegatedPolicyOverrides` in `dsh-subagent`), which the one-shot driver and the [continuable start](../../archived/feature/2026-08-10-continuable-subagent-policy-inheritance.md) both call. A later parent switch belongs to the parent's future; cancel-and-redelegate takes a new snapshot. The sandbox-policy service is optional, and only the explicit session override is copied, never deployment defaults or one-shot grants. The approval policy is not inherited: the same capture pins every child to `'never'` — the [approvals-pinned decision](2026-08-10-subagent-approval-pinned-never.md) supersedes this note's original approval-override inheritance. Each captured value becomes a source-tagged `sandbox/mode` or `approval/policy` event appended during the child factory's unpublished setup. The session constructor has already fixed `Session.firstLiveSeq` after the constructor seed, while `Session.inheritedEventCount` keeps the exact fork-prefix length, so the inherited facts follow fork history without changing its lineage cut. Lifecycle-local telemetry starts at `firstLiveSeq`, so it excludes the constructor seed and includes these unpublished-setup events. Existing last-event-wins folds therefore make the delegation snapshot beat stale fork history and let a later child switch beat the snapshot. A grandchild folds its parent's logged state, so the rule composes without another inheritance mechanism. diff --git a/.agents/notes/implemented/feature/2026-07-25-subagent-policy-inheritance.zh.md b/.agents/notes/implemented/feature/2026-07-25-subagent-policy-inheritance.zh.md index 1cbfad43b3..ad4997ad8f 100644 --- a/.agents/notes/implemented/feature/2026-07-25-subagent-policy-inheritance.zh.md +++ b/.agents/notes/implemented/feature/2026-07-25-subagent-policy-inheritance.zh.md @@ -10,7 +10,7 @@ Status: implemented ## 决策 -委派边界在第一次 await 之前,经由共享的子 agent 辅助函数(`dsh-subagent` 中的 `captureDelegatedPolicyOverrides`/`appendDelegatedPolicyOverrides`)对 `sandboxPolicy.overrideOf(parent.session)` 获取快照;一次性驱动器与[可继续启动](2026-08-10-continuable-subagent-policy-inheritance.zh.md)都会调用这些辅助函数。父级后续的切换属于父级的未来;取消后重新委派会取得新快照。沙箱策略服务为可选,仅复制显式会话覆盖项,绝不复制部署默认值或一次性授权。审批策略不继承:同一次捕获会把每个子 agent 钉定为 `'never'`——[审批钉定决策](2026-08-10-subagent-approval-pinned-never.zh.md)取代了本 note 原先的审批覆盖项继承。 +委派边界在第一次 await 之前,经由共享的子 agent 辅助函数(`dsh-subagent` 中的 `captureDelegatedPolicyOverrides`/`appendDelegatedPolicyOverrides`)对 `sandboxPolicy.overrideOf(parent.session)` 获取快照;一次性驱动器与[可继续启动](../../archived/feature/2026-08-10-continuable-subagent-policy-inheritance.md)都会调用这些辅助函数。父级后续的切换属于父级的未来;取消后重新委派会取得新快照。沙箱策略服务为可选,仅复制显式会话覆盖项,绝不复制部署默认值或一次性授权。审批策略不继承:同一次捕获会把每个子 agent 钉定为 `'never'`——[审批钉定决策](2026-08-10-subagent-approval-pinned-never.zh.md)取代了本 note 原先的审批覆盖项继承。 每个捕获值都会成为子 agent 工厂在未发布设置阶段追加的一条带来源标记的 `sandbox/mode` 或 `approval/policy` 事件。会话构造函数已把 `Session.firstLiveSeq` 固定在 constructor seed 之后,而 `Session.inheritedEventCount` 保留精确的 fork 前缀长度,因此继承事实会排在 fork 历史之后,却不改变其谱系 cut。生命周期本地遥测从 `firstLiveSeq` 开始,因此排除 constructor seed,并包含这些未发布设置事件。因此,既有的末事件胜出折叠会让委派快照压过陈旧的 fork 历史,并让子 agent 后续的切换压过该快照。孙代 agent 会折叠其父级已记录的状态,因此无需另一套继承机制即可组合此规则。 diff --git a/.agents/notes/implemented/feature/2026-07-25-workspace-ui-product-flow.i18n.yaml b/.agents/notes/implemented/feature/2026-07-25-workspace-ui-product-flow.i18n.yaml deleted file mode 100644 index c4e1bc75d5..0000000000 --- a/.agents/notes/implemented/feature/2026-07-25-workspace-ui-product-flow.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-07-25-workspace-ui-product-flow.md -2026-07-25-workspace-ui-product-flow.md: 0dd58905c9f396256749cdcf5204202f3a8c9f12 -2026-07-25-workspace-ui-product-flow.zh.md: ab73e631d94baee65c74e70b75151691f16f2ca9 diff --git a/.agents/notes/implemented/feature/2026-07-26-ptc-chat-subcall-rows.i18n.yaml b/.agents/notes/implemented/feature/2026-07-26-ptc-chat-subcall-rows.i18n.yaml deleted file mode 100644 index 7d73b82e39..0000000000 --- a/.agents/notes/implemented/feature/2026-07-26-ptc-chat-subcall-rows.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-07-26-ptc-chat-subcall-rows.md -2026-07-26-ptc-chat-subcall-rows.md: 5ddbd56f75acd4c0d6de70708e5c8f810e797e83 -2026-07-26-ptc-chat-subcall-rows.zh.md: 499742d488860db0d987387cbd67be645922aa7e diff --git a/.agents/notes/implemented/feature/2026-07-26-ptc-dispatch-log-spill.i18n.yaml b/.agents/notes/implemented/feature/2026-07-26-ptc-dispatch-log-spill.i18n.yaml deleted file mode 100644 index d30a6637f7..0000000000 --- a/.agents/notes/implemented/feature/2026-07-26-ptc-dispatch-log-spill.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-07-26-ptc-dispatch-log-spill.md -2026-07-26-ptc-dispatch-log-spill.md: fa99ceb0b0e8eb078ef29438246cf0d89370bea9 -2026-07-26-ptc-dispatch-log-spill.zh.md: ab115ba0927b6a62d838ca13d5c442e4ae485021 diff --git a/.agents/notes/implemented/feature/2026-07-26-ptc-dispatch-ui-foundation.i18n.yaml b/.agents/notes/implemented/feature/2026-07-26-ptc-dispatch-ui-foundation.i18n.yaml deleted file mode 100644 index 9775a62d15..0000000000 --- a/.agents/notes/implemented/feature/2026-07-26-ptc-dispatch-ui-foundation.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-07-26-ptc-dispatch-ui-foundation.md -2026-07-26-ptc-dispatch-ui-foundation.md: e44b67294a0c2c13809323b2aa42ec867bbcbbff -2026-07-26-ptc-dispatch-ui-foundation.zh.md: 4b1ae0b3ebf35982449f5941d84361c530766534 diff --git a/.agents/notes/implemented/feature/2026-07-26-ptc-live-parallel-dispatch.i18n.yaml b/.agents/notes/implemented/feature/2026-07-26-ptc-live-parallel-dispatch.i18n.yaml index 91ddd782f3..fe3522ee91 100644 --- a/.agents/notes/implemented/feature/2026-07-26-ptc-live-parallel-dispatch.i18n.yaml +++ b/.agents/notes/implemented/feature/2026-07-26-ptc-live-parallel-dispatch.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-07-26-ptc-live-parallel-dispatch.md -2026-07-26-ptc-live-parallel-dispatch.md: 0a864411d52e1e6f6a68b11ceb1055f9bc6c5a89 -2026-07-26-ptc-live-parallel-dispatch.zh.md: 1e9f3cdd9159412c93996d77e759e0af34022408 +2026-07-26-ptc-live-parallel-dispatch.md: 53388e4b4cc067527bd1ed04d6c66054e84ecd44 +2026-07-26-ptc-live-parallel-dispatch.zh.md: 8eb8e6d743be65db50a4685eafb2496bc791141c diff --git a/.agents/notes/implemented/feature/2026-07-26-ptc-live-parallel-dispatch.md b/.agents/notes/implemented/feature/2026-07-26-ptc-live-parallel-dispatch.md index 0a864411d5..53388e4b4c 100644 --- a/.agents/notes/implemented/feature/2026-07-26-ptc-live-parallel-dispatch.md +++ b/.agents/notes/implemented/feature/2026-07-26-ptc-live-parallel-dispatch.md @@ -4,7 +4,7 @@ Status: implemented English | [中文](2026-07-26-ptc-live-parallel-dispatch.zh.md) -> Scope: the `tool/code-dispatch-start` event, per-sub-call running state in the web chat, and the bridge's scheduler reusing the native concurrency contract. Builds on the [host foundation](2026-07-26-ptc-dispatch-ui-foundation.md) and [chat sub-call rows](2026-07-26-ptc-chat-subcall-rows.md); the native contract itself is owned by the [parallel tool-call note](2026-07-10-parallel-tool-call-execution.md). +> Scope: the `tool/code-dispatch-start` event, per-sub-call running state in the web chat, and the bridge's scheduler reusing the native concurrency contract. Builds on the [host foundation](../../archived/feature/2026-07-26-ptc-dispatch-ui-foundation.md) and [chat sub-call rows](../../archived/feature/2026-07-26-ptc-chat-subcall-rows.md); the native contract itself is owned by the [parallel tool-call note](2026-07-10-parallel-tool-call-execution.md). ## Problem @@ -29,4 +29,4 @@ Two gaps remained after the host foundation and chat sub-call rows shipped. Sub- ## Consequences -Programs get native-grade latency for independent reads with no new model-side API — `Promise.all` simply works better, and prompt guidance changed accordingly. The web UI shows per-sub-call running rings live (fixture emits start/settle pairs; jsdom pins the running shape; the runtime spec pins in-place settlement, out-of-order completion, and callTime pairing). Trajectory/waterfall sub-call spans draw truthful timing from the pair. Spill bounding ([ptc-dispatch log spill](2026-07-26-ptc-dispatch-log-spill.md)) inherits the settle event as its single bounding point. +Programs get native-grade latency for independent reads with no new model-side API — `Promise.all` simply works better, and prompt guidance changed accordingly. The web UI shows per-sub-call running rings live (fixture emits start/settle pairs; jsdom pins the running shape; the runtime spec pins in-place settlement, out-of-order completion, and callTime pairing). Trajectory/waterfall sub-call spans draw truthful timing from the pair. Spill bounding ([ptc-dispatch log spill](../../archived/feature/2026-07-26-ptc-dispatch-log-spill.md)) inherits the settle event as its single bounding point. diff --git a/.agents/notes/implemented/feature/2026-07-26-ptc-live-parallel-dispatch.zh.md b/.agents/notes/implemented/feature/2026-07-26-ptc-live-parallel-dispatch.zh.md index 1e9f3cdd91..8eb8e6d743 100644 --- a/.agents/notes/implemented/feature/2026-07-26-ptc-live-parallel-dispatch.zh.md +++ b/.agents/notes/implemented/feature/2026-07-26-ptc-live-parallel-dispatch.zh.md @@ -4,7 +4,7 @@ Status: implemented [English](2026-07-26-ptc-live-parallel-dispatch.md) | 中文 -> 范围:`tool/code-dispatch-start` 事件、Web chat 中每个子调用的运行状态,以及桥接层调度器对原生并发约定的复用。构建在[宿主侧基础](2026-07-26-ptc-dispatch-ui-foundation.zh.md)与 [chat 子调用行](2026-07-26-ptc-chat-subcall-rows.zh.md)之上;原生约定本身归[并行工具调用 Agent Note](2026-07-10-parallel-tool-call-execution.zh.md) 所有。 +> 范围:`tool/code-dispatch-start` 事件、Web chat 中每个子调用的运行状态,以及桥接层调度器对原生并发约定的复用。构建在[宿主侧基础](../../archived/feature/2026-07-26-ptc-dispatch-ui-foundation.md)与 [chat 子调用行](../../archived/feature/2026-07-26-ptc-chat-subcall-rows.md)之上;原生约定本身归[并行工具调用 Agent Note](2026-07-10-parallel-tool-call-execution.zh.md) 所有。 ## 问题 @@ -29,4 +29,4 @@ Status: implemented ## 后果 -程序不需要任何新的模型侧 API,独立读取就获得了原生级的延迟:`Promise.all` 直接变得更好用,提示词指引也随之修改。Web UI 实时显示每个子调用的运行指示环:fixture(测试前置数据)发出成对的 start/settle 事件;jsdom 锁定运行中形状;运行时测试锁定原位结算、乱序完成与 callTime 配对。trajectory/waterfall 的子调用 span 从这对事件取得如实的计时。spill 边界划定([ptc-dispatch 日志 spill](2026-07-26-ptc-dispatch-log-spill.zh.md))则以结算事件作为唯一的边界点。 +程序不需要任何新的模型侧 API,独立读取就获得了原生级的延迟:`Promise.all` 直接变得更好用,提示词指引也随之修改。Web UI 实时显示每个子调用的运行指示环:fixture(测试前置数据)发出成对的 start/settle 事件;jsdom 锁定运行中形状;运行时测试锁定原位结算、乱序完成与 callTime 配对。trajectory/waterfall 的子调用 span 从这对事件取得如实的计时。spill 边界划定([ptc-dispatch 日志 spill](../../archived/feature/2026-07-26-ptc-dispatch-log-spill.md))则以结算事件作为唯一的边界点。 diff --git a/.agents/notes/implemented/feature/2026-07-26-todo-parallel-in-progress.i18n.yaml b/.agents/notes/implemented/feature/2026-07-26-todo-parallel-in-progress.i18n.yaml deleted file mode 100644 index e89e6ab007..0000000000 --- a/.agents/notes/implemented/feature/2026-07-26-todo-parallel-in-progress.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-07-26-todo-parallel-in-progress.md -2026-07-26-todo-parallel-in-progress.md: 244b75b3890553df2185b7d79b21057126b6371d -2026-07-26-todo-parallel-in-progress.zh.md: c8d1c246bae38f9f4eb60db8f73edbf3a9278271 diff --git a/.agents/notes/implemented/feature/2026-07-27-native-workspace-directory-picker.i18n.yaml b/.agents/notes/implemented/feature/2026-07-27-native-workspace-directory-picker.i18n.yaml deleted file mode 100644 index 72d58beeeb..0000000000 --- a/.agents/notes/implemented/feature/2026-07-27-native-workspace-directory-picker.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-07-27-native-workspace-directory-picker.md -2026-07-27-native-workspace-directory-picker.md: d63ab0b4b59adfa6c7f053c376e0469a75e131e3 -2026-07-27-native-workspace-directory-picker.zh.md: eef4948b1f6c0e7d1e74ae96fdec6e3ce37eedee diff --git a/.agents/notes/implemented/feature/2026-07-27-skill-catalog-hot-refresh.i18n.yaml b/.agents/notes/implemented/feature/2026-07-27-skill-catalog-hot-refresh.i18n.yaml deleted file mode 100644 index 0c7262015b..0000000000 --- a/.agents/notes/implemented/feature/2026-07-27-skill-catalog-hot-refresh.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-07-27-skill-catalog-hot-refresh.md -2026-07-27-skill-catalog-hot-refresh.md: 21221761380f8873002254e89b703596e14389b7 -2026-07-27-skill-catalog-hot-refresh.zh.md: 89a5ea446fed3604b00e2c8fb5bf6fe9664eff7c diff --git a/.agents/notes/implemented/feature/2026-07-27-tmux-location-context.i18n.yaml b/.agents/notes/implemented/feature/2026-07-27-tmux-location-context.i18n.yaml deleted file mode 100644 index bee4fef9cd..0000000000 --- a/.agents/notes/implemented/feature/2026-07-27-tmux-location-context.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-07-27-tmux-location-context.md -2026-07-27-tmux-location-context.md: fa7ec8a76d68500aaf90747fa91e270cae3e6251 -2026-07-27-tmux-location-context.zh.md: 63ae1328cdc72a4c481dd61e22024ef1ffc72c62 diff --git a/.agents/notes/implemented/feature/2026-07-27-trajectory-inspection-ledger.i18n.yaml b/.agents/notes/implemented/feature/2026-07-27-trajectory-inspection-ledger.i18n.yaml deleted file mode 100644 index e17531633a..0000000000 --- a/.agents/notes/implemented/feature/2026-07-27-trajectory-inspection-ledger.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-07-27-trajectory-inspection-ledger.md -2026-07-27-trajectory-inspection-ledger.md: 75f8480d3e52c6cc1f2eefd7ef9d5a2c03b40dee -2026-07-27-trajectory-inspection-ledger.zh.md: 82af4904d90a6fbfc811d176dd4b859b26d4774c diff --git a/.agents/notes/implemented/feature/2026-07-27-typescript-sdk-and-sdk-subagent-backend.i18n.yaml b/.agents/notes/implemented/feature/2026-07-27-typescript-sdk-and-sdk-subagent-backend.i18n.yaml deleted file mode 100644 index 65ea6e70a8..0000000000 --- a/.agents/notes/implemented/feature/2026-07-27-typescript-sdk-and-sdk-subagent-backend.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-07-27-typescript-sdk-and-sdk-subagent-backend.md -2026-07-27-typescript-sdk-and-sdk-subagent-backend.md: c410e7ffadb448bee08c9a3e296ba71aae679f2d -2026-07-27-typescript-sdk-and-sdk-subagent-backend.zh.md: 13b7a498574a3d72808d24fb284da95ee00912a1 diff --git a/.agents/notes/implemented/feature/2026-07-27-web-file-and-session-references.i18n.yaml b/.agents/notes/implemented/feature/2026-07-27-web-file-and-session-references.i18n.yaml deleted file mode 100644 index f045d1ac7c..0000000000 --- a/.agents/notes/implemented/feature/2026-07-27-web-file-and-session-references.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-07-27-web-file-and-session-references.md -2026-07-27-web-file-and-session-references.md: 51447d0c22c2e5beb4eae03e7f955239525fc16d -2026-07-27-web-file-and-session-references.zh.md: f2f87aabaa818fe5d104b0ee1488658c792f59b9 diff --git a/.agents/notes/implemented/feature/2026-07-27-web-session-search.i18n.yaml b/.agents/notes/implemented/feature/2026-07-27-web-session-search.i18n.yaml deleted file mode 100644 index d16f8155e1..0000000000 --- a/.agents/notes/implemented/feature/2026-07-27-web-session-search.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-07-27-web-session-search.md -2026-07-27-web-session-search.md: d7a979a278113f9dcc170ec12f9d0fb37e1d55b7 -2026-07-27-web-session-search.zh.md: ba125ba884a1c93f3d2ac23b7f750c6ca216ed5f diff --git a/.agents/notes/implemented/feature/2026-07-27-web-subagent-conversations.i18n.yaml b/.agents/notes/implemented/feature/2026-07-27-web-subagent-conversations.i18n.yaml index b4a945267c..3032ff0e9c 100644 --- a/.agents/notes/implemented/feature/2026-07-27-web-subagent-conversations.i18n.yaml +++ b/.agents/notes/implemented/feature/2026-07-27-web-subagent-conversations.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-07-27-web-subagent-conversations.md -2026-07-27-web-subagent-conversations.md: 5a4d3f78c4a23077078cbab17d66e98f76e94d31 -2026-07-27-web-subagent-conversations.zh.md: 39a044f92b7ce6495410da3d826cebb666382c7c +2026-07-27-web-subagent-conversations.md: 28e06d1db9103de53e6e2fb266a03e168428d0d2 +2026-07-27-web-subagent-conversations.zh.md: e93abe89e855d688d822bfd20fd1644f24bdf3e9 diff --git a/.agents/notes/implemented/feature/2026-07-27-web-subagent-conversations.md b/.agents/notes/implemented/feature/2026-07-27-web-subagent-conversations.md index 5a4d3f78c4..28e06d1db9 100644 --- a/.agents/notes/implemented/feature/2026-07-27-web-subagent-conversations.md +++ b/.agents/notes/implemented/feature/2026-07-27-web-subagent-conversations.md @@ -10,7 +10,7 @@ Session-backed subagents have durable identities, persisted transcripts, and a d The browser must preserve the [continuable subagent contract](../../implemented/feature/2026-07-28-continuable-subagent-conversations.md): a continuable child has at most one process-local Activation, accepts later work only through the exact live direct parent, and uses the Agent inbox as its sole FIFO. Viewing history must not create an Activation. Once an inbox message is accepted, the HTTP caller neither owns its execution nor gains a cancellation handle. -The UI must also preserve the membership, modes, and diagnostics of the [durable catalog](../../implemented/feature/2026-07-22-durable-subagent-catalog-and-list-agents.md). The shared service reports live-preferred corpus activity, while the Web projection replaces it with the exact child Agent driver's `running` or `inactive` state. Neither activity is a durable outcome or a promise that continuation will succeed. +The UI must also preserve the membership, modes, and diagnostics of the [durable catalog](../../archived/feature/2026-07-22-durable-subagent-catalog-and-list-agents.md). The shared service reports live-preferred corpus activity, while the Web projection replaces it with the exact child Agent driver's `running` or `inactive` state. Neither activity is a durable outcome or a promise that continuation will succeed. ## Decision @@ -55,7 +55,7 @@ Agent-bound auxiliary controls are unavailable in addressed child views. In part - `subagent.list` takes `parentSessionId`, calls `ctx.subagents.listChildren(parentSessionId, signal)`, returns the complete ordered entries with each healthy row's boolean `hasChildren` snapshot, replaces each healthy row's corpus activity with whether its exact Agent driver is running, and includes whether the exact parent currently resolves from `ctx.agents`. - `subagent.history` takes the full mode-bearing address plus ordinary page arguments. It verifies the child and mode against the direct catalog, reads through `ctx.sessionQuery.readSession()`, rechecks direct lineage, and returns the ordinary raw-event, render-intent, pagination, and host-computed session-projection baseline without publishing an Agent. -- `subagent.prompt` accepts only a `mode: 'continuable'` address and upload-shaped `PromptContentPart[]`; the Host admits and persists image parts into durable references before delivery ([image delivery](../bug-fix/2026-08-27-steer-followup-image-delivery.md)). It requires the exact live parent, revalidates the catalog address, calls `ctx.subagents.followup(parent, childId, content, { source, signal })`, and returns the accepted `MessageId`. +- `subagent.prompt` accepts only a `mode: 'continuable'` address and upload-shaped `PromptContentPart[]`; the Host admits and persists image parts into durable references before delivery ([image delivery](../../archived/bug-fix/2026-08-27-steer-followup-image-delivery.md)). It requires the exact live parent, revalidates the catalog address, calls `ctx.subagents.followup(parent, childId, content, { source, signal })`, and returns the accepted `MessageId`. The gateway maps missing parent, missing or diagnostic catalog entries, not-resumable and unauthorized children, request cancellation, image admission and image-capability refusals (`subagent/attachment-invalid`), and temporarily unavailable continuation admission to typed RPC errors. It does not expose descriptor or provider details. A list/prompt race is normal: the prompt result, not the earlier availability or activity snapshot, is authoritative. diff --git a/.agents/notes/implemented/feature/2026-07-27-web-subagent-conversations.zh.md b/.agents/notes/implemented/feature/2026-07-27-web-subagent-conversations.zh.md index 39a044f92b..e93abe89e8 100644 --- a/.agents/notes/implemented/feature/2026-07-27-web-subagent-conversations.zh.md +++ b/.agents/notes/implemented/feature/2026-07-27-web-subagent-conversations.zh.md @@ -10,7 +10,7 @@ Status: implemented 浏览器必须遵守[可继续 subagent 约定](../../implemented/feature/2026-07-28-continuable-subagent-conversations.zh.md):一个可继续 child 在进程内最多只能有一项 Activation,只能通过确切的存活直接 parent 接受后续工作,并将 agent inbox 用作唯一的 FIFO。查看历史不得创建 Activation。inbox 消息一经接受,HTTP 调用方既不拥有其执行过程,也不会获得取消句柄。 -UI 还必须保留[持久化目录](../../implemented/feature/2026-07-22-durable-subagent-catalog-and-list-agents.zh.md)的成员、mode 与 diagnostic。共享服务报告采用实时优先规则的语料活动状态,而 Web 投影会将其替换为确切 child Agent driver 的 `running` 或 `inactive` 状态。这两种活动状态都不是持久化结果,也不承诺继续执行会成功。 +UI 还必须保留[持久化目录](../../archived/feature/2026-07-22-durable-subagent-catalog-and-list-agents.md)的成员、mode 与 diagnostic。共享服务报告采用实时优先规则的语料活动状态,而 Web 投影会将其替换为确切 child Agent driver 的 `running` 或 `inactive` 状态。这两种活动状态都不是持久化结果,也不承诺继续执行会成功。 ## 决策 @@ -55,7 +55,7 @@ one-shot 行始终会用文案替代输入框,说明执行记录为只读。 - `subagent.list` 接受 `parentSessionId`,调用 `ctx.subagents.listChildren(parentSessionId, signal)`,返回完整有序的条目以及每个健康行的布尔 `hasChildren` 快照,把每个健康行的语料活动状态替换为其确切 Agent driver 是否正在运行,并说明当前能否从 `ctx.agents` 解析出确切 parent。 - `subagent.history` 接受包含 mode 的完整地址与普通页参数。它对照直接目录校验 child 与 mode,通过 `ctx.sessionQuery.readSession()` 读取,再次检查直接谱系,并在不发布 agent 的情况下返回普通原始事件、渲染意图、分页与由 Host 计算的会话投影基线。 -- `subagent.prompt` 只接受 `mode: 'continuable'` 地址与上传形态的 `PromptContentPart[]`;Host 在投递前把图片部分准入并持久化为持久引用([图片投递](../bug-fix/2026-08-27-steer-followup-image-delivery.zh.md))。它要求确切的存活 parent,重新校验目录地址,调用 `ctx.subagents.followup(parent, childId, content, { source, signal })`,并返回已接受的 `MessageId`。 +- `subagent.prompt` 只接受 `mode: 'continuable'` 地址与上传形态的 `PromptContentPart[]`;Host 在投递前把图片部分准入并持久化为持久引用([图片投递](../../archived/bug-fix/2026-08-27-steer-followup-image-delivery.md))。它要求确切的存活 parent,重新校验目录地址,调用 `ctx.subagents.followup(parent, childId, content, { source, signal })`,并返回已接受的 `MessageId`。 网关会将 parent 缺失、目录条目缺失或为 diagnostic、child 不可恢复或未授权、请求取消、图片准入或图片能力拒绝(`subagent/attachment-invalid`)以及继续执行准入暂时不可用等失败映射为类型化 RPC 错误。它不会公开描述符或提供方细节。list/prompt 竞态属于正常情况:权威依据是提示词操作的结果,而不是更早的可用性或活动快照。 diff --git a/.agents/notes/implemented/feature/2026-07-28-continuable-subagent-conversations.i18n.yaml b/.agents/notes/implemented/feature/2026-07-28-continuable-subagent-conversations.i18n.yaml index dbc7dcafd1..9741d3bdd5 100644 --- a/.agents/notes/implemented/feature/2026-07-28-continuable-subagent-conversations.i18n.yaml +++ b/.agents/notes/implemented/feature/2026-07-28-continuable-subagent-conversations.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-07-28-continuable-subagent-conversations.md -2026-07-28-continuable-subagent-conversations.md: 1efb18ab69cfe779a7de85f288a6e3aa7caaca83 -2026-07-28-continuable-subagent-conversations.zh.md: 7cb1b4a4cff1fc7f6fc41662d05693917084b63a +2026-07-28-continuable-subagent-conversations.md: fef7aba2080521253d7a67dd5169880fa5146dc0 +2026-07-28-continuable-subagent-conversations.zh.md: 875d6ab7ea5b8dd78276c3a7a9e789646340bc15 diff --git a/.agents/notes/implemented/feature/2026-07-28-continuable-subagent-conversations.md b/.agents/notes/implemented/feature/2026-07-28-continuable-subagent-conversations.md index 1efb18ab69..fef7aba208 100644 --- a/.agents/notes/implemented/feature/2026-07-28-continuable-subagent-conversations.md +++ b/.agents/notes/implemented/feature/2026-07-28-continuable-subagent-conversations.md @@ -4,7 +4,7 @@ Status: implemented English | [中文](2026-07-28-continuable-subagent-conversations.zh.md) -This record replaces the Task-backed continuation manager from [Continuable background subagents](../../implemented/feature/2026-07-21-continuable-background-subagents.md). It retains the single `ctx.subagents` service from [Merge subagent control into the subagent service](../../implemented/simplification/2026-07-26-merge-subagent-control-service.md) and the intent-named `followup` operation from [Intent-named subagent continuation operations](../../implemented/simplification/2026-07-27-intent-named-subagent-continuation-operations.md). +This record replaces the Task-backed continuation manager from [Continuable background subagents](../../archived/feature/2026-07-21-continuable-background-subagents.md). It retains the single `ctx.subagents` service from [Merge subagent control into the subagent service](../../archived/simplification/2026-07-26-merge-subagent-control-service.md) and the intent-named `followup` operation from [Intent-named subagent continuation operations](../../archived/simplification/2026-07-27-intent-named-subagent-continuation-operations.md). ## Problem diff --git a/.agents/notes/implemented/feature/2026-07-28-continuable-subagent-conversations.zh.md b/.agents/notes/implemented/feature/2026-07-28-continuable-subagent-conversations.zh.md index 7cb1b4a4cf..875d6ab7ea 100644 --- a/.agents/notes/implemented/feature/2026-07-28-continuable-subagent-conversations.zh.md +++ b/.agents/notes/implemented/feature/2026-07-28-continuable-subagent-conversations.zh.md @@ -4,7 +4,7 @@ Status: implemented [English](2026-07-28-continuable-subagent-conversations.md) | 中文 -本记录取代[可继续的后台 subagent](../../implemented/feature/2026-07-21-continuable-background-subagents.zh.md)中由 Task 支撑的继续执行管理器。它保留[将 subagent 控制合并到 subagent 服务](../../implemented/simplification/2026-07-26-merge-subagent-control-service.zh.md)确立的单一 `ctx.subagents` 服务,以及[以意图命名的 subagent 继续执行操作](../../implemented/simplification/2026-07-27-intent-named-subagent-continuation-operations.zh.md)确立的 `followup` 操作。 +本记录取代[可继续的后台 subagent](../../archived/feature/2026-07-21-continuable-background-subagents.md)中由 Task 支撑的继续执行管理器。它保留[将 subagent 控制合并到 subagent 服务](../../archived/simplification/2026-07-26-merge-subagent-control-service.md)确立的单一 `ctx.subagents` 服务,以及[以意图命名的 subagent 继续执行操作](../../archived/simplification/2026-07-27-intent-named-subagent-continuation-operations.md)确立的 `followup` 操作。 ## 问题 diff --git a/.agents/notes/implemented/feature/2026-07-28-feedback-command.i18n.yaml b/.agents/notes/implemented/feature/2026-07-28-feedback-command.i18n.yaml deleted file mode 100644 index 9f2b06e284..0000000000 --- a/.agents/notes/implemented/feature/2026-07-28-feedback-command.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-07-28-feedback-command.md -2026-07-28-feedback-command.md: dec169b010ebf0b109cc63844605ba26c004077b -2026-07-28-feedback-command.zh.md: 67e9c2ce561f587fa94a689089da2bc2dee8f03e diff --git a/.agents/notes/implemented/feature/2026-07-28-sdk-max-output-tokens.i18n.yaml b/.agents/notes/implemented/feature/2026-07-28-sdk-max-output-tokens.i18n.yaml deleted file mode 100644 index 476a883c5e..0000000000 --- a/.agents/notes/implemented/feature/2026-07-28-sdk-max-output-tokens.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-07-28-sdk-max-output-tokens.md -2026-07-28-sdk-max-output-tokens.md: 1d2915b7f7169b0784c648aad5900a85fac4c977 -2026-07-28-sdk-max-output-tokens.zh.md: ba59f745bc921d3cc0d5c01f83808dd495220bc7 diff --git a/.agents/notes/implemented/feature/2026-07-28-skill-invocation-policy.i18n.yaml b/.agents/notes/implemented/feature/2026-07-28-skill-invocation-policy.i18n.yaml index ea9bcff6d2..4e16712b96 100644 --- a/.agents/notes/implemented/feature/2026-07-28-skill-invocation-policy.i18n.yaml +++ b/.agents/notes/implemented/feature/2026-07-28-skill-invocation-policy.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-07-28-skill-invocation-policy.md -2026-07-28-skill-invocation-policy.md: 918283bd028ec75faee965c35dfac494e9ceafad -2026-07-28-skill-invocation-policy.zh.md: ddf3a334561d2077c07f479792228a353cb926c0 +2026-07-28-skill-invocation-policy.md: 614a0058e3887c6977cf92b4bcf7d15557215996 +2026-07-28-skill-invocation-policy.zh.md: a49cb96ea63af72d5abc41406097fcfb1b06739a diff --git a/.agents/notes/implemented/feature/2026-07-28-skill-invocation-policy.md b/.agents/notes/implemented/feature/2026-07-28-skill-invocation-policy.md index 918283bd02..614a0058e3 100644 --- a/.agents/notes/implemented/feature/2026-07-28-skill-invocation-policy.md +++ b/.agents/notes/implemented/feature/2026-07-28-skill-invocation-policy.md @@ -29,7 +29,7 @@ These rules permit all four combinations: | `{ modelInvocable: false, userInvocable: true }` | excluded | included | | `{ modelInvocable: false, userInvocable: false }` | excluded | excluded | -This decision extends the [skill system](2026-07-05-skill-system.md) and supersedes the invocation-policy limitation recorded by the [archived TUI skill slash command](../../archived/feature/2026-07-21-tui-skill-slash-command.md). +This decision extends the [skill system](../../archived/feature/2026-07-05-skill-system.md) and supersedes the invocation-policy limitation recorded by the [archived TUI skill slash command](../../archived/feature/2026-07-21-tui-skill-slash-command.md). ## Alternatives considered diff --git a/.agents/notes/implemented/feature/2026-07-28-skill-invocation-policy.zh.md b/.agents/notes/implemented/feature/2026-07-28-skill-invocation-policy.zh.md index ddf3a33456..a49cb96ea6 100644 --- a/.agents/notes/implemented/feature/2026-07-28-skill-invocation-policy.zh.md +++ b/.agents/notes/implemented/feature/2026-07-28-skill-invocation-policy.zh.md @@ -29,7 +29,7 @@ skill 注册表最初将发现操作视为模型目录:`ctx.skills.list()` 会 | `{ modelInvocable: false, userInvocable: true }` | 排除 | 包含 | | `{ modelInvocable: false, userInvocable: false }` | 排除 | 排除 | -该决策扩展了 [skill 系统](2026-07-05-skill-system.zh.md),并取代[已归档的 TUI skill 斜杠命令](../../archived/feature/2026-07-21-tui-skill-slash-command.md)中记录的调用策略限制。 +该决策扩展了 [skill 系统](../../archived/feature/2026-07-05-skill-system.md),并取代[已归档的 TUI skill 斜杠命令](../../archived/feature/2026-07-21-tui-skill-slash-command.md)中记录的调用策略限制。 ## 曾考虑的替代方案 diff --git a/.agents/notes/implemented/feature/2026-07-28-todo-plan-clears-on-next-turn.i18n.yaml b/.agents/notes/implemented/feature/2026-07-28-todo-plan-clears-on-next-turn.i18n.yaml deleted file mode 100644 index 56a7ab1fb8..0000000000 --- a/.agents/notes/implemented/feature/2026-07-28-todo-plan-clears-on-next-turn.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-07-28-todo-plan-clears-on-next-turn.md -2026-07-28-todo-plan-clears-on-next-turn.md: b8a199840c683bc1ecb79aa8c9c4ea330da5e474 -2026-07-28-todo-plan-clears-on-next-turn.zh.md: bbe6fd35b5965c19864e3d181a845993e842132d diff --git a/.agents/notes/implemented/feature/2026-07-28-tool-call-file-open-in-os.i18n.yaml b/.agents/notes/implemented/feature/2026-07-28-tool-call-file-open-in-os.i18n.yaml deleted file mode 100644 index 85a24356aa..0000000000 --- a/.agents/notes/implemented/feature/2026-07-28-tool-call-file-open-in-os.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-07-28-tool-call-file-open-in-os.md -2026-07-28-tool-call-file-open-in-os.md: 4655af04243b28284cf46c058a472ee658d9a035 -2026-07-28-tool-call-file-open-in-os.zh.md: 769aeaeaa74af54aef60521505a8ed107500fa8a diff --git a/.agents/notes/implemented/feature/2026-07-28-web-terminal-card.i18n.yaml b/.agents/notes/implemented/feature/2026-07-28-web-terminal-card.i18n.yaml deleted file mode 100644 index 6b3207b92f..0000000000 --- a/.agents/notes/implemented/feature/2026-07-28-web-terminal-card.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-07-28-web-terminal-card.md -2026-07-28-web-terminal-card.md: 2fd2b429c0424d1ae7421fe4c679c46902db62fd -2026-07-28-web-terminal-card.zh.md: 1405c03766316379ceb2c97ede153704268c35e6 diff --git a/.agents/notes/implemented/feature/2026-07-29-ask-question-web-presentation.i18n.yaml b/.agents/notes/implemented/feature/2026-07-29-ask-question-web-presentation.i18n.yaml deleted file mode 100644 index b8b98a6ecb..0000000000 --- a/.agents/notes/implemented/feature/2026-07-29-ask-question-web-presentation.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-07-29-ask-question-web-presentation.md -2026-07-29-ask-question-web-presentation.md: 280671570ca015457ab3c17241cea3e973b88fd2 -2026-07-29-ask-question-web-presentation.zh.md: 9ad687d655de19ea913ddc5255fb6426ef0fbb77 diff --git a/.agents/notes/implemented/feature/2026-07-29-directory-picker-adaptive-default.i18n.yaml b/.agents/notes/implemented/feature/2026-07-29-directory-picker-adaptive-default.i18n.yaml deleted file mode 100644 index 9fc614eed0..0000000000 --- a/.agents/notes/implemented/feature/2026-07-29-directory-picker-adaptive-default.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-07-29-directory-picker-adaptive-default.md -2026-07-29-directory-picker-adaptive-default.md: 92eb2b5ab4fb1312f03537d891b9f4afff6c7f22 -2026-07-29-directory-picker-adaptive-default.zh.md: a3d0c4b79950ef3452ac906b4a8917321cec6829 diff --git a/.agents/notes/implemented/feature/2026-07-29-persistent-bash-str-replace-editor.i18n.yaml b/.agents/notes/implemented/feature/2026-07-29-persistent-bash-str-replace-editor.i18n.yaml deleted file mode 100644 index 5a32ed9ae3..0000000000 --- a/.agents/notes/implemented/feature/2026-07-29-persistent-bash-str-replace-editor.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-07-29-persistent-bash-str-replace-editor.md -2026-07-29-persistent-bash-str-replace-editor.md: e6265ca0f8eb5430ba490b9d046a726f152a2892 -2026-07-29-persistent-bash-str-replace-editor.zh.md: 2fb8a3b3cadefd101d90c52a5ed01e8244a58f07 diff --git a/.agents/notes/implemented/feature/2026-07-30-current-sandbox-policy-context.i18n.yaml b/.agents/notes/implemented/feature/2026-07-30-current-sandbox-policy-context.i18n.yaml deleted file mode 100644 index 0f9c2e594f..0000000000 --- a/.agents/notes/implemented/feature/2026-07-30-current-sandbox-policy-context.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-07-30-current-sandbox-policy-context.md -2026-07-30-current-sandbox-policy-context.md: b4c657ba52ff26e2e295e3635201424a155738d0 -2026-07-30-current-sandbox-policy-context.zh.md: 6ded323020f5f618bb9f88d0e08829f521f34264 diff --git a/.agents/notes/implemented/feature/2026-07-30-deepseek-onboarding-credential-setup.i18n.yaml b/.agents/notes/implemented/feature/2026-07-30-deepseek-onboarding-credential-setup.i18n.yaml deleted file mode 100644 index fbddedc9e1..0000000000 --- a/.agents/notes/implemented/feature/2026-07-30-deepseek-onboarding-credential-setup.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-07-30-deepseek-onboarding-credential-setup.md -2026-07-30-deepseek-onboarding-credential-setup.md: c2e9a1251a4666d9b7109d284a1588640d630332 -2026-07-30-deepseek-onboarding-credential-setup.zh.md: e94f55949eb472d8deb524c33e9760155db0ddcf diff --git a/.agents/notes/implemented/feature/2026-07-30-plan-review-presentation-intent.i18n.yaml b/.agents/notes/implemented/feature/2026-07-30-plan-review-presentation-intent.i18n.yaml deleted file mode 100644 index e89ef8cd1a..0000000000 --- a/.agents/notes/implemented/feature/2026-07-30-plan-review-presentation-intent.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-07-30-plan-review-presentation-intent.md -2026-07-30-plan-review-presentation-intent.md: 5bbd1ffc974563589449d43a761039fb4dc84b03 -2026-07-30-plan-review-presentation-intent.zh.md: cd0b8c407523eb0a811eb76878962f932f3dcec9 diff --git a/.agents/notes/implemented/feature/2026-07-30-search-render-card.i18n.yaml b/.agents/notes/implemented/feature/2026-07-30-search-render-card.i18n.yaml deleted file mode 100644 index d9e99496fe..0000000000 --- a/.agents/notes/implemented/feature/2026-07-30-search-render-card.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-07-30-search-render-card.md -2026-07-30-search-render-card.md: 585609bd059dbd9aa8283547fa8a4b223f7bdd99 -2026-07-30-search-render-card.zh.md: 4ffaa1ae16b9b6192ff1c678e66e2b2ea717b834 diff --git a/.agents/notes/implemented/feature/2026-07-30-web-diff-card.i18n.yaml b/.agents/notes/implemented/feature/2026-07-30-web-diff-card.i18n.yaml deleted file mode 100644 index 53b8f41bb1..0000000000 --- a/.agents/notes/implemented/feature/2026-07-30-web-diff-card.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-07-30-web-diff-card.md -2026-07-30-web-diff-card.md: 8497038d6f3d4c512d3c5e44d9cb69e0b3aaaabe -2026-07-30-web-diff-card.zh.md: 40fc079f36009a444a4618982f39ad032266ec13 diff --git a/.agents/notes/implemented/feature/2026-07-30-web-queue-steer-action.i18n.yaml b/.agents/notes/implemented/feature/2026-07-30-web-queue-steer-action.i18n.yaml deleted file mode 100644 index a391387a29..0000000000 --- a/.agents/notes/implemented/feature/2026-07-30-web-queue-steer-action.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-07-30-web-queue-steer-action.md -2026-07-30-web-queue-steer-action.md: 2718c5b3cc95f1ab02db80230ba158d9b5c3b4e6 -2026-07-30-web-queue-steer-action.zh.md: 377117e2aa9c20b1c39d1fb7f450dbe729b00580 diff --git a/.agents/notes/implemented/feature/2026-07-30-web-read-card-frontend.i18n.yaml b/.agents/notes/implemented/feature/2026-07-30-web-read-card-frontend.i18n.yaml deleted file mode 100644 index 7adf65e02a..0000000000 --- a/.agents/notes/implemented/feature/2026-07-30-web-read-card-frontend.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-07-30-web-read-card-frontend.md -2026-07-30-web-read-card-frontend.md: 98e31d4192f7522f9d0e23bce56372a70f8c50b6 -2026-07-30-web-read-card-frontend.zh.md: 50e1ca8d05a38d13de15fdd6cdd713fd1758ffd4 diff --git a/.agents/notes/implemented/feature/2026-07-30-web-read-card.i18n.yaml b/.agents/notes/implemented/feature/2026-07-30-web-read-card.i18n.yaml deleted file mode 100644 index 9e12a4e70e..0000000000 --- a/.agents/notes/implemented/feature/2026-07-30-web-read-card.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-07-30-web-read-card.md -2026-07-30-web-read-card.md: 2023b93f44b343ce8482371b1168c8486fea703e -2026-07-30-web-read-card.zh.md: 426b5cc1eb6050aeb87f8dcabd372ef6c2eb557e diff --git a/.agents/notes/implemented/feature/2026-07-30-web-result-card-frontend.i18n.yaml b/.agents/notes/implemented/feature/2026-07-30-web-result-card-frontend.i18n.yaml deleted file mode 100644 index baeebf2451..0000000000 --- a/.agents/notes/implemented/feature/2026-07-30-web-result-card-frontend.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-07-30-web-result-card-frontend.md -2026-07-30-web-result-card-frontend.md: 6a00e0820af2c4010554df444a7585fb226294bf -2026-07-30-web-result-card-frontend.zh.md: 42543e2dcde181ba7fd75f4965e83adefe32d872 diff --git a/.agents/notes/implemented/feature/2026-07-30-web-result-card.i18n.yaml b/.agents/notes/implemented/feature/2026-07-30-web-result-card.i18n.yaml deleted file mode 100644 index f5724092a0..0000000000 --- a/.agents/notes/implemented/feature/2026-07-30-web-result-card.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-07-30-web-result-card.md -2026-07-30-web-result-card.md: 35ad06998136cbffcf4a049cb0c68adb97498b68 -2026-07-30-web-result-card.zh.md: 81656b5f659996d8a30ee293ccbbf562c7e6dd85 diff --git a/.agents/notes/implemented/feature/2026-07-30-web-tool-row-unified-expand-and-inspect.i18n.yaml b/.agents/notes/implemented/feature/2026-07-30-web-tool-row-unified-expand-and-inspect.i18n.yaml deleted file mode 100644 index b0f3852fa8..0000000000 --- a/.agents/notes/implemented/feature/2026-07-30-web-tool-row-unified-expand-and-inspect.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-07-30-web-tool-row-unified-expand-and-inspect.md -2026-07-30-web-tool-row-unified-expand-and-inspect.md: 4fcf1e9a567b73cd04f1bbed170c391aaedd9e73 -2026-07-30-web-tool-row-unified-expand-and-inspect.zh.md: 765cd058c99e53e5dea81f83c203a6d75d56f104 diff --git a/.agents/notes/implemented/feature/2026-07-31-browser-derived-initial-locale.i18n.yaml b/.agents/notes/implemented/feature/2026-07-31-browser-derived-initial-locale.i18n.yaml deleted file mode 100644 index 59620774ae..0000000000 --- a/.agents/notes/implemented/feature/2026-07-31-browser-derived-initial-locale.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-07-31-browser-derived-initial-locale.md -2026-07-31-browser-derived-initial-locale.md: 28b5c98d5148854cc231e70064e91b21cd5c1184 -2026-07-31-browser-derived-initial-locale.zh.md: 34741af01a737b8ab9bb4394385a9140ace8f506 diff --git a/.agents/notes/implemented/feature/2026-07-31-even-out-shipped-tool-rosters.i18n.yaml b/.agents/notes/implemented/feature/2026-07-31-even-out-shipped-tool-rosters.i18n.yaml index 2f2c4740b0..55a907edf1 100644 --- a/.agents/notes/implemented/feature/2026-07-31-even-out-shipped-tool-rosters.i18n.yaml +++ b/.agents/notes/implemented/feature/2026-07-31-even-out-shipped-tool-rosters.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-07-31-even-out-shipped-tool-rosters.md -2026-07-31-even-out-shipped-tool-rosters.md: 4e6b4b0e0ad89ce95d731dac21a8b55a24663be5 -2026-07-31-even-out-shipped-tool-rosters.zh.md: 4be6678cc2f728c6f69cbf97462089a6b45c736a +2026-07-31-even-out-shipped-tool-rosters.md: df334bc0bd9d011ea2e2f4ee938fb29c4c4bfe2c +2026-07-31-even-out-shipped-tool-rosters.zh.md: ddee380f836bf50a733541b2d3ea6dd8a74126a2 diff --git a/.agents/notes/implemented/feature/2026-07-31-even-out-shipped-tool-rosters.md b/.agents/notes/implemented/feature/2026-07-31-even-out-shipped-tool-rosters.md index 4e6b4b0e0a..df334bc0bd 100644 --- a/.agents/notes/implemented/feature/2026-07-31-even-out-shipped-tool-rosters.md +++ b/.agents/notes/implemented/feature/2026-07-31-even-out-shipped-tool-rosters.md @@ -12,11 +12,11 @@ The result was a user-visible difference nobody had decided: the same model, ask ## Decision -The rows that are not surface-specific move into [`base.cordis.yml`](../../../../packages/bundle/base/cordis.patch.yml), and three more join them: `tool-session-query`, `tool-str-replace-editor`, and `repeat-tool-reminder`. Web search moves there too; its [deployment decision](2026-07-31-web-default-search.md) owns the security boundary while the shared base owns its surface-neutral mount. Both surfaces assemble the same roster, including fixed `glob` and `grep` members because `dsh-tool-fs-search` spawns the [packaged ripgrep binary](../architecture/2026-08-01-packaged-ripgrep-search.md). Two later decisions narrow that roster: the [session-search decision](2026-08-02-session-search-not-shipped-default.md) keeps `tool-session-query` opt-in, and the [single-editor decision](../simplification/2026-08-10-default-presets-single-editor.md) keeps `tool-str-replace-editor` out of the general-purpose presets while retaining it in `minimal`. +The rows that are not surface-specific move into [`base.cordis.yml`](../../../../packages/bundle/base/cordis.patch.yml), and three more join them: `tool-session-query`, `tool-str-replace-editor`, and `repeat-tool-reminder`. Web search moves there too; its [deployment decision](2026-07-31-web-default-search.md) owns the security boundary while the shared base owns its surface-neutral mount. Both surfaces assemble the same roster, including fixed `glob` and `grep` members because `dsh-tool-fs-search` spawns the [packaged ripgrep binary](../../archived/architecture/2026-08-01-packaged-ripgrep-search.md). Two later decisions narrow that roster: the [session-search decision](../../archived/feature/2026-08-02-session-search-not-shipped-default.md) keeps `tool-session-query` opt-in, and the [single-editor decision](../../archived/simplification/2026-08-10-default-presets-single-editor.md) keeps `tool-str-replace-editor` out of the general-purpose presets while retaining it in `minimal`. Two rows stay surface-specific. `tmux-context` is TUI-only because a browser surface has no terminal multiplexer to describe. `session-reference` is TUI-only because it drives the shared session-query index from the launcher's process-local path, and the browser sidebar reconciles that index on its own first search. -**This roster decision added only at the time.** No tool row was removed from either surface when it landed, and a catalog comparison found additions and nothing else. The later session-search and single-editor decisions own their respective default-roster exceptions. The shared executors, sandbox composition, and access default are owned independently by the [workspace-write default decision](2026-07-31-workspace-write-surface-default.md). +**This roster decision added only at the time.** No tool row was removed from either surface when it landed, and a catalog comparison found additions and nothing else. The later session-search and single-editor decisions own their respective default-roster exceptions. The shared executors, sandbox composition, and access default are owned independently by the [workspace-write default decision](../../archived/feature/2026-07-31-workspace-write-surface-default.md). ### What stays unmounted, and why @@ -38,7 +38,7 @@ The layer that would make MCP a default is the one this repository does not have That tail also inserted `composition-settled.ts`, which announced settled Loader activation on the terminal stream. The TUI rendered as soon as its own fiber started, so a prompt typed at the banner could reach the loop while tool rows and persistence were still activating and assemble a partial catalog; gating the smoke's first prompt on that marker made the assertion deterministic. -The same smoke also pins the TUI execution posture from the same artifact. Those sandbox-schema and initial-permission assertions belong to the [workspace-write default decision](2026-07-31-workspace-write-surface-default.md), independently of this roster. +The same smoke also pins the TUI execution posture from the same artifact. Those sandbox-schema and initial-permission assertions belong to the [workspace-write default decision](../../archived/feature/2026-07-31-workspace-write-surface-default.md), independently of this roster. [`apps/web/tests/shipped-composition.e2e.ts`](../../../../apps/web/tests/shipped-composition.e2e.ts) covers the Web surface in the built lane, asserting its catalog, that its access default is untouched, and that `workspace-write`'s writable roots include the temp directories — a trap that makes sandbox tests lie when the workspace sits under `/tmp` ([`roots.ts`](../../../../packages/sandbox/sandbox/src/roots.ts)). @@ -58,8 +58,8 @@ Beyond the committed tests, both surfaces were driven against a real key from th ## Consequences -The same model gets the same tools on both surfaces, and the difference that existed for no recorded reason is gone. The tests assert the twenty unconditional names exactly and pin `glob` and `grep` as fixed members on both sides, so a later change that alters only one surface fails a check instead of shipping quietly; the [session-search-not-shipped-default decision](2026-08-02-session-search-not-shipped-default.md) is exactly such a later change, and both tests moved with it. +The same model gets the same tools on both surfaces, and the difference that existed for no recorded reason is gone. The tests assert the twenty unconditional names exactly and pin `glob` and `grep` as fixed members on both sides, so a later change that alters only one surface fails a check instead of shipping quietly; the [session-search-not-shipped-default decision](../../archived/feature/2026-08-02-session-search-not-shipped-default.md) is exactly such a later change, and both tests moved with it. -`apps/cli` gained five workspace dependencies: four the shipped tree mounted, plus `dsh-mcp-client`, which it does not mount and which exists so an installed `dsh` can. Four remain — the [session-search-not-shipped-default decision](2026-08-02-session-search-not-shipped-default.md) removed `@deepseek-ai/dsh-tool-session-query` along with its row. +`apps/cli` gained five workspace dependencies: four the shipped tree mounted, plus `dsh-mcp-client`, which it does not mount and which exists so an installed `dsh` can. Four remain — the [session-search-not-shipped-default decision](../../archived/feature/2026-08-02-session-search-not-shipped-default.md) removed `@deepseek-ai/dsh-tool-session-query` along with its row. -Execution policy stays independent of the roster. The [shared workspace-write decision](2026-07-31-workspace-write-surface-default.md) owns both surfaces' sandboxed executors and default permission; changing that policy does not add or remove a tool. +Execution policy stays independent of the roster. The [shared workspace-write decision](../../archived/feature/2026-07-31-workspace-write-surface-default.md) owns both surfaces' sandboxed executors and default permission; changing that policy does not add or remove a tool. diff --git a/.agents/notes/implemented/feature/2026-07-31-even-out-shipped-tool-rosters.zh.md b/.agents/notes/implemented/feature/2026-07-31-even-out-shipped-tool-rosters.zh.md index 4be6678cc2..ddee380f83 100644 --- a/.agents/notes/implemented/feature/2026-07-31-even-out-shipped-tool-rosters.zh.md +++ b/.agents/notes/implemented/feature/2026-07-31-even-out-shipped-tool-rosters.zh.md @@ -12,11 +12,11 @@ Status: implemented ## 决策 -那些并非 surface 专属的行移入 [`base.cordis.yml`](../../../../packages/bundle/base/cordis.patch.yml),另有三行加入:`tool-session-query`、`tool-str-replace-editor` 和 `repeat-tool-reminder`。Web 搜索也一并移入;其[部署决策](2026-07-31-web-default-search.zh.md)负责安全边界,共享 base 则负责与 surface 无关的挂载。两个 surface 组装同一份清单,其中 `glob` 和 `grep` 是固定成员,因为 `dsh-tool-fs-search` 直接 spawn [打包的 ripgrep 二进制](../architecture/2026-08-01-packaged-ripgrep-search.zh.md)。之后有两项决策收窄这份清单:[session-search 决策](2026-08-02-session-search-not-shipped-default.zh.md)让 `tool-session-query` 保持需显式启用,[单一编辑器决策](../simplification/2026-08-10-default-presets-single-editor.zh.md)让通用 preset 不提供 `tool-str-replace-editor`,但在 `minimal` 中保留它。 +那些并非 surface 专属的行移入 [`base.cordis.yml`](../../../../packages/bundle/base/cordis.patch.yml),另有三行加入:`tool-session-query`、`tool-str-replace-editor` 和 `repeat-tool-reminder`。Web 搜索也一并移入;其[部署决策](2026-07-31-web-default-search.zh.md)负责安全边界,共享 base 则负责与 surface 无关的挂载。两个 surface 组装同一份清单,其中 `glob` 和 `grep` 是固定成员,因为 `dsh-tool-fs-search` 直接 spawn [打包的 ripgrep 二进制](../../archived/architecture/2026-08-01-packaged-ripgrep-search.md)。之后有两项决策收窄这份清单:[session-search 决策](../../archived/feature/2026-08-02-session-search-not-shipped-default.md)让 `tool-session-query` 保持需显式启用,[单一编辑器决策](../../archived/simplification/2026-08-10-default-presets-single-editor.md)让通用 preset 不提供 `tool-str-replace-editor`,但在 `minimal` 中保留它。 有两行仍是 surface 专属。`tmux-context` 只在 TUI,因为浏览器 surface 没有终端复用器可描述。`session-reference` 只在 TUI,因为它以 launcher 的进程本地路径驱动共享的 session-query 索引,而浏览器侧边栏会在自己的首次搜索里重建该索引。 -**本次工具清单决策当时只做加法。** 落地时两个 surface 均未移除任何工具行,目录对比只发现了新增,别无其他。后续的 session-search 与单一编辑器决策分别负责对应的默认清单例外。共享执行器、沙箱组合与访问默认值独立归属[workspace-write 默认值决策](2026-07-31-workspace-write-surface-default.zh.md)。 +**本次工具清单决策当时只做加法。** 落地时两个 surface 均未移除任何工具行,目录对比只发现了新增,别无其他。后续的 session-search 与单一编辑器决策分别负责对应的默认清单例外。共享执行器、沙箱组合与访问默认值独立归属[workspace-write 默认值决策](../../archived/feature/2026-07-31-workspace-write-surface-default.md)。 ### 什么保持不挂,以及为什么 @@ -38,7 +38,7 @@ Status: implemented 该尾部还曾插入 `composition-settled.ts`,用于在终端字节流上宣告 Loader 激活已 settle。TUI 在自己的 fiber 一启动就渲染,因此在 banner 处敲下的提示词可能在工具行与持久化仍在激活时就抵达循环,从而组装出不完整的目录;把冒烟的首个提示词 gate 在该标记上,正是断言得以确定的原因。 -同一份冒烟还根据同一份产物固定 TUI 的执行姿态。那些沙箱 schema 与初始权限断言归[workspace-write 默认值决策](2026-07-31-workspace-write-surface-default.zh.md)所有,独立于本工具清单决策。 +同一份冒烟还根据同一份产物固定 TUI 的执行姿态。那些沙箱 schema 与初始权限断言归[workspace-write 默认值决策](../../archived/feature/2026-07-31-workspace-write-surface-default.md)所有,独立于本工具清单决策。 [`apps/web/tests/shipped-composition.e2e.ts`](../../../../apps/web/tests/shipped-composition.e2e.ts) 在构建产物 lane 中覆盖 Web surface,断言它的工具目录、它的访问默认值未被触碰,以及 `workspace-write` 的可写根包含临时目录——一个会让沙箱测试说谎的陷阱,当工作区落在 `/tmp` 下时([`roots.ts`](../../../../packages/sandbox/sandbox/src/roots.ts))。 @@ -58,8 +58,8 @@ Status: implemented ## 后果 -同一个模型在两个 surface 上拿到同样的工具,那处没有记录理由的差异消失了。测试会精确断言二十个无条件提供的名称,并把 `glob` 与 `grep` 作为固定成员钉在两侧,因此日后只改一个 surface 都会让检查失败而不是悄悄发出去;[session-search-not-shipped-default 决策](2026-08-02-session-search-not-shipped-default.zh.md)正是这样一次后来的改动,两个测试也随之移动。 +同一个模型在两个 surface 上拿到同样的工具,那处没有记录理由的差异消失了。测试会精确断言二十个无条件提供的名称,并把 `glob` 与 `grep` 作为固定成员钉在两侧,因此日后只改一个 surface 都会让检查失败而不是悄悄发出去;[session-search-not-shipped-default 决策](../../archived/feature/2026-08-02-session-search-not-shipped-default.md)正是这样一次后来的改动,两个测试也随之移动。 -`apps/cli` 增加了五个 workspace 依赖:四个是交付树当时挂载的,外加 `dsh-mcp-client`——它并不被挂载,存在的意义是让已安装的 `dsh` 能挂。四个保留了下来——[session-search-not-shipped-default 决策](2026-08-02-session-search-not-shipped-default.zh.md)把 `@deepseek-ai/dsh-tool-session-query` 连同它的行一起移除了。 +`apps/cli` 增加了五个 workspace 依赖:四个是交付树当时挂载的,外加 `dsh-mcp-client`——它并不被挂载,存在的意义是让已安装的 `dsh` 能挂。四个保留了下来——[session-search-not-shipped-default 决策](../../archived/feature/2026-08-02-session-search-not-shipped-default.md)把 `@deepseek-ai/dsh-tool-session-query` 连同它的行一起移除了。 -执行策略独立于工具清单。[共享 workspace-write 决策](2026-07-31-workspace-write-surface-default.zh.md)拥有两个 surface 的沙箱执行器与默认权限;更改该策略不会增加或移除工具。 +执行策略独立于工具清单。[共享 workspace-write 决策](../../archived/feature/2026-07-31-workspace-write-surface-default.md)拥有两个 surface 的沙箱执行器与默认权限;更改该策略不会增加或移除工具。 diff --git a/.agents/notes/implemented/feature/2026-07-31-gui-full-access-confirmation.i18n.yaml b/.agents/notes/implemented/feature/2026-07-31-gui-full-access-confirmation.i18n.yaml deleted file mode 100644 index c6d1115433..0000000000 --- a/.agents/notes/implemented/feature/2026-07-31-gui-full-access-confirmation.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-07-31-gui-full-access-confirmation.md -2026-07-31-gui-full-access-confirmation.md: c0ae295c312e390b47395bdd09da4317e8ff6c81 -2026-07-31-gui-full-access-confirmation.zh.md: 1679fc5060a5f175e61383d31d76652556227de4 diff --git a/.agents/notes/implemented/feature/2026-07-31-permission-default-for-new-sessions.i18n.yaml b/.agents/notes/implemented/feature/2026-07-31-permission-default-for-new-sessions.i18n.yaml deleted file mode 100644 index a689db1a59..0000000000 --- a/.agents/notes/implemented/feature/2026-07-31-permission-default-for-new-sessions.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-07-31-permission-default-for-new-sessions.md -2026-07-31-permission-default-for-new-sessions.md: 5f62effa8d724b9ffac0e8db0b329c0c947da966 -2026-07-31-permission-default-for-new-sessions.zh.md: f8810d9ff55cd6f15c0a587c2ab331b3fb41fb5e diff --git a/.agents/notes/implemented/feature/2026-07-31-ptc-language-dispatch.i18n.yaml b/.agents/notes/implemented/feature/2026-07-31-ptc-language-dispatch.i18n.yaml deleted file mode 100644 index b583e43bfc..0000000000 --- a/.agents/notes/implemented/feature/2026-07-31-ptc-language-dispatch.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-07-31-ptc-language-dispatch.md -2026-07-31-ptc-language-dispatch.md: c23e7b7ee1ebd85c98a92621721fca22eef48d63 -2026-07-31-ptc-language-dispatch.zh.md: 2b0110631761744a5067e541b4baf2a7d50a4d21 diff --git a/.agents/notes/implemented/feature/2026-07-31-session-archive-global-set.i18n.yaml b/.agents/notes/implemented/feature/2026-07-31-session-archive-global-set.i18n.yaml deleted file mode 100644 index 36347151cd..0000000000 --- a/.agents/notes/implemented/feature/2026-07-31-session-archive-global-set.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-07-31-session-archive-global-set.md -2026-07-31-session-archive-global-set.md: 6117b9f7df78d6133c8daf4fe3838f752eb48a24 -2026-07-31-session-archive-global-set.zh.md: bb57cbb8b97e4c94a3a7505bca643520d04360f1 diff --git a/.agents/notes/implemented/feature/2026-07-31-telemetry-anonymous-user-id.i18n.yaml b/.agents/notes/implemented/feature/2026-07-31-telemetry-anonymous-user-id.i18n.yaml deleted file mode 100644 index 3d71f845dd..0000000000 --- a/.agents/notes/implemented/feature/2026-07-31-telemetry-anonymous-user-id.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-07-31-telemetry-anonymous-user-id.md -2026-07-31-telemetry-anonymous-user-id.md: 1fb65b4c58c20dde045e5581e93de8983547e19f -2026-07-31-telemetry-anonymous-user-id.zh.md: a7d90b382f585d8e2515c6c3283a6da67c17e6e5 diff --git a/.agents/notes/implemented/feature/2026-07-31-third-party-memory-mcp-examples.i18n.yaml b/.agents/notes/implemented/feature/2026-07-31-third-party-memory-mcp-examples.i18n.yaml deleted file mode 100644 index f6c5643c6f..0000000000 --- a/.agents/notes/implemented/feature/2026-07-31-third-party-memory-mcp-examples.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-07-31-third-party-memory-mcp-examples.md -2026-07-31-third-party-memory-mcp-examples.md: 49cf6b5a3e31381fe2a62175692290ce593bc088 -2026-07-31-third-party-memory-mcp-examples.zh.md: eab7a7b9e9939c8319e253e9f2f19f4f83c0f7fb diff --git a/.agents/notes/implemented/feature/2026-07-31-web-default-search.i18n.yaml b/.agents/notes/implemented/feature/2026-07-31-web-default-search.i18n.yaml index 70c7102ed5..ce197d5093 100644 --- a/.agents/notes/implemented/feature/2026-07-31-web-default-search.i18n.yaml +++ b/.agents/notes/implemented/feature/2026-07-31-web-default-search.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-07-31-web-default-search.md -2026-07-31-web-default-search.md: f196bfcd0c42bcfd6aacaac46971b4b9948732d7 -2026-07-31-web-default-search.zh.md: cd313c714acc22ca470ece681624bae19c1e8b4f +2026-07-31-web-default-search.md: fed162cf2552e0209599634a7f215c48c1943339 +2026-07-31-web-default-search.zh.md: 3f39ef7d9f3adbc1c43a327faac78b21a08654de diff --git a/.agents/notes/implemented/feature/2026-07-31-web-default-search.md b/.agents/notes/implemented/feature/2026-07-31-web-default-search.md index f196bfcd0c..fed162cf25 100644 --- a/.agents/notes/implemented/feature/2026-07-31-web-default-search.md +++ b/.agents/notes/implemented/feature/2026-07-31-web-default-search.md @@ -4,7 +4,7 @@ Status: implemented English | [中文](2026-07-31-web-default-search.zh.md) -The [shared-base Web fetch default](2026-09-01-shared-base-web-fetch-default.md) supersedes this record's fetch opt-in decision. This record remains authoritative for the default search provider, credential resolution, endpoint, timeout, and the separation between provider availability and model-tool registration. +The [shared-base Web fetch default](../../archived/feature/2026-09-01-shared-base-web-fetch-default.md) supersedes this record's fetch opt-in decision. This record remains authoritative for the default search provider, credential resolution, endpoint, timeout, and the separation between provider availability and model-tool registration. ## Problem @@ -12,7 +12,7 @@ The harness had a complete Web capability family—provider registry, DeepSeek/E ## Decision -`packages/bundle/base/cordis.patch.yml` explicitly mounts `dsh-web` with `searchProvider: deepseek-official` and `fetchProvider: http`, `dsh-web-search-deepseek`, `dsh-web-fetch-http`, and `dsh-tool-web` with `searchTimeoutMs: 60000`. The [shared-base Web fetch default](2026-09-01-shared-base-web-fetch-default.md) owns the current `fetch: true`; this record continues to own provider selection, search credentials, and timeout. Explicit provider ids keep selection independent of registration order and leave personal or `--patch` overlays able to replace or disable the rows. The one-minute shipped budget covers an auxiliary DeepSeek Messages request plus server-side retrieval while leaving `dsh-tool-web`'s provider-neutral 30-second default unchanged for custom compositions. The [Web capability seam decision](../architecture/2026-06-24-web-capability-seam.md) owns the public-fetch security policy. +`packages/bundle/base/cordis.patch.yml` explicitly mounts `dsh-web` with `searchProvider: deepseek-official` and `fetchProvider: http`, `dsh-web-search-deepseek`, `dsh-web-fetch-http`, and `dsh-tool-web` with `searchTimeoutMs: 60000`. The [shared-base Web fetch default](../../archived/feature/2026-09-01-shared-base-web-fetch-default.md) owns the current `fetch: true`; this record continues to own provider selection, search credentials, and timeout. Explicit provider ids keep selection independent of registration order and leave personal or `--patch` overlays able to replace or disable the rows. The one-minute shipped budget covers an auxiliary DeepSeek Messages request plus server-side retrieval while leaving `dsh-tool-web`'s provider-neutral 30-second default unchanged for custom compositions. The [Web capability seam decision](../architecture/2026-06-24-web-capability-seam.md) owns the public-fetch security policy. DeepSeek search uses the same `DEEPSEEK_API_KEY` credential reference as the official conversation adapter. The provider resolves that reference inside every search through the optional `ctx.credentials` service; only a composition without the seam falls back to the launching process environment, and a non-empty literal `apiKey` remains the programmatic last resort. A stored or rotated Web Models key therefore reaches the next search without restarting or retaining the value on the provider. Because `WebSearchProvider.available()` is synchronous, it treats an installed resolver as locally usable and missing dynamic credentials fail the operation with the provider-specific `WEB_PROVIDER_CREDENTIAL_MISSING` code while the stable tool schema stays registered. @@ -32,7 +32,7 @@ The default mount does not create a Web-specific permission policy. `web_search` **Raise `dsh-tool-web`'s provider-neutral timeout.** Rejected because custom providers and deployments own different latency expectations; the shipped DeepSeek composition owns this deployment budget. -**Enable fetch on every shared-base surface.** This record rejected the alternative because shared-base products could require different network policies. The [shared-base Web fetch default](2026-09-01-shared-base-web-fetch-default.md) supersedes that rejection after the shipped products converged on one full tool roster; its public-destination and no-approval constraints remain current. +**Enable fetch on every shared-base surface.** This record rejected the alternative because shared-base products could require different network policies. The [shared-base Web fetch default](../../archived/feature/2026-09-01-shared-base-web-fetch-default.md) supersedes that rejection after the shipped products converged on one full tool roster; its public-destination and no-approval constraints remain current. ## Consequences diff --git a/.agents/notes/implemented/feature/2026-07-31-web-default-search.zh.md b/.agents/notes/implemented/feature/2026-07-31-web-default-search.zh.md index cd313c714a..3f39ef7d9f 100644 --- a/.agents/notes/implemented/feature/2026-07-31-web-default-search.zh.md +++ b/.agents/notes/implemented/feature/2026-07-31-web-default-search.zh.md @@ -4,7 +4,7 @@ Status: implemented [English](2026-07-31-web-default-search.md) | 中文 -[共享 base 的 Web 抓取默认值](2026-09-01-shared-base-web-fetch-default.zh.md)取代本文关于抓取按需启用的决策。本文继续负责默认搜索提供方、凭据解析、端点、超时,以及提供方可用性与模型工具注册之间的区分。 +[共享 base 的 Web 抓取默认值](../../archived/feature/2026-09-01-shared-base-web-fetch-default.md)取代本文关于抓取按需启用的决策。本文继续负责默认搜索提供方、凭据解析、端点、超时,以及提供方可用性与模型工具注册之间的区分。 ## 问题 @@ -12,7 +12,7 @@ Status: implemented ## 决策 -`packages/bundle/base/cordis.patch.yml` 明确挂载 `dsh-web`,配置 `searchProvider: deepseek-official` 与 `fetchProvider: http`,同时挂载 `dsh-web-search-deepseek`、`dsh-web-fetch-http`,并以 `searchTimeoutMs: 60000` 挂载 `dsh-tool-web`。[共享 base 的 Web 抓取默认值](2026-09-01-shared-base-web-fetch-default.zh.md)负责当前的 `fetch: true`;本文继续负责提供方选择、搜索凭据与超时。显式提供方 id 使选择不受注册顺序影响,同时个人覆盖层或 `--patch` 覆盖层仍可替换或禁用这些配置项。已交付的一分钟预算用于覆盖一次辅助 DeepSeek Messages 请求及服务端检索,同时保持 `dsh-tool-web` 提供方无关的 30 秒默认值不变,以供自定义组合使用。[Web 能力 seam 决策](../architecture/2026-06-24-web-capability-seam.zh.md)负责公开抓取安全策略。 +`packages/bundle/base/cordis.patch.yml` 明确挂载 `dsh-web`,配置 `searchProvider: deepseek-official` 与 `fetchProvider: http`,同时挂载 `dsh-web-search-deepseek`、`dsh-web-fetch-http`,并以 `searchTimeoutMs: 60000` 挂载 `dsh-tool-web`。[共享 base 的 Web 抓取默认值](../../archived/feature/2026-09-01-shared-base-web-fetch-default.md)负责当前的 `fetch: true`;本文继续负责提供方选择、搜索凭据与超时。显式提供方 id 使选择不受注册顺序影响,同时个人覆盖层或 `--patch` 覆盖层仍可替换或禁用这些配置项。已交付的一分钟预算用于覆盖一次辅助 DeepSeek Messages 请求及服务端检索,同时保持 `dsh-tool-web` 提供方无关的 30 秒默认值不变,以供自定义组合使用。[Web 能力 seam 决策](../architecture/2026-06-24-web-capability-seam.zh.md)负责公开抓取安全策略。 DeepSeek 搜索使用与官方会话适配器相同的 `DEEPSEEK_API_KEY` 凭据引用。提供方在每次搜索内部通过可选的 `ctx.credentials` 服务解析该引用;只有未挂载该 seam 的组合才会回退到启动进程的环境变量,非空的 `apiKey` 字面值仍作为程序化配置的最后兜底。因此,由 Web 的 Models 页存储或轮换的密钥无需重启即可用于下一次搜索,提供方也无需保留该值。由于 `WebSearchProvider.available()` 是同步方法,它会将已安装解析器视为本地可用;若动态凭据缺失,操作会以提供方专属错误码 `WEB_PROVIDER_CREDENTIAL_MISSING` 失败,而稳定的工具 schema 仍保持注册。 @@ -32,7 +32,7 @@ DeepSeek 搜索使用与官方会话适配器相同的 `DEEPSEEK_API_KEY` 凭据 **提高 `dsh-tool-web` 的提供方无关超时。** 不予采纳:自定义提供方和部署有各自不同的延迟预期;这一部署预算应归已交付的 DeepSeek 组合所有。 -**在每个共享 base surface 上启用抓取。** 本文曾因各产品可能需要不同网络策略而否决该方案。已交付产品采用同一个完整工具集合后,[共享 base 的 Web 抓取默认值](2026-09-01-shared-base-web-fetch-default.zh.md)取代了该否决;仅限公开目的地址与无需逐次审批的约束仍然有效。 +**在每个共享 base surface 上启用抓取。** 本文曾因各产品可能需要不同网络策略而否决该方案。已交付产品采用同一个完整工具集合后,[共享 base 的 Web 抓取默认值](../../archived/feature/2026-09-01-shared-base-web-fetch-default.md)取代了该否决;仅限公开目的地址与无需逐次审批的约束仍然有效。 ## 后果 diff --git a/.agents/notes/implemented/feature/2026-07-31-web-workspace-file-links.i18n.yaml b/.agents/notes/implemented/feature/2026-07-31-web-workspace-file-links.i18n.yaml index e8023fd069..46a62de31a 100644 --- a/.agents/notes/implemented/feature/2026-07-31-web-workspace-file-links.i18n.yaml +++ b/.agents/notes/implemented/feature/2026-07-31-web-workspace-file-links.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-07-31-web-workspace-file-links.md -2026-07-31-web-workspace-file-links.md: 944d7bef9b83eb34895c5f74e511600a713d786b -2026-07-31-web-workspace-file-links.zh.md: 71f0051204e0cb8b65995fc88a9edb230db8f5be +2026-07-31-web-workspace-file-links.md: 87e8829b52f36ab9eb12149ff28775931a5ded1b +2026-07-31-web-workspace-file-links.zh.md: 36b31c1224d3e51d5ed18b071495b2389f1bface diff --git a/.agents/notes/implemented/feature/2026-07-31-web-workspace-file-links.md b/.agents/notes/implemented/feature/2026-07-31-web-workspace-file-links.md index 944d7bef9b..87e8829b52 100644 --- a/.agents/notes/implemented/feature/2026-07-31-web-workspace-file-links.md +++ b/.agents/notes/implemented/feature/2026-07-31-web-workspace-file-links.md @@ -14,7 +14,7 @@ Two distinct defects sat behind that. The transcript never said what a turn had ## Decision -**A finished turn ends with the files it produced.** The row is its own plugin, `@deepseek-ai/dsh-client-ui-deliverables`, registered into the `conversation.chat.turnTail` hole the chat view renders between a closing message's body and its IconActions — ui-conversation owns the hole and the owner currency (nodes, closing seq, `openFile`), the plugin owns every policy. `producedForClosing` reads the paths off the mutation tools' own follow-along `locations` — a diff card, or a generic card whose `kind` is `edit` (the shape `str_replace_editor`'s insert presents) — so a turn's output is listed whether or not the closing message named it, and a new mutation tool joins by declaring what it does rather than by being added to a list. Reads, deletes, and failed calls contribute nothing; a path appears once per turn in first-seen order; accumulation resets on the turn boundary, so a turn that mutates and then ends without content text cannot spill into the next turn's row. CSS container-width bands select a prefix of up to six paths and its matching `+ N files` label, while flexbox shrinks and ellipsizes the visible basenames; the component performs no JavaScript layout observation ([decision](../simplification/2026-09-01-css-produced-file-layout.md)). One cordis.yml line composes the surface in or out; the unregistered hole renders nothing. +**A finished turn ends with the files it produced.** The row is its own plugin, `@deepseek-ai/dsh-client-ui-deliverables`, registered into the `conversation.chat.turnTail` hole the chat view renders between a closing message's body and its IconActions — ui-conversation owns the hole and the owner currency (nodes, closing seq, `openFile`), the plugin owns every policy. `producedForClosing` reads the paths off the mutation tools' own follow-along `locations` — a diff card, or a generic card whose `kind` is `edit` (the shape `str_replace_editor`'s insert presents) — so a turn's output is listed whether or not the closing message named it, and a new mutation tool joins by declaring what it does rather than by being added to a list. Reads, deletes, and failed calls contribute nothing; a path appears once per turn in first-seen order; accumulation resets on the turn boundary, so a turn that mutates and then ends without content text cannot spill into the next turn's row. CSS container-width bands select a prefix of up to six paths and its matching `+ N files` label, while flexbox shrinks and ellipsizes the visible basenames; the component performs no JavaScript layout observation ([decision](../../archived/simplification/2026-09-01-css-produced-file-layout.md)). One cordis.yml line composes the surface in or out; the unregistered hole renders nothing. **The path link reads as a link.** Underlined at rest, not only on hover. This is the smaller half of the diff and the larger half of the fix. diff --git a/.agents/notes/implemented/feature/2026-07-31-web-workspace-file-links.zh.md b/.agents/notes/implemented/feature/2026-07-31-web-workspace-file-links.zh.md index 71f0051204..36b31c1224 100644 --- a/.agents/notes/implemented/feature/2026-07-31-web-workspace-file-links.zh.md +++ b/.agents/notes/implemented/feature/2026-07-31-web-workspace-file-links.zh.md @@ -14,7 +14,7 @@ Status: implemented ## 决策 -**完成的一轮以它产出的文件收尾。** 该行是独立插件 `@deepseek-ai/dsh-client-ui-deliverables`,注册进 chat 视图在收尾消息正文与其 IconActions 之间渲染的 `conversation.chat.turnTail` 空位——ui-conversation 拥有空位与 owner 通货(节点、收尾 seq、`openFile`),插件拥有全部策略。`producedForClosing` 从改写工具自身的跟随文件 `locations` 中读出路径——diff 卡片,或 `kind` 为 `edit` 的 generic 卡片(即 `str_replace_editor` 的 insert 所呈现的形状)——因此无论收尾消息是否点名,这一轮的产出都会被列出;新的改写工具靠声明自己做了什么加入,而不是靠被加进某张名单。read、删除与失败的调用不贡献任何条目;同一路径在一轮内按首见顺序只出现一次;累积在 turn 边界重置,因此一轮若先改写文件、随后没有正文内容就结束,不会溢进下一轮的行里。CSS 容器宽度档位会选择前六条路径中的一个前缀及其匹配的 `+ N 个文件` 标签,flexbox 则收缩可见的 basename 并用 ellipsis 省略;组件不执行 JavaScript 布局观察([决策](../simplification/2026-09-01-css-produced-file-layout.zh.md))。cordis.yml 中的一行即可把该交互面组合进来或去掉;未注册的空位什么也不渲染。 +**完成的一轮以它产出的文件收尾。** 该行是独立插件 `@deepseek-ai/dsh-client-ui-deliverables`,注册进 chat 视图在收尾消息正文与其 IconActions 之间渲染的 `conversation.chat.turnTail` 空位——ui-conversation 拥有空位与 owner 通货(节点、收尾 seq、`openFile`),插件拥有全部策略。`producedForClosing` 从改写工具自身的跟随文件 `locations` 中读出路径——diff 卡片,或 `kind` 为 `edit` 的 generic 卡片(即 `str_replace_editor` 的 insert 所呈现的形状)——因此无论收尾消息是否点名,这一轮的产出都会被列出;新的改写工具靠声明自己做了什么加入,而不是靠被加进某张名单。read、删除与失败的调用不贡献任何条目;同一路径在一轮内按首见顺序只出现一次;累积在 turn 边界重置,因此一轮若先改写文件、随后没有正文内容就结束,不会溢进下一轮的行里。CSS 容器宽度档位会选择前六条路径中的一个前缀及其匹配的 `+ N 个文件` 标签,flexbox 则收缩可见的 basename 并用 ellipsis 省略;组件不执行 JavaScript 布局观察([决策](../../archived/simplification/2026-09-01-css-produced-file-layout.md))。cordis.yml 中的一行即可把该交互面组合进来或去掉;未注册的空位什么也不渲染。 **路径链接读得出是链接。** 静止状态下就带下划线,而不只在悬停时。这是本次改动中更小的那一半,却是修复中更大的那一半。 diff --git a/.agents/notes/implemented/feature/2026-07-31-workspace-write-surface-default.i18n.yaml b/.agents/notes/implemented/feature/2026-07-31-workspace-write-surface-default.i18n.yaml deleted file mode 100644 index 1ba8316340..0000000000 --- a/.agents/notes/implemented/feature/2026-07-31-workspace-write-surface-default.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-07-31-workspace-write-surface-default.md -2026-07-31-workspace-write-surface-default.md: 2ce4d7b45ad7058768f412302eb86ac332cabfe9 -2026-07-31-workspace-write-surface-default.zh.md: 40b97812eb17b5c11e422ff23cd718576c9c4364 diff --git a/.agents/notes/implemented/feature/2026-08-01-goal-command-input-projection.i18n.yaml b/.agents/notes/implemented/feature/2026-08-01-goal-command-input-projection.i18n.yaml deleted file mode 100644 index d40fbd1884..0000000000 --- a/.agents/notes/implemented/feature/2026-08-01-goal-command-input-projection.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-08-01-goal-command-input-projection.md -2026-08-01-goal-command-input-projection.md: 02836de7ea2d79122d7650d1b37406802ee1489f -2026-08-01-goal-command-input-projection.zh.md: 8c28ba1c90be5942aa526fb9d8d2d8b1f014742e diff --git a/.agents/notes/implemented/feature/2026-08-01-pwsh-tool-and-executor.i18n.yaml b/.agents/notes/implemented/feature/2026-08-01-pwsh-tool-and-executor.i18n.yaml deleted file mode 100644 index 8395951886..0000000000 --- a/.agents/notes/implemented/feature/2026-08-01-pwsh-tool-and-executor.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-08-01-pwsh-tool-and-executor.md -2026-08-01-pwsh-tool-and-executor.md: 2b7265f9d323b2803079264950a020408b832ab2 -2026-08-01-pwsh-tool-and-executor.zh.md: 21ab2d326156ba8c06ab1a34a896f4e63d9a7be5 diff --git a/.agents/notes/implemented/feature/2026-08-01-windows-pwsh-default.i18n.yaml b/.agents/notes/implemented/feature/2026-08-01-windows-pwsh-default.i18n.yaml deleted file mode 100644 index befc1ce026..0000000000 --- a/.agents/notes/implemented/feature/2026-08-01-windows-pwsh-default.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-08-01-windows-pwsh-default.md -2026-08-01-windows-pwsh-default.md: e4be14ad162e27e7860bf67d82d8045343db8f4e -2026-08-01-windows-pwsh-default.zh.md: f952c56fb28ee1c486f84ba841c92d2bba3e8470 diff --git a/.agents/notes/implemented/feature/2026-08-02-pwsh-tool-bash-parity.i18n.yaml b/.agents/notes/implemented/feature/2026-08-02-pwsh-tool-bash-parity.i18n.yaml index ee12783b03..66983526a5 100644 --- a/.agents/notes/implemented/feature/2026-08-02-pwsh-tool-bash-parity.i18n.yaml +++ b/.agents/notes/implemented/feature/2026-08-02-pwsh-tool-bash-parity.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-08-02-pwsh-tool-bash-parity.md -2026-08-02-pwsh-tool-bash-parity.md: 67107e90d5aa509f76468d5ddde9d36d4aabaa6c -2026-08-02-pwsh-tool-bash-parity.zh.md: 3857f4fffc7ba389e17c85903d2462032add8805 +2026-08-02-pwsh-tool-bash-parity.md: cc2e7797c07ee8fd8c876cb30f9154a8ee2903c3 +2026-08-02-pwsh-tool-bash-parity.zh.md: b7949f1a5145fb6dac06bc47eeee488497b169d6 diff --git a/.agents/notes/implemented/feature/2026-08-02-pwsh-tool-bash-parity.md b/.agents/notes/implemented/feature/2026-08-02-pwsh-tool-bash-parity.md index 67107e90d5..cc2e7797c0 100644 --- a/.agents/notes/implemented/feature/2026-08-02-pwsh-tool-bash-parity.md +++ b/.agents/notes/implemented/feature/2026-08-02-pwsh-tool-bash-parity.md @@ -16,7 +16,7 @@ The first Windows-native foundation shipped `dsh-tool-pwsh` as a deliberately mi - **`run_in_background` is wired through the generic job runtime** exactly like the bash tool: preflight, owner registration, `job_output`/`job_kill` control, and the same outcome mapping. `pwsh-local`'s already-mirrored `start()` handle backs it. - **The `DSH_*` environment is shared, not duplicated**: `ShellEnvRegistry` moved out of `dsh-tool-bash` into a new tool-independent `@deepseek-ai/dsh-shell-env` package (`ctx.shellEnv` + built-ins + the session-persistence contributor), and both shell tools inject it. Contributors apply to pwsh calls exactly as they do to bash calls; shared environment ownership therefore sits outside either model-facing shell tool. - **Windows reality is pinned where bash has no analog**: every command runs under a UTF-8 output preamble so the Windows PowerShell 5.1 fallback cannot garble non-ASCII output through the UTF-8-decoding collector, and the prompts teach that Windows forced termination settles as exit 1 without a signal marker. -- **Out of scope, unchanged**: persistent PTY shells (backends are Linux/macOS-only; ConPTY is roadmap work). Sandbox escalation shipped later with the [Windows ACL sandbox decision](2026-08-08-windows-acl-restricted-token-sandbox.md) — the pwsh tool now carries the sandbox denial rendering and the same-turn `sandbox_permissions` escalation surface, plus the Windows ConstrainedLanguage contract in its description. The pwsh-specific terminal card with an exit pill shipped separately in the [pwsh UI presentation matches bash](2026-08-05-pwsh-ui-bash-parity.md) decision. +- **Out of scope, unchanged**: persistent PTY shells (backends are Linux/macOS-only; ConPTY is roadmap work). Sandbox escalation shipped later with the [Windows ACL sandbox decision](2026-08-08-windows-acl-restricted-token-sandbox.md) — the pwsh tool now carries the sandbox denial rendering and the same-turn `sandbox_permissions` escalation surface, plus the Windows ConstrainedLanguage contract in its description. The pwsh-specific terminal card with an exit pill shipped separately in the [pwsh UI presentation matches bash](../../archived/feature/2026-08-05-pwsh-ui-bash-parity.md) decision. ## Alternatives considered @@ -33,4 +33,4 @@ The first Windows-native foundation shipped `dsh-tool-pwsh` as a deliberately mi - `@deepseek-ai/dsh-shell-env` is a new shipped package; `dsh-tool-bash`'s `dshHome` config moved there, so compositions mounting the shell tools must also mount `shell-env` (the spine bundles do). - Windows-only semantics (CRLF normalization, forced-termination exit-1/signal-null, POSIX-only self-signal) remain pinned by tests as before. - The pwsh tool's per-file coverage gate rides on the scriptable fake-executor suite (`tests/tools.spec.ts`); the real-pwsh integration and Loader-composition suites self-skip where `pwsh` is absent, mirroring the bash suites' division of labor. -- The roadmap proposal's parity stage is delivered; the terminal-card presentation stage shipped in the [pwsh UI presentation matches bash](2026-08-05-pwsh-ui-bash-parity.md) decision (the TUI itself was removed), leaving the Windows default composition as the remaining stage. +- The roadmap proposal's parity stage is delivered; the terminal-card presentation stage shipped in the [pwsh UI presentation matches bash](../../archived/feature/2026-08-05-pwsh-ui-bash-parity.md) decision (the TUI itself was removed), leaving the Windows default composition as the remaining stage. diff --git a/.agents/notes/implemented/feature/2026-08-02-pwsh-tool-bash-parity.zh.md b/.agents/notes/implemented/feature/2026-08-02-pwsh-tool-bash-parity.zh.md index 3857f4fffc..b7949f1a51 100644 --- a/.agents/notes/implemented/feature/2026-08-02-pwsh-tool-bash-parity.zh.md +++ b/.agents/notes/implemented/feature/2026-08-02-pwsh-tool-bash-parity.zh.md @@ -16,7 +16,7 @@ Status: implemented - **`run_in_background` 经通用任务运行时接线**,与 bash 工具完全一致:预检、owner 注册、`job_output`/`job_kill` 控制与相同的结果映射。其背后是 `pwsh-local` 早已镜像好的 `start()` 句柄。 - **`DSH_*` 环境共享而非复制**:`ShellEnvRegistry` 从 `dsh-tool-bash` 迁入新的工具无关包 `@deepseek-ai/dsh-shell-env`(`ctx.shellEnv` + 内置事实 + 会话持久化贡献方),两个 shell 工具都注入它。contributor 对 pwsh 调用与 bash 调用一视同仁;因此,共享环境的所有权不属于任何一个面向模型的 shell 工具。 - **Windows 现实在 bash 无对应处钉死**:每条命令都在 UTF-8 输出前置代码下运行,使 Windows PowerShell 5.1 兜底无法经 UTF-8 解码的 collector 破坏非 ASCII 输出;提示词说明 Windows 强制终止以 exit 1 结算,不产生 signal marker。 -- **范围外,不变**:持久 PTY shell(后端仅限 Linux/macOS;ConPTY 属路线图)。沙箱升级随 [Windows ACL 沙箱决策](2026-08-08-windows-acl-restricted-token-sandbox.zh.md) 稍后交付——pwsh 工具现在携带沙箱拒绝渲染与同轮次 `sandbox_permissions` 升级面,外加其描述中的 Windows ConstrainedLanguage 约定。带退出 pill 的 pwsh 专属 terminal 卡已随 [pwsh UI 呈现与 bash 对齐](2026-08-05-pwsh-ui-bash-parity.zh.md) 决策另行交付。 +- **范围外,不变**:持久 PTY shell(后端仅限 Linux/macOS;ConPTY 属路线图)。沙箱升级随 [Windows ACL 沙箱决策](2026-08-08-windows-acl-restricted-token-sandbox.zh.md) 稍后交付——pwsh 工具现在携带沙箱拒绝渲染与同轮次 `sandbox_permissions` 升级面,外加其描述中的 Windows ConstrainedLanguage 约定。带退出 pill 的 pwsh 专属 terminal 卡已随 [pwsh UI 呈现与 bash 对齐](../../archived/feature/2026-08-05-pwsh-ui-bash-parity.md) 决策另行交付。 ## 备选方案 @@ -33,4 +33,4 @@ Status: implemented - `@deepseek-ai/dsh-shell-env` 成为新的交付包;`dsh-tool-bash` 的 `dshHome` 配置迁往那里,因此挂载 shell 工具的组合也必须挂载 `shell-env`(主干组合包已如此)。 - Windows 专属语义(CRLF 归一化、强制终止 exit-1/signal-null、仅 POSIX 的自信号)一如既往由测试钉住。 - pwsh 工具的逐文件覆盖率门禁由可脚本化的 fake 执行器套件(`tests/tools.spec.ts`)承担;真实 pwsh 的集成与 Loader 组合套件在无 `pwsh` 的宿主自跳过,与 bash 套件的分工一致。 -- 路线图提案的 parity 阶段已交付;terminal 卡呈现阶段随 [pwsh UI 呈现与 bash 对齐](2026-08-05-pwsh-ui-bash-parity.zh.md) 决策交付(TUI 本身已移除),剩余阶段是 Windows 默认组合。 +- 路线图提案的 parity 阶段已交付;terminal 卡呈现阶段随 [pwsh UI 呈现与 bash 对齐](../../archived/feature/2026-08-05-pwsh-ui-bash-parity.md) 决策交付(TUI 本身已移除),剩余阶段是 Windows 默认组合。 diff --git a/.agents/notes/implemented/feature/2026-08-02-session-search-not-shipped-default.i18n.yaml b/.agents/notes/implemented/feature/2026-08-02-session-search-not-shipped-default.i18n.yaml deleted file mode 100644 index faddaab181..0000000000 --- a/.agents/notes/implemented/feature/2026-08-02-session-search-not-shipped-default.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-08-02-session-search-not-shipped-default.md -2026-08-02-session-search-not-shipped-default.md: 6a324f190fd90afcdcd125b9c28c0d6af37da42c -2026-08-02-session-search-not-shipped-default.zh.md: 6ecfb22c96a64296ac1004aefae70469a997713c diff --git a/.agents/notes/implemented/feature/2026-08-02-web-thinking-tail-scroll.i18n.yaml b/.agents/notes/implemented/feature/2026-08-02-web-thinking-tail-scroll.i18n.yaml deleted file mode 100644 index a2350fdb84..0000000000 --- a/.agents/notes/implemented/feature/2026-08-02-web-thinking-tail-scroll.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-08-02-web-thinking-tail-scroll.md -2026-08-02-web-thinking-tail-scroll.md: 38c27274b2c85974044c2bb467c1519e19bfd148 -2026-08-02-web-thinking-tail-scroll.zh.md: 942d8aa1365055ce5b038b9bf962d3751e32d3c6 diff --git a/.agents/notes/implemented/feature/2026-08-02-win32-in-process-folder-dialog.i18n.yaml b/.agents/notes/implemented/feature/2026-08-02-win32-in-process-folder-dialog.i18n.yaml deleted file mode 100644 index 94d100bf69..0000000000 --- a/.agents/notes/implemented/feature/2026-08-02-win32-in-process-folder-dialog.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-08-02-win32-in-process-folder-dialog.md -2026-08-02-win32-in-process-folder-dialog.md: 52eab80499de9556cc0a395ac17f0f307e52131f -2026-08-02-win32-in-process-folder-dialog.zh.md: af45bc18d60a0165d6cc8d7a2b253289a91bdbac diff --git a/.agents/notes/implemented/feature/2026-08-03-fs-tool-error-remedy.i18n.yaml b/.agents/notes/implemented/feature/2026-08-03-fs-tool-error-remedy.i18n.yaml deleted file mode 100644 index 675822cf97..0000000000 --- a/.agents/notes/implemented/feature/2026-08-03-fs-tool-error-remedy.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-08-03-fs-tool-error-remedy.md -2026-08-03-fs-tool-error-remedy.md: ae72e04b5b662cba79fe52538ff190a25f74eceb -2026-08-03-fs-tool-error-remedy.zh.md: 3c65ca06583c47c93081d74606f489c4bcdc81f2 diff --git a/.agents/notes/implemented/feature/2026-08-03-web-search-source-scroll.i18n.yaml b/.agents/notes/implemented/feature/2026-08-03-web-search-source-scroll.i18n.yaml deleted file mode 100644 index 24a50b382d..0000000000 --- a/.agents/notes/implemented/feature/2026-08-03-web-search-source-scroll.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-08-03-web-search-source-scroll.md -2026-08-03-web-search-source-scroll.md: 0609f45a198c5c9a35c2e2dd1f2ac8c3aaba7ccc -2026-08-03-web-search-source-scroll.zh.md: 1649598dfc9198bdbbd36b82df6a4606af4c3e4d diff --git a/.agents/notes/implemented/feature/2026-08-03-web-turn-run-time.i18n.yaml b/.agents/notes/implemented/feature/2026-08-03-web-turn-run-time.i18n.yaml deleted file mode 100644 index 997bc12db6..0000000000 --- a/.agents/notes/implemented/feature/2026-08-03-web-turn-run-time.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-08-03-web-turn-run-time.md -2026-08-03-web-turn-run-time.md: c77a365d66ea03b50275be21754f38ee449be14f -2026-08-03-web-turn-run-time.zh.md: ca7fdc6ef12def71efaa3b4267d8833e78cdc548 diff --git a/.agents/notes/implemented/feature/2026-08-04-claude-code-and-codex-subagent-backends.i18n.yaml b/.agents/notes/implemented/feature/2026-08-04-claude-code-and-codex-subagent-backends.i18n.yaml index 8a9c235a3b..21322238d5 100644 --- a/.agents/notes/implemented/feature/2026-08-04-claude-code-and-codex-subagent-backends.i18n.yaml +++ b/.agents/notes/implemented/feature/2026-08-04-claude-code-and-codex-subagent-backends.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-08-04-claude-code-and-codex-subagent-backends.md -2026-08-04-claude-code-and-codex-subagent-backends.md: 04b8fcb9c3fd899a485a12ce9c002b8ab5d6bbb3 -2026-08-04-claude-code-and-codex-subagent-backends.zh.md: de9248ed7c82266bd6083020ab32190a3dfd8d1f +2026-08-04-claude-code-and-codex-subagent-backends.md: 52665a44b654a50b8dc28f4bbd530a0606f8e2d9 +2026-08-04-claude-code-and-codex-subagent-backends.zh.md: f16d2412826db5d0fd3dcaad1281ccd92acdd26e diff --git a/.agents/notes/implemented/feature/2026-08-04-claude-code-and-codex-subagent-backends.md b/.agents/notes/implemented/feature/2026-08-04-claude-code-and-codex-subagent-backends.md index 04b8fcb9c3..52665a44b6 100644 --- a/.agents/notes/implemented/feature/2026-08-04-claude-code-and-codex-subagent-backends.md +++ b/.agents/notes/implemented/feature/2026-08-04-claude-code-and-codex-subagent-backends.md @@ -12,7 +12,7 @@ The product integrations must not become second owners for task text, cwd, cance ## Decision -The harness publishes two sibling one-shot provider packages whose default registry names are `codex` and `claude-code`. This note owns their product protocols, result mapping, and process lifecycle; the [named-instance decision](2026-08-18-product-subagent-named-instances.md) owns Profile-selected provider identity, optional instance model, and static tool binding; the [production-install exclusion decision](../simplification/2026-08-12-production-dsh-excludes-product-subagent-providers.md) owns their independent optional Bundles and host-plane placement; the [product one-shot background decision](2026-08-12-product-subagent-one-shot-background-tasks.md) owns the model-visible scheduling choice; the [non-interactive permissions decision](2026-08-15-product-subagent-noninteractive-permissions.md) owns each product Provider's Profile-selected mode and safe permission decisions; and the [minimal-diagnostics decision](../simplification/2026-08-21-product-subagent-minimal-diagnostics.md) owns coarse product action categories. Both packages accept multiple named instances. Loading either provider starts no product process, and each tool accepts only a standalone text task; product and instance selection remain deployment configuration. +The harness publishes two sibling one-shot provider packages whose default registry names are `codex` and `claude-code`. This note owns their product protocols, result mapping, and process lifecycle; the [named-instance decision](../../archived/feature/2026-08-18-product-subagent-named-instances.md) owns Profile-selected provider identity, optional instance model, and static tool binding; the [production-install exclusion decision](../../archived/simplification/2026-08-12-production-dsh-excludes-product-subagent-providers.md) owns their independent optional Bundles and host-plane placement; the [tool-subagent README](../../../../packages/subagent/tool-subagent/README.md) owns the model-visible scheduling choice; the [non-interactive permissions decision](2026-08-15-product-subagent-noninteractive-permissions.md) owns each product Provider's Profile-selected mode and safe permission decisions; and the [minimal-diagnostics decision](../../archived/simplification/2026-08-21-product-subagent-minimal-diagnostics.md) owns coarse product action categories. Both packages accept multiple named instances. Loading either provider starts no product process, and each tool accepts only a standalone text task; product and instance selection remain deployment configuration. Both providers report `inheritsParentContext: false`, advertise no optional start capabilities, and pass the parent Session cwd without copying the parent conversation. Their documented tools use `backgroundMode: 'one-shot'` and `maxDepth: 'provider-managed'`: the consumer keeps foreground collection as the default and may place the same run in the generic Job runtime, while recursion policy stays with the out-of-process product. Every call creates a fresh product process and a non-resumable product conversation. `ctx.subagents` owns named-request resolution and paired lifecycle events; `dsh-tool-subagent` owns model-visible scheduling and foreground-versus-Job adaptation; `ctx.jobs` and `dsh-tool-jobs` own Job ids, state, output, controls, notices, and parent-owner cancellation; each product provider owns native result mapping, while `dsh-subprocess` owns credential scrubbing, process-tree termination, and whole-tree exit observation. @@ -38,7 +38,7 @@ configured tool -> dsh-tool-subagent -> ctx.subagents -> product provider -> pro Before publication, the provider validates a non-empty text-only task, starts the managed app-server in the parent workspace, completes `initialize` → `initialized`, maps the optional model and resolved mode into official `thread/start` fields, and creates an `ephemeral: true` thread. The fixed app-server argv contains no model, mode, or task text. The published run owns exactly one `turn/start`; its thread and turn ids remain private and are never persisted in the parent Session. -`turn/completed` is the authoritative remote terminal fact. The latest `agentMessage` with `phase: "final_answer"` wins, and that selected message must contain nonblank text. When the product emits no explicit final phase, the latest message with `phase: null` is the compatibility fallback and must likewise be nonblank; commentary never replaces either answer. The [minimal-diagnostics decision](../simplification/2026-08-21-product-subagent-minimal-diagnostics.md) owns Codex action categories, HTTP status, lifecycle stages, process outcomes, and stop-reason preservation. Local cancellation remains `aborted` without a failure diagnostic. +`turn/completed` is the authoritative remote terminal fact. The latest `agentMessage` with `phase: "final_answer"` wins, and that selected message must contain nonblank text. When the product emits no explicit final phase, the latest message with `phase: null` is the compatibility fallback and must likewise be nonblank; commentary never replaces either answer. The [minimal-diagnostics decision](../../archived/simplification/2026-08-21-product-subagent-minimal-diagnostics.md) owns Codex action categories, HTTP status, lifecycle stages, process outcomes, and stop-reason preservation. Local cancellation remains `aborted` without a failure diagnostic. For command and file approvals, the unattended wire selects a non-approval decision offered by the request, preferring `cancel`; the stable 0.149.1 request shape without an offered-decision list falls back to `decline`. It grants no requested permissions for the turn, answers user-input requests with no answers, and declines MCP elicitation. It records safe categories for those requests, declined command/file items, and structured `sandboxError` terminals. Product stderr is forwarded unchanged to the Host but is neither classified nor copied into the diagnostic. A request with no legal unattended response, or any unknown server request, fails the run instead of waiting for a user interface the provider does not supply. @@ -52,7 +52,7 @@ Codex 0.149.1 speaks the Responses protocol, while DeepSeek's public OpenAI-comp The public configuration contains a non-empty `providerName`, an optional non-empty `model`, an explicit `env` overlay, a positive finite `disposeGraceMs` no greater than the repository's shared `MAX_TIMER_DELAY_MS`, and a five-value native `permissionMode` that defaults to `dontAsk`. Each named instance retains those resolved values for its own runs. An explicit model is passed unchanged through `Options.model`; omission leaves that field absent so native settings choose the model. Each run creates its own `AbortController`, sets `persistSession: false`, disables `AskUserQuestion`, and passes the resolved mode to the SDK; only `bypassPermissions` receives the SDK's explicit dangerous confirmation. The provider deliberately omits `settingSources`, so the SDK reads the host's normal user, project, and local Claude settings relative to the parent Session cwd. It neither copies nor filters those settings and does not create or modify login state. Remaining permission prompts are denied, MCP elicitation is declined, and blocking dialogs fail closed instead of waiting for a user interface the provider does not own. -The provider publishes only after both the SDK `Query` and a live managed CLI handle exist. It consumes the complete SDK stream and completes only when a `result` message has `subtype: "success"`, `is_error: false`, and a nonblank `result`, and the iterator then ends normally. The [minimal-diagnostics decision](../simplification/2026-08-21-product-subagent-minimal-diagnostics.md) owns every non-success action category, stage, process outcome, and its ordering with a contributing permission decision. Local cancellation wins and becomes `aborted` without either diagnostic fact. +The provider publishes only after both the SDK `Query` and a live managed CLI handle exist. It consumes the complete SDK stream and completes only when a `result` message has `subtype: "success"`, `is_error: false`, and a nonblank `result`, and the iterator then ends normally. The [minimal-diagnostics decision](../../archived/simplification/2026-08-21-product-subagent-minimal-diagnostics.md) owns every non-success action category, stage, process outcome, and its ordering with a contributing permission decision. Local cancellation wins and becomes `aborted` without either diagnostic fact. Startup rollback and published disposal close the SDK query, abort the per-run controller, invoke shared process-tree termination, and wait for whole-tree exit. `Query.close()` expresses graceful protocol intent but does not replace the subprocess owner's exit proof. An unpublished failure exposes only fixed `query-start` facts; a published process failure can expose its independent exit code and signal; an independent cleanup rejection exposes `teardown`. Original SDK, Host, and cleanup errors remain on internal cause chains and logs rather than entering the diagnostic. @@ -62,11 +62,11 @@ The credentialed Claude Code e2e uses the official DeepSeek Claude Code contract Each product owns branch-complete package tests, a required keyless real-product spec, a Loader composition e2e, and a credentialed DeepSeek e2e. The keyless product tier uses the exact official distribution under test, a non-empty fake product key, an isolated temporary workspace and product home, and a loopback fixed-answer model. Missing product requests, wrong authentication, altered task text, a non-exact answer, a skipped real product, or a surviving managed handle fails the required test. The Codex Loader fixture exposes two named Codex instances and tools; the Claude Code Loader fixture exposes the default Codex tool plus two named Claude Code instances and tools. Both fixtures include generic Job controls and start neither product process. The credentialed tier starts the same production provider and real product with a runtime-only key, requires a unique nonce from the fixed official DeepSeek service, and proves quiescence again; it self-skips only when a local operator supplied no key, while trusted CI preflights the secret. -The Codex evidence pins `@openai/codex@0.149.1`, `codex-cli 0.149.1`, and all six optional platform aliases. Its generated schema proves optional `ThreadStartParams.model`; the real-product spec observes omitted-model inheritance, two explicit instance models, the package-local wrapper argv, exact Bearer key, original task, byte-exact final answer, native permission modes, explicit dangerous-bypass writing in suite-owned temporary storage, and wrapper/native whole-tree exit. An isolated wrapper fixture proves missing-payload failure without host fallback, named instances retain separate models, environments, and modes, and production never resolves a host `codex` from `PATH`. The [minimal-diagnostics decision](../simplification/2026-08-21-product-subagent-minimal-diagnostics.md) owns failure, process-outcome, and final presentation evidence. +The Codex evidence pins `@openai/codex@0.149.1`, `codex-cli 0.149.1`, and all six optional platform aliases. Its generated schema proves optional `ThreadStartParams.model`; the real-product spec observes omitted-model inheritance, two explicit instance models, the package-local wrapper argv, exact Bearer key, original task, byte-exact final answer, native permission modes, explicit dangerous-bypass writing in suite-owned temporary storage, and wrapper/native whole-tree exit. An isolated wrapper fixture proves missing-payload failure without host fallback, named instances retain separate models, environments, and modes, and production never resolves a host `codex` from `PATH`. The [minimal-diagnostics decision](../../archived/simplification/2026-08-21-product-subagent-minimal-diagnostics.md) owns failure, process-outcome, and final presentation evidence. The Codex credentialed e2e registers the production provider, starts the same real app-server, and requests one random nonce through the test-private bridge described above. It fixes the external endpoint and model, stores no credential or request payload, requires exactly one completed upstream response, compares the trimmed product answer byte-for-byte with the nonce, and waits for every managed handle to exit. -The Claude Code evidence pins Agent SDK 0.3.241, Claude Code 2.1.241, and all eight SDK platform packages. Its real-product spec lets the SDK select the installed payload, asserts that the shared subprocess argv begins with that package's native CLI, and observes omitted-model inheritance, two explicit instance models, the exact `x-api-key`, original task, byte-exact final answer, native permission modes, suite-owned denied and bypassed writes, and whole-tree exit. Package tests prove that production never resolves host `PATH`, omits the executable override, and forwards the SDK-selected Windows `claude.exe` without a batch shim. This evidence proves the pinned official SDK/CLI integration rather than compatibility with independently installed Claude versions; the [minimal-diagnostics decision](../simplification/2026-08-21-product-subagent-minimal-diagnostics.md) owns failure and process-outcome evidence. Loader coverage resolves both products through their optional Bundle patches while starting neither product. +The Claude Code evidence pins Agent SDK 0.3.241, Claude Code 2.1.241, and all eight SDK platform packages. Its real-product spec lets the SDK select the installed payload, asserts that the shared subprocess argv begins with that package's native CLI, and observes omitted-model inheritance, two explicit instance models, the exact `x-api-key`, original task, byte-exact final answer, native permission modes, suite-owned denied and bypassed writes, and whole-tree exit. Package tests prove that production never resolves host `PATH`, omits the executable override, and forwards the SDK-selected Windows `claude.exe` without a batch shim. This evidence proves the pinned official SDK/CLI integration rather than compatibility with independently installed Claude versions; the [minimal-diagnostics decision](../../archived/simplification/2026-08-21-product-subagent-minimal-diagnostics.md) owns failure and process-outcome evidence. Loader coverage resolves both products through their optional Bundle patches while starting neither product. The Claude Code credentialed e2e maps the key and fixed official endpoint only in the provider's in-memory environment, uses the documented `deepseek-v4-pro[1m]` and `deepseek-v4-flash` model variables, and traverses the production provider, official SDK, and real CLI. It compares the trimmed result with a random nonce and proves whole-tree exit without calling the Messages API directly from the test. @@ -88,7 +88,7 @@ The project owner's distribution authorization is scoped to the official `@anthr ## Consequences -Users delegate through Profile-configured one-shot tools backed by the official product integrations. Explicit Profile installation and host-plane provider placement are owned by the [production-install exclusion decision](../simplification/2026-08-12-production-dsh-excludes-product-subagent-providers.md); named instance identity and tool binding are owned by the [named-instance decision](2026-08-18-product-subagent-named-instances.md); per-Preset tool exposure and foreground-default optional Job scheduling are owned by the [product one-shot background decision](2026-08-12-product-subagent-one-shot-background-tasks.md). This note's provider lifecycle keeps native settings and behavior while shared services retain the sole ownership of job settlement and process-tree quiescence. +Users delegate through Profile-configured one-shot tools backed by the official product integrations. Explicit Profile installation and host-plane provider placement are owned by the [production-install exclusion decision](../../archived/simplification/2026-08-12-production-dsh-excludes-product-subagent-providers.md); named instance identity and tool binding are owned by the [named-instance decision](../../archived/feature/2026-08-18-product-subagent-named-instances.md); per-Preset tool exposure and foreground-default optional Job scheduling are owned by the [tool-subagent README](../../../../packages/subagent/tool-subagent/README.md). This note's provider lifecycle keeps native settings and behavior while shared services retain the sole ownership of job settlement and process-tree quiescence. Every delegation pays for a fresh product process and independent model context. Successful product payload remains final assistant text; a failed product run may separately expose the shared safe diagnostic containing provider-owned permission facts and safe product failure categories. Background scheduling additionally exposes generic Job ids, status, completion notices, and collection or cancellation results. Both products use Bundle-pinned platform CLIs plus native account and workspace settings and the selected Provider permission mode; a supported optional instance model overrides only that run's native model selection. Credentialed e2e runs also spend external API quota and depend on the official DeepSeek endpoint; deterministic protocol, failure, cancellation, and approval coverage remains in the keyless tier. The providers do not resume sessions, stream progress, accept new human interaction, roll back tool or file side effects, or impose a wall-clock timeout. diff --git a/.agents/notes/implemented/feature/2026-08-04-claude-code-and-codex-subagent-backends.zh.md b/.agents/notes/implemented/feature/2026-08-04-claude-code-and-codex-subagent-backends.zh.md index de9248ed7c..f16d241282 100644 --- a/.agents/notes/implemented/feature/2026-08-04-claude-code-and-codex-subagent-backends.zh.md +++ b/.agents/notes/implemented/feature/2026-08-04-claude-code-and-codex-subagent-backends.zh.md @@ -12,7 +12,7 @@ Status: implemented ## 决策 -harness 交付两个同级的一次性提供方包,其默认注册名称分别为 `codex` 与 `claude-code`。本说明负责它们的产品协议、结果映射和进程生命周期;[命名实例决策](2026-08-18-product-subagent-named-instances.zh.md)负责 Profile 选择的提供方身份、可选实例模型与静态工具绑定;[生产安装排除决策](../simplification/2026-08-12-production-dsh-excludes-product-subagent-providers.zh.md)负责各自独立的可选 Bundle 与 host plane(宿主平面)放置;[产品一次性后台任务决策](2026-08-12-product-subagent-one-shot-background-tasks.zh.md)负责模型可见的调度选择;[非交互权限决策](2026-08-15-product-subagent-noninteractive-permissions.zh.md)负责各产品提供方的 Profile 模式选择与安全权限决定;[最小诊断决策](../simplification/2026-08-21-product-subagent-minimal-diagnostics.zh.md)负责粗粒度产品行动类别。两个包都接受多个命名实例。加载任一提供方都不会启动产品进程,而且每个工具只接受独立文本任务;产品与实例选择仍属于部署配置。 +harness 交付两个同级的一次性提供方包,其默认注册名称分别为 `codex` 与 `claude-code`。本说明负责它们的产品协议、结果映射和进程生命周期;[命名实例决策](../../archived/feature/2026-08-18-product-subagent-named-instances.md)负责 Profile 选择的提供方身份、可选实例模型与静态工具绑定;[生产安装排除决策](../../archived/simplification/2026-08-12-production-dsh-excludes-product-subagent-providers.md)负责各自独立的可选 Bundle 与 host plane(宿主平面)放置;[tool-subagent README](../../../../packages/subagent/tool-subagent/README.zh.md) 负责模型可见的调度选择;[非交互权限决策](2026-08-15-product-subagent-noninteractive-permissions.zh.md)负责各产品提供方的 Profile 模式选择与安全权限决定;[最小诊断决策](../../archived/simplification/2026-08-21-product-subagent-minimal-diagnostics.md)负责粗粒度产品行动类别。两个包都接受多个命名实例。加载任一提供方都不会启动产品进程,而且每个工具只接受独立文本任务;产品与实例选择仍属于部署配置。 这两个提供方都报告 `inheritsParentContext: false`,不声明任何可选的启动能力,并传递父会话 cwd,但不会复制父级对话。文档所示的工具使用 `backgroundMode: 'one-shot'` 与 `maxDepth: 'provider-managed'`:消费方默认在前台收集结果,也可把同一次运行放入通用 Job 运行时,而递归策略仍由进程外产品负责。每次调用都会创建一个全新的产品进程和一次不可续接的产品对话。`ctx.subagents` 负责具名请求解析与成对生命周期事件;`dsh-tool-subagent` 负责模型可见的调度以及前台与 Job 适配;`ctx.jobs` 和 `dsh-tool-jobs` 负责 Job id、状态、输出、控制、通知与父级 owner 取消;各产品提供方负责原生结果映射,`dsh-subprocess` 则负责凭证清洗、进程树终止以及整棵进程树的退出观测。 @@ -38,7 +38,7 @@ configured tool -> dsh-tool-subagent -> ctx.subagents -> product provider -> pro 发布前,提供方会验证非空的纯文本任务,在父级工作区中启动受管的 app-server,完成 `initialize` → `initialized` 握手,把可选模型与已解析模式映射为官方 `thread/start` 字段,并创建一个 `ephemeral: true` 线程。固定 app-server argv 不包含模型、模式或任务文本。已发布的运行只拥有一次 `turn/start`;其线程 ID 与轮次 ID 保持私有,绝不会持久化到父会话。 -`turn/completed` 是权威的远端终止事实。以最后一条带有 `phase: "final_answer"` 的 `agentMessage` 为准,且选中的消息必须包含非空白文本。若产品没有发出明确的最终阶段,则以最后一条 `phase: null` 的消息作为兼容性回退,该消息也必须包含非空白文本;过程说明绝不会取代上述任一答案。[最小诊断决策](../simplification/2026-08-21-product-subagent-minimal-diagnostics.zh.md)负责 Codex 行动类别、HTTP status、生命周期阶段、进程结果与终止原因保持。本地取消仍是 `aborted` 且不附带失败诊断。 +`turn/completed` 是权威的远端终止事实。以最后一条带有 `phase: "final_answer"` 的 `agentMessage` 为准,且选中的消息必须包含非空白文本。若产品没有发出明确的最终阶段,则以最后一条 `phase: null` 的消息作为兼容性回退,该消息也必须包含非空白文本;过程说明绝不会取代上述任一答案。[最小诊断决策](../../archived/simplification/2026-08-21-product-subagent-minimal-diagnostics.md)负责 Codex 行动类别、HTTP status、生命周期阶段、进程结果与终止原因保持。本地取消仍是 `aborted` 且不附带失败诊断。 对于命令与文件审批,无人值守的协议连接会从请求给出的决策选项中选择一项不予批准的决策,并优先选择 `cancel`;稳定的 0.149.1 请求形态没有决策选项列表,因此回退到 `decline`。它不授予该轮次请求的任何权限,不向用户输入请求提供任何答案,并拒绝 MCP elicitation。它会记录这些请求、被拒绝的命令/文件 item 与结构化 `sandboxError` 终态的安全类别。产品 stderr 会原样转发给 Host,但既不会被分类,也不会复制进诊断。若请求在无人值守模式下没有合法响应,或是未知服务器请求,此次运行就会失败,而不会等待本提供方没有提供的用户界面。 @@ -52,7 +52,7 @@ Codex 0.149.1 使用 Responses 协议,而 DeepSeek 的公开 OpenAI 兼容端 公开配置包含非空的 `providerName`、可选的非空 `model`、显式的 `env` 覆盖项、须为正有限值且不得大于仓库共享 `MAX_TIMER_DELAY_MS` 的 `disposeGraceMs`,以及默认使用 `dontAsk` 的五值原生 `permissionMode`。每个命名实例会为自己的运行保留这些已解析值。显式模型会原样传入 `Options.model`;省略时不设置该字段,由原生设置选择模型。每次运行都会创建自己的 `AbortController`,设置 `persistSession: false`、禁用 `AskUserQuestion`,并把已解析模式传给 SDK;只有 `bypassPermissions` 会取得 SDK 的显式危险确认。提供方故意省略 `settingSources`,因此 SDK 会相对于父会话 cwd 读取宿主机常规的用户、项目和本地 Claude 设置。它既不复制也不过滤这些设置,也不会创建或修改登录状态。其余权限提示会被拒绝,MCP elicitation 会被拒绝,阻塞对话会快速失败,而不会等待本提供方不负责的用户界面。 -只有在 SDK `Query` 与受管的活动 CLI 句柄都已存在后,提供方才会发布运行。它会消费完整的 SDK 流;只有 `result` 消息具有 `subtype: "success"`、`is_error: false` 和非空白 `result`,且迭代器随后正常结束时,运行才会完成。[最小诊断决策](../simplification/2026-08-21-product-subagent-minimal-diagnostics.zh.md)负责所有非成功行动类别、阶段、进程结果,以及它们与参与失败的权限决定之间的顺序。本地取消会胜出并成为 `aborted`,且不附带这两类诊断事实。 +只有在 SDK `Query` 与受管的活动 CLI 句柄都已存在后,提供方才会发布运行。它会消费完整的 SDK 流;只有 `result` 消息具有 `subtype: "success"`、`is_error: false` 和非空白 `result`,且迭代器随后正常结束时,运行才会完成。[最小诊断决策](../../archived/simplification/2026-08-21-product-subagent-minimal-diagnostics.md)负责所有非成功行动类别、阶段、进程结果,以及它们与参与失败的权限决定之间的顺序。本地取消会胜出并成为 `aborted`,且不附带这两类诊断事实。 启动回滚和已发布运行的资源释放都会关闭 SDK query、中止该次运行的控制器、调用共享的进程树终止机制,并等待整棵进程树退出。`Query.close()` 表达优雅的协议关闭意图,但不能取代子进程责任方的退出证明。未发布失败只公开固定的 `query-start` 事实;已发布进程失败可以分别公开退出码与信号;独立清理拒绝则公开 `teardown`。原始 SDK、Host 与清理错误只保留在内部 cause 链和日志中,不进入诊断。 @@ -62,11 +62,11 @@ Codex 0.149.1 使用 Responses 协议,而 DeepSeek 的公开 OpenAI 兼容端 每个产品都负责覆盖所有分支的包测试、一项必跑的无密钥真实产品测试、一项 Loader 组合 e2e 和一项带密钥 DeepSeek e2e。无密钥产品层级使用被测的确切官方发行版、非空的伪产品密钥、隔离的临时工作区与产品主目录,以及能返回固定答案的回环模型。产品请求缺失、身份验证错误、任务文本被改动、答案不完全一致、真实产品被跳过或受管句柄仍存活,都会使这项必跑测试失败。Codex Loader fixture 会公开两个命名 Codex 实例与工具;Claude Code Loader fixture 会公开默认 Codex 工具以及两个命名 Claude Code 实例与工具。两个 fixture 都包含通用 Job 控制工具,而且不会启动任何产品进程。带密钥层级会使用仅在运行时提供的密钥启动同一生产提供方与真实产品,要求从固定的 DeepSeek 官方服务取得唯一随机数,并再次证明完全停稳;仅当本地操作者未提供密钥时才会自行跳过,而受信任的 CI 会预检该 secret。 -Codex 证据会锁定 `@openai/codex@0.149.1`、`codex-cli 0.149.1` 与六个平台 alias。生成 schema 会证明可选的 `ThreadStartParams.model`;真实产品测试会观测省略模型继承、两个显式实例模型、包内 wrapper argv、确切的 Bearer 密钥、原始任务、逐字节完全一致的最终回答、原生权限模式、测试拥有临时存储中的显式危险绕过写入,以及 wrapper/原生整棵进程树退出。独立 wrapper fixture 会证明载荷缺失时不回退宿主命令,命名实例会保留彼此独立的模型、环境与模式,生产环境也不会从 `PATH` 解析宿主 `codex`。[最小诊断决策](../simplification/2026-08-21-product-subagent-minimal-diagnostics.zh.md)负责失败、进程结果与最终呈现证据。 +Codex 证据会锁定 `@openai/codex@0.149.1`、`codex-cli 0.149.1` 与六个平台 alias。生成 schema 会证明可选的 `ThreadStartParams.model`;真实产品测试会观测省略模型继承、两个显式实例模型、包内 wrapper argv、确切的 Bearer 密钥、原始任务、逐字节完全一致的最终回答、原生权限模式、测试拥有临时存储中的显式危险绕过写入,以及 wrapper/原生整棵进程树退出。独立 wrapper fixture 会证明载荷缺失时不回退宿主命令,命名实例会保留彼此独立的模型、环境与模式,生产环境也不会从 `PATH` 解析宿主 `codex`。[最小诊断决策](../../archived/simplification/2026-08-21-product-subagent-minimal-diagnostics.md)负责失败、进程结果与最终呈现证据。 带密钥 Codex e2e 会注册生产提供方,启动同样的真实 app-server,并通过上述测试专用桥接层请求一个随机数。该测试固定外部端点与模型,不存储任何凭据或请求载荷,要求上游恰好完成一次响应,将去除首尾空白后的产品答案与该随机数逐字节比较,并等待所有受管句柄退出。 -Claude Code 证据会锁定 Agent SDK 0.3.241、Claude Code 2.1.241 与八个 SDK 平台包。真实产品测试会让 SDK 选择已安装载荷,断言共享子进程 argv 以该包的原生 CLI 开头,并观测省略模型继承、两个显式实例模型、确切的 `x-api-key`、原始任务、逐字节完全一致的最终回答、原生权限模式、测试拥有范围内的拒绝写入与 bypass 写入,以及整棵进程树退出。包测试还会证明生产运行从不解析宿主 `PATH`、省略可执行文件覆盖,并直接转发 SDK 所选的 Windows `claude.exe` 而不经过 batch shim。这项证据证明锁定的官方 SDK/CLI 集成,而不证明与独立安装的 Claude 版本兼容;[最小诊断决策](../simplification/2026-08-21-product-subagent-minimal-diagnostics.zh.md)负责失败与进程结果证据。Loader 覆盖会通过各自的可选 Bundle patch 解析两个产品,且不会启动任一产品。 +Claude Code 证据会锁定 Agent SDK 0.3.241、Claude Code 2.1.241 与八个 SDK 平台包。真实产品测试会让 SDK 选择已安装载荷,断言共享子进程 argv 以该包的原生 CLI 开头,并观测省略模型继承、两个显式实例模型、确切的 `x-api-key`、原始任务、逐字节完全一致的最终回答、原生权限模式、测试拥有范围内的拒绝写入与 bypass 写入,以及整棵进程树退出。包测试还会证明生产运行从不解析宿主 `PATH`、省略可执行文件覆盖,并直接转发 SDK 所选的 Windows `claude.exe` 而不经过 batch shim。这项证据证明锁定的官方 SDK/CLI 集成,而不证明与独立安装的 Claude 版本兼容;[最小诊断决策](../../archived/simplification/2026-08-21-product-subagent-minimal-diagnostics.md)负责失败与进程结果证据。Loader 覆盖会通过各自的可选 Bundle patch 解析两个产品,且不会启动任一产品。 带密钥 Claude Code e2e 仅在提供方的内存环境中映射密钥与固定的官方端点,把模型变量设为文档所示的 `deepseek-v4-pro[1m]` 与 `deepseek-v4-flash`,并实际经过生产提供方、官方 SDK 与真实 CLI。它将去除首尾空白后的结果与一个随机数比较,并证明整棵进程树退出,且测试不会直接调用 Messages API。 @@ -88,7 +88,7 @@ Claude Code 证据会锁定 Agent SDK 0.3.241、Claude Code 2.1.241 与八个 SD ## 后果 -用户通过由 Profile 配置、并由官方产品集成支持的一次性工具进行委派。显式 Profile 安装与 host plane 提供方放置由[生产安装排除决策](../simplification/2026-08-12-production-dsh-excludes-product-subagent-providers.zh.md)负责;命名实例身份与工具绑定由[命名实例决策](2026-08-18-product-subagent-named-instances.zh.md)负责;按 Preset 暴露工具以及默认前台且可选通用 Job 的调度方式由[产品一次性后台任务决策](2026-08-12-product-subagent-one-shot-background-tasks.zh.md)负责。本说明规定的提供方生命周期会保留原生设置与行为,而共享服务继续独占作业结算与进程树完全停稳的责任。 +用户通过由 Profile 配置、并由官方产品集成支持的一次性工具进行委派。显式 Profile 安装与 host plane 提供方放置由[生产安装排除决策](../../archived/simplification/2026-08-12-production-dsh-excludes-product-subagent-providers.md)负责;命名实例身份与工具绑定由[命名实例决策](../../archived/feature/2026-08-18-product-subagent-named-instances.md)负责;按 Preset 暴露工具以及默认前台且可选通用 Job 的调度方式由 [tool-subagent README](../../../../packages/subagent/tool-subagent/README.zh.md) 负责。本说明规定的提供方生命周期会保留原生设置与行为,而共享服务继续独占作业结算与进程树完全停稳的责任。 每次委派都要承担新建产品进程和独立模型上下文的开销。成功的产品载荷仍只有最终 assistant 文本;失败的产品运行可以另行公开共享安全诊断,其中包含由提供方拥有的权限事实与安全产品失败类别。后台调度还会额外公开通用 Job id、状态、完成通知以及收集或取消结果。两个产品都使用 Bundle 锁定的平台 CLI,并保留原生账户与工作区设置以及所选提供方权限模式;受支持的可选实例模型只覆盖该次运行的原生模型选择。带密钥 e2e 运行还会消耗外部 API 配额,并依赖 DeepSeek 官方端点;对协议、失败、取消与审批的确定性覆盖仍由无密钥层级承担。提供方不会恢复会话、以流式方式传送进度、接受新的人工交互、回滚工具或文件副作用,也不会施加按实际经过时间触发的超时。 diff --git a/.agents/notes/implemented/feature/2026-08-04-pointer-revealed-sidebar-scrollbars.i18n.yaml b/.agents/notes/implemented/feature/2026-08-04-pointer-revealed-sidebar-scrollbars.i18n.yaml deleted file mode 100644 index 50a3a9609c..0000000000 --- a/.agents/notes/implemented/feature/2026-08-04-pointer-revealed-sidebar-scrollbars.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-08-04-pointer-revealed-sidebar-scrollbars.md -2026-08-04-pointer-revealed-sidebar-scrollbars.md: 5a9a0b948ed97af37cab135928bb8624fb2a4da9 -2026-08-04-pointer-revealed-sidebar-scrollbars.zh.md: 35350e1811da8a5e94a7b2eaefc6111d02b18c45 diff --git a/.agents/notes/implemented/feature/2026-08-04-web-composer-shared-width-axis.i18n.yaml b/.agents/notes/implemented/feature/2026-08-04-web-composer-shared-width-axis.i18n.yaml deleted file mode 100644 index d9f23bc26e..0000000000 --- a/.agents/notes/implemented/feature/2026-08-04-web-composer-shared-width-axis.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-08-04-web-composer-shared-width-axis.md -2026-08-04-web-composer-shared-width-axis.md: f667363fb26297046b373779e1755928d328ec96 -2026-08-04-web-composer-shared-width-axis.zh.md: 6268cfb198e2136afe48a5feed552dda7f87252d diff --git a/.agents/notes/implemented/feature/2026-08-04-web-context-source-and-steer-marks.i18n.yaml b/.agents/notes/implemented/feature/2026-08-04-web-context-source-and-steer-marks.i18n.yaml deleted file mode 100644 index 754b846347..0000000000 --- a/.agents/notes/implemented/feature/2026-08-04-web-context-source-and-steer-marks.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-08-04-web-context-source-and-steer-marks.md -2026-08-04-web-context-source-and-steer-marks.md: 0a9d6a4ebd1035773cd768af5ea8614bcad9e0c3 -2026-08-04-web-context-source-and-steer-marks.zh.md: 3e3f80cc54f57e870077b735c4dbb04b9b462656 diff --git a/.agents/notes/implemented/feature/2026-08-04-web-slash-command-fuzzy-discovery.i18n.yaml b/.agents/notes/implemented/feature/2026-08-04-web-slash-command-fuzzy-discovery.i18n.yaml deleted file mode 100644 index 51848d9768..0000000000 --- a/.agents/notes/implemented/feature/2026-08-04-web-slash-command-fuzzy-discovery.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-08-04-web-slash-command-fuzzy-discovery.md -2026-08-04-web-slash-command-fuzzy-discovery.md: 17ba1a1cba4876140bada74e65ba1b10ed5fdd76 -2026-08-04-web-slash-command-fuzzy-discovery.zh.md: fe23dcb5d3c14a492a5882b5bad4c84e256ef064 diff --git a/.agents/notes/implemented/feature/2026-08-05-agent-teams.i18n.yaml b/.agents/notes/implemented/feature/2026-08-05-agent-teams.i18n.yaml index e308dfc2f4..77dbd7cc75 100644 --- a/.agents/notes/implemented/feature/2026-08-05-agent-teams.i18n.yaml +++ b/.agents/notes/implemented/feature/2026-08-05-agent-teams.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-08-05-agent-teams.md -2026-08-05-agent-teams.md: df84b2710d597330e9fdf6f8f83edb1441f100ec -2026-08-05-agent-teams.zh.md: f1ef275610f6307578288d483eb561ee8d3c7531 +2026-08-05-agent-teams.md: f824fc937a9e8ff55016461bd291843b23a5ff41 +2026-08-05-agent-teams.zh.md: 7f85268495d636a352a2fa74a111edf65d749893 diff --git a/.agents/notes/implemented/feature/2026-08-05-agent-teams.md b/.agents/notes/implemented/feature/2026-08-05-agent-teams.md index df84b2710d..f824fc937a 100644 --- a/.agents/notes/implemented/feature/2026-08-05-agent-teams.md +++ b/.agents/notes/implemented/feature/2026-08-05-agent-teams.md @@ -32,7 +32,7 @@ Fresh children have no inherited conversation. Fork children capture the Lead's Peer communication is a Lead-log mailbox. `team/message/queued` is appended and flushed before delivery. The target message carries the stable message id and sender identity in both durable source metadata and a short model-visible prefix. A target receipt is acknowledged with `team/message/delivered` only after its pending inbox item or recorded user message is flushed. Immediate admission is serialized per target in queued-log order, recovery retries queued-minus-delivered in the same order, and delivery folds live or persisted target inbox/history state before cold resume. Every current-version Team payload is runtime-validated before entering replay state. The Team runtime tracks dispatch and asynchronous acknowledgement work from synchronous admission until settlement; disposal closes admission and awaits both before removing the service. Current waiters wake only after the owning Team event flush succeeds. -`send_message` always attempts Steer delivery. A running target receives the message at the nearest step boundary, an idle target starts a turn, and an inactive teammate cold-resumes. Success means the message is already durable even when temporary delivery failure leaves it queued. The mechanism provides process-local retry and target-Session de-duplication, not a cross-process exactly-once claim. The [Team Steer messaging decision](../simplification/2026-08-30-team-send-message-steer.md) owns the single-tool scheduling rationale. +`send_message` always attempts Steer delivery. A running target receives the message at the nearest step boundary, an idle target starts a turn, and an inactive teammate cold-resumes. Success means the message is already durable even when temporary delivery failure leaves it queued. The mechanism provides process-local retry and target-Session de-duplication, not a cross-process exactly-once claim. The [Team Steer messaging decision](../../archived/simplification/2026-08-30-team-send-message-steer.md) owns the single-tool scheduling rationale. Shared tasks are complete snapshots with Team-local ids and monotonic revisions. Every mutation carries `expectedRevision`. Any member creates, reads, or claims a ready unowned task; the owner or Lead edits and transitions it, while only the Lead assigns another member. Numeric task ids remain within the safe-integer allocation range, and exhaustion fails without reusing an id. Dependencies must name non-deleted tasks and form a complete DAG. Deleted tasks are retained tombstones. `writeScopes` are normalized path prefixes that produce overlap diagnostics but never block claim or authorize a write. diff --git a/.agents/notes/implemented/feature/2026-08-05-agent-teams.zh.md b/.agents/notes/implemented/feature/2026-08-05-agent-teams.zh.md index f1ef275610..7f85268495 100644 --- a/.agents/notes/implemented/feature/2026-08-05-agent-teams.zh.md +++ b/.agents/notes/implemented/feature/2026-08-05-agent-teams.zh.md @@ -32,7 +32,7 @@ fresh child 不继承对话。fork child 只捕获一次 Lead 已完成 turn 前 Peer 通讯使用 Lead 日志 mailbox。投递前先追加并 flush `team/message/queued`。target message 会在持久 source metadata 与短模型可见前缀中同时携带稳定 message id 和 sender identity。只有 pending inbox 条目或已记录用户消息完成 flush,Lead 日志才写入 `team/message/delivered` acknowledgement。即时准入按 target 和 queued 日志顺序串行化,恢复按同一顺序重试 queued-minus-delivered,并在冷恢复前折叠 live 或 persisted target 的 inbox/历史状态。每个当前版本 Team payload 都会经过运行时验证后才进入 replay state。Team runtime 从同步准入到 settlement 全程跟踪 dispatch 与异步 acknowledgement 工作;dispose 会关闭准入,并在移除服务前等待两者。当前 waiter 只在所属 Team event flush 成功后被唤醒。 -`send_message` 始终尝试 Steer 投递。running target 在最近的步骤边界收到消息,idle target 启动一个轮次,inactive teammate 则冷恢复。即使临时投递失败让消息保持 queued,成功也表示消息已经持久化。该机制提供进程内重试与 target Session 去重,不宣称跨进程 exactly-once。[Team Steer 消息决策](../simplification/2026-08-30-team-send-message-steer.zh.md)负责单工具调度的理由。 +`send_message` 始终尝试 Steer 投递。running target 在最近的步骤边界收到消息,idle target 启动一个轮次,inactive teammate 则冷恢复。即使临时投递失败让消息保持 queued,成功也表示消息已经持久化。该机制提供进程内重试与 target Session 去重,不宣称跨进程 exactly-once。[Team Steer 消息决策](../../archived/simplification/2026-08-30-team-send-message-steer.md)负责单工具调度的理由。 共享 task 是带 Team-local id 与单调 revision 的完整快照。每次变更都携带 `expectedRevision`。任意 member 可以创建、读取或 claim ready 且无 owner 的任务;Owner 或 Lead 可以编辑和转换;只有 Lead 可以分配给另一个 member。数字 task id 保持在安全整数分配范围内;该范围耗尽时会失败,不会复用 id。依赖必须指向未删除任务,并形成完整 DAG。删除任务保留为 tombstone。`writeScopes` 是规范化路径前缀,只产生重叠诊断,绝不会阻止 claim 或授予写权限。 diff --git a/.agents/notes/implemented/feature/2026-08-05-composer-context-meter-breakdown.i18n.yaml b/.agents/notes/implemented/feature/2026-08-05-composer-context-meter-breakdown.i18n.yaml deleted file mode 100644 index 876378ec58..0000000000 --- a/.agents/notes/implemented/feature/2026-08-05-composer-context-meter-breakdown.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-08-05-composer-context-meter-breakdown.md -2026-08-05-composer-context-meter-breakdown.md: 318a1caf7d2494baa9ee72e2719efc22523fdac6 -2026-08-05-composer-context-meter-breakdown.zh.md: 886108dd9cb197afbfc210e3bdbf1f42cf4b1f8f diff --git a/.agents/notes/implemented/feature/2026-08-05-context-form-vocabulary.i18n.yaml b/.agents/notes/implemented/feature/2026-08-05-context-form-vocabulary.i18n.yaml index b34b876c6d..bcd3dfd359 100644 --- a/.agents/notes/implemented/feature/2026-08-05-context-form-vocabulary.i18n.yaml +++ b/.agents/notes/implemented/feature/2026-08-05-context-form-vocabulary.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-08-05-context-form-vocabulary.md -2026-08-05-context-form-vocabulary.md: 12bb0132ad779d47b1090eb1d15d692032292524 -2026-08-05-context-form-vocabulary.zh.md: 899bef0892a9ec2d865d91e51869527afea40f9d +2026-08-05-context-form-vocabulary.md: e1c909b761fee60ebacb306ef204a4212a03baa4 +2026-08-05-context-form-vocabulary.zh.md: 4d595bf52fba2f7323643ddc47bd365ce6508c9e diff --git a/.agents/notes/implemented/feature/2026-08-05-context-form-vocabulary.md b/.agents/notes/implemented/feature/2026-08-05-context-form-vocabulary.md index 12bb0132ad..e1c909b761 100644 --- a/.agents/notes/implemented/feature/2026-08-05-context-form-vocabulary.md +++ b/.agents/notes/implemented/feature/2026-08-05-context-form-vocabulary.md @@ -8,7 +8,7 @@ English | [中文](2026-08-05-context-form-vocabulary.zh.md) Every logged non-user `user/message` rendered through one body: the whole message serialized as inline JSON. A reader opening a row met `{ "content": [ { "type": "text", "text": "…\n\n…" } ], "source": { … } }`, where the escaping had collapsed the only thing worth reading — the model-facing prose — into a single line, and the producer fields sat inside the same blob. -Naming the producer in the header (the [source and steer marks decision](2026-08-04-web-context-source-and-steer-marks.md)) fixed *who added this*. It could not fix *what kind of thing was added*, because nothing in the log said so. Injected context is not one shape: a reconciled `AGENTS.md`, a catalog of available skills, a runtime policy snapshot, and a subagent's report are as different from each other as a terminal card is from a diff card, yet all four presented as the same wall of escaped JSON. +Naming the producer in the header (the [source and steer marks decision](../../archived/feature/2026-08-04-web-context-source-and-steer-marks.md)) fixed *who added this*. It could not fix *what kind of thing was added*, because nothing in the log said so. Injected context is not one shape: a reconciled `AGENTS.md`, a catalog of available skills, a runtime policy snapshot, and a subagent's report are as different from each other as a terminal card is from a diff card, yet all four presented as the same wall of escaped JSON. The tool surface already solved this shape. `ToolCallView` has three cards, not one per tool, and a tool declares which card its call is. Context had no equivalent: no vocabulary of shapes, and no way for a producer to say which one it emits. @@ -49,7 +49,7 @@ The tool presentation contract pairs its vocabulary with `presentCall(args)`, a ## Alternatives considered -**Map source kinds to renderers in the client.** Cheapest to write and requires no format change, but it puts producer knowledge back in the client: every new kind then needs a client release to render as anything but opaque, and a foreign log cannot be classified at all. It also reintroduces exactly the coupling the [source and steer marks decision](2026-08-04-web-context-source-and-steer-marks.md) removed for labels. +**Map source kinds to renderers in the client.** Cheapest to write and requires no format change, but it puts producer knowledge back in the client: every new kind then needs a client release to render as anything but opaque, and a foreign log cannot be classified at all. It also reintroduces exactly the coupling the [source and steer marks decision](../../archived/feature/2026-08-04-web-context-source-and-steer-marks.md) removed for labels. **Reuse `kind` as the form.** One discriminant is simpler, and `agent-instructions` is already 1:1 with its form. This design loses information when several producers share one form: three shipped producers emit runtime snapshots, and combining them into one kind would make it impossible to tell which producer supplied each message. Separate `kind` and `form` fields record the producer while allowing several producers to share one presentation. diff --git a/.agents/notes/implemented/feature/2026-08-05-context-form-vocabulary.zh.md b/.agents/notes/implemented/feature/2026-08-05-context-form-vocabulary.zh.md index 899bef0892..4d595bf52f 100644 --- a/.agents/notes/implemented/feature/2026-08-05-context-form-vocabulary.zh.md +++ b/.agents/notes/implemented/feature/2026-08-05-context-form-vocabulary.zh.md @@ -8,7 +8,7 @@ Status: implemented 每一条已记录的非用户 `user/message` 都通过同一个内容区渲染:把整条消息序列化成内联 JSON。读者展开一行,看到的是 `{ "content": [ { "type": "text", "text": "…\n\n…" } ], "source": { … } }`——转义把唯一值得读的东西(面向模型的散文)压成了一行,生产者字段也放在同一个 JSON 对象中。 -在标题栏写出生产者([来源与 steer 标识决策](2026-08-04-web-context-source-and-steer-marks.zh.md))解决了「这是谁加的」。它解决不了「加进来的是什么东西」,因为日志里根本没有这项信息。注入上下文不是一种形状:对账后的 `AGENTS.md`、可用 skill(技能)的目录、运行时策略快照、subagent 的汇报,彼此之间的差别不亚于终端卡片与 diff 卡片,然而这四者呈现出来是同一堵转义 JSON 的墙。 +在标题栏写出生产者([来源与 steer 标识决策](../../archived/feature/2026-08-04-web-context-source-and-steer-marks.md))解决了「这是谁加的」。它解决不了「加进来的是什么东西」,因为日志里根本没有这项信息。注入上下文不是一种形状:对账后的 `AGENTS.md`、可用 skill(技能)的目录、运行时策略快照、subagent 的汇报,彼此之间的差别不亚于终端卡片与 diff 卡片,然而这四者呈现出来是同一堵转义 JSON 的墙。 工具呈现层早就解决过同一个形状问题。`ToolCallView` 只有三种卡片,而不是每个工具一种,由工具自己声明本次调用属于哪一种。上下文没有对应物:既没有形状词汇表,生产方也无从声明自己发出的是哪一种。 @@ -49,7 +49,7 @@ Status: implemented ## 考虑过的替代方案 -**在客户端把来源 kind 映射到渲染器。** 写起来最省,也不用改格式,但它把生产方知识放回了客户端:此后每新增一个 kind 都要客户端发版才能渲染成 opaque 以外的东西,而外部日志根本无法分类。它还会重新引入[来源与 steer 标识决策](2026-08-04-web-context-source-and-steer-marks.zh.md)刚为名称去掉的那种耦合。 +**在客户端把来源 kind 映射到渲染器。** 写起来最省,也不用改格式,但它把生产方知识放回了客户端:此后每新增一个 kind 都要客户端发版才能渲染成 opaque 以外的东西,而外部日志根本无法分类。它还会重新引入[来源与 steer 标识决策](../../archived/feature/2026-08-04-web-context-source-and-steer-marks.md)刚为名称去掉的那种耦合。 **复用 `kind` 充当形态。** 单一判别字段更简单,`agent-instructions` 本来也与它的形态一一对应。但多个生产方共享同一形态时,这种设计无法保留完整信息:三个已交付生产方发出运行时快照,把它们并成一个 kind 后,将无法分辨每条消息由哪个生产方提供。独立的 `kind` 和 `form` 字段会记录生产方,同时允许多个生产方共用一种呈现方式。 diff --git a/.agents/notes/implemented/feature/2026-08-05-durable-web-schedule.i18n.yaml b/.agents/notes/implemented/feature/2026-08-05-durable-web-schedule.i18n.yaml index e5d2539eb1..a2330d603f 100644 --- a/.agents/notes/implemented/feature/2026-08-05-durable-web-schedule.i18n.yaml +++ b/.agents/notes/implemented/feature/2026-08-05-durable-web-schedule.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-08-05-durable-web-schedule.md -2026-08-05-durable-web-schedule.md: 1e7a343472cce638a7d1476871cec221fa9fd889 -2026-08-05-durable-web-schedule.zh.md: 50f3347a2c312e3c1a2ea28c582a277cc93a614e +2026-08-05-durable-web-schedule.md: b09ab752c9db0587b49dbe50a152144b9ff19515 +2026-08-05-durable-web-schedule.zh.md: 8d84be3e3589969245fa41f433166eabacdf3951 diff --git a/.agents/notes/implemented/feature/2026-08-05-durable-web-schedule.md b/.agents/notes/implemented/feature/2026-08-05-durable-web-schedule.md index 1e7a343472..b09ab752c9 100644 --- a/.agents/notes/implemented/feature/2026-08-05-durable-web-schedule.md +++ b/.agents/notes/implemented/feature/2026-08-05-durable-web-schedule.md @@ -14,7 +14,7 @@ Busy Agents, long waits, wall-clock changes, cold Sessions, forks, persistence f The [Schedule guide](../../../../docs/user/guide/schedule.md) uses an overlay that explicitly loads `@deepseek-ai/dsh-time-context` and `@deepseek-ai/dsh-schedule`, and enables the Web bundle's otherwise-disabled `ui-schedule` row. The default Web startup graph remains inactive for Schedule. Schedule observes only root Agents published after the plugin loads and installs its three tools plus one disposable owner in that Agent scope. Cold history reads, already-published roots, child Agents, and other hosts do not activate the runtime. -The user-visible boundary is `session-local`: the original Session runs an on-time reminder only while live, does no external notification while cold, and processes an overdue reminder after it becomes live again. Due work waits until the Agent is fully idle, then enters the ordinary next-turn queue through `followup()`; it never steers the current turn and has no independent Web receipt ([conversational delivery](../simplification/2026-08-09-conversational-schedule-delivery.md)). +The user-visible boundary is `session-local`: the original Session runs an on-time reminder only while live, does no external notification while cold, and processes an overdue reminder after it becomes live again. Due work waits until the Agent is fully idle, then enters the ordinary next-turn queue through `followup()`; it never steers the current turn and has no independent Web receipt ([conversational delivery](../../archived/simplification/2026-08-09-conversational-schedule-delivery.md)). | Scenario | Durable fact | Live behavior | User-visible result | | --- | --- | --- | --- | @@ -28,7 +28,7 @@ The user-visible boundary is `session-local`: the original Session runs an on-ti The version-1 `schedule/change` stream is the only durable Schedule authority. A create record owns a Session-local, non-reused branded id, the trimmed prompt, its rule discriminator, and UTC target. Delete and one-shot dispatch are terminal transitions. Every dispatch stores its id and decision time so the fold advances that record directly past missed occurrences. The strict decoder and pure fold reject unknown versions, extra fields, reused ids, mismatched dispatch shapes, and transitions against inactive records. A normal Session folds its complete stream; a fork folds only events at or after the `inheritedEventCount` passed into projection initialization. -When `ctx.sessionProjections` exists, Schedule registers a strict unit that uses the same transition and publishes the complete active `ScheduleRecord[]`; the shared [projection state decision](../architecture/2026-08-19-session-projection-state-and-client-views.md) owns its initialization and restore contract. Corrupt durable input fails the existing read path rather than yielding a partial array. The browser-safe record vocabulary is exposed through the type-only `@deepseek-ai/dsh-schedule/client` subpath. +When `ctx.sessionProjections` exists, Schedule registers a strict unit that uses the same transition and publishes the complete active `ScheduleRecord[]`; the shared [projection state decision](../../archived/architecture/2026-08-19-session-projection-state-and-client-views.md) owns its initialization and restore contract. Corrupt durable input fails the existing read path rather than yielding a partial array. The browser-safe record vocabulary is exposed through the type-only `@deepseek-ai/dsh-schedule/client` subpath. The current rule union accepts a non-empty prompt and exactly one selector. `after_seconds` is a positive safe-integer delay whose record is `{ id, kind: 'after', prompt, afterSeconds, scheduledAt }`. `at` is either strict RFC 3339 with `Z` or a numeric offset, or structured `{ date, time, time_zone }` with an explicit zone; its record is `{ id, kind: 'at', prompt, scheduledAt }`. `every_seconds` is a safe integer of at least 300 whose `{ id, kind: 'every', prompt, everySeconds, scheduledAt }` record stays aligned to its creation-plus-interval sequence. One-shot dispatch stores only the id; Every dispatch stores `id + acceptedAt`. Tool values derive `scheduled` or `overdue` and include `deliveryMode: 'session-local'`. @@ -48,7 +48,7 @@ Every is a fixed-duration interval, not a calendar rule. The first target is cre All distinct overdue Every records participate in one batch, each with one latest occurrence and one shared `acceptedAt`. There is no cross-record cooldown, gate, quota, or retained batch timestamp. A five-minute minimum bounds wake and model-request frequency. If the next sequence point would exceed the four-digit-year storage range, dispatch terminates that record. -Calendar and Cron expressions are deliberately absent ([bounded recurrence simplification](../simplification/2026-08-09-bounded-fixed-rate-schedule.md)); supporting them would add a time-zone-sensitive calendar language, evaluator dependency, validation surface, and tzdata replay policy unrelated to fixed-rate reminders. +Calendar and Cron expressions are deliberately absent ([bounded recurrence simplification](../../archived/simplification/2026-08-09-bounded-fixed-rate-schedule.md)); supporting them would add a time-zone-sensitive calendar language, evaluator dependency, validation surface, and tzdata replay policy unrelated to fixed-rate reminders. ### Live delivery lifecycle diff --git a/.agents/notes/implemented/feature/2026-08-05-durable-web-schedule.zh.md b/.agents/notes/implemented/feature/2026-08-05-durable-web-schedule.zh.md index 50f3347a2c..8d84be3e35 100644 --- a/.agents/notes/implemented/feature/2026-08-05-durable-web-schedule.zh.md +++ b/.agents/notes/implemented/feature/2026-08-05-durable-web-schedule.zh.md @@ -14,7 +14,7 @@ Status: implemented [Schedule 指南](../../../../docs/user/guide/schedule.zh.md)使用显式加载 `@deepseek-ai/dsh-time-context` 与 `@deepseek-ai/dsh-schedule`,并启用 Web bundle 中默认 disabled 的 `ui-schedule` row 的 overlay。默认 Web 启动图不会激活 Schedule。Schedule 只观察插件加载后发布的根 Agent,并在该 Agent scope 中安装三个工具和一个可丢弃 owner。cold history 读取、已发布的根、child Agent 与其他 host 都不会激活 runtime。 -用户可见边界是 `session-local`:原 Session 只有在 live 时才会准时运行提醒,cold 期间不发送任何外部通知;该 Session 再次 live 后才会处理 overdue 提醒。到期工作会等待 Agent 完全 idle,再通过 `followup()` 进入普通的下一轮队列;它绝不会中途引导当前轮次,也没有独立 Web 回执([对话式交付](../simplification/2026-08-09-conversational-schedule-delivery.zh.md))。 +用户可见边界是 `session-local`:原 Session 只有在 live 时才会准时运行提醒,cold 期间不发送任何外部通知;该 Session 再次 live 后才会处理 overdue 提醒。到期工作会等待 Agent 完全 idle,再通过 `followup()` 进入普通的下一轮队列;它绝不会中途引导当前轮次,也没有独立 Web 回执([对话式交付](../../archived/simplification/2026-08-09-conversational-schedule-delivery.md))。 | 场景 | 持久事实 | live 行为 | 用户可见结果 | | --- | --- | --- | --- | @@ -28,7 +28,7 @@ Status: implemented 版本 1 `schedule/change` stream 是唯一持久的 Schedule 权威。create 记录拥有一个 Session 内不复用的品牌 id、trim 后的提示词、规则判别字段和 UTC 目标。delete 与一次性 dispatch 是终结转换。Every dispatch 会存储 id 与决策时点,使 fold 将该记录直接推进到错过的发生时点之后。严格 decoder 与纯 fold 会拒绝未知版本、额外字段、重复使用的 id、形状不匹配的 dispatch,以及针对非活动记录的转换。普通 Session 折叠完整 stream;fork 只折叠传入 projection 初始化的 `inheritedEventCount` 位置及其后的 event。 -`ctx.sessionProjections` 存在时,Schedule 会注册一个复用同一 transition 的严格单元,并发布完整的活动 `ScheduleRecord[]`;共享的 [projection state 决策](../architecture/2026-08-19-session-projection-state-and-client-views.zh.md)拥有其初始化与 restore 约定。损坏的持久输入会使既有读取路径失败,而不会产生部分数组。浏览器安全的记录词汇通过纯类型子路径 `@deepseek-ai/dsh-schedule/client` 暴露。 +`ctx.sessionProjections` 存在时,Schedule 会注册一个复用同一 transition 的严格单元,并发布完整的活动 `ScheduleRecord[]`;共享的 [projection state 决策](../../archived/architecture/2026-08-19-session-projection-state-and-client-views.md)拥有其初始化与 restore 约定。损坏的持久输入会使既有读取路径失败,而不会产生部分数组。浏览器安全的记录词汇通过纯类型子路径 `@deepseek-ai/dsh-schedule/client` 暴露。 当前规则 union 接受非空提示词和恰好一个 selector。`after_seconds` 是正的安全整数 delay,其记录为 `{ id, kind: 'after', prompt, afterSeconds, scheduledAt }`。`at` 可以是带 `Z` 或数值偏移量且严格符合 RFC 3339 的值,也可以是带显式时区的结构化 `{ date, time, time_zone }`;其记录为 `{ id, kind: 'at', prompt, scheduledAt }`。`every_seconds` 是不小于 300 的安全整数,其 `{ id, kind: 'every', prompt, everySeconds, scheduledAt }` 记录始终与从创建时刻加一个间隔开始的序列对齐。一次性 dispatch 只存储 id;Every dispatch 存储 `id + acceptedAt`。工具值派生 `scheduled` 或 `overdue`,并包含 `deliveryMode: 'session-local'`。 @@ -48,7 +48,7 @@ Every 是固定时长间隔,而不是日历规则。第一个目标是创建 所有不同的逾期 Every 记录都会参与同一个批次,每条记录各自提供一个最新发生时点,并共享同一个 `acceptedAt`。系统不存在跨记录的冷却、门控、配额或保留的批次时间戳。至少 5 分钟的限制约束了唤醒与模型请求频率。如果下一个序列点会超出四位年份存储范围,dispatch 会终结该记录。 -日历表达式与 Cron 表达式被有意排除([有界周期性简化](../simplification/2026-08-09-bounded-fixed-rate-schedule.zh.md));支持这些表达式需要增加时区敏感的日历语言、求值器依赖、校验范围和 tzdata 回放策略,而这些都与固定速率提醒无关。 +日历表达式与 Cron 表达式被有意排除([有界周期性简化](../../archived/simplification/2026-08-09-bounded-fixed-rate-schedule.md));支持这些表达式需要增加时区敏感的日历语言、求值器依赖、校验范围和 tzdata 回放策略,而这些都与固定速率提醒无关。 ### Live 交付生命周期 diff --git a/.agents/notes/implemented/feature/2026-08-05-feedback-gated-session-telemetry.i18n.yaml b/.agents/notes/implemented/feature/2026-08-05-feedback-gated-session-telemetry.i18n.yaml deleted file mode 100644 index ef274595bd..0000000000 --- a/.agents/notes/implemented/feature/2026-08-05-feedback-gated-session-telemetry.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-08-05-feedback-gated-session-telemetry.md -2026-08-05-feedback-gated-session-telemetry.md: 1ca8a9d3c5a020d1f0aa790b6db03bedd73728cc -2026-08-05-feedback-gated-session-telemetry.zh.md: 4be80fba3f95b62c91adad651798af3f167a9260 diff --git a/.agents/notes/implemented/feature/2026-08-05-per-agent-tool-presentation.i18n.yaml b/.agents/notes/implemented/feature/2026-08-05-per-agent-tool-presentation.i18n.yaml deleted file mode 100644 index 29480a8bfb..0000000000 --- a/.agents/notes/implemented/feature/2026-08-05-per-agent-tool-presentation.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-08-05-per-agent-tool-presentation.md -2026-08-05-per-agent-tool-presentation.md: b85af656040ef365bb6ee6bfcd3d47686180d4d4 -2026-08-05-per-agent-tool-presentation.zh.md: e6d81ae072df905fddaa655da06abbb4f1ab73e6 diff --git a/.agents/notes/implemented/feature/2026-08-05-pwsh-ui-bash-parity.i18n.yaml b/.agents/notes/implemented/feature/2026-08-05-pwsh-ui-bash-parity.i18n.yaml deleted file mode 100644 index 92c406c8ce..0000000000 --- a/.agents/notes/implemented/feature/2026-08-05-pwsh-ui-bash-parity.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-08-05-pwsh-ui-bash-parity.md -2026-08-05-pwsh-ui-bash-parity.md: ee7a6146fca4123f8cbeeb337b4c23b0788e5e3e -2026-08-05-pwsh-ui-bash-parity.zh.md: cc6e7fb8c350dcabad57d5e434eb12776b68666d diff --git a/.agents/notes/implemented/feature/2026-08-05-web-preview-product-badge.i18n.yaml b/.agents/notes/implemented/feature/2026-08-05-web-preview-product-badge.i18n.yaml deleted file mode 100644 index bd7c5a1cd6..0000000000 --- a/.agents/notes/implemented/feature/2026-08-05-web-preview-product-badge.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-08-05-web-preview-product-badge.md -2026-08-05-web-preview-product-badge.md: c20dedf8caa497d17a577cf46261c6a24c09a1ce -2026-08-05-web-preview-product-badge.zh.md: 415a7cb3eb02030ef5481f4eba9110b56547ce64 diff --git a/.agents/notes/implemented/feature/2026-08-06-agent-teams-web.i18n.yaml b/.agents/notes/implemented/feature/2026-08-06-agent-teams-web.i18n.yaml deleted file mode 100644 index 992a4522fe..0000000000 --- a/.agents/notes/implemented/feature/2026-08-06-agent-teams-web.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-08-06-agent-teams-web.md -2026-08-06-agent-teams-web.md: 5002146f7db67f7199102b286a85da0148864fa9 -2026-08-06-agent-teams-web.zh.md: 7b55ac0a137bb2c8d27a6e3dacc3f0949c0e5820 diff --git a/.agents/notes/implemented/feature/2026-08-06-continuable-subagent-interrupt.i18n.yaml b/.agents/notes/implemented/feature/2026-08-06-continuable-subagent-interrupt.i18n.yaml index b37fb024be..4ea0331b57 100644 --- a/.agents/notes/implemented/feature/2026-08-06-continuable-subagent-interrupt.i18n.yaml +++ b/.agents/notes/implemented/feature/2026-08-06-continuable-subagent-interrupt.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-08-06-continuable-subagent-interrupt.md -2026-08-06-continuable-subagent-interrupt.md: e7b2926cec32679fa66392381da6c0cb551fc324 -2026-08-06-continuable-subagent-interrupt.zh.md: 45f26a004819dad6212b4b901ddd7bc8b07bc306 +2026-08-06-continuable-subagent-interrupt.md: c59601fd486d40c3a9367f2af132fb30207c35c9 +2026-08-06-continuable-subagent-interrupt.zh.md: b56b94e30fc544e77c0be99dcb759e56e47ef5d4 diff --git a/.agents/notes/implemented/feature/2026-08-06-continuable-subagent-interrupt.md b/.agents/notes/implemented/feature/2026-08-06-continuable-subagent-interrupt.md index e7b2926cec..c59601fd48 100644 --- a/.agents/notes/implemented/feature/2026-08-06-continuable-subagent-interrupt.md +++ b/.agents/notes/implemented/feature/2026-08-06-continuable-subagent-interrupt.md @@ -41,7 +41,7 @@ The address-only RPC exposes one bit of live residency: an absent target is acce The Web surface keeps Send and Stop as independent actions for a running continuable child: the client `Session.cancel()` routes Stop through `subagent.interrupt` (one-shot addresses stay uncancellable, ordinary sessions keep their existing primary Send/Stop toggle through `session.cancel`), while Send continues to queue follow-ups. A running parent-offline continuable child keeps the default composer with input and Send disabled but Stop reachable, returning to the read-only takeover once it stops ([Web subagent conversations](2026-07-27-web-subagent-conversations.md) owns the surrounding catalog and composer contract). -The model-facing `interrupt_agent(agent_id)` tool in `dsh-tool-subagent-control` passes `exec.agent` as the `ancestor` authority and adds none of its own: the core primitive verifies live registry identity and recorded lineage, so the tool can name a direct child or a deeper descendant with the same generic `agent_id` parameter — deliberately not `subagent_id`, which would imply direct children only. Discovery rides `list_agents({ scope: 'descendants' })` over the new `SubagentRuntime.listDescendants()` one-trace pre-order walk with verified `parentId`/`depth` per entry ([durable catalog note](2026-07-22-durable-subagent-catalog-and-list-agents.md) owns the listing contract); discovery is a hint, never authority. `send_message` keeps its exact-direct-parent authority — only interrupt is ancestor-wide. +The model-facing `interrupt_agent(agent_id)` tool in `dsh-tool-subagent-control` passes `exec.agent` as the `ancestor` authority and adds none of its own: the core primitive verifies live registry identity and recorded lineage, so the tool can name a direct child or a deeper descendant with the same generic `agent_id` parameter — deliberately not `subagent_id`, which would imply direct children only. Discovery rides `list_agents({ scope: 'descendants' })` over the new `SubagentRuntime.listDescendants()` one-trace pre-order walk with verified `parentId`/`depth` per entry ([durable catalog note](../../archived/feature/2026-07-22-durable-subagent-catalog-and-list-agents.md) owns the listing contract); discovery is a hint, never authority. `send_message` keeps its exact-direct-parent authority — only interrupt is ancestor-wide. ## Testing diff --git a/.agents/notes/implemented/feature/2026-08-06-continuable-subagent-interrupt.zh.md b/.agents/notes/implemented/feature/2026-08-06-continuable-subagent-interrupt.zh.md index 45f26a0048..b56b94e30f 100644 --- a/.agents/notes/implemented/feature/2026-08-06-continuable-subagent-interrupt.zh.md +++ b/.agents/notes/implemented/feature/2026-08-06-continuable-subagent-interrupt.zh.md @@ -41,7 +41,7 @@ Host RPC `subagent.interrupt` 接收 continuable 的 `SubagentAddress` 并返回 在 Web 侧,正在运行的 continuable child 使用相互独立的 Send 与 Stop 操作:客户端 `Session.cancel()` 将 Stop 路由到 `subagent.interrupt`(one-shot 地址保持不可取消,普通会话仍通过 `session.cancel` 保留既有的 primary Send/Stop 切换),同时 Send 继续将后续消息加入队列。parent 离线但仍在运行的 continuable child 保留默认 composer,禁用输入区与 Send,但 Stop 仍然可达;停止后恢复为只读接管界面(周边目录与 composer 约定由 [Web subagent 对话](2026-07-27-web-subagent-conversations.zh.md)拥有)。 -`dsh-tool-subagent-control` 中面向模型的 `interrupt_agent(agent_id)` 工具把 `exec.agent` 作为 `ancestor` 授权传入,自身不增加任何权限:核心原语校验在线注册表身份与记录的 lineage,因此该工具可以用同一个通用 `agent_id` 参数指定直接 child 或更深的后代——刻意不用会暗示仅限直接 child 的 `subagent_id`。发现依赖 `list_agents({ scope: 'descendants' })`,其底层是新的 `SubagentRuntime.listDescendants()` 单次追踪 pre-order 遍历,每个条目带经校验的 `parentId`/`depth`(列表约定由[持久化目录 note](2026-07-22-durable-subagent-catalog-and-list-agents.zh.md)拥有);发现只是提示,绝非权限。`send_message` 保持其确切直接 parent 权限——只有中断是 ancestor 级的。 +`dsh-tool-subagent-control` 中面向模型的 `interrupt_agent(agent_id)` 工具把 `exec.agent` 作为 `ancestor` 授权传入,自身不增加任何权限:核心原语校验在线注册表身份与记录的 lineage,因此该工具可以用同一个通用 `agent_id` 参数指定直接 child 或更深的后代——刻意不用会暗示仅限直接 child 的 `subagent_id`。发现依赖 `list_agents({ scope: 'descendants' })`,其底层是新的 `SubagentRuntime.listDescendants()` 单次追踪 pre-order 遍历,每个条目带经校验的 `parentId`/`depth`(列表约定由[持久化目录 note](../../archived/feature/2026-07-22-durable-subagent-catalog-and-list-agents.md)拥有);发现只是提示,绝非权限。`send_message` 保持其确切直接 parent 权限——只有中断是 ancestor 级的。 ## 测试 diff --git a/.agents/notes/implemented/feature/2026-08-06-mcp-client-auto-reconnect.i18n.yaml b/.agents/notes/implemented/feature/2026-08-06-mcp-client-auto-reconnect.i18n.yaml deleted file mode 100644 index 50b48a757c..0000000000 --- a/.agents/notes/implemented/feature/2026-08-06-mcp-client-auto-reconnect.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-08-06-mcp-client-auto-reconnect.md -2026-08-06-mcp-client-auto-reconnect.md: 0f9119c62087a32e516583b72f841387c05105c1 -2026-08-06-mcp-client-auto-reconnect.zh.md: 62be78821d7f6e489e613f698d77a438aa1e10c7 diff --git a/.agents/notes/implemented/feature/2026-08-06-resolved-theme-color-metadata.i18n.yaml b/.agents/notes/implemented/feature/2026-08-06-resolved-theme-color-metadata.i18n.yaml deleted file mode 100644 index 8f72736ce9..0000000000 --- a/.agents/notes/implemented/feature/2026-08-06-resolved-theme-color-metadata.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-08-06-resolved-theme-color-metadata.md -2026-08-06-resolved-theme-color-metadata.md: 2f7a6f0bde5e75aeb6769939cae54d5319aa5bae -2026-08-06-resolved-theme-color-metadata.zh.md: 0312794c607b59f4772d498e1533e0af70b9fbbe diff --git a/.agents/notes/implemented/feature/2026-08-06-session-completed-done-dot.i18n.yaml b/.agents/notes/implemented/feature/2026-08-06-session-completed-done-dot.i18n.yaml deleted file mode 100644 index 6db5825af2..0000000000 --- a/.agents/notes/implemented/feature/2026-08-06-session-completed-done-dot.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-08-06-session-completed-done-dot.md -2026-08-06-session-completed-done-dot.md: bd6911ce137f1272090c86c029710c9f4054ee6d -2026-08-06-session-completed-done-dot.zh.md: 41da7d126a29a5f9341ca8b87da343fdbff7601c diff --git a/.agents/notes/implemented/feature/2026-08-06-web-install-manifest.i18n.yaml b/.agents/notes/implemented/feature/2026-08-06-web-install-manifest.i18n.yaml deleted file mode 100644 index 9b524b7654..0000000000 --- a/.agents/notes/implemented/feature/2026-08-06-web-install-manifest.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-08-06-web-install-manifest.md -2026-08-06-web-install-manifest.md: 9efddc03afb1f869db7e06e6f215dd64eb3d7553 -2026-08-06-web-install-manifest.zh.md: a27bd46a052ac4f81e0ea05086ceb5c8ad720296 diff --git a/.agents/notes/implemented/feature/2026-08-06-web-queue-steer-all-gesture.i18n.yaml b/.agents/notes/implemented/feature/2026-08-06-web-queue-steer-all-gesture.i18n.yaml deleted file mode 100644 index e7612e322b..0000000000 --- a/.agents/notes/implemented/feature/2026-08-06-web-queue-steer-all-gesture.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-08-06-web-queue-steer-all-gesture.md -2026-08-06-web-queue-steer-all-gesture.md: c51e837d37b61a73f9602445daea9fbdfc77a299 -2026-08-06-web-queue-steer-all-gesture.zh.md: b0009a7a51ebe89f61d1a4b995b1138a7247d266 diff --git a/.agents/notes/implemented/feature/2026-08-06-web-skill-tool-row.i18n.yaml b/.agents/notes/implemented/feature/2026-08-06-web-skill-tool-row.i18n.yaml deleted file mode 100644 index e340548145..0000000000 --- a/.agents/notes/implemented/feature/2026-08-06-web-skill-tool-row.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-08-06-web-skill-tool-row.md -2026-08-06-web-skill-tool-row.md: a78afd5d375d2cecd806ade663b4a5b7511ae279 -2026-08-06-web-skill-tool-row.zh.md: 469f9510ea5f31ceb8fb177432b090d91c8a5df8 diff --git a/.agents/notes/implemented/feature/2026-08-07-default-model-follows-the-picker.i18n.yaml b/.agents/notes/implemented/feature/2026-08-07-default-model-follows-the-picker.i18n.yaml deleted file mode 100644 index c8be4143b4..0000000000 --- a/.agents/notes/implemented/feature/2026-08-07-default-model-follows-the-picker.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-08-07-default-model-follows-the-picker.md -2026-08-07-default-model-follows-the-picker.md: b2d9c0fe58d9219fb33f749563d3d1fb10a20a8a -2026-08-07-default-model-follows-the-picker.zh.md: 7d3e5bc924f20e47b4d6a5e609c0e3c984ed6921 diff --git a/.agents/notes/implemented/feature/2026-08-07-feedback-acknowledgement-sharing-disclosure.i18n.yaml b/.agents/notes/implemented/feature/2026-08-07-feedback-acknowledgement-sharing-disclosure.i18n.yaml deleted file mode 100644 index befa6b7b2a..0000000000 --- a/.agents/notes/implemented/feature/2026-08-07-feedback-acknowledgement-sharing-disclosure.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-08-07-feedback-acknowledgement-sharing-disclosure.md -2026-08-07-feedback-acknowledgement-sharing-disclosure.md: daba82708b14babe0366549fc23f7dc3e9fc0e7d -2026-08-07-feedback-acknowledgement-sharing-disclosure.zh.md: 2be6c95dd5f02b7b7e8831bbc8a8932adc2645af diff --git a/.agents/notes/implemented/feature/2026-08-07-web-inline-file-mentions.i18n.yaml b/.agents/notes/implemented/feature/2026-08-07-web-inline-file-mentions.i18n.yaml deleted file mode 100644 index 22ffe8555d..0000000000 --- a/.agents/notes/implemented/feature/2026-08-07-web-inline-file-mentions.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-08-07-web-inline-file-mentions.md -2026-08-07-web-inline-file-mentions.md: 0c7341e9aec688a0661fedb18731a1c172215f45 -2026-08-07-web-inline-file-mentions.zh.md: 3483672b42ccfda819d4c42453fc6609910ca1d3 diff --git a/.agents/notes/implemented/feature/2026-08-08-pi-ai-per-model-reasoning-declarations.i18n.yaml b/.agents/notes/implemented/feature/2026-08-08-pi-ai-per-model-reasoning-declarations.i18n.yaml deleted file mode 100644 index b7f4e2e031..0000000000 --- a/.agents/notes/implemented/feature/2026-08-08-pi-ai-per-model-reasoning-declarations.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-08-08-pi-ai-per-model-reasoning-declarations.md -2026-08-08-pi-ai-per-model-reasoning-declarations.md: 0e8d5c3ca4017e89332f6b22e4eb0a06062918e6 -2026-08-08-pi-ai-per-model-reasoning-declarations.zh.md: c4c060b21c8b7ee5b11b5e98c8d7da0ba6c032fc diff --git a/.agents/notes/implemented/feature/2026-08-08-user-explicit-skill-invocation.i18n.yaml b/.agents/notes/implemented/feature/2026-08-08-user-explicit-skill-invocation.i18n.yaml deleted file mode 100644 index 9740b305f9..0000000000 --- a/.agents/notes/implemented/feature/2026-08-08-user-explicit-skill-invocation.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-08-08-user-explicit-skill-invocation.md -2026-08-08-user-explicit-skill-invocation.md: 87f4d04fb4bc34cba2ecb5e362d9a86270ab5195 -2026-08-08-user-explicit-skill-invocation.zh.md: 7b1aa18808054edc38b6801e028de1f0f0605d4a diff --git a/.agents/notes/implemented/feature/2026-08-08-windows-acl-restricted-token-sandbox.i18n.yaml b/.agents/notes/implemented/feature/2026-08-08-windows-acl-restricted-token-sandbox.i18n.yaml index 2d2fc47c20..8e82a9d97a 100644 --- a/.agents/notes/implemented/feature/2026-08-08-windows-acl-restricted-token-sandbox.i18n.yaml +++ b/.agents/notes/implemented/feature/2026-08-08-windows-acl-restricted-token-sandbox.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-08-08-windows-acl-restricted-token-sandbox.md -2026-08-08-windows-acl-restricted-token-sandbox.md: f01c2f18cde78a561ccdd289a117f25916550ea4 -2026-08-08-windows-acl-restricted-token-sandbox.zh.md: 99e8a27f72544d01adb97d86c8397c562b171458 +2026-08-08-windows-acl-restricted-token-sandbox.md: a70fd8839c371c11b6660229146306f7c5aa642a +2026-08-08-windows-acl-restricted-token-sandbox.zh.md: 892eabf17c63b7ceaa9bb8b21ac8c6e71a2f6112 diff --git a/.agents/notes/implemented/feature/2026-08-08-windows-acl-restricted-token-sandbox.md b/.agents/notes/implemented/feature/2026-08-08-windows-acl-restricted-token-sandbox.md index f01c2f18cd..a70fd8839c 100644 --- a/.agents/notes/implemented/feature/2026-08-08-windows-acl-restricted-token-sandbox.md +++ b/.agents/notes/implemented/feature/2026-08-08-windows-acl-restricted-token-sandbox.md @@ -40,4 +40,4 @@ The product-visible Windows roster flip is win32-only, so keyless snapshots that ## Related -The [pwsh executor decision](2026-08-01-pwsh-tool-and-executor.md) owns the pwsh-sandbox/tool-pwsh dialect split this rung consumes. +The [pwsh executor decision](../../archived/feature/2026-08-01-pwsh-tool-and-executor.md) owns the pwsh-sandbox/tool-pwsh dialect split this rung consumes. diff --git a/.agents/notes/implemented/feature/2026-08-08-windows-acl-restricted-token-sandbox.zh.md b/.agents/notes/implemented/feature/2026-08-08-windows-acl-restricted-token-sandbox.zh.md index 99e8a27f72..892eabf17c 100644 --- a/.agents/notes/implemented/feature/2026-08-08-windows-acl-restricted-token-sandbox.zh.md +++ b/.agents/notes/implemented/feature/2026-08-08-windows-acl-restricted-token-sandbox.zh.md @@ -40,4 +40,4 @@ landstrip 评估在实现前已被否决(未经实战检验;自建 launcher ## Related -[pwsh 执行器决策](2026-08-01-pwsh-tool-and-executor.zh.md)拥有本档所消费的 pwsh-sandbox/tool-pwsh 方言划分。 +[pwsh 执行器决策](../../archived/feature/2026-08-01-pwsh-tool-and-executor.md)拥有本档所消费的 pwsh-sandbox/tool-pwsh 方言划分。 diff --git a/.agents/notes/implemented/feature/2026-08-09-parallel-subagent-delegations.i18n.yaml b/.agents/notes/implemented/feature/2026-08-09-parallel-subagent-delegations.i18n.yaml deleted file mode 100644 index 6b942107c6..0000000000 --- a/.agents/notes/implemented/feature/2026-08-09-parallel-subagent-delegations.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-08-09-parallel-subagent-delegations.md -2026-08-09-parallel-subagent-delegations.md: 7e6f933749b3a65286ab4c428fc3e7d682e108ad -2026-08-09-parallel-subagent-delegations.zh.md: 1072697355a8a8a5d1b585f6d984063d9aca5617 diff --git a/.agents/notes/implemented/feature/2026-08-10-continuable-subagent-policy-inheritance.i18n.yaml b/.agents/notes/implemented/feature/2026-08-10-continuable-subagent-policy-inheritance.i18n.yaml deleted file mode 100644 index 470b1a1945..0000000000 --- a/.agents/notes/implemented/feature/2026-08-10-continuable-subagent-policy-inheritance.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-08-10-continuable-subagent-policy-inheritance.md -2026-08-10-continuable-subagent-policy-inheritance.md: e567c0557be45ba9e0e0515d742bd6f99a5f10e7 -2026-08-10-continuable-subagent-policy-inheritance.zh.md: 5c9cc677e9154d5b14214979283c00fd28a4c2df diff --git a/.agents/notes/implemented/feature/2026-08-10-durable-workflow-runs-in-chat.i18n.yaml b/.agents/notes/implemented/feature/2026-08-10-durable-workflow-runs-in-chat.i18n.yaml deleted file mode 100644 index 4b1cb5303a..0000000000 --- a/.agents/notes/implemented/feature/2026-08-10-durable-workflow-runs-in-chat.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-08-10-durable-workflow-runs-in-chat.md -2026-08-10-durable-workflow-runs-in-chat.md: 817fd4debd93a4768904e3934456ebdd4bdaa896 -2026-08-10-durable-workflow-runs-in-chat.zh.md: 1a31e54dc9bf52884c118884c24c6856aad399a0 diff --git a/.agents/notes/implemented/feature/2026-08-10-minimal-read-image-tool.i18n.yaml b/.agents/notes/implemented/feature/2026-08-10-minimal-read-image-tool.i18n.yaml deleted file mode 100644 index 4bd1ffe4c8..0000000000 --- a/.agents/notes/implemented/feature/2026-08-10-minimal-read-image-tool.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-08-10-minimal-read-image-tool.md -2026-08-10-minimal-read-image-tool.md: fa6cbca90e2e20b28412311cf1b0fc34f85368b3 -2026-08-10-minimal-read-image-tool.zh.md: 0629bac744f28408ec7d8b9f8348316c69aa2521 diff --git a/.agents/notes/implemented/feature/2026-08-10-telemetry-default-off.i18n.yaml b/.agents/notes/implemented/feature/2026-08-10-telemetry-default-off.i18n.yaml deleted file mode 100644 index 823b1327b0..0000000000 --- a/.agents/notes/implemented/feature/2026-08-10-telemetry-default-off.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-08-10-telemetry-default-off.md -2026-08-10-telemetry-default-off.md: 1bc9719f7036509f1fff8c28f0607669505280ad -2026-08-10-telemetry-default-off.zh.md: 8f8bbb57810125059c177dc1c94f7631040a1d58 diff --git a/.agents/notes/implemented/feature/2026-08-10-web-plugin-configuration.i18n.yaml b/.agents/notes/implemented/feature/2026-08-10-web-plugin-configuration.i18n.yaml deleted file mode 100644 index 29dfe4c8aa..0000000000 --- a/.agents/notes/implemented/feature/2026-08-10-web-plugin-configuration.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-08-10-web-plugin-configuration.md -2026-08-10-web-plugin-configuration.md: 8b8d231fd2920612c7d9d8c146253c1cb6e1c8a0 -2026-08-10-web-plugin-configuration.zh.md: 70a3b68730a750f03187e5a17e31765b36b8c879 diff --git a/.agents/notes/implemented/feature/2026-08-10-web-session-log-export.i18n.yaml b/.agents/notes/implemented/feature/2026-08-10-web-session-log-export.i18n.yaml deleted file mode 100644 index f63c56c1a1..0000000000 --- a/.agents/notes/implemented/feature/2026-08-10-web-session-log-export.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-08-10-web-session-log-export.md -2026-08-10-web-session-log-export.md: dceee66d0a7ee74585a424eee4e1a6be8e0182ad -2026-08-10-web-session-log-export.zh.md: bfd4254b2be5f2448a3ca7c3b4d200d8a15bf09a diff --git a/.agents/notes/implemented/feature/2026-08-11-background-first-continuable-delegation.i18n.yaml b/.agents/notes/implemented/feature/2026-08-11-background-first-continuable-delegation.i18n.yaml deleted file mode 100644 index a1fc330108..0000000000 --- a/.agents/notes/implemented/feature/2026-08-11-background-first-continuable-delegation.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-08-11-background-first-continuable-delegation.md -2026-08-11-background-first-continuable-delegation.md: a3dcd75c820742eda622b04ce6077b444f66846b -2026-08-11-background-first-continuable-delegation.zh.md: f0cbdca1c1cba7400e6f9926453fb640bde575bb diff --git a/.agents/notes/implemented/feature/2026-08-11-background-job-completion-wakes-an-idle-owner.i18n.yaml b/.agents/notes/implemented/feature/2026-08-11-background-job-completion-wakes-an-idle-owner.i18n.yaml index 18242432fd..086b337437 100644 --- a/.agents/notes/implemented/feature/2026-08-11-background-job-completion-wakes-an-idle-owner.i18n.yaml +++ b/.agents/notes/implemented/feature/2026-08-11-background-job-completion-wakes-an-idle-owner.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-08-11-background-job-completion-wakes-an-idle-owner.md -2026-08-11-background-job-completion-wakes-an-idle-owner.md: 15ff0fbdc173f6cadaa2f75e265effe61e512f15 -2026-08-11-background-job-completion-wakes-an-idle-owner.zh.md: 9caafa261b9c3b89dbf5e3c43a71fe03bdd0b484 +2026-08-11-background-job-completion-wakes-an-idle-owner.md: cb724d95f85900b3c55fdebfdc335e9da6439d29 +2026-08-11-background-job-completion-wakes-an-idle-owner.zh.md: 1107fa2c8fdd9d3e4e45031c54fb87f5aac8ea18 diff --git a/.agents/notes/implemented/feature/2026-08-11-background-job-completion-wakes-an-idle-owner.md b/.agents/notes/implemented/feature/2026-08-11-background-job-completion-wakes-an-idle-owner.md index 15ff0fbdc1..cb724d95f8 100644 --- a/.agents/notes/implemented/feature/2026-08-11-background-job-completion-wakes-an-idle-owner.md +++ b/.agents/notes/implemented/feature/2026-08-11-background-job-completion-wakes-an-idle-owner.md @@ -12,7 +12,7 @@ The gap was recorded as a limitation rather than reasoned about, so the fallback This supersedes one fact of the [background-job runtime decision](../architecture/2026-06-20-generic-long-running-tool-runtime.md) — that completion never wakes an idle owner — and adds teardown as a `reported` setter. That note keeps every other task-runtime decision and is updated in place rather than replaced. -The delivery machinery was never the obstacle. `Agent.send(message, target, wakeup)` has covered the `target` × `wakeup` matrix since the [unified send decision](../architecture/2026-07-22-unified-send-and-coalesced-user-messages.md), and `wakeDriver()` already handles idle, maintenance, and cancelled-converging phases. The missing piece was the policy choice of which lane a completion takes, plus the bound that choice needs. +The delivery machinery was never the obstacle. `Agent.send(message, target, wakeup)` has covered the `target` × `wakeup` matrix since the [unified send decision](../../archived/architecture/2026-07-22-unified-send-and-coalesced-user-messages.md), and `wakeDriver()` already handles idle, maintenance, and cancelled-converging phases. The missing piece was the policy choice of which lane a completion takes, plus the bound that choice needs. ## Decision diff --git a/.agents/notes/implemented/feature/2026-08-11-background-job-completion-wakes-an-idle-owner.zh.md b/.agents/notes/implemented/feature/2026-08-11-background-job-completion-wakes-an-idle-owner.zh.md index 9caafa261b..1107fa2c8f 100644 --- a/.agents/notes/implemented/feature/2026-08-11-background-job-completion-wakes-an-idle-owner.zh.md +++ b/.agents/notes/implemented/feature/2026-08-11-background-job-completion-wakes-an-idle-owner.zh.md @@ -12,7 +12,7 @@ Status: implemented 本决策取代[后台任务运行时决策](../architecture/2026-06-20-generic-long-running-tool-runtime.zh.md)中的一条事实——完成永不唤醒空闲所有者——并把 teardown 加为 `reported` 的置位方。那份 note 仍拥有其余全部任务运行时决策,因此就地更新而非替换。 -交付机制从来不是障碍。自[统一 send 决策](../architecture/2026-07-22-unified-send-and-coalesced-user-messages.zh.md)起,`Agent.send(message, target, wakeup)` 就覆盖了 `target` × `wakeup` 矩阵,`wakeDriver()` 也已经处理 idle、maintenance 和已取消未收敛三种相位。缺的是「一次完成走哪条通道」这一策略选择,以及该选择所需的界。 +交付机制从来不是障碍。自[统一 send 决策](../../archived/architecture/2026-07-22-unified-send-and-coalesced-user-messages.md)起,`Agent.send(message, target, wakeup)` 就覆盖了 `target` × `wakeup` 矩阵,`wakeDriver()` 也已经处理 idle、maintenance 和已取消未收敛三种相位。缺的是「一次完成走哪条通道」这一策略选择,以及该选择所需的界。 ## 决策 diff --git a/.agents/notes/implemented/feature/2026-08-11-message-feedback-web-surface.i18n.yaml b/.agents/notes/implemented/feature/2026-08-11-message-feedback-web-surface.i18n.yaml deleted file mode 100644 index 37cb99a5b8..0000000000 --- a/.agents/notes/implemented/feature/2026-08-11-message-feedback-web-surface.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-08-11-message-feedback-web-surface.md -2026-08-11-message-feedback-web-surface.md: a1fbce695ffa8e513e85842b50f629afde88ac01 -2026-08-11-message-feedback-web-surface.zh.md: a6e1b7af8423f1328aa61c6b4404f73309e6a4c3 diff --git a/.agents/notes/implemented/feature/2026-08-11-minimal-profiles-bare-two-tool-runtime.i18n.yaml b/.agents/notes/implemented/feature/2026-08-11-minimal-profiles-bare-two-tool-runtime.i18n.yaml index 575a930f99..5a8b133ed6 100644 --- a/.agents/notes/implemented/feature/2026-08-11-minimal-profiles-bare-two-tool-runtime.i18n.yaml +++ b/.agents/notes/implemented/feature/2026-08-11-minimal-profiles-bare-two-tool-runtime.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-08-11-minimal-profiles-bare-two-tool-runtime.md -2026-08-11-minimal-profiles-bare-two-tool-runtime.md: ffe8e799e1ba5a71939e3a17d484afd209b4014f -2026-08-11-minimal-profiles-bare-two-tool-runtime.zh.md: 587ba696382575244a75f23fe69c14252caf7544 +2026-08-11-minimal-profiles-bare-two-tool-runtime.md: 9e4d476c36ab6f920481b1281058d888710a2ef5 +2026-08-11-minimal-profiles-bare-two-tool-runtime.zh.md: 761c384f1656ce66d027eb2b13c9dbc4f20f3686 diff --git a/.agents/notes/implemented/feature/2026-08-11-minimal-profiles-bare-two-tool-runtime.md b/.agents/notes/implemented/feature/2026-08-11-minimal-profiles-bare-two-tool-runtime.md index ffe8e799e1..9e4d476c36 100644 --- a/.agents/notes/implemented/feature/2026-08-11-minimal-profiles-bare-two-tool-runtime.md +++ b/.agents/notes/implemented/feature/2026-08-11-minimal-profiles-bare-two-tool-runtime.md @@ -12,9 +12,9 @@ The two launch paths also have different configuration owners. Web mounts a per- ## Decision -The shipped Web minimal preset exposes persistent `bash` and `str_replace_editor`; the standalone profile exposes persistent `bash` on Linux/macOS or `pwsh` on Windows, plus the same editor. Both mount no context-compaction provider, suppress every `dsh-system-prompt` runtime-context contribution for fresh sessions, and run the editor against `@deepseek-ai/dsh-fs-local`. The Web preset isolates `ctx.fs` inside the agent entry and mounts `fs-local` beside the editor, so other Web agents retain the host filesystem provider. Its persona remains the fixed complete prompt owned by the earlier [minimal-preset composition decision](../bug-fix/2026-08-10-minimal-preset-owns-rl-composition.md) and applies runtime-context suppression only to that agent scope. The standalone spine forwards the same setting to its process-owned system-prompt service. The Web host retains its sandbox and approval services; the standalone profile mounts a danger-full-access sandbox policy and no approval service. Neither contributes model-facing policy context. +The shipped Web minimal preset exposes persistent `bash` and `str_replace_editor`; the standalone profile exposes persistent `bash` on Linux/macOS or `pwsh` on Windows, plus the same editor. Both mount no context-compaction provider, suppress every `dsh-system-prompt` runtime-context contribution for fresh sessions, and run the editor against `@deepseek-ai/dsh-fs-local`. The Web preset isolates `ctx.fs` inside the agent entry and mounts `fs-local` beside the editor, so other Web agents retain the host filesystem provider. Its persona remains the fixed complete prompt owned by the earlier [minimal-preset composition decision](../../archived/bug-fix/2026-08-10-minimal-preset-owns-rl-composition.md) and applies runtime-context suppression only to that agent scope. The standalone spine forwards the same setting to its process-owned system-prompt service. The Web host retains its sandbox and approval services; the standalone profile mounts a danger-full-access sandbox policy and no approval service. Neither contributes model-facing policy context. -The standalone [`@deepseek-ai/dsh-sdk-minimal` bundle](../../../../packages/bundle/sdk-minimal/README.md) remains a complete JSON-RPC process composition behind `dsh --profile sdk-minimal`. It mounts SDK startup and JSON-RPC serving, the local PTY and subprocess services required by the platform-selected persistent shell, `fs-local`, that shell's tool consumer, the editor, and uncompressed JSONL persistence under `$DSH_HOME/sessions`. It does not mount `token-meter`, `compaction-basic`, `fs-sandbox`, or `fs-observation-policy`. The persistent shell consumes the profile's danger-full-access sandbox policy; the editor is not confined by that policy. The [standalone-profile decision](../architecture/2026-08-24-standalone-sdk-minimal-profile.md) owns this bundle placement and its separation from `dsh-base`. +The standalone [`@deepseek-ai/dsh-sdk-minimal` bundle](../../../../packages/bundle/sdk-minimal/README.md) remains a complete JSON-RPC process composition behind `dsh --profile sdk-minimal`. It mounts SDK startup and JSON-RPC serving, the local PTY and subprocess services required by the platform-selected persistent shell, `fs-local`, that shell's tool consumer, the editor, and uncompressed JSONL persistence under `$DSH_HOME/sessions`. It does not mount `token-meter`, `compaction-basic`, `fs-sandbox`, or `fs-observation-policy`. The persistent shell consumes the profile's danger-full-access sandbox policy; the editor is not confined by that policy. [docs/architecture.md](../../../../docs/architecture.md) owns this bundle placement and its separation from `dsh-base`. `DSH_SYSTEM_PROMPT` selects the standalone persona, and `DSH_CONTEXT_WINDOW` supplies fallback capacity for a model without exact catalog metadata. The SDK client's JSON-RPC `initialize` request is the sole runtime model selection. [`minimal.py`](../../../../python/sdk/examples/minimal.py) may read `DSH_MODEL` only as the command's default `model` argument; an explicit `--model` needs no matching child environment value. Endpoint and credential variables stay owned by the DeepSeek adapter's existing environment-resolution path. diff --git a/.agents/notes/implemented/feature/2026-08-11-minimal-profiles-bare-two-tool-runtime.zh.md b/.agents/notes/implemented/feature/2026-08-11-minimal-profiles-bare-two-tool-runtime.zh.md index 587ba69638..761c384f16 100644 --- a/.agents/notes/implemented/feature/2026-08-11-minimal-profiles-bare-two-tool-runtime.zh.md +++ b/.agents/notes/implemented/feature/2026-08-11-minimal-profiles-bare-two-tool-runtime.zh.md @@ -12,9 +12,9 @@ Web `minimal` preset 与独立 JSON-RPC minimal 组合对外提供持久 `bash` ## 决策 -随附 Web minimal preset 对外提供持久 `bash` 与 `str_replace_editor`;独立 profile 在 Linux/macOS 上提供持久 `bash`,在 Windows 上提供 `pwsh`,并提供相同 editor。两者都不挂载上下文压缩提供方,为新建会话抑制每个 `dsh-system-prompt` runtime-context 贡献,并让编辑器使用 `@deepseek-ai/dsh-fs-local`。Web preset 在 agent entry 内隔离 `ctx.fs`,将 `fs-local` 与编辑器一起挂载,因此其他 Web agent 仍使用宿主文件系统提供方。其 persona 继续采用较早的 [minimal preset 组合决策](../bug-fix/2026-08-10-minimal-preset-owns-rl-composition.zh.md)所拥有的固定 complete 提示词,并仅为该 agent 作用域实施 runtime-context 抑制。独立 spine 将同一设置转发给其进程拥有的 system-prompt 服务。Web 宿主保留沙箱与批准服务;独立 profile 挂载 danger-full-access 沙箱策略,不挂载批准服务。两者都不贡献面向模型的策略上下文。 +随附 Web minimal preset 对外提供持久 `bash` 与 `str_replace_editor`;独立 profile 在 Linux/macOS 上提供持久 `bash`,在 Windows 上提供 `pwsh`,并提供相同 editor。两者都不挂载上下文压缩提供方,为新建会话抑制每个 `dsh-system-prompt` runtime-context 贡献,并让编辑器使用 `@deepseek-ai/dsh-fs-local`。Web preset 在 agent entry 内隔离 `ctx.fs`,将 `fs-local` 与编辑器一起挂载,因此其他 Web agent 仍使用宿主文件系统提供方。其 persona 继续采用较早的 [minimal preset 组合决策](../../archived/bug-fix/2026-08-10-minimal-preset-owns-rl-composition.md)所拥有的固定 complete 提示词,并仅为该 agent 作用域实施 runtime-context 抑制。独立 spine 将同一设置转发给其进程拥有的 system-prompt 服务。Web 宿主保留沙箱与批准服务;独立 profile 挂载 danger-full-access 沙箱策略,不挂载批准服务。两者都不贡献面向模型的策略上下文。 -独立的 [`@deepseek-ai/dsh-sdk-minimal` 组合包](../../../../packages/bundle/sdk-minimal/README.zh.md)仍是 `dsh --profile sdk-minimal` 后面的完整 JSON-RPC 进程组合。它挂载 SDK 启动与 JSON-RPC 服务、按平台选择的持久 shell 所需的本地 PTY 和子进程服务、`fs-local`、该 shell 的工具消费方、editor,以及位于 `$DSH_HOME/sessions` 的未压缩 JSONL 持久化。它不挂载 `token-meter`、`compaction-basic`、`fs-sandbox` 或 `fs-observation-policy`。持久 shell 消费该 profile 的 danger-full-access 沙箱策略;编辑器不受该策略限制。[独立 profile 决策](../architecture/2026-08-24-standalone-sdk-minimal-profile.zh.md)负责该组合包的位置及其与 `dsh-base` 的分离。 +独立的 [`@deepseek-ai/dsh-sdk-minimal` 组合包](../../../../packages/bundle/sdk-minimal/README.zh.md)仍是 `dsh --profile sdk-minimal` 后面的完整 JSON-RPC 进程组合。它挂载 SDK 启动与 JSON-RPC 服务、按平台选择的持久 shell 所需的本地 PTY 和子进程服务、`fs-local`、该 shell 的工具消费方、editor,以及位于 `$DSH_HOME/sessions` 的未压缩 JSONL 持久化。它不挂载 `token-meter`、`compaction-basic`、`fs-sandbox` 或 `fs-observation-policy`。持久 shell 消费该 profile 的 danger-full-access 沙箱策略;编辑器不受该策略限制。[docs/architecture.md](../../../../docs/architecture.zh.md) 负责该组合包的位置及其与 `dsh-base` 的分离。 `DSH_SYSTEM_PROMPT` 选择独立组合的 persona,`DSH_CONTEXT_WINDOW` 为没有确切目录元数据的模型提供后备容量。SDK 客户端的 JSON-RPC `initialize` 请求是唯一运行时模型选择。[`minimal.py`](../../../../python/sdk/examples/minimal.py)可以只把 `DSH_MODEL` 读作命令的默认 `model` 参数;显式 `--model` 不需要匹配的子进程环境值。端点与凭据变量继续由 DeepSeek 适配器现有的环境解析路径持有。 diff --git a/.agents/notes/implemented/feature/2026-08-11-web-attachment-display-alignment.i18n.yaml b/.agents/notes/implemented/feature/2026-08-11-web-attachment-display-alignment.i18n.yaml deleted file mode 100644 index 79d67adaba..0000000000 --- a/.agents/notes/implemented/feature/2026-08-11-web-attachment-display-alignment.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-08-11-web-attachment-display-alignment.md -2026-08-11-web-attachment-display-alignment.md: dd3816661792b882a2ce77cf8b03cc5e4ad9965e -2026-08-11-web-attachment-display-alignment.zh.md: 522527a4463684667a06c14623fb5620d3bf84b4 diff --git a/.agents/notes/implemented/feature/2026-08-11-workflow-run-status-driven-disclosure.i18n.yaml b/.agents/notes/implemented/feature/2026-08-11-workflow-run-status-driven-disclosure.i18n.yaml deleted file mode 100644 index 9413e13948..0000000000 --- a/.agents/notes/implemented/feature/2026-08-11-workflow-run-status-driven-disclosure.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-08-11-workflow-run-status-driven-disclosure.md -2026-08-11-workflow-run-status-driven-disclosure.md: e97ead90460f21d4a27b49dcdabbcafc8f193cda -2026-08-11-workflow-run-status-driven-disclosure.zh.md: ef3da3ee7cbffbb901a4b71a920bd53c2965c827 diff --git a/.agents/notes/implemented/feature/2026-08-11-workspace-sidebar-order-and-folding.i18n.yaml b/.agents/notes/implemented/feature/2026-08-11-workspace-sidebar-order-and-folding.i18n.yaml deleted file mode 100644 index a55f1f953f..0000000000 --- a/.agents/notes/implemented/feature/2026-08-11-workspace-sidebar-order-and-folding.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-08-11-workspace-sidebar-order-and-folding.md -2026-08-11-workspace-sidebar-order-and-folding.md: a8026936905d42ccf5f30a02684310324d8ee359 -2026-08-11-workspace-sidebar-order-and-folding.zh.md: 83a66c9b4a5f8dd34b56c6d8a8af2d18f77e983b diff --git a/.agents/notes/implemented/feature/2026-08-12-hero-fish-hover-swim-morph.i18n.yaml b/.agents/notes/implemented/feature/2026-08-12-hero-fish-hover-swim-morph.i18n.yaml deleted file mode 100644 index d3e4942d41..0000000000 --- a/.agents/notes/implemented/feature/2026-08-12-hero-fish-hover-swim-morph.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-08-12-hero-fish-hover-swim-morph.md -2026-08-12-hero-fish-hover-swim-morph.md: c485f94e244040d7e72838065f977e698391c00d -2026-08-12-hero-fish-hover-swim-morph.zh.md: ee39a75ca230b9c7fa6ffefbc8f98dc368bc3e59 diff --git a/.agents/notes/implemented/feature/2026-08-12-open-ready-web-ui.i18n.yaml b/.agents/notes/implemented/feature/2026-08-12-open-ready-web-ui.i18n.yaml deleted file mode 100644 index 42d81db81d..0000000000 --- a/.agents/notes/implemented/feature/2026-08-12-open-ready-web-ui.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-08-12-open-ready-web-ui.md -2026-08-12-open-ready-web-ui.md: 075082aff6c0b811de3c6750637cb823fe83be61 -2026-08-12-open-ready-web-ui.zh.md: de73ab0c8574ff924229b54c2aedf41899fedee8 diff --git a/.agents/notes/implemented/feature/2026-08-12-product-subagent-one-shot-background-tasks.i18n.yaml b/.agents/notes/implemented/feature/2026-08-12-product-subagent-one-shot-background-tasks.i18n.yaml deleted file mode 100644 index 48455ab7b7..0000000000 --- a/.agents/notes/implemented/feature/2026-08-12-product-subagent-one-shot-background-tasks.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-08-12-product-subagent-one-shot-background-tasks.md -2026-08-12-product-subagent-one-shot-background-tasks.md: 5e9522f6fac6eadb874ba2d1d4f45100f962b9e2 -2026-08-12-product-subagent-one-shot-background-tasks.zh.md: fdf7fa58e49f6aa9b6fe7a21eb21e6208e56a86f diff --git a/.agents/notes/implemented/feature/2026-08-12-web-image-intake-and-limits-alignment.i18n.yaml b/.agents/notes/implemented/feature/2026-08-12-web-image-intake-and-limits-alignment.i18n.yaml deleted file mode 100644 index 70714bb5c2..0000000000 --- a/.agents/notes/implemented/feature/2026-08-12-web-image-intake-and-limits-alignment.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-08-12-web-image-intake-and-limits-alignment.md -2026-08-12-web-image-intake-and-limits-alignment.md: 0bb8cadc8db4b4c28cf311bc9420c32744e173fb -2026-08-12-web-image-intake-and-limits-alignment.zh.md: fa2c1d83d8423bd72a41b1a5d941c51e178c3959 diff --git a/.agents/notes/implemented/feature/2026-08-13-shared-modal-product-onboarding.i18n.yaml b/.agents/notes/implemented/feature/2026-08-13-shared-modal-product-onboarding.i18n.yaml deleted file mode 100644 index fac721984b..0000000000 --- a/.agents/notes/implemented/feature/2026-08-13-shared-modal-product-onboarding.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-08-13-shared-modal-product-onboarding.md -2026-08-13-shared-modal-product-onboarding.md: 9f72ee5b4e2abd8dd9ad70c819976be73f3f8116 -2026-08-13-shared-modal-product-onboarding.zh.md: 867b23202f2e15701d72dd5e11cbe6ff2346ef11 diff --git a/.agents/notes/implemented/feature/2026-08-14-web-turn-process-folding.i18n.yaml b/.agents/notes/implemented/feature/2026-08-14-web-turn-process-folding.i18n.yaml deleted file mode 100644 index 8c89cd5ed6..0000000000 --- a/.agents/notes/implemented/feature/2026-08-14-web-turn-process-folding.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-08-14-web-turn-process-folding.md -2026-08-14-web-turn-process-folding.md: e0d666a0e5c744347ecb0f769aa4354481406ce4 -2026-08-14-web-turn-process-folding.zh.md: cacf7ecfdc37f0f155b0eedb894550fe9740dd0d diff --git a/.agents/notes/implemented/feature/2026-08-15-product-subagent-noninteractive-permissions.i18n.yaml b/.agents/notes/implemented/feature/2026-08-15-product-subagent-noninteractive-permissions.i18n.yaml index bcefa42504..4c04945294 100644 --- a/.agents/notes/implemented/feature/2026-08-15-product-subagent-noninteractive-permissions.i18n.yaml +++ b/.agents/notes/implemented/feature/2026-08-15-product-subagent-noninteractive-permissions.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-08-15-product-subagent-noninteractive-permissions.md -2026-08-15-product-subagent-noninteractive-permissions.md: 8ce71cbf156d3e22a22fa8ad526b838ec1a5effe -2026-08-15-product-subagent-noninteractive-permissions.zh.md: e6471b2ce1c8ebbb767254df2426969a3da36f78 +2026-08-15-product-subagent-noninteractive-permissions.md: 1bdca6214bf730386e27e922361bb45a3c120ecf +2026-08-15-product-subagent-noninteractive-permissions.zh.md: 9377da8d5f3622f5faafce631ed2c6095d22560c diff --git a/.agents/notes/implemented/feature/2026-08-15-product-subagent-noninteractive-permissions.md b/.agents/notes/implemented/feature/2026-08-15-product-subagent-noninteractive-permissions.md index 8ce71cbf15..1bdca6214b 100644 --- a/.agents/notes/implemented/feature/2026-08-15-product-subagent-noninteractive-permissions.md +++ b/.agents/notes/implemented/feature/2026-08-15-product-subagent-noninteractive-permissions.md @@ -8,7 +8,7 @@ English | [中文](2026-08-15-product-subagent-noninteractive-permissions.zh.md) The [Claude Code and Codex product providers](2026-08-04-claude-code-and-codex-subagent-backends.md) run without a human interface. Native permission prompts, user dialogs, or MCP elicitation therefore cannot wait for a person, but relying on either product's ambient default can still select an interactive mode. A deployment also needs to choose broader native modes without giving the parent model or one tool call a way to raise its own authority. -A failed product run previously reached the [subagent seam](2026-06-21-subagent-capability-seam.md) only as a stop reason. Logs could retain the product error, but the foreground parent and a [one-shot background Job](2026-08-12-product-subagent-one-shot-background-tasks.md) could not distinguish a permission refusal from another failure. Reusing assistant output for that fact would misattribute infrastructure detail to the child model. +A failed product run previously reached the [subagent seam](2026-06-21-subagent-capability-seam.md) only as a stop reason. Logs could retain the product error, but the foreground parent and a [one-shot background Job](../../archived/feature/2026-08-12-product-subagent-one-shot-background-tasks.md) could not distinguish a permission refusal from another failure. Reusing assistant output for that fact would misattribute infrastructure detail to the child model. ## Decision @@ -44,7 +44,7 @@ The Provider overrides only those permission and sandbox fields. An optional ins ### Failure diagnostic -`SubagentResult` carries an optional `diagnostic` for provider-authored, non-assistant failure detail. A Provider removes tool inputs, file contents, environment values, credentials, and raw protocol payloads before producing it. The shared out-of-process result boundary limits the complete text to 4096 UTF-8 bytes and marks truncation without splitting a character. The [minimal-diagnostics decision](../simplification/2026-08-21-product-subagent-minimal-diagnostics.md) owns both products' non-permission action categories, lifecycle stages, HTTP facts, and process outcomes carried by the same field. +`SubagentResult` carries an optional `diagnostic` for provider-authored, non-assistant failure detail. A Provider removes tool inputs, file contents, environment values, credentials, and raw protocol payloads before producing it. The shared out-of-process result boundary limits the complete text to 4096 UTF-8 bytes and marks truncation without splitting a character. The [minimal-diagnostics decision](../../archived/simplification/2026-08-21-product-subagent-minimal-diagnostics.md) owns both products' non-permission action categories, lifecycle stages, HTTP facts, and process outcomes carried by the same field. Each product's permission fact contains only the effective mode, request category, unattended decision, and a fixed safe reason. Claude Code derives those facts from SDK callbacks and `permission_denied` messages. Codex derives them from app-server requests, declined items, and structured `sandboxError` terminals. Raw stderr is forwarded to the Host but is neither classified nor copied into the diagnostic. Both Providers place their failure line before the latest contributing permission fact. A successful result returns only the strict final answer; local cancellation remains `aborted` without permission detail; an unpublished startup failure still rejects `start()`. The Provider never adds either diagnostic fact to assistant output, structured output, or `subagent/end.lastAssistantMessage`. diff --git a/.agents/notes/implemented/feature/2026-08-15-product-subagent-noninteractive-permissions.zh.md b/.agents/notes/implemented/feature/2026-08-15-product-subagent-noninteractive-permissions.zh.md index e6471b2ce1..9377da8d5f 100644 --- a/.agents/notes/implemented/feature/2026-08-15-product-subagent-noninteractive-permissions.zh.md +++ b/.agents/notes/implemented/feature/2026-08-15-product-subagent-noninteractive-permissions.zh.md @@ -8,7 +8,7 @@ Status: implemented [Claude Code 与 Codex 产品提供方](2026-08-04-claude-code-and-codex-subagent-backends.zh.md)都在没有人工界面的情况下运行。因此,原生权限提示、用户对话或 MCP elicitation 不能等待人员响应,但依赖任一产品环境中的默认值仍可能选择交互模式。部署也需要选择更宽松的原生模式,同时不能让父模型或单次工具调用提升自身权限。 -失败的产品运行此前只能把终止原因送入 [subagent seam](2026-06-21-subagent-capability-seam.zh.md)。日志可以保留产品错误,但前台父 agent 与[一次性后台 Job](2026-08-12-product-subagent-one-shot-background-tasks.zh.md)无法区分权限拒绝和其他失败。若复用 assistant 输出承载该事实,则会把基础设施说明错误归因给子模型。 +失败的产品运行此前只能把终止原因送入 [subagent seam](2026-06-21-subagent-capability-seam.zh.md)。日志可以保留产品错误,但前台父 agent 与[一次性后台 Job](../../archived/feature/2026-08-12-product-subagent-one-shot-background-tasks.md)无法区分权限拒绝和其他失败。若复用 assistant 输出承载该事实,则会把基础设施说明错误归因给子模型。 ## Decision @@ -44,7 +44,7 @@ Codex 默认使用 `never`,并接受 Codex 0.149.1 公开的三种原生非交 ### 失败诊断 -`SubagentResult` 携带可选的 `diagnostic`,用于提供方产生且不属于 assistant 内容的失败说明。提供方在生成它之前会排除工具输入、文件内容、环境值、凭证与原始协议载荷。共享的进程外结果边界会把完整文本限制在 4096 个 UTF-8 字节以内,并在不切断字符的前提下标记截断。[最小诊断决策](../simplification/2026-08-21-product-subagent-minimal-diagnostics.zh.md)负责两个产品通过同一字段承载的非权限行动类别、生命周期阶段、HTTP 事实与进程结果。 +`SubagentResult` 携带可选的 `diagnostic`,用于提供方产生且不属于 assistant 内容的失败说明。提供方在生成它之前会排除工具输入、文件内容、环境值、凭证与原始协议载荷。共享的进程外结果边界会把完整文本限制在 4096 个 UTF-8 字节以内,并在不切断字符的前提下标记截断。[最小诊断决策](../../archived/simplification/2026-08-21-product-subagent-minimal-diagnostics.md)负责两个产品通过同一字段承载的非权限行动类别、生命周期阶段、HTTP 事实与进程结果。 每个产品的权限事实都只包含有效模式、请求类别、无人值守决定与固定的安全原因。Claude Code 从 SDK 回调和 `permission_denied` 消息取得这些事实。Codex 从 app-server 请求、被拒绝的 item 与结构化 `sandboxError` 终态取得事实。原始 stderr 仍会转发给 Host,但既不会被分类,也绝不会复制进诊断。两个提供方都会把失败行放在最新参与失败的权限事实之前。成功结果只返回严格的最终答案;本地取消仍以 `aborted` 结算且不附带权限说明;未发布的启动失败仍会拒绝 `start()`。提供方绝不会把任一诊断事实写入 assistant 输出、结构化输出或 `subagent/end.lastAssistantMessage`。 diff --git a/.agents/notes/implemented/feature/2026-08-17-web-search-multiple-queries.i18n.yaml b/.agents/notes/implemented/feature/2026-08-17-web-search-multiple-queries.i18n.yaml deleted file mode 100644 index 772b3f72aa..0000000000 --- a/.agents/notes/implemented/feature/2026-08-17-web-search-multiple-queries.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-08-17-web-search-multiple-queries.md -2026-08-17-web-search-multiple-queries.md: f0a8bf3d69763231ee2c1f441ed52e2e0b7a6060 -2026-08-17-web-search-multiple-queries.zh.md: 5c6be5e20fdb7ea14fcc8ef3e1275f57a008152f diff --git a/.agents/notes/implemented/feature/2026-08-17-web-system-prompt-opaque-body.i18n.yaml b/.agents/notes/implemented/feature/2026-08-17-web-system-prompt-opaque-body.i18n.yaml deleted file mode 100644 index 3af8585b6e..0000000000 --- a/.agents/notes/implemented/feature/2026-08-17-web-system-prompt-opaque-body.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-08-17-web-system-prompt-opaque-body.md -2026-08-17-web-system-prompt-opaque-body.md: 9b1992dd8eb1062a3b35666b332178985aa91653 -2026-08-17-web-system-prompt-opaque-body.zh.md: 6f2fbba9d3f286e8c3073197a144d347f732cbc1 diff --git a/.agents/notes/implemented/feature/2026-08-18-conversation-adaptive-content-width.i18n.yaml b/.agents/notes/implemented/feature/2026-08-18-conversation-adaptive-content-width.i18n.yaml deleted file mode 100644 index 6a65f984d1..0000000000 --- a/.agents/notes/implemented/feature/2026-08-18-conversation-adaptive-content-width.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-08-18-conversation-adaptive-content-width.md -2026-08-18-conversation-adaptive-content-width.md: 9b0e7afbded296b60b7c283030a537321b36684e -2026-08-18-conversation-adaptive-content-width.zh.md: 82273e35ba5fa4bd5768c72323540d6d67189a0c diff --git a/.agents/notes/implemented/feature/2026-08-18-pi-ai-wire-compat-surface.i18n.yaml b/.agents/notes/implemented/feature/2026-08-18-pi-ai-wire-compat-surface.i18n.yaml deleted file mode 100644 index 8d482bf05e..0000000000 --- a/.agents/notes/implemented/feature/2026-08-18-pi-ai-wire-compat-surface.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-08-18-pi-ai-wire-compat-surface.md -2026-08-18-pi-ai-wire-compat-surface.md: 280ce2dd16bb7f89f238c8e0fab07ed74de943f1 -2026-08-18-pi-ai-wire-compat-surface.zh.md: 1a5704dc8c462a8007d1129de4ec7a51e9bd22a4 diff --git a/.agents/notes/implemented/feature/2026-08-18-product-subagent-named-instances.i18n.yaml b/.agents/notes/implemented/feature/2026-08-18-product-subagent-named-instances.i18n.yaml deleted file mode 100644 index 549dbbf074..0000000000 --- a/.agents/notes/implemented/feature/2026-08-18-product-subagent-named-instances.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-08-18-product-subagent-named-instances.md -2026-08-18-product-subagent-named-instances.md: 749267e311cbcdebc7a6b8ad84e046fe21acf6fd -2026-08-18-product-subagent-named-instances.zh.md: d39fdd46a30aa665715d782162ddaaaac3a31f3e diff --git a/.agents/notes/implemented/feature/2026-08-18-settings-font-size-control.i18n.yaml b/.agents/notes/implemented/feature/2026-08-18-settings-font-size-control.i18n.yaml deleted file mode 100644 index 02e4bf637d..0000000000 --- a/.agents/notes/implemented/feature/2026-08-18-settings-font-size-control.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-08-18-settings-font-size-control.md -2026-08-18-settings-font-size-control.md: 778893a2c0943f1d3af8905a27efb526071e073b -2026-08-18-settings-font-size-control.zh.md: c653e6d6a6618802b1dc595623127e453a43e569 diff --git a/.agents/notes/implemented/feature/2026-08-19-web-markdown-wide-table-view.i18n.yaml b/.agents/notes/implemented/feature/2026-08-19-web-markdown-wide-table-view.i18n.yaml deleted file mode 100644 index 1f22c5061f..0000000000 --- a/.agents/notes/implemented/feature/2026-08-19-web-markdown-wide-table-view.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-08-19-web-markdown-wide-table-view.md -2026-08-19-web-markdown-wide-table-view.md: fc025f6755caa2ca160b02f0c03ae80fd04cc1c7 -2026-08-19-web-markdown-wide-table-view.zh.md: 1c3049d69ccef18944a3c2ffccb034f57b8f901f diff --git a/.agents/notes/implemented/feature/2026-08-20-multiline-question-answer-field.i18n.yaml b/.agents/notes/implemented/feature/2026-08-20-multiline-question-answer-field.i18n.yaml deleted file mode 100644 index b547b3a0e9..0000000000 --- a/.agents/notes/implemented/feature/2026-08-20-multiline-question-answer-field.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-08-20-multiline-question-answer-field.md -2026-08-20-multiline-question-answer-field.md: 207a7e5303b6558d7f09fc2684940db4e81ff452 -2026-08-20-multiline-question-answer-field.zh.md: 3c7644675a85e740ad0cb5c299e1f591adbfbac6 diff --git a/.agents/notes/implemented/feature/2026-08-20-tool-card-image-results.i18n.yaml b/.agents/notes/implemented/feature/2026-08-20-tool-card-image-results.i18n.yaml deleted file mode 100644 index d493b1d0f3..0000000000 --- a/.agents/notes/implemented/feature/2026-08-20-tool-card-image-results.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-08-20-tool-card-image-results.md -2026-08-20-tool-card-image-results.md: 7659bc46858b0d65c300e51020867a7c156c4d11 -2026-08-20-tool-card-image-results.zh.md: b18f0c42c6e58a8e79d3c79837164e571eb5a9d7 diff --git a/.agents/notes/implemented/feature/2026-08-20-unified-image-request-pipeline.i18n.yaml b/.agents/notes/implemented/feature/2026-08-20-unified-image-request-pipeline.i18n.yaml index 55331d4816..83a9c06d66 100644 --- a/.agents/notes/implemented/feature/2026-08-20-unified-image-request-pipeline.i18n.yaml +++ b/.agents/notes/implemented/feature/2026-08-20-unified-image-request-pipeline.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-08-20-unified-image-request-pipeline.md -2026-08-20-unified-image-request-pipeline.md: 1c7a8040232bab0d73f578a9170e235c2f175c07 -2026-08-20-unified-image-request-pipeline.zh.md: af6497f5a06018b87d166842615f6b1e12b1aed4 +2026-08-20-unified-image-request-pipeline.md: 736c8fb7f6f58db137d2b3cb9f5a007db16dd67b +2026-08-20-unified-image-request-pipeline.zh.md: 532662291ba2c7257906a2bf4f52792d5285ec1c diff --git a/.agents/notes/implemented/feature/2026-08-20-unified-image-request-pipeline.md b/.agents/notes/implemented/feature/2026-08-20-unified-image-request-pipeline.md index 1c7a804023..736c8fb7f6 100644 --- a/.agents/notes/implemented/feature/2026-08-20-unified-image-request-pipeline.md +++ b/.agents/notes/implemented/feature/2026-08-20-unified-image-request-pipeline.md @@ -34,7 +34,7 @@ Every retained request image is preceded by its display name or complete attachm ### DeepSeek Files lifecycle -The direct `deepseek-official` adapter normally uploads every retained request version through the OpenAI-compatible Files API and sends `file_id` content blocks. A [bounded inline fallback](../bug-fix/2026-08-21-deepseek-files-inline-fallback.md) sends the same deterministic request versions when file resolution fails. The default catalog advertises `deepseek-v4-flash-vision-exp` as image-capable. Uploaded ids are indexed by endpoint and API-key scope plus `variantId`. Uploads request seven days by default and record the returned `expires_at`; a mapping with no more than one hour remaining is replaced without a preceding retrieve call. The index never stores the API key. +The direct `deepseek-official` adapter normally uploads every retained request version through the OpenAI-compatible Files API and sends `file_id` content blocks. A [bounded inline fallback](../../archived/bug-fix/2026-08-21-deepseek-files-inline-fallback.md) sends the same deterministic request versions when file resolution fails. The default catalog advertises `deepseek-v4-flash-vision-exp` as image-capable. Uploaded ids are indexed by endpoint and API-key scope plus `variantId`. Uploads request seven days by default and record the returned `expires_at`; a mapping with no more than one hour remaining is replaced without a preceding retrieve call. The index never stores the API key. An upload is indexed only after the response returns a complete file object, matching byte count, and `expires_at`. A missing or inconsistent response leaves no local mapping, so a later request uploads again. Concurrent upload resolution for one scoped `variantId` shares one provider operation; one waiter cannot cancel another, and the upload stops when every waiter has cancelled. A malformed upload index is an empty cache and is replaced on the next successful upload; filesystem I/O failures remain errors. If chat reports expired, deleted, missing, or invalid ids and names one or more ids used by the request, only those mappings are removed. A stale-file response without a specific id removes every mapping used by that chat attempt. The affected request bytes are uploaded again and chat is retried once. A second stale rejection clears the mappings identified by its response and returns the error without a third chat attempt. One upload quota error first lists the configured number of oldest harness-owned `dsh-` files, then deletes that collected set and retries once; deleting after pagination keeps provider cursors valid. Public file operations expose list, retrieve, delete, one-variant release, and namespace-wide release. Every Files request carries the shared Harness `User-Agent`. The client enforces the documented 128MiB upload limit, 32MiB chat-image limit, 10,000-file and 25GiB quotas, and one-hour to 30-day expiry range. diff --git a/.agents/notes/implemented/feature/2026-08-20-unified-image-request-pipeline.zh.md b/.agents/notes/implemented/feature/2026-08-20-unified-image-request-pipeline.zh.md index af6497f5a0..532662291b 100644 --- a/.agents/notes/implemented/feature/2026-08-20-unified-image-request-pipeline.zh.md +++ b/.agents/notes/implemented/feature/2026-08-20-unified-image-request-pipeline.zh.md @@ -34,7 +34,7 @@ Status: implemented ### DeepSeek Files 生命周期 -直接 `deepseek-official` 适配器通常通过 OpenAI 兼容 Files API 上传每张保留的请求版本,并发送 `file_id` 内容块。文件解析失败时,[有界内联回退](../bug-fix/2026-08-21-deepseek-files-inline-fallback.zh.md)会发送相同的确定性请求版本。默认 catalog 把 `deepseek-v4-flash-vision-exp` 公布为支持图片。上传 ID 按端点和 API key 作用域以及 `variantId` 写入索引。上传默认请求 7 天有效期,并记录返回的 `expires_at`;本地映射剩余时间不超过一小时时会直接替换,不会先查询远端文件。索引绝不存储 API key。 +直接 `deepseek-official` 适配器通常通过 OpenAI 兼容 Files API 上传每张保留的请求版本,并发送 `file_id` 内容块。文件解析失败时,[有界内联回退](../../archived/bug-fix/2026-08-21-deepseek-files-inline-fallback.md)会发送相同的确定性请求版本。默认 catalog 把 `deepseek-v4-flash-vision-exp` 公布为支持图片。上传 ID 按端点和 API key 作用域以及 `variantId` 写入索引。上传默认请求 7 天有效期,并记录返回的 `expires_at`;本地映射剩余时间不超过一小时时会直接替换,不会先查询远端文件。索引绝不存储 API key。 只有上传响应返回完整文件对象、匹配的字节数和 `expires_at` 时,上传结果才会写入索引。缺失或不一致的响应不会留下本地映射,后续请求会重新上传。同一作用域和 `variantId` 的并发解析共享一次提供方上传;单个等待方无法取消其他等待方,全部等待方取消时才会停止上传。格式损坏的上传索引按空缓存处理,并在下一次成功上传时替换;文件系统 I/O 失败仍是错误。如果 chat 报告 ID 已过期、删除、缺失或无效,并指出本次请求使用的一个或多个 ID,适配器只删除这些映射。如果响应只说明文件状态失效而没有指出具体 ID,适配器会删除该次 chat 使用的全部映射。受影响的请求字节会重新上传,chat 只重试一次。第二次仍报告文件失效时,适配器会按响应清理映射并返回错误,不会发起第三次 chat。一次上传配额错误会先列出配置数量的最旧 `dsh-` 文件,再删除收集到的文件并重试一次;分页完成后才删除,避免游标失效。公开文件操作提供列表、查询、删除、单个变体释放和整个作用域释放。每个 Files 请求都携带 Harness 的共享 `User-Agent`。客户端执行文档规定的 Files 单次上传 128MiB、chat 单图 32MiB、10,000 个文件、25GiB,以及一小时到 30 天有效期限制。 diff --git a/.agents/notes/implemented/feature/2026-08-20-web-streaming-fence-highlight.i18n.yaml b/.agents/notes/implemented/feature/2026-08-20-web-streaming-fence-highlight.i18n.yaml deleted file mode 100644 index bd978d1920..0000000000 --- a/.agents/notes/implemented/feature/2026-08-20-web-streaming-fence-highlight.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-08-20-web-streaming-fence-highlight.md -2026-08-20-web-streaming-fence-highlight.md: aa44a8c7ea91ff4913d92449d62a6ebf9406e922 -2026-08-20-web-streaming-fence-highlight.zh.md: 88bae36928ac8d00960e529addeb4f30240e3579 diff --git a/.agents/notes/implemented/feature/2026-08-21-headless-reasoning-progress.i18n.yaml b/.agents/notes/implemented/feature/2026-08-21-headless-reasoning-progress.i18n.yaml deleted file mode 100644 index b94de9b843..0000000000 --- a/.agents/notes/implemented/feature/2026-08-21-headless-reasoning-progress.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-08-21-headless-reasoning-progress.md -2026-08-21-headless-reasoning-progress.md: 74868410839a497317c6a35097a20f4514b36dba -2026-08-21-headless-reasoning-progress.zh.md: a03a380b7d5a79354d52a5172076918958c4a88a diff --git a/.agents/notes/implemented/feature/2026-08-21-model-readable-image-paths.i18n.yaml b/.agents/notes/implemented/feature/2026-08-21-model-readable-image-paths.i18n.yaml deleted file mode 100644 index 24cd6c1683..0000000000 --- a/.agents/notes/implemented/feature/2026-08-21-model-readable-image-paths.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-08-21-model-readable-image-paths.md -2026-08-21-model-readable-image-paths.md: 728d25ee84836a07805f9d8728e47e9319e0863d -2026-08-21-model-readable-image-paths.zh.md: 9d2733aff7d3e5f4aa84aa954d15c435abac75ac diff --git a/.agents/notes/implemented/feature/2026-08-21-out-of-process-subagent-minimal-diagnostics.i18n.yaml b/.agents/notes/implemented/feature/2026-08-21-out-of-process-subagent-minimal-diagnostics.i18n.yaml deleted file mode 100644 index 1fcbc72eaa..0000000000 --- a/.agents/notes/implemented/feature/2026-08-21-out-of-process-subagent-minimal-diagnostics.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-08-21-out-of-process-subagent-minimal-diagnostics.md -2026-08-21-out-of-process-subagent-minimal-diagnostics.md: 82f2d2b131c5e991891b030d7c48873aa803386b -2026-08-21-out-of-process-subagent-minimal-diagnostics.zh.md: 4cf5a1ebef0ba83a241dec5a9d8cd21ee2010671 diff --git a/.agents/notes/implemented/feature/2026-08-24-folder-reference-pick-vs-drill.i18n.yaml b/.agents/notes/implemented/feature/2026-08-24-folder-reference-pick-vs-drill.i18n.yaml deleted file mode 100644 index 7c0adc21ee..0000000000 --- a/.agents/notes/implemented/feature/2026-08-24-folder-reference-pick-vs-drill.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-08-24-folder-reference-pick-vs-drill.md -2026-08-24-folder-reference-pick-vs-drill.md: de5d4930eb86a2fc961044cab8aecb7bcaf87a9c -2026-08-24-folder-reference-pick-vs-drill.zh.md: 773e5b2b7cf54b02bc93638ad20bbdc08f34c3d1 diff --git a/.agents/notes/implemented/feature/2026-08-24-route-priced-image-request-pressure.i18n.yaml b/.agents/notes/implemented/feature/2026-08-24-route-priced-image-request-pressure.i18n.yaml deleted file mode 100644 index 0329350a6e..0000000000 --- a/.agents/notes/implemented/feature/2026-08-24-route-priced-image-request-pressure.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-08-24-route-priced-image-request-pressure.md -2026-08-24-route-priced-image-request-pressure.md: 45a29211730474369607ed5fb933f380d640bf27 -2026-08-24-route-priced-image-request-pressure.zh.md: cf005a3ee343edf5774d554a4ec78cb876703774 diff --git a/.agents/notes/implemented/feature/2026-08-24-trajectory-image-attachments.i18n.yaml b/.agents/notes/implemented/feature/2026-08-24-trajectory-image-attachments.i18n.yaml deleted file mode 100644 index 6b70d9c8f6..0000000000 --- a/.agents/notes/implemented/feature/2026-08-24-trajectory-image-attachments.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-08-24-trajectory-image-attachments.md -2026-08-24-trajectory-image-attachments.md: 6f89840a7d4686e45012ea2ae25f4cc939a5ca0c -2026-08-24-trajectory-image-attachments.zh.md: f1e8634639e42adc094021c03a339b8f8223bfff diff --git a/.agents/notes/implemented/feature/2026-08-24-web-per-turn-token-usage.i18n.yaml b/.agents/notes/implemented/feature/2026-08-24-web-per-turn-token-usage.i18n.yaml deleted file mode 100644 index 7461a4758a..0000000000 --- a/.agents/notes/implemented/feature/2026-08-24-web-per-turn-token-usage.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-08-24-web-per-turn-token-usage.md -2026-08-24-web-per-turn-token-usage.md: 91aab0f2c261e2141ee964c828e7209ba2b3f72f -2026-08-24-web-per-turn-token-usage.zh.md: f9c424fa0f84b802e98280bea9eaf4038bf31f19 diff --git a/.agents/notes/implemented/feature/2026-08-25-feedback-gated-telemetry-default.i18n.yaml b/.agents/notes/implemented/feature/2026-08-25-feedback-gated-telemetry-default.i18n.yaml index d16acadd94..99cd82ef90 100644 --- a/.agents/notes/implemented/feature/2026-08-25-feedback-gated-telemetry-default.i18n.yaml +++ b/.agents/notes/implemented/feature/2026-08-25-feedback-gated-telemetry-default.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-08-25-feedback-gated-telemetry-default.md -2026-08-25-feedback-gated-telemetry-default.md: 520225423f7e512230d047853b2e889dd62bffe7 -2026-08-25-feedback-gated-telemetry-default.zh.md: 1b40c5392440aaf33bcd44c65b5f4d7021684876 +2026-08-25-feedback-gated-telemetry-default.md: 19ed75859b54044d38c473f9bd5e8840c5cd2844 +2026-08-25-feedback-gated-telemetry-default.zh.md: d82776b4250e1c37b821df5f387f9df05e0fbfd0 diff --git a/.agents/notes/implemented/feature/2026-08-25-feedback-gated-telemetry-default.md b/.agents/notes/implemented/feature/2026-08-25-feedback-gated-telemetry-default.md index 520225423f..19ed75859b 100644 --- a/.agents/notes/implemented/feature/2026-08-25-feedback-gated-telemetry-default.md +++ b/.agents/notes/implemented/feature/2026-08-25-feedback-gated-telemetry-default.md @@ -12,7 +12,7 @@ Diagnosing a `/feedback` report needs the session data the report describes. Wit The shared dsh base resolves an unset or empty `DSH_TELEMETRY_MODE` to `FEEDBACK_ONLY` instead of `DISABLED`. Nothing is uploaded before the user records `/feedback`. On a Session object already captured, each feedback uploads the suffix after the last handoff through that exact event. A new object starts at its constructor boundary: a fresh Session begins at seq 0, while a forked, resumed, or migrated Session excludes its constructor seed and begins with this lifecycle's `session/end-seed`. The acknowledgement's sharing disclosure therefore matches the released lifecycle-local prefix. `FULL` and `DISABLED` remain explicit `DSH_TELEMETRY_MODE` overrides, any non-empty `DSH_TELEMETRY_DISABLED` remains the authoritative pre-load hard opt-out, and the plugin's own omitted-`mode` default stays `DISABLED`: the default changes only in the shared base's config expression, where deployments already override it. -This supersedes the session-backend default of the [default-off decision](2026-08-10-telemetry-default-off.md), accepting the user's explicit feedback action as the release authorization that note required a deployment setting for. That note's hard opt-out and its launcher-feed history remain current, and the [default-mount decision](2026-07-31-web-telemetry-default-mount.md) continues to own the endpoint, batching cadence, and exit-drain settings. +This supersedes the session-backend default of the [default-off decision](../../archived/feature/2026-08-10-telemetry-default-off.md), accepting the user's explicit feedback action as the release authorization that note required a deployment setting for. That note's hard opt-out and its launcher-feed history remain current, and the [default-mount decision](../../archived/feature/2026-07-31-web-telemetry-default-mount.md) continues to own the endpoint, batching cadence, and exit-drain settings. ## Alternatives considered diff --git a/.agents/notes/implemented/feature/2026-08-25-feedback-gated-telemetry-default.zh.md b/.agents/notes/implemented/feature/2026-08-25-feedback-gated-telemetry-default.zh.md index 1b40c53924..d82776b425 100644 --- a/.agents/notes/implemented/feature/2026-08-25-feedback-gated-telemetry-default.zh.md +++ b/.agents/notes/implemented/feature/2026-08-25-feedback-gated-telemetry-default.zh.md @@ -12,7 +12,7 @@ Status: implemented 共享 dsh 基础配置把未设置或为空的 `DSH_TELEMETRY_MODE` 解析为 `FEEDBACK_ONLY` 而不是 `DISABLED`。用户记录 `/feedback` 之前不上传任何数据。对于已经捕获的 Session 对象,每条反馈会上传从上次交接之后至该事件的后缀。新对象从 constructor boundary 开始:全新 Session 从 seq 0 开始,而 fork、resume 或迁移 Session 排除 constructor seed,从本生命周期的 `session/end-seed` 开始。因此,确认信息中的共享声明与所释放的生命周期本地前缀一致。`FULL` 和 `DISABLED` 仍是显式的 `DSH_TELEMETRY_MODE` 覆盖值,任何非空的 `DSH_TELEMETRY_DISABLED` 仍是加载前的强制关闭开关,插件自身省略 `mode` 的默认值仍是 `DISABLED`:默认值只在共享基础配置的配置表达式中改变,部署本来就在那里覆盖它。 -本决定取代[默认关闭决定](2026-08-10-telemetry-default-off.zh.md)中会话后端的默认值,把用户显式的反馈动作接受为该决定原本要求由部署设置提供的释放授权。该决定的强制关闭开关和 launcher 上报历史仍然有效,端点、批处理节奏和退出排空设置仍由[默认挂载决定](2026-07-31-web-telemetry-default-mount.zh.md)持有。 +本决定取代[默认关闭决定](../../archived/feature/2026-08-10-telemetry-default-off.md)中会话后端的默认值,把用户显式的反馈动作接受为该决定原本要求由部署设置提供的释放授权。该决定的强制关闭开关和 launcher 上报历史仍然有效,端点、批处理节奏和退出排空设置仍由[默认挂载决定](../../archived/feature/2026-07-31-web-telemetry-default-mount.md)持有。 ## 考虑过的替代方案 diff --git a/.agents/notes/implemented/feature/2026-08-25-loaded-turn-chat-navigation.i18n.yaml b/.agents/notes/implemented/feature/2026-08-25-loaded-turn-chat-navigation.i18n.yaml deleted file mode 100644 index e7844a946c..0000000000 --- a/.agents/notes/implemented/feature/2026-08-25-loaded-turn-chat-navigation.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-08-25-loaded-turn-chat-navigation.md -2026-08-25-loaded-turn-chat-navigation.md: b01e64d23fbc87f61c0de5b32cdf293c8d0afa94 -2026-08-25-loaded-turn-chat-navigation.zh.md: cb481e5ca27a3464e640bcebc96d60c90b9b3bb5 diff --git a/.agents/notes/implemented/feature/2026-08-26-generic-file-upload.i18n.yaml b/.agents/notes/implemented/feature/2026-08-26-generic-file-upload.i18n.yaml index fa6f76a300..56fb8a76d2 100644 --- a/.agents/notes/implemented/feature/2026-08-26-generic-file-upload.i18n.yaml +++ b/.agents/notes/implemented/feature/2026-08-26-generic-file-upload.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-08-26-generic-file-upload.md -2026-08-26-generic-file-upload.md: d8643f5f1a3e0dcdfdc7fc8b79cbb156b07f4402 -2026-08-26-generic-file-upload.zh.md: 38de46a424e3f02b7c0293e15835d096b108f071 +2026-08-26-generic-file-upload.md: 6d0d2901b14c44930b4342292d317ebe03705730 +2026-08-26-generic-file-upload.zh.md: 2d78811c24ba1a801d43f21f4e63db5646b0431b diff --git a/.agents/notes/implemented/feature/2026-08-26-generic-file-upload.md b/.agents/notes/implemented/feature/2026-08-26-generic-file-upload.md index d8643f5f1a..6d0d2901b1 100644 --- a/.agents/notes/implemented/feature/2026-08-26-generic-file-upload.md +++ b/.agents/notes/implemented/feature/2026-08-26-generic-file-upload.md @@ -20,7 +20,7 @@ Default mode, active Plan Mode, and an active goal share ordinary queue, follow- - **Store uploads in the project root** (the OpenHands / ChatGPT `/mnt/data` shape). Rejected: files in the user's tree can be edited, moved, or deleted, which breaks the session log's stable reference, pollutes `git status`, and requires a workspace to exist. `DSH_HOME` keeps frozen read-only bytes with content addressing; execution-world visibility is served by the projected path and can gain a copy-into-workspace step later. - **A dedicated `read_file` tool.** Rejected: the handle line points at an ordinary path, so the existing `read` tool (and the model's other file tools) already covers it; a second read tool would split model behavior without adding capability. -- **Eager content injection into the prompt.** Rejected for files exactly as it was for `@` mentions ([web file references](2026-07-27-web-file-and-session-references.md)): relevance is unknown at attach time, and lazy tool reads keep every content access logged. +- **Eager content injection into the prompt.** Rejected for files exactly as it was for `@` mentions ([web file references](../../archived/feature/2026-07-27-web-file-and-session-references.md)): relevance is unknown at attach time, and lazy tool reads keep every content access logged. - **Type whitelist and size caps.** Rejected for now: DeepSeek Chat's whitelist exists because its server parses uploads, while this harness only stores bytes and lets the model read them. The streaming carrier and store keep memory proportional to bounded chunks, so a cap would govern disk and transfer policy rather than request safety. - **A new attachment/file session event.** Rejected: the block-inside-`user/message` pattern images already use satisfies model-visible ⟺ logged without widening the event vocabulary. - **Block every command while attachments are present.** Rejected: `/goal` objectives and `/plan` entry need reference files, so a global refusal would leave those files with no command route to the model. diff --git a/.agents/notes/implemented/feature/2026-08-26-generic-file-upload.zh.md b/.agents/notes/implemented/feature/2026-08-26-generic-file-upload.zh.md index 38de46a424..2d78811c24 100644 --- a/.agents/notes/implemented/feature/2026-08-26-generic-file-upload.zh.md +++ b/.agents/notes/implemented/feature/2026-08-26-generic-file-upload.zh.md @@ -20,7 +20,7 @@ Status: implemented - **把上传存进项目根目录**(OpenHands / ChatGPT `/mnt/data` 的形态)。拒绝:用户目录里的文件可能被编辑、移动或删除,会打断会话日志的稳定引用,污染 `git status`,还要求工作区必须存在。`DSH_HOME` 用内容寻址保存冻结的只读字节;执行世界可见性由投影路径提供,之后还可以补一步拷贝进工作区。 - **专用的 `read_file` 工具。** 拒绝:handle 文本指向一条普通路径,现有 `read` 工具(以及模型的其他文件工具)已经覆盖它;再加一个读工具只会分裂模型行为而不增加能力。 -- **把内容急切注入提示词。** 对文件的拒绝理由与当年对 `@` 引用完全相同([web 文件引用](2026-07-27-web-file-and-session-references.zh.md)):附加时相关性未知,惰性工具读取让每次内容访问都留在日志里。 +- **把内容急切注入提示词。** 对文件的拒绝理由与当年对 `@` 引用完全相同([web 文件引用](../../archived/feature/2026-07-27-web-file-and-session-references.md)):附加时相关性未知,惰性工具读取让每次内容访问都留在日志里。 - **类型白名单与大小上限。** 现阶段拒绝:DeepSeek Chat 的白名单存在是因为其服务端要解析上传,而本 harness 只存字节、让模型自己读。流式载体和存储让内存占用与有界分块大小相关,因此上限属于磁盘与传输策略,不用于保证请求安全。 - **新增 attachment/file 会话事件。** 拒绝:图片已经采用的「块内联在 `user/message`」模式即可满足模型可见 ⟺ 可日志重建,无需扩大事件词汇。 - **有附件时阻止所有命令。** 拒绝:`/goal` 目标与 `/plan` 进入需要参考文件,统一拒绝会使这些文件没有进入模型的命令路径。 diff --git a/.agents/notes/implemented/feature/2026-08-26-web-trigger-menu-presentation-polish.i18n.yaml b/.agents/notes/implemented/feature/2026-08-26-web-trigger-menu-presentation-polish.i18n.yaml deleted file mode 100644 index 35d7c03626..0000000000 --- a/.agents/notes/implemented/feature/2026-08-26-web-trigger-menu-presentation-polish.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-08-26-web-trigger-menu-presentation-polish.md -2026-08-26-web-trigger-menu-presentation-polish.md: 07417b29e3bd520fe488fd463a44c373f694f383 -2026-08-26-web-trigger-menu-presentation-polish.zh.md: 2f031461517a8f6bb07c9e9def16ad94d4d4eebe diff --git a/.agents/notes/implemented/feature/2026-08-27-web-at-mention-discovery-and-row-content.i18n.yaml b/.agents/notes/implemented/feature/2026-08-27-web-at-mention-discovery-and-row-content.i18n.yaml deleted file mode 100644 index 8159646f09..0000000000 --- a/.agents/notes/implemented/feature/2026-08-27-web-at-mention-discovery-and-row-content.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-08-27-web-at-mention-discovery-and-row-content.md -2026-08-27-web-at-mention-discovery-and-row-content.md: defe3eaffbfe111b383467354fb21f088c9475c0 -2026-08-27-web-at-mention-discovery-and-row-content.zh.md: b730ce64efce638704d9d8f091832effcca36d31 diff --git a/.agents/notes/implemented/feature/2026-08-28-web-connection-recovery-control.i18n.yaml b/.agents/notes/implemented/feature/2026-08-28-web-connection-recovery-control.i18n.yaml deleted file mode 100644 index a86f4e2959..0000000000 --- a/.agents/notes/implemented/feature/2026-08-28-web-connection-recovery-control.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-08-28-web-connection-recovery-control.md -2026-08-28-web-connection-recovery-control.md: 649c840b20450d0282d707b50902c5d82317f54c -2026-08-28-web-connection-recovery-control.zh.md: 5d68c6acff96b23960f0ec60f54b56a98e70e74f diff --git a/.agents/notes/implemented/feature/2026-08-28-web-turn-stat-pills.i18n.yaml b/.agents/notes/implemented/feature/2026-08-28-web-turn-stat-pills.i18n.yaml deleted file mode 100644 index 213ab2298a..0000000000 --- a/.agents/notes/implemented/feature/2026-08-28-web-turn-stat-pills.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-08-28-web-turn-stat-pills.md -2026-08-28-web-turn-stat-pills.md: 2661c228b9a5a7b55ba3698cf3ee2b4c76701bbc -2026-08-28-web-turn-stat-pills.zh.md: 70387819965b0389b2fc6e33f506c65e4586d083 diff --git a/.agents/notes/implemented/feature/2026-08-30-web-turn-rail-outline-jump.i18n.yaml b/.agents/notes/implemented/feature/2026-08-30-web-turn-rail-outline-jump.i18n.yaml deleted file mode 100644 index 935dd280d4..0000000000 --- a/.agents/notes/implemented/feature/2026-08-30-web-turn-rail-outline-jump.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-08-30-web-turn-rail-outline-jump.md -2026-08-30-web-turn-rail-outline-jump.md: af2a464513d108429859c4f9ed8b4bfc58175e3c -2026-08-30-web-turn-rail-outline-jump.zh.md: b63b1c1f656689997b8a8266ee332dfdb47d4035 diff --git a/.agents/notes/implemented/feature/2026-09-01-shared-base-web-fetch-default.i18n.yaml b/.agents/notes/implemented/feature/2026-09-01-shared-base-web-fetch-default.i18n.yaml deleted file mode 100644 index 109bfd26e6..0000000000 --- a/.agents/notes/implemented/feature/2026-09-01-shared-base-web-fetch-default.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-09-01-shared-base-web-fetch-default.md -2026-09-01-shared-base-web-fetch-default.md: eceb2009d8a845b4a82f62b99eae13d86e89d050 -2026-09-01-shared-base-web-fetch-default.zh.md: 9be9c6350b6abce2e21bafe1f8c09efcb4265386 diff --git a/.agents/notes/implemented/feature/2026-09-01-web-elevation-stroke-shadows.i18n.yaml b/.agents/notes/implemented/feature/2026-09-01-web-elevation-stroke-shadows.i18n.yaml deleted file mode 100644 index 6339d26da2..0000000000 --- a/.agents/notes/implemented/feature/2026-09-01-web-elevation-stroke-shadows.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-09-01-web-elevation-stroke-shadows.md -2026-09-01-web-elevation-stroke-shadows.md: 2bc3105203b63c87aaf39e3d68780650b163dcca -2026-09-01-web-elevation-stroke-shadows.zh.md: bda3ee27af03d20937253fa23968afd0cd7d39c7 diff --git a/.agents/notes/implemented/feature/2026-09-01-web-superellipse-corner-smoothing.i18n.yaml b/.agents/notes/implemented/feature/2026-09-01-web-superellipse-corner-smoothing.i18n.yaml deleted file mode 100644 index 232c41abcd..0000000000 --- a/.agents/notes/implemented/feature/2026-09-01-web-superellipse-corner-smoothing.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-09-01-web-superellipse-corner-smoothing.md -2026-09-01-web-superellipse-corner-smoothing.md: 7088438a8068343434a27495b771515d4a5158ee -2026-09-01-web-superellipse-corner-smoothing.zh.md: 26aa64fda9f557069cfc3040422c8e1b7e34676e diff --git a/.agents/notes/implemented/process/2026-06-11-quality-gates.i18n.yaml b/.agents/notes/implemented/process/2026-06-11-quality-gates.i18n.yaml index c22016a551..0ff12acf48 100644 --- a/.agents/notes/implemented/process/2026-06-11-quality-gates.i18n.yaml +++ b/.agents/notes/implemented/process/2026-06-11-quality-gates.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/implemented/process/2026-06-11-quality-gates.md -2026-06-11-quality-gates.md: 6a66fc6a4ead8908bfaf3a417568a3a7eb458744 -2026-06-11-quality-gates.zh.md: d546a1bbbac48afdbae6f1218da8f4051df2a1bc +2026-06-11-quality-gates.md: f3e70f843eca1fb59e10704523d42c200d44de69 +2026-06-11-quality-gates.zh.md: efcf840ad8cb4189c0de268ccf315319c5639453 diff --git a/.agents/notes/implemented/process/2026-06-11-quality-gates.md b/.agents/notes/implemented/process/2026-06-11-quality-gates.md index 6a66fc6a4e..f3e70f843e 100644 --- a/.agents/notes/implemented/process/2026-06-11-quality-gates.md +++ b/.agents/notes/implemented/process/2026-06-11-quality-gates.md @@ -4,7 +4,7 @@ Status: implemented English | [中文](2026-06-11-quality-gates.zh.md) -The hook/CI symmetry in this record is superseded by [Fast local Git hooks](2026-07-22-fast-local-git-hooks.md); CI remains the exhaustive enforcement path. +The hook/CI symmetry in this record is superseded by [Fast local Git hooks](../../archived/process/2026-07-22-fast-local-git-hooks.md); CI remains the exhaustive enforcement path. ## Problem @@ -15,11 +15,11 @@ This codebase is developed primarily by coding agents. Agents follow enforced ga Every mechanically checkable AGENTS.md promise gets a command that exits non-zero. CI invokes the exhaustive set, while Git hooks reserve their latency budget for cheap local defects: - Max-strict TypeScript (`noUncheckedIndexedAccess`, `exactOptionalPropertyTypes`, …); examples, tests, and scripts typecheck in CI via the root no-emit `tsconfig.json` while package/vendor code stays behind its own project-reference boundary. -- [Oxlint](2026-07-29-oxlint-linter.md) with type-aware TypeScript rules plus the @stylistic and SonarJS compatibility plugins, enforcing the house style and file-local duplicated-logic checks; vendored code excluded. +- [Oxlint](../../archived/process/2026-07-29-oxlint-linter.md) with type-aware TypeScript rules plus the @stylistic and SonarJS compatibility plugins, enforcing the house style and file-local duplicated-logic checks; vendored code excluded. - jscpd detects cross-file clones in package production TypeScript and repository scripts; narrow source-range exceptions document deliberately parallel implementations. - Per-file 100% coverage on `packages/*/*/src` (v8); unreachable defensive guards carry `/* v8 ignore */ ` with stated reasons instead of deletion. - publint (package correctness), workspace constraints (workspace rules: private, cordis peer+dev, uniform version, ESM), and a NodeNext consumer typecheck for built package declarations. [The unused-code gate removal](2026-08-19-remove-knip.md) records why static dead-code scanning is outside this suite. -- lefthook pre-commit applies project-free Oxlint validation and [safe fixes with a bounded retry](2026-08-09-oxlint-only-fix-workflow.md), rejects staged whitespace, and checks the vendor manifest; pre-push runs incremental typecheck. CI runs the full matrix on node 22.19/24/26 plus built application smokes for the Headless, TUI, ACP, JSON-RPC, workflow, and code-runtime entry paths. +- lefthook pre-commit applies project-free Oxlint validation and [safe fixes with a bounded retry](../../archived/process/2026-08-09-oxlint-only-fix-workflow.md), rejects staged whitespace, and checks the vendor manifest; pre-push runs incremental typecheck. CI runs the full matrix on node 22.19/24/26 plus built application smokes for the Headless, TUI, ACP, JSON-RPC, workflow, and code-runtime entry paths. ## Consequences diff --git a/.agents/notes/implemented/process/2026-06-11-quality-gates.zh.md b/.agents/notes/implemented/process/2026-06-11-quality-gates.zh.md index d546a1bbba..efcf840ad8 100644 --- a/.agents/notes/implemented/process/2026-06-11-quality-gates.zh.md +++ b/.agents/notes/implemented/process/2026-06-11-quality-gates.zh.md @@ -4,7 +4,7 @@ Status: implemented [English](2026-06-11-quality-gates.md) | 中文 -本记录中的钩子/CI 对称设计已由[快速本地 Git 钩子](2026-07-22-fast-local-git-hooks.zh.md)取代;CI 仍是执行完整检查的路径。 +本记录中的钩子/CI 对称设计已由[快速本地 Git 钩子](../../archived/process/2026-07-22-fast-local-git-hooks.md)取代;CI 仍是执行完整检查的路径。 ## 问题 @@ -15,11 +15,11 @@ Status: implemented 每条可机械检查的 AGENTS.md 承诺都有一个以非零状态退出的命令。CI 执行完整集合,而 Git 钩子将延迟预算留给可低成本发现的本地缺陷: - 最严格的 TypeScript 配置(`noUncheckedIndexedAccess`、`exactOptionalPropertyTypes` 等);示例、测试和脚本通过根目录的 no-emit `tsconfig.json` 在 CI 中进行类型检查,而包/vendor 代码保持在各自 project-reference 边界之后。 -- [Oxlint](2026-07-29-oxlint-linter.zh.md) 配合类型感知的 TypeScript 规则以及 @stylistic 和 SonarJS 兼容插件,强制执行统一代码风格和文件内重复逻辑检查;vendor 代码排除在外。 +- [Oxlint](../../archived/process/2026-07-29-oxlint-linter.md) 配合类型感知的 TypeScript 规则以及 @stylistic 和 SonarJS 兼容插件,强制执行统一代码风格和文件内重复逻辑检查;vendor 代码排除在外。 - jscpd 检测包的生产 TypeScript 代码与仓库脚本中的跨文件克隆;窄范围的源码区间例外用于记录有意为之的并行实现。 - `packages/*/*/src` 下按文件 100% 覆盖率(v8);不可达的防御性守卫使用 `/* v8 ignore */ ` 并注明理由,而非删除。 - publint(包的正确性)、workspace 约束(workspace 规则:private、cordis peer+dev、统一版本、ESM),以及对构建出的包声明文件进行 NodeNext 消费方类型检查。[移除未使用代码门禁的决策](2026-08-19-remove-knip.zh.md)说明了静态死代码扫描为何不属于这套门禁。 -- lefthook pre-commit 执行不加载项目的 Oxlint 验证,并应用带[一次有界重试](2026-08-09-oxlint-only-fix-workflow.zh.md)的安全修复,拒绝已暂存的空白问题并检查 vendor manifest(元数据清单);pre-push 运行增量类型检查。CI 在 Node 22.19/24/26 上运行完整矩阵,并对 Headless、TUI、ACP(Agent Client Protocol)、JSON-RPC、工作流和代码运行时入口路径执行已构建应用的冒烟测试。 +- lefthook pre-commit 执行不加载项目的 Oxlint 验证,并应用带[一次有界重试](../../archived/process/2026-08-09-oxlint-only-fix-workflow.md)的安全修复,拒绝已暂存的空白问题并检查 vendor manifest(元数据清单);pre-push 运行增量类型检查。CI 在 Node 22.19/24/26 上运行完整矩阵,并对 Headless、TUI、ACP(Agent Client Protocol)、JSON-RPC、工作流和代码运行时入口路径执行已构建应用的冒烟测试。 ## 后果 diff --git a/.agents/notes/implemented/process/2026-06-11-vendor-cordis-as-source.i18n.yaml b/.agents/notes/implemented/process/2026-06-11-vendor-cordis-as-source.i18n.yaml deleted file mode 100644 index 9dd1c72ec5..0000000000 --- a/.agents/notes/implemented/process/2026-06-11-vendor-cordis-as-source.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/process/2026-06-11-vendor-cordis-as-source.md -2026-06-11-vendor-cordis-as-source.md: 265966ad0a28900f511efb3091889081d56db2b4 -2026-06-11-vendor-cordis-as-source.zh.md: af8c640e2164c2f14183b29f371e234e59035180 diff --git a/.agents/notes/implemented/process/2026-06-17-ts-build-config.i18n.yaml b/.agents/notes/implemented/process/2026-06-17-ts-build-config.i18n.yaml index 16a4acb893..6ee41d8ba1 100644 --- a/.agents/notes/implemented/process/2026-06-17-ts-build-config.i18n.yaml +++ b/.agents/notes/implemented/process/2026-06-17-ts-build-config.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/implemented/process/2026-06-17-ts-build-config.md -2026-06-17-ts-build-config.md: a9745baefbce97e0613a1c07d8e4d1de1e7f40f5 -2026-06-17-ts-build-config.zh.md: b2905f59757c28731d26b90a911e25559bcc1bfa +2026-06-17-ts-build-config.md: 05b70cb836491e8a3e6c66deb38773b5351e69e8 +2026-06-17-ts-build-config.zh.md: d42d9b7abe6368b3ed8e0f32605e866e214f1e7c diff --git a/.agents/notes/implemented/process/2026-06-17-ts-build-config.md b/.agents/notes/implemented/process/2026-06-17-ts-build-config.md index a9745baefb..05b70cb836 100644 --- a/.agents/notes/implemented/process/2026-06-17-ts-build-config.md +++ b/.agents/notes/implemented/process/2026-06-17-ts-build-config.md @@ -4,7 +4,7 @@ Status: implemented English | [中文](2026-06-17-ts-build-config.zh.md) -> Root project topology uses a solution root over two aggregate programs; see the [solution-root note](2026-07-22-tsconfig-solution-root-two-aggregates.md). The [API Remotes build note](2026-08-08-api-remotes-generated-contract-build.md) defines the current command order in which the Host generates Remote contracts before the Client compiles. The tsc-first ownership decided here is unchanged. +> Root project topology uses a solution root over two aggregate programs; see the [solution-root note](../../archived/process/2026-07-22-tsconfig-solution-root-two-aggregates.md). The [API Remotes build note](../../archived/process/2026-08-08-api-remotes-generated-contract-build.md) defines the current command order in which the Host generates Remote contracts before the Client compiles. The tsc-first ownership decided here is unchanged. ## Problem diff --git a/.agents/notes/implemented/process/2026-06-17-ts-build-config.zh.md b/.agents/notes/implemented/process/2026-06-17-ts-build-config.zh.md index b2905f5975..d42d9b7abe 100644 --- a/.agents/notes/implemented/process/2026-06-17-ts-build-config.zh.md +++ b/.agents/notes/implemented/process/2026-06-17-ts-build-config.zh.md @@ -4,7 +4,7 @@ Status: implemented [English](2026-06-17-ts-build-config.md) | 中文 -> 根项目拓扑由一个 solution 根文件统辖两个 aggregate program;见 [solution 根文件 Agent Note](2026-07-22-tsconfig-solution-root-two-aggregates.zh.md)。Host 生成 Remote 约定后再编译 Client 的当前命令顺序见 [API Remotes 构建 Agent Note](2026-08-08-api-remotes-generated-contract-build.zh.md)。本文确定的 tsc-first 职责保持不变。 +> 根项目拓扑由一个 solution 根文件统辖两个 aggregate program;见 [solution 根文件 Agent Note](../../archived/process/2026-07-22-tsconfig-solution-root-two-aggregates.md)。Host 生成 Remote 约定后再编译 Client 的当前命令顺序见 [API Remotes 构建 Agent Note](../../archived/process/2026-08-08-api-remotes-generated-contract-build.md)。本文确定的 tsc-first 职责保持不变。 ## 问题 diff --git a/.agents/notes/implemented/process/2026-06-18-markdown-cross-link-lint.i18n.yaml b/.agents/notes/implemented/process/2026-06-18-markdown-cross-link-lint.i18n.yaml deleted file mode 100644 index bf3b882085..0000000000 --- a/.agents/notes/implemented/process/2026-06-18-markdown-cross-link-lint.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/process/2026-06-18-markdown-cross-link-lint.md -2026-06-18-markdown-cross-link-lint.md: 37e0a41c08e068d6b3128300f078c8e417f1f337 -2026-06-18-markdown-cross-link-lint.zh.md: 56a1c9e90debe06d313fd5aaf03f771b60327dcb diff --git a/.agents/notes/implemented/process/2026-06-20-agent-note-classification.i18n.yaml b/.agents/notes/implemented/process/2026-06-20-agent-note-classification.i18n.yaml deleted file mode 100644 index a9df7e3c73..0000000000 --- a/.agents/notes/implemented/process/2026-06-20-agent-note-classification.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/process/2026-06-20-agent-note-classification.md -2026-06-20-agent-note-classification.md: 36d79d2ba1d65202e8bb34db3bcc80390bac80a7 -2026-06-20-agent-note-classification.zh.md: 569c437a9c63368693d3dfa2bb65144e520d58f9 diff --git a/.agents/notes/implemented/process/2026-06-20-core-data-structures-catalog.i18n.yaml b/.agents/notes/implemented/process/2026-06-20-core-data-structures-catalog.i18n.yaml deleted file mode 100644 index 01b73a2317..0000000000 --- a/.agents/notes/implemented/process/2026-06-20-core-data-structures-catalog.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/process/2026-06-20-core-data-structures-catalog.md -2026-06-20-core-data-structures-catalog.md: 489dc488b82883dc1ab23fb0685c9467651cb60f -2026-06-20-core-data-structures-catalog.zh.md: 2742603cd6f83d114c00e9b50977cedc32f90b60 diff --git a/.agents/notes/implemented/process/2026-07-02-bilingual-docs-and-pairing-gate.i18n.yaml b/.agents/notes/implemented/process/2026-07-02-bilingual-docs-and-pairing-gate.i18n.yaml index 737b2dfb23..213fa7b96a 100644 --- a/.agents/notes/implemented/process/2026-07-02-bilingual-docs-and-pairing-gate.i18n.yaml +++ b/.agents/notes/implemented/process/2026-07-02-bilingual-docs-and-pairing-gate.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/implemented/process/2026-07-02-bilingual-docs-and-pairing-gate.md -2026-07-02-bilingual-docs-and-pairing-gate.md: 62302f73120f40a9a1302ee839f266d382be7698 -2026-07-02-bilingual-docs-and-pairing-gate.zh.md: 8e9966de6f08a2f41157ebf2cae4bcd0312d62f2 +2026-07-02-bilingual-docs-and-pairing-gate.md: 9448c9dcd75cae0ab39fd62b418fd3aa3b5e4484 +2026-07-02-bilingual-docs-and-pairing-gate.zh.md: b843de91e2fb92d05c81387f49853c4ca413228f diff --git a/.agents/notes/implemented/process/2026-07-02-bilingual-docs-and-pairing-gate.md b/.agents/notes/implemented/process/2026-07-02-bilingual-docs-and-pairing-gate.md index 62302f7312..9448c9dcd7 100644 --- a/.agents/notes/implemented/process/2026-07-02-bilingual-docs-and-pairing-gate.md +++ b/.agents/notes/implemented/process/2026-07-02-bilingual-docs-and-pairing-gate.md @@ -12,10 +12,10 @@ This repo's documentation corpus is read by people and agents inside and outside - **Paired sibling files with equal authority.** A documentation pair is three sibling files: English `foo.md`, Chinese `foo.zh.md`, and a consistency record `foo.i18n.yaml`. Neither language is canonical — a document may be authored and reviewed Chinese-first and translated to English afterwards, or the reverse; what binds the pair is that both sides must say the same thing, and pairs merge whole (both languages plus the record, never one alone). Policy: [docs/i18n/README.md](../../../../docs/i18n/README.md); translation rules: [docs/i18n/translation-rules.md](../../../../docs/i18n/translation-rules.md); terminology source of truth: [docs/i18n/terminology.md](../../../../docs/i18n/terminology.md). - **A sidecar record of both blob hashes makes consistency checkable.** `foo.i18n.yaml` holds the full git blob hash of each side as of the last confirmed-consistent state. An edit to either side without re-confirming the pair is then mechanically detectable as a pure content comparison — no history lookup — and the hashes are computable for files edited in the same PR, which a commit-hash record is not. Re-recording (`verify-translation-pairing --write `, which requires naming the confirmed pairs — bulk re-record is an explicit `--write --all`) produces a reviewable yaml diff: confirming consistency is an explicit, visible act in the PR. -- **`verify-translation-pairing` joins `doc-sync`.** The gate ([scripts/verify-translation-pairing.ts](../../../../scripts/verify-translation-pairing.ts)) enforces: every discovered, non-excluded source has a complete pair; every existing pair is complete (all three files) and consistent (both hashes match, the Chinese side and every authored English source carry their switchers while listed generated English sources are exempt, structural signatures identical); and excluded generated, instruction, or bilingual-by-construction files stay unpaired. Relative document links whose targets belong to that active corpus use the target sibling matching the source locale, while the structure signature normalizes `.md` and `.zh.md` siblings to one semantic target and retains the exact query/fragment suffix; the [localized bilingual links decision](2026-08-18-localized-bilingual-links.md) owns that refinement. [scripts/translation-pairing.manifest.json](../../../../scripts/translation-pairing.manifest.json) contains only explicit exclusions, so no requirement can bypass discovery and receive a weaker check. Source-oriented code gates consume a `.zh.md` fence sequence as a derivative only when its unsuffixed sibling has the same tracked fences in the same order with byte-identical bodies; an incomplete, reordered, reclassified, or changed sequence stays independent, so the owning code gate or pairing gate reports the mismatch. +- **`verify-translation-pairing` joins `doc-sync`.** The gate ([scripts/verify-translation-pairing.ts](../../../../scripts/verify-translation-pairing.ts)) enforces: every discovered, non-excluded source has a complete pair; every existing pair is complete (all three files) and consistent (both hashes match, the Chinese side and every authored English source carry their switchers while listed generated English sources are exempt, structural signatures identical); and excluded generated, instruction, or bilingual-by-construction files stay unpaired. Relative document links whose targets belong to that active corpus use the target sibling matching the source locale, while the structure signature normalizes `.md` and `.zh.md` siblings to one semantic target and retains the exact query/fragment suffix; the [localized bilingual links decision](../../archived/process/2026-08-18-localized-bilingual-links.md) owns that refinement. [scripts/translation-pairing.manifest.json](../../../../scripts/translation-pairing.manifest.json) contains only explicit exclusions, so no requirement can bypass discovery and receive a weaker check. Source-oriented code gates consume a `.zh.md` fence sequence as a derivative only when its unsuffixed sibling has the same tracked fences in the same order with byte-identical bodies; an incomplete, reordered, reclassified, or changed sequence stays independent, so the owning code gate or pairing gate reports the mismatch. - **One corpus-wide requirement.** Every document in scope requires a complete pair from creation; the policy has no per-file rollout state, date cutoff, or README-specific class. Repository-root policy documents are named explicitly: `CONTRIBUTING.md`, `BRAND_GUIDELINES.md`, and `SAFETY.md` participate in the same discovery and pairing rules even though they are outside documentation directories. README discovery covers every case-insensitive README basename outside vendored, dependency, and ignored build-output trees, including future top-level directories. A site-published pair uses `pairedPages()` so the root locale projects `.zh.md` and `/en/` projects `.md`; creating a counterpart alone does not publish it. - **Pairing records are metadata, not Cordis Loader configuration.** Cordis configuration discovery accepts actual `.cordis.yml` and `.cordis.yaml` files while excluding `*.i18n.yaml`, even when the document name contains `cordis`. This preserves validation of executable Loader entries without parsing translation hashes as configuration. -- **Translation is agent work with human review.** Routine changes use the direct one-pass path owned by the [lightweight-translation decision](2026-08-08-lightweight-routine-documentation-translation.md). The [extended translation skill](../../../skills/dsh-translate-docs/SKILL.md) retains delegated translation and the other heavier mechanisms for explicit user invocation; both paths defer to the documentation contracts as their sources of truth. +- **Translation is agent work with human review.** Routine changes use the direct one-pass path owned by [docs/i18n/README.md](../../../../docs/i18n/README.md). The [extended translation skill](../../../skills/dsh-translate-docs/SKILL.md) retains delegated translation and the other heavier mechanisms for explicit user invocation; both paths defer to the documentation contracts as their sources of truth. ## Verification @@ -41,4 +41,4 @@ Paired sibling files with locale suffixes are the dominant Chinese big-tech conv - When the two sides disagree, no mechanical rule picks a winner — the PR review does. That is the price of equal authority, accepted deliberately: the alternative (a canonical language) forbids Chinese-first authoring. - Generated English documents remain derived from source and freshness-gated by their owning generators. A generated page with a reviewed Chinese counterpart participates in the three-file pairing workflow, with one structural exception: the generated English source has no language switcher because adding one would make the generator stale, while the Chinese counterpart links back to it. Generated pages without a reviewed counterpart remain explicit exclusions and use an English website projection. - The exclusions-only manifest makes every current and future in-scope document mandatory through the same path. There is no explicit requirement, cutoff, or class entry that can fall outside discovery while appearing enforced. -- The recorded hashes double as the update tool: [gen-translation-brief](2026-07-26-briefed-minimal-translation-updates.md) recovers either side's last-confirmed text from them and assembles the minimal-update briefing, so re-translation of whole files is never forced by the mechanism. +- The recorded hashes double as the update tool: [gen-translation-brief](../../../../docs/i18n/README.md) recovers either side's last-confirmed text from them and assembles the minimal-update briefing, so re-translation of whole files is never forced by the mechanism. diff --git a/.agents/notes/implemented/process/2026-07-02-bilingual-docs-and-pairing-gate.zh.md b/.agents/notes/implemented/process/2026-07-02-bilingual-docs-and-pairing-gate.zh.md index 8e9966de6f..b843de91e2 100644 --- a/.agents/notes/implemented/process/2026-07-02-bilingual-docs-and-pairing-gate.zh.md +++ b/.agents/notes/implemented/process/2026-07-02-bilingual-docs-and-pairing-gate.zh.md @@ -12,10 +12,10 @@ Status: implemented - **配对兄弟文件,两种语言同权。** 一对文档由三个兄弟文件组成:英文 `foo.md`、中文 `foo.zh.md`,以及一份一致性记录 `foo.i18n.yaml`。没有哪种语言是正典:一篇文档可以先用中文撰写和评审、之后再译成英文,反之亦可;约束配对的是:两侧必须表达相同的内容,且配对整体合并(两种语言加记录,绝不单独落一侧)。政策见 [docs/i18n/README.md](../../../../docs/i18n/README.zh.md);翻译规则见 [docs/i18n/translation-rules.md](../../../../docs/i18n/translation-rules.zh.md);术语真源见 [docs/i18n/terminology.md](../../../../docs/i18n/terminology.md)。 - **伴随记录保存两侧 blob hash,使一致性可检查。** `foo.i18n.yaml` 保存两侧文件在上一次确认一致时各自的完整 Git blob hash。此后修改了任一侧而未重新确认配对,都能被机械检测出来(纯内容比较,无需查询历史),而且同一个 PR(Pull Request)内改动的文件也能计算出 hash,commit hash 式的记录做不到这一点。重新记录(`verify-translation-pairing --write `,要求点名所确认的配对;批量重新记录是显式的 `--write --all`)会产生一份可评审的 YAML diff:确认一致在 PR 中是一个显式、可见的动作。 -- **`verify-translation-pairing` 加入 `doc-sync`。** 门禁([scripts/verify-translation-pairing.ts](../../../../scripts/verify-translation-pairing.ts))强制执行以下规则:每个已发现且未排除的源文档都有完整配对;每个现有配对都完整(三个文件齐全)且一致(两侧的 hash 均与记录匹配、中文侧和所有人工撰写的英文源都带语言切换行而清单内的生成英文源除外、结构签名一致);被排除的生成文档、指令文档或本身即双语的文档不得配对。目标属于该活跃语料的相对文档链接使用与源文件 locale 相同的目标兄弟文件;结构签名则把 `.md` 与 `.zh.md` 兄弟文件规范化为同一个语义目标,并保留完全相同的 query/fragment 后缀;该细化规则由[双语文档链接本地化决策](2026-08-18-localized-bilingual-links.zh.md)负责。[scripts/translation-pairing.manifest.json](../../../../scripts/translation-pairing.manifest.json) 只包含显式排除项,因此任何要求都无法绕过发现流程而接受较弱的检查。只有当 `.zh.md` 围栏序列与其无后缀兄弟文件拥有顺序相同、正文按字节一致的同一组受跟踪围栏时,面向源码的代码门禁才会将其作为派生内容消费;不完整、顺序变更、重分类或已改动的序列仍会独立受检,因此由其所属的代码门禁或配对门禁报告不匹配。 +- **`verify-translation-pairing` 加入 `doc-sync`。** 门禁([scripts/verify-translation-pairing.ts](../../../../scripts/verify-translation-pairing.ts))强制执行以下规则:每个已发现且未排除的源文档都有完整配对;每个现有配对都完整(三个文件齐全)且一致(两侧的 hash 均与记录匹配、中文侧和所有人工撰写的英文源都带语言切换行而清单内的生成英文源除外、结构签名一致);被排除的生成文档、指令文档或本身即双语的文档不得配对。目标属于该活跃语料的相对文档链接使用与源文件 locale 相同的目标兄弟文件;结构签名则把 `.md` 与 `.zh.md` 兄弟文件规范化为同一个语义目标,并保留完全相同的 query/fragment 后缀;该细化规则由[双语文档链接本地化决策](../../archived/process/2026-08-18-localized-bilingual-links.md)负责。[scripts/translation-pairing.manifest.json](../../../../scripts/translation-pairing.manifest.json) 只包含显式排除项,因此任何要求都无法绕过发现流程而接受较弱的检查。只有当 `.zh.md` 围栏序列与其无后缀兄弟文件拥有顺序相同、正文按字节一致的同一组受跟踪围栏时,面向源码的代码门禁才会将其作为派生内容消费;不完整、顺序变更、重分类或已改动的序列仍会独立受检,因此由其所属的代码门禁或配对门禁报告不匹配。 - **全语料统一要求。** 范围内的每篇文档从创建起就必须有完整配对;政策没有逐文件推进状态、日期分界或 README 专用类别。仓库根目录的政策文档会被显式点名:`CONTRIBUTING.md`、`BRAND_GUIDELINES.md` 与 `SAFETY.md` 虽然不在文档目录中,仍遵循同一套发现与配对规则。README 发现会覆盖 vendor 源码、依赖目录与被忽略的构建产物目录之外所有文件名不区分大小写匹配 README 的文件,包括今后新增的顶层目录。发布到文档站的配对使用 `pairedPages()`,由根 locale 投影 `.zh.md`,由 `/en/` 投影 `.md`;仅创建对侧文件并不会发布它。 - **配对记录是元数据,而不是 Cordis Loader 配置。** Cordis 配置发现会接受实际的 `.cordis.yml` 和 `.cordis.yaml` 文件,同时排除 `*.i18n.yaml`,即使文档名中包含 `cordis` 也不例外。这样既能继续校验可执行的 Loader 配置项,又不会把翻译 hash 当作配置来解析。 -- **翻译是 agent 的工作,由人评审。** 常规改动采用由[轻量翻译决策](2026-08-08-lightweight-routine-documentation-translation.zh.md)确立的直接单遍路径。[扩展翻译 skill(技能)](../../../skills/dsh-translate-docs/SKILL.md)保留委派翻译和其他较重机制,供用户显式调用;两条路径均以文档契约为真源。 +- **翻译是 agent 的工作,由人评审。** 常规改动采用由 [docs/i18n/README.md](../../../../docs/i18n/README.zh.md) 规定的直接单遍路径。[扩展翻译 skill(技能)](../../../skills/dsh-translate-docs/SKILL.md)保留委派翻译和其他较重机制,供用户显式调用;两条路径均以文档契约为真源。 ## 验证 @@ -41,4 +41,4 @@ Status: implemented - 两侧说法冲突时,没有机械规则裁决谁赢,由 PR 评审裁决。这是同权的代价,且是有意接受的:另一个选项(正典语言)会禁止中文先行撰写。 - 生成的英文文档仍由源码派生,并由各自的生成器实施新鲜度门禁。有经评审中文对侧的生成页面遵循三文件配对工作流,但有一项结构例外:生成的英文源文件不含语言切换行,因为添加该行会使生成器新鲜度检查失败;中文对侧仍链接回英文源。没有经评审对侧的生成页面保留为显式排除项,并在网站上投影英文。 - 只含排除项的 manifest(元数据清单)通过同一路径,要求当前及今后纳入范围的每篇文档都必须配对。不存在显式要求、分界或类别条目可以落在发现范围之外,却看似已经强制执行。 -- 记录的 hash 兼作更新工具:[gen-translation-brief](2026-07-26-briefed-minimal-translation-updates.zh.md) 会从中还原任一侧上次确认的文本并组装最小更新简报,因此这套机制从不强迫整篇重译。 +- 记录的 hash 兼作更新工具:[gen-translation-brief](../../../../docs/i18n/README.zh.md) 会从中还原任一侧上次确认的文本并组装最小更新简报,因此这套机制从不强迫整篇重译。 diff --git a/.agents/notes/implemented/process/2026-07-02-tool-schema-catalog.i18n.yaml b/.agents/notes/implemented/process/2026-07-02-tool-schema-catalog.i18n.yaml deleted file mode 100644 index 8ae92dc920..0000000000 --- a/.agents/notes/implemented/process/2026-07-02-tool-schema-catalog.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/process/2026-07-02-tool-schema-catalog.md -2026-07-02-tool-schema-catalog.md: 21192b8caff386058008eed1417ef78c678190f7 -2026-07-02-tool-schema-catalog.zh.md: 756f279b1a8ebd08efd92c6cf8abfd5a70a9dcdb diff --git a/.agents/notes/implemented/process/2026-07-06-export-jsdoc-gate.i18n.yaml b/.agents/notes/implemented/process/2026-07-06-export-jsdoc-gate.i18n.yaml deleted file mode 100644 index efb05ed5e6..0000000000 --- a/.agents/notes/implemented/process/2026-07-06-export-jsdoc-gate.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/process/2026-07-06-export-jsdoc-gate.md -2026-07-06-export-jsdoc-gate.md: 5f594cf279c07c41a96a124f1d25dbf880543718 -2026-07-06-export-jsdoc-gate.zh.md: a45c7909008a50764e5d73f6ae5943a7850e0573 diff --git a/.agents/notes/implemented/process/2026-07-06-node-engine-floor.i18n.yaml b/.agents/notes/implemented/process/2026-07-06-node-engine-floor.i18n.yaml index 41326cd476..5687bcd853 100644 --- a/.agents/notes/implemented/process/2026-07-06-node-engine-floor.i18n.yaml +++ b/.agents/notes/implemented/process/2026-07-06-node-engine-floor.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/implemented/process/2026-07-06-node-engine-floor.md -2026-07-06-node-engine-floor.md: 9d42fc77e5630289b08bc3499986eda4358cbe61 -2026-07-06-node-engine-floor.zh.md: 4820ade269f7ecf5def11dc239c1c355daa92924 +2026-07-06-node-engine-floor.md: e2fe7661f43b77f544de2c3a555e5d756f260ea2 +2026-07-06-node-engine-floor.zh.md: e7d41e81281aa1d335780cf4edd65749ccb1db84 diff --git a/.agents/notes/implemented/process/2026-07-06-node-engine-floor.md b/.agents/notes/implemented/process/2026-07-06-node-engine-floor.md index 9d42fc77e5..e2fe7661f4 100644 --- a/.agents/notes/implemented/process/2026-07-06-node-engine-floor.md +++ b/.agents/notes/implemented/process/2026-07-06-node-engine-floor.md @@ -10,7 +10,7 @@ The Node 22 branch of the root `engines.node` range is a contract for the instal ## Decision -Set `engines.node` to `^22.19.0 || >=24.0.0` and test keyless CI on `['22.19', 24, 26]`. The primary Node 24 jobs own the complete typecheck and unit coverage inventory; every version runs focused source-worker, Zstandard, source-launch, and [jsdom storage](../testing/2026-07-30-vitest-jsdom-webstorage-ownership.md) smokes without repeating that inventory. The real-API e2e workflow stays on Node 24 because it exercises API integration rather than the runtime floor. +Set `engines.node` to `^22.19.0 || >=24.0.0` and test keyless CI on `['22.19', 24, 26]`. The primary Node 24 jobs own the complete typecheck and unit coverage inventory; every version runs focused source-worker, Zstandard, source-launch, and [jsdom storage](../../archived/testing/2026-07-30-vitest-jsdom-webstorage-ownership.md) smokes without repeating that inventory. The real-API e2e workflow stays on Node 24 because it exercises API integration rather than the runtime floor. Two Node features gate the source runtime: diff --git a/.agents/notes/implemented/process/2026-07-06-node-engine-floor.zh.md b/.agents/notes/implemented/process/2026-07-06-node-engine-floor.zh.md index 4820ade269..e7d41e8128 100644 --- a/.agents/notes/implemented/process/2026-07-06-node-engine-floor.zh.md +++ b/.agents/notes/implemented/process/2026-07-06-node-engine-floor.zh.md @@ -10,7 +10,7 @@ Status: implemented ## 决策 -将 `engines.node` 设为 `^22.19.0 || >=24.0.0`,并在 `['22.19', 24, 26]` 上运行 keyless CI。主要的 Node 24 任务负责整套类型检查和单元测试覆盖率任务;三个版本均运行 source-worker、Zstandard、source-launch 和 [jsdom 存储](../testing/2026-07-30-vitest-jsdom-webstorage-ownership.zh.md) 专项冒烟测试,不重复这套类型检查和覆盖率任务。真实 API 的 e2e 工作流保持在 Node 24 上,因为它验证的是 API 集成而非运行时下限。 +将 `engines.node` 设为 `^22.19.0 || >=24.0.0`,并在 `['22.19', 24, 26]` 上运行 keyless CI。主要的 Node 24 任务负责整套类型检查和单元测试覆盖率任务;三个版本均运行 source-worker、Zstandard、source-launch 和 [jsdom 存储](../../archived/testing/2026-07-30-vitest-jsdom-webstorage-ownership.md) 专项冒烟测试,不重复这套类型检查和覆盖率任务。真实 API 的 e2e 工作流保持在 Node 24 上,因为它验证的是 API 集成而非运行时下限。 两个 Node 特性决定了源码运行时的门槛: diff --git a/.agents/notes/implemented/process/2026-07-06-parallel-pre-push-gates.i18n.yaml b/.agents/notes/implemented/process/2026-07-06-parallel-pre-push-gates.i18n.yaml index 798f10432b..482b7bc689 100644 --- a/.agents/notes/implemented/process/2026-07-06-parallel-pre-push-gates.i18n.yaml +++ b/.agents/notes/implemented/process/2026-07-06-parallel-pre-push-gates.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/implemented/process/2026-07-06-parallel-pre-push-gates.md -2026-07-06-parallel-pre-push-gates.md: 54fb01f03de1d0d198e373d960e9bd68b8687d60 -2026-07-06-parallel-pre-push-gates.zh.md: d7a949af649d3cf83da91358015f9196f71bc459 +2026-07-06-parallel-pre-push-gates.md: 9773a86428545608d184112ec4ab95136d4690d0 +2026-07-06-parallel-pre-push-gates.zh.md: 4d0e15a3389d276ea4b1c51224c96b864b0958a0 diff --git a/.agents/notes/implemented/process/2026-07-06-parallel-pre-push-gates.md b/.agents/notes/implemented/process/2026-07-06-parallel-pre-push-gates.md index 54fb01f03d..9773a86428 100644 --- a/.agents/notes/implemented/process/2026-07-06-parallel-pre-push-gates.md +++ b/.agents/notes/implemented/process/2026-07-06-parallel-pre-push-gates.md @@ -4,7 +4,7 @@ Status: implemented English | [中文](2026-07-06-parallel-pre-push-gates.zh.md) -The local-hook portion of this record is superseded by [Fast local Git hooks](2026-07-22-fast-local-git-hooks.md). The bounded gate scheduler and package-level `publint` parallelism remain in force for CI, `doc-sync`, and explicit local commands. The scheduler's fail-fast option is recorded in [Gate-runner fail-fast](2026-08-27-gate-runner-fail-fast.md). +The local-hook portion of this record is superseded by [Fast local Git hooks](../../archived/process/2026-07-22-fast-local-git-hooks.md). The bounded gate scheduler and package-level `publint` parallelism remain in force for CI, `doc-sync`, and explicit local commands. The scheduler's fail-fast option is recorded in [Gate-runner fail-fast](../../archived/process/2026-08-27-gate-runner-fail-fast.md). ## Problem diff --git a/.agents/notes/implemented/process/2026-07-06-parallel-pre-push-gates.zh.md b/.agents/notes/implemented/process/2026-07-06-parallel-pre-push-gates.zh.md index d7a949af64..4d0e15a338 100644 --- a/.agents/notes/implemented/process/2026-07-06-parallel-pre-push-gates.zh.md +++ b/.agents/notes/implemented/process/2026-07-06-parallel-pre-push-gates.zh.md @@ -4,7 +4,7 @@ Status: implemented [English](2026-07-06-parallel-pre-push-gates.md) | 中文 -本记录中的本地钩子部分已由[快速本地 Git 钩子](2026-07-22-fast-local-git-hooks.zh.md) 取代。有界门禁调度器和包级 `publint` 并行机制仍用于 CI、`doc-sync` 和显式本地命令。调度器的快速失败选项记录在[门禁运行器快速失败](2026-08-27-gate-runner-fail-fast.zh.md)。 +本记录中的本地钩子部分已由[快速本地 Git 钩子](../../archived/process/2026-07-22-fast-local-git-hooks.md) 取代。有界门禁调度器和包级 `publint` 并行机制仍用于 CI、`doc-sync` 和显式本地命令。调度器的快速失败选项记录在[门禁运行器快速失败](../../archived/process/2026-08-27-gate-runner-fail-fast.md)。 ## 问题 diff --git a/.agents/notes/implemented/process/2026-07-10-readme-known-limitations-gate.i18n.yaml b/.agents/notes/implemented/process/2026-07-10-readme-known-limitations-gate.i18n.yaml deleted file mode 100644 index c4d91684d7..0000000000 --- a/.agents/notes/implemented/process/2026-07-10-readme-known-limitations-gate.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/process/2026-07-10-readme-known-limitations-gate.md -2026-07-10-readme-known-limitations-gate.md: 2ca1168d795692730d17b6ab23dd113e8be277e5 -2026-07-10-readme-known-limitations-gate.zh.md: cabb368af5b3e35ffcb8713b2c96fdb767f6237d diff --git a/.agents/notes/implemented/process/2026-07-13-documentation-site-projection.i18n.yaml b/.agents/notes/implemented/process/2026-07-13-documentation-site-projection.i18n.yaml deleted file mode 100644 index 2854643376..0000000000 --- a/.agents/notes/implemented/process/2026-07-13-documentation-site-projection.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/process/2026-07-13-documentation-site-projection.md -2026-07-13-documentation-site-projection.md: 05e76963ec6cecd6654afeda410334945a893f69 -2026-07-13-documentation-site-projection.zh.md: c3e9bafac1b6b397b111d059f345b49a51a1fc37 diff --git a/.agents/notes/implemented/process/2026-07-14-typescript-program-backed-semantic-gates.i18n.yaml b/.agents/notes/implemented/process/2026-07-14-typescript-program-backed-semantic-gates.i18n.yaml deleted file mode 100644 index b6d2cad8df..0000000000 --- a/.agents/notes/implemented/process/2026-07-14-typescript-program-backed-semantic-gates.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/process/2026-07-14-typescript-program-backed-semantic-gates.md -2026-07-14-typescript-program-backed-semantic-gates.md: 91639d53b660c68ae52c7ddcef6b3f594e82273e -2026-07-14-typescript-program-backed-semantic-gates.zh.md: 2ccb6a95185e1f666359b8b864f6ad655070a47f diff --git a/.agents/notes/implemented/process/2026-07-19-require-agent-notes-for-non-trivial-changes.i18n.yaml b/.agents/notes/implemented/process/2026-07-19-require-agent-notes-for-non-trivial-changes.i18n.yaml deleted file mode 100644 index 08600cd3e3..0000000000 --- a/.agents/notes/implemented/process/2026-07-19-require-agent-notes-for-non-trivial-changes.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/process/2026-07-19-require-agent-notes-for-non-trivial-changes.md -2026-07-19-require-agent-notes-for-non-trivial-changes.md: 162ae61affb4c1b0ad526fa0da41f84ebbb02089 -2026-07-19-require-agent-notes-for-non-trivial-changes.zh.md: cc342547fa1977cf2a38240e79cd7e326a0cc010 diff --git a/.agents/notes/implemented/process/2026-07-21-serial-cross-platform-ci-reference.i18n.yaml b/.agents/notes/implemented/process/2026-07-21-serial-cross-platform-ci-reference.i18n.yaml index 6ad29b4f63..c7bb8c6d0a 100644 --- a/.agents/notes/implemented/process/2026-07-21-serial-cross-platform-ci-reference.i18n.yaml +++ b/.agents/notes/implemented/process/2026-07-21-serial-cross-platform-ci-reference.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/implemented/process/2026-07-21-serial-cross-platform-ci-reference.md -2026-07-21-serial-cross-platform-ci-reference.md: bb2437139a3eb746ca9eb7752979cd0a6fa947d3 -2026-07-21-serial-cross-platform-ci-reference.zh.md: c7ecac7c8618529d1250d8faec34090fd67e4cf9 +2026-07-21-serial-cross-platform-ci-reference.md: e7d1caefabe3e90a84ea8eaea67381ea4f63f6f7 +2026-07-21-serial-cross-platform-ci-reference.zh.md: 57279e662aaf0c361bc2641cc5c6e757c4199ebb diff --git a/.agents/notes/implemented/process/2026-07-21-serial-cross-platform-ci-reference.md b/.agents/notes/implemented/process/2026-07-21-serial-cross-platform-ci-reference.md index bb2437139a..e7d1caefab 100644 --- a/.agents/notes/implemented/process/2026-07-21-serial-cross-platform-ci-reference.md +++ b/.agents/notes/implemented/process/2026-07-21-serial-cross-platform-ci-reference.md @@ -28,7 +28,7 @@ The standalone [Sandbox](../../../../.github/workflows/sandbox.yml) workflow bel Master reference jobs are diagnostic and do not participate in the pull request's required `all checks passed` result. The ci-master and Sandbox workflows keep their cross-platform references on master pushes. Performance is evaluated from completed hosted-job timestamps and reported as a measurement; it is not encoded as a `timeout-minutes` value. -The active serial references run on the self-hosted `vm-backup` (`serial / linux`) and `dsh-win-ci` (`serial / windows`) pools; the one remaining disabled hosted serial reference (`serial-macos`) uses `macos-latest`, and there is no standard-hosted `serial / linux` label. The required pull-request Windows job runs under Wine on `ubuntu-latest`, while the independent pull-request native job uses the hosted `dsh-windows-2025-16core` runner under normal operation and the self-hosted `[self-hosted, dsh-win-ci, windows]` pool under failover (see the [failover runbook](2026-07-26-ci-failover-runbook.md)), and is absent from the required aggregate under the [dual Windows decision](2026-08-08-native-windows-pull-request-ci.md). Required pull-request jobs use portable standard capacity under the [required-CI decision](2026-07-23-portable-required-pull-request-ci.md). Higher-core hosted runners remain manual benchmarks because a correctness path must remain runnable without repository-external runner configuration. +The active serial references run on the self-hosted `vm-backup` (`serial / linux`) and `dsh-win-ci` (`serial / windows`) pools; the one remaining disabled hosted serial reference (`serial-macos`) uses `macos-latest`, and there is no standard-hosted `serial / linux` label. The required pull-request Windows job runs under Wine on `ubuntu-latest`, while the independent pull-request native job uses the hosted `dsh-windows-2025-16core` runner under normal operation and the self-hosted `[self-hosted, dsh-win-ci, windows]` pool under failover (see the [failover runbook](2026-07-26-ci-failover-runbook.md)), and is absent from the required aggregate under the [dual Windows decision](2026-08-08-native-windows-pull-request-ci.md). Required pull-request jobs use portable standard capacity under the [required-CI decision](../../archived/process/2026-07-23-portable-required-pull-request-ci.md). Higher-core hosted runners remain manual benchmarks because a correctness path must remain runnable without repository-external runner configuration. ## Alternatives considered diff --git a/.agents/notes/implemented/process/2026-07-21-serial-cross-platform-ci-reference.zh.md b/.agents/notes/implemented/process/2026-07-21-serial-cross-platform-ci-reference.zh.md index c7ecac7c86..57279e662a 100644 --- a/.agents/notes/implemented/process/2026-07-21-serial-cross-platform-ci-reference.zh.md +++ b/.agents/notes/implemented/process/2026-07-21-serial-cross-platform-ci-reference.zh.md @@ -28,7 +28,7 @@ macOS 参考流程使用 fork 进程运行常规 Vitest 项目。macOS arm64 上 master 分支的参考作业仅用于诊断,不参与拉取请求所要求的 `all checks passed` 结果。ci-master 与 Sandbox 工作流把跨平台参考流程保留在 master 推送上。系统根据已完成托管作业的时间戳评估性能,并将其报告为测量结果,而不是写成 `timeout-minutes` 值。 -当前启用的参考流程运行在公司自有 `vm-backup`(`serial / linux`)与 `dsh-win-ci`(`serial / windows`)自托管池上;唯一剩余的禁用托管参考作业(`serial-macos`)使用 `macos-latest`,且不存在标准托管的 `serial / linux` 标签。拉取请求必需的 Windows 作业在 `ubuntu-latest` 上通过 Wine 运行,而独立的拉取请求原生作业在正常运行下使用托管的 `dsh-windows-2025-16core` 运行器,故障切换时使用自托管 `[self-hosted, dsh-win-ci, windows]` 池(参见[故障切换手册](2026-07-26-ci-failover-runbook.zh.md)),依据[双 Windows 决策](2026-08-08-native-windows-pull-request-ci.zh.md)不参与必需聚合流程。依据[必需 CI 决策](2026-07-23-portable-required-pull-request-ci.zh.md),拉取请求必需作业使用可移植的标准容量。更高核心数的托管运行器仍仅用于手动基准测试,因为正确性路径必须无需仓库外部的运行器配置即可运行。 +当前启用的参考流程运行在公司自有 `vm-backup`(`serial / linux`)与 `dsh-win-ci`(`serial / windows`)自托管池上;唯一剩余的禁用托管参考作业(`serial-macos`)使用 `macos-latest`,且不存在标准托管的 `serial / linux` 标签。拉取请求必需的 Windows 作业在 `ubuntu-latest` 上通过 Wine 运行,而独立的拉取请求原生作业在正常运行下使用托管的 `dsh-windows-2025-16core` 运行器,故障切换时使用自托管 `[self-hosted, dsh-win-ci, windows]` 池(参见[故障切换手册](2026-07-26-ci-failover-runbook.zh.md)),依据[双 Windows 决策](2026-08-08-native-windows-pull-request-ci.zh.md)不参与必需聚合流程。依据[必需 CI 决策](../../archived/process/2026-07-23-portable-required-pull-request-ci.md),拉取请求必需作业使用可移植的标准容量。更高核心数的托管运行器仍仅用于手动基准测试,因为正确性路径必须无需仓库外部的运行器配置即可运行。 ## 曾考虑的替代方案 diff --git a/.agents/notes/implemented/process/2026-07-22-evidence-based-larger-hosted-runners.i18n.yaml b/.agents/notes/implemented/process/2026-07-22-evidence-based-larger-hosted-runners.i18n.yaml deleted file mode 100644 index a79a088ebd..0000000000 --- a/.agents/notes/implemented/process/2026-07-22-evidence-based-larger-hosted-runners.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/process/2026-07-22-evidence-based-larger-hosted-runners.md -2026-07-22-evidence-based-larger-hosted-runners.md: db08a4eb9812a2cb13499718cbd3ceb023960c06 -2026-07-22-evidence-based-larger-hosted-runners.zh.md: c6a3a5c12199d0f7fc1351e77c0824259896de52 diff --git a/.agents/notes/implemented/process/2026-07-22-fast-local-git-hooks.i18n.yaml b/.agents/notes/implemented/process/2026-07-22-fast-local-git-hooks.i18n.yaml deleted file mode 100644 index 33722fd32e..0000000000 --- a/.agents/notes/implemented/process/2026-07-22-fast-local-git-hooks.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/process/2026-07-22-fast-local-git-hooks.md -2026-07-22-fast-local-git-hooks.md: ad187c5cfd021ca76ad5f569a17fb12c82dcf4e7 -2026-07-22-fast-local-git-hooks.zh.md: f38de6cc80c0f1ad853f8607ffae21ea22271093 diff --git a/.agents/notes/implemented/process/2026-07-22-product-first-root-readme.i18n.yaml b/.agents/notes/implemented/process/2026-07-22-product-first-root-readme.i18n.yaml deleted file mode 100644 index c059945b9e..0000000000 --- a/.agents/notes/implemented/process/2026-07-22-product-first-root-readme.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/process/2026-07-22-product-first-root-readme.md -2026-07-22-product-first-root-readme.md: 662ff334536227e7eeac4c8328936bb57e0aecc9 -2026-07-22-product-first-root-readme.zh.md: 3295794339d6348219ab8db68bad1077d3e54ee2 diff --git a/.agents/notes/implemented/process/2026-07-22-tsconfig-solution-root-two-aggregates.i18n.yaml b/.agents/notes/implemented/process/2026-07-22-tsconfig-solution-root-two-aggregates.i18n.yaml deleted file mode 100644 index 8620a0e642..0000000000 --- a/.agents/notes/implemented/process/2026-07-22-tsconfig-solution-root-two-aggregates.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/process/2026-07-22-tsconfig-solution-root-two-aggregates.md -2026-07-22-tsconfig-solution-root-two-aggregates.md: 714f7c4b6ac9839ab51c8453f970346a6f18f17e -2026-07-22-tsconfig-solution-root-two-aggregates.zh.md: 53fe3c4342b78cc90b537fdb5c2dbb29387fbe85 diff --git a/.agents/notes/implemented/process/2026-07-23-translation-prompt-v4-contract.i18n.yaml b/.agents/notes/implemented/process/2026-07-23-translation-prompt-v4-contract.i18n.yaml deleted file mode 100644 index 88c5fbcda4..0000000000 --- a/.agents/notes/implemented/process/2026-07-23-translation-prompt-v4-contract.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/process/2026-07-23-translation-prompt-v4-contract.md -2026-07-23-translation-prompt-v4-contract.md: 68d6837971a0bbb40fbc5ee093e5911515905ba3 -2026-07-23-translation-prompt-v4-contract.zh.md: e1505e29840bebe7215780fad950995ba8fc4640 diff --git a/.agents/notes/implemented/process/2026-07-26-briefed-minimal-translation-updates.i18n.yaml b/.agents/notes/implemented/process/2026-07-26-briefed-minimal-translation-updates.i18n.yaml deleted file mode 100644 index 4fe05d0ede..0000000000 --- a/.agents/notes/implemented/process/2026-07-26-briefed-minimal-translation-updates.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/process/2026-07-26-briefed-minimal-translation-updates.md -2026-07-26-briefed-minimal-translation-updates.md: 049e0a2771c65972bf42bae62cf1a18a11841b83 -2026-07-26-briefed-minimal-translation-updates.zh.md: 1574617bd10e020853ea11c345d5caebfc98cae4 diff --git a/.agents/notes/implemented/process/2026-07-26-ci-failover-runbook.i18n.yaml b/.agents/notes/implemented/process/2026-07-26-ci-failover-runbook.i18n.yaml index 0a43a197b4..8d50d7a5f9 100644 --- a/.agents/notes/implemented/process/2026-07-26-ci-failover-runbook.i18n.yaml +++ b/.agents/notes/implemented/process/2026-07-26-ci-failover-runbook.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/implemented/process/2026-07-26-ci-failover-runbook.md -2026-07-26-ci-failover-runbook.md: 7579e6ca4da5207f3d308c7606edc6d885ab25c7 -2026-07-26-ci-failover-runbook.zh.md: eba74831572252ecbbde388e83458161cad0f696 +2026-07-26-ci-failover-runbook.md: b24996a4ba4dfaa4b26f88519a61f45c81efb5b5 +2026-07-26-ci-failover-runbook.zh.md: ee7339d70e4796c367f97490ea57468687464b3f diff --git a/.agents/notes/implemented/process/2026-07-26-ci-failover-runbook.md b/.agents/notes/implemented/process/2026-07-26-ci-failover-runbook.md index 7579e6ca4d..b24996a4ba 100644 --- a/.agents/notes/implemented/process/2026-07-26-ci-failover-runbook.md +++ b/.agents/notes/implemented/process/2026-07-26-ci-failover-runbook.md @@ -24,7 +24,7 @@ The decision belongs at workflow level because cancellation applies to the whole #### Windows pool -`dsh-win-ci`: 32 always-on runner instances (scheduled tasks `GH-Runner-01`…`GH-Runner-32`) on the in-house Windows CI server (one 96-core / 580 GB machine). Labels: `[self-hosted, dsh-win-ci, windows]`. The image must preinstall Node 24, pnpm, Git (with Git Bash on `PATH`, i.e. `C:\Program Files\Git\bin` — the `bash` tool spawns `bash` by name), PowerShell 7, and enable Developer Mode for symlink support. The workspaces and the pnpm store must both live on a ReFS volume (`F:`): the Windows installs pass `--package-import-method=clone` on ReFS, which needs that volume layout and the `@reflink/reflink` native module that the system corepack pnpm carries (see [the Windows ReFS store note](2026-08-30-windows-refs-store-block-clone-install.md)); a rebuilt runner without this layout fails the Windows build gates with TS6231. Check the latest `serial / windows (self-hosted standby)` run before switching: a green standby verifies the pool can execute `check:ci:windows-complete` end-to-end. +`dsh-win-ci`: 32 always-on runner instances (scheduled tasks `GH-Runner-01`…`GH-Runner-32`) on the in-house Windows CI server (one 96-core / 580 GB machine). Labels: `[self-hosted, dsh-win-ci, windows]`. The image must preinstall Node 24, pnpm, Git (with Git Bash on `PATH`, i.e. `C:\Program Files\Git\bin` — the `bash` tool spawns `bash` by name), PowerShell 7, and enable Developer Mode for symlink support. The workspaces and the pnpm store must both live on a ReFS volume (`F:`): the Windows installs pass `--package-import-method=clone` on ReFS, which needs that volume layout and the `@reflink/reflink` native module that the system corepack pnpm carries (see [the Windows ReFS store note](../../archived/process/2026-08-30-windows-refs-store-block-clone-install.md)); a rebuilt runner without this layout fails the Windows build gates with TS6231. Check the latest `serial / windows (self-hosted standby)` run before switching: a green standby verifies the pool can execute `check:ci:windows-complete` end-to-end. ### Switch (any repository writer, ~1 minute, no merge) diff --git a/.agents/notes/implemented/process/2026-07-26-ci-failover-runbook.zh.md b/.agents/notes/implemented/process/2026-07-26-ci-failover-runbook.zh.md index eba7483157..ee7339d70e 100644 --- a/.agents/notes/implemented/process/2026-07-26-ci-failover-runbook.zh.md +++ b/.agents/notes/implemented/process/2026-07-26-ci-failover-runbook.zh.md @@ -24,7 +24,7 @@ Status: implemented #### Windows 池 -`dsh-win-ci`:公司内部 Windows CI 服务器(一台 96 核 / 580 GB 机器)上 32 个常驻运行器实例(计划任务 `GH-Runner-01`…`GH-Runner-32`)。标签:`[self-hosted, dsh-win-ci, windows]`。镜像必须预装 Node 24、pnpm、Git(Git Bash 在 `PATH` 上,即 `C:\Program Files\Git\bin`——`bash` 工具按名称 spawn `bash`)、PowerShell 7,并为符号链接支持启用开发人员模式。工作区与 pnpm store 必须都位于 ReFS 卷(`F:`)上:Windows 安装步骤在 ReFS 上传递 `--package-import-method=clone`,这需要该卷布局以及系统 corepack pnpm 携带的 `@reflink/reflink` 原生模块(见 [Windows ReFS store note](2026-08-30-windows-refs-store-block-clone-install.zh.md));没有此布局的重建运行器会在 Windows 构建门禁阶段以 TS6231 失败。切换前先看 `serial / windows (self-hosted standby)` 最近一次运行:绿色热备验证该池能端到端执行 `check:ci:windows-complete`。 +`dsh-win-ci`:公司内部 Windows CI 服务器(一台 96 核 / 580 GB 机器)上 32 个常驻运行器实例(计划任务 `GH-Runner-01`…`GH-Runner-32`)。标签:`[self-hosted, dsh-win-ci, windows]`。镜像必须预装 Node 24、pnpm、Git(Git Bash 在 `PATH` 上,即 `C:\Program Files\Git\bin`——`bash` 工具按名称 spawn `bash`)、PowerShell 7,并为符号链接支持启用开发人员模式。工作区与 pnpm store 必须都位于 ReFS 卷(`F:`)上:Windows 安装步骤在 ReFS 上传递 `--package-import-method=clone`,这需要该卷布局以及系统 corepack pnpm 携带的 `@reflink/reflink` 原生模块(见 [Windows ReFS store note](../../archived/process/2026-08-30-windows-refs-store-block-clone-install.md));没有此布局的重建运行器会在 Windows 构建门禁阶段以 TS6231 失败。切换前先看 `serial / windows (self-hosted standby)` 最近一次运行:绿色热备验证该池能端到端执行 `check:ci:windows-complete`。 ### 切换步骤(任何具备写权限的协作者,约 1 分钟,无需合并) diff --git a/.agents/notes/implemented/process/2026-07-26-dependencies-over-hand-rolling.i18n.yaml b/.agents/notes/implemented/process/2026-07-26-dependencies-over-hand-rolling.i18n.yaml index 12410e43c1..edc74a719e 100644 --- a/.agents/notes/implemented/process/2026-07-26-dependencies-over-hand-rolling.i18n.yaml +++ b/.agents/notes/implemented/process/2026-07-26-dependencies-over-hand-rolling.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/implemented/process/2026-07-26-dependencies-over-hand-rolling.md -2026-07-26-dependencies-over-hand-rolling.md: 22720c483c1c9e8145497b3e83cbc9f17570b161 -2026-07-26-dependencies-over-hand-rolling.zh.md: f0ac041510cfe7fdf8141aee833b1eac23990feb +2026-07-26-dependencies-over-hand-rolling.md: 53336e5a2dc8970422dcf8a161a31eb01f8155e4 +2026-07-26-dependencies-over-hand-rolling.zh.md: deec00d87f2c514dbf16cac0e96cdf00ec055958 diff --git a/.agents/notes/implemented/process/2026-07-26-dependencies-over-hand-rolling.md b/.agents/notes/implemented/process/2026-07-26-dependencies-over-hand-rolling.md index 22720c483c..53336e5a2d 100644 --- a/.agents/notes/implemented/process/2026-07-26-dependencies-over-hand-rolling.md +++ b/.agents/notes/implemented/process/2026-07-26-dependencies-over-hand-rolling.md @@ -6,7 +6,7 @@ English | [中文](2026-07-26-dependencies-over-hand-rolling.zh.md) ## Problem -The harness hand-rolls a lot of infrastructure that mature external packages already provide. Some of that is deliberate — vendored Cordis ([vendoring decision](2026-06-11-vendor-cordis-as-source.md)), the [twin LLM adapters](../architecture/2026-06-13-twin-llm-adapters.md), schemastery as the config-schema standard — but much of it accreted from an unstated "avoid new dependencies" reflex: the repo-wide external dependency list stayed tiny while packages grew their own SSE parsers, protocol framers, retry loops, and glob matchers. Nothing in `AGENTS.md` actually stated a dependency policy, so agents inferred one from the existing pattern, and the inferred rule ("don't add deps") is stricter than anyone decided. That is the "Not Invented Here" fallacy operating by default: every hand-rolled clone of a well-maintained library is code we test, document, review, and debug ourselves, with none of the ecosystem's accumulated edge-case fixes. +The harness hand-rolls a lot of infrastructure that mature external packages already provide. Some of that is deliberate — vendored Cordis ([vendoring decision](../../archived/process/2026-06-11-vendor-cordis-as-source.md)), the [twin LLM adapters](../architecture/2026-06-13-twin-llm-adapters.md), schemastery as the config-schema standard — but much of it accreted from an unstated "avoid new dependencies" reflex: the repo-wide external dependency list stayed tiny while packages grew their own SSE parsers, protocol framers, retry loops, and glob matchers. Nothing in `AGENTS.md` actually stated a dependency policy, so agents inferred one from the existing pattern, and the inferred rule ("don't add deps") is stricter than anyone decided. That is the "Not Invented Here" fallacy operating by default: every hand-rolled clone of a well-maintained library is code we test, document, review, and debug ourselves, with none of the ecosystem's accumulated edge-case fixes. ## Decision @@ -27,7 +27,7 @@ Dependency-swap proposals are recorded as `proposed/simplification` Agent Notes - **Keep the implicit no-new-deps culture.** Rejected: it was never a recorded decision, and its cost is concrete — hand-rolled protocol and parsing code duplicates battle-tested libraries, inflates the per-file coverage burden, and slows every reviewer who must re-derive edge cases the ecosystem already fixed. - **A hard allowlist of approved packages.** Rejected: the repo is pre-release and the dependency set is small; a per-PR evidence bar (net deletion, health, fit) plus review keeps judgment where the context is, without a standing committee artifact that would itself need maintenance. -- **Vendor every new dependency like Cordis.** Rejected: vendoring is for packages we must patch or pin against upstream churn ([vendoring decision](2026-06-11-vendor-cordis-as-source.md)); applying it broadly recreates the maintenance burden the dependency was meant to shed. Ordinary npm dependencies with lockfile pinning are the default. +- **Vendor every new dependency like Cordis.** Rejected: vendoring is for packages we must patch or pin against upstream churn ([vendoring decision](../../archived/process/2026-06-11-vendor-cordis-as-source.md)); applying it broadly recreates the maintenance burden the dependency was meant to shed. Ordinary npm dependencies with lockfile pinning are the default. ## Consequences diff --git a/.agents/notes/implemented/process/2026-07-26-dependencies-over-hand-rolling.zh.md b/.agents/notes/implemented/process/2026-07-26-dependencies-over-hand-rolling.zh.md index f0ac041510..deec00d87f 100644 --- a/.agents/notes/implemented/process/2026-07-26-dependencies-over-hand-rolling.zh.md +++ b/.agents/notes/implemented/process/2026-07-26-dependencies-over-hand-rolling.zh.md @@ -6,7 +6,7 @@ Status: implemented ## 问题 -harness 手写了大量基础设施,而成熟的外部包早已提供同等能力。其中一部分是有意为之——以源码形式收录的 Cordis([引入 vendor 的决策](2026-06-11-vendor-cordis-as-source.zh.md))、[孪生 LLM(大语言模型)适配器](../architecture/2026-06-13-twin-llm-adapters.zh.md)、作为配置 schema 标准的 schemastery——但相当大一部分是在一种未经言明的「避免新依赖」下意识作用下逐渐累积而成的:仓库级的外部依赖清单始终很小,各包却各自长出了自己的 SSE(Server-Sent Events)解析器、协议分帧器、重试循环和 glob 匹配器。`AGENTS.md` 其实从未写下任何依赖政策,agent(智能体)只能从既有模式中自行推断出一条,而这条推断出的规则(「不要加依赖」)比任何人实际决定过的都更严格。这正是 Not Invented Here(非我发明)谬误在默认状态下运作:每一个对维护良好的库的手写克隆,都是要由我们自己测试、撰写文档、评审和调试的代码,却享受不到生态累积下来的边界情况修复。 +harness 手写了大量基础设施,而成熟的外部包早已提供同等能力。其中一部分是有意为之——以源码形式收录的 Cordis([引入 vendor 的决策](../../archived/process/2026-06-11-vendor-cordis-as-source.md))、[孪生 LLM(大语言模型)适配器](../architecture/2026-06-13-twin-llm-adapters.zh.md)、作为配置 schema 标准的 schemastery——但相当大一部分是在一种未经言明的「避免新依赖」下意识作用下逐渐累积而成的:仓库级的外部依赖清单始终很小,各包却各自长出了自己的 SSE(Server-Sent Events)解析器、协议分帧器、重试循环和 glob 匹配器。`AGENTS.md` 其实从未写下任何依赖政策,agent(智能体)只能从既有模式中自行推断出一条,而这条推断出的规则(「不要加依赖」)比任何人实际决定过的都更严格。这正是 Not Invented Here(非我发明)谬误在默认状态下运作:每一个对维护良好的库的手写克隆,都是要由我们自己测试、撰写文档、评审和调试的代码,却享受不到生态累积下来的边界情况修复。 ## 决策 @@ -27,7 +27,7 @@ harness 手写了大量基础设施,而成熟的外部包早已提供同等能 - **维持隐性的「不加新依赖」文化。** 不予采纳:它从来不是一项有记录的决策,而其成本是具体的——手写的协议与解析代码重复实现了久经实战检验的库,推高了按文件计的覆盖率负担,还拖慢每一位评审人:他们必须重新推导生态早已修复的边界情况。 - **一份获批包的硬性白名单。** 不予采纳:仓库处于预发布阶段,依赖集合很小;按 PR(Pull Request)设置证据门槛(净删除、健康度、契合度)再加评审,就能把判断留在上下文所在之处,无需一份本身也需要维护的常设委员会式产物。 -- **像 Cordis 一样把每个新依赖都以源码形式收录。** 不予采纳:源码收录(vendor)只适用于我们必须打补丁、或必须锁定以抵御上游变动的包([引入 vendor 的决策](2026-06-11-vendor-cordis-as-source.zh.md));将其推广到所有依赖,会重新制造出引入依赖本要卸下的维护负担。默认做法是普通 NPM 依赖加 lockfile 锁定。 +- **像 Cordis 一样把每个新依赖都以源码形式收录。** 不予采纳:源码收录(vendor)只适用于我们必须打补丁、或必须锁定以抵御上游变动的包([引入 vendor 的决策](../../archived/process/2026-06-11-vendor-cordis-as-source.md));将其推广到所有依赖,会重新制造出引入依赖本要卸下的维护负担。默认做法是普通 NPM 依赖加 lockfile 锁定。 ## 后果 diff --git a/.agents/notes/implemented/process/2026-07-26-incremental-pr-base-retargeting.i18n.yaml b/.agents/notes/implemented/process/2026-07-26-incremental-pr-base-retargeting.i18n.yaml deleted file mode 100644 index 3a57a30c0d..0000000000 --- a/.agents/notes/implemented/process/2026-07-26-incremental-pr-base-retargeting.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/process/2026-07-26-incremental-pr-base-retargeting.md -2026-07-26-incremental-pr-base-retargeting.md: b2e644d99877b4214b5a6edb2775b3962e6b7da2 -2026-07-26-incremental-pr-base-retargeting.zh.md: 1d7bb955206b91af9e78d4c0d9d5e4232edb7691 diff --git a/.agents/notes/implemented/process/2026-07-26-pnpm-action-setup-for-symmetric-ci-caching.i18n.yaml b/.agents/notes/implemented/process/2026-07-26-pnpm-action-setup-for-symmetric-ci-caching.i18n.yaml deleted file mode 100644 index 6fe27f1317..0000000000 --- a/.agents/notes/implemented/process/2026-07-26-pnpm-action-setup-for-symmetric-ci-caching.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/process/2026-07-26-pnpm-action-setup-for-symmetric-ci-caching.md -2026-07-26-pnpm-action-setup-for-symmetric-ci-caching.md: 2519b9e8bc565790acbd02f0a01491fcc136bbe6 -2026-07-26-pnpm-action-setup-for-symmetric-ci-caching.zh.md: 2157541c4b503d4acd38073263b6b69050a239bc diff --git a/.agents/notes/implemented/process/2026-07-26-web-syntax-highlighting-shiki.i18n.yaml b/.agents/notes/implemented/process/2026-07-26-web-syntax-highlighting-shiki.i18n.yaml deleted file mode 100644 index 2061bd878b..0000000000 --- a/.agents/notes/implemented/process/2026-07-26-web-syntax-highlighting-shiki.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/process/2026-07-26-web-syntax-highlighting-shiki.md -2026-07-26-web-syntax-highlighting-shiki.md: ba50318d306426d886af25f01eba616ab919d237 -2026-07-26-web-syntax-highlighting-shiki.zh.md: 5533bcb5348db152a8f9466eae7d3d8d9a726162 diff --git a/.agents/notes/implemented/process/2026-07-27-dependabot-version-updates.i18n.yaml b/.agents/notes/implemented/process/2026-07-27-dependabot-version-updates.i18n.yaml deleted file mode 100644 index f122d79eda..0000000000 --- a/.agents/notes/implemented/process/2026-07-27-dependabot-version-updates.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/process/2026-07-27-dependabot-version-updates.md -2026-07-27-dependabot-version-updates.md: bba83c9e720cf87f91638131d7f9580422ea7f76 -2026-07-27-dependabot-version-updates.zh.md: 7a615fb282cbf24b93c2b571a287f3b1853440bf diff --git a/.agents/notes/implemented/process/2026-07-27-explicit-change-scope-report.i18n.yaml b/.agents/notes/implemented/process/2026-07-27-explicit-change-scope-report.i18n.yaml deleted file mode 100644 index 70cfee1edc..0000000000 --- a/.agents/notes/implemented/process/2026-07-27-explicit-change-scope-report.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/process/2026-07-27-explicit-change-scope-report.md -2026-07-27-explicit-change-scope-report.md: 51f79039f23408f4463d08c08774089a96ce15ab -2026-07-27-explicit-change-scope-report.zh.md: 4ea99f15c05123ae774b5bc758abe5b79b54c4c1 diff --git a/.agents/notes/implemented/process/2026-07-27-worktree-local-lefthook.i18n.yaml b/.agents/notes/implemented/process/2026-07-27-worktree-local-lefthook.i18n.yaml index 6ced997557..5bb1f929e1 100644 --- a/.agents/notes/implemented/process/2026-07-27-worktree-local-lefthook.i18n.yaml +++ b/.agents/notes/implemented/process/2026-07-27-worktree-local-lefthook.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/implemented/process/2026-07-27-worktree-local-lefthook.md -2026-07-27-worktree-local-lefthook.md: 5a10c5d3769bbe5ad1fd0407982bb34c8763e2ae -2026-07-27-worktree-local-lefthook.zh.md: 272cc1e2147bf33d2d5918ef8fe1895b887fca05 +2026-07-27-worktree-local-lefthook.md: 42adc1ed1d60d1462a3fb6600b22b7d77b6ae28e +2026-07-27-worktree-local-lefthook.zh.md: b4b905967861606154a4bf63f4dbb6b4eb469e92 diff --git a/.agents/notes/implemented/process/2026-07-27-worktree-local-lefthook.md b/.agents/notes/implemented/process/2026-07-27-worktree-local-lefthook.md index 5a10c5d376..42adc1ed1d 100644 --- a/.agents/notes/implemented/process/2026-07-27-worktree-local-lefthook.md +++ b/.agents/notes/implemented/process/2026-07-27-worktree-local-lefthook.md @@ -34,7 +34,7 @@ If Lefthook fails after changing `core.hooksPath`, the installer restores the pr ## Consequences -Installing or removing one worktree no longer changes another worktree's active hooks, binary path, or generated hook bytes. Concurrent installs are serialized and repeated installation is idempotent, while the jobs and latency boundary owned by [Fast local Git hooks](2026-07-22-fast-local-git-hooks.md) stay unchanged. +Installing or removing one worktree no longer changes another worktree's active hooks, binary path, or generated hook bytes. Concurrent installs are serialized and repeated installation is idempotent, while the jobs and latency boundary owned by [Fast local Git hooks](../../archived/process/2026-07-22-fast-local-git-hooks.md) stay unchanged. The repository becomes a Git format-1 repository after the first installation. The installer requires Git 2.26 for `--show-scope`; the worktree-config extension itself predates that command. Custom worktree hook managers require an explicit integration choice; inherited hook paths can coexist across other worktrees, but opting the current worktree into Lefthook means those inherited hooks do not run there unless the contributor chains them through `lefthook.yml`. diff --git a/.agents/notes/implemented/process/2026-07-27-worktree-local-lefthook.zh.md b/.agents/notes/implemented/process/2026-07-27-worktree-local-lefthook.zh.md index 272cc1e214..b4b9059678 100644 --- a/.agents/notes/implemented/process/2026-07-27-worktree-local-lefthook.zh.md +++ b/.agents/notes/implemented/process/2026-07-27-worktree-local-lefthook.zh.md @@ -34,7 +34,7 @@ Lefthook 生成的钩子会优先使用安装时从对应 worktree 记录的绝 ## 后果 -安装或移除任一 worktree 不再改变其他 worktree 的生效钩子、二进制文件路径或生成的钩子字节。并发安装会串行执行,重复安装保持幂等;[快速本地 Git 钩子](2026-07-22-fast-local-git-hooks.zh.md)所规定的任务与延迟边界保持不变。 +安装或移除任一 worktree 不再改变其他 worktree 的生效钩子、二进制文件路径或生成的钩子字节。并发安装会串行执行,重复安装保持幂等;[快速本地 Git 钩子](../../archived/process/2026-07-22-fast-local-git-hooks.md)所规定的任务与延迟边界保持不变。 首次安装后,仓库会采用 Git 格式版本 1。安装程序需要 Git 2.26 来使用 `--show-scope`;worktree 配置扩展本身的出现早于该命令。自定义 worktree 钩子管理器需要明确选择集成方式;继承钩子路径可继续供其他 worktree 使用,但当前 worktree 显式启用 Lefthook 后,其中不会运行这些继承钩子,除非贡献者通过 `lefthook.yml` 将其串联起来。 diff --git a/.agents/notes/implemented/process/2026-07-29-oxlint-linter.i18n.yaml b/.agents/notes/implemented/process/2026-07-29-oxlint-linter.i18n.yaml deleted file mode 100644 index fd0ecb8043..0000000000 --- a/.agents/notes/implemented/process/2026-07-29-oxlint-linter.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/process/2026-07-29-oxlint-linter.md -2026-07-29-oxlint-linter.md: 3a4723f22799e7b6e39f2973fac8419705927d3e -2026-07-29-oxlint-linter.zh.md: b0d5191f9f19c0cb8de04406d98949c606cbf8cf diff --git a/.agents/notes/implemented/process/2026-07-30-cordis-config-source-plane-resolution-gate.i18n.yaml b/.agents/notes/implemented/process/2026-07-30-cordis-config-source-plane-resolution-gate.i18n.yaml deleted file mode 100644 index 5bcd24c8a8..0000000000 --- a/.agents/notes/implemented/process/2026-07-30-cordis-config-source-plane-resolution-gate.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/process/2026-07-30-cordis-config-source-plane-resolution-gate.md -2026-07-30-cordis-config-source-plane-resolution-gate.md: f9070d39559948ef27f96df5afccd7c4e076f131 -2026-07-30-cordis-config-source-plane-resolution-gate.zh.md: 0e8a2d22e8ed5238f4263b28f31b7074c5dbbe20 diff --git a/.agents/notes/implemented/process/2026-07-30-independent-ci-consumer-build.i18n.yaml b/.agents/notes/implemented/process/2026-07-30-independent-ci-consumer-build.i18n.yaml deleted file mode 100644 index c58b50898a..0000000000 --- a/.agents/notes/implemented/process/2026-07-30-independent-ci-consumer-build.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/process/2026-07-30-independent-ci-consumer-build.md -2026-07-30-independent-ci-consumer-build.md: a6d8379579714af4f66807c0110ce17ca3604f30 -2026-07-30-independent-ci-consumer-build.zh.md: a48553564c55920f1748bef23e9cfd867fa93e6c diff --git a/.agents/notes/implemented/process/2026-07-31-coverage-exempt-heavy-suites.i18n.yaml b/.agents/notes/implemented/process/2026-07-31-coverage-exempt-heavy-suites.i18n.yaml deleted file mode 100644 index 035f553168..0000000000 --- a/.agents/notes/implemented/process/2026-07-31-coverage-exempt-heavy-suites.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/process/2026-07-31-coverage-exempt-heavy-suites.md -2026-07-31-coverage-exempt-heavy-suites.md: fe33308cfcbd709a563e697a5e62585be58f214d -2026-07-31-coverage-exempt-heavy-suites.zh.md: 233fdc403fe734b21d116240b8067eaef119cd45 diff --git a/.agents/notes/implemented/process/2026-08-02-native-github-stacks-and-optional-rebases.i18n.yaml b/.agents/notes/implemented/process/2026-08-02-native-github-stacks-and-optional-rebases.i18n.yaml index c6c5158ef1..360c8ca687 100644 --- a/.agents/notes/implemented/process/2026-08-02-native-github-stacks-and-optional-rebases.i18n.yaml +++ b/.agents/notes/implemented/process/2026-08-02-native-github-stacks-and-optional-rebases.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/implemented/process/2026-08-02-native-github-stacks-and-optional-rebases.md -2026-08-02-native-github-stacks-and-optional-rebases.md: a349ed18a27ab006384310e4318f057dbf8873b1 -2026-08-02-native-github-stacks-and-optional-rebases.zh.md: 2817a08e37bad484f218f338c01306d095334dda +2026-08-02-native-github-stacks-and-optional-rebases.md: 394f0d7b4557bd306ae020d3edb5339fbcd2f068 +2026-08-02-native-github-stacks-and-optional-rebases.zh.md: 6266619fa1b2e58b50377b2ddb268632bb6cce08 diff --git a/.agents/notes/implemented/process/2026-08-02-native-github-stacks-and-optional-rebases.md b/.agents/notes/implemented/process/2026-08-02-native-github-stacks-and-optional-rebases.md index a349ed18a2..394f0d7b45 100644 --- a/.agents/notes/implemented/process/2026-08-02-native-github-stacks-and-optional-rebases.md +++ b/.agents/notes/implemented/process/2026-08-02-native-github-stacks-and-optional-rebases.md @@ -16,7 +16,7 @@ Every same-repository chain of two or more dependent PRs uses GitHub's official "Land the stack" merges the complete official stack through `gh stack merge --yes --merge`. A partial landing requires an explicit boundary PR and merges the bottom prefix through that PR. The workflow never falls back to per-PR `gh pr merge` and manual retargeting. A direct native merge is all-or-nothing; a merge queue may process the selected PRs in separate groups, so every selected PR must independently reach `MERGED` before the landing is complete. -Merge-forward and rebase are both allowed refresh histories for standalone and officially stacked PRs, including after review. A remote history rewrite uses an exact lease or the lease-protected `gh stack` push path and aborts if the remote moved; raw `--force` is forbidden. The [incremental base-retargeting decision](2026-07-26-incremental-pr-base-retargeting.md) remains the owner of the merge-forward option. +Merge-forward and rebase are both allowed refresh histories for standalone and officially stacked PRs, including after review. A remote history rewrite uses an exact lease or the lease-protected `gh stack` push path and aborts if the remote moved; raw `--force` is forbidden. The [incremental base-retargeting decision](../../archived/process/2026-07-26-incremental-pr-base-retargeting.md) remains the owner of the merge-forward option. Relevant checks normally run before publication. `gh stack sync` is the explicit exception because it fetches, cascade-rebases, and pushes as one operation: every rewritten layer is validated immediately afterward, and no affected PR merges until that evidence passes. After any rewritten push, current heads, unresolved review threads, approvals, mergeability, and checks are re-audited because earlier commit OIDs and inline anchors may be outdated. diff --git a/.agents/notes/implemented/process/2026-08-02-native-github-stacks-and-optional-rebases.zh.md b/.agents/notes/implemented/process/2026-08-02-native-github-stacks-and-optional-rebases.zh.md index 2817a08e37..6266619fa1 100644 --- a/.agents/notes/implemented/process/2026-08-02-native-github-stacks-and-optional-rebases.zh.md +++ b/.agents/notes/implemented/process/2026-08-02-native-github-stacks-and-optional-rebases.zh.md @@ -16,7 +16,7 @@ Status: implemented 「落地堆叠」通过 `gh stack merge --yes --merge` 合并整个官方堆叠。部分落地需要明确指定边界 PR,并合并从底部到该 PR 的前缀。工作流绝不回退到逐个执行 `gh pr merge` 和手动调整 base。原生直接合并要么全部成功,要么全部不合并;合并队列可能分组处理所选 PR,因此只有每个所选 PR 都分别达到 `MERGED`,落地才算完成。 -merge-forward 和 rebase 都可以作为独立 PR 与官方堆叠 PR 的历史刷新方式,包括评审后。改写远端历史时,必须使用精确 lease 或受 lease 保护的 `gh stack` 推送路径;如果远端已经发生变化,操作必须中止。禁止直接使用 `--force`。[增量更新 base 的决策](2026-07-26-incremental-pr-base-retargeting.zh.md)仍负责 merge-forward 选项。 +merge-forward 和 rebase 都可以作为独立 PR 与官方堆叠 PR 的历史刷新方式,包括评审后。改写远端历史时,必须使用精确 lease 或受 lease 保护的 `gh stack` 推送路径;如果远端已经发生变化,操作必须中止。禁止直接使用 `--force`。[增量更新 base 的决策](../../archived/process/2026-07-26-incremental-pr-base-retargeting.md)仍负责 merge-forward 选项。 相关检查通常在发布前运行。`gh stack sync` 是明确的例外,因为它在一次操作中完成获取、级联 rebase 和推送:随后立即验证每个已改写的层;这些验证通过前,不得合并任何受影响的 PR。每次改写推送后,都要重新审计当前 head、未解决的评审线程、批准状态、可合并性和检查结果,因为先前的 commit OID 和内联锚点可能已经过时。 diff --git a/.agents/notes/implemented/process/2026-08-03-package-anchored-subsystem-pages.i18n.yaml b/.agents/notes/implemented/process/2026-08-03-package-anchored-subsystem-pages.i18n.yaml index d01431c0f8..1e3b097d4c 100644 --- a/.agents/notes/implemented/process/2026-08-03-package-anchored-subsystem-pages.i18n.yaml +++ b/.agents/notes/implemented/process/2026-08-03-package-anchored-subsystem-pages.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/implemented/process/2026-08-03-package-anchored-subsystem-pages.md -2026-08-03-package-anchored-subsystem-pages.md: e5337fba0c9a69dd786fb156572e978f87435b9b -2026-08-03-package-anchored-subsystem-pages.zh.md: 25afe84faa43af59d4366b5cc0b6c2d2ad4da1ed +2026-08-03-package-anchored-subsystem-pages.md: ea98bae0c54b45351712a75b5c2387c5f57fae71 +2026-08-03-package-anchored-subsystem-pages.zh.md: 4da4211f4e29eff0d30bd3da5d5035ad2a928ee5 diff --git a/.agents/notes/implemented/process/2026-08-03-package-anchored-subsystem-pages.md b/.agents/notes/implemented/process/2026-08-03-package-anchored-subsystem-pages.md index e5337fba0c..ea98bae0c5 100644 --- a/.agents/notes/implemented/process/2026-08-03-package-anchored-subsystem-pages.md +++ b/.agents/notes/implemented/process/2026-08-03-package-anchored-subsystem-pages.md @@ -6,7 +6,7 @@ English | [中文](2026-08-03-package-anchored-subsystem-pages.zh.md) ## Problem -The [subsystems catalog](2026-06-20-core-data-structures-catalog.md) scoped its front page by the spine-vs-seam rule: a type was "core" if the loop holds, derives, streams, or logs it on every turn. That rule selected types, not packages, so as the folder grew to forty-plus pages the front page became a cross-package grab-bag: LLM conversation vocabulary sat above the agent contracts, the creation/ownership vocabulary (`AgentHandle`, `CreateAgentOptions`, `ResumeAgentOptions`, `AgentFactory`) was documented nowhere in the folder because the generator exempted it to a package README, and a reader could not predict which page documents a type from where the type lives. Package-group READMEs meanwhile had no common shape — some carried sectioned tables, stray design essays, or trailing paragraphs that belonged on a subsystem page. +The [subsystems catalog](../../archived/process/2026-06-20-core-data-structures-catalog.md) scoped its front page by the spine-vs-seam rule: a type was "core" if the loop holds, derives, streams, or logs it on every turn. That rule selected types, not packages, so as the folder grew to forty-plus pages the front page became a cross-package grab-bag: LLM conversation vocabulary sat above the agent contracts, the creation/ownership vocabulary (`AgentHandle`, `CreateAgentOptions`, `ResumeAgentOptions`, `AgentFactory`) was documented nowhere in the folder because the generator exempted it to a package README, and a reader could not predict which page documents a type from where the type lives. Package-group READMEs meanwhile had no common shape — some carried sectioned tables, stray design essays, or trailing paragraphs that belonged on a subsystem page. ## Decision @@ -24,7 +24,7 @@ The [subsystems README](../../../../docs/subsystems/README.md) indexes every pag **Keep the spine-vs-subsystem scoping rule.** It answered "is this type core?" per type, which is why the front page accumulated types from four packages while missing half of `packages/core/agent`'s public API. Predictability by repository layout won. -**A flat single-document catalog.** Already rejected in the [original catalog note](2026-06-20-core-data-structures-catalog.md); the growth to forty-one pages confirmed that verdict. +**A flat single-document catalog.** Already rejected in the [original catalog note](../../archived/process/2026-06-20-core-data-structures-catalog.md); the growth to forty-one pages confirmed that verdict. **Document ownership vocabulary only in package READMEs (the exemption status quo).** This left `AgentHandle` and the create/resume options invisible to the folder that claims to be the type reference, and the generated `Types:` footers could not link them. @@ -34,4 +34,4 @@ The [subsystems README](../../../../docs/subsystems/README.md) indexes every pag - Every package group makes its subsystem owner or justified absence reviewable, and `verify-subsystem-pages` rejects unclassified additions and stale exemptions. - Generated signature footers link the agent ownership vocabulary instead of silently exempting it. - `verify-type-equiv`'s 1:1 manifest keeps each paste single-homed; the duplicate `SessionEvent` paste is gone. -- The [original catalog note](2026-06-20-core-data-structures-catalog.md) remains the owner of the `ts type-equiv` drift-gate mechanism; only its page-scoping rule is superseded here. +- The [original catalog note](../../archived/process/2026-06-20-core-data-structures-catalog.md) remains the owner of the `ts type-equiv` drift-gate mechanism; only its page-scoping rule is superseded here. diff --git a/.agents/notes/implemented/process/2026-08-03-package-anchored-subsystem-pages.zh.md b/.agents/notes/implemented/process/2026-08-03-package-anchored-subsystem-pages.zh.md index 25afe84faa..4da4211f4e 100644 --- a/.agents/notes/implemented/process/2026-08-03-package-anchored-subsystem-pages.zh.md +++ b/.agents/notes/implemented/process/2026-08-03-package-anchored-subsystem-pages.zh.md @@ -6,7 +6,7 @@ Status: implemented ## 问题 -[子系统目录](2026-06-20-core-data-structures-catalog.zh.md)最初用主干-vs-seam 规则界定首页范围:如果循环在每个轮次都持有、派生、流式传输或记录某个类型,它就是「核心」。该规则选择的是类型而非包,因此当目录增长到四十多页后,首页变成了跨包大杂烩:LLM(大语言模型)对话词汇排在 agent(智能体)约定之前,创建/所有权词汇(`AgentHandle`、`CreateAgentOptions`、`ResumeAgentOptions`、`AgentFactory`)在目录中无处记录(生成器把它们豁免给了某个包 README),读者无法根据类型所在位置预测哪一页记录它。与此同时,各包分组 README 没有统一形状——有的带分节表格、游离的设计短文,或本应属于子系统页面的尾部段落。 +[子系统目录](../../archived/process/2026-06-20-core-data-structures-catalog.md)最初用主干-vs-seam 规则界定首页范围:如果循环在每个轮次都持有、派生、流式传输或记录某个类型,它就是「核心」。该规则选择的是类型而非包,因此当目录增长到四十多页后,首页变成了跨包大杂烩:LLM(大语言模型)对话词汇排在 agent(智能体)约定之前,创建/所有权词汇(`AgentHandle`、`CreateAgentOptions`、`ResumeAgentOptions`、`AgentFactory`)在目录中无处记录(生成器把它们豁免给了某个包 README),读者无法根据类型所在位置预测哪一页记录它。与此同时,各包分组 README 没有统一形状——有的带分节表格、游离的设计短文,或本应属于子系统页面的尾部段落。 ## 决策 @@ -24,7 +24,7 @@ Status: implemented **保留主干-vs-子系统界定规则。**它逐类型回答「这个类型是核心吗?」,这正是首页积累了四个包的类型、却缺失 `packages/core/agent` 一半公开接口的原因。按仓库布局进行预测的方案胜出。 -**扁平的单文档目录。**在[原目录 Agent Note](2026-06-20-core-data-structures-catalog.zh.md) 中已被否决;增长到四十一页证实了该结论。 +**扁平的单文档目录。**在[原目录 Agent Note](../../archived/process/2026-06-20-core-data-structures-catalog.md) 中已被否决;增长到四十一页证实了该结论。 **只在包 README 中记录所有权词汇(豁免的现状)。**这让 `AgentHandle` 与创建/恢复选项在自称类型参考的目录中不可见,生成的 `Types:` 页脚也无法链接它们。 @@ -34,4 +34,4 @@ Status: implemented - 每个包分组都会将其子系统拥有方或合理的缺席原因暴露给评审,且 `verify-subsystem-pages` 会拒绝未分类的新增项和陈旧豁免。 - 生成的签名页脚链接 agent 所有权词汇,而不是静默豁免。 - `verify-type-equiv` 的 1:1 manifest(元数据清单)保证每个粘贴单一归属;重复的 `SessionEvent` 粘贴已移除。 -- [原目录 Agent Note](2026-06-20-core-data-structures-catalog.zh.md) 仍拥有 `ts type-equiv` 漂移检查机制;此处仅取代其页面范围界定规则。 +- [原目录 Agent Note](../../archived/process/2026-06-20-core-data-structures-catalog.md) 仍拥有 `ts type-equiv` 漂移检查机制;此处仅取代其页面范围界定规则。 diff --git a/.agents/notes/implemented/process/2026-08-06-coverage-uncovered-locations.i18n.yaml b/.agents/notes/implemented/process/2026-08-06-coverage-uncovered-locations.i18n.yaml deleted file mode 100644 index d465416bae..0000000000 --- a/.agents/notes/implemented/process/2026-08-06-coverage-uncovered-locations.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/process/2026-08-06-coverage-uncovered-locations.md -2026-08-06-coverage-uncovered-locations.md: d4036ab17ac2d4aa6a0428fcbbdd3fc6d7e6968d -2026-08-06-coverage-uncovered-locations.zh.md: 6a10efd216501cb45837be2f7505531c398bf6cd diff --git a/.agents/notes/implemented/process/2026-08-06-doc-site-carries-its-images.i18n.yaml b/.agents/notes/implemented/process/2026-08-06-doc-site-carries-its-images.i18n.yaml deleted file mode 100644 index c3bf152222..0000000000 --- a/.agents/notes/implemented/process/2026-08-06-doc-site-carries-its-images.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/process/2026-08-06-doc-site-carries-its-images.md -2026-08-06-doc-site-carries-its-images.md: 4078a9b6251cf67456590ae25602a9f288c88dc1 -2026-08-06-doc-site-carries-its-images.zh.md: 4ab90f9736dae95090b0d805f6fbe5d4846c7a0c diff --git a/.agents/notes/implemented/process/2026-08-06-in-repository-landlock-release.i18n.yaml b/.agents/notes/implemented/process/2026-08-06-in-repository-landlock-release.i18n.yaml deleted file mode 100644 index f6b59921ba..0000000000 --- a/.agents/notes/implemented/process/2026-08-06-in-repository-landlock-release.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/process/2026-08-06-in-repository-landlock-release.md -2026-08-06-in-repository-landlock-release.md: 25c31c3cdcc57cbcc8bd09b82ca24898ebca8268 -2026-08-06-in-repository-landlock-release.zh.md: 71cd2b7fe342003bc458e98ee3d2e25496b535bb diff --git a/.agents/notes/implemented/process/2026-08-08-api-remotes-generated-contract-build.i18n.yaml b/.agents/notes/implemented/process/2026-08-08-api-remotes-generated-contract-build.i18n.yaml deleted file mode 100644 index f054e63897..0000000000 --- a/.agents/notes/implemented/process/2026-08-08-api-remotes-generated-contract-build.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/process/2026-08-08-api-remotes-generated-contract-build.md -2026-08-08-api-remotes-generated-contract-build.md: 319b0205aacfe1c5d81ca5093199cdd1818a8132 -2026-08-08-api-remotes-generated-contract-build.zh.md: 21ed4593f01cb85f54dc1c75f3b0f269462c0fa0 diff --git a/.agents/notes/implemented/process/2026-08-08-browser-gif-evidence-chain.i18n.yaml b/.agents/notes/implemented/process/2026-08-08-browser-gif-evidence-chain.i18n.yaml index f97b5ff3cc..e09c768aba 100644 --- a/.agents/notes/implemented/process/2026-08-08-browser-gif-evidence-chain.i18n.yaml +++ b/.agents/notes/implemented/process/2026-08-08-browser-gif-evidence-chain.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/implemented/process/2026-08-08-browser-gif-evidence-chain.md -2026-08-08-browser-gif-evidence-chain.md: ec54e0c39339b7522c4939bc050cbd216ab2134e -2026-08-08-browser-gif-evidence-chain.zh.md: 3012fc5df0937a0586dfb9788fb606c45e3d6ca1 +2026-08-08-browser-gif-evidence-chain.md: 8a7c28792bbab178cac6ba6743628882a15fdf6e +2026-08-08-browser-gif-evidence-chain.zh.md: ff9b6cc729c23dd9f3ba170752fa05fe65c7fb53 diff --git a/.agents/notes/implemented/process/2026-08-08-browser-gif-evidence-chain.md b/.agents/notes/implemented/process/2026-08-08-browser-gif-evidence-chain.md index ec54e0c393..8a7c28792b 100644 --- a/.agents/notes/implemented/process/2026-08-08-browser-gif-evidence-chain.md +++ b/.agents/notes/implemented/process/2026-08-08-browser-gif-evidence-chain.md @@ -18,7 +18,7 @@ Browser automation waits for unique, exact semantic states. When the claim conce The available browser-control workflow remains preferred. When it is unavailable, the recorder uses the repository-declared Playwright dependency in an isolated headless browser rather than installing another driver or opening the user's browser. A native production surface may be replaced only through normal application configuration with an official browser-operable production backend, and that override is stated next to the GIF. Fixtures, mock transports, synthetic events, and test-only hooks do not substantiate a real-production claim. -Publication verifies the boundary again. The preferred path attaches with `gh --attach` (v2.99.0 or later; github.com only; at most 10 MB): the body file references the local GIF path, the command uploads the verified artifact and rewrites that reference in place, and the live body must then show the rewritten uploaded URL, which must respond with `200` and `image/gif`. When attach cannot apply — the GIF exceeds 10 MB, `gh` is older, or the repository is GitHub Enterprise Server — the assets-branch path remains: the branch contains media only, the staged and published bytes match the verified artifact, and a private-repository asset is checked through authenticated API or raw requests for its path, byte size, checksum, response status, and media type, proving only the repository-member review path (the [documentation-site image decision](2026-08-06-doc-site-carries-its-images.md) owns why a public site cannot depend on a private raw URL). Immediately before the pull-request body changes, the live head must still equal the recorded head. After the edit, the live head is checked again and must remain at that recorded value; GitHub's Markdown renderer separately must produce the expected image. +Publication verifies the boundary again. The preferred path attaches with `gh --attach` (v2.99.0 or later; github.com only; at most 10 MB): the body file references the local GIF path, the command uploads the verified artifact and rewrites that reference in place, and the live body must then show the rewritten uploaded URL, which must respond with `200` and `image/gif`. When attach cannot apply — the GIF exceeds 10 MB, `gh` is older, or the repository is GitHub Enterprise Server — the assets-branch path remains: the branch contains media only, the staged and published bytes match the verified artifact, and a private-repository asset is checked through authenticated API or raw requests for its path, byte size, checksum, response status, and media type, proving only the repository-member review path (the [documentation-site image decision](../../archived/process/2026-08-06-doc-site-carries-its-images.md) owns why a public site cannot depend on a private raw URL). Immediately before the pull-request body changes, the live head must still equal the recorded head. After the edit, the live head is checked again and must remain at that recorded value; GitHub's Markdown renderer separately must produce the expected image. ## Alternatives considered diff --git a/.agents/notes/implemented/process/2026-08-08-browser-gif-evidence-chain.zh.md b/.agents/notes/implemented/process/2026-08-08-browser-gif-evidence-chain.zh.md index 3012fc5df0..ff9b6cc729 100644 --- a/.agents/notes/implemented/process/2026-08-08-browser-gif-evidence-chain.zh.md +++ b/.agents/notes/implemented/process/2026-08-08-browser-gif-evidence-chain.zh.md @@ -18,7 +18,7 @@ Status: implemented 仍应优先使用已有的浏览器控制工作流。如果该工作流不可用,录制程序应在隔离的无头浏览器中使用仓库已声明的 Playwright 依赖,而不是安装其他驱动或打开用户的浏览器。只有通过正常应用配置选用官方且可由浏览器操作的生产后端,才能替换原生生产界面,并且必须在 GIF 旁注明这一覆盖。fixture(测试前置数据)、mock 传输层、合成事件和测试专用钩子均不能支撑真实生产实现的主张。 -发布环节会再次验证边界。首选路径使用 `gh --attach` 上传(v2.99.0 或更高版本;仅限 github.com;不超过 10 MB):正文文件引用本地 GIF 路径,命令上传已验证的产物并把该引用就地改写,之后在线正文必须显示改写后的上传 URL,且该 URL 必须返回 `200` 与 `image/gif`。当 attach 无法使用时——GIF 超过 10 MB、`gh` 版本过旧或仓库位于 GitHub Enterprise Server——仍保留资产分支路径:该分支只包含媒体文件,暂存和发布的字节必须与已验证产物一致,私有仓库中的资产须通过经身份验证的 API 或原始内容请求检查其路径、字节大小、校验和、响应状态和媒体类型,这只能证明仓库成员的评审访问路径([文档站点图片决策](2026-08-06-doc-site-carries-its-images.zh.md)解释了公共站点为何不能依赖私有的原始内容 URL)。修改 PR 正文之前,必须再次确认在线 head 仍与录制时的 head 相同。编辑后还要再次检查在线 head,且它必须保持为该记录值;GitHub 的 Markdown 渲染器则须单独生成预期图片。 +发布环节会再次验证边界。首选路径使用 `gh --attach` 上传(v2.99.0 或更高版本;仅限 github.com;不超过 10 MB):正文文件引用本地 GIF 路径,命令上传已验证的产物并把该引用就地改写,之后在线正文必须显示改写后的上传 URL,且该 URL 必须返回 `200` 与 `image/gif`。当 attach 无法使用时——GIF 超过 10 MB、`gh` 版本过旧或仓库位于 GitHub Enterprise Server——仍保留资产分支路径:该分支只包含媒体文件,暂存和发布的字节必须与已验证产物一致,私有仓库中的资产须通过经身份验证的 API 或原始内容请求检查其路径、字节大小、校验和、响应状态和媒体类型,这只能证明仓库成员的评审访问路径([文档站点图片决策](../../archived/process/2026-08-06-doc-site-carries-its-images.md)解释了公共站点为何不能依赖私有的原始内容 URL)。修改 PR 正文之前,必须再次确认在线 head 仍与录制时的 head 相同。编辑后还要再次检查在线 head,且它必须保持为该记录值;GitHub 的 Markdown 渲染器则须单独生成预期图片。 ## 曾考虑的替代方案 diff --git a/.agents/notes/implemented/process/2026-08-09-chinese-contract-terminology.i18n.yaml b/.agents/notes/implemented/process/2026-08-09-chinese-contract-terminology.i18n.yaml deleted file mode 100644 index 0c45f38129..0000000000 --- a/.agents/notes/implemented/process/2026-08-09-chinese-contract-terminology.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/process/2026-08-09-chinese-contract-terminology.md -2026-08-09-chinese-contract-terminology.md: fa9e3ab91133a995a63f817816c01b59d28f66e8 -2026-08-09-chinese-contract-terminology.zh.md: 1079d7d79edf1f596c7fa2460331a20d912beaea diff --git a/.agents/notes/implemented/process/2026-08-09-committed-artifact-citations.i18n.yaml b/.agents/notes/implemented/process/2026-08-09-committed-artifact-citations.i18n.yaml index fa29e34aca..febe070830 100644 --- a/.agents/notes/implemented/process/2026-08-09-committed-artifact-citations.i18n.yaml +++ b/.agents/notes/implemented/process/2026-08-09-committed-artifact-citations.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/implemented/process/2026-08-09-committed-artifact-citations.md -2026-08-09-committed-artifact-citations.md: a84b25545b97b6df62b3d51da895b4c7f8887ccf -2026-08-09-committed-artifact-citations.zh.md: 8cff257fd22d449d965067343e6aed4413b8eae7 +2026-08-09-committed-artifact-citations.md: 66dec38755fbe366385349e65da3dbc0ff632769 +2026-08-09-committed-artifact-citations.zh.md: ebc4541e56c4481005700cf16aa03881c9fb005d diff --git a/.agents/notes/implemented/process/2026-08-09-committed-artifact-citations.md b/.agents/notes/implemented/process/2026-08-09-committed-artifact-citations.md index a84b25545b..66dec38755 100644 --- a/.agents/notes/implemented/process/2026-08-09-committed-artifact-citations.md +++ b/.agents/notes/implemented/process/2026-08-09-committed-artifact-citations.md @@ -13,7 +13,7 @@ Large design and review sessions leave working shorthand — decision ordinals, Durable prose — comments, JSDoc, docs, notes, test comments and titles — cites only committed artifacts, resolvable in-repo without grep archaeology: - Name the owning Agent Note (its path at least once per file, a searchable name inline), the doc page path, or a GitHub issue number. PR, commit, branch, and stack positions stay banned in docs and code per the documentation standard; issues are durable and citable, and Agent Notes and postmortems may cite merged PRs and issues as evidence, per the [documentation standard](../../../../docs/AGENTS.md)'s change-story routing. -- A design-session ordinal whose decision has a committed owner is replaced by the decision's name — the ordinal once logged as "decision 21" is now "the plain-text-reference decision", owned by the [web input-machine note](../architecture/2026-07-25-web-input-machine-and-slash-pipeline.md); the ordinal itself resolves nowhere in-repo and was dropped everywhere. An ordinal without an owner is deleted and its factual clause restated to stand alone. +- A design-session ordinal whose decision has a committed owner is replaced by the decision's name — the ordinal once logged as "decision 21" is now "the plain-text-reference decision", owned by the [web input-machine note](../../archived/architecture/2026-07-25-web-input-machine-and-slash-pipeline.md); the ordinal itself resolves nowhere in-repo and was dropped everywhere. An ordinal without an owner is deleted and its factual clause restated to stand alone. - Fixed regressions are pinned as present-tense counterfactuals ("without X, Y happens"; "a naive X would…"), never as repo history ("used to Y"). - Implemented notes state shipped reality: a "deferred to a later PR" claim whose target shipped names the shipped note instead. - Recorded fixtures, snapshots, and archived notes are exempt: recorded model output and sealed history keep their original voice. Inside a note's change-story sections, a historical stage name ("the first cut shipped X") is current-state-safe; indexical stamps ("this cut") stay banned everywhere. diff --git a/.agents/notes/implemented/process/2026-08-09-committed-artifact-citations.zh.md b/.agents/notes/implemented/process/2026-08-09-committed-artifact-citations.zh.md index 8cff257fd2..ebc4541e56 100644 --- a/.agents/notes/implemented/process/2026-08-09-committed-artifact-citations.zh.md +++ b/.agents/notes/implemented/process/2026-08-09-committed-artifact-citations.zh.md @@ -13,7 +13,7 @@ Status: implemented 持久行文(注释、JSDoc、文档、Agent Note、测试注释与测试标题)只引用已提交的产物,无需 grep 考古即可在仓库内解析: - 点名归属的 Agent Note(其路径在每个文件里至少出现一次,行内用可检索的名称)、文档页面路径,或 GitHub issue 编号。PR、commit、分支与栈位置依文档标准在文档与代码中仍在禁止之列;issue 是持久且可引用的,Agent Note 与事故复盘(postmortem)可依[文档标准](../../../../docs/AGENTS.md)的变更故事归置规则引用已合并的 PR 与 issue 作为证据。 -- 决策有已提交归属文档的设计会话序号替换为该决策的名称——曾以「决策 21」记录的序号如今是「纯文本引用决策」,归属于 [web 输入状态机 note](../architecture/2026-07-25-web-input-machine-and-slash-pipeline.zh.md);该序号本身在仓库内无从解析,已全部移除。没有归属文档的序号予以删除,其事实性语句改写为可独立成立的表述。 +- 决策有已提交归属文档的设计会话序号替换为该决策的名称——曾以「决策 21」记录的序号如今是「纯文本引用决策」,归属于 [web 输入状态机 note](../../archived/architecture/2026-07-25-web-input-machine-and-slash-pipeline.md);该序号本身在仓库内无从解析,已全部移除。没有归属文档的序号予以删除,其事实性语句改写为可独立成立的表述。 - 已修复的回归以现在时反事实句固定下来(「没有 X 就会发生 Y」、「朴素的 X 会……」),绝不写成仓库历史(「过去曾 Y」)。 - 已实现的 Agent Note 陈述已交付的现实:「推迟到后续 PR」的说法若其目标已经交付,就改为点名那篇已交付的 note。 - 已录制的 fixture(测试前置数据)、快照与已归档的 Agent Note 不受此约束:已录制的模型输出与封存的历史保持原有行文。在 note 的变更故事段落内,历史阶段名称(「首版交付了 X」)符合只描述当前状态的要求;「this cut」这类指示当前版本的标记在任何地方都仍被禁止。 diff --git a/.agents/notes/implemented/process/2026-08-09-md-fragment-anchor-gate.i18n.yaml b/.agents/notes/implemented/process/2026-08-09-md-fragment-anchor-gate.i18n.yaml deleted file mode 100644 index e7f6000221..0000000000 --- a/.agents/notes/implemented/process/2026-08-09-md-fragment-anchor-gate.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/process/2026-08-09-md-fragment-anchor-gate.md -2026-08-09-md-fragment-anchor-gate.md: de0d02318b63c4892233c8c2ebe8457152def10c -2026-08-09-md-fragment-anchor-gate.zh.md: 54ac751900b508fb0dc6fa0e20f0b50b11e252a9 diff --git a/.agents/notes/implemented/process/2026-08-09-oxlint-only-fix-workflow.i18n.yaml b/.agents/notes/implemented/process/2026-08-09-oxlint-only-fix-workflow.i18n.yaml deleted file mode 100644 index 41ea365162..0000000000 --- a/.agents/notes/implemented/process/2026-08-09-oxlint-only-fix-workflow.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/process/2026-08-09-oxlint-only-fix-workflow.md -2026-08-09-oxlint-only-fix-workflow.md: bc38812db101499d980c38cb6c1dc5cba32e5cd6 -2026-08-09-oxlint-only-fix-workflow.zh.md: 350fe92bc1c028eabf1cd4e3791d92e9d0c6a949 diff --git a/.agents/notes/implemented/process/2026-08-10-npm-release-sequences.i18n.yaml b/.agents/notes/implemented/process/2026-08-10-npm-release-sequences.i18n.yaml index 16df539d73..b2b4028795 100644 --- a/.agents/notes/implemented/process/2026-08-10-npm-release-sequences.i18n.yaml +++ b/.agents/notes/implemented/process/2026-08-10-npm-release-sequences.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/implemented/process/2026-08-10-npm-release-sequences.md -2026-08-10-npm-release-sequences.md: 7e96c988f33f5753bd7a5e7f226e02a753899b8c -2026-08-10-npm-release-sequences.zh.md: f46aa58c558bbd862b2101fb8614f02758c34b59 +2026-08-10-npm-release-sequences.md: 6633140105660fcd85c53a8b58d6f1d20f1019a0 +2026-08-10-npm-release-sequences.zh.md: f8e440e0053c4bc9874579a370fc4052c836361e diff --git a/.agents/notes/implemented/process/2026-08-10-npm-release-sequences.md b/.agents/notes/implemented/process/2026-08-10-npm-release-sequences.md index 7e96c988f3..6633140105 100644 --- a/.agents/notes/implemented/process/2026-08-10-npm-release-sequences.md +++ b/.agents/notes/implemented/process/2026-08-10-npm-release-sequences.md @@ -26,13 +26,13 @@ Two hard blockers sat in the way. All 217 workspace manifests set `private: true | vendored framework | the nine `vendor/*` packages | each package on its own version line | `vendor--v` (one per package) | `release-vendor.yml` (pack) / `release-vendor-publish.yml` (publish) | | native | `native/landlock-run/packages/*` | its own `0.0.x` | `landlock-run-v` | `landlock-run-release.yml` | -All three publish to the `@deepseek-ai` scope on npmjs.com, and access is per sequence rather than per scope: the vendored framework and the native packages are `public`, the dsh family is `restricted` ([rationale](2026-08-13-public-vendor-and-native-sequences.md)). No publish path passes `--access`, because one flag cannot serve sequences that disagree and would override the manifest that owns the level. +All three publish to the `@deepseek-ai` scope on npmjs.com, and access is per sequence rather than per scope: the vendored framework and the native packages are `public`, the dsh family is `restricted` ([rationale](../../archived/process/2026-08-13-public-vendor-and-native-sequences.md)). No publish path passes `--access`, because one flag cannot serve sequences that disagree and would override the manifest that owns the level. ### Versions land in the repository from a local command; CI only checks and uploads Each sequence has one bump-and-commit command: it derives the target version, writes it into the relevant manifests, runs `pnpm install --lockfile-only`, and commits the manifests with the lockfile. The published version is therefore readable from the repository. A human creates the tag after the commit merges to master; CI never writes to the repository and needs no write permission. -`release:dsh` accepts `major`, `minor`, `patch`, or an explicit version, and writes one version across the publishable family, every private package under `packages/*/*`, **and the workspace root**. Private packages receive no release tag and remain outside pack and publish; they follow the version because [the static version-coherence gate](2026-09-03-workspace-version-coherence-gate.md) requires every dsh package's version to equal the root's. The root check accepts a prerelease segment, so explicit versions such as `0.0.1-alpha.1`, `0.0.1-canary.1`, and `0.0.1-rc.1` drive the same pack, installed-artifact probe, and publication path. `dsh` publication maps `alpha` and `canary` to their matching npm dist-tags, maps other prereleases including `rc` to `next`, and leaves stable versions to npm's `latest` default. Other release families retain their own dist-tag policy. +`release:dsh` accepts `major`, `minor`, `patch`, or an explicit version, and writes one version across the publishable family, every private package under `packages/*/*`, **and the workspace root**. Private packages receive no release tag and remain outside pack and publish; they follow the version because [the static version-coherence gate](../../archived/process/2026-09-03-workspace-version-coherence-gate.md) requires every dsh package's version to equal the root's. The root check accepts a prerelease segment, so explicit versions such as `0.0.1-alpha.1`, `0.0.1-canary.1`, and `0.0.1-rc.1` drive the same pack, installed-artifact probe, and publication path. `dsh` publication maps `alpha` and `canary` to their matching npm dist-tags, maps other prereleases including `rc` to `next`, and leaves stable versions to npm's `latest` default. Other release families retain their own dist-tag policy. For equal release numbers, SemVer compares alphanumeric prerelease identifiers lexically: `alpha` is lower than `canary`, `canary` is lower than `rc`, and every prerelease is lower than the stable version. npm dist-tags are mutable aliases and do not participate in version precedence. @@ -136,7 +136,7 @@ The verification also packs the Landlock entry, which `dsh-sandbox-local` declar ### Relationship to the earlier proposal -This Agent Note replaces the version scheme and the release-set boundary in [artifact-first npm baseline publication](../../proposed/process/2026-08-04-artifact-first-npm-baseline-publication.md): its `--` prerelease versions and `dev-` dist-tag are not adopted, and vendor is not excluded from the release set. What both agree on stands: pack and publish are separate, publish consumes only verified tarballs, and the payload and installed-artifact probes are release gates. +This Agent Note replaces the version scheme and the release-set boundary in [artifact-first npm baseline publication](../../rejected/process/2026-08-04-artifact-first-npm-baseline-publication.md): its `--` prerelease versions and `dev-` dist-tag are not adopted, and vendor is not excluded from the release set. What both agree on stands: pack and publish are separate, publish consumes only verified tarballs, and the payload and installed-artifact probes are release gates. ## Alternatives considered diff --git a/.agents/notes/implemented/process/2026-08-10-npm-release-sequences.zh.md b/.agents/notes/implemented/process/2026-08-10-npm-release-sequences.zh.md index f46aa58c55..f8e440e005 100644 --- a/.agents/notes/implemented/process/2026-08-10-npm-release-sequences.zh.md +++ b/.agents/notes/implemented/process/2026-08-10-npm-release-sequences.zh.md @@ -26,13 +26,13 @@ Status: implemented | vendored framework | `vendor/*` 九个包 | 每包各自一条版本线 | `vendor-<包名>-v<版本>`(每包一个) | `release-vendor.yml`(pack)/ `release-vendor-publish.yml`(发布) | | native | `native/landlock-run/packages/*` | 自己的 `0.0.x` | `landlock-run-v<版本>` | `landlock-run-release.yml` | -三组一律发到 npmjs.com 的 `@deepseek-ai` scope,且 access 按序列而非按 scope 区分:vendored 框架与 native 包是 `public`,dsh 族是 `restricted`([理由](2026-08-13-public-vendor-and-native-sequences.zh.md))。没有任何发布路径传 `--access`——一个选项无法服务级别互不相同的序列,且会覆盖真正拥有该级别的 manifest。 +三组一律发到 npmjs.com 的 `@deepseek-ai` scope,且 access 按序列而非按 scope 区分:vendored 框架与 native 包是 `public`,dsh 族是 `restricted`([理由](../../archived/process/2026-08-13-public-vendor-and-native-sequences.md))。没有任何发布路径传 `--access`——一个选项无法服务级别互不相同的序列,且会覆盖真正拥有该级别的 manifest。 ### 版本由本地命令写进仓库,CI 只核对与上传 每条序列有一条 bump-and-commit 命令:算出目标版本,写进相关 manifest,跑 `pnpm install --lockfile-only`,再把 manifest 连 lockfile 一起 commit。发布版本因此在仓库里查得到。tag 由人工在 commit 合入 master 后打;CI 不写仓库,也不需要写权限。 -`release:dsh` 接受 `major`、`minor`、`patch` 或显式版本号,把同一个版本写进可发布族、`packages/*/*` 下的每个私有包**以及 workspace 根**。私有包不会获得发布 tag,仍位于 pack 与 publish 之外;它们跟随版本是因为[静态版本一致性门禁](2026-09-03-workspace-version-coherence-gate.zh.md)要求每个 dsh 包的版本等于根版本。根的检查接受预发布段,因此 `0.0.1-alpha.1`、`0.0.1-canary.1` 和 `0.0.1-rc.1` 等显式版本走同一条 pack、已安装产物探针和发布路径。发布 dsh 时,`alpha` 和 `canary` 分别映射到同名 npm dist-tag,包含 `rc` 在内的其他预发布版本映射到 `next`,稳定版本则沿用 npm 默认的 `latest`。其他发布家族保留各自的 dist-tag 规则。 +`release:dsh` 接受 `major`、`minor`、`patch` 或显式版本号,把同一个版本写进可发布族、`packages/*/*` 下的每个私有包**以及 workspace 根**。私有包不会获得发布 tag,仍位于 pack 与 publish 之外;它们跟随版本是因为[静态版本一致性门禁](../../archived/process/2026-09-03-workspace-version-coherence-gate.md)要求每个 dsh 包的版本等于根版本。根的检查接受预发布段,因此 `0.0.1-alpha.1`、`0.0.1-canary.1` 和 `0.0.1-rc.1` 等显式版本走同一条 pack、已安装产物探针和发布路径。发布 dsh 时,`alpha` 和 `canary` 分别映射到同名 npm dist-tag,包含 `rc` 在内的其他预发布版本映射到 `next`,稳定版本则沿用 npm 默认的 `latest`。其他发布家族保留各自的 dist-tag 规则。 基础版本号相同时,SemVer 按字典序比较字母数字型预发布标识:`alpha` 小于 `canary`,`canary` 小于 `rc`,所有预发布版本都小于稳定版本。npm dist-tag 是可变别名,不参与版本优先级比较。 @@ -136,7 +136,7 @@ dsh 的验证会一并安装 vendored 族的 pack 产物。harness 的包把 ven ### 与先前提案的关系 -本 Note 取代 [以产物为先的 NPM 基线发布](../../proposed/process/2026-08-04-artifact-first-npm-baseline-publication.zh.md) 中的版本方案与发布集边界:那篇的 `-<时间戳>-<短 SHA>` 预发布版本与 `dev-` dist-tag 不再采用,vendor 也不排除在发布集之外。两篇一致的部分保留:pack 与 publish 分离、publish 只消费已验证的 tarball、payload 与安装后探针作为发布门。 +本 Note 取代 [以产物为先的 NPM 基线发布](../../rejected/process/2026-08-04-artifact-first-npm-baseline-publication.zh.md) 中的版本方案与发布集边界:那篇的 `-<时间戳>-<短 SHA>` 预发布版本与 `dev-` dist-tag 不再采用,vendor 也不排除在发布集之外。两篇一致的部分保留:pack 与 publish 分离、publish 只消费已验证的 tarball、payload 与安装后探针作为发布门。 ## 曾考虑的替代方案 diff --git a/.agents/notes/implemented/process/2026-08-10-vendor-package-rescope.i18n.yaml b/.agents/notes/implemented/process/2026-08-10-vendor-package-rescope.i18n.yaml deleted file mode 100644 index 5f80780a2a..0000000000 --- a/.agents/notes/implemented/process/2026-08-10-vendor-package-rescope.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/process/2026-08-10-vendor-package-rescope.md -2026-08-10-vendor-package-rescope.md: 5b5bc186bd01d0509d127a0a866da99509498c69 -2026-08-10-vendor-package-rescope.zh.md: 66aab8770940a38d573bca578b003ca87ae4cfd5 diff --git a/.agents/notes/implemented/process/2026-08-11-python-publication-workflow.i18n.yaml b/.agents/notes/implemented/process/2026-08-11-python-publication-workflow.i18n.yaml deleted file mode 100644 index 1bb6d9a73f..0000000000 --- a/.agents/notes/implemented/process/2026-08-11-python-publication-workflow.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/process/2026-08-11-python-publication-workflow.md -2026-08-11-python-publication-workflow.md: afb18ee97d0708d8a79885a8f6639681e97eef72 -2026-08-11-python-publication-workflow.zh.md: f2d045f686c41c3e45a3cd6739dc5e1b37c58478 diff --git a/.agents/notes/implemented/process/2026-08-12-face-named-client-test-files.i18n.yaml b/.agents/notes/implemented/process/2026-08-12-face-named-client-test-files.i18n.yaml deleted file mode 100644 index 28f8b4a1a6..0000000000 --- a/.agents/notes/implemented/process/2026-08-12-face-named-client-test-files.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/process/2026-08-12-face-named-client-test-files.md -2026-08-12-face-named-client-test-files.md: 9bc82ba4297059151f787be53f89736cd5a6935b -2026-08-12-face-named-client-test-files.zh.md: c6f62b60554146e9006ef43498f752712dd1c23c diff --git a/.agents/notes/implemented/process/2026-08-13-public-vendor-and-native-sequences.i18n.yaml b/.agents/notes/implemented/process/2026-08-13-public-vendor-and-native-sequences.i18n.yaml deleted file mode 100644 index 11d862cd85..0000000000 --- a/.agents/notes/implemented/process/2026-08-13-public-vendor-and-native-sequences.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/process/2026-08-13-public-vendor-and-native-sequences.md -2026-08-13-public-vendor-and-native-sequences.md: 2b2b8039f8233ff38dc17aa39368a6c6c7282bda -2026-08-13-public-vendor-and-native-sequences.zh.md: 8ee806f0d49d2038f30e396371a4f09977a7cc57 diff --git a/.agents/notes/implemented/process/2026-08-13-published-document-fragments.i18n.yaml b/.agents/notes/implemented/process/2026-08-13-published-document-fragments.i18n.yaml deleted file mode 100644 index 43340a05d8..0000000000 --- a/.agents/notes/implemented/process/2026-08-13-published-document-fragments.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/process/2026-08-13-published-document-fragments.md -2026-08-13-published-document-fragments.md: 5b4727c3613fbb5466720adfb4c62fc9c468409c -2026-08-13-published-document-fragments.zh.md: f927e068a5eccacee3fa6d425d7ee83373944f97 diff --git a/.agents/notes/implemented/process/2026-08-17-readme-assets-on-cdn.i18n.yaml b/.agents/notes/implemented/process/2026-08-17-readme-assets-on-cdn.i18n.yaml deleted file mode 100644 index 61a6e6de7c..0000000000 --- a/.agents/notes/implemented/process/2026-08-17-readme-assets-on-cdn.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/process/2026-08-17-readme-assets-on-cdn.md -2026-08-17-readme-assets-on-cdn.md: 8918e2118123382553e1ea295351482030e0e640 -2026-08-17-readme-assets-on-cdn.zh.md: a1314068ff0bbebfef5bb0053f04aebe650f6101 diff --git a/.agents/notes/implemented/process/2026-08-18-in-job-partitioned-coverage.i18n.yaml b/.agents/notes/implemented/process/2026-08-18-in-job-partitioned-coverage.i18n.yaml index e2a25bda6d..28b23cf5f9 100644 --- a/.agents/notes/implemented/process/2026-08-18-in-job-partitioned-coverage.i18n.yaml +++ b/.agents/notes/implemented/process/2026-08-18-in-job-partitioned-coverage.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/implemented/process/2026-08-18-in-job-partitioned-coverage.md -2026-08-18-in-job-partitioned-coverage.md: ded8d4a84d24fa42f6b48ac56472c9e54925772b -2026-08-18-in-job-partitioned-coverage.zh.md: cf37d61744ab6482d67423275fa8ffb52cb851e0 +2026-08-18-in-job-partitioned-coverage.md: ef22245354bbeb26d551e227a6b5ca26ca22306c +2026-08-18-in-job-partitioned-coverage.zh.md: 67b434a8559f32da5bd2f863f526ce2b10e36b4c diff --git a/.agents/notes/implemented/process/2026-08-18-in-job-partitioned-coverage.md b/.agents/notes/implemented/process/2026-08-18-in-job-partitioned-coverage.md index ded8d4a84d..ef22245354 100644 --- a/.agents/notes/implemented/process/2026-08-18-in-job-partitioned-coverage.md +++ b/.agents/notes/implemented/process/2026-08-18-in-job-partitioned-coverage.md @@ -12,7 +12,7 @@ The optimization must retain every test and the merged per-file 100% thresholds. ## Decision -The ordinary `pnpm run test:coverage` command remains one Vitest invocation. Linux coverage CI fixes `DSH_COVERAGE_PARTITIONS=4`; native Windows now also fixes it at 4 to reduce process-creation pressure under high self-hosted concurrency. No elapsed-time trigger changes either count while a run is in progress. The [coverage-exempt heavy suite](2026-07-31-coverage-exempt-heavy-suites.md) remains a separate uninstrumented gate beside the instrumented work. +The ordinary `pnpm run test:coverage` command remains one Vitest invocation. Linux coverage CI fixes `DSH_COVERAGE_PARTITIONS=4`; native Windows now also fixes it at 4 to reduce process-creation pressure under high self-hosted concurrency. No elapsed-time trigger changes either count while a run is in progress. The [coverage-exempt heavy suite](../../archived/process/2026-07-31-coverage-exempt-heavy-suites.md) remains a separate uninstrumented gate beside the instrumented work. When partitioning is enabled, `scripts/run-gates.ts` selects `pnpm run test:coverage:partitioned` for the instrumented gate. `scripts/coverage-partitions.ts` starts the configured Vitest children concurrently, each with one worker. The coordinator collects the instrumented inventory from a `vitest list --filesOnly` run (caller filters narrow it; exempt heavy suites are removed because list does not apply their exclusion), reads recorded per-file durations from a coordinator-persisted gitignored file (restored and saved through the GitHub cache on the windows-coverage job, because checkout removes it and Vitest's own cache never survives CI), and assigns files to partitions by longest-processing-time by way of a min-heap, so the heavy subprocess-bound suites spread across children instead of piling into whichever shard a path hash lands them in. Each partition receives a temporary Vitest config whose include is its file list per project (command-line files exceeded the Windows CreateProcess limit; the mutually exclusive thread-safe and process-bound projects keep only their own files so nothing runs twice), an empty partition is rejected before any child starts, the heaviest partition starts first so its verdict lands earliest (fail-fast), and the duration history is restored and saved through the GitHub cache with per-run keys (cache entries are immutable). Partition mode suppresses thresholds and coverage reporters in each child, gives every child a separate report directory, and writes one blob report per process. diff --git a/.agents/notes/implemented/process/2026-08-18-in-job-partitioned-coverage.zh.md b/.agents/notes/implemented/process/2026-08-18-in-job-partitioned-coverage.zh.md index cf37d61744..67b434a855 100644 --- a/.agents/notes/implemented/process/2026-08-18-in-job-partitioned-coverage.zh.md +++ b/.agents/notes/implemented/process/2026-08-18-in-job-partitioned-coverage.zh.md @@ -12,7 +12,7 @@ Status: implemented ## 决策 -普通的 `pnpm run test:coverage` 命令仍只启动一次 Vitest。Linux 覆盖率 CI 将 `DSH_COVERAGE_PARTITIONS` 固定为 4;原生 Windows 现在也固定为 4,以降低自托管高并发下的进程创建压力。运行期间不会由任何耗时触发器改变这两个数量。[覆盖率豁免重型套件](2026-07-31-coverage-exempt-heavy-suites.zh.md)仍作为独立的无插桩门禁与插桩工作并排运行。 +普通的 `pnpm run test:coverage` 命令仍只启动一次 Vitest。Linux 覆盖率 CI 将 `DSH_COVERAGE_PARTITIONS` 固定为 4;原生 Windows 现在也固定为 4,以降低自托管高并发下的进程创建压力。运行期间不会由任何耗时触发器改变这两个数量。[覆盖率豁免重型套件](../../archived/process/2026-07-31-coverage-exempt-heavy-suites.md)仍作为独立的无插桩门禁与插桩工作并排运行。 启用分区后,`scripts/run-gates.ts` 为插桩门禁选择 `pnpm run test:coverage:partitioned`。`scripts/coverage-partitions.ts` 按配置数量并发启动 Vitest 子进程,每个进程只用 1 个 worker。协调器通过 `vitest list --filesOnly` 收集插桩清单(调用方过滤器会先收窄清单;exempt 重型套件需在此剔除,因为 list 不应用其排除),从协调器持久化的 gitignore 文件读取逐文件耗时(windows-coverage job 通过 GitHub cache 恢复并保存该文件,因为 checkout 会删除它且 Vitest 自身缓存无法在 CI 存活),并借最小堆按最长处理时间把文件分配到各分区,使重量级子进程密集型套件分散到不同子进程,而不是全部落入路径 hash 恰好命中的那一个分片。每个分区获得一个临时 Vitest 配置,其 include 按 project 拆分(命令行传文件会超过 Windows CreateProcess 上限;互斥的 thread-safe 与 process-bound project 只保留各自的文件,避免任何文件跑两次);空分区会在任何子进程启动前被拒绝,最重的分区最先启动使其结论最早落地(fail-fast),耗时历史通过 GitHub cache 以每 run 唯一键恢复与保存(cache 条目不可变)。分区模式会在各子进程中关闭阈值与覆盖率报告器,为每个子进程分配独立报告目录,并让每个进程写出 1 份 blob 报告。 diff --git a/.agents/notes/implemented/process/2026-08-18-localized-bilingual-links.i18n.yaml b/.agents/notes/implemented/process/2026-08-18-localized-bilingual-links.i18n.yaml deleted file mode 100644 index b9b6480ba8..0000000000 --- a/.agents/notes/implemented/process/2026-08-18-localized-bilingual-links.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/process/2026-08-18-localized-bilingual-links.md -2026-08-18-localized-bilingual-links.md: d8b792d5d1e9c23a1e6389328ed02cf2fb337a0e -2026-08-18-localized-bilingual-links.zh.md: ed49fccd975c6681831724d3577104a8ae7221cf diff --git a/.agents/notes/implemented/process/2026-08-20-doc-site-raw-markdown-twins.i18n.yaml b/.agents/notes/implemented/process/2026-08-20-doc-site-raw-markdown-twins.i18n.yaml deleted file mode 100644 index e2ba37e9a1..0000000000 --- a/.agents/notes/implemented/process/2026-08-20-doc-site-raw-markdown-twins.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/process/2026-08-20-doc-site-raw-markdown-twins.md -2026-08-20-doc-site-raw-markdown-twins.md: 7f557d1327ce4d981e37c1281a8d58526303f815 -2026-08-20-doc-site-raw-markdown-twins.zh.md: e2a7a050c10987685ddf1320c6e35f8bea110775 diff --git a/.agents/notes/implemented/process/2026-08-23-client-cross-package-value-dependencies.i18n.yaml b/.agents/notes/implemented/process/2026-08-23-client-cross-package-value-dependencies.i18n.yaml deleted file mode 100644 index 4a697578a2..0000000000 --- a/.agents/notes/implemented/process/2026-08-23-client-cross-package-value-dependencies.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/process/2026-08-23-client-cross-package-value-dependencies.md -2026-08-23-client-cross-package-value-dependencies.md: b4db6c75e245db37848d0389631441a585c82188 -2026-08-23-client-cross-package-value-dependencies.zh.md: 9894f743112157017c7d675eeac8adcb3aacff82 diff --git a/.agents/notes/implemented/process/2026-08-27-explicit-workspace-path-aliases.i18n.yaml b/.agents/notes/implemented/process/2026-08-27-explicit-workspace-path-aliases.i18n.yaml deleted file mode 100644 index 4389f9a1dc..0000000000 --- a/.agents/notes/implemented/process/2026-08-27-explicit-workspace-path-aliases.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/process/2026-08-27-explicit-workspace-path-aliases.md -2026-08-27-explicit-workspace-path-aliases.md: 51d2dee7911d323637121f509e160ef92c352568 -2026-08-27-explicit-workspace-path-aliases.zh.md: 702d3d7a8cf91c8c307b1708fc30faad6cab009a diff --git a/.agents/notes/implemented/process/2026-08-27-gate-runner-fail-fast.i18n.yaml b/.agents/notes/implemented/process/2026-08-27-gate-runner-fail-fast.i18n.yaml deleted file mode 100644 index 61e96d4f47..0000000000 --- a/.agents/notes/implemented/process/2026-08-27-gate-runner-fail-fast.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/process/2026-08-27-gate-runner-fail-fast.md -2026-08-27-gate-runner-fail-fast.md: b11e3336aad01d2d4bf57c132e1aeaddfac5c258 -2026-08-27-gate-runner-fail-fast.zh.md: 93e1b0314289afa17e89afea19c8b8c0563362f4 diff --git a/.agents/notes/implemented/process/2026-08-28-test-temp-dir-self-cleanup.i18n.yaml b/.agents/notes/implemented/process/2026-08-28-test-temp-dir-self-cleanup.i18n.yaml deleted file mode 100644 index bc3c08e1d9..0000000000 --- a/.agents/notes/implemented/process/2026-08-28-test-temp-dir-self-cleanup.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/process/2026-08-28-test-temp-dir-self-cleanup.md -2026-08-28-test-temp-dir-self-cleanup.md: 175fe82b0ad01c2afda3abb5f66ff455045a3cd6 -2026-08-28-test-temp-dir-self-cleanup.zh.md: e56ab31c3e226dd8d2ce13685d7b6cfbf05a4323 diff --git a/.agents/notes/implemented/process/2026-08-30-windows-refs-store-block-clone-install.i18n.yaml b/.agents/notes/implemented/process/2026-08-30-windows-refs-store-block-clone-install.i18n.yaml deleted file mode 100644 index be40552c58..0000000000 --- a/.agents/notes/implemented/process/2026-08-30-windows-refs-store-block-clone-install.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/process/2026-08-30-windows-refs-store-block-clone-install.md -2026-08-30-windows-refs-store-block-clone-install.md: 086c00453fffada7faef1631e7c270f3270b82d6 -2026-08-30-windows-refs-store-block-clone-install.zh.md: 6d1a6ad387b59aad18435593cbf6e7383dfa34f0 diff --git a/.agents/notes/implemented/process/2026-08-31-serial-windows-notices-timeout-budget.i18n.yaml b/.agents/notes/implemented/process/2026-08-31-serial-windows-notices-timeout-budget.i18n.yaml deleted file mode 100644 index 6467313845..0000000000 --- a/.agents/notes/implemented/process/2026-08-31-serial-windows-notices-timeout-budget.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/process/2026-08-31-serial-windows-notices-timeout-budget.md -2026-08-31-serial-windows-notices-timeout-budget.md: 184004122bf8050fa00038b7c57ae680748463f8 -2026-08-31-serial-windows-notices-timeout-budget.zh.md: f6a68dabcfeaad5121b4be8a11f04201698ec00a diff --git a/.agents/notes/implemented/process/2026-08-31-windows-coverage-flaky-test-budgets.i18n.yaml b/.agents/notes/implemented/process/2026-08-31-windows-coverage-flaky-test-budgets.i18n.yaml deleted file mode 100644 index 37c7e51256..0000000000 --- a/.agents/notes/implemented/process/2026-08-31-windows-coverage-flaky-test-budgets.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/process/2026-08-31-windows-coverage-flaky-test-budgets.md -2026-08-31-windows-coverage-flaky-test-budgets.md: 475bd79adf2721202d860d3c7bc86e1e4b68d6c2 -2026-08-31-windows-coverage-flaky-test-budgets.zh.md: cd01331369f99a3b0e03daff6d67569880d94964 diff --git a/.agents/notes/implemented/process/2026-09-03-workspace-version-coherence-gate.i18n.yaml b/.agents/notes/implemented/process/2026-09-03-workspace-version-coherence-gate.i18n.yaml deleted file mode 100644 index 7ba6a9f46f..0000000000 --- a/.agents/notes/implemented/process/2026-09-03-workspace-version-coherence-gate.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/process/2026-09-03-workspace-version-coherence-gate.md -2026-09-03-workspace-version-coherence-gate.md: c1647631ca3a6b7db3620a507312ebc53b5d49a3 -2026-09-03-workspace-version-coherence-gate.zh.md: 13bb619ccd82a5cee0f364da0c34f34c30fae0ed diff --git a/.agents/notes/implemented/simplification/2026-06-20-public-agent-stop-api.i18n.yaml b/.agents/notes/implemented/simplification/2026-06-20-public-agent-stop-api.i18n.yaml deleted file mode 100644 index e29d6911cb..0000000000 --- a/.agents/notes/implemented/simplification/2026-06-20-public-agent-stop-api.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/simplification/2026-06-20-public-agent-stop-api.md -2026-06-20-public-agent-stop-api.md: bb4a24e70656111510ce92f84c8e79e520f2b5aa -2026-06-20-public-agent-stop-api.zh.md: 7673b680c18dd8d743a59f0452e1b259d8f7ed43 diff --git a/.agents/notes/implemented/simplification/2026-06-20-remove-agent-boundary-mirror-events.i18n.yaml b/.agents/notes/implemented/simplification/2026-06-20-remove-agent-boundary-mirror-events.i18n.yaml deleted file mode 100644 index 52d81ec626..0000000000 --- a/.agents/notes/implemented/simplification/2026-06-20-remove-agent-boundary-mirror-events.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/simplification/2026-06-20-remove-agent-boundary-mirror-events.md -2026-06-20-remove-agent-boundary-mirror-events.md: cb3cb83e7e37fae52b59bb8566284aa80708e23a -2026-06-20-remove-agent-boundary-mirror-events.zh.md: 85572deb662b544b1de635a063e3a19d2388fda4 diff --git a/.agents/notes/implemented/simplification/2026-06-26-fsspec-style-fs-seam.i18n.yaml b/.agents/notes/implemented/simplification/2026-06-26-fsspec-style-fs-seam.i18n.yaml index 75c3259498..f45df2a68a 100644 --- a/.agents/notes/implemented/simplification/2026-06-26-fsspec-style-fs-seam.i18n.yaml +++ b/.agents/notes/implemented/simplification/2026-06-26-fsspec-style-fs-seam.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/implemented/simplification/2026-06-26-fsspec-style-fs-seam.md -2026-06-26-fsspec-style-fs-seam.md: 927220a4042a47aa1a76926161427613f3a2b809 -2026-06-26-fsspec-style-fs-seam.zh.md: 8b9f36f884955aa23ba82bfe7798db6c1c8a6cb4 +2026-06-26-fsspec-style-fs-seam.md: 138d6d4d74d162ab2149350a76fc72dc31c1818e +2026-06-26-fsspec-style-fs-seam.zh.md: bc7a3756dbf08673cfa63693a68aba1eb73da323 diff --git a/.agents/notes/implemented/simplification/2026-06-26-fsspec-style-fs-seam.md b/.agents/notes/implemented/simplification/2026-06-26-fsspec-style-fs-seam.md index 927220a404..138d6d4d74 100644 --- a/.agents/notes/implemented/simplification/2026-06-26-fsspec-style-fs-seam.md +++ b/.agents/notes/implemented/simplification/2026-06-26-fsspec-style-fs-seam.md @@ -6,7 +6,7 @@ English | [中文](2026-06-26-fsspec-style-fs-seam.zh.md) ## Problem -The filesystem capability from [filesystem-capability-seam](../architecture/2026-06-17-filesystem-capability-seam.md) currently makes one abstract `FileSystem` service own two different jobs: +The filesystem capability from [filesystem-capability-seam](../../archived/architecture/2026-06-17-filesystem-capability-seam.md) currently makes one abstract `FileSystem` service own two different jobs: 1. **Provider operations** — resolving targets, stat/version metadata, text reads/streams, atomic writes, and guarded literal edits. 2. **Agent-facing policy** — line windows, literal edit semantics, and read-before-write/edit observed-state. @@ -65,7 +65,7 @@ type FsWriteIntent = This is a *text-storage* seam, deliberately half a level above byte-level fsspec (`cat`/`open` hand back raw bytes). UTF-8 decoding, binary/NUL rejection, guarded full-file writes, and guarded literal text edits live in the provider so the policy layer never touches raw bytes, reimplements cross-chunk decoding, or separates stale checks from the mutation critical section. Model-facing concepts still stay out of the provider: no line windows, numbered lines, rendered footers, or observed-state store leak down. -Deleted from `dsh-fs`: `readPage`, `FsExpectation`, `FsView`, `FsStateSource`, `FsReadRequest`, `FsTextLine`, line/window constants, `formatReadBody`, and the observed-state `WeakMap`. `applyEdit` is replaced by the narrower provider primitive `editText`, whose contract is version-guarded literal text mutation rather than policy-layer read authorization. The `FS_PARTIAL_OBSERVATION` code also leaves the `FsErrorCode` taxonomy: freshness authorization has no partial/full distinction, so nothing can raise it. `FsTargetKey` and `FsVersion` become branded opaque ids under the existing [branded-ids Agent Note](../architecture/2026-06-20-branded-ids.md). +Deleted from `dsh-fs`: `readPage`, `FsExpectation`, `FsView`, `FsStateSource`, `FsReadRequest`, `FsTextLine`, line/window constants, `formatReadBody`, and the observed-state `WeakMap`. `applyEdit` is replaced by the narrower provider primitive `editText`, whose contract is version-guarded literal text mutation rather than policy-layer read authorization. The `FS_PARTIAL_OBSERVATION` code also leaves the `FsErrorCode` taxonomy: freshness authorization has no partial/full distinction, so nothing can raise it. `FsTargetKey` and `FsVersion` become branded opaque ids under the existing [branded-ids Agent Note](../../archived/architecture/2026-06-20-branded-ids.md). ## Policy Contract @@ -99,7 +99,7 @@ Cross-process writes are best-effort freshness plus atomic replacement: `mtime:s ## Supersedes -This Agent Note reverses two decisions from [filesystem-capability-seam](../architecture/2026-06-17-filesystem-capability-seam.md) and narrows a third: +This Agent Note reverses two decisions from [filesystem-capability-seam](../../archived/architecture/2026-06-17-filesystem-capability-seam.md) and narrows a third: - Read-before-write/edit policy moves out of `ctx.fs` and into the `dsh-fs-observation-policy` plugin (on the `fs/*` event gate). - Text reads no longer return backend-numbered line records or `full`/`partial` views; authorization is based on version freshness, so a windowed read can authorize edit when the file is unchanged. diff --git a/.agents/notes/implemented/simplification/2026-06-26-fsspec-style-fs-seam.zh.md b/.agents/notes/implemented/simplification/2026-06-26-fsspec-style-fs-seam.zh.md index 8b9f36f884..bc7a3756db 100644 --- a/.agents/notes/implemented/simplification/2026-06-26-fsspec-style-fs-seam.zh.md +++ b/.agents/notes/implemented/simplification/2026-06-26-fsspec-style-fs-seam.zh.md @@ -6,7 +6,7 @@ Status: implemented ## 问题 -[文件系统能力 seam](../architecture/2026-06-17-filesystem-capability-seam.zh.md)中的文件系统能力目前让一个抽象 `FileSystem` 服务同时负责两项不同工作: +[文件系统能力 seam](../../archived/architecture/2026-06-17-filesystem-capability-seam.md)中的文件系统能力目前让一个抽象 `FileSystem` 服务同时负责两项不同工作: 1. **提供方操作**——解析目标、stat/版本元数据、文本读取/流式读取、原子写入,以及受保护的字面编辑。 2. **面向 agent(智能体)的策略**——行窗口、字面编辑语义,以及读后写/编辑的观测状态。 @@ -65,7 +65,7 @@ type FsWriteIntent = 这是一个*文本存储* seam,刻意比字节级 fsspec(`cat`/`open` 返回原始字节)高半个层次。UTF-8 解码、二进制/NUL 拒绝、受保护的全文件写入和受保护的字面文本编辑都在提供方内完成,因此策略层从不接触原始字节、不重新实现跨分片解码、也不将陈旧检查与变更临界区分离。面向模型的概念仍然不下沉到提供方:行窗口、带行号的行、渲染的页脚、观测状态存储都不会泄漏下去。 -从 `dsh-fs` 删除:`readPage`、`FsExpectation`、`FsView`、`FsStateSource`、`FsReadRequest`、`FsTextLine`、行/窗口常量、`formatReadBody` 和 observed-state `WeakMap`。`applyEdit` 由更窄的提供方原语 `editText` 取代,其约定是带版本守卫的字面文本变更,而非策略层读取授权。`FS_PARTIAL_OBSERVATION` 错误码也从 `FsErrorCode` 分类体系中移除:新鲜度授权没有部分/完整之分,因此没有任何路径会抛出它。`FsTargetKey` 和 `FsVersion` 按现有[品牌化 id Agent Note](../architecture/2026-06-20-branded-ids.zh.md) 成为品牌化不透明 id。 +从 `dsh-fs` 删除:`readPage`、`FsExpectation`、`FsView`、`FsStateSource`、`FsReadRequest`、`FsTextLine`、行/窗口常量、`formatReadBody` 和 observed-state `WeakMap`。`applyEdit` 由更窄的提供方原语 `editText` 取代,其约定是带版本守卫的字面文本变更,而非策略层读取授权。`FS_PARTIAL_OBSERVATION` 错误码也从 `FsErrorCode` 分类体系中移除:新鲜度授权没有部分/完整之分,因此没有任何路径会抛出它。`FsTargetKey` 和 `FsVersion` 按现有[品牌化 id Agent Note](../../archived/architecture/2026-06-20-branded-ids.md) 成为品牌化不透明 id。 ## 策略约定 @@ -99,7 +99,7 @@ type FsWriteIntent = ## 取代 -本 Agent Note 推翻[文件系统能力 seam](../architecture/2026-06-17-filesystem-capability-seam.zh.md)中的两项决策,并收窄第三项: +本 Agent Note 推翻[文件系统能力 seam](../../archived/architecture/2026-06-17-filesystem-capability-seam.md)中的两项决策,并收窄第三项: - 读后写/编辑策略从 `ctx.fs` 移出,进入 `dsh-fs-observation-policy` 插件(通过 `fs/*` 事件门控)。 - 文本读取不再返回后端编号的行记录或 `full`/`partial` 视图;授权基于版本新鲜度,因此窗口化读取在文件未变时即可授权编辑。 diff --git a/.agents/notes/implemented/simplification/2026-07-04-tighten-hook-protocol-contract.i18n.yaml b/.agents/notes/implemented/simplification/2026-07-04-tighten-hook-protocol-contract.i18n.yaml deleted file mode 100644 index e74da894f9..0000000000 --- a/.agents/notes/implemented/simplification/2026-07-04-tighten-hook-protocol-contract.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/simplification/2026-07-04-tighten-hook-protocol-contract.md -2026-07-04-tighten-hook-protocol-contract.md: 70cf7a15fe0ec0c43c0ef768667ef4741aee27d2 -2026-07-04-tighten-hook-protocol-contract.zh.md: 3be16b4b8cdbe210b0f2e2dc1dc315dc0d3a2bd6 diff --git a/.agents/notes/implemented/simplification/2026-07-12-simplify-session-log-representation.i18n.yaml b/.agents/notes/implemented/simplification/2026-07-12-simplify-session-log-representation.i18n.yaml deleted file mode 100644 index bb00b05064..0000000000 --- a/.agents/notes/implemented/simplification/2026-07-12-simplify-session-log-representation.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/simplification/2026-07-12-simplify-session-log-representation.md -2026-07-12-simplify-session-log-representation.md: 9c8383d72b16ccd430a094515cbfd7227b222363 -2026-07-12-simplify-session-log-representation.zh.md: c77f97c3a5f3011cf76ee493ce97d2354a634428 diff --git a/.agents/notes/implemented/simplification/2026-07-20-remove-stdio-and-echo-agents.i18n.yaml b/.agents/notes/implemented/simplification/2026-07-20-remove-stdio-and-echo-agents.i18n.yaml deleted file mode 100644 index efabfb37a1..0000000000 --- a/.agents/notes/implemented/simplification/2026-07-20-remove-stdio-and-echo-agents.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/simplification/2026-07-20-remove-stdio-and-echo-agents.md -2026-07-20-remove-stdio-and-echo-agents.md: cb0f53737a89c5324eb3712c22380b02cef7cb77 -2026-07-20-remove-stdio-and-echo-agents.zh.md: f7374fa6fba0b91a1af29f9a934d35d415c3affb diff --git a/.agents/notes/implemented/simplification/2026-07-23-collapse-persistence-flush-state.i18n.yaml b/.agents/notes/implemented/simplification/2026-07-23-collapse-persistence-flush-state.i18n.yaml deleted file mode 100644 index 3f3010a179..0000000000 --- a/.agents/notes/implemented/simplification/2026-07-23-collapse-persistence-flush-state.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/simplification/2026-07-23-collapse-persistence-flush-state.md -2026-07-23-collapse-persistence-flush-state.md: d64be38a58f582a721ddf1dd22dc581107746afe -2026-07-23-collapse-persistence-flush-state.zh.md: 9114640f6d2eff1293cc50b1f253c6a16feab721 diff --git a/.agents/notes/implemented/simplification/2026-07-24-agent-loop-observable-state-machine.i18n.yaml b/.agents/notes/implemented/simplification/2026-07-24-agent-loop-observable-state-machine.i18n.yaml index b718bb1982..d768a5513b 100644 --- a/.agents/notes/implemented/simplification/2026-07-24-agent-loop-observable-state-machine.i18n.yaml +++ b/.agents/notes/implemented/simplification/2026-07-24-agent-loop-observable-state-machine.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/implemented/simplification/2026-07-24-agent-loop-observable-state-machine.md -2026-07-24-agent-loop-observable-state-machine.md: 2c9cdd3ac090d2236e8922e06c94b5504570fead -2026-07-24-agent-loop-observable-state-machine.zh.md: 63ddc8987e5f0957052e3ada9f61288b80713a59 +2026-07-24-agent-loop-observable-state-machine.md: f250d645ca0a69c0fcad0078292de1d6531db19d +2026-07-24-agent-loop-observable-state-machine.zh.md: c77e5ad8f664851917bc578f1fb39760a80d2593 diff --git a/.agents/notes/implemented/simplification/2026-07-24-agent-loop-observable-state-machine.md b/.agents/notes/implemented/simplification/2026-07-24-agent-loop-observable-state-machine.md index 2c9cdd3ac0..f250d645ca 100644 --- a/.agents/notes/implemented/simplification/2026-07-24-agent-loop-observable-state-machine.md +++ b/.agents/notes/implemented/simplification/2026-07-24-agent-loop-observable-state-machine.md @@ -51,7 +51,7 @@ The inbox lifecycle complements, rather than replaces, the durable session log. ## Related -- [Unify agent delivery routing and coalesce injected context into user/message](../architecture/2026-07-22-unified-send-and-coalesced-user-messages.md) +- [Unify agent delivery routing and coalesce injected context into user/message](../../archived/architecture/2026-07-22-unified-send-and-coalesced-user-messages.md) - [Remove implicit batching from ordinary sends](2026-07-17-one-send-one-turn.md) - [Microkernel event taxonomy](../architecture/2026-06-11-microkernel-event-taxonomy.md) - [Bounded LLM request recovery](../architecture/2026-06-21-bounded-llm-request-recovery.md) diff --git a/.agents/notes/implemented/simplification/2026-07-24-agent-loop-observable-state-machine.zh.md b/.agents/notes/implemented/simplification/2026-07-24-agent-loop-observable-state-machine.zh.md index 63ddc8987e..c77e5ad8f6 100644 --- a/.agents/notes/implemented/simplification/2026-07-24-agent-loop-observable-state-machine.zh.md +++ b/.agents/notes/implemented/simplification/2026-07-24-agent-loop-observable-state-machine.zh.md @@ -51,7 +51,7 @@ agent 生命周期、agent 整体活动状态、收件箱条目的进度以及 ## 相关内容 -- [统一 agent 交付路由,并将注入上下文合并到 user/message](../architecture/2026-07-22-unified-send-and-coalesced-user-messages.zh.md) +- [统一 agent 交付路由,并将注入上下文合并到 user/message](../../archived/architecture/2026-07-22-unified-send-and-coalesced-user-messages.md) - [移除普通发送中的隐式批处理](2026-07-17-one-send-one-turn.zh.md) - [微内核事件分类体系](../architecture/2026-06-11-microkernel-event-taxonomy.zh.md) - [有界 LLM(大语言模型)请求恢复](../architecture/2026-06-21-bounded-llm-request-recovery.zh.md) diff --git a/.agents/notes/implemented/simplification/2026-07-26-merge-subagent-control-service.i18n.yaml b/.agents/notes/implemented/simplification/2026-07-26-merge-subagent-control-service.i18n.yaml deleted file mode 100644 index 7558d04301..0000000000 --- a/.agents/notes/implemented/simplification/2026-07-26-merge-subagent-control-service.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/simplification/2026-07-26-merge-subagent-control-service.md -2026-07-26-merge-subagent-control-service.md: 1d8aadc6a90dc1bea5ea4b743bee6c112bf0c2ca -2026-07-26-merge-subagent-control-service.zh.md: 2843a913a1e1bb912c0a77746a3887bcf1824471 diff --git a/.agents/notes/implemented/simplification/2026-07-28-local-json-tree-renderer.i18n.yaml b/.agents/notes/implemented/simplification/2026-07-28-local-json-tree-renderer.i18n.yaml deleted file mode 100644 index 796c80e102..0000000000 --- a/.agents/notes/implemented/simplification/2026-07-28-local-json-tree-renderer.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/simplification/2026-07-28-local-json-tree-renderer.md -2026-07-28-local-json-tree-renderer.md: 5e8e6d6968319ada53e65a48e9e03b297dc0141c -2026-07-28-local-json-tree-renderer.zh.md: 1c83ac319f0b1dbeac31feddf01887519c671e9c diff --git a/.agents/notes/implemented/simplification/2026-07-29-shared-base-config-overlays.i18n.yaml b/.agents/notes/implemented/simplification/2026-07-29-shared-base-config-overlays.i18n.yaml deleted file mode 100644 index 4125e5a52e..0000000000 --- a/.agents/notes/implemented/simplification/2026-07-29-shared-base-config-overlays.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/simplification/2026-07-29-shared-base-config-overlays.md -2026-07-29-shared-base-config-overlays.md: de9dcafeab46c21a4fea85f36d73e3fbc9736d9a -2026-07-29-shared-base-config-overlays.zh.md: 0e5b76df33be433391572f08b639dd85c0f30b8e diff --git a/.agents/notes/implemented/simplification/2026-07-29-simplify-web-image-input-v1.i18n.yaml b/.agents/notes/implemented/simplification/2026-07-29-simplify-web-image-input-v1.i18n.yaml deleted file mode 100644 index 8246ae9618..0000000000 --- a/.agents/notes/implemented/simplification/2026-07-29-simplify-web-image-input-v1.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/simplification/2026-07-29-simplify-web-image-input-v1.md -2026-07-29-simplify-web-image-input-v1.md: f13abfda3be890f80a8ff852acbc68118b91941c -2026-07-29-simplify-web-image-input-v1.zh.md: c92974efe5f84da5b91c09ea4acf820e7853ca7d diff --git a/.agents/notes/implemented/simplification/2026-07-30-private-agent-send.i18n.yaml b/.agents/notes/implemented/simplification/2026-07-30-private-agent-send.i18n.yaml deleted file mode 100644 index ac4c0814e6..0000000000 --- a/.agents/notes/implemented/simplification/2026-07-30-private-agent-send.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/simplification/2026-07-30-private-agent-send.md -2026-07-30-private-agent-send.md: 43353c309f98eab1bff91b8fbe0c9cfaa2bbc69b -2026-07-30-private-agent-send.zh.md: 97fe89610d9b9bc33d4587d01ea56cbd929e8a6e diff --git a/.agents/notes/implemented/simplification/2026-07-31-capability-neutral-sandbox-policy-context.i18n.yaml b/.agents/notes/implemented/simplification/2026-07-31-capability-neutral-sandbox-policy-context.i18n.yaml deleted file mode 100644 index a2ecaf2a7d..0000000000 --- a/.agents/notes/implemented/simplification/2026-07-31-capability-neutral-sandbox-policy-context.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/simplification/2026-07-31-capability-neutral-sandbox-policy-context.md -2026-07-31-capability-neutral-sandbox-policy-context.md: d45c6c652fb7a061c2f92b7e03c41cce39da2a30 -2026-07-31-capability-neutral-sandbox-policy-context.zh.md: 5d209b6b787deb6770c03092d58e33d9cabebcfd diff --git a/.agents/notes/implemented/simplification/2026-07-31-drop-user-message-edit-stub.i18n.yaml b/.agents/notes/implemented/simplification/2026-07-31-drop-user-message-edit-stub.i18n.yaml deleted file mode 100644 index e23f925416..0000000000 --- a/.agents/notes/implemented/simplification/2026-07-31-drop-user-message-edit-stub.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/simplification/2026-07-31-drop-user-message-edit-stub.md -2026-07-31-drop-user-message-edit-stub.md: 5a34be1dd285f4aced9e6cfb2e324b20ec734bed -2026-07-31-drop-user-message-edit-stub.zh.md: 288f2bda5d41cf0a331f69f134c8cf1e61a801ef diff --git a/.agents/notes/implemented/simplification/2026-07-31-one-route-to-add-a-workspace.i18n.yaml b/.agents/notes/implemented/simplification/2026-07-31-one-route-to-add-a-workspace.i18n.yaml deleted file mode 100644 index f3e1e996d0..0000000000 --- a/.agents/notes/implemented/simplification/2026-07-31-one-route-to-add-a-workspace.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/simplification/2026-07-31-one-route-to-add-a-workspace.md -2026-07-31-one-route-to-add-a-workspace.md: bcbe77899d4050bd898b256e81f88183099bdebf -2026-07-31-one-route-to-add-a-workspace.zh.md: edd17af03ca6454be321a4b267ff1761ece2d03f diff --git a/.agents/notes/implemented/simplification/2026-08-03-omit-invariants-from-shipped-config.i18n.yaml b/.agents/notes/implemented/simplification/2026-08-03-omit-invariants-from-shipped-config.i18n.yaml deleted file mode 100644 index 2844b05dfa..0000000000 --- a/.agents/notes/implemented/simplification/2026-08-03-omit-invariants-from-shipped-config.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/simplification/2026-08-03-omit-invariants-from-shipped-config.md -2026-08-03-omit-invariants-from-shipped-config.md: a691a0949806a752203a41bd6c66a50e97d8f1d7 -2026-08-03-omit-invariants-from-shipped-config.zh.md: c1593f6a9b2c89626462c65c64050a0d98ecc965 diff --git a/.agents/notes/implemented/simplification/2026-08-04-drop-windows-powershell-picker-fallback.i18n.yaml b/.agents/notes/implemented/simplification/2026-08-04-drop-windows-powershell-picker-fallback.i18n.yaml deleted file mode 100644 index e17f8c3824..0000000000 --- a/.agents/notes/implemented/simplification/2026-08-04-drop-windows-powershell-picker-fallback.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/simplification/2026-08-04-drop-windows-powershell-picker-fallback.md -2026-08-04-drop-windows-powershell-picker-fallback.md: 619afd31d9ec78cdb8565e29fa942b7db8749365 -2026-08-04-drop-windows-powershell-picker-fallback.zh.md: 14716f405e98385b7277ce0814adf32190be36b7 diff --git a/.agents/notes/implemented/simplification/2026-08-04-remove-tui-package.i18n.yaml b/.agents/notes/implemented/simplification/2026-08-04-remove-tui-package.i18n.yaml deleted file mode 100644 index a4e350da2a..0000000000 --- a/.agents/notes/implemented/simplification/2026-08-04-remove-tui-package.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/simplification/2026-08-04-remove-tui-package.md -2026-08-04-remove-tui-package.md: 2834ec10aa86a3dcf612a1fe9067732ca93d921f -2026-08-04-remove-tui-package.zh.md: 6532bb690a14e4d0e877a6e1cd049800369aaf6c diff --git a/.agents/notes/implemented/simplification/2026-08-06-buffer-free-feedback-telemetry.i18n.yaml b/.agents/notes/implemented/simplification/2026-08-06-buffer-free-feedback-telemetry.i18n.yaml deleted file mode 100644 index c2abc51eb8..0000000000 --- a/.agents/notes/implemented/simplification/2026-08-06-buffer-free-feedback-telemetry.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/simplification/2026-08-06-buffer-free-feedback-telemetry.md -2026-08-06-buffer-free-feedback-telemetry.md: 9e2822e144d66e0ef3318e80cdc63ad5beba08a3 -2026-08-06-buffer-free-feedback-telemetry.zh.md: cc77c60ada2cfc8df486fb572f27c6c475aca608 diff --git a/.agents/notes/implemented/simplification/2026-08-06-user-bubbles-drop-the-branch-action.i18n.yaml b/.agents/notes/implemented/simplification/2026-08-06-user-bubbles-drop-the-branch-action.i18n.yaml deleted file mode 100644 index d93b884a43..0000000000 --- a/.agents/notes/implemented/simplification/2026-08-06-user-bubbles-drop-the-branch-action.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/simplification/2026-08-06-user-bubbles-drop-the-branch-action.md -2026-08-06-user-bubbles-drop-the-branch-action.md: 817b5e72b7e18b03ddb3a160e6f7a86b04f02764 -2026-08-06-user-bubbles-drop-the-branch-action.zh.md: 0f538315106ef89020633a90873af2cf519b0166 diff --git a/.agents/notes/implemented/simplification/2026-08-08-copy-only-preset-authoring.i18n.yaml b/.agents/notes/implemented/simplification/2026-08-08-copy-only-preset-authoring.i18n.yaml index 93a1ed623e..505c69b9b3 100644 --- a/.agents/notes/implemented/simplification/2026-08-08-copy-only-preset-authoring.i18n.yaml +++ b/.agents/notes/implemented/simplification/2026-08-08-copy-only-preset-authoring.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/implemented/simplification/2026-08-08-copy-only-preset-authoring.md -2026-08-08-copy-only-preset-authoring.md: e6ac66a7a3208b495333166d382e669d13633f51 -2026-08-08-copy-only-preset-authoring.zh.md: da25dcab0374126caea375f5312e063354456d3f +2026-08-08-copy-only-preset-authoring.md: 13d0bfc7c49d4b97b6c444fe1ff6c6455fef53ec +2026-08-08-copy-only-preset-authoring.zh.md: 2b93ac1b81ddb2461308baffb3b6563fe240f9d5 diff --git a/.agents/notes/implemented/simplification/2026-08-08-copy-only-preset-authoring.md b/.agents/notes/implemented/simplification/2026-08-08-copy-only-preset-authoring.md index e6ac66a7a3..13d0bfc7c4 100644 --- a/.agents/notes/implemented/simplification/2026-08-08-copy-only-preset-authoring.md +++ b/.agents/notes/implemented/simplification/2026-08-08-copy-only-preset-authoring.md @@ -15,7 +15,7 @@ Authoring is a host-side copy, and files are the editor. `agentPreset.write` bec ## Consequences - No composition text and no path crosses the browser wire in either authoring direction; the `entryListSchema`/`!!js` concern dissolves with `assertComposition` itself (deleted). The authoring operations are `read`/`copy`/`openDocument`/`remove` — none accepts a filesystem target, and Connection authenticates them with the complete Host API. -- With the editor gone, hand-editing `agent.cordis.yml` is the ONLY composition edit, so the standing-mount layer grew stamp-keyed generations: `ensureStanding` compares the file's mtime+size and starts the next generation for later sessions ([standing-mounts note](../architecture/2026-08-08-per-preset-standing-mounts.md), updated in place). Without this, an edited file would serve stale compositions until process restart. +- With the editor gone, hand-editing `agent.cordis.yml` is the ONLY composition edit, so the standing-mount layer grew stamp-keyed generations: `ensureStanding` compares the file's mtime+size and starts the next generation for later sessions ([standing-mounts note](../../archived/architecture/2026-08-08-per-preset-standing-mounts.md), updated in place). Without this, an edited file would serve stale compositions until process restart. - A copy is a full snapshot that drifts from an upgraded shipped source — accepted; the preset layer has no patch semantics (that is the bundle layer's `cordis.patch.yml`), and the shipped set itself pays the same cost (`cordis`/`code` are full copies of `standard`) for one-file readability. - `read` dropped `writable` (no editor to gate) and builtin directories are never opened (`openDocument` refuses non-`user` trust like `remove`): the install is overwritten by upgrades, and pointing an editor into it invites edits an upgrade silently discards. diff --git a/.agents/notes/implemented/simplification/2026-08-08-copy-only-preset-authoring.zh.md b/.agents/notes/implemented/simplification/2026-08-08-copy-only-preset-authoring.zh.md index da25dcab03..2b93ac1b81 100644 --- a/.agents/notes/implemented/simplification/2026-08-08-copy-only-preset-authoring.zh.md +++ b/.agents/notes/implemented/simplification/2026-08-08-copy-only-preset-authoring.zh.md @@ -15,7 +15,7 @@ agent-preset 设置页带着一个网页 YAML 编辑器:`agentPreset.write` ## 后果 - 创作两个方向都没有组装文本或路径跨越浏览器传输层;`entryListSchema`/`!!js` 的顾虑随 `assertComposition` 本身(已删除)一并消解。创作操作是 `read`/`copy`/`openDocument`/`remove`——没有一个接收文件系统目标,且 Connection 用完整 Host API 的同一会话认证它们。 -- 编辑器移除后,手改 `agent.cordis.yml` 成为唯一的组装编辑方式,因此常驻挂载层增加了以 stamp 为键的代际:`ensureStanding` 比对文件的 mtime+大小,为后续会话开启下一代际([常驻挂载 note](../architecture/2026-08-08-per-preset-standing-mounts.zh.md),已就地更新)。没有它,改过的文件要等进程重启才生效。 +- 编辑器移除后,手改 `agent.cordis.yml` 成为唯一的组装编辑方式,因此常驻挂载层增加了以 stamp 为键的代际:`ensureStanding` 比对文件的 mtime+大小,为后续会话开启下一代际([常驻挂载 note](../../archived/architecture/2026-08-08-per-preset-standing-mounts.md),已就地更新)。没有它,改过的文件要等进程重启才生效。 - 副本是完整快照,会随随附来源升级而漂移——接受;preset 层没有 patch 语义(那是 bundle 层 `cordis.patch.yml` 的能力),随附集合自己也为「一个文件读完整份组装」付了同样的代价(`cordis`/`code` 就是 `standard` 的完整副本)。 - `read` 去掉了 `writable`(没有编辑器可门控),内置目录绝不被打开(`openDocument` 与 `remove` 一样拒绝非 `user` 信任):安装目录会被升级覆盖,把编辑器指向它等于招揽会被升级悄悄丢弃的编辑。 diff --git a/.agents/notes/implemented/simplification/2026-08-08-remove-cli-demo.i18n.yaml b/.agents/notes/implemented/simplification/2026-08-08-remove-cli-demo.i18n.yaml deleted file mode 100644 index 9eff6f5ba0..0000000000 --- a/.agents/notes/implemented/simplification/2026-08-08-remove-cli-demo.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/simplification/2026-08-08-remove-cli-demo.md -2026-08-08-remove-cli-demo.md: 1bfb4cdf8dc9c228fa538104daadc9e12fd1e657 -2026-08-08-remove-cli-demo.zh.md: 9e84831aa586ccbe374be785a5d1f05fcdfb4db6 diff --git a/.agents/notes/implemented/simplification/2026-08-09-bounded-fixed-rate-schedule.i18n.yaml b/.agents/notes/implemented/simplification/2026-08-09-bounded-fixed-rate-schedule.i18n.yaml deleted file mode 100644 index cf4d622b38..0000000000 --- a/.agents/notes/implemented/simplification/2026-08-09-bounded-fixed-rate-schedule.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/simplification/2026-08-09-bounded-fixed-rate-schedule.md -2026-08-09-bounded-fixed-rate-schedule.md: 83d7e149f654d80fd988d0e4247aad3c4b34c6be -2026-08-09-bounded-fixed-rate-schedule.zh.md: a8b287ce7ff009758f9fdbe41ed1e88555cb1846 diff --git a/.agents/notes/implemented/simplification/2026-08-09-conversational-schedule-delivery.i18n.yaml b/.agents/notes/implemented/simplification/2026-08-09-conversational-schedule-delivery.i18n.yaml deleted file mode 100644 index 1419a2a556..0000000000 --- a/.agents/notes/implemented/simplification/2026-08-09-conversational-schedule-delivery.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/simplification/2026-08-09-conversational-schedule-delivery.md -2026-08-09-conversational-schedule-delivery.md: 84a97b8945cd3334f9a431ffd5c9ace138699405 -2026-08-09-conversational-schedule-delivery.zh.md: 1d3430a8c725349fd1e2565a735e12fec46e549f diff --git a/.agents/notes/implemented/simplification/2026-08-09-remove-repository-plugin.i18n.yaml b/.agents/notes/implemented/simplification/2026-08-09-remove-repository-plugin.i18n.yaml deleted file mode 100644 index 007295d3c8..0000000000 --- a/.agents/notes/implemented/simplification/2026-08-09-remove-repository-plugin.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/simplification/2026-08-09-remove-repository-plugin.md -2026-08-09-remove-repository-plugin.md: f9d1c00849219d30b4c0441246b2810ebca9fd6a -2026-08-09-remove-repository-plugin.zh.md: 7f89f7f20f0f08533fef1d0de99e0ae6c827c93a diff --git a/.agents/notes/implemented/simplification/2026-08-10-default-presets-single-editor.i18n.yaml b/.agents/notes/implemented/simplification/2026-08-10-default-presets-single-editor.i18n.yaml deleted file mode 100644 index 4e47e34616..0000000000 --- a/.agents/notes/implemented/simplification/2026-08-10-default-presets-single-editor.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/simplification/2026-08-10-default-presets-single-editor.md -2026-08-10-default-presets-single-editor.md: 3d1c1dea4f9fcc676a8146033f7785dfd3aaf481 -2026-08-10-default-presets-single-editor.zh.md: 5212156a6a3c11e16165eca04bd141337380e172 diff --git a/.agents/notes/implemented/simplification/2026-08-10-source-run-without-managed-installer.i18n.yaml b/.agents/notes/implemented/simplification/2026-08-10-source-run-without-managed-installer.i18n.yaml deleted file mode 100644 index 96867b690c..0000000000 --- a/.agents/notes/implemented/simplification/2026-08-10-source-run-without-managed-installer.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/simplification/2026-08-10-source-run-without-managed-installer.md -2026-08-10-source-run-without-managed-installer.md: b9e86c3c325b41126576cbe5d5d1d53b71e80051 -2026-08-10-source-run-without-managed-installer.zh.md: 48c1fdb7cced6383e8870ab099dec5d181d5ccbf diff --git a/.agents/notes/implemented/simplification/2026-08-10-web-remove-steering-interjection-caption.i18n.yaml b/.agents/notes/implemented/simplification/2026-08-10-web-remove-steering-interjection-caption.i18n.yaml deleted file mode 100644 index b940675bf2..0000000000 --- a/.agents/notes/implemented/simplification/2026-08-10-web-remove-steering-interjection-caption.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/simplification/2026-08-10-web-remove-steering-interjection-caption.md -2026-08-10-web-remove-steering-interjection-caption.md: 2c396f54945fb1c3626f2e5fcc849e81893c23f0 -2026-08-10-web-remove-steering-interjection-caption.zh.md: 10a3f66d161f56111b0d1de207c05e6469a3e5bc diff --git a/.agents/notes/implemented/simplification/2026-08-11-remove-sdk-project-toolchain.i18n.yaml b/.agents/notes/implemented/simplification/2026-08-11-remove-sdk-project-toolchain.i18n.yaml deleted file mode 100644 index 3186207c91..0000000000 --- a/.agents/notes/implemented/simplification/2026-08-11-remove-sdk-project-toolchain.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/simplification/2026-08-11-remove-sdk-project-toolchain.md -2026-08-11-remove-sdk-project-toolchain.md: fc896c2823a1ccddf06c8dce788c4ffe72a9367a -2026-08-11-remove-sdk-project-toolchain.zh.md: 9d33a89e28ec08c9fb516b902f58b440ea673c16 diff --git a/.agents/notes/implemented/simplification/2026-08-12-separate-source-launch-from-build.i18n.yaml b/.agents/notes/implemented/simplification/2026-08-12-separate-source-launch-from-build.i18n.yaml deleted file mode 100644 index 595ea240e7..0000000000 --- a/.agents/notes/implemented/simplification/2026-08-12-separate-source-launch-from-build.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/simplification/2026-08-12-separate-source-launch-from-build.md -2026-08-12-separate-source-launch-from-build.md: 639e9de0ce13a571e7f83929d9c76eac2664daab -2026-08-12-separate-source-launch-from-build.zh.md: c8fd6626053358e1220fffb7ee0ed808d783b34d diff --git a/.agents/notes/implemented/simplification/2026-08-12-trim-agent-teams-read-and-lifecycle-surface.i18n.yaml b/.agents/notes/implemented/simplification/2026-08-12-trim-agent-teams-read-and-lifecycle-surface.i18n.yaml deleted file mode 100644 index b763e848d1..0000000000 --- a/.agents/notes/implemented/simplification/2026-08-12-trim-agent-teams-read-and-lifecycle-surface.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/simplification/2026-08-12-trim-agent-teams-read-and-lifecycle-surface.md -2026-08-12-trim-agent-teams-read-and-lifecycle-surface.md: 69a54dae6e43ac4a93ebcf825bdeb1bad29a23fe -2026-08-12-trim-agent-teams-read-and-lifecycle-surface.zh.md: f43dc680069855651a9087776987e8998790d829 diff --git a/.agents/notes/implemented/simplification/2026-08-21-product-subagent-minimal-diagnostics.i18n.yaml b/.agents/notes/implemented/simplification/2026-08-21-product-subagent-minimal-diagnostics.i18n.yaml deleted file mode 100644 index 9aaf9322f1..0000000000 --- a/.agents/notes/implemented/simplification/2026-08-21-product-subagent-minimal-diagnostics.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/simplification/2026-08-21-product-subagent-minimal-diagnostics.md -2026-08-21-product-subagent-minimal-diagnostics.md: b99ed487911a7ac9bf7c0751ea02290ff92cad6a -2026-08-21-product-subagent-minimal-diagnostics.zh.md: 46f948334df0268a095f8cb34ab1a7707eee811b diff --git a/.agents/notes/implemented/simplification/2026-08-26-remove-agent-spine-demo.i18n.yaml b/.agents/notes/implemented/simplification/2026-08-26-remove-agent-spine-demo.i18n.yaml deleted file mode 100644 index 3c0e7990c9..0000000000 --- a/.agents/notes/implemented/simplification/2026-08-26-remove-agent-spine-demo.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/simplification/2026-08-26-remove-agent-spine-demo.md -2026-08-26-remove-agent-spine-demo.md: 47c9341ed9a52c558e5e33e897314a3d94b92abf -2026-08-26-remove-agent-spine-demo.zh.md: 5b48f71d3b35f3c048aef20b2971fb9c66aa6c3a diff --git a/.agents/notes/implemented/simplification/2026-08-27-persistence-export-and-pre-release-trims.i18n.yaml b/.agents/notes/implemented/simplification/2026-08-27-persistence-export-and-pre-release-trims.i18n.yaml deleted file mode 100644 index fb810485c7..0000000000 --- a/.agents/notes/implemented/simplification/2026-08-27-persistence-export-and-pre-release-trims.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/simplification/2026-08-27-persistence-export-and-pre-release-trims.md -2026-08-27-persistence-export-and-pre-release-trims.md: 90b050edeed36ec1c3d2becdcb44cecaea01b308 -2026-08-27-persistence-export-and-pre-release-trims.zh.md: aa05be1ee092d75439e839b51e61eb2a7927d3ee diff --git a/.agents/notes/implemented/simplification/2026-08-28-remove-hero-input-glow.i18n.yaml b/.agents/notes/implemented/simplification/2026-08-28-remove-hero-input-glow.i18n.yaml deleted file mode 100644 index 484573a799..0000000000 --- a/.agents/notes/implemented/simplification/2026-08-28-remove-hero-input-glow.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/simplification/2026-08-28-remove-hero-input-glow.md -2026-08-28-remove-hero-input-glow.md: 929fce91d38ed5436421e91666e91328389a1302 -2026-08-28-remove-hero-input-glow.zh.md: e8a32c8dc60feae344be587e4bcc4b8a4f8a2d87 diff --git a/.agents/notes/implemented/simplification/2026-08-28-windows-only-absent-probe-repair.i18n.yaml b/.agents/notes/implemented/simplification/2026-08-28-windows-only-absent-probe-repair.i18n.yaml deleted file mode 100644 index e4d02c9697..0000000000 --- a/.agents/notes/implemented/simplification/2026-08-28-windows-only-absent-probe-repair.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/simplification/2026-08-28-windows-only-absent-probe-repair.md -2026-08-28-windows-only-absent-probe-repair.md: 55fa7bee8d6e16eb96223fa9745f95891cfdf89c -2026-08-28-windows-only-absent-probe-repair.zh.md: 5a459cab1f3d914934945465be1d1f08e0c4530b diff --git a/.agents/notes/implemented/simplification/2026-08-30-team-send-message-steer.i18n.yaml b/.agents/notes/implemented/simplification/2026-08-30-team-send-message-steer.i18n.yaml deleted file mode 100644 index 66a26247ec..0000000000 --- a/.agents/notes/implemented/simplification/2026-08-30-team-send-message-steer.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/simplification/2026-08-30-team-send-message-steer.md -2026-08-30-team-send-message-steer.md: 9eb38ec96f51d074510bd918fc46bac9a61027d0 -2026-08-30-team-send-message-steer.zh.md: 44ed792a1c1a4e149c3309a538dfbe6418612b16 diff --git a/.agents/notes/implemented/simplification/2026-09-01-css-produced-file-layout.i18n.yaml b/.agents/notes/implemented/simplification/2026-09-01-css-produced-file-layout.i18n.yaml deleted file mode 100644 index b26eb6c30b..0000000000 --- a/.agents/notes/implemented/simplification/2026-09-01-css-produced-file-layout.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/simplification/2026-09-01-css-produced-file-layout.md -2026-09-01-css-produced-file-layout.md: fce7d70b21b05db8970fb249927c36f87abc6b23 -2026-09-01-css-produced-file-layout.zh.md: bc8ad941dbe33af3acc629f0da50e79c4a0954da diff --git a/.agents/notes/implemented/simplification/2026-09-01-ptc-omits-workflow-tool.i18n.yaml b/.agents/notes/implemented/simplification/2026-09-01-ptc-omits-workflow-tool.i18n.yaml deleted file mode 100644 index a7fa5b5186..0000000000 --- a/.agents/notes/implemented/simplification/2026-09-01-ptc-omits-workflow-tool.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/simplification/2026-09-01-ptc-omits-workflow-tool.md -2026-09-01-ptc-omits-workflow-tool.md: 7453e06187690fe7fa1eec157ffad8b474c95cf8 -2026-09-01-ptc-omits-workflow-tool.zh.md: 71f64c11048d85c562432cdd51b3b717966fea29 diff --git a/.agents/notes/implemented/testing/2026-06-11-property-based-testing.i18n.yaml b/.agents/notes/implemented/testing/2026-06-11-property-based-testing.i18n.yaml deleted file mode 100644 index 1b2d724334..0000000000 --- a/.agents/notes/implemented/testing/2026-06-11-property-based-testing.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/testing/2026-06-11-property-based-testing.md -2026-06-11-property-based-testing.md: 7ab6f2daeb65e603d055ad6127a91f6b76ebc26e -2026-06-11-property-based-testing.zh.md: 36855c74f6de082b5307d4c1ed6e674410910003 diff --git a/.agents/notes/implemented/testing/2026-06-19-acp-snapshot-tests.i18n.yaml b/.agents/notes/implemented/testing/2026-06-19-acp-snapshot-tests.i18n.yaml index a1f680adf8..30419f63e7 100644 --- a/.agents/notes/implemented/testing/2026-06-19-acp-snapshot-tests.i18n.yaml +++ b/.agents/notes/implemented/testing/2026-06-19-acp-snapshot-tests.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/implemented/testing/2026-06-19-acp-snapshot-tests.md -2026-06-19-acp-snapshot-tests.md: 49d6012a3bbe3a42daadd07030bca354f7897149 -2026-06-19-acp-snapshot-tests.zh.md: d4bf65ea425e5962edbf97acf70731d470be9800 +2026-06-19-acp-snapshot-tests.md: da02393fef1641dc3b20fd3666c1d24ea91aa7f3 +2026-06-19-acp-snapshot-tests.zh.md: 76f721d78850aff837f9851ffa11ae21cabf4488 diff --git a/.agents/notes/implemented/testing/2026-06-19-acp-snapshot-tests.md b/.agents/notes/implemented/testing/2026-06-19-acp-snapshot-tests.md index 49d6012a3b..da02393fef 100644 --- a/.agents/notes/implemented/testing/2026-06-19-acp-snapshot-tests.md +++ b/.agents/notes/implemented/testing/2026-06-19-acp-snapshot-tests.md @@ -12,7 +12,7 @@ The blocker for a full-transcript test is the model: the agent's output is drive ## Decision -A recorded-session snapshot starts a shipped profile through `dsh`, drives its public interface, and compares normalized output with committed expected outputs. ACP-owned scenarios additionally drive the stdio protocol and compare its transcript. A session log recorded once from the real API supplies all later model streams. The fixture is a [projection of the product's persisted JSONL](2026-08-18-session-snapshot-envelope-projection.md): its header and payloads remain, while body sequence/time envelopes are omitted. +A recorded-session snapshot starts a shipped profile through `dsh`, drives its public interface, and compares normalized output with committed expected outputs. ACP-owned scenarios additionally drive the stdio protocol and compare its transcript. A session log recorded once from the real API supplies all later model streams. The fixture is a [projection of the product's persisted JSONL](../../archived/testing/2026-08-18-session-snapshot-envelope-projection.md): its header and payloads remain, while body sequence/time envelopes are omitted. The [session-log snapshot corpus decision](2026-08-24-session-log-snapshot-corpus.md) supersedes this note's ACP-specific placement and controller ownership. This note remains the rationale authority for session-log fixtures, replay derivation, exceptional overrides, normalization, and ACP transcript comparison. diff --git a/.agents/notes/implemented/testing/2026-06-19-acp-snapshot-tests.zh.md b/.agents/notes/implemented/testing/2026-06-19-acp-snapshot-tests.zh.md index d4bf65ea42..76f721d788 100644 --- a/.agents/notes/implemented/testing/2026-06-19-acp-snapshot-tests.zh.md +++ b/.agents/notes/implemented/testing/2026-06-19-acp-snapshot-tests.zh.md @@ -12,7 +12,7 @@ Status: implemented ## 决策 -录制会话快照通过 `dsh` 启动随附 profile,驱动其公开接口,并将规范化输出与已提交的预期输出比较。归 ACP 所有的场景还会驱动 stdio 协议并比较其 transcript。从真实 API 一次记录的会话日志为后续所有模型流提供数据。fixture 是[产品持久化 JSONL 的投影](2026-08-18-session-snapshot-envelope-projection.zh.md):保留 header 与 payload,省略正文序号/时间 envelope。 +录制会话快照通过 `dsh` 启动随附 profile,驱动其公开接口,并将规范化输出与已提交的预期输出比较。归 ACP 所有的场景还会驱动 stdio 协议并比较其 transcript。从真实 API 一次记录的会话日志为后续所有模型流提供数据。fixture 是[产品持久化 JSONL 的投影](../../archived/testing/2026-08-18-session-snapshot-envelope-projection.md):保留 header 与 payload,省略正文序号/时间 envelope。 [Session-log 快照语料决策](2026-08-24-session-log-snapshot-corpus.zh.md)取代本 Note 中 ACP 专属的放置位置与控制器所有权;本 Note 继续负责会话日志 fixture、回放推导、例外 override、规范化和 ACP transcript 比较的理由。 diff --git a/.agents/notes/implemented/testing/2026-06-22-fork-child-replay-seed-boundary.i18n.yaml b/.agents/notes/implemented/testing/2026-06-22-fork-child-replay-seed-boundary.i18n.yaml deleted file mode 100644 index 6476b6a0fa..0000000000 --- a/.agents/notes/implemented/testing/2026-06-22-fork-child-replay-seed-boundary.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/testing/2026-06-22-fork-child-replay-seed-boundary.md -2026-06-22-fork-child-replay-seed-boundary.md: 3c1148f4c73e9d1f6a518dadb6f20509a6d97bff -2026-06-22-fork-child-replay-seed-boundary.zh.md: f7646132a29d14dc858ef6d693a681b5d799e870 diff --git a/.agents/notes/implemented/testing/2026-06-22-subagent-snapshot-replay.i18n.yaml b/.agents/notes/implemented/testing/2026-06-22-subagent-snapshot-replay.i18n.yaml deleted file mode 100644 index 93eca17657..0000000000 --- a/.agents/notes/implemented/testing/2026-06-22-subagent-snapshot-replay.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/testing/2026-06-22-subagent-snapshot-replay.md -2026-06-22-subagent-snapshot-replay.md: 0d5d1fd2c920f8932bdf2a96e3294b90d6160f80 -2026-06-22-subagent-snapshot-replay.zh.md: 130ea1fac90216058026143909e970bf8d5ea2d2 diff --git a/.agents/notes/implemented/testing/2026-07-22-cross-platform-test-fixtures.i18n.yaml b/.agents/notes/implemented/testing/2026-07-22-cross-platform-test-fixtures.i18n.yaml deleted file mode 100644 index dcc666c622..0000000000 --- a/.agents/notes/implemented/testing/2026-07-22-cross-platform-test-fixtures.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/testing/2026-07-22-cross-platform-test-fixtures.md -2026-07-22-cross-platform-test-fixtures.md: 9114481543d6cae1661cbed70868eddb2faa09fc -2026-07-22-cross-platform-test-fixtures.zh.md: 710ec5887f02b5c3c71d69f16ab726323501ac92 diff --git a/.agents/notes/implemented/testing/2026-07-24-web-gui-browser-e2e-lane.i18n.yaml b/.agents/notes/implemented/testing/2026-07-24-web-gui-browser-e2e-lane.i18n.yaml index 8991fe86e8..7bbae78b83 100644 --- a/.agents/notes/implemented/testing/2026-07-24-web-gui-browser-e2e-lane.i18n.yaml +++ b/.agents/notes/implemented/testing/2026-07-24-web-gui-browser-e2e-lane.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/implemented/testing/2026-07-24-web-gui-browser-e2e-lane.md -2026-07-24-web-gui-browser-e2e-lane.md: 2047351b5642664a800fb048acee56dc80dcc77d -2026-07-24-web-gui-browser-e2e-lane.zh.md: dad0f69d64dbb802d3a5db097720bb97c30ea8cf +2026-07-24-web-gui-browser-e2e-lane.md: a996b380a55fc33f44cfdc2e31e179bc11f40be3 +2026-07-24-web-gui-browser-e2e-lane.zh.md: 1a413b6b8277ac696c6b728de740494bbf056695 diff --git a/.agents/notes/implemented/testing/2026-07-24-web-gui-browser-e2e-lane.md b/.agents/notes/implemented/testing/2026-07-24-web-gui-browser-e2e-lane.md index 2047351b56..a996b380a5 100644 --- a/.agents/notes/implemented/testing/2026-07-24-web-gui-browser-e2e-lane.md +++ b/.agents/notes/implemented/testing/2026-07-24-web-gui-browser-e2e-lane.md @@ -30,7 +30,7 @@ No single-shot transient-DOM assertions: every hop from replay yield to React co Pagination drivers wait for the interactive load row to leave its pending state and record the pre-request row count before scrolling. An immediately committed resident page therefore remains observable instead of becoming the baseline for a request that the scroll gesture does not repeat. -Every scenario fails on any pageerror and on the client's connection-loss/gap-repair console warnings: the reconnect machine plus history resync would otherwise self-heal a dead SSE path and the suite would certify a broken wire. Scaffold `close()` calls the `ReplayHandle.assertConsumed()` teardown check (every recorded script bound, every cursor drained), converting silent underruns and shifted bindings into crisp diagnostics. No vitest retry on the lane; one chromium per file, fresh context per scenario, one host per scenario; viewport pinned; interaction selectors anchor on roles, `data-*` attributes, and visible text, while the frame and conversation-region captures use the existing CSS-module local-name anchors. Standard scenarios open an `en-US` browser so localized role locators and goldens use one explicit language; scenarios asserting Chinese copy open a `zh-CN` browser instead, because the client derives its provisional locale from `navigator` when the Host settings document has no explicit preference ([browser-derived initial locale](../feature/2026-07-31-browser-derived-initial-locale.md)). `settings-chrome.e2e.ts` additionally covers both switch directions, a fresh English-browser default, and preference persistence across distinct ports sharing one DSH home. +Every scenario fails on any pageerror and on the client's connection-loss/gap-repair console warnings: the reconnect machine plus history resync would otherwise self-heal a dead SSE path and the suite would certify a broken wire. Scaffold `close()` calls the `ReplayHandle.assertConsumed()` teardown check (every recorded script bound, every cursor drained), converting silent underruns and shifted bindings into crisp diagnostics. No vitest retry on the lane; one chromium per file, fresh context per scenario, one host per scenario; viewport pinned; interaction selectors anchor on roles, `data-*` attributes, and visible text, while the frame and conversation-region captures use the existing CSS-module local-name anchors. Standard scenarios open an `en-US` browser so localized role locators and goldens use one explicit language; scenarios asserting Chinese copy open a `zh-CN` browser instead, because the client derives its provisional locale from `navigator` when the Host settings document has no explicit preference ([browser-derived initial locale](../../archived/feature/2026-07-31-browser-derived-initial-locale.md)). `settings-chrome.e2e.ts` additionally covers both switch directions, a fresh English-browser default, and preference persistence across distinct ports sharing one DSH home. ### Expected outputs @@ -44,11 +44,11 @@ The typecheck plane split is structural: the host scaffold, its support module, ### Coverage contract -The lane covers three behavior families. Live-turn scenarios pin ordinary tool execution, cancellation, non-retryable failure, transient retry, resident questions, and mid-turn steering; synchronization uses durable events, `whenIdle()`, or an explicit replay marker rather than delays. Cold-history scenarios seed through the real persistence API and cover history rendering, sidebar search, trajectory and waterfall views, and tool details without model calls. Browser-lifecycle scenarios cover first-send workspace materialization, reload recovery, layout reset, theme and locale preferences, and workspace create/rename/view operations. Each family asserts the browser surface and the authoritative host state; a stray model call or under-consumed fixture fails teardown. The required lane additionally carries an 88-turn synthetic Chat scroll contract mixing wrapped Markdown, fenced code, and paired bash calls/results. Real wheel, composer, tool, tab, session, and viewport interactions assert a named settled row's top relative to the transcript scrollport and distance from the true bottom across concurrent history prepend plus paced streaming, pinned/away streaming, tool-disclosure offscreen cycles, expanded-history view/session remount, width reflow, immediate pinned remount, composer resize, and textarea wheel chaining; real keyboard paging and a touch-style fling emulation additionally pin wheel-free bottom-follow ownership ([reader-scroll-attribution note](../bug-fix/2026-08-06-reader-scroll-attribution-observed-top-ledger.md)); it deliberately pins neither DOM cardinality nor absolute `scrollTop`, so the same contract can qualify a virtualized implementation. A separate interaction contract over the same fixture pins heterogeneous-row order, independent adjacent tool disclosure, exact user-message clipboard content, a turn-bounded message fork, source/child isolation, and a real follow-up turn in the child; wheel input only navigates to semantic targets and carries no geometry expectation. A short live-history contract starts from a blank workspace and drives consecutive composer turns, including real bash call/result rounds and a paced long final response, pinning one session identity, exact per-turn event ownership, browser echo uniqueness, and composer recovery without timing thresholds. +The lane covers three behavior families. Live-turn scenarios pin ordinary tool execution, cancellation, non-retryable failure, transient retry, resident questions, and mid-turn steering; synchronization uses durable events, `whenIdle()`, or an explicit replay marker rather than delays. Cold-history scenarios seed through the real persistence API and cover history rendering, sidebar search, trajectory and waterfall views, and tool details without model calls. Browser-lifecycle scenarios cover first-send workspace materialization, reload recovery, layout reset, theme and locale preferences, and workspace create/rename/view operations. Each family asserts the browser surface and the authoritative host state; a stray model call or under-consumed fixture fails teardown. The required lane additionally carries an 88-turn synthetic Chat scroll contract mixing wrapped Markdown, fenced code, and paired bash calls/results. Real wheel, composer, tool, tab, session, and viewport interactions assert a named settled row's top relative to the transcript scrollport and distance from the true bottom across concurrent history prepend plus paced streaming, pinned/away streaming, tool-disclosure offscreen cycles, expanded-history view/session remount, width reflow, immediate pinned remount, composer resize, and textarea wheel chaining; real keyboard paging and a touch-style fling emulation additionally pin wheel-free bottom-follow ownership ([reader-scroll-attribution note](../../archived/bug-fix/2026-08-06-reader-scroll-attribution-observed-top-ledger.md)); it deliberately pins neither DOM cardinality nor absolute `scrollTop`, so the same contract can qualify a virtualized implementation. A separate interaction contract over the same fixture pins heterogeneous-row order, independent adjacent tool disclosure, exact user-message clipboard content, a turn-bounded message fork, source/child isolation, and a real follow-up turn in the child; wheel input only navigates to semantic targets and carries no geometry expectation. A short live-history contract starts from a blank workspace and drives consecutive composer turns, including real bash call/result rounds and a paced long final response, pinning one session identity, exact per-turn event ownership, browser echo uniqueness, and composer recovery without timing thresholds. ### CI stance -The lane is a required compare-only gate for Linux pull requests under the [browser snapshot CI decision](2026-07-30-web-browser-snapshot-ci-gate.md). The `node 24 / snapshots and artifacts` consumer job owns the [single Linux build](../process/2026-07-30-independent-ci-consumer-build.md), installs the lockfile-selected Chromium, restores its OS-and-lockfile-keyed cache, and runs the lane with `DSH_SNAPSHOT=replay`. This is an intentional plane split: the host and specs use the [tsx source-launch contract](../architecture/2026-07-29-dsh-source-launch-tsx-esm.md), while the browser consumes `apps/web/dist` and package `lib/client.js` artifacts, so the gate depends on `built-package-invariants` for those client artifacts. The self-hosted default-branch Linux serial standby runs the same gate; there is no hosted Linux serial producer of the browser cache consumed by pull requests, and the persistent self-hosted pool needs no hosted cache. CI never records or refreshes goldens. Scenarios remain POSIX-oriented and stay outside the Windows and macOS matrices. +The lane is a required compare-only gate for Linux pull requests under the [browser snapshot CI decision](2026-07-30-web-browser-snapshot-ci-gate.md). The `node 24 / snapshots and artifacts` consumer job owns the [single Linux build](../../archived/process/2026-07-30-independent-ci-consumer-build.md), installs the lockfile-selected Chromium, restores its OS-and-lockfile-keyed cache, and runs the lane with `DSH_SNAPSHOT=replay`. This is an intentional plane split: the host and specs use the [tsx source-launch contract](../architecture/2026-07-29-dsh-source-launch-tsx-esm.md), while the browser consumes `apps/web/dist` and package `lib/client.js` artifacts, so the gate depends on `built-package-invariants` for those client artifacts. The self-hosted default-branch Linux serial standby runs the same gate; there is no hosted Linux serial producer of the browser cache consumed by pull requests, and the persistent self-hosted pool needs no hosted cache. CI never records or refreshes goldens. Scenarios remain POSIX-oriented and stay outside the Windows and macOS matrices. High-cardinality performance diagnostics use the separate opt-in `apps/web/tests/**/*.perf.ts` inventory selected only by `vitest.web.perf.config.ts`. The isolated `complex-history.perf.ts` cases reuse the real scaffold: the workspace case seeds 1,000 compact sessions plus one 500-turn history containing 500 tool calls, exhausts and remounts that history in Chat, and reports Chromium main-thread, DOM, listener, heap, paging, search, and Trajectory measurements. Two continuation cases seed the same long history but compare the default 24-turn Chat window with all 500 turns expanded before each continues eight identical turns through the real composer, agent loop, SSE wire, tools, and persistence; two turns execute a real `bash` call and assert its durable result, while the final turn fills an 8,232-character mixed-language prompt and replays 120 paced text deltas. A separate soak case starts from a blank session, drives 100 consecutive real composer turns with a `bash` call and result every tenth turn, forces GC every ten turns, and reports ten-turn latency windows plus retained browser state. It then submits a 101st text-only turn with a trusted browser click and measures browser-clock send-to-transcript-DOM and send-to-post-paint latency, excluding the composer's draft mirrors, separately from full-turn completion. Per-turn diagnostics cover composer fill, click-to-user-echo, click-to-first-chunk, completion, browser mutations, persisted chunks, and tool events; the synthetic replay model has enough context capacity to keep fixture cardinality stable instead of consuming scripted calls through compaction. Structural assertions pin the intended load, stream, and tool shapes, but timing remains threshold-free because machine speed is not a correctness contract. The required `vitest.web.config.ts` inventory remains limited to `*.e2e.ts` and `*.snapshot.ts`, so neither `test:web:built` nor its CI gate collects performance cases. diff --git a/.agents/notes/implemented/testing/2026-07-24-web-gui-browser-e2e-lane.zh.md b/.agents/notes/implemented/testing/2026-07-24-web-gui-browser-e2e-lane.zh.md index dad0f69d64..1a413b6b82 100644 --- a/.agents/notes/implemented/testing/2026-07-24-web-gui-browser-e2e-lane.zh.md +++ b/.agents/notes/implemented/testing/2026-07-24-web-gui-browser-e2e-lane.zh.md @@ -30,7 +30,7 @@ Web GUI 以一条真实组装链交付——chromium 页面 → client 插件 bu 分页驱动会等待交互式加载行退出 pending 状态,并在滚动前记录请求前的行数。因此,即时提交的常驻页仍然可观测,不会变成一次滚动手势不会重复触发的请求基线。 -每个场景都会因任何 pageerror 或客户端的连接丢失/间隙修复控制台警告而失败:否则重连机制加历史重同步会把一条死掉的 SSE 通路自愈掉,套件反而认证了坏 wire。Scaffold 的 `close()` 调用 `ReplayHandle.assertConsumed()` 收尾检查(每个已录脚本都被绑定、每个游标都耗尽),把静默的少放与错绑变成清晰诊断。车道不设 vitest 重试;每文件一个 chromium、每场景一个新 context、每场景一个 host;视口固定;交互选择器锚定 role、`data-*` 属性和可见文本,而 frame 与会话区采集则使用既有的 CSS 模块局部类名锚点。常规场景开启 `en-US` 浏览器,使本地化的 role 定位器和预期输出统一采用明确指定的语言;断言中文文案的场景则开启 `zh-CN` 浏览器,因为 Host settings 文档没有显式偏好时,客户端的暂定 locale 由 `navigator` 推导([由浏览器推导初始 locale](../feature/2026-07-31-browser-derived-initial-locale.zh.md))。`settings-chrome.e2e.ts` 还额外覆盖双向切换、全新英文浏览器默认态,以及共享同一 DSH home 的不同端口之间的偏好持久化。 +每个场景都会因任何 pageerror 或客户端的连接丢失/间隙修复控制台警告而失败:否则重连机制加历史重同步会把一条死掉的 SSE 通路自愈掉,套件反而认证了坏 wire。Scaffold 的 `close()` 调用 `ReplayHandle.assertConsumed()` 收尾检查(每个已录脚本都被绑定、每个游标都耗尽),把静默的少放与错绑变成清晰诊断。车道不设 vitest 重试;每文件一个 chromium、每场景一个新 context、每场景一个 host;视口固定;交互选择器锚定 role、`data-*` 属性和可见文本,而 frame 与会话区采集则使用既有的 CSS 模块局部类名锚点。常规场景开启 `en-US` 浏览器,使本地化的 role 定位器和预期输出统一采用明确指定的语言;断言中文文案的场景则开启 `zh-CN` 浏览器,因为 Host settings 文档没有显式偏好时,客户端的暂定 locale 由 `navigator` 推导([由浏览器推导初始 locale](../../archived/feature/2026-07-31-browser-derived-initial-locale.md))。`settings-chrome.e2e.ts` 还额外覆盖双向切换、全新英文浏览器默认态,以及共享同一 DSH home 的不同端口之间的偏好持久化。 ### 预期输出 @@ -44,11 +44,11 @@ Web GUI 以一条真实组装链交付——chromium 页面 → client 插件 bu ### 覆盖约定 -该车道覆盖三类行为。实时轮次场景钉住普通工具执行、取消、不可重试失败、瞬态重试、常驻提问与轮次中途 steering(中途引导);同步依赖持久事件、`whenIdle()` 或显式回放标记,而不使用延时。冷历史场景通过真实持久化 API 播种,在不调用模型的情况下覆盖历史渲染、侧栏搜索、Trajectory 与 waterfall(瀑布式事件)视图及工具详情。浏览器生命周期场景覆盖首次发送时物化工作区、重新加载恢复、布局重置、主题与语言偏好,以及工作区的创建、重命名和视图操作。每类场景都断言浏览器表面和权威的 host 状态;意外的模型调用或未耗尽的 fixture 会使拆卸失败。必需车道还包含一份合成的 88 轮 Chat 滚动约定,其中混合了换行 Markdown、围栏代码以及成对的 bash 调用/结果。真实 wheel、输入框、工具、tab、会话与 viewport 交互会在并发历史前插加带节奏流式输出、贴底/离底流式输出、工具 disclosure 离屏循环、扩展历史后的视图/会话重新挂载、宽度重排、贴底后立即重新挂载、输入框尺寸变化以及 textarea wheel 链场景中,断言一个已稳定的具名行相对 transcript scrollport 的顶部位置和到真实底部的距离;真实键盘翻页与触摸式惯性滑动模拟额外钉住不依赖 wheel 的贴底跟随所有权([读者滚动归因笔记](../bug-fix/2026-08-06-reader-scroll-attribution-observed-top-ledger.zh.md));它刻意不钉 DOM 基数或绝对 `scrollTop`,因此同一约定可以验收虚拟化实现。另一份基于同一 fixture 的交互约定钉住异构行顺序、相邻工具 disclosure 的独立状态、用户消息剪贴板内容的精确值、以轮次为边界的消息 fork、源会话/子会话隔离,以及子会话中的一次真实追问轮次;wheel 输入只用于导航到语义目标,不承载几何预期。一份简短的实时历史约定从空白工作区开始,连续驱动输入框轮次,其中包括真实的 bash 调用/结果轮次和一段带节奏的长篇最终响应;它钉住单一会话身份、每轮事件的精确归属、浏览器回显唯一性与输入框恢复,不设置时间阈值。 +该车道覆盖三类行为。实时轮次场景钉住普通工具执行、取消、不可重试失败、瞬态重试、常驻提问与轮次中途 steering(中途引导);同步依赖持久事件、`whenIdle()` 或显式回放标记,而不使用延时。冷历史场景通过真实持久化 API 播种,在不调用模型的情况下覆盖历史渲染、侧栏搜索、Trajectory 与 waterfall(瀑布式事件)视图及工具详情。浏览器生命周期场景覆盖首次发送时物化工作区、重新加载恢复、布局重置、主题与语言偏好,以及工作区的创建、重命名和视图操作。每类场景都断言浏览器表面和权威的 host 状态;意外的模型调用或未耗尽的 fixture 会使拆卸失败。必需车道还包含一份合成的 88 轮 Chat 滚动约定,其中混合了换行 Markdown、围栏代码以及成对的 bash 调用/结果。真实 wheel、输入框、工具、tab、会话与 viewport 交互会在并发历史前插加带节奏流式输出、贴底/离底流式输出、工具 disclosure 离屏循环、扩展历史后的视图/会话重新挂载、宽度重排、贴底后立即重新挂载、输入框尺寸变化以及 textarea wheel 链场景中,断言一个已稳定的具名行相对 transcript scrollport 的顶部位置和到真实底部的距离;真实键盘翻页与触摸式惯性滑动模拟额外钉住不依赖 wheel 的贴底跟随所有权([读者滚动归因笔记](../../archived/bug-fix/2026-08-06-reader-scroll-attribution-observed-top-ledger.md));它刻意不钉 DOM 基数或绝对 `scrollTop`,因此同一约定可以验收虚拟化实现。另一份基于同一 fixture 的交互约定钉住异构行顺序、相邻工具 disclosure 的独立状态、用户消息剪贴板内容的精确值、以轮次为边界的消息 fork、源会话/子会话隔离,以及子会话中的一次真实追问轮次;wheel 输入只用于导航到语义目标,不承载几何预期。一份简短的实时历史约定从空白工作区开始,连续驱动输入框轮次,其中包括真实的 bash 调用/结果轮次和一段带节奏的长篇最终响应;它钉住单一会话身份、每轮事件的精确归属、浏览器回显唯一性与输入框恢复,不设置时间阈值。 ### CI 立场 -根据[浏览器快照 CI 决策](2026-07-30-web-browser-snapshot-ci-gate.zh.md),该车道是 Linux 拉取请求必需的只比较门禁。`node 24 / snapshots and artifacts` 消费方任务在[消费方独立构建](../process/2026-07-30-independent-ci-consumer-build.zh.md)中负责唯一一次 Linux 构建,安装锁文件选定的 Chromium,恢复以操作系统和锁文件为键的缓存,并用 `DSH_SNAPSHOT=replay` 运行该车道。这是有意的平面切分:host 与 spec 使用 [tsx 源码启动约定](../architecture/2026-07-29-dsh-source-launch-tsx-esm.zh.md),浏览器则消费 `apps/web/dist` 和包的 `lib/client.js` 产物,因此门禁依赖 `built-package-invariants` 提供这些客户端产物。自托管的默认分支 Linux 串行热备运行同一门禁;不存在托管 Linux 串行生产者生成供 PR 消费的浏览器缓存,持久化自托管池则不需要托管侧缓存。CI 从不录制或刷新预期输出。场景仍面向 POSIX,并继续置于 Windows 和 macOS 矩阵之外。 +根据[浏览器快照 CI 决策](2026-07-30-web-browser-snapshot-ci-gate.zh.md),该车道是 Linux 拉取请求必需的只比较门禁。`node 24 / snapshots and artifacts` 消费方任务在[消费方独立构建](../../archived/process/2026-07-30-independent-ci-consumer-build.md)中负责唯一一次 Linux 构建,安装锁文件选定的 Chromium,恢复以操作系统和锁文件为键的缓存,并用 `DSH_SNAPSHOT=replay` 运行该车道。这是有意的平面切分:host 与 spec 使用 [tsx 源码启动约定](../architecture/2026-07-29-dsh-source-launch-tsx-esm.zh.md),浏览器则消费 `apps/web/dist` 和包的 `lib/client.js` 产物,因此门禁依赖 `built-package-invariants` 提供这些客户端产物。自托管的默认分支 Linux 串行热备运行同一门禁;不存在托管 Linux 串行生产者生成供 PR 消费的浏览器缓存,持久化自托管池则不需要托管侧缓存。CI 从不录制或刷新预期输出。场景仍面向 POSIX,并继续置于 Windows 和 macOS 矩阵之外。 高基数性能诊断使用单独按需启用的 `apps/web/tests/**/*.perf.ts` 清单,并且只由 `vitest.web.perf.config.ts` 选中。`complex-history.perf.ts` 的隔离用例复用真实 scaffold:工作区用例播种 1,000 个紧凑会话以及一份包含 500 次工具调用的 500 轮次历史,在 Chat 中穷尽并重新挂载该历史,并报告 Chromium 主线程、DOM、监听器、堆内存、分页、搜索和 Trajectory 测量结果。两个续聊用例播种同一份长历史,但比较默认的 24 轮次 Chat 窗口与展开全部 500 轮次的状态,然后各自通过真实输入框、agent loop、SSE wire、工具和持久化继续进行 8 个相同轮次;其中两轮执行真实 `bash` 调用并断言其持久化结果,最后一轮则填入一条包含 8,232 个字符的混合语言提示词,并回放 120 个带节奏的文本增量。一个单独的 soak 用例从空白会话开始,通过真实输入框连续驱动 100 轮,每第 10 轮执行一次 `bash` 调用并产生结果,每 10 轮强制执行一次 GC,并报告每 10 轮的延迟窗口及保留的浏览器状态。随后它通过受信任的浏览器点击提交第 101 个纯文本轮次,并使用浏览器时钟分别测量发送到 transcript DOM 和发送到绘制后的延迟,排除输入框的草稿镜像,并与完整轮次完成时间分开。逐轮诊断涵盖输入框填入、点击到用户消息回显、点击到首个分片、完成、浏览器变更、持久化分片和工具事件;合成回放模型拥有足够的上下文容量,可使 fixture 基数保持稳定,而不会因压缩(compaction)消耗脚本化调用。结构性断言钉住预期的负载、流和工具形状,但时间仍不设阈值,因为机器速度不属于正确性约定。必需的 `vitest.web.config.ts` 清单仍仅限 `*.e2e.ts` 和 `*.snapshot.ts`,因此 `test:web:built` 及其 CI 门禁都不会收集性能用例。 diff --git a/.agents/notes/implemented/testing/2026-07-25-scriptable-llm-wire-fault-server.i18n.yaml b/.agents/notes/implemented/testing/2026-07-25-scriptable-llm-wire-fault-server.i18n.yaml deleted file mode 100644 index 5f6b9c16d8..0000000000 --- a/.agents/notes/implemented/testing/2026-07-25-scriptable-llm-wire-fault-server.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/testing/2026-07-25-scriptable-llm-wire-fault-server.md -2026-07-25-scriptable-llm-wire-fault-server.md: b8e64d92db224c199d0f8c547f0caa588d0ca65e -2026-07-25-scriptable-llm-wire-fault-server.zh.md: 54604e2d8c019386d8f94d90d859bb08ce58b030 diff --git a/.agents/notes/implemented/testing/2026-07-30-vitest-jsdom-webstorage-ownership.i18n.yaml b/.agents/notes/implemented/testing/2026-07-30-vitest-jsdom-webstorage-ownership.i18n.yaml deleted file mode 100644 index 697b8abe36..0000000000 --- a/.agents/notes/implemented/testing/2026-07-30-vitest-jsdom-webstorage-ownership.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/testing/2026-07-30-vitest-jsdom-webstorage-ownership.md -2026-07-30-vitest-jsdom-webstorage-ownership.md: 3956a7566fa1c79a767636bce9a19f16588126e2 -2026-07-30-vitest-jsdom-webstorage-ownership.zh.md: bd01ffdc68a45802ae403bdf44533d39126b021a diff --git a/.agents/notes/implemented/testing/2026-07-30-web-browser-snapshot-ci-gate.i18n.yaml b/.agents/notes/implemented/testing/2026-07-30-web-browser-snapshot-ci-gate.i18n.yaml index 38d4fdee09..4b17e97ba6 100644 --- a/.agents/notes/implemented/testing/2026-07-30-web-browser-snapshot-ci-gate.i18n.yaml +++ b/.agents/notes/implemented/testing/2026-07-30-web-browser-snapshot-ci-gate.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/implemented/testing/2026-07-30-web-browser-snapshot-ci-gate.md -2026-07-30-web-browser-snapshot-ci-gate.md: 8366c989f729878f362cfc51f13566c4768ef131 -2026-07-30-web-browser-snapshot-ci-gate.zh.md: 928a07aa2735832425efa759cce867165d54dde9 +2026-07-30-web-browser-snapshot-ci-gate.md: 719ac059d1208601e3fdd7ef10ae48464bd92877 +2026-07-30-web-browser-snapshot-ci-gate.zh.md: 57e23491e2123f9e14f478b98331dac2726ef2a2 diff --git a/.agents/notes/implemented/testing/2026-07-30-web-browser-snapshot-ci-gate.md b/.agents/notes/implemented/testing/2026-07-30-web-browser-snapshot-ci-gate.md index 8366c989f7..719ac059d1 100644 --- a/.agents/notes/implemented/testing/2026-07-30-web-browser-snapshot-ci-gate.md +++ b/.agents/notes/implemented/testing/2026-07-30-web-browser-snapshot-ci-gate.md @@ -12,7 +12,7 @@ The [keyless web browser e2e lane](2026-07-24-web-gui-browser-e2e-lane.md) runs For Linux PRs, the `node 24 / snapshots and artifacts` job must run the full web browser replay/compare suite. When `DSH_WEB_SNAPSHOT_WORKERS` is configured, `scripts/run-gates.ts` registers `test:web:ci` as the `ci-consumers` gate and explicitly injects `DSH_SNAPSHOT=replay`; CI never runs in `record` or `refresh` mode, so when the committed goldens disagree with the currently assembled application, the tests fail directly instead of silently rewriting them on the runner and then passing. -The consumer job owns the [single Linux build](../process/2026-07-30-independent-ci-consumer-build.md), so `apps/web/dist` and the package `lib/` directories remain in its workspace for the browser suite. On hosted runners, CI installs Chromium and its system dependencies at the Playwright version in the lockfile. On the persistent failover VM, the image owns the Linux system packages and CI installs only Chromium, avoiding per-run `apt` mutation. Pull requests restore the operating-system-and-lockfile-keyed browser cache without paying compression and upload on the required path, with an operating-system prefix fallback across lockfile changes. No master job produces these hosted caches, so restores hit archived entries until they evict. The self-hosted standby runs the same comparison without hosted cache actions. +The consumer job owns the [single Linux build](../../archived/process/2026-07-30-independent-ci-consumer-build.md), so `apps/web/dist` and the package `lib/` directories remain in its workspace for the browser suite. On hosted runners, CI installs Chromium and its system dependencies at the Playwright version in the lockfile. On the persistent failover VM, the image owns the Linux system packages and CI installs only Chromium, avoiding per-run `apt` mutation. Pull requests restore the operating-system-and-lockfile-keyed browser cache without paying compression and upload on the required path, with an operating-system prefix fallback across lockfile changes. No master job produces these hosted caches, so restores hit archived entries until they evict. The self-hosted standby runs the same comparison without hosted cache actions. Local `pnpm run test:web` continues to build first and then run the full browser suite serially; `test:web:built` is the serial entry point for existing build artifacts. Developers explicitly run `DSH_SNAPSHOT=refresh pnpm run test:web` only after confirming that user-visible output changed intentionally, review every expected-output diff, and then verify again in replay mode that no files are written. diff --git a/.agents/notes/implemented/testing/2026-07-30-web-browser-snapshot-ci-gate.zh.md b/.agents/notes/implemented/testing/2026-07-30-web-browser-snapshot-ci-gate.zh.md index 928a07aa27..57e23491e2 100644 --- a/.agents/notes/implemented/testing/2026-07-30-web-browser-snapshot-ci-gate.zh.md +++ b/.agents/notes/implemented/testing/2026-07-30-web-browser-snapshot-ci-gate.zh.md @@ -12,7 +12,7 @@ Status: implemented Linux PR 的 `node 24 / snapshots and artifacts` 必须运行完整 Web 浏览器 replay/compare。配置 `DSH_WEB_SNAPSHOT_WORKERS` 后,`scripts/run-gates.ts` 把 `test:web:ci` 登记为 `ci-consumers` 门禁,并显式注入 `DSH_SNAPSHOT=replay`;CI 永不以 `record` 或 `refresh` 模式运行,因此提交的预期输出与当前组装应用不一致时测试直接失败,不会在 runner 内静默改写后通过。 -消费方 job 在[消费方独立构建](../process/2026-07-30-independent-ci-consumer-build.zh.md)中负责唯一一次 Linux 构建,因此 `apps/web/dist` 和包的 `lib/` 目录会保留在其工作区中,供浏览器套件使用。在托管运行器上,CI 按锁文件中的 Playwright 版本安装 Chromium 及其系统依赖。在持久化故障切换 VM 上,镜像负责预装 Linux 系统软件包,CI 只安装 Chromium,避免每次运行都通过 `apt` 改动系统。PR 恢复以操作系统和锁文件为键的浏览器缓存,使必需路径无需承担压缩和上传开销,并可在锁文件变化时按操作系统前缀回退。没有任何 master 作业生成这些 hosted 缓存,因此恢复只能命中仍有归档的旧条目,直至其被逐出。自托管热备运行相同的比较,但不执行托管缓存操作。 +消费方 job 在[消费方独立构建](../../archived/process/2026-07-30-independent-ci-consumer-build.md)中负责唯一一次 Linux 构建,因此 `apps/web/dist` 和包的 `lib/` 目录会保留在其工作区中,供浏览器套件使用。在托管运行器上,CI 按锁文件中的 Playwright 版本安装 Chromium 及其系统依赖。在持久化故障切换 VM 上,镜像负责预装 Linux 系统软件包,CI 只安装 Chromium,避免每次运行都通过 `apt` 改动系统。PR 恢复以操作系统和锁文件为键的浏览器缓存,使必需路径无需承担压缩和上传开销,并可在锁文件变化时按操作系统前缀回退。没有任何 master 作业生成这些 hosted 缓存,因此恢复只能命中仍有归档的旧条目,直至其被逐出。自托管热备运行相同的比较,但不执行托管缓存操作。 本地 `pnpm run test:web` 仍先构建,再串行运行完整浏览器套件;`test:web:built` 是已有构建产物的串行执行入口。开发者只在确认用户可见输出有意变化后显式运行 `DSH_SNAPSHOT=refresh pnpm run test:web`,评审每一处预期输出 diff,再以 replay 模式复验不再写文件。 diff --git a/.agents/notes/implemented/testing/2026-08-13-python-minimal-model-visible-snapshot.i18n.yaml b/.agents/notes/implemented/testing/2026-08-13-python-minimal-model-visible-snapshot.i18n.yaml deleted file mode 100644 index e083488c7c..0000000000 --- a/.agents/notes/implemented/testing/2026-08-13-python-minimal-model-visible-snapshot.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/testing/2026-08-13-python-minimal-model-visible-snapshot.md -2026-08-13-python-minimal-model-visible-snapshot.md: 1cef57c440ddd2209628016ab550174b448587bc -2026-08-13-python-minimal-model-visible-snapshot.zh.md: 0d2cc327cf623dcec1d4b861726ffc47d6c97727 diff --git a/.agents/notes/implemented/testing/2026-08-18-session-snapshot-envelope-projection.i18n.yaml b/.agents/notes/implemented/testing/2026-08-18-session-snapshot-envelope-projection.i18n.yaml deleted file mode 100644 index 6b682d856b..0000000000 --- a/.agents/notes/implemented/testing/2026-08-18-session-snapshot-envelope-projection.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/testing/2026-08-18-session-snapshot-envelope-projection.md -2026-08-18-session-snapshot-envelope-projection.md: 28f8f7f823b552c68dcb2c54e62f0551e1615134 -2026-08-18-session-snapshot-envelope-projection.zh.md: 80eb14da234debde4e7f6f9990c21f9162d93bc0 diff --git a/.agents/notes/implemented/testing/2026-08-23-installed-python-wheel-black-box-ci.i18n.yaml b/.agents/notes/implemented/testing/2026-08-23-installed-python-wheel-black-box-ci.i18n.yaml index 2e755b0648..9d2528abc4 100644 --- a/.agents/notes/implemented/testing/2026-08-23-installed-python-wheel-black-box-ci.i18n.yaml +++ b/.agents/notes/implemented/testing/2026-08-23-installed-python-wheel-black-box-ci.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/implemented/testing/2026-08-23-installed-python-wheel-black-box-ci.md -2026-08-23-installed-python-wheel-black-box-ci.md: a1c5d5f0a8040747caa2148f6b4990fd58828cbe -2026-08-23-installed-python-wheel-black-box-ci.zh.md: ab2b6c11a2aa49a78bad990b780019f704edef51 +2026-08-23-installed-python-wheel-black-box-ci.md: 3f9bc480cf050b88e08e4d15b8a6827c5677dc76 +2026-08-23-installed-python-wheel-black-box-ci.zh.md: 06fe92bead466ed383d9b12776e5db61625867c8 diff --git a/.agents/notes/implemented/testing/2026-08-23-installed-python-wheel-black-box-ci.md b/.agents/notes/implemented/testing/2026-08-23-installed-python-wheel-black-box-ci.md index a1c5d5f0a8..3f9bc480cf 100644 --- a/.agents/notes/implemented/testing/2026-08-23-installed-python-wheel-black-box-ci.md +++ b/.agents/notes/implemented/testing/2026-08-23-installed-python-wheel-black-box-ci.md @@ -30,11 +30,11 @@ Fork and Dependabot pull requests never receive the repository secret. Their nat ### Required targets -The pull-request `python-runtime` job calls the reusable builder for Linux x64, Linux arm64, macOS arm64, macOS x64, and Windows x64. Its aggregate result remains a dependency of `all checks passed`, so a failed, cancelled, or missing native carrier blocks the required verdict. The [Windows x64 runtime decision](../architecture/2026-08-23-python-sdk-windows-x64-runtime.md) owns the Windows target and its PowerShell-specific minimal snapshot. +The pull-request `python-runtime` job calls the reusable builder for Linux x64, Linux arm64, macOS arm64, macOS x64, and Windows x64. Its aggregate result remains a dependency of `all checks passed`, so a failed, cancelled, or missing native carrier blocks the required verdict. The [sdk-runtime README](../../../../python/sdk-runtime/README.md) owns the Windows target and its PowerShell-specific minimal snapshot. ## Existing decisions and supersession -This decision supersedes the single-target topology in the archived [required Python runtime pull-request validation](../../archived/testing/2026-08-12-required-python-runtime-pull-request-ci.md) while retaining its requirement that the real executable, snapshots, wheels, and clean installation meet before merge. The [Python SDK dsh profile runtime](../architecture/2026-08-23-python-sdk-dsh-profile-runtime.md) owns the launched application and customization surface; the [single-file Python SDK runtime distribution](../architecture/2026-07-10-single-file-executable-sdk-runtime-distribution.md) remains authoritative for SEA packaging, native sidecars, wheel tags, and release artifacts. +This decision supersedes the single-target topology in the archived [required Python runtime pull-request validation](../../archived/testing/2026-08-12-required-python-runtime-pull-request-ci.md) while retaining its requirement that the real executable, snapshots, wheels, and clean installation meet before merge. [docs/architecture.md](../../../../docs/architecture.md) owns the launched application and customization surface; the [single-file Python SDK runtime distribution](../architecture/2026-07-10-single-file-executable-sdk-runtime-distribution.md) remains authoritative for SEA packaging, native sidecars, wheel tags, and release artifacts. ## Alternatives considered diff --git a/.agents/notes/implemented/testing/2026-08-23-installed-python-wheel-black-box-ci.zh.md b/.agents/notes/implemented/testing/2026-08-23-installed-python-wheel-black-box-ci.zh.md index ab2b6c11a2..06fe92bead 100644 --- a/.agents/notes/implemented/testing/2026-08-23-installed-python-wheel-black-box-ci.zh.md +++ b/.agents/notes/implemented/testing/2026-08-23-installed-python-wheel-black-box-ci.zh.md @@ -30,11 +30,11 @@ Fork 与 Dependabot 拉取请求永远不会获得仓库密钥。它们的原生 ### 必需目标 -拉取请求的 `python-runtime` job 会针对 Linux x64、Linux arm64、macOS arm64、macOS x64 与 Windows x64 调用可复用构建器。其聚合结果仍是 `all checks passed` 的依赖项,因此任一原生载体失败、取消或缺失都会阻止必需判定通过。[Windows x64 运行时决策](../architecture/2026-08-23-python-sdk-windows-x64-runtime.zh.md)负责 Windows 目标及其 PowerShell 专属极简快照。 +拉取请求的 `python-runtime` job 会针对 Linux x64、Linux arm64、macOS arm64、macOS x64 与 Windows x64 调用可复用构建器。其聚合结果仍是 `all checks passed` 的依赖项,因此任一原生载体失败、取消或缺失都会阻止必需判定通过。[sdk-runtime README](../../../../python/sdk-runtime/README.zh.md) 负责 Windows 目标及其 PowerShell 专属极简快照。 ## Existing decisions and supersession -本决策取代已归档的[必需 Python 运行时拉取请求验证](../../archived/testing/2026-08-12-required-python-runtime-pull-request-ci.md)中的单目标拓扑,同时保留真实可执行文件、快照、wheel 包与干净安装必须在合并前相遇的要求。[Python SDK dsh profile 运行时](../architecture/2026-08-23-python-sdk-dsh-profile-runtime.zh.md)负责启动应用与自定义接口;[单文件 Python SDK 运行时 distribution](../architecture/2026-07-10-single-file-executable-sdk-runtime-distribution.zh.md)继续负责 SEA 打包、原生 sidecar、wheel 包标签与发布产物。 +本决策取代已归档的[必需 Python 运行时拉取请求验证](../../archived/testing/2026-08-12-required-python-runtime-pull-request-ci.md)中的单目标拓扑,同时保留真实可执行文件、快照、wheel 包与干净安装必须在合并前相遇的要求。[docs/architecture.md](../../../../docs/architecture.zh.md) 负责启动应用与自定义接口;[单文件 Python SDK 运行时 distribution](../architecture/2026-07-10-single-file-executable-sdk-runtime-distribution.zh.md)继续负责 SEA 打包、原生 sidecar、wheel 包标签与发布产物。 ## Alternatives considered diff --git a/.agents/notes/implemented/testing/2026-08-27-translation-pairing-merge-budget.i18n.yaml b/.agents/notes/implemented/testing/2026-08-27-translation-pairing-merge-budget.i18n.yaml deleted file mode 100644 index f92bcc8e12..0000000000 --- a/.agents/notes/implemented/testing/2026-08-27-translation-pairing-merge-budget.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/testing/2026-08-27-translation-pairing-merge-budget.md -2026-08-27-translation-pairing-merge-budget.md: 296e71fbbebf136602e02d2d8d64dbbfd8a336a3 -2026-08-27-translation-pairing-merge-budget.zh.md: 8bdac5902301d7105b7851e3c446a9a327b69819 diff --git a/.agents/notes/implemented/testing/2026-08-28-ci-test-reliability-skill.i18n.yaml b/.agents/notes/implemented/testing/2026-08-28-ci-test-reliability-skill.i18n.yaml deleted file mode 100644 index 6d33252c51..0000000000 --- a/.agents/notes/implemented/testing/2026-08-28-ci-test-reliability-skill.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/testing/2026-08-28-ci-test-reliability-skill.md -2026-08-28-ci-test-reliability-skill.md: 1c8e0389dfa6e3eb3a6e04e994e6400d19a673ac -2026-08-28-ci-test-reliability-skill.zh.md: ef36eab497bee874cd117488ddf4895c7edd0ed1 diff --git a/.agents/notes/implemented/testing/2026-08-29-windows-lane-hook-and-lefthook-budget.i18n.yaml b/.agents/notes/implemented/testing/2026-08-29-windows-lane-hook-and-lefthook-budget.i18n.yaml deleted file mode 100644 index f9baab437d..0000000000 --- a/.agents/notes/implemented/testing/2026-08-29-windows-lane-hook-and-lefthook-budget.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/implemented/testing/2026-08-29-windows-lane-hook-and-lefthook-budget.md -2026-08-29-windows-lane-hook-and-lefthook-budget.md: 40ebba25e459abd6d9ae755f831e703aa826ae39 -2026-08-29-windows-lane-hook-and-lefthook-budget.zh.md: c14be5da098920dbb7360c01bbb94f0bc22f700b diff --git a/.agents/notes/proposed/architecture/2026-06-16-typed-event-schemas.i18n.yaml b/.agents/notes/proposed/architecture/2026-06-16-typed-event-schemas.i18n.yaml deleted file mode 100644 index f74492d273..0000000000 --- a/.agents/notes/proposed/architecture/2026-06-16-typed-event-schemas.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/proposed/architecture/2026-06-16-typed-event-schemas.md -2026-06-16-typed-event-schemas.md: 3a9788e903c47c2d7cab07ba0f8d2ae9037ca519 -2026-06-16-typed-event-schemas.zh.md: 406d97c934864ec24c5370e27c30b2845c991866 diff --git a/.agents/notes/proposed/architecture/2026-07-25-client-settings-locale-theme.i18n.yaml b/.agents/notes/proposed/architecture/2026-07-25-client-settings-locale-theme.i18n.yaml deleted file mode 100644 index ef6304638e..0000000000 --- a/.agents/notes/proposed/architecture/2026-07-25-client-settings-locale-theme.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/proposed/architecture/2026-07-25-client-settings-locale-theme.md -2026-07-25-client-settings-locale-theme.md: 9d7a61ae7ca5241145346fb38ed28836e75cb01e -2026-07-25-client-settings-locale-theme.zh.md: ce93afd3cb129760799210c6b29b5984cdd45620 diff --git a/.agents/notes/proposed/architecture/2026-07-27-session-projection-and-command-log.i18n.yaml b/.agents/notes/proposed/architecture/2026-07-27-session-projection-and-command-log.i18n.yaml index 88dadb758f..f6a8f29476 100644 --- a/.agents/notes/proposed/architecture/2026-07-27-session-projection-and-command-log.i18n.yaml +++ b/.agents/notes/proposed/architecture/2026-07-27-session-projection-and-command-log.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/proposed/architecture/2026-07-27-session-projection-and-command-log.md -2026-07-27-session-projection-and-command-log.md: 1e0dd435d972cfe35d1433417a3884845e384444 -2026-07-27-session-projection-and-command-log.zh.md: dcb077d87eae02c28714fd752606e0966bc70f94 +2026-07-27-session-projection-and-command-log.md: fb329a4117fdea8f4aa0e98548982c3197d9c8f6 +2026-07-27-session-projection-and-command-log.zh.md: eb359058a74c6ed53959253ae80f2002cb67a351 diff --git a/.agents/notes/proposed/architecture/2026-07-27-session-projection-and-command-log.md b/.agents/notes/proposed/architecture/2026-07-27-session-projection-and-command-log.md index 1e0dd435d9..fb329a4117 100644 --- a/.agents/notes/proposed/architecture/2026-07-27-session-projection-and-command-log.md +++ b/.agents/notes/proposed/architecture/2026-07-27-session-projection-and-command-log.md @@ -54,7 +54,7 @@ declare module 'cordis' { } ``` -- `SessionProjectionStateMap` types host fold states; `SessionProjectionMap` remains the one client DTO table shared by the wire block and React hook via `import type`. A unit may remain host-only by omitting `wire`. How a client value is *rendered* is the slot system's business, never the projection layer's. The state/view split is specified by the [implemented state and client-view note](../../implemented/architecture/2026-08-19-session-projection-state-and-client-views.md). +- `SessionProjectionStateMap` types host fold states; `SessionProjectionMap` remains the one client DTO table shared by the wire block and React hook via `import type`. A unit may remain host-only by omitting `wire`. How a client value is *rendered* is the slot system's business, never the projection layer's. The state/view split is specified by the [implemented state and client-view note](../../archived/architecture/2026-08-19-session-projection-state-and-client-views.md). - **The host is the only place a projection is computed.** The framework drives every registered unit forward eagerly: each committed session event passes through `apply`; a unit uninterested in an event returns the same state reference, and an unchanged reference (`Object.is`) produces no downstream work. Clients never fold domain events — they receive finished values (baseline block + push frame below). This removes the double-implementation trap (plan's two-event fold written once, on the host) and any client-side domain code. - **State is always computed, never logged.** The log holds events only; the unit's state lives in the framework's per-session watermark cache (`{state, observedSeq}` per unit) and, in a later phase, in a **persisted projection cache** on the domain-KV storage seam: rows of `(sessionId, key, ver, seq, val)` (`ver` = the unit's `stateVersion`, `seq` = the watermark, `val` = the state JSON). A row is never wrong, only possibly stale — its `seq` says exactly how stale. The one read recipe, cold and live alike: take the cached state (or `init()`), forward-apply only the events past its watermark, `view` the result. Cold listings (every session's title across all workspaces) become an index read plus, at worst, a short tail replay; the session-persistence seam grows a read-from-seq primitive for that tail in the same later phase. Write policy: throttled (count/interval, configurable) plus two mandatory points — `turn/end` and detach (the live-to-cold moment). A crash between writes costs a longer tail replay, never a wrong value. - A domain's input event set is its own choice: todos folds `todo/write` alone; plan folds `plan/mode` plus its own `/plan` `command/run` records (see the plan section); goal folds `goal/change` metadata; session title folds its title events (retiring the bespoke `session/title` frame and the client's title-snapshot map — the fourth hand-rolled projection this seam absorbs). @@ -63,7 +63,7 @@ declare module 'cordis' { ### Shipped consumer: the subagent identity unit -The registry's two read faces already serve a shipped consumer beyond this RFC's wire plan: [subagent list identity via the projection unit](../../implemented/architecture/2026-08-06-subagent-list-identity-projection.md) registers a `subagent` unit — the durable mode/label identity folded last-wins from `subagent/descriptor` — and `SubagentRuntime.listChildren` reads it through `snapshot()` for a live child (the watermark cache, zero log reads) and `restore({}, events, 0)` over one persistence inspection for a cold one. The registry contract is unchanged: no failure channel and no new read face — a unit never throws, an absent value is the signal, and how absence renders is that consumer's decision. +The registry's two read faces already serve a shipped consumer beyond this RFC's wire plan: [subagent list identity via the projection unit](../../archived/architecture/2026-08-06-subagent-list-identity-projection.md) registers a `subagent` unit — the durable mode/label identity folded last-wins from `subagent/descriptor` — and `SubagentRuntime.listChildren` reads it through `snapshot()` for a live child (the watermark cache, zero log reads) and `restore({}, events, 0)` over one persistence inspection for a cold one. The registry contract is unchanged: no failure channel and no new read face — a unit never throws, an absent value is the signal, and how absence renders is that consumer's decision. ### Wire: projections block on the history tail page diff --git a/.agents/notes/proposed/architecture/2026-07-27-session-projection-and-command-log.zh.md b/.agents/notes/proposed/architecture/2026-07-27-session-projection-and-command-log.zh.md index dcb077d87e..eb359058a7 100644 --- a/.agents/notes/proposed/architecture/2026-07-27-session-projection-and-command-log.zh.md +++ b/.agents/notes/proposed/architecture/2026-07-27-session-projection-and-command-log.zh.md @@ -54,7 +54,7 @@ declare module 'cordis' { } ``` -- `SessionProjectionStateMap` 描述 host 折叠状态;`SessionProjectionMap` 继续作为协议块和 React 钩子经 `import type` 共享的唯一客户端 DTO 表。单元省略 `wire` 即保持 host-only。客户端值如何*渲染*是 slot 体系的事,永远不归投影层管。状态/视图拆分见[已实现的状态与客户端视图记录](../../implemented/architecture/2026-08-19-session-projection-state-and-client-views.zh.md)。 +- `SessionProjectionStateMap` 描述 host 折叠状态;`SessionProjectionMap` 继续作为协议块和 React 钩子经 `import type` 共享的唯一客户端 DTO 表。单元省略 `wire` 即保持 host-only。客户端值如何*渲染*是 slot 体系的事,永远不归投影层管。状态/视图拆分见[已实现的状态与客户端视图记录](../../archived/architecture/2026-08-19-session-projection-state-and-client-views.md)。 - **host 是投影唯一的计算地点。** 框架主动驱动(eager drive)每个已注册的单元:每个已提交的会话事件都经过 `apply`;对某事件不感兴趣的单元返回同一个状态引用,而引用未变(`Object.is`)就不产生任何下游工作。客户端从不折叠领域事件——它们收到的是成品值(基线块 + 下文的推送帧)。这消除了双重实现陷阱(plan 的双事件折叠只在 host 写一遍),也消除了一切客户端侧领域代码。 - **状态永远靠计算得出,绝不入日志。** 日志只存事件;单元的状态住在框架的按会话水位线缓存里(每单元一份 `{state, observedSeq}`),并在后续阶段进入 domain-KV 存储 seam 上的**持久投影缓存(persisted projection cache)**:形如 `(sessionId, key, ver, seq, val)` 的行(`ver` = 单元的 `stateVersion`,`seq` = 水位线,`val` = 状态 JSON)。一行永远不会是错的,至多是陈旧的——其 `seq` 精确说明陈旧到哪。冷读与活读共用同一套读取配方:取缓存状态(或 `init()`),只对超出其水位线的事件做正向 `apply`,再对结果做 `view`。冷列表(跨全部 workspace 列出每个会话的标题)变成一次索引读,至多外加一小段尾部回放;session-persistence seam 在同一后续阶段为这段尾部补一个按 seq 起读的原语。写入策略:节流(次数/间隔,可配置)外加两个强制点——`turn/end` 与 detach(由活转冷的时刻)。两次写入之间崩溃的代价是尾部回放更长一些,绝不会是值出错。 - 领域的输入事件集由领域自己选择:todos 只折叠 `todo/write`;plan 折叠 `plan/mode` 外加它自己的 `/plan` `command/run` 记录(见 plan 一节);goal 折叠 `goal/change` 元数据;会话标题折叠其标题事件(顺带下线专设的 `session/title` 帧与客户端的标题快照表——这是该 seam 收编的第四个手工投影)。 @@ -63,7 +63,7 @@ declare module 'cordis' { ### 已交付的消费方:subagent 身份单元 -注册表的两处既有读法已经服务于本 RFC 协议计划之外的一个已交付消费方:[subagent 列表经投影单元读取身份](../../implemented/architecture/2026-08-06-subagent-list-identity-projection.zh.md)注册了 `subagent` 单元——从 `subagent/descriptor` 按 last-wins 折叠出的持久化 mode/label 身份——`SubagentRuntime.listChildren` 对 live child 经 `snapshot()` 读取(水位缓存,零日志读),对 cold child 则用一次持久化整读的结果调用 `restore({}, events, 0)` 读取。注册表约定不变:没有失败通道、没有新读法——单元永不抛错,值缺席本身就是信号,缺席如何呈现是该消费方自己的决定。 +注册表的两处既有读法已经服务于本 RFC 协议计划之外的一个已交付消费方:[subagent 列表经投影单元读取身份](../../archived/architecture/2026-08-06-subagent-list-identity-projection.md)注册了 `subagent` 单元——从 `subagent/descriptor` 按 last-wins 折叠出的持久化 mode/label 身份——`SubagentRuntime.listChildren` 对 live child 经 `snapshot()` 读取(水位缓存,零日志读),对 cold child 则用一次持久化整读的结果调用 `restore({}, events, 0)` 读取。注册表约定不变:没有失败通道、没有新读法——单元永不抛错,值缺席本身就是信号,缺席如何呈现是该消费方自己的决定。 ### 协议层:历史尾页上的 projections 块 diff --git a/.agents/notes/proposed/architecture/2026-07-28-storage-root-and-derived-medium-recovery.i18n.yaml b/.agents/notes/proposed/architecture/2026-07-28-storage-root-and-derived-medium-recovery.i18n.yaml index 96ea4961d6..f8b3f81ba2 100644 --- a/.agents/notes/proposed/architecture/2026-07-28-storage-root-and-derived-medium-recovery.i18n.yaml +++ b/.agents/notes/proposed/architecture/2026-07-28-storage-root-and-derived-medium-recovery.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/proposed/architecture/2026-07-28-storage-root-and-derived-medium-recovery.md -2026-07-28-storage-root-and-derived-medium-recovery.md: 68a6792c38a8fe097558de3d5a857ab4ea0d3533 -2026-07-28-storage-root-and-derived-medium-recovery.zh.md: 0c712b3b928f4b3df44e706b154c3a90a784403c +2026-07-28-storage-root-and-derived-medium-recovery.md: 3a4124e577b79b6775c40aed0adc63ab0c130dad +2026-07-28-storage-root-and-derived-medium-recovery.zh.md: f8d91402ba682bef616274d1a4c4fe00360271fc diff --git a/.agents/notes/proposed/architecture/2026-07-28-storage-root-and-derived-medium-recovery.md b/.agents/notes/proposed/architecture/2026-07-28-storage-root-and-derived-medium-recovery.md index 68a6792c38..3a4124e577 100644 --- a/.agents/notes/proposed/architecture/2026-07-28-storage-root-and-derived-medium-recovery.md +++ b/.agents/notes/proposed/architecture/2026-07-28-storage-root-and-derived-medium-recovery.md @@ -10,7 +10,7 @@ The persisted projection cache ([note](2026-07-27-session-projection-and-command **Where the files actually live (root mismatch closed; resolve-once residual still open).** The shared base defaults the session store to the global harness home (`$DSH_HOME/sessions`, default `~/.dsh/sessions`), while the shipped Web overlay used to give the json backend the relative root `./.storages`: `workspace.json` and `session_projcache.json` landed under `/.storages/` — two launches from different directories shared their sessions yet saw different workspace registries and different projection caches, and the cache exists precisely to serve the cross-session cold listing, which missed for every session last cached under another launch directory. That mismatch is now closed: the overlay anchors `storage-json.root` to `$DSH_HOME/storages` with the same `!!js` expression the session root uses (`apps/cli/config/web.cordis.yml`). The residual hazard: `JsonStorageBackend` still never resolves its root — each unit open joins the path against whatever `process.cwd()` is at that moment (packages/storage/storage-json/src/index.ts); the shipped overlay root is already absolute and unaffected, but any relative root (bare Loader boots, tests) still splits on a later cwd change — the exact hazard the JSONL session backend resolves-once to prevent ("later process.cwd() changes cannot split one backend across roots", packages/session/session-persistence-jsonl/src/index.ts). -**Recovery behavior.** Inside a healthy medium the cache is fully self-healing by design: a `stateVersion`-mismatched row is discarded and refolded, a log shrunk below a row's watermark is detected by the anchored restore floor and answered with one full re-read, and every background write is fail-soft. But at the *medium* level there is no recovery at all: a truncated, hand-edited, or version-bumped `session_projcache.json` fails `openJsonUnit` with `malformed-medium`/`version-mismatch` (packages/storage/storage-json/src/format.ts), a schema-drifted record fails domain open with `invalid-record` (packages/storage/storage-domain/src/index.ts), the rejection propagates through `SessionProjectionCache[Service.init]`, and under the CLI's fail-loud boot the assembly refuses to start. A file whose entire content is rebuildable from session logs can brick boot. This contradicts the cache package's own stated stance ("a stale or unreadable cache costs a longer tail replay, never a wrong value") and the cache domain spec's JSDoc ("version bumps discard the whole medium"), which describes an aspiration, not the implementation. Partially superseded for the projection cache: [the per-session cache files note](../../implemented/architecture/2026-08-19-projection-cache-per-session-files.md) removed the global `session_projcache` domain, so the cache half of this proposal (recovery on that domain) no longer applies; the `workspace.json` half remains current. The `invalid-record` class for the per-record projection cache is now also superseded: the shipped domain declares `invalidRecords: 'backup-and-skip'` ([cross-version read-compat note](../../implemented/architecture/2026-09-02-projcache-cross-version-read-compat.md)), which backs the failing record up and skips it at open, so the reset/destroy proposal below stays relevant only for whole-medium damage on authoritative or single-document media. The same fail-loud path is *correct* for `workspace.json` — workspace records are authoritative, not derivable — so the missing concept is a per-domain declaration of authority, not a global behavior change. +**Recovery behavior.** Inside a healthy medium the cache is fully self-healing by design: a `stateVersion`-mismatched row is discarded and refolded, a log shrunk below a row's watermark is detected by the anchored restore floor and answered with one full re-read, and every background write is fail-soft. But at the *medium* level there is no recovery at all: a truncated, hand-edited, or version-bumped `session_projcache.json` fails `openJsonUnit` with `malformed-medium`/`version-mismatch` (packages/storage/storage-json/src/format.ts), a schema-drifted record fails domain open with `invalid-record` (packages/storage/storage-domain/src/index.ts), the rejection propagates through `SessionProjectionCache[Service.init]`, and under the CLI's fail-loud boot the assembly refuses to start. A file whose entire content is rebuildable from session logs can brick boot. This contradicts the cache package's own stated stance ("a stale or unreadable cache costs a longer tail replay, never a wrong value") and the cache domain spec's JSDoc ("version bumps discard the whole medium"), which describes an aspiration, not the implementation. Partially superseded for the projection cache: [the per-session cache files note](../../archived/architecture/2026-08-19-projection-cache-per-session-files.md) removed the global `session_projcache` domain, so the cache half of this proposal (recovery on that domain) no longer applies; the `workspace.json` half remains current. The `invalid-record` class for the per-record projection cache is now also superseded: the shipped domain declares `invalidRecords: 'backup-and-skip'` ([cross-version read-compat note](../../implemented/architecture/2026-09-02-projcache-cross-version-read-compat.md)), which backs the failing record up and skips it at open, so the reset/destroy proposal below stays relevant only for whole-medium damage on authoritative or single-document media. The same fail-loud path is *correct* for `workspace.json` — workspace records are authoritative, not derivable — so the missing concept is a per-domain declaration of authority, not a global behavior change. ## Proposal diff --git a/.agents/notes/proposed/architecture/2026-07-28-storage-root-and-derived-medium-recovery.zh.md b/.agents/notes/proposed/architecture/2026-07-28-storage-root-and-derived-medium-recovery.zh.md index 0c712b3b92..f8d91402ba 100644 --- a/.agents/notes/proposed/architecture/2026-07-28-storage-root-and-derived-medium-recovery.zh.md +++ b/.agents/notes/proposed/architecture/2026-07-28-storage-root-and-derived-medium-recovery.zh.md @@ -10,7 +10,7 @@ Status: proposed **文件到底存在哪(根错位已收口,resolve-once 残余仍开放)。** 共享 base 将会话存储默认为全局 harness home(`$DSH_HOME/sessions`,默认 `~/.dsh/sessions`),而出厂 Web overlay 曾给 json 后端相对根 `./.storages`:`workspace.json` 和 `session_projcache.json` 落在 `<启动目录>/.storages/` 下——从两个不同目录启动,会话相同,工作区注册表和投影缓存却各是一份,而缓存存在的意义恰恰是跨会话冷列表,凡上次在别的启动目录下缓存过的会话全部 miss。这一错位已消除:overlay 现以与会话根同一段 `!!js` 表达式把 `storage-json.root` 锚定到 `$DSH_HOME/storages`(`apps/cli/config/web.cordis.yml`)。残余隐患:`JsonStorageBackend` 仍从不 resolve 根——每次打开 unit 都把路径 join 到当时的 `process.cwd()` 上(packages/storage/storage-json/src/index.ts);出厂 overlay 的根已是绝对路径不受影响,但任何相对根(裸 Loader 启动、测试)仍会被后续 cwd 变化劈开,JSONL 会话后端用「构造时 resolve 一次」防住的正是它("later process.cwd() changes cannot split one backend across roots",packages/session/session-persistence-jsonl/src/index.ts)。 -**恢复行为。** 在健康介质内部,缓存按设计完全自愈:`stateVersion` 不匹配的行被丢弃重折,日志缩短到行水位以下由带锚的 restore floor 检出并以一次全量重读回答,每次后台写都是 fail-soft。但在*介质*层面完全没有恢复:被截断、被手改或版本被 bump 的 `session_projcache.json` 会让 `openJsonUnit` 以 `malformed-medium`/`version-mismatch` 失败(packages/storage/storage-json/src/format.ts),schema 漂移的记录让域 open 以 `invalid-record` 失败(packages/storage/storage-domain/src/index.ts),拒绝一路穿过 `SessionProjectionCache[Service.init]`,在 CLI 的 fail-loud 启动下整个组装拒绝启动。一个内容完全可从会话日志重建的文件能把启动搞死。这与缓存包自己声明的立场("a stale or unreadable cache costs a longer tail replay, never a wrong value")和缓存域 spec 的 JSDoc("version bumps discard the whole medium")相矛盾——后者描述的是愿望而非实现。投影缓存半边已被[每会话缓存文件 note](../../implemented/architecture/2026-08-19-projection-cache-per-session-files.zh.md) 部分取代:全局 `session_projcache` domain 已移除,本提案的缓存恢复半边不再适用;`workspace.json` 半边仍然有效。per-record 投影缓存的 `invalid-record` 一类如今也已被取代:已发布的域声明了 `invalidRecords: 'backup-and-skip'`([跨版本读兼容 note](../../implemented/architecture/2026-09-02-projcache-cross-version-read-compat.zh.md)),open 时把失败记录备份后跳过,因此下文 reset/destroy 提案仅对权威介质或单文档介质的整介质损坏仍然相关。同一条 fail-loud 路径对 `workspace.json` 却是*正确*的——工作区记录是权威数据,不可派生——所以缺的概念是按域声明权威性,而不是全局改行为。 +**恢复行为。** 在健康介质内部,缓存按设计完全自愈:`stateVersion` 不匹配的行被丢弃重折,日志缩短到行水位以下由带锚的 restore floor 检出并以一次全量重读回答,每次后台写都是 fail-soft。但在*介质*层面完全没有恢复:被截断、被手改或版本被 bump 的 `session_projcache.json` 会让 `openJsonUnit` 以 `malformed-medium`/`version-mismatch` 失败(packages/storage/storage-json/src/format.ts),schema 漂移的记录让域 open 以 `invalid-record` 失败(packages/storage/storage-domain/src/index.ts),拒绝一路穿过 `SessionProjectionCache[Service.init]`,在 CLI 的 fail-loud 启动下整个组装拒绝启动。一个内容完全可从会话日志重建的文件能把启动搞死。这与缓存包自己声明的立场("a stale or unreadable cache costs a longer tail replay, never a wrong value")和缓存域 spec 的 JSDoc("version bumps discard the whole medium")相矛盾——后者描述的是愿望而非实现。投影缓存半边已被[每会话缓存文件 note](../../archived/architecture/2026-08-19-projection-cache-per-session-files.md) 部分取代:全局 `session_projcache` domain 已移除,本提案的缓存恢复半边不再适用;`workspace.json` 半边仍然有效。per-record 投影缓存的 `invalid-record` 一类如今也已被取代:已发布的域声明了 `invalidRecords: 'backup-and-skip'`([跨版本读兼容 note](../../implemented/architecture/2026-09-02-projcache-cross-version-read-compat.zh.md)),open 时把失败记录备份后跳过,因此下文 reset/destroy 提案仅对权威介质或单文档介质的整介质损坏仍然相关。同一条 fail-loud 路径对 `workspace.json` 却是*正确*的——工作区记录是权威数据,不可派生——所以缺的概念是按域声明权威性,而不是全局改行为。 ## 提案 diff --git a/.agents/notes/proposed/architecture/2026-07-29-durable-last-activity-index.i18n.yaml b/.agents/notes/proposed/architecture/2026-07-29-durable-last-activity-index.i18n.yaml index e16b25b55b..0466c8f8cc 100644 --- a/.agents/notes/proposed/architecture/2026-07-29-durable-last-activity-index.i18n.yaml +++ b/.agents/notes/proposed/architecture/2026-07-29-durable-last-activity-index.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/proposed/architecture/2026-07-29-durable-last-activity-index.md -2026-07-29-durable-last-activity-index.md: 8022bb50530dc565813ba4f4c07342b348125eed -2026-07-29-durable-last-activity-index.zh.md: be84ad73ba9f685bdff7cd80a4ed6fdb46006588 +2026-07-29-durable-last-activity-index.md: f007f01bf34c830ef9c0093e58ca86f07416d68c +2026-07-29-durable-last-activity-index.zh.md: c3259f47bcf02f6214ea6081730ee1e850c27e77 diff --git a/.agents/notes/proposed/architecture/2026-07-29-durable-last-activity-index.md b/.agents/notes/proposed/architecture/2026-07-29-durable-last-activity-index.md index 8022bb5053..f007f01bf3 100644 --- a/.agents/notes/proposed/architecture/2026-07-29-durable-last-activity-index.md +++ b/.agents/notes/proposed/architecture/2026-07-29-durable-last-activity-index.md @@ -8,7 +8,7 @@ English | [中文](2026-07-29-durable-last-activity-index.zh.md) A cold (persisted, unattached) session has no authoritative stored answer to "when did the user last prompt here". `dsh-host-apiproxy` serves `updatedAt` from the optional projection cache's `lastPromptAt`, falling back to `createdAt`, and the Web client sorts its Session tree by that value. The cache is fail-soft and checkpointed asynchronously, so a missing or delayed row makes a recently prompted Session sort too old. -The gateway previously used JSONL artifact mtime when available. mtime answers a different question: when the artifact was last written. Every durable write refreshes it, including a truncate-repair of a torn tail, synthetic closers that balance an interrupted turn, and the [`session/end-seed` boundary](../../implemented/architecture/2026-07-30-session-end-seed-log-boundary.md) appended during pickup. That approximation promoted a Session merely because it was opened. The [bounded cold blank verification](../../implemented/bug-fix/2026-08-13-bounded-cold-blank-verification.md) removed mtime ordering and accepted the cache's conservative "too old" failure direction as an interim tradeoff. +The gateway previously used JSONL artifact mtime when available. mtime answers a different question: when the artifact was last written. Every durable write refreshes it, including a truncate-repair of a torn tail, synthetic closers that balance an interrupted turn, and the [`session/end-seed` boundary](../../implemented/architecture/2026-07-30-session-end-seed-log-boundary.md) appended during pickup. That approximation promoted a Session merely because it was opened. The [bounded cold blank verification](../../archived/bug-fix/2026-08-13-bounded-cold-blank-verification.md) removed mtime ordering and accepted the cache's conservative "too old" failure direction as an interim tradeoff. An attached summary can fold the live event log and select the latest human-authored `user/message`, but the cold path deliberately reads no logs: cold summaries come from the projection cache alone, so cold recency is only as fresh as the cache. @@ -58,7 +58,7 @@ Three questions must be answered before implementation, and none of them is sett ## Related -- [Bounded cold blank verification](../../implemented/bug-fix/2026-08-13-bounded-cold-blank-verification.md) — removes mtime ordering and defines the interim cache-only cold summary this proposal would make exact. +- [Bounded cold blank verification](../../archived/bug-fix/2026-08-13-bounded-cold-blank-verification.md) — removes mtime ordering and defines the interim cache-only cold summary this proposal would make exact. - [The end-seed log boundary](../../implemented/architecture/2026-07-30-session-end-seed-log-boundary.md) — one of the non-prompt writes that made mtime unsuitable. - [Session persistence](../../implemented/architecture/2026-06-14-session-persistence.md) — the append-only and never-rewrite invariants that rule out a mutable JSONL header field. - [Handle-based session persistence](../../implemented/architecture/2026-08-27-handle-based-session-persistence.md) — the write-handle append path a stored field would hook into. diff --git a/.agents/notes/proposed/architecture/2026-07-29-durable-last-activity-index.zh.md b/.agents/notes/proposed/architecture/2026-07-29-durable-last-activity-index.zh.md index be84ad73ba..c3259f47bc 100644 --- a/.agents/notes/proposed/architecture/2026-07-29-durable-last-activity-index.zh.md +++ b/.agents/notes/proposed/architecture/2026-07-29-durable-last-activity-index.zh.md @@ -8,7 +8,7 @@ Status: proposed 一个冷会话(已持久化、未附加)对「用户上次是什么时候在这里发出 prompt」没有权威的已存储答案。`dsh-host-apiproxy` 从可选 projection cache 的 `lastPromptAt` 提供 `updatedAt`,缺失时回退到 `createdAt`,Web 客户端按该值为 Session 树排序。cache 采用 fail-soft 并异步写入 checkpoint,因此缺失或延迟的记录会让最近收到 prompt 的 Session 排得过旧。 -网关以前会在可用时采用 JSONL 产物的 mtime。mtime 回答的是另一件事:这份产物上次是什么时候被写入。每一次持久写入都会刷新它,包括对撕裂尾部的截断修复、平衡中断轮次的合成 closer,以及拾起时追加的 [`session/end-seed` 边界](../../implemented/architecture/2026-07-30-session-end-seed-log-boundary.zh.md)。这套近似会让 Session 仅仅因为被打开就提升排序。[有界冷空白验证](../../implemented/bug-fix/2026-08-13-bounded-cold-blank-verification.zh.md)移除了 mtime 排序,并把 cache 保守的「过旧」错误方向作为现阶段取舍。 +网关以前会在可用时采用 JSONL 产物的 mtime。mtime 回答的是另一件事:这份产物上次是什么时候被写入。每一次持久写入都会刷新它,包括对撕裂尾部的截断修复、平衡中断轮次的合成 closer,以及拾起时追加的 [`session/end-seed` 边界](../../implemented/architecture/2026-07-30-session-end-seed-log-boundary.zh.md)。这套近似会让 Session 仅仅因为被打开就提升排序。[有界冷空白验证](../../archived/bug-fix/2026-08-13-bounded-cold-blank-verification.md)移除了 mtime 排序,并把 cache 保守的「过旧」错误方向作为现阶段取舍。 已附加摘要可以折叠实时事件日志并选择最新的真人 `user/message`,但冷路径有意不读取任何日志:冷摘要只来自 projection cache,因此冷最近时间的新旧只取决于 cache。 @@ -58,7 +58,7 @@ Status: proposed ## 相关 -- [有界冷空白验证](../../implemented/bug-fix/2026-08-13-bounded-cold-blank-verification.zh.md)——移除 mtime 排序,并定义了本提案将使之精确的、仅依赖 cache 的过渡冷摘要。 +- [有界冷空白验证](../../archived/bug-fix/2026-08-13-bounded-cold-blank-verification.md)——移除 mtime 排序,并定义了本提案将使之精确的、仅依赖 cache 的过渡冷摘要。 - [种子结束日志边界](../../implemented/architecture/2026-07-30-session-end-seed-log-boundary.zh.md)——让 mtime 不适用的非 prompt 写入之一。 - [会话持久化](../../implemented/architecture/2026-06-14-session-persistence.zh.md)——仅追加与绝不重写这两条不变式,正是它们排除了可变的 JSONL header 字段。 - [基于句柄的会话持久化](../../implemented/architecture/2026-08-27-handle-based-session-persistence.zh.md)——一个已存储字段将挂入的那条写句柄追加路径。 diff --git a/.agents/notes/proposed/architecture/2026-08-08-cordis-web-dynamic-packages.i18n.yaml b/.agents/notes/proposed/architecture/2026-08-08-cordis-web-dynamic-packages.i18n.yaml deleted file mode 100644 index dd1f3e4d8b..0000000000 --- a/.agents/notes/proposed/architecture/2026-08-08-cordis-web-dynamic-packages.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/proposed/architecture/2026-08-08-cordis-web-dynamic-packages.md -2026-08-08-cordis-web-dynamic-packages.md: c8ba3940bbcf7eeaa7b5a882f91ca8165bdd8cbf -2026-08-08-cordis-web-dynamic-packages.zh.md: a6d961aef69e8820023ce3d749f0affd83a871c6 diff --git a/.agents/notes/proposed/architecture/2026-08-08-semantic-composer-chain-phases.i18n.yaml b/.agents/notes/proposed/architecture/2026-08-08-semantic-composer-chain-phases.i18n.yaml index 75c5d3a914..5edaed08bc 100644 --- a/.agents/notes/proposed/architecture/2026-08-08-semantic-composer-chain-phases.i18n.yaml +++ b/.agents/notes/proposed/architecture/2026-08-08-semantic-composer-chain-phases.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/proposed/architecture/2026-08-08-semantic-composer-chain-phases.md -2026-08-08-semantic-composer-chain-phases.md: 7d85518e9d5e5aa3e44e443cb1b90b325b0ffc6a -2026-08-08-semantic-composer-chain-phases.zh.md: a28fed3e335c6f4ecc3962d1159d2c200154bca4 +2026-08-08-semantic-composer-chain-phases.md: 8f332d0d2c7f1a99993011622cf5ccab9fdc4d28 +2026-08-08-semantic-composer-chain-phases.zh.md: 306abb76eebabc7f6e271dbad3b1968fbb7c8a49 diff --git a/.agents/notes/proposed/architecture/2026-08-08-semantic-composer-chain-phases.md b/.agents/notes/proposed/architecture/2026-08-08-semantic-composer-chain-phases.md index 7d85518e9d..8f332d0d2c 100644 --- a/.agents/notes/proposed/architecture/2026-08-08-semantic-composer-chain-phases.md +++ b/.agents/notes/proposed/architecture/2026-08-08-semantic-composer-chain-phases.md @@ -18,7 +18,7 @@ Question and approval register in `interaction`, retaining their current within- The phase vocabulary belongs to the declaring slot, not to the slot framework globally. `SlotMap` carries the exact phase tuple for compile-time registration, and the runtime `SlotSpec` repeats that tuple as the sorting authority. Other chains acquire no composer terminology and need no migration unless they deliberately declare phases. -This proposal extends the [Web subagent conversation](../../implemented/feature/2026-07-27-web-subagent-conversations.md), [Web permission and approval](../../implemented/feature/2026-07-23-web-permission-and-approval.md), and [plan-review presentation](../../implemented/feature/2026-07-30-plan-review-presentation-intent.md) contracts; it supersedes none of them. The [runtime-owned child guard](../../implemented/bug-fix/2026-08-01-ask-user-delegated-caller-guard.md) remains the authority that prevents new child-owned human waits. No active Agent Note should be archived when this proposal lands. +This proposal extends the [Web subagent conversation](../../implemented/feature/2026-07-27-web-subagent-conversations.md), [Web permission and approval](../../archived/feature/2026-07-23-web-permission-and-approval.md), and [plan-review presentation](../../archived/feature/2026-07-30-plan-review-presentation-intent.md) contracts; it supersedes none of them. The [runtime-owned child guard](../../archived/bug-fix/2026-08-01-ask-user-delegated-caller-guard.md) remains the authority that prevents new child-owned human waits. No active Agent Note should be archived when this proposal lands. ## Alternatives considered diff --git a/.agents/notes/proposed/architecture/2026-08-08-semantic-composer-chain-phases.zh.md b/.agents/notes/proposed/architecture/2026-08-08-semantic-composer-chain-phases.zh.md index a28fed3e33..306abb76ee 100644 --- a/.agents/notes/proposed/architecture/2026-08-08-semantic-composer-chain-phases.zh.md +++ b/.agents/notes/proposed/architecture/2026-08-08-semantic-composer-chain-phases.zh.md @@ -18,7 +18,7 @@ Status: proposed 阶段词汇归声明该 slot 的领域所有,而不属于全局 slot 框架。`SlotMap` 携带确切的阶段元组,用于编译期注册;运行时 `SlotSpec` 重复该元组,作为排序依据。其他链不会获得任何 composer 术语,也无需迁移,除非它们主动声明阶段。 -本提案扩展 [Web subagent 对话](../../implemented/feature/2026-07-27-web-subagent-conversations.zh.md)、[Web 权限与审批](../../implemented/feature/2026-07-23-web-permission-and-approval.zh.md)和[计划审阅呈现](../../implemented/feature/2026-07-30-plan-review-presentation-intent.zh.md)约定,但不取代其中任何一项。[运行时所有权子级守卫](../../implemented/bug-fix/2026-08-01-ask-user-delegated-caller-guard.zh.md)仍然是防止子级新建自己负责的人类等待的权威机制。本提案落地时,不应归档任何活跃 Agent Note。 +本提案扩展 [Web subagent 对话](../../implemented/feature/2026-07-27-web-subagent-conversations.zh.md)、[Web 权限与审批](../../archived/feature/2026-07-23-web-permission-and-approval.md)和[计划审阅呈现](../../archived/feature/2026-07-30-plan-review-presentation-intent.md)约定,但不取代其中任何一项。[运行时所有权子级守卫](../../archived/bug-fix/2026-08-01-ask-user-delegated-caller-guard.md)仍然是防止子级新建自己负责的人类等待的权威机制。本提案落地时,不应归档任何活跃 Agent Note。 ## 备选方案 diff --git a/.agents/notes/proposed/feature/2026-07-08-interactive-side-sessions.i18n.yaml b/.agents/notes/proposed/feature/2026-07-08-interactive-side-sessions.i18n.yaml index e7ec1f313a..80b3caab4e 100644 --- a/.agents/notes/proposed/feature/2026-07-08-interactive-side-sessions.i18n.yaml +++ b/.agents/notes/proposed/feature/2026-07-08-interactive-side-sessions.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/proposed/feature/2026-07-08-interactive-side-sessions.md -2026-07-08-interactive-side-sessions.md: d1867b7088d89e20683f54300728e19d9ae9e5e5 -2026-07-08-interactive-side-sessions.zh.md: bd2772e1d44eb7e5cc324b2e4600fe6c1bc9169f +2026-07-08-interactive-side-sessions.md: 53b21497c92a77f075dd146151a6d953ecfc7a8b +2026-07-08-interactive-side-sessions.zh.md: 439d9c4d1a275255f5962028be2bd24d5f829bc6 diff --git a/.agents/notes/proposed/feature/2026-07-08-interactive-side-sessions.md b/.agents/notes/proposed/feature/2026-07-08-interactive-side-sessions.md index d1867b7088..53b21497c9 100644 --- a/.agents/notes/proposed/feature/2026-07-08-interactive-side-sessions.md +++ b/.agents/notes/proposed/feature/2026-07-08-interactive-side-sessions.md @@ -6,7 +6,7 @@ English | [中文](2026-07-08-interactive-side-sessions.zh.md) ## Problem -A user may want to explore a question from a live session without changing its main context. Existing primitives do not expose that product shape: [session-store fork](../../implemented/feature/2026-06-30-session-store-fork-api.md) creates an unattached session, while [fork subagents](../../implemented/feature/2026-06-21-subagent-capability-seam.md) are model-driven tasks whose transcript collapses into one tool result. Neither gives the user a separate conversation, and neither records a conclusion in the parent together with the side session that produced it. +A user may want to explore a question from a live session without changing its main context. Existing primitives do not expose that product shape: [session-store fork](../../archived/feature/2026-06-30-session-store-fork-api.md) creates an unattached session, while [fork subagents](../../implemented/feature/2026-06-21-subagent-capability-seam.md) are model-driven tasks whose transcript collapses into one tool result. Neither gives the user a separate conversation, and neither records a conclusion in the parent together with the side session that produced it. ## Proposal diff --git a/.agents/notes/proposed/feature/2026-07-08-interactive-side-sessions.zh.md b/.agents/notes/proposed/feature/2026-07-08-interactive-side-sessions.zh.md index bd2772e1d4..439d9c4d1a 100644 --- a/.agents/notes/proposed/feature/2026-07-08-interactive-side-sessions.zh.md +++ b/.agents/notes/proposed/feature/2026-07-08-interactive-side-sessions.zh.md @@ -6,7 +6,7 @@ Status: proposed ## 问题 -用户可能希望在不改变当前会话主上下文的前提下,探索一个来自活跃会话的问题。现有原语无法提供这种产品形态:[会话存储 fork](../../implemented/feature/2026-06-30-session-store-fork-api.zh.md) 创建的是一个未绑定的会话,而 [fork subagent](../../implemented/feature/2026-06-21-subagent-capability-seam.zh.md) 是模型驱动的任务,其 transcript(文本记录)会折叠为一条工具结果。两者都不能给用户一个独立的对话,也都不能在父会话中同时记录结论和产生该结论的侧会话。 +用户可能希望在不改变当前会话主上下文的前提下,探索一个来自活跃会话的问题。现有原语无法提供这种产品形态:[会话存储 fork](../../archived/feature/2026-06-30-session-store-fork-api.md) 创建的是一个未绑定的会话,而 [fork subagent](../../implemented/feature/2026-06-21-subagent-capability-seam.zh.md) 是模型驱动的任务,其 transcript(文本记录)会折叠为一条工具结果。两者都不能给用户一个独立的对话,也都不能在父会话中同时记录结论和产生该结论的侧会话。 ## 提案 diff --git a/.agents/notes/proposed/feature/2026-08-04-task-surface.i18n.yaml b/.agents/notes/proposed/feature/2026-08-04-task-surface.i18n.yaml index b90286f6ba..8519ec4470 100644 --- a/.agents/notes/proposed/feature/2026-08-04-task-surface.i18n.yaml +++ b/.agents/notes/proposed/feature/2026-08-04-task-surface.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/proposed/feature/2026-08-04-task-surface.md -2026-08-04-task-surface.md: 15a550e2214660a673ff1b71ec0f38bcb005ee8f -2026-08-04-task-surface.zh.md: 5316a2cdc74ea6caa8e22c32f9af2e03802dd84f +2026-08-04-task-surface.md: d5d04a7ac8aee9936e1913430c2efa6e6c005206 +2026-08-04-task-surface.zh.md: ecba9ef7f9b45bb9f12673c30d9a9b47fb93a30e diff --git a/.agents/notes/proposed/feature/2026-08-04-task-surface.md b/.agents/notes/proposed/feature/2026-08-04-task-surface.md index 15a550e221..d5d04a7ac8 100644 --- a/.agents/notes/proposed/feature/2026-08-04-task-surface.md +++ b/.agents/notes/proposed/feature/2026-08-04-task-surface.md @@ -25,7 +25,7 @@ Task Surface is the default structured-UI path when all of the following hold: This is one trigger, not a family of product heuristics. The agent calls `show_task_surface` explicitly. A user may ask the agent to use a Task Surface in ordinary language. Products do not inspect tool names or task topics to open bespoke panels, and repeated use does not automatically turn a Task Surface into a Plugin. -Short blocking questions remain with [`ask_user_question`](../../implemented/feature/2026-07-29-ask-question-web-presentation.md). Plain explanation remains chat. Cross-Session navigation, background behavior, new services, or durable custom UI belongs to the Generated Client Plugin workflow. +Short blocking questions remain with [`ask_user_question`](../../archived/feature/2026-07-29-ask-question-web-presentation.md). Plain explanation remains chat. Cross-Session navigation, background behavior, new services, or durable custom UI belongs to the Generated Client Plugin workflow. ## Declarative model @@ -102,7 +102,7 @@ interface TaskSurfacePresentationMeta { The tool keeps a generic [render intent](../../implemented/architecture/2026-07-02-tool-render-intent-union.md). The keyed Web row reads the tagged metadata already retained on `ToolResultNode`; no new render-intent arm or presentation registry is required. Clients without Task Surface support render the ordinary result content. -The Web plugin has two static Session-scoped registrations under the [toolview](../../implemented/architecture/2026-07-23-toolview-dissolution.md) and [slot registration](../../implemented/architecture/2026-07-22-slot-type-chain-implementation.md) contracts. A keyed `conversation.chat.toolview` entry for `show_task_surface` renders the durable transcript occurrence as a compact summary and read-only replay. One `TaskSurfaceDock` entry in the existing `conversation.input.dock` is the only actionable mount: it reads the active projection, calls `getActive` for the exact identity, and owns fields, drafts, submit, and dismiss. Because the Dock is independent of transcript pagination, an active Surface remains actionable when its `ToolResultNode` is outside the loaded history window. +The Web plugin has two static Session-scoped registrations under the [toolview](../../archived/architecture/2026-07-23-toolview-dissolution.md) and [slot registration](../../implemented/architecture/2026-07-22-slot-type-chain-implementation.md) contracts. A keyed `conversation.chat.toolview` entry for `show_task_surface` renders the durable transcript occurrence as a compact summary and read-only replay. One `TaskSurfaceDock` entry in the existing `conversation.input.dock` is the only actionable mount: it reads the active projection, calls `getActive` for the exact identity, and owns fields, drafts, submit, and dismiss. Because the Dock is independent of transcript pagination, an active Surface remains actionable when its `ToolResultNode` is outside the loaded history window. The Dock follows the existing composer-chain fallback semantics. Any `conversation.composer` takeover hides the fallback composer stack, including `TaskSurfaceDock`, without unmounting it; the same draft owner reappears when the takeover resolves. A takeover does not receive Task Surface actions or create another editor. diff --git a/.agents/notes/proposed/feature/2026-08-04-task-surface.zh.md b/.agents/notes/proposed/feature/2026-08-04-task-surface.zh.md index 5316a2cdc7..ecba9ef7f9 100644 --- a/.agents/notes/proposed/feature/2026-08-04-task-surface.zh.md +++ b/.agents/notes/proposed/feature/2026-08-04-task-surface.zh.md @@ -25,7 +25,7 @@ Status: proposed 这里定义的是一个触发方式,不是一组产品启发式规则。agent 会显式调用 `show_task_surface`。用户可以通过普通语言要求 agent 使用 Task Surface。产品不会根据工具名称或任务主题打开专用面板;重复使用也不会自动把 Task Surface 转为插件。 -简短的阻塞式问题仍由 [`ask_user_question`](../../implemented/feature/2026-07-29-ask-question-web-presentation.zh.md) 处理。纯文本说明仍留在聊天中。跨会话导航、后台行为、新服务或持久自定义 UI 则属于 Generated Client Plugin 工作流。 +简短的阻塞式问题仍由 [`ask_user_question`](../../archived/feature/2026-07-29-ask-question-web-presentation.md) 处理。纯文本说明仍留在聊天中。跨会话导航、后台行为、新服务或持久自定义 UI 则属于 Generated Client Plugin 工作流。 ## 声明式模型 @@ -102,7 +102,7 @@ interface TaskSurfacePresentationMeta { 该工具保留通用 [render intent](../../implemented/architecture/2026-07-02-tool-render-intent-union.zh.md)。带 key 的 Web 行读取 `ToolResultNode` 上已经保留的带标签元数据,无需新增 render-intent 分支或呈现注册表。不支持 Task Surface 的客户端会渲染普通结果内容。 -Web 插件按照 [toolview](../../implemented/architecture/2026-07-23-toolview-dissolution.zh.md) 和 [slot 注册](../../implemented/architecture/2026-07-22-slot-type-chain-implementation.zh.md)约定,提供两个静态的会话作用域注册项。一个以 `show_task_surface` 为 key 的 `conversation.chat.toolview` 条目将持久 transcript(文本记录)调用实例渲染为简洁摘要和只读回放。现有 `conversation.input.dock` 中的一个 `TaskSurfaceDock` 条目是唯一可操作的挂载点:它读取活动投影,针对确切身份调用 `getActive`,并拥有字段、草稿、提交和关闭操作。Dock 与 transcript 分页相互独立,因此即使 `ToolResultNode` 位于已加载历史窗口之外,活动 Surface 仍可操作。 +Web 插件按照 [toolview](../../archived/architecture/2026-07-23-toolview-dissolution.md) 和 [slot 注册](../../implemented/architecture/2026-07-22-slot-type-chain-implementation.zh.md)约定,提供两个静态的会话作用域注册项。一个以 `show_task_surface` 为 key 的 `conversation.chat.toolview` 条目将持久 transcript(文本记录)调用实例渲染为简洁摘要和只读回放。现有 `conversation.input.dock` 中的一个 `TaskSurfaceDock` 条目是唯一可操作的挂载点:它读取活动投影,针对确切身份调用 `getActive`,并拥有字段、草稿、提交和关闭操作。Dock 与 transcript 分页相互独立,因此即使 `ToolResultNode` 位于已加载历史窗口之外,活动 Surface 仍可操作。 Dock 遵循现有 composer chain 的回退语义。任何 `conversation.composer` 接管都会隐藏包括 `TaskSurfaceDock` 在内的回退 composer 栈,但不会将其卸载;接管结束后,同一个草稿所有者会重新出现。接管方不会获得 Task Surface 操作,也不会创建另一个编辑器。 diff --git a/.agents/notes/proposed/process/2026-06-11-architectural-conformance.i18n.yaml b/.agents/notes/proposed/process/2026-06-11-architectural-conformance.i18n.yaml deleted file mode 100644 index 6568beb48a..0000000000 --- a/.agents/notes/proposed/process/2026-06-11-architectural-conformance.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/proposed/process/2026-06-11-architectural-conformance.md -2026-06-11-architectural-conformance.md: f7cb0d7397d4e03df225f68417da43b1fec8de62 -2026-06-11-architectural-conformance.zh.md: d553ce088f11a144ed182dc2d488adab9ba75430 diff --git a/.agents/notes/proposed/process/2026-06-11-supply-chain-and-vendor-drift.i18n.yaml b/.agents/notes/proposed/process/2026-06-11-supply-chain-and-vendor-drift.i18n.yaml index d95c401fff..adce053a55 100644 --- a/.agents/notes/proposed/process/2026-06-11-supply-chain-and-vendor-drift.i18n.yaml +++ b/.agents/notes/proposed/process/2026-06-11-supply-chain-and-vendor-drift.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/proposed/process/2026-06-11-supply-chain-and-vendor-drift.md -2026-06-11-supply-chain-and-vendor-drift.md: a27ae64556dc7366279824f1480e5681b1e86bf1 -2026-06-11-supply-chain-and-vendor-drift.zh.md: e71737c3787c5758fd0e31fed08b5c64fbb77fbd +2026-06-11-supply-chain-and-vendor-drift.md: aecab81292e8d6eb59fe13a5530ba78de9b307a5 +2026-06-11-supply-chain-and-vendor-drift.zh.md: ba55b3b1815c8164650dd4aa5022dd4f98efd6a4 diff --git a/.agents/notes/proposed/process/2026-06-11-supply-chain-and-vendor-drift.md b/.agents/notes/proposed/process/2026-06-11-supply-chain-and-vendor-drift.md index a27ae64556..aecab81292 100644 --- a/.agents/notes/proposed/process/2026-06-11-supply-chain-and-vendor-drift.md +++ b/.agents/notes/proposed/process/2026-06-11-supply-chain-and-vendor-drift.md @@ -6,7 +6,7 @@ English | [中文](2026-06-11-supply-chain-and-vendor-drift.zh.md) ## Problem -The vendor manifest ([the vendoring decision](../../implemented/process/2026-06-11-vendor-cordis-as-source.md)) is enforced at commit time in the *forward* direction (vendored change ⇒ manifest update) but nothing verifies the manifest's *claims*: that vendor/ actually equals upstream-at-SHA plus exactly the logged modifications. And the handful of true npm dependencies have no advisory monitoring or update cadence. +The vendor manifest ([the vendoring decision](../../archived/process/2026-06-11-vendor-cordis-as-source.md)) is enforced at commit time in the *forward* direction (vendored change ⇒ manifest update) but nothing verifies the manifest's *claims*: that vendor/ actually equals upstream-at-SHA plus exactly the logged modifications. And the handful of true npm dependencies have no advisory monitoring or update cadence. ## Proposal diff --git a/.agents/notes/proposed/process/2026-06-11-supply-chain-and-vendor-drift.zh.md b/.agents/notes/proposed/process/2026-06-11-supply-chain-and-vendor-drift.zh.md index e71737c378..ba55b3b181 100644 --- a/.agents/notes/proposed/process/2026-06-11-supply-chain-and-vendor-drift.zh.md +++ b/.agents/notes/proposed/process/2026-06-11-supply-chain-and-vendor-drift.zh.md @@ -6,7 +6,7 @@ Status: proposed ## 问题 -vendor manifest(元数据清单)(见[引入 vendor 的决策](../../implemented/process/2026-06-11-vendor-cordis-as-source.zh.md))在提交时仅在*正向*强制执行(vendor 变更 ⇒ manifest 更新),但没有任何机制验证 manifest 的*声明*:即 vendor/ 确实等于上游指定 SHA 的内容加上所记录的修改。此外,少量真正的 NPM 依赖也没有安全公告监控或更新节奏。 +vendor manifest(元数据清单)(见[引入 vendor 的决策](../../archived/process/2026-06-11-vendor-cordis-as-source.md))在提交时仅在*正向*强制执行(vendor 变更 ⇒ manifest 更新),但没有任何机制验证 manifest 的*声明*:即 vendor/ 确实等于上游指定 SHA 的内容加上所记录的修改。此外,少量真正的 NPM 依赖也没有安全公告监控或更新节奏。 ## 提案 diff --git a/.agents/notes/proposed/process/2026-06-20-discover-package-inventory.i18n.yaml b/.agents/notes/proposed/process/2026-06-20-discover-package-inventory.i18n.yaml index ec3740af18..f673045a49 100644 --- a/.agents/notes/proposed/process/2026-06-20-discover-package-inventory.i18n.yaml +++ b/.agents/notes/proposed/process/2026-06-20-discover-package-inventory.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/proposed/process/2026-06-20-discover-package-inventory.md -2026-06-20-discover-package-inventory.md: e1448b696d8c11d9e437ac7e7df18646f43392ef -2026-06-20-discover-package-inventory.zh.md: dc8172652e2483271c4c68264ea9f46640a5ce22 +2026-06-20-discover-package-inventory.md: 81674dd4d1e6f1ca15491754fbb35f5262be9581 +2026-06-20-discover-package-inventory.zh.md: 2a782d07ddbefc1d80eef2825220de179428377b diff --git a/.agents/notes/proposed/process/2026-06-20-discover-package-inventory.md b/.agents/notes/proposed/process/2026-06-20-discover-package-inventory.md index e1448b696d..81674dd4d1 100644 --- a/.agents/notes/proposed/process/2026-06-20-discover-package-inventory.md +++ b/.agents/notes/proposed/process/2026-06-20-discover-package-inventory.md @@ -8,7 +8,7 @@ English | [中文](2026-06-20-discover-package-inventory.zh.md) Package and gate inventories are repeated across TypeScript project references, package docs, and CI prose. Most restate package layout, manifest data, or aggregate command contents. Each new package therefore creates avoidable synchronization points. -The [package hierarchy](../../archived/architecture/2026-06-20-package-hierarchy.md) already removed several of these by hand: `scripts/publint-all.ts` now derives its list from the `packages//` layout, and the two `tsconfig` `paths` maps collapsed to one `@deepseek-ai/dsh-*` wildcard — since reverted to one explicit alias per package, generated and gated, because resolving a wildcard's candidates in order dominated source-launch boot ([explicit workspace path aliases](../../implemented/process/2026-08-27-explicit-workspace-path-aliases.md)). What remains is the inventory that cannot be globbed away — chiefly the aggregate configs' (`tsconfig.host.json`, `tsconfig.client.json`) project `references`, which TypeScript requires as explicit arrays (no wildcard form). +The [package hierarchy](../../archived/architecture/2026-06-20-package-hierarchy.md) already removed several of these by hand: `scripts/publint-all.ts` now derives its list from the `packages//` layout, and the two `tsconfig` `paths` maps collapsed to one `@deepseek-ai/dsh-*` wildcard — since reverted to one explicit alias per package, generated and gated, because resolving a wildcard's candidates in order dominated source-launch boot ([explicit workspace path aliases](../../archived/process/2026-08-27-explicit-workspace-path-aliases.md)). What remains is the inventory that cannot be globbed away — chiefly the aggregate configs' (`tsconfig.host.json`, `tsconfig.client.json`) project `references`, which TypeScript requires as explicit arrays (no wildcard form). Static lists are appropriate when they encode policy; they are needless friction when they duplicate manifest data or layout facts that already exist in `package.json`, workspace globs, or the package hierarchy. diff --git a/.agents/notes/proposed/process/2026-06-20-discover-package-inventory.zh.md b/.agents/notes/proposed/process/2026-06-20-discover-package-inventory.zh.md index dc8172652e..2a782d07dd 100644 --- a/.agents/notes/proposed/process/2026-06-20-discover-package-inventory.zh.md +++ b/.agents/notes/proposed/process/2026-06-20-discover-package-inventory.zh.md @@ -8,7 +8,7 @@ Status: proposed 包与门禁清单在 TypeScript project references、包文档和 CI 描述中反复出现。大多数只是重述包布局、manifest(元数据清单)数据或聚合命令内容。因此每新增一个包都会产生本可避免的同步点。 -[包层级结构](../../archived/architecture/2026-06-20-package-hierarchy.md)已经手动消除了其中若干:`scripts/publint-all.ts` 现在从 `packages//` 布局推导列表,两份 `tsconfig` 的 `paths` 映射也合并为一个 `@deepseek-ai/dsh-*` 通配符——该合并此后已被回退为「每包一条、由生成器托管并有门禁把关」的显式别名,因为按顺序试候选的解析开销主导了源码启动时间([显式 workspace 路径别名](../../implemented/process/2026-08-27-explicit-workspace-path-aliases.zh.md))。剩下的是无法用 glob 消除的清单,主要是聚合配置(`tsconfig.host.json`、`tsconfig.client.json`)中的项目引用(`references`)——TypeScript 要求它们是显式数组(没有通配符形式)。 +[包层级结构](../../archived/architecture/2026-06-20-package-hierarchy.md)已经手动消除了其中若干:`scripts/publint-all.ts` 现在从 `packages//` 布局推导列表,两份 `tsconfig` 的 `paths` 映射也合并为一个 `@deepseek-ai/dsh-*` 通配符——该合并此后已被回退为「每包一条、由生成器托管并有门禁把关」的显式别名,因为按顺序试候选的解析开销主导了源码启动时间([显式 workspace 路径别名](../../archived/process/2026-08-27-explicit-workspace-path-aliases.md))。剩下的是无法用 glob 消除的清单,主要是聚合配置(`tsconfig.host.json`、`tsconfig.client.json`)中的项目引用(`references`)——TypeScript 要求它们是显式数组(没有通配符形式)。 当静态列表编码的是策略时,它们是合理的;当它们只是重复 `package.json`、workspace glob 或包层级结构中已有的 manifest 数据或布局事实时,就是不必要的摩擦。 diff --git a/.agents/notes/proposed/process/2026-08-04-artifact-first-npm-baseline-publication.i18n.yaml b/.agents/notes/proposed/process/2026-08-04-artifact-first-npm-baseline-publication.i18n.yaml deleted file mode 100644 index c0a2063391..0000000000 --- a/.agents/notes/proposed/process/2026-08-04-artifact-first-npm-baseline-publication.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/proposed/process/2026-08-04-artifact-first-npm-baseline-publication.md -2026-08-04-artifact-first-npm-baseline-publication.md: e79a988531ac266d72f7d2c036bdd10f3e4520a9 -2026-08-04-artifact-first-npm-baseline-publication.zh.md: e071704741fed58e83325bbc2765fe248ef113c7 diff --git a/.agents/notes/proposed/process/2026-08-20-audience-first-documentation-quality.i18n.yaml b/.agents/notes/proposed/process/2026-08-20-audience-first-documentation-quality.i18n.yaml index dbe257b737..18f7e242ba 100644 --- a/.agents/notes/proposed/process/2026-08-20-audience-first-documentation-quality.i18n.yaml +++ b/.agents/notes/proposed/process/2026-08-20-audience-first-documentation-quality.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/proposed/process/2026-08-20-audience-first-documentation-quality.md -2026-08-20-audience-first-documentation-quality.md: efbb8b482f462f4da33241548d2ce44d766b88ca -2026-08-20-audience-first-documentation-quality.zh.md: 326e4b054f02f81707a20b18394f623a290111a6 +2026-08-20-audience-first-documentation-quality.md: d44e9508959232397b90ad8a22a5e8b6040e0748 +2026-08-20-audience-first-documentation-quality.zh.md: 88c0c64266eed9a0744b43185362342638e4a6b9 diff --git a/.agents/notes/proposed/process/2026-08-20-audience-first-documentation-quality.md b/.agents/notes/proposed/process/2026-08-20-audience-first-documentation-quality.md index efbb8b482f..d44e950895 100644 --- a/.agents/notes/proposed/process/2026-08-20-audience-first-documentation-quality.md +++ b/.agents/notes/proposed/process/2026-08-20-audience-first-documentation-quality.md @@ -10,7 +10,7 @@ The documentation system has strong placement, freshness, linking, bilingual, an ### Semantic correctness can pass without a current owner -The gates prove structure and generated freshness, not that maintained prose still names the live mechanism. The former `dsh-doc-site-sync` skill told authors to reuse a nonexistent `en-docs` sidebar and to add sections to a removed `sectionOrder`; [website/docs.ts](../../../../website/docs.ts) owns `en-guide`, `en-develop`, `en-reference`, and `sections`. The implemented [product-first README decision](../../implemented/process/2026-07-22-product-first-root-readme.md) describes an internal-testing notice and ACP, Python, and JSON-RPC surface sections absent from the [root README](../../../../README.md), although implemented Agent Notes must track shipped facts. +The gates prove structure and generated freshness, not that maintained prose still names the live mechanism. The former `dsh-doc-site-sync` skill told authors to reuse a nonexistent `en-docs` sidebar and to add sections to a removed `sectionOrder`; [website/docs.ts](../../../../website/docs.ts) owns `en-guide`, `en-develop`, `en-reference`, and `sections`. The implemented [product-first README decision](../../archived/process/2026-07-22-product-first-root-readme.md) describes an internal-testing notice and ACP, Python, and JSON-RPC surface sections absent from the [root README](../../../../README.md), although implemented Agent Notes must track shipped facts. The budget policy has the same split. [docs/AGENTS.md](../../../../docs/AGENTS.md#wordcount-budgets) states a 1,800-word target and 5% headroom for `architecture.md`, but the [budget manifest](../../../../scripts/doc-budgets.manifest.json) allows 2,400 words while the file contains 1,313. The budget gate passes because it checks the manifest ceiling, not the target or ratchet rule. High-impact prose therefore needs a named source or a focused check that consumes the source; a second hand-written copy is not a freshness mechanism. diff --git a/.agents/notes/proposed/process/2026-08-20-audience-first-documentation-quality.zh.md b/.agents/notes/proposed/process/2026-08-20-audience-first-documentation-quality.zh.md index 326e4b054f..88c0c64266 100644 --- a/.agents/notes/proposed/process/2026-08-20-audience-first-documentation-quality.zh.md +++ b/.agents/notes/proposed/process/2026-08-20-audience-first-documentation-quality.zh.md @@ -10,7 +10,7 @@ Status: proposed ### 语义正确性可以在没有现行归属者的情况下通过检查 -这些门禁证明结构和生成内容的新鲜度,却不能证明维护中的正文仍指向实际机制。以前的 `dsh-doc-site-sync` 技能曾要求作者复用并不存在的 `en-docs` 侧边栏,还要求把章节加入已经移除的 `sectionOrder`;[website/docs.ts](../../../../website/docs.ts)实际拥有 `en-guide`、`en-develop`、`en-reference` 和 `sections`。已实现的[产品优先 README 决策](../../implemented/process/2026-07-22-product-first-root-readme.zh.md)描述了内部测试说明,以及 ACP、Python 与 JSON-RPC 界面章节,但[根 README](../../../../README.zh.md)并无这些内容;与此同时,已实现 Agent Note 必须跟随已交付事实。 +这些门禁证明结构和生成内容的新鲜度,却不能证明维护中的正文仍指向实际机制。以前的 `dsh-doc-site-sync` 技能曾要求作者复用并不存在的 `en-docs` 侧边栏,还要求把章节加入已经移除的 `sectionOrder`;[website/docs.ts](../../../../website/docs.ts)实际拥有 `en-guide`、`en-develop`、`en-reference` 和 `sections`。已实现的[产品优先 README 决策](../../archived/process/2026-07-22-product-first-root-readme.md)描述了内部测试说明,以及 ACP、Python 与 JSON-RPC 界面章节,但[根 README](../../../../README.zh.md)并无这些内容;与此同时,已实现 Agent Note 必须跟随已交付事实。 预算策略也存在相同的分裂。[docs/AGENTS.md](../../../../docs/AGENTS.md#wordcount-budgets)为 `architecture.md` 规定 1,800 词目标和 5% 余量,但[预算 manifest(元数据清单)](../../../../scripts/doc-budgets.manifest.json)允许 2,400 词,而该文件实际包含 1,313 词。预算门禁之所以通过,是因为它只检查 manifest 上限,不检查目标或棘轮规则。因此,高影响正文需要一个具名真源或消费真源的聚焦检查;第二份手写副本不是新鲜度机制。 diff --git a/.agents/notes/proposed/simplification/2026-07-04-prune-dead-core-spine-api.i18n.yaml b/.agents/notes/proposed/simplification/2026-07-04-prune-dead-core-spine-api.i18n.yaml deleted file mode 100644 index eb78f7fe94..0000000000 --- a/.agents/notes/proposed/simplification/2026-07-04-prune-dead-core-spine-api.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/proposed/simplification/2026-07-04-prune-dead-core-spine-api.md -2026-07-04-prune-dead-core-spine-api.md: b26a39ef8d18306b9d42894eaab4925c69c37c8b -2026-07-04-prune-dead-core-spine-api.zh.md: b72e902504f66fc48947ea71c75a257ad724e643 diff --git a/.agents/notes/proposed/simplification/2026-07-19-make-jsonrpc-directional.i18n.yaml b/.agents/notes/proposed/simplification/2026-07-19-make-jsonrpc-directional.i18n.yaml deleted file mode 100644 index 6f4de4d9ae..0000000000 --- a/.agents/notes/proposed/simplification/2026-07-19-make-jsonrpc-directional.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/proposed/simplification/2026-07-19-make-jsonrpc-directional.md -2026-07-19-make-jsonrpc-directional.md: 6afb75eaf39ef8ce32b8885fde0e42cd388a46ec -2026-07-19-make-jsonrpc-directional.zh.md: a6c6abb7bdb5b3c03746c93604660ab86a4ce9d6 diff --git a/.agents/notes/proposed/testing/2026-06-11-deterministic-and-stress-testing.i18n.yaml b/.agents/notes/proposed/testing/2026-06-11-deterministic-and-stress-testing.i18n.yaml index ca7d2c9317..b6e4d8e0cd 100644 --- a/.agents/notes/proposed/testing/2026-06-11-deterministic-and-stress-testing.i18n.yaml +++ b/.agents/notes/proposed/testing/2026-06-11-deterministic-and-stress-testing.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/proposed/testing/2026-06-11-deterministic-and-stress-testing.md -2026-06-11-deterministic-and-stress-testing.md: fd69611a393e36df5c5707640175bfd85c8e77ea -2026-06-11-deterministic-and-stress-testing.zh.md: 5ba8dbe4cf2a6c08bf1a3d68def9f801430b176a +2026-06-11-deterministic-and-stress-testing.md: d4264663178829c6e6e309ce940926bd94778755 +2026-06-11-deterministic-and-stress-testing.zh.md: 2d349682caa4f57b6d0d093d1b48c24ae431a5a5 diff --git a/.agents/notes/proposed/testing/2026-06-11-deterministic-and-stress-testing.md b/.agents/notes/proposed/testing/2026-06-11-deterministic-and-stress-testing.md index fd69611a39..d426466317 100644 --- a/.agents/notes/proposed/testing/2026-06-11-deterministic-and-stress-testing.md +++ b/.agents/notes/proposed/testing/2026-06-11-deterministic-and-stress-testing.md @@ -4,7 +4,7 @@ Status: proposed English | [中文](2026-06-11-deterministic-and-stress-testing.zh.md) -The [CI test reliability skill](../../implemented/testing/2026-08-28-ci-test-reliability-skill.md) provides current authoring and diagnosis guidance without implementing the lint rule, universal replay fixture, or nightly stress job proposed here. Those mechanisms remain proposed. +The [CI test reliability skill](../../../skills/dsh-ci-test-reliability/SKILL.md) provides current authoring and diagnosis guidance without implementing the lint rule, universal replay fixture, or nightly stress job proposed here. Those mechanisms remain proposed. ## Problem diff --git a/.agents/notes/proposed/testing/2026-06-11-deterministic-and-stress-testing.zh.md b/.agents/notes/proposed/testing/2026-06-11-deterministic-and-stress-testing.zh.md index 5ba8dbe4cf..2d349682ca 100644 --- a/.agents/notes/proposed/testing/2026-06-11-deterministic-and-stress-testing.zh.md +++ b/.agents/notes/proposed/testing/2026-06-11-deterministic-and-stress-testing.zh.md @@ -4,7 +4,7 @@ Status: proposed [English](2026-06-11-deterministic-and-stress-testing.md) | 中文 -[CI 测试可靠性 Skill](../../implemented/testing/2026-08-28-ci-test-reliability-skill.zh.md) 提供当前的测试编写与诊断指引,但没有实现本提案中的 lint 规则、通用回放 fixture 或 nightly stress job。这些机制仍处于提案状态。 +[CI 测试可靠性 Skill](../../../skills/dsh-ci-test-reliability/SKILL.md) 提供当前的测试编写与诊断指引,但没有实现本提案中的 lint 规则、通用回放 fixture 或 nightly stress job。这些机制仍处于提案状态。 ## 问题 diff --git a/.agents/notes/rejected/simplification/2026-06-20-drop-bash-output-spill-files.i18n.yaml b/.agents/notes/rejected/architecture/2026-06-16-typed-event-schemas.i18n.yaml similarity index 56% rename from .agents/notes/rejected/simplification/2026-06-20-drop-bash-output-spill-files.i18n.yaml rename to .agents/notes/rejected/architecture/2026-06-16-typed-event-schemas.i18n.yaml index e125994e1f..9a28742fb7 100644 --- a/.agents/notes/rejected/simplification/2026-06-20-drop-bash-output-spill-files.i18n.yaml +++ b/.agents/notes/rejected/architecture/2026-06-16-typed-event-schemas.i18n.yaml @@ -1,6 +1,6 @@ # Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/rejected/simplification/2026-06-20-drop-bash-output-spill-files.md -2026-06-20-drop-bash-output-spill-files.md: 55bd0dff02f5a09ceb5e557bbe6ddcf36f7791fe -2026-06-20-drop-bash-output-spill-files.zh.md: e06d4426fc894dc816e4561e429d20daa7f77423 +# pnpm run verify-translation-pairing --write .agents/notes/rejected/architecture/2026-06-16-typed-event-schemas.md +2026-06-16-typed-event-schemas.md: 5912c39016acb4bc44089af16bf46edffe3023d0 +2026-06-16-typed-event-schemas.zh.md: 67d0c1be31e56ae6f109b5cc4402629c2b6f868f diff --git a/.agents/notes/proposed/architecture/2026-06-16-typed-event-schemas.md b/.agents/notes/rejected/architecture/2026-06-16-typed-event-schemas.md similarity index 98% rename from .agents/notes/proposed/architecture/2026-06-16-typed-event-schemas.md rename to .agents/notes/rejected/architecture/2026-06-16-typed-event-schemas.md index 3a9788e903..5912c39016 100644 --- a/.agents/notes/proposed/architecture/2026-06-16-typed-event-schemas.md +++ b/.agents/notes/rejected/architecture/2026-06-16-typed-event-schemas.md @@ -1,6 +1,6 @@ # Agent Note: Runtime schemas for the event vocabulary (Zod vs the merge-extensible-map pattern) -Status: proposed +Status: rejected — runtime event-schema registry declined; event maps stay compile-time, Zod validates projection state, migrations validate durable payloads English | [中文](2026-06-16-typed-event-schemas.zh.md) diff --git a/.agents/notes/proposed/architecture/2026-06-16-typed-event-schemas.zh.md b/.agents/notes/rejected/architecture/2026-06-16-typed-event-schemas.zh.md similarity index 98% rename from .agents/notes/proposed/architecture/2026-06-16-typed-event-schemas.zh.md rename to .agents/notes/rejected/architecture/2026-06-16-typed-event-schemas.zh.md index 406d97c934..67d0c1be31 100644 --- a/.agents/notes/proposed/architecture/2026-06-16-typed-event-schemas.zh.md +++ b/.agents/notes/rejected/architecture/2026-06-16-typed-event-schemas.zh.md @@ -1,6 +1,6 @@ # Agent Note: 事件词汇的运行时 schema(Zod 与 merge-extensible-map 模式之辩) -Status: proposed +Status: rejected — runtime event-schema registry declined; event maps stay compile-time, Zod validates projection state, migrations validate durable payloads [English](2026-06-16-typed-event-schemas.md) | 中文 diff --git a/.agents/notes/rejected/simplification/2026-07-12-collapse-workflow-to-foreground-core.i18n.yaml b/.agents/notes/rejected/architecture/2026-07-25-client-settings-locale-theme.i18n.yaml similarity index 54% rename from .agents/notes/rejected/simplification/2026-07-12-collapse-workflow-to-foreground-core.i18n.yaml rename to .agents/notes/rejected/architecture/2026-07-25-client-settings-locale-theme.i18n.yaml index eab79aab67..76a82753fc 100644 --- a/.agents/notes/rejected/simplification/2026-07-12-collapse-workflow-to-foreground-core.i18n.yaml +++ b/.agents/notes/rejected/architecture/2026-07-25-client-settings-locale-theme.i18n.yaml @@ -1,6 +1,6 @@ # Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write .agents/notes/rejected/simplification/2026-07-12-collapse-workflow-to-foreground-core.md -2026-07-12-collapse-workflow-to-foreground-core.md: 506a71593f6d81a23b2e3e1dc0b5a0e620f30ac3 -2026-07-12-collapse-workflow-to-foreground-core.zh.md: 4d15df5513e9a1bdb7105fac83b67d94a60d708f +# pnpm run verify-translation-pairing --write .agents/notes/rejected/architecture/2026-07-25-client-settings-locale-theme.md +2026-07-25-client-settings-locale-theme.md: e7f4b64ab0d44492435b63a066abca9d0ae1394d +2026-07-25-client-settings-locale-theme.zh.md: 9edd7395afd48fd7088e0c64d74d1c704a584b15 diff --git a/.agents/notes/proposed/architecture/2026-07-25-client-settings-locale-theme.md b/.agents/notes/rejected/architecture/2026-07-25-client-settings-locale-theme.md similarity index 93% rename from .agents/notes/proposed/architecture/2026-07-25-client-settings-locale-theme.md rename to .agents/notes/rejected/architecture/2026-07-25-client-settings-locale-theme.md index 9d7a61ae7c..e7f4b64ab0 100644 --- a/.agents/notes/proposed/architecture/2026-07-25-client-settings-locale-theme.md +++ b/.agents/notes/rejected/architecture/2026-07-25-client-settings-locale-theme.md @@ -1,6 +1,6 @@ # Agent Note: Client Settings, Locale, and Theme layering -Status: proposed +Status: rejected — closed as a proposal: the shipped ui-settings, locale, and ui-theme packages and their READMEs own the design English | [中文](2026-07-25-client-settings-locale-theme.zh.md) @@ -55,11 +55,11 @@ root └─ models (order 10) ui-settings-models 注册 ``` -Section and item contributions use `ctx.slots.inject()` and do not depend on the client manifest's apply order; localized labels ride the label thunk from the [full-rollout note](../../implemented/architecture/2026-07-30-client-locale-full-rollout.md). The SlotMap types split homes: trigger/header/close/section have their canonical home in the ui-settings contract (the consumers, general and models, both depend on the shell — no cycle); `settings.general.item`'s canonical home is the locale package — it is the lowest common dependency of all item registrants (a settings row always carries copy), while the declarer general's contract is unreachable from locale/ui-theme (it would form a cycle); ui-theme consumes it through a re-export outlet. +Section and item contributions use `ctx.slots.inject()` and do not depend on the client manifest's apply order; localized labels ride the label thunk from the [full-rollout note](../../archived/architecture/2026-07-30-client-locale-full-rollout.md). The SlotMap types split homes: trigger/header/close/section have their canonical home in the ui-settings contract (the consumers, general and models, both depend on the shell — no cycle); `settings.general.item`'s canonical home is the locale package — it is the lowest common dependency of all item registrants (a settings row always carries copy), while the declarer general's contract is unreachable from locale/ui-theme (it would form a cycle); ui-theme consumes it through a re-export outlet. ### Slot declarations are first-class injectable waits -`SlotRegistry.inject()` now waits on the typed ledger key directly; it does not bridge declarations into synthetic `slot:` Cordis services. The callback follows declaration collapse and redeclaration while its controller remains owned by the contributing plugin fiber, and direct registration into an undeclared slot still fails loud. This removes the stale-disposer presence machine and the typo-prone parallel service namespace. The complete lifecycle and failure contract lives in the [slot declaration injection decision](../../implemented/architecture/2026-08-05-slot-declaration-injection.md). +`SlotRegistry.inject()` now waits on the typed ledger key directly; it does not bridge declarations into synthetic `slot:` Cordis services. The callback follows declaration collapse and redeclaration while its controller remains owned by the contributing plugin fiber, and direct registration into an undeclared slot still fails loud. This removes the stale-disposer presence machine and the typo-prone parallel service namespace. The complete lifecycle and failure contract lives in the [slot declaration injection decision](../../archived/architecture/2026-08-05-slot-declaration-injection.md). ### Service contracts diff --git a/.agents/notes/proposed/architecture/2026-07-25-client-settings-locale-theme.zh.md b/.agents/notes/rejected/architecture/2026-07-25-client-settings-locale-theme.zh.md similarity index 92% rename from .agents/notes/proposed/architecture/2026-07-25-client-settings-locale-theme.zh.md rename to .agents/notes/rejected/architecture/2026-07-25-client-settings-locale-theme.zh.md index ce93afd3cb..9edd7395af 100644 --- a/.agents/notes/proposed/architecture/2026-07-25-client-settings-locale-theme.zh.md +++ b/.agents/notes/rejected/architecture/2026-07-25-client-settings-locale-theme.zh.md @@ -1,6 +1,6 @@ # Agent Note: Client Settings、Locale 与 Theme 分层 -Status: proposed +Status: rejected — closed as a proposal: the shipped ui-settings, locale, and ui-theme packages and their READMEs own the design [English](2026-07-25-client-settings-locale-theme.md) | 中文 @@ -55,11 +55,11 @@ root └─ models (order 10) ui-settings-models 注册 ``` -section/item contribution 使用 `ctx.slots.inject()`,不依赖 client manifest(元数据清单)的 apply 顺序;本地化 label 走 [全量接入 Note](../../implemented/architecture/2026-07-30-client-locale-full-rollout.zh.md) 的 label thunk。SlotMap 类型分家:trigger/header/close/section 正家在 ui-settings 约定(消费方 general/models 均依赖壳,无环);`settings.general.item` 正家在 locale 包——它是全部 item 注册方的最低公共依赖(设置行必带文案),而声明方 general 的约定对 locale/ui-theme 不可达(会成环);ui-theme 经 re-export 出口消费。 +section/item contribution 使用 `ctx.slots.inject()`,不依赖 client manifest(元数据清单)的 apply 顺序;本地化 label 走 [全量接入 Note](../../archived/architecture/2026-07-30-client-locale-full-rollout.md) 的 label thunk。SlotMap 类型分家:trigger/header/close/section 正家在 ui-settings 约定(消费方 general/models 均依赖壳,无环);`settings.general.item` 正家在 locale 包——它是全部 item 注册方的最低公共依赖(设置行必带文案),而声明方 general 的约定对 locale/ui-theme 不可达(会成环);ui-theme 经 re-export 出口消费。 ### slot 声明是一等可注入等待对象 -`SlotRegistry.inject()` 直接等待有类型约束的 ledger key;它不会将声明桥接为合成的 `slot:` Cordis 服务。回调会跟随声明折叠与重新声明,而其控制器仍归贡献方插件 fiber 所有;直接向未声明 slot 注册仍会直接报错。这删除了基于陈旧 disposer 的在位状态机,以及容易因拼写错误出错的平行服务命名空间。完整的生命周期与失败约定见 [slot 声明注入决策](../../implemented/architecture/2026-08-05-slot-declaration-injection.zh.md)。 +`SlotRegistry.inject()` 直接等待有类型约束的 ledger key;它不会将声明桥接为合成的 `slot:` Cordis 服务。回调会跟随声明折叠与重新声明,而其控制器仍归贡献方插件 fiber 所有;直接向未声明 slot 注册仍会直接报错。这删除了基于陈旧 disposer 的在位状态机,以及容易因拼写错误出错的平行服务命名空间。完整的生命周期与失败约定见 [slot 声明注入决策](../../archived/architecture/2026-08-05-slot-declaration-injection.md)。 ### 服务约定 diff --git a/.agents/notes/rejected/architecture/2026-08-08-cordis-web-dynamic-packages.i18n.yaml b/.agents/notes/rejected/architecture/2026-08-08-cordis-web-dynamic-packages.i18n.yaml new file mode 100644 index 0000000000..d2969612cb --- /dev/null +++ b/.agents/notes/rejected/architecture/2026-08-08-cordis-web-dynamic-packages.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/rejected/architecture/2026-08-08-cordis-web-dynamic-packages.md +2026-08-08-cordis-web-dynamic-packages.md: e6c7b9135198ae4f3c21f0b5116e99c521ede185 +2026-08-08-cordis-web-dynamic-packages.zh.md: 269f0f279f5415c6506bb509bfb54c3b819637d6 diff --git a/.agents/notes/proposed/architecture/2026-08-08-cordis-web-dynamic-packages.md b/.agents/notes/rejected/architecture/2026-08-08-cordis-web-dynamic-packages.md similarity index 99% rename from .agents/notes/proposed/architecture/2026-08-08-cordis-web-dynamic-packages.md rename to .agents/notes/rejected/architecture/2026-08-08-cordis-web-dynamic-packages.md index c8ba3940bb..e6c7b91351 100644 --- a/.agents/notes/proposed/architecture/2026-08-08-cordis-web-dynamic-packages.md +++ b/.agents/notes/rejected/architecture/2026-08-08-cordis-web-dynamic-packages.md @@ -1,6 +1,6 @@ # Agent Note: Cordis Host/Client Dynamic Plugin Runtime -Status: proposed +Status: rejected — closed as a proposal: the shipped packages/extensions runtime and its READMEs own the design English | [中文](2026-08-08-cordis-web-dynamic-packages.zh.md) diff --git a/.agents/notes/proposed/architecture/2026-08-08-cordis-web-dynamic-packages.zh.md b/.agents/notes/rejected/architecture/2026-08-08-cordis-web-dynamic-packages.zh.md similarity index 99% rename from .agents/notes/proposed/architecture/2026-08-08-cordis-web-dynamic-packages.zh.md rename to .agents/notes/rejected/architecture/2026-08-08-cordis-web-dynamic-packages.zh.md index a6d961aef6..269f0f279f 100644 --- a/.agents/notes/proposed/architecture/2026-08-08-cordis-web-dynamic-packages.zh.md +++ b/.agents/notes/rejected/architecture/2026-08-08-cordis-web-dynamic-packages.zh.md @@ -1,6 +1,6 @@ # Agent Note: Cordis Host/Client 动态插件运行体系 -Status: proposed +Status: rejected — closed as a proposal: the shipped packages/extensions runtime and its READMEs own the design [English](2026-08-08-cordis-web-dynamic-packages.md) | 中文 diff --git a/.agents/notes/rejected/process/2026-06-11-architectural-conformance.i18n.yaml b/.agents/notes/rejected/process/2026-06-11-architectural-conformance.i18n.yaml new file mode 100644 index 0000000000..1d03942760 --- /dev/null +++ b/.agents/notes/rejected/process/2026-06-11-architectural-conformance.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/rejected/process/2026-06-11-architectural-conformance.md +2026-06-11-architectural-conformance.md: 631b032235aba3ecd0045cdfc72e719265efc867 +2026-06-11-architectural-conformance.zh.md: 74af5a377c0f80a6c53ecf2a1a8935c1e2f92f4c diff --git a/.agents/notes/proposed/process/2026-06-11-architectural-conformance.md b/.agents/notes/rejected/process/2026-06-11-architectural-conformance.md similarity index 94% rename from .agents/notes/proposed/process/2026-06-11-architectural-conformance.md rename to .agents/notes/rejected/process/2026-06-11-architectural-conformance.md index f7cb0d7397..631b032235 100644 --- a/.agents/notes/proposed/process/2026-06-11-architectural-conformance.md +++ b/.agents/notes/rejected/process/2026-06-11-architectural-conformance.md @@ -1,6 +1,6 @@ # Agent Note: Architectural conformance — dependency rules and the adapter kit -Status: proposed +Status: rejected — premise gone: plugins depend on dsh-agent-loop by design; dsh-llm/invariant and the hygiene dependency gates own conformance English | [中文](2026-06-11-architectural-conformance.zh.md) diff --git a/.agents/notes/proposed/process/2026-06-11-architectural-conformance.zh.md b/.agents/notes/rejected/process/2026-06-11-architectural-conformance.zh.md similarity index 94% rename from .agents/notes/proposed/process/2026-06-11-architectural-conformance.zh.md rename to .agents/notes/rejected/process/2026-06-11-architectural-conformance.zh.md index d553ce088f..74af5a377c 100644 --- a/.agents/notes/proposed/process/2026-06-11-architectural-conformance.zh.md +++ b/.agents/notes/rejected/process/2026-06-11-architectural-conformance.zh.md @@ -1,6 +1,6 @@ # Agent Note: 架构一致性——依赖规则与适配器套件 -Status: proposed +Status: rejected — premise gone: plugins depend on dsh-agent-loop by design; dsh-llm/invariant and the hygiene dependency gates own conformance [English](2026-06-11-architectural-conformance.md) | 中文 diff --git a/.agents/notes/rejected/process/2026-08-04-artifact-first-npm-baseline-publication.i18n.yaml b/.agents/notes/rejected/process/2026-08-04-artifact-first-npm-baseline-publication.i18n.yaml new file mode 100644 index 0000000000..785297bf28 --- /dev/null +++ b/.agents/notes/rejected/process/2026-08-04-artifact-first-npm-baseline-publication.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/rejected/process/2026-08-04-artifact-first-npm-baseline-publication.md +2026-08-04-artifact-first-npm-baseline-publication.md: ab4171c60dea47dbdf8fbd7b9d32a41abf36407d +2026-08-04-artifact-first-npm-baseline-publication.zh.md: 8b1faf75e1ecb616d2895b4f3d123fff1f37fbf6 diff --git a/.agents/notes/proposed/process/2026-08-04-artifact-first-npm-baseline-publication.md b/.agents/notes/rejected/process/2026-08-04-artifact-first-npm-baseline-publication.md similarity index 99% rename from .agents/notes/proposed/process/2026-08-04-artifact-first-npm-baseline-publication.md rename to .agents/notes/rejected/process/2026-08-04-artifact-first-npm-baseline-publication.md index e79a988531..ab4171c60d 100644 --- a/.agents/notes/proposed/process/2026-08-04-artifact-first-npm-baseline-publication.md +++ b/.agents/notes/rejected/process/2026-08-04-artifact-first-npm-baseline-publication.md @@ -1,6 +1,6 @@ # Agent Note: Artifact-first NPM baseline publication -Status: proposed +Status: rejected — superseded by 2026-08-10-npm-release-sequences: numbered versions and pack→protected publish shipped; timestamp versions were not adopted English | [中文](2026-08-04-artifact-first-npm-baseline-publication.zh.md) diff --git a/.agents/notes/proposed/process/2026-08-04-artifact-first-npm-baseline-publication.zh.md b/.agents/notes/rejected/process/2026-08-04-artifact-first-npm-baseline-publication.zh.md similarity index 98% rename from .agents/notes/proposed/process/2026-08-04-artifact-first-npm-baseline-publication.zh.md rename to .agents/notes/rejected/process/2026-08-04-artifact-first-npm-baseline-publication.zh.md index e071704741..8b1faf75e1 100644 --- a/.agents/notes/proposed/process/2026-08-04-artifact-first-npm-baseline-publication.zh.md +++ b/.agents/notes/rejected/process/2026-08-04-artifact-first-npm-baseline-publication.zh.md @@ -1,6 +1,6 @@ # Agent Note: 以产物为先的 NPM 基线发布 -Status: proposed +Status: rejected — superseded by 2026-08-10-npm-release-sequences: numbered versions and pack→protected publish shipped; timestamp versions were not adopted [English](2026-08-04-artifact-first-npm-baseline-publication.md) | 中文 diff --git a/.agents/notes/rejected/simplification/2026-06-20-drop-bash-output-spill-files.md b/.agents/notes/rejected/simplification/2026-06-20-drop-bash-output-spill-files.md deleted file mode 100644 index 55bd0dff02..0000000000 --- a/.agents/notes/rejected/simplification/2026-06-20-drop-bash-output-spill-files.md +++ /dev/null @@ -1,31 +0,0 @@ -# Agent Note: Drop bash full-output spill files - -Status: rejected — full-output recovery is a real bash behavior. A future artifact/blob service may generalize it, but dropping spill files before that replacement would lose useful command output. - -English | [中文](2026-06-20-drop-bash-output-spill-files.zh.md) - -## Problem - -`dsh-bash-local` keeps bounded in-memory output and spills large stdout/stderr streams into private temp files. That requires a private directory, random owner-only file creation, close-failure handling, byte-offset incremental reads, lossy read reporting, path rendering in model-facing text, and cleanup discipline. The tool then tells the model to read a local spill path when output was truncated. - -This solves a real problem, but in a narrow and leaky way. A spill path is a process-local filesystem artifact exposed to model output, not a durable harness artifact with scoped access, retention, or UI affordances. It also complicates background-job reads because a lossy incremental read has to point at one or two spill files. - -## Proposal - -Keep tail truncation, drop full-output spill files. A bash result contains the bounded tail plus a clear truncation marker; no path is emitted. If users need full-output recovery, add a generic artifact/blob service with explicit ownership, cleanup, and UI rendering, then let bash attach large outputs to that service. - -This proposal can land independently of [a generic long-running tool runtime](../../implemented/architecture/2026-06-20-generic-long-running-tool-runtime.md). If background jobs stay, `bash_output` should still report that output was dropped, but without advertising a spill path. - -## Acceptance criteria - -- `CollectedOutput` no longer carries spill paths. -- `OutputCollector` keeps bounded buffers only and deletes the temp-file machinery. -- `renderResult()` reports truncation without a filesystem path. -- Tests cover tail truncation and no longer assert full-output file contents. -- Security guidance in [docs/defensive-patterns.md](../../../../docs/defensive-patterns.md) stops treating private spill files as a model-visible interface. - -## What we give up - -A model or user cannot recover the omitted prefix of a huge command output from a temp file. That is acceptable until there is a real artifact service. The current spill path is too much bespoke machinery for a feature whose lifecycle and permissions are not designed. - - diff --git a/.agents/notes/rejected/simplification/2026-06-20-drop-bash-output-spill-files.zh.md b/.agents/notes/rejected/simplification/2026-06-20-drop-bash-output-spill-files.zh.md deleted file mode 100644 index e06d4426fc..0000000000 --- a/.agents/notes/rejected/simplification/2026-06-20-drop-bash-output-spill-files.zh.md +++ /dev/null @@ -1,31 +0,0 @@ -# Agent Note: 移除 bash 完整输出 spill 文件 - -Status: rejected — 完整输出恢复是真实的 bash 行为。未来的产物/blob 服务或许能将其泛化,但在替代方案就位前删除 spill 文件会丢失有用的命令输出。 - -[English](2026-06-20-drop-bash-output-spill-files.md) | 中文 - -## 问题 - -`dsh-bash-local` 在内存中保留有界的输出,并将大体量的 stdout/stderr 流写入私有临时 spill 文件。这要求一个私有目录、随机创建仅所有者可访问的文件、关闭失败处理、基于字节偏移的增量读取、有损读取报告、在面向模型的文本中渲染路径,以及清理纪律。当输出被截断时,该工具会告知模型去读取一个本地 spill 路径。 - -这解决了一个真实问题,但方式狭隘且有泄漏。spill 路径是一项暴露给模型的进程本地文件系统产物,而非具有作用域访问控制、保留策略或 UI 支持的持久化 harness 产物。它还使后台任务的读取变得复杂,因为有损增量读取必须指向一个或两个 spill 文件。 - -## 提案 - -保留尾部截断,移除完整输出 spill 文件。bash 结果包含有界的尾部内容加一个明确的截断标记;不输出路径。如果用户需要恢复完整输出,则添加一个通用的产物/blob 服务(具有明确的所有权、清理和 UI 渲染),然后让 bash 将大体量输出附加到该服务。 - -本提案可以独立于[通用长时间运行工具运行时](../../implemented/architecture/2026-06-20-generic-long-running-tool-runtime.zh.md)落地。如果后台任务保留,`bash_output` 仍应报告输出已被丢弃,但不再提供 spill 路径。 - -## 验收标准 - -- `CollectedOutput` 不再携带 spill 路径。 -- `OutputCollector` 仅保留有界缓冲区,删除临时文件机制。 -- `renderResult()` 报告截断时不包含文件系统路径。 -- 测试覆盖尾部截断,不再断言完整输出文件的内容。 -- [docs/defensive-patterns.md](../../../../docs/defensive-patterns.zh.md) 中的安全指导不再将私有 spill 文件视为面向模型的接口。 - -## 放弃的能力 - -模型或用户无法再从临时文件恢复大体量命令输出中被省略的前缀。在真正的产物服务出现之前,这是可以接受的。当前的 spill 路径为一个生命周期和权限均未经设计的功能引入了过多的专用机制。 - - diff --git a/.agents/notes/rejected/simplification/2026-07-04-prune-dead-core-spine-api.i18n.yaml b/.agents/notes/rejected/simplification/2026-07-04-prune-dead-core-spine-api.i18n.yaml new file mode 100644 index 0000000000..f23303306b --- /dev/null +++ b/.agents/notes/rejected/simplification/2026-07-04-prune-dead-core-spine-api.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/rejected/simplification/2026-07-04-prune-dead-core-spine-api.md +2026-07-04-prune-dead-core-spine-api.md: b2f6787e960bb85b25810836bf21476a9abdc0e3 +2026-07-04-prune-dead-core-spine-api.zh.md: 73dd1b94e06002b7b24f3229d8885b964058eed1 diff --git a/.agents/notes/proposed/simplification/2026-07-04-prune-dead-core-spine-api.md b/.agents/notes/rejected/simplification/2026-07-04-prune-dead-core-spine-api.md similarity index 98% rename from .agents/notes/proposed/simplification/2026-07-04-prune-dead-core-spine-api.md rename to .agents/notes/rejected/simplification/2026-07-04-prune-dead-core-spine-api.md index b26a39ef8d..b2f6787e96 100644 --- a/.agents/notes/proposed/simplification/2026-07-04-prune-dead-core-spine-api.md +++ b/.agents/notes/rejected/simplification/2026-07-04-prune-dead-core-spine-api.md @@ -1,6 +1,6 @@ # Agent Note: Prune dead public API and result fields -Status: proposed +Status: rejected — stale 2026-07 inventory: rows were pruned piecemeal or gained callers; a fresh audit must supersede it English | [中文](2026-07-04-prune-dead-core-spine-api.zh.md) diff --git a/.agents/notes/proposed/simplification/2026-07-04-prune-dead-core-spine-api.zh.md b/.agents/notes/rejected/simplification/2026-07-04-prune-dead-core-spine-api.zh.md similarity index 98% rename from .agents/notes/proposed/simplification/2026-07-04-prune-dead-core-spine-api.zh.md rename to .agents/notes/rejected/simplification/2026-07-04-prune-dead-core-spine-api.zh.md index b72e902504..73dd1b94e0 100644 --- a/.agents/notes/proposed/simplification/2026-07-04-prune-dead-core-spine-api.zh.md +++ b/.agents/notes/rejected/simplification/2026-07-04-prune-dead-core-spine-api.zh.md @@ -1,6 +1,6 @@ # Agent Note: 裁剪无用的公开与结果接口 -Status: proposed +Status: rejected — stale 2026-07 inventory: rows were pruned piecemeal or gained callers; a fresh audit must supersede it [English](2026-07-04-prune-dead-core-spine-api.md) | 中文 diff --git a/.agents/notes/rejected/simplification/2026-07-12-collapse-workflow-to-foreground-core.md b/.agents/notes/rejected/simplification/2026-07-12-collapse-workflow-to-foreground-core.md deleted file mode 100644 index 506a71593f..0000000000 --- a/.agents/notes/rejected/simplification/2026-07-12-collapse-workflow-to-foreground-core.md +++ /dev/null @@ -1,39 +0,0 @@ -# Agent Note: Collapse workflows to the exercised foreground core - -Status: rejected — Workflow progress is an intentional observation API; make it useful through a consumer instead of deleting it. - -English | [中文](2026-07-12-collapse-workflow-to-foreground-core.zh.md) - -## Problem - -The workflow capability executes foreground JavaScript that composes subagents, but it also carries an unconsumed progress-observation system. No production listener subscribes to any of the six `workflow/*` events; listeners exist only in workflow tests. Nevertheless the seam defines run/phase/agent outcome payloads, the worker sends phase/log/agent lifecycle protocol messages, the host forwards them through a `liveAgents` pairing ledger, and the engine maintains run ids solely to correlate those notifications. - -The progress vocabulary is not merely unused; it cannot serve its only named future owner without redesign. `WorkflowRunInfo` contains `{id, meta}` but no parent agent, session, or tool-call identity, while the model-facing tool never exposes the run id. A global ACP listener could not route an event to the correct client session. `meta.phases` is never consulted, `phase(title)` does not validate against it, phase `detail`/`model` and agent `label`/`phase` feed only events, and `whenToUse` is validated and copied but never rendered or selected. `phase()` and `log()` still cross the worker boundary despite having no receiver. - -The live handle repeats event-era data after those observers disappear. `WorkflowRun.id` has no non-event consumer, while the tool reads `run.meta.name` only to render a value it already owns as `args.meta.name`; neither belongs on the execution/cancellation handle. - -Cancellation also has two public channels for one synchronous start. `WorkflowStartRequest.signal` is passed to the worker host, while the sole production caller separately bridges the same signal to `WorkflowRun.cancel()`. Because `start()` returns the run before control can yield, there is no readiness window that requires request-time cancellation; the duplicate signal adds host listener/disarm state without closing a race. - -`WorkflowError.fatal` is the same speculative branch in miniature: every production construction is fatal, `fatal: false` exists only in tests, and combinators already distinguish workflow failures with `instanceof`. - -## Proposal - -Keep the exercised core: `agent(prompt, { schema, model })`, `parallel`, `pipeline`, `args`, concurrency/agent caps, cancellation, bounded disposal, structured results, worker isolation, and foreground tool collection. Remove all `workflow/*` events and their event-only info/outcome types; remove `phase()`, `log()`, agent `label`/`phase`, phase declarations, `whenToUse`, and their worker messages/host observers; collapse workflow metadata to the name the tool actually uses; remove event-only run ids/meta snapshots and the synthesized agent-end ledger. Shrink `WorkflowRun` to `result`, `cancel()`, and `dispose()`; the tool renders the request-owned name. Remove `WorkflowStartRequest.signal` and the worker host's input-signal listener/disarm state, retaining the caller-owned bridge from its abort signal to `run.cancel()`. Make `WorkflowError` one fatal error class without a boolean mode or `isFatalWorkflowError()` helper. - -Amend the implemented dynamic-workflow Agent Note and update the seam/tool/worker READMEs, tool schema, generated catalogs and package graph, worker type-equivalence records, unit tests, and workflow snapshot/header fixtures. Progress UI work, if commissioned, starts from a correlation contract that names the parent agent/session/tool call instead of reviving this protocol unchanged. - -## Alternatives considered - -**Keep the prebuilt observation vocabulary for a future UI.** The current shape resembles Claude Code dynamic-workflow metadata, and the host deliberately pairs each forwarded agent start with either the worker's end or a synthesized terminal end. Removing it gives up compatibility-by-shape and makes progress UI a new design task, but the existing payloads still lack routable ownership, so balanced lifecycles alone cannot make the named ACP owner viable without redesign. - -## Acceptance criteria - -- The workflow public contract contains only execution, cancellation, result, and disposal contracts with a production consumer. -- No workflow event, phase/log protocol message, run-id generator, progress-only metadata, host pairing ledger, or fatal-mode branch remains. -- The run handle has no id/meta echoes, and cancellation has one holder-owned channel after synchronous `start()` returns. -- Parallel/pipeline behavior, caps, cancellation quiescence, worker containment, structured output, and the model-facing workflow scenarios retain coverage. -- Typecheck, coverage, snapshots, doc-sync, module-graph verification, build, and hygiene pass. - -## Risks - -This is a compile-visible contraction of the workflow DSL, event taxonomy, handle, and start request. Existing workflow calls that supply descriptive metadata, and scripts that use `phase`, `log`, or labels, must shrink; programmatic callers bridge their own abort source to the returned handle; and a future observer must add a better-correlated event contract. The execution semantics that make workflows useful do not change. diff --git a/.agents/notes/rejected/simplification/2026-07-12-collapse-workflow-to-foreground-core.zh.md b/.agents/notes/rejected/simplification/2026-07-12-collapse-workflow-to-foreground-core.zh.md deleted file mode 100644 index 4d15df5513..0000000000 --- a/.agents/notes/rejected/simplification/2026-07-12-collapse-workflow-to-foreground-core.zh.md +++ /dev/null @@ -1,39 +0,0 @@ -# Agent Note: 将工作流收缩至已使用的前台核心 - -Status: rejected — 工作流进度是有意设计的观测接口;应通过消费方使其发挥作用,而非删除它。 - -[English](2026-07-12-collapse-workflow-to-foreground-core.md) | 中文 - -## 问题 - -工作流能力在前台执行用于编排 subagent 的 JavaScript,但它同时携带了一套无人消费的进度观测系统。没有任何生产环境的监听器订阅六个 `workflow/*` 事件中的任何一个;监听器仅存在于工作流测试中。尽管如此,seam 定义了 run/phase/agent(智能体)outcome 载荷,worker 发送 phase/log/agent 生命周期协议消息,host 通过一个 `liveAgents` 配对账本转发它们,引擎维护 run id 仅仅是为了关联这些通知。 - -这套进度词汇不仅仅是未被使用;它在不经重新设计的情况下也无法服务于其唯一已命名的未来消费方。`WorkflowRunInfo` 包含 `{id, meta}` 但没有父 agent、会话或工具调用标识,而面向模型的工具也从不暴露 run id。一个全局 ACP(Agent Client Protocol)监听器无法将事件路由到正确的客户端会话。`meta.phases` 从未被查询,`phase(title)` 不对其做校验,phase 的 `detail`/`model` 和 agent 的 `label`/`phase` 仅供事件消费,`whenToUse` 被校验和复制但从未被渲染或用于选择。`phase()` 和 `log()` 仍然跨越 worker 边界,尽管没有接收方。 - -这些观测者移除后,live handle 仍重复携带事件机制所需的数据。`WorkflowRun.id` 没有非事件消费方,而工具读取 `run.meta.name` 只是为了渲染一个它已经以 `args.meta.name` 形式持有的值;两者都不属于执行/取消 handle。 - -取消机制也为一个同步启动提供了两条公开通道。`WorkflowStartRequest.signal` 被传递给 worker host,而唯一的生产调用方另外将同一个 signal 桥接到 `WorkflowRun.cancel()`。因为 `start()` 在控制权让出之前就返回了 run,不存在需要请求时取消的就绪窗口;重复的 signal 增加了 host 的 listener/disarm 状态却没有封堵任何竞态。 - -`WorkflowError.fatal` 是同一种推测性分支的微缩版:生产代码中的构造全都采用 fatal 模式,`fatal: false` 仅存在于测试中,组合子已经通过 `instanceof` 区分工作流失败。 - -## 提案 - -保留已使用的核心:`agent(prompt, { schema, model })`、`parallel`、`pipeline`、`args`、并发/agent 上限、取消、有界 dispose(资源释放)、结构化结果、worker 隔离与前台工具收集。移除所有 `workflow/*` 事件及其仅供事件使用的 info/outcome 类型;移除 `phase()`、`log()`、agent 的 `label`/`phase`、phase 声明、`whenToUse` 及其 worker 消息/host 观测者;将工作流元数据收缩为工具实际使用的 name;移除仅供事件使用的 run id/meta 快照与合成的 agent-end 账本。将 `WorkflowRun` 收缩为 `result`、`cancel()` 和 `dispose()`;工具渲染请求中已有的 name。移除 `WorkflowStartRequest.signal` 及 worker host 的 input-signal listener/disarm 状态,保留调用方从其 abort signal 到 `run.cancel()` 的桥接。将 `WorkflowError` 变为单一的 fatal 错误类,不再有布尔模式或 `isFatalWorkflowError()` 辅助函数。 - -修订已实施的动态工作流 Agent Note,并更新 seam/工具/worker README、工具 schema、生成的 catalog 与包依赖图、worker type-equiv 记录、单元测试以及工作流快照/header fixture(测试前置数据)。如果进度 UI 工作被立项,应从一份命名了父 agent/会话/工具调用的关联约定出发,而非原样复活这套协议。 - -## 曾考虑的替代方案 - -**为未来 UI 保留预建的观测词汇。** 当前形态类似 Claude Code 的动态工作流元数据,host 有意地将每个转发的 agent start 与 worker 的 end 或一个合成的终止 end 配对。移除它意味着放弃形态兼容性,使进度 UI 成为一项全新的设计任务;但现有载荷仍缺少可路由的归属信息,因此仅靠成对完整的生命周期也无法在不重新设计的情况下让已命名的 ACP 消费方可行。 - -## 验收标准 - -- 工作流公开约定仅包含有生产消费方的执行、取消、结果与 dispose 约定。 -- 不再保留任何工作流事件、phase/log 协议消息、run-id 生成器、仅供进度使用的元数据、host 配对账本或 fatal 模式分支。 -- run handle 不再有 id/meta 回显,取消在同步 `start()` 返回后只有一条持有者拥有的通道。 -- parallel/pipeline 行为、上限、取消后的完全停稳、worker 隔离、结构化输出与面向模型的工作流场景保持测试覆盖。 -- 类型检查、覆盖率、快照、doc-sync(文档同步门禁)、module-graph 校验、构建与 hygiene 全部通过。 - -## 风险 - -这是对工作流 DSL、事件分类体系、handle 与 start request 的编译可见收缩。现有提供描述性元数据的工作流调用,以及使用 `phase`、`log` 或 label 的脚本,都必须相应精简;程序化调用方需自行将 abort source 桥接到返回的 handle;未来的观测者必须添加一个关联性更好的事件约定。使工作流有用的执行语义不变。 diff --git a/.agents/notes/rejected/simplification/2026-07-19-make-jsonrpc-directional.i18n.yaml b/.agents/notes/rejected/simplification/2026-07-19-make-jsonrpc-directional.i18n.yaml new file mode 100644 index 0000000000..1f91fccbb3 --- /dev/null +++ b/.agents/notes/rejected/simplification/2026-07-19-make-jsonrpc-directional.i18n.yaml @@ -0,0 +1,6 @@ +# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each +# side as of the last confirmed-consistent state. Both languages carry equal authority; +# after editing either side, bring the other along and re-record with: +# pnpm run verify-translation-pairing --write .agents/notes/rejected/simplification/2026-07-19-make-jsonrpc-directional.md +2026-07-19-make-jsonrpc-directional.md: 0a4660bbf12ab6a71f08547b69458bd25881bd64 +2026-07-19-make-jsonrpc-directional.zh.md: 706a342d6ef32c00d014033b314cbbe82314ce30 diff --git a/.agents/notes/proposed/simplification/2026-07-19-make-jsonrpc-directional.md b/.agents/notes/rejected/simplification/2026-07-19-make-jsonrpc-directional.md similarity index 97% rename from .agents/notes/proposed/simplification/2026-07-19-make-jsonrpc-directional.md rename to .agents/notes/rejected/simplification/2026-07-19-make-jsonrpc-directional.md index 6afb75eaf3..0a4660bbf1 100644 --- a/.agents/notes/proposed/simplification/2026-07-19-make-jsonrpc-directional.md +++ b/.agents/notes/rejected/simplification/2026-07-19-make-jsonrpc-directional.md @@ -1,6 +1,6 @@ # Agent Note: Make JSON-RPC completion and transport directional -Status: proposed +Status: rejected — session/prompt became an enqueue receipt without status (2026-07-30-followup-enqueue-and-owned-runs); transport narrowing may be re-proposed alone English | [中文](2026-07-19-make-jsonrpc-directional.zh.md) diff --git a/.agents/notes/proposed/simplification/2026-07-19-make-jsonrpc-directional.zh.md b/.agents/notes/rejected/simplification/2026-07-19-make-jsonrpc-directional.zh.md similarity index 97% rename from .agents/notes/proposed/simplification/2026-07-19-make-jsonrpc-directional.zh.md rename to .agents/notes/rejected/simplification/2026-07-19-make-jsonrpc-directional.zh.md index a6c6abb7bd..706a342d6e 100644 --- a/.agents/notes/proposed/simplification/2026-07-19-make-jsonrpc-directional.zh.md +++ b/.agents/notes/rejected/simplification/2026-07-19-make-jsonrpc-directional.zh.md @@ -1,6 +1,6 @@ # Agent Note: 让 JSON-RPC 完成结果与传输方向单一化 -Status: proposed +Status: rejected — session/prompt became an enqueue receipt without status (2026-07-30-followup-enqueue-and-owned-runs); transport narrowing may be re-proposed alone [English](2026-07-19-make-jsonrpc-directional.md) | 中文 diff --git a/.agents/notes/rejected/simplification/2026-07-26-dependency-swaps-rejected-by-nih-audit.i18n.yaml b/.agents/notes/rejected/simplification/2026-07-26-dependency-swaps-rejected-by-nih-audit.i18n.yaml index 089e243f05..2a5c5fab6f 100644 --- a/.agents/notes/rejected/simplification/2026-07-26-dependency-swaps-rejected-by-nih-audit.i18n.yaml +++ b/.agents/notes/rejected/simplification/2026-07-26-dependency-swaps-rejected-by-nih-audit.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write .agents/notes/rejected/simplification/2026-07-26-dependency-swaps-rejected-by-nih-audit.md -2026-07-26-dependency-swaps-rejected-by-nih-audit.md: 93a40d2751dfb24778ed77815480effc7d57a1fc -2026-07-26-dependency-swaps-rejected-by-nih-audit.zh.md: c703a53bece7a53c7dc92a17fcccdbd29e9efb49 +2026-07-26-dependency-swaps-rejected-by-nih-audit.md: 06b884d78105c23c5c489a10e0c1489aa5f95eee +2026-07-26-dependency-swaps-rejected-by-nih-audit.zh.md: 0cff8b10109919b5e6be96e1f0c26de3e4d3bbf8 diff --git a/.agents/notes/rejected/simplification/2026-07-26-dependency-swaps-rejected-by-nih-audit.md b/.agents/notes/rejected/simplification/2026-07-26-dependency-swaps-rejected-by-nih-audit.md index 93a40d2751..06b884d781 100644 --- a/.agents/notes/rejected/simplification/2026-07-26-dependency-swaps-rejected-by-nih-audit.md +++ b/.agents/notes/rejected/simplification/2026-07-26-dependency-swaps-rejected-by-nih-audit.md @@ -14,7 +14,7 @@ Adopt the following dependency swaps. Rejected — per-item evidence below; a fu **Protocol and parsing:** -- **`vscode-jsonrpc` for LSP base-protocol framing/correlation** (`lsp-stdio`): the swappable core is ~255 of ~1,800 src lines; the package cannot express the configured `maxMessageBytes` incoming-size bound (restoring it means rebuilding the deleted framing), inverts the cancel-grace teardown semantics (`raceAbort` rejects immediately then tears down; vscode-jsonrpc keeps the promise pending), errors on pre-header stdout banners real servers emit, and is CJS in an ESM-everywhere repo. The [LSP seam note](../../implemented/architecture/2026-07-15-lsp-capability-seam.md) assigns JSON-RPC ownership to `dsh-lsp-stdio`; this audit is the explicit on-record weighing of the dependency it lacked. +- **`vscode-jsonrpc` for LSP base-protocol framing/correlation** (`lsp-stdio`): the swappable core is ~255 of ~1,800 src lines; the package cannot express the configured `maxMessageBytes` incoming-size bound (restoring it means rebuilding the deleted framing), inverts the cancel-grace teardown semantics (`raceAbort` rejects immediately then tears down; vscode-jsonrpc keeps the promise pending), errors on pre-header stdout banners real servers emit, and is CJS in an ESM-everywhere repo. The [LSP seam note](../../archived/architecture/2026-07-15-lsp-capability-seam.md) assigns JSON-RPC ownership to `dsh-lsp-stdio`; this audit is the explicit on-record weighing of the dependency it lacked. - **`vscode-languageserver-types` for lsp-stdio's wire-type subset**: ~80 type lines and ~45 guard lines, but upstream guards differ in both directions (accept `uri: undefined` the repo must reject; require `targetRange` the repo tolerates absent), and the initialize-result shapes live in `vscode-languageserver-protocol`, dragging `vscode-jsonrpc` in as a runtime dep — ~1 MB for 80 spec-exact lines. - **`json-rpc-2.0` for `dsh-sdk-jsonrpc-server`**: deletable correlation/dispatch is real (~100–130 lines) but the NDJSON wire must stay bit-identical for the hand-rolled Python SDK client, the package is single-maintainer, and the [archived GUI RPC note](../../archived/architecture/2026-07-19-gui-layering-and-rpc-protocol.md) already treats this package as a frozen narrow surface. `vscode-jsonrpc` is a worse fit still (Content-Length framing, cancellation vocabulary the protocol lacks). - **`jsonrpcclient` for the Python SDK client**: v4 builds/parses messages only — ~20 lines — while the 500 lines that matter (subprocess lifecycle, threaded reader, id correlation, bidirectional server-role responses) stay; the library is in low-maintenance mode. @@ -34,7 +34,7 @@ Adopt the following dependency swaps. Rejected — per-item evidence below; a fu - **`structuredClone` for session `snapshotJsonValue`/`isJsonValue`**: it is a validator + detacher enforcing the lossless-JSON boundary with single-read-per-getter and cross-realm intrinsic checks; `structuredClone` accepts Map/Date/-0 and enforces nothing. Same for the deliberately dependency-free `code-runtime-worker` mirror hardened against a model-mutated realm. - **`fast-deep-equal` for session surface `isDeepEqualJson`** and **`safe-stable-stringify` for repeat-tool-reminder canonicalization**: both swaps work mechanically but each trades ~17–20 commented, tested lines for the first external runtime dependency of a core package — negative net at this size. - **zod/valibot for durable-event strict decoders** (goal fold, tool-ralph, session): exact-key fail-loud decoders at durable boundaries with event-specific messages; a second schema library beside repo-standard schemastery is a policy change, not a deletion. -- **`gpt-tokenizer`/tiktoken for token-meter**: the [replay-token-meter note](../../implemented/architecture/2026-07-15-replay-token-meter-service.md) explicitly rejected tokenizer backends; a GPT BPE is also the wrong tokenizer for DeepSeek models, and ~350 of the package's lines are replay-fold bookkeeping no tokenizer covers. +- **`gpt-tokenizer`/tiktoken for token-meter**: the [replay-token-meter note](../../archived/architecture/2026-07-15-replay-token-meter-service.md) explicitly rejected tokenizer backends; a GPT BPE is also the wrong tokenizer for DeepSeek models, and ~350 of the package's lines are replay-fold bookkeeping no tokenizer covers. - **`partial-json` for streamed tool-call arguments**: nothing to replace — arguments stay raw JSON strings end-to-end by documented contract; `JSON.parse` runs only on complete payloads. **Filesystem, subprocess, terminal:** @@ -52,7 +52,7 @@ Adopt the following dependency swaps. Rejected — per-item evidence below; a fu **Servers and HTTP:** -- **`msw` for llm-mock-server**: the server exists to fault the wire — socket destroy, mid-SSE disconnect, stall, pre-listen refusal — for real HTTP adapters and subprocesses; in-process interception can express none of that. [Wire-fault-server note](../../implemented/testing/2026-07-25-scriptable-llm-wire-fault-server.md) owns the design. +- **`msw` for llm-mock-server**: the server exists to fault the wire — socket destroy, mid-SSE disconnect, stall, pre-listen refusal — for real HTTP adapters and subprocesses; in-process interception can express none of that. [llm-mock-server README](../../../../packages/test-support/llm-mock-server/README.md) owns the design. - **`hono`/`sirv` for host/webserver**: the core is a disposer-based dynamic route registry (registrations-are-effects contract, HMR unregistration) plus index-HTML transform taps; hono routers are add-only, and static middleware cannot serve the transformed index. ~244 lines total, genuinely small. - **`@mozilla/readability`/`iconv-lite` for web-fetch-http**: the provider returns raw HTML; charset handling is already the builtin `TextDecoder`; MIME parsing is ~11 lines; redirect following is same-origin security policy. @@ -69,7 +69,7 @@ Adopt the following dependency swaps. Rejected — per-item evidence below; a fu - **`prebuildify`/`node-gyp-build` for the landlock launcher packaging**: inapplicable — those load `.node` addons via dlopen; the launcher ships a standalone exec'd static binary, and per-platform `optionalDependencies` *is* the ecosystem convention for binaries. - **Replacing the Landlock launcher itself with `@landstrip/landstrip`**: fails the security-invariant test — the launcher is a ~300-line reviewable C file whose binaries are byte-pinned to native CI builds and that already migrated away from a Rust dependency; a single-maintainer LGPL Rust binary set is a larger audit surface whose releases are harder to match to reviewed source. The [Windows ACL decision](../../implemented/feature/2026-08-08-windows-acl-restricted-token-sandbox.md) records the same rejection for the shipped Windows rung. - **`hatch-nodejs-version` for Python release versioning**: roughly LOC-neutral (a custom metadata hook replaces the regex), inverts the recorded decision that the dev sentinel never determines a release version, and puts a single-maintainer build plugin in the release supply chain. -- **YAML consolidation (`js-yaml` vs `yaml`)**: the repo carries both parsers, with the `!!js` tag defined four times on js-yaml (vendored include, app-boot, apps/cli, `scripts/verify-cordis-config.ts`) and twice on `yaml` (sdk-telemetry's `ScalarTag`, sdk-helper's comment-preserving Document editing). The direction is forced — js-yaml cannot replace `yaml` (sdk-helper needs the Document API) — but migrating the js-yaml sites cannot retire the library either (the vendored include pins it) and would put two parsers in charge of one dialect that must agree exactly, against the [personal-config note](../../implemented/feature/2026-07-20-dsh-cli-personal-config.md)'s deliberate load-only-copy parity. Deletable: ~20–25 lines of duplicate tag definitions and two `@types/js-yaml` entries. The consolidation moment is a future include sync, not now. +- **YAML consolidation (`js-yaml` vs `yaml`)**: the repo carries both parsers, with the `!!js` tag defined four times on js-yaml (vendored include, app-boot, apps/cli, `scripts/verify-cordis-config.ts`) and twice on `yaml` (sdk-telemetry's `ScalarTag`, sdk-helper's comment-preserving Document editing). The direction is forced — js-yaml cannot replace `yaml` (sdk-helper needs the Document API) — but migrating the js-yaml sites cannot retire the library either (the vendored include pins it) and would put two parsers in charge of one dialect that must agree exactly, against the [personal-config note](../../archived/feature/2026-07-20-dsh-cli-personal-config.md)'s deliberate load-only-copy parity. Deletable: ~20–25 lines of duplicate tag definitions and two `@types/js-yaml` entries. The consolidation moment is a future include sync, not now. ## Alternatives considered diff --git a/.agents/notes/rejected/simplification/2026-07-26-dependency-swaps-rejected-by-nih-audit.zh.md b/.agents/notes/rejected/simplification/2026-07-26-dependency-swaps-rejected-by-nih-audit.zh.md index c703a53bec..0cff8b1010 100644 --- a/.agents/notes/rejected/simplification/2026-07-26-dependency-swaps-rejected-by-nih-audit.zh.md +++ b/.agents/notes/rejected/simplification/2026-07-26-dependency-swaps-rejected-by-nih-audit.zh.md @@ -14,7 +14,7 @@ Status: rejected — 下列每一项替换在证据上都未达到净简化门 **协议与解析:** -- **以 `vscode-jsonrpc` 承担 LSP 基础协议的分帧/关联**(`lsp-stdio`):可替换的核心只占 src 约 1,800 行中的约 255 行;该包无法表达已配置的 `maxMessageBytes` 入站大小上限(要恢复它就得重建被删掉的分帧代码),反转了取消宽限期的拆除语义(`raceAbort` 立即 reject 再拆除;vscode-jsonrpc 让 promise 保持挂起),会在真实服务器输出的 header 前 stdout 横幅上报错,而且在这个全面采用 ESM 的仓库里它是 CJS。[LSP seam 决策](../../implemented/architecture/2026-07-15-lsp-capability-seam.zh.md)把 JSON-RPC 的所有权划给 `dsh-lsp-stdio`;本次审计正是对该决策当时缺失的这项依赖权衡的明文记录。 +- **以 `vscode-jsonrpc` 承担 LSP 基础协议的分帧/关联**(`lsp-stdio`):可替换的核心只占 src 约 1,800 行中的约 255 行;该包无法表达已配置的 `maxMessageBytes` 入站大小上限(要恢复它就得重建被删掉的分帧代码),反转了取消宽限期的拆除语义(`raceAbort` 立即 reject 再拆除;vscode-jsonrpc 让 promise 保持挂起),会在真实服务器输出的 header 前 stdout 横幅上报错,而且在这个全面采用 ESM 的仓库里它是 CJS。[LSP seam 决策](../../archived/architecture/2026-07-15-lsp-capability-seam.md)把 JSON-RPC 的所有权划给 `dsh-lsp-stdio`;本次审计正是对该决策当时缺失的这项依赖权衡的明文记录。 - **以 `vscode-languageserver-types` 承担 lsp-stdio 的协议类型子集**:约 80 行类型加约 45 行守卫,但上游守卫在两个方向上都与本仓库不一致(接受本仓库必须拒绝的 `uri: undefined`;强制要求本仓库容忍缺失的 `targetRange`),而且 initialize 结果的形状住在 `vscode-languageserver-protocol` 里,会把 `vscode-jsonrpc` 拖成运行时依赖——为 80 行严格贴合规范的代码付出约 1 MB。 - **以 `json-rpc-2.0` 替换 `dsh-sdk-jsonrpc-server`**:可删除的关联/分发代码确实存在(约 100–130 行),但 NDJSON 协议格式(wire format)必须与手写的 Python SDK 客户端逐位一致,该包只有单一维护者,且[已归档的 GUI RPC 决策](../../archived/architecture/2026-07-19-gui-layering-and-rpc-protocol.md)已把这个包当作冻结的窄接口面对待。`vscode-jsonrpc` 更不合适(Content-Length 分帧、该协议并不具备的取消词汇)。 - **以 `jsonrpcclient` 承担 Python SDK 客户端**:v4 只做消息的构造/解析——约 20 行——而真正要紧的 500 行(子进程生命周期、线程化读取器、id 关联、双向的服务端角色应答)全都保留;该库处于低维护模式。 @@ -34,7 +34,7 @@ Status: rejected — 下列每一项替换在证据上都未达到净简化门 - **以 `structuredClone` 替换会话的 `snapshotJsonValue`/`isJsonValue`**:它是校验器加分离器,以「每个 getter 只读一次」和跨 realm 内建对象检查强制执行无损 JSON 边界;`structuredClone` 接受 Map/Date/-0,什么都不强制。有意保持零依赖、针对被模型篡改的 realm 做过加固的 `code-runtime-worker` 镜像实现同理。 - **以 `fast-deep-equal` 替换会话接口面的 `isDeepEqualJson`**、**以 `safe-stable-stringify` 承担 repeat-tool-reminder 的规范化**:两项替换在机械层面都可行,但每一项都是拿约 17–20 行带注释、有测试的代码,去换一个核心包的第一个外部运行时依赖——在这个体量上是净亏损。 - **以 zod/valibot 承担持久事件的严格解码器**(goal fold、tool-ralph、session):它们是位于持久化边界、键集精确匹配、失败即明确报错、带事件专属报错信息的解码器;在仓库标准 schemastery 之外再放一个 schema 库是政策变更,不是删除。 -- **以 `gpt-tokenizer`/tiktoken 替换 token-meter**:[回放 token 计量决策](../../implemented/architecture/2026-07-15-replay-token-meter-service.zh.md)已明确否决分词器后端;GPT 的 BPE 对 DeepSeek 模型来说也是错误的分词器,而且这个包约 350 行是回放折叠簿记,任何分词器都覆盖不了。 +- **以 `gpt-tokenizer`/tiktoken 替换 token-meter**:[回放 token 计量决策](../../archived/architecture/2026-07-15-replay-token-meter-service.md)已明确否决分词器后端;GPT 的 BPE 对 DeepSeek 模型来说也是错误的分词器,而且这个包约 350 行是回放折叠簿记,任何分词器都覆盖不了。 - **以 `partial-json` 处理流式工具调用参数**:无可替换——按已记录的约定,参数端到端保持为原始 JSON 字符串;`JSON.parse` 只在完整载荷上运行。 **文件系统、子进程与终端:** @@ -52,7 +52,7 @@ Status: rejected — 下列每一项替换在证据上都未达到净简化门 **服务器与 HTTP:** -- **以 `msw` 替换 llm-mock-server**:这个服务器的存在意义就是在线路上制造故障——socket 销毁、SSE(Server-Sent Events)中途断连、停滞、监听前拒绝——服务对象是真实的 HTTP 适配器和子进程;进程内拦截一样都表达不了。设计归[线路故障服务器决策](../../implemented/testing/2026-07-25-scriptable-llm-wire-fault-server.zh.md)所有。 +- **以 `msw` 替换 llm-mock-server**:这个服务器的存在意义就是在线路上制造故障——socket 销毁、SSE(Server-Sent Events)中途断连、停滞、监听前拒绝——服务对象是真实的 HTTP 适配器和子进程;进程内拦截一样都表达不了。设计归 [llm-mock-server README](../../../../packages/test-support/llm-mock-server/README.zh.md) 所有。 - **以 `hono`/`sirv` 承担 host/webserver**:核心是基于 disposer 的动态路由注册表(「注册即效果」约定、HMR 反注册)加 index HTML 变换挂点;hono 的路由器只增不减,静态中间件也无法伺服变换后的 index。总共约 244 行,确实很小。 - **以 `@mozilla/readability`/`iconv-lite` 承担 web-fetch-http**:该提供方返回原始 HTML;字符集处理已经是内置的 `TextDecoder`;MIME 解析约 11 行;重定向跟随是同源安全策略。 @@ -69,7 +69,7 @@ Status: rejected — 下列每一项替换在证据上都未达到净简化门 - **以 `prebuildify`/`node-gyp-build` 承担 landlock 启动器打包**:不适用——那些工具通过 dlopen 加载 `.node` addon;这个启动器交付的是独立 exec 的静态二进制,而按平台划分的 `optionalDependencies` 恰恰*就是*二进制分发的生态惯例。 - **以 `@landstrip/landstrip` 替换 Landlock 启动器本身**:未通过安全不变式检验——启动器是一个约 300 行、可完整评审的 C 文件,其二进制逐字节锁定到原生 CI 构建,且早已从一个 Rust 依赖迁移出来;单一维护者的 LGPL Rust 二进制集合有更大的审计面,其发布更难与已审阅源码对应。[Windows ACL 决策](../../implemented/feature/2026-08-08-windows-acl-restricted-token-sandbox.zh.md)为已交付的 Windows 层级记录了同一否决。 - **以 `hatch-nodejs-version` 承担 Python 发布版本号**:代码行数大致持平(一个自定义 metadata 钩子换掉那个正则),却反转了「dev 哨兵值绝不决定发布版本」这条记录在案的决策,还把一个单一维护者的构建插件放进发布供应链。 -- **YAML 归一(`js-yaml` 与 `yaml`)**:仓库同时携带两个解析器,`!!js` 标签在 js-yaml 上定义了四次(vendor 收录的 include、app-boot、apps/cli、`scripts/verify-cordis-config.ts`),在 `yaml` 上定义了两次(sdk-telemetry 的 `ScalarTag`、sdk-helper 的可保留注释的 Document 编辑)。方向是被迫的——js-yaml 无法取代 `yaml`(sdk-helper 需要 Document API)——但迁移 js-yaml 各调用点也退休不了这个库(vendor 收录的 include 锁定了它),还会让两个解析器共管一种必须完全一致的方言,违背[个人配置决策](../../implemented/feature/2026-07-20-dsh-cli-personal-config.zh.md)刻意的「仅加载副本」对等性。可删除的:约 20–25 行重复标签定义和两条 `@types/js-yaml` 条目。归一的时机是未来某次 include 同步,不是现在。 +- **YAML 归一(`js-yaml` 与 `yaml`)**:仓库同时携带两个解析器,`!!js` 标签在 js-yaml 上定义了四次(vendor 收录的 include、app-boot、apps/cli、`scripts/verify-cordis-config.ts`),在 `yaml` 上定义了两次(sdk-telemetry 的 `ScalarTag`、sdk-helper 的可保留注释的 Document 编辑)。方向是被迫的——js-yaml 无法取代 `yaml`(sdk-helper 需要 Document API)——但迁移 js-yaml 各调用点也退休不了这个库(vendor 收录的 include 锁定了它),还会让两个解析器共管一种必须完全一致的方言,违背[个人配置决策](../../archived/feature/2026-07-20-dsh-cli-personal-config.md)刻意的「仅加载副本」对等性。可删除的:约 20–25 行重复标签定义和两条 `@types/js-yaml` 条目。归一的时机是未来某次 include 同步,不是现在。 ## 曾考虑的替代方案 diff --git a/.agents/skills/dsh-find-simplifications/SKILL.md b/.agents/skills/dsh-find-simplifications/SKILL.md index 777a1b08f6..6ee736796c 100644 --- a/.agents/skills/dsh-find-simplifications/SKILL.md +++ b/.agents/skills/dsh-find-simplifications/SKILL.md @@ -11,7 +11,7 @@ This skill helps turn a broad "find things to simplify" request into evidence-ba - Read `AGENTS.md`, especially the pre-release stance and the conventions (including the tests-are-not-golden-truth and Agent Notes-are-not-golden-truth doctrines), plus [docs/defensive-patterns.md](../../../docs/defensive-patterns.md) and [docs/testing.md](../../../docs/testing.md). - Skim [docs/architecture.md](../../../docs/architecture.md) before judging anything under `packages/`; simplifications that fight the service map or event taxonomy need extra evidence. -- Use the Agent Note tree and its [rules](../../notes/README.md) to understand intentional architecture. The most relevant implemented examples are [drop mutable session summary](../../notes/implemented/simplification/2026-06-19-drop-mutable-session-summary.md), [handle-based session persistence](../../notes/implemented/architecture/2026-08-27-handle-based-session-persistence.md), [JSONL-only first-party Session persistence](../../notes/implemented/simplification/2026-08-30-jsonl-only-session-persistence.md), [capability seams](../../notes/implemented/architecture/2026-06-13-capability-seams.md), and the twin-adapter Agent Notes. +- Use the Agent Note tree and its [rules](../../notes/README.md) to understand intentional architecture. The most relevant implemented examples are [drop mutable session summary](../../notes/archived/simplification/2026-06-19-drop-mutable-session-summary.md), [handle-based session persistence](../../notes/implemented/architecture/2026-08-27-handle-based-session-persistence.md), [JSONL-only first-party Session persistence](../../notes/implemented/simplification/2026-08-30-jsonl-only-session-persistence.md), [capability seams](../../notes/implemented/architecture/2026-06-13-capability-seams.md), and the twin-adapter Agent Notes. - Treat dual LLM adapters as intentional by default. Session persistence is different: JSONL is the sole first-party provider, while the backend-neutral service remains available to out-of-tree providers. Do not propose deleting an LLM twin or the persistence seam as "low effort" unless the user explicitly overrides that constraint. Removing an unused method or hook inside a protected seam can still be valid if it does not collapse the protected design. ## What Counts As A Strong Candidate diff --git a/.agents/skills/dsh-merging-stacked-prs/SKILL.md b/.agents/skills/dsh-merging-stacked-prs/SKILL.md index 964d20a4d8..7e6a985614 100644 --- a/.agents/skills/dsh-merging-stacked-prs/SKILL.md +++ b/.agents/skills/dsh-merging-stacked-prs/SKILL.md @@ -70,7 +70,7 @@ Never dissolve, reorder, or rebuild an existing stack automatically; `gh stack l Do not rewrite branches merely because a refresh mechanism exists. When the live merge state or repository rules require an updated trunk, choose either allowed history: - **Native cascading rebase:** check out the remote stack with `gh stack checkout ` when it is not tracked locally, then run `gh stack sync`. The command may rebase and lease-protected force-push every active layer before local validation. Immediately inspect the rewritten scope, run the relevant checks for every affected layer, and do not merge or claim readiness until they pass. If sync detects a rebase conflict, use `gh stack rebase`, resolve and validate it, then publish with `gh stack push`. If checkout or sync reports divergent local and remote stack compositions, cancel and ask rather than deleting or recreating the remote stack automatically. -- **Incremental merge-forward:** merge the trunk into the bottom affected branch, then propagate each updated parent into its child in bottom-to-top order and push normally. If the base advances during an in-progress merge, preserve that checkpoint before merging the newer tip as specified by the [incremental-retargeting note](../../notes/implemented/process/2026-07-26-incremental-pr-base-retargeting.md). +- **Incremental merge-forward:** merge the trunk into the bottom affected branch, then propagate each updated parent into its child in bottom-to-top order and push normally. If the base advances during an in-progress merge, preserve that checkpoint before merging the newer tip. Any history rewrite is allowed after review, but it invalidates commit-OID assumptions. Re-fetch exact heads and re-audit unresolved review threads, approvals, mergeability, and checks after the push. Never use raw `--force` or overwrite a concurrently advanced remote head. diff --git a/.agents/skills/dsh-translate-docs/SKILL.md b/.agents/skills/dsh-translate-docs/SKILL.md index ae778a0c52..5e5ec7d871 100644 --- a/.agents/skills/dsh-translate-docs/SKILL.md +++ b/.agents/skills/dsh-translate-docs/SKILL.md @@ -25,7 +25,7 @@ Frozen Agent Notes under `.agents/notes/archived/` are not translation work. The ## The update path (briefing-driven) -The briefing-driven path matches guidance-corpus quality at a fraction of the cost; the [briefed-updates Agent Note](../../notes/implemented/process/2026-07-26-briefed-minimal-translation-updates.md) owns the benchmark evidence. +The briefing-driven path matches guidance-corpus quality at a fraction of the cost; the archived [briefed-updates Agent Note](../../notes/archived/process/2026-07-26-briefed-minimal-translation-updates.md) records the benchmark evidence. 1. **Generate the briefing**: `pnpm run gen-translation-brief ` (no arguments briefs every out-of-sync pair). The briefing maps the change at the narrowest safely aligned granularity — changed Markdown units (paragraph, table row, list item, heading), then whole heading sections, then whole document — and contains the authored side's diff since the last confirmed-consistent state, each changed unit's last-confirmed source, current source, and current counterpart text (with line numbers), the terminology rows the change touches, first-occurrence movement notes, and a digest of the binding update rules. 2. **Mechanical-only diff? `--apply` it.** When every change lies inside code fences that the pair shares byte-identically, the briefing says so; `pnpm run gen-translation-brief --apply ` splices the edited fences into the counterpart and structure-validates the result before writing — no subagent, no hand-editing. diff --git a/.agents/skills/dsh-trim-cot-leakage/references/examples.md b/.agents/skills/dsh-trim-cot-leakage/references/examples.md index 0d850fde15..a0db4fbb26 100644 --- a/.agents/skills/dsh-trim-cot-leakage/references/examples.md +++ b/.agents/skills/dsh-trim-cot-leakage/references/examples.md @@ -8,7 +8,7 @@ Distilled from the 2026-08 repo-wide purge and its review rounds. Use them to id **Leaked:** "Slash input resolves against the visible catalog (decision 21)." -**Fixed:** "Slash input resolves against the visible catalog — the plain-text-reference decision, owned by [the web input-machine note](../../../notes/implemented/architecture/2026-07-25-web-input-machine-and-slash-pipeline.md)." +**Fixed:** "Slash input resolves against the visible catalog — the plain-text-reference decision, owned by [the web input-machine note](../../../notes/archived/architecture/2026-07-25-web-input-machine-and-slash-pipeline.md)." The ordinal resolves nowhere at HEAD; the decision's name and owning note path do. Name the owning note's path at least once per file — as a link where the surface supports one — and later mentions may use the searchable name alone. diff --git a/apps/cli/tests/built-bin.e2e.ts b/apps/cli/tests/built-bin.e2e.ts index b3a3ef6a52..8ec24b74d1 100644 --- a/apps/cli/tests/built-bin.e2e.ts +++ b/apps/cli/tests/built-bin.e2e.ts @@ -658,7 +658,7 @@ describe.skipIf(!existsSync(dshBin))('dsh BUILT bin (node lib/bin.js, no tsx)', // The HMR main watcher's initial scan once refreshed the include // mid-initial-apply, deadlocking the failing apply's rollback against the // refresh drain: dsh exited 13 with no diagnostic instead of settling - // ([Agent Note](../../../.agents/notes/implemented/bug-fix/2026-08-03-hmr-initial-scan-boot-deadlock.md)). + // ([vendor/README.md](../../../vendor/README.md)). const home = mkdtempSync(join(tmpdir(), 'dsh-invalid-patch-')) try { const result = await runBuiltBin(['--profile', 'web', '--patch', invalidProvider], { diff --git a/apps/web/tests/rail-search-expand.e2e.ts b/apps/web/tests/rail-search-expand.e2e.ts index bf520f3ebb..df0130ff67 100644 --- a/apps/web/tests/rail-search-expand.e2e.ts +++ b/apps/web/tests/rail-search-expand.e2e.ts @@ -5,7 +5,7 @@ // target — outside searchRoot. The package-level jsdom test cannot replay // that continuation (fireEvent does not re-bubble through listeners mounted // mid-dispatch), so the guard that keeps the gesture alive -// (.agents/notes/implemented/bug-fix/2026-08-18-rail-search-outside-click-self-dismissal.md) +// (.agents/notes/archived/bug-fix/2026-08-18-rail-search-outside-click-self-dismissal.md) // is pinned here, in the assembled application under a real browser click. // // Zero model calls: collapsing the sidebar and expanding the search are pure diff --git a/docs/AGENTS.md b/docs/AGENTS.md index 17d1613e3c..bb248a9042 100644 --- a/docs/AGENTS.md +++ b/docs/AGENTS.md @@ -72,4 +72,4 @@ Hunt these in any doc; [dsh-doc](../.agents/skills/dsh-doc/SKILL.md) runs this l ## Cross-reference with machine-checkable links, never free prose -Link repository references with relative Markdown paths, never bare filenames or Agent Note numbers. `verify-md-links` rejects missing targets and dead `#fragment` anchors ([rationale](../.agents/notes/implemented/process/2026-06-18-markdown-cross-link-lint.md)). +Link repository references with relative Markdown paths, never bare filenames or Agent Note numbers. `verify-md-links` rejects missing targets and dead `#fragment` anchors. diff --git a/docs/config-catalog.i18n.yaml b/docs/config-catalog.i18n.yaml index 832fd390f8..8ad7d6a459 100644 --- a/docs/config-catalog.i18n.yaml +++ b/docs/config-catalog.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write docs/config-catalog.md -config-catalog.md: 9bbdc705c14c0397e490ff63464021ab66154935 -config-catalog.zh.md: 2b3ae8417b0bf404301d12cabc203c16cc817cd3 +config-catalog.md: 884a45b7e165329a5d9dd6470d29812d95fb1b62 +config-catalog.zh.md: e8586045fb8727ccbc604b5345f8c1cac54d40e7 diff --git a/docs/config-catalog.md b/docs/config-catalog.md index 9bbdc705c1..884a45b7e1 100644 --- a/docs/config-catalog.md +++ b/docs/config-catalog.md @@ -834,7 +834,7 @@ export interface Config { } ``` -Source: [`packages/hooks/hooks-claude-code/src/index.ts:45`](../packages/hooks/hooks-claude-code/src/index.ts) +Source: [`packages/hooks/hooks-claude-code/src/index.ts:44`](../packages/hooks/hooks-claude-code/src/index.ts) @@ -861,7 +861,7 @@ export interface Config { } ``` -Source: [`packages/hooks/hooks-codex/src/index.ts:44`](../packages/hooks/hooks-codex/src/index.ts) +Source: [`packages/hooks/hooks-codex/src/index.ts:43`](../packages/hooks/hooks-codex/src/index.ts) diff --git a/docs/config-catalog.zh.md b/docs/config-catalog.zh.md index 2b3ae8417b..e8586045fb 100644 --- a/docs/config-catalog.zh.md +++ b/docs/config-catalog.zh.md @@ -836,7 +836,7 @@ export interface Config { } ``` -来源:[`packages/hooks/hooks-claude-code/src/index.ts:45`](../packages/hooks/hooks-claude-code/src/index.ts) +来源:[`packages/hooks/hooks-claude-code/src/index.ts:44`](../packages/hooks/hooks-claude-code/src/index.ts) @@ -863,7 +863,7 @@ export interface Config { } ``` -来源:[`packages/hooks/hooks-codex/src/index.ts:44`](../packages/hooks/hooks-codex/src/index.ts) +来源:[`packages/hooks/hooks-codex/src/index.ts:43`](../packages/hooks/hooks-codex/src/index.ts) diff --git a/docs/cookbook/adding-a-tool.i18n.yaml b/docs/cookbook/adding-a-tool.i18n.yaml index 9d02664a90..9aea28f222 100644 --- a/docs/cookbook/adding-a-tool.i18n.yaml +++ b/docs/cookbook/adding-a-tool.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write docs/cookbook/adding-a-tool.md -adding-a-tool.md: f6b2703f3db69a6abc04dbd0fd9893555eed0602 -adding-a-tool.zh.md: d4831e2be061c2565e88004062cbb1558491bb9d +adding-a-tool.md: d1957fc5419a4f59fe6c2f54fd2a5f5f9c9dbb22 +adding-a-tool.zh.md: 8513ca09fef4548ab8806d489d9f91f5eb22159a diff --git a/docs/cookbook/adding-a-tool.md b/docs/cookbook/adding-a-tool.md index f6b2703f3d..d1957fc541 100644 --- a/docs/cookbook/adding-a-tool.md +++ b/docs/cookbook/adding-a-tool.md @@ -39,7 +39,7 @@ Registration is effect-based: disposing the plugin fiber unregisters the tool. S ## Rules of the execute() contract -- **Args are validated for you.** `defineTool` validates model-generated `arguments` against the unified `ParameterSchemaSpec` before `execute` runs (types, required keys, literal constraints, exact-one unions, and nested values — [runtime arg validation](../../.agents/notes/implemented/architecture/2026-06-11-runtime-arg-validation.md)), so inside `execute` the args match `InferArgs`. Explicit object nodes declare `additionalProperties: true | false`; the implicit parameter root stays open. You still hand-check constraints the DSL does not express, such as non-empty strings, positive numbers, or cross-field rules. Raw JSON-Schema tools registered directly own their input validation. +- **Args are validated for you.** `defineTool` validates model-generated `arguments` against the unified `ParameterSchemaSpec` before `execute` runs (types, required keys, literal constraints, exact-one unions, and nested values), so inside `execute` the args match `InferArgs`. Explicit object nodes declare `additionalProperties: true | false`; the implicit parameter root stays open. You still hand-check constraints the DSL does not express, such as non-empty strings, positive numbers, or cross-field rules. Raw JSON-Schema tools registered directly own their input validation. - **Registration borrows your readonly definition.** A typed same-process contribution is not a serialization boundary; do not mutate its schema or replace callbacks after registration. `schemas()` materializes only the explicit model-facing projection. To hot-swap a tool, dispose its owning effect and register the replacement; mutable state inside the callback's closure remains ordinary plugin state. - **Execution identity is protected.** The registry materializes `arguments` as detached lossless JSON in one recursive pass, freezes that value before policy starts, and assigns an opaque `exec.token`; `callId`, `name`, `arguments`, `agent`, `token`, the required caller-owned `signal`, and an optional enclosing-transport `parent` token stay immutable through dispatch. `parent` is identity-only and exposes no live outer execution. Treat `args` as readonly input. Only an around-dispatch wrapper receives a mutable view, and it may replace and restore the required `exec.signal` to impose a deadline but cannot remove it. - **Declare and return one canonical JSON value.** `output.schema` uses `ValueSchemaSpec` and may have an object, array, scalar, or null root. `execute` returns only the inferred value; the registry snapshots it as lossless JSON, validates it, freezes it, and passes it to `output.render(args, value)`. Do not return content blocks from the body or make callers parse prose for ids and fields. diff --git a/docs/cookbook/adding-a-tool.zh.md b/docs/cookbook/adding-a-tool.zh.md index d4831e2be0..8513ca09fe 100644 --- a/docs/cookbook/adding-a-tool.zh.md +++ b/docs/cookbook/adding-a-tool.zh.md @@ -39,7 +39,7 @@ export function apply(ctx: Context) { ## execute() 约定的规则 -- **参数已为你校验。** `defineTool` 在 `execute` 运行前,会根据统一的 `ParameterSchemaSpec` 校验模型生成的 `arguments`(类型、必填键、字面量约束、恰好匹配一个分支的联合以及嵌套值——见[运行时参数校验](../../.agents/notes/implemented/architecture/2026-06-11-runtime-arg-validation.zh.md)),因此 `execute` 内的 args 会匹配 `InferArgs`。显式对象节点必须声明 `additionalProperties: true | false`;隐式参数根对象保持开放。你仍需手动检查 schema DSL 无法表达的约束,例如非空字符串、正数或跨字段规则。直接注册的原始 JSON Schema 工具自行负责输入校验。 +- **参数已为你校验。** `defineTool` 在 `execute` 运行前,会根据统一的 `ParameterSchemaSpec` 校验模型生成的 `arguments`(类型、必填键、字面量约束、恰好匹配一个分支的联合以及嵌套值),因此 `execute` 内的 args 会匹配 `InferArgs`。显式对象节点必须声明 `additionalProperties: true | false`;隐式参数根对象保持开放。你仍需手动检查 schema DSL 无法表达的约束,例如非空字符串、正数或跨字段规则。直接注册的原始 JSON Schema 工具自行负责输入校验。 - **注册借用你的只读定义。** 类型化的同进程贡献不是序列化边界;注册后不要修改其 schema 或替换回调。`schemas()` 只物化显式的模型可见投影。如需热替换工具,请 dispose 其所属副作用并注册替代品;回调闭包内的可变状态仍是普通的插件状态。 - **执行身份受保护。** 注册表在一次递归遍历中将 `arguments` 物化为分离的无损 JSON,在策略开始前冻结该值,并分配一个不透明的 `exec.token`;`callId`、`name`、`arguments`、`agent`、`token`、必填且由调用方持有的 `signal`,以及可选的外层传输 `parent` token 在整个分发过程中保持不可变。`parent` 仅用于身份标识,不暴露活跃的外层执行。请将 `args` 视为只读输入。只有 around-dispatch 包装器会收到可变视图;它可以替换并恢复必填的 `exec.signal` 以施加截止时间,但不能移除该信号。 - **声明并返回一个规范 JSON 值。** `output.schema` 使用 `ValueSchemaSpec`,根可以是对象、数组、标量或 null。`execute` 只返回推导出的值;注册表将其快照为无损 JSON,完成校验和冻结后,再传给 `output.render(args, value)`。工具主体不要返回内容块,也不要迫使调用方从自然语言中解析 id 和字段。 diff --git a/docs/cookbook/adding-a-vendored-package.i18n.yaml b/docs/cookbook/adding-a-vendored-package.i18n.yaml index 10940658a5..ab705f7f7c 100644 --- a/docs/cookbook/adding-a-vendored-package.i18n.yaml +++ b/docs/cookbook/adding-a-vendored-package.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write docs/cookbook/adding-a-vendored-package.md -adding-a-vendored-package.md: 5c0d9b22eac4db916cd1eab37c1e90690be40e3c -adding-a-vendored-package.zh.md: 274bd467ef9a969adccdd813fbe8cdb69cf2b475 +adding-a-vendored-package.md: 0f8b9f38de8f0d2ae19f40b339529afbb40d90ed +adding-a-vendored-package.zh.md: 2668b874eee845f6a505ae2e7d2ead5e63642ce2 diff --git a/docs/cookbook/adding-a-vendored-package.md b/docs/cookbook/adding-a-vendored-package.md index 5c0d9b22ea..0f8b9f38de 100644 --- a/docs/cookbook/adding-a-vendored-package.md +++ b/docs/cookbook/adding-a-vendored-package.md @@ -2,7 +2,7 @@ English | [中文](adding-a-vendored-package.zh.md) -When the harness needs another upstream Cordis package (e.g. `@cordisjs/plugin-http`), it is **vendored** as pinned source under `vendor/`, not added as an npm dependency — see [the vendoring decision](../../.agents/notes/implemented/process/2026-06-11-vendor-cordis-as-source.md) for why. [vendor/README.md](../../vendor/README.md) covers *updating* an already-vendored package; this guide is the file-by-file checklist for adding a **new** one. (Verified against the existing vendored set; if it drifts, fix it here.) +When the harness needs another upstream Cordis package (e.g. `@cordisjs/plugin-http`), it is **vendored** as pinned source under `vendor/`, not added as an npm dependency. [vendor/README.md](../../vendor/README.md) states why and covers *updating* an already-vendored package; this guide is the file-by-file checklist for adding a **new** one. (Verified against the existing vendored set; if it drifts, fix it here.) ## 1. Copy the source in diff --git a/docs/cookbook/adding-a-vendored-package.zh.md b/docs/cookbook/adding-a-vendored-package.zh.md index 274bd467ef..2668b874ee 100644 --- a/docs/cookbook/adding-a-vendored-package.zh.md +++ b/docs/cookbook/adding-a-vendored-package.zh.md @@ -2,7 +2,7 @@ [English](adding-a-vendored-package.md) | 中文 -当 harness 需要引入另一个上游 Cordis 包(如 `@cordisjs/plugin-http`)时,应将其作为固定版本的源码 **vendor** 到 `vendor/` 下,而非作为 NPM 依赖添加——原因见[vendoring 决策](../../.agents/notes/implemented/process/2026-06-11-vendor-cordis-as-source.zh.md)。[vendor/README.md](../../vendor/README.md) 介绍如何*更新*已有的 vendored 包;本指南是添加**新** vendored 包的逐文件清单。(已对照现有 vendored 集合验证;如有偏差,请在此修正。) +当 harness 需要引入另一个上游 Cordis 包(如 `@cordisjs/plugin-http`)时,应将其作为固定版本的源码 **vendor** 到 `vendor/` 下,而非作为 NPM 依赖添加。[vendor/README.md](../../vendor/README.md) 说明其原因并介绍如何*更新*已有的 vendored 包;本指南是添加**新** vendored 包的逐文件清单。(已对照现有 vendored 集合验证;如有偏差,请在此修正。) ## 1. 复制源码 diff --git a/docs/cookbook/responding-to-pr-review-on-a-stack.i18n.yaml b/docs/cookbook/responding-to-pr-review-on-a-stack.i18n.yaml index 8960163dd9..c3ada35706 100644 --- a/docs/cookbook/responding-to-pr-review-on-a-stack.i18n.yaml +++ b/docs/cookbook/responding-to-pr-review-on-a-stack.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write docs/cookbook/responding-to-pr-review-on-a-stack.md -responding-to-pr-review-on-a-stack.md: 6bb7be3daf8613666f02f21e96bf7b1ac8cb3606 -responding-to-pr-review-on-a-stack.zh.md: ca030741ece4c729fe21c3944d291ee4c322dcbb +responding-to-pr-review-on-a-stack.md: 61b15fd5e7b3a528957ef3c9e958aac0e11eb43b +responding-to-pr-review-on-a-stack.zh.md: a33418d342e57dd3c920008a4b12b2f33d6f31da diff --git a/docs/cookbook/responding-to-pr-review-on-a-stack.md b/docs/cookbook/responding-to-pr-review-on-a-stack.md index 6bb7be3daf..61b15fd5e7 100644 --- a/docs/cookbook/responding-to-pr-review-on-a-stack.md +++ b/docs/cookbook/responding-to-pr-review-on-a-stack.md @@ -17,7 +17,7 @@ Review comments may target several PRs in a dependent stack (`A ← B ← C …` 1. Triage every comment on the merits before acting: verify the claim against the code — a reviewer flagging the right symptom can still misdiagnose the cause. 2. Map each accepted finding to its originating PR and fix it there. 3. Propagate the fixed layer through every affected child in order: - - **Merge-forward:** merge the fixed parent branch into its child, validate the child, and continue upward. Preserve each in-progress checkpoint under the [incremental-retargeting decision](../../.agents/notes/implemented/process/2026-07-26-incremental-pr-base-retargeting.md). + - **Merge-forward:** merge the fixed parent branch into its child, validate the child, and continue upward. Preserve each in-progress checkpoint. - **Native cascading rebase:** use `gh stack rebase`, validate the rewritten layers, then publish with `gh stack push`; or use `gh stack sync`, which may publish first and therefore requires immediate post-sync validation under [dsh-pre-push-checks](../../.agents/skills/dsh-pre-push-checks/SKILL.md). 4. Treat delegated fixes as trust-but-verify: a sub-agent's report describes intent, not necessarily what landed. Re-run the gates yourself on the actual tree, and for a regression guard, prove it FAILS on the unfixed code (introduce the regression, watch red, revert) — a guard that passes both ways guards nothing. A sub-agent that reframes a problem as already handled is a signal to dig in personally. 5. Reply in the review thread (`gh api repos/{owner}/{repo}/pulls/{pr}/comments/{id}/replies`), not as a top-level comment, stating the fix and the current commit or head that carries it. diff --git a/docs/cookbook/responding-to-pr-review-on-a-stack.zh.md b/docs/cookbook/responding-to-pr-review-on-a-stack.zh.md index ca030741ec..a33418d342 100644 --- a/docs/cookbook/responding-to-pr-review-on-a-stack.zh.md +++ b/docs/cookbook/responding-to-pr-review-on-a-stack.zh.md @@ -17,7 +17,7 @@ 1. 在行动之前先就事论事地审视每条评论:对照代码验证其论断——评审者指出了正确的症状,但仍可能误诊原因。 2. 将每个被接受的发现映射到引入该问题的 PR,并在那里修复。 3. 将修复后的层按顺序传播到每个受影响的子 PR: - - **Merge-forward:** 将修复后的父分支合并到其子分支,验证子分支,然后继续沿堆叠向上传播。依照[增量更新 base 的决策](../../.agents/notes/implemented/process/2026-07-26-incremental-pr-base-retargeting.zh.md),保留每个正在处理的检查点。 + - **Merge-forward:** 将修复后的父分支合并到其子分支,验证子分支,然后继续沿堆叠向上传播。保留每个正在处理的检查点。 - **原生级联 rebase:** 使用 `gh stack rebase`,验证所有已改写的层,然后通过 `gh stack push` 发布;也可以使用 `gh stack sync`,该命令可能先发布,因此必须按照 [dsh-pre-push-checks](../../.agents/skills/dsh-pre-push-checks/SKILL.md) 在同步后立即验证。 4. 委派的修复需要信任但验证:subagent 的报告描述的是意图,不一定是实际落地的内容。请亲自在实际代码树上重新运行门禁;对于回归守卫,要证明它在未修复的代码上**失败**(引入回归、观察变红、再还原)——两种情况都通过的守卫什么也守不住。subagent 将问题重新定性为「已处理」时,这是一个需要亲自深入的信号。 5. 在评审线程中回复(`gh api repos/{owner}/{repo}/pulls/{pr}/comments/{id}/replies`),而非发顶层评论;说明修复内容及当前承载修复的 commit 或 head。 diff --git a/docs/development.i18n.yaml b/docs/development.i18n.yaml index c45e00ced7..14b86dfa27 100644 --- a/docs/development.i18n.yaml +++ b/docs/development.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write docs/development.md -development.md: 7fc6ae14266253b9e50a1a5f3e9ee6f8e6fbcde7 -development.zh.md: 79e25b489d4c7c3f425460d5bffd0c0265f5b02b +development.md: 0f9e76f30e6fc65f242b7f4ce6e1bef79e3451b9 +development.zh.md: 6e98acf9d9cda5271b98c3afbf4b915673fde4d0 diff --git a/docs/development.md b/docs/development.md index 7fc6ae1426..0f9e76f30e 100644 --- a/docs/development.md +++ b/docs/development.md @@ -73,11 +73,11 @@ pnpm run build:web Both tsdown passes use the same complete workspace match. They neither scan build artifacts to discover Client packages nor maintain a Host/Client package filter list. Package-local tsdown configs select entries for the current phase through `DSH_BUILD_FACE`: an ordinary Client plugin produces both its Node loader and browser bundle during the Client phase; `api-remotes` uses `hostPhase: true` to produce its Host entry early and only its browser bundle during the Client phase. Tsdown consumes only the JavaScript emitted to `lib/types` by the preceding tsc phase. -Typert runs only during Host tsdown, seeded by `tsconfig.host.json`. It analyzes Host types and generates both Host reflection artifacts and the Host-for-Client Remote projection; Client tsdown does not start Typert. Consequently, `pnpm run typecheck` runs the complete Host lib phase before Client tsc, while `pnpm run build` continues through Client tsdown and the Web build. The [API Remotes generated-contract build note](../.agents/notes/implemented/process/2026-08-08-api-remotes-generated-contract-build.md) records this ordering decision. +Typert runs only during Host tsdown, seeded by `tsconfig.host.json`. It analyzes Host types and generates both Host reflection artifacts and the Host-for-Client Remote projection; Client tsdown does not start Typert. Consequently, `pnpm run typecheck` runs the complete Host lib phase before Client tsc, while `pnpm run build` continues through Client tsdown and the Web build. `pnpm run build` embeds the root package version, the seven-character source commit, and a dirty marker when Git reports local changes; it also inherits other caller-supplied `DSH_CLIENT_*` values. `pnpm run build:official` is the cross-platform local equivalent of the CI and release artifact build and omits the local dirty marker. Each successful complete build writes a gitignored record that binds the exact public values to the Vite output and dynamic client bundles; release packing and built Web tests reject a missing record or artifacts changed by a later partial build. `pnpm run dev:web` still requires the artifact tree from a prior complete build, but it samples the current version and Git state once at startup and shares that environment across every watcher stage for the session; it does not validate the complete-build record because the watcher stages rewrite its recorded artifacts. -Static analysis and tests resolve workspace imports through the base `paths` map to `src` and must pass on a clean tree; gates that consume built `lib/` output declare that dependency explicitly. Generated Host-for-Client Remote declarations are the deliberate exception: the public `typecheck`, `lint`, and `doc-typecheck` commands generate them first, while internal `*:contracts-ready` scripts assume that an invoking public command or scheduler gate already depends on the Typert contract-generation pass or the complete build. See the [solution-root note](../.agents/notes/implemented/process/2026-07-22-tsconfig-solution-root-two-aggregates.md) for the two-aggregate setup, the [ts-build-config note](../.agents/notes/implemented/process/2026-06-17-ts-build-config.md) for tsc-first emit ownership, and the [Typert Remote note](../.agents/notes/implemented/architecture/2026-08-02-typert-remote-method-calls.md) for the gate-preparation contract. +Static analysis and tests resolve workspace imports through the base `paths` map to `src` and must pass on a clean tree; gates that consume built `lib/` output declare that dependency explicitly. Generated Host-for-Client Remote declarations are the deliberate exception: the public `typecheck`, `lint`, and `doc-typecheck` commands generate them first, while internal `*:contracts-ready` scripts assume that an invoking public command or scheduler gate already depends on the Typert contract-generation pass or the complete build. See the [ts-build-config note](../.agents/notes/implemented/process/2026-06-17-ts-build-config.md) for tsc-first emit ownership and the [Typert Remote note](../.agents/notes/implemented/architecture/2026-08-02-typert-remote-method-calls.md) for the gate-preparation contract. Business services declare callable methods on the Host with `@Remote` or `@RemoteScope`; the Host build generates Host-for-Client types and runtime contributions, and the Client's `api-remotes` composition loads those contributions under `ctx.remote` and scoped `agentCtx.remote` namespaces. See [API Gateway](api-gateway.md) for the generated artifacts on both sides, their assembly relationships, the SRC development fallback, and the Web build order. diff --git a/docs/development.zh.md b/docs/development.zh.md index 79e25b489d..6e98acf9d9 100644 --- a/docs/development.zh.md +++ b/docs/development.zh.md @@ -77,11 +77,11 @@ pnpm run build:web 两次 tsdown 都使用同一组完整 workspace 匹配,不扫描构建产物来发现 Client 包,也不维护 Host/Client 包过滤表。包内 tsdown 配置根据 `DSH_BUILD_FACE` 决定当前阶段的入口:普通 Client 插件在 Client 阶段同时生成 Node loader 与 browser bundle;`api-remotes` 通过 `hostPhase: true` 提前生成 Host 入口,再在 Client 阶段只生成 browser bundle。tsdown 只消费 `lib/types` 中由前置 tsc 发射的 JavaScript。 -Typert 只在 Host tsdown 中以 `tsconfig.host.json` 为种子运行。它分析 Host 类型并生成 Host 反射产物及 Host-for-Client Remote 投影;Client tsdown 不启动 Typert。`pnpm run typecheck` 因此先执行完整 Host lib 阶段,再运行 Client tsc;`pnpm run build` 继续执行 Client tsdown 和 Web 构建。该顺序的决策记录见 [API Remotes 生成约定构建 Note](../.agents/notes/implemented/process/2026-08-08-api-remotes-generated-contract-build.zh.md)。 +Typert 只在 Host tsdown 中以 `tsconfig.host.json` 为种子运行。它分析 Host 类型并生成 Host 反射产物及 Host-for-Client Remote 投影;Client tsdown 不启动 Typert。`pnpm run typecheck` 因此先执行完整 Host lib 阶段,再运行 Client tsc;`pnpm run build` 继续执行 Client tsdown 和 Web 构建。 `pnpm run build` 会内联根包版本、七位源码 commit,并在 Git 报告本地变化时内联 dirty 标记;调用方提供的其他 `DSH_CLIENT_*` 值也会被继承。`pnpm run build:official` 是与 CI 和 release 产物构建等价的跨平台本地命令,并省略本地 dirty 标记。每次完整构建成功后都会写入一份被 gitignore 的记录,把精确公开值与 Vite 输出及动态 client bundle 绑定;release 打包和 built Web 测试会拒绝缺少记录或被后续局部构建改动的产物。`pnpm run dev:web` 仍需要先执行完整构建来准备产物树,但会在启动时读取一次当前版本和 Git 状态,并在本次会话的所有 watcher stage 之间共享该环境;它不会校验完整构建记录,因为 watcher stage 会重写记录覆盖的产物。 -静态分析和测试通过 base 的 `paths` 映射把工作区 import 解析到 `src`,且必须在干净树上通过;消费构建产物 `lib/` 的门禁显式声明该依赖。生成的 Host-for-Client Remote 声明是有意设置的例外:公共 `typecheck`、`lint` 和 `doc-typecheck` 命令会先生成这些声明,而内部 `*:contracts-ready` 脚本假定调用它的公共命令或调度器门禁已经依赖 Typert 约定生成阶段或完整构建。两个 aggregate 的设置见 [solution-root Note](../.agents/notes/implemented/process/2026-07-22-tsconfig-solution-root-two-aggregates.zh.md),tsc-first 发射职责见 [ts-build-config Note](../.agents/notes/implemented/process/2026-06-17-ts-build-config.zh.md),门禁准备约定见 [Typert Remote Agent Note](../.agents/notes/implemented/architecture/2026-08-02-typert-remote-method-calls.zh.md)。 +静态分析和测试通过 base 的 `paths` 映射把工作区 import 解析到 `src`,且必须在干净树上通过;消费构建产物 `lib/` 的门禁显式声明该依赖。生成的 Host-for-Client Remote 声明是有意设置的例外:公共 `typecheck`、`lint` 和 `doc-typecheck` 命令会先生成这些声明,而内部 `*:contracts-ready` 脚本假定调用它的公共命令或调度器门禁已经依赖 Typert 约定生成阶段或完整构建。tsc-first 发射职责见 [ts-build-config Note](../.agents/notes/implemented/process/2026-06-17-ts-build-config.zh.md),门禁准备约定见 [Typert Remote Agent Note](../.agents/notes/implemented/architecture/2026-08-02-typert-remote-method-calls.zh.md)。 业务服务在 Host 使用 `@Remote` 或 `@RemoteScope` 声明可调用方法;Host 构建生成 Host-for-Client 类型与运行时贡献,Client 的 `api-remotes` 组合加载这些贡献并挂到 `ctx.remote` 与作用域 `agentCtx.remote` namespace。两侧的生成产物、装配关系、SRC 开发回退和 Web 构建顺序见 [API Gateway](api-gateway.zh.md)。 diff --git a/docs/i18n/README.i18n.yaml b/docs/i18n/README.i18n.yaml index e5cf47c79c..fe64fd1e42 100644 --- a/docs/i18n/README.i18n.yaml +++ b/docs/i18n/README.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write docs/i18n/README.md -README.md: aa075f588d00543b862583912a687722b434de67 -README.zh.md: 08f4a1d1854d56c47b0bd9bbf0611304c892df90 +README.md: 1b6ed4a3f4bff05cdb52b28fc81c5d7b47a9a260 +README.zh.md: e28db9bb230cf5fb344fdc3ddc415883f5ebe6b3 diff --git a/docs/i18n/README.md b/docs/i18n/README.md index aa075f588d..1b6ed4a3f4 100644 --- a/docs/i18n/README.md +++ b/docs/i18n/README.md @@ -15,7 +15,7 @@ This repo's documentation is read by people and agents both inside and outside t foo.zh.md: 89e6c98d92887913cadf06b2adb97f26cde4849b ``` - Blob hashes, not commit hashes, so the record is computable for files edited in the same PR (`git hash-object foo.md`) and consistency is a pure content comparison. `--write` stores those snapshots in the local Git object database before recording them, including uncommitted working-tree contents, and pins every distinct stored blob under a content-addressed `refs/dsh/translation-pairing/snapshots/` ref so garbage collection cannot invalidate a recorded recovery pointer. The recorded hashes recover the exact last-confirmed text of either side, so an out-of-sync pair is updated by patching the counterpart minimally against the edited side's diff — never by re-translating whole files. Routine work makes that patch directly; when the user explicitly invokes the extended workflow, `pnpm run gen-translation-brief ` can instead assemble the update at the narrowest safely aligned granularity and `--apply` can splice a code-fence-only change after structural validation ([briefed-updates Agent Note](../../.agents/notes/implemented/process/2026-07-26-briefed-minimal-translation-updates.md)). After bringing the pair back in line, `pnpm run verify-translation-pairing --write ` re-records both hashes; that yaml diff is the reviewable act of confirming consistency, which is why `--write` requires naming the pairs you confirmed (`--write --all` is the explicit corpus-wide form). + Blob hashes, not commit hashes, so the record is computable for files edited in the same PR (`git hash-object foo.md`) and consistency is a pure content comparison. `--write` stores those snapshots in the local Git object database before recording them, including uncommitted working-tree contents, and pins every distinct stored blob under a content-addressed `refs/dsh/translation-pairing/snapshots/` ref so garbage collection cannot invalidate a recorded recovery pointer. The recorded hashes recover the exact last-confirmed text of either side, so an out-of-sync pair is updated by patching the counterpart minimally against the edited side's diff — never by re-translating whole files. Routine work makes that patch directly; when the user explicitly invokes the extended workflow, `pnpm run gen-translation-brief ` can instead assemble the update at the narrowest safely aligned granularity and `--apply` can splice a code-fence-only change after structural validation. After bringing the pair back in line, `pnpm run verify-translation-pairing --write ` re-records both hashes; that yaml diff is the reviewable act of confirming consistency, which is why `--write` requires naming the pairs you confirmed (`--write --all` is the explicit corpus-wide form). When two branches contain valid confirmations of the same pair, the installed `dsh-translation-pairing` Git merge driver composes a new record only if Git's default text merge succeeds for both recorded owner-blob triplets and the merged pair retains its required switchers and structural signature. The Chinese file must retain its English backlink; an authored English source must retain its Chinese link, while a listed generated English source is exempt. Any structure the driver cannot verify remains an ordinary conflict; `pnpm run resolve-translation-pairing-conflicts` applies the same fail-closed operation to a merge that has already stopped, stages every safe pairing record, and exits unsuccessfully when other pairing conflicts remain. The [automatic pairing merges Agent Note](../../.agents/notes/implemented/process/2026-08-08-automatic-translation-pairing-merges.md) owns the mechanism and alternatives. - **Language switcher.** The Chinese file always links back immediately after its H1 heading with `[English](foo.md) | 中文`. An authored English file reciprocates there with `English | [中文](foo.zh.md)`; a listed generated English source omits that line so it remains byte-identical to generator output. A README published outside GitHub, such as PyPI project metadata, may use the canonical `https://github.com/deepseek-ai/deepseek-harness/blob/master/` URL to the same counterpart so the switcher still resolves there. diff --git a/docs/i18n/README.zh.md b/docs/i18n/README.zh.md index 08f4a1d185..e28db9bb23 100644 --- a/docs/i18n/README.zh.md +++ b/docs/i18n/README.zh.md @@ -17,7 +17,7 @@ foo.zh.md: 89e6c98d92887913cadf06b2adb97f26cde4849b ``` - 用 blob hash 而不是 commit hash,这样同一个 PR 里改动的文件也能算出记录(`git hash-object foo.md`),一致性是纯内容比较。`--write` 会先把这些快照存入本地 Git 对象库再写下记录,未提交的 worktree 内容也不例外;它还会在内容寻址的 `refs/dsh/translation-pairing/snapshots/` ref 下固定每个不同的已存 blob,使垃圾回收无法让已记录的恢复指针失效。记录的 hash 能还原任一侧上次确认时的确切文本,所以失去同步的配对是「按被改一侧的 diff 最小化地修补另一侧」,从不整篇重译。日常工作会直接完成这份修补;用户显式调用扩展工作流时,可改由 `pnpm run gen-translation-brief ` 以能安全对齐的最窄粒度汇集这次更新,并由 `--apply` 在结构校验后拼接仅涉及围栏代码块的改动([briefed-updates Agent Note](../../.agents/notes/implemented/process/2026-07-26-briefed-minimal-translation-updates.zh.md))。两侧对齐后,`pnpm run verify-translation-pairing --write ` 重新记录两个 hash;那份 YAML diff 就是「确认一致」这个动作本身,可以被评审,也正因如此,`--write` 要求点名你确认过的配对(`--write --all` 是显式的全语料形式)。 + 用 blob hash 而不是 commit hash,这样同一个 PR 里改动的文件也能算出记录(`git hash-object foo.md`),一致性是纯内容比较。`--write` 会先把这些快照存入本地 Git 对象库再写下记录,未提交的 worktree 内容也不例外;它还会在内容寻址的 `refs/dsh/translation-pairing/snapshots/` ref 下固定每个不同的已存 blob,使垃圾回收无法让已记录的恢复指针失效。记录的 hash 能还原任一侧上次确认时的确切文本,所以失去同步的配对是「按被改一侧的 diff 最小化地修补另一侧」,从不整篇重译。日常工作会直接完成这份修补;用户显式调用扩展工作流时,可改由 `pnpm run gen-translation-brief ` 以能安全对齐的最窄粒度汇集这次更新,并由 `--apply` 在结构校验后拼接仅涉及围栏代码块的改动。两侧对齐后,`pnpm run verify-translation-pairing --write ` 重新记录两个 hash;那份 YAML diff 就是「确认一致」这个动作本身,可以被评审,也正因如此,`--write` 要求点名你确认过的配对(`--write --all` 是显式的全语料形式)。 当两个分支都包含同一配对的有效确认时,已安装的 `dsh-translation-pairing` Git 合并驱动只会在 Git 默认文本合并能分别干净合并记录所指向的英文三方 blob 与中文三方 blob,且合并后的配对仍保留必需的语言切换行和结构签名时,组合出一份新记录。中文文件必须保留指向英文的反向链接;普通撰写的英文源必须保留指向中文的链接,而清单内的生成英文源不作此要求。任何合并驱动无法验证的结构都保留为普通冲突;`pnpm run resolve-translation-pairing-conflicts` 会对已经停止的合并执行同一套遇错即保留冲突的操作,暂存每份可安全生成的配对记录,并在还有其他配对冲突时以非零状态退出。[自动配对合并 Agent Note](../../.agents/notes/implemented/process/2026-08-08-automatic-translation-pairing-merges.zh.md) 负责记录该机制与备选方案。 - **语言切换行。** 中文文件一律在 H1 标题后立即以 `[English](foo.md) | 中文` 链回英文。普通撰写的英文文件在同一位置以 `English | [中文](foo.zh.md)` 互链;清单内的生成英文源省略此行,以便与生成器输出逐字节一致。发布到 GitHub 以外位置的 README(例如 PyPI 项目元数据)可以改用指向同一对侧文件的规范 `https://github.com/deepseek-ai/deepseek-harness/blob/master/` URL,使切换行在该位置仍可访问。 diff --git a/docs/i18n/translation-prompt.md b/docs/i18n/translation-prompt.md index 903a3bfc59..be61b27830 100644 --- a/docs/i18n/translation-prompt.md +++ b/docs/i18n/translation-prompt.md @@ -1,6 +1,6 @@ # Translation prompt (pipeline asset) -本文件是自动翻译流水线的 prompt 模板;从 `# Translation Prompt` 开始的正文会逐字进入模型请求,因此本文件不参与双语配对(见 [README.md](README.md) 排除清单)。模板正文与内嵌 few-shot 正误例由 jingtingxiang 基于对存量译文的质量评审撰写,是流水线行为的拍板基线。渲染时把 [terminology.md](terminology.md) 整表填入 `{{terminology}}`;除此之外不注入任何其他仓库文件(translation-rules.md 约束人和 agent 的翻译工作,不注入本模板)。[style-samples.md](style-samples.md) 定义文体,模板中的 Examples 只用于说明典型问题,两者冲突时以文体样例为准。本模板遵循 [提示词 v4 约定 Agent Note](../../.agents/notes/implemented/process/2026-07-23-translation-prompt-v4-contract.md) 记录的兼容协议。修改本文件会改变翻译行为,需正常经过 PR 评审。 +本文件是自动翻译流水线的 prompt 模板;从 `# Translation Prompt` 开始的正文会逐字进入模型请求,因此本文件不参与双语配对(见 [README.md](README.md) 排除清单)。模板正文与内嵌 few-shot 正误例由 jingtingxiang 基于对存量译文的质量评审撰写,是流水线行为的拍板基线。渲染时把 [terminology.md](terminology.md) 整表填入 `{{terminology}}`;除此之外不注入任何其他仓库文件(translation-rules.md 约束人和 agent 的翻译工作,不注入本模板)。[style-samples.md](style-samples.md) 定义文体,模板中的 Examples 只用于说明典型问题,两者冲突时以文体样例为准。本模板遵循 [提示词 v4 约定 Agent Note](../../.agents/notes/archived/process/2026-07-23-translation-prompt-v4-contract.md) 记录的兼容协议。修改本文件会改变翻译行为,需正常经过 PR 评审。 ## 占位符约定 diff --git a/docs/persistence-catalog.i18n.yaml b/docs/persistence-catalog.i18n.yaml index 3a281b936a..12e46151b8 100644 --- a/docs/persistence-catalog.i18n.yaml +++ b/docs/persistence-catalog.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write docs/persistence-catalog.md -persistence-catalog.md: 0b52801083498542c814d06171942f33d013efe2 -persistence-catalog.zh.md: eda29e00c9dfaff6c5d35afba55f2a8cfb95f075 +persistence-catalog.md: 1505a188f065e7fdcc5c01e29730c1d751537442 +persistence-catalog.zh.md: 8d4b040c42ce3201012e0b548fd41f3b09bb4453 diff --git a/docs/persistence-catalog.md b/docs/persistence-catalog.md index 0b52801083..1505a188f0 100644 --- a/docs/persistence-catalog.md +++ b/docs/persistence-catalog.md @@ -5,7 +5,7 @@ Every event type that can appear in a session's durable event log: the complete persisted `SessionEvent` envelope and each member of the merge-extensible `SessionEventMap` — the owning vocabulary in `@deepseek-ai/dsh-session` plus every plugin declaration merge into `@deepseek-ai/dsh-session/types` in this repo — with source JSDoc, full payload declaration, surface badge, and declaration site. It complements [session.md](subsystems/session.md) (surface ordering and the `deriveMessages()` projection), [persistence.md](subsystems/persistence.md) (how the log is made durable), and the generated region of [session.md](subsystems/session.md#cordis-surface) (the live bus wiring — a log event is NOT a cordis event; it reaches listeners via the single `session/event` emit). -This file is GENERATED from source (`scripts/gen-persistence-catalog.ts`) and verified fresh by `pnpm run verify-persistence-catalog` (part of `doc-sync`) — do not edit it by hand. Declaration blocks retain the source declaration and nested property JSDoc, removing only the indentation imposed by a containing interface/module, and use a `ts persistence-catalog` fence (skipped by doc-typecheck because declarations reference types from their owning modules). Type names in a payload link to the page that documents them. See [the persistence-log-catalog Agent Note](../.agents/notes/archived/process/2026-07-04-persistence-log-catalog.md). +This file is GENERATED from source (`scripts/gen-persistence-catalog.ts`) and verified fresh by `pnpm run verify-persistence-catalog` (part of `doc-sync`) — do not edit it by hand. Declaration blocks retain the source declaration and nested property JSDoc, removing only the indentation imposed by a containing interface/module, and use a `ts persistence-catalog` fence (skipped by doc-typecheck because declarations reference types from their owning modules). Type names in a payload link to the page that documents them. The archived [persistence-log-catalog record](../.agents/notes/archived/process/2026-07-04-persistence-log-catalog.md) documents the original catalog decision. The envelope declarations below compose each event's `type`, monotonic `seq`, epoch-ms `time`, `data`, the optional `ignorable` unknown-type skip marker, and the conditional `surfaceOp`/`sourceEventSeqs` fields. **surface** marks a `SurfaceEventType` member: it produces an LLM message and declares how it joins the surface list. **log-only** marks everything else: a durable, replayable record with no derived-history contribution. Every payload is JSON-serializable (enforced at `Session.append`). Current writers stamp `SESSION_FORMAT_VERSION`; supported historical artifacts reach this current vocabulary through the build-static adjacent migration catalog ([the version lifecycle](subsystems/persistence.md)). Scope: the packages in this repo; a downstream plugin can merge further current-version event types, which are outside this catalog by construction and require an explicit disposition at a later format edge. diff --git a/docs/persistence-catalog.zh.md b/docs/persistence-catalog.zh.md index eda29e00c9..8d4b040c42 100644 --- a/docs/persistence-catalog.zh.md +++ b/docs/persistence-catalog.zh.md @@ -7,7 +7,7 @@ 会话持久事件日志中可能出现的所有事件类型:完整持久化的 `SessionEvent` 信封,以及可通过合并扩展的 `SessionEventMap` 中的每个成员,包括 `@deepseek-ai/dsh-session` 所属的词汇和本仓库中每个插件对 `@deepseek-ai/dsh-session/types` 的声明合并,并附有源 JSDoc、完整 payload 声明、surface 标记和声明位置。本文档是 [session.md](subsystems/session.zh.md)(surface 排序与 `deriveMessages()` 投影)、[persistence.md](subsystems/persistence.zh.md)(如何让日志持久化)和 [session.md](subsystems/session.zh.md#cordis-surface) 中生成区域(实时总线接线;日志事件**不是** cordis 事件,它通过唯一的 `session/event` emit 到达监听器)的补充。 -英文源文件根据源码生成(`scripts/gen-persistence-catalog.ts`),并由 `pnpm run verify-persistence-catalog`(`doc-sync`(文档同步门禁)的一部分)验证新鲜度;本中文文件作为经评审对侧通过双语配对维护。声明块保留源码声明和嵌套属性的 JSDoc,只移除其所在接口/模块带来的缩进,并使用 `ts persistence-catalog` 围栏(doc-typecheck 会跳过这些围栏,因为声明引用了其所属模块中的类型)。payload 中的类型名称会链接到记录该类型的页面。参见 [persistence-log-catalog Agent Note](../.agents/notes/archived/process/2026-07-04-persistence-log-catalog.md)。 +英文源文件根据源码生成(`scripts/gen-persistence-catalog.ts`),并由 `pnpm run verify-persistence-catalog`(`doc-sync`(文档同步门禁)的一部分)验证新鲜度;本中文文件作为经评审对侧通过双语配对维护。声明块保留源码声明和嵌套属性的 JSDoc,只移除其所在接口/模块带来的缩进,并使用 `ts persistence-catalog` 围栏(doc-typecheck 会跳过这些围栏,因为声明引用了其所属模块中的类型)。payload 中的类型名称会链接到记录该类型的页面。已归档的 [persistence-log-catalog 记录](../.agents/notes/archived/process/2026-07-04-persistence-log-catalog.md)记载了最初的目录决策。 以下信封声明组合了每个事件的 `type`、单调递增的 `seq`、以 epoch 毫秒表示的 `time`、`data`、可选的未知类型跳过标记 `ignorable`,以及条件字段 `surfaceOp`/`sourceEventSeqs`。**surface** 表示 `SurfaceEventType` 成员:它会生成一条 LLM(大语言模型)消息,并声明该事件如何加入 surface 列表。**log-only** 表示其他所有事件:这类记录可持久化、可回放,但不参与派生历史。每个 payload 均可进行 JSON 序列化(在 `Session.append` 处强制执行)。当前 writer 会写入 `SESSION_FORMAT_VERSION`;受支持的历史产物通过构建期静态相邻迁移目录进入这套当前词汇(参见[版本生命周期](subsystems/persistence.zh.md))。范围仅限本仓库中的包;下游插件可以继续合并其他当前版本事件类型,这些类型按设计不属于本目录,并且在后续格式迁移边中需要显式 disposition。 diff --git a/docs/rescope.i18n.yaml b/docs/rescope.i18n.yaml index 526de65763..620421da84 100644 --- a/docs/rescope.i18n.yaml +++ b/docs/rescope.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write docs/rescope.md -rescope.md: bfcc150bcbab3abf695e6ca2a75ea149b9dcbeea -rescope.zh.md: bc4f72250249a14209156765962ceb94d9d643b4 +rescope.md: 676dee2507a974beb20a4c0e8059b6a74aa9c0c9 +rescope.zh.md: 1683111354b1ff7c8771a87b7b03bcbeb0ac0761 diff --git a/docs/rescope.md b/docs/rescope.md index bfcc150bcb..676dee2507 100644 --- a/docs/rescope.md +++ b/docs/rescope.md @@ -2,7 +2,7 @@ English | [中文](rescope.zh.md) -The Cordis framework and its foundation libraries are vendored under [`vendor/`](../vendor/README.md) and published under the `@deepseek-ai` scope, because every harness package declares the framework as a peer dependency: publishing the harness publishes this layer with it, and under the upstream names that publication would squat them on the registry. This page is the name mapping; the decision and its consequences live in the [rescope Agent Note](../.agents/notes/implemented/process/2026-08-10-vendor-package-rescope.md), and the upstream commits in [`vendor/README.md`](../vendor/README.md). +The Cordis framework and its foundation libraries are vendored under [`vendor/`](../vendor/README.md) and published under the `@deepseek-ai` scope, because every harness package declares the framework as a peer dependency: publishing the harness publishes this layer with it, and under the upstream names that publication would squat them on the registry. This page is the name mapping; the decision and its consequences live in the [rescope Agent Note](../.agents/notes/archived/process/2026-08-10-vendor-package-rescope.md), and the upstream commits in [`vendor/README.md`](../vendor/README.md). ## Name mapping diff --git a/docs/rescope.zh.md b/docs/rescope.zh.md index bc4f722502..1683111354 100644 --- a/docs/rescope.zh.md +++ b/docs/rescope.zh.md @@ -2,7 +2,7 @@ [English](rescope.md) | 中文 -Cordis 框架及其基础库以源码形式 vendored 在 [`vendor/`](../vendor/README.md) 下,并以 `@deepseek-ai` scope 发布:每个 harness 包都把框架声明为 peer dependency,发布 harness 就会连带发布这一层,用上游名发布等于在 registry 上占用别人的名字。本页是名字映射表;决策与影响见 [改名 Agent Note](../.agents/notes/implemented/process/2026-08-10-vendor-package-rescope.zh.md),上游 commit 见 [`vendor/README.md`](../vendor/README.md)。 +Cordis 框架及其基础库以源码形式 vendored 在 [`vendor/`](../vendor/README.md) 下,并以 `@deepseek-ai` scope 发布:每个 harness 包都把框架声明为 peer dependency,发布 harness 就会连带发布这一层,用上游名发布等于在 registry 上占用别人的名字。本页是名字映射表;决策与影响见 [改名 Agent Note](../.agents/notes/archived/process/2026-08-10-vendor-package-rescope.md),上游 commit 见 [`vendor/README.md`](../vendor/README.md)。 ## 名字映射 diff --git a/docs/subsystems/agent-team.i18n.yaml b/docs/subsystems/agent-team.i18n.yaml index 8e3d2f6a95..60b0f39970 100644 --- a/docs/subsystems/agent-team.i18n.yaml +++ b/docs/subsystems/agent-team.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write docs/subsystems/agent-team.md -agent-team.md: 201123ea94499ff20cae25d68b1f7a826439d143 -agent-team.zh.md: d6973ae6899c1d884dc51bd71afbd36a41895527 +agent-team.md: 6f20ee11cbaf66028a5a3123d1682a0e9a87b014 +agent-team.zh.md: 5f2cfae582f275f25380cbe996f5bad711c0f917 diff --git a/docs/subsystems/agent-team.md b/docs/subsystems/agent-team.md index 201123ea94..6f20ee11cb 100644 --- a/docs/subsystems/agent-team.md +++ b/docs/subsystems/agent-team.md @@ -2,7 +2,7 @@ English | [中文](agent-team.zh.md) -Types shared by the experimental implicit-root Team domain, model tools, and host adapters. The [Agent Teams Agent Note](../../.agents/notes/implemented/feature/2026-08-05-agent-teams.md) owns identity, mailbox, task, and shared-checkout decisions; the [Team Steer messaging Agent Note](../../.agents/notes/implemented/simplification/2026-08-30-team-send-message-steer.md) owns message scheduling; this page records the literal durable forms from [`packages/experimental/agent-team/src/types.ts`](../../packages/experimental/agent-team/src/types.ts). +Types shared by the experimental implicit-root Team domain, model tools, and host adapters. The [Agent Teams Agent Note](../../.agents/notes/implemented/feature/2026-08-05-agent-teams.md) owns identity, mailbox, task, and shared-checkout decisions; this page records the literal durable forms from [`packages/experimental/agent-team/src/types.ts`](../../packages/experimental/agent-team/src/types.ts). ## Identity and roster diff --git a/docs/subsystems/agent-team.zh.md b/docs/subsystems/agent-team.zh.md index d6973ae689..5f2cfae582 100644 --- a/docs/subsystems/agent-team.zh.md +++ b/docs/subsystems/agent-team.zh.md @@ -2,7 +2,7 @@ [English](agent-team.md) | 中文 -实验性隐式 Root Team 领域、模型工具与宿主适配器共享的类型。[Agent Teams Agent Note](../../.agents/notes/implemented/feature/2026-08-05-agent-teams.zh.md)负责身份、mailbox、task 与共享 checkout 决策;[Team Steer 消息 Agent Note](../../.agents/notes/implemented/simplification/2026-08-30-team-send-message-steer.zh.md)负责消息调度;本页记录 [`packages/experimental/agent-team/src/types.ts`](../../packages/experimental/agent-team/src/types.ts) 中的字面持久形式。 +实验性隐式 Root Team 领域、模型工具与宿主适配器共享的类型。[Agent Teams Agent Note](../../.agents/notes/implemented/feature/2026-08-05-agent-teams.zh.md)负责身份、mailbox、task 与共享 checkout 决策;本页记录 [`packages/experimental/agent-team/src/types.ts`](../../packages/experimental/agent-team/src/types.ts) 中的字面持久形式。 ## 身份与 roster diff --git a/docs/subsystems/invariants.i18n.yaml b/docs/subsystems/invariants.i18n.yaml index e7113fd035..0effb6bdfd 100644 --- a/docs/subsystems/invariants.i18n.yaml +++ b/docs/subsystems/invariants.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write docs/subsystems/invariants.md -invariants.md: 9d0de847a7b7170365e06431be79f7feb1e2ef4d -invariants.zh.md: 972b0b17730a8d261a7ea837dd771f05b14614f2 +invariants.md: 2d1856dfd049a32076356bf6fa8736d4179881f2 +invariants.zh.md: 15760a9b116d03475970de762657e841e094c72a diff --git a/docs/subsystems/invariants.md b/docs/subsystems/invariants.md index 9d0de847a7..2d1856dfd0 100644 --- a/docs/subsystems/invariants.md +++ b/docs/subsystems/invariants.md @@ -2,7 +2,7 @@ English | [中文](invariants.zh.md) -[dsh-invariants](../../packages/runtime-diagnostics/invariants) is the configurable registry service (`ctx.invariants`) for package-owned runtime invariant checks. It is one support-group package, not a three-package capability seam, and not part of the agent-loop spine: the registry owns selection, name reservation, child-fiber lifecycle, and package-attributed failure, while every workspace package publishes a `./invariant` companion plugin that registers checks under its exact npm package name. What a check may assert — authoritative event streams or mutable data, never service or method presence — is the runtime-invariants convention in [AGENTS.md](../../AGENTS.md#conventions); the registry design is owned by the [invariant-service Agent Note](../../.agents/notes/implemented/architecture/2026-07-19-package-owned-invariant-service.md). +[dsh-invariants](../../packages/runtime-diagnostics/invariants) is the configurable registry service (`ctx.invariants`) for package-owned runtime invariant checks. It is one support-group package, not a three-package capability seam, and not part of the agent-loop spine: the registry owns selection, name reservation, child-fiber lifecycle, and package-attributed failure, while every workspace package publishes a `./invariant` companion plugin that registers checks under its exact npm package name. What a check may assert — authoritative event streams or mutable data, never service or method presence — is the runtime-invariants convention in [AGENTS.md](../../AGENTS.md#conventions). Source: [`packages/runtime-diagnostics/invariants/src/index.ts`](../../packages/runtime-diagnostics/invariants/src/index.ts) diff --git a/docs/subsystems/invariants.zh.md b/docs/subsystems/invariants.zh.md index 972b0b1773..15760a9b11 100644 --- a/docs/subsystems/invariants.zh.md +++ b/docs/subsystems/invariants.zh.md @@ -2,7 +2,7 @@ [English](invariants.md) | 中文 -[dsh-invariants](../../packages/runtime-diagnostics/invariants) 是面向包自有运行时不变式检查的可配置注册表服务(`ctx.invariants`)。它是一个 support 组的包,不是三包能力 seam,也不属于 agent loop(智能体循环)主干:注册表拥有选择逻辑、名称保留、子 fiber 生命周期和归因到包的失败,而每个工作区包发布一个 `./invariant` 配套插件,以自己确切的 npm 包名注册检查。检查可以断言什么(权威事件流或可变数据,绝不是服务或方法是否存在)是 [AGENTS.md](../../AGENTS.md#conventions) 中的运行时不变式约定;注册表设计由[不变式服务 Agent Note](../../.agents/notes/implemented/architecture/2026-07-19-package-owned-invariant-service.zh.md)规定。 +[dsh-invariants](../../packages/runtime-diagnostics/invariants) 是面向包自有运行时不变式检查的可配置注册表服务(`ctx.invariants`)。它是一个 support 组的包,不是三包能力 seam,也不属于 agent loop(智能体循环)主干:注册表拥有选择逻辑、名称保留、子 fiber 生命周期和归因到包的失败,而每个工作区包发布一个 `./invariant` 配套插件,以自己确切的 npm 包名注册检查。检查可以断言什么(权威事件流或可变数据,绝不是服务或方法是否存在)是 [AGENTS.md](../../AGENTS.md#conventions) 中的运行时不变式约定。 源码:[`packages/runtime-diagnostics/invariants/src/index.ts`](../../packages/runtime-diagnostics/invariants/src/index.ts) diff --git a/docs/subsystems/llm-streaming.i18n.yaml b/docs/subsystems/llm-streaming.i18n.yaml index 81f5077280..e155bd8f56 100644 --- a/docs/subsystems/llm-streaming.i18n.yaml +++ b/docs/subsystems/llm-streaming.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write docs/subsystems/llm-streaming.md -llm-streaming.md: e88741c6bb63b819a314f74fc425c89b865b5906 -llm-streaming.zh.md: 4bc7fc6124e77c7e3bbbc474bff9bc79fbd8eb27 +llm-streaming.md: b523df1c970a2bfae23450d7f7909e9e6e960e8c +llm-streaming.zh.md: 745733ed639ff06bfd154592929bae4812868c30 diff --git a/docs/subsystems/llm-streaming.md b/docs/subsystems/llm-streaming.md index e88741c6bb..b523df1c97 100644 --- a/docs/subsystems/llm-streaming.md +++ b/docs/subsystems/llm-streaming.md @@ -295,7 +295,7 @@ Every adapter MUST obey these, and every consumer may rely on them: - **One adapter call is one provider attempt.** Adapters disable library retries. Agent-level recovery opens another durable numbered turn; direct `ctx.llm.stream()` callers remain single-attempt. - **Provider stalls are bounded at the transport.** Both shipping remote adapters expose positive finite `streamIdleTimeoutMs` with a five-minute default. The watchdog arms only while iterator `next()` is outstanding, uses one stable signal for the whole request, maps its own expiry to `TIMEOUT`, and keeps an earlier caller abort as `ABORTED`. - **Context overflow has one canonical code.** Both DeepSeek adapters classify explicit provider detail through `isContextWindowExceededError()` and surface `CONTEXT_WINDOW_EXCEEDED`, whether the failure arrives as a thrown HTTP `LlmError` or an in-band finish error. Consumers route on the code, never provider text. -- **An empty completion is a retryable error, not a silent success.** Both adapters map a terminal `stop` finish that carried no content blocks to `finish {kind:'error'}` with the canonical `EMPTY_RESPONSE` code, and `dsh-llm-retry` retries it by default; see [empty model responses are retryable](../../.agents/notes/implemented/bug-fix/2026-07-24-empty-model-response-is-retryable.md). +- **An empty completion is a retryable error, not a silent success.** Both adapters map a terminal `stop` finish that carried no content blocks to `finish {kind:'error'}` with the canonical `EMPTY_RESPONSE` code, and `dsh-llm-retry` retries it by default. - **Every provider HTTP request carries the app-attribution header.** Adapters send `attributionHeaders()` (below) - the `User-Agent` baseline - and prove it with a wire-level test. - **Replay state is adapter-owned; its split is shared.** A successful `finish` may carry a `ReplayEnvelope`: opaque response-level metadata plus optional per-block entries aligned with the emitted block sequence. The alignment is the harness's vocabulary — when assembly drops a block it drops the entry at the same position, so stored metadata always describes stored content. The loop stores the pruned envelope with the assembled assistant message. On a later request, `LlmRuntime` passes the state only when the historical provider and target provider are currently registered to the exact same adapter instance. That adapter validates the state and owns any cross-model or cross-provider conversion; other adapters receive the provider-neutral content plus provider/model fields without the private state. Durable content stays authoritative: a stored state the reading adapter cannot use degrades that one message to provider-neutral conversion with a diagnostic instead of failing the request. diff --git a/docs/subsystems/llm-streaming.zh.md b/docs/subsystems/llm-streaming.zh.md index 4bc7fc6124..745733ed63 100644 --- a/docs/subsystems/llm-streaming.zh.md +++ b/docs/subsystems/llm-streaming.zh.md @@ -297,7 +297,7 @@ interface LlmImageRequestPricing { - **一次适配器调用就是一次提供方尝试。** 适配器禁用库重试。agent 层恢复会打开另一个持久、带编号的轮次;直接调用 `ctx.llm.stream()` 的调用方仍然只尝试一次。 - **提供方停顿在传输层受到时限约束。** 两个已交付的远程适配器都暴露正数且有限的 `streamIdleTimeoutMs`,默认五分钟。watchdog 只在 iterator `next()` 尚未完成时启动,整个请求使用同一个稳定 signal,把自身到期映射为 `TIMEOUT`,并把更早发生的调用方中止保留为 `ABORTED`。 - **上下文溢出只有一个规范 code。** 两个 DeepSeek 适配器都通过 `isContextWindowExceededError()` 对提供方的显式细节分类并暴露 `CONTEXT_WINDOW_EXCEEDED`,无论失败以抛出的 HTTP `LlmError` 还是带内 finish error 到达。消费方按 code 路由,绝不依赖提供方文本。 -- **空 completion 是可重试错误,而不是静默的成功结果。** 两个适配器都把没有携带任何内容块的终止性 `stop` 结束映射为携带规范 `EMPTY_RESPONSE` code 的 `finish {kind:'error'}`,`dsh-llm-retry` 默认会重试它;详见[空模型响应可重试](../../.agents/notes/implemented/bug-fix/2026-07-24-empty-model-response-is-retryable.zh.md)。 +- **空 completion 是可重试错误,而不是静默的成功结果。** 两个适配器都把没有携带任何内容块的终止性 `stop` 结束映射为携带规范 `EMPTY_RESPONSE` code 的 `finish {kind:'error'}`,`dsh-llm-retry` 默认会重试它。 - **每个提供方 HTTP 请求都携带应用归属头。** 适配器发送 `attributionHeaders()`(见下文)作为 `User-Agent` 基线,并通过协议级测试加以证明。 - **回放状态归适配器所有;其切分是共享词汇。** 成功的 `finish` 可以携带一个 `ReplayEnvelope`:不透明的响应级元数据,加上与发射块序列对齐的可选逐块条目。对齐关系是 harness 的词汇——组装丢弃某个块时,同一位置的条目一并丢弃,因此存储的元数据始终描述存储的内容。循环把裁剪后的数据与组装后的 assistant 消息一起存储。后续请求中,仅当历史提供方与目标提供方当前注册到完全相同的适配器实例时,`LlmRuntime` 才会传递该状态。该适配器负责校验状态并拥有所有跨模型或跨提供方转换;其他适配器只会收到提供方无关的内容以及提供方/模型字段,不会收到私有状态。持久化内容保持权威:读取适配器无法使用的已存状态只会把这一条消息降级为提供方无关转换并带出诊断,而不是让请求失败。 diff --git a/docs/subsystems/lsp.i18n.yaml b/docs/subsystems/lsp.i18n.yaml index aa407f434a..91fd875375 100644 --- a/docs/subsystems/lsp.i18n.yaml +++ b/docs/subsystems/lsp.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write docs/subsystems/lsp.md -lsp.md: 8f0b12cdbc4d81a9317b8f360fb7b76a03fbeb2b -lsp.zh.md: e88218f549b5f12ac1f6681085380347818a478d +lsp.md: 5a8adb24c1768ac2a977b99f1ffb732610ccd911 +lsp.zh.md: e041217866b3469f6ad06fac9ad20289a6524eb3 diff --git a/docs/subsystems/lsp.md b/docs/subsystems/lsp.md index 8f0b12cdbc..5a8adb24c1 100644 --- a/docs/subsystems/lsp.md +++ b/docs/subsystems/lsp.md @@ -2,7 +2,7 @@ English | [中文](lsp.zh.md) -The LSP seam — a [capability seam](../../.agents/notes/implemented/architecture/2026-07-15-lsp-capability-seam.md) exposing semantic code navigation on one `ctx.lsp` service, split across packages: Service Definition ([dsh-lsp](../../packages/lsp/lsp), `ctx.lsp` + the provider registry), a generic Service Provider ([dsh-lsp-stdio](../../packages/lsp/lsp-stdio), a configured stdio language-server host), and Consumer ([dsh-tool-lsp](../../packages/lsp/tool-lsp), the `lsp` tool schema). LSP is **one optional capability**, not part of the agent-loop spine — so its vocabulary lives here, not in [core.md](core.md). A provider swap does not change how the model asks for navigation. +The LSP seam — a [capability seam](../glossary.md#capability-seam) exposing semantic code navigation on one `ctx.lsp` service, split across packages: Service Definition ([dsh-lsp](../../packages/lsp/lsp), `ctx.lsp` + the provider registry), a generic Service Provider ([dsh-lsp-stdio](../../packages/lsp/lsp-stdio), a configured stdio language-server host), and Consumer ([dsh-tool-lsp](../../packages/lsp/tool-lsp), the `lsp` tool schema). LSP is **one optional capability**, not part of the agent-loop spine — so its vocabulary lives here, not in [core.md](core.md). A provider swap does not change how the model asks for navigation. Source: [`packages/lsp/lsp/src/types.ts`](../../packages/lsp/lsp/src/types.ts) diff --git a/docs/subsystems/lsp.zh.md b/docs/subsystems/lsp.zh.md index e88218f549..e041217866 100644 --- a/docs/subsystems/lsp.zh.md +++ b/docs/subsystems/lsp.zh.md @@ -2,7 +2,7 @@ [English](lsp.md) | 中文 -LSP seam 是一个[能力 seam](../../.agents/notes/implemented/architecture/2026-07-15-lsp-capability-seam.zh.md):它在单一 `ctx.lsp` 服务上公开语义代码导航,并拆分到多个包:Service Definition([dsh-lsp](../../packages/lsp/lsp),`ctx.lsp` + 提供方注册表)、通用 Service Provider([dsh-lsp-stdio](../../packages/lsp/lsp-stdio),经过配置的 stdio 语言服务器宿主)和 Consumer([dsh-tool-lsp](../../packages/lsp/tool-lsp),即 `lsp` 工具 schema)。LSP 是**一项可选能力**,不属于 agent loop(智能体循环)主干,因此其词汇定义在此而非 [core.md](core.zh.md) 中。更换提供方不会改变模型请求导航的方式。 +LSP seam 是一个[能力 seam](../glossary.zh.md#capability-seam):它在单一 `ctx.lsp` 服务上公开语义代码导航,并拆分到多个包:Service Definition([dsh-lsp](../../packages/lsp/lsp),`ctx.lsp` + 提供方注册表)、通用 Service Provider([dsh-lsp-stdio](../../packages/lsp/lsp-stdio),经过配置的 stdio 语言服务器宿主)和 Consumer([dsh-tool-lsp](../../packages/lsp/tool-lsp),即 `lsp` 工具 schema)。LSP 是**一项可选能力**,不属于 agent loop(智能体循环)主干,因此其词汇定义在此而非 [core.md](core.zh.md) 中。更换提供方不会改变模型请求导航的方式。 源文件:[`packages/lsp/lsp/src/types.ts`](../../packages/lsp/lsp/src/types.ts) diff --git a/docs/subsystems/persistence.i18n.yaml b/docs/subsystems/persistence.i18n.yaml index 2d933b93e3..19beb147c8 100644 --- a/docs/subsystems/persistence.i18n.yaml +++ b/docs/subsystems/persistence.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write docs/subsystems/persistence.md -persistence.md: 7cce80f43591610c1e0667d480971dbd8f3cd4f7 -persistence.zh.md: 73169ec2f3a58f06a7355922b0e0f7e4e82944c7 +persistence.md: 8667e3680499cebe38aefd249f38fdd7e035e414 +persistence.zh.md: af181d53a1b6bef737c96c829cd9ac551ff246ab diff --git a/docs/subsystems/persistence.md b/docs/subsystems/persistence.md index 7cce80f435..8667e36804 100644 --- a/docs/subsystems/persistence.md +++ b/docs/subsystems/persistence.md @@ -90,7 +90,7 @@ A created session is observable in this process from the moment `create` resolve ## The flush checkpoint -`session/event` is a *synchronous* notification; the mounted backend routes it by session id into the active write handle's bounded write-behind window without blocking the producer (the backend installs these listeners once, because persistence already enforces one active write handle per id). The first pending event starts a fixed internal batching window, and later events join without resetting its deadline. Expiry starts one durable `append` through the session's write handle; events admitted during that write receive their own deadline and form a follow-up batch. `session/flush` cancels the wait and drains through quiescence, so the loop still uses it as the ordering and error-observation checkpoint before claiming the next ordinary turn. A rejected background write retains its events in order, pauses the automatic path, and is reported through the logger; the next explicit flush retries and rejects loudly to its caller. `session/disposed` performs the same final drain and closes the handle, and `close()` itself drains the routed buffer through the still-open storage, so backend teardown's close sweep loses nothing. The window bounds only intentional batching wait, not event-loop scheduling or backend durability latency ([decision](../../.agents/notes/implemented/architecture/2026-08-08-bounded-session-persistence-write-batching.md)). +`session/event` is a *synchronous* notification; the mounted backend routes it by session id into the active write handle's bounded write-behind window without blocking the producer (the backend installs these listeners once, because persistence already enforces one active write handle per id). The first pending event starts a fixed internal batching window, and later events join without resetting its deadline. Expiry starts one durable `append` through the session's write handle; events admitted during that write receive their own deadline and form a follow-up batch. `session/flush` cancels the wait and drains through quiescence, so the loop still uses it as the ordering and error-observation checkpoint before claiming the next ordinary turn. A rejected background write retains its events in order, pauses the automatic path, and is reported through the logger; the next explicit flush retries and rejects loudly to its caller. `session/disposed` performs the same final drain and closes the handle, and `close()` itself drains the routed buffer through the still-open storage, so backend teardown's close sweep loses nothing. The window bounds only intentional batching wait, not event-loop scheduling or backend durability latency. ## Crash recovery preserves an interrupted turn @@ -98,7 +98,7 @@ A log crashed mid-turn ends with an open `turn/start` and no `turn/end`. Persist Repair therefore writes only under write ownership: a live session's write handle is held by its lifecycle owner, so a concurrent `open(id, 'write')` rejects with `SessionAlreadyOwnedError` instead of racing repair against a live turn. Read-only observers (session-query) balance an interrupted cold log with the same closers in memory only, writing nothing back. -Read-only observation is `open(id, 'read')`: the handle serves validated contiguous prefix slices, never a torn tail, and repeated reads on one handle never observe an older state than a prior read. There is no persistence-side prepared-Session cache: session-query owns its cold-read cache, keying one balanced cold Session per id on the `stat().revision` change token and re-reading only when the token changes. The [handle-based persistence Agent Note](../../.agents/notes/implemented/architecture/2026-08-27-handle-based-session-persistence.md) owns this lifecycle; the [Session preparation decision](../../.agents/notes/implemented/architecture/2026-08-05-session-preparation.md) records the publication-boundary `SessionPreparation` that remains. +Read-only observation is `open(id, 'read')`: the handle serves validated contiguous prefix slices, never a torn tail, and repeated reads on one handle never observe an older state than a prior read. There is no persistence-side prepared-Session cache: session-query owns its cold-read cache, keying one balanced cold Session per id on the `stat().revision` change token and re-reading only when the token changes. The [handle-based persistence Agent Note](../../.agents/notes/implemented/architecture/2026-08-27-handle-based-session-persistence.md) owns this lifecycle; the archived [Session preparation record](../../.agents/notes/archived/architecture/2026-08-05-session-preparation.md) documents the original publication-boundary `SessionPreparation` decision. ## `SessionLocation` — refusal-diagnostics artifact target diff --git a/docs/subsystems/persistence.zh.md b/docs/subsystems/persistence.zh.md index 73169ec2f3..af181d53a1 100644 --- a/docs/subsystems/persistence.zh.md +++ b/docs/subsystems/persistence.zh.md @@ -90,7 +90,7 @@ interface SessionHandle extends AsyncDisposable { ## flush 检查点 -`session/event` 是一个*同步*通知;挂载的后端按会话 id 把它路由进活跃写句柄的有界 write-behind 窗口,而不阻塞生产方(后端一次性安装这些监听器,因为持久化已保证每个 id 只有一个活跃写句柄)。第一个待处理事件会开启固定的内部批处理窗口,后续事件会加入但不会重置其截止时间。窗口到期后会通过该会话的写句柄启动一次持久化 `append`;该次写入期间接纳的事件会获得自己的截止时间,并形成后续批次。`session/flush` 会取消等待并排空至完全停稳,因此循环仍将其用作在领取下一个普通轮次之前的顺序与错误观察检查点。后台写入被拒绝时会按序保留对应事件、暂停自动路径,并通过 logger 报告;下一次显式 flush 会重试,并向其调用方响亮地拒绝。`session/disposed` 会执行同样的最终排空并关闭句柄,而 `close()` 本身会经由仍然打开的存储排空已路由的缓冲,因此后端 teardown 的关闭清扫不丢任何数据。该窗口只限制有意的批处理等待,不限制事件循环调度或后端完成持久化的延迟([决策](../../.agents/notes/implemented/architecture/2026-08-08-bounded-session-persistence-write-batching.zh.md))。 +`session/event` 是一个*同步*通知;挂载的后端按会话 id 把它路由进活跃写句柄的有界 write-behind 窗口,而不阻塞生产方(后端一次性安装这些监听器,因为持久化已保证每个 id 只有一个活跃写句柄)。第一个待处理事件会开启固定的内部批处理窗口,后续事件会加入但不会重置其截止时间。窗口到期后会通过该会话的写句柄启动一次持久化 `append`;该次写入期间接纳的事件会获得自己的截止时间,并形成后续批次。`session/flush` 会取消等待并排空至完全停稳,因此循环仍将其用作在领取下一个普通轮次之前的顺序与错误观察检查点。后台写入被拒绝时会按序保留对应事件、暂停自动路径,并通过 logger 报告;下一次显式 flush 会重试,并向其调用方响亮地拒绝。`session/disposed` 会执行同样的最终排空并关闭句柄,而 `close()` 本身会经由仍然打开的存储排空已路由的缓冲,因此后端 teardown 的关闭清扫不丢任何数据。该窗口只限制有意的批处理等待,不限制事件循环调度或后端完成持久化的延迟。 ## 崩溃恢复保留被中断的轮次 @@ -98,7 +98,7 @@ interface SessionHandle extends AsyncDisposable { 因此修复只在写所有权之下写入:活跃会话的写句柄由其生命周期所有者持有,故并发的 `open(id, 'write')` 会以 `SessionAlreadyOwnedError` 拒绝,而不是让修复与活跃轮次竞速。只读观察方(session-query)仅在内存中用同样的闭合事件配平被中断的冷日志,不回写任何内容。 -只读观察即 `open(id, 'read')`:句柄提供经过验证的连续前缀切片,绝不返回撕裂尾部,且同一句柄上的重复读取绝不会观察到比先前读取更旧的状态。持久化侧不存在已准备 Session 缓存:session-query 拥有自己的冷读缓存,按 `stat().revision` 变更令牌为每个 id 缓存一个已配平的冷 Session,仅在令牌变化时重新读取。该生命周期由[基于句柄的持久化 Agent Note](../../.agents/notes/implemented/architecture/2026-08-27-handle-based-session-persistence.zh.md)定义;[Session 准备阶段决策](../../.agents/notes/implemented/architecture/2026-08-05-session-preparation.zh.md)记录仍然保留的发布边界 `SessionPreparation`。 +只读观察即 `open(id, 'read')`:句柄提供经过验证的连续前缀切片,绝不返回撕裂尾部,且同一句柄上的重复读取绝不会观察到比先前读取更旧的状态。持久化侧不存在已准备 Session 缓存:session-query 拥有自己的冷读缓存,按 `stat().revision` 变更令牌为每个 id 缓存一个已配平的冷 Session,仅在令牌变化时重新读取。该生命周期由[基于句柄的持久化 Agent Note](../../.agents/notes/implemented/architecture/2026-08-27-handle-based-session-persistence.zh.md)定义;已归档的 [Session 准备阶段记录](../../.agents/notes/archived/architecture/2026-08-05-session-preparation.md)记载了发布边界 `SessionPreparation` 最初的决策。 ## `SessionLocation`——拒绝诊断的产物目标 diff --git a/docs/subsystems/schedule.i18n.yaml b/docs/subsystems/schedule.i18n.yaml index 547a308dd8..3e13e79724 100644 --- a/docs/subsystems/schedule.i18n.yaml +++ b/docs/subsystems/schedule.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write docs/subsystems/schedule.md -schedule.md: 40aa3592dec89fe8daa45beb630076e0476d2b16 -schedule.zh.md: 53a36ee9b51545ca74ac6166ef31d1e002d1f1f2 +schedule.md: 82d221260ec4ca1411ab981801d89226753703b2 +schedule.zh.md: f60edcc53d610aa29afed36fce10b100c401e27c diff --git a/docs/subsystems/schedule.md b/docs/subsystems/schedule.md index 40aa3592de..82d221260e 100644 --- a/docs/subsystems/schedule.md +++ b/docs/subsystems/schedule.md @@ -2,7 +2,7 @@ English | [中文](schedule.zh.md) -Schedule owns durable reminders that return to the original live Session as ordinary later conversation turns. The [durable Schedule Agent Note](../../.agents/notes/implemented/feature/2026-08-05-durable-web-schedule.md) owns persistence, lifecycle, and active-state presentation, [conversational delivery](../../.agents/notes/implemented/simplification/2026-08-09-conversational-schedule-delivery.md) owns the no-receipt boundary, the [explicit time-zone boundary](../../.agents/notes/implemented/simplification/2026-08-09-explicit-schedule-time-zone.md) owns browser-local interpretation, and [bounded fixed-rate Schedule](../../.agents/notes/implemented/simplification/2026-08-09-bounded-fixed-rate-schedule.md) owns recurrence. This page records the durable and model-facing shapes from [`packages/schedule/schedule/src/types.ts`](../../packages/schedule/schedule/src/types.ts); the [package README](../../packages/schedule/schedule/README.md) owns composition, tool behavior, and the exact reminder framing. +Schedule owns durable reminders that return to the original live Session as ordinary later conversation turns. The [durable Schedule Agent Note](../../.agents/notes/implemented/feature/2026-08-05-durable-web-schedule.md) owns persistence, lifecycle, and active-state presentation, and the [explicit time-zone boundary](../../.agents/notes/implemented/simplification/2026-08-09-explicit-schedule-time-zone.md) owns browser-local interpretation. This page records the durable and model-facing shapes from [`packages/schedule/schedule/src/types.ts`](../../packages/schedule/schedule/src/types.ts); the [package README](../../packages/schedule/schedule/README.md) owns composition, tool behavior, and the exact reminder framing. ## Durable records diff --git a/docs/subsystems/schedule.zh.md b/docs/subsystems/schedule.zh.md index 53a36ee9b5..f60edcc53d 100644 --- a/docs/subsystems/schedule.zh.md +++ b/docs/subsystems/schedule.zh.md @@ -2,7 +2,7 @@ [English](schedule.md) | 中文 -Schedule 拥有持久提醒;这些提醒会作为普通的后续对话轮次返回原 live Session。[持久 Schedule Agent Note](../../.agents/notes/implemented/feature/2026-08-05-durable-web-schedule.zh.md) 负责持久化、生命周期与活动状态呈现,[对话式交付](../../.agents/notes/implemented/simplification/2026-08-09-conversational-schedule-delivery.zh.md) 负责无回执边界,[显式时区边界](../../.agents/notes/implemented/simplification/2026-08-09-explicit-schedule-time-zone.zh.md) 负责浏览器本地解释,[有界固定速率 Schedule](../../.agents/notes/implemented/simplification/2026-08-09-bounded-fixed-rate-schedule.zh.md) 负责重复调度。本页记录 [`packages/schedule/schedule/src/types.ts`](../../packages/schedule/schedule/src/types.ts) 中的持久数据形状和面向模型的数据形状;[包 README](../../packages/schedule/schedule/README.zh.md) 负责组合、工具行为与确切的提醒 framing。 +Schedule 拥有持久提醒;这些提醒会作为普通的后续对话轮次返回原 live Session。[持久 Schedule Agent Note](../../.agents/notes/implemented/feature/2026-08-05-durable-web-schedule.zh.md) 负责持久化、生命周期与活动状态呈现,[显式时区边界](../../.agents/notes/implemented/simplification/2026-08-09-explicit-schedule-time-zone.zh.md) 负责浏览器本地解释。本页记录 [`packages/schedule/schedule/src/types.ts`](../../packages/schedule/schedule/src/types.ts) 中的持久数据形状和面向模型的数据形状;[包 README](../../packages/schedule/schedule/README.zh.md) 负责组合、工具行为与确切的提醒 framing。 ## 持久记录 diff --git a/docs/subsystems/scope.i18n.yaml b/docs/subsystems/scope.i18n.yaml index 58a27ee29e..57127065bc 100644 --- a/docs/subsystems/scope.i18n.yaml +++ b/docs/subsystems/scope.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write docs/subsystems/scope.md -scope.md: c425217de224839d719da213e33f58bd2e6bf002 -scope.zh.md: 448f9fbfdc2211e9134cdf831a6e5311511acdfe +scope.md: 1ed297f7ae8bec2b850ee2110cd689751e287cf6 +scope.zh.md: 3633c99003d3c47cb02c04313fd6dd1a5208ddfc diff --git a/docs/subsystems/scope.md b/docs/subsystems/scope.md index c425217de2..1ed297f7ae 100644 --- a/docs/subsystems/scope.md +++ b/docs/subsystems/scope.md @@ -2,7 +2,7 @@ English | [中文](scope.zh.md) -The [scope package](../../packages/core/scope) supplies the identity, carrier, and scoped-layer vocabulary that makes one registration context mean both per-agent visibility and shared lifetime ownership. It is a library primitive rather than a Cordis service; the [agent-scope runtime-design Agent Note](../../.agents/notes/implemented/architecture/2026-07-12-agent-scope-runtime-design.md#scope-routing-one-opaque-key-selects-one-layer) owns the lifecycle rationale, the [shared-storage Agent Note](../../.agents/notes/implemented/architecture/2026-07-12-scoped-layers-store.md) owns the registry-layer decision, and the package [README](../../packages/core/scope/README.md) owns the callable API and filtering semantics. +The [scope package](../../packages/core/scope) supplies the identity, carrier, and scoped-layer vocabulary that makes one registration context mean both per-agent visibility and shared lifetime ownership. It is a library primitive rather than a Cordis service; the [agent-scope runtime-design Agent Note](../../.agents/notes/implemented/architecture/2026-07-12-agent-scope-runtime-design.md#scope-routing-one-opaque-key-selects-one-layer) owns the lifecycle rationale, and the package [README](../../packages/core/scope/README.md) owns the callable API and filtering semantics. Sources: [`packages/core/scope/src/index.ts`](../../packages/core/scope/src/index.ts) and [`packages/core/scope/src/store.ts`](../../packages/core/scope/src/store.ts). diff --git a/docs/subsystems/scope.zh.md b/docs/subsystems/scope.zh.md index 448f9fbfdc..3633c99003 100644 --- a/docs/subsystems/scope.zh.md +++ b/docs/subsystems/scope.zh.md @@ -2,7 +2,7 @@ [English](scope.md) | 中文 -[scope 包](../../packages/core/scope)提供身份、载体与作用域层词汇,使同一注册上下文同时表达每个 agent(智能体)的可见性和共享生命周期所有权。它是库原语,而不是 Cordis 服务;生命周期设计理由由 [agent-scope 运行时设计 Agent Note](../../.agents/notes/implemented/architecture/2026-07-12-agent-scope-runtime-design.zh.md#scope-routing-one-opaque-key-selects-one-layer)规定,注册表层决策由[共享存储 Agent Note](../../.agents/notes/implemented/architecture/2026-07-12-scoped-layers-store.zh.md)规定,可调用 API 与过滤语义则由包 [README](../../packages/core/scope/README.zh.md)规定。 +[scope 包](../../packages/core/scope)提供身份、载体与作用域层词汇,使同一注册上下文同时表达每个 agent(智能体)的可见性和共享生命周期所有权。它是库原语,而不是 Cordis 服务;生命周期设计理由由 [agent-scope 运行时设计 Agent Note](../../.agents/notes/implemented/architecture/2026-07-12-agent-scope-runtime-design.zh.md#scope-routing-one-opaque-key-selects-one-layer)规定,可调用 API 与过滤语义则由包 [README](../../packages/core/scope/README.zh.md)规定。 源码:[`packages/core/scope/src/index.ts`](../../packages/core/scope/src/index.ts) 与 [`packages/core/scope/src/store.ts`](../../packages/core/scope/src/store.ts)。 diff --git a/docs/subsystems/session.i18n.yaml b/docs/subsystems/session.i18n.yaml index 47bb6dc74e..d1435bee30 100644 --- a/docs/subsystems/session.i18n.yaml +++ b/docs/subsystems/session.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write docs/subsystems/session.md -session.md: d10c2d9a797eccb4a4cdc7e9ad8d607732dbc877 -session.zh.md: 890d930a6ef979ec1b57eeb2d43ac3eb700a28c4 +session.md: 35dd9d7470ed8f1d067cd0d50b8b5c9d0c4da7ff +session.zh.md: eb4b5e850d49472819d2d41611eed4c7dcbfbbf3 diff --git a/docs/subsystems/session.md b/docs/subsystems/session.md index d10c2d9a79..35dd9d7470 100644 --- a/docs/subsystems/session.md +++ b/docs/subsystems/session.md @@ -651,7 +651,7 @@ A plugin may declaration-merge extra `SessionEventMap` types. These are **log-on When several events in one plugin-owned family assemble into one Web Client Conversation Node, every start, update, result, resource, or interruption event in that family carries or independently derives the same stable business id. This requirement applies to correlated Node families, not to every Session event; it lets the client group each event without guessing from adjacency or scanning history. See the [Conversation subsystem](conversation.md). -The hook bridges' `hook/invoked` / `hook/result` pairs (from `@deepseek-ai/dsh-hook-protocol`) correlate by `handlerId`. `UserPromptSubmit`, `PreToolUse`, `PostToolUse`, and `Stop` fire inside the loop's open turn, so their `hook/*` records are turn-enclosed by construction. `SessionStart` gets no `hook/*` record because it runs before turn 1; its context remains pending in the inbox until a waking delivery opens a turn (see [the hook-bridges Agent Note](../../.agents/notes/implemented/feature/2026-06-30-hook-bridges.md)). +The hook bridges' `hook/invoked` / `hook/result` pairs (from `@deepseek-ai/dsh-hook-protocol`) correlate by `handlerId`. `UserPromptSubmit`, `PreToolUse`, `PostToolUse`, and `Stop` fire inside the loop's open turn, so their `hook/*` records are turn-enclosed by construction. `SessionStart` gets no `hook/*` record because it runs before turn 1; its context remains pending in the inbox until a waking delivery opens a turn. ## Durability contract diff --git a/docs/subsystems/session.zh.md b/docs/subsystems/session.zh.md index 890d930a6e..eb4b5e850d 100644 --- a/docs/subsystems/session.zh.md +++ b/docs/subsystems/session.zh.md @@ -655,7 +655,7 @@ interface TurnEndReasonMap { 如果同一个插件事件族中的多条事件要组装成一个 Web Client Conversation Node,该事件族中的每条 start、update、result、resource 或 interruption 事件都必须携带或独立推导出同一个稳定业务 id。此要求只约束需要关联的 Node 事件族,并不要求每条 Session 事件都有业务 id;Client 因此无须根据相邻关系猜测归属,也无须扫描历史。参见 [Conversation 子系统](conversation.zh.md)。 -钩子桥接层的 `hook/invoked` / `hook/result` 对(来自 `@deepseek-ai/dsh-hook-protocol`)通过 `handlerId` 关联。`UserPromptSubmit`、`PreToolUse`、`PostToolUse` 与 `Stop` 在 loop 已打开的轮次内触发,因此其 `hook/*` 记录天然位于轮次之内。`SessionStart` 不生成 `hook/*` 记录,因为它在轮次 1 之前运行;其上下文会在 inbox 中保持待处理,直到唤醒交付打开一个轮次(见[钩子桥接 Agent Note](../../.agents/notes/implemented/feature/2026-06-30-hook-bridges.zh.md))。 +钩子桥接层的 `hook/invoked` / `hook/result` 对(来自 `@deepseek-ai/dsh-hook-protocol`)通过 `handlerId` 关联。`UserPromptSubmit`、`PreToolUse`、`PostToolUse` 与 `Stop` 在 loop 已打开的轮次内触发,因此其 `hook/*` 记录天然位于轮次之内。`SessionStart` 不生成 `hook/*` 记录,因为它在轮次 1 之前运行;其上下文会在 inbox 中保持待处理,直到唤醒交付打开一个轮次。 ## 持久性约定 diff --git a/docs/subsystems/shell.i18n.yaml b/docs/subsystems/shell.i18n.yaml index 1515b4ed7b..c77b3a0313 100644 --- a/docs/subsystems/shell.i18n.yaml +++ b/docs/subsystems/shell.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write docs/subsystems/shell.md -shell.md: 554adcfb1b37a5e2fe787a78dbb61a1206f80cf9 -shell.zh.md: f15b57cc0050bb8f38d2652ddb9ad0e250568663 +shell.md: 9d5f0431924499716c38d4d155e8993d942788ab +shell.zh.md: 5874ca44f82d54e9ae4b505a22c7a97a9a0b45d6 diff --git a/docs/subsystems/shell.md b/docs/subsystems/shell.md index 554adcfb1b..9d5f043192 100644 --- a/docs/subsystems/shell.md +++ b/docs/subsystems/shell.md @@ -98,7 +98,7 @@ interface ShellExecSpec { } ``` -`stdin` and `env` are trusted in-process plugin inputs and are not exposed by `dsh-tool-bash`. The local executor scrubs ambient credentials before merging explicit caller-supplied env. See [the bash-stdin-env Agent Note](../../.agents/notes/implemented/architecture/2026-06-30-bash-stdin-env-trusted-plugin-api.md). +`stdin` and `env` are trusted in-process plugin inputs and are not exposed by `dsh-tool-bash`. The local executor scrubs ambient credentials before merging explicit caller-supplied env. `stdoutMaxBytes` is also trusted-plugin-only. It lets a foreground consumer request complete stdout up to a bounded parser budget without changing stderr, background jobs, or the model-facing bash tool's ordinary output cap. diff --git a/docs/subsystems/shell.zh.md b/docs/subsystems/shell.zh.md index f15b57cc00..5874ca44f8 100644 --- a/docs/subsystems/shell.zh.md +++ b/docs/subsystems/shell.zh.md @@ -98,7 +98,7 @@ interface ShellExecSpec { } ``` -`stdin` 和 `env` 是受信任的进程内插件输入,不由 `dsh-tool-bash` 暴露。本地执行器会先清除环境中的凭据,再合并调用方显式提供的 env。见 [bash-stdin-env Agent Note](../../.agents/notes/implemented/architecture/2026-06-30-bash-stdin-env-trusted-plugin-api.zh.md)。 +`stdin` 和 `env` 是受信任的进程内插件输入,不由 `dsh-tool-bash` 暴露。本地执行器会先清除环境中的凭据,再合并调用方显式提供的 env。 `stdoutMaxBytes` 同样仅供受信任插件使用。它让前台消费方能在有界解析预算内请求完整 stdout,而不会改变 stderr、后台任务或面向模型的 bash 工具的常规输出上限。 diff --git a/docs/subsystems/subagent.i18n.yaml b/docs/subsystems/subagent.i18n.yaml index 642e39cc6a..dd272a85ea 100644 --- a/docs/subsystems/subagent.i18n.yaml +++ b/docs/subsystems/subagent.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write docs/subsystems/subagent.md -subagent.md: 1d111706ee93328e47b0cf2ed069a8fd9cdb56ec -subagent.zh.md: 5b7eca88e9b981c2e582a2af70140f4750914632 +subagent.md: fdd09a53c7d53f90b22a86d72b892d06f02de83d +subagent.zh.md: 6ac92003aea1805a98b24869927070a26d5daf25 diff --git a/docs/subsystems/subagent.md b/docs/subsystems/subagent.md index 1d111706ee..fdd09a53c7 100644 --- a/docs/subsystems/subagent.md +++ b/docs/subsystems/subagent.md @@ -4,7 +4,7 @@ English | [中文](subagent.zh.md) The subagent seam lets an agent delegate work to a child agent. Like [bash](shell.md), it is **one optional capability**, not part of the agent loop, so its types live here rather than in [core.md](core.md). It differs from the other capability seams because **multiple provider implementations coexist** in one context, registered by name (`ctx.subagents`), while bash allows only one executor. Its registry follows the [LLM adapter registry](llm-streaming.md), not the single-service bash executor. -Service Definition: [dsh-subagent](../../packages/subagent/subagent) (`ctx.subagents` + the vocabulary below). Service Providers are sibling packages (`dsh-subagent-spawn-in-process`, `dsh-subagent-fork-in-process`, `dsh-subagent-acp`, `dsh-subagent-codex`, `dsh-subagent-claude-code`, `dsh-subagent-dsh-sdk`); the model-facing Consumers are [dsh-tool-subagent](../../packages/subagent/tool-subagent) (per-provider delegation) and [dsh-tool-subagent-control](../../packages/subagent/tool-subagent-control) (the optional global `send_message`, `interrupt_agent`, and `list_agents` controls). The same `ctx.subagents` service owns continuable-child orchestration through an internal activation manager and read-only child and descendant discovery straight from the session store and optional session persistence. Product-provider rationale lives in [the Codex and Claude Code Agent Note](../../.agents/notes/implemented/feature/2026-08-04-claude-code-and-codex-subagent-backends.md); common-seam rationale lives in [the subagent Agent Note](../../.agents/notes/implemented/feature/2026-06-21-subagent-capability-seam.md), [the continuable subagents Agent Note](../../.agents/notes/implemented/feature/2026-07-28-continuable-subagent-conversations.md), [the adjacent-Agent messaging Agent Note](../../.agents/notes/implemented/architecture/2026-08-27-adjacent-agent-steer-messaging.md), [the durable catalog Agent Note](../../.agents/notes/implemented/feature/2026-07-22-durable-subagent-catalog-and-list-agents.md), [the list-identity-projection Agent Note](../../.agents/notes/implemented/architecture/2026-08-06-subagent-list-identity-projection.md), and [the merged-service Agent Note](../../.agents/notes/implemented/simplification/2026-07-26-merge-subagent-control-service.md). +Service Definition: [dsh-subagent](../../packages/subagent/subagent) (`ctx.subagents` + the vocabulary below). Service Providers are sibling packages (`dsh-subagent-spawn-in-process`, `dsh-subagent-fork-in-process`, `dsh-subagent-acp`, `dsh-subagent-codex`, `dsh-subagent-claude-code`, `dsh-subagent-dsh-sdk`); the model-facing Consumers are [dsh-tool-subagent](../../packages/subagent/tool-subagent) (per-provider delegation) and [dsh-tool-subagent-control](../../packages/subagent/tool-subagent-control) (the optional global `send_message`, `interrupt_agent`, and `list_agents` controls). The same `ctx.subagents` service owns continuable-child orchestration through an internal activation manager and read-only child and descendant discovery straight from the session store and optional session persistence. Product-provider rationale lives in [the Codex and Claude Code Agent Note](../../.agents/notes/implemented/feature/2026-08-04-claude-code-and-codex-subagent-backends.md); common-seam rationale lives in [the subagent Agent Note](../../.agents/notes/implemented/feature/2026-06-21-subagent-capability-seam.md), [the continuable subagents Agent Note](../../.agents/notes/implemented/feature/2026-07-28-continuable-subagent-conversations.md), and [the adjacent-Agent messaging Agent Note](../../.agents/notes/implemented/architecture/2026-08-27-adjacent-agent-steer-messaging.md); [the archived list-identity-projection record](../../.agents/notes/archived/architecture/2026-08-06-subagent-list-identity-projection.md) documents the original list-identity decision. Sources: [`packages/subagent/subagent/src/types.ts`](../../packages/subagent/subagent/src/types.ts), [`packages/subagent/subagent/src/index.ts`](../../packages/subagent/subagent/src/index.ts), and [`packages/subagent/subagent/src/continuation.ts`](../../packages/subagent/subagent/src/continuation.ts) @@ -262,7 +262,7 @@ A local one-shot provider appends the descriptor inside the child's initial turn ## Durable enumeration: `listChildren()`, `listDescendants()`, and their entries -`SubagentRuntime.listChildren(parentSessionId)` enumerates the parent's direct session-backed subagents from the live-preferred merge of `ctx.sessions` and the session-query engine's `listSessions()` — no Agent is loaded or resumed. Candidates are the direct children whose durable header carries `origin: 'subagent'`; the marker classifies enumeration and coarse generic-route denial but cannot establish a valid descriptor, resumability, or authorization — the projection fold owns identity, and the Activation contract owns resume. Each row's `mode`/`label` is the registered `subagent` projection unit's value, served through a three-rung ladder: the registry's watermark cache for a live child (zero log reads); the optional projection checkpoint cache for a cold one (`cachedSnapshot` — an identity passing the own-suffix seq gate is final, because an own descriptor is immutable once appended); otherwise one `query.observeSession()` cold observation folded through the registry (bounded concurrency, recomputed per listing). The cache is a pure optional accelerator: absent, serving the `null` sentinel or missing the key, failing the seq gate, or faulting, it falls silently through to the authoritative refold. The fold is `subagent/descriptor` last-wins with no failure channel: the child's own descriptor overrides a fork-seeded ancestor's, and a malformed or unknown-version payload folds to a serializable `null` sentinel, treated as no value. The result is one `SubagentListEntry[]` in `createdAt`-then-id order: a served identity yields a `child` entry with `mode: 'one-shot' | 'continuable'` and `activity: 'running' | 'inactive'`; continuable entries always carry `label`, while one-shot entries carry it only when the start caller supplied presentation metadata. A settled candidate whose fold served no identity yields a `corrupt` diagnostic — missing, malformed, and unknown-version descriptors deliberately undistinguished (`unsupported` remains in the type but is never produced); a running candidate without an identity is omitted (the creation window before its descriptor lands); a failed cold inspection yields one `unavailable` diagnostic retried on the next listing, so one damaged sibling cannot hide healthy children. `hasChildren` marks a direct descendant with durable subagent origin, read from the same merged material. Activity snapshots only whether the logical record is live in `ctx.sessions`, not outcome or resumability. Absent persistence, enumeration is live-only rather than an error — a cold child cannot be resumed then either. `listChildren()` throws `SubagentError` with code `SUBAGENT_CONTROL_PROJECTIONS_UNAVAILABLE` when the `ctx.sessionProjections` registry is absent and `SUBAGENT_CONTROL_SESSION_STORE_UNAVAILABLE` when the session store is, both checked before any read so a deployment with zero children still fails deterministically; the list tool requires `ctx.subagents` and `ctx.agents` at plugin load. A service consumer such as a UI can display both modes and choose an unlabeled one-shot fallback, while the model-facing `list_agents` adapter (the separately loadable `/list-agents` plugin of [dsh-tool-subagent-control](../../packages/subagent/tool-subagent-control)) keeps only continuable entries and refines status through the live Agent registry into its own `running`/`idle`/`ready` vocabulary, whose `ready` names a storage-only child as resumable rather than terminal. Listing does not consult the continuation manager's Activation map, Agent registry, or provider availability; `send_message` remains the authoritative delivery-time operation, and a listed running continuable child may still reject delivery as an ownership conflict. The read-path rationale lives in [the list-identity-projection Agent Note](../../.agents/notes/implemented/architecture/2026-08-06-subagent-list-identity-projection.md). +`SubagentRuntime.listChildren(parentSessionId)` enumerates the parent's direct session-backed subagents from the live-preferred merge of `ctx.sessions` and the session-query engine's `listSessions()` — no Agent is loaded or resumed. Candidates are the direct children whose durable header carries `origin: 'subagent'`; the marker classifies enumeration and coarse generic-route denial but cannot establish a valid descriptor, resumability, or authorization — the projection fold owns identity, and the Activation contract owns resume. Each row's `mode`/`label` is the registered `subagent` projection unit's value, served through a three-rung ladder: the registry's watermark cache for a live child (zero log reads); the optional projection checkpoint cache for a cold one (`cachedSnapshot` — an identity passing the own-suffix seq gate is final, because an own descriptor is immutable once appended); otherwise one `query.observeSession()` cold observation folded through the registry (bounded concurrency, recomputed per listing). The cache is a pure optional accelerator: absent, serving the `null` sentinel or missing the key, failing the seq gate, or faulting, it falls silently through to the authoritative refold. The fold is `subagent/descriptor` last-wins with no failure channel: the child's own descriptor overrides a fork-seeded ancestor's, and a malformed or unknown-version payload folds to a serializable `null` sentinel, treated as no value. The result is one `SubagentListEntry[]` in `createdAt`-then-id order: a served identity yields a `child` entry with `mode: 'one-shot' | 'continuable'` and `activity: 'running' | 'inactive'`; continuable entries always carry `label`, while one-shot entries carry it only when the start caller supplied presentation metadata. A settled candidate whose fold served no identity yields a `corrupt` diagnostic — missing, malformed, and unknown-version descriptors deliberately undistinguished (`unsupported` remains in the type but is never produced); a running candidate without an identity is omitted (the creation window before its descriptor lands); a failed cold inspection yields one `unavailable` diagnostic retried on the next listing, so one damaged sibling cannot hide healthy children. `hasChildren` marks a direct descendant with durable subagent origin, read from the same merged material. Activity snapshots only whether the logical record is live in `ctx.sessions`, not outcome or resumability. Absent persistence, enumeration is live-only rather than an error — a cold child cannot be resumed then either. `listChildren()` throws `SubagentError` with code `SUBAGENT_CONTROL_PROJECTIONS_UNAVAILABLE` when the `ctx.sessionProjections` registry is absent and `SUBAGENT_CONTROL_SESSION_STORE_UNAVAILABLE` when the session store is, both checked before any read so a deployment with zero children still fails deterministically; the list tool requires `ctx.subagents` and `ctx.agents` at plugin load. A service consumer such as a UI can display both modes and choose an unlabeled one-shot fallback, while the model-facing `list_agents` adapter (the separately loadable `/list-agents` plugin of [dsh-tool-subagent-control](../../packages/subagent/tool-subagent-control)) keeps only continuable entries and refines status through the live Agent registry into its own `running`/`idle`/`ready` vocabulary, whose `ready` names a storage-only child as resumable rather than terminal. Listing does not consult the continuation manager's Activation map, Agent registry, or provider availability; `send_message` remains the authoritative delivery-time operation, and a listed running continuable child may still reject delivery as an ownership conflict. [The archived list-identity-projection record](../../.agents/notes/archived/architecture/2026-08-06-subagent-list-identity-projection.md) documents the original read-path decision. `SubagentRuntime.listDescendants(rootSessionId)` applies the same live-preferred corpus and projection-backed interpretation to the root's complete descendant tree in stable pre-order. Ordinary sessions and one-shot children remain traversal nodes, so continuable descendants below them are discovered; only `origin: 'subagent'` candidates produce rows. Each returned child or diagnostic adds its position from the enumerated durable header, while a cold inspection revalidates that complete lifecycle before serving identity: diff --git a/docs/subsystems/subagent.zh.md b/docs/subsystems/subagent.zh.md index 5b7eca88e9..6ac92003ae 100644 --- a/docs/subsystems/subagent.zh.md +++ b/docs/subsystems/subagent.zh.md @@ -4,7 +4,7 @@ subagent seam 让一个 agent(智能体)将工作委派给子 agent。与 [bash](shell.zh.md) 一样,它是**一项可选能力**,不属于 agent loop(智能体循环),因此其类型定义在此而非 [core.md](core.zh.md) 中。它不同于其他能力 seam,因为**同一上下文中可共存多个提供方实现**,并按名称注册(`ctx.subagents`),而 bash 只允许一个执行器。该注册表遵循 [LLM(大语言模型)适配器注册表](llm-streaming.zh.md),而非单服务的 bash 执行器。 -Service Definition:[dsh-subagent](../../packages/subagent/subagent)(`ctx.subagents` + 下文词汇)。Service Provider 是六个兄弟包:`dsh-subagent-spawn-in-process`、`dsh-subagent-fork-in-process`、`dsh-subagent-acp`、`dsh-subagent-codex`、`dsh-subagent-claude-code`、`dsh-subagent-dsh-sdk`;面向模型的 Consumer 包括 [dsh-tool-subagent](../../packages/subagent/tool-subagent)(按提供方委派)和 [dsh-tool-subagent-control](../../packages/subagent/tool-subagent-control)(可选的全局 `send_message`、`interrupt_agent` 与 `list_agents` 控制工具)。同一个 `ctx.subagents` 服务通过内部激活管理器负责可继续子 agent 编排,并直接基于会话存储和可选的会话持久化提供只读的 child 与后代发现。产品提供方设计理由见 [Codex 与 Claude Code Agent Note](../../.agents/notes/implemented/feature/2026-08-04-claude-code-and-codex-subagent-backends.zh.md);通用 seam 的设计理由见 [subagent Agent Note](../../.agents/notes/implemented/feature/2026-06-21-subagent-capability-seam.zh.md)、[可继续 subagent Agent Note](../../.agents/notes/implemented/feature/2026-07-28-continuable-subagent-conversations.zh.md)、[相邻 Agent 消息 Agent Note](../../.agents/notes/implemented/architecture/2026-08-27-adjacent-agent-steer-messaging.zh.md)、[持久化目录 Agent Note](../../.agents/notes/implemented/feature/2026-07-22-durable-subagent-catalog-and-list-agents.zh.md)、[列表身份投影 Agent Note](../../.agents/notes/implemented/architecture/2026-08-06-subagent-list-identity-projection.zh.md)和[服务合并 Agent Note](../../.agents/notes/implemented/simplification/2026-07-26-merge-subagent-control-service.zh.md)。 +Service Definition:[dsh-subagent](../../packages/subagent/subagent)(`ctx.subagents` + 下文词汇)。Service Provider 是六个兄弟包:`dsh-subagent-spawn-in-process`、`dsh-subagent-fork-in-process`、`dsh-subagent-acp`、`dsh-subagent-codex`、`dsh-subagent-claude-code`、`dsh-subagent-dsh-sdk`;面向模型的 Consumer 包括 [dsh-tool-subagent](../../packages/subagent/tool-subagent)(按提供方委派)和 [dsh-tool-subagent-control](../../packages/subagent/tool-subagent-control)(可选的全局 `send_message`、`interrupt_agent` 与 `list_agents` 控制工具)。同一个 `ctx.subagents` 服务通过内部激活管理器负责可继续子 agent 编排,并直接基于会话存储和可选的会话持久化提供只读的 child 与后代发现。产品提供方设计理由见 [Codex 与 Claude Code Agent Note](../../.agents/notes/implemented/feature/2026-08-04-claude-code-and-codex-subagent-backends.zh.md);通用 seam 的设计理由见 [subagent Agent Note](../../.agents/notes/implemented/feature/2026-06-21-subagent-capability-seam.zh.md)、[可继续 subagent Agent Note](../../.agents/notes/implemented/feature/2026-07-28-continuable-subagent-conversations.zh.md)和[相邻 Agent 消息 Agent Note](../../.agents/notes/implemented/architecture/2026-08-27-adjacent-agent-steer-messaging.zh.md);[已归档的列表身份投影记录](../../.agents/notes/archived/architecture/2026-08-06-subagent-list-identity-projection.md)记录了最初的列表身份决策。 源码:[`packages/subagent/subagent/src/types.ts`](../../packages/subagent/subagent/src/types.ts)、[`packages/subagent/subagent/src/index.ts`](../../packages/subagent/subagent/src/index.ts)和 [`packages/subagent/subagent/src/continuation.ts`](../../packages/subagent/subagent/src/continuation.ts) @@ -262,7 +262,7 @@ interface ContinuableCreateSpec { ## 持久化枚举:`listChildren()`、`listDescendants()` 与其条目 -`SubagentRuntime.listChildren(parentSessionId)` 从 `ctx.sessions` 与会话查询引擎 `listSessions()` 的实时优先合并中枚举 parent 直接且由会话支撑的 subagent——不会加载或恢复任何 Agent。候选是持久 header 携带 `origin: 'subagent'` 的直接 child;该标记只负责枚举分类与粗粒度的通用路由拒绝,不能证明描述符有效、child 可恢复或操作已获授权——身份由投影折叠负责,恢复由 Activation 约定负责。每行的 `mode`/`label` 是已注册 `subagent` projection unit 的值,经三级阶梯供值:存活 child 由注册表水位缓存供值(零日志读取);冷 child 先读可选的投影 checkpoint 缓存(`cachedSnapshot`——过 own-suffix seq 门的身份即定值,own descriptor 一经追加不可变);否则在一次 `query.observeSession()` 冷观察上经注册表折叠(有界并发,每次列表重新计算)。该缓存是纯可选加速层:服务缺席、行里是 `null` 哨兵或 key 缺席、seq 门不过、读取出错,都静默落到权威重折。折叠规则是 `subagent/descriptor` last-wins 且没有失败通道:子 agent 自己的描述符覆盖 fork seed 中祖先的描述符,格式错误或版本不认识的载荷折叠为可序列化的 `null` 哨兵,视同无值。结果是按 `createdAt`、再按 id 排序的 `SubagentListEntry[]`:取到身份即生成带有 `mode: 'one-shot' | 'continuable'` 和 `activity: 'running' | 'inactive'` 的 `child` 条目;可继续条目始终携带 `label`,一次性条目则只在启动调用方提供展示元数据时携带该字段。已定局而折叠无身份的候选生成 `corrupt` diagnostic——缺失、格式错误与版本不认识的描述符有意不再细分(`unsupported` 仍保留在类型中但从不产出);运行中而无身份的候选被省略(描述符落盘前的创建窗口);冷检查失败生成一条 `unavailable` diagnostic 并在下次列表自然重试,因此一个损坏的 sibling 不会隐藏健康 child。`hasChildren` 标记存在持久 subagent origin 的直接后代,读取自同一份合并材料。活动状态只表示逻辑记录是否在 `ctx.sessions` 中存活,而不表示结果或可恢复性。缺少持久化时,枚举退化为仅存活枚举而不是报错——此时冷 child 本就无法恢复。缺少 `ctx.sessionProjections` 注册表时,`listChildren()` 抛出携带错误码 `SUBAGENT_CONTROL_PROJECTIONS_UNAVAILABLE` 的 `SubagentError`,缺少会话存储时则抛出 `SUBAGENT_CONTROL_SESSION_STORE_UNAVAILABLE`,两者都在任何读取之前检查,因此零 child 的部署同样确定失败;列表工具在插件加载时要求 `ctx.subagents` 与 `ctx.agents`。UI 等服务消费方可以展示两种模式,并为无标签的一次性 child 选择回退展示;面向模型的 `list_agents` 适配器([dsh-tool-subagent-control](../../packages/subagent/tool-subagent-control) 中可单独加载的 `/list-agents` 插件)则只保留可继续条目,并通过在线 Agent 注册表将状态细化为自己的 `running`/`idle`/`ready` 词汇,其中 `ready` 把仅存于存储的 child 命名为可恢复而非终态。枚举不会查询继续执行管理器的 Activation map、Agent 注册表或提供方可用性;`send_message` 仍是消息送达时的权威操作,列表中的运行中可继续 child 仍可能因所有权冲突而拒绝投递。读路径的设计理由见[列表身份投影 Agent Note](../../.agents/notes/implemented/architecture/2026-08-06-subagent-list-identity-projection.zh.md)。 +`SubagentRuntime.listChildren(parentSessionId)` 从 `ctx.sessions` 与会话查询引擎 `listSessions()` 的实时优先合并中枚举 parent 直接且由会话支撑的 subagent——不会加载或恢复任何 Agent。候选是持久 header 携带 `origin: 'subagent'` 的直接 child;该标记只负责枚举分类与粗粒度的通用路由拒绝,不能证明描述符有效、child 可恢复或操作已获授权——身份由投影折叠负责,恢复由 Activation 约定负责。每行的 `mode`/`label` 是已注册 `subagent` projection unit 的值,经三级阶梯供值:存活 child 由注册表水位缓存供值(零日志读取);冷 child 先读可选的投影 checkpoint 缓存(`cachedSnapshot`——过 own-suffix seq 门的身份即定值,own descriptor 一经追加不可变);否则在一次 `query.observeSession()` 冷观察上经注册表折叠(有界并发,每次列表重新计算)。该缓存是纯可选加速层:服务缺席、行里是 `null` 哨兵或 key 缺席、seq 门不过、读取出错,都静默落到权威重折。折叠规则是 `subagent/descriptor` last-wins 且没有失败通道:子 agent 自己的描述符覆盖 fork seed 中祖先的描述符,格式错误或版本不认识的载荷折叠为可序列化的 `null` 哨兵,视同无值。结果是按 `createdAt`、再按 id 排序的 `SubagentListEntry[]`:取到身份即生成带有 `mode: 'one-shot' | 'continuable'` 和 `activity: 'running' | 'inactive'` 的 `child` 条目;可继续条目始终携带 `label`,一次性条目则只在启动调用方提供展示元数据时携带该字段。已定局而折叠无身份的候选生成 `corrupt` diagnostic——缺失、格式错误与版本不认识的描述符有意不再细分(`unsupported` 仍保留在类型中但从不产出);运行中而无身份的候选被省略(描述符落盘前的创建窗口);冷检查失败生成一条 `unavailable` diagnostic 并在下次列表自然重试,因此一个损坏的 sibling 不会隐藏健康 child。`hasChildren` 标记存在持久 subagent origin 的直接后代,读取自同一份合并材料。活动状态只表示逻辑记录是否在 `ctx.sessions` 中存活,而不表示结果或可恢复性。缺少持久化时,枚举退化为仅存活枚举而不是报错——此时冷 child 本就无法恢复。缺少 `ctx.sessionProjections` 注册表时,`listChildren()` 抛出携带错误码 `SUBAGENT_CONTROL_PROJECTIONS_UNAVAILABLE` 的 `SubagentError`,缺少会话存储时则抛出 `SUBAGENT_CONTROL_SESSION_STORE_UNAVAILABLE`,两者都在任何读取之前检查,因此零 child 的部署同样确定失败;列表工具在插件加载时要求 `ctx.subagents` 与 `ctx.agents`。UI 等服务消费方可以展示两种模式,并为无标签的一次性 child 选择回退展示;面向模型的 `list_agents` 适配器([dsh-tool-subagent-control](../../packages/subagent/tool-subagent-control) 中可单独加载的 `/list-agents` 插件)则只保留可继续条目,并通过在线 Agent 注册表将状态细化为自己的 `running`/`idle`/`ready` 词汇,其中 `ready` 把仅存于存储的 child 命名为可恢复而非终态。枚举不会查询继续执行管理器的 Activation map、Agent 注册表或提供方可用性;`send_message` 仍是消息送达时的权威操作,列表中的运行中可继续 child 仍可能因所有权冲突而拒绝投递。[已归档的列表身份投影记录](../../.agents/notes/archived/architecture/2026-08-06-subagent-list-identity-projection.md)记录了最初的读路径决策。 `SubagentRuntime.listDescendants(rootSessionId)` 将同一份实时优先语料与基于投影的解释应用到根的完整后代树,并按稳定 pre-order 输出。普通会话和一次性 child 仍作为遍历节点,因此其下的可继续后代仍可发现;只有 `origin: 'subagent'` 的候选会生成条目。每个返回的 child 或 diagnostic 都从枚举所得的持久 header 附加树位置;冷检查在提供身份前还会重新校验完整生命周期: diff --git a/docs/subsystems/workspace.i18n.yaml b/docs/subsystems/workspace.i18n.yaml index ba89231861..b901856ad2 100644 --- a/docs/subsystems/workspace.i18n.yaml +++ b/docs/subsystems/workspace.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write docs/subsystems/workspace.md -workspace.md: 3c53300a5be6678802da950d22854da76fa46bf1 -workspace.zh.md: b651a21f7641619c28bad9d3fdf368c718ca2c29 +workspace.md: a66d9d94b02ec98d4197862f8e86e6ec027fda6c +workspace.zh.md: 46883ccd3c9cd3b3cbd8c91afe4c6d7e85449cbf diff --git a/docs/subsystems/workspace.md b/docs/subsystems/workspace.md index 3c53300a5b..a66d9d94b0 100644 --- a/docs/subsystems/workspace.md +++ b/docs/subsystems/workspace.md @@ -2,7 +2,7 @@ English | [中文](workspace.zh.md) -A workspace is the persistent record of a directory the user works in: a stable id over a canonical path, a display title, and the ordered account of sessions that belong to it. The subsystem is one package ([dsh-workspace](../../packages/workspace/workspace), `ctx.workspaceRegistry`) — an optional host-side capability, not part of the agent-loop spine, and invisible to models (no tools, no prompt text, no session events). It stores its records through the [storage domain form](storage.md) and validates session membership against [`SessionHeader.cwd`](persistence.md#sessionheader--metadata-beside-the-log), so `storageDomain` and `sessionPersistence` are mandatory startup dependencies: an unavailable persistence peer leaves the plugin pending rather than being mistaken for an empty history. Design record: [domain KV storage Agent Note](../../.agents/notes/proposed/architecture/2026-07-24-domain-kv-storage-and-workspace.md); bootstrap and GUI ordering: [Workspace UI product-flow Agent Note](../../.agents/notes/implemented/feature/2026-07-25-workspace-ui-product-flow.md). +A workspace is the persistent record of a directory the user works in: a stable id over a canonical path, a display title, and the ordered account of sessions that belong to it. The subsystem is one package ([dsh-workspace](../../packages/workspace/workspace), `ctx.workspaceRegistry`) — an optional host-side capability, not part of the agent-loop spine, and invisible to models (no tools, no prompt text, no session events). It stores its records through the [storage domain form](storage.md) and validates session membership against [`SessionHeader.cwd`](persistence.md#sessionheader--metadata-beside-the-log), so `storageDomain` and `sessionPersistence` are mandatory startup dependencies: an unavailable persistence peer leaves the plugin pending rather than being mistaken for an empty history. Design record: [domain KV storage Agent Note](../../.agents/notes/proposed/architecture/2026-07-24-domain-kv-storage-and-workspace.md); bootstrap and GUI ordering: [Workspace UI product-flow Agent Note](../../.agents/notes/archived/feature/2026-07-25-workspace-ui-product-flow.md). Source: [`packages/workspace/workspace/src/types.ts`](../../packages/workspace/workspace/src/types.ts) diff --git a/docs/subsystems/workspace.zh.md b/docs/subsystems/workspace.zh.md index b651a21f76..46883ccd3c 100644 --- a/docs/subsystems/workspace.zh.md +++ b/docs/subsystems/workspace.zh.md @@ -2,7 +2,7 @@ [English](workspace.md) | 中文 -工作区(workspace)是用户工作目录的持久记录:一个建立在规范路径之上的稳定 id、一个显示标题,以及归属于它的会话的有序账本。该子系统是单个包(package)([dsh-workspace](../../packages/workspace/workspace),`ctx.workspaceRegistry`)——一项宿主侧可选能力,不属于 agent loop(智能体循环)主干,并且对模型不可见(没有工具、没有提示词文本、没有会话事件)。它通过[存储领域数据形式](storage.zh.md)存储自己的记录,并对照 [`SessionHeader.cwd`](persistence.zh.md#sessionheader--metadata-beside-the-log) 校验会话成员资格,因此 `storageDomain` 与 `sessionPersistence` 是必需的启动依赖:持久化这一依赖不可用时,插件保持 pending,而不是把这种不可用误当作空历史。设计记录:[领域 KV 存储 Agent Note(agent 决策记录)](../../.agents/notes/proposed/architecture/2026-07-24-domain-kv-storage-and-workspace.zh.md);引导与 GUI 顺序:[Workspace UI 产品流程 Agent Note](../../.agents/notes/implemented/feature/2026-07-25-workspace-ui-product-flow.zh.md)。 +工作区(workspace)是用户工作目录的持久记录:一个建立在规范路径之上的稳定 id、一个显示标题,以及归属于它的会话的有序账本。该子系统是单个包(package)([dsh-workspace](../../packages/workspace/workspace),`ctx.workspaceRegistry`)——一项宿主侧可选能力,不属于 agent loop(智能体循环)主干,并且对模型不可见(没有工具、没有提示词文本、没有会话事件)。它通过[存储领域数据形式](storage.zh.md)存储自己的记录,并对照 [`SessionHeader.cwd`](persistence.zh.md#sessionheader--metadata-beside-the-log) 校验会话成员资格,因此 `storageDomain` 与 `sessionPersistence` 是必需的启动依赖:持久化这一依赖不可用时,插件保持 pending,而不是把这种不可用误当作空历史。设计记录:[领域 KV 存储 Agent Note(agent 决策记录)](../../.agents/notes/proposed/architecture/2026-07-24-domain-kv-storage-and-workspace.zh.md);引导与 GUI 顺序:[Workspace UI 产品流程 Agent Note](../../.agents/notes/archived/feature/2026-07-25-workspace-ui-product-flow.md)。 源码:[`packages/workspace/workspace/src/types.ts`](../../packages/workspace/workspace/src/types.ts) diff --git a/docs/testing.i18n.yaml b/docs/testing.i18n.yaml index 0f01fe8446..a27c40526d 100644 --- a/docs/testing.i18n.yaml +++ b/docs/testing.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write docs/testing.md -testing.md: fbf075ecde1dc38b816bcfbbee551f2e1a8178e0 -testing.zh.md: 6b5e553b3089d30f104947b8570e6388d807758f +testing.md: c1c75c911b27ddaf9e8c340eef3a5cf394a8d82c +testing.zh.md: ff84d439a53a0b7bc7a6607857a0c0303c2aadff diff --git a/docs/testing.md b/docs/testing.md index fbf075ecde..c1c75c911b 100644 --- a/docs/testing.md +++ b/docs/testing.md @@ -11,7 +11,7 @@ How this repo tests, tier by tier, and the rules that keep a green suite meaning - **Real-API e2e** (`pnpm run test:e2e`): with-key tests against live provider APIs — the DeepSeek model plus provider-specific smokes that gate on their own keys (`EXA_API_KEY`, `PERPLEXITY_API_KEY`, …); each suite self-skips without its key so keyless CI stays green ([real-API e2e Agent Note](../.agents/notes/implemented/testing/2026-06-19-real-api-e2e-ci.md)). - **Owner-local expected output** (`pnpm run test:expected`): keyless assembled CLI/process expectations without a recorded-session round trip. Drivers use `*.expected.e2e.ts` beside `tests/expected/`; CI runs built exports. Package/script expectations use `test`, while browser expectations use `test:web`. - **Snapshot** (`pnpm run test:snapshot`): a top-level scenario's highest recorded parent generation supplies user input and model replay, then serves as the expected persisted result. Parent filenames are `session[.vN].jsonl`; child roles are `session.[.vN].jsonl`; v0 omits `.v0`, positive versions require lowercase `.vN`, and each filename must agree with its header. Process scenarios start through `dsh`: headless owns one-shot behavior, the SDK owns persistent control, ACP owns automation-protocol behavior, and Web retains browser/ARIA evidence beside the same Session. `snapshot.yml` declares the profile, composition/header class, recording policy, exceptional replay or input metadata, and workspace facts. Typed tokens preserve parent/child identity relationships; only header pins own prompt/schema sidecars. A mutating scenario independently compares the complete `workspace.expected/` tree, which record and refresh never rewrite. Use `test:snapshot:record` when a model transcript changes and `test:snapshot:refresh` when replay input remains valid; review every resulting diff. -- **Web browser snapshot** (`pnpm run test:web`; required Linux PR gate): Chromium compares session-driven output under `snapshots/web/` and UI-only output under `apps/web/tests/expected/`. CI forces read-only `DSH_SNAPSHOT=replay`, never writing expected outputs; record/refresh stay local and every diff is reviewed ([web e2e lane](../.agents/notes/implemented/testing/2026-07-24-web-gui-browser-e2e-lane.md), [CI gate decision](../.agents/notes/implemented/testing/2026-07-30-web-browser-snapshot-ci-gate.md)). `test:web` [builds first](../.agents/notes/implemented/bug-fix/2026-07-28-themed-scrollbars-and-reserved-gutter.md) for plugin CSS. +- **Web browser snapshot** (`pnpm run test:web`; required Linux PR gate): Chromium compares session-driven output under `snapshots/web/` and UI-only output under `apps/web/tests/expected/`. CI forces read-only `DSH_SNAPSHOT=replay`, never writing expected outputs; record/refresh stay local and every diff is reviewed ([web e2e lane](../.agents/notes/implemented/testing/2026-07-24-web-gui-browser-e2e-lane.md), [CI gate decision](../.agents/notes/implemented/testing/2026-07-30-web-browser-snapshot-ci-gate.md)). `test:web` builds first for plugin CSS. Session fixtures retain headers and payloads but omit body sequence/time envelopes; replay synthesizes them. Replay, record, and refresh select each parent/child role's highest generation. Current v2 uses `.v2`, one row per event, and embedded compact Assistant streams; retained v0 (suffixless) and v1 (`.v1`) may keep canonical packed rows for migration coverage. [The migrator](../scripts/migrate-packed-session-fixtures.ts) rewrites older historical layouts. diff --git a/docs/testing.zh.md b/docs/testing.zh.md index 6b5e553b30..ff84d439a5 100644 --- a/docs/testing.zh.md +++ b/docs/testing.zh.md @@ -11,7 +11,7 @@ - **真实 API e2e**(`pnpm run test:e2e`):带密钥测试调用真实提供方 API,包括 DeepSeek 模型以及各提供方特有的冒烟测试;这些测试各自由自己的密钥控制(`EXA_API_KEY`、`PERPLEXITY_API_KEY` 等),缺少密钥时套件会自动跳过,使 keyless CI 保持绿色([真实 API e2e Agent Note](../.agents/notes/implemented/testing/2026-06-19-real-api-e2e-ci.zh.md))。 - **所属位置的预期输出**(`pnpm run test:expected`):无录制会话往返的无密钥组装 CLI/进程预期。驱动使用 `*.expected.e2e.ts`,并与 `tests/expected/` 同属一处;CI 针对构建产物运行。包/脚本预期使用 `test`,浏览器预期使用 `test:web`。 - **快照**(`pnpm run test:snapshot`):顶层场景数值最高的已录制 parent generation 同时提供用户输入和模型回放,并作为持久化结果的预期值。parent 文件名是 `session[.vN].jsonl`;child 角色使用 `session.[.vN].jsonl`;v0 省略 `.v0`,正版本必须使用小写 `.vN`,且每个文件名必须与其 header 一致。进程级场景都通过 `dsh` 启动:headless 负责一次性行为,SDK 负责持久控制,ACP 负责自动化协议行为,Web 在同一 Session 旁保留浏览器与 ARIA 证据。`snapshot.yml` 声明 profile、组合与请求头类别、录制策略、例外回放或输入元数据以及 workspace 事实。带类型的 token 保留父子身份关系;只有请求头 pin 拥有 prompt/schema sidecar。变更 workspace 的场景会独立比较完整的 `workspace.expected/` 目录,record 与 refresh 绝不改写该目录。当模型 transcript(文本记录)变化时使用 `test:snapshot:record`,回放输入仍有效时使用 `test:snapshot:refresh`;请审查所有结果差异。 -- **Web 浏览器快照**(`pnpm run test:web`;必需的 Linux PR(Pull Request)门禁):Chromium 比较 `snapshots/web/` 下由会话驱动的输出,以及 `apps/web/tests/expected/` 下仅含 UI 的输出。CI 强制只读的 `DSH_SNAPSHOT=replay`,绝不写入预期输出;record/refresh 留在本地,每处 diff 都须评审([web e2e 车道](../.agents/notes/implemented/testing/2026-07-24-web-gui-browser-e2e-lane.zh.md)、[CI 门禁决策](../.agents/notes/implemented/testing/2026-07-30-web-browser-snapshot-ci-gate.zh.md))。`test:web` 会[先构建](../.agents/notes/implemented/bug-fix/2026-07-28-themed-scrollbars-and-reserved-gutter.zh.md)以交付插件 CSS。 +- **Web 浏览器快照**(`pnpm run test:web`;必需的 Linux PR(Pull Request)门禁):Chromium 比较 `snapshots/web/` 下由会话驱动的输出,以及 `apps/web/tests/expected/` 下仅含 UI 的输出。CI 强制只读的 `DSH_SNAPSHOT=replay`,绝不写入预期输出;record/refresh 留在本地,每处 diff 都须评审([web e2e 车道](../.agents/notes/implemented/testing/2026-07-24-web-gui-browser-e2e-lane.zh.md)、[CI 门禁决策](../.agents/notes/implemented/testing/2026-07-30-web-browser-snapshot-ci-gate.zh.md))。`test:web` 会先构建以交付插件 CSS。 Session fixture 保留 header 与 payload,但省略正文 seq/time envelope;replay 会合成这些 envelope。Replay、record 与 refresh 会选择每个 parent/child 角色的最高 generation。当前 v2 使用 `.v2`、每个事件一行,并嵌入紧凑 Assistant stream;保留的 v0(无后缀)与 v1(`.v1`)可以为迁移覆盖保留规范 packed row。[迁移器](../scripts/migrate-packed-session-fixtures.ts)会改写更旧的历史布局。 diff --git a/docs/tool-catalog.i18n.yaml b/docs/tool-catalog.i18n.yaml index a70f3d6e35..4bb43418d9 100644 --- a/docs/tool-catalog.i18n.yaml +++ b/docs/tool-catalog.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write docs/tool-catalog.md -tool-catalog.md: 416585106de28296a3105fafbbe6e4edc0d0f16b -tool-catalog.zh.md: 89d2e467863c09b78805fd9db8ec785ad7936a9d +tool-catalog.md: 1a98079dcf3d30696cf2dae2895372a90377204d +tool-catalog.zh.md: 41b5f6d4bc8b0e666e74dde5b4bb43bd0064da8e diff --git a/docs/tool-catalog.md b/docs/tool-catalog.md index 416585106d..1a98079dcf 100644 --- a/docs/tool-catalog.md +++ b/docs/tool-catalog.md @@ -5,7 +5,7 @@ Every model-facing tool a shipped plugin contributes to `ctx.tools`: the `name`, `description`, and JSON-Schema `parameters` the model receives via the system-prompt assembly. It complements the [subsystem pages](subsystems/core.md) (the types plus each page's generated Cordis API region) — this page is the *tools* the agent is offered. -This file is GENERATED and verified fresh by `pnpm run verify-tool-catalog` (part of `doc-sync`) — do not edit it by hand. Unlike the cordis catalog (a pure source-AST pass), this generator BOOTS each tool plugin on a real context and reads `ctx.tools.schemas()`, because a tool schema is not statically knowable (runtime-spread enums, concatenated descriptions, config-driven names, raw-JSON-Schema MCP tools). A completeness guard globs `packages/*/tool-*` and fails if any package is missing from the generator's boot manifest, so a new tool cannot be silently undocumented. See [the tool-schema-catalog Agent Note](../.agents/notes/implemented/process/2026-07-02-tool-schema-catalog.md). +This file is GENERATED and verified fresh by `pnpm run verify-tool-catalog` (part of `doc-sync`) — do not edit it by hand. Unlike the cordis catalog (a pure source-AST pass), this generator BOOTS each tool plugin on a real context and reads `ctx.tools.schemas()`, because a tool schema is not statically knowable (runtime-spread enums, concatenated descriptions, config-driven names, raw-JSON-Schema MCP tools). A completeness guard globs `packages/*/tool-*` and fails if any package is missing from the generator's boot manifest, so a new tool cannot be silently undocumented. Scope: shipped product tools under `packages/*/tool-*`, each booted with its DEFAULT config, except where a Config field is REQUIRED with no default — there the generator must choose, and the per-package note records which branch this page shows. The registered tool NAME can be a load-time config (e.g. `tool-subagent`'s `toolName`), so a deployment may expose a package under a different or additional name — a per-package note records those shipped aliases where they exist. The `examples/` demo tools (e.g. `echo`) are excluded, matching the cordis catalog's packages-only scope. diff --git a/docs/tool-catalog.zh.md b/docs/tool-catalog.zh.md index 89d2e46786..41b5f6d4bc 100644 --- a/docs/tool-catalog.zh.md +++ b/docs/tool-catalog.zh.md @@ -7,7 +7,7 @@ 已发布插件向 `ctx.tools` 提供的所有面向模型的工具:模型通过系统提示词组装获得的 `name`、`description` 和 JSON Schema `parameters`。本目录是[子系统页面](subsystems/core.zh.md)(类型及每页生成的 `cordis-surface` 接线区域)的补充;本页列出的是向 agent(智能体)提供的*工具*。 -英文源文件由系统**生成**,并通过 `pnpm run verify-tool-catalog`(`doc-sync`(文档同步门禁)的一部分)验证新鲜度;本中文文件作为经评审对侧通过双语配对维护。与 Cordis 目录(纯源码 AST 处理)不同,英文生成器会在真实上下文中**启动**每个工具插件并读取 `ctx.tools.schemas()`,因为工具 schema 无法通过静态分析完全确定,例如运行时展开的枚举、拼接的描述、由配置决定的名称以及使用原始 JSON Schema 的 MCP 工具。完整性守卫会 glob 匹配 `packages/*/tool-*`;如果生成器的启动 manifest(元数据清单)遗漏任何包,检查就会失败,因此新工具不会在无人察觉的情况下缺少文档。参见[工具 schema 目录 Agent Note](../.agents/notes/implemented/process/2026-07-02-tool-schema-catalog.zh.md)。 +英文源文件由系统**生成**,并通过 `pnpm run verify-tool-catalog`(`doc-sync`(文档同步门禁)的一部分)验证新鲜度;本中文文件作为经评审对侧通过双语配对维护。与 Cordis 目录(纯源码 AST 处理)不同,英文生成器会在真实上下文中**启动**每个工具插件并读取 `ctx.tools.schemas()`,因为工具 schema 无法通过静态分析完全确定,例如运行时展开的枚举、拼接的描述、由配置决定的名称以及使用原始 JSON Schema 的 MCP 工具。完整性守卫会 glob 匹配 `packages/*/tool-*`;如果生成器的启动 manifest(元数据清单)遗漏任何包,检查就会失败,因此新工具不会在无人察觉的情况下缺少文档。 范围:`packages/*/tool-*` 下已发布的产品工具,每个工具均使用其**默认**配置启动;但如果某个 Config 字段是**必填项**且没有默认值,生成器就必须作出选择,对应包的说明会记录本页展示的是哪个分支。注册的工具**名称**可以是加载时配置,例如 `tool-subagent` 的 `toolName`,因此部署可能以不同名称或额外名称提供某个包;如果存在随产品发布的别名,对应包的说明会予以记录。`examples/` 中的演示工具(例如 `echo`)不在范围内,这与 Cordis 目录仅涵盖包的范围一致。 diff --git a/packages/AGENTS.md b/packages/AGENTS.md index a097b6fecf..f0c49d55e5 100644 --- a/packages/AGENTS.md +++ b/packages/AGENTS.md @@ -25,4 +25,4 @@ These package-specific rules supplement the repo-wide [conventions](../AGENTS.md - Tests live at package level under `tests/`, not `src/__tests__/`. - Update package README and JSDoc contracts in the same commit as behavior, and verify them against code with [dsh-prose-standard](../.agents/skills/dsh-prose-standard/SKILL.md). Group READMEs declare subsystem ownership through a canonical English page link or justified [exemption](../scripts/verify-subsystem-pages.ts). - Package READMEs document model, token, and KV-cache effects using the [canonical Model Experience format](../docs/cookbook/adding-a-package.md#4-write-the-package-readme). -- Package READMEs put durable consumer gaps and non-obvious maintainer constraints under `## Known Limitations and Deferred Work`; ordinary cleanup stays in its TODO or Agent Note. Packages with none use a justified [allowlist entry](../scripts/verify-package-readme-limitations.ts) ([rationale](../.agents/notes/implemented/process/2026-07-10-readme-known-limitations-gate.md)). +- Package READMEs put durable consumer gaps and non-obvious maintainer constraints under `## Known Limitations and Deferred Work`; ordinary cleanup stays in its TODO or Agent Note. Packages with none use a justified [allowlist entry](../scripts/verify-package-readme-limitations.ts). diff --git a/packages/acp/README.i18n.yaml b/packages/acp/README.i18n.yaml index a5628d5807..1f7c82b81b 100644 --- a/packages/acp/README.i18n.yaml +++ b/packages/acp/README.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write packages/acp/README.md -README.md: 20640ec4bdc5e9e9d2ac51e1f54fb2f587652e1c -README.zh.md: 09fd7a3f7d40ff91d3e6516bf1c4c2075affc76f +README.md: 710a77335eec233c6fdef36091742fb61e95f30a +README.zh.md: eb2e6847aeb5926d276e2c77d7a0482f55217287 diff --git a/packages/acp/README.md b/packages/acp/README.md index 20640ec4bd..710a77335e 100644 --- a/packages/acp/README.md +++ b/packages/acp/README.md @@ -33,7 +33,7 @@ The acp group provides one package: a server that lets programs and automation r - [dsh-subagent-acp](../subagent/subagent-acp/README.md) — the out-of-process ACP client that spawns and drives this server. - [ACP as an automation-only protocol](../../.agents/notes/implemented/simplification/2026-07-23-acp-automation-only-protocol.md) — the design record for the automation contract and its wire boundaries. -- [Multiplex concurrent ACP sessions over one connection](../../.agents/notes/implemented/feature/2026-06-14-acp-multi-session.md) — per-session isolation, ownership, and teardown decisions. +- [Multiplex concurrent ACP sessions over one connection](../../.agents/notes/archived/feature/2026-06-14-acp-multi-session.md) — per-session isolation, ownership, and teardown decisions. ## Dev Note diff --git a/packages/acp/README.zh.md b/packages/acp/README.zh.md index 09fd7a3f7d..eb2e6847ae 100644 --- a/packages/acp/README.zh.md +++ b/packages/acp/README.zh.md @@ -33,7 +33,7 @@ acp 组提供一个包:一台服务器,让程序与自动化可以通过标 - [dsh-subagent-acp](../subagent/subagent-acp/README.zh.md)——spawn 并驱动本服务器的进程外 ACP 客户端。 - [ACP 作为仅面向自动化的协议](../../.agents/notes/implemented/simplification/2026-07-23-acp-automation-only-protocol.zh.md)——自动化约定及其协议边界的决策记录。 -- [在单个连接上多路复用并发 ACP 会话](../../.agents/notes/implemented/feature/2026-06-14-acp-multi-session.zh.md)——按会话隔离、归属与清理决策。 +- [在单个连接上多路复用并发 ACP 会话](../../.agents/notes/archived/feature/2026-06-14-acp-multi-session.md)——按会话隔离、归属与清理决策。 ## 开发备注 diff --git a/packages/acp/acp/README.i18n.yaml b/packages/acp/acp/README.i18n.yaml index 9ae3c6e0a9..d0ba9d7e87 100644 --- a/packages/acp/acp/README.i18n.yaml +++ b/packages/acp/acp/README.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write packages/acp/acp/README.md -README.md: 3a436ca341265403ea380268a8aa3213e7624d17 -README.zh.md: 46d6ce4d17ad04cb4d963f0f119e9f09d3c7a8d0 +README.md: 6f0411d993f67f96d599a811ce583f8e166b76b6 +README.zh.md: 641e0801ce85caefa90c0d9fdd32c3886ada82b8 diff --git a/packages/acp/acp/README.md b/packages/acp/acp/README.md index 3a436ca341..6f0411d993 100644 --- a/packages/acp/acp/README.md +++ b/packages/acp/acp/README.md @@ -93,7 +93,7 @@ The server is an automation transport with an intentionally standard public prot - **Truthful capability and configuration state.** `initialize` advertises only mounted support, topology changes publish complete configuration options, and a prompt pins the exact route it admitted. - **Quiescence before settlement.** Prompt and close operations settle only after their owned admission, Agent activity, ordered updates, descendants, persistence, and disposal have reached the required terminal state. -The decision history lives in the [ACP as an automation-only protocol note](../../../.agents/notes/implemented/simplification/2026-07-23-acp-automation-only-protocol.md) and the [multi-session note](../../../.agents/notes/implemented/feature/2026-06-14-acp-multi-session.md). +The decision history lives in the [ACP as an automation-only protocol note](../../../.agents/notes/implemented/simplification/2026-07-23-acp-automation-only-protocol.md) and the [multi-session note](../../../.agents/notes/archived/feature/2026-06-14-acp-multi-session.md). ### Source map @@ -123,7 +123,7 @@ Read these pages when the package-level contract is not enough. They move from t - [dsh-subagent-acp](../../subagent/subagent-acp/README.md) — the out-of-process ACP client that spawns and drives this server. - [ACP as an automation-only protocol](../../../.agents/notes/implemented/simplification/2026-07-23-acp-automation-only-protocol.md) — the design record for the automation contract and its wire boundaries. -- [Multiplex concurrent ACP sessions over one connection](../../../.agents/notes/implemented/feature/2026-06-14-acp-multi-session.md) — per-session isolation, ownership, and teardown decisions. +- [Multiplex concurrent ACP sessions over one connection](../../../.agents/notes/archived/feature/2026-06-14-acp-multi-session.md) — per-session isolation, ownership, and teardown decisions. - [Extension cookbook](../../../docs/cookbook/extension-cookbook.md) — this package as the automation-only worked example for extension authors. ----- diff --git a/packages/acp/acp/README.zh.md b/packages/acp/acp/README.zh.md index 46d6ce4d17..641e0801ce 100644 --- a/packages/acp/acp/README.zh.md +++ b/packages/acp/acp/README.zh.md @@ -93,7 +93,7 @@ kind: "package-reference" - **诚实的能力与配置状态。** `initialize` 只公布已挂载支持,拓扑变化会发布完整配置选项,提示词则固定其准入时的确切路由。 - **停稳后才结算。** 提示词与关闭操作只在其拥有的准入、Agent 活动、有序更新、后代、持久化与释放达到所需终态后才结算。 -决策历史记录在 [ACP 作为仅面向自动化的协议笔记](../../../.agents/notes/implemented/simplification/2026-07-23-acp-automation-only-protocol.zh.md) 与[多会话笔记](../../../.agents/notes/implemented/feature/2026-06-14-acp-multi-session.zh.md) 中。 +决策历史记录在 [ACP 作为仅面向自动化的协议笔记](../../../.agents/notes/implemented/simplification/2026-07-23-acp-automation-only-protocol.zh.md) 与[多会话笔记](../../../.agents/notes/archived/feature/2026-06-14-acp-multi-session.md) 中。 ### 源码地图 @@ -123,7 +123,7 @@ kind: "package-reference" - [dsh-subagent-acp](../../subagent/subagent-acp/README.zh.md)——spawn 并驱动本服务器的进程外 ACP 客户端。 - [ACP 作为仅面向自动化的协议](../../../.agents/notes/implemented/simplification/2026-07-23-acp-automation-only-protocol.zh.md)——自动化约定及其协议边界的决策记录。 -- [在单个连接上多路复用并发 ACP 会话](../../../.agents/notes/implemented/feature/2026-06-14-acp-multi-session.zh.md)——按会话隔离、归属与清理决策。 +- [在单个连接上多路复用并发 ACP 会话](../../../.agents/notes/archived/feature/2026-06-14-acp-multi-session.md)——按会话隔离、归属与清理决策。 - [扩展实操手册](../../../docs/cookbook/extension-cookbook.zh.md)——本包作为扩展作者的仅自动化完整示例。 ----- diff --git a/packages/api/gateway/README.i18n.yaml b/packages/api/gateway/README.i18n.yaml index 10edb4fd41..6e013ff43d 100644 --- a/packages/api/gateway/README.i18n.yaml +++ b/packages/api/gateway/README.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write packages/api/gateway/README.md -README.md: a6b9411165f0f5f458bbdc2d61f341925d406787 -README.zh.md: 4e9d8c72e2967bdd491b0ef6565af60802692796 +README.md: a234189cfff09bae894de14dada607a357b398fd +README.zh.md: 067adbdbe06db8fb4caec323db0361d13f6309a7 diff --git a/packages/api/gateway/README.md b/packages/api/gateway/README.md index a6b9411165..a234189cff 100644 --- a/packages/api/gateway/README.md +++ b/packages/api/gateway/README.md @@ -51,7 +51,7 @@ Every unary call resolves to `RemoteResult` — `{ ok: true, value }` or `{ o `ctx.remote.$on()` subscribes to one forwarded Host event. Its legal keys are exactly the Host assembly's forwarding selection, and the listener type is the owning package's own Cordis `Events` declaration, so no second signature can drift from it. Each subscription belongs to the calling fiber and disappears with it. The Client Remote service registers the `$events` pump as a Connection generation source when it activates, whether any `$on` listener exists. Browsers use Remote mux, while in-process compositions use `connection.rpc.open`; the opening `ready` item establishes a Connection generation and supplies its Host facts. Carrier failure, Remote stream failure, unexpected normal completion, a non-ready opening item, or a malformed event item ends that generation and lets Connection reopen it under continuous, capped jittered exponential backoff. Ordinary notifications run in registration order and isolate listener failures. Agent-scoped waterfalls let a listener return a result, call `next()`, or reject; Gateway returns that outcome through the existing HTTP unary carrier. -`ctx.remote` exposes no Connection lifecycle control. A consumer whose responsibility includes recovery reads `ctx.connection.state` and calls `ctx.connection.reconnect()` directly; ordinary Remote consumers stay on generated namespaces and `$stream()`. The [connection recovery decision](../../../.agents/notes/implemented/feature/2026-08-28-web-connection-recovery-control.md) owns this exception. +`ctx.remote` exposes no Connection lifecycle control. A consumer whose responsibility includes recovery reads `ctx.connection.state` and calls `ctx.connection.reconnect()` directly; ordinary Remote consumers stay on generated namespaces and `$stream()`. Generated declaration merges provide the TypeScript API through the shared `TypertClientRemote` contract. The Client entry contains no Host Service or Host Cordis interface merge, and method lookup and invocation use ordinary objects and functions rather than a JavaScript Proxy. diff --git a/packages/api/gateway/README.zh.md b/packages/api/gateway/README.zh.md index 4e9d8c72e2..067adbdbe0 100644 --- a/packages/api/gateway/README.zh.md +++ b/packages/api/gateway/README.zh.md @@ -51,7 +51,7 @@ Host 组合可通过 `registerRemoteEvents()` 注册唯一的应用事件 source `ctx.remote.$on()` 订阅一条被转发的 Host 事件。它的合法键恰好等于 Host 装配声明的转发选择,listener 类型就是事件所属包自己的 Cordis `Events` 声明,因此不存在会与之漂移的第二份签名。每个订阅归属调用方 fiber,并随该 fiber 一起消失。Client Remote 服务激活时就把 `$events` pump 注册为 Connection generation source,因此即使当前无 `$on` 订阅,它也会在 Connection 循环启动时打开。浏览器使用 Remote mux,进程内组合使用 `connection.rpc.open`;opening `ready` 项建立 Connection generation 并提供 Host 信息。物理 carrier 失败、Remote stream error、意外正常结束、非 ready 首项或畸形事件项都会终止该 generation,由 Connection 按持续且间隔封顶的带抖动指数退避重开。普通通知按注册顺序运行并隔离 listener 失败;Agent-scoped waterfall 允许 listener 返回结果、调用 `next()` 或拒绝,Gateway 再通过现有 HTTP 一元载体回送该结果。 -`ctx.remote` 不暴露 Connection 生命周期控制。只有职责包含恢复的消费方才直接读取 `ctx.connection.state` 并调用 `ctx.connection.reconnect()`;普通 Remote 消费方仍只使用生成的 namespace 与 `$stream()`。[连接恢复决策](../../../.agents/notes/implemented/feature/2026-08-28-web-connection-recovery-control.zh.md)规定这项例外。 +`ctx.remote` 不暴露 Connection 生命周期控制。只有职责包含恢复的消费方才直接读取 `ctx.connection.state` 并调用 `ctx.connection.reconnect()`;普通 Remote 消费方仍只使用生成的 namespace 与 `$stream()`。 生成的声明合并通过共享的 `TypertClientRemote` 约定提供 TypeScript API。Client 入口不包含 Host 服务或 Host Cordis 接口合并;方法查找和调用使用普通对象与函数,而不使用 JavaScript Proxy。 diff --git a/packages/boot/README.i18n.yaml b/packages/boot/README.i18n.yaml index 49f4b9ac97..d7350a09a7 100644 --- a/packages/boot/README.i18n.yaml +++ b/packages/boot/README.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write packages/boot/README.md -README.md: 0d13420c8408e046bc538ebb06f5f7c0d23eb1b1 -README.zh.md: ebc0f82eb79fc310d0b944f4bb965e72391ead3f +README.md: 64a118a4a243d21508407ea28686fba4fd0772bd +README.zh.md: a092a5840cd0fd26543a2221d1aa5ca13ea5d352 diff --git a/packages/boot/README.md b/packages/boot/README.md index 0d13420c84..64a118a4a2 100644 --- a/packages/boot/README.md +++ b/packages/boot/README.md @@ -31,7 +31,7 @@ The boot group provides what every dsh app bin needs to start: `app-boot` turns - [dsh app](../../apps/cli/README.md) — the `dsh` bin that consumes these helpers for its boot sequence. - [Profile bundles](../bundle/README.md) — installable patch layers that `dsh --profile` compositions mount. - [dsh-home-paths](../util/home-paths/README.md) — the harness-home resolver both packages build on. -- [App-owned command-line decision](../../.agents/notes/implemented/architecture/2026-08-06-app-owned-command-line.md) — why an app owns its flag family instead of the launcher. +- [dsh-cmdline](cmdline/README.md) — how an app owns its flag family instead of the launcher. ## Dev Note diff --git a/packages/boot/README.zh.md b/packages/boot/README.zh.md index ebc0f82eb7..a092a5840c 100644 --- a/packages/boot/README.zh.md +++ b/packages/boot/README.zh.md @@ -31,7 +31,7 @@ boot 组提供每个 dsh app bin 启动所需的全部能力:`app-boot` 把 `c - [dsh 应用](../../apps/cli/README.zh.md)——在其启动序列中使用这些 helper 的 `dsh` bin。 - [Profile 组合包](../bundle/README.zh.md)——可由 `dsh --profile` 组合挂载的可安装 patch 层。 - [dsh-home-paths](../util/home-paths/README.zh.md)——两个包都依赖的 harness home 解析器。 -- [应用持有命令行决策](../../.agents/notes/implemented/architecture/2026-08-06-app-owned-command-line.zh.md)——为什么 flag 家族由应用持有而非启动器。 +- [dsh-cmdline](cmdline/README.zh.md)——flag 家族如何由应用持有而非启动器。 ## 开发备注 diff --git a/packages/boot/cmdline/README.i18n.yaml b/packages/boot/cmdline/README.i18n.yaml index 103acf25f1..9e3e8f5bc5 100644 --- a/packages/boot/cmdline/README.i18n.yaml +++ b/packages/boot/cmdline/README.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write packages/boot/cmdline/README.md -README.md: da23d16fac10790d549ab839adce2f3578bf5400 -README.zh.md: ed5ec93b20d5bd357b1cf19618fa36aaa555c41b +README.md: fff0ba4df85b7ea834a79087ecbfe9f1e27f7714 +README.zh.md: 345db4a86ed2088a998c1723c3f906c614a171f3 diff --git a/packages/boot/cmdline/README.md b/packages/boot/cmdline/README.md index da23d16fac..fff0ba4df8 100644 --- a/packages/boot/cmdline/README.md +++ b/packages/boot/cmdline/README.md @@ -106,10 +106,8 @@ The parse path is one small family with two owners: `provideCmdline` freezes the ## Further Exploration -Read these pages when the package-level contract is not enough. They move from the handoff mechanism to the apps that consume it and the decisions behind it. +Read these pages when the package-level contract is not enough. They move from the handoff mechanism to the apps that consume it. -- [App-owned command-line decision](../../../.agents/notes/implemented/architecture/2026-08-06-app-owned-command-line.md) — why apps own their flag family and how the handoff works. -- [Command-line seam trim](../../../.agents/notes/implemented/architecture/2026-08-11-cmdline-seam-trim.md) — the seams reduced to existing interfaces. - [dsh-app-boot](../app-boot/README.md) — the boot sequence that provides these launcher values. - [dsh-web-app bundle](../../bundle/web-app/README.md) — an app that owns the Web flag family through this package. - [dsh-headless bundle](../../bundle/headless/README.md) — the one-shot runner that reads its task from the command line. diff --git a/packages/boot/cmdline/README.zh.md b/packages/boot/cmdline/README.zh.md index ed5ec93b20..345db4a86e 100644 --- a/packages/boot/cmdline/README.zh.md +++ b/packages/boot/cmdline/README.zh.md @@ -106,10 +106,8 @@ kind: "package-library" ## 进一步探索 -当包级约定不够用时阅读以下页面。它们从交接机制逐步进入消费它的应用及其背后的决策。 +当包级约定不够用时阅读以下页面。它们从交接机制逐步进入消费它的应用。 -- [应用持有命令行决策](../../../.agents/notes/implemented/architecture/2026-08-06-app-owned-command-line.zh.md)——为什么 flag 家族由应用持有,以及交接如何运作。 -- [命令行 seam 精简](../../../.agents/notes/implemented/architecture/2026-08-11-cmdline-seam-trim.zh.md)——缩减到既有接口的各 seam。 - [dsh-app-boot](../app-boot/README.zh.md)——提供这些启动器值的启动序列。 - [dsh-web-app 组合包](../../bundle/web-app/README.zh.md)——通过此包持有 Web flag 家族的应用。 - [dsh-headless 组合包](../../bundle/headless/README.zh.md)——从命令行读取任务的一次性 runner。 diff --git a/packages/client/AGENTS.md b/packages/client/AGENTS.md index 435c9d6b17..12ebdce400 100644 --- a/packages/client/AGENTS.md +++ b/packages/client/AGENTS.md @@ -50,7 +50,7 @@ The stack has one-way knowledge, documented in the [Web Client architecture](../ Non-negotiables across the layers: - **Business data lives in the object layer, never a store.** Entry-declared stores carry shared viewing/interaction state (selection, drafts, panel widths); sessions, frames, and connections stay in the object layer. -- **rpcId is strictly bidirectional**: the initiator mints, the responder echoes, and minting stays in Connection ([unary Remote migration](../../.agents/notes/implemented/architecture/2026-08-10-unary-apiproxy-remote-migration.md)). +- **rpcId is strictly bidirectional**: the initiator mints, the responder echoes, and minting stays in Connection ([Typert Gateway method calls](../../.agents/notes/implemented/architecture/2026-08-02-typert-remote-method-calls.md)). - **Notifier publication discipline**: `notifyNow` is only the direct echo of a user gesture; structural updates use microtask-batched `markDirty`, while visible streaming chunks use cumulative `markFrameDirty`. See `../api/session-controller/src/client/sessions/notifier.ts`. - **The web layer is pure presentation.** Nothing that is only "how to draw" enters the session log. Tool cards derive in the Client from raw call/result events and persisted result metadata; process-local control state uses its own snapshots and frames. Unknown or malformed tool data falls back to the generic form. A new *model-visible* input still requires a session event (repo-wide rule). diff --git a/packages/client/connection/README.i18n.yaml b/packages/client/connection/README.i18n.yaml index bba026d3fa..b5b4eab8db 100644 --- a/packages/client/connection/README.i18n.yaml +++ b/packages/client/connection/README.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write packages/client/connection/README.md -README.md: b9f986a409b501bda644e2f230b0da51974c13aa -README.zh.md: 4912259242f4032563019d26f0d5e6810cc13c7b +README.md: 4273c523039ddbc7b0644250800425c555c4c067 +README.zh.md: b416659b38a9f63d25842f7926a19eb78842e505 diff --git a/packages/client/connection/README.md b/packages/client/connection/README.md index b9f986a409..4273c52303 100644 --- a/packages/client/connection/README.md +++ b/packages/client/connection/README.md @@ -49,6 +49,7 @@ An ended `$events` stream, a Remote stream error, a non-ready opening item, or a Set the Host Connection row's `config.recovery` to override retry caps, the growth factor, or handshake warning and cancellation times; the [configuration catalog](../../../docs/config-catalog.md#deepseek-aidsh-client-connection) lists accepted fields. The Host validates these values and injects them into each served page. The Client validates the bootstrap data before providing Connection and uses those defaults when Gateway starts its loop; explicit `start()` timing overrides take precedence. The growth factor must be finite and at least one. Readiness, failure, cancellation, or a hard deadline that occurs before the warning cancels that warning. Reload the page after changing Host recovery configuration. + ## Model Experience diff --git a/packages/client/connection/README.zh.md b/packages/client/connection/README.zh.md index 4912259242..b416659b38 100644 --- a/packages/client/connection/README.zh.md +++ b/packages/client/connection/README.zh.md @@ -49,6 +49,7 @@ API Gateway Client 把内部 `$events` logical stream 注册为唯一 generation 可通过 Host Connection 行的 `config.recovery` 覆盖重试上限、增长因子或握手告警与取消时间;[配置目录](../../../docs/config-catalog.zh.md#deepseek-aidsh-client-connection)列出接受的字段。Host 校验这些值并注入每个已服务页面。Client 在提供 Connection 前校验启动数据,并在 Gateway 启动循环时采用这些默认值;显式传给 `start()` 的时序覆盖优先。增长因子必须是至少为一的有限数。若就绪、失败、取消或硬期限先于告警发生,该告警会被取消。修改 Host 恢复配置后需重新加载页面。 + ## 模型体验 diff --git a/packages/client/ui-chat/README.i18n.yaml b/packages/client/ui-chat/README.i18n.yaml index c086da700b..a2b157652e 100644 --- a/packages/client/ui-chat/README.i18n.yaml +++ b/packages/client/ui-chat/README.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write packages/client/ui-chat/README.md -README.md: 5a557f2a2125bddfe18631359665d6fa5e998458 -README.zh.md: 2fc241ad71e35eb54afcf4dde38c361248848d5f +README.md: 405e5095d75c3e8b752c028bbc187307a9647bb6 +README.zh.md: 7f57bc3480ea0186e89d12e8e443926906677742 diff --git a/packages/client/ui-chat/README.md b/packages/client/ui-chat/README.md index 5a557f2a21..405e5095d7 100644 --- a/packages/client/ui-chat/README.md +++ b/packages/client/ui-chat/README.md @@ -39,14 +39,14 @@ A completed Turn shows an expandable usage row only when the loaded window inclu ## Turn Process Folding -Settings → General exposes a persisted `Normal` / `Compact` conversation-display preference in the `ui-chat` namespace; `Compact` is the default. Normal leaves process rows visible and renders no Turn-process control. In Compact mode, the System prompt remains independently visible before the opening User throughout the Turn. Context injection, reasoning, Assistant material, Tool rows, and Retry rows remain expanded while a Turn is open. At `turn/end`, its latest Step becomes the final-answer boundary only when it contains non-blank text, an image, or an unknown visible block—and no Tool-call block; preceding Context injection, reasoning, earlier Assistant material, Tool rows, and Retry rows then collapse by default. The control reports Turn-wide durable counts for non-subagent Tool calls, reply-bearing Assistant messages before the final answer, and subagent delegation calls; zero-valued segments are omitted, the Tool and subagent figures are mutually exclusive, and neither System prompt nor Context injection contributes a count. When all three counts are zero, the process still folds and the control reads `Thought for a while`. A full-width divider below the summary separates it from the answer or expanded process rows. User and steering messages, System prompt, error, max-token, and turn-tail rows stay outside, and a closed Turn with no final answer keeps all process evidence visible. A newly available process control is inserted without changing the relative order of existing rows: opening human input precedes the control and process rows from their first projection, while System prompt remains above that input. While older history remains available through Load earlier, process controls stay absent and no members are hidden; once history is complete, every eligible closed Turn uses the collapsed default immediately. Stable Chat Node Seats keep every renderer mounted, hidden members add no flow spacing, and a closed control sits 8px above its answer only when no independent input intervenes. Completion collapse does not depend on tail-follow position, so a reader above the tail may see the transcript reflow. An automatic collapse that would hide keyboard focus keeps the group open and leaves focus in place; a manual close focuses the process control before hiding its members. The session-scoped store records only manually expanded Turn-and-answer-Step generations; a different answer generation starts collapsed ([folding decision](../../../.agents/notes/implemented/feature/2026-08-14-web-turn-process-folding.md), [ordering decision](../../../.agents/notes/implemented/bug-fix/2026-08-26-stable-turn-process-order.md)). +Settings → General exposes a persisted `Normal` / `Compact` conversation-display preference in the `ui-chat` namespace; `Compact` is the default. Normal leaves process rows visible and renders no Turn-process control. In Compact mode, the System prompt remains independently visible before the opening User throughout the Turn. Context injection, reasoning, Assistant material, Tool rows, and Retry rows remain expanded while a Turn is open. At `turn/end`, its latest Step becomes the final-answer boundary only when it contains non-blank text, an image, or an unknown visible block—and no Tool-call block; preceding Context injection, reasoning, earlier Assistant material, Tool rows, and Retry rows then collapse by default. The control reports Turn-wide durable counts for non-subagent Tool calls, reply-bearing Assistant messages before the final answer, and subagent delegation calls; zero-valued segments are omitted, the Tool and subagent figures are mutually exclusive, and neither System prompt nor Context injection contributes a count. When all three counts are zero, the process still folds and the control reads `Thought for a while`. A full-width divider below the summary separates it from the answer or expanded process rows. User and steering messages, System prompt, error, max-token, and turn-tail rows stay outside, and a closed Turn with no final answer keeps all process evidence visible. A newly available process control is inserted without changing the relative order of existing rows: opening human input precedes the control and process rows from their first projection, while System prompt remains above that input. While older history remains available through Load earlier, process controls stay absent and no members are hidden; once history is complete, every eligible closed Turn uses the collapsed default immediately. Stable Chat Node Seats keep every renderer mounted, hidden members add no flow spacing, and a closed control sits 8px above its answer only when no independent input intervenes. Completion collapse does not depend on tail-follow position, so a reader above the tail may see the transcript reflow. An automatic collapse that would hide keyboard focus keeps the group open and leaves focus in place; a manual close focuses the process control before hiding its members. The session-scoped store records only manually expanded Turn-and-answer-Step generations; a different answer generation starts collapsed. ----- ## Scroll ownership -Chat restores semantic anchors across history prepend and renderer remounts. While the reader is pinned to the floor, `ResizeObserver` follows the new floor and selects the latest loaded Turn without reading row geometry. Once the reader moves away, flow-height changes preserve the top position and the reading-line geometry selects the active Turn. Turn-rail previews paint above sticky Markdown code-block banners, while the rail frame remains inside the transcript band above the composer ([loaded-Turn navigation](../../../.agents/notes/implemented/feature/2026-08-25-loaded-turn-chat-navigation.md)). +Chat restores semantic anchors across history prepend and renderer remounts. While the reader is pinned to the floor, `ResizeObserver` follows the new floor and selects the latest loaded Turn without reading row geometry. Once the reader moves away, flow-height changes preserve the top position and the reading-line geometry selects the active Turn. Turn-rail previews paint above sticky Markdown code-block banners, while the rail frame remains inside the transcript band above the composer. ----- diff --git a/packages/client/ui-chat/README.zh.md b/packages/client/ui-chat/README.zh.md index 2fc241ad71..7f57bc3480 100644 --- a/packages/client/ui-chat/README.zh.md +++ b/packages/client/ui-chat/README.zh.md @@ -39,14 +39,14 @@ Chat 会为非空的初始请求、显式消息序列起点、真实 system 字 ## 轮次过程折叠 -「设置 → 通用设置」提供持久化到 `ui-chat` 命名空间的 `Normal` / `Compact` 对话显示偏好,默认使用 `Compact`。Normal 保持所有过程行可见且不渲染轮次过程控件。Compact 模式下,系统提示词在整个轮次中始终独立显示于开场 User 上方。轮次打开期间,上下文注入、推理、Assistant 内容、工具行与重试行始终展开。到 `turn/end` 时,最后一个步骤只有在包含非空文本、图片或未知可见块且不含工具调用块时才成为最终正文边界;边界之前的上下文注入、推理、较早 Assistant 内容、工具行与重试行随后默认收起。控件展示覆盖整个轮次的非 subagent 工具调用数、最终正文之前带回复内容的 Assistant 消息数和 subagent 委派数;值为 0 的分段省略,工具调用与 subagent 两项互斥,系统提示词与上下文注入都不增加计数。三项全为 0 时过程仍会收起,控件标题显示「已思考」(英文为 `Thought for a while`)。摘要下方的通栏分隔线将其与正文或展开后的过程行隔开。用户与 steering 消息、系统提示词、错误、最大 token 与 turn-tail 行留在过程组外;关闭时没有最终正文的轮次保留全部过程证据。新的过程控件插入时不会改变既有行的相对顺序:开场人工输入从首次投影起便位于控件和过程行之前,系统提示词则始终位于该输入上方。只要仍可通过「加载更早」获取历史,过程控件就不出现,也不会隐藏任何成员;历史加载完整后,每个合格的已关闭轮次立即使用默认收起状态。稳定 Chat Node Seat 会让每个 renderer 保持挂载,隐藏成员不产生消息流间距;只有中间没有独立输入时,收起控件才与正文相隔 8px。完成后的收起不依赖是否跟随尾部,因此正在上方阅读的用户可能看到 transcript 高度变化。若自动收起会隐藏当前键盘焦点,则过程组保持展开且焦点留在原处;手动收起会先把焦点移到过程控件,再隐藏成员。会话作用域 store 只记录用户手动展开的「轮次 + 正文步骤」generation;不同正文 generation 默认收起([折叠决策](../../../.agents/notes/implemented/feature/2026-08-14-web-turn-process-folding.zh.md),[排序决策](../../../.agents/notes/implemented/bug-fix/2026-08-26-stable-turn-process-order.zh.md))。 +「设置 → 通用设置」提供持久化到 `ui-chat` 命名空间的 `Normal` / `Compact` 对话显示偏好,默认使用 `Compact`。Normal 保持所有过程行可见且不渲染轮次过程控件。Compact 模式下,系统提示词在整个轮次中始终独立显示于开场 User 上方。轮次打开期间,上下文注入、推理、Assistant 内容、工具行与重试行始终展开。到 `turn/end` 时,最后一个步骤只有在包含非空文本、图片或未知可见块且不含工具调用块时才成为最终正文边界;边界之前的上下文注入、推理、较早 Assistant 内容、工具行与重试行随后默认收起。控件展示覆盖整个轮次的非 subagent 工具调用数、最终正文之前带回复内容的 Assistant 消息数和 subagent 委派数;值为 0 的分段省略,工具调用与 subagent 两项互斥,系统提示词与上下文注入都不增加计数。三项全为 0 时过程仍会收起,控件标题显示「已思考」(英文为 `Thought for a while`)。摘要下方的通栏分隔线将其与正文或展开后的过程行隔开。用户与 steering 消息、系统提示词、错误、最大 token 与 turn-tail 行留在过程组外;关闭时没有最终正文的轮次保留全部过程证据。新的过程控件插入时不会改变既有行的相对顺序:开场人工输入从首次投影起便位于控件和过程行之前,系统提示词则始终位于该输入上方。只要仍可通过「加载更早」获取历史,过程控件就不出现,也不会隐藏任何成员;历史加载完整后,每个合格的已关闭轮次立即使用默认收起状态。稳定 Chat Node Seat 会让每个 renderer 保持挂载,隐藏成员不产生消息流间距;只有中间没有独立输入时,收起控件才与正文相隔 8px。完成后的收起不依赖是否跟随尾部,因此正在上方阅读的用户可能看到 transcript 高度变化。若自动收起会隐藏当前键盘焦点,则过程组保持展开且焦点留在原处;手动收起会先把焦点移到过程控件,再隐藏成员。会话作用域 store 只记录用户手动展开的「轮次 + 正文步骤」generation;不同正文 generation 默认收起。 ----- ## 滚动归属 -Chat 会在历史前插与 renderer 重新挂载时恢复语义锚点。读者跟随底部时,`ResizeObserver` 追随新的底部,并且无需读取行几何就选中最后一个已加载 Turn;读者离开底部后,高度变化会保持顶部位置,再由阅读线几何选择活跃 Turn。轮次导航预览位于 Markdown 代码块粘性头栏上方,而导航外框始终处于 composer 上方的 transcript 区域内([已加载 Turn 导航](../../../.agents/notes/implemented/feature/2026-08-25-loaded-turn-chat-navigation.zh.md))。 +Chat 会在历史前插与 renderer 重新挂载时恢复语义锚点。读者跟随底部时,`ResizeObserver` 追随新的底部,并且无需读取行几何就选中最后一个已加载 Turn;读者离开底部后,高度变化会保持顶部位置,再由阅读线几何选择活跃 Turn。轮次导航预览位于 Markdown 代码块粘性头栏上方,而导航外框始终处于 composer 上方的 transcript 区域内。 ----- diff --git a/packages/client/ui-commands/README.i18n.yaml b/packages/client/ui-commands/README.i18n.yaml index e87a9b0483..dc82321424 100644 --- a/packages/client/ui-commands/README.i18n.yaml +++ b/packages/client/ui-commands/README.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write packages/client/ui-commands/README.md -README.md: 045364d43e27d8be07ce5847af5d02e461d10aa6 -README.zh.md: aa9c5d8b0729202098f9323892da710f54d0f9a9 +README.md: e1264d10bd8ff807d8f348339e0c055607579407 +README.zh.md: c5323149aea1e38ff09262db9bd2aacad7b284ea diff --git a/packages/client/ui-commands/README.md b/packages/client/ui-commands/README.md index 045364d43e..e1264d10bd 100644 --- a/packages/client/ui-commands/README.md +++ b/packages/client/ui-commands/README.md @@ -43,7 +43,7 @@ When the composer submits with images or generic files, only a host command decl
Implementation internals — click to expand -`src/client/contract.ts` is the fixed business contract: `CommandUiContract.register(name, spec)` and `decorate(name, spec)` are everything a business package consumes. `CommandDirectory` is the one wire-derived cache, keyed by session: ordinary sessions fetch through `command.list({sessionId})`, entries are soft-invalidated by the forwarded `commands/change` owner event and hard-invalidated by `connection/reset`, and epoch-guarded so a superseded pull can never overwrite a newer one. `matchSpace` answers synchronously from this cache only; `matchEnter` strong-waits it on the SubmitAttempt signal and rejects on warmup failure. After `command.execute` returns a matched result, the browser emits a local `command/executed` acknowledgment; other clients receive the durable command nodes through the Host event stream but never this acknowledgment. `PopupSelectController` is the headless shell state; `PopupSelectView` self-registers into `conversation.input.overlay` with per-session resolution. Decision record: the [web command surfaces note](../../../.agents/notes/implemented/architecture/2026-07-25-web-command-surfaces-and-assembly.md); the [fuzzy discovery note](../../../.agents/notes/implemented/feature/2026-08-04-web-slash-command-fuzzy-discovery.md) covers menu ranking. +`src/client/contract.ts` is the fixed business contract: `CommandUiContract.register(name, spec)` and `decorate(name, spec)` are everything a business package consumes. `CommandDirectory` is the one wire-derived cache, keyed by session: ordinary sessions fetch through `command.list({sessionId})`, entries are soft-invalidated by the forwarded `commands/change` owner event and hard-invalidated by `connection/reset`, and epoch-guarded so a superseded pull can never overwrite a newer one. `matchSpace` answers synchronously from this cache only; `matchEnter` strong-waits it on the SubmitAttempt signal and rejects on warmup failure. After `command.execute` returns a matched result, the browser emits a local `command/executed` acknowledgment; other clients receive the durable command nodes through the Host event stream but never this acknowledgment. `PopupSelectController` is the headless shell state; `PopupSelectView` self-registers into `conversation.input.overlay` with per-session resolution.
@@ -56,8 +56,6 @@ Read these pages when the command surface is not enough. They move from the comm - [ui-input-trigger](../ui-input-trigger/README.md) — the pipeline the `/` source registers into. - [ui-conversation](../ui-conversation/README.md) — declares the input overlay slot and owns the composer. -- [Web command surfaces and assembly](../../../.agents/notes/implemented/architecture/2026-07-25-web-command-surfaces-and-assembly.md) — the design decision behind the command surfaces. -- [Web slash-command fuzzy discovery](../../../.agents/notes/implemented/feature/2026-08-04-web-slash-command-fuzzy-discovery.md) — the menu ranking rationale. - [Client package map](../README.md) — adjacent browser UI packages. ----- diff --git a/packages/client/ui-commands/README.zh.md b/packages/client/ui-commands/README.zh.md index aa9c5d8b07..c5323149ae 100644 --- a/packages/client/ui-commands/README.zh.md +++ b/packages/client/ui-commands/README.zh.md @@ -43,7 +43,7 @@ composer 携带图片或通用文件提交时,只有声明了 `input.attachmen
实现细节——点击展开 -`src/client/contract.ts` 是固定的业务约定:`CommandUiContract.register(name, spec)` 与 `decorate(name, spec)` 是业务包消费的全部内容。`CommandDirectory` 是唯一的 wire 派生缓存,以会话为 key:普通会话经 `command.list({sessionId})` 拉取;条目由转发的 `commands/change` owner 事件软失效、由 `connection/reset` 硬失效,并以 epoch 把关,被取代的旧拉取永远无法覆盖更新的结果。`matchSpace` 只凭该缓存同步应答;`matchEnter` 在 SubmitAttempt 信号上强等缓存,预热失败即拒绝。`command.execute` 返回匹配结果后,浏览器发布本地 `command/executed` 确认;其他客户端经宿主事件流收到持久命令节点,但收不到这条确认。`PopupSelectController` 是不含界面的外壳状态;`PopupSelectView` 自注册进 `conversation.input.overlay`,按会话解析。决策记录:[Web 命令表面笔记](../../../.agents/notes/implemented/architecture/2026-07-25-web-command-surfaces-and-assembly.zh.md);[模糊发现笔记](../../../.agents/notes/implemented/feature/2026-08-04-web-slash-command-fuzzy-discovery.zh.md) 说明菜单排名。 +`src/client/contract.ts` 是固定的业务约定:`CommandUiContract.register(name, spec)` 与 `decorate(name, spec)` 是业务包消费的全部内容。`CommandDirectory` 是唯一的 wire 派生缓存,以会话为 key:普通会话经 `command.list({sessionId})` 拉取;条目由转发的 `commands/change` owner 事件软失效、由 `connection/reset` 硬失效,并以 epoch 把关,被取代的旧拉取永远无法覆盖更新的结果。`matchSpace` 只凭该缓存同步应答;`matchEnter` 在 SubmitAttempt 信号上强等缓存,预热失败即拒绝。`command.execute` 返回匹配结果后,浏览器发布本地 `command/executed` 确认;其他客户端经宿主事件流收到持久命令节点,但收不到这条确认。`PopupSelectController` 是不含界面的外壳状态;`PopupSelectView` 自注册进 `conversation.input.overlay`,按会话解析。
@@ -56,8 +56,6 @@ composer 携带图片或通用文件提交时,只有声明了 `input.attachmen - [ui-input-trigger](../ui-input-trigger/README.zh.md)——`/` source 注册进的流水线。 - [ui-conversation](../ui-conversation/README.zh.md)——声明输入浮层槽位并拥有 composer。 -- [Web 命令表面与组装](../../../.agents/notes/implemented/architecture/2026-07-25-web-command-surfaces-and-assembly.zh.md)——命令表面背后的设计决策。 -- [Web 斜杠命令模糊发现](../../../.agents/notes/implemented/feature/2026-08-04-web-slash-command-fuzzy-discovery.zh.md)——菜单排名的原理。 - [客户端包映射](../README.zh.md)——相邻的浏览器 UI 包。 ----- diff --git a/packages/client/ui-conversation/README.i18n.yaml b/packages/client/ui-conversation/README.i18n.yaml index b463bd456c..a45c0a1cde 100644 --- a/packages/client/ui-conversation/README.i18n.yaml +++ b/packages/client/ui-conversation/README.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write packages/client/ui-conversation/README.md -README.md: 6dc4c34c8c3ae809a95f9bd8d486df648317e23c -README.zh.md: 85305791b155e80e692f1f77b105c3f7f42028b0 +README.md: b615730842fbbed0ab63e7e51e0361e3077785d0 +README.zh.md: 36faa9a0f466f8d11d2dd350a51691cf7e8de931 diff --git a/packages/client/ui-conversation/README.md b/packages/client/ui-conversation/README.md index 6dc4c34c8c..b615730842 100644 --- a/packages/client/ui-conversation/README.md +++ b/packages/client/ui-conversation/README.md @@ -48,7 +48,8 @@ Default sends commit optimistically: Enter clears the draft, occurrence table, a Queued submission echoes show “Sending…” beside disabled edit, remove, and steer buttons; a collapsed dock keeps the sending status in its header. A matching Host queue row replaces the echo and enables each action according to its normal text-content and running-state requirements. Prompt acknowledgement alone does not enable queue actions. A failed submission removes its echo and displays an error; the composer restores the failed draft when it is empty or still contains the previous automatic restoration, preserving subsequently typed text. -While a normal composer is running, its primary pointer action remains Stop when the draft is empty or input is unavailable. Actionable text or attachments switch the same seat to Queue Send; clearing or successfully submitting the draft restores Stop. The busy-Enter setting continues to select the Queue or Steer keyboard action. Plan mode and active goals do not change attachment intake. Continuable subagents keep separate Send and Stop actions but expose no paperclip, paste, or drop intake ([decision](../../../.agents/notes/implemented/bug-fix/2026-08-20-running-draft-primary-send.md)). +While a normal composer is running, its primary pointer action remains Stop when the draft is empty or input is unavailable. Actionable text or attachments switch the same seat to Queue Send; clearing or successfully submitting the draft restores Stop. The busy-Enter setting continues to select the Queue or Steer keyboard action. Plan mode and active goals do not change attachment intake. Continuable subagents keep separate Send and Stop actions but expose no paperclip, paste, or drop intake. + ## Temporary composer entries diff --git a/packages/client/ui-conversation/README.zh.md b/packages/client/ui-conversation/README.zh.md index 85305791b1..36faa9a0f4 100644 --- a/packages/client/ui-conversation/README.zh.md +++ b/packages/client/ui-conversation/README.zh.md @@ -48,7 +48,8 @@ Session 首次绑定或缓存的 Session 成为 current 时,shell 会在渲染 排队提交的本地回显在禁用的编辑、删除、插话按钮旁显示“发送中…”;折叠后的队列在标题栏保留发送状态。匹配的 Host 队列行替换回显后,各操作按原有的纯文本内容和运行状态要求启用。仅收到 prompt 确认不会启用队列操作。提交失败会移除回显并显示错误;输入框为空或仍保留上一次自动恢复的内容时,composer 恢复失败草稿,保留用户随后输入的文字。 -普通 composer 运行时,如果草稿为空或输入不可用,主指针操作保持为 Stop。可提交的文字或附件会把同一位置切换为 Queue Send;清空或成功提交草稿后恢复 Stop。繁忙态 Enter 设置继续选择 Queue 或 Steer 键盘操作。Plan Mode 与 active goal 不改变附件入口。continuable 子代理保留独立的 Send 与 Stop 操作,但不提供回形针、粘贴或拖放入口([决策](../../../.agents/notes/implemented/bug-fix/2026-08-20-running-draft-primary-send.zh.md))。 +普通 composer 运行时,如果草稿为空或输入不可用,主指针操作保持为 Stop。可提交的文字或附件会把同一位置切换为 Queue Send;清空或成功提交草稿后恢复 Stop。繁忙态 Enter 设置继续选择 Queue 或 Steer 键盘操作。Plan Mode 与 active goal 不改变附件入口。continuable 子代理保留独立的 Send 与 Stop 操作,但不提供回形针、粘贴或拖放入口。 + ## 临时 composer entry diff --git a/packages/client/ui-conversation/src/client/input/decorations.ts b/packages/client/ui-conversation/src/client/input/decorations.ts index e221abf64b..d68bfee8e3 100644 --- a/packages/client/ui-conversation/src/client/input/decorations.ts +++ b/packages/client/ui-conversation/src/client/input/decorations.ts @@ -1,6 +1,6 @@ /** * Plain-text reference scan (the plain-text-reference decision; - * see .agents/notes/implemented/architecture/2026-07-25-web-input-machine-and-slash-pipeline.md): + * see .agents/notes/archived/architecture/2026-07-25-web-input-machine-and-slash-pipeline.md): * a `/name` or `@name` token whose name is on the trigger's lexicon, and * syntax-recognizable `@dir/` folder tokens. Pure derivation — the editor's * text-ref entity transform consumes these ranges; editing the text out of @@ -9,7 +9,7 @@ /** * One plain-text reference range (the plain-text-reference decision; - * see .agents/notes/implemented/architecture/2026-07-25-web-input-machine-and-slash-pipeline.md): + * see .agents/notes/archived/architecture/2026-07-25-web-input-machine-and-slash-pipeline.md): * a `/name` or `@name` token * whose name is on the trigger's lexicon. Pure derivation — editing the text * out of match shape simply drops the range next scan. diff --git a/packages/client/ui-conversation/src/client/input/editor/text-ref.ts b/packages/client/ui-conversation/src/client/input/editor/text-ref.ts index 9f57e4c10e..3a72a2a189 100644 --- a/packages/client/ui-conversation/src/client/input/editor/text-ref.ts +++ b/packages/client/ui-conversation/src/client/input/editor/text-ref.ts @@ -1,6 +1,6 @@ /** * Plain-text reference decoration (the plain-text-reference decision; - * see .agents/notes/implemented/architecture/2026-07-25-web-input-machine-and-slash-pipeline.md): + * see .agents/notes/archived/architecture/2026-07-25-web-input-machine-and-slash-pipeline.md): * a `/name` or `@name` token whose name is on the trigger's lexicon, and * syntax-recognizable `@dir/` folder tokens, render in the chip family * colors. Color only, no icon: a token still carrying its trigger character diff --git a/packages/client/ui-conversation/src/client/skeleton/ConversationRoot.module.css b/packages/client/ui-conversation/src/client/skeleton/ConversationRoot.module.css index 3e98b17b42..e7d5af7840 100644 --- a/packages/client/ui-conversation/src/client/skeleton/ConversationRoot.module.css +++ b/packages/client/ui-conversation/src/client/skeleton/ConversationRoot.module.css @@ -334,7 +334,7 @@ /* Reserved unconditionally: the composer seat rides this box's content box in Chat and its padding box under a view's composer overlay, so an `auto` gutter moves the input card sideways by the bar's width whenever the two - differ ([decision](../../../../../../.agents/notes/implemented/bug-fix/2026-08-04-composer-tab-gutter-reservation.md)). */ + differ ([decision](../../../../../../.agents/notes/archived/bug-fix/2026-08-04-composer-tab-gutter-reservation.md)). */ scrollbar-gutter: stable; } @@ -385,7 +385,7 @@ view), so this box never scrolls here; reserving a gutter would only narrow the view's content by the bar's width. Chat keeps the reservation on the same element, so the seat below compensates with the bar's width - ([decision](../../../../../../.agents/notes/implemented/bug-fix/2026-08-04-composer-tab-gutter-reservation.md)). */ + ([decision](../../../../../../.agents/notes/archived/bug-fix/2026-08-04-composer-tab-gutter-reservation.md)). */ scrollbar-gutter: auto; } @@ -404,7 +404,7 @@ bar's layout width. Chat reserves the engine-resolved width, so on an engine where the resolved width differs from this fixed 8px the card drifts by half the difference — accepted residual risk, recorded in - ([decision](../../../../../../.agents/notes/implemented/bug-fix/2026-08-12-composer-overlay-seat-width-compensation.md)). */ + ([decision](../../../../../../.agents/notes/archived/bug-fix/2026-08-12-composer-overlay-seat-width-compensation.md)). */ right: var(--dsh-scrollbar-width); bottom: 0; left: 0; diff --git a/packages/client/ui-deliverables/README.i18n.yaml b/packages/client/ui-deliverables/README.i18n.yaml index 3ccef63ed5..c3174c5164 100644 --- a/packages/client/ui-deliverables/README.i18n.yaml +++ b/packages/client/ui-deliverables/README.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write packages/client/ui-deliverables/README.md -README.md: b228106848549dcddcde84be07c47392dc92a9db -README.zh.md: 0a9d5207fe3c09b89ac34592f04c7eeaeed9b59a +README.md: 567ccca6e7c7668686716b3e33ed43209cfcfee4 +README.zh.md: fde644925a64f1a7d4b9d131b9eb2e2eb384c735 diff --git a/packages/client/ui-deliverables/README.md b/packages/client/ui-deliverables/README.md index b228106848..567ccca6e7 100644 --- a/packages/client/ui-deliverables/README.md +++ b/packages/client/ui-deliverables/README.md @@ -56,7 +56,7 @@ Read these pages when the deliverables surface is not enough. They move from the - [ui-conversation](../ui-conversation/README.md) — declares the `conversation.chat.turnTail` hole and renders the closing prose. - [Workspace file links](../../../.agents/notes/implemented/feature/2026-07-31-web-workspace-file-links.md) — the decision behind the produced-files row and the Host open path. -- [Inline file mentions](../../../.agents/notes/implemented/feature/2026-08-07-web-inline-file-mentions.md) — the decision behind clickable mentions in the closing prose. +- [Inline file mentions](../../../.agents/notes/archived/feature/2026-08-07-web-inline-file-mentions.md) — the decision behind clickable mentions in the closing prose. - [Client package map](../README.md) — adjacent browser UI packages. ----- diff --git a/packages/client/ui-deliverables/README.zh.md b/packages/client/ui-deliverables/README.zh.md index 0a9d5207fe..fde644925a 100644 --- a/packages/client/ui-deliverables/README.zh.md +++ b/packages/client/ui-deliverables/README.zh.md @@ -56,7 +56,7 @@ Node 半部注册静态 `ui:deliverable-file-references` 系统提示词段, - [ui-conversation](../ui-conversation/README.zh.md)——声明 `conversation.chat.turnTail` 洞并渲染收尾正文。 - [工作区文件链接](../../../.agents/notes/implemented/feature/2026-07-31-web-workspace-file-links.zh.md)——产出文件行与宿主打开路径背后的决策。 -- [行内文件提及](../../../.agents/notes/implemented/feature/2026-08-07-web-inline-file-mentions.zh.md)——收尾正文可点击提及背后的决策。 +- [行内文件提及](../../../.agents/notes/archived/feature/2026-08-07-web-inline-file-mentions.md)——收尾正文可点击提及背后的决策。 - [客户端包映射](../README.zh.md)——相邻的浏览器 UI 包。 ----- diff --git a/packages/client/ui-input-trigger/src/client/controller.ts b/packages/client/ui-input-trigger/src/client/controller.ts index 7821885d85..afc03d6ad5 100644 --- a/packages/client/ui-input-trigger/src/client/controller.ts +++ b/packages/client/ui-input-trigger/src/client/controller.ts @@ -61,7 +61,7 @@ export class InputTriggerController { createSnapshotStore>(new Map()) /** * Aggregated hot reference lexicon, grouped by trigger (plain-text-reference decision; - * see .agents/notes/implemented/architecture/2026-07-25-web-input-machine-and-slash-pipeline.md): + * see .agents/notes/archived/architecture/2026-07-25-web-input-machine-and-slash-pipeline.md): * sources implementing the lexicon hook are polled with the session * projection; undefined answers (roll not hot yet) are skipped; multiple * sources on one trigger concatenate in registration order. A snapshot diff --git a/packages/client/ui-primitives/README.i18n.yaml b/packages/client/ui-primitives/README.i18n.yaml index ccd55950f1..b3f2733f57 100644 --- a/packages/client/ui-primitives/README.i18n.yaml +++ b/packages/client/ui-primitives/README.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write packages/client/ui-primitives/README.md -README.md: ce18a574e0058b3e7e6f50e91fa2671af6563faa -README.zh.md: 527f91a6b932ea05d8d6262058eba37de67c65ce +README.md: 10d36500561c588c6dd48ab709d02becebe6881b +README.zh.md: 3ce392b51c8703e8490c145c4c4bb0803e98f408 diff --git a/packages/client/ui-primitives/README.md b/packages/client/ui-primitives/README.md index ce18a574e0..10d3650056 100644 --- a/packages/client/ui-primitives/README.md +++ b/packages/client/ui-primitives/README.md @@ -29,11 +29,12 @@ Compose feature UI from these atoms whenever the web client needs a standard con ### Controls and icons -`Button`, `Pill`, `Input`, `Menu`, `Modal`, `Tooltip`, `DisclosureRow`, `StateDot`, `HoverCard`, `Toast`, `ConnectionIndicator`, `RiskConfirmation`, and the `OnboardingSurface` first-run takeover cover the common interaction shapes. The `ic_ds_*` icon set and `FishLogo`/`BrandWordmark` marks fill brand and inline-icon slots. `LinkIcon` draws the leading category glyph for clickable artifact links — globe, folder, code, image, document, or plain paper, all riding `currentColor` — and `classifyLinkPath` derives a file path's category from its extension. `ConnectionIndicator` renders a warning-colored disconnected action, a connecting label whose one-to-three dots advance every 500ms independently of retry timing, or a success-colored recovered status. Every state reserves the widest supplied label and uses fixed icon and text columns, so copy changes do not move or resize the control. Its owner supplies visibility, the recovery hold, localized labels, and the immediate-reconnect callback; the primitive uses no native title tooltip. `useAnchoredPosition` and `useAnchoredMaxHeight` keep floating panels and bottom-anchored overlays clamped to the viewport and following their anchor. `HoverCard` keeps its portaled preview reachable across the anchor gap and can expose a copy button through the `copyText` prop. `Toast` holds for the window its owner names through `holdMs`, because how long a banner has to stay depends on how much there is to read; the same value drives its unmount timer and the stylesheet's fade delay, so the two cannot disagree. `rankByName` is the `/` menu's shared candidate ranker for the command and skill sources: the query must be a case-insensitive ordered subsequence of the name; prefix hits rank first, then alignment score, then source order ([ranking decision](../../../.agents/notes/implemented/feature/2026-08-04-web-slash-command-fuzzy-discovery.md)). +`Button`, `Pill`, `Input`, `Menu`, `Modal`, `Tooltip`, `DisclosureRow`, `StateDot`, `HoverCard`, `Toast`, `ConnectionIndicator`, `RiskConfirmation`, and the `OnboardingSurface` first-run takeover cover the common interaction shapes. The `ic_ds_*` icon set and `FishLogo`/`BrandWordmark` marks fill brand and inline-icon slots. `LinkIcon` draws the leading category glyph for clickable artifact links — globe, folder, code, image, document, or plain paper, all riding `currentColor` — and `classifyLinkPath` derives a file path's category from its extension. `ConnectionIndicator` renders a warning-colored disconnected action, a connecting label whose one-to-three dots advance every 500ms independently of retry timing, or a success-colored recovered status. Every state reserves the widest supplied label and uses fixed icon and text columns, so copy changes do not move or resize the control. Its owner supplies visibility, the recovery hold, localized labels, and the immediate-reconnect callback; the primitive uses no native title tooltip. `useAnchoredPosition` and `useAnchoredMaxHeight` keep floating panels and bottom-anchored overlays clamped to the viewport and following their anchor. `HoverCard` keeps its portaled preview reachable across the anchor gap and can expose a copy button through the `copyText` prop. `Toast` holds for the window its owner names through `holdMs`, because how long a banner has to stay depends on how much there is to read; the same value drives its unmount timer and the stylesheet's fade delay, so the two cannot disagree. `rankByName` is the `/` menu's shared candidate ranker for the command and skill sources: the query must be a case-insensitive ordered subsequence of the name; prefix hits rank first, then alignment score, then source order. ### Rendering agent output -`MarkdownText` renders untrusted GFM and TeX math, blocks unsafe links and images, and can turn resolved file mentions into explicit controls. While a reply streams, it freezes completed blocks, advances a top-level open fence by completed lines, and highlights that fence from saved Shiki grammar state. Completed token lines enter fixed-size React groups, so later chunks reconcile only the growing group; an unchanged fence retains that DOM when the final full parse resolves cross-document syntax ([incremental renderer](../../../.agents/notes/implemented/architecture/2026-08-06-web-markdown-incremental-ast-renderer.md), [streaming fence highlighting](../../../.agents/notes/implemented/feature/2026-08-20-web-streaming-fence-highlight.md)). `TerminalBlock`, `ReadBlock`, `DiffBlock`, `SearchBlock`, and `WebBlock` render the matching tool-result intent with copy controls, overflow handling, and ANSI processing where applicable. `JsonTree` and `JsonBlock` inspect JSON values read-only, while `projectUserText` projects sent user text into inline plain runs and reference chips for the message bubble and queue rows. +`MarkdownText` renders untrusted GFM and TeX math, blocks unsafe links and images, and can turn resolved file mentions into explicit controls. While a reply streams, it freezes completed blocks, advances a top-level open fence by completed lines, and highlights that fence from saved Shiki grammar state. Completed token lines enter fixed-size React groups, so later chunks reconcile only the growing group; an unchanged fence retains that DOM when the final full parse resolves cross-document syntax. `TerminalBlock`, `ReadBlock`, `DiffBlock`, `SearchBlock`, and `WebBlock` render the matching tool-result intent with copy controls, overflow handling, and ANSI processing where applicable. `JsonTree` and `JsonBlock` inspect JSON values read-only, while `projectUserText` projects sent user text into inline plain runs and reference chips for the message bubble and queue rows. + ### Localizing copy @@ -63,7 +64,7 @@ The package is one separation: presentational React atoms with zero Cordis and z ### Streaming markdown -While a reply streams, `MarkdownText` parses incrementally: all but the trailing two blocks freeze as cached React elements and only the source tail re-parses per chunk, so per-chunk work tracks the tail instead of the whole reply. A final unclosed top-level fence keeps its parsed code node and sends only the last completed line plus the current partial line through the same GFM grammar; a closing fence or ambiguous parse returns to the ordinary tail path. Highlighting likewise resumes from saved Shiki grammar state and publishes only newly completed lines plus the mutable tail. `CodeBlock` seals completed lines into fixed-size React groups, reuses earlier groups, and retains the whole highlighted tree across settlement when code and language are unchanged. The settled full parse still resolves references that crossed the freeze boundary ([incremental renderer](../../../.agents/notes/implemented/architecture/2026-08-06-web-markdown-incremental-ast-renderer.md), [streaming fence highlighting](../../../.agents/notes/implemented/feature/2026-08-20-web-streaming-fence-highlight.md)). +While a reply streams, `MarkdownText` parses incrementally: all but the trailing two blocks freeze as cached React elements and only the source tail re-parses per chunk, so per-chunk work tracks the tail instead of the whole reply. A final unclosed top-level fence keeps its parsed code node and sends only the last completed line plus the current partial line through the same GFM grammar; a closing fence or ambiguous parse returns to the ordinary tail path. Highlighting likewise resumes from saved Shiki grammar state and publishes only newly completed lines plus the mutable tail. `CodeBlock` seals completed lines into fixed-size React groups, reuses earlier groups, and retains the whole highlighted tree across settlement when code and language are unchanged. The settled full parse still resolves references that crossed the freeze boundary. ### Geometry and overflow diff --git a/packages/client/ui-primitives/README.zh.md b/packages/client/ui-primitives/README.zh.md index 527f91a6b9..3ce392b51c 100644 --- a/packages/client/ui-primitives/README.zh.md +++ b/packages/client/ui-primitives/README.zh.md @@ -29,11 +29,12 @@ kind: "package-library" ### 控件与图标 -`Button`、`Pill`、`Input`、`Menu`、`Modal`、`Tooltip`、`DisclosureRow`、`StateDot`、`HoverCard`、`Toast`、`ConnectionIndicator`、`RiskConfirmation` 与首次运行接管层 `OnboardingSurface` 覆盖常见的交互形态。`ic_ds_*` 图标集与 `FishLogo`/`BrandWordmark` 标记填充品牌与行内图标 slot。`LinkIcon` 为可点击产物链接绘制前置分类图形——地球、文件夹、代码、图片、文档或纸张,全部随 `currentColor`——`classifyLinkPath` 按扩展名推导文件路径的类别。`ConnectionIndicator` 可渲染警告色的断联操作、以独立于 retry 时序的 500ms 节奏推进一至三个点的连接中状态,或成功色的恢复状态。所有状态都为最长的输入 label 预留空间,并使用固定的图标列和文字列,因此文案变化不会移动控件或改变其宽度。它的 owner 提供可见性、恢复驻留时间、本地化 label 与立即重连回调;该原语不使用原生 title tooltip。`useAnchoredPosition` 与 `useAnchoredMaxHeight` 让浮动面板与底部锚定浮层始终钳制在视口内并跟随锚点。`HoverCard` 通过指针离开宽限期让采用 portal 的预览在跨过锚点间隙时仍可触及,并可通过 `copyText` prop 提供复制按钮。 `Toast` 的停留时长由使用方通过 `holdMs` 指定,因为横幅该留多久取决于有多少内容要读;同一个值同时驱动它的卸载定时器与样式表的淡出延迟,两者不可能再错位。 `rankByName` 是 `/` 菜单命令源与 skill 源共享的候选排序器:查询必须是名字的不区分大小写的有序子序列;前缀命中排最前,其次按对齐分数,再按来源顺序([排名决策](../../../.agents/notes/implemented/feature/2026-08-04-web-slash-command-fuzzy-discovery.zh.md))。 +`Button`、`Pill`、`Input`、`Menu`、`Modal`、`Tooltip`、`DisclosureRow`、`StateDot`、`HoverCard`、`Toast`、`ConnectionIndicator`、`RiskConfirmation` 与首次运行接管层 `OnboardingSurface` 覆盖常见的交互形态。`ic_ds_*` 图标集与 `FishLogo`/`BrandWordmark` 标记填充品牌与行内图标 slot。`LinkIcon` 为可点击产物链接绘制前置分类图形——地球、文件夹、代码、图片、文档或纸张,全部随 `currentColor`——`classifyLinkPath` 按扩展名推导文件路径的类别。`ConnectionIndicator` 可渲染警告色的断联操作、以独立于 retry 时序的 500ms 节奏推进一至三个点的连接中状态,或成功色的恢复状态。所有状态都为最长的输入 label 预留空间,并使用固定的图标列和文字列,因此文案变化不会移动控件或改变其宽度。它的 owner 提供可见性、恢复驻留时间、本地化 label 与立即重连回调;该原语不使用原生 title tooltip。`useAnchoredPosition` 与 `useAnchoredMaxHeight` 让浮动面板与底部锚定浮层始终钳制在视口内并跟随锚点。`HoverCard` 通过指针离开宽限期让采用 portal 的预览在跨过锚点间隙时仍可触及,并可通过 `copyText` prop 提供复制按钮。 `Toast` 的停留时长由使用方通过 `holdMs` 指定,因为横幅该留多久取决于有多少内容要读;同一个值同时驱动它的卸载定时器与样式表的淡出延迟,两者不可能再错位。 `rankByName` 是 `/` 菜单命令源与 skill 源共享的候选排序器:查询必须是名字的不区分大小写的有序子序列;前缀命中排最前,其次按对齐分数,再按来源顺序。 ### 渲染 agent 输出 -`MarkdownText` 渲染不可信的 GFM 与 TeX 公式、阻止不安全的链接与图片,并可把已解析的文件提及转换为显式控件。回复流式输出时,它冻结已完成的块、按已完成行推进顶层未闭合 fence,并从保存的 Shiki grammar state 为该 fence 增量高亮。已完成的 token 行进入固定大小的 React 分组,后续分片只 reconcile 正在增长的分组;最终全量解析解决跨文档语法时,未变化的 fence 会保留该 DOM([增量渲染器](../../../.agents/notes/implemented/architecture/2026-08-06-web-markdown-incremental-ast-renderer.zh.md)、[流式 fence 高亮](../../../.agents/notes/implemented/feature/2026-08-20-web-streaming-fence-highlight.zh.md))。`TerminalBlock`、`ReadBlock`、`DiffBlock`、`SearchBlock` 与 `WebBlock` 把对应的工具结果意图渲染为带复制控件、溢出处理及适用时 ANSI 处理的卡片。`JsonTree` 与 `JsonBlock` 以只读方式检查 JSON 值;`projectUserText` 把已发送的用户文本投影为行内普通文本段与引用 chip,供消息气泡和排队行使用。 +`MarkdownText` 渲染不可信的 GFM 与 TeX 公式、阻止不安全的链接与图片,并可把已解析的文件提及转换为显式控件。回复流式输出时,它冻结已完成的块、按已完成行推进顶层未闭合 fence,并从保存的 Shiki grammar state 为该 fence 增量高亮。已完成的 token 行进入固定大小的 React 分组,后续分片只 reconcile 正在增长的分组;最终全量解析解决跨文档语法时,未变化的 fence 会保留该 DOM。`TerminalBlock`、`ReadBlock`、`DiffBlock`、`SearchBlock` 与 `WebBlock` 把对应的工具结果意图渲染为带复制控件、溢出处理及适用时 ANSI 处理的卡片。`JsonTree` 与 `JsonBlock` 以只读方式检查 JSON 值;`projectUserText` 把已发送的用户文本投影为行内普通文本段与引用 chip,供消息气泡和排队行使用。 + ### 本地化文案 @@ -63,7 +64,7 @@ kind: "package-library" ### 流式 markdown -回复流式输出期间,`MarkdownText` 增量解析:除末尾两个块外全部冻结为缓存的 React 元素,每个分片只重新解析其后的源文本尾部,因此每分片的工作量跟随尾部而非整个回复。末尾的顶层未闭合 fence 会保留已解析的 code node,只把最后一个已完成行与当前未完成行交给同一套 GFM grammar;闭合 fence 或有歧义的解析会回到普通尾部路径。高亮同样从保存的 Shiki grammar state 续接,并只发布新完成行与可变尾部。`CodeBlock` 把已完成行封入固定大小的 React 分组、复用更早的分组,并在代码与语言未变化时跨定稿保留整棵高亮树。定稿时的全量解析仍会解析跨过冻结边界的引用([增量渲染器](../../../.agents/notes/implemented/architecture/2026-08-06-web-markdown-incremental-ast-renderer.zh.md)、[流式 fence 高亮](../../../.agents/notes/implemented/feature/2026-08-20-web-streaming-fence-highlight.zh.md))。 +回复流式输出期间,`MarkdownText` 增量解析:除末尾两个块外全部冻结为缓存的 React 元素,每个分片只重新解析其后的源文本尾部,因此每分片的工作量跟随尾部而非整个回复。末尾的顶层未闭合 fence 会保留已解析的 code node,只把最后一个已完成行与当前未完成行交给同一套 GFM grammar;闭合 fence 或有歧义的解析会回到普通尾部路径。高亮同样从保存的 Shiki grammar state 续接,并只发布新完成行与可变尾部。`CodeBlock` 把已完成行封入固定大小的 React 分组、复用更早的分组,并在代码与语言未变化时跨定稿保留整棵高亮树。定稿时的全量解析仍会解析跨过冻结边界的引用。 ### 几何与溢出 diff --git a/packages/client/ui-primitives/src/rank-by-name.ts b/packages/client/ui-primitives/src/rank-by-name.ts index 97d6903728..7dc3b3a0cc 100644 --- a/packages/client/ui-primitives/src/rank-by-name.ts +++ b/packages/client/ui-primitives/src/rank-by-name.ts @@ -3,7 +3,7 @@ * case-insensitive ordered subsequence of the candidate name. Prefix hits * rank first, then the strongest alignment score, then the source order of * the input. Decision record: - * .agents/notes/implemented/feature/2026-08-04-web-slash-command-fuzzy-discovery.md + * .agents/notes/archived/feature/2026-08-04-web-slash-command-fuzzy-discovery.md */ /** One match with its stable source position. */ diff --git a/packages/client/ui-reference/README.i18n.yaml b/packages/client/ui-reference/README.i18n.yaml index be0c5fb63d..3cb0f4ed79 100644 --- a/packages/client/ui-reference/README.i18n.yaml +++ b/packages/client/ui-reference/README.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write packages/client/ui-reference/README.md -README.md: ef836af60febd0519acab61390893115c064347b -README.zh.md: 85c3a003c51a2fae1f5e678879f9eabe9b5287c6 +README.md: ecabff50060ac80c21c223fa64a898184a619aba +README.zh.md: f8c5ec7a664aa28efa3f836106af46049480fe56 diff --git a/packages/client/ui-reference/README.md b/packages/client/ui-reference/README.md index ef836af60f..ecabff5006 100644 --- a/packages/client/ui-reference/README.md +++ b/packages/client/ui-reference/README.md @@ -67,7 +67,7 @@ These pages cover the suggestion machinery, the reference seams, and the input p - [ui-input-trigger](../ui-input-trigger/README.md) — the inline suggestion machinery the source registers into. - [file-reference](../../context/file-reference/README.md) — the `@file` seam and its provider contract. - [session-reference](../../context/session-reference/README.md) — the `@session` seam and prepared snapshot semantics. -- [Web input machine and slash pipeline](../../../.agents/notes/implemented/architecture/2026-07-25-web-input-machine-and-slash-pipeline.md) — how references and commands share the input machine. +- [Web input machine and slash pipeline](../../../.agents/notes/archived/architecture/2026-07-25-web-input-machine-and-slash-pipeline.md) — how references and commands share the input machine. ----- diff --git a/packages/client/ui-reference/README.zh.md b/packages/client/ui-reference/README.zh.md index 85c3a003c5..f8c5ec7a66 100644 --- a/packages/client/ui-reference/README.zh.md +++ b/packages/client/ui-reference/README.zh.md @@ -67,7 +67,7 @@ kind: "package-reference" - [ui-input-trigger](../ui-input-trigger/README.zh.md)——该 source 注册进的行内建议机制。 - [file-reference](../../context/file-reference/README.zh.md)——`@file` seam 及其提供方约定。 - [session-reference](../../context/session-reference/README.zh.md)——`@session` seam 与准备后快照的语义。 -- [Web 输入机器与 slash 流水线](../../../.agents/notes/implemented/architecture/2026-07-25-web-input-machine-and-slash-pipeline.zh.md)——引用与命令如何共享输入机器。 +- [Web 输入机器与 slash 流水线](../../../.agents/notes/archived/architecture/2026-07-25-web-input-machine-and-slash-pipeline.md)——引用与命令如何共享输入机器。 ----- diff --git a/packages/client/ui-settings-models/README.i18n.yaml b/packages/client/ui-settings-models/README.i18n.yaml index 2d8accc664..b60f05babf 100644 --- a/packages/client/ui-settings-models/README.i18n.yaml +++ b/packages/client/ui-settings-models/README.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write packages/client/ui-settings-models/README.md -README.md: cac2785886346a0c1e81009404fdb0da238bbe40 -README.zh.md: 7df96a9a1b9474b5e88d8f9814f353f92eb1a31d +README.md: 64a295e9ebacdd8cbb2b5a0a10b14c1c1dfb24ee +README.zh.md: a75b6f2300eb59e2961b5ca85799b28b32d0856a diff --git a/packages/client/ui-settings-models/README.md b/packages/client/ui-settings-models/README.md index cac2785886..64a295e9eb 100644 --- a/packages/client/ui-settings-models/README.md +++ b/packages/client/ui-settings-models/README.md @@ -82,7 +82,7 @@ These pages cover the settings base, the seams this page joins, and the design r - [settings](../../settings/README.md) — the durable user-settings seam and its file provider. - [credentials](../../credentials/README.md) — the credential-reference seam this page writes keys through. - [llm](../../llm/README.md) — the adapter registry whose providers this page configures. -- [Web config plane](../../../.agents/notes/implemented/architecture/2026-07-30-web-config-plane.md) — the hand-written editor's design rationale. +- [Web config plane](../../../.agents/notes/archived/architecture/2026-07-30-web-config-plane.md) — the hand-written editor's design rationale. ----- diff --git a/packages/client/ui-settings-models/README.zh.md b/packages/client/ui-settings-models/README.zh.md index 7df96a9a1b..a75b6f2300 100644 --- a/packages/client/ui-settings-models/README.zh.md +++ b/packages/client/ui-settings-models/README.zh.md @@ -82,7 +82,7 @@ kind: "package-reference" - [settings](../../settings/README.zh.md)——持久化用户设置 seam 及其文件提供方。 - [credentials](../../credentials/README.zh.md)——本页写入密钥所经的凭据引用 seam。 - [llm](../../llm/README.zh.md)——本页所配置提供方所在的适配器注册表。 -- [Web 配置平面](../../../.agents/notes/implemented/architecture/2026-07-30-web-config-plane.zh.md)——手写编辑器的设计依据。 +- [Web 配置平面](../../../.agents/notes/archived/architecture/2026-07-30-web-config-plane.md)——手写编辑器的设计依据。 ----- diff --git a/packages/client/ui-skill/README.i18n.yaml b/packages/client/ui-skill/README.i18n.yaml index fbda419e61..293ec2b4ee 100644 --- a/packages/client/ui-skill/README.i18n.yaml +++ b/packages/client/ui-skill/README.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write packages/client/ui-skill/README.md -README.md: a98194f7e590eb8a68bd329495896e9f2df1b506 -README.zh.md: c4f444f1c749f0697e8883166a0f4ea8ca2009ba +README.md: 0d9c899aed03fbc41b777f73e9fa17b79a631901 +README.zh.md: 052128a5709cd1c48053e8dbb4fbdfb22734e4f8 diff --git a/packages/client/ui-skill/README.md b/packages/client/ui-skill/README.md index a98194f7e5..0d9c899aed 100644 --- a/packages/client/ui-skill/README.md +++ b/packages/client/ui-skill/README.md @@ -29,7 +29,7 @@ Type `/` in the composer and pick a skill from the suggestions, or type `/name` ### What the source offers -Ordinary-session candidates come from the `skills/list` Remote; the host serves every user-invocable skill, and a `modelInvocable: false` entry (a `disable-model-invocation` skill, whose only entry point is this path) wears the user-only marker as a description prefix in the active language. Results rank through the `/` menu's shared name ranker, `rankByName` from ui-primitives: the query matches a case-insensitive ordered subsequence of the skill name, prefix hits rank first, and ties keep the host order ([ranking decision](../../../.agents/notes/implemented/feature/2026-08-04-web-slash-command-fuzzy-discovery.md)). A failed `skills/list` call is logged and folded into a silent menu-group drop — the menu shows only pending/ready states. +Ordinary-session candidates come from the `skills/list` Remote; the host serves every user-invocable skill, and a `modelInvocable: false` entry (a `disable-model-invocation` skill, whose only entry point is this path) wears the user-only marker as a description prefix in the active language. Results rank through the `/` menu's shared name ranker, `rankByName` from ui-primitives: the query matches a case-insensitive ordered subsequence of the skill name, prefix hits rank first, and ties keep the host order ([ranking decision](../../../.agents/notes/archived/feature/2026-08-04-web-slash-command-fuzzy-discovery.md)). A failed `skills/list` call is logged and folded into a silent menu-group drop — the menu shows only pending/ready states. ### The skill tool row @@ -43,7 +43,7 @@ A collapsed row renders the skill glyph, `Skill` title, and requested skill name
Implementation internals — click to expand -The source implements no adjudication hooks and no reference codec: the pick lands literal text and the prompt ships the same literal, so determinism lives host-side ([slash pipeline note](../../../.agents/notes/implemented/architecture/2026-07-25-web-input-machine-and-slash-pipeline.md)). +The source implements no adjudication hooks and no reference codec: the pick lands literal text and the prompt ships the same literal, so determinism lives host-side ([slash pipeline note](../../../.agents/notes/archived/architecture/2026-07-25-web-input-machine-and-slash-pipeline.md)). ### Candidate flow @@ -65,7 +65,7 @@ These pages cover the input machinery, the tool row host, and the host-side skil - [ui-input-trigger](../ui-input-trigger/README.md) — the inline suggestion machinery the source registers into. - [ui-tool](../ui-tool/README.md) — the tool-call presentation layer hosting the `tool.call.toolview` slot. - [tool-skill](../../skill/tool-skill/README.md) — the host-side `skill` tool owning the pre-step gesture boundary. -- [Web input machine and slash pipeline](../../../.agents/notes/implemented/architecture/2026-07-25-web-input-machine-and-slash-pipeline.md) — how references and commands share the input machine. +- [Web input machine and slash pipeline](../../../.agents/notes/archived/architecture/2026-07-25-web-input-machine-and-slash-pipeline.md) — how references and commands share the input machine. ----- diff --git a/packages/client/ui-skill/README.zh.md b/packages/client/ui-skill/README.zh.md index c4f444f1c7..052128a570 100644 --- a/packages/client/ui-skill/README.zh.md +++ b/packages/client/ui-skill/README.zh.md @@ -29,7 +29,7 @@ kind: "package-reference" ### source 提供什么 -普通会话的候选来自 `skills/list` Remote;宿主提供每一个用户可调用的 skill,`modelInvocable: false` 的条目(即 `disable-model-invocation` skill,此路径是其唯一入口)会以当前语言把仅限用户标记作为描述前缀带上。结果经 `/` 菜单共享的名字排序器(ui-primitives 的 `rankByName`)排名:查询作为不区分大小写的有序子序列匹配 skill 名,前缀命中排最前,同分保持宿主顺序([排名决策](../../../.agents/notes/implemented/feature/2026-08-04-web-slash-command-fuzzy-discovery.zh.md))。`skills/list` 调用失败时会被记录并静默丢弃该菜单组——菜单只显示 pending/ready 状态。 +普通会话的候选来自 `skills/list` Remote;宿主提供每一个用户可调用的 skill,`modelInvocable: false` 的条目(即 `disable-model-invocation` skill,此路径是其唯一入口)会以当前语言把仅限用户标记作为描述前缀带上。结果经 `/` 菜单共享的名字排序器(ui-primitives 的 `rankByName`)排名:查询作为不区分大小写的有序子序列匹配 skill 名,前缀命中排最前,同分保持宿主顺序([排名决策](../../../.agents/notes/archived/feature/2026-08-04-web-slash-command-fuzzy-discovery.md))。`skills/list` 调用失败时会被记录并静默丢弃该菜单组——菜单只显示 pending/ready 状态。 ### skill 工具行 @@ -43,7 +43,7 @@ kind: "package-reference"
实现细节——点击展开 -source 不实现任何裁决钩子,也没有引用 codec:pick 落下字面文本,发出的提示词中也是同一段字面文本,因此确定性在宿主侧([slash 流水线笔记](../../../.agents/notes/implemented/architecture/2026-07-25-web-input-machine-and-slash-pipeline.zh.md))。 +source 不实现任何裁决钩子,也没有引用 codec:pick 落下字面文本,发出的提示词中也是同一段字面文本,因此确定性在宿主侧([slash 流水线笔记](../../../.agents/notes/archived/architecture/2026-07-25-web-input-machine-and-slash-pipeline.md))。 ### 候选流程 @@ -65,7 +65,7 @@ source 不实现任何裁决钩子,也没有引用 codec:pick 落下字面 - [ui-input-trigger](../ui-input-trigger/README.zh.md)——该 source 注册进的行内建议机制。 - [ui-tool](../ui-tool/README.zh.md)——承载 `tool.call.toolview` slot 的工具调用展示层。 - [tool-skill](../../skill/tool-skill/README.zh.md)——拥有 pre-step 手势边界的宿主侧 `skill` 工具。 -- [Web 输入机器与 slash 流水线](../../../.agents/notes/implemented/architecture/2026-07-25-web-input-machine-and-slash-pipeline.zh.md)——引用与命令如何共享输入机器。 +- [Web 输入机器与 slash 流水线](../../../.agents/notes/archived/architecture/2026-07-25-web-input-machine-and-slash-pipeline.md)——引用与命令如何共享输入机器。 ----- diff --git a/packages/client/ui-skill/src/client/index.ts b/packages/client/ui-skill/src/client/index.ts index e15a748ca1..a17c1c0ce2 100644 --- a/packages/client/ui-skill/src/client/index.ts +++ b/packages/client/ui-skill/src/client/index.ts @@ -4,7 +4,7 @@ * projection's sessionId (sessions are always agent-backed; the host * resolves cwd from the session header). A pick lands the literal `/name ` * text and the prompt ships the same literal (plain-text-reference decision; - * see .agents/notes/implemented/architecture/2026-07-25-web-input-machine-and-slash-pipeline.md); + * see .agents/notes/archived/architecture/2026-07-25-web-input-machine-and-slash-pipeline.md); * determinism * lives host-side — the pre-step boundary (`dsh-tool-skill`) recognizes a * leading `/name` naming a user-invocable skill and injects the rendered diff --git a/packages/client/ui-skill/tests/browser-plugin.client.spec.ts b/packages/client/ui-skill/tests/browser-plugin.client.spec.ts index 82ca97029c..5009a20088 100644 --- a/packages/client/ui-skill/tests/browser-plugin.client.spec.ts +++ b/packages/client/ui-skill/tests/browser-plugin.client.spec.ts @@ -7,7 +7,7 @@ * session-keyed catalog cache (single-flight per key, scope-birth warm * prewarm, connection/reset clear), shared fuzzy name ranking, RPC-failure * rejection, pick → plain-text outcome (the plain-text-reference decision: - * .agents/notes/implemented/architecture/2026-07-25-web-input-machine-and-slash-pipeline.md), + * .agents/notes/archived/architecture/2026-07-25-web-input-machine-and-slash-pipeline.md), * the synchronous * lexicon reads over the settled cache, and the reference codec's two * projections. Direct driving is deliberate: this spec owns only the diff --git a/packages/client/ui-slots/README.i18n.yaml b/packages/client/ui-slots/README.i18n.yaml index 4e29bda42f..2ac7aeea30 100644 --- a/packages/client/ui-slots/README.i18n.yaml +++ b/packages/client/ui-slots/README.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write packages/client/ui-slots/README.md -README.md: 037b2de5f1ea23e103dfb9adf766fa309cccc36f -README.zh.md: 521b4be18b30cf27d7e89b33b02f2e4a2c9e144e +README.md: f42b5c797c49702ec22900de019913b43992c683 +README.zh.md: ef743787b24334febe822213746187a94fa10602 diff --git a/packages/client/ui-slots/README.md b/packages/client/ui-slots/README.md index 037b2de5f1..f42b5c797c 100644 --- a/packages/client/ui-slots/README.md +++ b/packages/client/ui-slots/README.md @@ -66,7 +66,6 @@ The design is one table: declaration = render authorization = runtime spec. `Slo These pages cover the engine, the renderer, and the composition model. -- [Slot declaration injection decision](../../../.agents/notes/implemented/architecture/2026-08-05-slot-declaration-injection.md) — the lifecycle rules behind `ctx.slots.inject`. - [ui-renderer](../ui-renderer/README.md) — the React slot renderer implementing this package's install contract. - [Slot system standard](../../../.agents/notes/implemented/architecture/2026-07-22-slot-type-chain-implementation.md) — the definitive composition model. - [Web client architecture](../../../.agents/notes/implemented/architecture/2026-07-19-gui-web-client-architecture.md) — the loading chain and object layer this registry plugs into. diff --git a/packages/client/ui-slots/README.zh.md b/packages/client/ui-slots/README.zh.md index 521b4be18b..ef743787b2 100644 --- a/packages/client/ui-slots/README.zh.md +++ b/packages/client/ui-slots/README.zh.md @@ -66,7 +66,6 @@ register 调用可以用 `store: defineStore(...)` 声明 store 席位:`init` 以下页面覆盖引擎、渲染器与组合模型。 -- [Slot 声明注入决策](../../../.agents/notes/implemented/architecture/2026-08-05-slot-declaration-injection.zh.md)——`ctx.slots.inject` 背后的生命周期规则。 - [ui-renderer](../ui-renderer/README.zh.md)——实现本包安装约定的 React slot 渲染器。 - [slot 系统标准](../../../.agents/notes/implemented/architecture/2026-07-22-slot-type-chain-implementation.zh.md)——权威组合模型。 - [Web 客户端架构](../../../.agents/notes/implemented/architecture/2026-07-19-gui-web-client-architecture.zh.md)——本注册表接入的加载链与对象层。 diff --git a/packages/client/ui-theme/README.i18n.yaml b/packages/client/ui-theme/README.i18n.yaml index b1ef34ea90..e023867f5b 100644 --- a/packages/client/ui-theme/README.i18n.yaml +++ b/packages/client/ui-theme/README.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write packages/client/ui-theme/README.md -README.md: c591501e274de0419ea3585feb731802985ac95b -README.zh.md: e970141963cc592541e77d748c421e693cc9568f +README.md: 7c5ba6541601bbe506a0707e3ebfd75a1f30ade9 +README.zh.md: 6c82a1be39fff0ff827d515e870775aa9571ad2c diff --git a/packages/client/ui-theme/README.md b/packages/client/ui-theme/README.md index c591501e27..7c5ba65416 100644 --- a/packages/client/ui-theme/README.md +++ b/packages/client/ui-theme/README.md @@ -53,13 +53,13 @@ The service owns theme and font-size state and publishes snapshots. The ui-layou `src/styles/` holds six sheets imported in order by ui-theme's dynamic client entry: `base.css`, `corner-shape.css`, `design-platform.css`, `scrollbar.css`, `gradient-shadow-text.css`, and `shiki.css`. The client bundle compiles and injects them as plugin-owned global styles, so unload and HMR remove them with ui-theme. `scrollbar.css` is the sole consumer of the `--dsw-alias-scrollbar-*` tokens and must follow `design-platform.css`, which declares them. -`corner-shape.css` smooths every rounded corner: inside `@supports (corner-shape: superellipse(1.5))` it defines `--dsw-corner-shape` and applies it to all elements and their `::before`/`::after` through the universal selector, so engines without `corner-shape` keep circular corners. Full-round shapes — `border-radius: 50%` circles and pill radii — pair `corner-shape: round` with their radius in the owning component sheet because a superellipse deforms them; the corner-shape stylesheet spec enforces that pairing across every package stylesheet ([corner-smoothing note](../../../.agents/notes/implemented/feature/2026-09-01-web-superellipse-corner-smoothing.md)). +`corner-shape.css` smooths every rounded corner: inside `@supports (corner-shape: superellipse(1.5))` it defines `--dsw-corner-shape` and applies it to all elements and their `::before`/`::after` through the universal selector, so engines without `corner-shape` keep circular corners. Full-round shapes — `border-radius: 50%` circles and pill radii — pair `corner-shape: round` with their radius in the owning component sheet because a superellipse deforms them; the corner-shape stylesheet spec enforces that pairing across every package stylesheet. -`gradient-shadow-text.css` derives `--dsh-content-font-delta` from `--dsh-content-font-size` and shifts the Markdown heading and base-text ladder by that increment. It also derives the secondary tier `--dsh-content-font-size-secondary` (setting −1 at ≤14, setting −2 above; 13px at the default) with its own `--dsh-content-font-delta-secondary` for the table variants and the flow rows one step under the body. Dense small and code variants stay fixed. Outside the ladder, the user bubble and composer draft read the body pair directly, and flow-row titles and summaries read the secondary pair. The sheet also owns the shadow scale (`--dsw-shadow-lv*`) and the elevation tokens: `--dsw-elevation-stroke` draws a 0.5px hairline through the rebindable `--dsw-elevation-stroke-color`, and `--dsw-elevation-panel`/`--dsw-elevation-prominent`/`--dsw-elevation-soft` (the composer's larger-blur, lower-alpha tier) layer two faint soft shadows over that stroke, so elevated surfaces set `border: 0` and carry no layout-consuming outline; the derived tokens are re-declared per element so a surface's stroke-color rebind takes effect ([elevation note](../../../.agents/notes/implemented/feature/2026-09-01-web-elevation-stroke-shadows.md)). +`gradient-shadow-text.css` derives `--dsh-content-font-delta` from `--dsh-content-font-size` and shifts the Markdown heading and base-text ladder by that increment. It also derives the secondary tier `--dsh-content-font-size-secondary` (setting −1 at ≤14, setting −2 above; 13px at the default) with its own `--dsh-content-font-delta-secondary` for the table variants and the flow rows one step under the body. Dense small and code variants stay fixed. Outside the ladder, the user bubble and composer draft read the body pair directly, and flow-row titles and summaries read the secondary pair. The sheet also owns the shadow scale (`--dsw-shadow-lv*`) and the elevation tokens: `--dsw-elevation-stroke` draws a 0.5px hairline through the rebindable `--dsw-elevation-stroke-color`, and `--dsw-elevation-panel`/`--dsw-elevation-prominent`/`--dsw-elevation-soft` (the composer's larger-blur, lower-alpha tier) layer two faint soft shadows over that stroke, so elevated surfaces set `border: 0` and carry no layout-consuming outline; the derived tokens are re-declared per element so a surface's stroke-color rebind takes effect. ### Scrollbar rebinding -`scrollbar.css` binds `--dsh-scrollbar-thumb` and `--dsh-scrollbar-thumb-hover` on `body` to the l1 base-surface tokens; an elevated surface (menu, popover, dialog) rebinds them to the l2 tokens on its own container, and the pair's other legal target is `transparent` (ui-sidebar rebinds its column that way while the pointer is elsewhere). `--dsh-scrollbar-width` mirrors the WebKit bar's layout width for surfaces that align beside a space-consuming bar. The two rendering paths are mutually exclusive by construction: Firefox takes the standard properties inside `@supports not selector(::-webkit-scrollbar)`, and WebKit-based engines take the pseudo-elements, so the hover token only ever renders through the pseudo-element path ([scrollbar note](../../../.agents/notes/implemented/bug-fix/2026-07-28-themed-scrollbars-and-reserved-gutter.md)). +`scrollbar.css` binds `--dsh-scrollbar-thumb` and `--dsh-scrollbar-thumb-hover` on `body` to the l1 base-surface tokens; an elevated surface (menu, popover, dialog) rebinds them to the l2 tokens on its own container, and the pair's other legal target is `transparent` (ui-sidebar rebinds its column that way while the pointer is elsewhere). `--dsh-scrollbar-width` mirrors the WebKit bar's layout width for surfaces that align beside a space-consuming bar. The two rendering paths are mutually exclusive by construction: Firefox takes the standard properties inside `@supports not selector(::-webkit-scrollbar)`, and WebKit-based engines take the pseudo-elements, so the hover token only ever renders through the pseudo-element path. ### Preference persistence diff --git a/packages/client/ui-theme/README.zh.md b/packages/client/ui-theme/README.zh.md index e970141963..6c82a1be39 100644 --- a/packages/client/ui-theme/README.zh.md +++ b/packages/client/ui-theme/README.zh.md @@ -53,13 +53,13 @@ kind: "package-reference" `src/styles/` 下有六张样式表,由 ui-theme 的动态客户端 entry 依次导入:`base.css`、`corner-shape.css`、`design-platform.css`、`scrollbar.css`、`gradient-shadow-text.css` 与 `shiki.css`。客户端 bundle 将其编译并注入为插件持有的全局样式,因此卸载与 HMR 会随 ui-theme 一同移除。`scrollbar.css` 是 `--dsw-alias-scrollbar-*` token 的唯一消费方,必须排在声明这些 token 的 `design-platform.css` 之后。 -`corner-shape.css` 平滑所有圆角:在 `@supports (corner-shape: superellipse(1.5))` 内定义 `--dsw-corner-shape`,并通过通配选择器应用到所有元素及其 `::before`/`::after`,因此不支持 `corner-shape` 的引擎保持普通圆弧。正圆形状——`border-radius: 50%` 的圆与胶囊半径——因超级椭圆会使其变形,须在所属组件样式表中把 `corner-shape: round` 与半径声明配对;corner-shape 样式表 spec 跨全部包样式表强制这一配对([圆角平滑笔记](../../../.agents/notes/implemented/feature/2026-09-01-web-superellipse-corner-smoothing.zh.md))。 +`corner-shape.css` 平滑所有圆角:在 `@supports (corner-shape: superellipse(1.5))` 内定义 `--dsw-corner-shape`,并通过通配选择器应用到所有元素及其 `::before`/`::after`,因此不支持 `corner-shape` 的引擎保持普通圆弧。正圆形状——`border-radius: 50%` 的圆与胶囊半径——因超级椭圆会使其变形,须在所属组件样式表中把 `corner-shape: round` 与半径声明配对;corner-shape 样式表 spec 跨全部包样式表强制这一配对。 -`gradient-shadow-text.css` 从 `--dsh-content-font-size` 派生 `--dsh-content-font-delta`,并以该增量移动 Markdown 标题与基础文本阶梯。它同时派生低一档变量 `--dsh-content-font-size-secondary`(设置 ≤14 时为设置值 −1,>14 时为设置值 −2;默认设置下为 13px)及配套的 `--dsh-content-font-delta-secondary`,供表格变体与比正文低一档的流内行使用。紧凑的小号文本与代码变体保持固定字号。阶梯之外,用户气泡与 composer 草稿直接读取正文档变量对,流内行的标题及摘要读取低一档变量对。该表还持有阴影阶(`--dsw-shadow-lv*`)与 elevation token:`--dsw-elevation-stroke` 经可重绑的 `--dsw-elevation-stroke-color` 画 0.5px 发丝描边,`--dsw-elevation-panel`/`--dsw-elevation-prominent`/`--dsw-elevation-soft`(输入框专用的更大模糊、更低透明度档)在描边之上叠两层极淡柔光,因此高层级表面设 `border: 0`,不再有占布局的轮廓;派生 token 逐元素重声明,使表面对描边色的重绑真实生效([elevation 笔记](../../../.agents/notes/implemented/feature/2026-09-01-web-elevation-stroke-shadows.zh.md))。 +`gradient-shadow-text.css` 从 `--dsh-content-font-size` 派生 `--dsh-content-font-delta`,并以该增量移动 Markdown 标题与基础文本阶梯。它同时派生低一档变量 `--dsh-content-font-size-secondary`(设置 ≤14 时为设置值 −1,>14 时为设置值 −2;默认设置下为 13px)及配套的 `--dsh-content-font-delta-secondary`,供表格变体与比正文低一档的流内行使用。紧凑的小号文本与代码变体保持固定字号。阶梯之外,用户气泡与 composer 草稿直接读取正文档变量对,流内行的标题及摘要读取低一档变量对。该表还持有阴影阶(`--dsw-shadow-lv*`)与 elevation token:`--dsw-elevation-stroke` 经可重绑的 `--dsw-elevation-stroke-color` 画 0.5px 发丝描边,`--dsw-elevation-panel`/`--dsw-elevation-prominent`/`--dsw-elevation-soft`(输入框专用的更大模糊、更低透明度档)在描边之上叠两层极淡柔光,因此高层级表面设 `border: 0`,不再有占布局的轮廓;派生 token 逐元素重声明,使表面对描边色的重绑真实生效。 ### 滚动条重新绑定 -`scrollbar.css` 在 `body` 上把 `--dsh-scrollbar-thumb` 与 `--dsh-scrollbar-thumb-hover` 绑定到 l1 基础表面 token;高层级表面(菜单、浮层、对话框)在自己的容器上把它们重新绑定为 l2 token;这组变量的另一个合法目标是 `transparent`(ui-sidebar 在指针不在栏内时就这样重新绑定自己的列)。`--dsh-scrollbar-width` 镜像 WebKit 滚动条的布局宽度,供需要与占布局宽度的滚动条对齐的表面使用。两条渲染路径在构造上互斥:Firefox 走 `@supports not selector(::-webkit-scrollbar)` 内的标准属性,WebKit 系引擎走伪元素,因此 hover token 只经由伪元素这条路径渲染([滚动条笔记](../../../.agents/notes/implemented/bug-fix/2026-07-28-themed-scrollbars-and-reserved-gutter.zh.md))。 +`scrollbar.css` 在 `body` 上把 `--dsh-scrollbar-thumb` 与 `--dsh-scrollbar-thumb-hover` 绑定到 l1 基础表面 token;高层级表面(菜单、浮层、对话框)在自己的容器上把它们重新绑定为 l2 token;这组变量的另一个合法目标是 `transparent`(ui-sidebar 在指针不在栏内时就这样重新绑定自己的列)。`--dsh-scrollbar-width` 镜像 WebKit 滚动条的布局宽度,供需要与占布局宽度的滚动条对齐的表面使用。两条渲染路径在构造上互斥:Firefox 走 `@supports not selector(::-webkit-scrollbar)` 内的标准属性,WebKit 系引擎走伪元素,因此 hover token 只经由伪元素这条路径渲染。 ### 偏好持久化 diff --git a/packages/client/ui-tool/README.i18n.yaml b/packages/client/ui-tool/README.i18n.yaml index 4b0b8c7bbc..bff9339024 100644 --- a/packages/client/ui-tool/README.i18n.yaml +++ b/packages/client/ui-tool/README.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write packages/client/ui-tool/README.md -README.md: 2fe410425935aed46ab95844c81568037ac929e9 -README.zh.md: 83440881fe16582a75fd8dd762577dc7b4d5335b +README.md: 6db5018801ef3f60ca25d97d51edac1538bff133 +README.zh.md: c7df60acaeeefb1afbb12f1ed481260de62905d2 diff --git a/packages/client/ui-tool/README.md b/packages/client/ui-tool/README.md index 2fe4104259..6db5018801 100644 --- a/packages/client/ui-tool/README.md +++ b/packages/client/ui-tool/README.md @@ -62,7 +62,7 @@ The package realizes one dispatch rule: atomic Tool views are keyed by wire Tool ### Details and cards -The package fills `conversation.details.tool` with `ToolDetails`. Row and Details renderers share one pure card model for each terminal, read, diff, search, and web card; the image card is row-only because its gallery renders through the tool-owned `tool.call.images` slot the details panel does not declare. These models validate raw call arguments, result content, failure state, persisted metadata, Code Dispatch `parentCallId`, and Session path facts. Unsupported or malformed inputs use flattened Tool result text. Card-specific limits and fallback rules remain in the owning [terminal](../../../.agents/notes/implemented/feature/2026-07-28-web-terminal-card.md), [diff](../../../.agents/notes/implemented/feature/2026-07-30-web-diff-card.md), [read](../../../.agents/notes/implemented/feature/2026-07-30-web-read-card-frontend.md), [image](../../../.agents/notes/implemented/feature/2026-08-20-tool-card-image-results.md), [search](../../../.agents/notes/implemented/feature/2026-07-30-web-search-card.md), [web](../../../.agents/notes/implemented/feature/2026-07-30-web-result-card-frontend.md), and [question](../../../.agents/notes/implemented/feature/2026-07-29-ask-question-web-presentation.md) notes. +The package fills `conversation.details.tool` with `ToolDetails`. Row and Details renderers share one pure card model for each terminal, read, diff, search, and web card; the image card is row-only because its gallery renders through the tool-owned `tool.call.images` slot the details panel does not declare. These models validate raw call arguments, result content, failure state, persisted metadata, Code Dispatch `parentCallId`, and Session path facts. Unsupported or malformed inputs use flattened Tool result text. Card-specific limits and fallback rules for the terminal, diff, read, search, and web cards remain in [the ui-primitives README](../ui-primitives/README.md); the image card's model in this package carries its own fallback rules.
----- diff --git a/packages/client/ui-tool/README.zh.md b/packages/client/ui-tool/README.zh.md index 83440881fe..c7df60acae 100644 --- a/packages/client/ui-tool/README.zh.md +++ b/packages/client/ui-tool/README.zh.md @@ -62,7 +62,7 @@ owner 载荷为 `ToolCallOwnerProps`:`callId`、`toolName`、冻结的 `block` ### 详情与卡片 -本包通过 `ToolDetails` 填充 `conversation.details.tool`。行 renderer 与 Details renderer 分别为 terminal、read、diff、search 和 web 卡片复用同一个纯 card model;image 卡片仅属于行,因为其图库经由工具自有 `tool.call.images` 槽位渲染,而 details 面板不声明该槽位。这些 model 校验原始调用参数、结果内容、失败状态、持久 metadata、Code Dispatch `parentCallId` 与 Session 路径事实。不受支持或格式错误的输入使用压平的工具结果文本。各类卡片的上限与 fallback 规则仍由对应的 [terminal](../../../.agents/notes/implemented/feature/2026-07-28-web-terminal-card.zh.md)、[diff](../../../.agents/notes/implemented/feature/2026-07-30-web-diff-card.zh.md)、[read](../../../.agents/notes/implemented/feature/2026-07-30-web-read-card-frontend.zh.md)、[image](../../../.agents/notes/implemented/feature/2026-08-20-tool-card-image-results.zh.md)、[search](../../../.agents/notes/implemented/feature/2026-07-30-web-search-card.zh.md)、[web](../../../.agents/notes/implemented/feature/2026-07-30-web-result-card-frontend.zh.md) 与 [question](../../../.agents/notes/implemented/feature/2026-07-29-ask-question-web-presentation.zh.md) 笔记负责。 +本包通过 `ToolDetails` 填充 `conversation.details.tool`。行 renderer 与 Details renderer 分别为 terminal、read、diff、search 和 web 卡片复用同一个纯 card model;image 卡片仅属于行,因为其图库经由工具自有 `tool.call.images` 槽位渲染,而 details 面板不声明该槽位。这些 model 校验原始调用参数、结果内容、失败状态、持久 metadata、Code Dispatch `parentCallId` 与 Session 路径事实。不受支持或格式错误的输入使用压平的工具结果文本。terminal、diff、read、search 与 web 卡片的上限与 fallback 规则仍由 [ui-primitives README](../ui-primitives/README.zh.md) 负责;image 卡片的 fallback 规则由本包内的 card model 自行承载。
----- diff --git a/packages/code-runtime/code-runtime/src/index.ts b/packages/code-runtime/code-runtime/src/index.ts index 4a497e9dfb..7314131279 100644 --- a/packages/code-runtime/code-runtime/src/index.ts +++ b/packages/code-runtime/code-runtime/src/index.ts @@ -21,8 +21,7 @@ export type { * Binding globals EVERY backend refuses because SOME backend owns the slot in * the program's namespace: `console` (the worker's log capture), and * `__dsh_main__`/`__builtins__`/`__name__` (the Python backend's bootstrap - * wrapper and seeded module globals; see the [portable-identifier Agent - * Note](../../../../.agents/notes/implemented/architecture/2026-07-31-code-runtime-portable-identifier-seam.md)), + * wrapper and seeded module globals), * and `__debug__`. One shared set — rather than each backend refusing only its * own slots — keeps the portability promise real: a namespace list valid on * one backend is valid on all, so a caller cannot pick a name that works on diff --git a/packages/context/README.i18n.yaml b/packages/context/README.i18n.yaml index 586b1f103e..d87d5ecb67 100644 --- a/packages/context/README.i18n.yaml +++ b/packages/context/README.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write packages/context/README.md -README.md: 12ca57d2bbcaca78c1e2d699c6ea3eae73155d67 -README.zh.md: 32b350c37eacebc67dc4b045a527dea92201f8e7 +README.md: c877c1b0ea5e365628d3d2d9317e816f74d8e6f4 +README.zh.md: 685d89aa2836072a3e3932bd504fb935a3a0f17f diff --git a/packages/context/README.md b/packages/context/README.md index 12ca57d2bb..c877c1b0ea 100644 --- a/packages/context/README.md +++ b/packages/context/README.md @@ -37,7 +37,7 @@ The context group provides plugins that add model-visible context to each reques ## Related documentation - [Session-reference subsystem](../../docs/subsystems/session-reference.md) — canonical mention URIs, snapshot semantics, and the stable error taxonomy. -- [Workspace-context decision record](../../.agents/notes/implemented/feature/2026-06-24-workspace-context.md) — why instruction context is per-agent/per-session and durably logged. +- [Workspace-context decision record](../../.agents/notes/archived/feature/2026-06-24-workspace-context.md) — why instruction context is per-agent/per-session and durably logged. - [Generated configuration catalog](../../docs/config-catalog.md) — every config field the group's packages accept. ----- diff --git a/packages/context/README.zh.md b/packages/context/README.zh.md index 32b350c37e..685d89aa28 100644 --- a/packages/context/README.zh.md +++ b/packages/context/README.zh.md @@ -37,7 +37,7 @@ context 组提供不定义任何工具、为每次请求添加模型可见上下 ## 相关文档 - [会话引用子系统](../../docs/subsystems/session-reference.zh.md)——规范 mention URI、快照语义与稳定的错误分类。 -- [工作区上下文决策记录](../../.agents/notes/implemented/feature/2026-06-24-workspace-context.zh.md)——指令上下文为何按 agent/会话隔离并持久记录。 +- [工作区上下文决策记录](../../.agents/notes/archived/feature/2026-06-24-workspace-context.md)——指令上下文为何按 agent/会话隔离并持久记录。 - [生成的配置目录](../../docs/config-catalog.zh.md)——本组各包接受的全部配置字段。 ----- diff --git a/packages/context/agent-instructions/README.i18n.yaml b/packages/context/agent-instructions/README.i18n.yaml index 67c0f0eb66..481606e8b5 100644 --- a/packages/context/agent-instructions/README.i18n.yaml +++ b/packages/context/agent-instructions/README.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write packages/context/agent-instructions/README.md -README.md: 953a83e440b62ac4505a49be30061bcf4b82ec5d -README.zh.md: 4869b41be0d35a8d95ec7d80560ca9fbb9bbf952 +README.md: d69a989a455512177798446e4a3e07b95b5f44d1 +README.zh.md: 96a456bd576cacb06382de4b8e34db4b5976327f diff --git a/packages/context/agent-instructions/README.md b/packages/context/agent-instructions/README.md index 953a83e440..d69a989a45 100644 --- a/packages/context/agent-instructions/README.md +++ b/packages/context/agent-instructions/README.md @@ -113,7 +113,7 @@ Every injected message carries a typed source with its change list; a complete b Read these pages when the package-level contract is not enough. They move from the instruction-file format to the design decision and the exhaustive configuration. - [Documentation standard](../../../docs/AGENTS.md) — what `AGENTS.md` instruction files contain and how they are maintained. -- [Workspace-context decision record](../../../.agents/notes/implemented/feature/2026-06-24-workspace-context.md) — per-agent/session isolation and lifecycle rationale. +- [Workspace-context decision record](../../../.agents/notes/archived/feature/2026-06-24-workspace-context.md) — per-agent/session isolation and lifecycle rationale. - [Context group map](../README.md) — sibling request-context packages. - [Generated configuration catalog](../../../docs/config-catalog.md#deepseek-aidsh-agent-instructions) — every accepted config field and its source declaration. diff --git a/packages/context/agent-instructions/README.zh.md b/packages/context/agent-instructions/README.zh.md index 4869b41be0..96a456bd57 100644 --- a/packages/context/agent-instructions/README.zh.md +++ b/packages/context/agent-instructions/README.zh.md @@ -113,7 +113,7 @@ export interface Config { 包级约定不够用时阅读以下页面。它们从指令文件格式逐步进入设计决策与穷尽式配置。 - [文档标准](../../../docs/AGENTS.md)——`AGENTS.md` 指令文件包含什么、如何维护。 -- [工作区上下文决策记录](../../../.agents/notes/implemented/feature/2026-06-24-workspace-context.zh.md)——按 agent/会话隔离与生命周期理由。 +- [工作区上下文决策记录](../../../.agents/notes/archived/feature/2026-06-24-workspace-context.md)——按 agent/会话隔离与生命周期理由。 - [context 组地图](../README.zh.md)——相邻的请求上下文包。 - [生成的配置目录](../../../docs/config-catalog.zh.md#deepseek-aidsh-agent-instructions)——每个受支持配置字段及其源声明。 diff --git a/packages/context/session-reference/README.i18n.yaml b/packages/context/session-reference/README.i18n.yaml index 4b5a7b8128..1f3c6510d0 100644 --- a/packages/context/session-reference/README.i18n.yaml +++ b/packages/context/session-reference/README.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write packages/context/session-reference/README.md -README.md: b2ade457d29ce5cdaef3b104c1bb70bb27db3c3e -README.zh.md: ed54176d12186f7327acc30c2a107671dcbf4a14 +README.md: 2bf3a71563fce056d3c75bada3f9e89ca1adc12f +README.zh.md: 51baff7820f426f9bfb6750e381306b4dff7a235 diff --git a/packages/context/session-reference/README.md b/packages/context/session-reference/README.md index b2ade457d2..2bf3a71563 100644 --- a/packages/context/session-reference/README.md +++ b/packages/context/session-reference/README.md @@ -89,7 +89,7 @@ The outer `agent/pre-step` listener accepts the step, parses canonical mentions Read these pages when the package-level contract is not enough. They move from the shared reference surface to the design decision and the read service behind it. - [Session-reference subsystem](../../../docs/subsystems/session-reference.md) — canonical URIs, projection rules, and the stable error taxonomy. -- [Cross-session references decision record](../../../.agents/notes/implemented/feature/2026-07-21-cross-session-references.md) — design rationale for the reference contract. +- [Cross-session references decision record](../../../.agents/notes/archived/feature/2026-07-21-cross-session-references.md) — design rationale for the reference contract. - [Session-query subsystem](../../../docs/subsystems/session-query.md) — the read service that supplies session surfaces. - [Context group map](../README.md) — sibling request-context packages. - [Generated configuration catalog](../../../docs/config-catalog.md#deepseek-aidsh-session-reference) — every accepted config field and its source declaration. diff --git a/packages/context/session-reference/README.zh.md b/packages/context/session-reference/README.zh.md index ed54176d12..51baff7820 100644 --- a/packages/context/session-reference/README.zh.md +++ b/packages/context/session-reference/README.zh.md @@ -89,7 +89,7 @@ kind: "package-reference" 包级约定不够用时阅读以下页面。它们从共享引用表面进入设计决策与其背后的读取服务。 - [会话引用子系统](../../../docs/subsystems/session-reference.zh.md)——规范 URI、投影规则与稳定的错误分类。 -- [跨会话引用决策记录](../../../.agents/notes/implemented/feature/2026-07-21-cross-session-references.zh.md)——引用约定的设计理由。 +- [跨会话引用决策记录](../../../.agents/notes/archived/feature/2026-07-21-cross-session-references.md)——引用约定的设计理由。 - [会话查询子系统](../../../docs/subsystems/session-query.zh.md)——提供会话表层的读取服务。 - [context 组地图](../README.zh.md)——相邻的请求上下文包。 - [生成的配置目录](../../../docs/config-catalog.zh.md#deepseek-aidsh-session-reference)——每个受支持配置字段及其源声明。 diff --git a/packages/context/time-context/README.i18n.yaml b/packages/context/time-context/README.i18n.yaml index 989243e36a..66acf30ded 100644 --- a/packages/context/time-context/README.i18n.yaml +++ b/packages/context/time-context/README.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write packages/context/time-context/README.md -README.md: 52690900b0ac65743345c226128217e2c9ec156b -README.zh.md: 64299a57a37ec32647e7a2ab0062e02b71516a6e +README.md: 22d46b4f81066511b89113c8da5a61c901db5e2d +README.zh.md: 443b055783c35bb82d0e4d3095a345a46cc1b034 diff --git a/packages/context/time-context/README.md b/packages/context/time-context/README.md index 52690900b0..22d46b4f81 100644 --- a/packages/context/time-context/README.md +++ b/packages/context/time-context/README.md @@ -88,7 +88,6 @@ When an injection is due, the plugin samples the wall clock, derives the browser Read these pages when the package-level contract is not enough. They move from the design decision to the composition that mounts the plugin and the exhaustive configuration. -- [Durable per-step time-context decision record](../../../.agents/notes/implemented/feature/2026-07-16-durable-per-step-time-context.md) — design rationale for the durable reading. - [Schedule user guide](../../../docs/user/guide/schedule.md) — the official configuration path for mounting this plugin. - [Context group map](../README.md) — sibling request-context packages. - [Generated configuration catalog](../../../docs/config-catalog.md#deepseek-aidsh-time-context) — every accepted config field and its source declaration. diff --git a/packages/context/time-context/README.zh.md b/packages/context/time-context/README.zh.md index 64299a57a3..443b055783 100644 --- a/packages/context/time-context/README.zh.md +++ b/packages/context/time-context/README.zh.md @@ -88,7 +88,6 @@ kind: "package-reference" 包级约定不够用时阅读以下页面。它们从设计决策进入挂载本插件的组合与穷尽式配置。 -- [持久按步骤 time-context 决策记录](../../../.agents/notes/implemented/feature/2026-07-16-durable-per-step-time-context.zh.md)——持久读数的设计理由。 - [Schedule 用户指南](../../../docs/user/guide/schedule.zh.md)——挂载本插件的官方配置路径。 - [context 组地图](../README.zh.md)——相邻的请求上下文包。 - [生成的配置目录](../../../docs/config-catalog.zh.md#deepseek-aidsh-time-context)——每个受支持配置字段及其源声明。 diff --git a/packages/context/tmux-context/README.i18n.yaml b/packages/context/tmux-context/README.i18n.yaml index fc77202018..955c985ed5 100644 --- a/packages/context/tmux-context/README.i18n.yaml +++ b/packages/context/tmux-context/README.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write packages/context/tmux-context/README.md -README.md: df94e309839a8ecdae902def8531856071269d20 -README.zh.md: da69791cb96cd4ef13b5fa31ddaf4e6470e08d60 +README.md: 18509f5ab7666dd58f048e618f2874db921f044a +README.zh.md: 1eb7feb5eebde6a7c1fd7cdde391de2b9c556d11 diff --git a/packages/context/tmux-context/README.md b/packages/context/tmux-context/README.md index df94e30983..18509f5ab7 100644 --- a/packages/context/tmux-context/README.md +++ b/packages/context/tmux-context/README.md @@ -85,7 +85,7 @@ At the first step of a turn, the listener checks whether an injection is due, qu Read these pages when the package-level contract is not enough. They move from the design decision to the executor the query runs through and the exhaustive configuration. -- [Tmux location context decision record](../../../.agents/notes/implemented/feature/2026-07-27-tmux-location-context.md) — design rationale for the tty-based detection and reading shape. +- [Tmux location context decision record](../../../.agents/notes/archived/feature/2026-07-27-tmux-location-context.md) — design rationale for the tty-based detection and reading shape. - [Shell subsystem](../../../docs/subsystems/shell.md) — the executor service the read-only query runs through. - [Context group map](../README.md) — sibling request-context packages. - [Generated configuration catalog](../../../docs/config-catalog.md#deepseek-aidsh-tmux-context) — every accepted config field and its source declaration. diff --git a/packages/context/tmux-context/README.zh.md b/packages/context/tmux-context/README.zh.md index da69791cb9..1eb7feb5ee 100644 --- a/packages/context/tmux-context/README.zh.md +++ b/packages/context/tmux-context/README.zh.md @@ -85,7 +85,7 @@ kind: "package-reference" 包级约定不够用时阅读以下页面。它们从设计决策进入查询所经由的执行器与穷尽式配置。 -- [tmux 位置上下文决策记录](../../../.agents/notes/implemented/feature/2026-07-27-tmux-location-context.zh.md)——基于 tty 的检测与读数形状的设计理由。 +- [tmux 位置上下文决策记录](../../../.agents/notes/archived/feature/2026-07-27-tmux-location-context.md)——基于 tty 的检测与读数形状的设计理由。 - [shell 子系统](../../../docs/subsystems/shell.zh.md)——只读查询所经由的执行器服务。 - [context 组地图](../README.zh.md)——相邻的请求上下文包。 - [生成的配置目录](../../../docs/config-catalog.zh.md#deepseek-aidsh-tmux-context)——每个受支持配置字段及其源声明。 diff --git a/packages/core/scope/README.i18n.yaml b/packages/core/scope/README.i18n.yaml index 2d63e51040..09f9b549fa 100644 --- a/packages/core/scope/README.i18n.yaml +++ b/packages/core/scope/README.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write packages/core/scope/README.md -README.md: 20027403a88ddd5cd1f85ec5b907a8c88a260da7 -README.zh.md: f98eb5faaa618a5f3b2f0c9859da2320d6f6b2e0 +README.md: 5780ef1e5ca5d3193f81293f5ec2c2cc917d8e62 +README.zh.md: b5f7dcf75a8d934fe0145d046baa3f908051b14d diff --git a/packages/core/scope/README.md b/packages/core/scope/README.md index 20027403a8..5780ef1e5c 100644 --- a/packages/core/scope/README.md +++ b/packages/core/scope/README.md @@ -87,7 +87,6 @@ The package-level contract is enough for most consumers; read these when you nee - [Scoped registration subsystem](../../../docs/subsystems/scope.md) — the identity, carrier, and layer types. - [Agent-scope contexts Agent Note](../../../.agents/notes/implemented/architecture/2026-07-08-agent-scope-contexts.md) — the security non-goals and context design. -- [Scoped-layers store Agent Note](../../../.agents/notes/implemented/architecture/2026-07-12-scoped-layers-store.md) — the registry-layer decision. - [Agent-scope runtime design Agent Note](../../../.agents/notes/implemented/architecture/2026-07-12-agent-scope-runtime-design.md) — how the loop builds per-agent scopes. - [Core group map](../README.md) — how the core packages compose. diff --git a/packages/core/scope/README.zh.md b/packages/core/scope/README.zh.md index f98eb5faaa..b5f7dcf75a 100644 --- a/packages/core/scope/README.zh.md +++ b/packages/core/scope/README.zh.md @@ -87,7 +87,6 @@ await scope.dispose() // unwinds every registration made through scope.ctx - [作用域注册子系统](../../../docs/subsystems/scope.zh.md)——身份、载体与层类型。 - [agent 作用域上下文 Agent Note](../../../.agents/notes/implemented/architecture/2026-07-08-agent-scope-contexts.zh.md)——安全非目标与上下文设计。 -- [作用域层存储 Agent Note](../../../.agents/notes/implemented/architecture/2026-07-12-scoped-layers-store.zh.md)——注册表层决策。 - [agent 作用域 runtime 设计 Agent Note](../../../.agents/notes/implemented/architecture/2026-07-12-agent-scope-runtime-design.zh.md)——循环如何构建按 agent 的作用域。 - [core 分组地图](../README.zh.md)——core 各包如何组合。 diff --git a/packages/core/session/README.i18n.yaml b/packages/core/session/README.i18n.yaml index 9589a80301..3d5d742b46 100644 --- a/packages/core/session/README.i18n.yaml +++ b/packages/core/session/README.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write packages/core/session/README.md -README.md: bac5273875c1f98aebfeef2752a964a3617dbdeb -README.zh.md: 6dfb3b4bd5db2882174fcc0d49d5b732d4b9e3ff +README.md: e810299678c93fd0b5c740dcd2485df746eee0e0 +README.zh.md: 9d8250053a6b11fd9ac71839bd6517cb58c3d90a diff --git a/packages/core/session/README.md b/packages/core/session/README.md index bac5273875..e810299678 100644 --- a/packages/core/session/README.md +++ b/packages/core/session/README.md @@ -176,7 +176,7 @@ Logging causes no invalidation, and exact reconstruction preserves request-prefi These limits define when the session store needs special care. They are current package constraints, not a task backlog. -- **`fork()` cuts only at stable boundaries of live sessions** — the selected prefix must end outside an open turn and the source must be in the store; forking a persisted-but-unloaded session is excluded from the [fork API](../../../.agents/notes/implemented/feature/2026-06-30-session-store-fork-api.md). +- **`fork()` cuts only at stable boundaries of live sessions** — the selected prefix must end outside an open turn and the source must be in the store; forking a persisted-but-unloaded session is excluded from the fork API. - **`SESSION_FORMAT_VERSION` names only the current logical representation** — historical headers and events remain in adjacent format packages, while persistence publishes a complete supported chain before constructing `Session`; equal-version unknown events still require the envelope's explicit `ignorable` marker ([mechanism](../../../.agents/notes/implemented/architecture/2026-08-31-released-session-format-migrations.md)). - **`TurnEndReasonMap` omits the ACP-named `refusal` / `max_turn_requests` variants** — producer-gated: they land when an adapter or the loop first emits them. - **No session tree beyond fork** — a pi-style entry tree over branched sessions is deferred unless a consumer needs more than boundary-based forking. diff --git a/packages/core/session/README.zh.md b/packages/core/session/README.zh.md index 6dfb3b4bd5..9d8250053a 100644 --- a/packages/core/session/README.zh.md +++ b/packages/core/session/README.zh.md @@ -176,7 +176,7 @@ session.deriveMessages() // the derived model history 这些限制说明会话存储何时需要特别留意。它们是当前包约束,不是任务积压。 -- **`fork()` 仅在实时会话的稳定边界处切分**:所选前缀结束时不得有开放轮次,且源会话必须位于存储中;[fork API](../../../.agents/notes/implemented/feature/2026-06-30-session-store-fork-api.zh.md) 不支持对已持久化但未加载的会话进行 fork。 +- **`fork()` 仅在实时会话的稳定边界处切分**:所选前缀结束时不得有开放轮次,且源会话必须位于存储中;fork API 不支持对已持久化但未加载的会话进行 fork。 - **`SESSION_FORMAT_VERSION` 只命名当前逻辑表示**——历史 header 与事件位于相邻格式包中,持久化会在构造 `Session` 前发布完整受支持链;同版本未知事件仍要求信封显式带有 `ignorable` 标记([机制](../../../.agents/notes/implemented/architecture/2026-08-31-released-session-format-migrations.zh.md))。 - **`TurnEndReasonMap` 不含 ACP(Agent Client Protocol)命名的 `refusal`/`max_turn_requests` 变体**:受生产方约束;只有当适配器或循环首次产生这些变体时才加入。 - **fork 之外没有会话树**:基于分支会话的 pi 风格条目树被推迟,除非消费方需要超越基于边界的 forking 的能力。 diff --git a/packages/core/system-prompt/README.i18n.yaml b/packages/core/system-prompt/README.i18n.yaml index eedcf5a9c6..0bf4f26d4c 100644 --- a/packages/core/system-prompt/README.i18n.yaml +++ b/packages/core/system-prompt/README.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write packages/core/system-prompt/README.md -README.md: 74fcc91442f3779a1361c2f337a61908c6ff316c -README.zh.md: 40bd97a942cec876d714e2b00457d0baa48bb99c +README.md: 313a71e74f2fc889bd6d765fbb58a367a3afc36a +README.zh.md: 41e3445135fadb0143c3ef3538a8c59a83e6d32b diff --git a/packages/core/system-prompt/README.md b/packages/core/system-prompt/README.md index 74fcc91442..313a71e74f 100644 --- a/packages/core/system-prompt/README.md +++ b/packages/core/system-prompt/README.md @@ -118,8 +118,7 @@ The package-level contract is enough for most consumers; read these when you nee - [System-prompt subsystem](../../../docs/subsystems/system-prompt.md) — the exact cross-package types and generated service API. - [tools package](../tools/README.md) — the tool registry whose schemas flow into assembly. - [Prompt variables Agent Note](../../../.agents/notes/implemented/architecture/2026-07-05-prompt-variables-and-tool-guidance-ownership.md) — who owns which prompt facts. -- [First-party prompt order Agent Note](../../../.agents/notes/implemented/architecture/2026-08-25-sparse-first-party-prompt-section-orders.md) — the sparse named order allocation. -- [Explicit tool order Agent Note](../../../.agents/notes/implemented/feature/2026-07-06-explicit-tool-order.md) — why the central order list exists. +- [First-party prompt order Agent Note](../../../.agents/notes/archived/architecture/2026-08-25-sparse-first-party-prompt-section-orders.md) — the sparse named order allocation. - [Core group map](../README.md) — how the core packages compose. ----- diff --git a/packages/core/system-prompt/README.zh.md b/packages/core/system-prompt/README.zh.md index 40bd97a942..41e3445135 100644 --- a/packages/core/system-prompt/README.zh.md +++ b/packages/core/system-prompt/README.zh.md @@ -118,8 +118,7 @@ ctx.systemPrompt.variable('cwd', ({ agent }) => agent?.session.header.cwd) - [系统提示词子系统](../../../docs/subsystems/system-prompt.zh.md)——确切的跨包类型与生成的服务 API。 - [tools 包](../tools/README.zh.md)——其 schema 流入组装的工具注册表。 - [提示词变量 Agent Note](../../../.agents/notes/implemented/architecture/2026-07-05-prompt-variables-and-tool-guidance-ownership.zh.md)——哪些提示词事实归谁所有。 -- [第一方提示词顺序 Agent Note](../../../.agents/notes/implemented/architecture/2026-08-25-sparse-first-party-prompt-section-orders.zh.md)——稀疏具名顺序分配。 -- [显式工具顺序 Agent Note](../../../.agents/notes/implemented/feature/2026-07-06-explicit-tool-order.zh.md)——为何存在中心顺序列表。 +- [第一方提示词顺序 Agent Note](../../../.agents/notes/archived/architecture/2026-08-25-sparse-first-party-prompt-section-orders.md)——稀疏具名顺序分配。 - [core 分组地图](../README.zh.md)——core 各包如何组合。 ----- diff --git a/packages/core/tools/src/index.ts b/packages/core/tools/src/index.ts index 6c1711df30..c946425607 100644 --- a/packages/core/tools/src/index.ts +++ b/packages/core/tools/src/index.ts @@ -1005,7 +1005,7 @@ export class ToolRuntime extends Service { * language between them would hand a program written against one SDK to the * other. Binding it is deferred until a second backend ships (the first * point it is testable); rationale in the - * [language-dispatch note](../../../../.agents/notes/implemented/feature/2026-07-31-ptc-language-dispatch.md). + * [language-dispatch note](../../../../.agents/notes/archived/feature/2026-07-31-ptc-language-dispatch.md). */ private requireCodeRuntime(mode: ToolPresentationMode): CodeRuntime { const runtime = this.ctx.get('codeRuntime') diff --git a/packages/experimental/agent-team-web-profile/README.i18n.yaml b/packages/experimental/agent-team-web-profile/README.i18n.yaml index 06c4db39d8..dcf3476976 100644 --- a/packages/experimental/agent-team-web-profile/README.i18n.yaml +++ b/packages/experimental/agent-team-web-profile/README.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write packages/experimental/agent-team-web-profile/README.md -README.md: 07dd8f3131ebe6418861e584fabba9908a3fbc4d -README.zh.md: 9c63866caad40d4b50e24aacd25998c5db2508b6 +README.md: 41a6cc3ae09dc1dd0ac7d30b6a888b3337044ae5 +README.zh.md: 5620833eaf68c3ab891ff16df40fa38deb55ff48 diff --git a/packages/experimental/agent-team-web-profile/README.md b/packages/experimental/agent-team-web-profile/README.md index 07dd8f3131..41a6cc3ae0 100644 --- a/packages/experimental/agent-team-web-profile/README.md +++ b/packages/experimental/agent-team-web-profile/README.md @@ -84,7 +84,7 @@ This Web bundle adds no model request content; the Host-side Team tools own prom - **Ordered composition** — `dsh-base`, `dsh-web-app`, `dsh-experimental-agent-team-profile`, and this package must remain in that order. -- **Preset-scoped legacy controls** — stable Web presets still mount continuable Subagent controls inside the preset scope. Top-level Host profile overrides do not replace those scoped registrations, so the Team roster and legacy child controls can both appear until Web has a Team-aware preset. The [Web Agent Teams decision](../../../.agents/notes/implemented/feature/2026-08-06-agent-teams-web.md) records this deferred composition work. +- **Preset-scoped legacy controls** — stable Web presets still mount continuable Subagent controls inside the preset scope. Top-level Host profile overrides do not replace those scoped registrations, so the Team roster and legacy child controls can both appear until Web has a Team-aware preset. The [Web Agent Teams decision](../../../.agents/notes/archived/feature/2026-08-06-agent-teams-web.md) records this deferred composition work. - **Source-checkout only** — official CLI, Web, npm, and Python release payloads exclude this private package. diff --git a/packages/experimental/agent-team-web-profile/README.zh.md b/packages/experimental/agent-team-web-profile/README.zh.md index 9c63866caa..5620833eaf 100644 --- a/packages/experimental/agent-team-web-profile/README.zh.md +++ b/packages/experimental/agent-team-web-profile/README.zh.md @@ -84,7 +84,7 @@ pnpm dsh plugin --profile web add ./packages/experimental/agent-team-web-profile - **有序组合**——`dsh-base`、`dsh-web-app`、`dsh-experimental-agent-team-profile` 与本包必须保持这个顺序。 -- **Preset-scoped 旧控制项**——稳定 Web preset 仍会在 preset scope 内挂载 continuable Subagent 控制项。顶层 Host profile override 不会替换这些 scoped registration,因此在 Web 获得 Team-aware preset 前,Team roster 与旧 child 控制项可能同时出现。[Web Agent Teams 决策](../../../.agents/notes/implemented/feature/2026-08-06-agent-teams-web.zh.md)记录了这项暂缓的 composition 工作。 +- **Preset-scoped 旧控制项**——稳定 Web preset 仍会在 preset scope 内挂载 continuable Subagent 控制项。顶层 Host profile override 不会替换这些 scoped registration,因此在 Web 获得 Team-aware preset 前,Team roster 与旧 child 控制项可能同时出现。[Web Agent Teams 决策](../../../.agents/notes/archived/feature/2026-08-06-agent-teams-web.md)记录了这项暂缓的 composition 工作。 - **仅限源码 checkout**——正式 CLI、Web、npm 与 Python 发布产物都不包含这个私有包。 diff --git a/packages/experimental/code-runtime-python/README.i18n.yaml b/packages/experimental/code-runtime-python/README.i18n.yaml index 1d1cdc7f71..2412ee0f72 100644 --- a/packages/experimental/code-runtime-python/README.i18n.yaml +++ b/packages/experimental/code-runtime-python/README.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write packages/experimental/code-runtime-python/README.md -README.md: 920d384d4b54dbad93f297bb5abb7adb563dfa17 -README.zh.md: 9adfa6e015eafe706b335cc5ea3a6f373dabf5c0 +README.md: 62e79efa47b9c05cb24a21e07f4e3bf394606f31 +README.zh.md: ce39ad3feb7a803ebe41286c73319b3bc45565bc diff --git a/packages/experimental/code-runtime-python/README.md b/packages/experimental/code-runtime-python/README.md index 920d384d4b..62e79efa47 100644 --- a/packages/experimental/code-runtime-python/README.md +++ b/packages/experimental/code-runtime-python/README.md @@ -88,7 +88,7 @@ Read these when the runtime contract is not enough. They move from the seam defi - [Code runtime seam](../../code-runtime/code-runtime/README.md) — the abstract contract this backend implements. - [fd-3 protocol Agent Note](../../../.agents/notes/implemented/architecture/2026-07-31-code-runtime-python-fd3-protocol.md) — design rationale and wire contract. -- [Settlement-fixes Agent Note](../../../.agents/notes/implemented/bug-fix/2026-07-31-code-runtime-python-settlement-fixes.md) — settlement, metering, and containment fixes and their regression cases. +- [Settlement-fixes Agent Note](../../../.agents/notes/archived/bug-fix/2026-07-31-code-runtime-python-settlement-fixes.md) — settlement, metering, and containment fixes and their regression cases. - [Worker-thread backend](../../code-runtime/code-runtime-worker-thread/README.md) — the released TypeScript sibling. - [Code runtime subsystem reference](../../../docs/subsystems/code-runtime.md) — request/result vocabulary, bindings, and failure taxonomy. diff --git a/packages/experimental/code-runtime-python/README.zh.md b/packages/experimental/code-runtime-python/README.zh.md index 9adfa6e015..ce39ad3feb 100644 --- a/packages/experimental/code-runtime-python/README.zh.md +++ b/packages/experimental/code-runtime-python/README.zh.md @@ -88,7 +88,7 @@ kind: "package-reference" - [Code runtime seam](../../code-runtime/code-runtime/README.zh.md) — 本后端实现的抽象契约。 - [fd-3 协议 Agent Note](../../../.agents/notes/implemented/architecture/2026-07-31-code-runtime-python-fd3-protocol.zh.md) — 设计理由与 wire 契约。 -- [结算修复 Agent Note](../../../.agents/notes/implemented/bug-fix/2026-07-31-code-runtime-python-settlement-fixes.zh.md) — 结算、计量与隔离修复及其回归用例。 +- [结算修复 Agent Note](../../../.agents/notes/archived/bug-fix/2026-07-31-code-runtime-python-settlement-fixes.md) — 结算、计量与隔离修复及其回归用例。 - [Worker 线程后端](../../code-runtime/code-runtime-worker-thread/README.zh.md) — 已发布的 TypeScript 兄弟。 - [Code runtime 子系统参考](../../../docs/subsystems/code-runtime.zh.md) — 请求/结果词汇、binding 与失败分类。 diff --git a/packages/experimental/webworker-packer/README.i18n.yaml b/packages/experimental/webworker-packer/README.i18n.yaml index 873df39ef1..389916f81b 100644 --- a/packages/experimental/webworker-packer/README.i18n.yaml +++ b/packages/experimental/webworker-packer/README.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write packages/experimental/webworker-packer/README.md -README.md: f5d01f3988cd188ad8fd58a3e892159d7b5dcb15 -README.zh.md: 5a3c9ccaf9c4b2d388b5d9f728889ff78bfd5bfd +README.md: 701f4a41db78fff6c6af532d1e4f8aa43d585577 +README.zh.md: 30682e314c36dbc08bcd895fb7a2277a38f7ea52 diff --git a/packages/experimental/webworker-packer/README.md b/packages/experimental/webworker-packer/README.md index f5d01f3988..701f4a41db 100644 --- a/packages/experimental/webworker-packer/README.md +++ b/packages/experimental/webworker-packer/README.md @@ -9,7 +9,7 @@ English | [中文](README.zh.md) ## Summary -The VFS image packer: turns one composed profile into the gzip-compressed base tar the browser worker mounts as its filesystem, and opaque data trees into ordered overlay tars ([experimental stance](../../../.agents/notes/implemented/architecture/2026-08-20-webworker-pack-lowering-and-preview.md)). Nothing is compiled from source — the base image carries the repository's real build products, so a preview deployment debugs exactly what the served deployment ships. Read this page when packaging a preview image or diagnosing its contents. +The VFS image packer: turns one composed profile into the gzip-compressed base tar the browser worker mounts as its filesystem, and opaque data trees into ordered overlay tars ([experimental group](../README.md)). Nothing is compiled from source — the base image carries the repository's real build products, so a preview deployment debugs exactly what the served deployment ships. Read this page when packaging a preview image or diagnosing its contents. ## Table of Contents diff --git a/packages/experimental/webworker-packer/README.zh.md b/packages/experimental/webworker-packer/README.zh.md index 5a3c9ccaf9..30682e314c 100644 --- a/packages/experimental/webworker-packer/README.zh.md +++ b/packages/experimental/webworker-packer/README.zh.md @@ -9,7 +9,7 @@ kind: "package-library" ## 概述 -VFS 镜像打包器:把一份合成 profile 变成浏览器 worker 挂载为文件系统的 gzip 压缩基础 tar,并把不透明数据目录变成按序应用的 overlay tar([experimental 定位](../../../.agents/notes/implemented/architecture/2026-08-20-webworker-pack-lowering-and-preview.zh.md))。不做任何源码编译——基础镜像携带仓库真实构建产物,预览部署调试的正是 served 部署交付的字节。打包预览镜像或排查镜像内容时,请阅读本页。 +VFS 镜像打包器:把一份合成 profile 变成浏览器 worker 挂载为文件系统的 gzip 压缩基础 tar,并把不透明数据目录变成按序应用的 overlay tar([实验组](../README.zh.md))。不做任何源码编译——基础镜像携带仓库真实构建产物,预览部署调试的正是 served 部署交付的字节。打包预览镜像或排查镜像内容时,请阅读本页。 ## 目录 diff --git a/packages/experimental/webworker-runtime/README.i18n.yaml b/packages/experimental/webworker-runtime/README.i18n.yaml index 10a2ecc5d2..ea6d9386d8 100644 --- a/packages/experimental/webworker-runtime/README.i18n.yaml +++ b/packages/experimental/webworker-runtime/README.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write packages/experimental/webworker-runtime/README.md -README.md: b5c9370bbff33e4385e08c299fc9c1a7669f8e5e -README.zh.md: 04eee0bfb133bf020fc8989ddb98e54c1dfadf34 +README.md: 3f9f3d1d75324d23ef74fd570a645a260c0e34a3 +README.zh.md: b566a0ebf0f7ccdb9bf09f4063376a529fbb0290 diff --git a/packages/experimental/webworker-runtime/README.md b/packages/experimental/webworker-runtime/README.md index b5c9370bbf..3f9f3d1d75 100644 --- a/packages/experimental/webworker-runtime/README.md +++ b/packages/experimental/webworker-runtime/README.md @@ -9,7 +9,7 @@ English | [中文](README.zh.md) ## Summary -The browser worker host: the whole harness plugin tree runs inside one dedicated Web Worker, for preview deployments and packaging regressions ([experimental stance](../../../.agents/notes/implemented/architecture/2026-08-20-webworker-pack-lowering-and-preview.md)). The worker inflates a packed VFS image off its download and mounts it in memory, loads its modules through a CommonJS wrapper loader, and serves the page over a postMessage tunnel that speaks plain HTTP. Use it when a preview must run the packaged harness without a Node host. +The browser worker host: the whole harness plugin tree runs inside one dedicated Web Worker, for preview deployments and packaging regressions ([experimental group](../README.md)). The worker inflates a packed VFS image off its download and mounts it in memory, loads its modules through a CommonJS wrapper loader, and serves the page over a postMessage tunnel that speaks plain HTTP. Use it when a preview must run the packaged harness without a Node host. ## Table of Contents @@ -26,7 +26,7 @@ The browser worker host: the whole harness plugin tree runs inside one dedicated Three artifacts from one tsdown pipeline: - **`lib/index.js` (assembly library)** — `createWorkerHost`/`startWorkerHost` mount the base image and any ordered data overlays (`storage/`), install the module loader (`module-system/`) and the `process` shim, boot the tree through the image's own `dsh-app-boot`, and hand the tunnel its serving seams. Overlays may replace files only under `home/` and `workspace/`; they cannot replace the base manifest, configuration, or modules. The image layout contract (`image-layout.ts`: virtual root, config/manifest paths, empty directories, the `lowered` wrapper-contract gate) is shared with the packer. Boot patches force the deployment-shaped rows: frontend serving off, JSONL session logs on the plaintext path, preset roots onto the image's `config/agent-presets`. -- **`lib/worker.js` (worker bundle)** — the assembly plus this package's Node-compatibility layer as one self-contained ES module. The module proxy table (`module-proxies.ts`) is the only platform fork: `node:*` builtins over VFS/tunnel/browser primitives, structural stubs that fail loud on the console for what a browser cannot do, and native/binary package replacements. `node:module` supplies `createRequire().resolve` and `.resolve.paths()` over the image package root, so unchanged packages can discover manifests without evaluating their modules. The global `process` shim carries Node detection fields including `title`, preventing Worker execution from entering DOM-only branches. The pack-time parser reports statically named module requests, including module-scope direct calls of the form `createRequire(import.meta.url)('pkg')` through a named `node:module` or `module` import, to the packer's reachability walk. Stored, CommonJS-obtained, and rebased `createRequire` calls require image entry seeds. VFS mutations drive `node:fs` callback, polling, and promise watchers; open descriptors retain file identity and access mode across rename, replacement, and unlink; `readable-stream` supplies the stream state machine used by file streams and unchanged image packages such as Chokidar and readdirp. AsyncLocalStorage carries sync-stack causality across `await` through the snapshot/restore faces the pack-time lowering injects. The worker holds no compiler: an image the packer did not lower is refused at mount ([note](../../../.agents/notes/implemented/architecture/2026-08-20-webworker-pack-lowering-and-preview.md)). +- **`lib/worker.js` (worker bundle)** — the assembly plus this package's Node-compatibility layer as one self-contained ES module. The module proxy table (`module-proxies.ts`) is the only platform fork: `node:*` builtins over VFS/tunnel/browser primitives, structural stubs that fail loud on the console for what a browser cannot do, and native/binary package replacements. `node:module` supplies `createRequire().resolve` and `.resolve.paths()` over the image package root, so unchanged packages can discover manifests without evaluating their modules. The global `process` shim carries Node detection fields including `title`, preventing Worker execution from entering DOM-only branches. The pack-time parser reports statically named module requests, including module-scope direct calls of the form `createRequire(import.meta.url)('pkg')` through a named `node:module` or `module` import, to the packer's reachability walk. Stored, CommonJS-obtained, and rebased `createRequire` calls require image entry seeds. VFS mutations drive `node:fs` callback, polling, and promise watchers; open descriptors retain file identity and access mode across rename, replacement, and unlink; `readable-stream` supplies the stream state machine used by file streams and unchanged image packages such as Chokidar and readdirp. AsyncLocalStorage carries sync-stack causality across `await` through the snapshot/restore faces the pack-time lowering injects. The worker holds no compiler: an image the packer did not lower is refused at mount. - **`src/shell/` (the worker's own process layer)** — a browser worker cannot fork, so `node:child_process` is not a stub but an implementation: `spawn` starts the command in its own Web Worker — this same bundle, told by its first frame to be a shell process — and reports it through the `ChildProcess` surface the subprocess service consumes. The command runs off the host's thread, `SIGKILL` terminates it whatever it is doing, and it reaches the VFS only by message (the host serves those frames). Worker platform executables preserve native-package protocols such as Landlock without replacing their JavaScript packages or coupling their implementations to `node:child_process`; ordinary commands use the package's evaluator and coreutils command table. The grammar is `@yarnpkg/parsers`' `parseShell`, while `execSync`/`fork` still refuse because they need a real process. - **`lib/client.js` (page half)** — startup has two independent stages. `chooseWorkerHostSource({ image?, fixtureManifest? })` optionally owns the boot barrier and fixture manifest: without `preview-fixture` it waits at the source chooser, while a valid query selects directly; either path returns ordered overlays. `connectWorkerHost(worker, { image?, overlays? })` remains the public base-runtime connector; callers that skip the chooser get an empty overlay list. `apps/web` invokes both and supplies its statically bundled Worker. The opening `init` frame carries the base and ordered overlay URLs, the boot payload delivers the structured index-injection table, and `applyIndexInjections` executes it before the shell entry runs. Script preload rows are advisory and skipped because `/plugins` resources resolve only through the tunnel; `loadBundle` fetches each combo on first demand, embeds its tunnel-only source map as a Base64 data URL, and executes the script as a Blob. The tunnel also exposes fetch-shaped transport, the independent file-upload carrier, and the API client. Request frames preserve Blob bodies through structured clone and transfer `ReadableStream` ownership. The Host Worker streams both forms into the route, so neither browser thread creates a complete byte array for a generic-file upload. diff --git a/packages/experimental/webworker-runtime/README.zh.md b/packages/experimental/webworker-runtime/README.zh.md index 04eee0bfb1..b566a0ebf0 100644 --- a/packages/experimental/webworker-runtime/README.zh.md +++ b/packages/experimental/webworker-runtime/README.zh.md @@ -9,7 +9,7 @@ kind: "package-library" ## 概述 -浏览器 worker 宿主:整棵 harness 插件树跑在一个 dedicated Web Worker 里,用于预览部署与打包回归([experimental 定位](../../../.agents/notes/implemented/architecture/2026-08-20-webworker-pack-lowering-and-preview.zh.md))。worker 边下载边解压打包好的 VFS 镜像并挂载进内存,经 CommonJS 包装加载器装载模块,并通过一条讲纯 HTTP 的 postMessage 隧道服务页面。当预览需要在没有 Node 宿主的环境中运行已打包 harness 时,请使用它。 +浏览器 worker 宿主:整棵 harness 插件树跑在一个 dedicated Web Worker 里,用于预览部署与打包回归([实验组](../README.zh.md))。worker 边下载边解压打包好的 VFS 镜像并挂载进内存,经 CommonJS 包装加载器装载模块,并通过一条讲纯 HTTP 的 postMessage 隧道服务页面。当预览需要在没有 Node 宿主的环境中运行已打包 harness 时,请使用它。 ## 目录 @@ -26,7 +26,7 @@ kind: "package-library" 一条 tsdown 管线出三个产物: - **`lib/index.js`(装配库)**——`createWorkerHost`/`startWorkerHost` 挂载基础镜像和按序排列的数据 overlays(`storage/`)、安装模块加载器(`module-system/`)与 `process` shim、经镜像自带的 `dsh-app-boot` 启动插件树,并把服务缝隙交给隧道。Overlay 只能替换 `home/` 与 `workspace/` 下的文件,不能替换基础 manifest、配置或模块。镜像布局契约(`image-layout.ts`:虚拟根、config/manifest 路径、空目录、`lowered` 包装契约门)与 packer 共享。boot patch 强制部署形态行:关前端静态服务、JSONL 会话日志走明文、preset 根指向镜像内 `config/agent-presets`。 -- **`lib/worker.js`(worker 束)**——装配库加本包的 Node 兼容层,合成一个自含 ES module。模块代理表(`module-proxies.ts`)是唯一平台叉口:`node:*` 内建走 VFS、隧道和浏览器原语,浏览器做不到的走结构化 stub(调用即在 console 报错并抛出),native/binary 包则替换执行后端。`node:module` 在镜像 package 根之上提供 `createRequire().resolve` 与 `.resolve.paths()`,使未修改的包无需执行目标模块即可发现 manifest。全局 `process` shim 带有包括 `title` 在内的 Node 环境识别字段,避免 Worker 执行误入仅适用于 DOM 的分支。pack 期解析器会把名称静态可知的模块请求报告给 packer 的可达性遍历,其中包括通过 `node:module` 或 `module` 具名导入在模块作用域直接发起的 `createRequire(import.meta.url)('pkg')` 调用。保存、经 CommonJS 获取或另设基准的 `createRequire` 调用需要镜像入口种子。VFS mutation 驱动 `node:fs` 的 callback、polling 和 promise watcher;打开的 descriptor 在 rename、replacement 和 unlink 后仍保留文件身份与访问模式;`readable-stream` 提供文件流以及 Chokidar、readdirp 等未修改镜像包所用的流状态机。AsyncLocalStorage 经 pack 时降低注入的 snapshot/restore 面在 `await` 间携带同步栈因果。worker 不带编译器:packer 未降低的镜像在挂载时被拒([note](../../../.agents/notes/implemented/architecture/2026-08-20-webworker-pack-lowering-and-preview.zh.md))。 +- **`lib/worker.js`(worker 束)**——装配库加本包的 Node 兼容层,合成一个自含 ES module。模块代理表(`module-proxies.ts`)是唯一平台叉口:`node:*` 内建走 VFS、隧道和浏览器原语,浏览器做不到的走结构化 stub(调用即在 console 报错并抛出),native/binary 包则替换执行后端。`node:module` 在镜像 package 根之上提供 `createRequire().resolve` 与 `.resolve.paths()`,使未修改的包无需执行目标模块即可发现 manifest。全局 `process` shim 带有包括 `title` 在内的 Node 环境识别字段,避免 Worker 执行误入仅适用于 DOM 的分支。pack 期解析器会把名称静态可知的模块请求报告给 packer 的可达性遍历,其中包括通过 `node:module` 或 `module` 具名导入在模块作用域直接发起的 `createRequire(import.meta.url)('pkg')` 调用。保存、经 CommonJS 获取或另设基准的 `createRequire` 调用需要镜像入口种子。VFS mutation 驱动 `node:fs` 的 callback、polling 和 promise watcher;打开的 descriptor 在 rename、replacement 和 unlink 后仍保留文件身份与访问模式;`readable-stream` 提供文件流以及 Chokidar、readdirp 等未修改镜像包所用的流状态机。AsyncLocalStorage 经 pack 时降低注入的 snapshot/restore 面在 `await` 间携带同步栈因果。worker 不带编译器:packer 未降低的镜像在挂载时被拒。 - **`src/shell/`(worker 自己的进程层)**——浏览器 worker 无法 fork,所以 `node:child_process` 不是 stub 而是实现:`spawn` 把命令放进它自己的 Web Worker——就是这同一个束,由首帧告诉它「你是 shell 进程」——并以 subprocess 服务消费的 `ChildProcess` 面报告结果。命令不占宿主线程,`SIGKILL` 不管它在干什么都能终止它,而它只能靠消息触达 VFS(由宿主应答这些帧)。Worker 平台 executable 在不替换 JavaScript 包、也不把具体实现耦合进 `node:child_process` 的情况下保持 Landlock 等 native 包协议;普通命令使用本包的求值器与 coreutils 命令表。语法来自 `@yarnpkg/parsers` 的 `parseShell`,而 `execSync`/`fork` 依然拒绝,因为它们需要真进程。 - **`lib/client.js`(页面半)**——启动分为相互独立的两段。`chooseWorkerHostSource({ image?, fixtureManifest? })` 可选地拥有 boot barrier 与 fixture manifest:没有 `preview-fixture` 时停在来源选择面板,合法 query 则直接选择;两条路径都返回按序排列的 overlays。`connectWorkerHost(worker, { image?, overlays? })` 仍是公开的基础运行态连接器;调用方跳过选择器时 overlay 列表为空。`apps/web` 调用这两段并提供静态打包的 Worker。开局 `init` 帧携带基础镜像与按序排列的 overlay URL,boot 载荷送达结构化 index 注入表,`applyIndexInjections` 在壳入口运行前逐行执行。脚本 preload 行只是提示,因此会被跳过:`/plugins` 资源只能经 tunnel 解析,`loadBundle` 会在首次需要时获取 combo、把仅 tunnel 可达的 sourcemap 内嵌为 Base64 data URL,再以 Blob 执行脚本。Tunnel 还暴露 fetch 形式的传输、独立文件上传载体和 API 客户端。请求帧通过结构化克隆保留 Blob 请求体,并转移 `ReadableStream` 的所有权。Host Worker 将两种请求体都逐块送入路由,因此通用文件上传不会在任何浏览器线程创建完整字节数组。 diff --git a/packages/extensions/cordis-client-runner/README.i18n.yaml b/packages/extensions/cordis-client-runner/README.i18n.yaml index a1dd1d2fee..d1cbdd5fdf 100644 --- a/packages/extensions/cordis-client-runner/README.i18n.yaml +++ b/packages/extensions/cordis-client-runner/README.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write packages/extensions/cordis-client-runner/README.md -README.md: 3b5762786e0f5b00fc80533ca4fa97a3d4cd0a4b -README.zh.md: d68dc218f75e65c9a1787a5e43f018c9cdfa3383 +README.md: 260d4703bda2560a4254962d7b868221d0328ec8 +README.zh.md: a74128508c5b6a81d0600452b6ec5301bf7c8dcb diff --git a/packages/extensions/cordis-client-runner/README.md b/packages/extensions/cordis-client-runner/README.md index 3b5762786e..260d4703bd 100644 --- a/packages/extensions/cordis-client-runner/README.md +++ b/packages/extensions/cordis-client-runner/README.md @@ -83,7 +83,6 @@ Read these pages when the package-level contract is not enough. They move from t - [Tool package](../tool-cordis/README.md) — the model-facing tools whose run requests reach this page. - [UI package](../ui-cordis/README.md) — the panel and cards that operate this face. - [Extensions subsystem](../../../docs/subsystems/extensions.md) — the generated `ctx.dynamicCordisRunner` API and `cordis/*` events. -- [Dynamic client render and attachment ownership Agent Note](../../../.agents/notes/implemented/architecture/2026-08-17-dynamic-client-render-and-attachment-ownership.md) — how browser plugins own their rendering and CSS. - [Client shells and dynamic packages Agent Note](../../../.agents/notes/implemented/architecture/2026-08-15-client-shells-and-dynamic-packages.md) — package placement and build faces for the client halves. ----- diff --git a/packages/extensions/cordis-client-runner/README.zh.md b/packages/extensions/cordis-client-runner/README.zh.md index d68dc218f7..a74128508c 100644 --- a/packages/extensions/cordis-client-runner/README.zh.md +++ b/packages/extensions/cordis-client-runner/README.zh.md @@ -83,7 +83,6 @@ kind: "package-reference" - [工具包](../tool-cordis/README.zh.md)——运行请求到达本页的模型侧工具。 - [UI 包](../ui-cordis/README.zh.md)——操作这个面的面板与卡片。 - [extensions 子系统](../../../docs/subsystems/extensions.zh.md)——生成的 `ctx.dynamicCordisRunner` API 与 `cordis/*` 事件。 -- [动态客户端渲染与附件归属 Agent Note](../../../.agents/notes/implemented/architecture/2026-08-17-dynamic-client-render-and-attachment-ownership.zh.md)——浏览器插件如何拥有自己的渲染与 CSS。 - [客户端外壳与动态包 Agent Note](../../../.agents/notes/implemented/architecture/2026-08-15-client-shells-and-dynamic-packages.zh.md)——浏览器半的包归属与构建面。 ----- diff --git a/packages/extensions/ui-cordis/README.i18n.yaml b/packages/extensions/ui-cordis/README.i18n.yaml index b874be6b21..bae1f360f1 100644 --- a/packages/extensions/ui-cordis/README.i18n.yaml +++ b/packages/extensions/ui-cordis/README.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write packages/extensions/ui-cordis/README.md -README.md: ceb93b56299ca202da1f8d96ea3b14e1efa2263a -README.zh.md: e56b4d8adff969644370f2599fc63a0308bef90e +README.md: 538d32aff7725ffc86086fde0a57e8417e615d81 +README.zh.md: 14431e982d2d3a9410057b2df2cb1aa800244515 diff --git a/packages/extensions/ui-cordis/README.md b/packages/extensions/ui-cordis/README.md index ceb93b5629..538d32aff7 100644 --- a/packages/extensions/ui-cordis/README.md +++ b/packages/extensions/ui-cordis/README.md @@ -89,7 +89,7 @@ Read these pages when the package-level contract is not enough. They move from t - [Host runner](../cordis-host-runner/README.md) — the inventory and lifecycle verbs behind the panel. - [Tool package](../tool-cordis/README.md) — the model-facing tools whose calls these cards render. - [Extensions subsystem](../../../docs/subsystems/extensions.md) — the generated `ctx.dynamicCordisRunner` API and forwarded `cordis/*` events. -- [Dynamic client render and attachment ownership Agent Note](../../../.agents/notes/implemented/architecture/2026-08-17-dynamic-client-render-and-attachment-ownership.md) — how slot-registered browser UI is owned by its package. +- [Slots subsystem](../../../docs/subsystems/slots.md) — how slot-registered browser UI is owned by its package. ----- diff --git a/packages/extensions/ui-cordis/README.zh.md b/packages/extensions/ui-cordis/README.zh.md index e56b4d8adf..14431e982d 100644 --- a/packages/extensions/ui-cordis/README.zh.md +++ b/packages/extensions/ui-cordis/README.zh.md @@ -89,7 +89,7 @@ kind: "package-reference" - [Host runner](../cordis-host-runner/README.zh.md)——面板背后的清单与生命周期动词。 - [工具包](../tool-cordis/README.zh.md)——调用被这些卡片渲染的模型侧工具。 - [extensions 子系统](../../../docs/subsystems/extensions.zh.md)——生成的 `ctx.dynamicCordisRunner` API 与转发的 `cordis/*` 事件。 -- [动态客户端渲染与附件归属 Agent Note](../../../.agents/notes/implemented/architecture/2026-08-17-dynamic-client-render-and-attachment-ownership.zh.md)——槽位注册的浏览器 UI 如何归其包所有。 +- [slots 子系统](../../../docs/subsystems/slots.zh.md)——槽位注册的浏览器 UI 如何归其包所有。 ----- diff --git a/packages/feedback/message-feedback/README.i18n.yaml b/packages/feedback/message-feedback/README.i18n.yaml index 5bcf038fd8..7d0d4ca3cf 100644 --- a/packages/feedback/message-feedback/README.i18n.yaml +++ b/packages/feedback/message-feedback/README.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write packages/feedback/message-feedback/README.md -README.md: f323ee44e3196a519ab05b8195950b18d939d9ce -README.zh.md: 48944a5834e65d48bc5b3f1162981ae500e31917 +README.md: b8d085a1d8cb8cdb46cfc51c7cadda5ee6d925c9 +README.zh.md: 027bd6286642ec1ecc9fe38882743185d132ac38 diff --git a/packages/feedback/message-feedback/README.md b/packages/feedback/message-feedback/README.md index f323ee44e3..b8d085a1d8 100644 --- a/packages/feedback/message-feedback/README.md +++ b/packages/feedback/message-feedback/README.md @@ -109,7 +109,6 @@ The service fails closed: disposal drains in-flight writes before closing the do Read these pages when the package-level contract is not enough. They move from the subsystem types and design boundary to the persistence primitives and the browser consumer that drives this service. - [Feedback subsystem](../../../docs/subsystems/feedback.md) — the public types, Remote contract, and Web consumer details. -- [Message-feedback sidecar decision](../../../.agents/notes/implemented/architecture/2026-08-10-message-feedback-sidecar.md) — the design boundary that keeps this sidecar out of Session-log content. - [Session persistence subsystem](../../../docs/subsystems/persistence.md) — the handle `read`, `stat`, and `flush` semantics behind the durability barrier. - [dsh-client-ui-message-feedback](../../client/ui-message-feedback/README.md) — the browser consumer that drives the Host Remote contract. - [Feedback package map](../README.md) — where per-message feedback sits next to the log-only capture command. diff --git a/packages/feedback/message-feedback/README.zh.md b/packages/feedback/message-feedback/README.zh.md index 48944a5834..027bd62866 100644 --- a/packages/feedback/message-feedback/README.zh.md +++ b/packages/feedback/message-feedback/README.zh.md @@ -109,7 +109,6 @@ kind: "package-reference" 当包级约定不够用时阅读以下页面。它们从子系统类型与设计边界,逐步进入持久化原语与驱动此服务的浏览器消费方。 - [反馈子系统](../../../docs/subsystems/feedback.zh.md)——公开类型、Remote 契约与 Web 消费方细节。 -- [消息反馈伴随记录决策](../../../.agents/notes/implemented/architecture/2026-08-10-message-feedback-sidecar.zh.md)——让此伴随记录不进入会话日志内容的设计边界。 - [会话持久化子系统](../../../docs/subsystems/persistence.zh.md)——持久性屏障背后的 handle `read`、`stat` 与 `flush` 语义。 - [dsh-client-ui-message-feedback](../../client/ui-message-feedback/README.zh.md)——驱动 Host Remote 契约的浏览器消费方。 - [反馈包映射](../README.zh.md)——逐消息反馈与仅写入日志的采集命令并存的组。 diff --git a/packages/fs/fs-local/README.i18n.yaml b/packages/fs/fs-local/README.i18n.yaml index 7dcf82e301..265af90b94 100644 --- a/packages/fs/fs-local/README.i18n.yaml +++ b/packages/fs/fs-local/README.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write packages/fs/fs-local/README.md -README.md: 3ac8dcab56479add82b3d8d8a774c22022d5687b -README.zh.md: b65055d1bd7af5ce629cb376e8f83205b96dccde +README.md: 07fb96d457abd3807e892d37d473e92093078664 +README.zh.md: 4980de0c7fe771f75e38d896644d62c29c352c04 diff --git a/packages/fs/fs-local/README.md b/packages/fs/fs-local/README.md index 3ac8dcab56..07fb96d457 100644 --- a/packages/fs/fs-local/README.md +++ b/packages/fs/fs-local/README.md @@ -106,7 +106,7 @@ Read these pages when the package-level contract is not enough. They move from t - [fs-sandbox](../fs-sandbox/README.md) — the sandbox-enforcing backend that extends this one. - [tool-fs](../tool-fs/README.md) — the model-facing tools that consume `ctx.fs`. - [fs-observation-policy](../fs-observation-policy/README.md) — the policy plugin that guards mutations through the `fs/*` events. -- [Windows DACL preservation note](../../../.agents/notes/implemented/bug-fix/2026-07-19-windows-atomic-write-dacl-preservation.md) — why atomic replacement copies the target's access policy. +- [Windows DACL preservation note](../../../.agents/notes/archived/bug-fix/2026-07-19-windows-atomic-write-dacl-preservation.md) — why atomic replacement copies the target's access policy. ----- @@ -126,7 +126,7 @@ No direct invalidation; the named consumer owns any request-prefix changes. These limits define when the local backend is a poor fit or needs special operational care. They are current package constraints, not a general filesystem comparison or a task backlog. -- **`config.cwd` is not a sandbox** — it is a resolution default, not containment: absolute paths and `..` escape it. Enforce containment with a stricter `ctx.fs` backend or a permission plugin on the `tools/execute` waterfall ([capability-seam note](../../../.agents/notes/implemented/architecture/2026-06-17-filesystem-capability-seam.md)). +- **`config.cwd` is not a sandbox** — it is a resolution default, not containment: absolute paths and `..` escape it. Enforce containment with a stricter `ctx.fs` backend or a permission plugin on the `tools/execute` waterfall. - **Version tokens depend on filesystem metadata** — they combine device, inode, size, nanosecond mtime, and nanosecond ctime; a storage layer that cannot update any of those facts for a rewrite can still defeat the stale guard. - **`editText` holds the whole file (plus the edited copy) in memory** — streaming exists only on the read path. - **A sub-limit overwrite still buffers a contextual basis** — `writeText` may retain up to just below `config.diffBasisMaxBytes` of prior text in addition to the caller-owned replacement; the bound does not cap the returned `after` value or the whole-file presentation fallback. diff --git a/packages/fs/fs-local/README.zh.md b/packages/fs/fs-local/README.zh.md index b65055d1bd..4980de0c7f 100644 --- a/packages/fs/fs-local/README.zh.md +++ b/packages/fs/fs-local/README.zh.md @@ -106,7 +106,7 @@ kind: "package-reference" - [fs-sandbox](../fs-sandbox/README.zh.md)——扩展本后端的沙箱强制后端。 - [tool-fs](../tool-fs/README.zh.md)——消费 `ctx.fs` 的面向模型工具。 - [fs-observation-policy](../fs-observation-policy/README.zh.md)——通过 `fs/*` 事件防护变更的策略插件。 -- [Windows DACL 保留笔记](../../../.agents/notes/implemented/bug-fix/2026-07-19-windows-atomic-write-dacl-preservation.zh.md)——原子替换为何复制目标的访问策略。 +- [Windows DACL 保留笔记](../../../.agents/notes/archived/bug-fix/2026-07-19-windows-atomic-write-dacl-preservation.md)——原子替换为何复制目标的访问策略。 ----- @@ -126,7 +126,7 @@ kind: "package-reference" 这些限制说明本地后端何时不合适,或何时需要特别的运维注意。它们是当前包约束,不是通用文件系统对比或任务积压。 -- **`config.cwd` 不是沙箱**:它是解析默认值,而非约束;绝对路径和 `..` 可以逃逸。请使用更严格的 `ctx.fs` 后端或 `tools/execute` waterfall(瀑布式事件)上的权限插件实施约束(见[能力 seam 笔记](../../../.agents/notes/implemented/architecture/2026-06-17-filesystem-capability-seam.zh.md))。 +- **`config.cwd` 不是沙箱**:它是解析默认值,而非约束;绝对路径和 `..` 可以逃逸。请使用更严格的 `ctx.fs` 后端或 `tools/execute` waterfall(瀑布式事件)上的权限插件实施约束。 - **版本 token 依赖文件系统元数据**:它们组合设备、inode、大小、纳秒级 mtime 与纳秒级 ctime;如果存储层在重写时无法更新其中任何一项事实,仍可能绕过陈旧防护。 - **`editText` 会把整个文件及编辑后的副本保存在内存中**:只有读取路径支持流式处理。 - **低于上限的覆写仍会缓冲上下文基础**:`writeText` 除调用方持有的替换内容外,最多还会保留略低于 `config.diffBasisMaxBytes` 的旧文本;该上限不限制返回的 `after` 值,也不限制整文件展示回退。 diff --git a/packages/fs/fs-observation-policy/src/index.ts b/packages/fs/fs-observation-policy/src/index.ts index f4f011d6e7..8e9b274d5d 100644 --- a/packages/fs/fs-observation-policy/src/index.ts +++ b/packages/fs/fs-observation-policy/src/index.ts @@ -35,7 +35,7 @@ class ObservedStateGate { */ private owner(actor: object | undefined): object | undefined { // tsgolint treats object as assignable to weak FsObservationActor, while tsc still requires the structural cast for property access. - // See the analyzer-divergence consequence in .agents/notes/implemented/process/2026-07-29-oxlint-linter.md. + // See the analyzer-divergence consequence in .agents/notes/archived/process/2026-07-29-oxlint-linter.md. // oxlint-disable-next-line typescript/no-unnecessary-type-assertion -- The analyzers disagree on this weak type. return (actor as FsObservationActor | undefined)?.agent?.session } diff --git a/packages/fs/fs/README.i18n.yaml b/packages/fs/fs/README.i18n.yaml index 5aab843c0a..52604a6ba0 100644 --- a/packages/fs/fs/README.i18n.yaml +++ b/packages/fs/fs/README.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write packages/fs/fs/README.md -README.md: d90e5de8d4cbc2232dfa68a20c1d7c1c1cbdbc75 -README.zh.md: a60f509581bfa435b9b4e00f600197e40877470e +README.md: cba98c41a77d6fc3508ef2d4ac81a231120f1836 +README.zh.md: 0a8b3f7198f93592603a37c749b58d8735e7d24f diff --git a/packages/fs/fs/README.md b/packages/fs/fs/README.md index d90e5de8d4..cba98c41a7 100644 --- a/packages/fs/fs/README.md +++ b/packages/fs/fs/README.md @@ -109,7 +109,7 @@ No direct invalidation; the named consumer owns any request-prefix changes. These limits define when the contract is a poor fit or needs special operational care. They are current package constraints, not a general filesystem comparison or a task backlog. -- **Text-only mutations by contract** — text reads and both mutations reject binary or non-UTF-8 content with `FS_NOT_TEXT`; `readBytes` is the single raw-byte primitive, and binary-safe mutations remain deferred ([tool-schemas Agent Note](../../../.agents/notes/implemented/feature/2026-06-17-filesystem-tool-schemas.md)). +- **Text-only mutations by contract** — text reads and both mutations reject binary or non-UTF-8 content with `FS_NOT_TEXT`; `readBytes` is the single raw-byte primitive, and binary-safe mutations remain deferred. - **Thirteen primitives only** — no delete, rename, copy, or watch; `listDir` lists a single level, with recursion, globbing, pagination, and search out of scope ([directory-listing note](../../../.agents/notes/archived/architecture/2026-07-03-filesystem-directory-listing-seam.md)). - **No I/O deadline** — the seam arms no timeout; cancellation is a best-effort optional `AbortSignal` per primitive ([fs family stance](../README.md)). - **Resolve-then-operate costs a remote backend two round-trips per tool call** — folding or caching resolution is left to such a backend. diff --git a/packages/fs/fs/README.zh.md b/packages/fs/fs/README.zh.md index a60f509581..0a8b3f7198 100644 --- a/packages/fs/fs/README.zh.md +++ b/packages/fs/fs/README.zh.md @@ -109,7 +109,7 @@ kind: "package-reference" 这些限制说明该约定何时不合适,或何时需要特别的运维注意。它们是当前包约束,不是通用文件系统对比或任务积压。 -- **变更操作约定只支持文本**:文本读取和两个变更操作都以 `FS_NOT_TEXT` 拒绝二进制/非 UTF-8 内容;`readBytes` 是唯一的原始字节原语,二进制安全的变更操作仍延期(见[工具 schema Agent Note](../../../.agents/notes/implemented/feature/2026-06-17-filesystem-tool-schemas.zh.md))。 +- **变更操作约定只支持文本**:文本读取和两个变更操作都以 `FS_NOT_TEXT` 拒绝二进制/非 UTF-8 内容;`readBytes` 是唯一的原始字节原语,二进制安全的变更操作仍延期。 - **只有十三个原语**:没有删除、重命名、复制或监视;`listDir` 只列出一层,递归、glob、分页与搜索不在范围内(见[目录列出笔记](../../../.agents/notes/archived/architecture/2026-07-03-filesystem-directory-listing-seam.md))。 - **没有 I/O deadline**:该 seam 不启动超时;取消只是每个原语上尽力而为的可选 `AbortSignal`(见[fs 能力族立场](../README.zh.md))。 - **先解析后操作使远程后端每次工具调用需要两次往返**:折叠或缓存解析由这种后端自行决定。 diff --git a/packages/goal/README.i18n.yaml b/packages/goal/README.i18n.yaml index 9cef28a530..35e9c92f3d 100644 --- a/packages/goal/README.i18n.yaml +++ b/packages/goal/README.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write packages/goal/README.md -README.md: 165d281bfb209464e2744409091cc6bb2793501c -README.zh.md: 80ba31b67143e513129ae225d628eb53b816f795 +README.md: eaeb0b9658dd8d81ee0779dd6ae6006fe5026802 +README.zh.md: 64baed95283a3b03618c35ef5ce6677212458626 diff --git a/packages/goal/README.md b/packages/goal/README.md index 165d281bfb..eaeb0b9658 100644 --- a/packages/goal/README.md +++ b/packages/goal/README.md @@ -38,7 +38,6 @@ The goal group gives an agent session one durable completion objective that surv - [Generated tool catalog](../../docs/tool-catalog.md#deepseek-aidsh-tool-goal) — the three goal-tool schemas the model receives. - [Generated configuration catalog](../../docs/config-catalog.md#deepseek-aidsh-goal) — every accepted config field of the goal service. - [Goal domain Agent Note](../../.agents/notes/implemented/feature/2026-07-19-persisted-same-session-goal-domain.md) — the domain design and its decisions. -- [Same-session driver Agent Note](../../.agents/notes/implemented/feature/2026-07-19-same-session-goal-round-driver.md) — the continuation races and lifecycle rationale. ----- diff --git a/packages/goal/README.zh.md b/packages/goal/README.zh.md index 80ba31b671..64baed9528 100644 --- a/packages/goal/README.zh.md +++ b/packages/goal/README.zh.md @@ -38,7 +38,6 @@ goal 组为 agent 会话提供一个持久的完成目标,在重启、resume - [生成的工具目录](../../docs/tool-catalog.zh.md#deepseek-aidsh-tool-goal)——模型接收的三个 goal 工具 schema。 - [生成的配置目录](../../docs/config-catalog.zh.md#deepseek-aidsh-goal)——goal 服务的每个受支持配置字段。 - [goal 领域 Agent Note](../../.agents/notes/implemented/feature/2026-07-19-persisted-same-session-goal-domain.zh.md)——领域设计及其决策。 -- [同会话驱动器 Agent Note](../../.agents/notes/implemented/feature/2026-07-19-same-session-goal-round-driver.zh.md)——续行竞态与生命周期理由。 ----- diff --git a/packages/goal/command-goal/README.i18n.yaml b/packages/goal/command-goal/README.i18n.yaml index 2b7e6db63f..a6a9c4371c 100644 --- a/packages/goal/command-goal/README.i18n.yaml +++ b/packages/goal/command-goal/README.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write packages/goal/command-goal/README.md -README.md: d8f49882d404bfe68e203c7445001cb648d9282a -README.zh.md: 00db532e97a39175579c5299c7ea598b07be0440 +README.md: 7c774d321383448110e2b159790b3368c8c0a400 +README.zh.md: f120cafe00853ea858bf836a19317bafea73f60f diff --git a/packages/goal/command-goal/README.md b/packages/goal/command-goal/README.md index d8f49882d4..7c774d3213 100644 --- a/packages/goal/command-goal/README.md +++ b/packages/goal/command-goal/README.md @@ -97,7 +97,7 @@ The command is a thin adapter over the goal domain; read these pages for the sta - [Goal service](../goal/README.md) — the state and lifecycle the command mutates. - [Commands service](../../interaction/commands/README.md) — the command registry contract and dispatch. -- [Human goal-command Agent Note](../../../.agents/notes/implemented/feature/2026-07-19-human-goal-command.md) — the UX and composition decisions. +- [Harness-level goal-execution Agent Note](../../../.agents/notes/implemented/feature/2026-07-16-harness-level-loop.md) — the UX and composition decisions. ----- diff --git a/packages/goal/command-goal/README.zh.md b/packages/goal/command-goal/README.zh.md index 00db532e97..f120cafe00 100644 --- a/packages/goal/command-goal/README.zh.md +++ b/packages/goal/command-goal/README.zh.md @@ -97,7 +97,7 @@ kind: "package-reference" - [goal 服务](../goal/README.zh.md)——命令变更的状态与生命周期。 - [命令服务](../../interaction/commands/README.zh.md)——命令注册表约定与分发。 -- [用户 goal 命令 Agent Note](../../../.agents/notes/implemented/feature/2026-07-19-human-goal-command.zh.md)——用户体验与组合决策。 +- [Harness 层目标式执行 Agent Note](../../../.agents/notes/implemented/feature/2026-07-16-harness-level-loop.zh.md)——用户体验与组合决策。 ----- diff --git a/packages/goal/goal-round-driver/README.i18n.yaml b/packages/goal/goal-round-driver/README.i18n.yaml index 5ee3bdf406..731a01c796 100644 --- a/packages/goal/goal-round-driver/README.i18n.yaml +++ b/packages/goal/goal-round-driver/README.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write packages/goal/goal-round-driver/README.md -README.md: 35e768f766b86740a65277281d73efa5c9534bc6 -README.zh.md: 577422ddc9228339c4f6544c1ce1d444032ec87e +README.md: 8e6a31fe3e5e131611067ed95034a8b8cebb493a +README.zh.md: 5a70b585da727cb4f599495deeef4d860ff200b8 diff --git a/packages/goal/goal-round-driver/README.md b/packages/goal/goal-round-driver/README.md index 35e768f766..8e6a31fe3e 100644 --- a/packages/goal/goal-round-driver/README.md +++ b/packages/goal/goal-round-driver/README.md @@ -96,7 +96,6 @@ The driver consumes the goal state and defers policy to the goal tools; read the - [Goal service](../goal/README.md) — the goal state and lifecycle this driver continues. - [Goal tools](../tool-goal/README.md) — the model-facing tools and their execution-time authority checks. -- [Same-session driver Agent Note](../../../.agents/notes/implemented/feature/2026-07-19-same-session-goal-round-driver.md) — the race and lifecycle rationale. ----- diff --git a/packages/goal/goal-round-driver/README.zh.md b/packages/goal/goal-round-driver/README.zh.md index 577422ddc9..5a70b585da 100644 --- a/packages/goal/goal-round-driver/README.zh.md +++ b/packages/goal/goal-round-driver/README.zh.md @@ -96,7 +96,6 @@ Round 只在整个 agent 进入 idle 时启动;完成、暂停和阻塞会阻 - [goal 服务](../goal/README.zh.md)——本驱动器继续推进的 goal 状态与生命周期。 - [goal 工具](../tool-goal/README.zh.md)——面向模型的工具及其执行时权限检查。 -- [同会话驱动器 Agent Note](../../../.agents/notes/implemented/feature/2026-07-19-same-session-goal-round-driver.zh.md)——竞态与生命周期理由。 ----- diff --git a/packages/guard/repeat-tool-reminder/README.i18n.yaml b/packages/guard/repeat-tool-reminder/README.i18n.yaml index b5390739fb..c9d4d7fd4a 100644 --- a/packages/guard/repeat-tool-reminder/README.i18n.yaml +++ b/packages/guard/repeat-tool-reminder/README.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write packages/guard/repeat-tool-reminder/README.md -README.md: 9b3f176e3c84278b454a138f661e3803d31457e1 -README.zh.md: f2678fe8c3a7a6412681405bb026c21e24c088bd +README.md: 81a65629fe0e418e9a34c8b78046437575875e3c +README.zh.md: d856032c65c788ad701148ab8e678c13cec42e4a diff --git a/packages/guard/repeat-tool-reminder/README.md b/packages/guard/repeat-tool-reminder/README.md index 9b3f176e3c..81a65629fe 100644 --- a/packages/guard/repeat-tool-reminder/README.md +++ b/packages/guard/repeat-tool-reminder/README.md @@ -181,6 +181,6 @@ These limits define when the guard is a poor fit. They are current package const This Dev Note is working context for maintainers: open questions and directions that are not decided. It is explicitly non-authoritative — shipped behavior, limits, and accepted rationale live in the sections above, the package code, and the linked Agent Notes. -The [repeat-tool-guard feature note](../../../.agents/notes/archived/feature/2026-07-08-repeat-tool-guard.md) records the original design and alternatives under the former package name; the [naming ledger](../../../.agents/notes/implemented/architecture/2026-08-11-repository-naming-contract-and-rename-ledger.md) records the rename to `repeat-tool-reminder` and its reason. +The [repeat-tool-guard feature note](../../../.agents/notes/archived/feature/2026-07-08-repeat-tool-guard.md) records the original design and alternatives under the former package name; the [naming ledger](../../../.agents/notes/archived/architecture/2026-08-11-repository-naming-contract-and-rename-ledger.md) records the rename to `repeat-tool-reminder` and its reason. diff --git a/packages/guard/repeat-tool-reminder/README.zh.md b/packages/guard/repeat-tool-reminder/README.zh.md index f2678fe8c3..d856032c65 100644 --- a/packages/guard/repeat-tool-reminder/README.zh.md +++ b/packages/guard/repeat-tool-reminder/README.zh.md @@ -181,6 +181,6 @@ The repeated calls are not making progress. Do not call this tool with these exa 本开发备注是维护者的工作上下文:开放问题与尚未决定的探索方向。它明确不具权威性——已交付的行为、限制与既定理由以上文、包代码和相关 Agent Note 为准。 -[repeat-tool-guard Agent Note](../../../.agents/notes/archived/feature/2026-07-08-repeat-tool-guard.md) 以旧包名记录了原始设计与备选方案;[改名台账](../../../.agents/notes/implemented/architecture/2026-08-11-repository-naming-contract-and-rename-ledger.zh.md) 记录了改名为 `repeat-tool-reminder` 及其原因。 +[repeat-tool-guard Agent Note](../../../.agents/notes/archived/feature/2026-07-08-repeat-tool-guard.md) 以旧包名记录了原始设计与备选方案;[改名台账](../../../.agents/notes/archived/architecture/2026-08-11-repository-naming-contract-and-rename-ledger.md) 记录了改名为 `repeat-tool-reminder` 及其原因。 diff --git a/packages/guard/timeout-policy/README.i18n.yaml b/packages/guard/timeout-policy/README.i18n.yaml index 3ed678e71b..ca44ca30b5 100644 --- a/packages/guard/timeout-policy/README.i18n.yaml +++ b/packages/guard/timeout-policy/README.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write packages/guard/timeout-policy/README.md -README.md: e1efc14c55dc01d058d85849bbe28bd87a6993cb -README.zh.md: 35ed0f64fa504327dac1b49ae2510c66525ecd1a +README.md: 53b298d047098cf196157ea32eaf0c2713c6daeb +README.zh.md: 39d1914135f80fb73d4be41eb9123f6eed56bd3e diff --git a/packages/guard/timeout-policy/README.md b/packages/guard/timeout-policy/README.md index e1efc14c55..53b298d047 100644 --- a/packages/guard/timeout-policy/README.md +++ b/packages/guard/timeout-policy/README.md @@ -130,6 +130,6 @@ These limits define when the policy is a poor fit. They are current package cons This Dev Note is working context for maintainers: open questions and directions that are not decided. It is explicitly non-authoritative — shipped behavior, limits, and accepted rationale live in the sections above, the package code, and the linked Agent Notes. -The `src/index.ts` FIXME asks to settle a `@deepseek-ai/dsh-timeout-guard` rename; the [naming ledger](../../../.agents/notes/implemented/architecture/2026-08-11-repository-naming-contract-and-rename-ledger.md) already records `@deepseek-ai/dsh-tool-call-timeout-policy` as the decided name, so the FIXME is stale pending a code cleanup. +The `src/index.ts` FIXME asks to settle a `@deepseek-ai/dsh-timeout-guard` rename; the [naming ledger](../../../.agents/notes/archived/architecture/2026-08-11-repository-naming-contract-and-rename-ledger.md) already records `@deepseek-ai/dsh-tool-call-timeout-policy` as the decided name, so the FIXME is stale pending a code cleanup. diff --git a/packages/guard/timeout-policy/README.zh.md b/packages/guard/timeout-policy/README.zh.md index 35ed0f64fa..39d1914135 100644 --- a/packages/guard/timeout-policy/README.zh.md +++ b/packages/guard/timeout-policy/README.zh.md @@ -130,6 +130,6 @@ kind: "package-reference" 本开发备注是维护者的工作上下文:开放问题与尚未决定的探索方向。它明确不具权威性——已交付的行为、限制与既定理由以上文、包代码和相关 Agent Note 为准。 -`src/index.ts` 中的 FIXME 要求确定 `@deepseek-ai/dsh-timeout-guard` 改名;[改名台账](../../../.agents/notes/implemented/architecture/2026-08-11-repository-naming-contract-and-rename-ledger.zh.md) 已把 `@deepseek-ai/dsh-tool-call-timeout-policy` 记录为既定名称,因此该 FIXME 已陈旧,待代码清理。 +`src/index.ts` 中的 FIXME 要求确定 `@deepseek-ai/dsh-timeout-guard` 改名;[改名台账](../../../.agents/notes/archived/architecture/2026-08-11-repository-naming-contract-and-rename-ledger.md) 已把 `@deepseek-ai/dsh-tool-call-timeout-policy` 记录为既定名称,因此该 FIXME 已陈旧,待代码清理。 diff --git a/packages/guard/timeout-policy/src/index.ts b/packages/guard/timeout-policy/src/index.ts index c79ae49ca4..9ee3c7026b 100644 --- a/packages/guard/timeout-policy/src/index.ts +++ b/packages/guard/timeout-policy/src/index.ts @@ -6,7 +6,7 @@ * FIXME: settle the intended `@deepseek-ai/dsh-timeout-guard` rename before the * first tagged release — suggestion only, aligning the name with its `guard/` * home; decide at resolution time - * ([regrouping Agent Note](../../../../.agents/notes/implemented/architecture/2026-07-29-package-regrouping.md)). + * ([regrouping Agent Note](../../../../.agents/notes/archived/architecture/2026-07-29-package-regrouping.md)). * * @module @deepseek-ai/dsh-tool-call-timeout-policy */ diff --git a/packages/hooks/README.i18n.yaml b/packages/hooks/README.i18n.yaml index fea989bb54..a4c75801ff 100644 --- a/packages/hooks/README.i18n.yaml +++ b/packages/hooks/README.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write packages/hooks/README.md -README.md: 28dd174857b24fbe2d835ff5ffda566802d1c762 -README.zh.md: 544b60cd1efbf4c26f10c5306a73c726b465960e +README.md: 3d9f9d563fd2b78b3832996eb79308f98bd775da +README.zh.md: 7074cc9a2f4690dee88179969ac3bf9cc475bdb5 diff --git a/packages/hooks/README.md b/packages/hooks/README.md index 28dd174857..3d9f9d563f 100644 --- a/packages/hooks/README.md +++ b/packages/hooks/README.md @@ -34,8 +34,8 @@ The hooks group lets agent runs use the shell hooks you already wrote for Claude ## Related documentation - [Interception extension-points Agent Note](../../.agents/notes/implemented/feature/2026-06-30-interception-extension-points.md) — the typed-Decision surface the bridges program against. -- [Hook bridges Agent Note](../../.agents/notes/implemented/feature/2026-06-30-hook-bridges.md) — the bridge design and its decision mapping. -- [Hook protocol library Agent Note](../../.agents/notes/implemented/feature/2026-06-30-hook-protocol-lib.md) — what the shared library owns and why. +- [Hook bridges Agent Note](../../.agents/notes/archived/feature/2026-06-30-hook-bridges.md) — the bridge design and its decision mapping. +- [Hook protocol library Agent Note](../../.agents/notes/archived/feature/2026-06-30-hook-protocol-lib.md) — what the shared library owns and why. ----- diff --git a/packages/hooks/README.zh.md b/packages/hooks/README.zh.md index 544b60cd1e..7074cc9a2f 100644 --- a/packages/hooks/README.zh.md +++ b/packages/hooks/README.zh.md @@ -34,8 +34,8 @@ hooks 组让 agent(智能体)运行可以使用你为 Claude Code 或 Codex ## 相关文档 - [拦截扩展点 Agent Note](../../.agents/notes/implemented/feature/2026-06-30-interception-extension-points.zh.md)——桥接所面向的类型化 Decision 接口面。 -- [钩子桥接 Agent Note](../../.agents/notes/implemented/feature/2026-06-30-hook-bridges.zh.md)——桥接设计及其决策映射。 -- [钩子协议库 Agent Note](../../.agents/notes/implemented/feature/2026-06-30-hook-protocol-lib.zh.md)——共享库负责的内容及其原因。 +- [钩子桥接 Agent Note](../../.agents/notes/archived/feature/2026-06-30-hook-bridges.md)——桥接设计及其决策映射。 +- [钩子协议库 Agent Note](../../.agents/notes/archived/feature/2026-06-30-hook-protocol-lib.md)——共享库负责的内容及其原因。 ----- diff --git a/packages/hooks/hook-protocol/README.i18n.yaml b/packages/hooks/hook-protocol/README.i18n.yaml index d4b5e671fb..0094003678 100644 --- a/packages/hooks/hook-protocol/README.i18n.yaml +++ b/packages/hooks/hook-protocol/README.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write packages/hooks/hook-protocol/README.md -README.md: ba67dcd503fb8b5578ec09dab1f10dc74fadc989 -README.zh.md: 1a853130197d886c7f4d20a5df24d91478a37b0d +README.md: 383a75c6943817d8e6b84e62564cbdd5dcd511e5 +README.zh.md: a2c66510f274ba3a89989fd67adc67f0dba2d813 diff --git a/packages/hooks/hook-protocol/README.md b/packages/hooks/hook-protocol/README.md index ba67dcd503..383a75c694 100644 --- a/packages/hooks/hook-protocol/README.md +++ b/packages/hooks/hook-protocol/README.md @@ -75,7 +75,7 @@ Invocation and result records must sit inside an open turn: `UserPromptSubmit`, - **Never throw into the loop.** Every failure mode — malformed JSON, an invalid regex, an executor rejection — degrades to a contained outcome or a non-match, so a hook can never crash the calling turn. - **Log-only, turn-enclosed events.** The `hook/*` records are durable evidence of what ran and what it decided; they are not surface events, and the invariant companion rejects them outside an open turn. -The [hook-protocol-lib Agent Note](../../../.agents/notes/implemented/feature/2026-06-30-hook-protocol-lib.md) records the shared-versus-per-dialect split and the alternatives considered. +The [hook-protocol-lib Agent Note](../../../.agents/notes/archived/feature/2026-06-30-hook-protocol-lib.md) records the shared-versus-per-dialect split and the alternatives considered. ### Source map @@ -101,8 +101,8 @@ The [hook-protocol-lib Agent Note](../../../.agents/notes/implemented/feature/20 Read these pages when the package-level contract is not enough. They move from the shared rules to the bridges that apply them and the extension points they program against. - [Hooks group map](../README.md) — the sibling group page and its package table. -- [Hook protocol library Agent Note](../../../.agents/notes/implemented/feature/2026-06-30-hook-protocol-lib.md) — why the protocol core is shared and what each bridge owns. -- [Hook bridges Agent Note](../../../.agents/notes/implemented/feature/2026-06-30-hook-bridges.md) — how the two bridges use these primitives. +- [Hook protocol library Agent Note](../../../.agents/notes/archived/feature/2026-06-30-hook-protocol-lib.md) — why the protocol core is shared and what each bridge owns. +- [Hook bridges Agent Note](../../../.agents/notes/archived/feature/2026-06-30-hook-bridges.md) — how the two bridges use these primitives. - [Interception extension-points Agent Note](../../../.agents/notes/implemented/feature/2026-06-30-interception-extension-points.md) — the typed-Decision surface the bridges map onto. - [Generated persistence log event catalog](../../../docs/persistence-catalog.md) — the `hook/*` event payloads and per-event JSDoc. diff --git a/packages/hooks/hook-protocol/README.zh.md b/packages/hooks/hook-protocol/README.zh.md index 1a85313019..a2c66510f2 100644 --- a/packages/hooks/hook-protocol/README.zh.md +++ b/packages/hooks/hook-protocol/README.zh.md @@ -75,7 +75,7 @@ kind: "package-library" - **绝不向循环抛异常。** 每种失败模式——格式错误的 JSON、无效正则、执行器拒绝——都会降级为受控的结果或不匹配,因此钩子永远不能使调用轮次崩溃。 - **仅日志、轮次内的事件。** `hook/*` 记录是「运行了什么、决定了什么」的持久证据;它们不是 surface 事件,不变式伴生插件会拒绝未开启轮次外的记录。 -[hook-protocol-lib Agent Note](../../../.agents/notes/implemented/feature/2026-06-30-hook-protocol-lib.zh.md) 记录了共享与逐方言的划分以及备选方案。 +[hook-protocol-lib Agent Note](../../../.agents/notes/archived/feature/2026-06-30-hook-protocol-lib.md) 记录了共享与逐方言的划分以及备选方案。 ### 源码地图 @@ -101,8 +101,8 @@ kind: "package-library" 当包级约定不够用时阅读以下页面。它们从共享规则进入应用这些规则的桥接,以及它们所面向的扩展点。 - [hooks 组地图](../README.zh.md)——同级组页面及其包表。 -- [hook-protocol-lib Agent Note](../../../.agents/notes/implemented/feature/2026-06-30-hook-protocol-lib.zh.md)——协议核心为何共享、各桥接负责什么。 -- [钩子桥接 Agent Note](../../../.agents/notes/implemented/feature/2026-06-30-hook-bridges.zh.md)——两个桥接如何使用这些原语。 +- [hook-protocol-lib Agent Note](../../../.agents/notes/archived/feature/2026-06-30-hook-protocol-lib.md)——协议核心为何共享、各桥接负责什么。 +- [钩子桥接 Agent Note](../../../.agents/notes/archived/feature/2026-06-30-hook-bridges.md)——两个桥接如何使用这些原语。 - [拦截扩展点 Agent Note](../../../.agents/notes/implemented/feature/2026-06-30-interception-extension-points.zh.md)——桥接所映射的类型化 Decision 接口面。 - [生成的持久化日志事件目录](../../../docs/persistence-catalog.zh.md)——`hook/*` 事件载荷与逐事件 JSDoc。 diff --git a/packages/hooks/hooks-claude-code/README.i18n.yaml b/packages/hooks/hooks-claude-code/README.i18n.yaml index ac4f5023a5..f80355cfde 100644 --- a/packages/hooks/hooks-claude-code/README.i18n.yaml +++ b/packages/hooks/hooks-claude-code/README.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write packages/hooks/hooks-claude-code/README.md -README.md: 6d6d789ec0adc765825adaf49969d281b46b73d9 -README.zh.md: 40ae81924b836dbd4bc28cf61465829cfd25ddde +README.md: 7d5195b393ac17c0d2e3362f329341adc69225fa +README.zh.md: a4cdacfc662b227347f0ec0d4a1ef7df272a21e5 diff --git a/packages/hooks/hooks-claude-code/README.md b/packages/hooks/hooks-claude-code/README.md index 6d6d789ec0..7d5195b393 100644 --- a/packages/hooks/hooks-claude-code/README.md +++ b/packages/hooks/hooks-claude-code/README.md @@ -106,7 +106,7 @@ The three emit points (`SessionStart`, `SubagentStart`, `SubagentStop`) run deta - **Dispose reaches quiescence.** Detached runs are tracked and drained on disposal so no hook process or late callback outlives the fiber. - **Serial, not concurrent.** Matched hooks run serially in config order: each `hook/invoked` / `hook/result` pair stays adjacent in the log, and the decision fold is order-independent, so the outcome matches the reference engines' concurrent launch at the cost of serialized latency. -The [hook-bridges Agent Note](../../../.agents/notes/implemented/feature/2026-06-30-hook-bridges.md) records the bridge design and the deferred gaps; the [hook-protocol-lib Agent Note](../../../.agents/notes/implemented/feature/2026-06-30-hook-protocol-lib.md) records the shared-versus-per-dialect split. +The [hook-bridges Agent Note](../../../.agents/notes/archived/feature/2026-06-30-hook-bridges.md) records the bridge design and the deferred gaps; the [hook-protocol-lib Agent Note](../../../.agents/notes/archived/feature/2026-06-30-hook-protocol-lib.md) records the shared-versus-per-dialect split. ### Source map @@ -127,7 +127,7 @@ Read these pages when the package-level contract is not enough. They move from t - [Hooks group map](../README.md) — the sibling group page and its package table. - [Hook protocol library](../hook-protocol/README.md) — the shared hook rules this bridge applies. -- [Hook bridges Agent Note](../../../.agents/notes/implemented/feature/2026-06-30-hook-bridges.md) — the bridge design, decision mapping, and deferred gaps. +- [Hook bridges Agent Note](../../../.agents/notes/archived/feature/2026-06-30-hook-bridges.md) — the bridge design, decision mapping, and deferred gaps. - [Interception extension-points Agent Note](../../../.agents/notes/implemented/feature/2026-06-30-interception-extension-points.md) — the typed-Decision surface the bridge maps onto. - [Generated configuration catalog](../../../docs/config-catalog.md#deepseek-aidsh-hooks-claude-code) — every accepted config field and its source declaration. diff --git a/packages/hooks/hooks-claude-code/README.zh.md b/packages/hooks/hooks-claude-code/README.zh.md index 40ae81924b..a4cdacfc66 100644 --- a/packages/hooks/hooks-claude-code/README.zh.md +++ b/packages/hooks/hooks-claude-code/README.zh.md @@ -106,7 +106,7 @@ matcher subject 是工具名称(`PreToolUse`/`PostToolUse`)、会话源( - **dispose 必须达到完全停稳。** 脱离运行会被跟踪并在释放时排空,因此不会有 hook 进程或迟到回调超出 fiber 存活。 - **串行而非并发。** 匹配 hook 按配置顺序串行运行:每个 `hook/invoked`/`hook/result` 对在日志中保持相邻,且决策折叠与顺序无关,因此结果与参考引擎的并发启动一致,代价是串行化的延迟。 -[hook-bridges Agent Note](../../../.agents/notes/implemented/feature/2026-06-30-hook-bridges.zh.md) 记录了桥接设计与延期缺口;[hook-protocol-lib Agent Note](../../../.agents/notes/implemented/feature/2026-06-30-hook-protocol-lib.zh.md) 记录了共享与逐方言的划分。 +[hook-bridges Agent Note](../../../.agents/notes/archived/feature/2026-06-30-hook-bridges.md) 记录了桥接设计与延期缺口;[hook-protocol-lib Agent Note](../../../.agents/notes/archived/feature/2026-06-30-hook-protocol-lib.md) 记录了共享与逐方言的划分。 ### 源码地图 @@ -127,7 +127,7 @@ matcher subject 是工具名称(`PreToolUse`/`PostToolUse`)、会话源( - [hooks 组地图](../README.zh.md)——同级组页面及其包表。 - [hook 协议库](../hook-protocol/README.zh.md)——本桥接应用的共享钩子规则。 -- [钩子桥接 Agent Note](../../../.agents/notes/implemented/feature/2026-06-30-hook-bridges.zh.md)——桥接设计、决策映射与延期缺口。 +- [钩子桥接 Agent Note](../../../.agents/notes/archived/feature/2026-06-30-hook-bridges.md)——桥接设计、决策映射与延期缺口。 - [拦截扩展点 Agent Note](../../../.agents/notes/implemented/feature/2026-06-30-interception-extension-points.zh.md)——桥接所映射的类型化 Decision 接口面。 - [生成的配置目录](../../../docs/config-catalog.zh.md#deepseek-aidsh-hooks-claude-code)——每个受支持配置字段及其源声明。 diff --git a/packages/hooks/hooks-claude-code/src/index.ts b/packages/hooks/hooks-claude-code/src/index.ts index 688d1a065b..9c46a465b7 100644 --- a/packages/hooks/hooks-claude-code/src/index.ts +++ b/packages/hooks/hooks-claude-code/src/index.ts @@ -4,8 +4,7 @@ * start/stop. It owns Claude payloads, environment, substitution, and decision * mapping; shared execution and parsing live in `dsh-hook-protocol`. * `updatedInput` is logged and warned but not honored. Bespoke behavior should - * use typed native plugins on the same extension points; see the - * [hook-bridges Agent Note](../../../../.agents/notes/implemented/feature/2026-06-30-hook-bridges.md). + * use typed native plugins on the same extension points. * @module @deepseek-ai/dsh-hooks-claude-code */ diff --git a/packages/hooks/hooks-codex/README.i18n.yaml b/packages/hooks/hooks-codex/README.i18n.yaml index b03504ee30..91083d6e14 100644 --- a/packages/hooks/hooks-codex/README.i18n.yaml +++ b/packages/hooks/hooks-codex/README.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write packages/hooks/hooks-codex/README.md -README.md: 8ab22336f5558ab3ab7ce0fe83621994fa7b8092 -README.zh.md: ad7c2790cba3d87262f2c3b2949eb0c74d823c72 +README.md: 8f8b0ddf121eec813123065a58621d58ca601107 +README.zh.md: 83b73951eba2e02bf1a7e1472ff97f9a2a585095 diff --git a/packages/hooks/hooks-codex/README.md b/packages/hooks/hooks-codex/README.md index 8ab22336f5..8f8b0ddf12 100644 --- a/packages/hooks/hooks-codex/README.md +++ b/packages/hooks/hooks-codex/README.md @@ -102,7 +102,7 @@ The matcher subject is the tool name (`PreToolUse` / `PostToolUse`) or the sessi - **Dispose reaches quiescence.** Detached runs are tracked and drained on disposal so no hook process or late callback outlives the fiber. - **Dialect-shaped, not maximal.** Payloads stay snake_case with `turn_id` / `model`, stdin carries no trailing newline, and the bridge implements no pre-tool approval or rewrite path — the protocol's shape is preserved even where the harness could do more. -The [hook-bridges Agent Note](../../../.agents/notes/implemented/feature/2026-06-30-hook-bridges.md) records the bridge design and the deferred gaps; the [hook-protocol-lib Agent Note](../../../.agents/notes/implemented/feature/2026-06-30-hook-protocol-lib.md) records the shared-versus-per-dialect split. +The [hook-bridges Agent Note](../../../.agents/notes/archived/feature/2026-06-30-hook-bridges.md) records the bridge design and the deferred gaps; the [hook-protocol-lib Agent Note](../../../.agents/notes/archived/feature/2026-06-30-hook-protocol-lib.md) records the shared-versus-per-dialect split. ### Source map @@ -123,7 +123,7 @@ Read these pages when the package-level contract is not enough. They move from t - [Hooks group map](../README.md) — the sibling group page and its package table. - [Hook protocol library](../hook-protocol/README.md) — the shared hook rules this bridge applies. -- [Hook bridges Agent Note](../../../.agents/notes/implemented/feature/2026-06-30-hook-bridges.md) — the bridge design, decision mapping, and deferred gaps. +- [Hook bridges Agent Note](../../../.agents/notes/archived/feature/2026-06-30-hook-bridges.md) — the bridge design, decision mapping, and deferred gaps. - [Interception extension-points Agent Note](../../../.agents/notes/implemented/feature/2026-06-30-interception-extension-points.md) — the typed-Decision surface the bridge maps onto. - [Generated configuration catalog](../../../docs/config-catalog.md#deepseek-aidsh-hooks-codex) — every accepted config field and its source declaration. diff --git a/packages/hooks/hooks-codex/README.zh.md b/packages/hooks/hooks-codex/README.zh.md index ad7c2790cb..83b73951eb 100644 --- a/packages/hooks/hooks-codex/README.zh.md +++ b/packages/hooks/hooks-codex/README.zh.md @@ -102,7 +102,7 @@ matcher subject 是工具名称(`PreToolUse`/`PostToolUse`)或会话源( - **dispose 必须达到完全停稳。** 脱离运行会被跟踪并在释放时排空,因此不会有 hook 进程或迟到回调超出 fiber 存活。 - **保持方言形状,而非最大化。** payload 保持 snake_case 并带 `turn_id`/`model`,stdin 不带尾随换行符,桥接也不实现工具前审批或改写路径——即使 harness 本可以做得更多,也保留协议的形状。 -[hook-bridges Agent Note](../../../.agents/notes/implemented/feature/2026-06-30-hook-bridges.zh.md) 记录了桥接设计与延期缺口;[hook-protocol-lib Agent Note](../../../.agents/notes/implemented/feature/2026-06-30-hook-protocol-lib.zh.md) 记录了共享与逐方言的划分。 +[hook-bridges Agent Note](../../../.agents/notes/archived/feature/2026-06-30-hook-bridges.md) 记录了桥接设计与延期缺口;[hook-protocol-lib Agent Note](../../../.agents/notes/archived/feature/2026-06-30-hook-protocol-lib.md) 记录了共享与逐方言的划分。 ### 源码地图 @@ -123,7 +123,7 @@ matcher subject 是工具名称(`PreToolUse`/`PostToolUse`)或会话源( - [hooks 组地图](../README.zh.md)——同级组页面及其包表。 - [hook 协议库](../hook-protocol/README.zh.md)——本桥接应用的共享钩子规则。 -- [钩子桥接 Agent Note](../../../.agents/notes/implemented/feature/2026-06-30-hook-bridges.zh.md)——桥接设计、决策映射与延期缺口。 +- [钩子桥接 Agent Note](../../../.agents/notes/archived/feature/2026-06-30-hook-bridges.md)——桥接设计、决策映射与延期缺口。 - [拦截扩展点 Agent Note](../../../.agents/notes/implemented/feature/2026-06-30-interception-extension-points.zh.md)——桥接所映射的类型化 Decision 接口面。 - [生成的配置目录](../../../docs/config-catalog.zh.md#deepseek-aidsh-hooks-codex)——每个受支持配置字段及其源声明。 diff --git a/packages/hooks/hooks-codex/src/index.ts b/packages/hooks/hooks-codex/src/index.ts index c3c408fb7d..6c42a063e5 100644 --- a/packages/hooks/hooks-codex/src/index.ts +++ b/packages/hooks/hooks-codex/src/index.ts @@ -4,8 +4,7 @@ * matchers, snake_case payloads without a trailing newline, no hook environment * or command substitution, and no pre-tool approval or rewrite path; only * blocking decisions are honored. Shared execution and parsing live in - * `dsh-hook-protocol`; see the - * [hook-bridges Agent Note](../../../../.agents/notes/implemented/feature/2026-06-30-hook-bridges.md). + * `dsh-hook-protocol`. * @module @deepseek-ai/dsh-hooks-codex */ diff --git a/packages/host/directory-picker-auto/README.i18n.yaml b/packages/host/directory-picker-auto/README.i18n.yaml index 54512072a4..88f9ed5478 100644 --- a/packages/host/directory-picker-auto/README.i18n.yaml +++ b/packages/host/directory-picker-auto/README.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write packages/host/directory-picker-auto/README.md -README.md: e6ac8b1cebe1ae55e4477868c94fb82ef8f16e86 -README.zh.md: d90a7d62ec03d5688ad03e883879f384cdcfc213 +README.md: b4d1c44c84c555f92a42e277571e2f01fc6ae7ee +README.zh.md: 39eeeb0ff8ebec8757be52c9029e6d05688be8f2 diff --git a/packages/host/directory-picker-auto/README.md b/packages/host/directory-picker-auto/README.md index e6ac8b1ceb..b4d1c44c84 100644 --- a/packages/host/directory-picker-auto/README.md +++ b/packages/host/directory-picker-auto/README.md @@ -83,7 +83,7 @@ The chooser is a pure decision plus a mount: `resolveDirectoryPickerBackend` sam Read these when the chooser's contract is not enough: the seam definition first, then the two backends it mounts. - [Directory-picker seam](../directory-picker/README.md) — the capability contract the chooser composes. -- [Directory-picker capability seam decision](../../../.agents/notes/implemented/architecture/2026-07-28-directory-picker-capability-seam.md) — why backends differ in interaction shape. +- [Directory-picker capability seam decision](../../../.agents/notes/archived/architecture/2026-07-28-directory-picker-capability-seam.md) — why backends differ in interaction shape. - [Native backend](../directory-picker-native/README.md) — the interaction mounted for a local operator. - [Browse backend](../directory-picker-browse/README.md) — the interaction mounted everywhere else. diff --git a/packages/host/directory-picker-auto/README.zh.md b/packages/host/directory-picker-auto/README.zh.md index d90a7d62ec..39eeeb0ff8 100644 --- a/packages/host/directory-picker-auto/README.zh.md +++ b/packages/host/directory-picker-auto/README.zh.md @@ -83,7 +83,7 @@ kind: "package-reference" 当选择器的约定不够用时阅读以下内容:先看 seam 定义,再看它挂载的两个后端。 - [目录选择 seam](../directory-picker/README.zh.md)——选择器所组合的能力约定。 -- [目录选择能力 seam 决策](../../../.agents/notes/implemented/architecture/2026-07-28-directory-picker-capability-seam.zh.md)——后端为何在交互形态上彼此不同。 +- [目录选择能力 seam 决策](../../../.agents/notes/archived/architecture/2026-07-28-directory-picker-capability-seam.md)——后端为何在交互形态上彼此不同。 - [原生后端](../directory-picker-native/README.zh.md)——为本地操作者挂载的交互。 - [浏览后端](../directory-picker-browse/README.zh.md)——在其他任何地方挂载的交互。 diff --git a/packages/host/directory-picker-browse/README.i18n.yaml b/packages/host/directory-picker-browse/README.i18n.yaml index 5a8cc025b8..830eb105cd 100644 --- a/packages/host/directory-picker-browse/README.i18n.yaml +++ b/packages/host/directory-picker-browse/README.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write packages/host/directory-picker-browse/README.md -README.md: 33cf379b9ccf4d08355ef4204aa9e2f639e849df -README.zh.md: 28a29de15c255cc09008991e1df71e26c90e3f70 +README.md: 9618b6b2f7101aa5dd145fd2c8f7a659a44b0308 +README.zh.md: 2b67283c32dbb8026fa024a3181ca09b37527e2b diff --git a/packages/host/directory-picker-browse/README.md b/packages/host/directory-picker-browse/README.md index 33cf379b9c..9618b6b2f7 100644 --- a/packages/host/directory-picker-browse/README.md +++ b/packages/host/directory-picker-browse/README.md @@ -84,7 +84,7 @@ Every filesystem await races the caller's signal (`raceAbort`), so a stalled net Read these when the backend contract is not enough: the seam definition first, then the decision record and the native alternative. - [Directory-picker seam](../directory-picker/README.md) — the `browse` capability contract and the typed error vocabulary. -- [Directory-picker capability seam decision](../../../.agents/notes/implemented/architecture/2026-07-28-directory-picker-capability-seam.md) — the policy decisions behind listing and creation. +- [Directory-picker capability seam decision](../../../.agents/notes/archived/architecture/2026-07-28-directory-picker-capability-seam.md) — the policy decisions behind listing and creation. - [Native backend](../directory-picker-native/README.md) — the OS-chooser alternative for local operators. - [Adaptive chooser](../directory-picker-auto/README.md) — boot-time resolution between the two backends. - [Generated configuration catalog](../../../docs/config-catalog.md#deepseek-aidsh-host-directory-picker-browse) — every accepted config field and its source declaration. diff --git a/packages/host/directory-picker-browse/README.zh.md b/packages/host/directory-picker-browse/README.zh.md index 28a29de15c..2b67283c32 100644 --- a/packages/host/directory-picker-browse/README.zh.md +++ b/packages/host/directory-picker-browse/README.zh.md @@ -84,7 +84,7 @@ kind: "package-reference" 当后端约定不够用时阅读以下内容:先看 seam 定义,再看决策记录与原生替代方案。 - [目录选择 seam](../directory-picker/README.zh.md)——`browse` 能力约定与类型化错误词汇。 -- [目录选择能力 seam 决策](../../../.agents/notes/implemented/architecture/2026-07-28-directory-picker-capability-seam.zh.md)——列举与创建背后的策略裁决。 +- [目录选择能力 seam 决策](../../../.agents/notes/archived/architecture/2026-07-28-directory-picker-capability-seam.md)——列举与创建背后的策略裁决。 - [原生后端](../directory-picker-native/README.zh.md)——面向本地操作者的 OS 选择器替代方案。 - [自适应选择器](../directory-picker-auto/README.zh.md)——两个后端之间的启动时判定。 - [生成配置目录](../../../docs/config-catalog.zh.md#deepseek-aidsh-host-directory-picker-browse)——每个受支持配置字段及其源声明。 diff --git a/packages/host/directory-picker-native/README.i18n.yaml b/packages/host/directory-picker-native/README.i18n.yaml index e49c5d0c9a..1a337e6e05 100644 --- a/packages/host/directory-picker-native/README.i18n.yaml +++ b/packages/host/directory-picker-native/README.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write packages/host/directory-picker-native/README.md -README.md: 9c1fb7d742fcd5481aa6ee30f2de3d9e670c09d5 -README.zh.md: 4b47358cdc0c787eefccd2d330c1055dd6278453 +README.md: a432bdc19175c690287745cc9c2df004d03b7478 +README.zh.md: 98ea9a033dbf6720fa08fbb068e243371998dab6 diff --git a/packages/host/directory-picker-native/README.md b/packages/host/directory-picker-native/README.md index 9c1fb7d742..a432bdc191 100644 --- a/packages/host/directory-picker-native/README.md +++ b/packages/host/directory-picker-native/README.md @@ -73,7 +73,7 @@ Platform tools run without a shell: `osascript` on macOS, and Zenity with a KDia Read these when the backend contract is not enough: the seam definition first, then the alternative backend and the chooser that selects between them. - [Directory-picker seam](../directory-picker/README.md) — the `native` capability contract and the typed error vocabulary. -- [Directory-picker capability seam decision](../../../.agents/notes/implemented/architecture/2026-07-28-directory-picker-capability-seam.md) — why backends differ in interaction shape. +- [Directory-picker capability seam decision](../../../.agents/notes/archived/architecture/2026-07-28-directory-picker-capability-seam.md) — why backends differ in interaction shape. - [Browse backend](../directory-picker-browse/README.md) — the in-app alternative for remote clients. - [Adaptive chooser](../directory-picker-auto/README.md) — boot-time resolution between native and browse. - [No-shell subprocess runner](../../util/native-command/README.md) — the shared subprocess primitive the chooser runs on. diff --git a/packages/host/directory-picker-native/README.zh.md b/packages/host/directory-picker-native/README.zh.md index 4b47358cdc..98ea9a033d 100644 --- a/packages/host/directory-picker-native/README.zh.md +++ b/packages/host/directory-picker-native/README.zh.md @@ -73,7 +73,7 @@ kind: "package-reference" 当后端约定不够用时阅读以下内容:先看 seam 定义,再看替代后端与在两者之间选择的那个选择器。 - [目录选择 seam](../directory-picker/README.zh.md)——`native` 能力约定与类型化错误词汇。 -- [目录选择能力 seam 决策](../../../.agents/notes/implemented/architecture/2026-07-28-directory-picker-capability-seam.zh.md)——后端为何在交互形态上彼此不同。 +- [目录选择能力 seam 决策](../../../.agents/notes/archived/architecture/2026-07-28-directory-picker-capability-seam.md)——后端为何在交互形态上彼此不同。 - [浏览后端](../directory-picker-browse/README.zh.md)——面向远程客户端的应用内替代方案。 - [自适应选择器](../directory-picker-auto/README.zh.md)——native 与 browse 之间的启动时判定。 - [免 shell 子进程运行器](../../util/native-command/README.zh.md)——选择器运行所依赖的共享子进程原语。 diff --git a/packages/host/directory-picker-native/src/native-picker.ts b/packages/host/directory-picker-native/src/native-picker.ts index a34d75ebf0..312d898c5a 100644 --- a/packages/host/directory-picker-native/src/native-picker.ts +++ b/packages/host/directory-picker-native/src/native-picker.ts @@ -71,7 +71,7 @@ export async function pickNativeDirectory( // per-monitor-v2 DPI and abort support. koffi is a packaged dependency // whose availability the install guarantees, so there is no fallback // tier: any failure surfaces as-is (no PowerShell fallback tier; see - // .agents/notes/implemented/simplification/2026-08-04-drop-windows-powershell-picker-fallback.md). + // .agents/notes/archived/simplification/2026-08-04-drop-windows-powershell-picker-fallback.md). const pickDialog = internals.pickWin32Dialog ?? pickWin32Directory return await pickDialog(signal) } diff --git a/packages/host/directory-picker/README.i18n.yaml b/packages/host/directory-picker/README.i18n.yaml index 65e4c0188b..34e13a58a7 100644 --- a/packages/host/directory-picker/README.i18n.yaml +++ b/packages/host/directory-picker/README.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write packages/host/directory-picker/README.md -README.md: 93edf851d507eedce13daf5b274a715b4662c3d5 -README.zh.md: 2f4cfb233ea38d23826befbbf8c101a07b5f632b +README.md: 9ffaa15aa9aca5aba484347f669bf7cbadd44e57 +README.zh.md: a55daa0962142e27e77ac0707f22f868dadf01ea diff --git a/packages/host/directory-picker/README.md b/packages/host/directory-picker/README.md index 93edf851d5..9ffaa15aa9 100644 --- a/packages/host/directory-picker/README.md +++ b/packages/host/directory-picker/README.md @@ -74,7 +74,7 @@ The seam is built on one separation: the interaction shape a backend provides is Read these when the seam contract is not enough: the decision record first, then the two backends and the adaptive chooser that compose it. -- [Directory-picker capability seam decision](../../../.agents/notes/implemented/architecture/2026-07-28-directory-picker-capability-seam.md) — design rationale, the `ctx.fs` separation, and the policy decisions. +- [Directory-picker capability seam decision](../../../.agents/notes/archived/architecture/2026-07-28-directory-picker-capability-seam.md) — design rationale, the `ctx.fs` separation, and the policy decisions. - [Native backend](../directory-picker-native/README.md) — the OS-chooser interaction and its platform tooling. - [Browse backend](../directory-picker-browse/README.md) — the in-app listing and creation interaction for remote clients. - [Adaptive chooser](../directory-picker-auto/README.md) — boot-time resolution between the two backends. diff --git a/packages/host/directory-picker/README.zh.md b/packages/host/directory-picker/README.zh.md index 2f4cfb233e..a55daa0962 100644 --- a/packages/host/directory-picker/README.zh.md +++ b/packages/host/directory-picker/README.zh.md @@ -74,7 +74,7 @@ web GUI 宿主通过一份约定让操作者选择工作区目录:一个只提 当 seam 约定不够用时阅读以下内容:先看决策记录,再看组合它的两个后端与自适应选择器。 -- [目录选择能力 seam 决策](../../../.agents/notes/implemented/architecture/2026-07-28-directory-picker-capability-seam.zh.md)——设计依据、`ctx.fs` 切分与策略裁决。 +- [目录选择能力 seam 决策](../../../.agents/notes/archived/architecture/2026-07-28-directory-picker-capability-seam.md)——设计依据、`ctx.fs` 切分与策略裁决。 - [原生后端](../directory-picker-native/README.zh.md)——OS 选择器交互及其平台工具。 - [浏览后端](../directory-picker-browse/README.zh.md)——面向远程客户端的应用内列举与创建交互。 - [自适应选择器](../directory-picker-auto/README.zh.md)——两个后端之间的启动时判定。 diff --git a/packages/jobs/README.i18n.yaml b/packages/jobs/README.i18n.yaml index 2aa06400aa..ac271a3f83 100644 --- a/packages/jobs/README.i18n.yaml +++ b/packages/jobs/README.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write packages/jobs/README.md -README.md: fd4a18989dc0ae7af6e5cea128bf1988e3416c78 -README.zh.md: 6f75cb3fc463171a783a73b367804a6ca90eae98 +README.md: 1181b2a38f33ede2cba4b1f9119991d49ce169ff +README.zh.md: 0ec8ef5b33bf50351e4a98f95f0f8a30f0f04a11 diff --git a/packages/jobs/README.md b/packages/jobs/README.md index fd4a18989d..1181b2a38f 100644 --- a/packages/jobs/README.md +++ b/packages/jobs/README.md @@ -35,7 +35,7 @@ The jobs group is the background-work capability family: tools that run long wor - [Background task runtime subsystem](../../docs/subsystems/jobs.md) — the job types, snapshot fields, and the `ctx.jobs` API. - [Generic long-running tool runtime Agent Note](../../.agents/notes/implemented/architecture/2026-06-20-generic-long-running-tool-runtime.md) — the design behind the background-job runtime. -- [job-registry seam Agent Note](../../.agents/notes/implemented/architecture/2026-07-26-job-registry-seam.md) — the owner-fenced registry contract and its rationale. +- [job-registry seam Agent Note](../../.agents/notes/archived/architecture/2026-07-26-job-registry-seam.md) — the owner-fenced registry contract and its rationale. ----- diff --git a/packages/jobs/README.zh.md b/packages/jobs/README.zh.md index 6f75cb3fc4..0ec8ef5b33 100644 --- a/packages/jobs/README.zh.md +++ b/packages/jobs/README.zh.md @@ -35,7 +35,7 @@ jobs 组是后台工作能力家族:运行长时间工作的工具把工作注 - [后台任务运行时子系统](../../docs/subsystems/jobs.zh.md)——任务类型、快照字段与 `ctx.jobs` API。 - [通用长时间运行工具运行时 Agent Note](../../.agents/notes/implemented/architecture/2026-06-20-generic-long-running-tool-runtime.zh.md)——后台任务运行时背后的设计。 -- [任务注册表 seam Agent Note](../../.agents/notes/implemented/architecture/2026-07-26-job-registry-seam.zh.md)——按所有者隔离的注册表约定及其理由。 +- [任务注册表 seam Agent Note](../../.agents/notes/archived/architecture/2026-07-26-job-registry-seam.md)——按所有者隔离的注册表约定及其理由。 ----- diff --git a/packages/jobs/jobs-local/README.i18n.yaml b/packages/jobs/jobs-local/README.i18n.yaml index 166154a3dd..55f471e53f 100644 --- a/packages/jobs/jobs-local/README.i18n.yaml +++ b/packages/jobs/jobs-local/README.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write packages/jobs/jobs-local/README.md -README.md: 33bf131f3cfe8be2421979e68dda035d289f0bc7 -README.zh.md: 58f93ad2588efd263ff8da08fff13b31b99a18be +README.md: 8c9d959526c546c2d636542fb8c53c815a4b8836 +README.zh.md: 30a7aab82bb1f35c8396c54fa7fa96c0f0ce1ae2 diff --git a/packages/jobs/jobs-local/README.md b/packages/jobs/jobs-local/README.md index 33bf131f3c..8c9d959526 100644 --- a/packages/jobs/jobs-local/README.md +++ b/packages/jobs/jobs-local/README.md @@ -108,7 +108,7 @@ Read these pages when the package-level contract is not enough. They move from t - [Registry contract](../jobs/README.md) — the abstract `ctx.jobs` service this package implements. - [Model-facing job controls](../tool-jobs/README.md) — the `job_output`, `job_list`, and `job_kill` tools and completion notices. - [Generic long-running tool runtime Agent Note](../../../.agents/notes/implemented/architecture/2026-06-20-generic-long-running-tool-runtime.md) — the design behind the background-job runtime. -- [job-registry seam Agent Note](../../../.agents/notes/implemented/architecture/2026-07-26-job-registry-seam.md) — the owner-fenced registry contract and its rationale. +- [job-registry seam Agent Note](../../../.agents/notes/archived/architecture/2026-07-26-job-registry-seam.md) — the owner-fenced registry contract and its rationale. ----- diff --git a/packages/jobs/jobs-local/README.zh.md b/packages/jobs/jobs-local/README.zh.md index 58f93ad258..30a7aab82b 100644 --- a/packages/jobs/jobs-local/README.zh.md +++ b/packages/jobs/jobs-local/README.zh.md @@ -108,7 +108,7 @@ kind: "package-reference" - [注册表约定](../jobs/README.zh.md)——本包实现的抽象 `ctx.jobs` 服务。 - [模型侧任务控制](../tool-jobs/README.zh.md)——`job_output`、`job_list` 与 `job_kill` 工具及完成通知。 - [通用长时间运行工具运行时 Agent Note](../../../.agents/notes/implemented/architecture/2026-06-20-generic-long-running-tool-runtime.zh.md)——后台任务运行时背后的设计。 -- [任务注册表 seam Agent Note](../../../.agents/notes/implemented/architecture/2026-07-26-job-registry-seam.zh.md)——按所有者隔离的注册表约定及其理由。 +- [任务注册表 seam Agent Note](../../../.agents/notes/archived/architecture/2026-07-26-job-registry-seam.md)——按所有者隔离的注册表约定及其理由。 ----- diff --git a/packages/jobs/jobs/README.i18n.yaml b/packages/jobs/jobs/README.i18n.yaml index 5badbfe671..8858e521a9 100644 --- a/packages/jobs/jobs/README.i18n.yaml +++ b/packages/jobs/jobs/README.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write packages/jobs/jobs/README.md -README.md: 81786dfca1095c311e2ded3cd4140fa7997e2158 -README.zh.md: 5e27e7dad5286fc9ef758ca8633488495409ce37 +README.md: d6c49afad688f3a7bc4bb15de46fdd859235514c +README.zh.md: b05e433325b95870aa255bc9f8232ae199c95006 diff --git a/packages/jobs/jobs/README.md b/packages/jobs/jobs/README.md index 81786dfca1..d6c49afad6 100644 --- a/packages/jobs/jobs/README.md +++ b/packages/jobs/jobs/README.md @@ -97,7 +97,7 @@ Read these pages when the package-level contract is not enough. They move from t - [Process-local registry](../jobs-local/README.md) — the shipped implementation that runs jobs in this process. - [Model-facing job controls](../tool-jobs/README.md) — the `job_output`, `job_list`, and `job_kill` tools and completion notices. - [Generic long-running tool runtime Agent Note](../../../.agents/notes/implemented/architecture/2026-06-20-generic-long-running-tool-runtime.md) — the design behind the background-job runtime. -- [job-registry seam Agent Note](../../../.agents/notes/implemented/architecture/2026-07-26-job-registry-seam.md) — the owner-fenced registry contract and its rationale. +- [job-registry seam Agent Note](../../../.agents/notes/archived/architecture/2026-07-26-job-registry-seam.md) — the owner-fenced registry contract and its rationale. ----- diff --git a/packages/jobs/jobs/README.zh.md b/packages/jobs/jobs/README.zh.md index 5e27e7dad5..b05e433325 100644 --- a/packages/jobs/jobs/README.zh.md +++ b/packages/jobs/jobs/README.zh.md @@ -97,7 +97,7 @@ kind: "package-reference" - [进程本地注册表](../jobs-local/README.zh.md)——在本进程中运行任务的随附实现。 - [模型侧任务控制](../tool-jobs/README.zh.md)——`job_output`、`job_list` 与 `job_kill` 工具及完成通知。 - [通用长时间运行工具运行时 Agent Note](../../../.agents/notes/implemented/architecture/2026-06-20-generic-long-running-tool-runtime.zh.md)——后台任务运行时背后的设计。 -- [任务注册表 seam Agent Note](../../../.agents/notes/implemented/architecture/2026-07-26-job-registry-seam.zh.md)——按所有者隔离的注册表约定及其理由。 +- [任务注册表 seam Agent Note](../../../.agents/notes/archived/architecture/2026-07-26-job-registry-seam.md)——按所有者隔离的注册表约定及其理由。 ----- diff --git a/packages/jobs/tool-jobs/README.i18n.yaml b/packages/jobs/tool-jobs/README.i18n.yaml index ca617bc8fb..a201cc6f4b 100644 --- a/packages/jobs/tool-jobs/README.i18n.yaml +++ b/packages/jobs/tool-jobs/README.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write packages/jobs/tool-jobs/README.md -README.md: bb9fea89b4aabe38296c01c910f36e99244680db -README.zh.md: 9820b1536f7f5c8860e7f67b1eee956e6d240462 +README.md: 57176af18b221759b335aac249a71d71056be125 +README.zh.md: 279800b11c1dabb7c599446674cb6baf845382ed diff --git a/packages/jobs/tool-jobs/README.md b/packages/jobs/tool-jobs/README.md index bb9fea89b4..57176af18b 100644 --- a/packages/jobs/tool-jobs/README.md +++ b/packages/jobs/tool-jobs/README.md @@ -108,7 +108,7 @@ Read these pages when the package-level contract is not enough. They move from t - [Process-local registry](../jobs-local/README.md) — where jobs run in this process. - [Generated tool catalog](../../../docs/tool-catalog.md#deepseek-aidsh-tool-jobs) — the exact `job_output`, `job_list`, and `job_kill` schemas. - [Generated configuration catalog](../../../docs/config-catalog.md#deepseek-aidsh-tool-jobs) — every accepted config field and its source declaration. -- [job-registry seam Agent Note](../../../.agents/notes/implemented/architecture/2026-07-26-job-registry-seam.md) — the owner-fenced registry contract and its rationale. +- [job-registry seam Agent Note](../../../.agents/notes/archived/architecture/2026-07-26-job-registry-seam.md) — the owner-fenced registry contract and its rationale. ----- diff --git a/packages/jobs/tool-jobs/README.zh.md b/packages/jobs/tool-jobs/README.zh.md index 9820b1536f..279800b11c 100644 --- a/packages/jobs/tool-jobs/README.zh.md +++ b/packages/jobs/tool-jobs/README.zh.md @@ -108,7 +108,7 @@ kind: "package-reference" - [进程本地注册表](../jobs-local/README.zh.md)——任务在本进程中的运行位置。 - [生成的工具目录](../../../docs/tool-catalog.zh.md#deepseek-aidsh-tool-jobs)——`job_output`、`job_list` 与 `job_kill` 的确切 schema。 - [生成的配置目录](../../../docs/config-catalog.zh.md#deepseek-aidsh-tool-jobs)——每个受支持配置字段及其源声明。 -- [任务注册表 seam Agent Note](../../../.agents/notes/implemented/architecture/2026-07-26-job-registry-seam.zh.md)——按所有者隔离的注册表约定及其理由。 +- [任务注册表 seam Agent Note](../../../.agents/notes/archived/architecture/2026-07-26-job-registry-seam.md)——按所有者隔离的注册表约定及其理由。 ----- diff --git a/packages/llm/README.i18n.yaml b/packages/llm/README.i18n.yaml index 1d8686fe17..25e569fd0f 100644 --- a/packages/llm/README.i18n.yaml +++ b/packages/llm/README.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write packages/llm/README.md -README.md: f3880d009f3553808a6c263766410fcfeca76e90 -README.zh.md: 0d94b5de4d5f111bf4db0f94e93fade3ae471db1 +README.md: 9f7e8f444345bb60677a57679ad559f1e06be83f +README.zh.md: 5030a71a256af0d59dcf8d8e4875c0b9790e7a55 diff --git a/packages/llm/README.md b/packages/llm/README.md index f3880d009f..9f7e8f4443 100644 --- a/packages/llm/README.md +++ b/packages/llm/README.md @@ -41,7 +41,6 @@ The llm group provides the harness's model-call capability: one provider-neutral - [Token meter subsystem](../../docs/subsystems/token-meter.md) — the measurement semantics behind `ctx.tokenMeter`. - [Twin LLM adapters](../../.agents/notes/implemented/architecture/2026-06-13-twin-llm-adapters.md) — why the DeepSeek route ships two structurally different adapters. - [Routed model context](../../.agents/notes/implemented/architecture/2026-07-20-routed-model-context-and-compaction-policy.md) — how the loop routes model requests and compacts context. -- [Replay token meter service](../../.agents/notes/implemented/architecture/2026-07-15-replay-token-meter-service.md) — the design behind replay-aware measurement. ## Dev Note diff --git a/packages/llm/README.zh.md b/packages/llm/README.zh.md index 0d94b5de4d..5030a71a25 100644 --- a/packages/llm/README.zh.md +++ b/packages/llm/README.zh.md @@ -41,7 +41,6 @@ llm 组提供 harness 的模型调用能力:一个提供方无关的服务, - [Token 计量子系统](../../docs/subsystems/token-meter.zh.md)——`ctx.tokenMeter` 背后的测量语义。 - [孪生 LLM 适配器](../../.agents/notes/implemented/architecture/2026-06-13-twin-llm-adapters.zh.md)——为什么 DeepSeek 路由交付两个结构不同的适配器。 - [按路由的模型上下文](../../.agents/notes/implemented/architecture/2026-07-20-routed-model-context-and-compaction-policy.zh.md)——loop 如何路由模型请求并压缩上下文。 -- [回放 token 计量服务](../../.agents/notes/implemented/architecture/2026-07-15-replay-token-meter-service.zh.md)——具备回放感知的计量背后的设计。 ## 开发备注 diff --git a/packages/lsp/README.i18n.yaml b/packages/lsp/README.i18n.yaml index 9882f336f9..c7f021c7a4 100644 --- a/packages/lsp/README.i18n.yaml +++ b/packages/lsp/README.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write packages/lsp/README.md -README.md: 34d6bfa030223fba4591170c8e925cc4e3b8ead4 -README.zh.md: d90a1820559c885e30bfb1e23a7e0cebc6dd063e +README.md: b0c954ebee41fd9d7839320ec3e21c92000e0c3a +README.zh.md: 29fb8471c14d6969bc49835f1391b0c4f5618763 diff --git a/packages/lsp/README.md b/packages/lsp/README.md index 34d6bfa030..b0c954ebee 100644 --- a/packages/lsp/README.md +++ b/packages/lsp/README.md @@ -36,7 +36,6 @@ Providers register capabilities, not tools: `tool-lsp` is the only owner of the ## Related documentation - [LSP navigation subsystem](../../docs/subsystems/lsp.md) — operations, coordinates, requests and results, and `LspError` codes. -- [LSP capability seam Agent Note](../../.agents/notes/implemented/architecture/2026-07-15-lsp-capability-seam.md) — design rationale, alternatives, and deliberately deferred API. - [Generated tool catalog](../../docs/tool-catalog.md#deepseek-aidsh-tool-lsp) — the `lsp` schema the model receives. ----- diff --git a/packages/lsp/README.zh.md b/packages/lsp/README.zh.md index d90a182055..29fb8471c1 100644 --- a/packages/lsp/README.zh.md +++ b/packages/lsp/README.zh.md @@ -36,7 +36,6 @@ lsp 组为 agent 提供精确的、由语言服务器支撑的代码导航:转 ## 相关文档 - [LSP 导航子系统](../../docs/subsystems/lsp.zh.md)——操作、坐标、请求与结果,以及 `LspError` code。 -- [LSP 能力 seam Agent Note](../../.agents/notes/implemented/architecture/2026-07-15-lsp-capability-seam.zh.md)——设计原理、备选方案与刻意推迟的 API。 - [生成的工具目录](../../docs/tool-catalog.zh.md#deepseek-aidsh-tool-lsp)——模型接收的 `lsp` schema。 ----- diff --git a/packages/lsp/lsp-stdio/README.i18n.yaml b/packages/lsp/lsp-stdio/README.i18n.yaml index d8454b9a48..56f4a4295b 100644 --- a/packages/lsp/lsp-stdio/README.i18n.yaml +++ b/packages/lsp/lsp-stdio/README.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write packages/lsp/lsp-stdio/README.md -README.md: 8cb7fbcc761b72dac7c291040c390de7ebf49b99 -README.zh.md: 4186e8c1b66b0f2e66ace8f82c76fce58cf00a49 +README.md: c19c3892d77680899f00c52582a7cfdce1cca9b5 +README.zh.md: 696f4758f94cc765c5149da7d8e615284f6a5d19 diff --git a/packages/lsp/lsp-stdio/README.md b/packages/lsp/lsp-stdio/README.md index 8cb7fbcc76..c19c3892d7 100644 --- a/packages/lsp/lsp-stdio/README.md +++ b/packages/lsp/lsp-stdio/README.md @@ -119,10 +119,9 @@ Initialization advertises UTF-16 positions, workspace folders and configuration, ## Further Exploration -Read these pages when the package-level contract is not enough. They move from the shared navigation model to the seam, the tool, and the decision evidence. +Read these pages when the package-level contract is not enough. They move from the shared navigation model to the seam and the tool. - [LSP navigation subsystem](../../../docs/subsystems/lsp.md) — operations, coordinates, requests and results, and `LspError` codes. -- [LSP capability seam Agent Note](../../../.agents/notes/implemented/architecture/2026-07-15-lsp-capability-seam.md) — design rationale, alternatives, and deliberately deferred API. - [dsh-lsp](../lsp/README.md) — the seam this provider registers against. - [dsh-tool-lsp](../tool-lsp/README.md) — the model-facing tool over the seam. - [lsp group map](../README.md) — the three-package family and its related documentation. diff --git a/packages/lsp/lsp-stdio/README.zh.md b/packages/lsp/lsp-stdio/README.zh.md index 4186e8c1b6..696f4758f9 100644 --- a/packages/lsp/lsp-stdio/README.zh.md +++ b/packages/lsp/lsp-stdio/README.zh.md @@ -119,10 +119,9 @@ kind: "package-reference" ## 进一步探索 -当包级约定不够用时阅读以下页面。它们从共享的导航模型逐步进入 seam、工具与决策证据。 +当包级约定不够用时阅读以下页面。它们从共享的导航模型逐步进入 seam 与工具。 - [LSP 导航子系统](../../../docs/subsystems/lsp.zh.md)——操作、坐标、请求与结果,以及 `LspError` code。 -- [LSP 能力 seam Agent Note](../../../.agents/notes/implemented/architecture/2026-07-15-lsp-capability-seam.zh.md)——设计原理、备选方案与刻意推迟的 API。 - [dsh-lsp](../lsp/README.zh.md)——本提供方注册到的 seam。 - [dsh-tool-lsp](../tool-lsp/README.zh.md)——基于该 seam 的面向模型工具。 - [lsp 组地图](../README.zh.md)——三个包的家族及其相关文档。 diff --git a/packages/lsp/lsp/README.i18n.yaml b/packages/lsp/lsp/README.i18n.yaml index f031981aa9..c9a85352ad 100644 --- a/packages/lsp/lsp/README.i18n.yaml +++ b/packages/lsp/lsp/README.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write packages/lsp/lsp/README.md -README.md: 119ddf8775e37fa32e4db123ea2418d0d8c8bbb2 -README.zh.md: 138dc9599c3e41710f5fcfc4cc62452cab378bbe +README.md: 4342bf1ad02fb312a5d6617d279ed583f6209a48 +README.zh.md: 83d662f06ef1287726f8d48a50b098a545e4a67e diff --git a/packages/lsp/lsp/README.md b/packages/lsp/lsp/README.md index 119ddf8775..4342bf1ad0 100644 --- a/packages/lsp/lsp/README.md +++ b/packages/lsp/lsp/README.md @@ -100,10 +100,9 @@ Registration and disposal run through `ctx.effect()`, so provider routes live an ## Further Exploration -Read these pages when the package-level contract is not enough. They move from the shared navigation model to the provider, the tool, and the decision evidence. +Read these pages when the package-level contract is not enough. They move from the shared navigation model to the provider and the tool. - [LSP navigation subsystem](../../../docs/subsystems/lsp.md) — operations, coordinates, requests and results, and `LspError` codes. -- [LSP capability seam Agent Note](../../../.agents/notes/implemented/architecture/2026-07-15-lsp-capability-seam.md) — design rationale, alternatives, and deliberately deferred API. - [dsh-lsp-stdio](../lsp-stdio/README.md) — the stdio provider that registers against this seam. - [dsh-tool-lsp](../tool-lsp/README.md) — the model-facing tool over this seam. - [lsp group map](../README.md) — the three-package family and its related documentation. @@ -126,7 +125,7 @@ No direct invalidation; `dsh-tool-lsp` owns request-prefix changes. These limits define the seam's current scope. They are package constraints, not a task backlog. -- **Exclusive extension ownership within one runtime** — two providers cannot both claim `.ts`, even with different language ids; overlaps fail registration. A deployment-configured selector above registrations is the intended extension, which can relax exclusive reservation without adding provider choice to model input ([seam Agent Note](../../../.agents/notes/implemented/architecture/2026-07-15-lsp-capability-seam.md)). +- **Exclusive extension ownership within one runtime** — two providers cannot both claim `.ts`, even with different language ids; overlaps fail registration. A deployment-configured selector above registrations is the intended extension, which can relax exclusive reservation without adding provider choice to model input. - **Four read-only operations only** — symbols and call hierarchy are deferred because they need different schemas; diagnostics need separate freshness and accumulation rules; mutations (rename, code actions, formatting) require separate tools with preview, permission, and write-policy integration. - **No observation API** — availability is observed only by running `query()` and routing the thrown `LspError` codes; there is no provider-change event or capability-status query. diff --git a/packages/lsp/lsp/README.zh.md b/packages/lsp/lsp/README.zh.md index 138dc9599c..83d662f06e 100644 --- a/packages/lsp/lsp/README.zh.md +++ b/packages/lsp/lsp/README.zh.md @@ -100,10 +100,9 @@ seam 需要提供方与消费方才能发挥作用。最小组合挂载服务、 ## 进一步探索 -当包级约定不够用时阅读以下页面。它们从共享的导航模型逐步进入提供方、工具与决策证据。 +当包级约定不够用时阅读以下页面。它们从共享的导航模型逐步进入提供方与工具。 - [LSP 导航子系统](../../../docs/subsystems/lsp.zh.md)——操作、坐标、请求与结果,以及 `LspError` code。 -- [LSP 能力 seam Agent Note](../../../.agents/notes/implemented/architecture/2026-07-15-lsp-capability-seam.zh.md)——设计原理、备选方案与刻意推迟的 API。 - [dsh-lsp-stdio](../lsp-stdio/README.zh.md)——注册到该 seam 的 stdio 提供方。 - [dsh-tool-lsp](../tool-lsp/README.zh.md)——基于该 seam 的面向模型工具。 - [lsp 组地图](../README.zh.md)——三个包的家族及其相关文档。 @@ -126,7 +125,7 @@ seam 需要提供方与消费方才能发挥作用。最小组合挂载服务、 这些限制定义 seam 当前的范围。它们是包约束,不是任务积压。 -- **同一运行时内扩展名归属互斥**——两个提供方不能同时声明 `.ts`,即使 language id 不同;重叠会使注册失败。预期扩展是在注册之上增加部署配置的 selector,它可以在不把提供方选择加入模型输入的前提下放宽互斥保留(见 [seam Agent Note](../../../.agents/notes/implemented/architecture/2026-07-15-lsp-capability-seam.zh.md))。 +- **同一运行时内扩展名归属互斥**——两个提供方不能同时声明 `.ts`,即使 language id 不同;重叠会使注册失败。预期扩展是在注册之上增加部署配置的 selector,它可以在不把提供方选择加入模型输入的前提下放宽互斥保留。 - **仅四种只读操作**——symbol 与 call hierarchy 因需要不同 schema 而推迟;diagnostics 需要独立的新鲜度与累积规则;修改(重命名、code action、格式化)需要独立工具,并集成预览、权限与写入策略。 - **没有观测表层**——可用性只能通过运行 `query()` 并按抛出的 `LspError` code 路由来观测;没有提供方变更事件或能力状态查询。 diff --git a/packages/lsp/tool-lsp/README.i18n.yaml b/packages/lsp/tool-lsp/README.i18n.yaml index 641de89fb3..ee25703b99 100644 --- a/packages/lsp/tool-lsp/README.i18n.yaml +++ b/packages/lsp/tool-lsp/README.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write packages/lsp/tool-lsp/README.md -README.md: 437cd4a35ca58a43bcc0af7c0f81d7fcddb4812f -README.zh.md: f67f1cdff8a55857dc63e994958191953d7d0158 +README.md: dcba3b7d974cd30ac03eb8a87bc92c1788b09b27 +README.zh.md: f32bbf6f356815d83e45a617fa7bd85096e04bbc diff --git a/packages/lsp/tool-lsp/README.md b/packages/lsp/tool-lsp/README.md index 437cd4a35c..dcba3b7d97 100644 --- a/packages/lsp/tool-lsp/README.md +++ b/packages/lsp/tool-lsp/README.md @@ -84,10 +84,9 @@ This section explains the design decisions behind the tool and where the code re ## Further Exploration -Read these pages when the package-level contract is not enough. They move from the model-facing surface to the seam, the provider, and the decision evidence. +Read these pages when the package-level contract is not enough. They move from the model-facing surface to the seam and the provider. - [LSP navigation subsystem](../../../docs/subsystems/lsp.md) — operations, coordinates, requests and results, and `LspError` codes. -- [LSP capability seam Agent Note](../../../.agents/notes/implemented/architecture/2026-07-15-lsp-capability-seam.md) — design rationale, alternatives, and deliberately deferred API. - [dsh-lsp](../lsp/README.md) — the seam this tool queries. - [dsh-lsp-stdio](../lsp-stdio/README.md) — the stdio provider that answers these queries. - [lsp group map](../README.md) — the three-package family and its related documentation. @@ -166,7 +165,7 @@ None; UI presentation is outside the model request. These limits define when the tool is a poor fit. They are current package constraints, not a task backlog. -- **UTF-16 cursor coordinates** — columns are exact for the protocol but hard for a model to count around non-BMP characters; an off-symbol position may return empty results, so the prompt explains the convention without encouraging broad LSP use ([seam Agent Note](../../../.agents/notes/implemented/architecture/2026-07-15-lsp-capability-seam.md)). +- **UTF-16 cursor coordinates** — columns are exact for the protocol but hard for a model to count around non-BMP characters; an off-symbol position may return empty results, so the prompt explains the convention without encouraging broad LSP use. - **No cross-server completeness promise** — supported servers may return empty or partial results depending on indexing readiness; the tool promises no completeness across languages or servers. diff --git a/packages/lsp/tool-lsp/README.zh.md b/packages/lsp/tool-lsp/README.zh.md index f67f1cdff8..f32bbf6f35 100644 --- a/packages/lsp/tool-lsp/README.zh.md +++ b/packages/lsp/tool-lsp/README.zh.md @@ -84,10 +84,9 @@ kind: "package-reference" ## 进一步探索 -当包级约定不够用时阅读以下页面。它们从面向模型的表层逐步进入 seam、提供方与决策证据。 +当包级约定不够用时阅读以下页面。它们从面向模型的表层逐步进入 seam 与提供方。 - [LSP 导航子系统](../../../docs/subsystems/lsp.zh.md)——操作、坐标、请求与结果,以及 `LspError` code。 -- [LSP 能力 seam Agent Note](../../../.agents/notes/implemented/architecture/2026-07-15-lsp-capability-seam.zh.md)——设计原理、备选方案与刻意推迟的 API。 - [dsh-lsp](../lsp/README.zh.md)——本工具查询的 seam。 - [dsh-lsp-stdio](../lsp-stdio/README.zh.md)——应答这些查询的 stdio 提供方。 - [lsp 组地图](../README.zh.md)——三个包的家族及其相关文档。 @@ -166,7 +165,7 @@ Use search/read for ordinary navigation. Use lsp when textual matches are ambigu 这些限制说明该工具何时不太合适。它们是当前包约束,不是任务积压。 -- **UTF-16 光标坐标**——列坐标与协议精确一致,但模型难以在非 BMP 字符周围计数;未落在符号上的位置可能返回空结果,因此提示词解释了该约定,但不鼓励广泛使用 LSP(见 [seam Agent Note](../../../.agents/notes/implemented/architecture/2026-07-15-lsp-capability-seam.zh.md))。 +- **UTF-16 光标坐标**——列坐标与协议精确一致,但模型难以在非 BMP 字符周围计数;未落在符号上的位置可能返回空结果,因此提示词解释了该约定,但不鼓励广泛使用 LSP。 - **不承诺跨服务器完整性**——受支持的服务器仍可能根据索引就绪情况返回空或部分结果;该工具不承诺跨语言或服务器的完整性。 diff --git a/packages/mcp/README.i18n.yaml b/packages/mcp/README.i18n.yaml index 96fddd60b6..cc760bf5d7 100644 --- a/packages/mcp/README.i18n.yaml +++ b/packages/mcp/README.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write packages/mcp/README.md -README.md: fb83a911d5c11df520eb248d9fe7438a98b745c7 -README.zh.md: 32a85fa99e617ad6bb45635ff346ebab5250ba09 +README.md: 9b8777e414133dbd12519eeaf1926eb587d2547e +README.zh.md: bdc5b88e32b9ac2a1ccb4dccc16d3968fefe5e1c diff --git a/packages/mcp/README.md b/packages/mcp/README.md index fb83a911d5..9b8777e414 100644 --- a/packages/mcp/README.md +++ b/packages/mcp/README.md @@ -33,11 +33,9 @@ The group holds one package; the package README and the links below own the deta ## Related documentation -Try the worked example configurations to see the plugin in action, then read the Agent Notes for the behavior decisions behind it. +Try the worked example configurations to see the plugin in action, then read the Agent Note for the behavior decisions behind it. - [MCP client plugin Agent Note](../../.agents/notes/implemented/feature/2026-07-07-mcp-client-plugin.md) — the bridge's design: server-qualified naming, discovery, execution, and environment scrubbing. -- [MCP client auto-reconnect Agent Note](../../.agents/notes/implemented/feature/2026-08-06-mcp-client-auto-reconnect.md) — the reconnect policy, the per-outage attempt budget, and the opt-out. -- [Third-party memory MCP examples Agent Note](../../.agents/notes/implemented/feature/2026-07-31-third-party-memory-mcp-examples.md) — three default-off memory-server overlays delivered as reference configurations. - [Third-party memory MCP guide](../../docs/user/guide/mcp-memory.md) — runnable overlay rows and setup instructions. - [Tools subsystem reference](../../docs/subsystems/tools.md) — the `ToolRuntime` that receives the registered tools. diff --git a/packages/mcp/README.zh.md b/packages/mcp/README.zh.md index 32a85fa99e..bdc5b88e32 100644 --- a/packages/mcp/README.zh.md +++ b/packages/mcp/README.zh.md @@ -36,8 +36,6 @@ kind: "package-group" 先用可运行的示例配置体验插件,再阅读 Agent Note 了解其背后的行为决策。 - [MCP 客户端插件 Agent Note](../../.agents/notes/implemented/feature/2026-07-07-mcp-client-plugin.zh.md)——桥接的设计:服务器限定命名、发现、执行与环境清洗。 -- [MCP 客户端自动重连 Agent Note](../../.agents/notes/implemented/feature/2026-08-06-mcp-client-auto-reconnect.zh.md)——重连策略、单次中断的尝试预算与退出开关。 -- [第三方记忆 MCP 示例 Agent Note](../../.agents/notes/implemented/feature/2026-07-31-third-party-memory-mcp-examples.zh.md)——作为参考配置交付的三个默认关闭的记忆服务器 overlay。 - [第三方记忆 MCP 指南](../../docs/user/guide/mcp-memory.zh.md)——可运行的 overlay 配置行与设置说明。 - [工具子系统参考](../../docs/subsystems/tools.zh.md)——接收已注册工具的 `ToolRuntime`。 diff --git a/packages/mcp/mcp-client/README.i18n.yaml b/packages/mcp/mcp-client/README.i18n.yaml index 44f33721eb..a42f3b870c 100644 --- a/packages/mcp/mcp-client/README.i18n.yaml +++ b/packages/mcp/mcp-client/README.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write packages/mcp/mcp-client/README.md -README.md: f4979b6a2c9a7cfdbbb11cf7526688ce2549f184 -README.zh.md: e18e05a2a74944ace14f4cca7807dd3456e32dd1 +README.md: 19e0d46f54ae1f67dc3361d9694ce5b8fb348e4e +README.zh.md: a89245cd272cdb5c0f7c405b196a7e8b51ec9238 diff --git a/packages/mcp/mcp-client/README.md b/packages/mcp/mcp-client/README.md index f4979b6a2c..19e0d46f54 100644 --- a/packages/mcp/mcp-client/README.md +++ b/packages/mcp/mcp-client/README.md @@ -120,7 +120,7 @@ This section explains the design decisions behind the bridge and points at the c ### Lifecycle and sync -`apply` resolves the reconnect policy, reserves the `serverName` inside the current registration scope, starts the supervisor, and awaits the initial connection plus discovery. Independent Agent scopes may reuse the same namespace because their tools and transports are isolated; a duplicate inside one scope fails at load. The supervisor serializes every sync — initial, notification, and reconnect — through one queue so two syncs can never interleave their dispose-previous/register-next swap. Disposal cancels pending reconnects, closes the live client, waits for the in-flight attempt and queued syncs to quiesce, and unregisters the current generation. The [auto-reconnect Agent Note](../../../.agents/notes/implemented/feature/2026-08-06-mcp-client-auto-reconnect.md) owns the reconnect decision. +`apply` resolves the reconnect policy, reserves the `serverName` inside the current registration scope, starts the supervisor, and awaits the initial connection plus discovery. Independent Agent scopes may reuse the same namespace because their tools and transports are isolated; a duplicate inside one scope fails at load. The supervisor serializes every sync — initial, notification, and reconnect — through one queue so two syncs can never interleave their dispose-previous/register-next swap. Disposal cancels pending reconnects, closes the live client, waits for the in-flight attempt and queued syncs to quiesce, and unregisters the current generation. The supervisor listens for `notifications/tools/list_changed` and queues a re-sync; a fetch-phase failure keeps the previous generation registered, while a registration conflict rolls back the attempted generation. Each outage shares one attempt budget: after `maxAttempts` consecutive failures the tools are unregistered and reconnection stops, and a connection that stays up past `maxDelayMs` resets the budget. @@ -143,7 +143,6 @@ Read these pages when the package-level contract is not enough. They move from t - [Tools subsystem reference](../../../docs/subsystems/tools.md) — the `ToolRuntime` and `ctx.tools.register()` contract that receives the bridged tools. - [MCP client plugin Agent Note](../../../.agents/notes/implemented/feature/2026-07-07-mcp-client-plugin.md) — the naming invariants, discovery and execution design, alternatives, and consequences. -- [MCP client auto-reconnect Agent Note](../../../.agents/notes/implemented/feature/2026-08-06-mcp-client-auto-reconnect.md) — the reconnect policy, attempt budget, and opt-out rationale. - [Canonical tool output contract Agent Note](../../../.agents/notes/implemented/architecture/2026-07-20-canonical-tool-output-contract.md) — how MCP results map into the canonical tool-output contract. - [Third-party memory MCP guide](../../../docs/user/guide/mcp-memory.md) — three memory-server overlays using this package. - [Generated configuration catalog](../../../docs/config-catalog.md#deepseek-aidsh-mcp-client) — every accepted config field and its source declaration. diff --git a/packages/mcp/mcp-client/README.zh.md b/packages/mcp/mcp-client/README.zh.md index e18e05a2a7..a89245cd27 100644 --- a/packages/mcp/mcp-client/README.zh.md +++ b/packages/mcp/mcp-client/README.zh.md @@ -120,7 +120,7 @@ kind: "package-reference" ### 生命周期与同步 -`apply` 解析重连策略、在当前注册作用域内预留 `serverName`、启动监督器,并等待初始连接加发现完成。独立 Agent 作用域可以复用相同 namespace,因为其工具与传输彼此隔离;同一作用域内重复会在加载时失败。监督器把所有同步——初始、通知与重连——串行到同一条队列,因此两次同步绝不会交错执行各自的先 dispose 后注册交换。dispose 会取消待执行的重连、关闭活动客户端、等待进行中的尝试与排队同步完全停稳,然后注销当前世代。[自动重连 Agent Note](../../../.agents/notes/implemented/feature/2026-08-06-mcp-client-auto-reconnect.zh.md) 拥有重连决策。 +`apply` 解析重连策略、在当前注册作用域内预留 `serverName`、启动监督器,并等待初始连接加发现完成。独立 Agent 作用域可以复用相同 namespace,因为其工具与传输彼此隔离;同一作用域内重复会在加载时失败。监督器把所有同步——初始、通知与重连——串行到同一条队列,因此两次同步绝不会交错执行各自的先 dispose 后注册交换。dispose 会取消待执行的重连、关闭活动客户端、等待进行中的尝试与排队同步完全停稳,然后注销当前世代。 监督器监听 `notifications/tools/list_changed` 并排队一次重新同步;获取阶段失败时保留上一世代注册,注册冲突则回滚本次尝试的世代。每次中断共享一个尝试预算:连续失败达到 `maxAttempts` 次后工具被注销、重连停止;连接存活超过 `maxDelayMs` 会重置预算。 @@ -143,7 +143,6 @@ kind: "package-reference" - [工具子系统参考](../../../docs/subsystems/tools.zh.md)——接收已桥接工具的 `ToolRuntime` 与 `ctx.tools.register()` 约定。 - [MCP 客户端插件 Agent Note](../../../.agents/notes/implemented/feature/2026-07-07-mcp-client-plugin.zh.md)——命名不变式、发现与执行设计、备选方案与后果。 -- [MCP 客户端自动重连 Agent Note](../../../.agents/notes/implemented/feature/2026-08-06-mcp-client-auto-reconnect.zh.md)——重连策略、尝试预算与退出开关的依据。 - [规范工具输出约定 Agent Note](../../../.agents/notes/implemented/architecture/2026-07-20-canonical-tool-output-contract.zh.md)——MCP 结果如何映射进规范工具输出约定。 - [第三方记忆 MCP 指南](../../../docs/user/guide/mcp-memory.zh.md)——使用本包的三份记忆服务器 overlay。 - [生成配置目录](../../../docs/config-catalog.zh.md#deepseek-aidsh-mcp-client)——每个受支持配置字段及其源声明。 diff --git a/packages/preset/README.i18n.yaml b/packages/preset/README.i18n.yaml index ab5d02d30f..1d64ba605f 100644 --- a/packages/preset/README.i18n.yaml +++ b/packages/preset/README.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write packages/preset/README.md -README.md: 2a9bdcc0e5d63e0b5cf6cdcded5ea0d228ec8d29 -README.zh.md: ddb94513c93eb3262b29c1b10d725b299652aa32 +README.md: efb1c44e2f9a0a5a0222178c16784a62c1107404 +README.zh.md: b4e4e336d2b09ff40f7f7369ac257a9349f8df80 diff --git a/packages/preset/README.md b/packages/preset/README.md index 2a9bdcc0e5..efb1c44e2f 100644 --- a/packages/preset/README.md +++ b/packages/preset/README.md @@ -36,7 +36,6 @@ The preset group provides per-session agent composition: an agent preset is a di - [Scope subsystem](../../docs/subsystems/scope.md) — scope keys and the parent chain the mount uses to join agents. - [System prompt subsystem](../../docs/subsystems/system-prompt.md) — how preset prompt sections register and assemble. - [Per-session agent presets note](../../.agents/notes/implemented/architecture/2026-08-03-per-session-agent-presets.md) — design rationale and alternatives. -- [Per-preset standing mounts note](../../.agents/notes/implemented/architecture/2026-08-08-per-preset-standing-mounts.md) — why the mount is standing and shared. The presets the deployment ships live in [`agent-presets/presets/`](agent-presets/presets) — one directory per preset, and that directory listing is the roster; naming them here too would be a second list to keep in step. diff --git a/packages/preset/README.zh.md b/packages/preset/README.zh.md index ddb94513c9..b4e4e336d2 100644 --- a/packages/preset/README.zh.md +++ b/packages/preset/README.zh.md @@ -36,7 +36,6 @@ preset 组提供按会话的 agent(智能体)组装:agent preset 是一个 - [Scope 子系统](../../docs/subsystems/scope.zh.md)——scope key 与挂载用以加入 agent 的父链。 - [系统提示词子系统](../../docs/subsystems/system-prompt.zh.md)——preset 提示词段落如何注册与组装。 - [按会话组装 agent preset 的 Agent Note](../../.agents/notes/implemented/architecture/2026-08-03-per-session-agent-presets.zh.md)——设计理由与备选方案。 -- [按 preset 常驻挂载的 Agent Note](../../.agents/notes/implemented/architecture/2026-08-08-per-preset-standing-mounts.zh.md)——挂载为何是常驻且共享的。 部署交付的 preset 位于 [`agent-presets/presets/`](agent-presets/presets)——一个 preset 一个目录,那份目录列表就是名单;在这里再列一遍只会多出一份需要同步的名单。 diff --git a/packages/preset/agent-presets/README.i18n.yaml b/packages/preset/agent-presets/README.i18n.yaml index 7e482db6c2..9f92726312 100644 --- a/packages/preset/agent-presets/README.i18n.yaml +++ b/packages/preset/agent-presets/README.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write packages/preset/agent-presets/README.md -README.md: 5ddc40cc28a28429522ed324e114134cb59210ff -README.zh.md: bdb187e7f7aeb9c529bc073de85ec1bb2d3b463a +README.md: 9797a998e0a29ae33ed00d55590556b5fc3ef1a9 +README.zh.md: 86d392ce8b20ea1ed9468a8c4ee2332824a4d851 diff --git a/packages/preset/agent-presets/README.md b/packages/preset/agent-presets/README.md index 5ddc40cc28..9797a998e0 100644 --- a/packages/preset/agent-presets/README.md +++ b/packages/preset/agent-presets/README.md @@ -149,7 +149,6 @@ Read these pages when the package-level contract is not enough; they move from t - [Session package map](../../session/README.md) — the durable session record a preset switch appends to. - [Generated configuration catalog](../../../docs/config-catalog.md#deepseek-aidsh-agent-presets) — every accepted config field and its source declaration. - [Per-session agent presets note](../../../.agents/notes/implemented/architecture/2026-08-03-per-session-agent-presets.md) — design rationale and alternatives. -- [Per-preset standing mounts note](../../../.agents/notes/implemented/architecture/2026-08-08-per-preset-standing-mounts.md) — why the mount is standing and shared. ----- diff --git a/packages/preset/agent-presets/README.zh.md b/packages/preset/agent-presets/README.zh.md index bdb187e7f7..86d392ce8b 100644 --- a/packages/preset/agent-presets/README.zh.md +++ b/packages/preset/agent-presets/README.zh.md @@ -149,7 +149,6 @@ agent-presets: - [会话包映射](../../session/README.zh.md)——preset 切换所追加的持久会话记录。 - [生成的配置目录](../../../docs/config-catalog.zh.md#deepseek-aidsh-agent-presets)——每个受支持配置字段及其源声明。 - [按会话组装 agent preset 的 Agent Note](../../../.agents/notes/implemented/architecture/2026-08-03-per-session-agent-presets.zh.md)——设计理由与备选方案。 -- [按 preset 常驻挂载的 Agent Note](../../../.agents/notes/implemented/architecture/2026-08-08-per-preset-standing-mounts.zh.md)——挂载为何是常驻且共享的。 ----- diff --git a/packages/runtime-diagnostics/README.i18n.yaml b/packages/runtime-diagnostics/README.i18n.yaml index 908f937c90..89f9a9e780 100644 --- a/packages/runtime-diagnostics/README.i18n.yaml +++ b/packages/runtime-diagnostics/README.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write packages/runtime-diagnostics/README.md -README.md: 097bfe8ac7865c19ee03bc5c88648fc7570b121e -README.zh.md: a088d80642ffe14b46c5eb64c0a68a0fcf72070b +README.md: cf52e03087fe7acbe1d07b277fc52c5d1c588788 +README.zh.md: d6ae23a023f1326eb2136629cd7178ef1173516c diff --git a/packages/runtime-diagnostics/README.md b/packages/runtime-diagnostics/README.md index 097bfe8ac7..cf52e03087 100644 --- a/packages/runtime-diagnostics/README.md +++ b/packages/runtime-diagnostics/README.md @@ -32,7 +32,6 @@ The runtime-diagnostics group provides runtime self-checking for DeepSeek Harnes ## Related documentation - [Runtime invariants subsystem](../../docs/subsystems/invariants.md) — the generated service reference: selection, installer, and companion contract. -- [Package-owned invariant service Agent Note](../../.agents/notes/implemented/architecture/2026-07-19-package-owned-invariant-service.md) — why checks live beside their owners and the registry owns selection and lifecycle. - [Invariant runtime contracts Agent Note](../../.agents/notes/implemented/architecture/2026-07-19-package-invariant-runtime-contracts.md) — what a runtime invariant may assert and the mechanical gate enforcing companion wiring. - [Package conventions](../AGENTS.md) — the `./invariant` companion rule every package follows. diff --git a/packages/runtime-diagnostics/README.zh.md b/packages/runtime-diagnostics/README.zh.md index a088d80642..d6ae23a023 100644 --- a/packages/runtime-diagnostics/README.zh.md +++ b/packages/runtime-diagnostics/README.zh.md @@ -32,7 +32,6 @@ runtime-diagnostics 组为 DeepSeek Harness 组合提供运行时自检:一个 ## 相关文档 - [运行时不变式子系统](../../docs/subsystems/invariants.zh.md)——生成的服务参考:选择、installer 与配套入口约定。 -- [包自有不变式服务 Agent Note](../../.agents/notes/implemented/architecture/2026-07-19-package-owned-invariant-service.zh.md)——检查为何放在归属者旁边,以及注册表为何拥有选择与生命周期。 - [不变式运行时约定 Agent Note](../../.agents/notes/implemented/architecture/2026-07-19-package-invariant-runtime-contracts.zh.md)——运行时不变量可以断言什么,以及强制配套入口接线的机械门禁。 - [包约定](../AGENTS.md)——每个包都必须遵循的 `./invariant` 配套入口规则。 diff --git a/packages/runtime-diagnostics/invariants/README.i18n.yaml b/packages/runtime-diagnostics/invariants/README.i18n.yaml index 4c894ee0bb..732d8ae65c 100644 --- a/packages/runtime-diagnostics/invariants/README.i18n.yaml +++ b/packages/runtime-diagnostics/invariants/README.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write packages/runtime-diagnostics/invariants/README.md -README.md: e825ef2ae01824d90f47f4789ece2cdfcaad83cb -README.zh.md: 52cf48783915b9c340acb578d3f57daa1025fe23 +README.md: 3841ca14f2236ddba1976926c13242b6f92bc16f +README.zh.md: fd32d89f69d1516c5a2d2ac6c4bd54f632197dae diff --git a/packages/runtime-diagnostics/invariants/README.md b/packages/runtime-diagnostics/invariants/README.md index e825ef2ae0..3841ca14f2 100644 --- a/packages/runtime-diagnostics/invariants/README.md +++ b/packages/runtime-diagnostics/invariants/README.md @@ -97,7 +97,7 @@ A violation throws an `InvariantError` from the context that reported it: it car
Implementation internals — click to expand -This section explains the design behind the registry; the observable behavior is covered in [Use this package](#use-this-package). The full decision rationale lives in the [invariant-service Agent Note](../../../.agents/notes/implemented/architecture/2026-07-19-package-owned-invariant-service.md). +This section explains the design behind the registry; the observable behavior is covered in [Use this package](#use-this-package). ### Design philosophy @@ -128,7 +128,6 @@ Read these pages when the package-level contract is not enough. They move from t - [Runtime invariants subsystem](../../../docs/subsystems/invariants.md) — the generated reference for `Config`, the installer, the service, and the companion contract. - [Generated configuration catalog](../../../docs/config-catalog.md#deepseek-aidsh-invariants) — every accepted config field and its source declaration. -- [Package-owned invariant service Agent Note](../../../.agents/notes/implemented/architecture/2026-07-19-package-owned-invariant-service.md) — why checks live beside their owners and the registry owns selection and lifecycle. - [Invariant runtime contracts Agent Note](../../../.agents/notes/implemented/architecture/2026-07-19-package-invariant-runtime-contracts.md) — what a runtime invariant may assert and the mechanical gate that enforces companion wiring. - [Runtime-diagnostics group map](../../README.md) — adjacent diagnostics packages. diff --git a/packages/runtime-diagnostics/invariants/README.zh.md b/packages/runtime-diagnostics/invariants/README.zh.md index 52cf487839..fd32d89f69 100644 --- a/packages/runtime-diagnostics/invariants/README.zh.md +++ b/packages/runtime-diagnostics/invariants/README.zh.md @@ -97,7 +97,7 @@ ctx.plugin(SessionInvariant)
实现细节——点击展开 -本节解释注册表背后的设计;可观察行为已在[使用本包](#use-this-package)中说明。完整决策理由见[不变式服务 Agent Note](../../../.agents/notes/implemented/architecture/2026-07-19-package-owned-invariant-service.zh.md)。 +本节解释注册表背后的设计;可观察行为已在[使用本包](#use-this-package)中说明。 ### 设计理念 @@ -128,7 +128,6 @@ ctx.plugin(SessionInvariant) - [运行时不变式子系统](../../../docs/subsystems/invariants.zh.md)——`Config`、installer、服务与配套入口约定的生成参考。 - [生成的配置目录](../../../docs/config-catalog.zh.md#deepseek-aidsh-invariants)——每个受支持配置字段及其源声明。 -- [包自有不变式服务 Agent Note](../../../.agents/notes/implemented/architecture/2026-07-19-package-owned-invariant-service.zh.md)——检查为何放在归属者旁边,以及注册表为何拥有选择与生命周期。 - [不变式运行时约定 Agent Note](../../../.agents/notes/implemented/architecture/2026-07-19-package-invariant-runtime-contracts.zh.md)——运行时不变量可以断言什么,以及强制配套入口接线的机械门禁。 - [runtime-diagnostics 组地图](../../README.zh.md)——相邻的诊断包。 diff --git a/packages/sandbox/sandbox-policy/README.i18n.yaml b/packages/sandbox/sandbox-policy/README.i18n.yaml index de883e647f..a4587a3ec6 100644 --- a/packages/sandbox/sandbox-policy/README.i18n.yaml +++ b/packages/sandbox/sandbox-policy/README.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write packages/sandbox/sandbox-policy/README.md -README.md: 2a6ef9be4b38e65ace8d0ae1586542f0872dfc69 -README.zh.md: 87c6149b7590cb39e4265ca4b8964df6cf2e91ad +README.md: d3069ac2169ab1c2af757c1e8294598efde123a7 +README.zh.md: 5121fd054d35d5acf59f4815e2d896cc1799270b diff --git a/packages/sandbox/sandbox-policy/README.md b/packages/sandbox/sandbox-policy/README.md index 2a6ef9be4b..d3069ac216 100644 --- a/packages/sandbox/sandbox-policy/README.md +++ b/packages/sandbox/sandbox-policy/README.md @@ -94,13 +94,11 @@ The `sandbox:policy` contribution states the mode's capability-neutral file-effe ## Further Exploration -Start with the subsystem reference for the shared vocabulary, then the seam contract, the cross-family decision, and the model-context decision. +Start with the subsystem reference for the shared vocabulary, then the seam contract and the cross-family decision. - [Process sandbox subsystem](../../../docs/subsystems/sandbox.md) — modes, per-call policy, and enforcement semantics. - [Sandbox seam package](../sandbox/README.md) — the confinement contract every enforcing capability implements. - [Cross-family file sandbox decision](../../../.agents/notes/implemented/feature/2026-07-14-cross-family-fs-sandbox.md) — why one shared policy home exists. -- [Current sandbox policy context decision](../../../.agents/notes/implemented/feature/2026-07-30-current-sandbox-policy-context.md) — how the policy reaches the model before each request. -- [Capability-neutral policy context decision](../../../.agents/notes/implemented/simplification/2026-07-31-capability-neutral-sandbox-policy-context.md) — why the contribution names no mounted capabilities. ----- diff --git a/packages/sandbox/sandbox-policy/README.zh.md b/packages/sandbox/sandbox-policy/README.zh.md index 87c6149b75..5121fd054d 100644 --- a/packages/sandbox/sandbox-policy/README.zh.md +++ b/packages/sandbox/sandbox-policy/README.zh.md @@ -94,13 +94,11 @@ kind: "package-reference" ## 进一步探索 -先从子系统参考文档了解共享词汇,再看 seam 约定、跨家族决策与模型上下文决策。 +先从子系统参考文档了解共享词汇,再看 seam 约定与跨家族决策。 - [进程沙箱子系统](../../../docs/subsystems/sandbox.zh.md)——模式、逐调用策略与强制执行语义。 - [沙箱 seam 包](../sandbox/README.zh.md)——每个强制执行能力实现的隔离约定。 - [跨家族文件沙箱决策](../../../.agents/notes/implemented/feature/2026-07-14-cross-family-fs-sandbox.zh.md)——为何存在统一的共享策略归属位置。 -- [当前沙箱策略上下文决策](../../../.agents/notes/implemented/feature/2026-07-30-current-sandbox-policy-context.zh.md)——策略如何在每次请求前到达模型。 -- [与具体能力无关的策略上下文决策](../../../.agents/notes/implemented/simplification/2026-07-31-capability-neutral-sandbox-policy-context.zh.md)——为何贡献不点名已挂载能力。 ----- diff --git a/packages/schedule/schedule/README.i18n.yaml b/packages/schedule/schedule/README.i18n.yaml index 2722f1e2a3..5c922858ea 100644 --- a/packages/schedule/schedule/README.i18n.yaml +++ b/packages/schedule/schedule/README.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write packages/schedule/schedule/README.md -README.md: 2b4c000e8bcbbe5fd8b9379db602c358dc5c192e -README.zh.md: 8ab9e847aacda95620820a8a67a9760285a01b1c +README.md: 6ed1cbdca15d74ced8a93d68ea218f71bdfa76d8 +README.zh.md: 8905abc7230415d1dbb6a201f1aca42517f7a4bd diff --git a/packages/schedule/schedule/README.md b/packages/schedule/schedule/README.md index 2b4c000e8b..6ed1cbdca1 100644 --- a/packages/schedule/schedule/README.md +++ b/packages/schedule/schedule/README.md @@ -134,9 +134,9 @@ Read these pages when the package-level contract is not enough. They move from t - [Session-local Schedule subsystem](../../../docs/subsystems/schedule.md) — durable record, transition, view, and delivery contracts with the exact type definitions. - [Generated tool catalog](../../../docs/tool-catalog.md#deepseek-aidsh-schedule) — the complete `schedule_create`, `schedule_list`, and `schedule_delete` schemas the model receives. - [Durable Web Schedule decision](../../../.agents/notes/implemented/feature/2026-08-05-durable-web-schedule.md) — persistence and lifecycle decisions behind the package. -- [Conversational delivery decision](../../../.agents/notes/implemented/simplification/2026-08-09-conversational-schedule-delivery.md) — the no-receipt boundary and follow-up delivery. +- [Conversational delivery decision](../../../.agents/notes/archived/simplification/2026-08-09-conversational-schedule-delivery.md) — the no-receipt boundary and follow-up delivery. - [Explicit time-zone boundary](../../../.agents/notes/implemented/simplification/2026-08-09-explicit-schedule-time-zone.md) — why the model must always pass an explicit zone. -- [Bounded fixed-rate Schedule](../../../.agents/notes/implemented/simplification/2026-08-09-bounded-fixed-rate-schedule.md) — recurrence scope: latest-only catch-up and batch delivery. +- [Bounded fixed-rate Schedule](../../../.agents/notes/archived/simplification/2026-08-09-bounded-fixed-rate-schedule.md) — recurrence scope: latest-only catch-up and batch delivery. - [Schedule user guide](../../../docs/user/guide/schedule.md) — the official configuration path for mounting this package with time-context. ----- diff --git a/packages/schedule/schedule/README.zh.md b/packages/schedule/schedule/README.zh.md index 8ab9e847aa..8905abc723 100644 --- a/packages/schedule/schedule/README.zh.md +++ b/packages/schedule/schedule/README.zh.md @@ -134,9 +134,9 @@ owner 把长等待拆分为有界的 timer 段,并在每次唤醒后重新读 - [仅限会话内的 Schedule 子系统](../../../docs/subsystems/schedule.zh.md)——带精确类型定义的持久记录、转换、视图与交付约定。 - [生成的工具目录](../../../docs/tool-catalog.zh.md#deepseek-aidsh-schedule)——模型接收的 `schedule_create`、`schedule_list` 与 `schedule_delete` 完整 schema。 - [持久 Web Schedule 决策](../../../.agents/notes/implemented/feature/2026-08-05-durable-web-schedule.zh.md)——本包背后的持久化与生命周期决策。 -- [对话式交付决策](../../../.agents/notes/implemented/simplification/2026-08-09-conversational-schedule-delivery.zh.md)——无回执边界与 follow-up 交付。 +- [对话式交付决策](../../../.agents/notes/archived/simplification/2026-08-09-conversational-schedule-delivery.md)——无回执边界与 follow-up 交付。 - [显式时区边界](../../../.agents/notes/implemented/simplification/2026-08-09-explicit-schedule-time-zone.zh.md)——为什么模型必须始终传入显式时区。 -- [有界固定速率 Schedule](../../../.agents/notes/implemented/simplification/2026-08-09-bounded-fixed-rate-schedule.zh.md)——重复调度范围:只追赶最新一次与批次交付。 +- [有界固定速率 Schedule](../../../.agents/notes/archived/simplification/2026-08-09-bounded-fixed-rate-schedule.md)——重复调度范围:只追赶最新一次与批次交付。 - [Schedule 用户指南](../../../docs/user/guide/schedule.zh.md)——挂载本包与 time-context 的官方配置路径。 ----- diff --git a/packages/sdk/README.i18n.yaml b/packages/sdk/README.i18n.yaml index 420e90736c..5d26c05fbb 100644 --- a/packages/sdk/README.i18n.yaml +++ b/packages/sdk/README.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write packages/sdk/README.md -README.md: 3ec0b3245bb7a98250b4ec5e48591ae802f330ab -README.zh.md: 60138017542ea2dfd2b2ffea0256371b4c0337d7 +README.md: 6df44b6a247418d230edb1d09996b6cee75163b0 +README.zh.md: 808c9280ddd6d8135b65fdab9a535cbba8e6d5d7 diff --git a/packages/sdk/README.md b/packages/sdk/README.md index 3ec0b3245b..6df44b6a24 100644 --- a/packages/sdk/README.md +++ b/packages/sdk/README.md @@ -39,9 +39,8 @@ Start with the Python SDK (the sibling implementation of the client contract), t - [Python SDK](../../python/README.md) — the Python counterpart that speaks the same protocol and ships a bundled runtime. - [SDK application bundle](../bundle/sdk-app/README.md) — the `dsh --profile sdk` application that boots the JSON-RPC server. -- [Python profile-runtime decision](../../.agents/notes/implemented/architecture/2026-08-23-python-sdk-dsh-profile-runtime.md) — why the packaged Python client launches the same named profiles. -- [TypeScript SDK and SDK subagent backend decision](../../.agents/notes/implemented/feature/2026-07-27-typescript-sdk-and-sdk-subagent-backend.md) — the client contract and the subagent backend built on it. -- [SDK project toolchain removal](../../.agents/notes/implemented/simplification/2026-08-11-remove-sdk-project-toolchain.md) — why this group never creates, configures, or builds developer projects. +- [Architecture](../../docs/architecture.md) — why the packaged Python client launches the same named profiles. +- [SDK project toolchain removal](../../.agents/notes/archived/simplification/2026-08-11-remove-sdk-project-toolchain.md) — why this group never creates, configures, or builds developer projects. - [SDK subagent provider](../subagent/subagent-dsh-sdk/README.md) — a harness-internal consumer of the TypeScript client. diff --git a/packages/sdk/README.zh.md b/packages/sdk/README.zh.md index 6013801754..808c9280dd 100644 --- a/packages/sdk/README.zh.md +++ b/packages/sdk/README.zh.md @@ -39,9 +39,8 @@ kind: "package-group" - [Python SDK](../../python/README.zh.md) — 说同一种协议的 Python 对侧实现,并随附捆绑运行时。 - [SDK 应用组合包](../bundle/sdk-app/README.zh.md) — 启动 JSON-RPC 服务器的 `dsh --profile sdk` 应用。 -- [Python profile 运行时决策](../../.agents/notes/implemented/architecture/2026-08-23-python-sdk-dsh-profile-runtime.zh.md) — 打包后的 Python 客户端为何启动相同的具名 profile。 -- [TypeScript SDK 与 SDK subagent 后端决策](../../.agents/notes/implemented/feature/2026-07-27-typescript-sdk-and-sdk-subagent-backend.zh.md) — 客户端约定及其上的 subagent 后端。 -- [SDK 项目工具链移除](../../.agents/notes/implemented/simplification/2026-08-11-remove-sdk-project-toolchain.zh.md) — 本组为何从不创建、配置或构建开发者项目。 +- [架构](../../docs/architecture.zh.md) — 打包后的 Python 客户端为何启动相同的具名 profile。 +- [SDK 项目工具链移除](../../.agents/notes/archived/simplification/2026-08-11-remove-sdk-project-toolchain.md) — 本组为何从不创建、配置或构建开发者项目。 - [SDK subagent 提供方](../subagent/subagent-dsh-sdk/README.zh.md) — harness 内部消费 TypeScript 客户端的例子。 diff --git a/packages/sdk/protocol/README.i18n.yaml b/packages/sdk/protocol/README.i18n.yaml index daec09f7fa..e70cf627fe 100644 --- a/packages/sdk/protocol/README.i18n.yaml +++ b/packages/sdk/protocol/README.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write packages/sdk/protocol/README.md -README.md: ea99f83812e127992c4e32b959e9c3f011ad4e18 -README.zh.md: ecf6424ec222673008c559a6f43fac3b578573ff +README.md: 7cc6a28ac4424927613da6e64e4508e25659ab1f +README.zh.md: 5a5e06e05a29dfca4c7449d82e440096b820baf5 diff --git a/packages/sdk/protocol/README.md b/packages/sdk/protocol/README.md index ea99f83812..7cc6a28ac4 100644 --- a/packages/sdk/protocol/README.md +++ b/packages/sdk/protocol/README.md @@ -91,7 +91,6 @@ Read these pages when the wire contract is not enough. They move from the servin - [TypeScript SDK client](../client/README.md) — the client that drives this protocol. - [Python SDK](../../../python/README.md) — the Python counterpart that mirrors these shapes. - [SDK application bundle](../../bundle/sdk-app/README.md) — the `dsh --profile sdk` application that boots the server. -- [TypeScript SDK and SDK subagent backend decision](../../../.agents/notes/implemented/feature/2026-07-27-typescript-sdk-and-sdk-subagent-backend.md) — the client contract this protocol serves. ----- diff --git a/packages/sdk/protocol/README.zh.md b/packages/sdk/protocol/README.zh.md index ecf6424ec2..5a5e06e05a 100644 --- a/packages/sdk/protocol/README.zh.md +++ b/packages/sdk/protocol/README.zh.md @@ -91,7 +91,6 @@ kind: "package-library" - [TypeScript SDK 客户端](../client/README.zh.md) — 驱动该协议的客户端。 - [Python SDK](../../../python/README.zh.md) — 复现这些结构的 Python 对侧实现。 - [SDK 应用组合包](../../bundle/sdk-app/README.zh.md) — 启动服务器的 `dsh --profile sdk` 应用。 -- [TypeScript SDK 与 SDK subagent 后端决策](../../../.agents/notes/implemented/feature/2026-07-27-typescript-sdk-and-sdk-subagent-backend.zh.md) — 该协议所服务的客户端约定。 ----- diff --git a/packages/session-query/README.i18n.yaml b/packages/session-query/README.i18n.yaml index 43c24c6880..eb4ccb4396 100644 --- a/packages/session-query/README.i18n.yaml +++ b/packages/session-query/README.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write packages/session-query/README.md -README.md: b5bd8f41405e8158f7775716aa4d7024ae1b02ff -README.zh.md: 3874ba67d18c0e3e63f8236dbda69406eff53dbd +README.md: fe206a31aef78a73dfe3653ff75b3a666aaac24a +README.zh.md: 403090f3d557c33eba2a5632d5c860d4da25a361 diff --git a/packages/session-query/README.md b/packages/session-query/README.md index b5bd8f4140..fe206a31ae 100644 --- a/packages/session-query/README.md +++ b/packages/session-query/README.md @@ -36,12 +36,11 @@ Each package README describes what you can do with its part of the family. ## Related documentation -Start with the subsystem reference for the shared query vocabulary, then the design records behind tracing, search, and the model-facing tools. +Start with the subsystem reference for the shared query vocabulary, then the design records behind tracing and search. - [Session Query subsystem reference](../../docs/subsystems/session-query.md) — logical records, filters, search pages, lineage, bounded reads, and event relationships. -- [Session query relationship tracing](../../.agents/notes/implemented/feature/2026-07-13-session-query-tracing.md) — trace semantics and the validation boundary. -- [SQLite FTS5 session search](../../.agents/notes/implemented/feature/2026-07-10-sqlite-session-query-provider.md) — search semantics, reconciliation, and the tokenizer decision. -- [Model-facing session query tools](../../.agents/notes/implemented/feature/2026-07-24-model-facing-session-query-tools.md) — workspace authority and the cursor-free result design. +- [Session query relationship tracing](../../.agents/notes/archived/feature/2026-07-13-session-query-tracing.md) — trace semantics and the validation boundary. +- [SQLite FTS5 session search](../../.agents/notes/archived/feature/2026-07-10-sqlite-session-query-provider.md) — search semantics, reconciliation, and the tokenizer decision. ## Dev Note diff --git a/packages/session-query/README.zh.md b/packages/session-query/README.zh.md index 3874ba67d1..403090f3d5 100644 --- a/packages/session-query/README.zh.md +++ b/packages/session-query/README.zh.md @@ -36,12 +36,11 @@ kind: "package-group" ## 相关文档 -先从子系统参考了解共享的查询词汇,再看追踪、搜索与面向模型工具背后的设计记录。 +先从子系统参考了解共享的查询词汇,再看追踪与搜索背后的设计记录。 - [会话查询子系统参考](../../docs/subsystems/session-query.zh.md)——逻辑记录、过滤器、搜索页、血缘、有界读取与事件关系。 -- [会话查询关系追踪](../../.agents/notes/implemented/feature/2026-07-13-session-query-tracing.zh.md)——追踪语义与校验边界。 -- [SQLite FTS5 会话搜索](../../.agents/notes/implemented/feature/2026-07-10-sqlite-session-query-provider.zh.md)——搜索语义、对账与 tokenizer 决策。 -- [面向模型的会话查询工具](../../.agents/notes/implemented/feature/2026-07-24-model-facing-session-query-tools.zh.md)——工作区授权与无游标结果设计。 +- [会话查询关系追踪](../../.agents/notes/archived/feature/2026-07-13-session-query-tracing.md)——追踪语义与校验边界。 +- [SQLite FTS5 会话搜索](../../.agents/notes/archived/feature/2026-07-10-sqlite-session-query-provider.md)——搜索语义、对账与 tokenizer 决策。 ## 开发备注 diff --git a/packages/session-query/session-query-sqlite/README.i18n.yaml b/packages/session-query/session-query-sqlite/README.i18n.yaml index 70ff2fc46a..766d24e437 100644 --- a/packages/session-query/session-query-sqlite/README.i18n.yaml +++ b/packages/session-query/session-query-sqlite/README.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write packages/session-query/session-query-sqlite/README.md -README.md: 9d0f4965aceb552ff6fd8cc3e0fc2cadf59125b3 -README.zh.md: 6b0e5641e791205fdfb066ea62eb69f6f990f5f7 +README.md: 81518cb5c902583f91ef3194e7c9311f49ffe229 +README.zh.md: b8a7e268d5d1771d75f8a4fb6cae2e2d33e38169 diff --git a/packages/session-query/session-query-sqlite/README.md b/packages/session-query/session-query-sqlite/README.md index 9d0f4965ac..81518cb5c9 100644 --- a/packages/session-query/session-query-sqlite/README.md +++ b/packages/session-query/session-query-sqlite/README.md @@ -89,7 +89,7 @@ The backend is built on one separation and three commitments: - **Generation-bound cursors.** Every corpus change bumps a generation; cursors carry the generation they were created under and fail stale rather than returning a shifted page. - **Literal phrases as data.** Caller query text is quoted into one FTS5 phrase so query syntax stays inert, and reserved highlight markers are stripped from documents before indexing. -The design history lives in the [SQLite FTS5 session search note](../../../.agents/notes/implemented/feature/2026-07-10-sqlite-session-query-provider.md) and the [unified service decision](../../../.agents/notes/archived/architecture/2026-07-23-unified-session-query-service.md). +The design history lives in the [SQLite FTS5 session search note](../../../.agents/notes/archived/feature/2026-07-10-sqlite-session-query-provider.md) and the [unified service decision](../../../.agents/notes/archived/architecture/2026-07-23-unified-session-query-service.md). ### Source map @@ -120,7 +120,7 @@ Read these pages when the package-level contract is not enough. They move from t - [Session Query subsystem reference](../../../docs/subsystems/session-query.md) — the full type-level contract this backend implements. - [dsh-session-query](../session-query/README.md) — the service definition: exact reads, filters, and traces this backend inherits. - [dsh-tool-session-query](../tool-session-query/README.md) — the model-facing consumer that calls these search methods. -- [SQLite FTS5 session search](../../../.agents/notes/implemented/feature/2026-07-10-sqlite-session-query-provider.md) — search semantics, reconciliation, and the tokenizer decision. +- [SQLite FTS5 session search](../../../.agents/notes/archived/feature/2026-07-10-sqlite-session-query-provider.md) — search semantics, reconciliation, and the tokenizer decision. - [JSONL session persistence](../../session/session-persistence-jsonl/README.md) — the authoritative Session store this disposable index observes; keep its root separate from this package's database path. ----- diff --git a/packages/session-query/session-query-sqlite/README.zh.md b/packages/session-query/session-query-sqlite/README.zh.md index 6b0e5641e7..b8a7e268d5 100644 --- a/packages/session-query/session-query-sqlite/README.zh.md +++ b/packages/session-query/session-query-sqlite/README.zh.md @@ -89,7 +89,7 @@ kind: "package-reference" - **世代绑定的游标。** 每次语料库变化都会递增世代;游标携带其创建时的世代,宁可陈旧失败也不返回偏移后的页面。 - **字面短语即数据。** 调用方查询文本被引成一个 FTS5 短语,查询语法保持惰性;保留高亮标记在索引前从文档中剥离。 -设计历史记录在 [SQLite FTS5 会话搜索笔记](../../../.agents/notes/implemented/feature/2026-07-10-sqlite-session-query-provider.zh.md)与[统一服务决策](../../../.agents/notes/archived/architecture/2026-07-23-unified-session-query-service.md)中。 +设计历史记录在 [SQLite FTS5 会话搜索笔记](../../../.agents/notes/archived/feature/2026-07-10-sqlite-session-query-provider.md)与[统一服务决策](../../../.agents/notes/archived/architecture/2026-07-23-unified-session-query-service.md)中。 ### 源码地图 @@ -120,7 +120,7 @@ kind: "package-reference" - [会话查询子系统参考](../../../docs/subsystems/session-query.zh.md)——本后端实现的完整类型级约定。 - [dsh-session-query](../session-query/README.zh.md)——服务定义:本后端继承的精确读取、过滤与追踪。 - [dsh-tool-session-query](../tool-session-query/README.zh.md)——调用这些搜索方法的面向模型消费方。 -- [SQLite FTS5 会话搜索](../../../.agents/notes/implemented/feature/2026-07-10-sqlite-session-query-provider.zh.md)——搜索语义、对账与 tokenizer 决策。 +- [SQLite FTS5 会话搜索](../../../.agents/notes/archived/feature/2026-07-10-sqlite-session-query-provider.md)——搜索语义、对账与 tokenizer 决策。 - [JSONL 会话持久化](../../session/session-persistence-jsonl/README.zh.md)——本可丢弃索引观察的权威 Session store;其 root 必须与本包的数据库路径分开。 ----- diff --git a/packages/session-query/session-query/README.i18n.yaml b/packages/session-query/session-query/README.i18n.yaml index 7ad7fd3980..f4e737e470 100644 --- a/packages/session-query/session-query/README.i18n.yaml +++ b/packages/session-query/session-query/README.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write packages/session-query/session-query/README.md -README.md: bd078a69357d8b2f77d70411925ff37bf85ac642 -README.zh.md: d848899789e6c843575c09829f7e119d0ff03bdf +README.md: 1c2af37c26d675da4a4aab3f71557c4072ac9e78 +README.zh.md: 683088c4907346c5ade099081d2811de0b368a44 diff --git a/packages/session-query/session-query/README.md b/packages/session-query/session-query/README.md index bd078a6935..1c2af37c26 100644 --- a/packages/session-query/session-query/README.md +++ b/packages/session-query/session-query/README.md @@ -83,7 +83,7 @@ The service is built on one separation and three commitments: - **Exact reads concrete, search abstract.** Reads, filters, and traces are implemented here once; the two full-text methods are the only abstract surface a backend owns. - **One canonical surface fold.** `listEvents`, `readSurface`, and `traceEvent` validate the whole log with the same `dsh-session` fold, so search and traces agree with model-history derivation. -The decision history lives in the [unified service decision](../../../.agents/notes/archived/architecture/2026-07-23-unified-session-query-service.md), the [tracing note](../../../.agents/notes/implemented/feature/2026-07-13-session-query-tracing.md), and the [SQLite provider note](../../../.agents/notes/implemented/feature/2026-07-10-sqlite-session-query-provider.md). +The decision history lives in the [unified service decision](../../../.agents/notes/archived/architecture/2026-07-23-unified-session-query-service.md), the [tracing note](../../../.agents/notes/archived/feature/2026-07-13-session-query-tracing.md), and the [SQLite provider note](../../../.agents/notes/archived/feature/2026-07-10-sqlite-session-query-provider.md). ### Source map @@ -126,8 +126,8 @@ Read these pages when the package-level contract is not enough. They move from t - [Session Query subsystem reference](../../../docs/subsystems/session-query.md) — the full type-level contract: records, filters, search pages, lineage, bounded reads, and errors. - [dsh-session-query-sqlite](../session-query-sqlite/README.md) — the shipped full-text backend and its index lifecycle. - [dsh-tool-session-query](../tool-session-query/README.md) — the model-facing consumer built on this service. -- [Session query relationship tracing](../../../.agents/notes/implemented/feature/2026-07-13-session-query-tracing.md) — trace semantics and the validation boundary. -- [SQLite FTS5 session search](../../../.agents/notes/implemented/feature/2026-07-10-sqlite-session-query-provider.md) — how the search surface is implemented and reconciled. +- [Session query relationship tracing](../../../.agents/notes/archived/feature/2026-07-13-session-query-tracing.md) — trace semantics and the validation boundary. +- [SQLite FTS5 session search](../../../.agents/notes/archived/feature/2026-07-10-sqlite-session-query-provider.md) — how the search surface is implemented and reconciled. ----- @@ -162,6 +162,6 @@ This Dev Note is working context for maintainers: open design questions and dire #### Future: extractor and search-provider registries -Recursive traversal through cited source events, extractor and search-provider registries, and additional model-facing surfaces are deferred; the [model-facing tools note](../../../.agents/notes/implemented/feature/2026-07-24-model-facing-session-query-tools.md) records the current consumer surface. +Recursive traversal through cited source events, extractor and search-provider registries, and additional model-facing surfaces are deferred; the [tool-session-query README](../tool-session-query/README.md) documents the current consumer surface.
diff --git a/packages/session-query/session-query/README.zh.md b/packages/session-query/session-query/README.zh.md index d848899789..683088c490 100644 --- a/packages/session-query/session-query/README.zh.md +++ b/packages/session-query/session-query/README.zh.md @@ -83,7 +83,7 @@ kind: "package-reference" - **精确读取具体,搜索抽象。** 读取、过滤与追踪在此只实现一次;两个全文方法是由后端拥有的唯一抽象表面。 - **一次规范的表层折叠。** `listEvents`、`readSurface` 与 `traceEvent` 使用同一个 `dsh-session` 折叠校验整个日志,因此搜索与追踪和模型历史推导一致。 -决策历史记录在[统一服务决策](../../../.agents/notes/archived/architecture/2026-07-23-unified-session-query-service.md)、[追踪笔记](../../../.agents/notes/implemented/feature/2026-07-13-session-query-tracing.zh.md)与 [SQLite 提供方笔记](../../../.agents/notes/implemented/feature/2026-07-10-sqlite-session-query-provider.zh.md)中。 +决策历史记录在[统一服务决策](../../../.agents/notes/archived/architecture/2026-07-23-unified-session-query-service.md)、[追踪笔记](../../../.agents/notes/archived/feature/2026-07-13-session-query-tracing.md)与 [SQLite 提供方笔记](../../../.agents/notes/archived/feature/2026-07-10-sqlite-session-query-provider.md)中。 ### 源码地图 @@ -126,8 +126,8 @@ kind: "package-reference" - [会话查询子系统参考](../../../docs/subsystems/session-query.zh.md)——完整类型级约定:记录、过滤器、搜索页、血缘、有界读取与错误。 - [dsh-session-query-sqlite](../session-query-sqlite/README.zh.md)——已发布的全文后端及其索引生命周期。 - [dsh-tool-session-query](../tool-session-query/README.zh.md)——构建在本服务之上的面向模型消费方。 -- [会话查询关系追踪](../../../.agents/notes/implemented/feature/2026-07-13-session-query-tracing.zh.md)——追踪语义与校验边界。 -- [SQLite FTS5 会话搜索](../../../.agents/notes/implemented/feature/2026-07-10-sqlite-session-query-provider.zh.md)——搜索表面如何实现与对账。 +- [会话查询关系追踪](../../../.agents/notes/archived/feature/2026-07-13-session-query-tracing.md)——追踪语义与校验边界。 +- [SQLite FTS5 会话搜索](../../../.agents/notes/archived/feature/2026-07-10-sqlite-session-query-provider.md)——搜索表面如何实现与对账。 ----- @@ -162,6 +162,6 @@ kind: "package-reference" #### 未来:提取器与搜索提供方注册表 -对被引用源事件的递归遍历、提取器与搜索提供方注册表以及更多面向模型表面均被推迟;[面向模型的工具笔记](../../../.agents/notes/implemented/feature/2026-07-24-model-facing-session-query-tools.zh.md)记录了当前的消费方表面。 +对被引用源事件的递归遍历、提取器与搜索提供方注册表以及更多面向模型表面均被推迟;[tool-session-query README](../tool-session-query/README.zh.md)说明了当前的消费方表面。
diff --git a/packages/session-query/tool-session-query/README.i18n.yaml b/packages/session-query/tool-session-query/README.i18n.yaml index 6dc13bf23c..56d797ca18 100644 --- a/packages/session-query/tool-session-query/README.i18n.yaml +++ b/packages/session-query/tool-session-query/README.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write packages/session-query/tool-session-query/README.md -README.md: 729e7c6874939093a1f1c6d273ca40a36187cc72 -README.zh.md: db2e3fa9f5d30150ae6fc66e44bac3bf7f1e1754 +README.md: 92df4e1781a7d507d43cf3907f553affc1604492 +README.zh.md: a27765220160a24be135cadb76a8839c150cacea diff --git a/packages/session-query/tool-session-query/README.md b/packages/session-query/tool-session-query/README.md index 729e7c6874..92df4e1781 100644 --- a/packages/session-query/tool-session-query/README.md +++ b/packages/session-query/tool-session-query/README.md @@ -75,7 +75,7 @@ The consumer is built on one separation and three commitments: - **One model-boundary sanitizer.** Every trusted `ctx.sessionQuery` call goes through the service boundary, which preserves cancellation and contains diagnostic and classification failures. - **No second truncation format.** Results stay complete; the generic spill policy owns bounded inline output. -The design history lives in the [model-facing session query tools note](../../../.agents/notes/implemented/feature/2026-07-24-model-facing-session-query-tools.md) and the [session-search-not-shipped-default note](../../../.agents/notes/implemented/feature/2026-08-02-session-search-not-shipped-default.md). +The design history lives in the [model-facing session query tools note](../../../.agents/notes/archived/feature/2026-07-24-model-facing-session-query-tools.md) and the [session-search-not-shipped-default note](../../../.agents/notes/archived/feature/2026-08-02-session-search-not-shipped-default.md). ### Source map @@ -105,7 +105,7 @@ Read these pages when the package-level contract is not enough. They move from t - [dsh-session-query](../session-query/README.md) — the service these tools call. - [dsh-session-query-sqlite](../session-query-sqlite/README.md) — the full-text backend behind the two search tools. - [Session Query subsystem reference](../../../docs/subsystems/session-query.md) — the type-level contract under the tools. -- [Model-facing session query tools](../../../.agents/notes/implemented/feature/2026-07-24-model-facing-session-query-tools.md) — workspace authority, cursor-free results, and spill decisions. +- [Model-facing session query tools](../../../.agents/notes/archived/feature/2026-07-24-model-facing-session-query-tools.md) — workspace authority, cursor-free results, and spill decisions. ----- diff --git a/packages/session-query/tool-session-query/README.zh.md b/packages/session-query/tool-session-query/README.zh.md index db2e3fa9f5..a277652201 100644 --- a/packages/session-query/tool-session-query/README.zh.md +++ b/packages/session-query/tool-session-query/README.zh.md @@ -75,7 +75,7 @@ kind: "package-reference" - **一个模型边界净化器。** 每个可信 `ctx.sessionQuery` 调用都经过服务边界,它保留取消并包含诊断与分类失败。 - **不引入第二种截断格式。** 结果保持完整;通用 spill 策略负责有界内联输出。 -设计历史记录在[面向模型的会话查询工具笔记](../../../.agents/notes/implemented/feature/2026-07-24-model-facing-session-query-tools.zh.md)与 [session-search-not-shipped-default 笔记](../../../.agents/notes/implemented/feature/2026-08-02-session-search-not-shipped-default.zh.md)中。 +设计历史记录在[面向模型的会话查询工具笔记](../../../.agents/notes/archived/feature/2026-07-24-model-facing-session-query-tools.md)与 [session-search-not-shipped-default 笔记](../../../.agents/notes/archived/feature/2026-08-02-session-search-not-shipped-default.md)中。 ### 源码地图 @@ -105,7 +105,7 @@ kind: "package-reference" - [dsh-session-query](../session-query/README.zh.md)——这些工具调用的服务。 - [dsh-session-query-sqlite](../session-query-sqlite/README.zh.md)——两个搜索工具背后的全文后端。 - [会话查询子系统参考](../../../docs/subsystems/session-query.zh.md)——工具之下的类型级约定。 -- [面向模型的会话查询工具](../../../.agents/notes/implemented/feature/2026-07-24-model-facing-session-query-tools.zh.md)——工作区授权、无游标结果与 spill 决策。 +- [面向模型的会话查询工具](../../../.agents/notes/archived/feature/2026-07-24-model-facing-session-query-tools.md)——工作区授权、无游标结果与 spill 决策。 ----- diff --git a/packages/shell/pwsh-sandbox/README.i18n.yaml b/packages/shell/pwsh-sandbox/README.i18n.yaml index b1e6cb24ab..02b5593e61 100644 --- a/packages/shell/pwsh-sandbox/README.i18n.yaml +++ b/packages/shell/pwsh-sandbox/README.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write packages/shell/pwsh-sandbox/README.md -README.md: 1c839142f9c16da04ad91430fc2fd320e155f96e -README.zh.md: dcf0edfaae1cbb3c0079237b3214e7cc5b186f2a +README.md: 18b4a8bcbd48523fcac29c1eacaea6cf8aee7b82 +README.zh.md: 0755dd96b1bb756b6e860463cd5641b4874c8052 diff --git a/packages/shell/pwsh-sandbox/README.md b/packages/shell/pwsh-sandbox/README.md index 1c839142f9..18b4a8bcbd 100644 --- a/packages/shell/pwsh-sandbox/README.md +++ b/packages/shell/pwsh-sandbox/README.md @@ -110,7 +110,7 @@ Read these pages when the executor contract is not enough. They move from the se - [pwsh-local](../pwsh-local/README.md) — the process mechanics this executor inherits. - [sandbox-windows-acl](../../sandbox/sandbox-windows-acl/README.md) — the Windows restricted-token runner chain. - [Bash executor subsystem](../../../docs/subsystems/shell.md) — request/spec vocabulary, results, and the service contract in full. -- [pwsh executor and tool note](../../../.agents/notes/implemented/feature/2026-08-01-pwsh-tool-and-executor.md) — the decision behind the pwsh executor and tool pair. +- [pwsh executor and tool note](../../../.agents/notes/archived/feature/2026-08-01-pwsh-tool-and-executor.md) — the decision behind the pwsh executor and tool pair. ----- diff --git a/packages/shell/pwsh-sandbox/README.zh.md b/packages/shell/pwsh-sandbox/README.zh.md index dcf0edfaae..0755dd96b1 100644 --- a/packages/shell/pwsh-sandbox/README.zh.md +++ b/packages/shell/pwsh-sandbox/README.zh.md @@ -110,7 +110,7 @@ kind: "package-reference" - [pwsh-local](../pwsh-local/README.zh.md) —— 本执行器继承的进程机制。 - [sandbox-windows-acl](../../sandbox/sandbox-windows-acl/README.zh.md) —— Windows 受限令牌 runner 链。 - [Bash 执行器子系统](../../../docs/subsystems/shell.zh.md) —— 请求/spec 词汇、结果与完整的服务约定。 -- [pwsh 执行器与工具笔记](../../../.agents/notes/implemented/feature/2026-08-01-pwsh-tool-and-executor.zh.md) —— pwsh 执行器与工具这一对背后的决策。 +- [pwsh 执行器与工具笔记](../../../.agents/notes/archived/feature/2026-08-01-pwsh-tool-and-executor.md) —— pwsh 执行器与工具这一对背后的决策。 ----- diff --git a/packages/shell/tool-bash/README.i18n.yaml b/packages/shell/tool-bash/README.i18n.yaml index 7177abb59b..502c9e2ba2 100644 --- a/packages/shell/tool-bash/README.i18n.yaml +++ b/packages/shell/tool-bash/README.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write packages/shell/tool-bash/README.md -README.md: a8cd3af0de6abcee46ec5e375d0b58674a372023 -README.zh.md: 9d8ad57e682cba3238836a2b5bfed506ffc02937 +README.md: 02f4e1a16e01d9ff0b3fdc3fc06c3261c6e71b79 +README.zh.md: 3a67be2c62db2915ab80c3cc4b382d5c6347ec01 diff --git a/packages/shell/tool-bash/README.md b/packages/shell/tool-bash/README.md index a8cd3af0de..02f4e1a16e 100644 --- a/packages/shell/tool-bash/README.md +++ b/packages/shell/tool-bash/README.md @@ -78,7 +78,7 @@ This section explains the design decisions behind the tool and points at the cod ### Design philosophy - **Model-facing consumer of the shell seam.** The tool is the Consumer role of the bash capability: it registers the `bash` schema, renders results, and resolves per-call policy, while the executor seam owns process mechanics. -- **Request from named args only.** The tool never exposes `stdin`, `env`, or `stdoutMaxBytes`; it builds each request from command/workdir/timeout/signal fields plus the registry-collected `dshEnv`, so model-supplied keys cannot replace managed values ([bash stdin/env Agent Note](../../../.agents/notes/implemented/architecture/2026-06-30-bash-stdin-env-trusted-plugin-api.md)). +- **Request from named args only.** The tool never exposes `stdin`, `env`, or `stdoutMaxBytes`; it builds each request from command/workdir/timeout/signal fields plus the registry-collected `dshEnv`, so model-supplied keys cannot replace managed values. - **Non-zero exits are reported, not errored.** Only infrastructure failures (spawn errors, aborts) surface as tool errors; the model interprets exit codes and markers. - **Background work belongs to the job runtime.** A background call registers a process handle with `ctx.jobs`; ids, ownership, completion notices, and disposal are the runtime's, and this tool only maps bash exit and sandbox facts into job output. @@ -112,7 +112,6 @@ Read these pages when the package-level contract is not enough. They move from t - [Bash executor subsystem](../../../docs/subsystems/shell.md) — request/spec vocabulary, results, and background processes. - [shell-env](../shell-env/README.md) — the managed `DSH_*` environment every call receives. - [tool-jobs](../../jobs/tool-jobs/README.md) — `job_output`, `job_list`, and `job_kill` controls for background runs. -- [bash stdin/env Agent Note](../../../.agents/notes/implemented/architecture/2026-06-30-bash-stdin-env-trusted-plugin-api.md) — why the tool exposes no stdin or env. - [sandbox Agent Note](../../../.agents/notes/implemented/feature/2026-07-06-sandbox.md) — escalation and mode-switching rationale. - [Generated tool catalog](../../../docs/tool-catalog.md#deepseek-aidsh-tool-bash) — the exact `bash` argument schema. - [Generated configuration catalog](../../../docs/config-catalog.md#deepseek-aidsh-tool-bash) — every accepted config field and its source declaration. diff --git a/packages/shell/tool-bash/README.zh.md b/packages/shell/tool-bash/README.zh.md index 9d8ad57e68..3a67be2c62 100644 --- a/packages/shell/tool-bash/README.zh.md +++ b/packages/shell/tool-bash/README.zh.md @@ -78,7 +78,7 @@ kind: "package-reference" ### 设计理念 - **shell seam 的模型侧消费方。** 本工具是 bash 能力的 Consumer 角色:它注册 `bash` schema、渲染结果并解析每次调用的策略,进程机制归执行器 seam 所有。 -- **请求只来自命名参数。** 工具从不暴露 `stdin`、`env` 或 `stdoutMaxBytes`;它只用命令/workdir/超时/信号字段加上注册表收集的 `dshEnv` 构建每个请求,因此模型提供的键无法替换受管值([bash stdin/env Agent Note](../../../.agents/notes/implemented/architecture/2026-06-30-bash-stdin-env-trusted-plugin-api.zh.md))。 +- **请求只来自命名参数。** 工具从不暴露 `stdin`、`env` 或 `stdoutMaxBytes`;它只用命令/workdir/超时/信号字段加上注册表收集的 `dshEnv` 构建每个请求,因此模型提供的键无法替换受管值。 - **非零退出只报告、不失败。** 只有基础设施故障(spawn 错误、中止)才会作为工具错误暴露;模型解读退出码与标记。 - **后台工作归任务运行时。** 后台调用把进程句柄注册到 `ctx.jobs`;job id、所有权、完成通知与释放都是运行时的职责,本工具只把 bash 退出与沙箱事实映射为任务输出。 @@ -112,7 +112,6 @@ kind: "package-reference" - [Bash 执行器子系统](../../../docs/subsystems/shell.zh.md)——请求/spec 词汇、结果与后台进程。 - [shell-env](../shell-env/README.zh.md)——每次调用都会收到的受管 `DSH_*` 环境。 - [tool-jobs](../../jobs/tool-jobs/README.zh.md)——后台运行的 `job_output`、`job_list` 与 `job_kill` 控制。 -- [bash stdin/env Agent Note](../../../.agents/notes/implemented/architecture/2026-06-30-bash-stdin-env-trusted-plugin-api.zh.md)——为什么工具不暴露 stdin 或 env。 - [沙箱 Agent Note](../../../.agents/notes/implemented/feature/2026-07-06-sandbox.zh.md)——升权与模式切换的理由。 - [生成的工具目录](../../../docs/tool-catalog.zh.md#deepseek-aidsh-tool-bash)——`bash` 参数 schema 的确切内容。 - [生成的配置目录](../../../docs/config-catalog.zh.md#deepseek-aidsh-tool-bash)——每个受支持配置字段及其源声明。 diff --git a/packages/shell/tool-pwsh-persistent/README.i18n.yaml b/packages/shell/tool-pwsh-persistent/README.i18n.yaml index 951526bf88..927b854832 100644 --- a/packages/shell/tool-pwsh-persistent/README.i18n.yaml +++ b/packages/shell/tool-pwsh-persistent/README.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write packages/shell/tool-pwsh-persistent/README.md -README.md: 4865c7482d29369f65c2c41323f69a3145bb2536 -README.zh.md: 92826668173c5ba7a1588bba8ba13078937d3d9d +README.md: a23bd1ca677d00edd83d9f07f8520d12ce2b8e6c +README.zh.md: 1eb2ae252c2baeca7dc6cb5dfdaca18e10abd93b diff --git a/packages/shell/tool-pwsh-persistent/README.md b/packages/shell/tool-pwsh-persistent/README.md index 4865c7482d..a23bd1ca67 100644 --- a/packages/shell/tool-pwsh-persistent/README.md +++ b/packages/shell/tool-pwsh-persistent/README.md @@ -72,7 +72,7 @@ This section explains the design decisions behind the tool and points at the cod ### Design philosophy -- **A deliberate twin of `dsh-tool-bash-persistent`.** The session registry, polling loop, and reset contract mirror the persistent bash tool by design ([pwsh persistent PTY Agent Note](../../../.agents/notes/implemented/architecture/2026-08-11-pwsh-persistent-pty.md)). +- **A deliberate twin of `dsh-tool-bash-persistent`.** The session registry, polling loop, and reset contract mirror the persistent bash tool by design ([pwsh persistent PTY Agent Note](../../../.agents/notes/archived/architecture/2026-08-11-pwsh-persistent-pty.md)). - **Prompt-function readiness.** The tool installs its own `prompt` function that prints a BEL-terminated OSC marker plus a printable prompt; the OSC marker carries the last exit code and the printable prompt settles every command, so a model redefinition of `prompt` degrades readiness to the silence tier. - **PSReadLine echo stripped by anchoring.** PowerShell renders submitted input back into the stream; the marker-anchored extraction and a wrapper-source strip remove the echo, and a wrapper that wraps across the terminal width may leave a partial echo in partial-output results. - **Reset, never repair.** Any uncertain state — an explicit `exit`, a timeout, a send failure, an abort — closes the shell and starts the next call fresh. @@ -100,7 +100,7 @@ Read these pages when the package-level contract is not enough. They move from t - [terminal package map](../../terminal/README.md) — the persistent PTY capability family. - [terminal seam](../../terminal/terminal/README.md) — the `ctx.terminals` service behind the tool. - [terminal-bash backend](../../terminal/terminal-bash/README.md) — the default backend, configured with `shellDialect: pwsh`. -- [pwsh persistent PTY Agent Note](../../../.agents/notes/implemented/architecture/2026-08-11-pwsh-persistent-pty.md) — the pwsh-side session design and its rationale. +- [pwsh persistent PTY Agent Note](../../../.agents/notes/archived/architecture/2026-08-11-pwsh-persistent-pty.md) — the pwsh-side session design and its rationale. - [Persistent PTY sessions Agent Note](../../../.agents/notes/implemented/feature/2026-07-16-persistent-pty-sessions.md) — the owner-scoped session design and its rationale. - [Generated tool catalog](../../../docs/tool-catalog.md#deepseek-aidsh-tool-pwsh-persistent) — the exact `pwsh` argument schema. - [Generated configuration catalog](../../../docs/config-catalog.md#deepseek-aidsh-tool-pwsh-persistent) — every accepted config field and its source declaration. diff --git a/packages/shell/tool-pwsh-persistent/README.zh.md b/packages/shell/tool-pwsh-persistent/README.zh.md index 9282666817..1eb2ae252c 100644 --- a/packages/shell/tool-pwsh-persistent/README.zh.md +++ b/packages/shell/tool-pwsh-persistent/README.zh.md @@ -72,7 +72,7 @@ kind: "package-reference" ### 设计理念 -- **`dsh-tool-bash-persistent` 的刻意孪生。** 会话注册表、轮询循环与重置约定按设计镜像持久 bash 工具([pwsh 持久 PTY Agent Note](../../../.agents/notes/implemented/architecture/2026-08-11-pwsh-persistent-pty.zh.md))。 +- **`dsh-tool-bash-persistent` 的刻意孪生。** 会话注册表、轮询循环与重置约定按设计镜像持久 bash 工具([pwsh 持久 PTY Agent Note](../../../.agents/notes/archived/architecture/2026-08-11-pwsh-persistent-pty.md))。 - **prompt 函数就绪。** 工具安装自己的 `prompt` 函数,打印 BEL 结尾的 OSC 标记加可打印提示词;OSC 标记携带最后的退出码,可打印提示词让每条命令都能结算,因此模型重定义 `prompt` 会把就绪降级到静默层级。 - **PSReadLine 回显靠锚定剥离。** PowerShell 会把提交的输入渲染回流中;标记锚定提取与包装源码剥离移除回显,而跨终端宽度换行的包装可能在部分输出结果中留下部分回显。 - **重置,而非修复。** 任何不确定状态——显式 `exit`、超时、发送失败、中止——都会关闭 shell 并让下一次调用从全新状态开始。 @@ -100,7 +100,7 @@ kind: "package-reference" - [terminal 包映射](../../terminal/README.zh.md)——持久 PTY 能力家族。 - [terminal seam](../../terminal/terminal/README.zh.md)——工具背后的 `ctx.terminals` 服务。 - [terminal-bash 后端](../../terminal/terminal-bash/README.zh.md)——默认后端,配置 `shellDialect: pwsh`。 -- [pwsh 持久 PTY Agent Note](../../../.agents/notes/implemented/architecture/2026-08-11-pwsh-persistent-pty.zh.md)——pwsh 侧会话设计及其理由。 +- [pwsh 持久 PTY Agent Note](../../../.agents/notes/archived/architecture/2026-08-11-pwsh-persistent-pty.md)——pwsh 侧会话设计及其理由。 - [持久 PTY 会话 Agent Note](../../../.agents/notes/implemented/feature/2026-07-16-persistent-pty-sessions.zh.md)——按所有者会话的设计及其理由。 - [生成的工具目录](../../../docs/tool-catalog.zh.md#deepseek-aidsh-tool-pwsh-persistent)——`pwsh` 参数 schema 的确切内容。 - [生成的配置目录](../../../docs/config-catalog.zh.md#deepseek-aidsh-tool-pwsh-persistent)——每个受支持配置字段及其源声明。 diff --git a/packages/shell/tool-pwsh/README.i18n.yaml b/packages/shell/tool-pwsh/README.i18n.yaml index a319e6eba0..92cbc4146f 100644 --- a/packages/shell/tool-pwsh/README.i18n.yaml +++ b/packages/shell/tool-pwsh/README.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write packages/shell/tool-pwsh/README.md -README.md: e2bc4672e48d592e40464a53b5e43c139193928f -README.zh.md: 2eaf1ca19a94fac71eeb19e62ba5e21cd5c989f9 +README.md: e18a2e378bee2c2aaf40e17a9b02f043815d77cd +README.zh.md: 059f3da7fb804453cd168224875e4f53ec30424a diff --git a/packages/shell/tool-pwsh/README.md b/packages/shell/tool-pwsh/README.md index e2bc4672e4..e18a2e378b 100644 --- a/packages/shell/tool-pwsh/README.md +++ b/packages/shell/tool-pwsh/README.md @@ -73,7 +73,7 @@ This section explains the design decisions behind the tool and points at the cod ### Design philosophy -- **A deliberate twin of `dsh-tool-bash`.** Foreground and background execution, the managed environment, the sandbox escalation surface, and the marker/truncation rendering mirror the bash tool call-for-call, so consumers of one accept the other's wire shape ([pwsh tool and executor Agent Note](../../../.agents/notes/implemented/feature/2026-08-01-pwsh-tool-and-executor.md)). +- **A deliberate twin of `dsh-tool-bash`.** Foreground and background execution, the managed environment, the sandbox escalation surface, and the marker/truncation rendering mirror the bash tool call-for-call, so consumers of one accept the other's wire shape ([pwsh tool bash parity Agent Note](../../../.agents/notes/implemented/feature/2026-08-02-pwsh-tool-bash-parity.md)). - **PowerShell-dialect contract.** The tool contract is PowerShell: native paths and `$env:` variables, executed via `pwsh -Command` with no intermediate shell. - **Windows sandbox facts taught in the description.** The ConstrainedLanguage and named-pipe contracts are Windows-restricted-token behavior; the gate for teaching them is "any confining executor is mounted", which is safe because every shipped pairing is win32-only. - **Non-zero exits are reported, not errored.** Only infrastructure failures (spawn errors, aborts) surface as tool errors, matching the bash story. @@ -104,7 +104,7 @@ Read these pages when the package-level contract is not enough. They move from t - [Bash executor subsystem](../../../docs/subsystems/shell.md) — request/spec vocabulary, results, and background processes. - [shell-env](../shell-env/README.md) — the managed `DSH_*` environment every call receives. - [tool-jobs](../../jobs/tool-jobs/README.md) — `job_output`, `job_list`, and `job_kill` controls for background runs. -- [pwsh tool and executor Agent Note](../../../.agents/notes/implemented/feature/2026-08-01-pwsh-tool-and-executor.md) — why the tool mirrors the bash tool and how the Windows sandbox gates its description. +- [pwsh tool bash parity Agent Note](../../../.agents/notes/implemented/feature/2026-08-02-pwsh-tool-bash-parity.md) — why the tool mirrors the bash tool. - [Windows ACL restricted-token sandbox Agent Note](../../../.agents/notes/implemented/feature/2026-08-08-windows-acl-restricted-token-sandbox.md) — the language-mode and named-pipe contracts. - [Generated tool catalog](../../../docs/tool-catalog.md#deepseek-aidsh-tool-pwsh) — the exact `pwsh` argument schema. - [Generated configuration catalog](../../../docs/config-catalog.md#deepseek-aidsh-tool-pwsh) — every accepted config field and its source declaration. diff --git a/packages/shell/tool-pwsh/README.zh.md b/packages/shell/tool-pwsh/README.zh.md index 2eaf1ca19a..059f3da7fb 100644 --- a/packages/shell/tool-pwsh/README.zh.md +++ b/packages/shell/tool-pwsh/README.zh.md @@ -73,7 +73,7 @@ kind: "package-reference" ### 设计理念 -- **`dsh-tool-bash` 的刻意孪生。** 前台与后台执行、受管环境、沙箱升权面以及标记/截断渲染都逐调用镜像 bash 工具,因此其中之一的消费方也能接受另一个的协议形状([pwsh 工具与执行器 Agent Note](../../../.agents/notes/implemented/feature/2026-08-01-pwsh-tool-and-executor.zh.md))。 +- **`dsh-tool-bash` 的刻意孪生。** 前台与后台执行、受管环境、沙箱升权面以及标记/截断渲染都逐调用镜像 bash 工具,因此其中之一的消费方也能接受另一个的协议形状([pwsh 工具与 bash 对齐 Agent Note](../../../.agents/notes/implemented/feature/2026-08-02-pwsh-tool-bash-parity.zh.md))。 - **PowerShell 方言约定。** 工具约定是 PowerShell:原生路径与 `$env:` 变量,经由 `pwsh -Command` 执行,没有中间 shell。 - **Windows 沙箱事实写进描述。** ConstrainedLanguage 与命名管道约定是 Windows 受限令牌行为;教授它们的条件是「已挂载任意约束执行器」,之所以安全,是因为每个已发布的配对都是 win32-only。 - **非零退出只报告、不失败。** 只有基础设施故障(spawn 错误、中止)才会作为工具错误暴露,与 bash 的故事一致。 @@ -104,7 +104,7 @@ renderer 共享 bash 工具的结构与来自 `dsh-shell` 的 `parseExitStatus` - [Bash 执行器子系统](../../../docs/subsystems/shell.zh.md)——请求/spec 词汇、结果与后台进程。 - [shell-env](../shell-env/README.zh.md)——每次调用都会收到的受管 `DSH_*` 环境。 - [tool-jobs](../../jobs/tool-jobs/README.zh.md)——后台运行的 `job_output`、`job_list` 与 `job_kill` 控制。 -- [pwsh 工具与执行器 Agent Note](../../../.agents/notes/implemented/feature/2026-08-01-pwsh-tool-and-executor.zh.md)——为什么工具镜像 bash 工具,以及 Windows 沙箱如何门控其描述。 +- [pwsh 工具与 bash 对齐 Agent Note](../../../.agents/notes/implemented/feature/2026-08-02-pwsh-tool-bash-parity.zh.md)——为什么工具镜像 bash 工具。 - [Windows ACL 受限令牌沙箱 Agent Note](../../../.agents/notes/implemented/feature/2026-08-08-windows-acl-restricted-token-sandbox.zh.md)——语言模式与命名管道约定。 - [生成的工具目录](../../../docs/tool-catalog.zh.md#deepseek-aidsh-tool-pwsh)——`pwsh` 参数 schema 的确切内容。 - [生成的配置目录](../../../docs/config-catalog.zh.md#deepseek-aidsh-tool-pwsh)——每个受支持配置字段及其源声明。 diff --git a/packages/skill/README.i18n.yaml b/packages/skill/README.i18n.yaml index bdfc91cf81..e9747b53f4 100644 --- a/packages/skill/README.i18n.yaml +++ b/packages/skill/README.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write packages/skill/README.md -README.md: afd234afd9f20120f5fc1ba973b462214820291f -README.zh.md: a495b77f2c7a6e4bc0ad1f146222bc1480396b64 +README.md: 0abd6560264adfaa8a03b5fe80f200b9f9230c5c +README.zh.md: c50e5f99271255b9a86dffc154b0536bd7075e0f diff --git a/packages/skill/README.md b/packages/skill/README.md index afd234afd9..0abd656026 100644 --- a/packages/skill/README.md +++ b/packages/skill/README.md @@ -37,8 +37,6 @@ The skill group gives agents and users access to reusable, task-specific instruc Start with the subsystem reference for the shared vocabulary, then read the Agent Notes for the design rationale. - [Skill subsystem reference](../../docs/subsystems/skills.md) — the registry, provider contract, local discovery priority, and the catalog and tool. -- [Skill system Agent Note](../../.agents/notes/implemented/feature/2026-07-05-skill-system.md) — how the family is split and the layered registry design. -- [Skill catalog hot-refresh Agent Note](../../.agents/notes/implemented/feature/2026-07-27-skill-catalog-hot-refresh.md) — the durable initial catalog and replacement lifecycle. - [Skill invocation policy Agent Note](../../.agents/notes/implemented/feature/2026-07-28-skill-invocation-policy.md) — the model and user invocation controls. ----- diff --git a/packages/skill/README.zh.md b/packages/skill/README.zh.md index a495b77f2c..c50e5f9927 100644 --- a/packages/skill/README.zh.md +++ b/packages/skill/README.zh.md @@ -37,8 +37,6 @@ skill 组让 agent(智能体)和用户按需使用可复用的任务专项 先从子系统参考了解共享词汇,再阅读 Agent Note 了解设计依据。 - [skill 子系统参考](../../docs/subsystems/skills.zh.md)——注册表、提供方约定、本地发现优先级,以及目录与工具。 -- [skill 系统 Agent Note](../../.agents/notes/implemented/feature/2026-07-05-skill-system.zh.md)——家族如何拆分与分层注册表设计。 -- [skill 目录热刷新 Agent Note](../../.agents/notes/implemented/feature/2026-07-27-skill-catalog-hot-refresh.zh.md)——持久初始目录与替换生命周期。 - [skill 调用策略 Agent Note](../../.agents/notes/implemented/feature/2026-07-28-skill-invocation-policy.zh.md)——模型与用户调用控制。 ----- diff --git a/packages/skill/skill-badge/README.i18n.yaml b/packages/skill/skill-badge/README.i18n.yaml index 59170f3c20..7756264e37 100644 --- a/packages/skill/skill-badge/README.i18n.yaml +++ b/packages/skill/skill-badge/README.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write packages/skill/skill-badge/README.md -README.md: a51db5d8946f3c9f563253385ac939b0a84232eb -README.zh.md: 7759f6aa16c668f8d7e5b67071d1f29e7007f7a1 +README.md: 24c81777690df183f703c5814d59a7a272b2ddf0 +README.zh.md: 129352211218981caa48f481733b28cab76dad8a diff --git a/packages/skill/skill-badge/README.md b/packages/skill/skill-badge/README.md index a51db5d894..24c8177769 100644 --- a/packages/skill/skill-badge/README.md +++ b/packages/skill/skill-badge/README.md @@ -79,12 +79,11 @@ The provider is an immutable, synchronously registered skill source: it register ## Further Exploration -Read these pages when the package-level contract is not enough. They move from the registry this provider registers on to how the skill reaches the model and why the provider ships as it does. +Read these pages when the package-level contract is not enough. They move from the registry this provider registers on to how the skill reaches the model. - [Skill subsystem reference](../../../docs/subsystems/skills.md) — the registry and provider contract this provider implements. - [skill package](../skill/README.md) — the registry the provider registers on, and the shared rendering of loaded skills. - [tool-skill package](../tool-skill/README.md) — how the badge skill reaches the session catalog and the model. -- [Web preview product badge Agent Note](../../../.agents/notes/implemented/feature/2026-08-05-web-preview-product-badge.md) — why the provider ships disabled and the asset decisions. ----- diff --git a/packages/skill/skill-badge/README.zh.md b/packages/skill/skill-badge/README.zh.md index 7759f6aa16..1293522112 100644 --- a/packages/skill/skill-badge/README.zh.md +++ b/packages/skill/skill-badge/README.zh.md @@ -79,12 +79,11 @@ agent(智能体)可以通过该内置提供方加载官方「powered by dsh ## 进一步探索 -当包级约定不够用时阅读以下页面。它们从该提供方注册到的注册表逐步进入 skill 如何到达模型,以及该提供方为何如此发布。 +当包级约定不够用时阅读以下页面。它们从该提供方注册到的注册表逐步进入 skill 如何到达模型。 - [skill 子系统参考](../../../docs/subsystems/skills.zh.md)——该提供方实现的注册表与提供方约定。 - [skill 包](../skill/README.zh.md)——该提供方注册到的注册表,以及已加载 skill 的共享渲染。 - [tool-skill 包](../tool-skill/README.zh.md)——徽章 skill 如何到达会话目录与模型。 -- [Web 预览产品徽章 Agent Note](../../../.agents/notes/implemented/feature/2026-08-05-web-preview-product-badge.zh.md)——该提供方为何默认禁用,以及资源决策。 ----- diff --git a/packages/skill/tool-skill/README.i18n.yaml b/packages/skill/tool-skill/README.i18n.yaml index 926c4b00cf..7a48565849 100644 --- a/packages/skill/tool-skill/README.i18n.yaml +++ b/packages/skill/tool-skill/README.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write packages/skill/tool-skill/README.md -README.md: 458c1d1eb8f94496cb93b4c5512502d5aa77849a -README.zh.md: aa4ac4ad773f013b4aa7faea3abdd66230eca2e4 +README.md: a9c0296700c9848a70ab58b90d3338ff7cd2431c +README.zh.md: d9c162b8a3a9308126de2a1cc70e5d3bd84f7678 diff --git a/packages/skill/tool-skill/README.md b/packages/skill/tool-skill/README.md index 458c1d1eb8..a9c0296700 100644 --- a/packages/skill/tool-skill/README.md +++ b/packages/skill/tool-skill/README.md @@ -99,8 +99,7 @@ Read these pages when the package-level contract is not enough. They move from t - [Skill subsystem reference](../../../docs/subsystems/skills.md) — the registry and provider vocabulary behind the catalog. - [skill package](../skill/README.md) — the registry and the shared `renderSkillContent` rendering. - [Generated tool catalog](../../../docs/tool-catalog.md#deepseek-aidsh-tool-skill) — the exact `skill` schema the model receives. -- [Skill catalog hot-refresh Agent Note](../../../.agents/notes/implemented/feature/2026-07-27-skill-catalog-hot-refresh.md) — the durable initial catalog and replacement lifecycle. -- [User-explicit skill invocation Agent Note](../../../.agents/notes/implemented/feature/2026-08-08-user-explicit-skill-invocation.md) — the `/name` gesture design. +- [User-explicit skill invocation Agent Note](../../../.agents/notes/archived/feature/2026-08-08-user-explicit-skill-invocation.md) — the `/name` gesture design. ----- diff --git a/packages/skill/tool-skill/README.zh.md b/packages/skill/tool-skill/README.zh.md index aa4ac4ad77..d9c162b8a3 100644 --- a/packages/skill/tool-skill/README.zh.md +++ b/packages/skill/tool-skill/README.zh.md @@ -99,8 +99,7 @@ agent(智能体)可以在会话期间发现并加载 skill(技能):在 - [skill 子系统参考](../../../docs/subsystems/skills.zh.md)——目录背后的注册表与提供方词汇。 - [skill 包](../skill/README.zh.md)——注册表与共享的 `renderSkillContent` 渲染。 - [生成工具目录](../../../docs/tool-catalog.zh.md#deepseek-aidsh-tool-skill)——模型接收的精确 `skill` schema。 -- [skill 目录热刷新 Agent Note](../../../.agents/notes/implemented/feature/2026-07-27-skill-catalog-hot-refresh.zh.md)——持久初始目录与替换生命周期。 -- [用户显式 skill 调用 Agent Note](../../../.agents/notes/implemented/feature/2026-08-08-user-explicit-skill-invocation.zh.md)——`/name` 手势设计。 +- [用户显式 skill 调用 Agent Note](../../../.agents/notes/archived/feature/2026-08-08-user-explicit-skill-invocation.md)——`/name` 手势设计。 ----- diff --git a/packages/spill/README.i18n.yaml b/packages/spill/README.i18n.yaml index ed08cbef3b..a9c4197112 100644 --- a/packages/spill/README.i18n.yaml +++ b/packages/spill/README.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write packages/spill/README.md -README.md: 3eb56abf199eb2d38c0ad628b5b8a0fb222b1e70 -README.zh.md: 00a02536f9d33787755ce82b4c4355e11a0cceb6 +README.md: f54cd0d3814bd603be83e4fe42ad10c359c16d45 +README.zh.md: 589b39fbb2573c50b77d2339f98de03ccaa3b565 diff --git a/packages/spill/README.md b/packages/spill/README.md index 3eb56abf19..f54cd0d381 100644 --- a/packages/spill/README.md +++ b/packages/spill/README.md @@ -35,11 +35,10 @@ Three packages play the spill roles; the subsystem reference owns the exhaustive ## Related documentation -Start with the subsystem reference for the shared vocabulary, then the design decision and its durable-log extension. +Start with the subsystem reference for the shared vocabulary, then the design decision. - [Spill subsystem](../../docs/subsystems/spill.md) — the `SaveTextSpill`/`SpillRef` vocabulary, ownership, and backend relationships. - [Tool output spill decision](../../.agents/notes/implemented/architecture/2026-07-08-tool-output-spill-files.md) — the capability boundary between storage, retention, and tool-owned output handling. -- [Code dispatch-log spill decision](../../.agents/notes/implemented/feature/2026-07-26-ptc-dispatch-log-spill.md) — why the durable copy of `run_code` sub-call results is bounded too. ## Dev Note diff --git a/packages/spill/README.zh.md b/packages/spill/README.zh.md index 00a02536f9..589b39fbb2 100644 --- a/packages/spill/README.zh.md +++ b/packages/spill/README.zh.md @@ -35,11 +35,10 @@ kind: "package-group" ## 相关文档 -先从子系统参考文档了解共享词汇,再看设计决策及其持久日志扩展。 +先从子系统参考文档了解共享词汇,再看设计决策。 - [spill 子系统](../../docs/subsystems/spill.zh.md)——`SaveTextSpill`/`SpillRef` 词汇、归属与后端关系。 - [工具输出 spill 决策](../../.agents/notes/implemented/architecture/2026-07-08-tool-output-spill-files.zh.md)——存储、保留与工具自有输出处理之间的能力边界。 -- [代码 dispatch-log spill 决策](../../.agents/notes/implemented/feature/2026-07-26-ptc-dispatch-log-spill.zh.md)——为何 `run_code` 子调用结果的持久副本同样设界。 ## 开发备注 diff --git a/packages/spill/spill-local/README.i18n.yaml b/packages/spill/spill-local/README.i18n.yaml index e626304222..d808766e23 100644 --- a/packages/spill/spill-local/README.i18n.yaml +++ b/packages/spill/spill-local/README.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write packages/spill/spill-local/README.md -README.md: 836337b0c3077fcd0cf8906e52a127412582b146 -README.zh.md: c827e33b8e9281a9d9e7517ba97432ec7a5b4a0b +README.md: 64013699acbb097994760ac360ab12e3d9e03fe2 +README.zh.md: f57d20cd47701838ec090b43c312e757bf1674fe diff --git a/packages/spill/spill-local/README.md b/packages/spill/spill-local/README.md index 836337b0c3..64013699ac 100644 --- a/packages/spill/spill-local/README.md +++ b/packages/spill/spill-local/README.md @@ -104,7 +104,6 @@ Read these pages when the package-level contract is not enough. - [dsh-spill-policy](../spill-policy/README.md) — the policy that calls this backend when a result is too large. - [Spill subsystem](../../../docs/subsystems/spill.md) — the exhaustive vocabulary and ownership. - [Tool output spill decision](../../../.agents/notes/implemented/architecture/2026-07-08-tool-output-spill-files.md) — the capability boundary and design rationale. -- [Local spill startup cleanup](../../../.agents/notes/implemented/architecture/2026-07-17-local-spill-startup-cleanup.md) — retention, race handling, and safe deletion rules. ----- diff --git a/packages/spill/spill-local/README.zh.md b/packages/spill/spill-local/README.zh.md index c827e33b8e..f57d20cd47 100644 --- a/packages/spill/spill-local/README.zh.md +++ b/packages/spill/spill-local/README.zh.md @@ -104,7 +104,6 @@ kind: "package-reference" - [dsh-spill-policy](../spill-policy/README.zh.md)——结果过大时调用此后端的策略。 - [spill 子系统](../../../docs/subsystems/spill.zh.md)——穷尽式词汇与归属。 - [工具输出 spill 决策](../../../.agents/notes/implemented/architecture/2026-07-08-tool-output-spill-files.zh.md)——能力边界与设计依据。 -- [本地 spill 启动清理](../../../.agents/notes/implemented/architecture/2026-07-17-local-spill-startup-cleanup.zh.md)——保留期、竞态处理与安全删除规则。 ----- diff --git a/packages/spill/spill-policy/README.i18n.yaml b/packages/spill/spill-policy/README.i18n.yaml index 4f935ed955..694ac0e47c 100644 --- a/packages/spill/spill-policy/README.i18n.yaml +++ b/packages/spill/spill-policy/README.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write packages/spill/spill-policy/README.md -README.md: 4e7d83e81c865952c14af31cf13b7094e7e5f071 -README.zh.md: ef6036478a8d751f9de853df096397e216d4163a +README.md: 073efeaafdd2e5c94c1f2b18871c26a6eedfdaa7 +README.zh.md: b3a35b2d35bcec6646f92e508791659fe7b773cd diff --git a/packages/spill/spill-policy/README.md b/packages/spill/spill-policy/README.md index 4e7d83e81c..073efeaafd 100644 --- a/packages/spill/spill-policy/README.md +++ b/packages/spill/spill-policy/README.md @@ -111,7 +111,6 @@ Read these pages when the package-level contract is not enough. - [dsh-spill-local](../spill-local/README.md) — the local backend that stores the spilled text. - [dsh-output-retention](../../util/output-retention/README.md) — the preview mechanics (`TextRetainer`) the policy composes. - [Tool output spill decision](../../../.agents/notes/implemented/architecture/2026-07-08-tool-output-spill-files.md) — the capability boundary and design rationale. -- [PTC dispatch-log spill decision](../../../.agents/notes/implemented/feature/2026-07-26-ptc-dispatch-log-spill.md) — why the durable log copy is bounded too. ----- diff --git a/packages/spill/spill-policy/README.zh.md b/packages/spill/spill-policy/README.zh.md index ef6036478a..b3a35b2d35 100644 --- a/packages/spill/spill-policy/README.zh.md +++ b/packages/spill/spill-policy/README.zh.md @@ -111,7 +111,6 @@ kind: "package-reference" - [dsh-spill-local](../spill-local/README.zh.md)——保存 spill 文本的本地后端。 - [dsh-output-retention](../../util/output-retention/README.zh.md)——策略组合的预览机制(`TextRetainer`)。 - [工具输出 spill 决策](../../../.agents/notes/implemented/architecture/2026-07-08-tool-output-spill-files.zh.md)——能力边界与设计依据。 -- [PTC dispatch-log spill 决策](../../../.agents/notes/implemented/feature/2026-07-26-ptc-dispatch-log-spill.zh.md)——为何持久日志副本同样设界。 ----- diff --git a/packages/subagent/README.i18n.yaml b/packages/subagent/README.i18n.yaml index 479f57df94..955020de6c 100644 --- a/packages/subagent/README.i18n.yaml +++ b/packages/subagent/README.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write packages/subagent/README.md -README.md: 0773bf83c87a43ed0697db413939b84668948d06 -README.zh.md: cf3de50990e810c0c671628c95026e1567edac94 +README.md: f5a60e9c9ddb936e4ac3ff35917c3c93879fe9e5 +README.zh.md: 73ad443c66984eeb2ed1f3444cd5fb54de4b1c2d diff --git a/packages/subagent/README.md b/packages/subagent/README.md index 0773bf83c8..f5a60e9c9d 100644 --- a/packages/subagent/README.md +++ b/packages/subagent/README.md @@ -42,8 +42,8 @@ The subagent group is the delegation family: it lets an agent hand a task to a c - [Subagent subsystem](../../docs/subsystems/subagent.md) — the service contract, provider contract, and terminal result semantics. - [Subagent capability seam](../../.agents/notes/implemented/feature/2026-06-21-subagent-capability-seam.md) — the design record for the delegation capability family. -- [Continuable background subagents](../../.agents/notes/implemented/feature/2026-07-21-continuable-background-subagents.md) — durable children that accept follow-up turns. -- [Merged subagent control service](../../.agents/notes/implemented/simplification/2026-07-26-merge-subagent-control-service.md) — the follow-up, interrupt, and listing surface. +- [Continuable subagents](../../.agents/notes/implemented/feature/2026-07-28-continuable-subagent-conversations.md) — durable children that accept follow-up turns. +- [tool-subagent-control README](tool-subagent-control/README.md) — the follow-up, interrupt, and listing surface. ## Dev Note diff --git a/packages/subagent/README.zh.md b/packages/subagent/README.zh.md index cf3de50990..73ad443c66 100644 --- a/packages/subagent/README.zh.md +++ b/packages/subagent/README.zh.md @@ -42,8 +42,8 @@ subagent 组是委派能力家族:它让 agent(智能体)把任务交给 - [Subagent 子系统](../../docs/subsystems/subagent.zh.md)——服务约定、提供方约定与终态结果语义。 - [Subagent 能力 seam](../../.agents/notes/implemented/feature/2026-06-21-subagent-capability-seam.zh.md)——委派能力家族的设计记录。 -- [可续跑后台 subagent](../../.agents/notes/implemented/feature/2026-07-21-continuable-background-subagents.zh.md)——接受后续轮次的持久子级。 -- [合并后的 subagent 控制服务](../../.agents/notes/implemented/simplification/2026-07-26-merge-subagent-control-service.zh.md)——后续消息、中断与列举面。 +- [可继续的 subagent](../../.agents/notes/implemented/feature/2026-07-28-continuable-subagent-conversations.zh.md)——接受后续轮次的持久子级。 +- [tool-subagent-control README](tool-subagent-control/README.zh.md)——后续消息、中断与列举面。 ## 开发备注 diff --git a/packages/subagent/subagent/README.i18n.yaml b/packages/subagent/subagent/README.i18n.yaml index d01088076b..9f7ca0a2d5 100644 --- a/packages/subagent/subagent/README.i18n.yaml +++ b/packages/subagent/subagent/README.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write packages/subagent/subagent/README.md -README.md: 6712af94000d82878d8f7cea6194eeb0d2f92421 -README.zh.md: ee0cc8861c174939cc767ba6791c1c19c1d2bc8c +README.md: 9d99b27645e339de44d71c2df3f709fe28dc4f4b +README.zh.md: 9397c8ae92f7ff69c6ebbb3672a9e96247a816e1 diff --git a/packages/subagent/subagent/README.md b/packages/subagent/subagent/README.md index 6712af9400..9d99b27645 100644 --- a/packages/subagent/subagent/README.md +++ b/packages/subagent/subagent/README.md @@ -111,10 +111,10 @@ Read these pages when the package-level contract is not enough. They move from t - [Subagent subsystem](../../../docs/subsystems/subagent.md) — the service contract, provider contract, and terminal result semantics. - [Subagent capability seam](../../../.agents/notes/implemented/feature/2026-06-21-subagent-capability-seam.md) — the design record for the delegation capability family. -- [Continuable background subagents](../../../.agents/notes/implemented/feature/2026-07-21-continuable-background-subagents.md) — durable children that accept follow-up turns. +- [Continuable subagents](../../../.agents/notes/implemented/feature/2026-07-28-continuable-subagent-conversations.md) — durable children that accept follow-up turns. - [In-process spawn backend](../subagent-spawn-in-process/README.md) — the simplest provider to compose. - [Out-of-process ACP backend](../subagent-acp/README.md) — children with their own runtime over the Agent Client Protocol. -- [Merged subagent control service](../../../.agents/notes/implemented/simplification/2026-07-26-merge-subagent-control-service.md) — the follow-up, interrupt, and listing surface. +- [tool-subagent-control README](../tool-subagent-control/README.md) — the follow-up, interrupt, and listing surface. ----- diff --git a/packages/subagent/subagent/README.zh.md b/packages/subagent/subagent/README.zh.md index ee0cc8861c..9397c8ae92 100644 --- a/packages/subagent/subagent/README.zh.md +++ b/packages/subagent/subagent/README.zh.md @@ -111,10 +111,10 @@ kind: "package-reference" - [Subagent 子系统](../../../docs/subsystems/subagent.zh.md)——服务约定、提供方约定与终态结果语义。 - [Subagent 能力 seam](../../../.agents/notes/implemented/feature/2026-06-21-subagent-capability-seam.zh.md)——委派能力家族的设计记录。 -- [可续跑后台 subagent](../../../.agents/notes/implemented/feature/2026-07-21-continuable-background-subagents.zh.md)——接受后续轮次的持久子级。 +- [可继续的 subagent](../../../.agents/notes/implemented/feature/2026-07-28-continuable-subagent-conversations.zh.md)——接受后续轮次的持久子级。 - [进程内 spawn 后端](../subagent-spawn-in-process/README.zh.md)——最容易组合的提供方。 - [进程外 ACP 后端](../subagent-acp/README.zh.md)——经 Agent Client Protocol 拥有自有运行时的子级。 -- [合并后的 subagent 控制服务](../../../.agents/notes/implemented/simplification/2026-07-26-merge-subagent-control-service.zh.md)——后续消息、中断与列举面。 +- [tool-subagent-control README](../tool-subagent-control/README.zh.md)——后续消息、中断与列举面。 ----- diff --git a/packages/subagent/tool-subagent/README.i18n.yaml b/packages/subagent/tool-subagent/README.i18n.yaml index 8bdd261de2..6b9080c4b3 100644 --- a/packages/subagent/tool-subagent/README.i18n.yaml +++ b/packages/subagent/tool-subagent/README.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write packages/subagent/tool-subagent/README.md -README.md: 4b1f30fd14bd7c8b67e27a9d17e818b79d7f2b84 -README.zh.md: a0e0d15f43ab8a527b61b6675e1a47d5435f2bed +README.md: fc01b8417bc5d6d9a896954de62e64a7b8d276a7 +README.zh.md: e726ea6234bf1f6f24c6ee57d5f63050aa99719c diff --git a/packages/subagent/tool-subagent/README.md b/packages/subagent/tool-subagent/README.md index 4b1f30fd14..fc01b8417b 100644 --- a/packages/subagent/tool-subagent/README.md +++ b/packages/subagent/tool-subagent/README.md @@ -117,8 +117,7 @@ Read these pages when the package-level contract is not enough; they move from t - [dsh-tool-subagent-control](../tool-subagent-control/README.md) — messaging, interrupt, and listing tools for continuable children. - [Generated tool catalog](../../../docs/tool-catalog.md#deepseek-aidsh-tool-subagent) — the default schema and per-mode wording. - [Generated configuration catalog](../../../docs/config-catalog.md#deepseek-aidsh-tool-subagent) — every accepted config field. -- [Background subagent tasks](../../../.agents/notes/implemented/feature/2026-07-08-background-subagent-tasks.md) — the one-shot background route. -- [Background-first continuable delegation](../../../.agents/notes/implemented/feature/2026-08-11-background-first-continuable-delegation.md) — why continuable work defaults to background. +- [Background-first continuable delegation](../../../.agents/notes/archived/feature/2026-08-11-background-first-continuable-delegation.md) — why continuable work defaults to background. - [Model-selected subagent routes](../../../.agents/notes/implemented/feature/2026-08-18-model-selected-subagent-routes.md) — selection policy, inheritance, discovery, and the fork restriction. ----- diff --git a/packages/subagent/tool-subagent/README.zh.md b/packages/subagent/tool-subagent/README.zh.md index a0e0d15f43..e726ea6234 100644 --- a/packages/subagent/tool-subagent/README.zh.md +++ b/packages/subagent/tool-subagent/README.zh.md @@ -117,8 +117,7 @@ kind: "package-reference" - [dsh-tool-subagent-control](../tool-subagent-control/README.zh.md)——可继续子 agent 的消息、中断与列表工具。 - [生成工具目录](../../../docs/tool-catalog.zh.md#deepseek-aidsh-tool-subagent)——默认 schema 与各模式的措辞。 - [生成配置目录](../../../docs/config-catalog.zh.md#deepseek-aidsh-tool-subagent)——每个受支持配置字段。 -- [后台 subagent 任务](../../../.agents/notes/implemented/feature/2026-07-08-background-subagent-tasks.zh.md)——一次性后台路由。 -- [后台优先的可继续委派](../../../.agents/notes/implemented/feature/2026-08-11-background-first-continuable-delegation.zh.md)——可继续工作为何默认在后台运行。 +- [后台优先的可继续委派](../../../.agents/notes/archived/feature/2026-08-11-background-first-continuable-delegation.md)——可继续工作为何默认在后台运行。 - [模型选择 subagent 路由](../../../.agents/notes/implemented/feature/2026-08-18-model-selected-subagent-routes.zh.md)——选择策略、继承、发现与 fork 限制。 ----- diff --git a/packages/subprocess/README.i18n.yaml b/packages/subprocess/README.i18n.yaml index 285ae8a127..b03b4693a7 100644 --- a/packages/subprocess/README.i18n.yaml +++ b/packages/subprocess/README.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write packages/subprocess/README.md -README.md: b5e158df39ab496b6e8fe6f7dd1b5893b1585d39 -README.zh.md: bae96d084756a0ef03410a22be853f6f1848f8b4 +README.md: bed6310ff70492474ceae38b685dee4cb9474ebf +README.zh.md: de2a287f6094d52c84ad25d86c34e45aa7c7e0c1 diff --git a/packages/subprocess/README.md b/packages/subprocess/README.md index b5e158df39..bed6310ff7 100644 --- a/packages/subprocess/README.md +++ b/packages/subprocess/README.md @@ -36,7 +36,7 @@ The service keeps process lifetime across consumer reloads; consumers own what a ## Related documentation - [Subprocess subsystem](../../docs/subsystems/subprocess.md) — spawn specs, output readers, outcomes, and the managed `DSH_*` environment. -- [Subprocess seam Agent Note](../../.agents/notes/implemented/architecture/2026-07-26-subprocess-seam.md) — why the process half of the bash executors became its own seam. +- [Subprocess seam Agent Note](../../.agents/notes/archived/architecture/2026-07-26-subprocess-seam.md) — why the process half of the bash executors became its own seam. ----- diff --git a/packages/subprocess/README.zh.md b/packages/subprocess/README.zh.md index bae96d0847..de2a287f60 100644 --- a/packages/subprocess/README.zh.md +++ b/packages/subprocess/README.zh.md @@ -36,7 +36,7 @@ harness 运行的每个子进程与终端会话——bash 命令、语言服务 ## 相关文档 - [子进程子系统](../../docs/subsystems/subprocess.zh.md)——spawn spec、输出读取器、结果与受管的 `DSH_*` 环境。 -- [subprocess seam Agent Note](../../.agents/notes/implemented/architecture/2026-07-26-subprocess-seam.zh.md)——bash 执行器的进程部分为何成为独立的 seam。 +- [subprocess seam Agent Note](../../.agents/notes/archived/architecture/2026-07-26-subprocess-seam.md)——bash 执行器的进程部分为何成为独立的 seam。 ----- diff --git a/packages/subprocess/subprocess-local/README.i18n.yaml b/packages/subprocess/subprocess-local/README.i18n.yaml index 7a129abee9..cfea9f923c 100644 --- a/packages/subprocess/subprocess-local/README.i18n.yaml +++ b/packages/subprocess/subprocess-local/README.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write packages/subprocess/subprocess-local/README.md -README.md: d8e44d160a01fa2f394aaf781cf90728b0506c77 -README.zh.md: 4a3fed4fa8525be1428a61c8bdc1c3fb8497f263 +README.md: 17009a3576baa4e47b4e929b8125e8cd774d6545 +README.zh.md: 88ab221bbeeec60035d2d5f61d3f5b321fce8491 diff --git a/packages/subprocess/subprocess-local/README.md b/packages/subprocess/subprocess-local/README.md index d8e44d160a..17009a3576 100644 --- a/packages/subprocess/subprocess-local/README.md +++ b/packages/subprocess/subprocess-local/README.md @@ -101,8 +101,8 @@ Read these pages when the provider-level contract is not enough. They move from - [Subprocess subsystem](../../../docs/subsystems/subprocess.md) — spawn specs, output readers, outcomes, and the `DSH_*` environment in full. - [dsh-subprocess](../subprocess/README.md) — the abstract contract this provider implements. - [dsh-bash-local](../../shell/bash-local/README.md) — the largest consumer and the concrete stdio shapes it asks for. -- [Subprocess seam Agent Note](../../../.agents/notes/implemented/architecture/2026-07-26-subprocess-seam.md) — why the process half became its own seam. -- [Synchronous subprocess exit cleanup](../../../.agents/notes/implemented/bug-fix/2026-08-11-synchronous-subprocess-exit-cleanup.md) — the host-exit finalization decision and its failure modes. +- [Subprocess seam Agent Note](../../../.agents/notes/archived/architecture/2026-07-26-subprocess-seam.md) — why the process half became its own seam. +- [Synchronous subprocess exit cleanup](../../../.agents/notes/archived/bug-fix/2026-08-11-synchronous-subprocess-exit-cleanup.md) — the host-exit finalization decision and its failure modes. ----- diff --git a/packages/subprocess/subprocess-local/README.zh.md b/packages/subprocess/subprocess-local/README.zh.md index 4a3fed4fa8..88ab221bbe 100644 --- a/packages/subprocess/subprocess-local/README.zh.md +++ b/packages/subprocess/subprocess-local/README.zh.md @@ -101,8 +101,8 @@ spill 文件以 `0600` 权限、`O_EXCL` 与随机名称在 `0700` 每进程目 - [子进程子系统](../../../docs/subsystems/subprocess.zh.md)——spawn spec、输出读取器、结果与完整的 `DSH_*` 环境。 - [dsh-subprocess](../subprocess/README.zh.md)——本提供方实现的抽象约定。 - [dsh-bash-local](../../shell/bash-local/README.zh.md)——最大的消费方及其请求的具体 stdio 形态。 -- [subprocess seam Agent Note](../../../.agents/notes/implemented/architecture/2026-07-26-subprocess-seam.zh.md)——进程部分为何成为独立的 seam。 -- [同步子进程退出清理](../../../.agents/notes/implemented/bug-fix/2026-08-11-synchronous-subprocess-exit-cleanup.zh.md)——宿主退出最终清理决策及其失败模式。 +- [subprocess seam Agent Note](../../../.agents/notes/archived/architecture/2026-07-26-subprocess-seam.md)——进程部分为何成为独立的 seam。 +- [同步子进程退出清理](../../../.agents/notes/archived/bug-fix/2026-08-11-synchronous-subprocess-exit-cleanup.md)——宿主退出最终清理决策及其失败模式。 ----- diff --git a/packages/subprocess/subprocess/README.i18n.yaml b/packages/subprocess/subprocess/README.i18n.yaml index 4c387619f1..a942fbee7b 100644 --- a/packages/subprocess/subprocess/README.i18n.yaml +++ b/packages/subprocess/subprocess/README.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write packages/subprocess/subprocess/README.md -README.md: 1a8b5afb34f1409368c37f4958cf69a1d111c7ab -README.zh.md: ce2aa4b83af4c04a03e5589ae1cc477112c59e23 +README.md: 40ebde7a633f2280996c046433f4c9700925869f +README.zh.md: 3bfbb909f37e7339db7e3a71b97b4e00c81bc80c diff --git a/packages/subprocess/subprocess/README.md b/packages/subprocess/subprocess/README.md index 1a8b5afb34..40ebde7a63 100644 --- a/packages/subprocess/subprocess/README.md +++ b/packages/subprocess/subprocess/README.md @@ -119,7 +119,7 @@ Read these pages when the package-level contract is not enough. They move from t - [dsh-subprocess-local](../subprocess-local/README.md) — the local host provider that implements this contract. - [dsh-subprocess-e2b](../../e2b/subprocess-e2b/README.md) — the remote E2B provider for the same seam. - [dsh-bash-local](../../shell/bash-local/README.md) — the largest consumer: bash commands over this service. -- [Subprocess seam Agent Note](../../../.agents/notes/implemented/architecture/2026-07-26-subprocess-seam.md) — why the process half became its own seam and what moved with it. +- [Subprocess seam Agent Note](../../../.agents/notes/archived/architecture/2026-07-26-subprocess-seam.md) — why the process half became its own seam and what moved with it. ----- diff --git a/packages/subprocess/subprocess/README.zh.md b/packages/subprocess/subprocess/README.zh.md index ce2aa4b83a..3bfbb909f3 100644 --- a/packages/subprocess/subprocess/README.zh.md +++ b/packages/subprocess/subprocess/README.zh.md @@ -119,7 +119,7 @@ spawn 立即返回活动句柄;请求的中止信号驱动与 `terminate()` - [dsh-subprocess-local](../subprocess-local/README.zh.md)——实现本约定的本地宿主提供方。 - [dsh-subprocess-e2b](../../e2b/subprocess-e2b/README.zh.md)——同一 seam 的远程 E2B 提供方。 - [dsh-bash-local](../../shell/bash-local/README.zh.md)——最大的消费方:经由本服务运行 bash 命令。 -- [subprocess seam Agent Note](../../../.agents/notes/implemented/architecture/2026-07-26-subprocess-seam.zh.md)——进程部分为何成为独立的 seam,以及随之迁移的内容。 +- [subprocess seam Agent Note](../../../.agents/notes/archived/architecture/2026-07-26-subprocess-seam.md)——进程部分为何成为独立的 seam,以及随之迁移的内容。 ----- diff --git a/packages/terminal/terminal-bash/README.i18n.yaml b/packages/terminal/terminal-bash/README.i18n.yaml index 33501414cd..dfed0f753a 100644 --- a/packages/terminal/terminal-bash/README.i18n.yaml +++ b/packages/terminal/terminal-bash/README.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write packages/terminal/terminal-bash/README.md -README.md: 726373a1e75775ad9bd7bf1f5b97074af39c301d -README.zh.md: e5a1549b5cb307a75664266df371b304d6763269 +README.md: 5dc66b97f550581df18efba55771d30057ab9aa0 +README.zh.md: 85a132ee1cc940fa90a53b91ea399ae48d3fdc2b diff --git a/packages/terminal/terminal-bash/README.md b/packages/terminal/terminal-bash/README.md index 726373a1e7..5dc66b97f5 100644 --- a/packages/terminal/terminal-bash/README.md +++ b/packages/terminal/terminal-bash/README.md @@ -120,7 +120,7 @@ Read these pages when the package-level contract is not enough. They move from t - [tool-terminal tools](../tool-terminal/README.md) — the model-facing tools that operate sessions. - [Subprocess seam](../../../docs/subsystems/subprocess.md) — the terminal primitive that owns PTY allocation and process-tree cleanup. - [Persistent PTY Agent Note](../../../.agents/notes/implemented/feature/2026-07-16-persistent-pty-sessions.md) — the capability design and deferred boundaries. -- [Persistent pwsh Agent Note](../../../.agents/notes/implemented/architecture/2026-08-11-pwsh-persistent-pty.md) — the Windows substrate and the pwsh dialect. +- [Persistent pwsh Agent Note](../../../.agents/notes/archived/architecture/2026-08-11-pwsh-persistent-pty.md) — the Windows substrate and the pwsh dialect. ----- diff --git a/packages/terminal/terminal-bash/README.zh.md b/packages/terminal/terminal-bash/README.zh.md index e5a1549b5c..85a132ee1c 100644 --- a/packages/terminal/terminal-bash/README.zh.md +++ b/packages/terminal/terminal-bash/README.zh.md @@ -120,7 +120,7 @@ shell 在整个生命周期内运行在有效的沙箱边界之下。当所有 - [tool-terminal 工具](../tool-terminal/README.zh.md)——操作会话的面向模型工具。 - [子进程 seam](../../../docs/subsystems/subprocess.zh.md)——负责 PTY 分配与进程树清理的终端原语。 - [持久 PTY Agent Note](../../../.agents/notes/implemented/feature/2026-07-16-persistent-pty-sessions.zh.md)——能力设计与暂缓边界。 -- [持久 pwsh Agent Note](../../../.agents/notes/implemented/architecture/2026-08-11-pwsh-persistent-pty.zh.md)——Windows 基底与 pwsh 方言。 +- [持久 pwsh Agent Note](../../../.agents/notes/archived/architecture/2026-08-11-pwsh-persistent-pty.md)——Windows 基底与 pwsh 方言。 ----- diff --git a/packages/todo/README.i18n.yaml b/packages/todo/README.i18n.yaml index 7253909f19..db684e1b4e 100644 --- a/packages/todo/README.i18n.yaml +++ b/packages/todo/README.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write packages/todo/README.md -README.md: 151aa912a122c6fe352c82052c0f1903229bf710 -README.zh.md: 42cd31ff06340b8917b01913ee2c42bb99f1105c +README.md: f43cabe8de26b448807c0db27b610516f62bc24d +README.zh.md: bf5769d94bad57a513d0b4c75a538f907cc75dad diff --git a/packages/todo/README.md b/packages/todo/README.md index 151aa912a1..f43cabe8de 100644 --- a/packages/todo/README.md +++ b/packages/todo/README.md @@ -34,7 +34,7 @@ The todo group gives agents a session-level task list to plan with: add tasks, m - [Todo subsystem](../../docs/subsystems/todo.md) — the `todo/write` event payload, ownership rules, and `TodoItem`. - [Generated tool catalog](../../docs/tool-catalog.md#deepseek-aidsh-tool-todo) — the `todo_write` schema the model receives. - [Generated configuration catalog](../../docs/config-catalog.md#deepseek-aidsh-tool-todo) — every accepted config field. -- [todo_write tool Agent Note](../../.agents/notes/implemented/feature/2026-06-29-todo-write-tool.md) — the original design and its alternatives. +- [todo_write tool Agent Note](../../.agents/notes/archived/feature/2026-06-29-todo-write-tool.md) — the original design and its alternatives. ----- diff --git a/packages/todo/README.zh.md b/packages/todo/README.zh.md index 42cd31ff06..bf5769d94b 100644 --- a/packages/todo/README.zh.md +++ b/packages/todo/README.zh.md @@ -34,7 +34,7 @@ todo 组为 agent 提供可用于规划的会话级任务列表:添加任务 - [Todo 子系统](../../docs/subsystems/todo.zh.md)——`todo/write` 事件载荷、归属规则与 `TodoItem`。 - [生成的工具目录](../../docs/tool-catalog.zh.md#deepseek-aidsh-tool-todo)——模型接收的 `todo_write` schema。 - [生成的配置目录](../../docs/config-catalog.zh.md#deepseek-aidsh-tool-todo)——每个受支持配置字段。 -- [todo_write 工具 Agent Note](../../.agents/notes/implemented/feature/2026-06-29-todo-write-tool.zh.md)——原始设计及其备选方案。 +- [todo_write 工具 Agent Note](../../.agents/notes/archived/feature/2026-06-29-todo-write-tool.md)——原始设计及其备选方案。 ----- diff --git a/packages/todo/tool-todo/README.i18n.yaml b/packages/todo/tool-todo/README.i18n.yaml index e2067aec80..3341d6ae23 100644 --- a/packages/todo/tool-todo/README.i18n.yaml +++ b/packages/todo/tool-todo/README.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write packages/todo/tool-todo/README.md -README.md: 144f3476c36cb9054b7a21df11e78e3a70a1aed2 -README.zh.md: 0ebda11ac08a245f4b07eda32c69d062cb79d0a9 +README.md: 0547688d833f10ae9504496d703ed7532e397e3e +README.zh.md: 23d4f71a41403711a2cdf639d01bf6f33c8f803d diff --git a/packages/todo/tool-todo/README.md b/packages/todo/tool-todo/README.md index 144f3476c3..0547688d83 100644 --- a/packages/todo/tool-todo/README.md +++ b/packages/todo/tool-todo/README.md @@ -74,7 +74,7 @@ The tool is built on four commitments: - **Deployment policy, not a coded rule.** `allowParallelInProgress` is a required composition choice because the tool cannot observe runtime concurrency; the durable-log invariant deliberately stays silent on the active count so a log written under one policy still replays under another. - **Validation keeps the logged snapshot honest.** Schema-level rejection of unknown keys and `execute`-level rejection of empty or duplicate content keep the durable snapshot equal to what the model believes it wrote. -The [todo_write tool Agent Note](../../../.agents/notes/implemented/feature/2026-06-29-todo-write-tool.md) records the original design and alternatives; the [parallel in-progress Agent Note](../../../.agents/notes/implemented/feature/2026-07-26-todo-parallel-in-progress.md) records the policy decision. +The [todo_write tool Agent Note](../../../.agents/notes/archived/feature/2026-06-29-todo-write-tool.md) records the original design and alternatives; the [parallel in-progress Agent Note](../../../.agents/notes/archived/feature/2026-07-26-todo-parallel-in-progress.md) records the policy decision. ### Source map @@ -91,11 +91,11 @@ The plugin is a function/namespace plugin: it exports `name` / `inject` / `apply ### Session projection -When the composition mounts `ctx.sessionProjections` ([`@deepseek-ai/dsh-session-projection`](../../session/session-projection/README.md)), this package registers the `todos` unit on an injected child: the projection is the standing plan — the latest whole `todo/write` list, `null` before the first write, cleared when the next turn starts while `turn/end` keeps the finished checklist visible. The key merges into `SessionProjectionMap` here; carriers serve the value on the history tail page and the `session/projection` push frame. Compositions without the registry are unaffected; see [src/index.ts](src/index.ts) for the unit registration. The lifetime rationale lives in the [todo plan clears on next turn Agent Note](../../../.agents/notes/implemented/feature/2026-07-28-todo-plan-clears-on-next-turn.md). +When the composition mounts `ctx.sessionProjections` ([`@deepseek-ai/dsh-session-projection`](../../session/session-projection/README.md)), this package registers the `todos` unit on an injected child: the projection is the standing plan — the latest whole `todo/write` list, `null` before the first write, cleared when the next turn starts while `turn/end` keeps the finished checklist visible. The key merges into `SessionProjectionMap` here; carriers serve the value on the history tail page and the `session/projection` push frame. Compositions without the registry are unaffected; see [src/index.ts](src/index.ts) for the unit registration. ### Durable-log invariant -The invariant companion registers on `ctx.invariants`, validates existing and newly announced sessions once, and then advances a committed per-session turn trace for live appends. It rejects malformed entries, empty or duplicated content, unknown statuses, and any durable `todo/write` outside an open turn; core session treats declaration-merged events generically, while this producing package owns todo-specific rules. It deliberately says nothing about how many items are `in_progress`, because that is the tool's per-deployment policy, not a durable-data rule ([event ownership](../../../.agents/notes/implemented/architecture/2026-07-20-todo-event-ownership.md)). +The invariant companion registers on `ctx.invariants`, validates existing and newly announced sessions once, and then advances a committed per-session turn trace for live appends. It rejects malformed entries, empty or duplicated content, unknown statuses, and any durable `todo/write` outside an open turn; core session treats declaration-merged events generically, while this producing package owns todo-specific rules. It deliberately says nothing about how many items are `in_progress`, because that is the tool's per-deployment policy, not a durable-data rule. ### Call mechanics @@ -114,9 +114,8 @@ Read these pages when the package-level contract is not enough. They move from t - [todo group map](../README.md) — the sibling group page and its package table. - [Generated tool catalog](../../../docs/tool-catalog.md#deepseek-aidsh-tool-todo) — the `todo_write` schema the model receives. - [Generated configuration catalog](../../../docs/config-catalog.md#deepseek-aidsh-tool-todo) — every accepted config field and its source declaration. -- [todo_write tool Agent Note](../../../.agents/notes/implemented/feature/2026-06-29-todo-write-tool.md) — the original design, alternatives, and dropped fields. -- [parallel in-progress Agent Note](../../../.agents/notes/implemented/feature/2026-07-26-todo-parallel-in-progress.md) — why the active-count cap is a deployment policy. -- [todo plan clears on next turn Agent Note](../../../.agents/notes/implemented/feature/2026-07-28-todo-plan-clears-on-next-turn.md) — the projection's standing-plan lifetime. +- [todo_write tool Agent Note](../../../.agents/notes/archived/feature/2026-06-29-todo-write-tool.md) — the original design, alternatives, and dropped fields. +- [parallel in-progress Agent Note](../../../.agents/notes/archived/feature/2026-07-26-todo-parallel-in-progress.md) — why the active-count cap is a deployment policy. ----- diff --git a/packages/todo/tool-todo/README.zh.md b/packages/todo/tool-todo/README.zh.md index 0ebda11ac0..23d4f71a41 100644 --- a/packages/todo/tool-todo/README.zh.md +++ b/packages/todo/tool-todo/README.zh.md @@ -74,7 +74,7 @@ agent 每次更新都发送完整列表;新列表替换旧列表,因此没 - **部署策略,而非编码规则。** `allowParallelInProgress` 是必填组合选择,因为工具无法观测运行时并发;持久日志不变式刻意不跟随它,因此一种策略下写入的日志在部署收紧另一种策略后仍可回放。 - **校验让落库快照保持诚实。** schema 层拒绝未知键、`execute` 层拒绝空或重复 content,使持久快照与模型自认为写入的内容一致。 -[todo_write 工具 Agent Note](../../../.agents/notes/implemented/feature/2026-06-29-todo-write-tool.zh.md) 记录原始设计与备选方案;[并行 in-progress Agent Note](../../../.agents/notes/implemented/feature/2026-07-26-todo-parallel-in-progress.zh.md) 记录该策略决策。 +[todo_write 工具 Agent Note](../../../.agents/notes/archived/feature/2026-06-29-todo-write-tool.md) 记录原始设计与备选方案;[并行 in-progress Agent Note](../../../.agents/notes/archived/feature/2026-07-26-todo-parallel-in-progress.md) 记录该策略决策。 ### 源码地图 @@ -91,11 +91,11 @@ agent 每次更新都发送完整列表;新列表替换旧列表,因此没 ### 会话投影 -当组合挂载 `ctx.sessionProjections`([`@deepseek-ai/dsh-session-projection`](../../session/session-projection/README.zh.md))时,本包在注入的子插件中注册 `todos` 单元:投影即有效计划——最新的整份 `todo/write` 列表,首次写入前为 `null`,下一轮次开始时清空,而 `turn/end` 保留刚完成的清单。该键在此处合并进 `SessionProjectionMap`;载体通过历史尾页与 `session/projection` 推送帧提供该值。未挂载注册表的组合不受影响;单元注册见 [src/index.ts](src/index.ts)。生命周期理由见 [todo 计划在下一轮次清空 Agent Note](../../../.agents/notes/implemented/feature/2026-07-28-todo-plan-clears-on-next-turn.zh.md)。 +当组合挂载 `ctx.sessionProjections`([`@deepseek-ai/dsh-session-projection`](../../session/session-projection/README.zh.md))时,本包在注入的子插件中注册 `todos` 单元:投影即有效计划——最新的整份 `todo/write` 列表,首次写入前为 `null`,下一轮次开始时清空,而 `turn/end` 保留刚完成的清单。该键在此处合并进 `SessionProjectionMap`;载体通过历史尾页与 `session/projection` 推送帧提供该值。未挂载注册表的组合不受影响;单元注册见 [src/index.ts](src/index.ts)。 ### 持久日志不变式 -不变式伴生插件注册到 `ctx.invariants`,先分别校验既有会话与新公布会话一次,再为实时追加推进按会话提交的轮次轨迹。它会拒绝畸形条目、空或重复 content、未知状态,以及开放轮次之外的持久 `todo/write`;核心 session 通用处理声明合并事件,而本生产包拥有 todo 专用规则。它刻意不约束有多少条目处于 `in_progress`,因为那是工具按部署制定的策略,而非持久数据规则(见[事件归属](../../../.agents/notes/implemented/architecture/2026-07-20-todo-event-ownership.zh.md))。 +不变式伴生插件注册到 `ctx.invariants`,先分别校验既有会话与新公布会话一次,再为实时追加推进按会话提交的轮次轨迹。它会拒绝畸形条目、空或重复 content、未知状态,以及开放轮次之外的持久 `todo/write`;核心 session 通用处理声明合并事件,而本生产包拥有 todo 专用规则。它刻意不约束有多少条目处于 `in_progress`,因为那是工具按部署制定的策略,而非持久数据规则。 ### 调用机制 @@ -114,9 +114,8 @@ agent 每次更新都发送完整列表;新列表替换旧列表,因此没 - [todo 组映射](../README.zh.md)——同级组页面及其包表格。 - [生成的工具目录](../../../docs/tool-catalog.zh.md#deepseek-aidsh-tool-todo)——模型接收的 `todo_write` schema。 - [生成的配置目录](../../../docs/config-catalog.zh.md#deepseek-aidsh-tool-todo)——每个受支持配置字段及其源声明。 -- [todo_write 工具 Agent Note](../../../.agents/notes/implemented/feature/2026-06-29-todo-write-tool.zh.md)——原始设计、备选方案与砍掉的字段。 -- [并行 in-progress Agent Note](../../../.agents/notes/implemented/feature/2026-07-26-todo-parallel-in-progress.zh.md)——为何活跃计数上限成为部署策略。 -- [todo 计划在下一轮次清空 Agent Note](../../../.agents/notes/implemented/feature/2026-07-28-todo-plan-clears-on-next-turn.zh.md)——投影的有效计划生命周期。 +- [todo_write 工具 Agent Note](../../../.agents/notes/archived/feature/2026-06-29-todo-write-tool.md)——原始设计、备选方案与砍掉的字段。 +- [并行 in-progress Agent Note](../../../.agents/notes/archived/feature/2026-07-26-todo-parallel-in-progress.md)——为何活跃计数上限成为部署策略。 ----- diff --git a/packages/util/atomic-write/README.i18n.yaml b/packages/util/atomic-write/README.i18n.yaml index bd5c1a5a68..b6c13d26c6 100644 --- a/packages/util/atomic-write/README.i18n.yaml +++ b/packages/util/atomic-write/README.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write packages/util/atomic-write/README.md -README.md: 598d29dd45a75d774a2cef1abedab233e12a9eee -README.zh.md: 71e35025d20cfcf74466ccca452b3cd995298240 +README.md: e6d7d28514b8bff7afe366174d5ebe04ab402b1f +README.zh.md: 7bf4fdb87316e2ef18a9685fd945d2419e949888 diff --git a/packages/util/atomic-write/README.md b/packages/util/atomic-write/README.md index 598d29dd45..e6d7d28514 100644 --- a/packages/util/atomic-write/README.md +++ b/packages/util/atomic-write/README.md @@ -79,7 +79,7 @@ The package is built on one separation: the atomic commit owns the swap, and the ### Write path -`writeFileAtomic` writes a random-suffix sibling opened with exclusive create (`wx`), then renames it over the target. The exclusive open refuses to follow a symlink planted at a guessable temp path; the same-directory sibling keeps the rename on one filesystem; and the rename replaces a symlinked target itself instead of writing through to its referent. A Windows retry keeps the same complete sibling and uses bounded exponential backoff, so temporary use of the target by software outside the cooperative writer lock cannot turn a safe replacement into an immediate failure; the [retry decision](../../../.agents/notes/implemented/bug-fix/2026-08-29-windows-atomic-replace-retry.md) owns the rationale and rejected alternatives. +`writeFileAtomic` writes a random-suffix sibling opened with exclusive create (`wx`), then renames it over the target. The exclusive open refuses to follow a symlink planted at a guessable temp path; the same-directory sibling keeps the rename on one filesystem; and the rename replaces a symlinked target itself instead of writing through to its referent. A Windows retry keeps the same complete sibling and uses bounded exponential backoff, so temporary use of the target by software outside the cooperative writer lock cannot turn a safe replacement into an immediate failure; the archived [retry decision record](../../../.agents/notes/archived/bug-fix/2026-08-29-windows-atomic-replace-retry.md) documents the original rationale and rejected alternatives. `withFileLock` creates a `.lock` sibling with `wx`. `EEXIST` identifies contention directly; `EPERM` does so only when a fresh `lstat` confirms the lock path exists, covering Windows exclusive-create behavior without hiding an unrelated permission failure. The lock records its creator's PID and is removed by the holder in a `finally`; contention backs off exponentially and fails when the per-call `waitMs` deadline (default two seconds) passes. diff --git a/packages/util/atomic-write/README.zh.md b/packages/util/atomic-write/README.zh.md index 71e35025d2..7bf4fdb873 100644 --- a/packages/util/atomic-write/README.zh.md +++ b/packages/util/atomic-write/README.zh.md @@ -79,7 +79,7 @@ await withFileLock('/home/u/.dsh/settings.yaml', async () => { ### 写入路径 -`writeFileAtomic` 先以独占创建(`wx`)打开一个随机后缀的同级文件并写入内容,然后 rename 到目标上。独占打开拒绝跟随预先埋在可猜测临时路径上的符号链接;同目录兄弟文件保证 rename 落在同一文件系统上;rename 替换的是符号链接目标本身,绝不写穿到其指向的文件。Windows 重试会保留同一份完整的兄弟文件,并采用有界指数退避,因此协作式写锁之外的软件瞬时占用目标时,不会让安全替换立即失败;[重试决策](../../../.agents/notes/implemented/bug-fix/2026-08-29-windows-atomic-replace-retry.zh.md)记录了理由与被拒绝的替代方案。 +`writeFileAtomic` 先以独占创建(`wx`)打开一个随机后缀的同级文件并写入内容,然后 rename 到目标上。独占打开拒绝跟随预先埋在可猜测临时路径上的符号链接;同目录兄弟文件保证 rename 落在同一文件系统上;rename 替换的是符号链接目标本身,绝不写穿到其指向的文件。Windows 重试会保留同一份完整的兄弟文件,并采用有界指数退避,因此协作式写锁之外的软件瞬时占用目标时,不会让安全替换立即失败;已归档的[重试决策记录](../../../.agents/notes/archived/bug-fix/2026-08-29-windows-atomic-replace-retry.md)记录了最初的理由与被拒绝的替代方案。 `withFileLock` 以 `wx` 创建 `.lock` 同级文件。`EEXIST` 直接表示竞争;只有一次新的 `lstat` 确认锁路径存在时,`EPERM` 才表示竞争,从而兼容 Windows 的独占创建行为,又不掩盖无关的权限故障。锁记录创建者的 PID,由持有者在 `finally` 中移除;竞争按指数退避,在每次调用声明的 `waitMs` 期限(默认两秒)过后失败。 diff --git a/packages/util/deque/README.i18n.yaml b/packages/util/deque/README.i18n.yaml index 337042e339..e35e9193ab 100644 --- a/packages/util/deque/README.i18n.yaml +++ b/packages/util/deque/README.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write packages/util/deque/README.md -README.md: b7391dfd7c2d42a844f5ceb6047801374dfc9fbc -README.zh.md: 0eb4f6b5612fe18182385a67d5362a09b6d7ccd6 +README.md: 7ddf9ae1645a60b85def0d64cfb261ec48c3cb36 +README.zh.md: fafcc2499afe5df54b1197a2e4b7cdb6e589c2d3 diff --git a/packages/util/deque/README.md b/packages/util/deque/README.md index b7391dfd7c..7ddf9ae164 100644 --- a/packages/util/deque/README.md +++ b/packages/util/deque/README.md @@ -74,7 +74,7 @@ The deque stores entries in a circular array. Removing an entry clears that slot ## Further Exploration - [Utility package map](../README.md) — the other zero-dependency primitives shared across package groups. -- [Linear stream queue decision](../../../.agents/notes/implemented/bug-fix/2026-08-28-linear-stream-queue-drain.md) — why production streams use this deque instead of array head removal. +- [Linear stream queue decision](../../../.agents/notes/archived/bug-fix/2026-08-28-linear-stream-queue-drain.md) — why production streams use this deque instead of array head removal. ----- diff --git a/packages/util/deque/README.zh.md b/packages/util/deque/README.zh.md index 0eb4f6b561..fafcc2499a 100644 --- a/packages/util/deque/README.zh.md +++ b/packages/util/deque/README.zh.md @@ -74,7 +74,7 @@ while (frames.size > 0) { ## 进一步探索 - [工具包映射](../README.zh.md)——跨包组共享的其他零依赖原语。 -- [线性流队列决策](../../../.agents/notes/implemented/bug-fix/2026-08-28-linear-stream-queue-drain.zh.md)——生产流为何使用本双端队列而非数组头部移除。 +- [线性流队列决策](../../../.agents/notes/archived/bug-fix/2026-08-28-linear-stream-queue-drain.md)——生产流为何使用本双端队列而非数组头部移除。 ----- diff --git a/packages/util/output-retention/README.i18n.yaml b/packages/util/output-retention/README.i18n.yaml index b4c01d4768..b049a62ac9 100644 --- a/packages/util/output-retention/README.i18n.yaml +++ b/packages/util/output-retention/README.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write packages/util/output-retention/README.md -README.md: 184f1da7a5d3e1d9369382404e43605d79cb354e -README.zh.md: dd0f041d78af8ed9d03e1fd4191ee171b9425aae +README.md: 304ff659c0d29ca3fc1d2652f0e817d66b2579b0 +README.zh.md: b3d32b9c2f1bdbc02e6a26c0af3e66cae7d04df1 diff --git a/packages/util/output-retention/README.md b/packages/util/output-retention/README.md index 184f1da7a5..304ff659c0 100644 --- a/packages/util/output-retention/README.md +++ b/packages/util/output-retention/README.md @@ -128,7 +128,6 @@ The library is built on one separation: it owns the mechanical question of what Read these pages when you need the consumers or the boundary decision behind the library. -- [Tool-result retention library Agent Note](../../../.agents/notes/implemented/architecture/2026-07-06-tool-result-retention-library.md) — the boundary the library draws around tool semantics. - [Spill policy](../../spill/spill-policy/README.md) — composes `TextRetainer` for a bounded preview around a spill-file notice. - [Spill subsystem](../../../docs/subsystems/spill.md) — the spill vocabulary this library's preview mechanics serve. - [File search tool](../../fs/tool-fs-search/README.md) — an `ItemRetainer` consumer collecting full results for spill. diff --git a/packages/util/output-retention/README.zh.md b/packages/util/output-retention/README.zh.md index dd0f041d78..b3d32b9c2f 100644 --- a/packages/util/output-retention/README.zh.md +++ b/packages/util/output-retention/README.zh.md @@ -128,7 +128,6 @@ const footer = formatRetentionNotice( 当你需要消费方或库背后的边界决策时,阅读以下页面。 -- [工具结果保留库 Agent Note](../../../.agents/notes/implemented/architecture/2026-07-06-tool-result-retention-library.zh.md)——库围绕工具语义划定的边界。 - [spill 策略](../../spill/spill-policy/README.zh.md)——组合 `TextRetainer`,围绕 spill 文件通知构建有界预览。 - [spill 子系统](../../../docs/subsystems/spill.zh.md)——本库预览机制所服务的 spill 词汇。 - [文件搜索工具](../../fs/tool-fs-search/README.zh.md)——为 spill 收集完整结果的 `ItemRetainer` 消费方。 diff --git a/packages/workflow/README.i18n.yaml b/packages/workflow/README.i18n.yaml index 7cd0e14315..3fa7140a87 100644 --- a/packages/workflow/README.i18n.yaml +++ b/packages/workflow/README.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write packages/workflow/README.md -README.md: 9187a7c48ac18ae79bc20155e2873fbf6e8e9c74 -README.zh.md: 96d2b5045da60805c43ac869c0747f3e0fc72dc3 +README.md: c213c59386be610724bd52fa488f5c21e3a53d5d +README.zh.md: 998f43d6070562dc0e219b1dd7d20859fd8407aa diff --git a/packages/workflow/README.md b/packages/workflow/README.md index 9187a7c48a..c213c59386 100644 --- a/packages/workflow/README.md +++ b/packages/workflow/README.md @@ -39,7 +39,7 @@ The workflow group lets an agent run a model-authored orchestration script that - [Generated tool catalog](../../docs/tool-catalog.md#deepseek-aidsh-tool-ralph) — the `ralph` tool schema the model receives. - [Generated configuration catalog](../../docs/config-catalog.md#deepseek-aidsh-workflow-worker-thread) — every accepted engine config field. - [Dynamic workflows Agent Note](../../.agents/notes/implemented/feature/2026-07-05-dynamic-workflows.md) — the seam design and its decisions. -- [Ralph tool Agent Note](../../.agents/notes/implemented/feature/2026-07-19-fresh-agent-ralph-workflow-tool.md) — the fixed fresh-agent loop design and deferred work. +- [Harness-level goal-based execution Agent Note](../../.agents/notes/implemented/feature/2026-07-16-harness-level-loop.md) — the fixed fresh-agent loop design and deferred work. ----- diff --git a/packages/workflow/README.zh.md b/packages/workflow/README.zh.md index 96d2b5045d..998f43d607 100644 --- a/packages/workflow/README.zh.md +++ b/packages/workflow/README.zh.md @@ -39,7 +39,7 @@ workflow 组让 agent 可以运行一段由模型编写的编排脚本,把工 - [生成的工具目录](../../docs/tool-catalog.zh.md#deepseek-aidsh-tool-ralph)——模型接收的 `ralph` 工具 schema。 - [生成的配置目录](../../docs/config-catalog.zh.md#deepseek-aidsh-workflow-worker-thread)——每个受支持的引擎配置字段。 - [动态工作流 Agent Note](../../.agents/notes/implemented/feature/2026-07-05-dynamic-workflows.zh.md)——seam 设计及其决策。 -- [Ralph 工具 Agent Note](../../.agents/notes/implemented/feature/2026-07-19-fresh-agent-ralph-workflow-tool.zh.md)——固定全新 agent 循环的设计与暂缓事项。 +- [Harness 层目标式执行 Agent Note](../../.agents/notes/implemented/feature/2026-07-16-harness-level-loop.zh.md)——固定全新 agent 循环的设计与暂缓事项。 ----- diff --git a/packages/workflow/tool-ralph/README.i18n.yaml b/packages/workflow/tool-ralph/README.i18n.yaml index ed1a814c10..b72111aecd 100644 --- a/packages/workflow/tool-ralph/README.i18n.yaml +++ b/packages/workflow/tool-ralph/README.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write packages/workflow/tool-ralph/README.md -README.md: dcdaa1abf0da735c821fb805f584a0e3660417b9 -README.zh.md: 1d5f42f7416c74424ed6c4b13750ef3e8ef030d2 +README.md: d36fdba76b34436b219ae489ddc9282a875af408 +README.zh.md: ef3f18d2d4cbc37291d462f17cbd31f6a1e3f4b5 diff --git a/packages/workflow/tool-ralph/README.md b/packages/workflow/tool-ralph/README.md index dcdaa1abf0..d36fdba76b 100644 --- a/packages/workflow/tool-ralph/README.md +++ b/packages/workflow/tool-ralph/README.md @@ -58,7 +58,7 @@ This section explains the fixed-script design and the validation and lifecycle m ### Design concept -The loop is a deployment-owned fixed script: the model supplies data only and cannot alter the loop, provider route, schema, or handoff validation. The tool is an ordinary plugin over `ctx.workflowEngine` and `ctx.subagents` — no Ralph mode or fresh-agent loop is added to `agent-loop`, and the same-session goal domain stays independent. The [Ralph Agent Note](../../../.agents/notes/implemented/feature/2026-07-19-fresh-agent-ralph-workflow-tool.md) owns the policy and deferred work. +The loop is a deployment-owned fixed script: the model supplies data only and cannot alter the loop, provider route, schema, or handoff validation. The tool is an ordinary plugin over `ctx.workflowEngine` and `ctx.subagents` — no Ralph mode or fresh-agent loop is added to `agent-loop`, and the same-session goal domain stays independent. The [harness-level goal-based execution Agent Note](../../../.agents/notes/implemented/feature/2026-07-16-harness-level-loop.md) owns the policy and deferred work. ### Fixed script and routing @@ -97,7 +97,7 @@ Read these pages when the tool-level contract is not enough. They move from the - [Worker-thread engine](../workflow-worker-thread/README.md) — the engine that executes the fixed script. - [subagent seam](../../subagent/subagent/README.md) — the fresh-child provider contract. - [Goal group](../../goal/goal/README.md) — same-session goal tools for ordinary long-running objectives. -- [Ralph tool Agent Note](../../../.agents/notes/implemented/feature/2026-07-19-fresh-agent-ralph-workflow-tool.md) — the policy, provider requirements, and deferred work. +- [Harness-level goal-based execution Agent Note](../../../.agents/notes/implemented/feature/2026-07-16-harness-level-loop.md) — the policy, provider requirements, and deferred work. ----- diff --git a/packages/workflow/tool-ralph/README.zh.md b/packages/workflow/tool-ralph/README.zh.md index 1d5f42f741..ef3f18d2d4 100644 --- a/packages/workflow/tool-ralph/README.zh.md +++ b/packages/workflow/tool-ralph/README.zh.md @@ -58,7 +58,7 @@ kind: "package-reference" ### 设计理念 -循环是部署方拥有的固定脚本:模型只提供数据,无法改变循环、提供方路由、schema 或交接校验。该工具是基于 `ctx.workflowEngine` 与 `ctx.subagents` 的普通插件——不会向 `agent-loop` 添加 Ralph 模式或全新 agent loop,同会话的 goal 领域也保持独立。[Ralph Agent Note](../../../.agents/notes/implemented/feature/2026-07-19-fresh-agent-ralph-workflow-tool.zh.md)拥有策略与暂缓事项。 +循环是部署方拥有的固定脚本:模型只提供数据,无法改变循环、提供方路由、schema 或交接校验。该工具是基于 `ctx.workflowEngine` 与 `ctx.subagents` 的普通插件——不会向 `agent-loop` 添加 Ralph 模式或全新 agent loop,同会话的 goal 领域也保持独立。[Harness 层目标式执行 Agent Note](../../../.agents/notes/implemented/feature/2026-07-16-harness-level-loop.zh.md)拥有策略与暂缓事项。 ### 固定脚本与路由 @@ -97,7 +97,7 @@ kind: "package-reference" - [worker-thread 引擎](../workflow-worker-thread/README.zh.md)——执行固定脚本的引擎。 - [subagent seam](../../subagent/subagent/README.zh.md)——全新子 agent 的提供方契约。 - [goal 组](../../goal/goal/README.zh.md)——面向普通长期目标的同会话 goal 工具。 -- [Ralph 工具 Agent Note](../../../.agents/notes/implemented/feature/2026-07-19-fresh-agent-ralph-workflow-tool.zh.md)——策略、提供方要求与暂缓事项。 +- [Harness 层目标式执行 Agent Note](../../../.agents/notes/implemented/feature/2026-07-16-harness-level-loop.zh.md)——策略、提供方要求与暂缓事项。 ----- diff --git a/packages/workspace/README.i18n.yaml b/packages/workspace/README.i18n.yaml index 564ea88c3c..13c70b5676 100644 --- a/packages/workspace/README.i18n.yaml +++ b/packages/workspace/README.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write packages/workspace/README.md -README.md: b27f9109f64ed2793cce193685ae88a22c6a9310 -README.zh.md: 805172c5de0ae8f7e41d150ea125b6952c9ea953 +README.md: e0df1ec7dbcaf569e1a51530eed9a2f37e0f961d +README.zh.md: 3a16d1627709c846d7ac6c9679c782c11b86efb5 diff --git a/packages/workspace/README.md b/packages/workspace/README.md index b27f9109f6..e0df1ec7db 100644 --- a/packages/workspace/README.md +++ b/packages/workspace/README.md @@ -33,7 +33,7 @@ The workspace group provides the durable project list behind a host UI: one prod - [Workspace subsystem](../../docs/subsystems/workspace.md) — the authoritative feature contract for projects and their sessions. - [domain KV storage Agent Note](../../.agents/notes/proposed/architecture/2026-07-24-domain-kv-storage-and-workspace.md) — the storage design behind project records. -- [Workspace UI product-flow Agent Note](../../.agents/notes/implemented/feature/2026-07-25-workspace-ui-product-flow.md) — how the first start builds projects from session history and how the GUI orders them. +- [Workspace UI product-flow Agent Note](../../.agents/notes/archived/feature/2026-07-25-workspace-ui-product-flow.md) — how the first start builds projects from session history and how the GUI orders them. - [Workspace registration deletion decision](../../.agents/notes/implemented/feature/2026-07-27-workspace-registration-deletion.md) — why removing a project never deletes its folder or sessions. ----- diff --git a/packages/workspace/README.zh.md b/packages/workspace/README.zh.md index 805172c5de..3a16d16277 100644 --- a/packages/workspace/README.zh.md +++ b/packages/workspace/README.zh.md @@ -33,7 +33,7 @@ workspace 组提供宿主 UI 背后的持久项目列表:一个产品包 `work - [Workspace 子系统](../../docs/subsystems/workspace.zh.md)——项目及其会话的权威功能约定。 - [领域 KV 存储 Agent Note](../../.agents/notes/proposed/architecture/2026-07-24-domain-kv-storage-and-workspace.zh.md)——项目记录背后的存储设计。 -- [Workspace UI 产品流 Agent Note](../../.agents/notes/implemented/feature/2026-07-25-workspace-ui-product-flow.zh.md)——首次启动如何从会话历史构建项目,以及 GUI 如何排序。 +- [Workspace UI 产品流 Agent Note](../../.agents/notes/archived/feature/2026-07-25-workspace-ui-product-flow.md)——首次启动如何从会话历史构建项目,以及 GUI 如何排序。 - [删除 Workspace 注册记录决策](../../.agents/notes/implemented/feature/2026-07-27-workspace-registration-deletion.zh.md)——为什么移除项目绝不会删除其文件夹或会话。 ----- diff --git a/packages/workspace/workspace/README.i18n.yaml b/packages/workspace/workspace/README.i18n.yaml index 5d98564e58..b4b5f8e95b 100644 --- a/packages/workspace/workspace/README.i18n.yaml +++ b/packages/workspace/workspace/README.i18n.yaml @@ -2,5 +2,5 @@ # side as of the last confirmed-consistent state. Both languages carry equal authority; # after editing either side, bring the other along and re-record with: # pnpm run verify-translation-pairing --write packages/workspace/workspace/README.md -README.md: eb3d2a4f89b6023d8a916a41723500186cc10d93 -README.zh.md: 5059a6edd69a82bd8b0a364793ca1b5c941d67e2 +README.md: b9512b7f0c52760d7d51305dda24151e8464947d +README.zh.md: d578182c1fbff2ca2131cd1970090c3ece9b0808 diff --git a/packages/workspace/workspace/README.md b/packages/workspace/workspace/README.md index eb3d2a4f89..b9512b7f0c 100644 --- a/packages/workspace/workspace/README.md +++ b/packages/workspace/workspace/README.md @@ -128,7 +128,7 @@ Read these pages when this package's view is not enough: the subsystem reference - [Workspace subsystem](../../../docs/subsystems/workspace.md) — the feature contract for projects and their sessions, and the generated API for the workspace service. - [Workspace package map](../README.md) — the group's single package and its repository position. - [domain KV storage Agent Note](../../../.agents/notes/proposed/architecture/2026-07-24-domain-kv-storage-and-workspace.md) — why project records use the domain data form. -- [Workspace UI product-flow Agent Note](../../../.agents/notes/implemented/feature/2026-07-25-workspace-ui-product-flow.md) — how the first start builds projects from session history and how the GUI orders them. +- [Workspace UI product-flow Agent Note](../../../.agents/notes/archived/feature/2026-07-25-workspace-ui-product-flow.md) — how the first start builds projects from session history and how the GUI orders them. - [Workspace registration deletion decision](../../../.agents/notes/implemented/feature/2026-07-27-workspace-registration-deletion.md) — why removing a project never deletes its folder or sessions. ----- @@ -173,6 +173,6 @@ This Dev Note is working context for maintainers: open questions and directions #### Open: the `create(path, title?)` title parameter -The `title` parameter has no production caller since the gateway's create-by-name branch was removed; a code TODO proposes dropping the parameter and its `@param` clause together ([note](../../../.agents/notes/implemented/simplification/2026-07-31-one-route-to-add-a-workspace.md)). +The `title` parameter has no production caller since the gateway's create-by-name branch was removed; a code TODO proposes dropping the parameter and its `@param` clause together ([note](../../../.agents/notes/archived/simplification/2026-07-31-one-route-to-add-a-workspace.md)). diff --git a/packages/workspace/workspace/README.zh.md b/packages/workspace/workspace/README.zh.md index 5059a6edd6..d578182c1f 100644 --- a/packages/workspace/workspace/README.zh.md +++ b/packages/workspace/workspace/README.zh.md @@ -128,7 +128,7 @@ ctx.workspaceRegistry.list() // shows the project, newest first - [Workspace 子系统](../../../docs/subsystems/workspace.zh.md)——项目及其会话的功能约定,以及 workspace 服务的生成 API。 - [Workspace 包映射](../README.zh.md)——本组唯一的包及其仓库位置。 - [领域 KV 存储 Agent Note](../../../.agents/notes/proposed/architecture/2026-07-24-domain-kv-storage-and-workspace.zh.md)——为什么项目记录使用领域数据形式。 -- [Workspace UI 产品流 Agent Note](../../../.agents/notes/implemented/feature/2026-07-25-workspace-ui-product-flow.zh.md)——首次启动如何从会话历史构建项目,以及 GUI 如何排序。 +- [Workspace UI 产品流 Agent Note](../../../.agents/notes/archived/feature/2026-07-25-workspace-ui-product-flow.md)——首次启动如何从会话历史构建项目,以及 GUI 如何排序。 - [删除 Workspace 注册记录决策](../../../.agents/notes/implemented/feature/2026-07-27-workspace-registration-deletion.zh.md)——为什么移除项目绝不会删除其文件夹或会话。 ----- @@ -173,6 +173,6 @@ ctx.workspaceRegistry.list() // shows the project, newest first #### 开放:`create(path, title?)` 的 title 参数 -网关的按名称创建分支移除后,`title` 参数已无生产调用方;代码中的 TODO 提议把该参数与其 `@param` 子句一并移除(参见[笔记](../../../.agents/notes/implemented/simplification/2026-07-31-one-route-to-add-a-workspace.zh.md))。 +网关的按名称创建分支移除后,`title` 参数已无生产调用方;代码中的 TODO 提议把该参数与其 `@param` 子句一并移除(参见[笔记](../../../.agents/notes/archived/simplification/2026-07-31-one-route-to-add-a-workspace.md))。 diff --git a/packages/workspace/workspace/src/index.ts b/packages/workspace/workspace/src/index.ts index 5f149adac1..037344fce4 100644 --- a/packages/workspace/workspace/src/index.ts +++ b/packages/workspace/workspace/src/index.ts @@ -151,7 +151,7 @@ export class WorkspaceRegistry extends Service { */ // TODO: `title` lost its last production caller when the gateway's // create-by-name branch was deleted - // (.agents/notes/implemented/simplification/2026-07-31-one-route-to-add-a-workspace.md); + // (.agents/notes/archived/simplification/2026-07-31-one-route-to-add-a-workspace.md); // drop the parameter with its @param clause and the `create(path, title?)` // lines in this package's README pair. async create(path: string, title?: string): Promise { diff --git a/scripts/check-workspace-constraints.ts b/scripts/check-workspace-constraints.ts index d1ee54e42e..425ee7c615 100644 --- a/scripts/check-workspace-constraints.ts +++ b/scripts/check-workspace-constraints.ts @@ -321,8 +321,7 @@ export function checkWorkspaceManifest({ dir, manifest }: WorkspaceManifest): st // the Landlock packages publish publicly because outside consumers install // them, while the dsh family stays restricted until its own sequence goes // public. A mixed scope is why no publish path passes `--access` — one flag - // cannot serve both, so each packed manifest decides - // ([rationale](../.agents/notes/implemented/process/2026-08-13-public-vendor-and-native-sequences.md)). + // cannot serve both, so each packed manifest decides. if (manifest.private === true) { errors.push(`${label}: release member must not set "private": true`) } diff --git a/scripts/gen-persistence-catalog.ts b/scripts/gen-persistence-catalog.ts index e9d74e6a5d..9d78884475 100644 --- a/scripts/gen-persistence-catalog.ts +++ b/scripts/gen-persistence-catalog.ts @@ -366,7 +366,7 @@ export function render(events: AnnotatedLogEventEntry[], envelopeTypes: EventEnv '', 'Every event type that can appear in a session\'s durable event log: the complete persisted `SessionEvent` envelope and each member of the merge-extensible `SessionEventMap` — the owning vocabulary in `@deepseek-ai/dsh-session` plus every plugin declaration merge into `@deepseek-ai/dsh-session/types` in this repo — with source JSDoc, full payload declaration, surface badge, and declaration site. It complements [session.md](subsystems/session.md) (surface ordering and the `deriveMessages()` projection), [persistence.md](subsystems/persistence.md) (how the log is made durable), and the generated region of [session.md](subsystems/session.md#cordis-surface) (the live bus wiring — a log event is NOT a cordis event; it reaches listeners via the single `session/event` emit).', '', - 'This file is GENERATED from source (`scripts/gen-persistence-catalog.ts`) and verified fresh by `pnpm run verify-persistence-catalog` (part of `doc-sync`) — do not edit it by hand. Declaration blocks retain the source declaration and nested property JSDoc, removing only the indentation imposed by a containing interface/module, and use a `ts persistence-catalog` fence (skipped by doc-typecheck because declarations reference types from their owning modules). Type names in a payload link to the page that documents them. See [the persistence-log-catalog Agent Note](../.agents/notes/archived/process/2026-07-04-persistence-log-catalog.md).', + 'This file is GENERATED from source (`scripts/gen-persistence-catalog.ts`) and verified fresh by `pnpm run verify-persistence-catalog` (part of `doc-sync`) — do not edit it by hand. Declaration blocks retain the source declaration and nested property JSDoc, removing only the indentation imposed by a containing interface/module, and use a `ts persistence-catalog` fence (skipped by doc-typecheck because declarations reference types from their owning modules). Type names in a payload link to the page that documents them. The archived [persistence-log-catalog record](../.agents/notes/archived/process/2026-07-04-persistence-log-catalog.md) documents the original catalog decision.', '', 'The envelope declarations below compose each event\'s `type`, monotonic `seq`, epoch-ms `time`, `data`, the optional `ignorable` unknown-type skip marker, and the conditional `surfaceOp`/`sourceEventSeqs` fields. **surface** marks a `SurfaceEventType` member: it produces an LLM message and declares how it joins the surface list. **log-only** marks everything else: a durable, replayable record with no derived-history contribution. Every payload is JSON-serializable (enforced at `Session.append`). Current writers stamp `SESSION_FORMAT_VERSION`; supported historical artifacts reach this current vocabulary through the build-static adjacent migration catalog ([the version lifecycle](subsystems/persistence.md)). Scope: the packages in this repo; a downstream plugin can merge further current-version event types, which are outside this catalog by construction and require an explicit disposition at a later format edge.', '', diff --git a/scripts/gen-tool-catalog.ts b/scripts/gen-tool-catalog.ts index 972eadc1b8..0bcff2f4ed 100644 --- a/scripts/gen-tool-catalog.ts +++ b/scripts/gen-tool-catalog.ts @@ -2,8 +2,8 @@ * Generate `docs/tool-catalog.md` from schemas collected by booting each tool * plugin. Runtime registration is the source of truth for computed schemas; * the manifest is checked against every on-disk `tool-*` package. `--check` - * verifies the committed artifact. Rationale and ownership live in - * `.agents/notes/implemented/process/2026-07-02-tool-schema-catalog.md`. + * verifies the committed artifact. The original decision is recorded in + * `.agents/notes/archived/process/2026-07-02-tool-schema-catalog.md`. */ import { globSync, readFileSync, writeFileSync } from 'node:fs' @@ -731,7 +731,7 @@ export function render(catalog: ToolCatalog): string { '', 'Every model-facing tool a shipped plugin contributes to `ctx.tools`: the `name`, `description`, and JSON-Schema `parameters` the model receives via the system-prompt assembly. It complements the [subsystem pages](subsystems/core.md) (the types plus each page\'s generated Cordis API region) — this page is the *tools* the agent is offered.', '', - 'This file is GENERATED and verified fresh by `pnpm run verify-tool-catalog` (part of `doc-sync`) — do not edit it by hand. Unlike the cordis catalog (a pure source-AST pass), this generator BOOTS each tool plugin on a real context and reads `ctx.tools.schemas()`, because a tool schema is not statically knowable (runtime-spread enums, concatenated descriptions, config-driven names, raw-JSON-Schema MCP tools). A completeness guard globs `packages/*/tool-*` and fails if any package is missing from the generator\'s boot manifest, so a new tool cannot be silently undocumented. See [the tool-schema-catalog Agent Note](../.agents/notes/implemented/process/2026-07-02-tool-schema-catalog.md).', + 'This file is GENERATED and verified fresh by `pnpm run verify-tool-catalog` (part of `doc-sync`) — do not edit it by hand. Unlike the cordis catalog (a pure source-AST pass), this generator BOOTS each tool plugin on a real context and reads `ctx.tools.schemas()`, because a tool schema is not statically knowable (runtime-spread enums, concatenated descriptions, config-driven names, raw-JSON-Schema MCP tools). A completeness guard globs `packages/*/tool-*` and fails if any package is missing from the generator\'s boot manifest, so a new tool cannot be silently undocumented.', '', 'Scope: shipped product tools under `packages/*/tool-*`, each booted with its DEFAULT config, except where a Config field is REQUIRED with no default — there the generator must choose, and the per-package note records which branch this page shows. The registered tool NAME can be a load-time config (e.g. `tool-subagent`\'s `toolName`), so a deployment may expose a package under a different or additional name — a per-package note records those shipped aliases where they exist. The `examples/` demo tools (e.g. `echo`) are excluded, matching the cordis catalog\'s packages-only scope.', '', diff --git a/scripts/install-lefthook.spec.ts b/scripts/install-lefthook.spec.ts index 0f0a63833d..fa4cad967e 100644 --- a/scripts/install-lefthook.spec.ts +++ b/scripts/install-lefthook.spec.ts @@ -215,7 +215,7 @@ function runInstaller( // flag rather than yielding to it, so a smaller one here lowers what the lane // grants every case in this file, none of which carries an allowance of its own. // Rationale and the paired hook budget are in -// .agents/notes/implemented/testing/2026-08-29-windows-lane-hook-and-lefthook-budget.md. +// .agents/notes/archived/testing/2026-08-29-windows-lane-hook-and-lefthook-budget.md. describe('worktree-local Lefthook installer', { timeout: 90_000 }, () => { for (const [label, extraEnv] of [ ['CI', { CI: 'true' }], diff --git a/scripts/rescope-vendor.ts b/scripts/rescope-vendor.ts index f75e392a06..5a73201bf0 100644 --- a/scripts/rescope-vendor.ts +++ b/scripts/rescope-vendor.ts @@ -3,8 +3,7 @@ * that rescope with `--reverse`. Every harness package declares `cordis` as a * peer dependency, so publication carries this framework layer too; publishing * it under the upstream names would squat them on the registry - * ([rationale](../.agents/notes/implemented/process/2026-08-10-vendor-package-rescope.md), - * [name mapping](../docs/rescope.md)). + * ([rationale and name mapping](../docs/rescope.md)). * * The generic pass rewrites ONLY delimited, complete package-name tokens: * `'old'` / `"old"` / `` `old` `` / `'old/subpath'`, plus a YAML `name: old` diff --git a/scripts/translation-pairing-merge.spec.ts b/scripts/translation-pairing-merge.spec.ts index 91c84b2eca..ed42841246 100644 --- a/scripts/translation-pairing-merge.spec.ts +++ b/scripts/translation-pairing-merge.spec.ts @@ -268,7 +268,7 @@ function expectMergedPair(fixture: Fixture): void { // yielding to it, so a smaller one here lowers what the lane grants every case // in this file, none of which carries an allowance of its own. Measurements and // the rejected alternatives are in -// .agents/notes/implemented/testing/2026-08-27-translation-pairing-merge-budget.md. +// .agents/notes/archived/testing/2026-08-27-translation-pairing-merge-budget.md. describe('translation pairing merge composition', { timeout: 90_000 }, () => { it('rejects a pairing-record path outside the repository', () => { const fixture = createFixture(false) diff --git a/scripts/verify-package-readme-limitations.ts b/scripts/verify-package-readme-limitations.ts index bfa3180c24..4f64082365 100644 --- a/scripts/verify-package-readme-limitations.ts +++ b/scripts/verify-package-readme-limitations.ts @@ -2,7 +2,8 @@ * Doc-sync gate for the canonical package-README limitations section. It scans * package manifests, rejects missing or variant sections, and requires one * top-level bullet; audited packages in {@link NO_LIMITATIONS} must omit it. - * See the [limitations Agent Note](../.agents/notes/implemented/process/2026-07-10-readme-known-limitations-gate.md). + * The archived [limitations gate record](../.agents/notes/archived/process/2026-07-10-readme-known-limitations-gate.md) + * documents the original decision. */ import { existsSync, globSync, readFileSync } from 'node:fs'