Neo SPCC has released neofs-node v0.52.0 alongside coordinated updates to the NeoFS Go SDK and two GitHub Actions integrations, introducing initial placement policy support, expanded maintenance tooling, and breaking configuration changes across the stack. The releases reflect a shift toward granular object placement control and API 2.22 compatibility across NeoFS infrastructure.
NeoFS is Neo’s distributed, decentralized object storage network. The v0.52.0 release, codenamed “Woodo,” follows v0.51.1, which introduced new CLI tooling and storage fixes earlier this year.
What this enables
Initial placement policies give container operators control over where objects are initially stored on the network, replacing the now-deprecated copies_number parameter with a max_replicas setting tied to the container’s placement policy. The renamed maintenance tool, neofs-lancet (formerly neofs-lens), can now modify storage state in addition to inspecting it, letting operators resync metabases, flush write caches, and remove objects directly. Storage node operators can also reload gRPC configuration via SIGHUP signal without restarting nodes.
Core node changes
The headline addition in v0.52.0 is initial placement policy support for containers. The copies_number parameter in object PUT requests no longer has any effect; operators must use the max_replicas setting in the container’s initial placement policy instead.
The release renames neofs-lens to neofs-lancet to reflect the tool’s expanded scope. New commands include meta resync, storage flush-write-caches, meta remove, and fstree remove, giving operators direct control over metadata and storage state.
Performance improvements include policer optimization (the policer now starts from a random offset and iterates engine-level object lists), a new policer.boost_multiplier configuration option, and optimized local HEAD/GET request execution. New object counter metrics for root, timestamp, lock, link, and garbage collection objects replace the previous logic counter.
Breaking changes and migration
Developers upgrading to v0.52.0 should be aware of several breaking changes:
- Storage nodes now permanently delete objects belonging to unpaid containers. According to the release notes, “Data will permanently be deleted from shards, recovery isn’t possible.”
- The
node.persistent_sessions.pathconfig option (deprecated since v0.50.0),storage.shards.resync_metabase, andreplicator.pool_sizehave all been removed. - Storage nodes no longer automatically migrate metabases from version 5 to 6 or from version 6 to 7. Operators on older versions must migrate using SN v0.51.1 or resynchronize with v0.52.0.
- Storage nodes return unsigned responses to requests with API v2.22 or higher.
- The CLI
--awaitflag is deprecated for container commands.
The release requires Go 1.25 or higher and updates dependencies including neofs-sdk-go to v1.0.0-rc.18 and neo-go to v0.118.0.
SDK and GitHub Actions updates
Neo SPCC also shipped neofs-sdk-go v1.0.0-rc.18, the Go SDK for NeoFS, now compatible with API 2.22.
The SDK adds an AuthUser() API for session tokens and initial placement policy support mirroring the core node. The waiter package is deprecated (no longer needed with API 2.21 or later), and PrmObjectPutInit.SetCopiesNumber is deprecated to match the API 2.22 transition away from copies_number. The release also fixes several session token v2 issues and enforces API 2.22 signature size limits.
On the CI/CD side, gh-push-to-neofs v0.4.0 introduces breaking configuration changes to the GitHub Action used for publishing files to NeoFS. NEOFS_NETWORK_DOMAIN is replaced with NEOFS_ENDPOINT, which accepts a full address with scheme and port. NEOFS_HTTP_GATE is replaced with HTTP_URL_PREFIX for custom gateway and CDN support. The STRIP_PREFIX option is now always enabled.
The gh-push-allure-report-to-neofs v0.2.0 update adds Allure test report history support and updates its dependency to gh-push-to-neofs v0.4.0. Users of the Allure action must follow the gh-push-to-neofs migration guide to update their configuration variables.
Bug fixes
The v0.52.0 node release addresses a GC deadlock on local storage shutdown, signature verification issues with stored objects, GAS transaction retry failures, and erasure coding improvements for shard evacuation.
The SDK release fixes container verb handling and object identifier errors for legacy objects in session token v2.
The full release notes can be found at the link below:
https://github.com/nspcc-dev/neofs-node/releases/tag/v0.52.0
https://github.com/nspcc-dev/neofs-sdk-go/releases/tag/v1.0.0-rc.18
https://github.com/nspcc-dev/gh-push-to-neofs/releases/tag/v0.4.0
https://github.com/nspcc-dev/gh-push-allure-report-to-neofs/releases/tag/v0.2.0
crypto-economy.com