Skip to content

Fix round 7: canister_self, StableCell<Principal>, evm-rpc import path#9

Merged
JoshDFN merged 1 commit intomainfrom
fix/round7-final
Feb 26, 2026
Merged

Fix round 7: canister_self, StableCell<Principal>, evm-rpc import path#9
JoshDFN merged 1 commit intomainfrom
fix/round7-final

Conversation

@JoshDFN
Copy link
Copy Markdown
Collaborator

@JoshDFN JoshDFN commented Feb 26, 2026

Summary

  • Fix ic_cdk::api::id()ic_cdk::api::canister_self() in ckbtc and multi-canister
  • Fix StableCell<Option<Principal>>StableCell<Principal> with anonymous sentinel in internet-identity (Option doesn't impl Storable)
  • Restore ic_cdk::api::call::call_with_payment128 in evm-rpc (correct deprecated-but-compiling path)
  • Fix remaining icp.jsonicp.yaml in asset-canister prose
  • Fix icp identity defaulticp identity use in multi-canister

Site build verified: npm run build succeeds, all 12 skills generated.

- ckbtc: ic_cdk::api::id() → ic_cdk::api::canister_self() (3 places)
- evm-rpc: restore ic_cdk::api::call::call_with_payment128 (compiles in 0.18)
- multi-canister: ic_cdk::api::id() → canister_self(), icp identity default → use
- internet-identity: StableCell<Option<Principal>> → StableCell<Principal> with anonymous sentinel
- asset-canister: remaining icp.json refs in prose → icp.yaml, fix YAML field docs

Build verified: npm run build succeeds, all 12 skills generated
@JoshDFN JoshDFN merged commit b9dfd7f into main Feb 26, 2026
4 checks passed
@marc0olo marc0olo deleted the fix/round7-final branch February 27, 2026 14:47
marc0olo added a commit that referenced this pull request Mar 25, 2026
Closes #106

- Fix broken `type: custom` recipe with `build.steps` + `type: pre-built`
- Fix `init_arg_file` with `init_args: { path, format }` syntax
- Add pitfall: minting account cannot call icrc2_approve (#9)
- Add pitfall: burn/mint transfers require zero fee (#10)
- Rewrite pitfall #1: per-ledger fees, icrc1_fee lookup, BadFee handling
- Update init args to use separate minting/funded principals
- Show multiple entries in initial_balances
- Add icrc1_metadata and icrc1_supported_standards to actor interface
- Bump core prerequisite to 2.3.1
- Remove low-value Verify It Works and CLI verification sections
- Rename section to Common Pitfalls
- Add evaluations with 4 output evals and 16 trigger evals
marc0olo added a commit that referenced this pull request Mar 25, 2026
)

Closes #106

- Fix broken `type: custom` recipe with `build.steps` + `type: pre-built`
- Fix `init_arg_file` with `init_args: { path, format }` syntax
- Add pitfall: minting account cannot call icrc2_approve (#9)
- Add pitfall: burn/mint transfers require zero fee (#10)
- Rewrite pitfall #1: per-ledger fees, icrc1_fee lookup, BadFee handling
- Update init args to use separate minting/funded principals
- Show multiple entries in initial_balances
- Add icrc1_metadata and icrc1_supported_standards to actor interface
- Bump core prerequisite to 2.3.1
- Remove low-value Verify It Works and CLI verification sections
- Rename section to Common Pitfalls
- Add evaluations with 4 output evals and 16 trigger evals
marc0olo added a commit that referenced this pull request Apr 2, 2026
Add pitfall #9 warning that deploying an older WASM version onto a
canister running a newer one can cause "Cannot parse header" panics.
Recommends preferring the recipe over pre-built WASM URLs.

Addresses #135 (Obs 1), #136 (F4).
marc0olo added a commit that referenced this pull request Apr 2, 2026
Add pitfall #9 warning that deploying an older WASM version onto a
canister running a newer one can cause "Cannot parse header" panics.
Recommends preferring the recipe over pre-built WASM URLs.

Addresses #135 (Obs 1), #136 (F4).
sea-snake added a commit that referenced this pull request May 6, 2026
Replaces the manual Prim.callerInfoSigner / Prim.callerInfoData dance
with CallerAttributes.getAttributes<system>() from mo:core (>= 2.5.0).
The wrapper bakes in the trusted-signer check via the canister's
trusted_attribute_signers env var, so the example no longer hardcodes
the II principal in code: it moves to icp.yaml as deploy-time config.

Notable changes:

- Motoko example now imports mo:core/CallerAttributes (no more mo:prim)
  and reads time via mo:core/Time (Time.now() : Int) instead of the
  broken Nat64.toNat(Prim.time()) which had no Nat64 import.
- consumePendingNonce stub mirrors the Rust register_finish pattern so
  the example compiles standalone.
- New "Configuring trusted_attribute_signers" subsection shows the
  icp.yaml settings.environment_variables snippet.
- Mistake #9 split per language: Motoko points at the env-var-based
  check, Rust still requires explicit msg_caller_info_signer.
- Prerequisites bumps mo:core minimum to >= 2.5.0.
- OpenID scopedKeys example wrapped in an async function to avoid
  bare top-level await at module scope (fixes the same Vite es2020
  failure mode eval #6 already covers).
- Eval #9 expected behavior accepts either the explicit Rust signer
  check or the Motoko env-var check.

Rust path is unchanged: there is no ic-cdk wrapper yet.
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