Back to home@CyanoOrg

dsh-norm-spec

plugin for norm-spec: session-scoped .norm convention injection, post-edit validation, and native norm tools.

Stars
0
Language
Rust
Created
Aug 16, 2026
Updated
Aug 18, 2026
GitHub repo

Introduction

dsh-norm-spec

DeepSeek Harness (dsh) Cordis plugin adapter for norm-spec conventions: per-session .norm convention injection and soft post-edit convention validation, backed by the canonical Rust engine.

Status: 0.1.0 stable, published to npm as @cyanoorg/dsh-norm-spec. DSH host supported: @deepseek-ai/dsh@0.1.0-rc.6.

Install

dsh plugin add @cyanoorg/dsh-norm-spec --profile <name>

That is all: the package ships a sealed upstream norm-spec payload and a native bridge, resolved at runtime from the installed tree — no PATH lookups, no environment variables. Platform binaries arrive through npm optionalDependencies (darwin-arm64, darwin-x64, linux-x64, win32-x64); npm selects the matching one automatically.

What it does

  • Starts one verified dsh-norm-bridge child per DSH agent session (agent/session-start) against a sealed upstream norm-spec payload.
  • Injects collected .norm conventions at agent/pre-step as one durable <system-reminder> user message, SHA-1 digest-suppressed, most-specific first — the same injection idiom as dsh's own agent-instructions.
  • After successful write/edit tool calls, appends bounded strict validation feedback through tools/post-execute (soft feedback; never blocks or reverts).
  • Registers native norm_validate / norm_collect / norm_scan tools and one dsh-norm-spec skill so the model can inspect conventions on demand.
  • Never writes custom session event types; never falls back to a norm on PATH.

Local development

# Rust gates
cargo fmt --check
cargo clippy --workspace --all-targets --all-features -- -D warnings
cargo test --workspace --all-features

# TypeScript
npm install
npm run typecheck
npm test

Development may override the packaged runtime resolution with DSH_NORM_BRIDGE and DSH_NORM_PAYLOAD environment variables; packaged installs never use them. Release procedure (five-package publish, dist-tag policy, post-publish verification) lives in docs/RELEASE-SOP.md.

Documentation

  • docs/ARCHITECTURE.md — Rust/TypeScript boundary and DSH host surface
  • docs/BRIDGE-PROTOCOL.mddsh-norm-spec/bridge/v1 process contract
  • docs/decisions.md — decision records D001–D011
  • docs/RELEASE-SOP.md — release and publish procedure
  • docs/planning/status.md — live development state
  • ROADMAP.md — milestone plan

License

MIT