
Security News
arXiv Is Rate Limiting Authors Following a Flood of AI Slop Submissions
arXiv now limits authors to two submissions a month as AI slop overwhelms moderators, delays good papers, and sparks debate over applying the limit to everyone.
@forestrie/canopy-e2e-kit
Advanced tools
Reusable Playwright e2e helpers for canopy system tests (ARC-0024 Layer 1)
Reusable Playwright helpers extracted from @canopy/api-e2e for cross-repo
system tests (ARC-0024).
| Suite | Scope | Univocity | CI entry |
|---|---|---|---|
| bootstrap | canopy's own genesis → grants → first entry | Ephemeral, provisioned per run (deploy provision e2e) | canopy tests-system.yml |
| lane | Cross-repo lane integration | Per-run deploy from the lane manifest's release pin | forestrie/system-testing |
Suites are named for what they exercise; the promotion phase that runs them
(pr, main, qualify, promote, nightly) is the other axis. The numbered
T0–T4 tiers are retired — one token could not carry both, so "T3" meant the lane
suite and the qualification gate interchangeably (FOR-531).
Both suites provision their own instances. There is no pinned-contract mode in
canopy: a supplied address set *_ALLOW_BOOTSTRAP=false, which skipped every
bootstrap spec.
Cross-repo lane specs (forest genesis, Mode B/C registration, BYOK) run in
forestrie/system-testing — not tests-system.yml.
hasCoordinatorApiE2eEnv, assertCoordinatorApiE2eEnv)mintOnboardTokenE2e)pollQueryRegistrationUntilReceiptRedirect, pollResolveReceiptUntil200, sequencingBackoff)univocityProvisionSkipReason, fetchOnChainBootstrapConfig, bootstrap contract helpers)ensureForestGenesisEs256E2e, ensureForestGenesisKs256E2e, genesisBodyEs256)E2E_BOOTSTRAP_VARIANTS, describeForEachBootstrapVariant)mintBootstrapGrant, signChildGrantUnderRoot, ES256 PEM + KS256 wallet signers)completeGrantRegistrationThroughReceipt, completeBootstrapGrantWithReceipt, buildCompletedGrantBase64)setupBootstrapCoordinatorDelegation, pollBootstrapRegistrationThroughReceipt)assertBootstrapMintE2eEnv, assertBootstrapReceiptE2eEnv, assertSystemE2eEnv)Grant, transparent-statement header labels) and COSE encoding vendored under src/wire/ and src/encoding/startModeCWebhookIngress, pollModeCWebhookSealThroughReceipt, modeCWebhookSealSkipReason)exchangeWalletChallengeSessionE2e)custodianApiV1BaseUrl, postCustodianApiSignPayload, custody grant builders)postEntriesExpectAccepted, etc.)mode-c-webhook-receiver (in-process webhook receiver for coordinator e2e)@forestrie/receipt-verify
(plan-0030, FOR-286):
verifyGrantReceiptOffline, parseReceipt, decodeTrustRootFromGenesis,
plus types VerifyGrantReceiptOfflineInput, ReceiptVerifyResult, ReceiptVerifyStage@forestrie/grant-builder / @forestrie/scrapi-client, which
exist only on npmjs, so a GitHub Packages release would be uninstallable
for consumers whose @forestrie scope maps to GitHub Packages@forestrie/receipt-verify 0.3.0 (canonical Grant from
@forestrie/grant-builder, FOR-353)Published to public npmjs.org (0.5.0+; 0.4.x and earlier were on GitHub Packages) — no registry auth needed:
pnpm add -D @forestrie/canopy-e2e-kit
Workspace consumers: "@forestrie/canopy-e2e-kit": "workspace:*".
Peer dependencies: @playwright/test, viem (wallet challenge session).
pnpm --filter @forestrie/canopy-e2e-kit build
pnpm --filter @forestrie/canopy-e2e-kit test
Publish tag (npmjs, trusted publishing / OIDC): canopy-e2e-kit-v*.
Workflow: .github/workflows/publish-canopy-e2e-kit.yml (mirrors
publish-delegation-cose.yml).
Published dependencies (all npmjs): @forestrie/delegation-cose,
@forestrie/encoding, @forestrie/grant-builder, @forestrie/scrapi-client
and @forestrie/receipt-verify — workspace:*/workspace:^ in monorepo,
rewritten to concrete versions on pack.
Kit vendors a minimal subset of @forestrie/encoding and grant wire types under
src/encoding/ and src/wire/. When changing canopy-api grant or COSE paths,
update the kit copy in the same PR and bump the kit semver slice.
| Kit path | Canonical source |
|---|---|
src/encoding/* | packages/shared/encoding/src/ |
src/wire/grant/* | packages/apps/canopy-api/src/grant/ |
src/wire/forest/* | packages/apps/canopy-api/src/forest/ |
src/wire/cose/* | packages/apps/canopy-api/src/cose/ |
Drift guard: test/merge-cose-sign1-unprotected.test.ts mirrors
@forestrie/encoding golden vectors for mergeUnprotectedIntoCoseSign1.
Manifest placeholder: KS256_UNIVOCITY_MANIFEST_PLACEHOLDER in
system-test-manifest-constants.ts — keep aligned with
system-testing/manifests/lane-a.example.yaml.
Moved helpers live in this package; packages/tests/canopy-api/tests/utils/*.ts
files re-export from @forestrie/canopy-e2e-kit so Playwright specs keep
@e2e-utils/* import paths unchanged.
FAQs
Reusable Playwright e2e helpers for canopy system tests (ARC-0024 Layer 1)
The npm package @forestrie/canopy-e2e-kit receives a total of 55 weekly downloads. As such, @forestrie/canopy-e2e-kit popularity was classified as not popular.
We found that @forestrie/canopy-e2e-kit demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.

Security News
arXiv now limits authors to two submissions a month as AI slop overwhelms moderators, delays good papers, and sparks debate over applying the limit to everyone.

Research
/Security News
A new GhostAction wave hits hundreds of GitHub repos, expanding CI/CD secret theft to cloud and AI credentials in source code and git history.

Research
/Security News
Tensorlake npm SDK version 0.5.144 was compromised in a ChainDrop / Shai-Hulud attack, delivering credential-stealing malware.