docs(判据): 补「已知限制」与「缺省语义登记」两节;build.sh 把原始 dep/=> 行写进 BUILD_INFO
pi 2026-09-14 两件: 1. **登记册真的没有**。我上封信说"已写进 test/CRITERIA.md 的已知限制一节"——**不成立**, 只有 `appearance-defaults.test.mjs` 里有那段注释。已在 CRITERIA.md 补 §9「已知限制」 (标识符只解析一层;静态判据的到期前提是"本工作区能装能点")。 过度声明自己做过什么是这轮反复出现的那一类错,这次是同一个形状的又一例。 2. **新建 §10「缺省语义登记处」**(pi 的更正:不是无条件 fail-closed,而是"缺了的后果必须 有人登记 + 写明谁批准了这个方向")。三条入库,各带依据: · 邮件 `permission_mode` 缺 → **不写、不改档**(窄),依据是本轮那个 `|| 'workspace'` 兜窄档的坑; · HomeAgent `plugin.json.sdk` 缺 → 内核**不读**(不是语义,是文档),依据内核 manifest.go 结构体 + registry.go; · HomeAgent `capabilities` 缺 → **不受限**(宽),依据内核注释明写的理由:17 个存量清单都没有它。 3. `build/BUILD_INFO.txt` 现在**原文贴入** `go version -m <内核>` 的输出,并附"这两行怎么读" (`dep … vX.Y.Z` 后面跟 `=> … (devel)` 时那串版本号只是 require 行残留;`=>` 必须按模块名联接)。 理由:这场争论的全部内容就是这两行该怎么读,原始证据必须和结论放在一起。
This commit is contained in:
@ -324,3 +324,34 @@ git worktree add /tmp/attr HEAD #
|
||||
(这也是为什么 `BUILD_INFO.json` 要记 `gitRev`/`gitDirty`:产物自带来源,比事后猜强)。
|
||||
|
||||
**一句话**:归因手段的选择标准是"**会不会让别人的东西处于危险里**",不是"哪条命令最快"。
|
||||
|
||||
## 9. 已知限制(登记处)
|
||||
|
||||
判据的**能力边界**必须写在这里,否则它的长期结局只有两个:被当成"它就是全能的"而误用,
|
||||
或者被反复问"为什么它读不懂"。
|
||||
|
||||
**9.1 标识符只解析一层**(pi 2026-09-14;实现见 `appearance-defaults.test.mjs`)
|
||||
|
||||
需要比对"某个常量两边是否一致"时,判据会跟一层标识符(例如 `const R = TOKENS.radius`)。
|
||||
**再深就不跟了**:那不是"读一个常量",而是"执行 Go/TS",判据会直接报"读不懂"并要求人看一眼。
|
||||
后果:如果常量经过两层以上转发,判据会红(而不是误判为不一致)—— 这是有意的取向:
|
||||
**宁可报读不懂,也不猜**。要覆盖两层,正解是把值写进一个显式的契约文件,而不是加强解析。
|
||||
|
||||
**9.2 静态判据的到期前提是"本工作区能装能点设备"**
|
||||
|
||||
5 条鸿蒙侧的判据只能验形态(`RESULT static=5`)。前提一旦成立,套件**自动变红**
|
||||
(探针三值:可用 / 不可用 / 拿不准→红)。到期报文里会列出需要放行的目录(在工作区外)。
|
||||
|
||||
## 10. 缺省语义登记处(不是"默认值",是"缺了意味着什么 + 谁批准")
|
||||
|
||||
pi 2026-09-14 提的形状:**不是无条件 fail-closed** —— 缺字段可以是"宽"也可以是"窄",
|
||||
**不可接受的只有"缺了却没人知道它意味着什么"**。所以这里登记的是缺省**语义与方向**。
|
||||
理由要带上:反例来自 HomeAgent 内核自己的 `PluginManifest.Capabilities`,
|
||||
它的注释写明"省略或为空 = **不受限**",因为 17 个存量清单都没有这个字段,
|
||||
若把空声明当最小权限,它们会全部静默失去 IO 注入与记忆读写。
|
||||
|
||||
| 字段 | 缺省语义 | 方向 | 谁批准 / 依据 |
|
||||
| --- | --- | --- | --- |
|
||||
| 邮件的 `permission_mode` | **不写、不改档**(不是写默认档) | 窄(fail-closed) | 本仓 2026-09-14:缺字段被 `\|\| 'workspace'` 兜成窄档,等于"一个 bug 以正常形态活着";守卫见 `plugins/*/lib/permission-mode.js` 的 `modeForStateWrite` |
|
||||
| HomeAgent `plugin.json` 的 `sdk` | **内核不读**(字段只对人有效) | 无(不是语义,是文档) | 内核 `internal/plugin/manifest.go` 的结构体里没有该字段;`registry.go` 的 `loadOne` 只用 `NameZh/NameEn` |
|
||||
| HomeAgent `plugin.json` 的 `capabilities` | **不受限** | 宽(fail-open) | 内核注释明写理由:17 个存量清单都没有它,空声明当最小权限会让它们**静默降级** |
|
||||
|
||||
Reference in New Issue
Block a user