Skip to content

Commit 2729848

Browse files
authored
Merge pull request #531 from OriginTrail/release/v10.0.0-rc.8
release: v10.0.0-rc.8
2 parents 143ce22 + 1be8f37 commit 2729848

20 files changed

Lines changed: 45 additions & 19 deletions

File tree

CHANGELOG.md

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,32 @@ All notable changes to the DKG V9 node are documented here. The format is based
66

77
---
88

9+
## [10.0.0-rc.8] - 2026-05-15
10+
11+
libp2p reachability hardening (capacity / observability / multi-reservation series), tag-triggered npm publishing, agent-to-agent debug chat, Node UI chat panel revamp, and a Base Sepolia 7-contract redeploy. **Testnet contract redeploy required**`chainResetMarker` bumped to `v10-profilestorage-paramstore-redeploy-2026-05-14` (already on `main` since #511); first boot on rc.8 wipes per-node chain-derived state for any operator still on the rc.6 marker. Hub at `0xC056e67Da4F51377Ad1B01f50F655fFdcCD809F6` and Token at `0x2A58BdD13176D85906D804cdbFFA0D9119282DC8` retain their addresses.
12+
13+
### Added
14+
- **libp2p reachability hardening PR1/3 — Core Node relay capacity + TTLs + operator knob** (PR #524, `packages/core/src/node.ts`, `packages/core/src/types.ts`, `packages/cli/src/config.ts`, `packages/agent/src/dkg-agent.ts`): Core Nodes now scale `circuitRelayServer` capacity by `RELAY_CAPACITY_MULTIPLIER` so a node advertising itself as a relay actually accepts the reservations it gets dialed for. New `DKGNodeConfig.relayServerCapacity` operator knob (validated by `validateRelayServerCapacity`) lets large-fanout operators scale `maxReservations` / `maxCircuits` / `maxOutboundStreams` / `maxInboundStreams` together; defaults stay safe for small operators. Reservation TTL extended to 2 h with `defaultDurationLimit` of 30 min so long-lived edges aren't churned on every refresh cycle.
15+
- **libp2p reachability hardening PR2/3 — relay observability** (PR #525, new `packages/core/src/relay-metrics-adapter.ts`, new `packages/core/src/relay-internal-shapes.ts`, `packages/core/src/node.ts`, `packages/node-ui/src/db.ts`, `packages/node-ui/src/api.ts`): `RelayMetricsAdapter` plugs into libp2p as a `Metrics` implementation and counts relay-server bytes by direction via `RELAY_V2_HOP_CODEC` / `RELAY_V2_STOP_CODEC` stream tracking (no more guessing from raw connection metadata). New `/api/relay/stats` endpoint surfaces `{ activeReservations, activeCircuits, bytesIn, bytesOut }`; values are persisted as `relay_*` columns on `metric_snapshots` for retention. Compatibility helpers (`readRelayReservations`, `readConnectionStreams`) validate libp2p internal shapes and return `null` on mismatch so the API reports a visible error rather than silently stale zeros if libp2p ever refactors. Pinned by `packages/core/test/relay-internal-shapes.test.ts` (9 cases).
16+
- **libp2p reachability hardening PR3/3 — edge multi-reservation tuning** (PR #526, `packages/core/src/node.ts`, `packages/core/test/relay.test.ts`): edge nodes can now hold multiple parallel relay reservations for redundancy via `DKGNodeConfig.relayReservationCount` (default 3, gated to edge nodes that actually have `relayPeers`). The relay watchdog enforces *per-relay* reservation presence when target > 1, with a per-tick forced-redial budget capped at `missingSlotsAtTickStart` so a single cycle can't burn through every relay. New canonical `usableRelayCandidates` pass deduplicates `relayPeers` by canonical peerId (handles mixed base58btc/base32 encodings), aggregates alternate transports for the same peer (`[relayA-tcp, relayA-ws]` → one `RelayTarget` with both addrs), drops self-references, and warns on malformed entries. AutoNAT gating + `/p2p-circuit` listener fallback now key off `usableRelayCandidates.length` so a node whose every configured relay is unusable falls back cleanly instead of half-configuring itself.
17+
- **Agent-to-agent debug chat** (PRs #510, #521, `packages/mcp-dkg/src/index.ts`, new `packages/agent/src/message-outbox.ts`, `packages/core/src/protocol-router.ts`): MCP exposes `dkg_send_message` / `dkg_check_inbox` / `dkg_get_chat_history` / `dkg_list_agents` so two agents on different nodes can exchange threaded messages with ACL enforcement (sender-on-allowlist, no rate-limit bypass). `MessageOutbox` retries silent-dropped invitee deliveries with per-key inflight guard against duplicate-delivery races; `ProtocolRouter.send` re-runs `peerResolver` per attempt so a stale handle from boot doesn't strand subsequent retries.
18+
- **Node UI chat panel UX/UI revamp** (PRs #503, #504, #505, #516, #528, #529, `packages/node-ui/src/components/chat/**`): full chat-panel rebuild — sticky header, custom Select for project switching, drag-and-drop file composer with chip rendering, markdown + syntax highlighting in assistant turns, full-width assistant bubbles, send-button states, hover-revealed timestamps, inline streaming caret, my-projects picker, and a 404-resilient markdown viewer for imported documents. Replaces the legacy chat surface end-to-end.
19+
- **Tag-triggered npm publishing** (PR #522, `.github/workflows/npm-publish.yml`, `.github/workflows/release.yml`): merging to `main` no longer publishes anything to npm. Publishing now fires only on signed annotated tags matching `v<major>.<minor>.<patch>` (e.g. `v10.0.0-rc.8`), and only when the tag is reachable from `main` or `v10-rc`, ssh- or gpg-signed, and matches every `package.json` version in the workspace. The `npm-publish` GitHub Environment requires a reviewer (5-minute wait, no self-approval) before any package is pushed. Replaces the previous continuous-publish-on-merge flow.
20+
21+
### Fixed
22+
- **`relayServerCapacity` validator silently accepted unsafe-integer values** (PR #530, `packages/core/src/node.ts`, `packages/core/test/relay-capacity.test.ts`): the validator used `Number.isInteger` which accepts values above `Number.MAX_SAFE_INTEGER` (e.g. `9007199254740993`); multiplying by `RELAY_CAPACITY_MULTIPLIER` then silently lost precision and corrupted the libp2p caps. Now uses `Number.isSafeInteger` and a new `MAX_RELAY_SERVER_CAPACITY` ceiling that ensures every derived cap also stays within the safe range. `deriveRelayCaps` got the same belt-and-braces check.
23+
- **Staking-V10: `_convertToNFT` left migrated TRAC stranded in `StakingStorage`** (PR #491, `packages/evm-module/contracts/StakingV10.sol`): the conviction-NFT conversion path read the migrated balance from `StakingStorage` but never transferred it onward to `ConvictionStakingStorage`, so the underlying TRAC was unrecoverable from either side post-conversion. Now transfers the balance in the same call before minting the NFT.
24+
- **Staking-V10: operator-fee lookup ignored historical epoch** (PR #493, `packages/evm-module/contracts/StakingV10.sol`): `_getEffectiveOperatorFee` resolved against the latest fee-change rather than the epoch the lookup was for, so reward calculations against past epochs used today's fee. Now binds the lookup to the requesting epoch's timestamp.
25+
- **Post-approval sync gap hid freshly-joined curated CGs** (PR #517, `packages/agent/src/dkg-agent.ts`): a window between approval-event arrival and `_meta` reconciliation left the just-joined CG invisible to the invitee until the next periodic sync. Approval handling now triggers an immediate targeted sync of the new CG.
26+
- **Curator reject-reason was hidden in `JoinProjectModal`** (PR #508, `packages/node-ui/src/components/.../JoinProjectModal.tsx`): the modal swallowed the `reason` field on `JOIN_REQUEST_REJECTED`, leaving operators with a generic "rejected" UI. Now surfaces the curator's explicit reason string.
27+
- **Axiom-4 trust upgrades** (PR #523): hardened trust-upgrade endpoint inputs, bounded the verify-collection timeout, fail-closed on non-quorum verify, and aligned devnet trust paths with the new gating. Companion devnet sections cover the regression surfaces.
28+
- **`npm-publish` job missed hidden `.publish-artifacts` upload** (PR #515, `.github/workflows/npm-publish.yml`): renamed to non-hidden `publish-artifacts` so `actions/upload-artifact` includes it; preceded #522 (tag-triggered publishing) and unblocked the new flow.
29+
30+
### Changed
31+
- **Base Sepolia (chainId 84532): 7 contracts redeployed off `main@7235e669`** (PR #511, `packages/evm-module/deployments/base_sepolia_v10_contracts.json`): refresh of the `Profile`/`ProfileStorage`/`ParameterStorage` family + the staking-V10 contracts that needed the #491 / #493 fixes deployed. New addresses are committed to `base_sepolia_v10_contracts.json`; agents discover them via `Hub.getContractAddress(...)` at runtime so no `network/testnet.json` edit was needed beyond the `chainResetMarker` bump (`v10-rc6-pca-author-attestation-2026-05-10``v10-profilestorage-paramstore-redeploy-2026-05-14`). Hub + Token addresses preserved.
32+
33+
---
34+
935
## [10.0.0-rc.7] - 2026-05-13
1036

1137
RFC 07 in-process `PeerResolver` consolidation, Relay Registry tri-state on-chain semantics, PCA wiring at registration, and full invite/join e2e coverage in the devnet smoke suite. **No testnet contract redeploy**`chainResetMarker` unchanged from rc.6 (`v10-rc6-pca-author-attestation-2026-05-10`); rc.7 is a node-only update over the existing on-chain world.

demo/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@origintrail-official/dkg-demo",
3-
"version": "10.0.0-rc.7",
3+
"version": "10.0.0-rc.8",
44
"private": true,
55
"type": "module",
66
"dependencies": {

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "dkg-v10",
3-
"version": "10.0.0-rc.7",
3+
"version": "10.0.0-rc.8",
44
"private": true,
55
"packageManager": "pnpm@10.28.1",
66
"dkgBuild": {

packages/adapter-elizaos/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@origintrail-official/dkg-adapter-elizaos",
3-
"version": "10.0.0-rc.7",
3+
"version": "10.0.0-rc.8",
44
"description": "ElizaOS plugin adapter \u2014 turns any ElizaOS agent into a DKG V10 node",
55
"type": "module",
66
"main": "dist/index.js",

packages/adapter-hermes/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@origintrail-official/dkg-adapter-hermes",
3-
"version": "10.0.0-rc.7",
3+
"version": "10.0.0-rc.8",
44
"description": "Hermes Agent adapter \u2014 connects Hermes AI agents to a DKG V10 node for verifiable shared memory",
55
"type": "module",
66
"main": "dist/index.js",

packages/adapter-openclaw/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@origintrail-official/dkg-adapter-openclaw",
3-
"version": "10.0.0-rc.7",
3+
"version": "10.0.0-rc.8",
44
"description": "OpenClaw plugin adapter for connecting a DKG V10 node and chat bridge to an OpenClaw agent",
55
"type": "module",
66
"main": "dist/index.js",

packages/agent/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@origintrail-official/dkg-agent",
3-
"version": "10.0.0-rc.7",
3+
"version": "10.0.0-rc.8",
44
"type": "module",
55
"main": "dist/index.js",
66
"types": "dist/index.d.ts",

packages/chain/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@origintrail-official/dkg-chain",
3-
"version": "10.0.0-rc.7",
3+
"version": "10.0.0-rc.8",
44
"type": "module",
55
"main": "dist/index.js",
66
"types": "dist/index.d.ts",

packages/cli/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@origintrail-official/dkg",
3-
"version": "10.0.0-rc.7",
3+
"version": "10.0.0-rc.8",
44
"type": "module",
55
"main": "dist/cli.js",
66
"bin": {

packages/core/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@origintrail-official/dkg-core",
3-
"version": "10.0.0-rc.7",
3+
"version": "10.0.0-rc.8",
44
"type": "module",
55
"main": "dist/index.js",
66
"types": "dist/index.d.ts",

0 commit comments

Comments
 (0)