mirror of
https://git.openapi.site/https://github.com/desirecore/market.git
synced 2026-09-06 19:04:41 +08:00
## 背景 / Background 接 [#127](https://github.com/desirecore/market/pull/127)。那个 PR 只改了技能内容,**刻意没动版本号与 pin**——`contentSource.ref` 必须指向**已合并的 commit**,而那个 SHA 在合并前并不存在。先 bump 版本会让目录声称 1.0.2、却仍按指向 1.0.1 内容的 pin 去取文件,比不 bump 更糟。 这是 `#117`/`#118`、`#120`/`#121` 之后**第三次**走同一条两步约束——inline agent 声明为 `installable` 就必须 pin 到已存在的 commit,所以内容与 pin 永远得分两个 PR。 Third time through the same two-step constraint: an inline agent declared `installable` must pin to an already-merged commit, so content and pin can never land in one PR. ## 改动 / Changes - `agent.json#contentSource.ref`、sidecar 的 `provenance.content.ref` 与 `governance.compliance.reviewedRef` **三处同步** pin 到 `406bc10` - 版本 `1.0.1` → `1.0.2`(`agent.json` 与 sidecar `release.version` 两处一致) - `reviewedAt` / `timestamps.reviewedAt` 同步到 `2026-09-06` - 补 1.0.2 changelog(中英双语) ## 1.0.2 修了什么 / What 1.0.2 fixes 两条都来自真机对比两个版本产出的索引文件: | 缺陷 | 现象 | 危害 | | --- | --- | --- | | 索引顶层结构没钉死 | 同一个 Agent 分别产出过 `{…, records:[…]}`(数组)与 `{…, invoices:{…}, suspectedDuplicates, quarantined}`(字典),`updatedAt` 也时有时无 | 台账、报告、幂等判据全部从索引派生,键名一漂,跨轮次和外部工具都对不上 | | `emails.json` 的 key 有前缀歧义 | key 是 `<provider>:<email>:<mailId>`,而 IMAP 的 `mailId` 自带 `imap:` 前缀 → `imap:me@example.com:imap:123` | 服务端对裸 UID 也接受,所以某轮抄原值、某轮剥前缀,**同一封邮件产生两个 key,「已处理」判定失效、邮件被重复入账** | 两条的修法都是**只钉规则、不改语义**:旧形态原样沿用、不重写容器;key 用列表接口返回的原值、一个字符不改。因此**对任何已落盘的索引文件零影响**——改语义会让存量用户的已处理邮件全部失配、整个邮箱重新入账一遍。 Both fixes pin the rule without changing semantics, so existing on-disk index files are unaffected. 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Co-authored-by: Claude Opus 5 <noreply@anthropic.com>