Repo-local decisions for @perrylink/dsh-plugin-kit (v0.1.x, unpublished).
The engineering standard lives in the batch task spec and the DeepSeek
Harness AGENTS.md; this file records only what is decided here.
- Approval vocabulary:
src/gates/approval.tsmirrorsdsh-auto-review'sfallbackPolicyverbatim:'rejected' | 'delegate' | 'allow-once', default'rejected'. Kit verdictdenymaps to policy'rejected'; verdictallowmaps to'allow-once';'delegate'has no verdict equivalent and resolves todenywithEffectiveDecision.policy === 'delegate'. - Session events:
src/gates/session-event.tsis the shared adaptive (ignorable) append gate.probeIgnorableAppendmust swallow append errors: hosts whose third append argument is aSurfaceIntent(0.1.2-alpha.1onward) throwvalidateNexton the probe options bag for surface probe types and ignore it for log-only types — either way the probe reportsfalse.0.1.2-rc.1retains theignorable?: trueenvelope field for stored-log read compatibility only;Session.appendstill cannot stamp it. - Judge schema:
src/shared/judge.tsObjectJsonSchemamirrors the hostJsonSchemaNode(packages/core/tools/src/json-schema.ts): every node field is optional and array/record fields stay mutable soVERDICT_SCHEMAis assignable to the host'sObjectJsonSchema. Do not addreadonlyto the mirror fields.
- Five-language READMEs:
README.mdis the source;README-zh.md,README-es.md,README-pt.md,README-hi.mdfollow the same section order (Compatibility / What you get / Quick start / Install & uninstall / Configuration / Tools & surfaces / Permissions & data / Security boundaries / Known limitations / Development / Topics / Contributors / License). Change the English source first, then sync the translations in the same commit.
prepare/buildemitlib/with plaintsc(no tsdown split): the kit has one library face, not a bundled plugin face.typescriptlives independenciesso the git install channel can runpreparewithout devDependencies.typecheck:cirunstsc -p tsconfig.ci.json; the kit has no checkoutpathsaliases, so it equalstypecheckuntil one is added.
src/shared/sanitize.tsis a port ofdsh-mask'slib/strip.mjs(itself ported from Pii-Stripper-Middleware, Apache-2.0, Copyright 2026 PerryLink). KeepTHIRD_PARTY_NOTICES.mdcurrent when the port changes.