dsh-doublecheck 0.7.2 → 0.7.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,13 @@
2
2
 
3
3
  All notable changes to dsh-doublecheck are recorded here, newest first.
4
4
 
5
+ ## v0.7.3 — 2026-08-22
6
+
7
+ ### Changed
8
+
9
+ - **rc2 compatibility release**: every `@deepseek-ai/dsh-*` devDependency pins exactly `0.1.1-rc.2`, the CI and compat workflow pins and the `minimumReleaseAgeExclude` list follow, and the workshop manifest's `dshVersions` plus the five READMEs document the `0.1.1-rc.2` harness baseline.
10
+ - **Session-projection rc2 contract**: the `doublecheck` projection now registers the rc2 shape — `stateSchema` (a new plain-JSON state schema covering the fold bookkeeping fields) plus `wire: { viewSchema, view }` for the client-visible payload — and merges `doublecheck` into both `SessionProjectionStateMap` (host state) and `SessionProjectionMap` (client view). `@deepseek-ai/dsh-session-projection` peerDependency raises to `>=0.1.1-rc.2 <0.2.0` because the `wire`/`stateSchema` registration is rc2-only.
11
+
5
12
  ## v0.7.2 — 2026-08-21
6
13
 
7
14
  ### Changed
package/README.es.md CHANGED
@@ -24,7 +24,7 @@
24
24
 
25
25
  | Superficie | Estado |
26
26
  |---|---|
27
- | Harness | DeepSeek Harness `0.1.0-rc.8` |
27
+ | Harness | DeepSeek Harness `0.1.1-rc.2` |
28
28
  | Node | `^22.19.0 \|\| >=24.0.0` |
29
29
  | Plataformas | Todas (host puro; sin código nativo, sin solicitudes de red directas propias) |
30
30
  | Modelo | Cualquiera (el guard nunca llama a un modelo; las fases de crítico y revisor se ejecutan como subagentes del harness) |
@@ -205,7 +205,7 @@ Las luces rojas son comprobaciones fallidas (un spec ausente, una última ejecuc
205
205
 
206
206
  ## Limitaciones conocidas
207
207
 
208
- - **Escrituras durables.** `/doublecheck on\|off` → `doublecheck/state` y `/gate run` → `doublecheck/gate` necesitan la superficie de append `ignorable` del host (post-rc.6), que todo host compatible (≥ `0.1.0-rc.8`) proporciona.
208
+ - **Escrituras durables.** `/doublecheck on\|off` → `doublecheck/state` y `/gate run` → `doublecheck/gate` necesitan la superficie de append `ignorable` del host (post-rc.6), que todo host compatible (≥ `0.1.1-rc.2`) proporciona.
209
209
  - **Interfaces opcionales.** El espacio de ajustes `doublecheck.gate` se registra solo cuando el servicio de ajustes está montado; la línea de modo plan de `/gate status` lee el `ctx.planMode` opcional (muestra `unknown` sin él); la revisión adversarial necesita `ctx.subagents`; la verificación necesita `workflowEngine`.
210
210
  - **Degradación local.** `gate.review.engine: auto` degrada al revisor local cuando dsh-auto-review está ausente o no tiene registros de veredicto en esta sesión — el informe nombra la razón en lugar de inventar un veredicto.
211
211
 
package/README.hi.md CHANGED
@@ -24,7 +24,7 @@
24
24
 
25
25
  | सतह | स्थिति |
26
26
  |---|---|
27
- | Harness | DeepSeek Harness `0.1.0-rc.8` |
27
+ | Harness | DeepSeek Harness `0.1.1-rc.2` |
28
28
  | Node | `^22.19.0 \|\| >=24.0.0` |
29
29
  | प्लेटफ़ॉर्म | सभी (शुद्ध host; कोई नेटिव कोड नहीं, स्वयं का कोई सीधा नेटवर्क अनुरोध नहीं) |
30
30
  | मॉडल | कोई भी (guard स्वयं कभी मॉडल नहीं बुलाता; critic और reviewer चरण harness subagent के रूप में चलते हैं) |
@@ -205,7 +205,7 @@ dsh --profile web --dump-config | grep -E -A3 'id: doublecheck-(grill|guard)'
205
205
 
206
206
  ## ज्ञात सीमाएँ
207
207
 
208
- - **टिकाऊ लेखन।** `/doublecheck on\|off` → `doublecheck/state` और `/gate run` → `doublecheck/gate` को host की `ignorable` append सतह (rc.6 के बाद) चाहिए, जो हर समर्थित host (≥ `0.1.0-rc.8`) प्रदान करता है।
208
+ - **टिकाऊ लेखन।** `/doublecheck on\|off` → `doublecheck/state` और `/gate run` → `doublecheck/gate` को host की `ignorable` append सतह (rc.6 के बाद) चाहिए, जो हर समर्थित host (≥ `0.1.1-rc.2`) प्रदान करता है।
209
209
  - **वैकल्पिक इंटरफ़ेस।** `doublecheck.gate` सेटिंग्स नेमस्पेस केवल तब पंजीकृत होता है जब सेटिंग्स सेवा माउंट हो; `/gate status` की प्लान-मोड पंक्ति वैकल्पिक `ctx.planMode` पढ़ती है (इसके बिना `unknown` दिखाती है); प्रतिकूल समीक्षा को `ctx.subagents` चाहिए; सत्यापन को `workflowEngine` चाहिए।
210
210
  - **स्थानीय अवनति।** जब dsh-auto-review अनुपस्थित हो या इस सत्र में उसके कोई निर्णय रिकॉर्ड न हों, तो `gate.review.engine: auto` स्थानीय समीक्षक पर घट जाता है — रिपोर्ट निर्णय गढ़ने के बजाय कारण बताती है।
211
211
 
package/README.md CHANGED
@@ -1,6 +1,7 @@
1
1
  <div align="center">
2
2
 
3
3
  # dsh-doublecheck
4
+ [![Gitee](https://img.shields.io/badge/Gitee-mirror-c71d23?logo=gitee)](https://gitee.com/perrylink/dsh-doublecheck)
4
5
 
5
6
  **The delivery quality gate for DeepSeek Harness: grill the requirements, test the implementation, prove the delivery — then gate the handoff with a deliverable/rework decision.**
6
7
 
@@ -24,7 +25,7 @@
24
25
 
25
26
  | Surface | Status |
26
27
  |---|---|
27
- | Harness | DeepSeek Harness `0.1.0-rc.8` |
28
+ | Harness | DeepSeek Harness `0.1.1-rc.2` |
28
29
  | Node | `^22.19.0 \|\| >=24.0.0` |
29
30
  | Platforms | All (pure host; no native code, no direct network requests of its own) |
30
31
  | Model | Any (the guard itself never calls a model; the critic and reviewer phases run as harness subagents) |
@@ -205,7 +206,7 @@ Red lights are failed checks (a missing spec, a failing latest run, coverage bel
205
206
 
206
207
  ## Known limitations
207
208
 
208
- - **Durable writes.** `/doublecheck on\|off` → `doublecheck/state` and `/gate run` → `doublecheck/gate` ride the host's `ignorable` append surface (post-rc.6), which every supported host (≥ `0.1.0-rc.8`) provides.
209
+ - **Durable writes.** `/doublecheck on\|off` → `doublecheck/state` and `/gate run` → `doublecheck/gate` ride the host's `ignorable` append surface (post-rc.6), which every supported host (≥ `0.1.1-rc.2`) provides.
209
210
  - **Optional seams.** The `doublecheck.gate` settings namespace registers only when the settings service is mounted; the `/gate status` plan-mode line reads the optional `ctx.planMode` (shows `unknown` without it); the adversary review needs `ctx.subagents`; verification needs `workflowEngine`.
210
211
  - **Local degrade.** `gate.review.engine: auto` degrades to the local reviewer when dsh-auto-review is absent or has no verdict records this session — the report names the reason instead of inventing a verdict.
211
212
 
package/README.pt.md CHANGED
@@ -24,7 +24,7 @@
24
24
 
25
25
  | Superfície | Status |
26
26
  |---|---|
27
- | Harness | DeepSeek Harness `0.1.0-rc.8` |
27
+ | Harness | DeepSeek Harness `0.1.1-rc.2` |
28
28
  | Node | `^22.19.0 \|\| >=24.0.0` |
29
29
  | Plataformas | Todas (host puro; sem código nativo, sem requisições de rede diretas próprias) |
30
30
  | Modelo | Qualquer (o guard nunca chama um modelo; as fases de crítico e revisor rodam como subagentes do harness) |
@@ -205,7 +205,7 @@ As luzes vermelhas são verificações que falharam (um spec ausente, uma últim
205
205
 
206
206
  ## Limitações conhecidas
207
207
 
208
- - **Escritas duráveis.** `/doublecheck on\|off` → `doublecheck/state` e `/gate run` → `doublecheck/gate` precisam da superfície de append `ignorable` do host (pós-rc.6), que todo host compatível (≥ `0.1.0-rc.8`) fornece.
208
+ - **Escritas duráveis.** `/doublecheck on\|off` → `doublecheck/state` e `/gate run` → `doublecheck/gate` precisam da superfície de append `ignorable` do host (pós-rc.6), que todo host compatível (≥ `0.1.1-rc.2`) fornece.
209
209
  - **Interfaces opcionais.** O namespace de configurações `doublecheck.gate` é registrado apenas quando o serviço de configurações está montado; a linha de modo plano de `/gate status` lê o `ctx.planMode` opcional (mostra `unknown` sem ele); a revisão adversarial precisa de `ctx.subagents`; a verificação precisa de `workflowEngine`.
210
210
  - **Degradação local.** `gate.review.engine: auto` degrada para o revisor local quando o dsh-auto-review está ausente ou não tem registros de veredicto nesta sessão — o relatório nomeia a razão em vez de inventar um veredicto.
211
211
 
package/README.zh.md CHANGED
@@ -24,7 +24,7 @@
24
24
 
25
25
  | 方面 | 状态 |
26
26
  |---|---|
27
- | Harness | DeepSeek Harness `0.1.0-rc.8` |
27
+ | Harness | DeepSeek Harness `0.1.1-rc.2` |
28
28
  | Node | `^22.19.0 \|\| >=24.0.0` |
29
29
  | 平台 | 全部(纯宿主;无原生代码,自身无直接网络请求) |
30
30
  | 模型 | 任意(守卫本身从不调用模型;评审与批评阶段作为宿主 subagent 运行) |
@@ -205,7 +205,7 @@ dsh --profile web --dump-config | grep -E -A3 'id: doublecheck-(grill|guard)'
205
205
 
206
206
  ## 已知限制
207
207
 
208
- - **持久写入。** `/doublecheck on\|off` → `doublecheck/state` 与 `/gate run` → `doublecheck/gate` 需要宿主的 `ignorable` 追加接口(rc.6 之后),受支持宿主(≥ `0.1.0-rc.8`)均具备该接口。
208
+ - **持久写入。** `/doublecheck on\|off` → `doublecheck/state` 与 `/gate run` → `doublecheck/gate` 需要宿主的 `ignorable` 追加接口(rc.6 之后),受支持宿主(≥ `0.1.1-rc.2`)均具备该接口。
209
209
  - **可选接口。** `doublecheck.gate` 设置命名空间仅在挂载设置服务时注册;`/gate status` 的计划模式行读取可选的 `ctx.planMode`(没有则显示 `unknown`);对抗式评审需要 `ctx.subagents`;验证需要 `workflowEngine`。
210
210
  - **本地降级。** 当 dsh-auto-review 缺失或本会话没有裁决记录时,`gate.review.engine: auto` 会降级到本地评审者——报告会写明原因,而不是捏造裁决。
211
211
 
@@ -36,7 +36,7 @@ import { PROSE } from "./prose.js";
36
36
  import { gateHandler, gateInjection, GateConfigSchema, runGate, settleGate, validateGateConfig, } from "./gate.js";
37
37
  import { countRedChecks } from "../domain/gate.js";
38
38
  import { applyDoublecheckEvent, emptyDoublecheckState, viewDoublecheck, } from "../domain/projection.js";
39
- import { doublecheckViewSchema } from "../types.js";
39
+ import { doublecheckStateSchema, doublecheckViewSchema } from "../types.js";
40
40
  import { installInvariant, PACKAGE_NAME } from "../invariant.js";
41
41
  import { doublecheckHandler, hostStampsIgnorable } from "./command.js";
42
42
  export const name = 'doublecheck-guard';
@@ -527,10 +527,13 @@ export function apply(ctx, config) {
527
527
  return;
528
528
  registry.register({
529
529
  key: 'doublecheck',
530
- schema: doublecheckViewSchema,
530
+ stateSchema: doublecheckStateSchema,
531
531
  init: emptyDoublecheckState,
532
532
  apply: (state, event) => applyDoublecheckEvent(state, event, detection),
533
- view: viewDoublecheck,
533
+ wire: {
534
+ viewSchema: doublecheckViewSchema,
535
+ view: viewDoublecheck,
536
+ },
534
537
  stateVersion: 2,
535
538
  });
536
539
  });
package/lib/types.d.ts CHANGED
@@ -9,6 +9,7 @@
9
9
  import { z as zod } from 'zod';
10
10
  import type { DisciplineStage, TestColor } from './domain/stages.js';
11
11
  import type { GateVerdict } from './domain/gate.js';
12
+ import type { DoublecheckProjectionState } from './domain/projection.js';
12
13
  /** The whole wire value of the `doublecheck` session projection. */
13
14
  export interface DoublecheckView {
14
15
  /** The last discipline stage reached on durable evidence. */
@@ -39,7 +40,23 @@ export declare const doublecheckViewSchema: zod.ZodObject<{
39
40
  gateVerdict: zod.ZodUnion<readonly [zod.ZodLiteral<"none">, zod.ZodLiteral<"deliverable">, zod.ZodLiteral<"rework">]>;
40
41
  gateRedCount: zod.ZodNumber;
41
42
  }, zod.core.$strip>;
43
+ /** Validates the persisted `doublecheck` projection state before it seeds a fold. */
44
+ export declare const doublecheckStateSchema: zod.ZodObject<{
45
+ stage: zod.ZodUnion<readonly [zod.ZodLiteral<"grill">, zod.ZodLiteral<"design">, zod.ZodLiteral<"red">, zod.ZodLiteral<"green">, zod.ZodLiteral<"review">, zod.ZodLiteral<"verify">]>;
46
+ color: zod.ZodUnion<readonly [zod.ZodLiteral<"none">, zod.ZodLiteral<"red">, zod.ZodLiteral<"green">]>;
47
+ hasSpec: zod.ZodBoolean;
48
+ specGoal: zod.ZodString;
49
+ reviewed: zod.ZodBoolean;
50
+ editCount: zod.ZodNumber;
51
+ gateVerdict: zod.ZodUnion<readonly [zod.ZodLiteral<"none">, zod.ZodLiteral<"deliverable">, zod.ZodLiteral<"rework">]>;
52
+ gateRedCount: zod.ZodNumber;
53
+ pendingSpecCalls: zod.ZodRecord<zod.ZodString, zod.ZodString>;
54
+ pendingTestCalls: zod.ZodRecord<zod.ZodString, zod.ZodString>;
55
+ }, zod.core.$strip>;
42
56
  declare module '@deepseek-ai/dsh-session-projection/types' {
57
+ interface SessionProjectionStateMap {
58
+ doublecheck: DoublecheckProjectionState;
59
+ }
43
60
  interface SessionProjectionMap {
44
61
  doublecheck: DoublecheckView;
45
62
  }
package/lib/types.js CHANGED
@@ -18,3 +18,16 @@ export const doublecheckViewSchema = zod.object({
18
18
  gateVerdict: zod.union([zod.literal('none'), zod.literal('deliverable'), zod.literal('rework')]),
19
19
  gateRedCount: zod.number(),
20
20
  });
21
+ /** Validates the persisted `doublecheck` projection state before it seeds a fold. */
22
+ export const doublecheckStateSchema = zod.object({
23
+ stage: zod.union([zod.literal('grill'), zod.literal('design'), zod.literal('red'), zod.literal('green'), zod.literal('review'), zod.literal('verify')]),
24
+ color: zod.union([zod.literal('none'), zod.literal('red'), zod.literal('green')]),
25
+ hasSpec: zod.boolean(),
26
+ specGoal: zod.string(),
27
+ reviewed: zod.boolean(),
28
+ editCount: zod.number(),
29
+ gateVerdict: zod.union([zod.literal('none'), zod.literal('deliverable'), zod.literal('rework')]),
30
+ gateRedCount: zod.number(),
31
+ pendingSpecCalls: zod.record(zod.string(), zod.string()),
32
+ pendingTestCalls: zod.record(zod.string(), zod.string()),
33
+ });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dsh-doublecheck",
3
- "version": "0.7.2",
3
+ "version": "0.7.3",
4
4
  "description": "Delivery quality gate for DeepSeek Harness: grill the requirements, test the implementation, prove the delivery, and gate the handoff with a deliverable/rework decision.",
5
5
  "packageManager": "pnpm@11.7.0",
6
6
  "repository": {
@@ -108,7 +108,7 @@
108
108
  ],
109
109
  "compatibility": {
110
110
  "dshVersions": [
111
- "0.1.0-rc.8"
111
+ "0.1.1-rc.2"
112
112
  ]
113
113
  },
114
114
  "capability": {
@@ -130,7 +130,7 @@
130
130
  "@deepseek-ai/dsh-commands": ">=0.1.0-rc.8 <0.2.0",
131
131
  "@deepseek-ai/dsh-llm": ">=0.1.0-rc.8 <0.2.0",
132
132
  "@deepseek-ai/dsh-session": ">=0.1.0-rc.8 <0.2.0",
133
- "@deepseek-ai/dsh-session-projection": ">=0.1.0-rc.8 <0.2.0",
133
+ "@deepseek-ai/dsh-session-projection": ">=0.1.1-rc.2 <0.2.0",
134
134
  "@deepseek-ai/dsh-skill": ">=0.1.0-rc.8 <0.2.0",
135
135
  "@deepseek-ai/dsh-tools": ">=0.1.0-rc.8 <0.2.0",
136
136
  "@deepseek-ai/schemastery": "^3.18.1"
@@ -142,17 +142,17 @@
142
142
  "devDependencies": {
143
143
  "@deepseek-ai/cordis": "^4.0.1",
144
144
  "@deepseek-ai/cordis-plugin-loader": "1.0.2",
145
- "@deepseek-ai/dsh-agent": "0.1.0-rc.8",
146
- "@deepseek-ai/dsh-commands": "0.1.0-rc.8",
147
- "@deepseek-ai/dsh-fs": "0.1.0-rc.8",
148
- "@deepseek-ai/dsh-llm": "0.1.0-rc.8",
149
- "@deepseek-ai/dsh-session": "0.1.0-rc.8",
150
- "@deepseek-ai/dsh-session-projection": "0.1.0-rc.8",
151
- "@deepseek-ai/dsh-skill": "0.1.0-rc.8",
152
- "@deepseek-ai/dsh-subagent": "0.1.0-rc.8",
153
- "@deepseek-ai/dsh-system-prompt": "0.1.0-rc.8",
154
- "@deepseek-ai/dsh-tools": "0.1.0-rc.8",
155
- "@deepseek-ai/dsh-workflow": "0.1.0-rc.8",
145
+ "@deepseek-ai/dsh-agent": "0.1.1-rc.2",
146
+ "@deepseek-ai/dsh-commands": "0.1.1-rc.2",
147
+ "@deepseek-ai/dsh-fs": "0.1.1-rc.2",
148
+ "@deepseek-ai/dsh-llm": "0.1.1-rc.2",
149
+ "@deepseek-ai/dsh-session": "0.1.1-rc.2",
150
+ "@deepseek-ai/dsh-session-projection": "0.1.1-rc.2",
151
+ "@deepseek-ai/dsh-skill": "0.1.1-rc.2",
152
+ "@deepseek-ai/dsh-subagent": "0.1.1-rc.2",
153
+ "@deepseek-ai/dsh-system-prompt": "0.1.1-rc.2",
154
+ "@deepseek-ai/dsh-tools": "0.1.1-rc.2",
155
+ "@deepseek-ai/dsh-workflow": "0.1.1-rc.2",
156
156
  "@deepseek-ai/schemastery": "^3.18.1",
157
157
  "@eslint/js": "^9.30.0",
158
158
  "@types/node": "^22.15.0",