Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
141 commits
Select commit Hold shift + click to select a range
1bb2675
feat(sdk): add keeper conditional-source seam and CoW run loop (#239)
mfw78 Jul 14, 2026
f37f0d1
refactor(twap-monitor): port poll loop onto keeper (#240)
mfw78 Jul 14, 2026
b4800f5
feat(sdk-test): add MockVenue and namespaced MockLocalStore (#241)
mfw78 Jul 14, 2026
020e213
fix(keeper): drop stale watches and idle duplicate rejections (#242)
mfw78 Jul 14, 2026
6d2b227
feat(sdk): scaffold nexum-macros and #[module] attribute (#243)
mfw78 Jul 14, 2026
558e627
docs(sdk): rewrite doc 05 around the two-persona SDK plan (#245)
mfw78 Jul 15, 2026
c6f36e1
fix(sdk): M1 SDK sweep fixes - macro hardening, doc fidelity (#246)
mfw78 Jul 15, 2026
ae8b469
feat(wit): add nexum:value-flow types package v0.1.0 (#247)
mfw78 Jul 15, 2026
5b0c248
feat(wit): author the nexum:intent package with pool interface (#248)
mfw78 Jul 15, 2026
39e117d
feat(runtime): introduce the venue-adapter component kind (#249)
mfw78 Jul 15, 2026
c3ef547
feat(runtime): route nexum:intent/pool to installed venue adapters (#…
mfw78 Jul 15, 2026
8b698c7
feat(venue-sdk): add nexum-venue-sdk crate (#251)
mfw78 Jul 15, 2026
622ec70
sdk: emit per-component world from declared capabilities (#252)
mfw78 Jul 15, 2026
d71adb4
feat(runtime): fan intent-status events to module subscribers (#253)
mfw78 Jul 15, 2026
766d532
feat(sdk): add the #[nexum::venue] adapter macro (#296)
mfw78 Jul 15, 2026
3be21a6
feat(sdk-test): add the nexum-venue-test conformance kit (#297)
mfw78 Jul 15, 2026
38817d1
feat(echo-venue): settle instantly, add echo-client round trip (#256)
mfw78 Jul 15, 2026
85e5d3f
docs(wit): freeze WIT clarifications, fix macro nits (#257)
mfw78 Jul 15, 2026
0f0d719
feat(cow-venue): scaffold venue-neutral CoW intent body crate (#258)
mfw78 Jul 15, 2026
17464a1
feat(cow-venue): drive CoW retry classification from a data table (#259)
mfw78 Jul 15, 2026
c8ce57c
fix(cow-venue): QA sweep for m1-cow-classification (#260)
mfw78 Jul 15, 2026
ae846ad
refactor(cow): structured Verdict poll seam + LegacyRevertAdapter (Wa…
mfw78 Jul 15, 2026
df91716
docs: reconcile keeper prose and Verdict poll-seam references (#335)
mfw78 Jul 15, 2026
ddfb2b9
docs(sdk-test): note MockLocalStore fidelity gaps vs redb
mfw78 Jul 15, 2026
c116a48
docs: multi-chain deployment patterns — Mainnet/Gnosis/Arbitrum/Base …
mfw78 Jul 15, 2026
04413b1
docs: stale-reference sweep — engine rename, Dockerfile, ADR-0007 err…
mfw78 Jul 15, 2026
0e160dc
test(event-loop): event ordering and graceful shutdown tests (#353)
mfw78 Jul 15, 2026
a7d1ddb
feat(chain): cap JSON-RPC response size before lowering into the gues…
mfw78 Jul 15, 2026
aed942c
Merge remote-tracking branch 'origin/develop' into dm1merge
mfw78 Jul 15, 2026
4496d4d
Merge branch 'develop' into dev/m1
mfw78 Jul 16, 2026
a463db3
wit: carry opaque status bytes so the host stops importing intent (#426)
mfw78 Jul 20, 2026
154587b
wit: rename the intent contract to videre (#428)
mfw78 Jul 20, 2026
92bcf37
wit: normalize every package to 0.1.0 (#429)
mfw78 Jul 20, 2026
fe0c684
wit: add quote to the videre venue faces and the client typestate (#431)
mfw78 Jul 20, 2026
497bf9b
engine: advisory venue-agnostic acyclicity check (#432)
mfw78 Jul 20, 2026
0d35086
runtime: make the egress-guard checkpoint advisory-only (#433)
mfw78 Jul 20, 2026
6f63102
runtime: charge quota before guard check on submit (#435)
mfw78 Jul 20, 2026
06d339c
venue-test: version fixture files and reject empty vector sets (#437)
mfw78 Jul 20, 2026
bb199b7
runtime: bound the status-watch set with a capped, expiring policy (#…
mfw78 Jul 20, 2026
f51c2fb
runtime: grow the extension seam to carry worker and provider roles (…
mfw78 Jul 20, 2026
435616b
engine: extract world synthesis into nexum-world (#440)
mfw78 Jul 20, 2026
7963c3a
runtime: extract the supervised host-actor primitive from the venue a…
mfw78 Jul 20, 2026
381cd8e
runtime: make the log pipeline pluggable through the components seam …
mfw78 Jul 20, 2026
59c357c
runtime: carry the venue registry through the services map (#443)
mfw78 Jul 20, 2026
97e0292
runtime: let a preset carry extensions and pre-built backends (#444)
mfw78 Jul 20, 2026
6246244
runtime: fold venue adapters into the restart and poison sweeps (#445)
mfw78 Jul 21, 2026
1272191
runtime: ride out venue outages against a grace watch deadline (#514)
mfw78 Jul 21, 2026
934f7c9
runtime: extract a generic launcher and split the bare and cow binari…
mfw78 Jul 21, 2026
7f0ea12
runtime: build the videre-host crate and register the venue platform …
mfw78 Jul 21, 2026
35a99db
venue: install-time body-version handshake (#448)
mfw78 Jul 21, 2026
e845890
ci: align the zero-leak check to the charter symbol set (#449)
mfw78 Jul 21, 2026
9c99e2d
ci: block the zero-leak gate on router-field and wit-namespace scans …
mfw78 Jul 21, 2026
02e04a9
sdk: make the IntentBody derive no_std (#451)
mfw78 Jul 21, 2026
f7778ab
sdk: emit bind-macro fault and level conversions as From impls (#452)
mfw78 Jul 21, 2026
f902239
sdk: add an alloy provider seam over the chain host (#453)
mfw78 Jul 22, 2026
33372b1
sdk: rename to videre-sdk and add the keeper sweep assembler (#454)
mfw78 Jul 22, 2026
709d189
sdk: guest seams and mocks for identity, messaging and remote-store (…
mfw78 Jul 22, 2026
b6854b5
sdk: split macros into module and venue crates (#456)
mfw78 Jul 22, 2026
7309f90
local-store: add contains, len and count metadata queries (#457)
mfw78 Jul 22, 2026
3765ecf
sdk: make the venue macro the single blessed authoring path (#458)
mfw78 Jul 22, 2026
19edc65
sdk: rename venue conformance kit to videre-test (#459)
mfw78 Jul 22, 2026
41051fa
sdk: add the keeper macro and typed venue client (#460)
mfw78 Jul 22, 2026
e81b90c
sdk: land the alloy-grade dx polish cluster (#461)
mfw78 Jul 22, 2026
3588bdb
runtime: make the module event type extensible via a generic custom c…
mfw78 Jul 22, 2026
8c5abab
macros: hoist duplicated helpers into nexum-world (#550)
mfw78 Jul 22, 2026
c57f729
world: enums over const strings for the vocabularies (#551)
mfw78 Jul 23, 2026
bbadf8a
world: single-source the ChainMethod read surface (#552)
mfw78 Jul 23, 2026
adb1605
flake: add cargo-nextest to the dev shell (#554)
mfw78 Jul 23, 2026
55d0f99
cow: cleave the cow venue from the composable-cow keeper (#462)
mfw78 Jul 23, 2026
db3aa91
wit: own the cow event ABIs at the bundle layer (#463)
mfw78 Jul 23, 2026
a3465fd
composable-cow: type ComposableBody with alloy primitives (#557)
mfw78 Jul 23, 2026
20d38c7
status-body: version-tag the intent-status envelope (#556)
mfw78 Jul 23, 2026
675ee46
cow: ratify the retry classification table against the upstream error…
mfw78 Jul 23, 2026
d88dc99
docs: note the grant-M2 contract-mods divergence in milestone reporti…
mfw78 Jul 23, 2026
93994bc
cow: settle the idempotency seam on the venue-and-body intent-id (#466)
mfw78 Jul 23, 2026
4d358ca
cow: build the cow venue adapter component with bounded request timeo…
mfw78 Jul 23, 2026
a926f79
cow: run the cow keeper on the generic venue client (#468)
mfw78 Jul 23, 2026
b399759
modules: re-point twap-monitor onto pool submit via the cow adapter (…
mfw78 Jul 23, 2026
f83f359
modules: re-point ethflow-watcher onto the venue observe path (#470)
mfw78 Jul 23, 2026
12106d1
build: delete the offline backtest harness (#562)
mfw78 Jul 23, 2026
d1b0d66
cow: retire the legacy cow-api host cone (#471)
mfw78 Jul 23, 2026
5270aa2
twap-monitor: index ComposableCoW v2 ConditionalOrderRemoved (#472)
mfw78 Jul 23, 2026
9cac7c3
twap: grant one next-block retry before dropping on InvalidEip1271Sig…
mfw78 Jul 23, 2026
aec462a
docs: rewrite platform docs as the shipped-venue source of truth (#474)
mfw78 Jul 23, 2026
149ee80
nexum-runtime: reject colliding extension claims at boot (#529)
mfw78 Jul 23, 2026
0014460
runtime: name all four components builder params in CoreRuntime (#532)
mfw78 Jul 23, 2026
a5573a3
videre-host: document handshake admission boundaries (#533)
mfw78 Jul 23, 2026
ee7848e
test: pin unknown-venue path when registry service absent (#531)
mfw78 Jul 23, 2026
06f820b
runtime: add PresetBuilder::with_components escape hatch (#530)
mfw78 Jul 23, 2026
7cff3d4
host: tighten venue-registry install seam and mutex discipline (#534)
mfw78 Jul 23, 2026
e0144d9
modules: delete stop-loss example subsumed by composablecow monitor (…
mfw78 Jul 24, 2026
bd7fbf7
test: round-trip the no_std IntentBody derive probe (#571)
mfw78 Jul 24, 2026
51f1ef9
videre-sdk: name the one-poll driver for the seam it asserts (#576)
mfw78 Jul 24, 2026
fbc29bc
videre: bind venue id to the adapter manifest name (#577)
mfw78 Jul 24, 2026
97fc2e0
keeper: rename sweep to run, ConditionalSource to Poller (#579)
mfw78 Jul 24, 2026
37fbf0b
cow-venue: split refusal projection by read vs submit path (#580)
mfw78 Jul 24, 2026
2a1052f
cow-venue: replace OrderBuilder typestate with constructor args (#581)
mfw78 Jul 24, 2026
7b8b071
twap-monitor: rename strategy module to keeper (#582)
mfw78 Jul 24, 2026
c9b4d5d
keeper: add reserve/commit/mark journal primitives (#583)
mfw78 Jul 24, 2026
909d3a2
venue: reconcile-contract compliance suite (#584)
mfw78 Jul 24, 2026
605361a
keeper: sweep-driven reconcile for stranded submit reservations (#586)
mfw78 Jul 24, 2026
357766c
keeper: reserve/commit journal with top-of-sweep reconcile (#587)
mfw78 Jul 24, 2026
2aa8380
cow-venue: use alloy primitives instead of byte-array aliases (#588)
mfw78 Jul 24, 2026
5f3a302
cow: reconcile the accepted receipt uid against the local derivation …
mfw78 Jul 24, 2026
ed2b1f9
venue: restore the dropped empty-receipt guard on status and cancel (…
mfw78 Jul 24, 2026
ba51441
cow-venue: add valid_to and valid_for order expiry setters (#592)
mfw78 Jul 25, 2026
6a5c334
cow: model Verdict::Post next-poll timestamp as Option<u64> (#593)
mfw78 Jul 25, 2026
fe741ae
cow-venue: type the retry classifier boundary with OrderbookApiErrorT…
mfw78 Jul 25, 2026
fcc7528
tooling: build the cow-venue adapter wasm inside just ci (#596)
mfw78 Jul 25, 2026
36b73b2
ci: back sccache with the github actions cache, drop cloudflare r2 (#…
mfw78 Jul 25, 2026
74c3d8e
host: atomic apply batch verb for local-store (#611)
mfw78 Jul 25, 2026
2e5aef5
venue: type the venue-error surface with invalid-receipt and receipt-…
mfw78 Jul 25, 2026
7095a5b
docs: trim adrs to decision plus status (#599)
mfw78 Jul 25, 2026
dd3f69d
docs: trim platform generalisation and linker seam to current contrac…
mfw78 Jul 25, 2026
7898672
docs: rewrite sdk and rpc namespace docs to shipped contract (#601)
mfw78 Jul 25, 2026
1ea4db2
docs: trim user-facing tutorial, sdk, testing and scripts docs (#602)
mfw78 Jul 25, 2026
e8a873e
docs: tighten rustdoc crate and module headers (#603)
mfw78 Jul 25, 2026
aeccd60
docs: operations sweep, delete dated reports and trim runbooks (#604)
mfw78 Jul 25, 2026
15bd93b
docs: prune and de-drift deployment and production docs (#605)
mfw78 Jul 25, 2026
d0c5df5
docs: trim core architecture guides and diagrams (#606)
mfw78 Jul 25, 2026
20163c8
docs: unwrap remaining hard-wrapped markdown (#608)
mfw78 Jul 25, 2026
df6c6e7
docs: add ADR-0014, local store durability is per-call not per-event …
mfw78 Jul 25, 2026
d643950
docs: tersen rustdoc in videre-sdk (#615)
mfw78 Jul 25, 2026
bff144d
docs: tersen rustdoc in nexum-sdk core (#614)
mfw78 Jul 25, 2026
edc328e
docs: tersen rustdoc in test-harness crates (#616)
mfw78 Jul 25, 2026
17afbf3
sdk: trap-injection harness proving reconcile converges from every to…
mfw78 Jul 25, 2026
db219dd
docs: tersen rustdoc in modules and tools (#617)
mfw78 Jul 25, 2026
9fa7026
docs: tersen rustdoc in runtime-core (#618)
mfw78 Jul 25, 2026
a034107
docs: tersen rustdoc in cow-layer (#619)
mfw78 Jul 25, 2026
e11a24f
docs: tersen rustdoc in manifest and test_utils (#620)
mfw78 Jul 25, 2026
f5dcf3b
docs: tersen rustdoc in videre-host-macros (#621)
mfw78 Jul 25, 2026
8c0eb96
docs: tersen rustdoc in runtime supervisor (#622)
mfw78 Jul 25, 2026
db97bd3
docs: tersen rustdoc in runtime host (#623)
mfw78 Jul 25, 2026
c2c955a
docs: tersen rustdoc in sdk-periphery-l1 (#624)
mfw78 Jul 25, 2026
6c4f54e
chore: retire strategy vocabulary and banners in docs (#626)
mfw78 Jul 25, 2026
b49baa1
chore: retire strategy vocabulary and banners in crates (#627)
mfw78 Jul 25, 2026
1f2ab82
chore: retire strategy vocabulary and banners in modules (#628)
mfw78 Jul 25, 2026
37b82c6
sdk: journal guard combinator enforces reserve-before-effect (#629)
mfw78 Jul 25, 2026
d2a5cc0
sdk: typed local-store helpers over the apply seam (#630)
mfw78 Jul 25, 2026
e86a3d8
cow: adopt the Journal guard in the composable-cow keeper submit (#631)
mfw78 Jul 26, 2026
2436c50
refactor(packaging): three-grouping path-dep workspace (#403) (#636)
mfw78 Jul 27, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
3 changes: 0 additions & 3 deletions .dockerignore
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,6 @@ target/
/data/
data/

# Backtest tooling output: large JSON fixtures + Python venv state.
# Re-collected on demand via `tools/backtest-collect/backtest_collect.py`.
tools/backtest-collect/fixtures-*.json
tools/baseline-latency/data/
tools/**/__pycache__/
tools/**/*.pyc
Expand Down
4 changes: 2 additions & 2 deletions .github/actions/rust-setup/action.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
name: rust-setup
description: Pinned Rust 1.94 + sccache (R2 backend, configured at the workflow env level) + registry-only Swatinem cache shared across jobs.
description: Pinned Rust 1.94 + sccache (GitHub Actions cache backend, SCCACHE_GHA_ENABLED) + registry-only Swatinem cache shared across jobs.

inputs:
targets:
Expand All @@ -11,7 +11,7 @@ inputs:
save-if:
description: >
May this run WRITE the registry cache? Defaults to always: Swatinem now caches
only the small ~/.cargo registry (target/ moved to sccache/R2), and the GHA
only the small ~/.cargo registry (target/ moved to sccache over the GitHub Actions cache), and the GHA
cache is branch-scoped, so a PR saving its own registry warms its re-runs
without touching the develop baseline. Set false to make a job restore-only.
default: "true"
Expand Down
75 changes: 55 additions & 20 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,24 +19,14 @@ env:
# jobs: any per-job RUSTFLAGS delta re-fingerprints the whole graph and every
# sccache object key, defeating reuse.
RUSTFLAGS: "-D warnings"
# sccache caches individual rustc invocations across jobs AND runs, including the
# workspace crates (which Swatinem drops). Requires incremental off. Backed by a
# Cloudflare R2 bucket (S3 API), so the cache is shared across jobs, runs, the
# Dockerfile build, and the local host sccache — one silo, zero egress cost.
# Set at the workflow env level (not the composite) because composite actions
# cannot read the `secrets` context. Keys are content-addressed on the full
# compiler input, and the sole build.rs (cow-venue) + nexum-macros are
# deterministic, so PR builds writing to the shared bucket write correct objects
# under correct keys (no poisoning); bound storage with an R2 lifecycle-expiry
# rule on the bucket (sccache does not evict cloud backends itself).
# sccache caches individual rustc invocations across jobs and runs, including the
# workspace crates (which Swatinem drops). Requires incremental off. Backed by the
# GitHub Actions cache (SCCACHE_GHA_ENABLED): free, no secrets, and available on
# fork pull_request runs, so forks build cached too. The per-repo cache evicts LRU
# on its own; a miss degrades to a cold compile, never a build failure.
RUSTC_WRAPPER: sccache
CARGO_INCREMENTAL: "0"
SCCACHE_BUCKET: shepherd-sccache
SCCACHE_ENDPOINT: https://${{ secrets.R2_ACCOUNT_ID }}.r2.cloudflarestorage.com
SCCACHE_REGION: auto
SCCACHE_S3_KEY_PREFIX: ci/rust-1.94
AWS_ACCESS_KEY_ID: ${{ secrets.R2_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.R2_SECRET_ACCESS_KEY }}
SCCACHE_GHA_ENABLED: "true"

jobs:
fmt:
Expand Down Expand Up @@ -78,7 +68,8 @@ jobs:
- uses: taiki-e/install-action@43aecc8d72668fbcfe75c31400bc4f890f1c5853 # v2.83.2
with:
tool: nextest
# Build all 15 guest module wasms ONCE (release/wasm32-wasip2): the single
# Build all 17 guest wasms ONCE (16 modules + the cow adapter,
# release/wasm32-wasip2): the single
# source of truth for guest buildability and the artifacts the integration
# tests load. Replaces the deleted 9-way build-module matrix, which recompiled
# the shared wasm dependency graph ~9x cold. Per-module size report folded in;
Expand All @@ -87,9 +78,14 @@ jobs:
run: |
cargo build --release --target wasm32-wasip2 --locked \
-p example -p twap-monitor -p ethflow-watcher -p price-alert \
-p balance-tracker -p stop-loss -p http-probe \
-p clock-reader -p flaky-bomb -p fuel-bomb \
-p memory-bomb -p panic-bomb -p slow-host
-p balance-tracker -p http-probe -p echo-venue \
-p echo-client -p echo-keeper -p clock-reader -p flaky-bomb -p flaky-venue \
-p fuel-bomb -p memory-bomb -p panic-bomb -p slow-host
# Separate invocation on purpose: unifying `cow-venue/adapter`
# into the module build would link the adapter's component
# export glue into every keeper module wasm.
cargo build --release --target wasm32-wasip2 --locked \
-p cow-venue --features cow-venue/adapter
{
echo "### module .wasm sizes"
echo "| module | bytes |"
Expand Down Expand Up @@ -143,3 +139,42 @@ jobs:
CXX_aarch64_unknown_linux_gnu: aarch64-linux-gnu-g++
AR_aarch64_unknown_linux_gnu: aarch64-linux-gnu-ar
run: cargo check --workspace --all-features --locked --target aarch64-unknown-linux-gnu

# Blocking zero-leak gate: host-layer crate graphs stay venue-free, the
# runtime Rust sources carry no charter symbol and no privileged router
# field, and nexum:host names no foreign WIT package and resolves as a
# leaf (scripts/check-venue-agnostic.sh).
venue-agnostic:
name: venue-agnostic
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- uses: ./.github/actions/rust-setup
- uses: taiki-e/install-action@43aecc8d72668fbcfe75c31400bc4f890f1c5853 # v2.83.2
with:
tool: wasm-tools,ripgrep
- run: ./scripts/check-venue-agnostic.sh

# Blocking orderbook-only gate: the CoW venue crate carries no
# composable symbol (scripts/check-cow-orderbook-only.sh).
cow-orderbook-only:
name: cow-orderbook-only
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- uses: taiki-e/install-action@43aecc8d72668fbcfe75c31400bc4f890f1c5853 # v2.83.2
with:
tool: ripgrep
- run: ./scripts/check-cow-orderbook-only.sh

# Blocking dep-sync gate for the transitional three-grouping workspace: every
# crate is grouped under nexum/videre/shepherd and depends only within or below
# its tier, so no upward edge becomes a circular repo dependency at the carve
# (scripts/check-carve-groups.sh, M5 #403).
carve-groups:
name: carve-groups
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- uses: ./.github/actions/rust-setup
- run: ./scripts/check-carve-groups.sh
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,9 @@ skills-lock.json

# Engine runtime state (default state_dir from engine.toml).
data/
# Shipped crate data slices are source, not runtime state: keep them.
!crates/*/data/
!crates/*/data/**

# E2E automation: rendered configs with embedded RPC keys + script state
# never get committed.
Expand Down
Loading
Loading