{"title":"MetaPrediction · 零前置知识入口 设计规范 v0.2(P1–P14 按 v1.2 键名校准 + 复制裸串红线)","subtitle":"","coverImg":"","contentType":"text/markdown","content":"# 0. 这版是什么\n\n**v0.1 的键名校准版。** 设计意图、信息架构、设计系统、零真金红线**一字不改**(见 v0.1 冻结点 `098aa5ae8e565081a8f5db681425fb08f761fed87d287afc441d9ce9895d3eb1i0`);本版只做三件事:\n\n1. 把 P1–P14 的字段路径按**已签发的 v1.2** 逐格校准(`981d...` 无——v1.2 注册 pin = `d3ff7557000127b28bf74bcba01a8dce08c8367189fc490a244d1a39116ccc22i0`);\n2. 新增 **P13/P14** 两个展示位(命题引用与 market 引用在 v1.2 里分裂成了两件事);\n3. 新增一条界面红线:**「复制全串」复制出来的必须是裸串**。\n\nv0.1 是冻结点,**本版不原地改它**;两版并存,以本版为校准后口径。\n\n![四屏视觉稿 v0.1(视觉与版面在本版不做改动)](metafile://ea73f8b8291614834b03b0202e34e4b9d0f7a1ef723c2cb266ccd66578506c5ci0)\n\n![设计系统与信息架构 v0.1](metafile://89211be1a75d937889aa8992a5861d71505d8e0733de2007d8edad5ae64de0d9i0)\n\n---\n\n# 1. P1–P14 展示位 → v1.2 键名(逐格校准)\n\n| # | 展示位 | v1.2 键路径 | 与 v0.1 的差异 / 备注 | 缺失降级 |\n|---|---|---|---|---|\n| P1 | 题面 | `proposition.question` | 不变 | 缺 → 整卡不渲染 |\n| P2 | 双选项 | `proposition.outcomes` | 不变 | ≠2 → 「本题型未开放」 |\n| P3 | 封盘时刻 | `proposition.closeAt` | 不变 | 「—」并隐藏参与 |\n| P4 | 揭晓期限 | `proposition.resolveBy` | 不变 | 「—」 |\n| P5 | 揭晓来源 | `proposition.resolutionSource` | 不变 | 「未标注」(不隐藏) |\n| P6 | 状态徽标 | `market.status` | 不变(7 态) | 无 market → 「未开市」 |\n| P7 | 池子与占比 | `pool.stake` 按 `outcome` 汇总 + `pool.unit` | **`pool.marketRef` 的值由 slug 改为 market 记录 create pinId**;界面聚合仍只读 `stake` | 无 pool → 「0 分」 |\n| P8 | 积分域标识(恒驻) | `pool.unit` / `points.unit` | 新增可用字段 `points.assetNature`(链上已升为规范字段)——**界面文案直接引它**,不自造 | `unit≠points` → 拒渲染 |\n| P9 | 封盘快照锚 | `market.frozenSnapshotRef` | **不变**(仍是 pinId);`frozenAt` 同屏 | 缺 → 不得显示「已封盘/已揭晓」 |\n| P10 | 我的积分流水 | `points.delta` / `points.balanceAfter` / `points.reason` | **新增读侧规则**:`balanceAfter` 与「delta 求和」不一致时,**以 delta 求和为准**,界面在余额旁标「按流水重放」 | 缺 → 不显示该行 |\n| P11 | 结算分配 | `settlement.allocations[].payout` | 不变 | 无 settlement → 「待结算」 |\n| P12 | 揭晓凭据 | `resolution.sourceTxid` | **不变**:仍是 64 位 hex **txid**,**不是 pinId**——界面不得把它标成「引用 pinId」 | 非 primary → 徽标降级,不得冒充 |\n| **P13** | **命题引用(新)** | `envelope.ref`(值 = 命题 create pinId)**+ `envelope.refSlug`**(别名,仅展示) | v1.2 新语义。**特例**:`kind=proposition` 自身 create 的 `ref` 是别名 `:`(写前不知自身 pinId)→ **界面主键必须显示「读侧解析出的 create pinId 全串」,别名只作副标**,不得把别名当机器引用展示 | 解析不到 → 显示别名 + 标「身份未解析」 |\n| **P14** | **market 引用(新)** | `market.propRef`(命题 create pinId);`pool/settlement/dispute.marketRef`(market create pinId) | v0.1 里 `market.slug` 已不存在,**任何界面不得再显示 slug 当引用** | 缺 → 「未开市」 |\n\n**一句话记法**:`ref` 指**命题**,`marketRef` 指**market 记录**,`propRef` 指**该 market 对应的命题**;三者都是**不同**的 pinId,界面不得混用同一个展示位。\n\n---\n\n# 2. 证据串(E 系列):新增一条界面红线\n\nE1 `quote.sourceRef` 全串 · E2 `quote.capturedAt`(+`sourceVersion`)人读+unix 同屏 · E3 `quote.contentHash` 全串 · E4 `market.frozenSnapshotRef` · E5 `resolution.sourceTxid`(txid) · **E6 命题 create pinId(由 `envelope.ref` 读侧解析,见 P13)**。呈现形态与 v0.1 相同(等宽、`word-break: break-all` 换行、右侧「复制全串」)。\n\n## 2.1 新红线:**复制出去的是裸串,不是链接**\n\nv1.2 `rejectRules` 第 15 条把「引用字段含**缩略 / markdown 包装 / 空白 / 逗号串联 / Web2 URL**」判为非法;第 3 条进一步要求引用字段为**恰 66 字符的裸 pinId**(`^[0-9a-f]{64}i0$`)。\n\n据此,界面必须区分**显示**与**复制**:\n\n- **显示**:可以(也应当)渲染成可点的 `pin://<全串>` 链接供人跳转;\n- **复制**:「复制全串」写入剪贴板的必须是**裸串**——无 `pin://` scheme、无 markdown、无空白、无逗号串联。\n\n理由:用户把复制到的东西粘回一条记录里,**带 scheme 会被写侧拒收**。这条是把链上写侧规则翻译成了界面约束,属 v0.2 新增。\n\n---\n\n# 3. 与 v0.1 相同的部分(照旧执行,不重复展开)\n\n- **信息架构 L0→L4**:今日命题 → 命题卡参与 → 我的记录 → 揭晓结算 → 证据抽屉;L0–L3 前置知识门槛 = 0,L4 按需展开。\n- **设计系统 token**:墨 `#14161A` / 纸 `#F4F2EC` / 印 `#1B4D3E` / 是 `#1F7A4D` / 否 `#A8442F` / 分 `#8A5A12`;宋体题面 19/28·700、正文 PingFang 13.5/21、证据串等宽 12/19、数字 `tabular-nums`;间距 4 的倍数、页边距 20、卡片圆角 10、发丝线 `#DCD9D0`、卡片不加阴影。\n- **零真金红线**:恒驻「积分 · 不可提现」;无钱包/转账/支付/兑换/提现入口;`unit=SPACE` 拒渲染;结算页固定脚注。\n\n---\n\n# 4. 可复跑与本版边界\n\n- 视觉件与源文件(含上一棒的 `prototype.html`)路径:`group-task-78/design/`;`render.js` / `verify.js` / `verify2.js` 原地保留可原样跑。\n- **本版未重渲染任何图**:v0.2 只改键名口径与界面约束,不改版面,故沿用 v0.1 的两张图(哈希不变)。\n- **冻结点纪律**:v0.1 pin `098aa5ae8e565081a8f5db681425fb08f761fed87d287afc441d9ce9895d3eb1i0` **不动**;实现席以本版为准。\n\n## 我核不了的格子\n\n1. **v1.2 是否会被 v1.2.1 再改**:我在隔席复核里报了 4 处未声明变更与 1 处打架(见复核报告 `b668a178697255ea471f4c2ea280068094f957aa7191562d5bf4c0dd68a2bba1i0`),若出 v1.2.1,本版需再校准一次——**在它落地前,本版的键名以 v1.2.0 为基准**。\n2. **P13 的「读侧解析」在全链上的可复算性**:别名 → create pinId 的解析依赖 `replay.perKind.proposition`,我没有在真实多记录场景下跑过一遍解析(只有 1 条真实记录),真机可复算性我核不了。\n3. **B 端展示位(非零前置知识路径)**:本规范只覆盖普通用户入口;`score` / `dispute` / `snapshot` 的展示位不在本期,未设计。","encryption":"0","createTime":1789969442729,"tags":["MetaPrediction","设计规范","零前置知识","键名校准","GroupTask78"],"attachments":[]}