Files
phishing/.github/workflows/lists.yml
T
SatoshiQaziMuhammedandClaude Opus 5 d2c8bdefb0 Let the Deno build reach its dependencies, and let its check fail (#8)
The build rewrites every @pezkuwi import into a deno.land URL, so @pezkuwi/util
becomes https://deno.land/x/pezkuwi/util/mod.ts. Upstream can do that because
deno.land/x/polkadot is published. Our fork renamed the prefix to x/pezkuwi and
never published there: deno.land/x/pezkuwi answers 404, and `deno check` has
failed on three modules ever since. Reproduced locally with the same Deno the
workflow installs, 2.9.7:

    TS2307 Cannot find module 'https://deno.land/x/pezkuwi/util/mod.ts'
    TS2307 Cannot find module 'https://deno.land/x/pezkuwi/util-crypto/mod.ts'
    TS2307 Cannot find module 'https://deno.land/x/pezkuwi/x-fetch/mod.ts'

import_map.in.json is the tooling's own hook for exactly this —
pezkuwi-dev-deno-map merges its entries into the generated import_map.json. All
three are mapped to npm: specifiers, which Deno resolves natively, at the same
version ranges the node build uses. The three packages are already on npm, so
nothing new is published and the Deno build now checks against the very code we
ship. `yarn deno` exits 0.

This deliberately does not decide whether we ever claim deno.land/x/pezkuwi. If
we do, the mappings come out again; until then the build works with what we have.

The reason none of this was noticed is the second half of the change. The PR job
carried continue-on-error from upstream, so its four steps could never turn a
pull request red: build had been failing since 2026-09-13 and deno for far
longer, and the job reported success throughout. All four pass now — verified
locally, lint included, on a clean tree — so the flag is gone and they are gates
again.

deno.lock joins mod.ts and import_map.json in .gitignore: same check, same kind
of generated artifact. package.json carries the key order its own build:before
step produces.

Gate: scripts/checkDenoMap.mjs, in the Lists workflow so it runs even when the
toolchain cannot be installed. Nails: removing the map, bumping a dependency
without the map, adding a @pezkuwi dependency with no mapping, and leaving a
mapping behind after its dependency goes — each turns it red.

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-17 17:16:47 +04:00

46 lines
1.8 KiB
YAML

name: Lists
# The rules every change to the lists must pass: scripts/lists.test.mjs for the rules and the
# sync, scripts/checkLists.mjs for the committed files. Nothing to install, so this check stands
# on its own when the build toolchain does not.
on:
pull_request:
push:
branches: [master]
permissions: {}
jobs:
lists:
name: lists
runs-on: ubuntu-latest
timeout-minutes: 10
permissions:
contents: read
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version: "22"
- name: Rules for the lists and the sync
run: node --test scripts/lists.test.mjs
- name: The committed lists
run: node scripts/checkLists.mjs
# What the repository says about itself: the build toolchain reads
# repository.url and dies on a host it cannot parse, and a wrong homepage
# ships to everyone who installs the package. This lives here rather than
# in the build job because it must run even when the build cannot.
- name: The repository's own metadata
run: node scripts/checkRepoMeta.mjs
# Whether the Deno build can still reach its dependencies. Same reason as
# above: it must run even when the toolchain cannot be installed, and it
# is the check that would have caught the broken map years earlier.
- name: The Deno import map
run: node scripts/checkDenoMap.mjs
# What phishing.pezkuwichain.io runs before it serves a new master: against a scratch
# repository and web root, with these lists.
- name: The host's publish checks
run: bash pezkuwi/host/test-publish.sh