Skip to content

Commit 29bb510

Browse files
committed
docs: adopt UserVisibleReplyLayoutV1 across five hosts
Standardize plain-language PC0-PC7 entry tables, plain-first FinalValidationSummary, and review-in-plain-language for completion. Update composeEntryCheckBlock, compliance/precheck templates, host-instruction projections, and Grok workspace skill so Copilot/Claude/Codex/Gemini/Grok share one visible layout.
1 parent 6fa3569 commit 29bb510

15 files changed

Lines changed: 157 additions & 87 deletions

File tree

‎changelogs/unreleased.md‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
> **当前**: v1.15.3 已归档到 `changelogs/releases/v1.15.3.md`;本文件仅保留历史锚点索引与镜像供 validate 探针消费。发版后新实现再写入下方「当前未发布」。
55
66
## 当前未发布实现候选
7+
- **UserVisibleReplyLayoutV1(五宿主同源 · 人话优先)**:入口检查推荐 PC0~PC7 表格人话(禁止进度缩写/折叠行);完成态增加「复审验证(白话)」;`FinalValidationSummaryV1` 强制白话在上、命令+exitCode 证据在下(共享 `shared/compliance/validation-summary.md`);`composeEntryCheckBlock` / `precheck-status` / `17-compliance` / `user-visible-output-contract` / compliance Skill / 01-common / 16-report 同源;host-projections 重生。
78
- **控制面规范资产去重与确定性组合**:新增 `content-source/` 作为 135 个 instruction/prompt/Skill Markdown 的唯一手写根,保留既有 tracked delivery 路径;22 个 build-time 单层 shared fragments 覆盖 58 个消费点,26 exact + 4 near-section 候选全部有 disposition。新增 zero-write materializer、受控 extraction、重复分析、compatibility mirror、validation DAG invariant 与 prepack/package 排除门禁;修复 folded/literal frontmatter 解析和纯 `>`/`|` intent false-green,83 active intent 全部重生并通过 semantic quality。
89
- **在途缺陷绑定与渐进路由恢复**:新增 `InFlightIssueRequirementBindingGate`,禁止用 PI/PF 代替未闭环需求修订;`skill_route` 增加受约束的 `rebind` 操作,在 ContextRead 漂移后保持原 skill 决策、条件和兼容阶段进度,并用宿主会话身份隔离 Stop 约束。
910
- **工作区 Skill 意图结构化与渐进路由(B4 收口)**:83 个 active Skill 使用 `SkillIntentV1`;运行时构建 W + managed G 动态快照,经单一 `skill_route` MCP Tool 执行 catalog/commit/load_stage/status、0/1 自由选择、依赖闭包、冲突与预算校验、分阶段正文加载、条件重规划、幂等重放、会话隔离恢复和有锁 GC。统一路由现为 Claude/Codex/Copilot/Gemini/Grok 五宿主唯一源码默认,能力证据仅用于发布后观测,不再切换模式或阻塞完成;旧 `WorkspaceSkillAutoMatch` / `WorkspaceSkillIntent` 生命周期分支、CLI 入口和验证节点退出活跃闭包。修复跨会话 Stop 读取共享状态导致的 `test` 误触发,并把否定、截图、日志、报告、诊断性提及排除在显式调用外;多项目工作区目标未绑定时改为 `SkillRouteBootstrapPendingV1`,只接受 observed ContextRead plan 绑定现有项目,禁止用 workspace basename 创建合成 namespace。MCP 为宿主按需启动的本地 stdio 子进程,无端口、HTTP、远程服务或常驻 daemon。W 在每轮动态发现;用户原生 `AGENTS.md` / `CLAUDE.md` / `SKILL.md` 与个人 Skill 保持宿主所有权,同名不构成清理或覆盖权限。

‎content/instructions.md‎

Lines changed: 24 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -612,26 +612,33 @@ CP1(问题确认)→ CP2(方案确认)→ [impact-review] → [CP3] →
612612

613613
执行顺序:`预检查 PC0~PC7 → FC → SC → RC → 报告验证 V1~V6 → 任务完成验证 T1~T13`
614614

615-
### 入口检查输出格式(所有模式,所有工作流前置,chat 也须执行)
615+
### 入口检查输出格式(所有模式,所有工作流前置,chat 也须执行 · 五宿主同源)
616616

617-
```text
617+
> **UserVisibleReplyLayoutV1(人话优先)**:入口检查、正文、复审验证白话、完成检查/`FinalValidationSummaryV1` 对 **Copilot / Claude Code / Codex / Gemini / Grok** 使用**同一套**可见结构;宿主只影响硬拦/注入能力,不改变 PC 语义与人话规则。
618+
619+
```markdown
618620
### DevCodex · 入口检查
619-
`[PASS/WARN/BLOCK/UNVERIFIED]` · `[项目名]`
620-
621-
- PC0 [状态] ContextReadPlan 与必要来源回执
622-
- PC1 [状态] 语义初判 → 项目现实扩展后最终路由
623-
- PC2 [状态] 会话/Token 防护/待跟进
624-
- PC3 [状态] 唯一项目、连续性与产物落点
625-
- PC4 [状态] dev 规范雷达;非 dev 为 N/A
626-
- PC5 [状态] 当前宿主部署、同步与实际加载证据
627-
- PC6 [状态] git dirty、active task 与工作区一致性
628-
- PC7 [状态] 新会话或 resume 的 bounded continuation 检测
629-
630-
下一步:[必要动作]
631-
DevCodexVisibleEnvelopeV1 · entry-check · [状态] · [semanticDigest]
621+
`[PASS/WARN/BLOCK/UNVERIFIED]` · `[项目名/未识别]`
622+
623+
| 项 | 内容(人话;禁止进度缩写) |
624+
|----|----------------------------|
625+
| PC0 | 上下文:项目 · 语言 · ContextReadPlan + 必要来源回执(禁止只写「Profile 已加载」) |
626+
| PC1 | 意图:你这轮要做什么 → 扩展后工作流(如有修正须写明) |
627+
| PC2 | 会话:轮次/Token 防护 · 待跟进 |
628+
| PC3 | 执行准备:唯一项目 · 连续性 · 产物落点(禁止写成「写报告 02」类施工日志) |
629+
| PC4 | 规范雷达:dev 完整;非 dev 必须 `N/A` + skipReason |
630+
| PC5 | 宿主:当前宿主 + Full/Partial 诚实上限 · 部署/同步证据 |
631+
| PC6 | 工作区:git dirty 范围 · 当前任务目录 |
632+
| PC7 | 续接:新会话/resume 有界检测结果 |
633+
634+
下一步:[必要动作,一句人话]
635+
`DevCodexVisibleEnvelopeV1 · entry-check · [状态] · [semanticDigest]`
632636
```
633637

634-
入口检查、完成检查、确认、进度、最终结果与阻断统一由 `user-visible-output-contract` 投影;状态词固定为 `PASS / WARN / BLOCK / UNVERIFIED / N/A`。dev/fix/self-fix 的 completion-check 必须投影 `FinalValidationSummaryV1` 或等价短矩阵,列出命令/exitCode、runId 或关键计数、WorkspaceSyncStatus、dirty boundary、release action boundary;commit 声明还要列 post-commit replay。未知能力或缺证据不得用图标冒充 PASS;新会话、resume/compact、scope/risk/dirty/receipt 变化或存在非 PASS/N/A 时必须 expanded。
638+
**禁止**:`PC2–PC7` 折叠行;PC3/PC6 写成内部进度条;用图标冒充 PASS 且无证据。
639+
**兼容**:列表形式 `- PC0 [状态] …` 仍可识别,但**推荐表格**;PC0~PC7 必须分列可数(FreeTextEntryCheckCompletenessGate)。
640+
641+
入口检查、完成检查、确认、进度、最终结果与阻断统一由 `user-visible-output-contract` 投影;状态词固定为 `PASS / WARN / BLOCK / UNVERIFIED / N/A`。dev/fix/self-fix 的 completion-check 必须:① 可选「复审验证(白话)」三行结论;② 投影 `FinalValidationSummaryV1`(**白话在上、命令+exitCode 证据在下**),含关键计数、WorkspaceSyncStatus、dirty boundary、release action boundary;commit 声明还要列 post-commit replay。未知能力或缺证据不得用图标冒充 PASS;新会话、resume/compact、scope/risk/dirty/receipt 变化或存在非 PASS/N/A 时必须 expanded。
635642

636643
### FC 形式合规(必须全通过)
637644

@@ -702,7 +709,7 @@ DevCodexVisibleEnvelopeV1 · entry-check · [状态] · [semanticDigest]
702709
- 仅在用户明确追问内部分类/机制时才展开内部术语,且最小化展开
703710
- 涉及文件产物时,先形成内部 `ArtifactDeliveryManifestV1`,再由 `UserFacingArtifactSetV1` 确定性投影;默认不展示 session、daily、SUMMARY、task state、checkpoint、raw receipt/manifest/ledger
704711
- 可见项必须使用语义名称、用途、路径列、用户动作和稳定阅读顺序(ArtifactPathColumnGate:路径默认 workspace-relative portable)。Rich 点击能力已验证时名称用一个语义链接,可与 portable 路径列并存,不在路径列外重复 `绝对路径:` 行。绝对路径仅在用户要求、链接失败、工作区外、歧义或无法定位时进入路径列/fallback
705-
- 完成态最终回复不能只写“全绿 / 已通过 / 详见报告”;必须用 `FinalValidationSummaryV1` 短矩阵列出权威命令与边界证据,长日志仍放报告
712+
- 完成态最终回复不能只写“全绿 / 已通过 / 详见报告”;必须用 `FinalValidationSummaryV1`:**先白话结论,再证据行(命令+exitCode)**,并写清同步/脏边界/发布边界;长日志仍放报告
706713
- Copilot / Codex 等非 Claude Code 宿主调用 DevCodex MCP 出现 `invoke` undefined 或工具桥接失败时,按宿主 MCP bridge 失败处理:停止重试同一 MCP,只执行一次 path-observable / instruction-fallback 的同计划有界读取,记录 `mcpFallback=used`;无法取得 Post 成功证据时保持 `unverified`,不得退化为整目录或整文件默认读取
707714
- Commit subject 只描述主变更,不堆叠背景/验证步骤
708715

‎content/instructions/01-common.instructions.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ version: 1.15.3
2929
>
3030
> 上述"最小化展开"主要约束**面向用户的默认输出场景**;项目内 `dev` 模式下的规范优化、规则提升与实现讨论不受此条新增限制。
3131
>
32-
> ⚠️ **用户可见交付契约**:涉及入口/完成检查、确认、进度、结果、阻断或文件交付时,触发 `user-visible-output-contract`。所有持久化产物先进入 `ArtifactDeliveryManifestV1`,用户面只由 `UserFacingArtifactSetV1` 确定性投影;dev/fix/self-fix 的完成检查还必须投影 `FinalValidationSummaryV1` 或等价短矩阵,列出权威验证命令与 exitCode、runId 或关键计数、WorkspaceSyncStatus、dirty boundary、release action boundary,声明 commit 时追加 post-commit replay。session、daily、SUMMARY、task/checkpoint 与 raw receipt/manifest/ledger 默认 internal-only。链接按已验证能力选择 clickable/portable/plain/failed。每项交付必须满足 **ArtifactPathColumnGate(PF-175)**:语义名称 + 用途 + **路径列**(默认 workspace-relative portable)+ 操作;自由文本表默认列=`语义名称|用途|路径|操作`。Rich clickable 允许语义链接与 portable 路径列并存,且不得在路径列外再重复 `绝对路径:` 行;只有用户要求、链接失败、工作区外、歧义或无法定位时路径列/fallback 才使用绝对路径。
32+
> ⚠️ **用户可见交付契约**:涉及入口/完成检查、确认、进度、结果、阻断或文件交付时,触发 `user-visible-output-contract`(**UserVisibleReplyLayoutV1**:人话优先、五宿主同源)。所有持久化产物先进入 `ArtifactDeliveryManifestV1`,用户面只由 `UserFacingArtifactSetV1` 确定性投影;入口检查用 PC0~PC7 表格/分列人话(禁止进度缩写);dev/fix/self-fix 完成检查须 **白话复审 + FinalValidationSummaryV1(白话在上、命令+exitCode 在下)**,含关键计数、WorkspaceSyncStatus、dirty boundary、release action boundary,声明 commit 时追加 post-commit replay。session、daily、SUMMARY、task/checkpoint 与 raw receipt/manifest/ledger 默认 internal-only。链接按已验证能力选择 clickable/portable/plain/failed。每项交付必须满足 **ArtifactPathColumnGate(PF-175)**:语义名称 + 用途 + **路径列**(默认 workspace-relative portable)+ 操作;自由文本表默认列=`语义名称|用途|路径|操作`。Rich clickable 允许语义链接与 portable 路径列并存,且不得在路径列外再重复 `绝对路径:` 行;只有用户要求、链接失败、工作区外、歧义或无法定位时路径列/fallback 才使用绝对路径。
3333
>
3434
> ⚠️ **MCP fallback**:Copilot / Codex 等非 Claude Code 宿主调用 DevCodex MCP 出现 `invoke` undefined、工具桥接不可用或 server 未连接时,视为宿主 MCP bridge 失败;停止重试同一 MCP,降级读取 Profile / SUMMARY / tasks 文件,并在报告或记忆中记录 `mcpFallback=used`。
3535

‎content/instructions/16-report.instructions.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ reports/<子目录>/<agent>/YYYYMMDD/NN--<简述>.md
103103
- ⛔ **禁止覆盖已有报告**,每次会话独立新建文件
104104
- 每条建议/问题必须附五项验证(合理性 + 可实施性 + 收益 + 验证状态 + 影响范围)— 与 [`17-compliance.instructions.md`](./17-compliance.instructions.md) §1 输出验证保持一致
105105
- 报告写入后必须执行二次验证(V1~V6,见 `17-compliance.instructions.md`)
106-
- dev/fix/self-fix 宣告完成时,最终回复必须投影 `FinalValidationSummaryV1` 或等价短矩阵:权威验证命令与 exitCode、runId 或关键计数、WorkspaceSyncStatus、dirty boundary、release action boundary;若声明 commit,必须追加 post-commit replay。长日志留在报告中,用户面不得只写“全绿 / 已通过 / 详见报告”。
106+
- dev/fix/self-fix 宣告完成时,最终回复必须投影 `FinalValidationSummaryV1`:**先白话结论,再证据**(权威命令与 exitCode、runId 或关键计数、WorkspaceSyncStatus、dirty boundary、release action boundary);若声明 commit,必须追加 post-commit replay。推荐先写 `### 复审验证(白话)` 三行。长日志留在报告中,用户面不得只写“全绿 / 已通过 / 详见报告”。五宿主同源见 `user-visible-output-contract` · UserVisibleReplyLayoutV1。
107107
- **Dialogue-Primary**:完成态最终回复还须含可读叙事(结果 + 要点),见 `user-visible-output-contract` 的 `classifyDialogueNarrativeSample`;分析收敛禁止报告链接 alone(`link-only-thin`)。
108108
- 跨会话/未完成/多批次任务不得缺少 `ContextHandoffCard`;SUMMARY 只能作为索引,不得替代交接卡
109109
- 报告必须登记到 `ArtifactDeliveryManifestV1`,最终用户面由 `UserFacingArtifactSetV1` 投影为语义链接(详见 [`02-output-paths.instructions.md`](./02-output-paths.instructions.md) §产物路径输出格式):

‎content/instructions/17-compliance.instructions.md‎

Lines changed: 25 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -30,17 +30,22 @@ version: 1.15.3
3030
3131
> 🔴 **跨会话恢复硬约束**:当上下文来自会话摘要(summary/checkpoint)时,**不免除预检查**。摘要内容不构成 Profile 已加载的证明,也不构成记忆已读取的证明。每条新用户消息到达后,必须重新执行完整 PC0~PC7;若宿主 Hooks 已完成 bootstrap,可复用宿主结果并补齐可见状态;若处于 fallback 模式,则必须在进入任务前重新读取 Profile + 记忆,不得直接进入任务执行。
3232
33-
```text
34-
---
35-
🔍 入口检查([DEV/PROD] 模式)
36-
- PC0 上下文:项目 [项目名/未识别] · 输出语言 [中/英] · ContextReadPlan [✅已形成/⚠️降级] · 必要来源回执 [✅verified/⚠️partial/❌missing]
37-
- PC1 意图:语义初判 [用户意图] → 项目现实扩展后 [工作流名称/子类型]
38-
- PC2 会话状态:第 N 轮(>10 关注 / >13 预警 / >15 防护) · 待跟进事项 ✅ 无 / ⚠️ [简述]
39-
- PC3 执行准备:项目现实扩展 [已完成/待澄清] · 未完成任务 ✅ 无 / ⚠️ 存在 🔄 会话:[简述] → 建议先 resume · 产物落点 [已确定/无需产物/待确定]
40-
- PC4 规范雷达:dev 模式见 `18-spec-radar.instructions.md` §输出格式;非 dev 模式 N/A(dev 扩展诊断未启用)
41-
- PC5 部署体状态(v1.11.0+):cwd 父链 `.github/`、`.claude/`、`AGENTS.md`、`.agents/`、`.codex/` ✅ 存在 / N/A 无父级 · 与源仓库同步 ✅ / ⚠️ [N 文件滞后] / N/A
42-
- PC6 工作区一致性(v1.9.4+):git 未提交变更 ✅ 无 / ⚠️ [N 文件 dirty] · 当前任务目录 [requirements/<X>/ / bugs/<Y>/ / 无关联]
43-
- PC7 新会话首步 resume 强制检测(v1.9.4+,仅首条用户消息触发):✅ `memory_status` + 有界 session/SUMMARY query 回执一致 / ⚠️ 数据不一致或证据不足需处理 / N/A(非首条)
33+
```markdown
34+
### DevCodex · 入口检查
35+
`[PASS/WARN/BLOCK/UNVERIFIED]` · `[项目名/未识别]` · `[DEV/PROD]`
36+
37+
| 项 | 内容(人话;禁止进度缩写 · 五宿主同源) |
38+
|----|----------------------------------------|
39+
| PC0 | 上下文:项目 · 语言 · ContextReadPlan [已形成/降级] · 必要来源回执 [verified/partial/missing] |
40+
| PC1 | 意图:语义初判 → 扩展后工作流(有修正须写明) |
41+
| PC2 | 会话:第 N 轮 · Token 防护 · 待跟进 ✅无 / ⚠️简述 |
42+
| PC3 | 执行准备:唯一项目 · 未完成任务 · 产物落点(禁止「写报告 02」式施工日志) |
43+
| PC4 | 规范雷达:dev 见 18-spec-radar;非 dev=`N/A` + skipReason |
44+
| PC5 | 宿主:名称 + Full/Partial · 用户级 adapter/receipt 或 legacy 父链诊断 |
45+
| PC6 | 工作区:git dirty 范围 · 任务目录 requirements/… 或 bugs/… |
46+
| PC7 | 续接:首条须 memory_status + 有界 query;非首条可 N/A |
47+
48+
下一步:[一句人话]
4449
```
4550

4651
> ⚠️ PC0 检查失败时(ContextReadPlan 未形成或必要来源回执 missing)不得跳过 — 必须立即形成计划并取得可验证回执后才能继续;ENV_MODE 由 Profile 的 `config.json` 决定(未加载时默认 prod)。**禁止**仅用「Profile ✅ 已加载」替代 ContextReadPlan + 回执语义。
@@ -227,25 +232,31 @@ version: 1.15.3
227232

228233
> ⚠️ chat 豁免的是**合规检查状态块**(FC/SC/RC/T),不豁免**入口检查块**(PC0~PC7)。chat 在所有模式下仍需在实质回答前输出入口检查结果,但回复末尾无需输出合规状态块。
229234
230-
**dev 模式**(回复末尾必须输出):
235+
**dev 模式**(回复末尾必须输出 · UserVisibleReplyLayoutV1 · 五宿主同源):
231236
```text
232237
### DevCodex · 完成检查
233238
`PASS/WARN/BLOCK/UNVERIFIED` · `[project]`
234239
235240
- FC1~FC7 [状态] 固定 ID 与实际证据
236241
- SCx/RCx/Tx [状态] 仅列适用项
237242
243+
### 复审验证(白话)
244+
- 结论:通过 / 未通过 / 仅说明
245+
- 做了什么检查:……
246+
- 结果与是否改代码/提交:……
247+
238248
<!-- devcodex:include shared/compliance/validation-summary.md -->
239249
240250
#### 完成交付文件
241-
- [语义名称](capability-selected-target) — 用途;操作:用户动作
251+
- [语义名称](capability-selected-target) — 用途;路径:…;操作:用户动作
242252
已列 N / 总计 M;默认隐藏 R
243253
244254
DevCodexVisibleEnvelopeV1 · completion-check · [状态] · [semanticDigest]
245255
```
246256

247257
> ⚠️ **FC5 填写规则**:触发 `user-visible-output-contract`。internal manifest 必须 planned=observed=internalDelivered;visible set 必须 required hidden=0 且 `listed+remaining=total`。默认隐藏 session/daily/SUMMARY/task/checkpoint/raw receipt/manifest/ledger,但继续写入和 ECR。链接必须由 `LinkCapabilityDecisionV1` 按当前 surface 证据选择;Rich clickable 不重复绝对路径,只有用户要求、链接失败、工作区外、歧义或无法定位时追加 fallback。Hook 未观察 payload时只能 `unverified`,legacy 格式最多 `unverified-legacy`。
248-
> ⚠️ **DevModeCompletionCheckDetailGate**:completion-check 只写“全绿 / 已通过 / 详见报告”不合格;必须投影 `FinalValidationSummaryV1` 或等价短矩阵,并由 `classifyFinalValidationSummarySample` 负向样例守门。
258+
> ⚠️ **DevModeCompletionCheckDetailGate**:completion-check 只写“全绿 / 已通过 / 详见报告”不合格;必须投影 `FinalValidationSummaryV1`(**白话在上、命令+exitCode 在下**),并由 `classifyFinalValidationSummarySample` 负向样例守门。
259+
> ⚠️ **fix/self-fix 完成态**同样须有完成检查标题 + FVS;chat 豁免完成检查块但入口检查不豁免。
249260
250261
## 自修复触发(不进入 self-fix 工作流)
251262

0 commit comments

Comments
 (0)