⚠️ DO NOT MERGE until the onchain min_compatible_version has been bumped to ≥ 0.12.0. ⚠️
Part of the activator removal effort — see tracker #3607.
Phase / PR: Phase 7, PR 7.1
Gate: onchain ProgramConfig.min_compatible_version ≥ 0.12.0 (set via doublezero globalconfig setversion).
Goal
Remove the now-unreachable user-lifecycle instructions that were called only by the activator.
What is removed: the program-level instructions that the activator was the only client of, plus their SDK-method counterparts. The program dispatch entries stay (so discriminant numbers never shift); their handler bodies return DoubleZeroError::InstructionDeprecated immediately. No contributor-facing CLI commands are removed in this phase.
If the PR uncovers an internal CLI wrapper that exists solely to call one of the deleted SDK methods, that wrapper is cleaned up as part of the same PR. Such wrappers are not contributor-facing.
Files
programs/doublezero-serviceability/src/processors/user/{activate,reject,closeaccount}.rs — delete files (and their argument structs).
programs/doublezero-serviceability/src/processors/user/mod.rs — remove the module entries.
- Top-level program dispatch (instruction enum + match) — keep the discriminant variants, change their handler bodies to return
DoubleZeroError::InstructionDeprecated. Add a doc-comment on each variant explaining the deprecation.
smartcontract/sdk/rs/src/commands/user/{activate,reject,closeaccount}.rs — delete.
- Program integration tests covering the removed instructions — rewrite to assert
InstructionDeprecated is returned, or delete if redundant.
Acceptance
cargo test -p doublezero-serviceability passes.
- Sending a
user activate / user reject / user closeaccount instruction to the program returns InstructionDeprecated.
Risk
This is a hard removal. Any client running CLI < 0.12.0 against an upgraded program will be unable to perform user lifecycle operations. The min version bump must happen first.
Part of the activator removal effort — see tracker #3607.
Phase / PR: Phase 7, PR 7.1
Gate: onchain
ProgramConfig.min_compatible_version≥ 0.12.0 (set viadoublezero globalconfig setversion).Goal
Remove the now-unreachable user-lifecycle instructions that were called only by the activator.
What is removed: the program-level instructions that the activator was the only client of, plus their SDK-method counterparts. The program dispatch entries stay (so discriminant numbers never shift); their handler bodies return
DoubleZeroError::InstructionDeprecatedimmediately. No contributor-facing CLI commands are removed in this phase.If the PR uncovers an internal CLI wrapper that exists solely to call one of the deleted SDK methods, that wrapper is cleaned up as part of the same PR. Such wrappers are not contributor-facing.
Files
programs/doublezero-serviceability/src/processors/user/{activate,reject,closeaccount}.rs— delete files (and their argument structs).programs/doublezero-serviceability/src/processors/user/mod.rs— remove the module entries.DoubleZeroError::InstructionDeprecated. Add a doc-comment on each variant explaining the deprecation.smartcontract/sdk/rs/src/commands/user/{activate,reject,closeaccount}.rs— delete.InstructionDeprecatedis returned, or delete if redundant.Acceptance
cargo test -p doublezero-serviceabilitypasses.user activate/user reject/user closeaccountinstruction to the program returnsInstructionDeprecated.Risk
This is a hard removal. Any client running CLI < 0.12.0 against an upgraded program will be unable to perform user lifecycle operations. The min version bump must happen first.