rickylabs/harness--packages-dsh-app ↗★ 0
@rickylabs/dsh-app
Our dsh profile and bundle (cordis.patch.yml) composing every plugin package
安装
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:rickylabs/harness#42d484156890ffde27aa0fa682e8fc84ab95cbb9&path:packages/dsh-app说明文档
阅读完整 README ↗Configuration
The bundle explicitly selects @rickylabs/routing/config/routing.v1.json in the
harness-routing row. This is a packaged compatibility transcription, not a fleet-parity result.
To replace it, set config.document in your profile patch to your complete routing JSON path
(use ./ for a relative path) or a package subpath. There is no merge or hidden fallback.
createService always throws RangeError: routing-document-not-configured for absent/empty
selection; load refusals contain fixed safe codes. harness-llm stays pending until routing is
available and refuses an unsupported placement backend before registering any adapter.
Render changes to the bundle rows with pnpm --filter @rickylabs/dsh-app run bundle:render, then
run pnpm run golden:bless -- "reason" and inspect the resulting row diff.
Each row takes its options from the profile's own patch layer, in the ordinary cordis way:
- id: harness-board
config:
lanePrefix: topic
harness-board—lanePrefix(defaultlane). The repository's actual prefix;topic:is the known divergence inrickylabs/harnessitself.harness-coordinator—policy, one ofopposite-family(default) orseam-or-family. An unknown name is aRangeErrorat boot, never a silent fallback: a deployment that misspells its evaluator policy must not quietly get the other one, because the whole point of the policy is that no implementation lane certifies its own work.harness-telemetry—home(default: this user's).DSH_TELEMETRY_DIRand friends are read once, at construction, so a snapshot taken after a rotation reads the directory the sink was writing to.harness-routing—document, a required explicit path or package subpath. Provides frozenconfigurationand raw-bytesourceprovenance.harness-llm—lmStudioUrl,llamaRocmUrl,openrouterUrl, all defaulting to"", which means "use@rickylabs/llm-local's backend table". Base URLs and nothing else. There is no credential key and there will not be one: the profile is committed, soOPENROUTER_API_KEYis read from the daemon's environment at dispatch, and a request that needs it and cannot find it is refused by name before a socket is opened.
Board session projection
When dsh provides ctx.sessionProjections, harness-board also registers the strict
harnessBoard projection. The service's synchronous refresh(session, input) accepts a
caller-fetched GitHub issue cut and telemetry runs, derives the public milestone → epic → task →
child-run tree, and appends two adjacent whole-value events: todo/write, followed by
harness/board-write. GitHub remains authoritative. A model may replace its local todo list during
a turn, and the next refresh replaces that list from the next board snapshot.
BoardRefreshInput.observations optionally carries telemetry's typed governance view from the same
caller-owned evidence cut. The strict projection keeps its account windows, provider spend, local
capacity, and item-scoped refused admissions. Omitting it publishes explicit unavailable governance
rather than dropping the field or implying that every regime allows dispatch.
Refresh fails before either append when the projection registry or published todos projection is
absent, board-item normalization fails, or the strict public DTO rejects the result. The board
service itself still loads without either optional dsh capability, so profiles that only use the
pure projector keep working.
Run the executable integration smoke with no agent or model:
pnpm --filter @rickylabs/dsh-app run smoke:board-projection
It composes the published SessionStore, SessionProjectionRegistry, ToolRuntime, and
dsh-tool-todo plugin with allowParallelInProgress: true, loads harness-board, refreshes a live
session twice, checks todo authority, a parent/child run attachment, and explicit unavailable
governance, then verifies projection removal on plugin disposal. The focused composition test also
passes a fresh synthetic refusal through refresh and checks the published admission fields.