Skip to content

feat!: sync ic.did to spec 0.68.0 (5.0.0) - #17

Draft
cursor[bot] wants to merge 3 commits into
masterfrom
chore/upstream-sync-2026-09-21
Draft

cursor[bot] wants to merge 3 commits into
masterfrom
chore/upstream-sync-2026-09-21

Conversation

@cursor

@cursor cursor Bot commented Sep 21, 2026

Copy link
Copy Markdown

Hand-built management-canister records compiled against mo:ic/Types need new fields. This regenerates Types.mo from the upstream ic.did through interface spec 0.68.0. Call.httpRequest is unchanged and still attaches the version-1 (ic0.cost_http_request) cost.

Breaking (Motoko record literals must name every field)

// HttpRequestArgs — before
{ url; method; headers; body; max_response_bytes; transform; is_replicated }

// after — `null` keeps legacy pricing version 1
{ url; method; headers; body; max_response_bytes; transform; is_replicated; pricing_version = null }

Same for IC.CanisterSettings / DefiniteCanisterSettings (minimum_incoming_canister_call_cycles, log_memory_limit, status_visibility), IC.FetchCanisterLogsArgs (filter), and CanisterStatusResult.memory_metrics (log_memory_store_size).

IC.StatusVisibility spells Candid public as #public_ (reserved word).

Pass pricing_version = ?2 only after attaching a version-2 reservation yourself. Motoko has no ic0.cost_http_request_v2 primitive yet (caffeinelabs/motoko#6379). A separate draft, #16, rewrites Call.httpRequest around that primitive and should rebase onto this types bump.

Additive

Why 5.0.0

New fields on records consumers construct are a Motoko compile break even when Candid-optional. Spec versions 0.64.0–0.68.0 (dfinity/developer-docs#302, #315, #252, #346, #254).

Housekeeping

  • didc 0.6.2 from the GitHub release (docs in REGENERATING.md).
  • [toolchain] moc 1.16.1; [requirements] moc stays 1.4.0.
Open in Web View Automation 

cursoragent and others added 3 commits September 21, 2026 06:08
Regenerate Types.mo from the upstream management canister interface
through spec 0.68.0. New record fields are breaking in Motoko because
literals must name every field.

Call.httpRequest is unchanged and still attaches the version-1 cost.

Co-authored-by: Kamil Listopad <listopadkamil@gmail.com>
The 0.6.2 binary has Float32 support; stop telling people to build
from source. Also record the moc 1.16.1 toolchain pin in AGENTS.md.

Co-authored-by: Kamil Listopad <listopadkamil@gmail.com>
moc 1.16 warns M0269 on .vals(); the headers walk in Cost.httpRequest
now uses .values().

Co-authored-by: Kamil Listopad <listopadkamil@gmail.com>
Kamirus added a commit that referenced this pull request Oct 9, 2026
The next version bump will fail to publish. `mops publish` runs the test
suite, and `mops-publish.yml` still installs the latest mops (3.x),
which dropped the dfx replica these tests need:

```
Tool 'pocket-ic' is not defined in [toolchain] section in mops.toml
Run mops toolchain use pocket-ic 15.0.0 to install it
```

[#18](#18) pinned mops
2.24.0 in `mops-test.yml` only, so PR checks pass while the publish job
is still exposed. That job hasn't run with mops 3 yet because no version
bump has landed since;
[#16](#16) and
[#17](#17) (both 5.0.0)
would be the first to hit it.

Moving these tests to mops 3 needs mops-side changes: configurable
test-canister cycles, auto-progress for HTTP outcalls, and a
`TestThresholdKeys` subnet. Out of scope here.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
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