Standards

DSHIO/T 21—2026 Test Conditions

Standard No.DSHIO/T 21—2026
TitleTest Conditions
Versionv1.0 (Trial)
Published2026-11-07
Effective2026-11-07
StatusTrial (2026-11-07 → 2027-02-07; becomes current automatically)
OriginalSimplified Chinese
LayerMethod standard

📋 Current scope

This standard defines six test stages (T0–T5). Current implementation status:

StageNameStatus
T0Static check✅ Available
T1Install✅ Available
T2List✅ Available
T3Mount✅ Available
T4Boot✅ Available
T5Tool invocation🕐 Planned

Why T5 is only planned: it involves model cost and nondeterminism (see DSHIO/T 32 clause 4.3). It is written into the standard but not yet scheduled. Until it is formally included, any report claiming a T5 run is void.

Manual-judgement clauses (5.5.1, 5.5.2) are the author's own responsibility. DSHIO does not issue verdicts on them. Producing an opinion on them is a paid service, and the opinion is advisory only.

This notice prevails over any T5-related provision elsewhere in this standard.


1 Scope

This standard specifies the environmental, resource, network and timing conditions under which each stage of DSH plugin testing takes place.

It applies to any person or system that makes a verdict on a plugin according to the DSHIO standards.

It does not specify the test methods themselves — see DSHIO/T 20.

Why this standard exists. A test result without fixed conditions is one person's impression on one machine on one day. With fixed conditions, the same report can be reproduced, challenged and audited by someone else.


2 Normative references

The clauses of the following document become clauses of this standard by virtue of the reference.

StandardTitleClauses referenced
DSHIO/T 00—2026Terms and Definitions3.1.3 (DSH version), 3.3.4 (sandbox), 3.5.1 (test stage), 3.5.4 (reproducibility), 3.4.1 (model agnosticism)

3 Terms and definitions

The terms defined in DSHIO/T 00—2026 apply. Additional definitions:

3.1 fixed condition

An environmental factor that shall not change during a test run. Changing any one of them constitutes a new test, and its result shall not be compared with the original.

3.2 variable condition

A condition that is permitted to change within a single test run. Variable conditions shall be recorded item by item in the test report.

3.3 test environment fingerprint

A set of values sufficient to uniquely identify the test environment, expressed as a string, for comparison purposes.

Example: dsh=0.2.2-rc.1;img=dsh-sandbox:5.0@sha256:...;node=24.11.1;pnpm=9.15.9


4 Condition classification

4.1 Two classes of test condition

ClassStagesModel dependent
Model-independent conditionsT0, T1, T2, T3, T4No
Model-dependent conditionsT5Yes

Basis: DSHIO/T 00—2026 clause 3.4.1 — DSH install, mount and boot do not depend on a specific model; model access is provided by separate plugins.

Implication: a T0–T4 verdict holds under any model; a T5 verdict holds only under the named model.


5 Model-independent conditions (T0–T4)

5.1 Fixed condition list

The following conditions shall be fixed during T0–T4 and shall be written into the test report.

5.1.1 DSH version

ItemRequirement
Value formThe raw output of dsh --version
GranularityShall be exact to the pre-release identifier (e.g. 0.2.2-rc.1, not 0.2.2 or 0.2.x)
Used forWhether the string matches the plugin's engines.dsh range

Current baseline version: 0.2.2-rc.1

Note: a report that states a range (e.g. "the 0.2.2 series") is not reproducible and cannot be used as a basis for certification.

5.1.2 Container image

ItemRequirement
Image namedsh-sandbox:5.0
Shall recordimage name + digest (sha256:...)
Base systemderived from node:20-slim

Shall be fixed inside the image:

ComponentVersion
Node.js24.11.1 (installed at /opt/node24)
pnpm9.15.9
DSH0.2.2-rc.1

Why the digest matters. A tag can be overwritten — same name, different content. Without a digest you cannot reproduce the run a year later.

5.1.3 Resource limits

ResourceLimitStages
Memory768 MBT1, T2, T3, T4
CPU1 coreT1, T2, T3, T4
Processes128T4
Diskunlimited (container overlay)all

T0 (static check) needs no container and has no resource limits.

5.1.4 Network state

StageNetworkOption
T0not needed—
T1 installnetwork requireddefault
T2 listnetwork shall be off--network none
T3 mountnetwork shall be off--network none
T4 bootnetwork shall be off--network none

Why T2–T4 shall have no network. During install a plugin can fetch anything from the network. With the network off, any lingering request fails and is exposed; and even a malicious plugin has nowhere to send data. This is a security design as well as a reproducibility design.

5.1.5 Permissions and isolation

ItemT1T2T3T4
--user node✅✅✅✅
--cap-drop ALL——✅✅
--security-opt no-new-privileges——✅✅
--pids-limit 128———✅

Note: T1 needs to install, so the ordinary privileges pnpm requires are kept. From T2 onward they are tightened progressively.

5.1.6 Timeouts

StageTimeoutVerdict on timeout
T1 install180 sinstall_failed, first error recorded as timeout
T2 list90 sinstall_failed (a list failure counts as an install failure)
T3 mount90 sconfig_failed
T4 boot90 s (including the 12 s liveness observation)boot_failed

The 12-second liveness observation at T4: after the profile starts it shall stay alive for 12 consecutive seconds without exiting to pass.

Where 12 seconds comes from. Long enough to cover the common failure window of plugin initialisation, config loading and the first event-loop turn; longer would markedly slow batch testing, and in practice no failure mode has been observed that only appears after 12 seconds.

5.1.7 Working directory and profile

ItemValue
HOME inside the container/home/node
DSH_HOME/home/node/.dsh
Test profile nameweb
Profile initialisationautomatically from the factory template on first use
State before the testshall be clean (no pre-existing plugin dependencies, no pre-existing patch)

What "clean" means: in the profile directory, package.json's dependencies has no entries other than the target plugin of this test.

5.1.8 Command sequence

The command sequence for T1–T4 shall be identical, verbatim:

# T1 install (network on)
dsh plugin --profile web add <package-spec>

# T2 list (network off)
dsh plugin --profile web list

# T3 mount (network off)
dsh --profile web --dump-config

# T4 boot (network off, observe 12 s)
dsh --profile web

No insertion, omission or reordering is permitted.

5.1.9 Repeat count

SituationMinimum runsConsistency requirement
Verdict published publicly2The two verdicts shall be exactly the same
Internal batch testing1—

When the two verdicts differ:

  1. Record the verdict as unstable
  2. Both full outputs shall be recorded
  3. An unstable result shall not be used as a basis for certification

5.2 Test environment fingerprint under model-independent conditions

Format:

dsh=<DSH version>;img=<image name>@<digest>;node=<node version>;pnpm=<pnpm version>;mem=<memory>;cpu=<CPU>

Example:

dsh=0.2.2-rc.1;img=dsh-sandbox:5.0@sha256:abc123...;node=24.11.1;pnpm=9.15.9;mem=768m;cpu=1

Same fingerprint = same conditions. When fingerprints differ, results shall not be compared directly.


6 Model-dependent conditions (T5)

6.1 Why it needs separate rules

T5 tests "whether the model correctly invokes a tool the plugin registers". The result of this stage depends on both the plugin and the model; changing the model can reverse the conclusion entirely.

Therefore: a T5 verdict is only meaningful when bound to a specific model.

6.2 Fixed conditions

In addition to all conditions in chapter 5, T5 shall also fix the following:

6.2.1 Model identifier

ItemRequirement
Shall recordmodel ID and version identifier
Prohibitedvendor name only (e.g. "DeepSeek") or series name only (e.g. "V4")
Exampledeepseek-v4.1-flash-0731

6.2.2 Generation parameters

ParameterShall record
temperature✅
max_tokens✅
top_p (if used)✅
tool calling enabled✅

A T5 report that does not record temperature and max_tokens is not reproducible.

6.2.3 Prompts

ItemRequirement
System promptrecord in full
Test promptrecord in full
Prompt languagerecord (Chinese / English / other)

Note: every character of a prompt affects model behaviour. Writing only "ask it to call the tool" does not constitute a reproducible condition.

6.2.4 Tool-calling configuration

ItemRequirement
Tool count (total tools available in the same round)shall record
Parallel tool calling enabledshall record
Tool-selection strategy (if configurable)shall record

Why record the total tool count. The more candidate tools, the higher the chance the model picks wrong. "Pick correctly among 3 tools" and "among 200" are not the same difficulty.

6.2.5 Repeat count

SituationMinimum runs
Publicly published T5 verdict3
Internal evaluation1

Pass criteria (choose one; the report shall state which):

CriterionDefinitionUse
All3 of 3 correct invocationsfor certification
Majorityat least 2 of 3 correctfor evaluation, not for certification

Why the T5 bar is higher than T0–T4. Models are stochastic; passing twice could be luck.

6.3 Model-dependent test environment fingerprint

<model-independent fingerprint>;model=<model ID>;temp=<temperature>;maxtok=<max output>;tools=<total tools>

Example:

dsh=0.2.2-rc.1;img=dsh-sandbox:5.0@sha256:abc...;node=24.11.1;pnpm=9.15.9;mem=768m;cpu=1;model=deepseek-v4.1-flash-0731;temp=0;maxtok=4096;tools=7

7 Mandatory fields of a test report

7.1 All tests

FieldMandatory
Plugin identity (npm name or github:owner/repo)✅
Test environment fingerprint✅
Test time (including time zone)✅
Duration of each stage✅
Verdict✅
First error (if failed)✅
Test executor identity✅

7.2 Additional mandatory fields for T5

FieldMandatory
Model-dependent environment fingerprint✅
Full system prompt✅
Full test prompt✅
Invocation record for every attempt✅
Which pass criterion was used✅

8 Handling condition deviation

8.1 What counts as deviation

Changing the value of any fixed condition in chapter 5 or chapter 6 constitutes a deviation.

8.2 Requirements for deviation

Deviation is not prohibited, but it shall:

  1. Be marked explicitly in the report as "condition deviation"
  2. List item by item what deviated, what it was changed to, and why
  3. The verdict shall not be compared with undeviated reports
  4. shall not be used as a basis for certification

8.3 Common deviations

DeviationMeaningfulNote
Changing the DSH version✅ yesThat is exactly what is being tested (cross-version compatibility)
Changing the container image⚠️ carefulDifferent environment; results not comparable
Raising memory⚠️May let a plugin pass that would otherwise OOM
T2–T4 with network on❌ not acceptedBreaks the security premise; result void
Reducing the repeat count❌ not accepted (for certification)See 5.1.9 and 6.2.5
Not recording model parameters (T5)❌ not acceptedResult not reproducible

9 Stability of conditions

9.1 Monitoring condition drift

At least once every 30 days, verify the following against this standard:

ItemVerification method
Image digestdocker inspect --format='{{.Id}}' dsh-sandbox:5.0
Node versionnode --version inside the container
pnpm versionpnpm --version inside the container
DSH versiondsh --version inside the container

When drift is found:

  1. Mark old test results as "conditions changed"
  2. Re-test key samples under the new conditions
  3. Update this standard or restore the conditions

9.2 Why monitor

If image tag 5.0 is rebuilt, the Node version under the same tag may have changed. Without monitoring, test results silently lose comparability.


Annex A (normative) Condition quick-reference

ItemT0T1T2T3T4T5
Containernot needed✅✅✅✅✅
Network—onoffoffoffon
Memory—768m768m768m768m768m
CPU—11111
--user node—✅✅✅✅✅
--cap-drop ALL———✅✅✅
no-new-privileges———✅✅✅
--pids-limit————128128
Timeout30s180s90s90s90s300s
Repeat runs12———3
Model parameters—————mandatory

Note: T2–T4 are not repeated separately; they are part of the same sequence that follows T1. "Repeat runs" refers to how many times the whole sequence is executed.


Annex B (informative) Relationship to other standards

DSHIO/T 00  Terms and Definitions
      ↓ referenced by
DSHIO/T 21  Test Conditions (this document)
      ↓ referenced by
DSHIO/T 20  General Rules for Testing  ← what each stage does
      ↓ referenced by
DSHIO/T 10  Plugin Standard            ← what a plugin shall achieve
      ↓ referenced by
DSHIO/T 32  Certification Rules        ← how conformance is certified

This standard answers only "under what conditions", not "how to test" or "what counts as passing".


Revision record

VersionDateChangeProposed byParticipantsConflict-of-interest statement
v1.0 (Trial)2026-11-07First releaseDSHIODSHIOThe test platform operated by DSHIO is the sole implementer of this standard; the conditions specified here are the conditions that platform currently runs under, and are publicly verifiable.