Skip to content

npm publish returns E404 on @rainlanguage/float: the token cannot write that package #4

Description

@thedavidmeister

npm publish returns E404 on PUT /@rainlanguage%2ffloat, so @rainlanguage/float
has not been published since 2025-12-01. Solidity is unaffected and is being released
first; this issue exists so the npm side is tracked rather than carried in someone's head.

This isolates the diagnosis that rain.math.float.deploy#1 records as "exact error not yet
isolated from the CI log".

What the evidence rules out

  • Not secret scoping. NPM_PUBLISH_PRIVATE_TOKEN is visible to this repo, checked via
    the org-secrets API, not inferred from secrets: inherit.
  • Not the job's environment. The crates.io publish in the same job succeeds —
    rain-math-float v0.1.11 published from here.
  • Not a version conflict. No 0.0.x version of @rainlanguage/float was ever
    published; the registry still holds 0.0.0-alpha.40. There is nothing to collide with.

E404 on a PUT to a scoped package name is what npm returns for a token that cannot write
that package, rather than for a package that does not exist. So this is the token's
validity or its permissions on @rainlanguage/float.

Two directions

  1. Refresh the token's access to @rainlanguage/float and re-run. Smallest change,
    and it leaves the failure mode in place for next time the token rotates.
  2. Move rainix-autopublish onto npm OIDC trusted publishing. rainlanguage/raindex
    has already migrated and publishes fine; the rainix-autopublish path still uses the
    token. This removes the class of failure rather than the instance, and there is a
    working in-org precedent to copy.

Direction 2 is a change to rainix and affects every consumer of that workflow, so it is a
decision rather than a fix to apply here.

Related

The version creep this failure produced — package.json at 0.0.13 with nothing
published at any 0.0.x — is not caused by the E404 itself. rainix-autopublish pushes
the bump before it publishes, so every failed run advances the number permanently. That
ordering is tracked separately in rainlanguage/rainix.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions