From 1c04b6e2f1adf5714410ccf0b9f9423837c9e99c Mon Sep 17 00:00:00 2001 From: Marco Walz Date: Fri, 24 Apr 2026 15:25:04 +0200 Subject: [PATCH 1/2] fix(jargon): remove all em-dashes from prose content and strengthen agent rules --- docs/concepts/cycles.md | 2 +- docs/concepts/index.md | 2 +- docs/languages/motoko/index.md | 10 +++++----- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/concepts/cycles.md b/docs/concepts/cycles.md index 5bcb3f18..f0246bfc 100644 --- a/docs/concepts/cycles.md +++ b/docs/concepts/cycles.md @@ -5,7 +5,7 @@ sidebar: order: 4 --- -Every canister runs on real hardware — nodes operated by independent node providers distributed across the world. Unlike a traditional cloud, there is no single company to bill: no AWS account, no credit card, no monthly invoice. Instead, the network handles payment at the protocol level. **Canisters pay for their own compute, storage, and bandwidth using cycles** — a unit of compute loaded into a canister in advance. The network deducts cycles automatically as the canister runs. Anyone can top up a canister: the developer, another canister, a user, or an automated service. Users interact with apps for free, the same way they use any web service. +Every canister runs on real hardware: nodes operated by independent node providers distributed across the world. Unlike a traditional cloud, there is no single company to bill: no AWS account, no credit card, no monthly invoice. Instead, the network handles payment at the protocol level. **Canisters pay for their own compute, storage, and bandwidth using cycles**, a unit of compute loaded into a canister in advance. The network deducts cycles automatically as the canister runs. Anyone can top up a canister: the developer, another canister, a user, or an automated service. Users interact with apps for free, the same way they use any web service. ## What are cycles? diff --git a/docs/concepts/index.md b/docs/concepts/index.md index 409b4ea8..52872bed 100644 --- a/docs/concepts/index.md +++ b/docs/concepts/index.md @@ -15,7 +15,7 @@ Understand the ideas behind the Internet Computer before you build on it. These ## Core capabilities -- **[Cycles](cycles.md)**: How canisters pay for their own compute, storage, and bandwidth — and why users pay nothing. +- **[Cycles](cycles.md)**: How canisters pay for their own compute, storage, and bandwidth, and why users pay nothing. - **[Orthogonal Persistence](orthogonal-persistence.md)**: How canister memory survives across executions and upgrades without databases. - **[HTTPS Outcalls](https-outcalls.md)**: How canisters make HTTP requests to external services with consensus on responses. - **[Onchain Randomness](onchain-randomness.md)**: Cryptographically secure random numbers using threshold VRF. diff --git a/docs/languages/motoko/index.md b/docs/languages/motoko/index.md index b228574c..872d98b6 100644 --- a/docs/languages/motoko/index.md +++ b/docs/languages/motoko/index.md @@ -98,15 +98,15 @@ Key improvements in `core` over `base`: - Hash-based collections removed in favor of ordered maps and sets (better security against collision attacks) - Consistent naming: `values()` instead of `vals()`, `Cycles` instead of `ExperimentalCycles` -If you have an existing project using `base`, you can migrate incrementally — both libraries can coexist in the same project. See the [base to core migration guide](base-core-migration.md) for detailed instructions. +If you have an existing project using `base`, you can migrate incrementally; both libraries can coexist in the same project. See the [base to core migration guide](base-core-migration.md) for detailed instructions. `core` and all other Motoko packages are managed with [Mops](https://mops.one), which handles dependency resolution, compiler toolchain management, and publishing. Browse community packages at [mops.one](https://mops.one). ## Further reading -- [Quickstart](../../getting-started/quickstart.md) — Create and deploy your first canister -- [core library API docs](https://mops.one/core/docs) — Standard library reference -- [Orthogonal persistence](../../concepts/orthogonal-persistence.md) — How persistent memory works at the platform level -- [Motoko GitHub](https://github.com/caffeinelabs/motoko) — Compiler source and issue tracker +- [Quickstart](../../getting-started/quickstart.md): create and deploy your first canister +- [core library API docs](https://mops.one/core/docs): standard library reference +- [Orthogonal persistence](../../concepts/orthogonal-persistence.md): how persistent memory works at the platform level +- [Motoko GitHub](https://github.com/caffeinelabs/motoko): compiler source and issue tracker From d972820882db9fed14f25a08f8fb03bf4226c9ff Mon Sep 17 00:00:00 2001 From: Marco Walz Date: Fri, 24 Apr 2026 15:28:38 +0200 Subject: [PATCH 2/2] infra(validate): add em-dash and double-dash prose check to validator --- docs/reference/token-standards.md | 14 +++++++------- scripts/validate.js | 21 +++++++++++++++++++++ 2 files changed, 28 insertions(+), 7 deletions(-) diff --git a/docs/reference/token-standards.md b/docs/reference/token-standards.md index 7cdb538c..377f63c4 100644 --- a/docs/reference/token-standards.md +++ b/docs/reference/token-standards.md @@ -13,16 +13,16 @@ ICRC stands for Internet Computer Request for Comments. Standards are proposed b | Standard | Purpose | Extends | Status | |----------|---------|---------|--------| -| [ICRC-1](#icrc-1-fungible-tokens) | Fungible token base standard | -- | Adopted | +| [ICRC-1](#icrc-1-fungible-tokens) | Fungible token base standard | none | Adopted | | [ICRC-2](#icrc-2-approve-and-transfer-from) | Approve and transfer-from for fungible tokens | ICRC-1 | Adopted | | [ICRC-3](#icrc-3-transaction-log) | Transaction log and block archive | ICRC-1 | Adopted | -| [ICRC-7](#icrc-7-non-fungible-tokens) | Non-fungible token (NFT) base standard | -- | Adopted | +| [ICRC-7](#icrc-7-non-fungible-tokens) | Non-fungible token (NFT) base standard | none | Adopted | | [ICRC-37](#icrc-37-nft-approvals) | Approve and transfer-from for NFTs | ICRC-7 | Adopted | -| [ICRC-21](#wallet-signer-standards) | Canister call consent messages | -- | Adopted | -| [ICRC-25](#wallet-signer-standards) | Signer interaction (permissions) | -- | Adopted | -| [ICRC-27](#wallet-signer-standards) | Account discovery | -- | Adopted | -| [ICRC-29](#wallet-signer-standards) | Window PostMessage transport | -- | Adopted | -| [ICRC-49](#wallet-signer-standards) | Call canister via signer | -- | Adopted | +| [ICRC-21](#wallet-signer-standards) | Canister call consent messages | none | Adopted | +| [ICRC-25](#wallet-signer-standards) | Signer interaction (permissions) | none | Adopted | +| [ICRC-27](#wallet-signer-standards) | Account discovery | none | Adopted | +| [ICRC-29](#wallet-signer-standards) | Window PostMessage transport | none | Adopted | +| [ICRC-49](#wallet-signer-standards) | Call canister via signer | none | Adopted | ## ICRC-1: Fungible tokens diff --git a/scripts/validate.js b/scripts/validate.js index aa896770..b24ea57a 100644 --- a/scripts/validate.js +++ b/scripts/validate.js @@ -48,6 +48,26 @@ const FORBIDDEN = [ { re: /docs\.internetcomputer\.org/, msg: 'docs.internetcomputer.org URLs will break — link internally or inline' }, ]; +function checkEmdash(file, content) { + if (isSynced(file) || isStub(content)) return []; + const errors = []; + const lines = content.split('\n'); + let inFence = false; + for (let i = 0; i < lines.length; i++) { + const line = lines[i]; + if (/^```/.test(line.trimStart())) { inFence = !inFence; continue; } + if (inFence) continue; + if (/^\s*