Skip to content

Pin raxol_payments parity to @xochi/spec - #1234

Open
DROOdotFOO wants to merge 5 commits into
masterfrom
pin-riddler-spec
Open

DROOdotFOO wants to merge 5 commits into
masterfrom
pin-riddler-spec

Conversation

@DROOdotFOO

Copy link
Copy Markdown
Owner

Merge order: this needs @xochi/spec 0.8.0 / @xochi/signer 0.5.0 / @xochi/client 0.1.0 published from xochi-fi/xochi-sdk first (tags spec-v0.8.0, signer-v0.5.0, client-v0.1.0, widget-lib-v0.1.0). After the publish, run merge. Until then, npm ci` / frozen-lockfile CI fails by design.

Stacked on the commerce-removal PR.

What

  • Fixture pin: conformance vectors and the vendored fee oracle are read from npm pack @xochi/spec@<test/fixtures/XOCHI_SPEC_VERSION> via XOCHI_SPEC_DIR and CONFORMANCE_FIXTURE_PATH. Under CI a missing fixture now raises; previously CI passed over 0 vectors.
  • CliSigner: now runs Riddler packages/e2e-signer (a local-only tag).

Manual testing

  • With the tarball: 118 conformance + fee tests pass; with CI=1 and no fixture: fails
  • cli_signer against the Riddler checkout: 7 pass

@DROOdotFOO
DROOdotFOO added this pull request to stack #1251 October 12, 2026 17:55
Base automatically changed from remove-commerce-client to master October 12, 2026 17:57
@github-actions

github-actions Bot commented Oct 12, 2026 •

Copy link
Copy Markdown

Unified Regression Test Results

Workflow: Unified Regression Testing
Event: pull_request
SHA: 6b20b25

Performance Results

Found 1 performance result(s)

Memory Results

Found 3 memory result(s)

Targets

  • Parser: <3μs average
  • Render: <1ms average
  • Memory: <3MB per session

Conformance vectors and the vendored fee oracle are now read from the
published @riddler/spec release pinned in
test/fixtures/RIDDLER_SPEC_VERSION, never a sibling checkout. Under CI a
missing artifact fails instead of passing over zero vectors.

CI stays red until @riddler/spec@0.8.0 is published to npm.
@riddler/spec moved to xochi-fi/xochi-sdk as @xochi/spec, so the pin,
module and env var follow (XOCHI_SPEC_VERSION, XochiSpec, XOCHI_SPEC_DIR)
and CI packs @xochi/spec. The taker CLI moved into Riddler as the private
packages/e2e-signer; CliSigner runs its built dist/cli.js from a Riddler
checkout (RIDDLER_CLI_DIR), still a local-only tag.
The pin named 0.8.0, which xochi-sdk never published and never will:
packages/spec/package.json on its main branch is 0.8.1 and the spec
CHANGELOG calls 0.8.0 "the never-published" version that every pre-fix
commit declared. The release workflow refuses a spec-v* tag whose
version differs from package.json, so there is no path by which
`npm pack @xochi/spec@0.8.0` stops answering 404, and the Package Tests
(raxol_payments) cell would have stayed red after the publish the PR
waits on. 0.8.1 is a PATCH with no vector or schedule change: against a
tarball packed from xochi-sdk main, every conformance vector and the
fee oracle byte-identity test pass with this pin, and only the manifest
version assertion failed under the old one.
Under CI an absent fixture now raises, but a fixture that loads and
carries no vectors for a protocol still produced a green run: the
`for vec <- by_protocol(...)` in each conformance module generates one
test per vector, so an upstream rename of the "permit2" or "erc3009"
protocol key, or a filtered fixture, left those describes empty and the
cell green having asserted nothing. The Xochi module already guards
against this with a "fixture coverage" test; Permit2 and x402 did not.
Each now carries the same guard. Pointed at a fixture holding only xochi
vectors, both guards fail and nothing else runs; against the pinned
release's conformance.json they pass alongside the 46 generated tests.
FeeSchedule's docs pointed the reader at `@xochi/reference`'s `fee.ts`
for the TypeScript side of the fee schedule, but that package has no
such file: it is a private, unpublished test harness whose `fee.test.ts`
only re-checks the published vectors. The mirror itself, `FEE_SCHEDULE`
and `computeFeeBreakdown`, lives in `@xochi/client` (`packages/client/
src/fee.ts`), which is also what the spec's `fee/generate.ts` imports to
produce `schedule.json`. Both the module doc and the parity test's doc
now name the package that actually holds it.

This branch has not been deployed

No deployments
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.

1 participant