frontend-project-context 1.3.1 → 1.7.0

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.
Files changed (67) hide show
  1. package/CHANGELOG.md +51 -2
  2. package/README.md +156 -40
  3. package/UPGRADING.md +55 -1
  4. package/docs/04-PROGRAM-DESIGN.md +34 -4
  5. package/docs/05-ACCEPTANCE-CONTRACT.md +40 -3
  6. package/docs/08-INSTALLATION-AND-DISTRIBUTION.md +67 -22
  7. package/docs/14-FORMAL-RELEASE-READINESS.md +30 -1
  8. package/docs/18-BRANCH-AWARE-STAGED-CONTEXT-DESIGN.md +2 -2
  9. package/docs/19-POST-1.3.1-AI-TAKEOVER-EVIDENCE-AND-UPGRADE-PLAN.md +579 -0
  10. package/docs/20-PHASE-A-AI-TAKEOVER-AND-HEALTH-CLOSURE-DESIGN.md +535 -0
  11. package/docs/21-PHASE-B-EVIDENCE-FEEDBACK-PROTOCOL-DESIGN.md +347 -0
  12. package/docs/22-PHASE-C-TARGET-UPGRADE-PROTOCOL-DESIGN.md +398 -0
  13. package/docs/23-ADAPTIVE-BOUNDED-TASK-CONTEXT-DESIGN.md +432 -0
  14. package/docs/24-A130-REAL-HOST-TARGET-PROJECT-COMPARISON.md +210 -0
  15. package/docs/25-REAL-PROJECT-SOURCE-OF-TRUTH-MAINTENANCE-DESIGN.md +409 -0
  16. package/docs/26-A130-QUALITY-CLOSURE-AND-ADAPTIVE-DELIVERY-REPAIR-DESIGN.md +609 -0
  17. package/docs/README.md +38 -6
  18. package/docs/USER-AND-AI-OPERATION-MANUAL.md +840 -0
  19. package/examples/README.md +29 -2
  20. package/examples/package.json +6 -2
  21. package/migration-manifest.json +110 -0
  22. package/package.json +3 -2
  23. package/schemas/action-plan.schema.json +31 -3
  24. package/schemas/adaptive-context-bundle.schema.json +70 -0
  25. package/schemas/capabilities.schema.json +64 -18
  26. package/schemas/context-query.schema.json +69 -0
  27. package/schemas/coverage-audit.schema.json +32 -0
  28. package/schemas/evidence-bundle.schema.json +64 -0
  29. package/schemas/evidence-input.schema.json +82 -0
  30. package/schemas/host-promotion-evidence.schema.json +33 -0
  31. package/schemas/migration-manifest.schema.json +29 -0
  32. package/schemas/migration-plan.schema.json +32 -0
  33. package/schemas/project-status.schema.json +75 -0
  34. package/schemas/projection-lock.schema.json +48 -0
  35. package/schemas/review-bundle.schema.json +3 -3
  36. package/schemas/routing-index.schema.json +58 -0
  37. package/schemas/truth-reconciliation-input.schema.json +60 -0
  38. package/schemas/truth-reconciliation-review-bundle.schema.json +155 -0
  39. package/schemas/upgrade-assessment.schema.json +48 -0
  40. package/schemas/upgrade-result-bundle.schema.json +35 -0
  41. package/src/project-context/a130-evaluation.mjs +91 -0
  42. package/src/project-context/adaptive-context-schema.mjs +392 -0
  43. package/src/project-context/adaptive-context.mjs +547 -0
  44. package/src/project-context/ai-entry.mjs +320 -0
  45. package/src/project-context/assist.mjs +4 -2
  46. package/src/project-context/capabilities.mjs +62 -17
  47. package/src/project-context/checker.mjs +24 -6
  48. package/src/project-context/cli.mjs +113 -3
  49. package/src/project-context/contract-schema.mjs +30 -16
  50. package/src/project-context/dashboard-model.mjs +4 -4
  51. package/src/project-context/dashboard-renderer.mjs +3 -3
  52. package/src/project-context/discovery.mjs +13 -8
  53. package/src/project-context/evidence-schema.mjs +209 -0
  54. package/src/project-context/evidence.mjs +99 -0
  55. package/src/project-context/exchange-schema.mjs +23 -12
  56. package/src/project-context/exchange.mjs +26 -4
  57. package/src/project-context/maintenance.mjs +4 -4
  58. package/src/project-context/migration-manifest.mjs +168 -0
  59. package/src/project-context/project-status.mjs +157 -0
  60. package/src/project-context/projection-store.mjs +8 -1
  61. package/src/project-context/renderer.mjs +75 -1
  62. package/src/project-context/source-reader.mjs +63 -30
  63. package/src/project-context/task-context.mjs +14 -2
  64. package/src/project-context/truth-reconciliation-schema.mjs +488 -0
  65. package/src/project-context/truth-reconciliation.mjs +543 -0
  66. package/src/project-context/upgrade-schema.mjs +219 -0
  67. package/src/project-context/upgrade.mjs +494 -0
@@ -0,0 +1,347 @@
1
+ # 21 — `1.5.0` Phase B Evidence Feedback Protocol 详细设计
2
+
3
+ > 权威说明:本文是 [19-POST-1.3.1-AI-TAKEOVER-EVIDENCE-AND-UPGRADE-PLAN.md](./19-POST-1.3.1-AI-TAKEOVER-EVIDENCE-AND-UPGRADE-PLAN.md) 中 Phase B 的可开发合同。如与 [00-PRODUCT-CONSTITUTION.md](./00-PRODUCT-CONSTITUTION.md) 冲突,以产品宪法为准。
4
+ >
5
+ > 状态:`implemented-local-verified; A-91-through-A-100-and-all-regressions-pass-106-of-106; release-not-authorized`
6
+ >
7
+ > 目标版本:`frontend-project-context@1.5.0`
8
+ >
9
+ > 基线:仓库内 `1.4.0` 已完成本地实现与 96/96 验收,但尚未发布,也未经过真实 Host/目标项目验证。本文不改变该实现事实。
10
+
11
+ ## 1. 结论
12
+
13
+ `1.5.0` 只完成 **Evidence Feedback Protocol**:目标项目中的 Host Agent 把一次已发生的 setup、takeover、maintenance、staged-context 或 upgrade 观察,收敛为确定性、体积受限、默认需要人工复核的 Evidence Bundle。人决定是否把它带回中心产品项目;中心项目再按宪法分类证据,而不是让目标项目自动上报、自动修补或自动产生需求。
14
+
15
+ 本阶段固定新增:
16
+
17
+ - 只读命令 `evidence`;
18
+ - Evidence Input schema 1;
19
+ - Evidence Bundle schema 1;
20
+ - capabilities schema 3 与 exchange protocol 3 的机器声明;
21
+ - 人工转交边界和中心分类模板;
22
+ - A-91 至 A-100。
23
+
24
+ 本阶段不新增 store、不写目标项目、不访问网络、不调用 Provider、不执行测试、不上传证据、不修改 Project Contract,也不实现 Phase C 的升级编排。
25
+
26
+ ## 2. 用户问题
27
+
28
+ 真实目标项目出现问题时,目前只能复制聊天、日志、路径、代码或口头描述返回产品项目。这会同时产生四类风险:
29
+
30
+ 1. 证据携带业务正文、绝对路径、仓库身份、凭据或个人信息;
31
+ 2. 关键版本、协议、状态和错误码被遗漏,中心无法复现;
32
+ 3. 一次目标项目现象被直接解释为通用内核需求;
33
+ 4. 为了“反馈”而引入上传、遥测或中心遥控,突破永久边界。
34
+
35
+ `1.5.0` 的成功标准不是收集更多数据,而是让人拿到一份**最小、结构化、可核对、不会自行离开项目**的证据。
36
+
37
+ ## 3. 分类与产品边界
38
+
39
+ 本阶段分类为 `optional-adapter-protocol`,服务 AI Exchange Boundary,但不新增第八项内核,也不需要修改产品宪法。
40
+
41
+ 责任固定如下:
42
+
43
+ | 参与者 | 负责 | 不负责 |
44
+ | --- | --- | --- |
45
+ | 目标项目 Host Agent | 提供已经脱敏的观察输入,调用只读命令,向人展示 bundle | 自动上传、声称已人工复核、修改产品代码 |
46
+ | Frontend Project Context | 严格验证输入,附加本地协议/健康元数据,稳定生成 Evidence Bundle | 读取业务代码、猜测敏感信息、执行复现步骤、决定产品需求 |
47
+ | 人 | 检查自由文本和关联风险,决定是否转交、转交给谁 | 记忆 schema 或手工拼装运行时元数据 |
48
+ | 中心产品项目 | 验证 bundle、聚类、复现、按宪法分类 | 远程控制目标项目、把证据自动晋升为路线或 Contract |
49
+
50
+ ## 4. CLI 合同
51
+
52
+ 唯一新增命令:
53
+
54
+ ```text
55
+ project-context evidence --project PATH --input FILE [--json]
56
+ ```
57
+
58
+ 约束:
59
+
60
+ - 命令永久只读,不接受 `--write`、`--output`、`--upload`、URL、token、destination 或 shell 参数;
61
+ - `FILE` 必须是项目根目录内已存在的普通 JSON 文件,经过既有 path-policy 检查,不跟随越界 symlink;
62
+ - 命令只读取 Evidence Input、现有 Project Context store 与 AI Entry;不读取 input 声明之外的任务工件、日志、业务代码或 Git;
63
+ - uninitialized、partial、invalid、attention 和 clean 都可以产生证据,且所有项目字节保持不变;
64
+ - 输入或 schema 无效返回退出码 2;成功生成 bundle 返回 0,`result: failed` 本身不改变命令退出码;
65
+ - `--json` 输出 canonical pretty JSON;文本模式只给出结果、健康、finding code、bundle digest 和“必须人工复核后转交”的摘要,不展开自由文本;
66
+ - stdout 是唯一输出,重定向或复制属于 Host/人的外部行为,不由产品执行。
67
+
68
+ ## 5. Evidence Input schema 1
69
+
70
+ 输入只表达已经观察到的事实,不包含授权或产品决定:
71
+
72
+ ```json
73
+ {
74
+ "schemaVersion": 1,
75
+ "capability": "takeover",
76
+ "result": "blocked",
77
+ "environment": {
78
+ "runtime": "node",
79
+ "runtimeMajor": 22,
80
+ "packageManager": "redacted",
81
+ "projectShape": "single"
82
+ },
83
+ "expected": {
84
+ "code": "takeover-clean",
85
+ "summary": "A clean project should select ready-for-task."
86
+ },
87
+ "observed": {
88
+ "code": "entry-conflict",
89
+ "summary": "The managed entry reported an ownership conflict."
90
+ },
91
+ "errorCodes": ["ai-entry-ownership-conflict"],
92
+ "reproduction": [
93
+ {
94
+ "operation": "status",
95
+ "outcome": "blocked",
96
+ "findingCodes": ["ai-entry-ownership-conflict"]
97
+ }
98
+ ],
99
+ "artifacts": [
100
+ {
101
+ "kind": "project-status",
102
+ "digest": "sha256:..."
103
+ }
104
+ ],
105
+ "redactions": [
106
+ {
107
+ "field": "environment.packageManager",
108
+ "method": "redacted"
109
+ }
110
+ ]
111
+ }
112
+ ```
113
+
114
+ ### 5.1 固定枚举
115
+
116
+ - `capability`: `setup | takeover | maintenance | staged-context | upgrade | other-protocol`
117
+ - `result`: `passed | degraded | blocked | failed`
118
+ - `environment.runtime`: `node | other | redacted`
119
+ - `environment.packageManager`: `npm | pnpm | yarn | bun | other | redacted`
120
+ - `environment.projectShape`: `single | monorepo | multi-context | redacted`
121
+ - `reproduction[].operation`: `capabilities | status | setup-preview | sync | check | context | preflight | stage-context | integration-review | publish-entry-preview | remove-entry-preview | upgrade-baseline | other-protocol`
122
+ - `reproduction[].outcome`: `passed | degraded | blocked | failed`
123
+ - `redactions[].method`: `removed | generalized | hashed | redacted | not-collected`
124
+
125
+ ### 5.2 严格限制
126
+
127
+ - schema 严格拒绝未知字段;
128
+ - `expected.code`、`observed.code`、error/finding code 使用稳定小写 ID;
129
+ - 两个 summary 为必填单行文本,各不超过 500 个 UTF-8 字节;
130
+ - `errorCodes` 最多 32 项,`reproduction` 最多 20 步,`artifacts` 最多 32 项,`redactions` 最多 32 项;
131
+ - canonical UTF-8 输入总量不超过 32 KiB,超限返回 `evidence-input-budget-exceeded`,不得截断;
132
+ - artifact 只允许 `kind + sha256 digest`,不允许 path、URL、正文、base64、文件名或外部 ID;
133
+ - 不接受时间戳、用户名、reviewer、approval、decision、priority、targetVersion 或 release 字段;
134
+ - 输入文件本身是 Host 管理的短生命工件,不被注册为 source,不进入 Contract,也不写入 projection lock。
135
+
136
+ ## 6. 隐私与脱敏合同
137
+
138
+ schema 通过不等于自由文本已经脱敏。运行时只能保证**按结构不采集**以下字段:
139
+
140
+ - Project Contract item value/statement;
141
+ - source body、业务代码、diff、日志正文、聊天和模型推理;
142
+ - 项目 ID/name、仓库 URL、绝对路径、分支名、用户名、主机名;
143
+ - token、cookie、环境变量、凭据和上传地址;
144
+ - item/source/path 列表与可反推出业务结构的 locator。
145
+
146
+ `expected.summary` 与 `observed.summary` 是唯一自由文本面,始终被标为 `human-review-required`。产品不声称通过正则或模型识别完全部敏感信息,也不提供自动“脱敏完成”状态。
147
+
148
+ 如 Host Agent 无法在不暴露业务信息的情况下表达现象,应停止生成可转交证据,只向人报告 `evidence-redaction-blocked`。
149
+
150
+ ## 7. Evidence Bundle schema 1
151
+
152
+ 输出固定为:
153
+
154
+ ```json
155
+ {
156
+ "schemaVersion": 1,
157
+ "kind": "target-project-evidence",
158
+ "product": {
159
+ "name": "frontend-project-context",
160
+ "version": "1.5.0",
161
+ "exchangeProtocolVersion": 3
162
+ },
163
+ "capability": "takeover",
164
+ "result": "blocked",
165
+ "environment": {},
166
+ "expected": {},
167
+ "observed": {},
168
+ "errorCodes": [],
169
+ "reproduction": [],
170
+ "artifacts": [],
171
+ "redactions": [],
172
+ "projectContext": {
173
+ "initialization": "initialized",
174
+ "health": "conflict",
175
+ "entryState": "conflict",
176
+ "findingCodes": ["ai-entry-ownership-conflict"],
177
+ "schemas": {
178
+ "contract": 2,
179
+ "sourcesLock": 1,
180
+ "projectionsLock": 2
181
+ }
182
+ },
183
+ "transfer": {
184
+ "state": "human-review-required",
185
+ "automaticUpload": false,
186
+ "destination": null
187
+ },
188
+ "boundaries": {},
189
+ "bundleDigest": "sha256:..."
190
+ }
191
+ ```
192
+
193
+ ### 7.1 派生规则
194
+
195
+ - product/version/protocol/schemas 来自当前本地运行时,不接受输入覆盖;
196
+ - `projectContext` 复用 `status` 的初始化、健康、Entry 和 finding code 语义,但剔除项目身份、snapshot digest、source/item/path/readTargets/workUnits;
197
+ - boundaries 复用 capabilities 的永久 false 声明;
198
+ - 输入数组去重并稳定排序;reproduction 保留调用顺序;
199
+ - 不添加 generatedAt、随机 ID、cwd 或机器信息;相同输入与相同 Project Context 状态必须产生逐字节相同 bundle;
200
+ - `bundleDigest` 是排除自身后的 canonical JSON SHA-256;
201
+ - 输出总量不超过 48 KiB,任何超限均失败封闭而不截断;
202
+ - transfer 永远是 `human-review-required`,本阶段没有能把它改为 `approved`、`ready` 或 `sent` 的参数。
203
+
204
+ ### 7.2 状态与观察分离
205
+
206
+ Evidence Input 的 `result` 是某次能力观察;`projectContext.health` 是生成证据时的治理健康。二者可以不同,命令不得把 clean 解释为观察已通过,也不得把 failed 解释为项目 store 无效。
207
+
208
+ ## 8. 中心接收与分类模板
209
+
210
+ 中心项目只在人工转交后使用以下模板,不由目标项目自动填写产品结论:
211
+
212
+ ```text
213
+ Evidence digest:
214
+ Product version / capability:
215
+ Reproduction status: reproduced | not-reproduced | insufficient
216
+ Constitution category: kernel-defect | constitution-evolution | project-data | optional-adapter | external-tool
217
+ Invariant or completion condition affected:
218
+ Minimal central fixture:
219
+ Duplicate evidence digests / cluster key:
220
+ Human decision: reject | request-more-evidence | design-candidate | project-guidance
221
+ ```
222
+
223
+ 固定规则:
224
+
225
+ 1. bundle digest 相同可以去重,但不同 digest 不自动代表不同问题;
226
+ 2. 聚类只提高审查优先级,不产生实现顺序;
227
+ 3. `failed` 不自动等于内核缺陷;
228
+ 4. 只有中心复现违反宪法不变量或既定完成条件,才可进入内核缺陷候选;
229
+ 5. `design-candidate` 仍不是设计、实现、Git、发布或目标项目访问授权;
230
+ 6. Evidence Bundle 永远不是 Project Contract、source、approval、Action Plan 或 release record。
231
+
232
+ ## 9. capabilities 与协议版本
233
+
234
+ `1.5.0` 冻结以下 consumer change:
235
+
236
+ - package version:`1.5.0`;
237
+ - exchange protocol:`3`;
238
+ - capabilities schema:`3`;
239
+ - 新增 `commands: evidence`;
240
+ - 新增 `schemas.evidenceInput: 1`、`schemas.evidenceBundle: 1`;
241
+ - Action Plan、Review Bundle、Assist Bundle、Project Status、Task/Stage schemas 均保持现有版本;
242
+ - action kind 不增加,因为 `evidence` 是只读派生,不是请求持久写入的 action;
243
+ - boundaries 继续声明 `telemetry: false`、`network: false`、`provider: false`、`selfUpdate: false`,并新增 `automaticEvidenceUpload: false`。
244
+
245
+ capabilities 3 的 schema reader 不需要兼容读取 capabilities 2 文件,因为 capabilities 是运行时输出而非 store;外部 consumer 必须按 schemaVersion 分支。
246
+
247
+ ## 10. migration manifest
248
+
249
+ `1.5.0` 更新包内 `migration-manifest.json`,精确声明:
250
+
251
+ - `upgradeFrom` 同时包含当前公共基线 `1.3.1` 与本地能力基线 `1.4.0`;从 `1.3.1` 直达时完整继承 `1.4.0` manifest 的 AI Entry / projection-lock 延迟迁移和回滚声明;
252
+ - Contract、source lock、projection lock、proposal 均无迁移;
253
+ - projection/AI Entry renderer 不变;
254
+ - consumer change 只有 exchange 3、capabilities 3 和两个新 evidence schema;
255
+ - `writes` 为空,rollback class 为 `package-only`;
256
+ - 不读取或转换旧的聊天、日志或用户自建证据文件;
257
+ - 发布前只需候选包独立安装和离线 schema/CLI 冒烟,不需要网络内建能力。
258
+
259
+ Phase C 的 upgrade check/plan/apply 仍不进入本版本。
260
+
261
+ ## 11. 错误合同
262
+
263
+ | code | 退出码 | 含义 |
264
+ | --- | --- | --- |
265
+ | `evidence-input-missing` | 2 | input 文件不存在 |
266
+ | `evidence-input-invalid` | 2 | JSON 或 schema 无效 |
267
+ | `evidence-input-outside-project` | 2 | 路径越界或 symlink 不可信 |
268
+ | `evidence-input-budget-exceeded` | 2 | canonical UTF-8 输入超过 32 KiB |
269
+ | `evidence-output-budget-exceeded` | 2 | 完整输出超过 48 KiB |
270
+ | `evidence-redaction-blocked` | 2 | 输入包含结构上禁止的敏感载体或无法形成安全摘要 |
271
+ | `evidence-project-state-unreadable` | 2 | 无法形成最小 Project Context 状态 |
272
+
273
+ partial/invalid/attention/conflict 是可记录的 Project Context 状态,不因其本身阻止只读证据生成。只有状态无法被现有 `status` 安全解释时才返回 `evidence-project-state-unreadable`。
274
+
275
+ ## 12. 实现结构
276
+
277
+ 获得单独实现授权后,允许的主要变更范围为:
278
+
279
+ | 文件 | 允许变更 |
280
+ | --- | --- |
281
+ | `src/project-context/evidence-schema.mjs` | 新增严格 input/bundle 归一化、预算和 digest 合同 |
282
+ | `src/project-context/evidence.mjs` | 新增只读 bundle 聚合,复用 status/capabilities |
283
+ | `src/project-context/capabilities.mjs` | capabilities 3、evidence schema 与 boundary 声明 |
284
+ | `src/project-context/exchange-schema.mjs` | package/exchange/capabilities 版本声明,不改变 action plan 语义 |
285
+ | `src/project-context/cli.mjs` | `evidence` 参数 allowlist、输出与退出码 |
286
+ | `schemas/evidence-input.schema.json` | Evidence Input schema 1 |
287
+ | `schemas/evidence-bundle.schema.json` | Evidence Bundle schema 1 |
288
+ | `schemas/capabilities.schema.json` | capabilities schema 3 |
289
+ | `migration-manifest.json` / schema | 1.5.0 无 store 写迁移声明 |
290
+ | `test/project-context/evidence.test.mjs` | A-91 至 A-100 |
291
+ | `test/release/acceptance.test.mjs` | 包文件、版本、manifest、schema 与文档 pin |
292
+ | `README.md`、`docs/04`、`docs/05`、`docs/08`、`UPGRADING.md`、`examples/` | 实现后同步真实公共行为 |
293
+
294
+ 实现不得修改 Contract/source/projection store schema,不得把 Evidence Input 注册为 source,不得引入通用日志解析器、secret scanner、上传器或中心数据库。
295
+
296
+ ## 13. 冻结验收 A-91 至 A-100
297
+
298
+ - **A-91 严格输入合同**:合法 input 可归一化;未知字段、非法枚举、路径/URL/body/base64/授权字段、超长文本和超量数组稳定失败。
299
+ - **A-92 确定性 Bundle**:相同输入和状态逐字节一致,数组规则稳定,bundle digest 自校验,输出不含时间、随机数、cwd 或机器身份。
300
+ - **A-93 全状态只读采样**:uninitialized、partial、invalid、attention、conflict、clean 都能在零写入下生成准确最小状态;不可读状态失败封闭。
301
+ - **A-94 隐私最小化**:fixture 中的项目 ID/name、绝对路径、source/item/path、Contract 正文、业务代码、日志和 secret 不进入输出;自由文本始终标记人工复核。
302
+ - **A-95 预算与无截断**:32 KiB 输入和 48 KiB 输出边界按 canonical UTF-8 bytes 计算;边界内稳定,越界报错,不静默截断。
303
+ - **A-96 结构化复现**:只接受冻结 operation/outcome/finding code,不执行任何步骤;观察 result 与当前 health 保持分离。
304
+ - **A-97 人工转交边界**:输出永远为 `human-review-required`,无 upload/destination/write 参数,生产源码无网络、遥测或文件输出路径。
305
+ - **A-98 capabilities 与迁移声明**:exchange 3、capabilities 3、两个 schema、无新增 action kind、package-only rollback 与运行时/manifest/package 完全一致。
306
+ - **A-99 中心分类不晋升**:Evidence Bundle 不可作为 proposal/Action Plan/approval 输入;聚类模板不生成 Contract item、产品方向或执行权限。
307
+ - **A-100 永久边界与回归**:A-01 至 A-90、B0、CLI、schema 和发布工件保持;仍无 Provider、Agent Runtime、Git、网络、依赖安装、测试执行、业务写入、自动上传、scheduler 或 daemon。
308
+
309
+ 若每个新增编号对应一个顶层测试,预期实现后总数不少于 106;只能在实现完成后记录实际通过数。
310
+
311
+ ## 14. 实现、验证与发布 Gate
312
+
313
+ 以下权限相互独立:
314
+
315
+ 1. 本文只完成详细设计;
316
+ 2. 用户于 `2026-09-11` 以“`1.5.0` 版本开始执行”明确授权本地实现;该权限已用于修改源码、schema、测试、package version、migration manifest 与实现事实文档;
317
+ 3. 使用真实目标项目生成证据需要独立范围、脱敏规则和只读访问授权;
318
+ 4. 把真实 Evidence Bundle 转交到中心项目需要人逐份决定;
319
+ 5. Git commit/tag/push、候选打包、网络和 npm 发布需要新的明确授权。
320
+
321
+ 即使未来实现 A-91 至 A-100 全绿,也不自动获得真实项目或发布权限。
322
+
323
+ ## 15. 明确不做
324
+
325
+ - 不实现自动上传、遥测、反馈 API、中心账号、队列或控制面。
326
+ - 不让产品扫描业务仓库、日志、diff、聊天或环境变量来“自动找证据”。
327
+ - 不承诺自动识别或清除所有敏感信息。
328
+ - 不保存 Evidence Bundle、Evidence Input、聚类、分析或转交历史。
329
+ - 不把 Evidence Bundle 注册为 source、写入 Contract 或投影。
330
+ - 不根据失败次数、项目数量或相似 digest 自动创建需求。
331
+ - 不提供远程修补、目标项目自更新、Provider 调用或 Agent Runtime。
332
+ - 不实现 Phase C upgrade check/plan/apply。
333
+ - 不发布 `1.4.0` 或 `1.5.0`。
334
+
335
+ ## 16. 停止点
336
+
337
+ 本文已冻结并完成 `1.5.0` 的用户问题、分类、只读 CLI、input/bundle schema、隐私与预算、人工转交、中心分类模板、协议版本、迁移声明、文件范围及 A-91 至 A-100。
338
+
339
+ 用户于 `2026-09-10` 授权“整理下个版本不用发布”,形成了本文;随后于 `2026-09-11` 明确授权开始执行 `1.5.0`。实现已在本地完成并通过 106/106,未生成真实项目证据、提交 Git、访问网络、打包或发布。
340
+
341
+ 本阶段实现权限已消耗。唯一合法下一步是用户明确授权一项具体的实现后工作(例如候选打包、真实项目只读验证或发布),或停止。
342
+
343
+ ## 17. 本地实现结果
344
+
345
+ `1.5.0` 已新增 `src/project-context/evidence-schema.mjs`、`evidence.mjs`、只读 CLI 入口和两份公开 schema;capabilities schema 与 Exchange Protocol 升至 3,Action Plan/Review Bundle 仍为 2,十类 action kind 不变。migration manifest 同时覆盖 `1.3.1` 与 `1.4.0` 基线,本版本 `writes` 为空且 rollback class 为 `package-only`。
346
+
347
+ A-91 至 A-100 各对应一项顶层测试,连同 A-01 至 A-90、B0、CLI、machine schema 与发布工件回归共 106/106 通过。测试只使用隔离临时 fixture。实现没有 Provider、Agent Runtime、Git、网络、依赖安装、业务代码执行、自动上传、telemetry、scheduler、daemon 或真实项目访问。