@modusensus/dsh-mneme 0.7.0 → 0.7.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +415 -149
- package/{dsh-mneme/src → lib}/api.js +6 -3
- package/{dsh-mneme/lib → lib}/client.js +55 -8
- package/{dsh-mneme/src → lib}/config.js +5 -0
- package/{dsh-mneme/src → lib}/dream.js +7 -2
- package/{dsh-mneme/lib → lib}/index.js +7 -6
- package/{dsh-mneme/lib → lib}/inject.js +31 -2
- package/{dsh-mneme/src → lib}/service.js +37 -3
- package/{dsh-mneme/src → lib}/settings.js +15 -6
- package/{dsh-mneme/src → lib}/store.js +5 -0
- package/package.json +40 -18
- package/{dsh-mneme/lib → src}/api.js +6 -3
- package/{dsh-mneme/lib → src}/config.js +5 -0
- package/{dsh-mneme/lib → src}/dream.js +7 -2
- package/{dsh-mneme/src → src}/index.js +7 -6
- package/{dsh-mneme/src → src}/inject.js +31 -2
- package/{dsh-mneme/lib → src}/service.js +37 -3
- package/{dsh-mneme/lib → src}/settings.js +15 -6
- package/{dsh-mneme/lib → src}/store.js +5 -0
- package/{dsh-mneme/test → test}/api.test.js +10 -3
- package/{dsh-mneme/test → test}/client.test.js +37 -0
- package/{dsh-mneme/test → test}/config.test.js +7 -0
- package/{dsh-mneme/test → test}/inject.test.js +28 -0
- package/{dsh-mneme/test → test}/settings.test.js +6 -2
- package/{dsh-mneme/test → test}/tag.test.js +114 -0
- package/.github/workflows/test.yml +0 -32
- package/CHANGELOG.md +0 -89
- package/CONTRIBUTING.md +0 -245
- package/SECURITY.md +0 -544
- package/docs/devlog/2026-08-14-dsh-mneme-dev-log.md +0 -247
- package/docs/devlog/2026-08-15-dsh-mneme-audit-stress-dev-log.md +0 -145
- package/docs/devlog/2026-08-15-dsh-mneme-pipeline-dev-log.md +0 -56
- package/docs/devlog/2026-08-15-dsh-mneme-reflection-dev-log.md +0 -77
- package/docs/devlog/2026-08-15-dsh-mneme-review-fixes-dev-log.md +0 -64
- package/docs/devlog/2026-08-15-dsh-mneme-semantic-dev-log.md +0 -90
- package/dsh-mneme/CHANGELOG.md +0 -286
- package/dsh-mneme/LICENSE +0 -21
- package/dsh-mneme/README.md +0 -482
- package/dsh-mneme/docs/AGENT_MEMORY_RESEARCH.md +0 -183
- package/dsh-mneme/docs/ENTITIES.md +0 -245
- package/dsh-mneme/docs/LOCAL_MODEL.md +0 -141
- package/dsh-mneme/docs/MIGRATION.md +0 -127
- package/dsh-mneme/docs/SEMANTIC.md +0 -256
- package/dsh-mneme/docs/SLEEP.md +0 -163
- package/dsh-mneme/package-lock.json +0 -1936
- package/dsh-mneme/package.json +0 -80
- package/v0.7-plan-2026-08-21.md +0 -75
- package//346/250/252/345/271/205.png +0 -0
- /package/{dsh-mneme/cordis.patch.yml → cordis.patch.yml} +0 -0
- /package/{dsh-mneme/lib → lib}/commands.js +0 -0
- /package/{dsh-mneme/lib → lib}/dream/clustering.js +0 -0
- /package/{dsh-mneme/lib → lib}/dream/decisions.js +0 -0
- /package/{dsh-mneme/lib → lib}/dream/sleep.js +0 -0
- /package/{dsh-mneme/lib → lib}/dream/tag-extractor.js +0 -0
- /package/{dsh-mneme/lib → lib}/embedding.js +0 -0
- /package/{dsh-mneme/lib → lib}/entities/extractor.js +0 -0
- /package/{dsh-mneme/lib → lib}/heat.js +0 -0
- /package/{dsh-mneme/lib → lib}/hot-memory.js +0 -0
- /package/{dsh-mneme/lib → lib}/local-embedder.js +0 -0
- /package/{dsh-mneme/lib → lib}/mirror.js +0 -0
- /package/{dsh-mneme/lib → lib}/parser/tag.js +0 -0
- /package/{dsh-mneme/lib → lib}/parser/wiki-link.js +0 -0
- /package/{dsh-mneme/lib → lib}/quality-filter.js +0 -0
- /package/{dsh-mneme/lib → lib}/reranker.js +0 -0
- /package/{dsh-mneme/lib → lib}/search/adaptive.js +0 -0
- /package/{dsh-mneme/lib → lib}/search/bm25.js +0 -0
- /package/{dsh-mneme/lib → lib}/search/tag-boost.js +0 -0
- /package/{dsh-mneme/lib → lib}/summarize.js +0 -0
- /package/{dsh-mneme/lib → lib}/tools.js +0 -0
- /package/{dsh-mneme/lib → lib}/vector-index.js +0 -0
- /package/{dsh-mneme/scripts → scripts}/benchmark-embed.js +0 -0
- /package/{dsh-mneme/scripts → scripts}/benchmark-recall.js +0 -0
- /package/{dsh-mneme/scripts → scripts}/benchmark-rerank.js +0 -0
- /package/{dsh-mneme/scripts → scripts}/e2e-dsh.js +0 -0
- /package/{dsh-mneme/scripts → scripts}/stress-dsh.js +0 -0
- /package/{dsh-mneme/scripts → scripts}/sync-lib.js +0 -0
- /package/{dsh-mneme/src → src}/commands.js +0 -0
- /package/{dsh-mneme/src → src}/dream/clustering.js +0 -0
- /package/{dsh-mneme/src → src}/dream/decisions.js +0 -0
- /package/{dsh-mneme/src → src}/dream/sleep.js +0 -0
- /package/{dsh-mneme/src → src}/dream/tag-extractor.js +0 -0
- /package/{dsh-mneme/src → src}/embedding.js +0 -0
- /package/{dsh-mneme/src → src}/entities/extractor.js +0 -0
- /package/{dsh-mneme/src → src}/heat.js +0 -0
- /package/{dsh-mneme/src → src}/hot-memory.js +0 -0
- /package/{dsh-mneme/src → src}/local-embedder.js +0 -0
- /package/{dsh-mneme/src → src}/mirror.js +0 -0
- /package/{dsh-mneme/src → src}/parser/tag.js +0 -0
- /package/{dsh-mneme/src → src}/parser/wiki-link.js +0 -0
- /package/{dsh-mneme/src → src}/quality-filter.js +0 -0
- /package/{dsh-mneme/src → src}/reranker.js +0 -0
- /package/{dsh-mneme/src → src}/search/adaptive.js +0 -0
- /package/{dsh-mneme/src → src}/search/bm25.js +0 -0
- /package/{dsh-mneme/src → src}/search/tag-boost.js +0 -0
- /package/{dsh-mneme/src → src}/summarize.js +0 -0
- /package/{dsh-mneme/src → src}/tools.js +0 -0
- /package/{dsh-mneme/src → src}/vector-index.js +0 -0
- /package/{dsh-mneme/test → test}/audit.test.js +0 -0
- /package/{dsh-mneme/test → test}/benchmark.test.js +0 -0
- /package/{dsh-mneme/test → test}/boundary-v0625.test.js +0 -0
- /package/{dsh-mneme/test → test}/clustering.test.js +0 -0
- /package/{dsh-mneme/test → test}/commands.test.js +0 -0
- /package/{dsh-mneme/test → test}/conflict-freeze.test.js +0 -0
- /package/{dsh-mneme/test → test}/directory.test.js +0 -0
- /package/{dsh-mneme/test → test}/dream.test.js +0 -0
- /package/{dsh-mneme/test → test}/entities.test.js +0 -0
- /package/{dsh-mneme/test → test}/epistemic.test.js +0 -0
- /package/{dsh-mneme/test → test}/fnew-0112.test.js +0 -0
- /package/{dsh-mneme/test → test}/fnew-03.test.js +0 -0
- /package/{dsh-mneme/test → test}/graph-api.test.js +0 -0
- /package/{dsh-mneme/test → test}/heat.test.js +0 -0
- /package/{dsh-mneme/test → test}/helpers/dream-mock.js +0 -0
- /package/{dsh-mneme/test → test}/hot-memory.test.js +0 -0
- /package/{dsh-mneme/test → test}/llm-audit.test.js +0 -0
- /package/{dsh-mneme/test → test}/local-embedder.test.js +0 -0
- /package/{dsh-mneme/test → test}/mirror-dirty.test.js +0 -0
- /package/{dsh-mneme/test → test}/mirror-edit-digest.test.js +0 -0
- /package/{dsh-mneme/test → test}/mirror-generation.test.js +0 -0
- /package/{dsh-mneme/test → test}/mirror.test.js +0 -0
- /package/{dsh-mneme/test → test}/normalize-decisions.test.js +0 -0
- /package/{dsh-mneme/test → test}/peer-blockers.test.js +0 -0
- /package/{dsh-mneme/test → test}/policy-epoch.test.js +0 -0
- /package/{dsh-mneme/test → test}/provenance.test.js +0 -0
- /package/{dsh-mneme/test → test}/quality-filter.test.js +0 -0
- /package/{dsh-mneme/test → test}/reasoning-effort.test.js +0 -0
- /package/{dsh-mneme/test → test}/recall-evals.test.js +0 -0
- /package/{dsh-mneme/test → test}/recall-layer.test.js +0 -0
- /package/{dsh-mneme/test → test}/recall-runs.test.js +0 -0
- /package/{dsh-mneme/test → test}/receipt-chain.test.js +0 -0
- /package/{dsh-mneme/test → test}/reflection.test.js +0 -0
- /package/{dsh-mneme/test → test}/reranker.test.js +0 -0
- /package/{dsh-mneme/test → test}/search-fusion.test.js +0 -0
- /package/{dsh-mneme/test → test}/semantic.test.js +0 -0
- /package/{dsh-mneme/test → test}/service-search.test.js +0 -0
- /package/{dsh-mneme/test → test}/service.test.js +0 -0
- /package/{dsh-mneme/test → test}/sleep-heat.test.js +0 -0
- /package/{dsh-mneme/test → test}/sleep.test.js +0 -0
- /package/{dsh-mneme/test → test}/store.test.js +0 -0
- /package/{dsh-mneme/test → test}/stress.test.js +0 -0
- /package/{dsh-mneme/test → test}/summarize.test.js +0 -0
- /package/{dsh-mneme/test → test}/tag-boost.test.js +0 -0
- /package/{dsh-mneme/test → test}/tools.test.js +0 -0
- /package/{dsh-mneme/test → test}/updated-at-semantics.test.js +0 -0
- /package/{dsh-mneme/test → test}/vector-index.test.js +0 -0
- /package/{dsh-mneme/test → test}/wiki-link.test.js +0 -0
package/CONTRIBUTING.md
DELETED
|
@@ -1,245 +0,0 @@
|
|
|
1
|
-
# Contributing
|
|
2
|
-
|
|
3
|
-
> **English** | [中文](#贡献指南)
|
|
4
|
-
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
## Prerequisites
|
|
8
|
-
|
|
9
|
-
- **Node.js 24+** (CI runs on Node 24)
|
|
10
|
-
- **npm** (the repo uses npm; CI installs with `npm ci`)
|
|
11
|
-
- **git** (on Windows, watch LF/CRLF: the repo is LF-normalized and git converts automatically)
|
|
12
|
-
|
|
13
|
-
---
|
|
14
|
-
|
|
15
|
-
## Repository Layout
|
|
16
|
-
|
|
17
|
-
The repository root is the publishing manifest; the actual plugin code lives in the `dsh-mneme/` subdirectory:
|
|
18
|
-
|
|
19
|
-
```
|
|
20
|
-
dsh-mneme-1/
|
|
21
|
-
├── package.json # npm publishing manifest (main → dsh-mneme/lib/index.js)
|
|
22
|
-
├── README.md / CHANGELOG.md / SECURITY.md
|
|
23
|
-
└── dsh-mneme/ # the plugin itself
|
|
24
|
-
├── src/ # source (ESM) — all feature work happens here
|
|
25
|
-
├── lib/ # build output; DSH actually loads lib/index.js
|
|
26
|
-
├── scripts/ # sync-lib.js, e2e-dsh.js, stress-dsh.js, benchmark-*
|
|
27
|
-
├── test/ # node:test test suite
|
|
28
|
-
├── docs/ # SEMANTIC / SLEEP / ENTITIES / MIGRATION deep-dives
|
|
29
|
-
├── package.json # plugin metadata and scripts
|
|
30
|
-
└── cordis.patch.yml # DSH injection patch
|
|
31
|
-
```
|
|
32
|
-
|
|
33
|
-
**Key convention: `src/` is the single source of truth; `lib/` is build output.**
|
|
34
|
-
|
|
35
|
-
- Write code only in `src/`, then run `npm run sync` to mirror changes into `lib/`.
|
|
36
|
-
- **Never edit `lib/` by hand** — the next sync overwrites it. The only exception is `lib/client.js` (the Web-panel bundle, authored independently; sync never touches it).
|
|
37
|
-
- `npm pack` / `npm publish` run sync automatically via the `prepack` hook, so a published tarball always ships a fresh `lib/`.
|
|
38
|
-
|
|
39
|
-
---
|
|
40
|
-
|
|
41
|
-
## Local Development
|
|
42
|
-
|
|
43
|
-
```bash
|
|
44
|
-
# 1. Install dependencies (inside dsh-mneme/)
|
|
45
|
-
cd dsh-mneme
|
|
46
|
-
npm ci
|
|
47
|
-
|
|
48
|
-
# 2. After editing files under src/, mirror to lib/
|
|
49
|
-
npm run sync
|
|
50
|
-
|
|
51
|
-
# 3. Run the tests
|
|
52
|
-
npm test # node --test test/*.test.js
|
|
53
|
-
npm run test:coverage # c8 coverage
|
|
54
|
-
```
|
|
55
|
-
|
|
56
|
-
Common scripts (all run under `dsh-mneme/`):
|
|
57
|
-
|
|
58
|
-
| Command | Description |
|
|
59
|
-
|---------|-------------|
|
|
60
|
-
| `npm test` | Full unit/integration suite |
|
|
61
|
-
| `npm run test:coverage` | Tests + c8 coverage (used by CI) |
|
|
62
|
-
| `npm run e2e` | End-to-end smoke test (scripts/e2e-dsh.js) |
|
|
63
|
-
| `npm run stress` | Three-axis stress test (scripts/stress-dsh.js) |
|
|
64
|
-
| `npm run sync` | src/ → lib/ mirror |
|
|
65
|
-
|
|
66
|
-
---
|
|
67
|
-
|
|
68
|
-
## Testing Conventions
|
|
69
|
-
|
|
70
|
-
- Tests use Node's built-in **`node:test` + `node:assert/strict`**; no third-party test framework.
|
|
71
|
-
- New features require corresponding tests; **changing core logic (e.g. model routing, decision validation) must update the affected test assertions** so the suite stays green before committing.
|
|
72
|
-
- Test files live in `test/`, named `*.test.js`; shared mocks go in `test/helpers/` (e.g. `dream-mock.js`).
|
|
73
|
-
- Known environment dependency: a few cases in `reranker.test.js` need `@huggingface/transformers` (locally this one case fails without the package; it is unrelated to repo logic and CI installs it and passes).
|
|
74
|
-
|
|
75
|
-
---
|
|
76
|
-
|
|
77
|
-
## Code Style & Engineering Conventions
|
|
78
|
-
|
|
79
|
-
- **ESM**: the repo is `"type": "module"`; everything uses `import`/`export`.
|
|
80
|
-
- **Comments in Chinese**, biased toward "why" — core logic, config options, and fail-safe branches must explain their intent.
|
|
81
|
-
- **Fail-safe is a hard rule**: local failures in any background LLM path (autoDream / sleep / autoTag / summarization) must skip or degrade, **never** block the main flow (write, recall, injection).
|
|
82
|
-
- **Config is defined centrally with schemastery in `src/config.js`** (`z.object` + `.default(...)`); new options must keep docs and default-value semantics in sync.
|
|
83
|
-
- **Audit honesty**: a run's status (ok / noop / degraded / reconcile / failed) must reflect what actually committed — never a fake ok.
|
|
84
|
-
|
|
85
|
-
---
|
|
86
|
-
|
|
87
|
-
## Commits & Branches
|
|
88
|
-
|
|
89
|
-
- Commit messages follow **Conventional Commits**:
|
|
90
|
-
|
|
91
|
-
```
|
|
92
|
-
fix(dream): reject cross-type merge as a whole batch (Issue #26)
|
|
93
|
-
feat(tag): add tag-weighted recall
|
|
94
|
-
docs: expand the SEMANTIC doc
|
|
95
|
-
release: v0.6.9 ...
|
|
96
|
-
```
|
|
97
|
-
|
|
98
|
-
- Run `npm test` before committing and confirm green (note any environment-only known exceptions in the commit message).
|
|
99
|
-
- **Small fixes**: can push straight to `main` (this is the project's workflow).
|
|
100
|
-
- **Larger features / breaking changes**: open an Issue first to state the motivation and design, then submit a PR — the PR triggers CI (Node 24 + full suite + Codecov).
|
|
101
|
-
- Release operations (version bumps, tags, Releases, npm publish) are performed by maintainers — see the next section.
|
|
102
|
-
|
|
103
|
-
---
|
|
104
|
-
|
|
105
|
-
## Release Process (Maintainers)
|
|
106
|
-
|
|
107
|
-
Versioning follows semantic versioning (`MAJOR.MINOR.PATCH`). Full flow:
|
|
108
|
-
|
|
109
|
-
1. **Update CHANGELOG**: add a version entry (`## [X.Y.Z] - date`, split into 「修复 / 新增 / 测试」) at the top of `dsh-mneme/CHANGELOG.md`; update the root `CHANGELOG.md` if it tracks the same.
|
|
110
|
-
2. **Bump version**: change `version` in `dsh-mneme/package.json` and `package-lock.json`; the root `package.json` is synced automatically by the `prepublishOnly` hook — no manual edit.
|
|
111
|
-
3. **Full test pass**: `npm test` must be green.
|
|
112
|
-
4. **Commit and push**: commit → `git push origin main` → `git tag vX.Y.Z` → `git push origin vX.Y.Z`.
|
|
113
|
-
5. **Create a GitHub Release**: title `vX.Y.Z`, body referencing the matching CHANGELOG entry (review before publishing).
|
|
114
|
-
6. **Publish to npm**: run `npm publish` from the **repository root** (`prepublishOnly` copies the version from `dsh-mneme/package.json` into the root `package.json`; `prepack` syncs `lib/`).
|
|
115
|
-
|
|
116
|
-
---
|
|
117
|
-
|
|
118
|
-
## Miscellaneous
|
|
119
|
-
|
|
120
|
-
- Security issues go through [SECURITY.md](SECURITY.md) or a GitHub Security Advisory — never paste sensitive info into a public Issue.
|
|
121
|
-
- Be respectful and constructive; PRs touching data integrity, security, or behavior must include reproduction steps and regression evidence.
|
|
122
|
-
|
|
123
|
-
---
|
|
124
|
-
|
|
125
|
-
# 贡献指南
|
|
126
|
-
|
|
127
|
-
> **中文** | [English](#contributing)
|
|
128
|
-
|
|
129
|
-
---
|
|
130
|
-
|
|
131
|
-
## 环境要求
|
|
132
|
-
|
|
133
|
-
- **Node.js 24+**(CI 在 node 24 上运行)
|
|
134
|
-
- **npm**(仓库使用 npm,CI 用 `npm ci`)
|
|
135
|
-
- **git**(Windows 下注意 LF/CRLF:仓库以 LF 为准,git 会自动转换)
|
|
136
|
-
|
|
137
|
-
---
|
|
138
|
-
|
|
139
|
-
## 代码库布局
|
|
140
|
-
|
|
141
|
-
仓库根目录是发布清单,实际插件代码在 `dsh-mneme/` 子目录:
|
|
142
|
-
|
|
143
|
-
```
|
|
144
|
-
dsh-mneme-1/
|
|
145
|
-
├── package.json # npm 包发布清单(main 指向 dsh-mneme/lib/index.js)
|
|
146
|
-
├── README.md / CHANGELOG.md / SECURITY.md
|
|
147
|
-
└── dsh-mneme/ # 插件本体
|
|
148
|
-
├── src/ # 源码(ESM),所有功能都在这里开发
|
|
149
|
-
├── lib/ # 构建产物,DSH 实际加载的是 lib/index.js
|
|
150
|
-
├── scripts/ # sync-lib.js、e2e-dsh.js、stress-dsh.js、benchmark-*
|
|
151
|
-
├── test/ # node:test 测试
|
|
152
|
-
├── docs/ # SEMANTIC / SLEEP / ENTITIES / MIGRATION 等专题文档
|
|
153
|
-
├── package.json # 插件包元数据与 scripts
|
|
154
|
-
└── cordis.patch.yml # DSH 注入补丁
|
|
155
|
-
```
|
|
156
|
-
|
|
157
|
-
**关键约定:`src/` 是唯一的事实来源,`lib/` 是构建产物。**
|
|
158
|
-
|
|
159
|
-
- 所有代码改动只写 `src/`,改完必须运行 `npm run sync` 同步到 `lib/`。
|
|
160
|
-
- **不要手工编辑 `lib/`**——下次 sync 会覆盖你的改动。唯一的例外是 `lib/client.js`(Web 面板打包产物,独立创作,sync 不会触碰它)。
|
|
161
|
-
- `npm pack` / `npm publish` 会通过 `prepack` 钩子自动执行 sync,所以发布产物永远是新鲜的 `lib/`。
|
|
162
|
-
|
|
163
|
-
---
|
|
164
|
-
|
|
165
|
-
## 本地开发
|
|
166
|
-
|
|
167
|
-
```bash
|
|
168
|
-
# 1. 安装依赖(在 dsh-mneme/ 目录内)
|
|
169
|
-
cd dsh-mneme
|
|
170
|
-
npm ci
|
|
171
|
-
|
|
172
|
-
# 2. 修改 src/ 下的文件后,同步到 lib/
|
|
173
|
-
npm run sync
|
|
174
|
-
|
|
175
|
-
# 3. 跑测试
|
|
176
|
-
npm test # node --test test/*.test.js
|
|
177
|
-
npm run test:coverage # c8 覆盖率
|
|
178
|
-
```
|
|
179
|
-
|
|
180
|
-
常用脚本(均在 `dsh-mneme/` 下):
|
|
181
|
-
|
|
182
|
-
| 命令 | 说明 |
|
|
183
|
-
|------|------|
|
|
184
|
-
| `npm test` | 全量单元/集成测试 |
|
|
185
|
-
| `npm run test:coverage` | 测试 + c8 覆盖率(CI 使用) |
|
|
186
|
-
| `npm run e2e` | 端到端冒烟(scripts/e2e-dsh.js) |
|
|
187
|
-
| `npm run stress` | 三轴线压测(scripts/stress-dsh.js) |
|
|
188
|
-
| `npm run sync` | src/ → lib/ 同步 |
|
|
189
|
-
|
|
190
|
-
---
|
|
191
|
-
|
|
192
|
-
## 测试约定
|
|
193
|
-
|
|
194
|
-
- 测试框架为 Node 内置 **`node:test` + `node:assert/strict`**,不引入第三方测试库。
|
|
195
|
-
- 新增功能必须有对应测试;**修改核心逻辑(如模型路由、决策校验)时必须同步更新受影响用例的断言**,保证全量测试通过后提交。
|
|
196
|
-
- 测试文件放在 `test/`,命名 `*.test.js`;共享 mock 放 `test/helpers/`(如 `dream-mock.js`)。
|
|
197
|
-
- 已知环境依赖:`reranker.test.js` 的个别用例需要 `@huggingface/transformers`(本地未安装该包时这 1 例会失败,与本仓库逻辑无关,CI 会正常安装并通过)。
|
|
198
|
-
|
|
199
|
-
---
|
|
200
|
-
|
|
201
|
-
## 代码风格与工程约定
|
|
202
|
-
|
|
203
|
-
- **ESM**:仓库 `"type": "module"`,全部使用 `import`/`export`。
|
|
204
|
-
- **注释用中文**,且偏向"解释为什么"——核心逻辑、配置项、fail-safe 分支都要求写清意图。
|
|
205
|
-
- **fail-safe 是硬性约定**:所有后台 LLM 链路(autoDream / sleep / autoTag / 摘要)中的局部失败只能跳过或降级,**绝不能**阻断主流程(写入、检索、注入)。
|
|
206
|
-
- **配置项统一用 schemastery 定义在 `src/config.js`**(`z.object` + `.default(...)`),新增配置记得同步文档与默认值语义。
|
|
207
|
-
- **审计诚实性**:任何 run 的状态(ok / noop / degraded / reconcile / failed)必须反映真实提交结果,绝不虚报。
|
|
208
|
-
|
|
209
|
-
---
|
|
210
|
-
|
|
211
|
-
## 提交与分支
|
|
212
|
-
|
|
213
|
-
- 提交信息遵循 **Conventional Commits**:
|
|
214
|
-
|
|
215
|
-
```
|
|
216
|
-
fix(dream): 修复跨类型 merge 整单拒绝(Issue #26)
|
|
217
|
-
feat(tag): 新增标签加权召回
|
|
218
|
-
docs: 补充 SEMANTIC 文档
|
|
219
|
-
release: v0.6.9 ...
|
|
220
|
-
```
|
|
221
|
-
|
|
222
|
-
- 提交前跑一遍 `npm test` 确认全绿(环境相关的已知例外需在提交说明里注明)。
|
|
223
|
-
- **小改动 / 修复**:可直推 `main`(本项目采用此工作流)。
|
|
224
|
-
- **较大功能 / 破坏性改动**:建议先开 Issue 说明动机与方案,再通过 PR 提交,PR 会触发 CI 校验(node 24 + 全量测试 + Codecov)。
|
|
225
|
-
- 发布相关操作(改版本号、打 tag、发 Release、npm publish)由维护者执行,详见下节。
|
|
226
|
-
|
|
227
|
-
---
|
|
228
|
-
|
|
229
|
-
## 发布流程(维护者)
|
|
230
|
-
|
|
231
|
-
版本号遵循语义化版本(`MAJOR.MINOR.PATCH`)。完整流程:
|
|
232
|
-
|
|
233
|
-
1. **更新 CHANGELOG**:在 `dsh-mneme/CHANGELOG.md` 顶部新增版本条目(`## [X.Y.Z] - 日期`,分「修复 / 新增 / 测试」小节),根目录 `CHANGELOG.md` 如涉及同步更新。
|
|
234
|
-
2. **更新版本号**:改 `dsh-mneme/package.json` 的 `version` 与 `package-lock.json`;根目录 `package.json` 由 `prepublishOnly` 钩子自动同步,无需手改。
|
|
235
|
-
3. **全量测试**:`npm test` 确认通过。
|
|
236
|
-
4. **提交并推送**:commit → `git push origin main` → `git tag vX.Y.Z` → `git push origin vX.Y.Z`。
|
|
237
|
-
5. **创建 GitHub Release**:标题为 `vX.Y.Z`,正文引用 CHANGELOG 对应条目(发布前需人工过目)。
|
|
238
|
-
6. **发布 npm**:在**仓库根目录**执行 `npm publish`(`prepublishOnly` 会自动把 `dsh-mneme/package.json` 的版本号写入根 `package.json`,`prepack` 自动 sync `lib/`)。
|
|
239
|
-
|
|
240
|
-
---
|
|
241
|
-
|
|
242
|
-
## 其他
|
|
243
|
-
|
|
244
|
-
- 安全问题请走 [SECURITY.md](SECURITY.md) 或 GitHub Security Advisory,不要在公开 Issue 贴敏感信息。
|
|
245
|
-
- 保持礼貌与建设性;涉及数据损坏 / 安全 / 破坏性改动的 PR 需附复现步骤与回归证据。
|