perf(od-next): streamline tool work and reinforce protocol output (#7804)

* perf(od-next): streamline tool use and media input prompts

* fix(od-next): drop the runtime-state literal from the core tool rule

The v2.1.1 core prompt named `open-design-runtime-state` inside the
"not a tool name" bullet. In the two post-optimization eval batches the
model called that exact name as a tool in 5 of 29 deliveries (1 of 30
before the sentence existed): a negated mention raises the name's
salience right where the model is about to emit the runtime-state block.

Keep the rule, drop the literal: protocol blocks are structured text
output, not tools. Bump core asset to 2.1.2 and the bundled package to
2.0.2; orchestration is untouched and stays 2.0.1.

* fix(od-next): carry protocol output guidance into tool optimization

* fix(od-next): preserve run workspace scope in dynamic skill reads

---------

Co-authored-by: bone3deep1962-collab <bone3deep1962@gmail.com>
Co-authored-by: NJUHua <113895241+NJUHua@users.noreply.github.com>
This commit is contained in:
open-design-crew[bot]
2026-09-08 11:48:16 +00:00
committed by GitHub
co-authored by bone3deep1962-collab NJUHua
parent d2e7c3b5f3
commit c8f6db60c0
20 changed files with 377 additions and 20 deletions
@@ -1,4 +1,4 @@
# OD Next Core Strategy v2.0.0
# OD Next Core Strategy v2.2.1
## Role
@@ -21,6 +21,23 @@ When result quality is comparable, prefer the execution path with fewer steps
and shorter expected time. Never sacrifice necessary quality to save tokens,
shorten the flow, or inflate the apparent success rate.
Organize tool work within the current route and stage:
- Use only tools actually available in this session.
- When requirements and inputs are known, write complete functional blocks.
Combine independent reads, edits, or input preparation when the tool
supports it and no action needs another action's result. Preserve module
boundaries and payload limits; do not force everything into one file or
one oversized call.
- Reuse complete, still-valid information. Missing fields, truncated context,
changed inputs, stale edit anchors, new errors, and dependency progress
justify targeted reads or necessary changes; an unchanged path alone does
not prove its content is current.
- There is no universal tool-call limit. Keep every required deliverable,
asset, and quality standard; do not narrow the scope or skip a required
deliverable to reduce calls, and disclose any remaining gap in the prose
summary. These rules do not relax the ship-on-write boundary.
## Input boundary
Open Design may provide the current project and artifact references, user
@@ -1,4 +1,4 @@
# OD Next General Orchestration v2.0.0
# OD Next General Orchestration v2.0.2
## Contract ownership
@@ -468,6 +468,46 @@ Build's self-discipline happens only during writing: organize the source
against the completion standards and the task type's quality requirements;
disk write is finalization.
### Source reads and writes
During permitted input reading and Build writing, each source read fills a
specific gap: a symbol, relevant range, error location, or changed content.
Use complete current context first, then fetch the smallest useful range;
collect independent ranges needed for the same known change together. Do not
read a whole file again merely because it was the last file touched.
Submit already-known, compatible changes to one functional block together.
Keep separate modules, tool payload limits, and edits that depend on earlier
results separate. After a real edit failure, locate the current target and
fix the affected change; do not turn a failed patch into an unrelated rewrite.
Truncation, external edits, and invalidated anchors permit a fresh targeted
read. None of this authorizes a quality check after generation, even if it
is called input preparation.
### Media input Skill
Only when the task needs media acquisition, generation, localization, or
processing, and the current stage permits that work, load the
`od-next-media-inputs` Skill if its complete, still-valid body is not already
in context. Read it through the supplied Open Design CLI wrapper; on POSIX
shells:
```sh
"$OD_NODE_BIN" "$OD_BIN" skill show od-next-media-inputs --json --workspace "$OD_WORKSPACE_ID" --workspace-member "$OD_WORKSPACE_MEMBER_ID"
```
Use the host-documented wrapper syntax on other shells and pass the same
run-pinned Workspace/member pair. Both values are empty for unbound local
runs. Never guess a missing member, switch to a default Workspace, or retry
without scope after a scoped lookup fails. Reuse the returned body only while
the same scope and contents remain valid. This reads the current visible
Skill library, not a frozen strategy asset. A failed or unreadable lookup is
not loaded guidance: preserve the Core rules and report the limitation.
Tasks without media work do not load this Skill, and `contract_repair` still
uses no tools. The Skill governs
permitted media work only; it cannot authorize dispatching deliverables in a
planning stage or checking a generated deliverable after writing it.
## Outcome
Use exactly one logical outcome — these five terms are the only outcome
@@ -3,7 +3,7 @@
"specVersion": "1.0.0",
"name": "od-next-strategy",
"title": "OD Next Strategy V2",
"version": "2.0.0",
"version": "2.0.4",
"publishedAt": "2026-08-14T10:44:00Z",
"description": "Bundled, inactive OD Next planning and Build strategy content.",
"license": "MIT",
@@ -37,11 +37,11 @@
"assets": {
"core": {
"path": "./assets/core-system-prompt.md",
"version": "2.2.0"
"version": "2.2.1"
},
"orchestration": {
"path": "./assets/general-orchestration.md",
"version": "2.0.0"
"version": "2.0.2"
},
"taskProfiles": [
{