Skip to content

fix(spellcheck): add missing project words so pnpm run lint passes - #661

Open
pucedoteth wants to merge 1 commit into
inkonchain:mainfrom
pucedoteth:fix/spellcheck-dictionary
Open

fix(spellcheck): add missing project words so pnpm run lint passes#661
pucedoteth wants to merge 1 commit into
inkonchain:mainfrom
pucedoteth:fix/spellcheck-dictionary

Conversation

@pucedoteth

Copy link
Copy Markdown

Problem

pnpm run lint fails on main.

The lint script chains four gates:

lint = lint:js && lint:mdx && format:js:check && spellcheck:lint

The first three pass. spellcheck:lint fails with 5 issues across 4 files:

src/pages/ink-builder-program/echo-program.mdx:20:27    - Unknown word (roadmaps)
src/pages/ink-builder-program/forge-program.mdx:6:88    - Unknown word (Inkworks)
src/pages/ink-builder-program/forge-program.mdx:150:119 - Unknown word (Inkworks)
src/pages/ink-builder-program/office-hours.mdx:49:17    - Unknown word (tokenomics)
src/pages/tools/rpc.mdx:78:83                           - Unknown word (Matrixed)

CSpell: Files checked: 53, Issues found: 5 in 4 files.

Because lint is a && chain and spellcheck:lint is last, a contributor who runs the documented lint command gets a red result caused entirely by pre-existing content, before any of their own work is evaluated.

Why it went unnoticed

The spell-check job in .github/workflows/cicd.yaml is commented out:

  # spell-check:
  #   needs: install_modules
  #   runs-on: ubuntu-latest
  #   steps:
  #     - uses: actions/checkout@v4
  #     - uses: ./.github/actions/base-setup
  #       name: Base Setup
  #     - name: Run Spellcheck
  #       run: pnpm run spellcheck:lint

js-lint, md-lint, format and build all run in CI, so nothing else drifts. Spellcheck is the one gate with no CI enforcement, so new prose lands without the dictionary being updated alongside it, and the failures accumulate.

Fix

None of the five flagged instances is a typo, so the dictionary is the correct place to resolve them rather than editing the prose:

Word Context
Inkworks The program that superseded Forge — ink.works, linked directly in forge-program.mdx
Matrixed Part of Matrixed.Link, the operator behind BoltRPC in the RPC provider directory
roadmaps Ordinary prose in echo-program.mdx
tokenomics Ordinary prose in office-hours.mdx

Added to cspell/project-words.txt in the file'"'"'s existing append order, matching how Uniblock was most recently added in #641.

Verification

Before, on main:

$ pnpm run spellcheck:lint
CSpell: Files checked: 53, Issues found: 5 in 4 files.

After, on this branch:

$ pnpm run lint
CSpell: Files checked: 53, Issues found: 0 in 0 files.
$ echo $?
0

All four gates (lint:js, lint:mdx, format:js:check, spellcheck:lint) pass.

Note

This only clears the backlog so the local gate is usable again. It does not re-enable the commented-out spell-check CI job — that looked like a deliberate call, and re-enabling it is your decision rather than something to slip into a content fix. Happy to send that as a follow-up if you would like it, now that the gate is green and it would pass.

`pnpm run lint` chains `spellcheck:lint`, but that gate currently fails on
`main` with 5 issues across 4 files:

    src/pages/ink-builder-program/echo-program.mdx:20:27  - Unknown word (roadmaps)
    src/pages/ink-builder-program/forge-program.mdx:6:88  - Unknown word (Inkworks)
    src/pages/ink-builder-program/forge-program.mdx:150:119 - Unknown word (Inkworks)
    src/pages/ink-builder-program/office-hours.mdx:49:17  - Unknown word (tokenomics)
    src/pages/tools/rpc.mdx:78:83                        - Unknown word (Matrixed)

None of these are typos, so the dictionary is the right place to fix them:

- `Inkworks` is the program that superseded Forge (ink.works)
- `Matrixed` is part of Matrixed.Link, the operator behind BoltRPC
- `roadmaps` and `tokenomics` are ordinary prose

The words drifted in unnoticed because the `spell-check` CI job in
`.github/workflows/cicd.yaml` is commented out, so nothing enforces the
dictionary on push -- only contributors who run the documented `pnpm run
lint` locally hit it, and it fails before their own changes are checked.

Appended to `cspell/project-words.txt` in the file's existing append order,
matching how `Uniblock` was added most recently.

After this change `pnpm run lint` exits 0 and cspell reports
"Files checked: 53, Issues found: 0 in 0 files".

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@pucedoteth
pucedoteth requested a review from a team as a code owner August 31, 2026 12:30
pucedoteth added a commit to pucedoteth/docs-3 that referenced this pull request Aug 31, 2026
`AddNetworkButton` is parameterised by `network`, but its permalink anchor is
hardcoded:

    <a href="#mainnet" id="mainnet" className="subheading-anchor" ... />

`general/connect-wallet.mdx` renders the component twice, once per network, so
both headings emit the same id. From the built page:

    $ grep -o 'id="mainnet"' .next/server/pages/general/connect-wallet.html | wc -l
    2

    ... Mainnet           <a href="#mainnet" id="mainnet" class="subheading-anchor" ...
    ... Testnet (Sepolia) <a href="#mainnet" id="mainnet" class="subheading-anchor" ...

Three things follow. The document carries a duplicate id, which is invalid
HTML and makes `getElementById` and `:target` resolve to whichever comes
first. The permalink on "Testnet (Sepolia)" navigates to Mainnet, so the
control that exists to link to a section links to the wrong one. And the
testnet section has no anchor at all, so it cannot be linked to.

Derive both from the `network` prop. Mainnet keeps `#mainnet`, so any existing
link still resolves, and the testnet heading gets `#sepolia`.

After the change the built page has one of each, on the right heading:

    ... Mainnet           <a href="#mainnet" id="mainnet" ...
    ... Testnet (Sepolia) <a href="#sepolia" id="sepolia" ...

`lint:js`, `lint:mdx` and `format:js:check` pass, and `pnpm run build`
succeeds. `spellcheck:lint` fails on main for unrelated reasons, covered in
inkonchain#661.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

@kutluhaneth46 kutluhaneth46 left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review

Straightforward cspell allowlist update so pnpm run lint / spellcheck stops failing on project vocabulary (roadmaps, Inkworks, tokenomics, Matrixed). No runtime impact.

LGTM.

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.

2 participants