execution-system
Host-neutral execution boundary for workflow-self-recursive: resolves one exact Workflow Package, binds an immutable Delivery Manifest, coordinates the Delivery, emits bounded OTLP observations. Install via dsh plugin add wsr-dsh-intake · 与宿主无关的 Agent 工作流执行边界:解析并校验确定的工作流包,绑定不可变交付清单,协调交付并发出有界观测。
- Stars
- 0
- Language
- TypeScript
- Created
- Aug 17, 2026
- Updated
- Aug 25, 2026
Introduction
Workflow Self-Recursive — Execution System
English | 中文

Turn every agent conversation into an auditable, recoverable, version-bound delivery.
The Execution System is the host-neutral execution boundary of workflow-self-recursive: it resolves and validates one exact Workflow Package, binds it in an immutable Delivery Manifest, coordinates the Delivery inside an isolated Runner-owned execution context, recovers from the last durable boundary after crashes, and emits bounded observations over OTLP — observation never controls execution.
Delivery forms (交付形态)
The Execution System is a host-neutral product, not a plugin. DSH is one entry point among several:
| Form | Package | Audience |
|---|---|---|
| Embedded library | wsr-execution | Host-neutral embedding — import ExecutionApplicationFactory and bootstrap with create(configFile, dependencies) |
| DSH plugin entry | wsr-dsh-intake | DeepSeek Harness users — run workflows from chat and sidebar tabs |
| CLI | execution-config (in wsr-execution) | Configuration init / copy / validate / dump-effective |
The DSH plugin is the first product entry; every admitted Workflow Action runs in a Runner-owned, isolated DSH execution context (DSH-E), never in the Intake context (DSH-I).
Why it exists
| Bare agent chat | What actually happens | Execution System |
|---|---|---|
| Execution is a black box | What the model did, and with which workflow definition, cannot be audited afterwards | Every Delivery binds one exact version + SHA-256 into an immutable Manifest |
| Interruptions lose state | After a crash or restart there is nowhere to look | Manifest/current-slot persist; /wsr recover resumes from the last durable boundary |
| Version drift | The same request can execute different definitions at different times | Exact/latest selectors with a local READY store that stays authoritative |
| Observation couples to execution | A telemetry outage can take the run down with it | One-way, best-effort OTLP; Execution continues when Evidence or telemetry is unavailable |
How it works
Three modules carry the responsibility:
- Delivery Binding resolves one exact, locally
READYWorkflow Package (selector → validation → localMISSING/STAGING/READYstore) and constructs the Manifest content. - Runtime Interaction owns canonical worktree exclusivity, the current Delivery slot, Manifest persistence, Runtime invocation, recovery, and final handling.
- Delivery Observation maps outbound bounded facts to a one-way, best-effort OTLP profile without controlling execution.
The default Source is the configured firestige/workflow-package GitHub Release. implementation-workflow@0.3.0 and system-design-workflow@0.3.0 are downloaded, validated, and published to the local READY store; neither is embedded in an Execution artifact.
Install (DSH entry, one command)
# 1. Approve the better-sqlite3 native build once (pnpm 11)
dsh plugin --profile web config set --location=project --json allowBuilds '{"better-sqlite3":true}'
# 2. Install the Intake entry — the engine (wsr-execution) comes as its dependency
dsh plugin --profile web add wsr-dsh-intake
Requires Node >=24.12 <25 and DSH 0.1.1-rc.2. Core and Intake versions are locked together (wsr-dsh-intake@0.1.2 depends on wsr-execution@0.1.2), so a single add installs both and a single update moves both.
Quick start
-
Point the plugin at durable state files (outside the installation directory):
# $DSH_HOME/profiles/web/cordis.patch.yml — the workflow-execution row - id: workflow-execution config: configFile: /absolute/path/wsr-local/execution.yaml bindingFile: /absolute/path/wsr-local/dsh-intake-bindings.jsonInitialize the config with
execution-config init <path> yaml, replace the__REQUIRED__values, and provision the referenced API key in an external DSH credential file. -
Start DSH Web from the target worktree and create a Delivery from chat:
/wsr create implementation-workflow@0.3.0 Implement the requested change and preserve existing user edits. -
Watch progress in the same conversation, inspect the bound Delivery in the sidebar Deliveries / Current status tabs, answer multi-turn Actions in chat, and finish an interaction with
/wsr action finish.
Commands
/wsr list # privacy-safe Delivery and worktree state
/wsr create <name|name@latest|name@version>
/wsr recover [delivery-id]
/wsr status [delivery-id]
/wsr action finish
/wsr abandon <delivery-id>
The explicit first-party skill /workflow-execution performs exactly one closed operation through the DSH-I-only workflow_execution_intake tool.
Compatibility
| Dimension | Requirement |
|---|---|
| Node.js | >=24.12.0 <25 |
| DeepSeek Harness | 0.1.1-rc.2 (@deepseek-ai/dsh) |
| Workflow Package contract | agentops.workflow-dsl@1.1.0 |
| Observation contract | agentops.observation@1.0.0 |
| Checkpoint store | better-sqlite3 (native build, approved via allowBuilds) |
Known Limitations and Deferred Work
- Developer preview — version
0.1.xis an MVP candidate for trusted local use by individuals and small teams; compatibility-breaking changes are possible. - Conversation workspace as provisional worktree — until #94, an operation that must select a worktree uses the invoking conversation's registered workspace; authority is invocation-scoped and exact.
- Observation disabled by default — set
observation.enabled: truewith a loopback OTLP baseendpointto enable the non-controlling exporter. - DSH-only interactive surface — the shipped
webprofile is the reference assembly; a custom profile contains onlydsh-baseand is not an interactive Intake surface.
For maintainers
- Release qualification — see the release process.
pnpm quickstart:preparebuilds and verifies both artifacts and initializes local E2E configuration in one operation. - Changelog — generated from git history by
pnpm changelog:generate;pnpm changelog:check(CI-gated) rejects hand-edited drift. - Local pre-release E2E — guide; final DSH quickstart; configuration reference; DSH Intake package reference.
Direct embedding
For host-neutral embedding, import ExecutionApplicationFactory, DefaultExecutionApplicationFactory, ExecutionRequest, TaskPrompt, and the configuration types from the package root. Calling the default factory's create(configFile, dependencies) is the single production bootstrap path. The exact DSH runtime is an optional peer: package-root import/type consumers need not install it, while executing the current dsh Provider requires the embedding profile to provide @deepseek-ai/dsh@0.1.1-rc.2. The release includes config/schema/execution.config.schema.json, versioned defaults/examples, compiled TypeScript declarations, and execution-config init|copy|validate|dump-effective.
Get the source
This repository is normally consumed as a submodule of workflow-self-recursive:
git clone --recurse-submodules https://github.com/firestige/workflow-self-recursive.git
To clone it standalone:
git clone https://github.com/firestige/execution-system.git
Documentation
- Execution System design
- Conceptual architecture
- Workflow composition model
- Execution–Evidence interaction contract
- Planned first-party LangGraph runtime profile