Skip to content

Commit f599328

Browse files
Cobb04codex
andauthored
feat(dsh): add shared Harness analysis (#110)
* feat(dsh): add shared harness analysis Implements #104 using docs/specs/2026-08-24-104-deepseek-harness-shared-analysis-evidence-bundle.md. Qualify DSH for shared Asset Practices, Harness evidence, and Evidence Bundle collection with one frozen canonical cwd while keeping rendering and Checkup out of scope. Validate the change with Node 22.20.0 and Node 24.15.0 focused suites, native DSH smokes, and a clean npm run check. Existing DSH Session and configured-assets semantics remain unchanged. Co-authored-by: Codex (GPT 5.6 Sol) <codex@openai.com> * fix(harness): canonicalize Windows workspace identity Keeps #104 configured and practice analysis on one filesystem identity using docs/specs/2026-08-24-104-deepseek-harness-shared-analysis-evidence-bundle.md. Qoder Memory lookup, workspace-relative locators, topology, Git-root resolution, and Baseline compaction now share the same canonical path owner; the Windows-safe privacy assertion no longer constructs a RegExp from a raw path. Validated with Node 22.20.0 and Node 24.18.0 focused suites, DSH 0.1.1-rc.2 native smokes, and a clean Node 22.20.0 npm run check. Co-authored-by: Codex (GPT 5.6 Sol) <codex@openai.com> * fix(harness): sanitize nested baseline errors Fixes #104 using docs/specs/2026-08-24-104-deepseek-harness-shared-analysis-evidence-bundle.md AC-11 and AC-12. Serialized Bundle regressions and focused Node 22/24 suites validate nested Baseline stage-error path redaction. Co-authored-by: Codex (GPT 5.6 Sol) <codex@openai.com> --------- Co-authored-by: Codex (GPT 5.6 Sol) <codex@openai.com>
1 parent 46da462 commit f599328

33 files changed

Lines changed: 2244 additions & 153 deletions

docs/adapters/README.md

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@
33
This is the single entry point for Claude Code, Codex, Qoder, Cursor, Qwen,
44
GitHub Copilot, Pi, Kimi Code, WorkBuddy, and Grok host boundaries, plus the
55
DeepSeek Harness (DSH) verified install/discovery, developer-preview
6-
configured-assets, and developer-preview session slices. Do not
6+
configured-assets, session, Asset Practices, neutral Harness analysis, and
7+
Evidence Bundle slices. Do not
78
create `docs/adapters/claude-code.md`, `docs/adapters/codex.md`,
89
`docs/adapters/qoder.md`, `docs/adapters/cursor.md`, `docs/adapters/qwen.md`,
910
`docs/adapters/copilot.md`, `docs/adapters/pi.md`,
@@ -45,7 +46,7 @@ project `.kimi-code/skills/`), then runs `/skill:better-harness`.
4546
| Kimi Code | Analysis-capable source-local host | `.kimi-plugin/plugin.json` | `scripts/agent-customize/providers/kimi.mjs` | `scripts/session-analysis/platforms/kimi.mjs` | self-contained HTML + Markdown | `AGENTS.md` + `~/.kimi-code/skills` + project `.kimi-code/skills`/`.kimi/skills` + `~/.kimi-code/mcp.json` | `harness evidence-bundle --platform kimi` -> validated `html` render |
4647
| WorkBuddy | Analysis-capable source-local host | none (skills install into `~/.workbuddy/skills`) | `scripts/agent-customize/providers/workbuddy.mjs` | `scripts/session-analysis/platforms/workbuddy.mjs` | self-contained HTML + Markdown | `~/.workbuddy` `AGENTS.md` + identity files + `.agents` + `AGENTS.md` | `session-analysis --platform workbuddy sources` -> validated `html` render |
4748
| Grok | Analysis-capable source-local host | none (skills install into `~/.grok/skills`) | `scripts/agent-customize/providers/grok.mjs` | `scripts/session-analysis/platforms/grok.mjs` | self-contained HTML + Markdown | `~/.grok` + `.grok` + `.agents` + `AGENTS.md` | `session-analysis --platform grok sources` -> skill symlink -> validated `html` render |
48-
| DeepSeek Harness (DSH) | Verified install/discovery for headless/base and Web `standard`/`code`/`cordis`; partial configured assets and session evidence (developer preview) | local DSH Cordis policy at `scripts/dsh-skill-discovery/index.mjs`; no lifecycle shell | `scripts/agent-customize/providers/dsh.mjs`; filesystem Skills and cwd-sensitive Instructions, configured-not-observed | `scripts/session-analysis/platforms/dsh.mjs`; `dsh-v1` for the audited format-0 session-evidence slice from DSH `dsh-v0.1.0-rc.7` and `dsh-v0.1.0-rc.8`, raw `.jsonl` and feature-detected `.jsonl.zstd` | unavailable; no report route | canonical Skill from the complete root; model Skill calls rejected | `npm run test:dsh-native`; `npm run test:dsh-configured-assets-native`; read-only session `sources`/`facts` commands remain separate |
49+
| DeepSeek Harness (DSH) | Verified install/discovery for headless/base and Web `standard`/`code`/`cordis`; shared read-only analysis over developer-preview configured and Session evidence | local DSH Cordis policy at `scripts/dsh-skill-discovery/index.mjs`; no lifecycle shell | `scripts/agent-customize/providers/dsh.mjs`; filesystem Skills and cwd-sensitive Instructions, configured-not-observed | `scripts/session-analysis/platforms/dsh.mjs`; `dsh-v1` for the audited format-0 session-evidence slice from DSH `dsh-v0.1.0-rc.7` and `dsh-v0.1.0-rc.8`, raw `.jsonl` and feature-detected `.jsonl.zstd` | unavailable; neutral `harness analyze` and Evidence Bundle only | canonical Skill from the complete root; model Skill calls rejected | `npm run test:dsh-native`; `npm run test:dsh-configured-assets-native`; shared analysis remains inline/no-files |
4950

5051
## Read-only Plugin Lifecycle
5152

@@ -220,8 +221,9 @@ edit host settings, or register an `apply` path.
220221
`--include-user-home` is supplied. The evidence is
221222
`configured-not-observed`: runtime/in-process Skills and active Cordis,
222223
Profile, and Preset composition remain unresolved. DSH advertises exactly
223-
`sessionAnalysis` and `agentCustomize`; it does not gain asset-practices,
224-
checkup, evidence-bundle, report, rendering, or output support. See
224+
`sessionAnalysis`, `agentCustomize`, `assetPractices`, `harnessReport`, and
225+
`evidenceBundle`. Shared analysis accepts a canonical contained `--cwd` and
226+
remains inline/no-files because checkup, rendering, and output are unsupported. See
225227
[DeepSeek Harness Configured Assets](../../references/agent-customize/platforms/dsh.md)
226228
and run the credential-free owner smoke with
227229
`npm run test:dsh-configured-assets-native`.
@@ -250,7 +252,7 @@ edit host settings, or register an `apply` path.
250252
remains readable. There is no fallback dependency or shell.
251253
The combined DSH boundary does not provide live PTY or process state,
252254
complete runtime configured-asset resolution, plugin lifecycle, a managed
253-
shell, manifest or package integration, report/output routing, README
255+
shell, manifest or package integration, rendered report/output routing, README
254256
Quickstart, SQLite or custom
255257
persistence, automatic optimization, plugin fault or causality attribution,
256258
or artifact repair or writes. See
@@ -269,9 +271,9 @@ Canonical templates live under `templates/reporting/`.
269271
`findings.json`, `report.md`, and `report.html`.
270272
- Markdown-only output has no visual companion.
271273

272-
DSH is intentionally absent from these output-mode host lists. Its
273-
`sessionAnalysis` capability does not grant report routing, HTML, Canvas, or
274-
Markdown output support.
274+
DSH is intentionally absent from these output-mode host lists. Its neutral
275+
`harnessReport` capability does not grant rendering, HTML, Canvas, or Markdown
276+
output support.
275277

276278
## Split Triggers
277279

docs/docs/hosts/adapter-matrix.md

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,8 @@ Quickstart paths. Pi, Kimi Code, WorkBuddy, and Grok are visible as adapter
2020
support because their installation and end-to-end evidence boundaries differ
2121
from that six-host set. DSH has Verified install/discovery for a qualified
2222
runtime/preset boundary plus developer-preview configured-assets and
23-
session-evidence contracts; it is not a runnable report adapter. The
23+
session-evidence contracts. It supports shared read-only Asset Practices,
24+
neutral Harness analysis, and Evidence Bundles, but is not an output adapter. The
2425
[canonical adapter matrix](https://github.com/QoderAI/better-harness/blob/main/docs/adapters/README.md)
2526
remains the complete capability-level source of truth.
2627

@@ -38,7 +39,7 @@ remains the complete capability-level source of truth.
3839
| Kimi Code | Adapter support | Analysis-capable source-local host | `.kimi-plugin/plugin.json` | Workspace-matching Kimi wire transcripts | Self-contained HTML + Markdown |
3940
| WorkBuddy | Adapter support | Analysis-capable source-local host | None; skills use WorkBuddy-owned paths | Workspace-matching WorkBuddy JSONL transcripts | Self-contained HTML + Markdown |
4041
| Grok | Adapter support | Analysis-capable source-local host | None; skills use Grok-owned paths | Workspace-matching Grok session dirs (`updates.jsonl`) | Self-contained HTML + Markdown |
41-
| DeepSeek Harness (DSH) | Verified install/discovery | Qualified headless/base and Web `standard`/`code`/`cordis`; partial configured-assets and session evidence | Local DSH Cordis policy; no lifecycle shell | DSH JSONL backend session format `0`: raw `.jsonl` and feature-detected `.jsonl.zstd` | Unavailable |
42+
| DeepSeek Harness (DSH) | Verified install/discovery | Qualified headless/base and Web `standard`/`code`/`cordis`; shared read-only analysis over partial configured-assets and session evidence | Local DSH Cordis policy; no lifecycle shell | DSH JSONL backend session format `0`: raw `.jsonl` and feature-detected `.jsonl.zstd` | Unavailable; inline/no-files analysis only |
4243

4344
The `@qoder-ai/better-harness` npm package includes all seven plugin metadata
4445
roots. Pi reuses install metadata in the existing `package.json`, so it does
@@ -82,8 +83,8 @@ lifecycle target.
8283
(see the [sample report](pathname:///demo/better-harness-report/)).
8384
- **Markdown-only** — no visual companion.
8485

85-
DSH is not an output-mode host. Session-analysis evidence does not grant HTML,
86-
Canvas, Markdown, or any report route.
86+
DSH is not an output-mode host. Neutral Harness analysis and Evidence Bundle
87+
support do not grant HTML, Canvas, Markdown, or durable report routing.
8788

8889
## Adapter support boundaries
8990

@@ -157,8 +158,11 @@ better-harness agent-customize inventory --provider dsh --workspace <path> [--cw
157158
158159
User-home Skills and Instructions are not read by default. Runtime/in-process
159160
Skills and active Cordis, Profile, and Preset composition remain unresolved.
160-
The host advertises exactly `sessionAnalysis` and `agentCustomize`; this does
161-
not add asset-practices, evidence-bundle, report, rendering, or output support.
161+
The host advertises exactly `sessionAnalysis`, `agentCustomize`,
162+
`assetPractices`, `harnessReport`, and `evidenceBundle`. Shared analysis freezes
163+
canonical `--cwd` for current configured practice while leaving historical
164+
Session scope unchanged. Rendering, output routing, Checkup, and Quickstart
165+
remain unsupported.
162166
Repository contributors can run the pinned credential-free comparison with
163167
`npm run test:dsh-configured-assets-native`. See
164168
[DeepSeek Harness Configured Assets](https://github.com/QoderAI/better-harness/blob/main/references/agent-customize/platforms/dsh.md).
@@ -192,9 +196,9 @@ The implemented source-checkout smoke boundary is read-only:
192196
node scripts/session-analysis.mjs sources --platform dsh --workspace <path> [--dsh-home <dir>]
193197
```
194198
195-
Verified discovery does not imply a complete report loop. DSH has no live
199+
Shared analysis does not imply a complete report loop. DSH has no live
196200
PTY/process integration, complete runtime configured-asset resolution, plugin
197-
lifecycle, managed shell, manifest, package integration, report/output route,
201+
lifecycle, managed shell, manifest, package integration, rendered report/output route,
198202
public Quickstart, SQLite or custom persistence support, automatic
199203
optimization, plugin-fault attribution, or artifact mutation/recovery. See the
200204
[canonical source matrix](https://github.com/QoderAI/better-harness/blob/main/docs/adapters/README.md)

docs/docs/installation.mdx

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -153,10 +153,12 @@ comparison with `npm run test:dsh-configured-assets-native`. The complete
153153
configured-assets boundary is documented in the
154154
[adapter matrix](./hosts/adapter-matrix#deepseek-harness-dsh).
155155

156-
This maturity level does not provide complete runtime configured-asset
157-
resolution, evidence-bundle or report registration, output routing, rendering,
158-
lifecycle management, MCP/profile product support, Web `minimal`, or a full
159-
report workflow. The
156+
Shared read-only analysis is available through `harness evidence-bundle` and
157+
`harness analyze`; pass `--workspace <path> --cwd <effective-cwd> --platform dsh`.
158+
The configured cwd must resolve inside the workspace. DSH still does not provide
159+
complete runtime configured-asset resolution, output routing, rendering,
160+
Checkup, lifecycle management, MCP/profile product support, Web `minimal`, a
161+
public Quickstart, or a full durable report workflow. The
160162
[adapter matrix](./hosts/adapter-matrix#deepseek-harness-dsh) tracks the exact
161163
boundary.
162164

0 commit comments

Comments
 (0)