Skip to content

docs: SNS launching guide#88

Merged
marc0olo merged 2 commits into
mainfrom
docs/guides-governance-launching
Apr 16, 2026
Merged

docs: SNS launching guide#88
marc0olo merged 2 commits into
mainfrom
docs/guides-governance-launching

Conversation

@marc0olo
Copy link
Copy Markdown
Member

Summary

  • Tokenomics design: developer neurons, treasury, swap allocation, NNS proposal narrative requirements
  • sns_init.yaml annotated configuration covering all five sections with key constraints
  • 11-stage launch process: 3 manual stages + 8 automatic stages
  • CLI commands for adding NNS root as co-controller and submitting the proposal
  • Motoko and Rust canister preparation snippets for SNS governance-gated admin functions
  • 7 common pitfalls from field experience

Sync recommendation

informed by dfinity/icskills — skills/sns-launch/SKILL.md

@marc0olo
Copy link
Copy Markdown
Member Author

Review: docs/guides/governance/launching.md

Must fix

1. dfx references (violates CLAUDE.md "never dfx" rule)

Stage 3 uses dfx sns propose --network ic --neuron $NEURON_ID sns_init.yaml and the verify section uses dfx sns init-config-file validate. The commands are factually correct — no icp-cli equivalent exists yet for dfx sns — but they must be clearly attributed. Add a callout box making clear these require the dfx sns extension and add a <!-- TODO: update when icp-cli sns equivalent lands --> comment so future maintainers can find them.

2. Unresolved <!-- Needs human verification: --> flag

The HTML comment on line 200 (flagging the revoke_permission Candid syntax) can be resolved from .sources/portal/docs/building-apps/governing-apps/launching/launch-steps-1proposal.mdx line 66, which shows the exact Candid argument structure. The flag should be resolved and the comment removed before merging.


Suggestions

  • --network ic-e ic: For consistency with icp-cli convention throughout the page, Stage 3 CLI examples use --network ic where -e ic is the icp-cli style.
  • Proposal status check: Stage 3 ends after submission but leaves readers without a pointer for how to check proposal status after submitting — a brief note or link would help.
  • "Zero dissolve delay" wording: The Common mistakes section conflates dissolve delay (how long a neuron takes to become liquid) with vesting — these are separate concepts. Tighten the wording to distinguish them.
  • Rust thread_local! warning: The warning about thread_local! in upgrade hooks leaves readers without a concrete next step for how to fix it (e.g., link to stable memory patterns).

Verified ✓

  • All internal links resolve
  • NNS Root canister ID is correct
  • Motoko API (Principal.isController, Runtime.trap, persistent actor) verified
  • Rust API (is_controller, msg_caller) verified
  • 11-stage SNS launch process matches portal source
  • Blocked proposal types match exactly
  • Build passes

- Add callout notes for dfx sns commands (propose, validate) with TODO
  comments flagging them for update when icp-cli sns equivalent lands
- Resolve verification flag on revoke_permission Candid syntax (confirmed
  via portal source launch-steps-1proposal.mdx)
- Fix --network ic -> -e ic in all icp-cli commands for consistency
- Add proposal status monitoring note after Stage 3 submission step
- Tighten developer neuron warning to distinguish vesting from dissolve delay
- Add ic-stable-structures link in Rust thread_local\! warning comment
@marc0olo
Copy link
Copy Markdown
Member Author

<!-- feedback-addressed -->

Feedback addressed: PR #88 — SNS launching guide

Changes applied

Must-fix items:

  1. dfx references — added callout notes and TODO comments. Two dfx sns commands (dfx sns propose and dfx sns init-config-file validate) have no icp-cli equivalent. Each now has a :::note[Requires dfx sns extension] callout explaining that the dfx sns extension is required and how to install it, plus a <\!-- TODO: update when icp-cli sns equivalent lands --> comment so future maintainers can find them.

  2. Resolved <\!-- Needs human verification: --> flag on revoke_permission Candid syntax. Confirmed the exact argument structure against .sources/portal/docs/building-apps/governing-apps/launching/launch-steps-1proposal.mdx line 66. The verification comment was removed.

Suggestions applied:

  1. --network ic-e ic in all icp commands. Fixed in Stage 2 icp canister settings update, Stage 2 revoke_permission call, and the verify section icp canister call SNS_SWAP_CANISTER_ID get_state. Confirmed via .sources/icp-cli/docs/guides/deploying-to-mainnet.md. The dfx sns propose command retains --network ic since it is a dfx command.

  2. Added proposal status monitoring note after Stage 3. Added: "After submitting, monitor your proposal's status on the NNS dapp or by querying NNS governance directly."

  3. Tightened "Developer neurons with no vesting" wording. Item now covers both concepts separately: vesting period (prevents dissolution during window) and dissolve delay (cooldown before neuron becomes liquid). Both recommended at 12-48 months.

  4. Added concrete next step for Rust thread_local\! warning. Added link to https://docs.rs/ic-stable-structures/latest/ic_stable_structures/ for StableCell reference.

Items skipped

None. All feedback items were factually verified against source material and applied.

Build note

Build was already failing before these changes due to missing .sources/examples submodule in this worktree (SSH blocked in sandbox). The failure is in docs/guides/backends/https-outcalls.mdx, not related to launching.md.

@marc0olo marc0olo merged commit d58e848 into main Apr 16, 2026
1 check passed
@marc0olo marc0olo deleted the docs/guides-governance-launching branch April 16, 2026 19:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant