# 工作纪律（%%VERSION%%）· %%COUNT%% 条

> 本文件由 `scripts/render_discipline.py` 从真源
> `docs/工作纪律_认知图条目_v1.1.json` 渲染生成，**请勿手改**；改真源后重跑渲染。
> 真源指纹（SHA256 前16位）：%%SOURCE_SHA%%

## 概述

%%OVERVIEW%%

## 执行公约

| 约定 | 内容 |
|---|---|
| **0.1 会话起始先查记忆** | 动手前先调认知图入口——工具名随端：MCP 端 = server「mdcg」的 `cg`；DSH 端 = 内建基元 `cg`（即下文所有 `cg(...)`，同一服务勿因名字不同而猜测）。**`op` 是必填参数（route/read/write/verify/review…），任何调用都显式传、勿省略**。先 `cg(op=route, intent=<任务意图>)`；命中纪律/知识则按其 `execution.how` 执行。**禁止跳过此步直接改代码或跑命令。** |
| **0.2 命中即声明** | 命中纪律须在回复中输出该条 `response.direct` 原文（「按工作纪律第 N 条：…」）。**这是「已执行」的唯一可观测证据；未声明即视为未执行。** |
| **0.3 产出即证据** | 「动作」栏要求的产出（判定单／检索结果／验证结论／归档节点 id）必须实际给出，缺失即未执行。 |
| **0.4 违规即归档** | 发现自己违反任一条 → 第 4 条归因 + 第 16 条写入灵枢记忆。**隐瞒违规本身是更严重的违规。** |
| **0.5 例外不外溢** | 某条的「不适用」只豁免该条，不豁免其它条。 |

## 纪律路由表

%%SPEC_FULL%%

%%ROUTING_APPENDIX%%

## 声明出口（`response.direct` 原文 · 未输出即未执行）

%%DECLARATION_TABLE%%

## 记忆接口速查（`cg` / `stg`）

工具名随端：MCP 端 = server「mdcg」的 `cg` / `stg`；DSH 端 = 内建基元 `cg` / `stg`（与 `cg` / `stg` 同一服务，仅注册名不同）。**`op` 一律必填。**

| op | 用途 | 常用参数 |
|---|---|---|
| `route` | 任务开始路由记忆（返回知识 + 建议能力，不执行） | `intent`（任务意图） |
| `read` | 召回/检索/按 id 取（`session`=只取该会话归属的记忆，缺省不过滤；`validity=true`=时效过滤（显式启用，缺省不过滤），**仅排除「已过期」，「未生效」一律保留**——两者语义相反） | `query` / `node_id` / `k` / `layer` / `budget_tokens` / `context` / `session` / `validity` |
| `edges` | 三元组反查（**只读**）：按派生边任意端/谓词/时间反查「这条记忆从哪来 / 谁由它派生」（subject/predicate/object 即 child/relation/parent）；`expand_nodes=true` 附命中端点节点卡 | `child` / `parent` / `relation` / `batch` / `start_time` / `end_time` / `time_axis` / `ordering` / `offset` / `limit` / `aggregation` / `expand_nodes` |
| `write` | 写入（先按 content_kind 审核 + 冲突检测，ACCEPT 落盘 / DEFER 入审核队列 / REJECT 入负记忆）。**自动归属**：frontmatter 带 `writer`/`session`/`harness`（服务端身份，不可伪造） | `content` / `content_kind`（text/code/…）/ `node_id`（同 id 即改写）/ `layer` / `tags` / `importance` / `verification_basis` / `condition_space` / `gated` / `consistency` / `on_conflict`（reject\|defer\|record） |
| `verify` | 对节点做证据验证（confirmed/weakened/falsified）——**非队列裁决** | `node_id` / `verdict` / `evidence` |
| `review` | 审核队列：`action=list/rounds/records/stats` 查看；传 `pid`+`decision`+`reason` 即裁决落盘（accept/reject/edit/merge/noop，**需 can_admin**；`noop`=已评估且判定不改动任何现有记忆，只留痕不入库、不进负记忆；本机未配置外部验证器时写入恒 DEFER 入队，靠此裁决落盘） | `action` / `pid` / `decision` / `reason` / `edits` / `merge_into` |
| `task` | 结构层任务实体（工程台账，跨会话/上下文压缩后不遗忘）：`name` 即身份（同名即同任务，slug 归一），`action` = open/status/plan_add/get/list/find/session（缺省 list）；**迁 `done` 必须同时给 `result`**（缺一不收，拒收不落盘）；未提供的字段沿用旧值（结果不会被静默清空） | `name` / `action` / `plan`（分步计划，每轮覆盖） / `change`（计划变更，逐轮追加） / `result` / `task_status`（active\|blocked\|done\|dropped） / `goal` / `acceptance` / `boundary` / `condition` / `node_id` |
| `recent` | 近期事件窗口 | `action`（add/list/clear）/ `limit` |
| `forget` / `protect` | 软删除/恢复 / 写保护 | `node_id` |
| `help` | 取回工具面上**被投影外置**的完整 op / 参数文档（工具面渐进披露：常驻提示只留一行职责，参数语义按需取；不带 `query` 则列出全部工具） | `query`（工具名或 op 名，如 `cg` / `write`）/ `limit` |

三条调用铁律：
1. **`op` 必填**——漏传会触发参数签名推导兜底（返回标记 `op_derived: true`），复杂任务中也必须显式传，防静默执行错误意图。
2. **返回 `moved_to: "review_queue"` / `verdict: DEFER` 时不要重试**——这是校验闸门的正常行为（返回自带 `hint` 说明下一步）；落盘须经裁决（`op=review` 的 `decision=accept/reject/edit/merge/noop`，本机工具：`python scripts/review_cli.py list`）。**裁决权（2026-09-28 使用者裁定）**：写入者不得自裁——不得自己写、自己判、无复核一路到底；**经蜂群或验证端复核后，agent 可自行执行裁决**，不必每次转告使用者。**三类例外不适用该授权，必须转交使用者并止步**：①不适用于智能论这类重要协议真源的修改；②不适用于向外部发送信息和数据；③不适用于可能造成信息泄露／病毒／恶意操纵的动作。**`verdict: REJECT` 分两类，处置相反**：① 命中禁止规则（内容政策违规）→ 内容本身不该入库，重试同样结果；② 缺必需要素（`text` 类缺 CCG 六要素）→ **可修正**，按 `verdict.evidence` / `verdict.detail.missing` 给出的**完整缺失清单**补齐六要素后**重写**即落盘（本条未入库、已记入负记忆）——不要把它当「闸门故障」或「重试无用」。
3. `stg` 同理经 `op` 分发（`timeline` / `relation` / `anchors` 等）。

## 收尾强制流程（任务完成时不可跳过）

1. **验证**（第 5 条）：未验证不固化——回放／断言／回归通过才收尾。
2. **归档**（第 16 条）：提炼关键修改（内容／原因／位置／验证结论四要素，禁写中间过程）→ 写入灵枢记忆。
3. **自检**（第 4 条）：本次是否有违规？有 → 按条件层归因，并补不适用条件。

## 本文件维护（防漂移）

- 真源唯一：`docs/工作纪律_认知图条目_v1.1.json`。
- 本文件是**渲染产物**，不是手抄投影；任何端的手改都会被 `scripts/verify_discipline.py` 判为漂移。
- 改纪律 → 改真源 → `render_discipline.py --write` → `verify_discipline.py` 通过 → 提交。
