Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
252 commits
Select commit Hold shift + click to select a range
04700e7
fix(cli/daemon): bound the supervisor liveness watcher's shutdown disarm
branarakic May 26, 2026
9bd11a7
fix(cli/daemon): partial-promote ambiguity when post-promote bookkeep…
branarakic May 26, 2026
226fdfc
fix(cli): migrate-to-npm probes both DKG homes for live daemons
branarakic May 26, 2026
5fd0bd9
feat: add multi-rpc failover
May 26, 2026
0a887b3
fix(cli/daemon): NAT-status first event does not lock in a private ve…
branarakic May 26, 2026
727c06a
fix(core): cache stopSignal once at protocol-router handler entry
branarakic May 26, 2026
827fd86
fix(chain): unit config glob + bigint-safe error serialization
branarakic May 26, 2026
02c7776
fix: preserve reverted receipt failures in rpc failover
May 26, 2026
9f4684c
fix: sanitize public rpc status responses
May 26, 2026
6cda46f
fix(node-ui): drop FTS5 log index that bloated node-ui.db to 9 GB
branarakic May 26, 2026
81c4782
fix: address rc11 follow-up review gaps
May 26, 2026
f73b651
feat(chain): generalize Hub rotation auto-recovery to all boot-bound …
May 26, 2026
dd8a404
fix(chain): clear publish preflight cache on hub rotation
May 26, 2026
27a3e6e
fix(node-ui): retry vacuum on large sqlite freelist
May 26, 2026
ec5e490
fix(chain): align verifyACKIdentity with on-chain RFC-001 ACK signer …
May 26, 2026
f44669d
feat(publisher): structured ACK rejection reasons (key/stake/RPC)
May 26, 2026
e9ed06a
test(publisher): confirm private subtraction fixtures
May 26, 2026
4726443
test(publisher): confirm private subtraction fixtures
May 26, 2026
e57da07
test(publisher): confirm private subtraction fixtures
May 26, 2026
899e952
test(publisher): confirm private subtraction fixtures
May 26, 2026
7638b09
test(chain): align failover helper fixtures
May 26, 2026
0fc5547
fix(core): decode 0x-prefixed base64url keys
May 26, 2026
ce6c53a
fix(core): decode 0x-prefixed base64url keys
May 26, 2026
39781a5
fix(core): decode 0x-prefixed base64url keys
May 26, 2026
e48414b
fix(core): decode 0x-prefixed base64url keys
May 26, 2026
5263d72
feat(core/cli): expose libp2p tunables for small / sparse networks
May 26, 2026
75a437f
fix(chain): harden rpc failover edge cases
May 26, 2026
2a75781
fix(cli): close rc11 recovery edge cases
May 26, 2026
09af665
fix(node-ui): preserve logs compatibility
May 26, 2026
22dd650
fix(chain): close hub rotation listener gaps
May 26, 2026
499c60e
feat(agent/core): agents Context Graph as distributed phonebook
May 26, 2026
54c1be3
fix(core): address Codex review on PR #698
May 26, 2026
94903f1
docs(network): clarify peer resolver tunable ownership
May 26, 2026
1c99a88
fix(agent/core): address Codex review on PR #700
May 26, 2026
81a30ec
fix(core): address Codex review of PR #698 round 2
May 26, 2026
5c3a77c
fix(agent/core): address Codex review of PR #700 round 2
May 26, 2026
3e7a907
fix(core/cli/agent): address Codex review of PR #698 round 3
May 26, 2026
1d9842a
fix(agent/core): address Codex review of PR #700 round 3
May 26, 2026
bdd91e7
fix(agent): parallelize SWM sender-key fanout (Promise.allSettled)
May 26, 2026
7f42d0c
fix(agent): soft-success + pending queue for missing-peerId sender-ke…
May 26, 2026
719ec13
Merge PR #687: fix/node-ui-drop-logs-fts into release/rc.12
May 26, 2026
ee6589a
Merge PR #685: fix/rc11-followup-codex-critical into release/rc.12
May 26, 2026
25223b1
Merge PR #711: fix/v10-ack-gate-diagnostics into release/rc.12
May 26, 2026
9cc0669
Merge PR #689: feat/chain-hub-rotation-auto-recovery into release/rc.12
May 26, 2026
20df356
fix(node-ui): honest CG-create progress copy when registration is opt…
branarakic May 26, 2026
056ee95
Merge PR #698: feat/chain-network-libp2p-tunables into release/rc.12
May 26, 2026
f1a1312
Merge PR #684: feat/multi-rpc-failover into release/rc.12
May 26, 2026
f75b171
Merge PR #700: feat/chain-agents-cg-phonebook into release/rc.12
May 26, 2026
1b6ba6e
docs(spec): LU-11 Chunked Ciphertext Commitment — design delta
May 24, 2026
fda7e0f
feat(core): LU-11 commit 2 — index-preserving ciphertext-chunk Merkle
May 26, 2026
935c69d
feat(core): LU-11 commit 3 — chunked AEAD with deterministic per-chun…
May 26, 2026
d03ea0e
feat(core): LU-11 commit 4 — proto + protocol-id surface for chunked …
May 26, 2026
aa7d2c4
feat(rfc39/lu11): publisher chunked emit path (commit 5/8 of PR-A)
May 26, 2026
62f6aca
feat(rfc39/lu11): core verify + per-chunk persist (commit 6/8 of PR-A)
May 26, 2026
966e7c8
feat(rfc39/lu11): GetCiphertextChunk sync verb (commit 7/8 of PR-A)
May 26, 2026
97dd9c7
feat(rfc39/lu11): handshake hardening (commit 8/8 of PR-A)
May 26, 2026
fbea09c
fix(rfc39/lu11): devnet-validated SWM ingest + V2 ACK wiring (PR-A de…
May 26, 2026
1dafe99
feat(rfc39): curated random sampling prover + re-enable curated CG el…
May 26, 2026
bf63a9c
test(rfc39): devnet-validated GRAPH ?g extractor + comprehensive e2e …
May 26, 2026
d1347d7
test/scripts: harden rc.12 devnet test suite from comprehensive RC va…
branarakic May 27, 2026
ac9eb62
fix(chain): enforce 1n on-chain TRAC allowance minimum on V10 publish…
May 27, 2026
28c7dcd
docs(skill/importer): document Rule 4 root-entity uniqueness + blank-…
May 27, 2026
d41e05b
feat(scripts): testnet publish-stress + Random Sampling observability…
May 27, 2026
8f848f3
test/scripts: read auth.token from disk; pre-flight all N nodes
branarakic May 27, 2026
a0370be
test/scripts: address PR #719 review feedback (8 bug fixes)
branarakic May 27, 2026
72894ff
Merge PR #719: rc12-comprehensive-devnet into release/rc.12
branarakic May 27, 2026
847beb2
feat(rfc39): prover auto-backfills missing ciphertext chunks via the …
May 27, 2026
d756d13
Merge PR #715: LU-11 chunked ciphertext commitment (substrate of RFC-…
branarakic May 27, 2026
0e48845
Merge PR #717: RFC-39 curated random sampling prover + auto-backfill …
branarakic May 27, 2026
8ec9584
Fix assertion promote publish guidance
May 27, 2026
7d2afb4
feat(chain): configurable TRAC auto-approve policy (per-publish/reple…
May 27, 2026
17142e7
feat: project EPCIS event time zone offset in queries
May 27, 2026
67072bc
fix(rfc39): address Codex review on PR #715 (3 bugs)
May 27, 2026
60e16e2
Merge pull request #727 from OriginTrail/fix/rfc39-codex-review-fixes
branarakic May 27, 2026
65417c6
Merge PR #720: chain TRAC auto-approve 1n floor + configurable allowa…
branarakic May 27, 2026
4a452f1
Merge PR #721: skill/importer Rule 4 root-entity recipe into release/…
branarakic May 27, 2026
04b5793
Merge PR #722: testnet publish-stress + RS observability scripts into…
branarakic May 27, 2026
87a6591
fix: preserve EPCIS event time zone offset
May 27, 2026
fb3a528
fix(rfc39): address Codex review on PR #727 (3 follow-up bugs)
May 27, 2026
5ca94aa
Merge pull request #729 from OriginTrail/fix/rfc39-codex-review-fixes…
branarakic May 27, 2026
a02d124
fix: reject scoped query dataset clauses
May 27, 2026
b2a4139
chore(deps): bump pnpm overrides to close 22 critical/high Dependabot…
branarakic May 27, 2026
ee70a0c
fix: reject forbidden scoped graph references
May 27, 2026
9ecd6ad
Merge pull request #726 from OriginTrail/codex/fix-assertion-promote-…
zsculac May 27, 2026
fd7ec7f
Merge pull request #731 from OriginTrail/orch/epcis-event-time-zone-o…
zsculac May 27, 2026
12a366b
fix(scripts/docs): address Codex review on PR #721 + PR #722 (6 follo…
branarakic May 27, 2026
f005839
chore(deps): scope #730 overrides to same-major bounds (Codex review)
May 27, 2026
e670d02
Merge pull request #730 from OriginTrail/chore/rc12-security-bumps
branarakic May 27, 2026
ef007ed
Map scoped query violations to HTTP 400
May 27, 2026
2264f7e
Merge pull request #733 from OriginTrail/fix/rc12-codex-followups
branarakic May 27, 2026
021b09c
fix: constrain scoped graph variables
May 27, 2026
c67e818
test: cover scoped graph variables with shared memory
May 27, 2026
a0601b5
test: cover graph suffix scoped graph variables
May 27, 2026
d4b2612
test: cover subgraph scoped graph variables
May 27, 2026
995dbba
chore(deps): close remaining 38 medium + 3 low Dependabot alerts via …
branarakic May 27, 2026
03c6add
test(chain): adapter-level coverage for V10 publish/update approval g…
branarakic May 27, 2026
53f0647
Merge pull request #734 from OriginTrail/chore/rc12-security-medium-low
branarakic May 27, 2026
b30f48b
fix: reject nested scoped graph-variable subqueries
May 27, 2026
cdfea02
chore: merge main into release/rc.12 (3 node-ui polish fixes)
May 27, 2026
447e0c8
Merge pull request #736 from OriginTrail/merge/main-into-rc.12
branarakic May 27, 2026
f099f98
fix: constrain unicode graph variables
May 27, 2026
56d1992
fix(agent/discovery): populate `agentAddress` on findAgentByPeerId so…
branarakic May 27, 2026
3db03fc
test(publisher): adapter-level coverage for V2 chunked StorageACK han…
branarakic May 27, 2026
73b24cf
test(agent): adapter-level coverage for handleGetCiphertextChunk resp…
branarakic May 27, 2026
75e1058
test(agent): pin #700 publishProfile mutex serialization + 1-of-N par…
branarakic May 27, 2026
d02f61e
fix(rc.12): address branarakic review on #716 (3 CI-blockers)
May 27, 2026
000bfc2
Merge pull request #741 from OriginTrail/fix/rc12-branarakic-review-p…
branarakic May 27, 2026
e454e73
test(agent): pin LU-11 chunk-catchup initiator + gossip ingester wiring
branarakic May 27, 2026
aaee426
fix: constrain outer shorthand graph variables
May 27, 2026
0026def
test(agent): pin LU-11 random-sampling prover backfill orchestration
branarakic May 27, 2026
6b594aa
Merge pull request #737 from OriginTrail/fix/rc12-700-pending-drain-bug
branarakic May 27, 2026
ee49dd2
test(agent): pin #711 ACK provider wiring (rpc-error translation, leg…
branarakic May 27, 2026
d4fbbc2
test: cover verified view graph variables
May 27, 2026
574f2c1
fix: constrain verified view graph variables
May 27, 2026
ef97e43
test: cover shared-working view graph variables
May 27, 2026
4f7c2b4
fix: constrain shared-working view graph variables
May 27, 2026
2550028
test: cover working-memory view graph variables
May 27, 2026
4cfab83
test(agent): fix VerifyACKIdentityResult type import (Codex review)
branarakic May 27, 2026
be7bf9a
fix: constrain working-memory view graph variables
May 27, 2026
1304f9e
test: cover mintrust graph variable fail closed
May 27, 2026
87a5b6e
test(agent): address Codex review on PR #743 backfill orchestration t…
branarakic May 27, 2026
24a6a24
test(agent): address Codex review on PR #742 catchup wiring tests
branarakic May 27, 2026
ee61ef2
test(agent): address Codex review on PR #740 mutex + per-agent tests
branarakic May 27, 2026
2939763
test(agent): address Codex review on PR #739 responder tests
branarakic May 27, 2026
d2b73a8
fix: reject token-adjacent remote graph clauses
May 27, 2026
4f84d9d
fix: reject token-adjacent remote from clauses
May 27, 2026
6eea069
docs: document constrained local graph queries
May 27, 2026
6ff2651
refactor: share remote boundary test helper
May 27, 2026
8f76ad6
test(publisher): address Codex review on PR #738 V2 ACK tests
branarakic May 27, 2026
32a2f39
test(agent): stabilise per-agent multi-key test via payload decoding
branarakic May 27, 2026
022fdf7
test(agent): strengthen drop-semantics assertions on PR #742
branarakic May 27, 2026
e87ac15
test(agent): stop swallowing teardown errors + validate wire request
branarakic May 27, 2026
05cec46
docs(rfc-41): bundle A1 — README Quick Start updates, install.sh depr…
May 27, 2026
cf9bfb2
test(agent): expand aggregation coverage + reuse protocol constant
branarakic May 27, 2026
7d65f70
feat(cli)(rfc-41): bundle A2 — dkg doctor, SKILL.md operator surface …
May 27, 2026
21bc64f
feat(daemon, ci)(rfc-41): bundle A3 — build-info.json + installMode t…
May 27, 2026
0b1d853
test(publisher): use NUMERIC_CG_ID_B literal instead of '42'+1n
branarakic May 27, 2026
20ff3a4
test(agent): pin per-chunk request pattern, loosen reason text
branarakic May 27, 2026
298558f
test(cli)(rfc-41): bundle A — dkg doctor unit tests (37 cases, 6 chec…
May 27, 2026
2b64faa
Merge pull request #744 from OriginTrail/test/rc12-711-ack-provider-w…
branarakic May 27, 2026
574e8aa
Merge pull request #740 from OriginTrail/test/rc12-700-mutex-and-aggr…
branarakic May 27, 2026
b788ecb
Merge pull request #738 from OriginTrail/test/rc12-lu11-v2-ack-handler
branarakic May 27, 2026
38045de
Merge pull request #739 from OriginTrail/test/rc12-lu11-get-chunk-res…
branarakic May 27, 2026
87b4bf7
Merge pull request #742 from OriginTrail/test/rc12-lu11-fetch-and-ingest
branarakic May 27, 2026
97d8ddc
Merge pull request #743 from OriginTrail/test/rc12-lu11-backfill-orch…
branarakic May 27, 2026
e4d05f0
feat(cli, migration)(rfc-41): bundle B1a — Edge slot suppression + ro…
May 27, 2026
aa6e79c
test(devnet/agent-provenance): pin gas-only publisher EOA scenario fo…
May 27, 2026
c2ea967
feat(cli, daemon/auto-update, lifecycle)(rfc-41): bundle B1b — Edge u…
May 27, 2026
7560fa3
feat(cli, daemon/plugin-loader, state)(rfc-41): bundle B1c+B1d+B1e — …
May 27, 2026
1e7eb31
fix: parse scoped dataset and graph clauses token-wise
May 27, 2026
fa93357
feat(cli, daemon)(rfc-41): bundle B PR 5 — git-based update hard refu…
May 27, 2026
b047405
test: allow from prefix in scoped queries
May 27, 2026
fc86251
fix: reject unvalidated scoped graph targets
May 27, 2026
8d8b1fe
chore(cli, docs)(rfc-41): bundle B PR 6 — delete install.sh, dkg migr…
May 27, 2026
d62228d
chore: merge main into release/rc.12 (rc.11 node-ui bug fixes from #699)
May 27, 2026
9a96036
fix: ignore graph prefixed names in scoped scanner
May 27, 2026
7bba7bb
fix: reject nested graph variable rewrites
May 27, 2026
cb16401
test(cli)(rfc-41): bundle B — unit tests for Edge first-start migrati…
May 27, 2026
cfd07fb
fix: respect hyphenated graph query prefixes
May 27, 2026
376e742
fix(node-ui): codex review follow-up on rc.11 bug-fix batch (#752)
May 27, 2026
470638c
fix: reject mixed graph variable default patterns
May 27, 2026
cd68fa6
fix(agent): always plumb on-chain CG id into finalization gossip
branarakic May 27, 2026
24f1167
Merge pull request #758 from OriginTrail/fix/finalization-gossip-targ…
branarakic May 27, 2026
749b7b7
Merge pull request #752 from OriginTrail/merge/main-into-rc.12
branarakic May 27, 2026
a27970b
fix(query): handle compact and prefixed GRAPH clauses
May 27, 2026
936086b
chore: merge main into release/rc.12 (RPC perf optimizations from #732)
branarakic May 27, 2026
4a77bb8
Merge pull request #759 from OriginTrail/chore/merge-main-pr732-rpc-perf
branarakic May 27, 2026
160c1bf
Merge pull request #750 from OriginTrail/feat/rfc-41-bundle-a-docs-sk…
branarakic May 27, 2026
224d6dc
Merge pull request #753 from OriginTrail/feat/rfc-41-bundle-b-edge-sl…
branarakic May 27, 2026
d841ad1
Merge pull request #755 from OriginTrail/fix/rc11-codex-followup-pr752
branarakic May 27, 2026
7e7f757
Merge pull request #735 from OriginTrail/test/rc12-v10-approve-adapter
branarakic May 27, 2026
3473249
Merge pull request #751 from OriginTrail/test/rc12-pca-gas-only-publi…
branarakic May 27, 2026
903bc3a
test(devnet)(rfc-41): Bundle B §6.2 — Edge npm-only update + rollback…
May 27, 2026
d40dea8
Merge pull request #749 from OriginTrail/orch/query-scoping-view-isol…
branarakic May 27, 2026
5ef88c4
fix(devnet)(rfc-41): address Codex Review feedback on PR #762
May 27, 2026
84b11cf
fix(agent,cli): receiver defensive cg-id lookup + RS backfill for pre…
May 27, 2026
0017371
fix(devnet)(rfc-41): stream verdaccio metadata JSON via stdin (Codex …
May 27, 2026
56234a5
fix(devnet)(rfc-41): pin verdaccio version (Codex round 3)
May 27, 2026
7d5674c
fix(query): validate scoped query edge cases in devnet
May 27, 2026
855b599
fix(cli): address Codex review on PR #763 — per-KC granularity + corr…
May 27, 2026
c5e0347
Merge pull request #764 from OriginTrail/orch/query-scoping-view-isol…
zsculac May 27, 2026
327536c
fix(cli,scripts): address Codex round 2 on PR #763 — operator UX + te…
May 27, 2026
1c169eb
perf(node-ui): coalesce concurrent identical /api/query POSTs
May 27, 2026
8e19c44
Merge pull request #763 from OriginTrail/fix/rs-receiver-defensive-cg…
branarakic May 27, 2026
8340538
feat(storage,cli): add Blazegraph + SPARQL-HTTP external triple-store…
May 27, 2026
c535a87
fix: address pr716 review follow-ups
May 27, 2026
d75bdeb
fix: address PR 766 review feedback
May 27, 2026
4bb4749
chore: merge main into release/rc.12 (#745 CG Overview S2, #754 SWM p…
May 27, 2026
a576d28
chore: merge PR #762 (test/rfc-41-edge-update-devnet-suite) into inte…
May 27, 2026
171794c
chore: merge PR #765 (fix/node-ui-query-dedup) into integration
May 27, 2026
400b5a6
chore: merge PR #766 (feat/rfc120-blazegraph-support) into integration
May 27, 2026
fb86f6b
chore: merge PR #767 (fix/pr716-review-followups) into integration
May 27, 2026
e5e825a
fix(cli): satisfy doctor config cast
May 27, 2026
ca90050
fix(evm): annotate random sampling slither findings
May 27, 2026
9f9d170
fix(cli): strict-TS double-cast for doctor config overlay
branarakic May 27, 2026
0871576
fix(774): low/med follow-ups — F1 (CLI UX), F2 (gossip timing), F7 (t…
branarakic May 27, 2026
787a8ec
fix(devnet)(swm-ownership-restart): guard empty curl status code (clo…
branarakic May 27, 2026
f771aa8
fix(query): allow same-CG _meta on explicit-IRI scoped queries
branarakic May 27, 2026
de9b998
fix(query): privacy fence on SWM-only route + correct sub-graph meta …
branarakic May 27, 2026
79c551b
fix(774): enforce gossip poll budget + add F1 mismatch regression cov…
branarakic May 27, 2026
ac0f3c8
fix(devnet)(swm-ownership-restart): canonicalize transport-failure st…
branarakic May 27, 2026
f15025d
fix(devnet)(swm-ownership-restart): errexit-safe transport-failure ca…
branarakic May 28, 2026
ac6e9a2
fix(query): widen graph-variable allow set to match explicit-IRI allo…
branarakic May 28, 2026
65301e5
fix(774): refactor F1 regression test + correct error wording + sync …
branarakic May 28, 2026
924b27f
fix(query): dynamically enumerate same-CG sub-graph meta for GRAPH ?g…
branarakic May 28, 2026
2e50825
fix(query): structural sub-graph match + honor subGraphName route (Co…
branarakic May 28, 2026
9ae7385
fix(devnet)(rfc38-unclean-restart): batch writes to fit MAX_BODY_BYTE…
branarakic May 28, 2026
5de1024
fix(query): skip dynamic enumeration for wallet-scoped cgIds (Codex r…
branarakic May 28, 2026
2b09a9b
Merge PR #775: cli.ts strict-TS double-cast for doctor config overlay
branarakic May 28, 2026
d8b1d86
Merge PR #778: errexit-safe transport-failure capture in swm-ownershi…
branarakic May 28, 2026
ec0a267
fix(query): drop unsafe dynamic sub-graph enumeration; track UI hook …
branarakic May 28, 2026
fb7f4ec
Merge PR #777: #774 follow-ups — F1 CLI UX, F2 gossip timing, F7 test…
branarakic May 28, 2026
b901ed2
Merge PR #776: allow same-CG _meta + _shared_memory_meta on explicit-…
branarakic May 28, 2026
08f866d
fix(agent): mirror publisher's dual-write on recipient finalization
branarakic May 28, 2026
dd276ea
fix(agent): gate recipient root dual-write on same-graph wire signal …
branarakic May 28, 2026
88ab6cc
fix(agent): atomic dual-write + unit coverage on dual-write branches …
branarakic May 28, 2026
2212b1b
fix(agent): rolling-upgrade fallback + meta dual-write (Codex review r3)
branarakic May 28, 2026
854f0c5
fix(core,agent): proto3 bool presence + same-graph e2e (Codex review r4)
branarakic May 28, 2026
93888ab
fix(core): tristate sentinel for keepRootCopyOnLabel; revert decode s…
branarakic May 28, 2026
0473858
fix(agent,core): root meta tentative cleanup + tristate test coverage…
branarakic May 28, 2026
8b817e3
fix(agent): drop legacy-publisher rolling-upgrade fallback (Codex r5b)
branarakic May 28, 2026
3653c63
fix(core): retire tag 15, move keepRootCopyOnLabel tristate to tag 16…
branarakic May 28, 2026
abf02ba
Merge PR #779: gossip recipient dual-write parity (#774 followup)
branarakic May 28, 2026
4c58534
chore(evm-module): V10 hardening pass — CEI, reentrancy guard, input …
branarakic May 28, 2026
1be67db
fix(cli,scripts): Blazegraph namespace creation fails with HTTP 500
Niks988 May 28, 2026
06e8508
Merge pull request #782 from OriginTrail/fix/blazegraph-namespace-xml
Niks988 May 28, 2026
4980bf7
chore(evm-module): address PR #781 review feedback
branarakic May 28, 2026
e8187d0
feat(evm-module): V8→V10 migration conviction credit (60d)
branarakic May 28, 2026
d1661ad
chore(evm-module): PCA discount-rounding floor + op-wallet validation…
branarakic May 28, 2026
4a8f996
chore(evm-module): operator scripts + runbook for V8→V10 credit rollout
branarakic May 28, 2026
7be7560
test(evm-module): pin update(...) reentry surface (T-HARDEN.4)
branarakic May 28, 2026
7b27b8d
fix(agent,storage): prevent Blazegraph UTFDataFormatException from ov…
Niks988 May 28, 2026
5f1b2b4
fix(cli): improve Blazegraph store selection UX in dkg init
Niks988 May 28, 2026
93669a6
Merge pull request #791 from OriginTrail/fix/cli-blazegraph-prompt-ux
Niks988 May 28, 2026
e73e1c2
fix(publisher,epcis,query): flatten nested SPARQL UNIONs for Blazegra…
Niks988 May 28, 2026
56228a8
fix(storage): compute actual MUTF-8 size and throw on oversized literals
Niks988 May 28, 2026
2701d10
chore(chain,core): floor V10 publish/update tokenAmount to 1n off-chain
branarakic May 28, 2026
a9184f7
fix(query,epcis): eliminate scope leak and variable collision in Blaz…
Niks988 May 28, 2026
a5e45b5
chore(evm-module): address PR #785 review feedback
branarakic May 28, 2026
20ca0ed
Merge origin/main into release/rc.12
branarakic May 28, 2026
88b7703
fix(query,epcis): form-aware multi-graph UNION fallback + EPCIS VALUE…
branarakic May 28, 2026
431e969
Merge pull request #789 from OriginTrail/fix/blazegraph-oversized-lit…
Niks988 May 29, 2026
c069080
Merge PR #781: V10 EVM hardening pass (CEI, reentrancy, validation)
branarakic May 29, 2026
b151bb5
Merge PR #785: V8→V10 migration conviction credit
branarakic May 29, 2026
00521f4
docs(evm-module): fix V8-migration runbook redeploy gap (#785 follow-…
branarakic May 29, 2026
6e53c1b
fix(query): relax over-strict SPARQL PREFIX validation (#764 follow-u…
branarakic May 29, 2026
eca5760
fix(cli): store-wizard follow-ups from #791 review (red tests + sparq…
branarakic May 29, 2026
23a1baa
fix(cli): gate doctor 'safe to delete releases/' advisory (#750 follo…
branarakic May 29, 2026
ec59cc3
infra: add mainnet network configs and enable syslog telemetry
Niks988 May 29, 2026
232ee25
Fill mainnet network config placeholders
Jun 19, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
72 changes: 72 additions & 0 deletions .github/workflows/npm-publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -354,6 +354,78 @@ jobs:
echo "EXTRA_TAGS=${EXTRA_TAGS}" >> "$GITHUB_OUTPUT"
echo "Resolved dist-tags: ${NPM_TAG} ${EXTRA_TAGS:++ $EXTRA_TAGS} for ${TAG}"

- name: Generate build-info.json for published packages (RFC-41 §4.9)
# CI writes `build-info.json` into each public package root
# before `pnpm pack` runs, so the tarball — and therefore
# the installed npm package — carries the build's commit
# SHA + ISO timestamp + dist-tag + CI run id.
#
# The daemon's `loadBuildInfo()` (packages/cli/src/daemon/manifest.ts)
# reads this file at startup. `/api/status` exposes it as
# `{commit, commitShort, buildTime, distTag}`. `dkg doctor`'s
# §4.7.0 state summary surfaces it alongside the rest of the
# install context. Pre-release dist-tag testing becomes
# auditable: operators see exactly which commit they're
# running, not just a semver tag that may have multiple
# sequential builds.
#
# `files` field on each package.json must include
# `build-info.json` for it to be picked up by pnpm pack
# (cli has been updated; other public packages will be
# added on a follow-up if they also serve build-info via
# an HTTP route).
env:
GITHUB_SHA: ${{ github.sha }}
GITHUB_RUN_ID: ${{ github.run_id }}
NPM_TAG: ${{ steps.dist-tag.outputs.NPM_TAG }}
TAG_NAME: ${{ github.ref_name }}
run: |
set -euo pipefail
VER="${TAG_NAME#v}"
COMMIT="${GITHUB_SHA}"
COMMIT_SHORT="${COMMIT:0:8}"
BUILD_TIME="$(date -u +"%Y-%m-%dT%H:%M:%SZ")"
CI_RUN="${GITHUB_RUN_ID}"
DIST_TAG="${NPM_TAG}"
echo "build-info.json fields:"
echo " version = ${VER}"
echo " commit = ${COMMIT}"
echo " commitShort= ${COMMIT_SHORT}"
echo " buildTime = ${BUILD_TIME}"
echo " distTag = ${DIST_TAG}"
echo " ciRun = ${CI_RUN}"
node -e "
const fs = require('fs');
const path = require('path');
const payload = {
version: '${VER}',
commit: '${COMMIT}',
commitShort: '${COMMIT_SHORT}',
buildTime: '${BUILD_TIME}',
distTag: '${DIST_TAG}',
ciRun: '${CI_RUN}',
};
const pkgsDir = path.join(process.cwd(), 'packages');
for (const dir of fs.readdirSync(pkgsDir)) {
const pkgPath = path.join(pkgsDir, dir, 'package.json');
if (!fs.existsSync(pkgPath)) continue;
const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf-8'));
if (pkg.private) continue;
// Only write build-info.json into packages whose 'files'
// field explicitly includes it. Other packages would
// accept the file on disk during pack-time but the
// tarball pruning step (npm's standard files-list
// behaviour) would silently drop it. Explicit gating
// keeps the file's presence on a published tarball
// a deterministic per-package choice.
const files = Array.isArray(pkg.files) ? pkg.files : null;
if (files && !files.includes('build-info.json')) continue;
const outPath = path.join(pkgsDir, dir, 'build-info.json');
fs.writeFileSync(outPath, JSON.stringify(payload, null, 2) + '\n');
console.log(' wrote ' + outPath);
}
"

- name: Pack public packages into tarballs
# `pnpm pack` runs the same prepack/prepare lifecycle hooks
# `pnpm publish` would, but EMITS A TARBALL instead of pushing
Expand Down
14 changes: 14 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,20 @@ All notable changes to the DKG V9 node are documented here. The format is based

## [Unreleased]

### Changed — V10 EVM module hardening pass

Consistency and defense-in-depth refinements across the V10 EVM-module contracts. No behaviour change for valid callers.

- **CEI ordering on `DKGStakingConvictionNFT.withdraw`.** The receipt NFT is now burned before `StakingV10.withdraw` drives the CSS teardown + TRAC payout. `StakingV10.withdraw` gates on the CSS position (`pos.identityId == 0`), not NFT existence, so the CSS teardown is unaffected.
- **`nonReentrant` perimeter on KAV10 entrypoints.** `publish` / `update` / `extendKnowledgeCollectionLifetime` now carry OZ `ReentrancyGuard.nonReentrant` as a defense-in-depth perimeter against the ERC-1155 receiver-hook callback path. ~50 gas/call overhead. KAV10 version: `10.1.0` → `10.1.1`.
- **Strict-positive `tokenAmount` floor in KAV10 `_validateTokenAmount` AND post-discount floor in `PublishingConviction.coverPublishingCost`.** Both branches of the publish flow now charge a non-zero economic cost regardless of input rounding: direct-spend reverts `InvalidTokenAmount(1, 0)` on `tokenAmount == 0`; the conviction (PCA) branch inflates a truncated `discountedCost == 0` to `1` wei TRAC when `baseCost > 0` so the active-sink reward distribution + `windowSpent` accounting always fire. **BREAKING for any caller that previously relied on dust-CG zero-amount publishes** — the on-chain revert is the floor of truth; off-chain callers must encode `tokenAmount >= 1`. PublishingConviction version: `1.0.0` → `1.0.1`.
- **Single source of truth for op-wallet validation in `Identity.addOperationalWallets`.** Same-identity collisions (primary added by `createIdentity` OR intra-array duplicate within the same call) surface as `OperationalWalletDuplicate(wallet)`; cross-identity collisions still fire `OperationalKeyTaken(key)`; admin/operational wallet overlap surfaces as the existing `KeyAlreadyAttached(key)`. `Profile.createProfile`'s pre-flight validation loop is removed — atomic-revert semantics make the prior "fail-fast at the entrypoint" rationale moot, and the relocation removes the duplicate validation pass on the happy path. Identity version: `1.0.0` → `1.1.0`; Profile version: `1.3.0` → `1.4.2`.
- **`Profile.recreateProfile` signature refinement.** Drops the `uint16 initialOperatorFee` argument; the recovered profile is seeded at fee = 0 and the admin sets the real value via the cooldown-gated `updateOperatorFee` path. Keeps the recovery and steady-state surfaces symmetric on the operator-fee dimension. ADR `docs/adr/0001-recreate-profile-admin-only.md` updated.
- **Chain-package ABI sync.** `packages/chain/abi/KnowledgeAssetsV10.json` and `packages/chain/abi/Profile.json` re-exported from the freshly regenerated `evm-module/abi/` copies so the chain adapter's error decoder (which prefers its local override over the published artifact) resolves `ReentrancyGuardReentrantCall`, `InvalidTokenAmount`, and the new Profile error surface as structured errors instead of opaque reverts.
- **Regression coverage.** New unit tests pin every new revert surface: `publish` + `extendKnowledgeCollectionLifetime` revert `InvalidTokenAmount(1, 0)` on `tokenAmount == 0`; `publish` reverts `ReentrancyGuardReentrantCall()` when re-entered from the ERC-1155 mint acceptance callback (via the new `MockReentrantPublisher` test harness); `PublishingConviction.coverPublishingCost(baseCost=1, ...)` floors `discountedCost` at 1 and propagates that floor through the active-sink reward distribution + `windowSpent` accounting; `Identity.addOperationalWallets` per-class disambiguation; `Profile.createProfile` per-class diagnostics.

Compatibility: `recreateProfile`'s signature is a BREAKING change for the recovery script. The `tokenAmount > 0` floor is a BREAKING change for any zero-cost publish flows. Off-chain consumers pinned to `KnowledgeAssetsV10@10.1.0` or `Profile@1.3.0` need a version bump. No storage-layout changes — KAV10's added `ReentrancyGuard` storage slot lands at the end of the inheritance chain, and V10's redeploy-and-reinit pattern doesn't preserve storage across upgrades anyway.

## [10.0.0-rc.11] - 2026-05-26

### Added — Node release visible on the libp2p wire
Expand Down
136 changes: 134 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -143,6 +143,34 @@ TOKEN=$(dkg auth show)
curl -H "Authorization: Bearer $TOKEN" http://127.0.0.1:9200/api/agents
```

### Updating your node

To update DKG, run one command:

```bash
dkg update # pull the latest release from npm and restart
dkg update --check # check what's available without applying
dkg update --allow-prerelease # follow the `next` dist-tag for pre-release builds
dkg rollback # revert to the previous version
```

Do **not** `git pull` or clone the repository to update — `dkg update` is the canonical verb. If anything looks off (multiple repositories on disk, served UI doesn't match version, version skew between daemon and CLI), run `dkg doctor` for a structured diagnostic of the install state. See [`OT-RFC-41`](https://github.com/OriginTrail/dkgv10-spec/blob/main/rfcs/OT-RFC-41-edge-node-npm-only-install-and-update.md) for the design rationale.

### Contributors / monorepo development

Hacking on DKG itself? Don't go through `npm install -g`. Clone, install, and run from the workspace:

```bash
git clone https://github.com/OriginTrail/dkg.git
cd dkg
pnpm install
pnpm dkg start # or `pnpm dkg <any subcommand>`
```

Contributor state lives under `~/.dkg-dev/` (separated from `~/.dkg/` so a contributor's dev work doesn't stomp on their own Edge install). `dkg update` is intentionally disabled in monorepo-checkout mode — use `git pull && pnpm install && pnpm build` instead.

The legacy `install.sh` git-checkout installer was removed in rc.12 (OT-RFC-41 §5 PR 6). If you have an existing `install.sh`-style install, run `npm install -g @origintrail-official/dkg` to take over the install; the daemon will detect the legacy `~/.dkg/releases/` tree on first start, record the active slot version into `~/.dkg/previous-version` (rollback target), and resume from the npm-global install. `dkg doctor` flags any leftover cleanable state. See [`docs/archive/MIGRATE_TO_NPM.md`](docs/archive/MIGRATE_TO_NPM.md) for historical context on the pre-rc.12 procedure.

---

## Community integrations
Expand Down Expand Up @@ -236,9 +264,10 @@ dkg integration list [--tier community] # default tier filter is `verified`+
dkg integration info <slug> # show details for one entry
dkg integration install <slug> # install cli/mcp kind; --allow-community for community-tier entries

# Update / rollback
dkg update [--check] [--allow-prerelease] # update node software
# Update / rollback / diagnose
dkg update [--check] [--allow-prerelease] # update node software via npm registry
dkg rollback # roll back to previous version
dkg doctor [--json] # diagnostic report: install layout, version skew, orphan clones, UI mismatch, plugin root, config sanity
```

Run `dkg <command> --help` for per-command options.
Expand Down Expand Up @@ -311,6 +340,109 @@ analysis reports are under `bench/results/profiles/`, including

---

## Triple Store Backends

A DKG node keeps every assertion in an [RDF](https://www.w3.org/RDF/) triple store. Out of the box the node runs an embedded [Oxigraph](https://github.com/oxigraph/oxigraph) instance, which is everything you need on a workstation — no extra process, no extra port, no extra config. Heavier deployments can swap in [Blazegraph](https://blazegraph.com/) (the mainnet store) or any SPARQL 1.1 server.

| Backend | When to pick it |
|---|---|
| `oxigraph-worker` (default) | Single-operator nodes, dev, CI. No setup. File-backed, capped at process RAM. |
| `blazegraph` | High-throughput nodes, mainnet parity, very large graphs (10M+ quads). Run as a separate daemon (Docker or `java -jar`). Shares cleanly with V6 / V8 instances — DKG scopes its writes to the `did:dkg:context-graph:` named-graph prefix. |
| `sparql-http` | Any SPARQL 1.1 Protocol server (Fuseki, GraphDB, Stardog, Neptune…). Bring your own URL + (optional) auth header. |

### Configure via `dkg init`

Two paths:

**1. Point at an existing Blazegraph instance:**

```
$ dkg init
Triple store backend (oxigraph / blazegraph) (oxigraph): blazegraph
Blazegraph SPARQL endpoint URL: http://127.0.0.1:9999/bigdata/namespace/mynode/sparql
Store endpoint reachable: blazegraph http://127.0.0.1:9999/bigdata/namespace/mynode/sparql
```

**2. Let `dkg init` provision a Blazegraph container via Docker:**

```
$ dkg init
Triple store backend (oxigraph / blazegraph) (oxigraph): blazegraph
Blazegraph SPARQL endpoint URL: ← leave blank
No URL provided. Provision a Blazegraph container via Docker? (y/n) (y): y
Starting Blazegraph in Docker (namespace: mynode)…
Docker available: Docker version 24.0.6, build ed223bc
Created container "dkg-blazegraph-mynode" on port 9999.
Created Blazegraph namespace "mynode".
```

The Docker provisioner pins `lyrasis/blazegraph:2.1.5` (same image and tag as mainnet and the devnet test fixture), uses `--restart unless-stopped`, auto-bumps the host port if 9999 is taken, and is idempotent — re-running `dkg init` against an already-provisioned namespace reuses the running container.

The wizard validates non-Docker URLs via an `ASK { ?s ?p ?o }` probe before saving — typos or unreachable namespaces are caught at setup time, not at first boot. A 404 surfaces a specific "namespace likely doesn't exist" message rather than the generic network-failure hint.

### Configure via flags (scripted setup)

Every setup entry point honours `--store` / `--store-url`:

```bash
# Init only
dkg init --store blazegraph --store-url http://127.0.0.1:9999/bigdata/namespace/mynode/sparql

# Adapter setups (validated + persisted after the adapter step completes)
dkg hermes setup --store blazegraph --store-url http://blaze.example/sparql
dkg openclaw setup --store blazegraph --store-url http://blaze.example/sparql
dkg mcp setup --store blazegraph --store-url http://blaze.example/sparql
```

`--store oxigraph` on a previously-Blazegraph node clears the persisted block (force-fall-back to the local default).

### Configure via `~/.dkg/config.json`

```json
{
"store": {
"backend": "blazegraph",
"options": {
"url": "http://127.0.0.1:9999/bigdata/namespace/mynode/sparql",
"managedByDkg": false
}
}
}
```

For `sparql-http`:

```json
{
"store": {
"backend": "sparql-http",
"options": {
"queryEndpoint": "http://server.example/query",
"updateEndpoint": "http://server.example/update",
"auth": "Bearer YOUR_TOKEN"
}
}
}
```

### What changes when you pick an external backend

- **Boot-time health check**: the daemon refuses to start until the endpoint answers `ASK`. Unreachable URLs print an actionable message naming the URL — no half-broken daemon.
- **Namespace identity tag**: on first boot the daemon writes a triple into a reserved `<urn:dkg:store-meta>` graph recording its node name. Subsequent boots verify the tag before doing any writes — two DKG nodes pointed at the same Blazegraph namespace can't silently corrupt each other any more. Mismatches print the cleanup recipe (`DELETE WHERE { ... }`).
- **Backend-aware reset**: chain-reset (and rebooting against a different backend) scopes its `DELETE` to the `did:dkg:context-graph:` prefix, leaving any V6/V8 data on the same Blazegraph instance untouched. Docker-provisioned namespaces (`managedByDkg: true`) use the faster `DROP ALL` path.
- **Backend-switch guard**: switching backends between boots is treated like a destructive operation. The daemon prints a multi-line warning and refuses to start unless you set `DKG_ACCEPT_STORE_RESET=1`. Reverting `store.backend` in your config recovers the previous backend's data.
- **Metrics**: `/api/status` exposes `storeUrl` and `storeQuads` (cached for 30 s) instead of the `storeBytes` file size — quad count is what's meaningful when the store isn't a local file.
- **Required config**: when you enable `largeLiteralStorage` or `sharedMemoryPublicSnapshotStorage` with an external backend, you must set their `directory` explicitly (no local store path to infer from). The daemon fails fast at config-load if either is missing.

### Limitations

- **Auth / TLS**: only the generic `sparql-http` backend accepts an `Authorization` header. For Blazegraph behind auth or HTTPS-with-custom-CA, run a reverse proxy in front of it for now.
- **Migration tool**: there is no `dkg migrate-store` between backends. Plan a chain-reset window if you need to switch on a node that holds important non-VM state.

---

## Testnet Funding

A DKG testnet node needs Base Sepolia ETH (to pay gas for on-chain operations) and test TRAC (for staking and publishing). The Origin Trail testnet faucet hands out both in a single API call, so first-setup paths auto-fund the generated admin wallet plus the three operational wallets when a faucet is configured in the network config.
Expand Down
2 changes: 1 addition & 1 deletion devnet/agent-provenance/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ prefer running them before falling back to the manual recipes below.
| Suite | Scope | Runtime | Command |
| --- | --- | --- | --- |
| Hardhat e2e | All 10 sequence diagrams from `RFC-001-implementation-walkthrough.md` (incl. Phase 4 author override + pre-signed AuthorAttestation), run against an in-process Hardhat EVM. Covers contract correctness + publisher integration in a single process. | ~30s | `pnpm test:e2e:agent-provenance` |
| 5-node devnet | All 4 modes (a/b/c/d) + negative case from §4 + §9.5, run against `./scripts/devnet.sh start 5`. Mode (b) registers a custodial agent on core 2 and validates `KC.author = agent.wallet` while `publisherNodeIdentityId = core2.id`. | ~35s after devnet is up | `pnpm test:devnet:agent-provenance` |
| 5-node devnet | All 4 modes (a/b/c/d) + negative case from §4 + §9.5, run against `./scripts/devnet.sh start 5`. Mode (b) registers a custodial agent on core 2 and validates `KC.author = agent.wallet` while `publisherNodeIdentityId = core2.id`. Includes a `mode (a) strict` variant that drains edge op-wallets' TRAC to literal zero via `hardhat_setStorageAt` and asserts the publish still succeeds via the PCA — pinning the "publisher EOA holds only gas tokens, spends TRAC from PCA" operator scenario. | ~35s after devnet is up | `pnpm test:devnet:agent-provenance` |

Phase 4 author override (RFC §4(b)) is now wired end-to-end via the
agent-keystore: end-user agents register on a daemon (`POST
Expand Down
Loading
Loading