Tracker for the DoubleZero activator removal effort.
Master plan: activator-removal-plan.md (in greg's working tree; will be added to the repo if useful).
Purpose
Retire doublezero-activator. Onchain allocation (RFC-11) supersedes it. The deployed activator is frozen — no new builds, no new releases — but existing instances keep running until the supported CLI floor rises high enough that the activator-invoked instructions can be removed from the program.
Phasing overview
| Phase |
What ships |
Repo |
Gate |
| 1 |
Stop deploying then stop building/releasing the activator |
infra, doublezero |
none |
| 2 |
E2E runs onchain-allocation only; activator container removed from tests |
doublezero |
none |
| 3 |
Delete activator/ crate |
doublezero |
phases 1, 2 merged |
| 4 |
Treat onchain-allocation as always-on; remove flag-gated branches; deprecate the flag |
doublezero |
phase 3 merged |
| 5 |
Status enum cleanup (rename unused variants *Deprecated) |
doublezero |
phase 4 merged |
| 6 |
In-repo docs and comments scrub |
doublezero |
phase 5 merged |
| 7a |
Remove User activate/reject/closeaccount instructions |
doublezero |
gate ≥ 0.12.0 |
| 7b |
Remove device/link/multicastgroup activate/reject/closeaccount instructions |
doublezero |
gate ≥ 0.14.1 |
| 8 |
Tear down monitoring, shut down EC2 hosts in all environments, delete Terraform module |
infra |
all of 1–7 merged + product OK to lose ability to support older CLIs |
Child issues
Phase 1 — freeze deployment, then build and release
Phase 2 — e2e migrates to onchain-allocation only
Phase 3 — delete the activator crate
Phase 4 — onchain-allocation always-on; deprecate the flag
Phase 5 — status enum cleanup
Phase 6 — documentation and comment scrub
Phase 7 — min-version-gated program cleanup ⚠️ DO NOT MERGE UNTIL GATE MET ⚠️
Phase 8 — tear down monitoring and infrastructure ⚠️ DO NOT MERGE UNTIL ALL OF 1–7 + PRODUCT SIGN-OFF ⚠️
Cross-cutting risks
- Borsh discriminant stability. Phase 5 renames must not change the numeric
repr(u8) discriminants of any status enum or feature flag bit.
- Phase ordering with releases. Phases 4 and 5 change program behavior in subtle ways. They should ride a normal program release/upgrade cycle, not be bundled with the larger 7.x deletions.
- Min-version gate enforcement. Phases 7.1 and 7.2 are land-mines if merged before the corresponding
min_compatible_version bump.
- Phase 2 visibility. After PR 2.3, no test exercises the activator. Any regression in onchain-allocation behavior surfaces in normal e2e signal instead of being absorbed by the activator.
- Phase 8 sequencing within the phase. PR 8.2 must precede PR 8.3 — never destroy EC2 hosts that have a running activator.
- Coverage preservation in phase 4. The test handling rule in phase 4 exists because a careless reviewer could net-delete coverage by treating every legacy-only test as obsolete.
Open items / TBDs
- Onchain
min_compatible_version bump owner. Who runs the doublezero globalconfig setversion transactions and on what schedule? This is the gating action for phases 7.1 and 7.2.
- Cloudsmith package archival. Optional follow-up to phase 8.
- Contributor communication plan. Phase 7.2 removes contributor-side program instructions — announce the deprecation timeline ahead of the min-version bump.
- Status variant audit details. PR 5.1 includes an audit step for
UserStatus::Deleting, PendingBan, and Updating, plus the full MulticastGroupStatus enum.
- Controller
LinkStatusPending sentinel. PR 5.1 decides whether to keep LinkStatusPending unrenamed or rename it and migrate the controller to a distinct sentinel.
Tracker for the DoubleZero activator removal effort.
Master plan:
activator-removal-plan.md(in greg's working tree; will be added to the repo if useful).Purpose
Retire
doublezero-activator. Onchain allocation (RFC-11) supersedes it. The deployed activator is frozen — no new builds, no new releases — but existing instances keep running until the supported CLI floor rises high enough that the activator-invoked instructions can be removed from the program.Phasing overview
activator/crate*Deprecated)Useractivate/reject/closeaccount instructionsChild issues
Phase 1 — freeze deployment, then build and release
Phase 2 — e2e migrates to onchain-allocation only
Phase 3 — delete the activator crate
activator/crate from workspace — activator removal phase 3.1: delete activator/ crate from workspace #3612Phase 4 — onchain-allocation always-on; deprecate the flag
Phase 5 — status enum cleanup
*Deprecated— activator removal phase 5.1: serviceability program — rename activator-only status variants to *Deprecated #3617Phase 6 — documentation and comment scrub
Phase 7 — min-version-gated program cleanup⚠️ DO NOT MERGE UNTIL GATE MET ⚠️
Phase 8 — tear down monitoring and infrastructure⚠️ DO NOT MERGE UNTIL ALL OF 1–7 + PRODUCT SIGN-OFF ⚠️
Cross-cutting risks
repr(u8)discriminants of any status enum or feature flag bit.min_compatible_versionbump.Open items / TBDs
min_compatible_versionbump owner. Who runs thedoublezero globalconfig setversiontransactions and on what schedule? This is the gating action for phases 7.1 and 7.2.UserStatus::Deleting,PendingBan, andUpdating, plus the fullMulticastGroupStatusenum.LinkStatusPendingsentinel. PR 5.1 decides whether to keepLinkStatusPendingunrenamed or rename it and migrate the controller to a distinct sentinel.