From f2c0021941a082c2bbb9bdfb2c18059106df4e42 Mon Sep 17 00:00:00 2001 From: Tianyi Cui <53024+tianyicui@users.noreply.github.com> Date: Mon, 27 Jul 2026 23:56:18 +0800 Subject: [PATCH] docs(notes): aggressive archive sweep of low-value decision records Archive 21 implemented triplets whose shipped decisions are complete and whose bodies no longer guide future work (one-off UI chrome, generator applications whose scripts are self-explanatory, superseded implementation detail, process history owned by current contracts/skills). Delete 4 rejected triplets whose premises are obsolete: the DeepReadonly proposal (dev-invariants note now carries the alternative inline), the collapse tool-owned presentation proposal (superseded by the shipped render-intent union), retire-mid-turn-steering (steering is now load-bearing across plan-mode/apiproxy/TUI), and single-session-ACP (automation-only ACP resolved the question; multi-session isolation is pinned by tests). Repair every inbound link: retarget intentional historical citations to archived paths, replace decision-current citations with the surviving authority, and fix the stale example-execute-over-tsx pointer in pnpm-workspace.yaml. Re-record pairing sidecars and seal the archive manifest (append-only; existing seals unchanged). --- ...-tool-schemas-in-prompt-assembly.i18n.yaml | 4 +- ...6-06-11-tool-schemas-in-prompt-assembly.md | 1 + ...6-11-tool-schemas-in-prompt-assembly.zh.md | 1 + .../2026-06-20-package-hierarchy.i18n.yaml | 4 +- .../2026-06-20-package-hierarchy.md | 1 + .../2026-06-20-package-hierarchy.zh.md | 1 + ...2-result-time-applied-hunk-diffs.i18n.yaml | 4 +- ...26-07-02-result-time-applied-hunk-diffs.md | 1 + ...07-02-result-time-applied-hunk-diffs.zh.md | 1 + .../2026-06-25-ask-user-question.i18n.yaml | 4 +- .../feature/2026-06-25-ask-user-question.md | 1 + .../2026-06-25-ask-user-question.zh.md | 1 + .../2026-07-08-repeat-tool-guard.i18n.yaml | 4 +- .../feature/2026-07-08-repeat-tool-guard.md | 1 + .../2026-07-08-repeat-tool-guard.zh.md | 1 + ...-bash-backed-grep-glob-discovery.i18n.yaml | 4 +- ...6-07-09-bash-backed-grep-glob-discovery.md | 1 + ...7-09-bash-backed-grep-glob-discovery.zh.md | 1 + ...2026-07-10-session-query-service.i18n.yaml | 4 +- .../2026-07-10-session-query-service.md | 1 + .../2026-07-10-session-query-service.zh.md | 1 + ...-mode-trajectory-waterfall-spans.i18n.yaml | 4 +- ...26-code-mode-trajectory-waterfall-spans.md | 1 + ...code-mode-trajectory-waterfall-spans.zh.md | 3 +- ...-07-27-user-message-icon-actions.i18n.yaml | 4 +- .../2026-07-27-user-message-icon-actions.md | 1 + ...2026-07-27-user-message-icon-actions.zh.md | 1 + .agents/notes/archived/manifest.json | 65 ++++++++++++++++++- .../2026-06-11-tsdown-over-dumble.i18n.yaml | 4 +- .../process/2026-06-11-tsdown-over-dumble.md | 1 + .../2026-06-11-tsdown-over-dumble.zh.md | 1 + ...4-cordis-jsdoc-completeness-gate.i18n.yaml | 4 +- ...26-07-04-cordis-jsdoc-completeness-gate.md | 1 + ...07-04-cordis-jsdoc-completeness-gate.zh.md | 1 + ...26-07-04-persistence-log-catalog.i18n.yaml | 4 +- .../2026-07-04-persistence-log-catalog.md | 1 + .../2026-07-04-persistence-log-catalog.zh.md | 1 + ...6-07-06-generated-config-catalog.i18n.yaml | 4 +- .../2026-07-06-generated-config-catalog.md | 1 + .../2026-07-06-generated-config-catalog.zh.md | 1 + ...7-run-ci-examples-from-built-lib.i18n.yaml | 4 +- ...26-07-17-run-ci-examples-from-built-lib.md | 1 + ...07-17-run-ci-examples-from-built-lib.zh.md | 1 + ...-07-20-generated-cordis-core-api.i18n.yaml | 4 +- .../2026-07-20-generated-cordis-core-api.md | 1 + ...2026-07-20-generated-cordis-core-api.zh.md | 1 + .../2026-07-22-cordis-tutorial-docs.i18n.yaml | 4 +- .../2026-07-22-cordis-tutorial-docs.md | 1 + .../2026-07-22-cordis-tutorial-docs.zh.md | 1 + ...r-gif-evidence-and-assets-branch.i18n.yaml | 4 +- ...6-gui-pr-gif-evidence-and-assets-branch.md | 1 + ...ui-pr-gif-evidence-and-assets-branch.zh.md | 1 + ...07-02-remove-stream-chunk-mirror.i18n.yaml | 4 +- .../2026-07-02-remove-stream-chunk-mirror.md | 1 + ...026-07-02-remove-stream-chunk-mirror.zh.md | 1 + ...itles-from-session-title-service.i18n.yaml | 4 +- ...2-tui-titles-from-session-title-service.md | 1 + ...ui-titles-from-session-title-service.zh.md | 1 + ...te-gate-scripts-on-existing-deps.i18n.yaml | 4 +- ...nsolidate-gate-scripts-on-existing-deps.md | 1 + ...lidate-gate-scripts-on-existing-deps.zh.md | 1 + ...7-08-shared-acp-snapshot-package.i18n.yaml | 4 +- .../2026-07-08-shared-acp-snapshot-package.md | 1 + ...26-07-08-shared-acp-snapshot-package.zh.md | 1 + ...ev-invariants-over-deep-readonly.i18n.yaml | 6 +- ...06-11-dev-invariants-over-deep-readonly.md | 2 +- ...11-dev-invariants-over-deep-readonly.zh.md | 2 +- ...6-07-02-tool-render-intent-union.i18n.yaml | 6 +- .../2026-07-02-tool-render-intent-union.md | 8 +-- .../2026-07-02-tool-render-intent-union.zh.md | 8 +-- .../2026-06-16-pnpm-over-yarn.i18n.yaml | 6 +- .../process/2026-06-16-pnpm-over-yarn.md | 2 +- .../process/2026-06-16-pnpm-over-yarn.zh.md | 2 +- ...-07-06-export-surface-jsdoc-gate.i18n.yaml | 6 +- .../2026-07-06-export-surface-jsdoc-gate.md | 2 +- ...2026-07-06-export-surface-jsdoc-gate.zh.md | 2 +- ...ove-agent-boundary-mirror-events.i18n.yaml | 6 +- ...-20-remove-agent-boundary-mirror-events.md | 6 +- ...-remove-agent-boundary-mirror-events.zh.md | 6 +- ...06-20-discover-package-inventory.i18n.yaml | 6 +- .../2026-06-20-discover-package-inventory.md | 2 +- ...026-06-20-discover-package-inventory.zh.md | 2 +- ...-06-11-immutable-public-surfaces.i18n.yaml | 6 -- .../2026-06-11-immutable-public-surfaces.md | 29 --------- ...2026-06-11-immutable-public-surfaces.zh.md | 29 --------- ...026-06-20-generic-tool-rendering.i18n.yaml | 6 -- .../2026-06-20-generic-tool-rendering.md | 37 ----------- .../2026-06-20-generic-tool-rendering.zh.md | 37 ----------- ...6-06-20-retire-mid-turn-steering.i18n.yaml | 6 -- .../2026-06-20-retire-mid-turn-steering.md | 37 ----------- .../2026-06-20-retire-mid-turn-steering.zh.md | 37 ----------- ...-06-20-single-session-acp-bridge.i18n.yaml | 6 -- .../2026-06-20-single-session-acp-bridge.md | 31 --------- ...2026-06-20-single-session-acp-bridge.zh.md | 31 --------- ...ency-swaps-rejected-by-nih-audit.i18n.yaml | 6 +- ...-dependency-swaps-rejected-by-nih-audit.md | 2 +- ...pendency-swaps-rejected-by-nih-audit.zh.md | 2 +- docs/persistence-catalog.md | 2 +- .../guard/repeat-tool-guard/README.i18n.yaml | 6 +- packages/guard/repeat-tool-guard/README.md | 2 +- packages/guard/repeat-tool-guard/README.zh.md | 2 +- pnpm-workspace.yaml | 3 +- scripts/gen-persistence-catalog.ts | 2 +- 103 files changed, 203 insertions(+), 389 deletions(-) rename .agents/notes/{implemented => archived}/architecture/2026-06-11-tool-schemas-in-prompt-assembly.i18n.yaml (61%) rename .agents/notes/{implemented => archived}/architecture/2026-06-11-tool-schemas-in-prompt-assembly.md (98%) rename .agents/notes/{implemented => archived}/architecture/2026-06-11-tool-schemas-in-prompt-assembly.zh.md (98%) rename .agents/notes/{implemented => archived}/architecture/2026-06-20-package-hierarchy.i18n.yaml (65%) rename .agents/notes/{implemented => archived}/architecture/2026-06-20-package-hierarchy.md (99%) rename .agents/notes/{implemented => archived}/architecture/2026-06-20-package-hierarchy.zh.md (99%) rename .agents/notes/{implemented => archived}/architecture/2026-07-02-result-time-applied-hunk-diffs.i18n.yaml (62%) rename .agents/notes/{implemented => archived}/architecture/2026-07-02-result-time-applied-hunk-diffs.md (99%) rename .agents/notes/{implemented => archived}/architecture/2026-07-02-result-time-applied-hunk-diffs.zh.md (99%) rename .agents/notes/{implemented => archived}/feature/2026-06-25-ask-user-question.i18n.yaml (65%) rename .agents/notes/{implemented => archived}/feature/2026-06-25-ask-user-question.md (99%) rename .agents/notes/{implemented => archived}/feature/2026-06-25-ask-user-question.zh.md (99%) rename .agents/notes/{implemented => archived}/feature/2026-07-08-repeat-tool-guard.i18n.yaml (65%) rename .agents/notes/{implemented => archived}/feature/2026-07-08-repeat-tool-guard.md (99%) rename .agents/notes/{implemented => archived}/feature/2026-07-08-repeat-tool-guard.zh.md (99%) rename .agents/notes/{implemented => archived}/feature/2026-07-09-bash-backed-grep-glob-discovery.i18n.yaml (61%) rename .agents/notes/{implemented => archived}/feature/2026-07-09-bash-backed-grep-glob-discovery.md (99%) rename .agents/notes/{implemented => archived}/feature/2026-07-09-bash-backed-grep-glob-discovery.zh.md (99%) rename .agents/notes/{implemented => archived}/feature/2026-07-10-session-query-service.i18n.yaml (64%) rename .agents/notes/{implemented => archived}/feature/2026-07-10-session-query-service.md (99%) rename .agents/notes/{implemented => archived}/feature/2026-07-10-session-query-service.zh.md (99%) rename .agents/notes/{implemented => archived}/feature/2026-07-26-code-mode-trajectory-waterfall-spans.i18n.yaml (60%) rename .agents/notes/{implemented => archived}/feature/2026-07-26-code-mode-trajectory-waterfall-spans.md (99%) rename .agents/notes/{implemented => archived}/feature/2026-07-26-code-mode-trajectory-waterfall-spans.zh.md (97%) rename .agents/notes/{implemented => archived}/feature/2026-07-27-user-message-icon-actions.i18n.yaml (63%) rename .agents/notes/{implemented => archived}/feature/2026-07-27-user-message-icon-actions.md (98%) rename .agents/notes/{implemented => archived}/feature/2026-07-27-user-message-icon-actions.zh.md (98%) rename .agents/notes/{implemented => archived}/process/2026-06-11-tsdown-over-dumble.i18n.yaml (65%) rename .agents/notes/{implemented => archived}/process/2026-06-11-tsdown-over-dumble.md (99%) rename .agents/notes/{implemented => archived}/process/2026-06-11-tsdown-over-dumble.zh.md (99%) rename .agents/notes/{implemented => archived}/process/2026-07-04-cordis-jsdoc-completeness-gate.i18n.yaml (62%) rename .agents/notes/{implemented => archived}/process/2026-07-04-cordis-jsdoc-completeness-gate.md (99%) rename .agents/notes/{implemented => archived}/process/2026-07-04-cordis-jsdoc-completeness-gate.zh.md (99%) rename .agents/notes/{implemented => archived}/process/2026-07-04-persistence-log-catalog.i18n.yaml (64%) rename .agents/notes/{implemented => archived}/process/2026-07-04-persistence-log-catalog.md (99%) rename .agents/notes/{implemented => archived}/process/2026-07-04-persistence-log-catalog.zh.md (99%) rename .agents/notes/{implemented => archived}/process/2026-07-06-generated-config-catalog.i18n.yaml (63%) rename .agents/notes/{implemented => archived}/process/2026-07-06-generated-config-catalog.md (99%) rename .agents/notes/{implemented => archived}/process/2026-07-06-generated-config-catalog.zh.md (99%) rename .agents/notes/{implemented => archived}/process/2026-07-17-run-ci-examples-from-built-lib.i18n.yaml (62%) rename .agents/notes/{implemented => archived}/process/2026-07-17-run-ci-examples-from-built-lib.md (99%) rename .agents/notes/{implemented => archived}/process/2026-07-17-run-ci-examples-from-built-lib.zh.md (99%) rename .agents/notes/{implemented => archived}/process/2026-07-20-generated-cordis-core-api.i18n.yaml (63%) rename .agents/notes/{implemented => archived}/process/2026-07-20-generated-cordis-core-api.md (99%) rename .agents/notes/{implemented => archived}/process/2026-07-20-generated-cordis-core-api.zh.md (99%) rename .agents/notes/{implemented => archived}/process/2026-07-22-cordis-tutorial-docs.i18n.yaml (65%) rename .agents/notes/{implemented => archived}/process/2026-07-22-cordis-tutorial-docs.md (99%) rename .agents/notes/{implemented => archived}/process/2026-07-22-cordis-tutorial-docs.zh.md (99%) rename .agents/notes/{implemented => archived}/process/2026-07-26-gui-pr-gif-evidence-and-assets-branch.i18n.yaml (60%) rename .agents/notes/{implemented => archived}/process/2026-07-26-gui-pr-gif-evidence-and-assets-branch.md (99%) rename .agents/notes/{implemented => archived}/process/2026-07-26-gui-pr-gif-evidence-and-assets-branch.zh.md (99%) rename .agents/notes/{implemented => archived}/simplification/2026-07-02-remove-stream-chunk-mirror.i18n.yaml (63%) rename .agents/notes/{implemented => archived}/simplification/2026-07-02-remove-stream-chunk-mirror.md (99%) rename .agents/notes/{implemented => archived}/simplification/2026-07-02-remove-stream-chunk-mirror.zh.md (99%) rename .agents/notes/{implemented => archived}/simplification/2026-07-22-tui-titles-from-session-title-service.i18n.yaml (60%) rename .agents/notes/{implemented => archived}/simplification/2026-07-22-tui-titles-from-session-title-service.md (99%) rename .agents/notes/{implemented => archived}/simplification/2026-07-22-tui-titles-from-session-title-service.zh.md (99%) rename .agents/notes/{implemented => archived}/simplification/2026-07-26-consolidate-gate-scripts-on-existing-deps.i18n.yaml (59%) rename .agents/notes/{implemented => archived}/simplification/2026-07-26-consolidate-gate-scripts-on-existing-deps.md (99%) rename .agents/notes/{implemented => archived}/simplification/2026-07-26-consolidate-gate-scripts-on-existing-deps.zh.md (99%) rename .agents/notes/{implemented => archived}/testing/2026-07-08-shared-acp-snapshot-package.i18n.yaml (63%) rename .agents/notes/{implemented => archived}/testing/2026-07-08-shared-acp-snapshot-package.md (99%) rename .agents/notes/{implemented => archived}/testing/2026-07-08-shared-acp-snapshot-package.zh.md (99%) delete mode 100644 .agents/notes/rejected/architecture/2026-06-11-immutable-public-surfaces.i18n.yaml delete mode 100644 .agents/notes/rejected/architecture/2026-06-11-immutable-public-surfaces.md delete mode 100644 .agents/notes/rejected/architecture/2026-06-11-immutable-public-surfaces.zh.md delete mode 100644 .agents/notes/rejected/simplification/2026-06-20-generic-tool-rendering.i18n.yaml delete mode 100644 .agents/notes/rejected/simplification/2026-06-20-generic-tool-rendering.md delete mode 100644 .agents/notes/rejected/simplification/2026-06-20-generic-tool-rendering.zh.md delete mode 100644 .agents/notes/rejected/simplification/2026-06-20-retire-mid-turn-steering.i18n.yaml delete mode 100644 .agents/notes/rejected/simplification/2026-06-20-retire-mid-turn-steering.md delete mode 100644 .agents/notes/rejected/simplification/2026-06-20-retire-mid-turn-steering.zh.md delete mode 100644 .agents/notes/rejected/simplification/2026-06-20-single-session-acp-bridge.i18n.yaml delete mode 100644 .agents/notes/rejected/simplification/2026-06-20-single-session-acp-bridge.md delete mode 100644 .agents/notes/rejected/simplification/2026-06-20-single-session-acp-bridge.zh.md diff --git a/.agents/notes/implemented/architecture/2026-06-11-tool-schemas-in-prompt-assembly.i18n.yaml b/.agents/notes/archived/architecture/2026-06-11-tool-schemas-in-prompt-assembly.i18n.yaml similarity index 61% rename from .agents/notes/implemented/architecture/2026-06-11-tool-schemas-in-prompt-assembly.i18n.yaml rename to .agents/notes/archived/architecture/2026-06-11-tool-schemas-in-prompt-assembly.i18n.yaml index 61ecb29ca3..a1e3f9c72c 100644 --- a/.agents/notes/implemented/architecture/2026-06-11-tool-schemas-in-prompt-assembly.i18n.yaml +++ b/.agents/notes/archived/architecture/2026-06-11-tool-schemas-in-prompt-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 -2026-06-11-tool-schemas-in-prompt-assembly.md: 3643ac3d61be08f629ef0cd0424fef5cb9696c3a -2026-06-11-tool-schemas-in-prompt-assembly.zh.md: 10389fd7c63755e5b00b3c508fd303a541287f2c +2026-06-11-tool-schemas-in-prompt-assembly.md: 4d5251163969127ad9fd8ed0c64416057713dfa8 +2026-06-11-tool-schemas-in-prompt-assembly.zh.md: c04246baa196f50ec1c0dc6f91e9b7b12f67c5e0 diff --git a/.agents/notes/implemented/architecture/2026-06-11-tool-schemas-in-prompt-assembly.md b/.agents/notes/archived/architecture/2026-06-11-tool-schemas-in-prompt-assembly.md similarity index 98% rename from .agents/notes/implemented/architecture/2026-06-11-tool-schemas-in-prompt-assembly.md rename to .agents/notes/archived/architecture/2026-06-11-tool-schemas-in-prompt-assembly.md index 3643ac3d61..4d52511639 100644 --- a/.agents/notes/implemented/architecture/2026-06-11-tool-schemas-in-prompt-assembly.md +++ b/.agents/notes/archived/architecture/2026-06-11-tool-schemas-in-prompt-assembly.md @@ -1,6 +1,7 @@ # Agent Note: Tool schemas are part of the system-prompt assembly Status: implemented +Archived: 2026-07-27 English | [中文](2026-06-11-tool-schemas-in-prompt-assembly.zh.md) diff --git a/.agents/notes/implemented/architecture/2026-06-11-tool-schemas-in-prompt-assembly.zh.md b/.agents/notes/archived/architecture/2026-06-11-tool-schemas-in-prompt-assembly.zh.md similarity index 98% rename from .agents/notes/implemented/architecture/2026-06-11-tool-schemas-in-prompt-assembly.zh.md rename to .agents/notes/archived/architecture/2026-06-11-tool-schemas-in-prompt-assembly.zh.md index 10389fd7c6..c04246baa1 100644 --- a/.agents/notes/implemented/architecture/2026-06-11-tool-schemas-in-prompt-assembly.zh.md +++ b/.agents/notes/archived/architecture/2026-06-11-tool-schemas-in-prompt-assembly.zh.md @@ -1,6 +1,7 @@ # Agent Note: 工具 schema 是系统提示词组装的一部分 Status: implemented +Archived: 2026-07-27 [English](2026-06-11-tool-schemas-in-prompt-assembly.md) | 中文 diff --git a/.agents/notes/implemented/architecture/2026-06-20-package-hierarchy.i18n.yaml b/.agents/notes/archived/architecture/2026-06-20-package-hierarchy.i18n.yaml similarity index 65% rename from .agents/notes/implemented/architecture/2026-06-20-package-hierarchy.i18n.yaml rename to .agents/notes/archived/architecture/2026-06-20-package-hierarchy.i18n.yaml index 03a271a9c3..4608b8452b 100644 --- a/.agents/notes/implemented/architecture/2026-06-20-package-hierarchy.i18n.yaml +++ b/.agents/notes/archived/architecture/2026-06-20-package-hierarchy.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 -2026-06-20-package-hierarchy.md: 4e05e3487483ab8d710959c1888ec1f5c3b37432 -2026-06-20-package-hierarchy.zh.md: f57704ad082c4961aa48056af1b4b279d2f2c055 +2026-06-20-package-hierarchy.md: 43435279cdf4eec544638a5b36c53b4833b4cbbd +2026-06-20-package-hierarchy.zh.md: a44304d071d165cfe8f112e987160dd37626a58a diff --git a/.agents/notes/implemented/architecture/2026-06-20-package-hierarchy.md b/.agents/notes/archived/architecture/2026-06-20-package-hierarchy.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-06-20-package-hierarchy.md rename to .agents/notes/archived/architecture/2026-06-20-package-hierarchy.md index 4e05e34874..43435279cd 100644 --- a/.agents/notes/implemented/architecture/2026-06-20-package-hierarchy.md +++ b/.agents/notes/archived/architecture/2026-06-20-package-hierarchy.md @@ -1,6 +1,7 @@ # Agent Note: Reorganize packages into a modular hierarchy Status: implemented +Archived: 2026-07-27 English | [中文](2026-06-20-package-hierarchy.zh.md) diff --git a/.agents/notes/implemented/architecture/2026-06-20-package-hierarchy.zh.md b/.agents/notes/archived/architecture/2026-06-20-package-hierarchy.zh.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-06-20-package-hierarchy.zh.md rename to .agents/notes/archived/architecture/2026-06-20-package-hierarchy.zh.md index f57704ad08..a44304d071 100644 --- a/.agents/notes/implemented/architecture/2026-06-20-package-hierarchy.zh.md +++ b/.agents/notes/archived/architecture/2026-06-20-package-hierarchy.zh.md @@ -1,6 +1,7 @@ # Agent Note: 将包重组为模块化层级结构 Status: implemented +Archived: 2026-07-27 [English](2026-06-20-package-hierarchy.md) | 中文 diff --git a/.agents/notes/implemented/architecture/2026-07-02-result-time-applied-hunk-diffs.i18n.yaml b/.agents/notes/archived/architecture/2026-07-02-result-time-applied-hunk-diffs.i18n.yaml similarity index 62% rename from .agents/notes/implemented/architecture/2026-07-02-result-time-applied-hunk-diffs.i18n.yaml rename to .agents/notes/archived/architecture/2026-07-02-result-time-applied-hunk-diffs.i18n.yaml index e6d8d8570a..a9516a0625 100644 --- a/.agents/notes/implemented/architecture/2026-07-02-result-time-applied-hunk-diffs.i18n.yaml +++ b/.agents/notes/archived/architecture/2026-07-02-result-time-applied-hunk-diffs.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 -2026-07-02-result-time-applied-hunk-diffs.md: 55e1612aacd9070ede2f0079c73c30975e1bd5cf -2026-07-02-result-time-applied-hunk-diffs.zh.md: 6fe0032a507af2915bdf79a43578082785411479 +2026-07-02-result-time-applied-hunk-diffs.md: 19b41cc441f5cab299dbeded0a9eae25ab7e9f97 +2026-07-02-result-time-applied-hunk-diffs.zh.md: b77ec75f0f8af615bde3b95d8fb4620fddedbc9c diff --git a/.agents/notes/implemented/architecture/2026-07-02-result-time-applied-hunk-diffs.md b/.agents/notes/archived/architecture/2026-07-02-result-time-applied-hunk-diffs.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-07-02-result-time-applied-hunk-diffs.md rename to .agents/notes/archived/architecture/2026-07-02-result-time-applied-hunk-diffs.md index 55e1612aac..19b41cc441 100644 --- a/.agents/notes/implemented/architecture/2026-07-02-result-time-applied-hunk-diffs.md +++ b/.agents/notes/archived/architecture/2026-07-02-result-time-applied-hunk-diffs.md @@ -1,6 +1,7 @@ # Agent Note: Result-time applied-hunk diffs for file mutations Status: implemented +Archived: 2026-07-27 English | [中文](2026-07-02-result-time-applied-hunk-diffs.zh.md) diff --git a/.agents/notes/implemented/architecture/2026-07-02-result-time-applied-hunk-diffs.zh.md b/.agents/notes/archived/architecture/2026-07-02-result-time-applied-hunk-diffs.zh.md similarity index 99% rename from .agents/notes/implemented/architecture/2026-07-02-result-time-applied-hunk-diffs.zh.md rename to .agents/notes/archived/architecture/2026-07-02-result-time-applied-hunk-diffs.zh.md index 6fe0032a50..b77ec75f0f 100644 --- a/.agents/notes/implemented/architecture/2026-07-02-result-time-applied-hunk-diffs.zh.md +++ b/.agents/notes/archived/architecture/2026-07-02-result-time-applied-hunk-diffs.zh.md @@ -1,6 +1,7 @@ # Agent Note: 结果时刻的 applied-hunk diff 用于文件变更 Status: implemented +Archived: 2026-07-27 [English](2026-07-02-result-time-applied-hunk-diffs.md) | 中文 diff --git a/.agents/notes/implemented/feature/2026-06-25-ask-user-question.i18n.yaml b/.agents/notes/archived/feature/2026-06-25-ask-user-question.i18n.yaml similarity index 65% rename from .agents/notes/implemented/feature/2026-06-25-ask-user-question.i18n.yaml rename to .agents/notes/archived/feature/2026-06-25-ask-user-question.i18n.yaml index 6a06911100..3506271563 100644 --- a/.agents/notes/implemented/feature/2026-06-25-ask-user-question.i18n.yaml +++ b/.agents/notes/archived/feature/2026-06-25-ask-user-question.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 -2026-06-25-ask-user-question.md: 51b9a67bfc0fdc88d84a9fa51662d02b127f7925 -2026-06-25-ask-user-question.zh.md: 4bd2c2b8664ba085919eb9d4b8c5dee92d4bf72e +2026-06-25-ask-user-question.md: 0d7b2c4d9e8f986366fc56d1123b322333a48262 +2026-06-25-ask-user-question.zh.md: fd5c0d3f339074cccb3f1b3b10109afc06b14774 diff --git a/.agents/notes/implemented/feature/2026-06-25-ask-user-question.md b/.agents/notes/archived/feature/2026-06-25-ask-user-question.md similarity index 99% rename from .agents/notes/implemented/feature/2026-06-25-ask-user-question.md rename to .agents/notes/archived/feature/2026-06-25-ask-user-question.md index 51b9a67bfc..0d7b2c4d9e 100644 --- a/.agents/notes/implemented/feature/2026-06-25-ask-user-question.md +++ b/.agents/notes/archived/feature/2026-06-25-ask-user-question.md @@ -1,6 +1,7 @@ # Agent Note: Ask-user question capability Status: implemented +Archived: 2026-07-27 English | [中文](2026-06-25-ask-user-question.zh.md) diff --git a/.agents/notes/implemented/feature/2026-06-25-ask-user-question.zh.md b/.agents/notes/archived/feature/2026-06-25-ask-user-question.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-06-25-ask-user-question.zh.md rename to .agents/notes/archived/feature/2026-06-25-ask-user-question.zh.md index 4bd2c2b866..fd5c0d3f33 100644 --- a/.agents/notes/implemented/feature/2026-06-25-ask-user-question.zh.md +++ b/.agents/notes/archived/feature/2026-06-25-ask-user-question.zh.md @@ -1,6 +1,7 @@ # Agent Note: ask-user 提问能力 Status: implemented +Archived: 2026-07-27 [English](2026-06-25-ask-user-question.md) | 中文 diff --git a/.agents/notes/implemented/feature/2026-07-08-repeat-tool-guard.i18n.yaml b/.agents/notes/archived/feature/2026-07-08-repeat-tool-guard.i18n.yaml similarity index 65% rename from .agents/notes/implemented/feature/2026-07-08-repeat-tool-guard.i18n.yaml rename to .agents/notes/archived/feature/2026-07-08-repeat-tool-guard.i18n.yaml index 95661f953c..3b3dbe1b07 100644 --- a/.agents/notes/implemented/feature/2026-07-08-repeat-tool-guard.i18n.yaml +++ b/.agents/notes/archived/feature/2026-07-08-repeat-tool-guard.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 -2026-07-08-repeat-tool-guard.md: 67ec29c6c9fa38bf1d5935c469f3f71b1119dc3a -2026-07-08-repeat-tool-guard.zh.md: 01037f29810c781c33beee414e50412a0c9b0f89 +2026-07-08-repeat-tool-guard.md: 218ed381c67a62e3af65ebb375d8800f908414cd +2026-07-08-repeat-tool-guard.zh.md: e522908fb08fe0294cdcac034e301febf0f8683f diff --git a/.agents/notes/implemented/feature/2026-07-08-repeat-tool-guard.md b/.agents/notes/archived/feature/2026-07-08-repeat-tool-guard.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-08-repeat-tool-guard.md rename to .agents/notes/archived/feature/2026-07-08-repeat-tool-guard.md index 67ec29c6c9..218ed381c6 100644 --- a/.agents/notes/implemented/feature/2026-07-08-repeat-tool-guard.md +++ b/.agents/notes/archived/feature/2026-07-08-repeat-tool-guard.md @@ -1,6 +1,7 @@ # Agent Note: Repeat-tool-call guard plugin Status: implemented +Archived: 2026-07-27 English | [中文](2026-07-08-repeat-tool-guard.zh.md) diff --git a/.agents/notes/implemented/feature/2026-07-08-repeat-tool-guard.zh.md b/.agents/notes/archived/feature/2026-07-08-repeat-tool-guard.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-08-repeat-tool-guard.zh.md rename to .agents/notes/archived/feature/2026-07-08-repeat-tool-guard.zh.md index 01037f2981..e522908fb0 100644 --- a/.agents/notes/implemented/feature/2026-07-08-repeat-tool-guard.zh.md +++ b/.agents/notes/archived/feature/2026-07-08-repeat-tool-guard.zh.md @@ -1,6 +1,7 @@ # Agent Note: 重复工具调用守卫插件 Status: implemented +Archived: 2026-07-27 [English](2026-07-08-repeat-tool-guard.md) | 中文 diff --git a/.agents/notes/implemented/feature/2026-07-09-bash-backed-grep-glob-discovery.i18n.yaml b/.agents/notes/archived/feature/2026-07-09-bash-backed-grep-glob-discovery.i18n.yaml similarity index 61% rename from .agents/notes/implemented/feature/2026-07-09-bash-backed-grep-glob-discovery.i18n.yaml rename to .agents/notes/archived/feature/2026-07-09-bash-backed-grep-glob-discovery.i18n.yaml index db23b997c0..edf7a382a1 100644 --- a/.agents/notes/implemented/feature/2026-07-09-bash-backed-grep-glob-discovery.i18n.yaml +++ b/.agents/notes/archived/feature/2026-07-09-bash-backed-grep-glob-discovery.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 -2026-07-09-bash-backed-grep-glob-discovery.md: 9c25afb44885ca2519c5d74a3d721b34fe3561de -2026-07-09-bash-backed-grep-glob-discovery.zh.md: d0dee8e49e0a500c87afbd59423fb65416c1dcc8 +2026-07-09-bash-backed-grep-glob-discovery.md: 63dacd97443e0dfa44108fec42b5f1cf1640c96f +2026-07-09-bash-backed-grep-glob-discovery.zh.md: 325e27c54ed975522819053863cc57705991fbdb diff --git a/.agents/notes/implemented/feature/2026-07-09-bash-backed-grep-glob-discovery.md b/.agents/notes/archived/feature/2026-07-09-bash-backed-grep-glob-discovery.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-09-bash-backed-grep-glob-discovery.md rename to .agents/notes/archived/feature/2026-07-09-bash-backed-grep-glob-discovery.md index 9c25afb448..63dacd9744 100644 --- a/.agents/notes/implemented/feature/2026-07-09-bash-backed-grep-glob-discovery.md +++ b/.agents/notes/archived/feature/2026-07-09-bash-backed-grep-glob-discovery.md @@ -1,6 +1,7 @@ # Agent Note: Bash-backed grep and glob discovery tools Status: implemented +Archived: 2026-07-27 English | [中文](2026-07-09-bash-backed-grep-glob-discovery.zh.md) diff --git a/.agents/notes/implemented/feature/2026-07-09-bash-backed-grep-glob-discovery.zh.md b/.agents/notes/archived/feature/2026-07-09-bash-backed-grep-glob-discovery.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-09-bash-backed-grep-glob-discovery.zh.md rename to .agents/notes/archived/feature/2026-07-09-bash-backed-grep-glob-discovery.zh.md index d0dee8e49e..325e27c54e 100644 --- a/.agents/notes/implemented/feature/2026-07-09-bash-backed-grep-glob-discovery.zh.md +++ b/.agents/notes/archived/feature/2026-07-09-bash-backed-grep-glob-discovery.zh.md @@ -1,6 +1,7 @@ # Agent Note: 由 Bash 支持的 grep 与 glob 发现工具 Status: implemented +Archived: 2026-07-27 [English](2026-07-09-bash-backed-grep-glob-discovery.md) | 中文 diff --git a/.agents/notes/implemented/feature/2026-07-10-session-query-service.i18n.yaml b/.agents/notes/archived/feature/2026-07-10-session-query-service.i18n.yaml similarity index 64% rename from .agents/notes/implemented/feature/2026-07-10-session-query-service.i18n.yaml rename to .agents/notes/archived/feature/2026-07-10-session-query-service.i18n.yaml index b93367f1c4..c918f96bea 100644 --- a/.agents/notes/implemented/feature/2026-07-10-session-query-service.i18n.yaml +++ b/.agents/notes/archived/feature/2026-07-10-session-query-service.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 -2026-07-10-session-query-service.md: 42d12fe2c5e34e71a6166816857b9ced52a61a95 -2026-07-10-session-query-service.zh.md: 2c8d322ca6099db1c8ddbb8a02efbc8729e83dbf +2026-07-10-session-query-service.md: 135385a94a8368af93efeb3937d87c86c129915a +2026-07-10-session-query-service.zh.md: 283f0be3fb40a07d494f55aea94f8222be521d9f diff --git a/.agents/notes/implemented/feature/2026-07-10-session-query-service.md b/.agents/notes/archived/feature/2026-07-10-session-query-service.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-10-session-query-service.md rename to .agents/notes/archived/feature/2026-07-10-session-query-service.md index 42d12fe2c5..135385a94a 100644 --- a/.agents/notes/implemented/feature/2026-07-10-session-query-service.md +++ b/.agents/notes/archived/feature/2026-07-10-session-query-service.md @@ -1,6 +1,7 @@ # Agent Note: Exact session query service Status: implemented +Archived: 2026-07-27 English | [中文](2026-07-10-session-query-service.zh.md) diff --git a/.agents/notes/implemented/feature/2026-07-10-session-query-service.zh.md b/.agents/notes/archived/feature/2026-07-10-session-query-service.zh.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-10-session-query-service.zh.md rename to .agents/notes/archived/feature/2026-07-10-session-query-service.zh.md index 2c8d322ca6..283f0be3fb 100644 --- a/.agents/notes/implemented/feature/2026-07-10-session-query-service.zh.md +++ b/.agents/notes/archived/feature/2026-07-10-session-query-service.zh.md @@ -1,6 +1,7 @@ # Agent Note: 精确会话查询服务 Status: implemented +Archived: 2026-07-27 [English](2026-07-10-session-query-service.md) | 中文 diff --git a/.agents/notes/implemented/feature/2026-07-26-code-mode-trajectory-waterfall-spans.i18n.yaml b/.agents/notes/archived/feature/2026-07-26-code-mode-trajectory-waterfall-spans.i18n.yaml similarity index 60% rename from .agents/notes/implemented/feature/2026-07-26-code-mode-trajectory-waterfall-spans.i18n.yaml rename to .agents/notes/archived/feature/2026-07-26-code-mode-trajectory-waterfall-spans.i18n.yaml index 233e1ce72a..652b258f5c 100644 --- a/.agents/notes/implemented/feature/2026-07-26-code-mode-trajectory-waterfall-spans.i18n.yaml +++ b/.agents/notes/archived/feature/2026-07-26-code-mode-trajectory-waterfall-spans.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 -2026-07-26-code-mode-trajectory-waterfall-spans.md: fe4dcc25dbf211cf69e0d33937cf87a7482852e2 -2026-07-26-code-mode-trajectory-waterfall-spans.zh.md: aaae06b1fca1b5587d06aa7704adec421d2b2c27 +2026-07-26-code-mode-trajectory-waterfall-spans.md: 0bf48974ab86d480b8a5ec3fe6bf07d1b921dfd2 +2026-07-26-code-mode-trajectory-waterfall-spans.zh.md: b843fd9f1ee5a16fed1a96da8927be142f970247 diff --git a/.agents/notes/implemented/feature/2026-07-26-code-mode-trajectory-waterfall-spans.md b/.agents/notes/archived/feature/2026-07-26-code-mode-trajectory-waterfall-spans.md similarity index 99% rename from .agents/notes/implemented/feature/2026-07-26-code-mode-trajectory-waterfall-spans.md rename to .agents/notes/archived/feature/2026-07-26-code-mode-trajectory-waterfall-spans.md index fe4dcc25db..0bf48974ab 100644 --- a/.agents/notes/implemented/feature/2026-07-26-code-mode-trajectory-waterfall-spans.md +++ b/.agents/notes/archived/feature/2026-07-26-code-mode-trajectory-waterfall-spans.md @@ -1,6 +1,7 @@ # Agent Note: Code Mode sub-calls in the trajectory and waterfall views Status: implemented +Archived: 2026-07-27 English | [中文](2026-07-26-code-mode-trajectory-waterfall-spans.zh.md) diff --git a/.agents/notes/implemented/feature/2026-07-26-code-mode-trajectory-waterfall-spans.zh.md b/.agents/notes/archived/feature/2026-07-26-code-mode-trajectory-waterfall-spans.zh.md similarity index 97% rename from .agents/notes/implemented/feature/2026-07-26-code-mode-trajectory-waterfall-spans.zh.md rename to .agents/notes/archived/feature/2026-07-26-code-mode-trajectory-waterfall-spans.zh.md index aaae06b1fc..b843fd9f1e 100644 --- a/.agents/notes/implemented/feature/2026-07-26-code-mode-trajectory-waterfall-spans.zh.md +++ b/.agents/notes/archived/feature/2026-07-26-code-mode-trajectory-waterfall-spans.zh.md @@ -1,6 +1,7 @@ -# Agent Note:trajectory 与 waterfall 视图中的 Code Mode 子调用 +# Agent Note: trajectory 与 waterfall 视图中的 Code Mode 子调用 Status: implemented +Archived: 2026-07-27 [English](2026-07-26-code-mode-trajectory-waterfall-spans.md) | 中文 diff --git a/.agents/notes/implemented/feature/2026-07-27-user-message-icon-actions.i18n.yaml b/.agents/notes/archived/feature/2026-07-27-user-message-icon-actions.i18n.yaml similarity index 63% rename from .agents/notes/implemented/feature/2026-07-27-user-message-icon-actions.i18n.yaml rename to .agents/notes/archived/feature/2026-07-27-user-message-icon-actions.i18n.yaml index e664ec81fb..49220ee07d 100644 --- a/.agents/notes/implemented/feature/2026-07-27-user-message-icon-actions.i18n.yaml +++ b/.agents/notes/archived/feature/2026-07-27-user-message-icon-actions.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 -2026-07-27-user-message-icon-actions.md: 869e7a2518a3ec927c0689a10816a410dc5f0862 -2026-07-27-user-message-icon-actions.zh.md: 353e5ac765bb2fbab9932449cf2247768a1f412f +2026-07-27-user-message-icon-actions.md: 3a6944143972e8e7f6dcc59033c933d112708b63 +2026-07-27-user-message-icon-actions.zh.md: da80bd9242940da56271c2639114b78e43cd1041 diff --git a/.agents/notes/implemented/feature/2026-07-27-user-message-icon-actions.md b/.agents/notes/archived/feature/2026-07-27-user-message-icon-actions.md similarity index 98% rename from .agents/notes/implemented/feature/2026-07-27-user-message-icon-actions.md rename to .agents/notes/archived/feature/2026-07-27-user-message-icon-actions.md index 869e7a2518..3a69441439 100644 --- a/.agents/notes/implemented/feature/2026-07-27-user-message-icon-actions.md +++ b/.agents/notes/archived/feature/2026-07-27-user-message-icon-actions.md @@ -1,6 +1,7 @@ # Agent Note: User-message IconActions under the bubble Status: implemented +Archived: 2026-07-27 English | [中文](2026-07-27-user-message-icon-actions.zh.md) diff --git a/.agents/notes/implemented/feature/2026-07-27-user-message-icon-actions.zh.md b/.agents/notes/archived/feature/2026-07-27-user-message-icon-actions.zh.md similarity index 98% rename from .agents/notes/implemented/feature/2026-07-27-user-message-icon-actions.zh.md rename to .agents/notes/archived/feature/2026-07-27-user-message-icon-actions.zh.md index 353e5ac765..da80bd9242 100644 --- a/.agents/notes/implemented/feature/2026-07-27-user-message-icon-actions.zh.md +++ b/.agents/notes/archived/feature/2026-07-27-user-message-icon-actions.zh.md @@ -1,6 +1,7 @@ # Agent Note: 用户消息气泡下方的 IconActions Status: implemented +Archived: 2026-07-27 [English](2026-07-27-user-message-icon-actions.md) | 中文 diff --git a/.agents/notes/archived/manifest.json b/.agents/notes/archived/manifest.json index 0ca8c4d9bd..e65d1125cd 100644 --- a/.agents/notes/archived/manifest.json +++ b/.agents/notes/archived/manifest.json @@ -4,9 +4,18 @@ "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-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-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-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", @@ -40,12 +49,24 @@ "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-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-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-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-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-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-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", @@ -91,24 +112,54 @@ "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-26-code-mode-trajectory-waterfall-spans.i18n.yaml": "sha256:fc96383793f177861a55b56181756feabaa911f8520887b32177e9d2405f55b7", + "feature/2026-07-26-code-mode-trajectory-waterfall-spans.md": "sha256:3cab43f0a40ece43314c9ed6762b9a4cd3c26d7d025b73686b78ffca219e0be0", + "feature/2026-07-26-code-mode-trajectory-waterfall-spans.zh.md": "sha256:e7cf165760568a2804156356ac3a16388d667f4adff0c57f5440e84b1b3b3632", + "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", "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-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", + "process/2026-07-04-cordis-jsdoc-completeness-gate.i18n.yaml": "sha256:92ab8aca8856324acb383927d4500d2f2b3b8ad64d24bd855632035a52671032", + "process/2026-07-04-cordis-jsdoc-completeness-gate.md": "sha256:a9404acbfeaa83f032d17414627b2cce5e280cad8651c6ff078a2ea6af458285", + "process/2026-07-04-cordis-jsdoc-completeness-gate.zh.md": "sha256:e8f4737ecc0925e3dcd60f8319d9cd0fd24de5c7468e1ede4438748d3ad378a1", + "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-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-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-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", "process/2026-07-21-doc-sync-through-gate-scheduler.i18n.yaml": "sha256:1dbe70d21dd510bec4f2f56ae39d0fdc7290d5648280ca0b67224cd23b3a02a8", "process/2026-07-21-doc-sync-through-gate-scheduler.md": "sha256:b3eb3f2395ad8f1b77f44aa3fdac79856e5d0b6b4873560d0cc87b63de2ea2e0", "process/2026-07-21-doc-sync-through-gate-scheduler.zh.md": "sha256:e262e02c3d08057b83b0d29281eadb92723f0fe5b3f54424528f47be137bc760", + "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-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-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-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", "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", @@ -118,6 +169,9 @@ "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-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", "simplification/2026-07-04-drop-inert-request-knobs.i18n.yaml": "sha256:e4c992a27ae0e37e5ef663c2cddf55eefe20387fd6103bebf655834d8e75e9db", "simplification/2026-07-04-drop-inert-request-knobs.md": "sha256:8735c2b868a85b13235e0491a0fa7b9570dd090eef5170324fc5e93782687b67", "simplification/2026-07-04-drop-inert-request-knobs.zh.md": "sha256:78b243f5d580f2a6fbbdb7d26574295d6ed74feb8d9bba34bbcdf4aa87624b5c", @@ -163,6 +217,12 @@ "simplification/2026-07-21-tui-todo-write-opt-in.i18n.yaml": "sha256:633975e45444f179e5fcd258d3c4bce924975583505fa97f18cff21861a88ca2", "simplification/2026-07-21-tui-todo-write-opt-in.md": "sha256:7c4c0818f5cb5b1a506dabb71a56b7d79b811e4b912d492865f1404f4d1ece99", "simplification/2026-07-21-tui-todo-write-opt-in.zh.md": "sha256:2c121b8ea03182f7854e7d834b07967fdb6790af6a2a38c1d24bb0ca968496ba", + "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-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", "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", @@ -177,6 +237,9 @@ "testing/2026-07-04-single-source-acp-replay-config.zh.md": "sha256:bed4dcd236a07192dd3de6c76e4a5c47dd5ec35963ce830bd5521bbb41d3f3a3", "testing/2026-07-06-pin-request-header-content-in-one-scenario.i18n.yaml": "sha256:4f3ebae0faea8a38ffe0d5291a33b3bcf99ed723f8e0cc5cccecbedbf4fb9ce9", "testing/2026-07-06-pin-request-header-content-in-one-scenario.md": "sha256:050bf8044ce22a27a0f57b5cef84ccff0dc45b1a3f6b70aa41950d41038d0702", - "testing/2026-07-06-pin-request-header-content-in-one-scenario.zh.md": "sha256:cac75d4475666239bbe0030b90c0fa7cc66024af5b9f8ef217e53018be64890e" + "testing/2026-07-06-pin-request-header-content-in-one-scenario.zh.md": "sha256:cac75d4475666239bbe0030b90c0fa7cc66024af5b9f8ef217e53018be64890e", + "testing/2026-07-08-shared-acp-snapshot-package.i18n.yaml": "sha256:fc37fcdfe8744f8c8f39eda3f494eed25ee8c4d5322d1f3f671eabd2c5d7026e", + "testing/2026-07-08-shared-acp-snapshot-package.md": "sha256:285b4a3c0b1ef7a837e6713cf0192ddc8a26101f6737fa3923682a9e91350c50", + "testing/2026-07-08-shared-acp-snapshot-package.zh.md": "sha256:02da3f910c2060f70038a0d86a7ddae4a8890905600440e1373412f54fbdcea8" } } diff --git a/.agents/notes/implemented/process/2026-06-11-tsdown-over-dumble.i18n.yaml b/.agents/notes/archived/process/2026-06-11-tsdown-over-dumble.i18n.yaml similarity index 65% rename from .agents/notes/implemented/process/2026-06-11-tsdown-over-dumble.i18n.yaml rename to .agents/notes/archived/process/2026-06-11-tsdown-over-dumble.i18n.yaml index 4ac1a926c4..0384ce1260 100644 --- a/.agents/notes/implemented/process/2026-06-11-tsdown-over-dumble.i18n.yaml +++ b/.agents/notes/archived/process/2026-06-11-tsdown-over-dumble.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 -2026-06-11-tsdown-over-dumble.md: e8cdaeb1e3331ffb04de024acff5b0e6ca3e6366 -2026-06-11-tsdown-over-dumble.zh.md: bb5feef585c1748f41d1b204313f1a4d8b357a17 +2026-06-11-tsdown-over-dumble.md: b622fd41b262147e3a42ca590ccb192dd83d0b9f +2026-06-11-tsdown-over-dumble.zh.md: 2200cb8c1776c5f50913ed7e3cfb9a6c305d31e0 diff --git a/.agents/notes/implemented/process/2026-06-11-tsdown-over-dumble.md b/.agents/notes/archived/process/2026-06-11-tsdown-over-dumble.md similarity index 99% rename from .agents/notes/implemented/process/2026-06-11-tsdown-over-dumble.md rename to .agents/notes/archived/process/2026-06-11-tsdown-over-dumble.md index e8cdaeb1e3..b622fd41b2 100644 --- a/.agents/notes/implemented/process/2026-06-11-tsdown-over-dumble.md +++ b/.agents/notes/archived/process/2026-06-11-tsdown-over-dumble.md @@ -1,6 +1,7 @@ # Agent Note: tsdown for JS bundling instead of dumble Status: implemented +Archived: 2026-07-27 English | [中文](2026-06-11-tsdown-over-dumble.zh.md) diff --git a/.agents/notes/implemented/process/2026-06-11-tsdown-over-dumble.zh.md b/.agents/notes/archived/process/2026-06-11-tsdown-over-dumble.zh.md similarity index 99% rename from .agents/notes/implemented/process/2026-06-11-tsdown-over-dumble.zh.md rename to .agents/notes/archived/process/2026-06-11-tsdown-over-dumble.zh.md index bb5feef585..2200cb8c17 100644 --- a/.agents/notes/implemented/process/2026-06-11-tsdown-over-dumble.zh.md +++ b/.agents/notes/archived/process/2026-06-11-tsdown-over-dumble.zh.md @@ -1,6 +1,7 @@ # Agent Note: 使用 tsdown 替代 dumble 进行 JS 打包 Status: implemented +Archived: 2026-07-27 [English](2026-06-11-tsdown-over-dumble.md) | 中文 diff --git a/.agents/notes/implemented/process/2026-07-04-cordis-jsdoc-completeness-gate.i18n.yaml b/.agents/notes/archived/process/2026-07-04-cordis-jsdoc-completeness-gate.i18n.yaml similarity index 62% rename from .agents/notes/implemented/process/2026-07-04-cordis-jsdoc-completeness-gate.i18n.yaml rename to .agents/notes/archived/process/2026-07-04-cordis-jsdoc-completeness-gate.i18n.yaml index 21465703e1..d17897d305 100644 --- a/.agents/notes/implemented/process/2026-07-04-cordis-jsdoc-completeness-gate.i18n.yaml +++ b/.agents/notes/archived/process/2026-07-04-cordis-jsdoc-completeness-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 -2026-07-04-cordis-jsdoc-completeness-gate.md: c7c39986414437ce4d0d4c64f9e25f47485fdf5c -2026-07-04-cordis-jsdoc-completeness-gate.zh.md: f1e7ec824ebae119c1cb27ca4dd9f0d8330dde1a +2026-07-04-cordis-jsdoc-completeness-gate.md: 4b033ab52c8bfe79d1ca9db4baf3db2a533223be +2026-07-04-cordis-jsdoc-completeness-gate.zh.md: f1c1c9976deadaaa700a8a152e4f29a31122ca1a diff --git a/.agents/notes/implemented/process/2026-07-04-cordis-jsdoc-completeness-gate.md b/.agents/notes/archived/process/2026-07-04-cordis-jsdoc-completeness-gate.md similarity index 99% rename from .agents/notes/implemented/process/2026-07-04-cordis-jsdoc-completeness-gate.md rename to .agents/notes/archived/process/2026-07-04-cordis-jsdoc-completeness-gate.md index c7c3998641..4b033ab52c 100644 --- a/.agents/notes/implemented/process/2026-07-04-cordis-jsdoc-completeness-gate.md +++ b/.agents/notes/archived/process/2026-07-04-cordis-jsdoc-completeness-gate.md @@ -1,6 +1,7 @@ # Agent Note: JSDoc completeness gate for the cordis surface Status: implemented +Archived: 2026-07-27 English | [中文](2026-07-04-cordis-jsdoc-completeness-gate.zh.md) diff --git a/.agents/notes/implemented/process/2026-07-04-cordis-jsdoc-completeness-gate.zh.md b/.agents/notes/archived/process/2026-07-04-cordis-jsdoc-completeness-gate.zh.md similarity index 99% rename from .agents/notes/implemented/process/2026-07-04-cordis-jsdoc-completeness-gate.zh.md rename to .agents/notes/archived/process/2026-07-04-cordis-jsdoc-completeness-gate.zh.md index f1e7ec824e..f1c1c9976d 100644 --- a/.agents/notes/implemented/process/2026-07-04-cordis-jsdoc-completeness-gate.zh.md +++ b/.agents/notes/archived/process/2026-07-04-cordis-jsdoc-completeness-gate.zh.md @@ -1,6 +1,7 @@ # Agent Note: 针对 Cordis 对外服务接口的 JSDoc 完整性门禁 Status: implemented +Archived: 2026-07-27 [English](2026-07-04-cordis-jsdoc-completeness-gate.md) | 中文 diff --git a/.agents/notes/implemented/process/2026-07-04-persistence-log-catalog.i18n.yaml b/.agents/notes/archived/process/2026-07-04-persistence-log-catalog.i18n.yaml similarity index 64% rename from .agents/notes/implemented/process/2026-07-04-persistence-log-catalog.i18n.yaml rename to .agents/notes/archived/process/2026-07-04-persistence-log-catalog.i18n.yaml index 00db07d233..122f95f28d 100644 --- a/.agents/notes/implemented/process/2026-07-04-persistence-log-catalog.i18n.yaml +++ b/.agents/notes/archived/process/2026-07-04-persistence-log-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 -2026-07-04-persistence-log-catalog.md: 1529f41b485c1bc8ca029c0a9264574fa7a886a0 -2026-07-04-persistence-log-catalog.zh.md: f3f77bb66f8798d953fed16bc79cadadc35c036a +2026-07-04-persistence-log-catalog.md: f000b41c24761fa4914f296d0c2c07e4a26770d6 +2026-07-04-persistence-log-catalog.zh.md: 58680e56c5b8f5959baa90318f1747303392c9aa diff --git a/.agents/notes/implemented/process/2026-07-04-persistence-log-catalog.md b/.agents/notes/archived/process/2026-07-04-persistence-log-catalog.md similarity index 99% rename from .agents/notes/implemented/process/2026-07-04-persistence-log-catalog.md rename to .agents/notes/archived/process/2026-07-04-persistence-log-catalog.md index 1529f41b48..f000b41c24 100644 --- a/.agents/notes/implemented/process/2026-07-04-persistence-log-catalog.md +++ b/.agents/notes/archived/process/2026-07-04-persistence-log-catalog.md @@ -1,6 +1,7 @@ # Agent Note: Generated persistence log event catalog Status: implemented +Archived: 2026-07-27 English | [中文](2026-07-04-persistence-log-catalog.zh.md) diff --git a/.agents/notes/implemented/process/2026-07-04-persistence-log-catalog.zh.md b/.agents/notes/archived/process/2026-07-04-persistence-log-catalog.zh.md similarity index 99% rename from .agents/notes/implemented/process/2026-07-04-persistence-log-catalog.zh.md rename to .agents/notes/archived/process/2026-07-04-persistence-log-catalog.zh.md index f3f77bb66f..58680e56c5 100644 --- a/.agents/notes/implemented/process/2026-07-04-persistence-log-catalog.zh.md +++ b/.agents/notes/archived/process/2026-07-04-persistence-log-catalog.zh.md @@ -1,6 +1,7 @@ # Agent Note: 生成式持久化日志事件目录 Status: implemented +Archived: 2026-07-27 [English](2026-07-04-persistence-log-catalog.md) | 中文 diff --git a/.agents/notes/implemented/process/2026-07-06-generated-config-catalog.i18n.yaml b/.agents/notes/archived/process/2026-07-06-generated-config-catalog.i18n.yaml similarity index 63% rename from .agents/notes/implemented/process/2026-07-06-generated-config-catalog.i18n.yaml rename to .agents/notes/archived/process/2026-07-06-generated-config-catalog.i18n.yaml index 17473bf069..439ef8fde1 100644 --- a/.agents/notes/implemented/process/2026-07-06-generated-config-catalog.i18n.yaml +++ b/.agents/notes/archived/process/2026-07-06-generated-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 -2026-07-06-generated-config-catalog.md: f39f5138526d3278e839ee0053d5051bb8bc1c36 -2026-07-06-generated-config-catalog.zh.md: 825046914dad8e1a7d87340a310b252f03cbecb9 +2026-07-06-generated-config-catalog.md: b7c69f21c0e2152235f57e90f88f670769eb9d3b +2026-07-06-generated-config-catalog.zh.md: 59d632df0219c09d4afac9c859e2ed0a88d62550 diff --git a/.agents/notes/implemented/process/2026-07-06-generated-config-catalog.md b/.agents/notes/archived/process/2026-07-06-generated-config-catalog.md similarity index 99% rename from .agents/notes/implemented/process/2026-07-06-generated-config-catalog.md rename to .agents/notes/archived/process/2026-07-06-generated-config-catalog.md index f39f513852..b7c69f21c0 100644 --- a/.agents/notes/implemented/process/2026-07-06-generated-config-catalog.md +++ b/.agents/notes/archived/process/2026-07-06-generated-config-catalog.md @@ -1,6 +1,7 @@ # Agent Note: Generated plugin config catalog Status: implemented +Archived: 2026-07-27 English | [中文](2026-07-06-generated-config-catalog.zh.md) diff --git a/.agents/notes/implemented/process/2026-07-06-generated-config-catalog.zh.md b/.agents/notes/archived/process/2026-07-06-generated-config-catalog.zh.md similarity index 99% rename from .agents/notes/implemented/process/2026-07-06-generated-config-catalog.zh.md rename to .agents/notes/archived/process/2026-07-06-generated-config-catalog.zh.md index 825046914d..59d632df02 100644 --- a/.agents/notes/implemented/process/2026-07-06-generated-config-catalog.zh.md +++ b/.agents/notes/archived/process/2026-07-06-generated-config-catalog.zh.md @@ -1,6 +1,7 @@ # Agent Note: 生成式插件配置目录 Status: implemented +Archived: 2026-07-27 [English](2026-07-06-generated-config-catalog.md) | 中文 diff --git a/.agents/notes/implemented/process/2026-07-17-run-ci-examples-from-built-lib.i18n.yaml b/.agents/notes/archived/process/2026-07-17-run-ci-examples-from-built-lib.i18n.yaml similarity index 62% rename from .agents/notes/implemented/process/2026-07-17-run-ci-examples-from-built-lib.i18n.yaml rename to .agents/notes/archived/process/2026-07-17-run-ci-examples-from-built-lib.i18n.yaml index 31ec0bdb07..b346069713 100644 --- a/.agents/notes/implemented/process/2026-07-17-run-ci-examples-from-built-lib.i18n.yaml +++ b/.agents/notes/archived/process/2026-07-17-run-ci-examples-from-built-lib.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 -2026-07-17-run-ci-examples-from-built-lib.md: 22f69ed56bfc479281648bfb40df5acbd129ebc0 -2026-07-17-run-ci-examples-from-built-lib.zh.md: 74b985f578dd25f785e556c0cd493a7a9292fc43 +2026-07-17-run-ci-examples-from-built-lib.md: 3063bdcc8a170713151229a2a4cee22a91f1e8a9 +2026-07-17-run-ci-examples-from-built-lib.zh.md: b70367c1d25f4942043a60458b0197288c8094ba diff --git a/.agents/notes/implemented/process/2026-07-17-run-ci-examples-from-built-lib.md b/.agents/notes/archived/process/2026-07-17-run-ci-examples-from-built-lib.md similarity index 99% rename from .agents/notes/implemented/process/2026-07-17-run-ci-examples-from-built-lib.md rename to .agents/notes/archived/process/2026-07-17-run-ci-examples-from-built-lib.md index 22f69ed56b..3063bdcc8a 100644 --- a/.agents/notes/implemented/process/2026-07-17-run-ci-examples-from-built-lib.md +++ b/.agents/notes/archived/process/2026-07-17-run-ci-examples-from-built-lib.md @@ -1,6 +1,7 @@ # Agent Note: Run CI examples from built lib Status: implemented +Archived: 2026-07-27 English | [中文](2026-07-17-run-ci-examples-from-built-lib.zh.md) diff --git a/.agents/notes/implemented/process/2026-07-17-run-ci-examples-from-built-lib.zh.md b/.agents/notes/archived/process/2026-07-17-run-ci-examples-from-built-lib.zh.md similarity index 99% rename from .agents/notes/implemented/process/2026-07-17-run-ci-examples-from-built-lib.zh.md rename to .agents/notes/archived/process/2026-07-17-run-ci-examples-from-built-lib.zh.md index 74b985f578..b70367c1d2 100644 --- a/.agents/notes/implemented/process/2026-07-17-run-ci-examples-from-built-lib.zh.md +++ b/.agents/notes/archived/process/2026-07-17-run-ci-examples-from-built-lib.zh.md @@ -1,6 +1,7 @@ # Agent Note: 在 CI 中从构建后的 lib 运行示例 Status: implemented +Archived: 2026-07-27 [English](2026-07-17-run-ci-examples-from-built-lib.md) | 中文 diff --git a/.agents/notes/implemented/process/2026-07-20-generated-cordis-core-api.i18n.yaml b/.agents/notes/archived/process/2026-07-20-generated-cordis-core-api.i18n.yaml similarity index 63% rename from .agents/notes/implemented/process/2026-07-20-generated-cordis-core-api.i18n.yaml rename to .agents/notes/archived/process/2026-07-20-generated-cordis-core-api.i18n.yaml index 6bae3b4d87..9d9515dd97 100644 --- a/.agents/notes/implemented/process/2026-07-20-generated-cordis-core-api.i18n.yaml +++ b/.agents/notes/archived/process/2026-07-20-generated-cordis-core-api.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 -2026-07-20-generated-cordis-core-api.md: 848dec2dba6f432c706798c40abe98e8937da651 -2026-07-20-generated-cordis-core-api.zh.md: c40a480224f4e1387b71ade9264458cd84403584 +2026-07-20-generated-cordis-core-api.md: b6a66e518744354771f25d44d662e2655fa7c758 +2026-07-20-generated-cordis-core-api.zh.md: 82dbb308386b7adc678c6e4bf8ef3f06c3b2df77 diff --git a/.agents/notes/implemented/process/2026-07-20-generated-cordis-core-api.md b/.agents/notes/archived/process/2026-07-20-generated-cordis-core-api.md similarity index 99% rename from .agents/notes/implemented/process/2026-07-20-generated-cordis-core-api.md rename to .agents/notes/archived/process/2026-07-20-generated-cordis-core-api.md index 848dec2dba..b6a66e5187 100644 --- a/.agents/notes/implemented/process/2026-07-20-generated-cordis-core-api.md +++ b/.agents/notes/archived/process/2026-07-20-generated-cordis-core-api.md @@ -1,6 +1,7 @@ # Agent Note: Generate the Cordis core API reference Status: implemented +Archived: 2026-07-27 English | [中文](2026-07-20-generated-cordis-core-api.zh.md) diff --git a/.agents/notes/implemented/process/2026-07-20-generated-cordis-core-api.zh.md b/.agents/notes/archived/process/2026-07-20-generated-cordis-core-api.zh.md similarity index 99% rename from .agents/notes/implemented/process/2026-07-20-generated-cordis-core-api.zh.md rename to .agents/notes/archived/process/2026-07-20-generated-cordis-core-api.zh.md index c40a480224..82dbb30838 100644 --- a/.agents/notes/implemented/process/2026-07-20-generated-cordis-core-api.zh.md +++ b/.agents/notes/archived/process/2026-07-20-generated-cordis-core-api.zh.md @@ -1,6 +1,7 @@ # Agent Note: 生成 Cordis 核心 API 参考文档 Status: implemented +Archived: 2026-07-27 [English](2026-07-20-generated-cordis-core-api.md) | 中文 diff --git a/.agents/notes/implemented/process/2026-07-22-cordis-tutorial-docs.i18n.yaml b/.agents/notes/archived/process/2026-07-22-cordis-tutorial-docs.i18n.yaml similarity index 65% rename from .agents/notes/implemented/process/2026-07-22-cordis-tutorial-docs.i18n.yaml rename to .agents/notes/archived/process/2026-07-22-cordis-tutorial-docs.i18n.yaml index b2aa854cf3..25159413b2 100644 --- a/.agents/notes/implemented/process/2026-07-22-cordis-tutorial-docs.i18n.yaml +++ b/.agents/notes/archived/process/2026-07-22-cordis-tutorial-docs.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 -2026-07-22-cordis-tutorial-docs.md: 45abb8f524218ce0b2678606ae62c7bf2dbca00b -2026-07-22-cordis-tutorial-docs.zh.md: cd1a62e2a6e7f2e28bc32109dd67746840f8b8b7 +2026-07-22-cordis-tutorial-docs.md: a882f3f58fe4be5388bf142424e0e99e140410fc +2026-07-22-cordis-tutorial-docs.zh.md: 4caf03ee05a120584dabef91f6ebafc78594d43a diff --git a/.agents/notes/implemented/process/2026-07-22-cordis-tutorial-docs.md b/.agents/notes/archived/process/2026-07-22-cordis-tutorial-docs.md similarity index 99% rename from .agents/notes/implemented/process/2026-07-22-cordis-tutorial-docs.md rename to .agents/notes/archived/process/2026-07-22-cordis-tutorial-docs.md index 45abb8f524..a882f3f58f 100644 --- a/.agents/notes/implemented/process/2026-07-22-cordis-tutorial-docs.md +++ b/.agents/notes/archived/process/2026-07-22-cordis-tutorial-docs.md @@ -1,6 +1,7 @@ # Agent Note: Tutorial-style Cordis docs under docs/cordis-tutorial Status: implemented +Archived: 2026-07-27 English | [中文](2026-07-22-cordis-tutorial-docs.zh.md) diff --git a/.agents/notes/implemented/process/2026-07-22-cordis-tutorial-docs.zh.md b/.agents/notes/archived/process/2026-07-22-cordis-tutorial-docs.zh.md similarity index 99% rename from .agents/notes/implemented/process/2026-07-22-cordis-tutorial-docs.zh.md rename to .agents/notes/archived/process/2026-07-22-cordis-tutorial-docs.zh.md index cd1a62e2a6..4caf03ee05 100644 --- a/.agents/notes/implemented/process/2026-07-22-cordis-tutorial-docs.zh.md +++ b/.agents/notes/archived/process/2026-07-22-cordis-tutorial-docs.zh.md @@ -1,6 +1,7 @@ # Agent Note: `docs/cordis-tutorial` 下的 Cordis 实操教程文档 Status: implemented +Archived: 2026-07-27 [English](2026-07-22-cordis-tutorial-docs.md) | 中文 diff --git a/.agents/notes/implemented/process/2026-07-26-gui-pr-gif-evidence-and-assets-branch.i18n.yaml b/.agents/notes/archived/process/2026-07-26-gui-pr-gif-evidence-and-assets-branch.i18n.yaml similarity index 60% rename from .agents/notes/implemented/process/2026-07-26-gui-pr-gif-evidence-and-assets-branch.i18n.yaml rename to .agents/notes/archived/process/2026-07-26-gui-pr-gif-evidence-and-assets-branch.i18n.yaml index cbc79b0a1c..4403ee72d8 100644 --- a/.agents/notes/implemented/process/2026-07-26-gui-pr-gif-evidence-and-assets-branch.i18n.yaml +++ b/.agents/notes/archived/process/2026-07-26-gui-pr-gif-evidence-and-assets-branch.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 -2026-07-26-gui-pr-gif-evidence-and-assets-branch.md: 221df5dc82dfb437261f6a836dcc6c2972f30939 -2026-07-26-gui-pr-gif-evidence-and-assets-branch.zh.md: 861cedb5d15c8e057c2a5f9001453fdc3a3c6757 +2026-07-26-gui-pr-gif-evidence-and-assets-branch.md: 18e56e44190e0c44fcf2cae8bf1d66f91ef9a4c7 +2026-07-26-gui-pr-gif-evidence-and-assets-branch.zh.md: 945dd7a0242d9829334ddd79ab569c6723a64185 diff --git a/.agents/notes/implemented/process/2026-07-26-gui-pr-gif-evidence-and-assets-branch.md b/.agents/notes/archived/process/2026-07-26-gui-pr-gif-evidence-and-assets-branch.md similarity index 99% rename from .agents/notes/implemented/process/2026-07-26-gui-pr-gif-evidence-and-assets-branch.md rename to .agents/notes/archived/process/2026-07-26-gui-pr-gif-evidence-and-assets-branch.md index 221df5dc82..18e56e4419 100644 --- a/.agents/notes/implemented/process/2026-07-26-gui-pr-gif-evidence-and-assets-branch.md +++ b/.agents/notes/archived/process/2026-07-26-gui-pr-gif-evidence-and-assets-branch.md @@ -1,6 +1,7 @@ # Agent Note: GUI pull request GIF evidence and assets-branch publication Status: implemented +Archived: 2026-07-27 English | [中文](2026-07-26-gui-pr-gif-evidence-and-assets-branch.zh.md) diff --git a/.agents/notes/implemented/process/2026-07-26-gui-pr-gif-evidence-and-assets-branch.zh.md b/.agents/notes/archived/process/2026-07-26-gui-pr-gif-evidence-and-assets-branch.zh.md similarity index 99% rename from .agents/notes/implemented/process/2026-07-26-gui-pr-gif-evidence-and-assets-branch.zh.md rename to .agents/notes/archived/process/2026-07-26-gui-pr-gif-evidence-and-assets-branch.zh.md index 861cedb5d1..945dd7a024 100644 --- a/.agents/notes/implemented/process/2026-07-26-gui-pr-gif-evidence-and-assets-branch.zh.md +++ b/.agents/notes/archived/process/2026-07-26-gui-pr-gif-evidence-and-assets-branch.zh.md @@ -1,6 +1,7 @@ # Agent Note: GUI PR 的 GIF 证据与 assets 分支发布 Status: implemented +Archived: 2026-07-27 [English](2026-07-26-gui-pr-gif-evidence-and-assets-branch.md) | 中文 diff --git a/.agents/notes/implemented/simplification/2026-07-02-remove-stream-chunk-mirror.i18n.yaml b/.agents/notes/archived/simplification/2026-07-02-remove-stream-chunk-mirror.i18n.yaml similarity index 63% rename from .agents/notes/implemented/simplification/2026-07-02-remove-stream-chunk-mirror.i18n.yaml rename to .agents/notes/archived/simplification/2026-07-02-remove-stream-chunk-mirror.i18n.yaml index ca9654223d..c2f6f7d751 100644 --- a/.agents/notes/implemented/simplification/2026-07-02-remove-stream-chunk-mirror.i18n.yaml +++ b/.agents/notes/archived/simplification/2026-07-02-remove-stream-chunk-mirror.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 -2026-07-02-remove-stream-chunk-mirror.md: cc75f71407a3c54d71b11e91cea2eb2658649b5e -2026-07-02-remove-stream-chunk-mirror.zh.md: 47e4c42daedadb09b6f51508af84e593ee8218a9 +2026-07-02-remove-stream-chunk-mirror.md: 99086a179dfd1bbaac570e437a66b9be19c05ef4 +2026-07-02-remove-stream-chunk-mirror.zh.md: 7a03e476dd8d0ba725d16d220e9aef3a3fc445f6 diff --git a/.agents/notes/implemented/simplification/2026-07-02-remove-stream-chunk-mirror.md b/.agents/notes/archived/simplification/2026-07-02-remove-stream-chunk-mirror.md similarity index 99% rename from .agents/notes/implemented/simplification/2026-07-02-remove-stream-chunk-mirror.md rename to .agents/notes/archived/simplification/2026-07-02-remove-stream-chunk-mirror.md index cc75f71407..99086a179d 100644 --- a/.agents/notes/implemented/simplification/2026-07-02-remove-stream-chunk-mirror.md +++ b/.agents/notes/archived/simplification/2026-07-02-remove-stream-chunk-mirror.md @@ -1,6 +1,7 @@ # Agent Note: Stop mirroring the token stream as an agent event Status: implemented +Archived: 2026-07-27 English | [中文](2026-07-02-remove-stream-chunk-mirror.zh.md) diff --git a/.agents/notes/implemented/simplification/2026-07-02-remove-stream-chunk-mirror.zh.md b/.agents/notes/archived/simplification/2026-07-02-remove-stream-chunk-mirror.zh.md similarity index 99% rename from .agents/notes/implemented/simplification/2026-07-02-remove-stream-chunk-mirror.zh.md rename to .agents/notes/archived/simplification/2026-07-02-remove-stream-chunk-mirror.zh.md index 47e4c42dae..7a03e476dd 100644 --- a/.agents/notes/implemented/simplification/2026-07-02-remove-stream-chunk-mirror.zh.md +++ b/.agents/notes/archived/simplification/2026-07-02-remove-stream-chunk-mirror.zh.md @@ -1,6 +1,7 @@ # Agent Note: 停止将 token 流镜像为 agent 事件 Status: implemented +Archived: 2026-07-27 [English](2026-07-02-remove-stream-chunk-mirror.md) | 中文 diff --git a/.agents/notes/implemented/simplification/2026-07-22-tui-titles-from-session-title-service.i18n.yaml b/.agents/notes/archived/simplification/2026-07-22-tui-titles-from-session-title-service.i18n.yaml similarity index 60% rename from .agents/notes/implemented/simplification/2026-07-22-tui-titles-from-session-title-service.i18n.yaml rename to .agents/notes/archived/simplification/2026-07-22-tui-titles-from-session-title-service.i18n.yaml index fbe06d209f..8e0bf97bf0 100644 --- a/.agents/notes/implemented/simplification/2026-07-22-tui-titles-from-session-title-service.i18n.yaml +++ b/.agents/notes/archived/simplification/2026-07-22-tui-titles-from-session-title-service.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 -2026-07-22-tui-titles-from-session-title-service.md: 04355b9c426af423dec347997f3b8ac62483eb7f -2026-07-22-tui-titles-from-session-title-service.zh.md: 5fc783c5ca08baba12a60f2aa6b5e286307aa9f0 +2026-07-22-tui-titles-from-session-title-service.md: 946ef283f91249c70f82280b754ef991665dbaa3 +2026-07-22-tui-titles-from-session-title-service.zh.md: f2fa4772c9fa404540dcf8a514cf571a284d4967 diff --git a/.agents/notes/implemented/simplification/2026-07-22-tui-titles-from-session-title-service.md b/.agents/notes/archived/simplification/2026-07-22-tui-titles-from-session-title-service.md similarity index 99% rename from .agents/notes/implemented/simplification/2026-07-22-tui-titles-from-session-title-service.md rename to .agents/notes/archived/simplification/2026-07-22-tui-titles-from-session-title-service.md index 04355b9c42..946ef283f9 100644 --- a/.agents/notes/implemented/simplification/2026-07-22-tui-titles-from-session-title-service.md +++ b/.agents/notes/archived/simplification/2026-07-22-tui-titles-from-session-title-service.md @@ -1,6 +1,7 @@ # Agent Note: TUI titles come from the session-title service Status: implemented +Archived: 2026-07-27 English | [中文](2026-07-22-tui-titles-from-session-title-service.zh.md) diff --git a/.agents/notes/implemented/simplification/2026-07-22-tui-titles-from-session-title-service.zh.md b/.agents/notes/archived/simplification/2026-07-22-tui-titles-from-session-title-service.zh.md similarity index 99% rename from .agents/notes/implemented/simplification/2026-07-22-tui-titles-from-session-title-service.zh.md rename to .agents/notes/archived/simplification/2026-07-22-tui-titles-from-session-title-service.zh.md index 5fc783c5ca..f2fa4772c9 100644 --- a/.agents/notes/implemented/simplification/2026-07-22-tui-titles-from-session-title-service.zh.md +++ b/.agents/notes/archived/simplification/2026-07-22-tui-titles-from-session-title-service.zh.md @@ -1,6 +1,7 @@ # Agent Note: TUI 标题来自 session-title 服务 Status: implemented +Archived: 2026-07-27 [English](2026-07-22-tui-titles-from-session-title-service.md) | 中文 diff --git a/.agents/notes/implemented/simplification/2026-07-26-consolidate-gate-scripts-on-existing-deps.i18n.yaml b/.agents/notes/archived/simplification/2026-07-26-consolidate-gate-scripts-on-existing-deps.i18n.yaml similarity index 59% rename from .agents/notes/implemented/simplification/2026-07-26-consolidate-gate-scripts-on-existing-deps.i18n.yaml rename to .agents/notes/archived/simplification/2026-07-26-consolidate-gate-scripts-on-existing-deps.i18n.yaml index 8a52737dfc..6c3719ecf4 100644 --- a/.agents/notes/implemented/simplification/2026-07-26-consolidate-gate-scripts-on-existing-deps.i18n.yaml +++ b/.agents/notes/archived/simplification/2026-07-26-consolidate-gate-scripts-on-existing-deps.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 -2026-07-26-consolidate-gate-scripts-on-existing-deps.md: 6370c8f92eff7296327e941e698ec4f733100bb2 -2026-07-26-consolidate-gate-scripts-on-existing-deps.zh.md: 3587c92e0e9655d8b38d24d184c1c68c44b131d4 +2026-07-26-consolidate-gate-scripts-on-existing-deps.md: 9ad27ff8b2fe7a68511c01a1125dd01289aa4a7f +2026-07-26-consolidate-gate-scripts-on-existing-deps.zh.md: b01133fad22c8d8244d787f8740d2d1c29b2c41e diff --git a/.agents/notes/implemented/simplification/2026-07-26-consolidate-gate-scripts-on-existing-deps.md b/.agents/notes/archived/simplification/2026-07-26-consolidate-gate-scripts-on-existing-deps.md similarity index 99% rename from .agents/notes/implemented/simplification/2026-07-26-consolidate-gate-scripts-on-existing-deps.md rename to .agents/notes/archived/simplification/2026-07-26-consolidate-gate-scripts-on-existing-deps.md index 6370c8f92e..9ad27ff8b2 100644 --- a/.agents/notes/implemented/simplification/2026-07-26-consolidate-gate-scripts-on-existing-deps.md +++ b/.agents/notes/archived/simplification/2026-07-26-consolidate-gate-scripts-on-existing-deps.md @@ -1,6 +1,7 @@ # Agent Note: Consolidate gate scripts on already-present deps and builtins Status: implemented +Archived: 2026-07-27 English | [中文](2026-07-26-consolidate-gate-scripts-on-existing-deps.zh.md) diff --git a/.agents/notes/implemented/simplification/2026-07-26-consolidate-gate-scripts-on-existing-deps.zh.md b/.agents/notes/archived/simplification/2026-07-26-consolidate-gate-scripts-on-existing-deps.zh.md similarity index 99% rename from .agents/notes/implemented/simplification/2026-07-26-consolidate-gate-scripts-on-existing-deps.zh.md rename to .agents/notes/archived/simplification/2026-07-26-consolidate-gate-scripts-on-existing-deps.zh.md index 3587c92e0e..b01133fad2 100644 --- a/.agents/notes/implemented/simplification/2026-07-26-consolidate-gate-scripts-on-existing-deps.zh.md +++ b/.agents/notes/archived/simplification/2026-07-26-consolidate-gate-scripts-on-existing-deps.zh.md @@ -1,6 +1,7 @@ # Agent Note: 把门禁脚本统一到已有依赖与内置模块上 Status: implemented +Archived: 2026-07-27 [English](2026-07-26-consolidate-gate-scripts-on-existing-deps.md) | 中文 diff --git a/.agents/notes/implemented/testing/2026-07-08-shared-acp-snapshot-package.i18n.yaml b/.agents/notes/archived/testing/2026-07-08-shared-acp-snapshot-package.i18n.yaml similarity index 63% rename from .agents/notes/implemented/testing/2026-07-08-shared-acp-snapshot-package.i18n.yaml rename to .agents/notes/archived/testing/2026-07-08-shared-acp-snapshot-package.i18n.yaml index 4aa2ea289d..0472aed0a3 100644 --- a/.agents/notes/implemented/testing/2026-07-08-shared-acp-snapshot-package.i18n.yaml +++ b/.agents/notes/archived/testing/2026-07-08-shared-acp-snapshot-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 -2026-07-08-shared-acp-snapshot-package.md: dc86bf020b159a1c4af26bbc49725ce2b7de8180 -2026-07-08-shared-acp-snapshot-package.zh.md: 19eb070bbc5aa1a0b72c0cc874225064e92632b8 +2026-07-08-shared-acp-snapshot-package.md: 6952f79eff8a764cd296bef98e9cd7b40e59cf01 +2026-07-08-shared-acp-snapshot-package.zh.md: 35246fc4f98f616d70e31eb55499cca15f04c94e diff --git a/.agents/notes/implemented/testing/2026-07-08-shared-acp-snapshot-package.md b/.agents/notes/archived/testing/2026-07-08-shared-acp-snapshot-package.md similarity index 99% rename from .agents/notes/implemented/testing/2026-07-08-shared-acp-snapshot-package.md rename to .agents/notes/archived/testing/2026-07-08-shared-acp-snapshot-package.md index dc86bf020b..6952f79eff 100644 --- a/.agents/notes/implemented/testing/2026-07-08-shared-acp-snapshot-package.md +++ b/.agents/notes/archived/testing/2026-07-08-shared-acp-snapshot-package.md @@ -1,6 +1,7 @@ # Agent Note: Extract the ACP snapshot suite into a support package Status: implemented +Archived: 2026-07-27 English | [中文](2026-07-08-shared-acp-snapshot-package.zh.md) diff --git a/.agents/notes/implemented/testing/2026-07-08-shared-acp-snapshot-package.zh.md b/.agents/notes/archived/testing/2026-07-08-shared-acp-snapshot-package.zh.md similarity index 99% rename from .agents/notes/implemented/testing/2026-07-08-shared-acp-snapshot-package.zh.md rename to .agents/notes/archived/testing/2026-07-08-shared-acp-snapshot-package.zh.md index 19eb070bbc..35246fc4f9 100644 --- a/.agents/notes/implemented/testing/2026-07-08-shared-acp-snapshot-package.zh.md +++ b/.agents/notes/archived/testing/2026-07-08-shared-acp-snapshot-package.zh.md @@ -1,6 +1,7 @@ # Agent Note: 将 ACP 快照套件提取为支持包 Status: implemented +Archived: 2026-07-27 [English](2026-07-08-shared-acp-snapshot-package.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 c6ddb39d01..d5b172cb13 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 @@ -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 -2026-06-11-dev-invariants-over-deep-readonly.md: 8f0e79f15af82ce3125b1f6f767d4ea727aa6d29 -2026-06-11-dev-invariants-over-deep-readonly.zh.md: 2f787bbd55b5a9a91bc5342351756e45cb0515d3 +# 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: f1a741927cf63b43b1aaf558efc148ff80d2d881 +2026-06-11-dev-invariants-over-deep-readonly.zh.md: 67439c674f5a77112fc0619c774f7897cf49e835 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 8f0e79f15a..f1a741927c 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 @@ -40,7 +40,7 @@ When the session companion attaches to an existing or seeded session, it replays ### Pervasive deep-readonly types -[The rejected immutable-public-surfaces proposal](../../rejected/architecture/2026-06-11-immutable-public-surfaces.md) would apply a recursive readonly type across public log and message surfaces. That provides editor feedback but not a runtime guarantee: TypeScript types are erased and plugin code can cast through them. It also pushes readonly types into consumers where mutation is intentional. Runtime ownership at the `Session` boundary protects every caller without that type propagation. +A rejected companion proposal would apply a recursive `DeepReadonly` type across public log and message surfaces, flipping session read paths (`events`, `session/event` listeners, `deriveMessages()`) to deep-readonly while keeping in-flight waterfalls mutable. That provides editor feedback but not a runtime guarantee: TypeScript types are erased and plugin code can cast through them. It also pushes readonly types into consumers where mutation is intentional. Runtime ownership at the `Session` boundary protects every caller without that type propagation. ### Development-only freezing 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 2f787bbd55..67439c674f 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 @@ -40,7 +40,7 @@ TypeScript readonly 类型不是充分的运行时边界。它们在程序运行 ### 全面的 deep-readonly 类型 -[被否决的不可变公共表面提案](../../rejected/architecture/2026-06-11-immutable-public-surfaces.md)会在公共日志和消息表面上应用递归 readonly 类型。这能提供编辑器反馈,但无法提供运行时保证:TypeScript 类型在运行时被擦除,插件代码可以通过类型转换绕过。它还会将 readonly 类型推入有意进行修改的消费方。在 `Session` 边界处的运行时所有权保护所有调用方,无需这种类型传播。 +一个被否决的姊妹提案会在公共日志和消息表面上应用递归 `DeepReadonly` 类型,将会话读取路径(`events`、`session/event` 监听器、`deriveMessages()`)翻转为深只读,同时保持进行中的 waterfall 可变。这能提供编辑器反馈,但无法提供运行时保证:TypeScript 类型在运行时被擦除,插件代码可以通过类型转换绕过。它还会将 readonly 类型推入有意进行修改的消费方。在 `Session` 边界处的运行时所有权保护所有调用方,无需这种类型传播。 ### 仅在开发模式冻结 diff --git a/.agents/notes/implemented/architecture/2026-07-02-tool-render-intent-union.i18n.yaml b/.agents/notes/implemented/architecture/2026-07-02-tool-render-intent-union.i18n.yaml index d2ac37af62..6d8498e21c 100644 --- a/.agents/notes/implemented/architecture/2026-07-02-tool-render-intent-union.i18n.yaml +++ b/.agents/notes/implemented/architecture/2026-07-02-tool-render-intent-union.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 -2026-07-02-tool-render-intent-union.md: 84423e9000526848a111591c1bb2ab92067bbe50 -2026-07-02-tool-render-intent-union.zh.md: 43873c622fc8483b4a7033d17b4b4fab1342a56b +# pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-07-02-tool-render-intent-union.md +2026-07-02-tool-render-intent-union.md: d82141f519bff66df000f1316093aacd38b8e42b +2026-07-02-tool-render-intent-union.zh.md: 71fe81ba8f87cb707512cf7880126c006321c799 diff --git a/.agents/notes/implemented/architecture/2026-07-02-tool-render-intent-union.md b/.agents/notes/implemented/architecture/2026-07-02-tool-render-intent-union.md index 84423e9000..d82141f519 100644 --- a/.agents/notes/implemented/architecture/2026-07-02-tool-render-intent-union.md +++ b/.agents/notes/implemented/architecture/2026-07-02-tool-render-intent-union.md @@ -14,7 +14,7 @@ A tool declares how its calls render in a UI (an editor's tool-call card) throug - Which combinations are *valid* is unwritten: a `terminal` call that also sets `content` means "description above the card"; a generic call that sets `terminal` is meaningless but representable. The type permits nonsense. - There is no way to express the one file-tool affordance an editor most wants — a **diff card** (`{path, oldText, newText}`, which Zed renders as an inline diff / new-file preview). `ToolCallPresentation.content` is the *LLM* `ContentBlock[]` vocabulary (text/image), so a tool literally cannot ask for a diff. -The existing `FIXME(tool-presentation)` in `packages/core/tools/src/index.ts` named the fix: "redesign the type so a tool declares its render INTENT once (e.g. a tagged union over card kinds) rather than a bag of optional fields the bridge stitches together." The rejected Agent Note [Collapse tool-owned UI presentation](../../rejected/simplification/2026-06-20-generic-tool-rendering.md) deferred it explicitly: rich rendering "should return later as a tagged render-intent union after there are at least two real tools and two real consumers to validate the vocabulary." That bar is met by multiple producer families plus the TUI and host/client-runtime (Web) consumers. +The existing `FIXME(tool-presentation)` in `packages/core/tools/src/index.ts` named the fix: "redesign the type so a tool declares its render INTENT once (e.g. a tagged union over card kinds) rather than a bag of optional fields the bridge stitches together." An earlier rejected collapse-tool-owned-presentation proposal deferred it explicitly: rich rendering "should return later as a tagged render-intent union after there are at least two real tools and two real consumers to validate the vocabulary." That bar is met by multiple producer families plus the TUI and host/client-runtime (Web) consumers. ## Decision @@ -62,7 +62,7 @@ The terminal intent is display-only. The harness still executes the command thro ## Alternatives considered -- **Delete tool-owned presentation entirely** — [the rejected collapse proposal](../../rejected/simplification/2026-06-20-generic-tool-rendering.md); its own verdict deferred to exactly this union once two real tools and two real consumers existed, and that bar is now met. +- **Delete tool-owned presentation entirely** — the rejected collapse proposal this note supersedes; its own verdict deferred to exactly this union once two real tools and two real consumers existed, and that bar is now met. - **Let a UI execute terminal intents** — rejected because it would bypass the harness's bash policy and ownership contracts and fork command execution across backends. A terminal card describes harness-owned execution; it never authorizes client-side execution. - **A merge-extensible union** (the `ContentBlockMap` pattern) — rejected: a new render intent needs new bridge code to render it anyway, so a plugin-added variant the bridge silently drops would be worse than the compile error the closed union raises at the bridge's `assertNever` switch. - **Keeping the optional-field bag** — the status quo the Problem dissects: invalid states representable, undocumented field interactions, and no way to ask for a diff card at all. @@ -77,6 +77,6 @@ A new render intent is a compile-breaking change at the bridge switch — delibe ## Related -- Supersedes the deferral in [Collapse tool-owned UI presentation](../../rejected/simplification/2026-06-20-generic-tool-rendering.md) (rejected — "wait for two real tools and two real consumers, then a tagged render-intent union"). That bar is now met; this is that union. -- Extended by [Result-time applied-hunk diffs](2026-07-02-result-time-applied-hunk-diffs.md), which adds a persisted `meta` channel so write/edit emit a result-time `DiffResultView` — the applied change (a contextual hunk with context lines / one per `replace_all` site, or a whole-file diff for a create) — on top of this union's call-time diff card. +- Supersedes the deferral in the earlier rejected collapse-tool-owned-presentation proposal (rejected — "wait for two real tools and two real consumers, then a tagged render-intent union"). That bar is now met; this is that union. +- Extended by [Result-time applied-hunk diffs](../../archived/architecture/2026-07-02-result-time-applied-hunk-diffs.md) (archived), which added a persisted `meta` channel — the value/presentation split and the persisted `presentationMeta` channel are now owned by [the canonical tool output contract](2026-07-20-canonical-tool-output-contract.md) so write/edit emit a result-time `DiffResultView` — the applied change (a contextual hunk with context lines / one per `replace_all` site, or a whole-file diff for a create) — on top of this union's call-time diff card. - Folds `ToolTerminal` into the tagged `terminal` views used by current UI transports. diff --git a/.agents/notes/implemented/architecture/2026-07-02-tool-render-intent-union.zh.md b/.agents/notes/implemented/architecture/2026-07-02-tool-render-intent-union.zh.md index 43873c622f..71fe81ba8f 100644 --- a/.agents/notes/implemented/architecture/2026-07-02-tool-render-intent-union.zh.md +++ b/.agents/notes/implemented/architecture/2026-07-02-tool-render-intent-union.zh.md @@ -14,7 +14,7 @@ Status: implemented - 哪些组合是*合法的*没有文档说明:一个设置了 `content` 的 `terminal` 调用意味着「卡片上方的描述」;一个设置了 `terminal` 的 generic 调用毫无意义但类型上可表达。类型允许无意义的状态存在。 - 无法表达编辑器最需要的文件工具能力:**diff 卡片**(`{path, oldText, newText}`,Zed 将其渲染为内联 diff / 新文件预览)。`ToolCallPresentation.content` 使用的是 *LLM(大语言模型)* 的 `ContentBlock[]` 词汇(text/image),工具根本无法请求 diff 展示。 -`packages/core/tools/src/index.ts` 中已有的 `FIXME(tool-presentation)` 指出了修复方向:「重新设计类型,让工具一次性声明其渲染意图(例如按卡片种类的带标签联合类型),而非一堆由 bridge 拼接的可选字段。」被否决的 Agent Note [折叠工具拥有的 UI 呈现](../../rejected/simplification/2026-06-20-generic-tool-rendering.md)明确推迟了此事:富渲染「应当在至少有两个真实工具和两个真实消费方验证词汇之后,以带标签 render-intent 联合类型的形式回归。」该条件已由多个生产者族,加上 TUI 与宿主/客户端运行时(Web)这些消费方满足。 +`packages/core/tools/src/index.ts` 中已有的 `FIXME(tool-presentation)` 指出了修复方向:「重新设计类型,让工具一次性声明其渲染意图(例如按卡片种类的带标签联合类型),而非一堆由 bridge 拼接的可选字段。」一个早先被否决的折叠工具自有呈现提案明确推迟了此事:富渲染「应当在至少有两个真实工具和两个真实消费方验证词汇之后,以带标签 render-intent 联合类型的形式回归。」该条件已由多个生产者族,加上 TUI 与宿主/客户端运行时(Web)这些消费方满足。 ## 决策 @@ -62,7 +62,7 @@ terminal 意图只用于展示。harness 仍通过自身的 bash 服务执行命 ## 曾考虑的替代方案 -- **完全删除工具自有的展示**:即[被否决的 collapse 提案](../../rejected/simplification/2026-06-20-generic-tool-rendering.md);其自身的结论正是推迟到两个真实工具和两个真实消费方存在后再做此联合类型,该条件现已满足。 +- **完全删除工具自有的展示**:即本 Agent Note 所取代的那个被否决的 collapse 提案;其自身的结论正是推迟到两个真实工具和两个真实消费方存在后再做此联合类型,该条件现已满足。 - **让 UI 执行 terminal 意图**:否决。这样会绕过 harness 的 bash 策略与归属契约,并把命令执行分裂到不同后端。terminal 卡片描述的是 harness 拥有的执行,绝不授权客户端侧执行。 - **可合并扩展的联合类型**(`ContentBlockMap` 模式):否决。新的渲染意图无论如何需要新的 bridge 代码来渲染,因此一个被 bridge 静默丢弃的插件添加变体,比封闭联合类型在 bridge 的 `assertNever` switch 处引发的编译错误更糟糕。 - **保留可选字段集合**:即「问题」一节所剖析的现状:无效状态可表达、字段交互无文档、且完全无法请求 diff 卡片。 @@ -77,6 +77,6 @@ terminal 意图只用于展示。harness 仍通过自身的 bash 服务执行命 ## 相关 -- 取代[折叠工具拥有的 UI 呈现](../../rejected/simplification/2026-06-20-generic-tool-rendering.md)(已否决——「等两个真实工具和两个真实消费方,然后做带标签 render-intent 联合类型」)中的推迟决定。该条件现已满足;本 Agent Note 即为那个联合类型。 -- 被[结果时已应用 hunk 差异](2026-07-02-result-time-applied-hunk-diffs.md)扩展:后者添加了一个持久化的 `meta` 通道,使 write/edit 在结果时输出 `DiffResultView`(应用后的变更:带上下文行的 contextual hunk / 每个 `replace_all` 位点一个,或创建时的整文件 diff),叠加在本联合类型的调用时 diff 卡片之上。 +- 取代早先被否决的折叠工具自有呈现提案(已否决——「等两个真实工具和两个真实消费方,然后做带标签 render-intent 联合类型」)中的推迟决定。该条件现已满足;本 Agent Note 即为那个联合类型。 +- 被[结果时已应用 hunk 差异](../../archived/architecture/2026-07-02-result-time-applied-hunk-diffs.md)(已归档)扩展:后者添加了一个持久化的 `meta` 通道,使 write/edit 在结果时输出 `DiffResultView`(应用后的变更:带上下文行的 contextual hunk / 每个 `replace_all` 位点一个,或创建时的整文件 diff)——值/呈现拆分与持久化的 `presentationMeta` 通道现由[规范工具输出契约](2026-07-20-canonical-tool-output-contract.md)拥有。 - 将 `ToolTerminal` 折入当前 UI 传输层使用的带标签 `terminal` 视图。 diff --git a/.agents/notes/implemented/process/2026-06-16-pnpm-over-yarn.i18n.yaml b/.agents/notes/implemented/process/2026-06-16-pnpm-over-yarn.i18n.yaml index 6ae4e17a2b..754b592530 100644 --- a/.agents/notes/implemented/process/2026-06-16-pnpm-over-yarn.i18n.yaml +++ b/.agents/notes/implemented/process/2026-06-16-pnpm-over-yarn.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 -2026-06-16-pnpm-over-yarn.md: 9dee405f509897e2a173399e466d574c518fa9ab -2026-06-16-pnpm-over-yarn.zh.md: 3a5ff5e9b1fb0511a9191b2e3c35b61f00b705cd +# pnpm run verify-translation-pairing --write .agents/notes/implemented/process/2026-06-16-pnpm-over-yarn.md +2026-06-16-pnpm-over-yarn.md: 918da1d056dfec73f78d849e08ad06d397e654c0 +2026-06-16-pnpm-over-yarn.zh.md: 4fbb357f689b4a960d0662cbefa5bec30f79bcc1 diff --git a/.agents/notes/implemented/process/2026-06-16-pnpm-over-yarn.md b/.agents/notes/implemented/process/2026-06-16-pnpm-over-yarn.md index 9dee405f50..918da1d056 100644 --- a/.agents/notes/implemented/process/2026-06-16-pnpm-over-yarn.md +++ b/.agents/notes/implemented/process/2026-06-16-pnpm-over-yarn.md @@ -8,7 +8,7 @@ English | [中文](2026-06-16-pnpm-over-yarn.zh.md) The repo shipped on **Yarn 4** with the `node-modules` linker — a deliberately conservative choice that behaves like npm's flat layout while giving us Yarn's workspaces and `yarn constraints`. It worked. But Yarn 4's Plug'n'Play heritage makes the `node-modules` linker the off-the-beaten-path mode, and the broader JS ecosystem — tooling defaults, CI actions, Corepack examples, contributor familiarity — increasingly centers on pnpm. For a repo that is built primarily by agents and read by occasional human contributors, "the package manager most tools and people expect" has real value: fewer surprises, better-trodden failure paths, more copy-pasteable answers. -The switching cost is at its lowest right now. Nothing publishes from this repo yet (every package is `private: true`); dev/test/demo all run **unbuilt** via tsx, so the package manager only has to (a) resolve and link `node_modules`, (b) run the workspace scripts, and (c) enforce the workspace constraints. The one Yarn-specific asset is `yarn.config.cjs` (the `@yarnpkg/types` constraints engine), which is small and mechanical to re-express. This mirrors the reasoning in [the tsdown decision](2026-06-11-tsdown-over-dumble.md): swap a load-bearing tool for the healthier-ecosystem option while the blast radius is still small. +The switching cost is at its lowest right now. Nothing publishes from this repo yet (every package is `private: true`); dev/test/demo all run **unbuilt** via tsx, so the package manager only has to (a) resolve and link `node_modules`, (b) run the workspace scripts, and (c) enforce the workspace constraints. The one Yarn-specific asset is `yarn.config.cjs` (the `@yarnpkg/types` constraints engine), which is small and mechanical to re-express. This mirrors the reasoning in [the tsdown decision](../../archived/process/2026-06-11-tsdown-over-dumble.md): swap a load-bearing tool for the healthier-ecosystem option while the blast radius is still small. ## Decision diff --git a/.agents/notes/implemented/process/2026-06-16-pnpm-over-yarn.zh.md b/.agents/notes/implemented/process/2026-06-16-pnpm-over-yarn.zh.md index 3a5ff5e9b1..4fbb357f68 100644 --- a/.agents/notes/implemented/process/2026-06-16-pnpm-over-yarn.zh.md +++ b/.agents/notes/implemented/process/2026-06-16-pnpm-over-yarn.zh.md @@ -8,7 +8,7 @@ Status: implemented 本仓库最初使用 **Yarn 4** 搭配 `node-modules` 链接器启动。这是一个刻意保守的选择:行为类似 npm 的扁平布局,同时享有 Yarn 的 workspaces 和 `yarn constraints`。它能正常工作。但 Yarn 4 源自 Plug'n'Play 的血统,使得 `node-modules` 链接器成为非主流模式;而更广泛的 JS 生态——工具默认值、CI action、Corepack 示例、贡献者的熟悉度——正日益以 pnpm 为中心。对于一个主要由 agent(智能体)构建、偶尔有人类贡献者阅读的仓库而言,「大多数工具和人所期望的包管理器」具有实际价值:更少的意外、更成熟的故障路径、更多可直接复用的解答。 -切换成本目前处于最低点。本仓库尚无任何包(package)发布(每个包都是 `private: true`);开发/测试/演示全部通过 tsx **未构建**运行,因此包管理器只需做到:(a)解析并链接 `node_modules`,(b)运行 workspace 脚本,(c)强制执行 workspace 约束。唯一的 Yarn 特有资产是 `yarn.config.cjs`(`@yarnpkg/types` 约束引擎),体量小且可机械地重新表达。这与 [tsdown 决策](2026-06-11-tsdown-over-dumble.md)的逻辑一致:在爆炸半径尚小时,将承重工具换为生态更健康的选项。 +切换成本目前处于最低点。本仓库尚无任何包(package)发布(每个包都是 `private: true`);开发/测试/演示全部通过 tsx **未构建**运行,因此包管理器只需做到:(a)解析并链接 `node_modules`,(b)运行 workspace 脚本,(c)强制执行 workspace 约束。唯一的 Yarn 特有资产是 `yarn.config.cjs`(`@yarnpkg/types` 约束引擎),体量小且可机械地重新表达。这与 [tsdown 决策](../../archived/process/2026-06-11-tsdown-over-dumble.md)的逻辑一致:在爆炸半径尚小时,将承重工具换为生态更健康的选项。 ## 决策 diff --git a/.agents/notes/implemented/process/2026-07-06-export-surface-jsdoc-gate.i18n.yaml b/.agents/notes/implemented/process/2026-07-06-export-surface-jsdoc-gate.i18n.yaml index 966ac24d13..8ab5f0a167 100644 --- a/.agents/notes/implemented/process/2026-07-06-export-surface-jsdoc-gate.i18n.yaml +++ b/.agents/notes/implemented/process/2026-07-06-export-surface-jsdoc-gate.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 -2026-07-06-export-surface-jsdoc-gate.md: 93d8a41fc2ffb235de5c56ffeb5569bc95249392 -2026-07-06-export-surface-jsdoc-gate.zh.md: 64b4bcc620046f2c94a2ce3fbeb67e59ada888d4 +# pnpm run verify-translation-pairing --write .agents/notes/implemented/process/2026-07-06-export-surface-jsdoc-gate.md +2026-07-06-export-surface-jsdoc-gate.md: 821f68ebe60eba44cade223b3bc8286e09740956 +2026-07-06-export-surface-jsdoc-gate.zh.md: 6cfa28dc43ae2bdf46ec5d997a1a96d3e308559b diff --git a/.agents/notes/implemented/process/2026-07-06-export-surface-jsdoc-gate.md b/.agents/notes/implemented/process/2026-07-06-export-surface-jsdoc-gate.md index 93d8a41fc2..821f68ebe6 100644 --- a/.agents/notes/implemented/process/2026-07-06-export-surface-jsdoc-gate.md +++ b/.agents/notes/implemented/process/2026-07-06-export-surface-jsdoc-gate.md @@ -6,7 +6,7 @@ English | [中文](2026-07-06-export-surface-jsdoc-gate.zh.md) ## Problem -The [cordis JSDoc completeness gate](2026-07-04-cordis-jsdoc-completeness-gate.md) made undocumented parameters and results impossible on the cordis surface — `interface Events` members and `ctx.` service classes — but that surface is a fraction of what a plugin author imports. The AGENTS.md rule "every export (and non-obvious method) has a JSDoc explaining semantics" stayed prose-checkable only by review everywhere else, and nothing at all asked for `@param`/`@returns` on ordinary exported functions. A survey at adoption found 203 under-documented module-level exports across 34 packages: seam-adjacent helpers (`runBash`, `readForEdit`, `htmlToMarkdown`), format codecs, whole undocumented interfaces and type aliases — exactly the names an IDE consumer hovers. +The [cordis JSDoc completeness gate](../../archived/process/2026-07-04-cordis-jsdoc-completeness-gate.md) made undocumented parameters and results impossible on the cordis surface — `interface Events` members and `ctx.` service classes — but that surface is a fraction of what a plugin author imports. The AGENTS.md rule "every export (and non-obvious method) has a JSDoc explaining semantics" stayed prose-checkable only by review everywhere else, and nothing at all asked for `@param`/`@returns` on ordinary exported functions. A survey at adoption found 203 under-documented module-level exports across 34 packages: seam-adjacent helpers (`runBash`, `readForEdit`, `htmlToMarkdown`), format codecs, whole undocumented interfaces and type aliases — exactly the names an IDE consumer hovers. ## Decision diff --git a/.agents/notes/implemented/process/2026-07-06-export-surface-jsdoc-gate.zh.md b/.agents/notes/implemented/process/2026-07-06-export-surface-jsdoc-gate.zh.md index 64b4bcc620..6cfa28dc43 100644 --- a/.agents/notes/implemented/process/2026-07-06-export-surface-jsdoc-gate.zh.md +++ b/.agents/notes/implemented/process/2026-07-06-export-surface-jsdoc-gate.zh.md @@ -6,7 +6,7 @@ Status: implemented ## 问题 -[Cordis JSDoc 完整性门禁](2026-07-04-cordis-jsdoc-completeness-gate.md)使得 Cordis 表面上的参数和返回值不可能缺少文档——`interface Events` 成员和 `ctx.` 服务类——但这只是插件作者所导入内容的一小部分。AGENTS.md 中的规则「每个导出(以及非显而易见的方法)都必须有解释语义的 JSDoc」在其他地方只能靠评审以行文方式检查,而且没有任何机制要求普通导出函数带 `@param`/`@returns`。采纳时的一次调查发现 34 个包(package)中有 203 个文档不完整的模块级导出:seam 相关辅助函数(`runBash`、`readForEdit`、`htmlToMarkdown`)、格式编解码器、完全无文档的接口和类型别名——恰恰是 IDE 消费方悬停查看的那些名称。 +[Cordis JSDoc 完整性门禁](../../archived/process/2026-07-04-cordis-jsdoc-completeness-gate.md)使得 Cordis 表面上的参数和返回值不可能缺少文档——`interface Events` 成员和 `ctx.` 服务类——但这只是插件作者所导入内容的一小部分。AGENTS.md 中的规则「每个导出(以及非显而易见的方法)都必须有解释语义的 JSDoc」在其他地方只能靠评审以行文方式检查,而且没有任何机制要求普通导出函数带 `@param`/`@returns`。采纳时的一次调查发现 34 个包(package)中有 203 个文档不完整的模块级导出:seam 相关辅助函数(`runBash`、`readForEdit`、`htmlToMarkdown`)、格式编解码器、完全无文档的接口和类型别名——恰恰是 IDE 消费方悬停查看的那些名称。 ## 决策 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 index cd3947fa17..60aaedb22f 100644 --- 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 @@ -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 -2026-06-20-remove-agent-boundary-mirror-events.md: cde4d00fd2b677cf935b286b063f2c6952a5a98c -2026-06-20-remove-agent-boundary-mirror-events.zh.md: 188ea0ca95539bebe864685ed8c4073e4d2014d4 +# 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: 24ac1e32667eb325044f4df583cde509421af3de +2026-06-20-remove-agent-boundary-mirror-events.zh.md: c7bf4fe9cc9ff50deb99527530ee0256fca10cb3 diff --git a/.agents/notes/implemented/simplification/2026-06-20-remove-agent-boundary-mirror-events.md b/.agents/notes/implemented/simplification/2026-06-20-remove-agent-boundary-mirror-events.md index cde4d00fd2..24ac1e3266 100644 --- a/.agents/notes/implemented/simplification/2026-06-20-remove-agent-boundary-mirror-events.md +++ b/.agents/notes/implemented/simplification/2026-06-20-remove-agent-boundary-mirror-events.md @@ -10,7 +10,7 @@ English | [中文](2026-06-20-remove-agent-boundary-mirror-events.zh.md) The original proposal bundled `agent/steering` into the removal; keeping it out kept this Agent Note's scope to boundaries. Each retained event was later removed by its own decision — see - [Stop mirroring the token stream as an agent event](2026-07-02-remove-stream-chunk-mirror.md) + [Stop mirroring the token stream as an agent event](../../archived/simplification/2026-07-02-remove-stream-chunk-mirror.md) and [Remove the `agent/steering` mirror emit](../../archived/simplification/2026-07-04-remove-agent-steering-mirror.md). --> ## Problem @@ -34,12 +34,12 @@ Removed (durable-boundary mirrors — the session log is authoritative for each) RETAINED — NOT durable-boundary mirrors, so out of scope for this decision: - `agent/steering` — not a boundary, so out of scope for THIS decision (the original proposal bundled it into the removal; that would have been scope creep here). It mirrors the durable `steering/message` control record rather than a boundary, and was removed by its own follow-up: [Remove the `agent/steering` mirror emit](../../archived/simplification/2026-07-04-remove-agent-steering-mirror.md). -- `agent/stream-chunk` — the live token stream. Out of scope for THIS decision (a mirror of the durable `assistant/chunk`, not a boundary), it was removed by its own follow-up: [Stop mirroring the token stream as an agent event](2026-07-02-remove-stream-chunk-mirror.md). +- `agent/stream-chunk` — the live token stream. Out of scope for THIS decision (a mirror of the durable `assistant/chunk`, not a boundary), it was removed by its own follow-up: [Stop mirroring the token stream as an agent event](../../archived/simplification/2026-07-02-remove-stream-chunk-mirror.md). - `agent/created`, `agent/disposed`, `agent/status`, `agent/error`, `agent/queued` — lifecycle/control events that are not transcript data. `agent/queued` in particular is an inbox acknowledgement that fires before any durable event exists (cancelled queued work may never enter the log), so it is deliberately live-only. ## Alternatives considered -- **Bundling `agent/steering` into the removal** — the original proposal's shape; narrowed out as scope creep: it mirrors the durable `steering/message` control record, not a boundary, and was removed by [its own later decision](../../archived/simplification/2026-07-04-remove-agent-steering-mirror.md) (as was `agent/stream-chunk`, by [the stream-chunk-mirror Agent Note](2026-07-02-remove-stream-chunk-mirror.md)). +- **Bundling `agent/steering` into the removal** — the original proposal's shape; narrowed out as scope creep: it mirrors the durable `steering/message` control record, not a boundary, and was removed by [its own later decision](../../archived/simplification/2026-07-04-remove-agent-steering-mirror.md) (as was `agent/stream-chunk`, by [the stream-chunk-mirror Agent Note](../../archived/simplification/2026-07-02-remove-stream-chunk-mirror.md)). - **Keeping the turn mirrors for the stdio UI** — [the event-domain-semantics Agent Note](../architecture/2026-06-30-event-domain-semantics.md)'s original stance; rejected here because `dsh-ui-stdio` is a disposable test REPL, not a load-bearing consumer, and it renders boundaries from `session/event` plus its live target object instead. ## Consequences diff --git a/.agents/notes/implemented/simplification/2026-06-20-remove-agent-boundary-mirror-events.zh.md b/.agents/notes/implemented/simplification/2026-06-20-remove-agent-boundary-mirror-events.zh.md index 188ea0ca95..c7bf4fe9cc 100644 --- a/.agents/notes/implemented/simplification/2026-06-20-remove-agent-boundary-mirror-events.zh.md +++ b/.agents/notes/implemented/simplification/2026-06-20-remove-agent-boundary-mirror-events.zh.md @@ -10,7 +10,7 @@ Status: implemented “范围:移除什么、不移除什么”)。原始提案将 `agent/steering` 与其他项一并 移除;把它排除在外,使本 Agent Note 的范围保持在边界上。后来每个保留事件 都由各自的决策移除——参见 - [停止将 token 流镜像为 agent 事件](2026-07-02-remove-stream-chunk-mirror.md) + [停止将 token 流镜像为 agent 事件](../../archived/simplification/2026-07-02-remove-stream-chunk-mirror.md) 和[移除 `agent/steering` 镜像 emit](../../archived/simplification/2026-07-04-remove-agent-steering-mirror.md)。 --> ## 问题 @@ -34,12 +34,12 @@ Status: implemented 保留——不是持久边界镜像,因此不在本决策范围内: - `agent/steering`——不是边界,因此不在本决策范围内(原始提案将其一并移除;在此会造成范围蔓延)。它镜像持久的 `steering/message` 控制记录,而非边界,后来由自己的后续决策移除:[移除 `agent/steering` 镜像 emit](../../archived/simplification/2026-07-04-remove-agent-steering-mirror.md)。 -- `agent/stream-chunk`——实时 token 流。不在本决策范围内(它镜像持久的 `assistant/chunk`,而非边界),后来由自己的后续决策移除:[停止将 token 流镜像为 agent 事件](2026-07-02-remove-stream-chunk-mirror.md)。 +- `agent/stream-chunk`——实时 token 流。不在本决策范围内(它镜像持久的 `assistant/chunk`,而非边界),后来由自己的后续决策移除:[停止将 token 流镜像为 agent 事件](../../archived/simplification/2026-07-02-remove-stream-chunk-mirror.md)。 - `agent/created`、`agent/disposed`、`agent/status`、`agent/error`、`agent/queued`——不属于 transcript 数据的生命周期/控制事件。尤其是 `agent/queued`,它是在任何持久事件存在之前触发的 inbox 确认(取消的排队工作可能永远不会进入日志),所以有意只保留为实时事件。 ## 曾考虑的替代方案 -- **将 `agent/steering` 一并移除**——原始提案的形状;作为范围蔓延被排除:它镜像持久的 `steering/message` 控制记录,而非边界,后来由[自己的决策](../../archived/simplification/2026-07-04-remove-agent-steering-mirror.md)移除(`agent/stream-chunk` 也由[流分片镜像 Agent Note](2026-07-02-remove-stream-chunk-mirror.md)移除)。 +- **将 `agent/steering` 一并移除**——原始提案的形状;作为范围蔓延被排除:它镜像持久的 `steering/message` 控制记录,而非边界,后来由[自己的决策](../../archived/simplification/2026-07-04-remove-agent-steering-mirror.md)移除(`agent/stream-chunk` 也由[流分片镜像 Agent Note](../../archived/simplification/2026-07-02-remove-stream-chunk-mirror.md)移除)。 - **为 stdio UI 保留轮次镜像**——[事件域语义 Agent Note](../architecture/2026-06-30-event-domain-semantics.md) 的原始立场;在此否决,因为 `dsh-ui-stdio` 是可随时丢弃的测试 REPL,而非承载关键约束的消费方,并且它改为根据 `session/event` 加自己的实时目标对象渲染边界。 ## 后果 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 bf44db6bee..884682f4f9 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 @@ -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 -2026-06-20-discover-package-inventory.md: 50e42686cea48985dedc7fa290e06bc959ecc5d4 -2026-06-20-discover-package-inventory.zh.md: dc79162dd3ec5ba2bf3225fc8e9d44c552a514cb +# pnpm run verify-translation-pairing --write .agents/notes/proposed/process/2026-06-20-discover-package-inventory.md +2026-06-20-discover-package-inventory.md: 7de865e43f87f0e41fad43b3786b9825509e9d50 +2026-06-20-discover-package-inventory.zh.md: 00195981a1f8036121e3895a0ff8ac342f54dff9 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 50e42686ce..7de865e43f 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, CI prose, and Knip overrides. Most restate package layout, manifest data, or aggregate command contents. Each new package therefore creates avoidable synchronization points. -The [package hierarchy](../../implemented/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. 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. 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 dc79162dd3..00195981a1 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 包(package)与门禁清单在 TypeScript project references、包文档、CI 描述和 Knip 覆盖项中反复出现。大多数只是重述包布局、manifest(元数据清单)数据或聚合命令内容。因此每新增一个包都会产生本可避免的同步点。 -[包层级结构](../../implemented/architecture/2026-06-20-package-hierarchy.md)已经手动消除了其中若干:`scripts/publint-all.ts` 现在从 `packages//` 布局推导列表,两份 `tsconfig` 的 `paths` 映射也合并为一个 `@deepseek-ai/dsh-*` 通配符。剩下的是无法用 glob 消除的清单,主要是聚合配置(`tsconfig.host.json`、`tsconfig.client.json`)的 project `references`——TypeScript 要求它们是显式数组(没有通配符形式)。 +[包层级结构](../../archived/architecture/2026-06-20-package-hierarchy.md)已经手动消除了其中若干:`scripts/publint-all.ts` 现在从 `packages//` 布局推导列表,两份 `tsconfig` 的 `paths` 映射也合并为一个 `@deepseek-ai/dsh-*` 通配符。剩下的是无法用 glob 消除的清单,主要是聚合配置(`tsconfig.host.json`、`tsconfig.client.json`)的 project `references`——TypeScript 要求它们是显式数组(没有通配符形式)。 当静态列表编码的是策略时,它们是合理的;当它们只是重复 `package.json`、workspace glob 或包层级结构中已有的 manifest 数据或布局事实时,就是不必要的摩擦。 diff --git a/.agents/notes/rejected/architecture/2026-06-11-immutable-public-surfaces.i18n.yaml b/.agents/notes/rejected/architecture/2026-06-11-immutable-public-surfaces.i18n.yaml deleted file mode 100644 index 6201a380e7..0000000000 --- a/.agents/notes/rejected/architecture/2026-06-11-immutable-public-surfaces.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write -2026-06-11-immutable-public-surfaces.md: c9009ad923720efaecb25e2017ceab6e3eb0dbf4 -2026-06-11-immutable-public-surfaces.zh.md: 4ef67734d712e538c5858fbc05efbc6dd983c704 diff --git a/.agents/notes/rejected/architecture/2026-06-11-immutable-public-surfaces.md b/.agents/notes/rejected/architecture/2026-06-11-immutable-public-surfaces.md deleted file mode 100644 index c9009ad923..0000000000 --- a/.agents/notes/rejected/architecture/2026-06-11-immutable-public-surfaces.md +++ /dev/null @@ -1,29 +0,0 @@ -# Agent Note: Deep-readonly public surfaces - -Status: rejected — the pervasive `DeepReadonly` type flip is replaced by source-owned runtime immutability in `Session` plus relational development assertions. See [source-owned session immutability and dev-mode invariants](../../implemented/architecture/2026-06-11-dev-invariants-over-deep-readonly.md). - -English | [中文](2026-06-11-immutable-public-surfaces.zh.md) - -## Problem - -The rejected proposal targeted an ownership hole that a `readonly SessionEvent[]` type alone cannot close: its elements remain mutable at runtime, so a cast or plain JavaScript can rewrite nested history. The implemented design closes that hole in `Session` by materializing and deep-freezing every accepted event and returning frozen array snapshots. In-flight prompt waterfalls remain intentionally transformable, so immutability is an ownership boundary rather than a blanket type rule. - -## Proposal - -> **Implemented differently — see the Status line and [source-owned session immutability and dev-mode invariants](../../implemented/architecture/2026-06-11-dev-invariants-over-deep-readonly.md).** The `DeepReadonly` design below is rejected as written: it is compile-only, noisy across consumers, and castable. `Session` instead snapshots and deep-freezes accepted events and public log snapshots in every composition; `deriveMessages()` returns detached frozen projections; the development plugin checks cross-record and cross-seam relationships. - -Make immutability part of the type where mutation is corruption: - -- `SessionEvent` data becomes `DeepReadonly` on the way OUT of a session (`events`, `session/event` listeners); `append()` keeps taking plain mutable input. A `DeepReadonly` utility type lands in dsh-llm next to the brand/never helpers. -- `deriveMessages()` returns deep-readonly messages; the loop clones before handing a mutable request to the `agent/request` waterfall (mutation there is sanctioned — the clone makes the boundary explicit and cheap, once per step). -- `PromptAssembly` stays mutable through its waterfall (sanctioned) but the registry's internal section list is cloned per assembly (already true). - -## Plan - -Introduce `DeepReadonly`, flip the session read paths, and fix the resulting compile errors in consumers. - -## Risks - -`DeepReadonly` types can produce noisy errors at waterfall boundaries where mutation IS the API — keep the mutable/readonly boundary exactly at "logged vs in-flight" and document it in the session README. - - diff --git a/.agents/notes/rejected/architecture/2026-06-11-immutable-public-surfaces.zh.md b/.agents/notes/rejected/architecture/2026-06-11-immutable-public-surfaces.zh.md deleted file mode 100644 index 4ef67734d7..0000000000 --- a/.agents/notes/rejected/architecture/2026-06-11-immutable-public-surfaces.zh.md +++ /dev/null @@ -1,29 +0,0 @@ -# Agent Note: 深度只读的公开接口 - -Status: rejected — 普遍采用 `DeepReadonly` 的类型翻转已由 `Session` 中归属源的运行时不可变性与关系型开发断言取代。见[归属源的会话不可变性与开发模式不变式](../../implemented/architecture/2026-06-11-dev-invariants-over-deep-readonly.md)。 - -[English](2026-06-11-immutable-public-surfaces.md) | 中文 - -## 问题 - -被否决的提案针对的是一个所有权漏洞:仅靠 `readonly SessionEvent[]` 类型无法封堵该漏洞,因为其元素在运行时仍然可变,类型强制转换或纯 JavaScript 代码可以改写嵌套的历史记录。已实现的设计在 `Session` 中封堵了这一漏洞:对每个被接受的事件进行物化并深度冻结,返回冻结的数组快照。进行中的提示词 waterfall(瀑布式事件)有意保持可变换,因此不可变性是一条所有权边界,而非一条全局类型规则。 - -## 提案 - -> **实际采用了不同的实现方式——见 Status 行与[源拥有的会话不可变性与开发模式不变式](../../implemented/architecture/2026-06-11-dev-invariants-over-deep-readonly.md)。** 下文的 `DeepReadonly` 设计已被否决:它仅在编译期生效、对消费方噪音大、且可被强制转换绕过。`Session` 改为在每次组合中对已接受的事件和公开日志快照进行快照与深度冻结;`deriveMessages()` 返回分离的冻结投影;开发插件检查跨记录与跨 seam 的关系。 - -在类型层面为「突变即损坏」的场景引入不可变性: - -- `SessionEvent` 数据在从会话输出时(`events`、`session/event` 监听器)变为 `DeepReadonly`;`append()` 仍接受普通可变输入。一个 `DeepReadonly` 工具类型放在 dsh-llm 中,与 brand/never 辅助类型相邻。 -- `deriveMessages()` 返回深度只读的消息;agent loop(智能体循环)在将可变请求交给 `agent/request` waterfall 之前先克隆(该处的突变是被允许的——克隆使边界显式且代价低廉,每个步骤仅一次)。 -- `PromptAssembly` 在其 waterfall 流经期间保持可变(被允许),但注册表内部的 section 列表在每次组装时被克隆(已有此行为)。 - -## 计划 - -引入 `DeepReadonly`,翻转会话的读取路径,并修复消费方中由此产生的编译错误。 - -## 风险 - -`DeepReadonly` 类型在 waterfall 边界处(突变本身就是 API 的地方)可能产生噪音较大的错误。应将可变/只读边界精确地划在「已记录 vs 进行中」,并在会话 README 中加以说明。 - - diff --git a/.agents/notes/rejected/simplification/2026-06-20-generic-tool-rendering.i18n.yaml b/.agents/notes/rejected/simplification/2026-06-20-generic-tool-rendering.i18n.yaml deleted file mode 100644 index 14c7033185..0000000000 --- a/.agents/notes/rejected/simplification/2026-06-20-generic-tool-rendering.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write -2026-06-20-generic-tool-rendering.md: a9ceb7a0e016b57295e3226e98a7fce51e49c21f -2026-06-20-generic-tool-rendering.zh.md: 553c1caa23ed34eea5f113372d12a7381dc2488a diff --git a/.agents/notes/rejected/simplification/2026-06-20-generic-tool-rendering.md b/.agents/notes/rejected/simplification/2026-06-20-generic-tool-rendering.md deleted file mode 100644 index a9ceb7a0e0..0000000000 --- a/.agents/notes/rejected/simplification/2026-06-20-generic-tool-rendering.md +++ /dev/null @@ -1,37 +0,0 @@ -# Agent Note: Collapse tool-owned UI presentation - -Status: rejected — TUI and the Web host/client runtime consume the tagged render-intent union, so tool-owned presentation remains current even though ACP no longer projects it. - -English | [中文](2026-06-20-generic-tool-rendering.zh.md) - -## Problem - -The optional-field bag and ACP editor mapping below were the proposal-time context for this rejection. The current contracts live in [the tagged render-intent union](../../implemented/architecture/2026-07-02-tool-render-intent-union.md) and [automation-only ACP](../../implemented/simplification/2026-07-23-acp-automation-only-protocol.md). - -Tools could define `presentCall()` and `presentResult()` callbacks that returned `ToolCallPresentation`, `ToolResultPresentation`, and optional `ToolTerminal` fields. The code itself flagged the design as muddy: title, kind, raw input, content, terminal cwd, terminal output, exit code, and signal had grown incrementally into a bag of optional fields. ACP then maintained pending call state to pair a result with the original args, created replay-only presenters on `session/load`, and mapped terminal subfields into Zed-specific `_meta`. `dsh-tool-bash` even parsed exit status back out of rendered text because the pure replay-safe presenter no longer had the structured `BashRunResult`. - -The real first-party use was bash presentation for ACP. That was too little evidence to freeze a cross-package UI presentation API. - -## Proposal - -Remove tool-owned UI presentation callbacks for now. The canonical tool events already carry the tool name, raw argument string, result content, and error state. UIs render a generic tool card from those fields. Tool-specific rich rendering can return later as a tagged render-intent union after there are at least two real tools and two real consumers to validate the vocabulary. - -## Alternatives considered - -As a smaller alternative, replace the current optional-field bag with one explicit union in a single PR; but if the goal is simplification, the stronger move is to delete the callbacks and keep the generic path. - -## Acceptance criteria - -- `ToolDefinition` drops `presentCall` and `presentResult`. -- `ToolCallPresentation`, `ToolResultPresentation`, `ToolTerminal`, and `ToolCallKind` disappear unless a minimal generic UI type still needs one. -- ACP no longer keeps presenter pending state or calls tool callbacks during live streaming/load replay. -- `dsh-tool-bash` no longer parses rendered text to recover exit status for a UI pill. -- Snapshot expected outputs show generic tool cards and text results. - -## What we give up - -Under this proposal, Bash would lose its custom terminal-looking card and model-written description placement. The fallback would remain reasonable: the command would appear as tool input, and the output as text. Rich rendering would be designed when the product had enough UI/tool variety to justify a stable presentation contract. - -## Related - -The later [tagged render-intent union](../../implemented/architecture/2026-07-02-tool-render-intent-union.md) implements the smaller alternative once multiple producer and consumer families provide enough evidence for the vocabulary. [Automation-only ACP](../../implemented/simplification/2026-07-23-acp-automation-only-protocol.md) removes ACP's editor projection without removing tool-owned presentation from TUI or the Web host/client runtime. diff --git a/.agents/notes/rejected/simplification/2026-06-20-generic-tool-rendering.zh.md b/.agents/notes/rejected/simplification/2026-06-20-generic-tool-rendering.zh.md deleted file mode 100644 index 553c1caa23..0000000000 --- a/.agents/notes/rejected/simplification/2026-06-20-generic-tool-rendering.zh.md +++ /dev/null @@ -1,37 +0,0 @@ -# Agent Note: 收拢工具自有的 UI 展示逻辑 - -Status: rejected — 尽管 ACP(Agent Client Protocol)已不再投影这套契约,TUI 与 Web 宿主/客户端运行时仍消费带标签 render-intent 联合类型,因此工具自有的展示仍然有效。 - -[English](2026-06-20-generic-tool-rendering.md) | 中文 - -## 问题 - -下文所述的可选字段集合与 ACP 的编辑器映射,是本提案遭否决时的背景。当前契约分别由[带标签 render-intent 联合类型](../../implemented/architecture/2026-07-02-tool-render-intent-union.md)与[ACP 作为仅面向自动化的协议](../../implemented/simplification/2026-07-23-acp-automation-only-protocol.md)承载。 - -当时,工具可以定义 `presentCall()` 和 `presentResult()` 回调,返回 `ToolCallPresentation`、`ToolResultPresentation` 以及可选的 `ToolTerminal` 字段。代码本身就标记了这个设计的混乱:title、kind、raw input、content、terminal cwd、terminal output、exit code 和 signal 已经逐步增长为一堆可选字段。ACP 随后维护 pending call 状态以将 result 与原始 args 配对,在 `session/load` 时创建仅用于回放的 presenter,并将 terminal 子字段映射为 Zed 特有的 `_meta`。`dsh-tool-bash` 甚至从渲染后的文本中反向解析退出状态,因为纯回放安全的 presenter 已经拿不到结构化的 `BashRunResult`。 - -当时,真正的第一方用途是为 ACP 提供 bash 展示。这点证据不足以作为冻结一个跨包(package)UI 展示 API 的依据。 - -## 提案 - -暂时移除工具自有的 UI 展示回调。规范的工具事件已经携带工具名、原始参数字符串、结果内容和错误状态。UI 从这些字段渲染一个通用的工具卡片。工具特有的富展示可以在至少有两个真实工具和两个真实消费方来验证词汇之后,以带标签的 render-intent union 形式回归。 - -## 曾考虑的替代方案 - -作为更小的替代方案,可以在一个 PR(Pull Request)中将当前的可选字段集合替换为一个显式 union;但如果目标是简化,更彻底的做法是删除回调、保留通用路径。 - -## 验收标准 - -- `ToolDefinition` 移除 `presentCall` 和 `presentResult`。 -- `ToolCallPresentation`、`ToolResultPresentation`、`ToolTerminal` 和 `ToolCallKind` 消失,除非一个最小的通用 UI 类型仍需要其中之一。 -- ACP 不再维护 presenter pending 状态,也不再在实时流式输出/加载回放期间调用工具回调。 -- `dsh-tool-bash` 不再解析渲染文本来恢复退出状态以供 UI pill 使用。 -- 快照预期输出展示通用工具卡片和文本结果。 - -## 放弃了什么 - -如果采用本提案,Bash 会失去其自定义的终端风格卡片和模型生成描述的放置位置。届时,回退方案仍然合理:命令会作为工具输入展示,输出会作为文本展示。只有当产品拥有足够的 UI/工具多样性、足以支撑一份稳定的展示契约时,才会设计富展示。 - -## 相关 - -后续的[带标签 render-intent 联合类型](../../implemented/architecture/2026-07-02-tool-render-intent-union.md)在多类生产者与消费方为这套词汇提供充分依据后,实现了较小的替代方案。[ACP 作为仅面向自动化的协议](../../implemented/simplification/2026-07-23-acp-automation-only-protocol.md)移除了 ACP 的编辑器投影,但没有从 TUI 或 Web 宿主/客户端运行时中移除工具自有的展示。 diff --git a/.agents/notes/rejected/simplification/2026-06-20-retire-mid-turn-steering.i18n.yaml b/.agents/notes/rejected/simplification/2026-06-20-retire-mid-turn-steering.i18n.yaml deleted file mode 100644 index 3ca6a50ef7..0000000000 --- a/.agents/notes/rejected/simplification/2026-06-20-retire-mid-turn-steering.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write -2026-06-20-retire-mid-turn-steering.md: a8812b3222739244d77f4d4dab60cf7c0cd6907d -2026-06-20-retire-mid-turn-steering.zh.md: 81a211a167daeb8c57b98f2a1c1451dbc54d09e4 diff --git a/.agents/notes/rejected/simplification/2026-06-20-retire-mid-turn-steering.md b/.agents/notes/rejected/simplification/2026-06-20-retire-mid-turn-steering.md deleted file mode 100644 index a8812b3222..0000000000 --- a/.agents/notes/rejected/simplification/2026-06-20-retire-mid-turn-steering.md +++ /dev/null @@ -1,37 +0,0 @@ -# Agent Note: Retire mid-turn steering - -Status: rejected — mid-turn steering is an intentional agent capability for between-step user/plugin input and future goal/loop workflows. It is complexity with a product direction, not an accidental duplicate of `send()`. - -English | [中文](2026-06-20-retire-mid-turn-steering.zh.md) - -## Problem - -The agent exposes two user-message paths that look close but have different lifecycle semantics: `send()` queues a normal user turn, while `steer()` injects a message between steps of the currently running turn and falls back to `send()` when idle. That distinction leaks through the whole stack: `Agent.steer()` is public API, the session log has a durable `steering/message` event, the agent event taxonomy has `agent/steering`, the loop maintains a steering FIFO beside the queued-message FIFO, cancellation clears both queues, and `deriveMessages()` has to render steering as a tagged synthetic user message rather than a normal prompt. - -The continuation seam amplifies the cost. `agent/turn-continuation` defaults to `hadToolCalls || steeringInjected`, so a same-turn steering message can force the loop to call the model again even if the model did not ask for tools. The comments name future `/goal`, `/loop`, and budget-guard uses, but the current repo has no production listener; only tests register the waterfall. Separately, the only production UI that calls `steer()` is the stdio demo. ACP already sends prompts through the ordinary queue while a turn is running. - -## Proposal - -Delete mid-turn user steering for now. `Agent.send()` becomes the single public way to submit user content; when the agent is running, the content waits for the next turn. The loop continues within a turn only for tool calls, not because a user typed while a step was running. A caller that wants to interrupt the current turn uses `cancel()` and then `send()`. - -Remove `Agent.steer()`, the steering FIFO, `steering/message`, `agent/steering`, steering-derived continuation, and the cancellation logic that distinguishes queued messages from steering messages. Remove `agent/turn-continuation` in the same change unless the implementing PR discovers a production listener; without steering, the current repo has no concrete continuation consumer left. If a real budget or goal plugin later needs forced continuation, it should reintroduce a narrower seam with that plugin as the concrete consumer. - -## Acceptance criteria - -- `Agent` exposes one user-message entry point, `send()`. -- The durable session event vocabulary no longer contains `steering/message`. -- `deriveMessages()` renders normal user messages and context injections, with no steering tag path. -- The loop has one queued-message FIFO and no same-turn user-message continuation path. -- `agent/turn-continuation` is removed or narrowed to a named production consumer. -- The stdio UI and docs describe input while running as queued next-turn input. -- The session format version and recorded fixtures are refreshed; non-current stored logs are rejected per the pre-release format policy. - -## What we give up - -A user cannot add same-turn steering content while a model is between tool steps. That behavior is useful in theory for "while you are already working, also consider X", but it is not the behavior ACP exposes today and it makes the turn boundary much harder to reason about. The simpler behavior is reasonable: user input becomes the next prompt, and cancellation remains the explicit tool for replacing in-flight work. - -## Related - -This pairs naturally with [dropping durable step boundaries](2026-06-20-drop-durable-step-boundaries.md), because removing same-turn steering and `agent/turn-continuation` leaves tool calls as the only reason a turn contains multiple model steps. - - diff --git a/.agents/notes/rejected/simplification/2026-06-20-retire-mid-turn-steering.zh.md b/.agents/notes/rejected/simplification/2026-06-20-retire-mid-turn-steering.zh.md deleted file mode 100644 index 81a211a167..0000000000 --- a/.agents/notes/rejected/simplification/2026-06-20-retire-mid-turn-steering.zh.md +++ /dev/null @@ -1,37 +0,0 @@ -# Agent Note: 移除轮次中途引导 - -Status: rejected — 轮次中途 steering(中途引导)是一项有意设计的 agent(智能体)能力,用于接收步骤之间的用户/插件输入以及未来的 goal/loop 工作流。它是面向产品方向的复杂度,而非 `send()` 的意外重复。 - -[English](2026-06-20-retire-mid-turn-steering.md) | 中文 - -## 问题 - -agent 暴露了两条用户消息路径,外观相近但生命周期语义不同:`send()` 将一条普通用户轮次排入队列,而 `steer()` 在当前运行轮次的步骤之间注入一条消息,空闲时则回退为 `send()`。这一区分贯穿整个栈:`Agent.steer()` 是公开 API;会话日志有持久化的 `steering/message` 事件;agent 事件分类体系有 `agent/steering`;agent loop(智能体循环)在排队消息 FIFO 之外还维护一个 steering FIFO;取消操作需要清空两个队列;`deriveMessages()` 必须将 steering 渲染为带标签的合成用户消息,而非普通提示词。 - -续行 seam 进一步放大了成本。`agent/turn-continuation` 默认条件为 `hadToolCalls || steeringInjected`,因此同一轮次内的 steering 消息即使模型未请求工具调用,也会强制循环再次调用模型。注释中提到了未来 `/goal`、`/loop` 和预算守卫的用途,但当前仓库没有生产级监听器;只有测试注册了该 waterfall(瀑布式事件)。另外,唯一调用 `steer()` 的生产 UI 是 stdio 演示。ACP(Agent Client Protocol)在轮次运行期间已经通过普通队列发送提示词。 - -## 提案 - -暂时删除轮次中途的用户 steering。`Agent.send()` 成为提交用户内容的唯一公开方式;当 agent 正在运行时,内容等待下一个轮次。循环仅因工具调用而在轮次内继续,不因用户在某个步骤运行期间输入内容而继续。调用方若要中断当前轮次,使用 `cancel()` 后再 `send()`。 - -移除 `Agent.steer()`、steering FIFO、`steering/message`、`agent/steering`、由 steering 驱动的续行逻辑,以及取消操作中区分排队消息与 steering 消息的逻辑。除非实现 PR(Pull Request)发现了生产级监听器,否则在同一变更中一并移除 `agent/turn-continuation`;没有 steering 后,当前仓库不再有具体的续行消费方。如果将来真正的预算或目标插件需要强制续行,应以该插件为具体消费方重新引入一个更窄的 seam。 - -## 验收标准 - -- `Agent` 暴露唯一的用户消息入口 `send()`。 -- 持久化会话事件词汇不再包含 `steering/message`。 -- `deriveMessages()` 渲染普通用户消息和上下文注入,不存在 steering 标签路径。 -- 循环只有一个排队消息 FIFO,没有同轮次用户消息续行路径。 -- `agent/turn-continuation` 被移除,或收窄到有具名的生产级消费方。 -- stdio UI 和文档将运行期间的输入描述为「排入下一轮次的输入」。 -- 会话格式版本和已录制的 fixture(测试前置数据)已刷新;非当前版本的存储日志按预发布格式策略被拒绝。 - -## 放弃了什么 - -用户无法在模型处于工具步骤之间时添加同轮次 steering 内容。这种行为在理论上对「你已经在工作了,也考虑一下 X」的场景有用,但它不是 ACP 当前暴露的行为,且使轮次边界更难推理。更简单的行为是合理的:用户输入成为下一条提示词,取消操作仍是替换进行中工作的显式手段。 - -## 相关 - -本提案与[移除持久化步骤边界](2026-06-20-drop-durable-step-boundaries.md)天然配对,因为移除同轮次 steering 和 `agent/turn-continuation` 后,工具调用成为一个轮次包含多个模型步骤的唯一原因。 - - diff --git a/.agents/notes/rejected/simplification/2026-06-20-single-session-acp-bridge.i18n.yaml b/.agents/notes/rejected/simplification/2026-06-20-single-session-acp-bridge.i18n.yaml deleted file mode 100644 index 66138d0995..0000000000 --- a/.agents/notes/rejected/simplification/2026-06-20-single-session-acp-bridge.i18n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each -# side as of the last confirmed-consistent state. Both languages carry equal authority; -# after editing either side, bring the other along and re-record with: -# pnpm run verify-translation-pairing --write -2026-06-20-single-session-acp-bridge.md: e99de76854390a0979d1b66866d1d48aacbc0036 -2026-06-20-single-session-acp-bridge.zh.md: 660e4ccf6f2fba8672315bfed30872870f401554 diff --git a/.agents/notes/rejected/simplification/2026-06-20-single-session-acp-bridge.md b/.agents/notes/rejected/simplification/2026-06-20-single-session-acp-bridge.md deleted file mode 100644 index e99de76854..0000000000 --- a/.agents/notes/rejected/simplification/2026-06-20-single-session-acp-bridge.md +++ /dev/null @@ -1,31 +0,0 @@ -# Agent Note: Return the ACP bridge to one live session per connection - -Status: rejected — Zed is the current target ACP client and its ACP implementation is explicitly multi-session: it stores live sessions in a `HashMap`, tracks `pending_sessions`, joins concurrent loads for the same id, and tests close-during-load behavior. - -English | [中文](2026-06-20-single-session-acp-bridge.zh.md) - -## Problem - -The ACP bridge now supports multiple live sessions on one JSON-RPC connection. That capability brings multi-entry session maps, reverse session/agent lookups, per-session prompt state, loading ids, demux for every event, cross-session teardown, and isolation concerns for future permission prompts and background tasks. The older [multi-session ACP proposal](../../implemented/feature/2026-06-14-acp-multi-session.md) still tracks the unfinished permission-ownership piece; this Agent Note is the competing simplification path. - -The product target has proven it needs concurrent editor conversations over one harness process: Zed's ACP connection owns multiple sessions and load states. The snapshot replay tier still avoids concurrent model streams because its replay entries are positional; that is a test-fixture limitation, not a reason to remove bridge multiplexing. - -## Proposal - -Scope ACP back to one live session per connection. `session/new` or `session/load` creates the only session record; a second live session request is rejected until the existing session is disposed or the connection closes. If editors need multiple chat tabs, they can launch multiple agent subprocesses until the bridge has a concrete multi-session UX and permission model. - -Remove the multi-session maps and demux where a single `SessionRecord | undefined` is enough. The bridge can still keep the agent/session lifecycle seams that make disposal correct; the simplification is only about multiplexing more than one active session through the same transport. - -## Acceptance criteria - -- ACP has one active session record per connection. -- `session/new` and `session/load` reject while that record exists. -- Event handlers no longer demux across a `Map`. -- Multi-session tests are removed or moved under the proposal that continues to defend multiplexing. -- The existing [multi-session ACP proposal](../../implemented/feature/2026-06-14-acp-multi-session.md) is updated to link this Agent Note and remains the live direction. - -## What we give up - -An ACP client cannot host several concurrent conversations on one server process. That is a meaningful capability cut. The simpler model is still reasonable for an unreleased harness: one editor conversation maps to one agent process, and cross-session permission/background-task isolation stops being a live correctness burden. - - diff --git a/.agents/notes/rejected/simplification/2026-06-20-single-session-acp-bridge.zh.md b/.agents/notes/rejected/simplification/2026-06-20-single-session-acp-bridge.zh.md deleted file mode 100644 index 660e4ccf6f..0000000000 --- a/.agents/notes/rejected/simplification/2026-06-20-single-session-acp-bridge.zh.md +++ /dev/null @@ -1,31 +0,0 @@ -# Agent Note: 将 ACP(Agent Client Protocol)桥接恢复为每连接一个活跃会话 - -Status: rejected — Zed 是当前目标 ACP 客户端,其 ACP 实现明确支持多会话:它把活跃会话存入 `HashMap`,跟踪 `pending_sessions`,合并同一 id 的并发加载,并测试加载期间关闭的行为。 - -[English](2026-06-20-single-session-acp-bridge.md) | 中文 - -## 问题 - -ACP 桥接现在支持在一条 JSON-RPC 连接上承载多个活跃会话。这一能力带来了多条目会话映射、反向会话/agent(智能体)查找、逐会话的提示词状态、加载中 id、每条事件的解复用、跨会话拆除,以及未来权限提示与后台任务的隔离问题。较早的[多会话 ACP 提案](../../implemented/feature/2026-06-14-acp-multi-session.md)仍在追踪未完成的权限归属部分;本 Agent Note(agent 决策记录)是与之竞争的简化路径。 - -产品目标已经证明它需要在一个 harness 进程上承载并发的编辑器对话:Zed 的 ACP 连接拥有多个会话和加载状态。快照回放层仍然避免并发模型流,因为其回放条目是位置相关的;这是测试 fixture(测试前置数据)的局限,而非移除桥接多路复用的理由。 - -## 提案 - -将 ACP 的范围收回到每连接一个活跃会话。`session/new` 或 `session/load` 创建唯一的会话记录;在现有会话被 dispose(资源释放)或连接关闭之前,第二个活跃会话请求将被拒绝。如果编辑器需要多个聊天标签页,可以启动多个 agent 子进程,直到桥接具备具体的多会话 UX 和权限模型。 - -移除多会话映射和解复用逻辑,改用单一的 `SessionRecord | undefined` 即可。桥接仍可保留使 dispose 正确的 agent/会话生命周期 seam;简化仅针对在同一传输层上多路复用多个活跃会话这一点。 - -## 验收标准 - -- ACP 每连接只有一条活跃会话记录。 -- 当该记录存在时,`session/new` 和 `session/load` 拒绝请求。 -- 事件处理器不再在 `Map` 上做解复用。 -- 多会话测试被移除,或移至继续支持多路复用的提案下。 -- 既有的[多会话 ACP 提案](../../implemented/feature/2026-06-14-acp-multi-session.md)更新为链接本 Agent Note,并继续作为当前方向。 - -## 放弃了什么 - -ACP 客户端无法在一个服务器进程上承载多个并发对话。这是一项有实质意义的能力削减。对于一个尚未发布的 harness 而言,更简单的模型仍然合理:一个编辑器对话对应一个 agent 进程,跨会话的权限/后台任务隔离不再是活跃的正确性负担。 - - 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 082ac040e9..77d5ca3489 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 @@ -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 -2026-07-26-dependency-swaps-rejected-by-nih-audit.md: 9cdb061bf21a7b9ce4747b9022c65d60e9644e0d -2026-07-26-dependency-swaps-rejected-by-nih-audit.zh.md: 9648af149c0c517eba372baa12877240f9289aac +# 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: 5ef6629500171d3de2add070b0797d2c2d9b119a +2026-07-26-dependency-swaps-rejected-by-nih-audit.zh.md: a11c593cdb056477689ad6e3e86d9d5c32a206a4 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 9cdb061bf2..5ef6629500 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 @@ -41,7 +41,7 @@ Adopt the following dependency swaps. Rejected — per-item evidence below; a fu - **`write-file-atomic` for fs-local/storage-json atomic writes**: the packages lack the private 0700 staging dir, Win32 DACL copy/`ReplaceFileW`, AbortSignal support, and parent-dir fsync — each the point of the hand-roll. The koffi Win32 bindings themselves are justified by the [Windows durable-publish note](../../implemented/architecture/2026-07-05-windows-jsonl-durable-publish.md). - **`fzstd`/native zstd packages for JSONL frame scanning**: `node:zlib`'s builtin zstd already does the compression ([zstd note](../../implemented/architecture/2026-07-19-zstandard-jsonl-session-logs.md), which explicitly rejected an external native dependency); the remaining `scanZstdFrames` locates RFC 8878 frame boundaries *without decompressing* for torn-tail repair, which no package exposes. -- **`picomatch`/`tinyglobby`/`ignore` for fs search**: no glob engine exists — both discovery tools shell out to ripgrep per the [bash-backed discovery note](../../implemented/feature/2026-07-09-bash-backed-grep-glob-discovery.md). +- **`picomatch`/`tinyglobby`/`ignore` for fs search**: no glob engine exists — both discovery tools shell out to ripgrep per the [bash-backed discovery note](../../archived/feature/2026-07-09-bash-backed-grep-glob-discovery.md). - **`istextorbinary`/`chardet` for text detection**: the hand-roll is a ~15-line NUL-sample plus fatal `TextDecoder`; heuristic packages are larger and would change which files the model can read (model-visible `FS_NOT_TEXT` drift). - **`shell-quote` for POSIX single-quoting**: two 1-line quoting helpers with exhaustive tests versus a maintenance-mode package with a CVE history and different escaping output — a safety boundary is the wrong place to save one line. - **`strip-ansi` for pty sanitization**: the pty sanitizer is a streaming state machine with split-sequence carry across chunks and OSC `133;D` prompt-marker extraction (the shell-readiness signal); stateless strippers replace ~20 inner lines while all state machinery stays. `stripVTControlCharacters` also demonstrably leaks unterminated-OSC payloads the session-title normalizer must strip (anti-spoofing). 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 9648af149c..a11c593cdb 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 @@ -41,7 +41,7 @@ Status: rejected — 下列每一项替换在证据上都未达到净简化门 - **以 `write-file-atomic` 承担 fs-local/storage-json 的原子写**:这些包缺少私有 0700 暂存目录、Win32 DACL 复制/`ReplaceFileW`、AbortSignal 支持和父目录 fsync——每一项都正是手写实现的意义所在。koffi Win32 绑定本身由 [Windows 持久发布决策](../../implemented/architecture/2026-07-05-windows-jsonl-durable-publish.md)提供依据。 - **以 `fzstd`/原生 zstd 包承担 JSONL 帧扫描**:`node:zlib` 内置的 zstd 已经负责压缩([zstd 决策](../../implemented/architecture/2026-07-19-zstandard-jsonl-session-logs.md),其中明确否决了外部原生依赖);剩下的 `scanZstdFrames` 为撕裂尾部修复*不做解压*地定位 RFC 8878 帧边界,没有任何包公开这项能力。 -- **以 `picomatch`/`tinyglobby`/`ignore` 承担 fs 搜索**:根本不存在 glob 引擎——依照 [bash 承载的发现工具决策](../../implemented/feature/2026-07-09-bash-backed-grep-glob-discovery.md),两个发现类工具都通过 shell 调用 ripgrep。 +- **以 `picomatch`/`tinyglobby`/`ignore` 承担 fs 搜索**:根本不存在 glob 引擎——依照 [bash 承载的发现工具决策](../../archived/feature/2026-07-09-bash-backed-grep-glob-discovery.md),两个发现类工具都通过 shell 调用 ripgrep。 - **以 `istextorbinary`/`chardet` 承担文本检测**:手写实现是约 15 行的 NUL 采样加 fatal 模式的 `TextDecoder`;启发式包体量更大,还会改变模型能读到哪些文件(模型可见的 `FS_NOT_TEXT` 漂移)。 - **以 `shell-quote` 承担 POSIX 单引号包裹**:两个各 1 行、测试详尽的引号辅助函数,对上一个处于维护模式、有 CVE 历史、转义输出还不一样的包——安全边界不是省一行代码的地方。 - **以 `strip-ansi` 承担 pty 净化**:pty 净化器是一台流式状态机,带跨分片的断裂序列续接和 OSC `133;D` 提示符标记提取(shell 就绪信号);无状态的剥离器只能替掉约 20 行内层代码,全部状态机构件原样保留。`stripVTControlCharacters` 还被实证会泄漏未终止的 OSC 载荷,会话标题归一化器必须剥除它们(反欺骗)。 diff --git a/docs/persistence-catalog.md b/docs/persistence-catalog.md index 3336676eac..f4d7357572 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 in this repo — with source JSDoc, full payload declaration, surface badge, and declaration site. It complements [session.md](core-data-structures/session.md) (surface ordering and the `deriveMessages()` projection), [persistence.md](core-data-structures/persistence.md) (how the log is made durable), and the [cordis events catalog](cordis-catalog/events.md) (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/implemented/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. See [the persistence-log-catalog Agent Note](../.agents/notes/archived/process/2026-07-04-persistence-log-catalog.md). The envelope declarations below compose each event's `type`, monotonic `seq`, epoch-ms `time`, `data`, 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`), and the whole format is pinned at `SESSION_FORMAT_VERSION = 0` — pre-release, no compatibility implied ([the version stance](core-data-structures/persistence.md)). Scope: the packages in this repo; a downstream plugin can merge further event types, which are outside this catalog by construction. diff --git a/packages/guard/repeat-tool-guard/README.i18n.yaml b/packages/guard/repeat-tool-guard/README.i18n.yaml index 4b2c1daa28..14fc1ee3b8 100644 --- a/packages/guard/repeat-tool-guard/README.i18n.yaml +++ b/packages/guard/repeat-tool-guard/README.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 -README.md: b9d6337d2145d279758f5494c2ad51ed5e00154f -README.zh.md: 99190c262b015bf28627debd68e67f6c64618a09 +# pnpm run verify-translation-pairing --write packages/guard/repeat-tool-guard/README.md +README.md: 226dba10239031e8e79bd5698e77c213688ce579 +README.zh.md: 8e22a5e67d3700024934437c5c9c1a5e969b740d diff --git a/packages/guard/repeat-tool-guard/README.md b/packages/guard/repeat-tool-guard/README.md index b9d6337d21..226dba1023 100644 --- a/packages/guard/repeat-tool-guard/README.md +++ b/packages/guard/repeat-tool-guard/README.md @@ -2,7 +2,7 @@ English | [中文](README.zh.md) -An advisory loop-breaker, not a model-facing tool: it never appears in the tool list, never vetoes or rewrites a call, and adds exactly one behavior — it watches each agent's stream of tool calls, counts runs of consecutive calls to the same tool with identical canonicalized arguments, and at configured run lengths injects an escalating advisory reminder telling the model to stop repeating itself, re-read the last result, and either change approach or conclude. The decision (retry differently, gather more evidence, or finish) stays entirely with the model: a legitimately repeated call is delayed by nothing and blocked by nothing. Decision record: [the repeat-tool-guard Agent Note](../../../.agents/notes/implemented/feature/2026-07-08-repeat-tool-guard.md). +An advisory loop-breaker, not a model-facing tool: it never appears in the tool list, never vetoes or rewrites a call, and adds exactly one behavior — it watches each agent's stream of tool calls, counts runs of consecutive calls to the same tool with identical canonicalized arguments, and at configured run lengths injects an escalating advisory reminder telling the model to stop repeating itself, re-read the last result, and either change approach or conclude. The decision (retry differently, gather more evidence, or finish) stays entirely with the model: a legitimately repeated call is delayed by nothing and blocked by nothing. Decision record: [the repeat-tool-guard Agent Note](../../../.agents/notes/archived/feature/2026-07-08-repeat-tool-guard.md). ## Config diff --git a/packages/guard/repeat-tool-guard/README.zh.md b/packages/guard/repeat-tool-guard/README.zh.md index 99190c262b..8e22a5e67d 100644 --- a/packages/guard/repeat-tool-guard/README.zh.md +++ b/packages/guard/repeat-tool-guard/README.zh.md @@ -2,7 +2,7 @@ [English](README.md) | 中文 -这是一个仅提供建议的循环中断器,而非面向模型的工具:它不会出现在工具列表中,不会否决或改写调用,只增加一种行为。它监视每个 agent(智能体)的工具调用流,统计以完全相同的规范化参数连续调用同一工具的次数;达到所配置的连续次数时,它会注入逐级增强的提示,要求模型停止重复、重新阅读上一次结果,并改用其他方案或结束任务。究竟是换一种方式重试、收集更多证据还是完成任务,仍完全由模型决定:合理的重复调用既不会延迟,也不会受阻。决策记录见 [repeat-tool-guard Agent Note](../../../.agents/notes/implemented/feature/2026-07-08-repeat-tool-guard.md)。 +这是一个仅提供建议的循环中断器,而非面向模型的工具:它不会出现在工具列表中,不会否决或改写调用,只增加一种行为。它监视每个 agent(智能体)的工具调用流,统计以完全相同的规范化参数连续调用同一工具的次数;达到所配置的连续次数时,它会注入逐级增强的提示,要求模型停止重复、重新阅读上一次结果,并改用其他方案或结束任务。究竟是换一种方式重试、收集更多证据还是完成任务,仍完全由模型决定:合理的重复调用既不会延迟,也不会受阻。决策记录见 [repeat-tool-guard Agent Note](../../../.agents/notes/archived/feature/2026-07-08-repeat-tool-guard.md)。 ## 配置 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 8da07afcf0..200f979378 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -9,7 +9,8 @@ packages: # plain-node (`:lib`) boot of any leaf (examples//cordis.yml) resolves its # plugins through real package `exports`→lib by walking up to examples/node_modules. # Members for DEPENDENCY RESOLUTION only — NOT build targets: tsdown's explicit - # globs (vendor/*, packages/*/*) exclude them. See the example-execute-over-tsx Agent Note. + # globs (vendor/*, packages/*/*) exclude them. See examples/AGENTS.md and the archived + # run-ci-examples-from-built-lib Agent Note. - examples # Deploy root of the single-exe build: a pure dependency manifest whose # closure is what the exe bundles and what the Python runtime distributes. diff --git a/scripts/gen-persistence-catalog.ts b/scripts/gen-persistence-catalog.ts index 853b134d26..685e4b65ef 100644 --- a/scripts/gen-persistence-catalog.ts +++ b/scripts/gen-persistence-catalog.ts @@ -354,7 +354,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 in this repo — with source JSDoc, full payload declaration, surface badge, and declaration site. It complements [session.md](core-data-structures/session.md) (surface ordering and the `deriveMessages()` projection), [persistence.md](core-data-structures/persistence.md) (how the log is made durable), and the [cordis events catalog](cordis-catalog/events.md) (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/implemented/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. See [the persistence-log-catalog Agent Note](../.agents/notes/archived/process/2026-07-04-persistence-log-catalog.md).', '', 'The envelope declarations below compose each event\'s `type`, monotonic `seq`, epoch-ms `time`, `data`, 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`), and the whole format is pinned at `SESSION_FORMAT_VERSION = 0` — pre-release, no compatibility implied ([the version stance](core-data-structures/persistence.md)). Scope: the packages in this repo; a downstream plugin can merge further event types, which are outside this catalog by construction.', '',