⚠️ DO NOT MERGE until the onchain min_compatible_version has been bumped to ≥ 0.14.1. ⚠️
Part of the activator removal effort — see tracker #3607.
Phase / PR: Phase 7, PR 7.2
Gate: onchain ProgramConfig.min_compatible_version ≥ 0.14.1.
Goal
Same treatment as PR 7.1 for the contributor-side instructions: remove the activator-only instructions; dispatch entries stay and return DoubleZeroError::InstructionDeprecated.
Files
processors/device/{activate,reject,closeaccount}.rs — delete; dispatch returns InstructionDeprecated.
processors/link/{activate,reject,closeaccount}.rs — delete; dispatch returns InstructionDeprecated.
processors/multicastgroup/{activate,reject,closeaccount}.rs — delete; dispatch returns InstructionDeprecated.
processors/device/interface/{activate,reject,remove,unlink}.rs — same. All four are activator-driven (the activator imports DeviceInterfaceUnlinkArgs). Their argument structs go with them.
processors/resource/closeaccount.rs — review whether this is still needed or activator-only; if activator-only, same treatment.
- Corresponding
smartcontract/sdk/rs/src/commands/.../*.rs — delete.
- Tests — rewrite to assert
InstructionDeprecated, or delete if redundant.
Explicitly preserved (verified non-activator-driven by codebase audit)
link/accept, link/suspend, device/resume, device/update, multicastgroup/reactivate, multicastgroup/suspend — all operator/admin-driven, not activator-driven.
Acceptance
cargo test -p doublezero-serviceability passes.
- Sending any of the removed instructions returns
InstructionDeprecated.
Risk
Same as 7.1. Coordinate with contributors before bumping the gate.
Part of the activator removal effort — see tracker #3607.
Phase / PR: Phase 7, PR 7.2
Gate: onchain
ProgramConfig.min_compatible_version≥ 0.14.1.Goal
Same treatment as PR 7.1 for the contributor-side instructions: remove the activator-only instructions; dispatch entries stay and return
DoubleZeroError::InstructionDeprecated.Files
processors/device/{activate,reject,closeaccount}.rs— delete; dispatch returnsInstructionDeprecated.processors/link/{activate,reject,closeaccount}.rs— delete; dispatch returnsInstructionDeprecated.processors/multicastgroup/{activate,reject,closeaccount}.rs— delete; dispatch returnsInstructionDeprecated.processors/device/interface/{activate,reject,remove,unlink}.rs— same. All four are activator-driven (the activator importsDeviceInterfaceUnlinkArgs). Their argument structs go with them.processors/resource/closeaccount.rs— review whether this is still needed or activator-only; if activator-only, same treatment.smartcontract/sdk/rs/src/commands/.../*.rs— delete.InstructionDeprecated, or delete if redundant.Explicitly preserved (verified non-activator-driven by codebase audit)
link/accept,link/suspend,device/resume,device/update,multicastgroup/reactivate,multicastgroup/suspend— all operator/admin-driven, not activator-driven.Acceptance
cargo test -p doublezero-serviceabilitypasses.InstructionDeprecated.Risk
Same as 7.1. Coordinate with contributors before bumping the gate.