Why
We're developing against a rental subnet with no cycles, so every local test run against pocket-ic currently requires seeding/topping up canisters just to exercise flows that on our target subnet cost nothing. pocket-ic's SubnetSpec::with_cost_schedule(CanisterCyclesCostSchedule::Free) makes a subnet bill zero cycles, which mirrors our rental-subnet reality exactly, but icp-cli spawns icp-cli-network-launcher as a child process and has no way to reach that knob today.
What
Add --cost-schedule={normal,free}, defaulting to normal (no behavior change for existing users), that forwards to SubnetSpec::with_cost_schedule when the launcher builds pocket-ic subnets. Global flag (not per-subnet) keeps the surface small and matches our use case; per-subnet syntax can be added later without breaking it.
Downstream
icp-cli will expose this in icp.yaml under the managed-network config and forward it via launcher_settings_flags. No API contract beyond "launcher accepts the flag."
Happy to open a PR, let me know if you'd prefer a different name (--cycles-cost-schedule?) or per-subnet syntax before I start.
@raymondk @marc0olo
Why
We're developing against a rental subnet with no cycles, so every local test run against pocket-ic currently requires seeding/topping up canisters just to exercise flows that on our target subnet cost nothing.
pocket-ic'sSubnetSpec::with_cost_schedule(CanisterCyclesCostSchedule::Free)makes a subnet bill zero cycles, which mirrors our rental-subnet reality exactly, but icp-cli spawnsicp-cli-network-launcheras a child process and has no way to reach that knob today.What
Add
--cost-schedule={normal,free}, defaulting tonormal(no behavior change for existing users), that forwards toSubnetSpec::with_cost_schedulewhen the launcher builds pocket-ic subnets. Global flag (not per-subnet) keeps the surface small and matches our use case; per-subnet syntax can be added later without breaking it.Downstream
icp-cli will expose this in
icp.yamlunder the managed-network config and forward it vialauncher_settings_flags. No API contract beyond "launcher accepts the flag."Happy to open a PR, let me know if you'd prefer a different name (
--cycles-cost-schedule?) or per-subnet syntax before I start.@raymondk @marc0olo