Skip to content

dev: run integration specs on the live harness #718

Description

@0xisk

Parent: #665
Depends on the core harness (#666).

Scope

Run the composed-contract specs in test/integration/specs against the live
harness, via a new integration-live vitest project that reuses the same
globalSetup, wallet pool, backend, and orchestrator as unit-live.

Unlike the per-category unit children, the composed contract cannot deploy
live
: the base ConfidentialFungibleToken already bundles four k=16 circuits'
IR into one deploy tx and overruns the per-tx block byte budget, and this
composition is strictly larger. The deliverable is therefore the capability plus
a block-limit canary that asserts the rejection, rather than green functional
coverage. The canary flips red the day a smaller composition or a staged deploy
lets the contract through, which is precisely when functional live coverage
becomes possible.

The functional flows are also blocked independently: they mutate private state
mid-test via switchIdentity / cachePlaintext, which the live backend throws
on (private-state mutation unsupported on live backend). Going green needs both
a deploy that fits and a deploy-seeded, memo-decrypt rewrite.

  • integration-live vitest project, reusing unit-live's globalSetup and setup
  • test:live integration orchestrator target, emitted by --list so CI can
    spawn a job for it
  • Full-key mock compile — compile:integration takes SKIP_ZK from the
    environment so one script serves the dry and live paths
  • Truncated-key scan widened to cover the integration mocks
  • Block-limit canary asserting the node's exact rejection, verified on a local
    stack: 1010: Invalid Transaction: Transaction would exhaust the block limits
  • Backend guards on both integration specs
  • Green functional live coverage — blocked by the block limit. Needs a smaller
    composed mock or a staged-deploy / CMA path, each its own design track
  • Wallet-partitioned parallel integration-live — only needed once multiple
    green live specs exist; single worker is sufficient for one rejected deploy
  • CI gating parity for the integration-live matrix job, which needs the live
    workflow in ci: add live test suite workflow #681 to merge first

Related: #716 tracks the follow-ups left out of the implementing PR.

Also noted while implementing: the dry integration project is currently red on
main, because test/integration/fixtures/* are written against an older
@openzeppelin/compact-simulator API — the installed 0.2.0 constructor takes
(deps), so new ComposedTokensSimulator(args, {}) hits deps.backend.kind on
undefined. That is adjacent to #712 but not listed there.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions