Apr 19, 5-6 PM (3)
Apr 19, 6-7 PM (8)
Apr 19, 7-8 PM (3)
Apr 19, 8-9 PM (8)
Apr 19, 9-10 PM (6)
Apr 19, 10-11 PM (25)
Apr 19, 11-12 AM (23)
Apr 20, 12-1 AM (4)
Apr 20, 1-2 AM (5)
Apr 20, 2-3 AM (2)
Apr 20, 3-4 AM (7)
Apr 20, 4-5 AM (1)
Apr 20, 5-6 AM (8)
Apr 20, 6-7 AM (12)
Apr 20, 7-8 AM (29)
Apr 20, 8-9 AM (42)
Apr 20, 9-10 AM (37)
Apr 20, 10-11 AM (95)
Apr 20, 11-12 PM (42)
Apr 20, 12-1 PM (39)
Apr 20, 1-2 PM (53)
Apr 20, 2-3 PM (68)
Apr 20, 3-4 PM (47)
Apr 20, 4-5 PM (41)
Apr 20, 5-6 PM (31)
Apr 20, 6-7 PM (24)
Apr 20, 7-8 PM (10)
Apr 20, 8-9 PM (7)
Apr 20, 9-10 PM (16)
Apr 20, 10-11 PM (28)
Apr 20, 11-12 AM (18)
Apr 21, 12-1 AM (24)
Apr 21, 1-2 AM (5)
Apr 21, 2-3 AM (13)
Apr 21, 3-4 AM (4)
Apr 21, 4-5 AM (3)
Apr 21, 5-6 AM (8)
Apr 21, 6-7 AM (15)
Apr 21, 7-8 AM (44)
Apr 21, 8-9 AM (119)
Apr 21, 9-10 AM (36)
Apr 21, 10-11 AM (35)
Apr 21, 11-12 PM (98)
Apr 21, 12-1 PM (57)
Apr 21, 1-2 PM (71)
Apr 21, 2-3 PM (60)
Apr 21, 3-4 PM (33)
Apr 21, 4-5 PM (31)
Apr 21, 5-6 PM (27)
Apr 21, 6-7 PM (38)
Apr 21, 7-8 PM (35)
Apr 21, 8-9 PM (37)
Apr 21, 9-10 PM (14)
Apr 21, 10-11 PM (34)
Apr 21, 11-12 AM (12)
Apr 22, 12-1 AM (2)
Apr 22, 1-2 AM (3)
Apr 22, 2-3 AM (3)
Apr 22, 3-4 AM (4)
Apr 22, 4-5 AM (3)
Apr 22, 5-6 AM (17)
Apr 22, 6-7 AM (34)
Apr 22, 7-8 AM (21)
Apr 22, 8-9 AM (37)
Apr 22, 9-10 AM (18)
Apr 22, 10-11 AM (47)
Apr 22, 11-12 PM (45)
Apr 22, 12-1 PM (56)
Apr 22, 1-2 PM (64)
Apr 22, 2-3 PM (44)
Apr 22, 3-4 PM (86)
Apr 22, 4-5 PM (46)
Apr 22, 5-6 PM (17)
Apr 22, 6-7 PM (10)
Apr 22, 7-8 PM (18)
Apr 22, 8-9 PM (15)
Apr 22, 9-10 PM (23)
Apr 22, 10-11 PM (31)
Apr 22, 11-12 AM (17)
Apr 23, 12-1 AM (7)
Apr 23, 1-2 AM (4)
Apr 23, 2-3 AM (4)
Apr 23, 3-4 AM (6)
Apr 23, 4-5 AM (3)
Apr 23, 5-6 AM (8)
Apr 23, 6-7 AM (17)
Apr 23, 7-8 AM (26)
Apr 23, 8-9 AM (33)
Apr 23, 9-10 AM (33)
Apr 23, 10-11 AM (29)
Apr 23, 11-12 PM (30)
Apr 23, 12-1 PM (51)
Apr 23, 1-2 PM (69)
Apr 23, 2-3 PM (65)
Apr 23, 3-4 PM (26)
Apr 23, 4-5 PM (21)
Apr 23, 5-6 PM (7)
Apr 23, 6-7 PM (7)
Apr 23, 7-8 PM (11)
Apr 23, 8-9 PM (14)
Apr 23, 9-10 PM (6)
Apr 23, 10-11 PM (28)
Apr 23, 11-12 AM (18)
Apr 24, 12-1 AM (7)
Apr 24, 1-2 AM (4)
Apr 24, 2-3 AM (7)
Apr 24, 3-4 AM (5)
Apr 24, 4-5 AM (8)
Apr 24, 5-6 AM (13)
Apr 24, 6-7 AM (12)
Apr 24, 7-8 AM (33)
Apr 24, 8-9 AM (40)
Apr 24, 9-10 AM (41)
Apr 24, 10-11 AM (71)
Apr 24, 11-12 PM (57)
Apr 24, 12-1 PM (37)
Apr 24, 1-2 PM (53)
Apr 24, 2-3 PM (34)
Apr 24, 3-4 PM (19)
Apr 24, 4-5 PM (16)
Apr 24, 5-6 PM (38)
Apr 24, 6-7 PM (26)
Apr 24, 7-8 PM (12)
Apr 24, 8-9 PM (41)
Apr 24, 9-10 PM (17)
Apr 24, 10-11 PM (30)
Apr 24, 11-12 AM (16)
Apr 25, 12-1 AM (8)
Apr 25, 1-2 AM (1)
Apr 25, 2-3 AM (10)
Apr 25, 3-4 AM (5)
Apr 25, 4-5 AM (3)
Apr 25, 5-6 AM (13)
Apr 25, 6-7 AM (1)
Apr 25, 7-8 AM (4)
Apr 25, 8-9 AM (24)
Apr 25, 9-10 AM (17)
Apr 25, 10-11 AM (4)
Apr 25, 11-12 PM (4)
Apr 25, 12-1 PM (13)
Apr 25, 1-2 PM (3)
Apr 25, 2-3 PM (10)
Apr 25, 3-4 PM (6)
Apr 25, 4-5 PM (10)
Apr 25, 5-6 PM (16)
Apr 25, 6-7 PM (12)
Apr 25, 7-8 PM (30)
Apr 25, 8-9 PM (55)
Apr 25, 9-10 PM (13)
Apr 25, 10-11 PM (20)
Apr 25, 11-12 AM (21)
Apr 26, 12-1 AM (5)
Apr 26, 1-2 AM (0)
Apr 26, 2-3 AM (2)
Apr 26, 3-4 AM (5)
Apr 26, 4-5 AM (2)
Apr 26, 5-6 AM (2)
Apr 26, 6-7 AM (3)
Apr 26, 7-8 AM (8)
Apr 26, 8-9 AM (3)
Apr 26, 9-10 AM (0)
Apr 26, 10-11 AM (2)
Apr 26, 11-12 PM (1)
Apr 26, 12-1 PM (6)
Apr 26, 1-2 PM (4)
Apr 26, 2-3 PM (14)
Apr 26, 3-4 PM (14)
Apr 26, 4-5 PM (0)
Apr 26, 5-6 PM (0)
3,790 commits this week Apr 19, 2026 - Apr 26, 2026
testnet: pin oura to v1.9.4 (v2.0.0 not on ghcr)
Reverts the v2.0.0 attempt — txpipe published v2.0.0 binaries on
GitHub releases but never pushed the docker image to ghcr.io. v1.9.4
is the latest ghcr-resolvable tag and is what :latest was already
pointing to. Pinning the explicit tag eliminates the implicit drift
risk that :latest carries.

The exit-101 panic under fault injection remains on v1.9.4 — file
upstream once we have a deterministic reproducer.
sidecar: make finally_tips_agree self-classifying + extend settle budget
Settle budget grows from 25s (15s sleep + 5×2s retries) to 150s
(30s sleep + 24×5s retries). Antithesis fault stop returns control
faster than chain-propagation across three nodes; the old budget
flagged "permanent fork" on what was actually still-draining
post-fault chain selection.

On failure the assertion details now carry block_delta, slot_delta,
sidecar_reachability map, and the settle budget that was used. That
lets each future failure self-classify into:
  A. too-short settle  — small deltas, all reachable
  B. lingering partition — any node unreachable from sidecar
  C. consensus stall   — large deltas, all reachable

Reachability uses cardano-cli ping handshake from the sidecar to each
producer's N2N port. It probes sidecar→node only (not the full peer
matrix), but is enough to discriminate B from C in practice.
chore(deps-dev): bump eslint from 9.39.2 to 10.2.1
Bumps [eslint](https://github.com/eslint/eslint) from 9.39.2 to 10.2.1.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Commits](https://github.com/eslint/eslint/compare/v9.39.2...v10.2.1)

---
updated-dependencies:
- dependency-name: eslint
  dependency-version: 10.2.1
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <[email protected]>
chore(deps-dev): bump postcss from 8.5.8 to 8.5.10 (#381)
Bumps [postcss](https://github.com/postcss/postcss) from 8.5.8 to 8.5.10.
- [Release notes](https://github.com/postcss/postcss/releases)
- [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/postcss/postcss/compare/8.5.8...8.5.10)

---
updated-dependencies:
- dependency-name: postcss
  dependency-version: 8.5.10
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
chore(deps): bump github.com/blinklabs-io/gouroboros
Bumps [github.com/blinklabs-io/gouroboros](https://github.com/blinklabs-io/gouroboros) from 0.153.1 to 0.165.3.
- [Release notes](https://github.com/blinklabs-io/gouroboros/releases)
- [Changelog](https://github.com/blinklabs-io/gouroboros/blob/main/RELEASE_NOTES.md)
- [Commits](https://github.com/blinklabs-io/gouroboros/compare/v0.153.1...v0.165.3)

---
updated-dependencies:
- dependency-name: github.com/blinklabs-io/gouroboros
  dependency-version: 0.165.2
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>
testnet: remove asteria-player from cardano_node_master compose
Unblocks scheduled runs. asteria-player:dev never published —
publish-images skips it ("Tag 'dev' not found in repo"), so
Antithesis fails to pull and every scheduled run since 2026-04-25
came back Incomplete with zero container stdout.

Asteria work continues under #56 / PR #67. Re-add to compose once a
real image tag is published.

Ogmios already absent from main (removed in 7e0f8f5 pending #49).
chore(deps): bump go.opentelemetry.io/otel from 1.39.0 to 1.41.0 (#552)
Bumps [go.opentelemetry.io/otel](https://github.com/open-telemetry/opentelemetry-go) from 1.39.0 to 1.41.0.
- [Release notes](https://github.com/open-telemetry/opentelemetry-go/releases)
- [Changelog](https://github.com/open-telemetry/opentelemetry-go/blob/main/CHANGELOG.md)
- [Commits](https://github.com/open-telemetry/opentelemetry-go/compare/v1.39.0...v1.41.0)

---
updated-dependencies:
- dependency-name: go.opentelemetry.io/otel
  dependency-version: 1.41.0
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
build(deps): bump go.opentelemetry.io/otel from 1.39.0 to 1.41.0 (#557)
Bumps [go.opentelemetry.io/otel](https://github.com/open-telemetry/opentelemetry-go) from 1.39.0 to 1.41.0.
- [Release notes](https://github.com/open-telemetry/opentelemetry-go/releases)
- [Changelog](https://github.com/open-telemetry/opentelemetry-go/blob/main/CHANGELOG.md)
- [Commits](https://github.com/open-telemetry/opentelemetry-go/compare/v1.39.0...v1.41.0)

---
updated-dependencies:
- dependency-name: go.opentelemetry.io/otel
  dependency-version: 1.41.0
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
chore(deps): Bump github.com/gdamore/tcell/v2 from 2.13.8 to 2.13.9 (#443)
Bumps [github.com/gdamore/tcell/v2](https://github.com/gdamore/tcell) from 2.13.8 to 2.13.9.
- [Release notes](https://github.com/gdamore/tcell/releases)
- [Changelog](https://github.com/gdamore/tcell/blob/main/CHANGESv3.md)
- [Commits](https://github.com/gdamore/tcell/compare/v2.13.8...v2.13.9)

---
updated-dependencies:
- dependency-name: github.com/gdamore/tcell/v2
  dependency-version: 2.13.9
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
feat(lsp): enhance LSP project with dependency caching and incremental compilation
- Introduced `LspDepCache` to store type information and checked modules for improved performance.
- Added methods to `LspProject` for managing the dependency cache, including `new_with_cache`, `dep_cache`, and cache management during compilation.
- Updated `Project` struct to support skipping dependency checks and injecting module types from the cache.
- Enhanced the `compile` method to utilize cached data, reducing unnecessary re-inference of modules.
- Modified `Platform` and `Dependency` enums to derive `Hash` for improved caching capabilities.
- Implemented incremental caching logic in `type_check` to avoid re-parsing unchanged modules.
fix(ci): also try origin/<tag> when resolving image tags
Fresh clones don't expose feature branches as bare refs — only
as @origin/<branch>@ remote-tracking refs. The publish script's
@git rev-list -n 1 <tag>@ failed to find @asteria-spawn-v2@
even though the branch existed on origin. Falling through to
@origin/<tag>@ when the bare lookup fails covers the
feature-branch case while still working for git tags and
explicit commit SHAs.
ci: make published component packages public on ghcr
Antithesis pulls images anonymously; ghcr packages default to
private on first push. Adds a post-push step that PATCHes each
component package referenced in the testnet's docker-compose to
public visibility. Idempotent for already-public packages and a
no-op for packages that haven't been published yet (they'll be
flipped on the next run).
feat(asteria-player): spawn-ship works end-to-end against the cluster (#56)
Off-chain wiring that takes the asteria spawn flow from build-only
to accepted-on-chain in the antithesis local cluster, on top of
lambdasistemi/cardano-node-clients PR #77.

- `Game.hs` no longer emits an explicit `payTo` for the new
  PILOT NFT — the upstream `balanceTx` residual-MA folding drops
  it into the player's ADA change output, matching mainnet
  asteria's 3-output spawn shape.
- `PlayerMain.hs` calls the new `buildWith` with a 1.2x
  ExUnits margin (mirrors cardano-cli's submit-time overshoot)
  to absorb cardano-ledger version drift between the client and
  the cluster's cardano-node 10.7.1.
- `configurator.sh` writes Conway-mainnet `maxTxExUnits`
  (16.5 M mem, 10 B steps; block 62 M / 40 B) into
  `alonzo-genesis.json`.
- `docker-compose.yaml` mounts the configurator script for
  local iteration without rebuilding the configurator image, and
  bumps the asteria-player image tag from `:dev` (a local-only
  placeholder that the publish-images job can't resolve to a
  git ref) to `:asteria-spawn-v2` — the branch name. The
  publish-images script clones origin and resolves
  `asteria-spawn-v2` to the branch tip, builds and publishes
  the image at that tag.
- `apply-params.sh` strips traces via `--trace-level silent`
  to keep validator eval cost down.
- `cabal.project` pins cardano-node-clients to the merged main
  SHA `f578d6cf...`.

Verified locally: asteria_player_ship_spawn_attempted_1 →
ship_spawn_built_1 → ship_spawned_1 on a single attempt with no
failures, on the local docker-compose cluster.
fix(ci): publish-images fails loudly when an entry can't be built
Previously the script logged `Error: Tag '<tag>' not found in repo.
Skipping <name>.` and exited 0, so silent skips left CI green
while the antithesis testnet ran against stale registry images.

Now:
- Already-published `<name>:<tag>` images take a fast path and
  skip the build/git-resolve cleanly. This handles legacy
  components whose original commit has since been rebased away
  (e.g. sidecar:1362c5b, tracer-sidecar:ff408d6) — their image is
  still served from ghcr, so the testnet keeps working.
- Anything that is NOT in the registry MUST resolve its tag
  against the repo. If it can't, the entry is recorded and the
  job fails with a non-zero exit at the end with a clear summary
  of which images couldn't be built and why.

This makes it impossible to merge a PR that bumps a docker-compose
image tag without the corresponding git ref and component
directory landing in the same commit.
feat(asteria-player): spawn-ship succeeds end-to-end against the cluster (#56)
Three coupled changes that take the spawn flow from build-only to
accepted-on-chain in the antithesis local cluster.

`Game.hs` no longer emits an explicit `payTo` for the new PILOT
NFT — `balanceTx`'s residual-MA folding (lambdasistemi/cardano-node-clients
PR #77) drops the NFT into the player's ADA change output, matching
mainnet asteria's 3-output spawn shape.

`PlayerMain.hs` calls the new `buildWith` with
`boExUnitsMargin = 1.2x` to mirror cardano-cli's submit-time
overshoot. Without it the asteria spend script's actual cost on
the cluster's submit-time evaluator runs ~751 mem above what the
client-side `evalTxExUnits` reports (cardano-ledger version drift
between CHaP 2026-02-17 here and cardano-node 10.7.1's CHaP).

`configurator.sh` writes Conway-mainnet `maxTxExUnits` (16.5 M
mem, 10 B steps) into `alonzo-genesis.json` so the cluster's
budget matches what the validator was deployed against on
mainnet. `docker-compose.yaml` mounts the script for local
iteration without rebuilding the configurator image, and
`apply-params.sh` uses `--trace-level silent` so the validator's
runtime trace overhead is stripped.

Pin bumped to the merged main SHA of cardano-node-clients
(f578d6cf...).

Verified: asteria_player_ship_spawn_attempted_1 →
ship_spawn_built_1 → ship_spawned_1 on a single attempt with no
failures, on the local docker-compose cluster.
docs(skills): split AShard from Ewrap in debug-epoch-mismatch guide
After this branch's restructure, per-account reward application,
unspendable routing, and EWRAP-time registration filtering live in
AShard; only MIRs, refunds, and boundary close remain in Ewrap.
Update the Classify, Work Units, Source Files, and Instrumentation
tables so the bisection workflow points at the right work unit
(and module path) for each failure shape.

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>