Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ jobs:
name: rust
permissions:
contents: read
uses: NDDev-OpenNetwork/ci-workflows/.github/workflows/rust-ci.yml@dfdad5c71a5c9d1c952a7fb9472b7ecc8a28ed56
uses: NDDev-OpenNetwork/ci-workflows/.github/workflows/rust-ci.yml@1ab6708b62ec7bd17f2d8a519c6fcc39edb22243
with:
toolchain: '1.98.0'
# The three-OS matrix is the evidence ADR-0113 asks for, and standard
Expand All @@ -46,7 +46,7 @@ jobs:
name: supply-chain
permissions:
contents: read
uses: NDDev-OpenNetwork/ci-workflows/.github/workflows/rust-supply-chain.yml@dfdad5c71a5c9d1c952a7fb9472b7ecc8a28ed56
uses: NDDev-OpenNetwork/ci-workflows/.github/workflows/rust-supply-chain.yml@1ab6708b62ec7bd17f2d8a519c6fcc39edb22243
with:
enable_deny: true
enable_audit: true
Expand All @@ -56,7 +56,7 @@ jobs:
name: actionlint
permissions:
contents: read
uses: NDDev-OpenNetwork/ci-workflows/.github/workflows/actionlint.yml@dfdad5c71a5c9d1c952a7fb9472b7ecc8a28ed56
uses: NDDev-OpenNetwork/ci-workflows/.github/workflows/actionlint.yml@1ab6708b62ec7bd17f2d8a519c6fcc39edb22243

pr-hygiene:
name: pr-hygiene
Expand All @@ -68,7 +68,7 @@ jobs:
# that would use them is off.
issues: write # the stale bot closes threads
pull-requests: write # the labeler applies labels
uses: NDDev-OpenNetwork/ci-workflows/.github/workflows/pr-hygiene.yml@dfdad5c71a5c9d1c952a7fb9472b7ecc8a28ed56
uses: NDDev-OpenNetwork/ci-workflows/.github/workflows/pr-hygiene.yml@1ab6708b62ec7bd17f2d8a519c6fcc39edb22243


boundary:
Expand Down
12 changes: 6 additions & 6 deletions .github/workflows/security.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ jobs:
actions: read # CodeQL reads the workflow definitions it analyses
contents: read
security-events: write # CodeQL publishes its findings to code scanning
uses: NDDev-OpenNetwork/ci-workflows/.github/workflows/public-codeql.yml@dfdad5c71a5c9d1c952a7fb9472b7ecc8a28ed56
uses: NDDev-OpenNetwork/ci-workflows/.github/workflows/public-codeql.yml@1ab6708b62ec7bd17f2d8a519c6fcc39edb22243
with:
languages: '["rust", "actions"]'
queries: security-and-quality
Expand All @@ -37,7 +37,7 @@ jobs:
permissions:
contents: read
pull-requests: write # writes the review it produces
uses: NDDev-OpenNetwork/ci-workflows/.github/workflows/public-dependency-review.yml@dfdad5c71a5c9d1c952a7fb9472b7ecc8a28ed56
uses: NDDev-OpenNetwork/ci-workflows/.github/workflows/public-dependency-review.yml@1ab6708b62ec7bd17f2d8a519c6fcc39edb22243
with:
fail_on_severity: moderate

Expand All @@ -52,24 +52,24 @@ jobs:
contents: read
id-token: write # mints the OIDC token Scorecard's publication is signed with
security-events: write # Scorecard publishes its findings to code scanning
uses: NDDev-OpenNetwork/ci-workflows/.github/workflows/public-scorecard.yml@dfdad5c71a5c9d1c952a7fb9472b7ecc8a28ed56
uses: NDDev-OpenNetwork/ci-workflows/.github/workflows/public-scorecard.yml@1ab6708b62ec7bd17f2d8a519c6fcc39edb22243

osv:
name: osv
permissions:
contents: read
uses: NDDev-OpenNetwork/ci-workflows/.github/workflows/osv-scan.yml@dfdad5c71a5c9d1c952a7fb9472b7ecc8a28ed56
uses: NDDev-OpenNetwork/ci-workflows/.github/workflows/osv-scan.yml@1ab6708b62ec7bd17f2d8a519c6fcc39edb22243

zizmor:
name: zizmor
permissions:
actions: read # the SARIF upload reads this run to attach its results
contents: read
security-events: write # zizmor publishes its findings to code scanning
uses: NDDev-OpenNetwork/ci-workflows/.github/workflows/zizmor-sarif.yml@dfdad5c71a5c9d1c952a7fb9472b7ecc8a28ed56
uses: NDDev-OpenNetwork/ci-workflows/.github/workflows/zizmor-sarif.yml@1ab6708b62ec7bd17f2d8a519c6fcc39edb22243

secret-scan:
name: secret-scan
permissions:
contents: read
uses: NDDev-OpenNetwork/ci-workflows/.github/workflows/secret-scan.yml@dfdad5c71a5c9d1c952a7fb9472b7ecc8a28ed56
uses: NDDev-OpenNetwork/ci-workflows/.github/workflows/secret-scan.yml@1ab6708b62ec7bd17f2d8a519c6fcc39edb22243
29 changes: 29 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,35 @@ sibling project the same week this note was added.

## [Unreleased]

## [0.0.54] - 2026-09-02

`remove` reads a bundle, and the plan says per path what stays.
The consumer's ADR-0129 case — a component that owns one key of a file the
person also writes — was inexpressible on the wire: a remove plan was built
without bytes, so "this path outlives me at bytes-without-the-key" had no
carrier. Now `plan-operation --operation remove` takes the same five bundle
arguments `replace` takes, and the plan gains an `end_state` member only when
one rides — per touched path, `removed`, or `final_bytes` with the member,
sha256 and byte_length copied from the bundle's own manifest — so a plan without a
bundle is byte-identical to what 0.0.53 produced. The apply refuses a bundle
the plan never described, a plan with survivors fed no bundle, and a bundle
whose members are not the ones the plan bound, all before the lock. After a
remove with survivors the record names no file: the bytes are the person's.

Declared through `plan_request_fields` in the ADR-0125 order, measured at each
step: kit 0.2.8 names the field, `ai-stp-cli 0.0.14` on PyPI accepts it, then
this release declares it. Kit 0.2.8 is vendored.

Cursor declares a `project` scope — `.cursor/rules`, `.cursor/commands`,
`.cursor/hooks.json`, `.cursor/mcp.json`, `.cursor/agents`, `.cursor/skills`,
each a literal workspace join in the 2026.08.31-4057e58 bytes. The home
`agents` question (cursor#94) was re-measured and the answer stayed no; the
global profile and its digest do not move.

Five products moved overnight and are pinned at what they publish today:
Claude Code 2.1.258, Codex 0.152.1, OpenCode 1.18.26, Cursor CLI
2026.08.31-4057e58, Antigravity 1.1.23. Grok 1.0.13 and Pi 0.84.4 stand.

## [0.0.53] - 2026-09-01

The other two readers of the exposed name, and the boundary that
Expand Down
8 changes: 4 additions & 4 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 4 additions & 4 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ members = [
]

[workspace.package]
version = "0.0.53"
version = "0.0.54"
edition = "2024"
rust-version = "1.89"
license = "AGPL-3.0-or-later"
Expand All @@ -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.53" }
provider-v3 = { path = "crates/provider-v3", version = "0.0.53" }
harness-runtime = { path = "crates/harness-runtime", version = "0.0.53" }
setup-core = { path = "crates/setup-core", version = "0.0.54" }
provider-v3 = { path = "crates/provider-v3", version = "0.0.54" }
harness-runtime = { path = "crates/harness-runtime", version = "0.0.54" }

[workspace.lints.rust]
unsafe_code = "forbid"
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.53 \
ghcr.io/nddev-opennetwork/opencode-setup-system:0.0.54 \
status --target /config/<dir> --json
```

Expand Down
Loading
Loading