chore(ci): bump e2e snapshot test timeout
Signed-off-by: yHSJ <[email protected]>
Signed-off-by: yHSJ <[email protected]>
Signed-off-by: yHSJ <[email protected]>
Signed-off-by: Akhil Repala <[email protected]>
push-cardano_node_master_images.sh was hardcoded to scan only testnets/cardano_node_master/docker-compose.yaml. Image tags referenced from any other testnet's compose were never resolved or rebuilt. Symptom: bumped cardano_node_adversary's sidecar pin from :f889dbc to :a9e7743 in commit cad7b6b; publish-images on that commit silently skipped sidecar:a9e7743 because it scanned master's compose only (which still pins :f889dbc, already on GHCR). Antithesis dispatch then failed setup with "Cannot find image ... 'sidecar' tag a9e7743": https://github.com/cardano-foundation/cardano-node-antithesis/actions/runs/25228460493 Fix: glob testnets/*/docker-compose.yaml and dedupe entries. The script's per-image build/push loop is unchanged. Master testnet's pin (:f889dbc) is still scanned, finds itself already on GHCR, and skips — no behavioural change for master. Validated locally: $ grep -hoP 'ghcr\.io/.../\K[^ ]+' testnets/*/docker-compose.yaml | ... adversary cc628d5 sidecar a9e7743 sidecar f889dbc tx-generator 2012360 asteria-stub configurator log-tailer tracer-sidecar Master testnet directory itself is untouched.
- Use electron-packager's electronZipDir to bypass @electron/get cache/network entirely
- Fix electron-headers extraction (flat tarball layout in Electron 41)
- Switch Wine Windows version to win10 (Node.js 20+ requires it)
- Use Node.js 20.20.2 for native module rebuilds (Node.js 24 OOMs under Wine 8.0)
- Run @electron/rebuild via node.exe directly instead of npm.cmd (avoids Wine hang)
- Update findVisualStudio stub for node-gyp 12.x async API
- Fix ESM-incompatible require("fs") call in @electron/rebuild patch
- Fix return→exit in shell script (can't return outside a function)
- Add mkdir -p for scoped package parent dirs in installPhase
- Fix NSIS LoadLanguage → LoadLanguageFile for makensis 3.10+
- Update electron zip and node.lib hashes for Electron 41.3.0
Signed-off-by: Chris Gianelloni <[email protected]>
Signed-off-by: Doc Holiday <[email protected]> Signed-off-by: Doc Holiday <[email protected]>
Signed-off-by: Doc Holiday <[email protected]> Signed-off-by: Doc Holiday <[email protected]>
Signed-off-by: Doc Holiday <[email protected]> Signed-off-by: Doc Holiday <[email protected]>
Signed-off-by: Doc Holiday <[email protected]> Signed-off-by: Doc Holiday <[email protected]>
Signed-off-by: Doc Holiday <[email protected]> Signed-off-by: Doc Holiday <[email protected]>
Signed-off-by: Doc Holiday <[email protected]> Signed-off-by: Doc Holiday <[email protected]>
Signed-off-by: Chris Gianelloni <[email protected]>
Signed-off-by: Doc Holiday <[email protected]> Signed-off-by: Doc Holiday <[email protected]>
Signed-off-by: Doc Holiday <[email protected]> Signed-off-by: Doc Holiday <[email protected]>
The "test" workflow_dispatch input was declared but never read — TESTNET was hardcoded at the env level. With this one-line fix, manual dispatches can target any testnets/<dir> (e.g. testnets/asteria_game/) while the cron schedule keeps its default of cardano_node_master.
Closes the always-true admin_mint placeholder PR #67 ships. The
bootstrap's "no double-mint on container restart" contract was
previously enforced only by the off-chain isAlreadyDeployed
check; this commit puts the contract on chain.
Aiken side (components/asteria-game/aiken/validators/admin_mint.ak):
- validator admin_mint(seed: OutputReference) succeeds iff the
tx consumes the seed AND the bundle minted under this policy
is exactly [(asteriaAdmin, 1)]. Seed consumption is permanent
on Cardano UTxO, so admin_mint can fire at most once across
all chain history.
- aiken/plutus.json regenerated; admin_mint now declares one
parameter "seed". All 91 existing tests pass.
- apply-params.sh / plutus-applied.json no longer in the build
path — Haskell applies the seed at runtime.
Haskell side:
- new Asteria.Validators.applyScripts: takes a seed TxIn and
returns AppliedScripts { adminMint, pellet, asteria,
spacetime } with both Plutus scripts and ledger-side hashes.
Built on plutus-ledger-api's uncheckedDeserialiseUPLC +
UntypedPlutusCore.applyProgram + serialiseUPLC. Hash
dependencies are threaded in declaration order
(admin_mint → pellet → asteria → spacetime).
- new Asteria.Deploy module: read/write
/asteria-deploy/seed.json. Bootstrap is the only writer;
player + invariant are readers. ASTERIA_DEPLOY_DIR env var
overrides the path.
- BootstrapMain: reads seed.json on startup. If present,
re-derives the same scripts (deterministic). If absent,
picks a fresh wallet UTxO via pickWalletUtxo, writes the
seed to disk BEFORE submitting the deploy tx (durable order
so a crash leaves either no file or a consistent file).
isAlreadyDeployed simplified to "any UTxO at the per-deploy
asteria addr" — under the one-shot policy at most one such
UTxO can ever exist.
- PlayerMain + InvariantMain: read seed.json, applyScripts,
use AppliedScripts.as{Asteria,Spacetime,Pellet,AdminMint}
{Script,Hash} in place of former top-level constants. If
seed file missing, emit asteria_*_seed_missing_<id>
sdkUnreachable and exit cleanly (correct: bootstrap hasn't
run yet on this cluster).
Compose:
- new asteria-deploy named volume mounted at /asteria-deploy
on the asteria-game container.
Locally validated end-to-end on testnets/asteria_game/:
- pre-bootstrap: asteria_invariant_seed_missing_admin_singleton
fires (correct)
- bootstrap cold: asteria_bootstrap_seed_picked +
asteria_bootstrap_seed_persisted + asteria_bootstrap_asteria_created
(asteria addr is now per-seed: 77a02b8e... instead of the
previous hardcoded 0824601a...)
- container restart: asteria_bootstrap_seed_reused +
asteria_bootstrap_already_deployed short-circuit
- spawn: asteria_player_ship_spawned_1 succeeds with the
seed-derived validators
- consistency: ship_counter=1, ship_token_count=1, hit=true
- admin_singleton: count=1, hit=true (post-bootstrap and
post-spawn)
Findings root cause from run https://github.com/cardano-foundation/cardano-node-antithesis/actions/runs/25224228713 report: the failing "Always: Commands finish with zero exit code → chain-sync-client/parallel_driver_flaky_chain_sync.sh" property was tripped by the SIDECAR container, not the adversary container. The Antithesis composer walks every container's /opt/antithesis/test/v1/ for scripts and dispatches anything it finds. The adversary container's parallel_driver dispatches and returns the daemon's structured response; that's the intended path. But the sidecar container, pinned at sidecar:f889dbc, is from BEFORE PR #99 removed components/sidecar/composer/chain-sync-client/. That stale image still ships the script that requires CHAINPOINT_FILEPATH (which we no longer set on the sidecar service) — and it just `adversary "$@"`s with no SDK assertions, so it failed immediately: chain-sync-client/parallel_driver_flaky_chain_sync.sh sidecar.example Error: CHAINPOINT_FILEPATH environment variable is not set Bumping the pin to a9e7743 (current branch tip, which exists on origin) forces publish-images to rebuild the sidecar image from this commit's components/sidecar/composer/ tree — which has only `convergence/`, no `chain-sync-client/`. Once published, the sidecar container in this testnet won't dispatch any chain-sync script, and the only `parallel_driver_flaky_chain_sync.sh` in play comes from the adversary container as intended. cardano_node_master is unchanged (its sidecar pin stays at :f889dbc per the master-readonly rule). When the time comes to fix master, that's a separate explicit PR.
Main parks tx-generator (43bf739/8c45f76/d78c7b1 in cardano-node-antithesis) so the cron run on main targets a tx-generator-free reference cluster. But Antithesis launches the cluster from compose AS-IS; passing '-f tx-generator.disabled.yaml' isn't an option through moog's launcher. So a 1h workflow_dispatch on this branch needs the service un-parked HERE — otherwise the Antithesis cluster has no daemon and the run is a no-op for our verification. Image points at the tag we pre-pushed earlier (tx-generator:8c53529, digest sha256:3c13a0f3...). When this PR merges, tx-generator becomes active on master again. If we want to keep main tx-generator-free, the merge should be staged with a follow-up commit that re-parks it after Antithesis verification.