diff --git a/CHANGELOG.md b/CHANGELOG.md
index 4ac1997..4f1931c 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -20,6 +20,18 @@ sibling project the same week this note was added.
## [Unreleased]
+## [0.0.56] - 2026-09-02
+
+`status_request_fields` is declared: `["target_scope"]`, the same
+vocabulary as `plan_request_fields`. A consumer that reads the declaration
+may send `--target-scope` to `status` and measure the inventory the plan it
+is about to bind will measure, instead of the global namespaces at a
+workspace root. The runtime has honoured the flag since 0.0.55; this release
+adds the sentence that lets a consumer send it, in the order every
+`provider-info` member follows: kit 0.2.9 names it, `ai-stp-cli 0.0.15`
+accepts it, then the seven declare it. Kit 0.2.9 is vendored. Nothing else
+moves.
+
## [0.0.55] - 2026-09-02
A plan whose scope contradicts the target's record is refused by
diff --git a/Cargo.lock b/Cargo.lock
index bf2172a..a133c96 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -66,7 +66,7 @@ checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f"
[[package]]
name = "harness-runtime"
-version = "0.0.55"
+version = "0.0.56"
dependencies = [
"provider-v3",
"serde",
@@ -128,7 +128,7 @@ dependencies = [
[[package]]
name = "opencode-setup-system"
-version = "0.0.55"
+version = "0.0.56"
dependencies = [
"harness-runtime",
"provider-v3",
@@ -147,7 +147,7 @@ dependencies = [
[[package]]
name = "provider-v3"
-version = "0.0.55"
+version = "0.0.56"
dependencies = [
"serde",
"serde_json",
@@ -209,7 +209,7 @@ dependencies = [
[[package]]
name = "setup-core"
-version = "0.0.55"
+version = "0.0.56"
dependencies = [
"miniz_oxide",
"serde",
diff --git a/Cargo.toml b/Cargo.toml
index 2003889..cfd5d41 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -8,7 +8,7 @@ members = [
]
[workspace.package]
-version = "0.0.55"
+version = "0.0.56"
edition = "2024"
rust-version = "1.89"
license = "AGPL-3.0-or-later"
@@ -23,9 +23,9 @@ sha2 = "0.11"
# `setup-core::archive`); an inflate loop is not, because its bugs are
# memory-safety bugs and it is not improved by being hand-written here.
miniz_oxide = "0.9"
-setup-core = { path = "crates/setup-core", version = "0.0.55" }
-provider-v3 = { path = "crates/provider-v3", version = "0.0.55" }
-harness-runtime = { path = "crates/harness-runtime", version = "0.0.55" }
+setup-core = { path = "crates/setup-core", version = "0.0.56" }
+provider-v3 = { path = "crates/provider-v3", version = "0.0.56" }
+harness-runtime = { path = "crates/harness-runtime", version = "0.0.56" }
[workspace.lints.rust]
unsafe_code = "forbid"
diff --git a/README.md b/README.md
index cadac6d..edbd0b7 100644
--- a/README.md
+++ b/README.md
@@ -179,7 +179,7 @@ release is a convenience, not the authorised copy.
```bash
docker run --rm -v "$HOME/.config:/config" \
- ghcr.io/nddev-opennetwork/opencode-setup-system:0.0.55 \
+ ghcr.io/nddev-opennetwork/opencode-setup-system:0.0.56 \
status --target /config/
--json
```
diff --git a/crates/provider-v3/src/info.rs b/crates/provider-v3/src/info.rs
index 7b145fa..b3e4ad4 100644
--- a/crates/provider-v3/src/info.rs
+++ b/crates/provider-v3/src/info.rs
@@ -232,8 +232,9 @@ pub struct ProviderInfo {
/// The arguments `status` accepts beside its target, once the kit names
/// the member.
///
- /// Empty and therefore absent until kit `0.2.9` publishes the member and
- /// a released consumer accepts it -- the same two gates every
+ /// Empty and therefore absent until the kit publishes the member and a
+ /// released consumer accepts it -- kit `0.2.9` and `ai-stp-cli 0.0.15`
+ /// did on 2026-09-02 -- the same two gates every
/// `provider-info` field has to pass, because the field set is compared
/// for exact equality and an unknown member refuses the whole document.
/// The runtime already honours `status --target-scope` (0.0.55); this is
@@ -408,9 +409,11 @@ impl ProviderInfo {
TargetScope::REQUEST_FIELD.to_owned(),
EndState::REQUEST_FIELD.to_owned(),
],
- // Held until the kit names it; see the field's own note. The test
- // beside `plan_request_fields`' flips this the day it does.
- status_request_fields: Vec::new(),
+ // Declared 2026-09-02 in the same order as the two above: kit 0.2.9
+ // names the member (`provider-info.schema.json`), ai-stp-cli
+ // 0.0.15 accepts it, and only then does a release carry it. The
+ // test beside `plan_request_fields` holds it to the kit's enum.
+ status_request_fields: vec![TargetScope::REQUEST_FIELD.to_owned()],
})
}
diff --git a/install.ps1 b/install.ps1
index 43b7696..124ae07 100644
--- a/install.ps1
+++ b/install.ps1
@@ -7,7 +7,7 @@
# powershell -ExecutionPolicy Bypass -File install.ps1 -Version 0.1.0
[CmdletBinding()]
param(
- [string]$Version = "0.0.55",
+ [string]$Version = "0.0.56",
[string]$InstallDir = "$env:LOCALAPPDATA\Programs\opencode-setup-system"
)
$ErrorActionPreference = "Stop"
diff --git a/install.sh b/install.sh
index 428ef92..b7e4361 100644
--- a/install.sh
+++ b/install.sh
@@ -14,7 +14,7 @@ set -eu
REPO="NDDev-OpenNetwork/opencode-setup-system"
BINARY="opencode-setup-system"
-VERSION="${1:-0.0.55}"
+VERSION="${1:-0.0.56}"
PREFIX="${OPENCODE_INSTALL_DIR:-$HOME/.local/bin}"
case "$(uname -s)" in
diff --git a/provider-kit/v3/KIT-IDENTITY.json b/provider-kit/v3/KIT-IDENTITY.json
index 969fd03..a47c19b 100644
--- a/provider-kit/v3/KIT-IDENTITY.json
+++ b/provider-kit/v3/KIT-IDENTITY.json
@@ -1,12 +1,12 @@
{
- "aggregate_digest": "sha256:2a8777184eb1c4e3a445606dfb591c41f92df89fff795649d330b9ff4db066fa",
+ "aggregate_digest": "sha256:8abeee1e3469b84b57492ad7d73d794416bca439e381becc0d36ea703bded33b",
"files": [
"conformance-cases.json",
"manifest.json",
"provider-info.schema.json",
"status-response.schema.json"
],
- "kit_version": "0.2.8",
+ "kit_version": "0.2.9",
"protocol_version": 3,
"schema": "ai-stp-provider-kit-identity/1"
}
diff --git a/provider-kit/v3/SHA256SUMS b/provider-kit/v3/SHA256SUMS
index e38a7cb..30015df 100644
--- a/provider-kit/v3/SHA256SUMS
+++ b/provider-kit/v3/SHA256SUMS
@@ -1,4 +1,4 @@
fe04d03b15cfe8d5b61835eafd3ea788074684e2be69d419f9c22a37ea0461b7 conformance-cases.json
-cdaa34cd38e1ff0005793280194c31c4781c4505cbc3da6e823811e88f4aea5e manifest.json
-165075bb253bdc1746e67a776957f709f4bbd36fe97d62cff9003af9d0f65186 provider-info.schema.json
+11d32dbfa04c9262ce5829f8168c97ff85abe10d9fa9c396437de23af2e2f95d manifest.json
+1ab7321772d06980555846406df2c828f6d304efddcf109a40728dd10c1aa38e provider-info.schema.json
2c5e01df3b02369832b74842b128c42b6b84d1e1455db3800474e54e71b645e4 status-response.schema.json
diff --git a/provider-kit/v3/manifest.json b/provider-kit/v3/manifest.json
index fb21eba..5e8ecf8 100644
--- a/provider-kit/v3/manifest.json
+++ b/provider-kit/v3/manifest.json
@@ -39,7 +39,7 @@
],
"decision": "docs/adr/ADR-0061-capability-negotiated-provider-protocol-v3.md",
"generated_from": "apps/cli/src/ai_stp_cli/provider/protocol_v3.py",
- "kit_version": "0.2.8",
+ "kit_version": "0.2.9",
"operation_network": {
"backup": [
{
diff --git a/provider-kit/v3/provider-info.schema.json b/provider-kit/v3/provider-info.schema.json
index d62e97b..ac00ee3 100644
--- a/provider-kit/v3/provider-info.schema.json
+++ b/provider-kit/v3/provider-info.schema.json
@@ -217,6 +217,16 @@
"type": "array",
"uniqueItems": true
},
+ "status_request_fields": {
+ "items": {
+ "enum": [
+ "target_scope"
+ ],
+ "type": "string"
+ },
+ "type": "array",
+ "uniqueItems": true
+ },
"supported_arch": {
"items": {
"minLength": 1,