Repository navigation
Conversation
The `ic` mops package gained a builder in 6.0.0 that selects pricing version 2, takes the expectations narrowing its reservation, and has a counterpart for `flexible_http_request`. It needs `moc` 2.1.0 for the `costHttpRequestV2` and `subnetSelfNodeCount` primitives it calls. The support matrix said none of that was available, and six further passages repeated it: the version-1-only paragraph, two pitfalls, the Motoko example, the cycle cost section, and the frontmatter. The two references carried the same claim. All of them now describe one surface for both languages, and name the dependency versions that reach it, since `ic` 4.x and 5.x are still version 1. The Motoko example moves to the builder and compiles against `ic` 6.0.0 with `moc` 2.1.0. The adversarial evaluation asserting Motoko has no version 2 path is inverted: it now checks that the builder is used, that the version requirement is stated, and that `pricing_version` and the cycles are left to it. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Skill Validation ReportValidating skill: /home/runner/work/icskills/icskills/skills/https-outcallsStructure
Frontmatter
Tokens
Markdown
Tokens
Content Analysis
References Content Analysis
Contamination Analysis
References Contamination Analysis
Result: 1 warning Project Checks |
There was a problem hiding this comment.
🟡 Changes recommended
The documentation omits ic 5.x from the legacy-pricing row and retains unqualified version-1 funding guidance that conflicts with the 6.x builder’s version-2 behavior.
2 open issues
What changed in this PR
Updates the HTTPS outcalls skill to document Motoko support for pricing version 2 and flexible outcalls through ic 6.0.0+ with moc 2.1.0+.
Changes:
- Revises the support matrix and pricing guidance while distinguishing legacy
ic4.x/5.x behavior. - Converts Motoko examples to the builder API with automatic cycle attachment.
- Replaces the obsolete capability-denial evaluation with a version-2 builder test.
| File | Description |
|---|---|
skills/https-outcalls/SKILL.md |
Updates compatibility, pricing guidance, and Motoko examples. |
skills/https-outcalls/references/pricing-version-2.md |
Documents Motoko’s version-2 dependency requirements. |
skills/https-outcalls/references/flexible-outcalls.md |
Adds Motoko flexible-outcall and subnet-size APIs. |
evaluations/https-outcalls.json |
Tests the supported Motoko version-2 builder workflow. |
Review effort: Balanced
The support matrix listed only `ic` 4.x as the way to keep legacy pricing, while the paragraph below it and the implementation section both say 4.x and 5.x are version 1. Read alone, the row sends a project already on 5.x to downgrade for no reason. `pricing-version-2.md` kept an unqualified "Motoko's `Call.httpRequest` pairs version 1 with `cost_http_request`" in "Version and funding must agree", which is the section an agent reads to decide what to attach. It now names the version that behaviour belongs to, and says the pairing is the builder's either way. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
🤖 Both Copilot comments were right; both were inconsistencies this PR introduced. Support matrix (
|
The released ic 6.0.0 calls only Prim.costHttpRequestV2. It dropped Prim.subnetSelfNodeCount so that canisters importing Call still install on replicas without ic0.subnet_self_node_count. The support note said it calls both. That also means a Motoko flexible outcall with replication unset reserves for full-size responses, so the flexible reference now says to set it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

What changed upstream
The
icmops package gained a builder forhttp_requestin 6.0.0 (2026-11-02). It selects pricing version 2 on every call, takes the four expectations that narrow the cycles it reserves, and ships a counterpart forflexible_http_request. It needsmoc2.1.0 for thecostHttpRequestV2primitive it calls. It deliberately does not callsubnetSelfNodeCount, whichmoc2.1.0 also added: that would make every canister importingCallrequire a replica withic0.subnet_self_node_count.Motoko now reaches the same outcall surface as Rust. The skill said the opposite in eight places.
What this fixes
The support matrix listed version 2,
flexible_http_requestandsubnet_self_node_countas not available in Motoko. Seven further passages repeated it: the version-1-only paragraph, pitfalls 2 and 14, the Motoko implementation section, the cycle cost section, the frontmattercompatibilityfield, and both reference files (pricing-version-2.md,flexible-outcalls.md).They now describe one surface for both languages, and name the dependency versions that reach it. That part matters:
ic4.x and 5.x are still version 1, so the skill distinguishes them rather than saying "Motoko does version 2" flatly. On 4.x there is nopricing_versionfield at all, which is why that code is consistently version 1 rather than mismatched.The Motoko example moves from the args-record call to the builder. The flexible reference also tells Motoko callers to set
replication: becauseic6.0.0 does not read the subnet size, a call withreplicationunset reserves for full-size responses.Evaluation
output_evals[9]was adversarial: "Adversarial: Motoko has no pay-as-you-go pricing yet", asserting the model should say there is no version 2 path and should not fabricate a builder. That assertion is now false, and the eval would fail a correct answer.It is inverted into a positive capability test under the same prompt: use the builder, state the version requirement, leave
pricing_versionand the cycles to it, and do not present the 4.x/5.xCall.httpRequest(args)form as the version 2 entry point.Verification
The Motoko example in the skill was extracted and compiled against
ic6.0.0 withmoc2.1.0: builds clean.node scripts/check-project.jspasses for all 35 skills (the two warnings are unrelated skills missing evaluation files).skill-validator1.5.1, the version CI installs, reports one warning on this skill, a code-language mix that predates this PR.Related
The matching examples landed in dfinity/examples#1490, and the docs follow in dfinity/developer-docs#448.
One finding worth passing to the
migrating-to-moc-2skill when it syncs in: a project onmoc2.x cannot depend onbase, directly or transitively.basestill shipsExperimentalStableMemory, whose primitivesmoc2.0 removed, somops checkfails on it even when nothing imports it andmops buildsucceeds. That holds up to and including the latestbase0.16.0;coreis unaffected. It is whydaily_plannercould not be migrated in the examples PR.🤖 Generated with Claude Code