fix(runtime): preflight archive targets and compensate failed writes - #243
Merged
Merged
Conversation
28 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
摘要 / Summary
Runtime capacity archival now rejects asynchronous or non-compensatable destinations before writes, rechecks all selected targets, and compensates only proven-new entries when receipt validation or the local commit fails. A safe Native target remains usable alongside active Hindsight; uncertain commit outcomes preserve memory.
关联 Issue 或背景 / Related Issue or Context
Fixes #240
涉及区域 / Affected Areas
PR 类型 / PR Type
最新代码确认 / Latest Codebase Confirmation
main分支开发,或在提交前已 rebase 或合并最新main。 / I developed from the latestmain, or rebased or merged the latestmainbefore submitting.同步命令 / Sync command:
git fetch origin main— latest base1e19caf40f0bf37edf678c3d829f2398ab28792a.AI 编码披露 / AI Coding Disclosure
使用的 AI 模型 / AI model used:
GPT-6 Astra, max reasoning.
使用的编码 Agent 工具 / Coding Agent tool used:
Codex desktop.
仓库规范检查 / Repository Rules
@deepseek-ai/*NPM 契约。 / I did not modify DSH source or point tsconfig at a DSH source checkout, and used only published@deepseek-ai/*NPM contracts.src/host/protocol.ts为准,没有在两侧重复定义 wire DTO。 / The Client and Host boundary still uses browser-safesrc/host/protocol.tsas the source for wire DTOs.lib/文件。 / I did not commit tokens, credentials, private memory, unredacted logs, or generatedlib/files.兼容性与数据安全 / Compatibility and Data Safety
No storage-format, public Provider contract, credentials, path, or RPC authority changes. Source selection and cleanup use the same leased generation and scope. Unsupported async-only catalogs keep Runtime unchanged and return an actionable choice of an exact-write space or a larger
runtimeMemory.memoryLimitBytes. Direct asynchronous Provider writes retain their existing behavior.Receipts are retained per destination; cleanup uses only newly created committed ids and a separate bounded signal. Skipped/deduplicated entries are never deleted. If the Runtime revision changed or cannot be read after a commit error, archive items are retained. A Provider can still throw after an unreported partial remote write, so this does not provide a distributed transaction; cleanup failures name unresolved ids for inspection. The unpacked Host budget moves from 1.27 MB to 1.28 MB for the recovery code (measured 1,271,747 bytes). Root alone receives a patch changeset.
本地验证 / Local Validation
执行的命令 / Commands run:
pnpm verify pnpm verify:plugins MNEMON_NATIVE_TEST_CLI=/opt/homebrew/bin/mnemon pnpm --filter dsh-mnemon-source-memory-spaces exec vitest run tests/native-integration.spec.ts pnpm e2e:serve --runtime-archive --strategy-extensions结果摘要 / Result summary:
All pass. Root: 938 tests passed, 5 opt-in live-model tests skipped; coordinator: 97 tests. Workspace Source/Provider tests, deterministic builds, types, real Headless activation, public entries and package validation pass. Standalone verification covers 16 independent plugins and 17 packed artifacts, including all three optional enhancements activated together. Real Mnemon 0.2.7 created/wrote/recalled/forgot a disposable store. Regression failed before the fix; controlled failure tests cover unavailable targets, mixed providers, cleanup failure, cancellation and uncertain local commit. No live model was needed for this deterministic path.
用户可见变更证据 / Local Feature Evidence
证据 / Evidence:
Reproduction steps, bilingual results and screenshots.
Before: real Hindsight plugin accepted one write, then Runtime overflow failed and stayed at 226/300 bytes. After: two retries return the preflight error with zero new Provider writes. Create/activate real Native while Hindsight remains active: the same overflow succeeds, exact source content is visible in Native, and Runtime commits at 118/300 bytes. All three Strategy enhancements were active in the real DSH WebUI.