Skip to content

v7.41.0

Choose a tag to compare

@github-actions github-actions released this 11 Sep 04:28
· 1089 commits to main since this release
62b6ff3

conexus 7.41.0: the agent ledger did not populate; fixed in 7.41.1

Affects: every install of conexus 7.41.0, local and cloud.

What happened: the background hook that records each subagent's start and report into the tuple space (the ledger/<session> subspace) failed silently on installed boxes. On cloud-mode installs it could not resolve the engine; on local installs it presented only a data-token credential that a local install never has. Each skip is logged under ~/.local/state/nexus/orchestration/<session>.tuple-projection.log.

What you saw: the orchestration skill's "wait for this agent's report" parked read never woke (the harness's own completion notification still fires; work still finishes). expectations_census reports SPACE_FALLBACK or SPACE_BLINDSPOT with the reason and falls back to the TSV ledger. nx tuple stats ledger/<session> reads zero.

Not affected: the tuple space itself, nx tuple, the eight tuple_* MCP tools, the mailbox and cross-instance request and ack, the doctor rows, the engine.

Fix: conexus 7.41.1. nx upgrade (or uv tool upgrade conexus), then /plugin in Claude Code and update conexus to 7.41.1, then restart the session. The interim plugin-only tag plugin-v7.41.0-1 carried the same fix but a same-version plugin tag does not refresh an installed plugin; it is superseded by 7.41.1. After updating, dispatch one agent and check nx tuple stats ledger/<your session id> reads two.

Tracking: nexus-0zsmg (cloud endpoint), nexus-g2lln (local credential), nexus-konsk (plugin-only channel delivery). Post-mortem lands with RDR-205's close.


Paired engine: engine-service-v0.1.114 (tagged on a2801df; deployed and
live before this client tag, all-additive on the wire). REQUIRED_ENGINE_VERSION
is (0, 1, 114).

RDR-205: tuple space client surface

  • HttpTupleStore over /v1/tuples (ten operations: out, rd, rdp, in,
    inp, ack, nack, registry, subspace_list, subspace_stats), typed
    errors, an 8 KB pre-send guard, and db.tuples on the T2 facade
    (nexus-em75s.9).
  • Eight tuple_* MCP tools, the nx tuple CLI verb, and three nx doctor rows, gated behind the tuple route's floor
    (_TUPLE_ROUTE_FIRST_ENGINE_VERSION, now (0, 1, 114)) so an older
    pinned engine reads as an informational skip, never a false FAIL
    (nexus-em75s.10, nexus-em75s.12).
  • Two async ledger-projection hooks (subagent-start-tuple-async.sh,
    subagent-stop-tuple-async.sh) post start/report tuples beside the
    existing blocking TSV hooks, over stdlib urllib.request with a
    tenant-scoped lease, never a bearer token on a subprocess argv
    (nexus-em75s.11).
  • expectations_census reads the ledger space first (nx tuple list --prefix ledger/), falls back to the TSV with a named
    SPACE_FALLBACK reason when the engine is unreachable, and reports
    projections that never ran; a zero-subspace read is SPACE_BLINDSPOT,
    never a silent "every session outside the window" (nexus-em75s.19,
    nexus-em75s.22).
  • The mailbox skill and a new orchestration paragraph: send by
    tuple_out with a sender-minted nonce, drain by tuple_in before any
    hand-back, dead-letter after three attempts, plus the
    instance-addressed form for cross-instance request/ack pairing
    (nexus-em75s.20, nexus-em75s.24, nexus-em75s.28, nexus-em75s.29).
  • The relay sweep's mailbox-scan arm: T2 findings survive an unrunnable
    mailbox scan, and the mailbox arm gets the same max_age_days grace
    as the T2 arm (nexus-em75s.30).

Paired engine: engine-service-v0.1.114

  • One new route family, /v1/tuples (RDR-205): out, rd, rdp,
    in, inp, ack, nack, registry, subspace_list,
    subspace_stats, backed by three new tables (nexus.tuples,
    nexus.tuple_claim_log, nexus.tuple_tenants) across seven
    Liquibase changesets, and a second scheduled sweep task. No existing
    route, request field, or response field changed shape -- all-additive,
    deployed and cloud-gated before this client tag (see
    docs/wire-contract-pending.md).

GH #1533: pdftext bound below mineru's breaking release

  • pdftext now travels as a real [project.dependencies] entry
    (bounded below 0.7.0) rather than only an override, so a bare uv tool install conexus sees the bound in Requires-Dist. nx doctor --check-mineru's real-parse probe synthesizes its own one-page
    formula PDF instead of relying on a fixture the published wheel never
    ships, so the check runs on any installed box, not only an editable
    checkout. The shakedown's MinerU verdict filter and the fresh-install
    MVV both widened to see the new parse line and assert the resolved
    pdftext on both the uv-tool and generation layers (nexus-gqrg0;
    Closes #1533).

Fixes

  • ensure_storage_supervisor marks the process-wide lease-evidence flag
    from its own ServiceRegistry.discover() call, not only from
    discover_lease() -- a fresh nx init --service install could lose
    the ladder-converge and plan-seed steps' first-ever resolution to a
    zero-wait fail-fast, landing with no builtin plan templates until nx plan reseed (nexus-jw44t).
  • The MCP entrypoint probe distinguishes a slow-but-alive server from a
    genuine hang: a crashed process still fails within a few hundred
    milliseconds, while a process that is alive and simply slow under
    load gets up to 4x the base timeout before being reported as hung.