Repository navigation
WIRE-419: recover batch operator startup when outposts are unavailable - #679
Conversation
Change-Id: I4aa6e9a8d649fbb84335296ccc69602c40e584c0
Change-Id: Ia8247b1db92b66900ac4fd98ff1a26b66e22b101
Change-Id: I4207dc9322f73efba93a9d9d4d84671fab76eee4
heifner
left a comment
There was a problem hiding this comment.
Two fixes needed before merge (inline).
| with: | ||
| package_json_file: libraries/opp/tools/package.json | ||
| node-version: 24 | ||
| registry-url: https://registry.npmjs.org |
There was a problem hiding this comment.
This breaks the npm publish. With registry-url, setup-node writes $RUNNER_TEMP/.npmrc with _authToken=${NODE_AUTH_TOKEN}, points NPM_CONFIG_USERCONFIG at it, and sets NODE_AUTH_TOKEN to a placeholder. npm then ignores ~/.npmrc, so the token the publish step writes there is never used. The push run on merge (this PR touches libraries/opp/**) would fail the npm publishes, and tag releases waiting on a successful OPP Bundles run would block. PR CI doesn't run the publish step, so it can't catch this.
Fix: set NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} on the publish step, as wire-tools-ts does, and drop the ~/.npmrc line. Or remove registry-url here.
There was a problem hiding this comment.
Fixed in 7689737 (retained in the current PR). The gated publish step now receives NODE_AUTH_TOKEN from secrets.NPM_TOKEN and uses setup-node’s registry configuration; the ~/.npmrc write is removed. A local dummy registry test reproduced the previous authentication failure and verified the corrected token setup. No package was published during validation.
| "@types/lodash": "^4.17.21", | ||
| "@types/node": "^24.10.13", | ||
| "@types/shelljs": "^0.10.0", | ||
| "@wireio/cluster-tool": "0.1.20", |
There was a problem hiding this comment.
@wireio/cluster-tool brings in @aws-sdk/* (client-ssm, plus client-sts and client-firehose through @wireio/shared), and with no lockfile their transitive ranges float. The platform keeps one pinned @aws-sdk version through a resolutions block in every root package.json; without it an upstream publish race (like the 2026-08-04 ERR_PNPM_NO_MATCHING_VERSION on @aws-sdk/credential-provider-http) fails every CI install. Please add the same block wire-tools-ts and wire-libraries-ts carry:
"resolutions": {
"@aws-sdk/client-firehose": "3.1102.0",
"@aws-sdk/client-kms": "3.1102.0",
"@aws-sdk/client-sns": "3.1102.0",
"@aws-sdk/client-ssm": "3.1102.0",
"@aws-sdk/client-sts": "3.1102.0"
}There was a problem hiding this comment.
Fixed in 7689737 (retained in the current PR). The root package.json now pins client-firehose, client-kms, client-sns, client-ssm, and client-sts to 3.1102.0 through resolutions. A non-frozen pnpm install verified those resolved versions. No JavaScript lockfile was added.
Change-Id: Ice688673a4d0c1ba091e3839984c6805e5d2c629
Change-Id: Id507ede0effb871b5a1d8a158204517921c8860d
Change-Id: I353dff398707e2a891fe94e380c3cae99ed1c9d9
|
Refreshed this branch by merging current master The no-lockfile/non-frozen-install and Tools-style Node setup requests are addressed; the persistence changes were split into WIRE-420 / #681, which is now merged into master. The two inline replies above cover publishing auth and AWS SDK pins. The refreshed build, 52 contract artifact comparisons, selected startup/base-integration tests, and both real-Anvil startup recovery scenarios passed. Independent architecture and correctness/security/compliance reviews found no actionable PR issues. The previous E2E underwriting failure points to Solana yield-account decoding; the refreshed base includes #691’s fix. Started a new full-flow E2E run using the refreshed PR branch: https://github.com/Wire-Network/wire-platform-build-system/actions/runs/39839997376 . Results are pending; the PR remains draft during validation. The existing review request to @heifner is retained. |
Summary
3.1102.0through root resolutions.NODE_AUTH_TOKENonly to the gated OPP publish step through setup-node’s registry configuration.Why
WIRE-419: a five-second synchronous Ethereum identity check aborted batch-operator initialization when remote outposts started later. Configured signing IDs are authoritative locally; clients needing discovery remain pending and retry until recovery or shutdown. Callers fetch a fresh immutable snapshot to observe readiness.
Interrupted database/block-log startup diagnostics were split into WIRE-420 / PR #681, now included in the refreshed target. This PR adds no persistence repair or state clearing. WireQL/query timeout configuration is separate.
Validation
47ade7dd67; all 52 generated contract artifacts match the tracked versions.867bcf0c1e: initialization took 18/19 ms during an eight-second outage, then each case sent three whole-envelope transactions, delivered three attestations with zero failures, finalized the epoch and advanced the next-epoch cursor to 3 without restarting. Configured startup made no chain-ID query; omitted-ID discovery queried four times. This focused check does not replace full multi-node cluster coverage or validate older deployed contracts.3.1102.0; a local dummy registry rejected the old npm auth setup and acceptedNODE_AUTH_TOKEN. No package was published.syndication-plugin-underwriting, on Sysio4f673a0d7b, Ethereum0b5184cec0, Solana73f69330a7, Toolsd28e094dfa, and Libraries4245dad44c. The actual checkout revisions, full build/artifact checks, flow inventory and Tools SDK resolution were verified from the completed run’s reports.