Skip to content

Commit b474ae7

Browse files
committed
feat: UserVisibleNoisePolicyV1 quiet pass, expand on fail
Keep entry checks always visible. Require completion scaffolding and FinalValidationSummary only for strong work-done claims; all-green completions use short FVS. Stop gate uses workDoneClaimed instead of treating completion-check headings as done. Specs, compliance templates, host projections, and stop-gate tests updated for five-host parity.
1 parent 29bb510 commit b474ae7

14 files changed

Lines changed: 202 additions & 107 deletions

File tree

changelogs/unreleased.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
66
## 当前未发布实现候选
77
- **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 重生。
8+
- **UserVisibleNoisePolicyV1(降噪)**:入口检查始终必出;未宣称工作完成时用户面不贴完成检查/FVS/FC 全表/产物表;宣称完成且全绿用短 FVS;失败/缺口才展开。Stop 以 `workDoneClaimed` 替代「出现完成检查标题即完成」;`lifecycle-stop-gate` / FVS classifier / compliance 同步。
89
- **控制面规范资产去重与确定性组合**:新增 `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。
910
- **在途缺陷绑定与渐进路由恢复**:新增 `InFlightIssueRequirementBindingGate`,禁止用 PI/PF 代替未闭环需求修订;`skill_route` 增加受约束的 `rebind` 操作,在 ContextRead 漂移后保持原 skill 决策、条件和兼容阶段进度,并用宿主会话身份隔离 Stop 约束。
1011
- **工作区 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: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -638,7 +638,7 @@ CP1(问题确认)→ CP2(方案确认)→ [impact-review] → [CP3] →
638638
**禁止**`PC2–PC7` 折叠行;PC3/PC6 写成内部进度条;用图标冒充 PASS 且无证据。
639639
**兼容**:列表形式 `- PC0 [状态] …` 仍可识别,但**推荐表格**;PC0~PC7 必须分列可数(FreeTextEntryCheckCompletenessGate)。
640640

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。
641+
入口检查、完成检查、确认、进度、最终结果与阻断统一由 `user-visible-output-contract` 投影;状态词固定为 `PASS / WARN / BLOCK / UNVERIFIED / N/A`**UserVisibleNoisePolicyV1**:入口始终必出;未宣称工作完成时用户面不贴完成检查/FVS/FC 全表;宣称完成且全绿用 **短 FVS**(白话+命令 exitCode+边界);失败/缺口才展开全量。合规执行证据进报告/记忆。未知能力或缺证据不得用图标冒充 PASS;新会话、resume/compact、scope/risk/dirty/receipt 变化或存在非 PASS/N/A 时入口仍须 expanded。
642642

643643
### FC 形式合规(必须全通过)
644644

content/instructions/17-compliance.instructions.md

Lines changed: 16 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -232,31 +232,26 @@ version: 1.15.3
232232

233233
> ⚠️ chat 豁免的是**合规检查状态块**(FC/SC/RC/T),不豁免**入口检查块**(PC0~PC7)。chat 在所有模式下仍需在实质回答前输出入口检查结果,但回复末尾无需输出合规状态块。
234234
235-
**dev 模式**(回复末尾必须输出 · UserVisibleReplyLayoutV1 · 五宿主同源):
236-
```text
237-
### DevCodex · 完成检查
238-
`PASS/WARN/BLOCK/UNVERIFIED` · `[project]`
239-
240-
- FC1~FC7 [状态] 固定 ID 与实际证据
241-
- SCx/RCx/Tx [状态] 仅列适用项
242-
243-
### 复审验证(白话)
244-
- 结论:通过 / 未通过 / 仅说明
245-
- 做了什么检查:……
246-
- 结果与是否改代码/提交:……
235+
**dev 模式完成态**(UserVisibleNoisePolicyV1 · 五宿主同源):
247236

248-
<!-- devcodex:include shared/compliance/validation-summary.md -->
237+
| 时机 | 用户面 |
238+
|------|--------|
239+
| 进行中 / 未宣称完成 | **只保留入口检查 + 正文**;FC/SC/T/FVS/产物表默认不贴 |
240+
| 宣称完成且全绿 | **短 FVS**(白话 + 命令 exitCode + 边界);不默认 FC 全表 |
241+
| 宣称完成有缺口 / 用户要详情 | 展开完成检查失败项 + 全量 FVS + 相关产物 |
249242

250-
#### 完成交付文件
251-
- [语义名称](capability-selected-target) — 用途;路径:…;操作:用户动作
252-
已列 N / 总计 M;默认隐藏 R
253-
254-
DevCodexVisibleEnvelopeV1 · completion-check · [状态] · [semanticDigest]
243+
```text
244+
### FinalValidationSummaryV1
245+
**白话:** …
246+
**证据:** `command` exitCode 0 · 关键计数 a/b
247+
WorkspaceSyncStatus: … · dirty boundary: … · Release actions: …
255248
```
256249

257-
> ⚠️ **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`
258-
> ⚠️ **DevModeCompletionCheckDetailGate**:completion-check 只写“全绿 / 已通过 / 详见报告”不合格;必须投影 `FinalValidationSummaryV1`**白话在上、命令+exitCode 在下**),并由 `classifyFinalValidationSummarySample` 负向样例守门。
259-
> ⚠️ **fix/self-fix 完成态**同样须有完成检查标题 + FVS;chat 豁免完成检查块但入口检查不豁免。
250+
完整 FC/SC/RC/T 矩阵仍须在 **报告/记忆** 中可追溯;用户面不默认复读。
251+
252+
> ⚠️ **FC5**:internal manifest 与 visible set 对账仍强制(进报告);用户面交付表仅在有用户可见产物或缺口时投影。
253+
> ⚠️ **DevModeCompletionCheckDetailGate**:宣称完成却只有「全绿/详见报告」不合格;短 FVS 须含命令+exitCode+边界字段。
254+
> ⚠️ chat 豁免完成块;入口检查不豁免。
260255
261256
## 自修复触发(不进入 self-fix 工作流)
262257

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,26 @@
11
### FinalValidationSummaryV1
22

3-
**白话优先(给人看)**用 1~3 句说明本轮验证结论、是否改了代码、是否提交/发版。禁止只写「全绿 / 已通过 / 详见报告」
3+
> **UserVisibleNoisePolicyV1**未宣称「工作完成」时,用户面**默认不贴**本块。宣称完成且全绿 → **短证**;失败/缺口/用户要详情 → **全量**。完整 FC/SC/T 仍进报告,不默认刷对话
44
5-
**证据(给门禁/复现)**:至少一条权威命令 + `exitCode`(或 `skipped + reason`);再写关键计数、同步、脏边界、发布边界。
5+
**短证(默认 · 全绿完成)**
6+
7+
```markdown
8+
### FinalValidationSummaryV1
9+
**白话:** 一句结论(是否通过、是否改码/提交)。
10+
**证据:** `command` exitCode 0 · 关键计数 a/b
11+
WorkspaceSyncStatus: N/A 未触发 · dirty boundary: git status clean-tree · Release actions: push/tag/publish 未执行
12+
```
13+
14+
**全量(失败展开 / 用户要详情 / 控制面高风险完成)**
615

716
| 字段 | 填写 |
817
|------|------|
18+
| 白话 | 1~3 句;禁止只写「全绿 / 已通过 / 详见报告」 |
919
| 权威命令 + exitCode | `command` exitCode N(可多行) |
1020
| 关键计数 |`3/3 checks passed` 或 runId / V 范围 |
1121
| WorkspaceSyncStatus | synced / skipped / blocked / **N/A 未触发** + 理由 |
12-
| dirty boundary | 须含范围词,如 `git status clean-tree`;工作树干净 / 仅 active-root 等 |
13-
| Release actions | push/tag/release/publish **已执行或未执行**(未执行也必须写) |
22+
| dirty boundary | 须含范围词,如 `git status clean-tree` |
23+
| Release actions | push/tag/release/publish **已执行或未执行** |
1424
| post-commit replay | 声明 commit 时必填;否则 `N/A + reason` |
1525

16-
> 禁止:命令墙无白话;分析阶段 exitCode 1 冒充「修复已成功」;用报告链接代替矩阵
26+
> 禁止:无宣称完成仍贴长合规表;命令墙无白话;分析失败证据冒充修复成功

content/skills/compliance/SKILL.md

Lines changed: 14 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -34,40 +34,25 @@ dev 模式 PC4 至少输出:
3434

3535
当 PC4 命中新规范吸纳、历史长清单迁移、复审遗漏、用户文档、发布或前端运行态相关 gateGroup 时,后续报告必须引用对应 owner Skill 的证据,而不是只写“已检查规范雷达”。
3636

37-
### 🔴 强制可见输出(仅 dev 模式合规块,chat 豁免
37+
### 🔴 合规执行 vs 用户面可见(UserVisibleNoisePolicyV1 · chat 豁免完成块
3838

39-
每次回复末尾**必须**输出合规检查状态块:
39+
|| 要求 |
40+
|----|------|
41+
| **执行** | dev 模式仍须在内部完成 FC/SC/RC/T;证据写入报告/记忆 |
42+
| **用户面默认** | **未宣称完成** → 不贴完成检查/FVS/产物全表(只保留入口检查 + 正文) |
43+
| **宣称完成且全绿** |**短 FVS**(见 shared validation-summary);不默认 FC 全表 |
44+
| **失败/缺口/用户要详情** | 展开失败项 + 全量 FVS / 相关产物 |
4045

4146
```text
42-
### DevCodex · 完成检查
43-
`PASS/WARN/BLOCK/UNVERIFIED` · `[project]`
44-
45-
- FC1 [状态] 记忆写入
46-
- FC2 [状态] 报告写入
47-
- FC3 [状态] CP 顺序
48-
- FC4 [状态] 文件名/路径
49-
- FC5 [状态] internal manifest 与 visible set 对账
50-
- FC6 [状态] 规范资产行数
51-
- FC7 [状态] 决策推荐
52-
- SCx/RCx/Tx [状态] 仅列适用项
53-
54-
### 复审验证(白话)
55-
- 结论:通过 / 未通过 / 仅说明
56-
- 做了什么检查:……
57-
- 结果与是否改代码/提交:……
58-
59-
<!-- devcodex:include shared/compliance/validation-summary.md -->
60-
61-
#### 完成交付文件
62-
- [语义名称](capability-selected-target) — 用途;路径:…;操作:用户动作
63-
已列 N / 总计 M;默认隐藏 R
64-
65-
DevCodexVisibleEnvelopeV1 · completion-check · [状态] · [semanticDigest]
47+
### FinalValidationSummaryV1
48+
**白话:** …
49+
**证据:** `command` exitCode 0 · 关键计数 a/b
50+
WorkspaceSyncStatus: … · dirty boundary: … · Release actions: …
6651
```
6752

68-
> dev 模式下不输出状态块视为未执行合规检查
69-
> `completion-check` 只有“全绿/已通过/详见报告”但缺 `FinalValidationSummaryV1`(白话+命令 exitCode)时,视为 `DevModeCompletionCheckDetailGate` 未通过
70-
> ℹ️ 入口检查 / 完成检查 / FVS 对五宿主同源,见 `user-visible-output-contract` · UserVisibleReplyLayoutV1。
53+
> 宣称完成却只有“全绿/详见报告” → `DevModeCompletionCheckDetailGate` 未通过
54+
> 未宣称完成时 **不得** 为过 Stop 而硬贴长完成检查(Stop 以 `workDoneClaimed` 为准)
55+
> ℹ️ 五宿主同源:`user-visible-output-contract` · UserVisibleReplyLayoutV1 + UserVisibleNoisePolicyV1
7156
> ⚠️ **FC5 填写规则**:触发 `user-visible-output-contract``ArtifactDeliveryManifestV1` 必须 planned=observed=internalDelivered,`UserFacingArtifactSetV1` 必须 required hidden=0 且 `listed+remaining=total`;session/daily/SUMMARY/task/checkpoint/raw ledger 默认 internal-only 但仍参与 ECR。链接按 `LinkCapabilityDecisionV1` 输出;Rich clickable 不重复绝对路径。Hook 未观察 payload 时只能 `unverified`,legacy 格式最多 `unverified-legacy`
7257
> ℹ️ prod 模式不执行合规检查,不输出状态块。
7358
> ℹ️ chat 工作流豁免此输出。

content/skills/user-visible-output-contract/SKILL.md

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -171,14 +171,33 @@ Rich clickable 只显示一个语义 Markdown 链接作为名称主表示,**
171171

172172
推荐顺序:
173173

174-
1. `### DevCodex · 入口检查`(表格 PC0~PC7 人话;禁止进度缩写 / 折叠行)
174+
1. `### DevCodex · 入口检查`(表格 PC0~PC7 人话;禁止进度缩写 / 折叠行)**始终必出**
175175
2. 正文结论(Dialogue-Primary)
176-
3. `### 复审验证(白话)`(结论 / 做了什么 / 结果;可选但强烈推荐)
177-
4. `### DevCodex · 完成检查` + `### FinalValidationSummaryV1`
178-
5. 交付文件路径列
176+
3. 仅在需要时:`### 复审验证(白话)` / 完成检查 / FVS / 产物表(见 NoisePolicy)
179177

180178
禁止:入口检查写成施工日志;FVS 只有命令墙无白话;分析阶段失败证据冒充修复成功。
181179

180+
## UserVisibleNoisePolicyV1(降噪 · 五宿主同源)
181+
182+
| 原则 | 规则 |
183+
|------|------|
184+
| P1 入口常显 | 非 chat 实质轮次必须 PC0~PC7 |
185+
| P2 结果优先 | 正文结论是主阅读路径 |
186+
| P3 静默通过 | ****宣称工作完成 → 用户面不贴完成检查/FVS/FC 全表/产物表/EnforcementHonesty |
187+
| P4 失败展开 | BLOCK/WARN/验证失败/流程 gap/用户要详情 → 展开相关块 |
188+
| P5 完成短证 | 宣称完成且全绿 → **短 FVS**(白话 + 命令 exitCode + 边界),不默认 FC1~T13 |
189+
| P6 双面证据 | 完整合规矩阵写入报告/记忆;对话默认不复读 |
190+
191+
|| 未宣称完成 | 宣称完成且全绿 | 宣称完成有缺口 |
192+
|----|:----------:|:--------------:|:--------------:|
193+
| 入口检查 ||||
194+
| 正文 ||||
195+
| 完成检查 FC 全表 || 默认 ❌ | ✅ 只列失败项 |
196+
| FinalValidationSummary || **短证** | 全量 |
197+
| 产物交付表 || 有用户交付才一行/短表 | 有问题才展开 |
198+
199+
**Stop 语义**`workDoneClaimed`(已完成/任务完成/宣告完成…)才强制完成脚手架 + FVS;仅出现 `### 完成检查` 标题不等于工作完成。
200+
182201
## FinalValidationSummaryGate(PF-186 / PI-164)
183202

184203
dev / fix / self-fix 的 `completion-check` 或 dev 模式合规块宣告完成时,最终用户可见回复必须投影 `FinalValidationSummaryV1` 或等价短矩阵。报告可保留长日志,但最终回复不能只写“全绿 / 已通过 / 详见报告”。完成态还须满足上方 **Dialogue-Primary** 叙事最小包(与本 Gate 同时适用,不可互相抵消)。

grok/plugins/devcodex-workspace/skills/devcodex-workspace/SKILL.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ Platform facts (Grok Build hooks docs): `PreToolUse` and `Stop`/`SubagentStop` c
3838
3. Resolve the project namespace relative to that workspace and bind runtime state under `.devcodex/<project>/`.
3939
4. Follow the kernel's intent-first route and read only selected files from the managed global runtime plus the resulting workspace Profile/context plan, and the single workspace skill committed by `skill_route`.
4040
5. Use `~/.agents/devcodex/instructions.full.md` only for an explicit fallback; workspace `.devcodex` remains the sole workspace-owned DevCodex surface.
41-
6. Before substantive output, satisfy the parent kernel's visible entry-check (PC0~PC7) using **UserVisibleReplyLayoutV1**: plain-language PC0~PC7 table (no progress-log abbreviations), optional 复审验证白话, then FinalValidationSummary with plain summary first and command+exitCode evidence below. Same layout as the other four hosts; Runtime cannot inject that block on Grok; models still own S07 user-visible output.
41+
6. Before substantive output, satisfy **UserVisibleReplyLayoutV1** + **UserVisibleNoisePolicyV1** (five-host same): always emit plain-language PC0~PC7; do **not** paste completion-check/FC tables/FVS unless work is claimed done (short FVS when all-green) or something failed. Runtime cannot inject on Grok; models still own S07.
4242
7. Optional assist: call MCP `profile_compose_entry_check` to obtain a portable PC0~PC7 block, or rely on PreToolUse deny reasons that embed the same template when context acquisition is incomplete.
4343
8. Run `devcodex doctor` / `devcodex status` and read `hostParity` (`HostParityScorecardV1`): `full-capable` means hard path is ready; still use `devcodex grok` for Full session kernel evidence. `partial` lists **failedChecks** and **executable repairSteps** (commands); re-run doctor after each fix.
4444
9. Execute **GrokTurnChecklist** every non-trivial turn (PF-165 + C16/PI-20260724-01): PC0~PC7 → Intent→Skill mandatory bundle → ContextReadPlan → **scan-hygiene****TTFV first delivery** → work/gates → report+memory → honest platform ceiling. Never skip S05/S07/C17 because inject is missing.

0 commit comments

Comments
 (0)