From 887f28ed520df9aca42b7396db9e8b04408fc7e1 Mon Sep 17 00:00:00 2001 From: agent-7e3bbc424e07835b Date: Tue, 21 Apr 2026 10:41:13 +0200 Subject: [PATCH] build(agent): new-agents-2#7e3bbc iteration --- delta_mesh/Registry.c | 55 ++++++++++++++++++++++++++++++++++++++++ delta_mesh/Registry.h | 23 +++++++++++++++++ delta_mesh/Registry.o | Bin 0 -> 2184 bytes delta_mesh/delta_crdt.c | 4 +++ delta_mesh/delta_crdt.h | 20 +++++++++++++++ delta_mesh/delta_crdt.o | Bin 0 -> 936 bytes delta_mesh/demo | Bin 70984 -> 71632 bytes delta_mesh/demo_main.c | 31 ++++++++++++++++++++-- delta_mesh/demo_main.o | Bin 2048 -> 3704 bytes delta_mesh/dsl_seed.c | 26 +++++++++++++------ delta_mesh/dsl_seed.h | 36 ++++++++++++++------------ delta_mesh/dsl_seed.o | Bin 0 -> 1504 bytes test.sh | 5 +++- 13 files changed, 173 insertions(+), 27 deletions(-) create mode 100644 delta_mesh/Registry.c create mode 100644 delta_mesh/Registry.h create mode 100644 delta_mesh/Registry.o create mode 100644 delta_mesh/delta_crdt.c create mode 100644 delta_mesh/delta_crdt.h create mode 100644 delta_mesh/delta_crdt.o create mode 100644 delta_mesh/dsl_seed.o diff --git a/delta_mesh/Registry.c b/delta_mesh/Registry.c new file mode 100644 index 0000000..d39486a --- /dev/null +++ b/delta_mesh/Registry.c @@ -0,0 +1,55 @@ +#include "Registry.h" +#include +#include + +// Internal helper to ensure capacity +static int registry_ensure_capacity(Registry* r) { + if (r->entries == NULL) { + size_t cap = 4; + r->entries = (RegistryEntry*)calloc(cap, sizeof(RegistryEntry)); + if (!r->entries) return -1; + r->capacity = cap; + r->count = 0; + return 0; + } + if (r->count < r->capacity) return 0; + size_t newcap = r->capacity * 2; + RegistryEntry* tmp = (RegistryEntry*)realloc(r->entries, newcap * sizeof(RegistryEntry)); + if (!tmp) return -1; + // Initialize new slots to zero + for (size_t i = r->capacity; i < newcap; ++i) { + tmp[i].key = NULL; + tmp[i].value = NULL; + tmp[i].version = 0; + } + r->entries = tmp; + r->capacity = newcap; + return 0; +} + +void registry_init(Registry* r) { + r->entries = NULL; + r->count = 0; + r->capacity = 0; + // lazy initialization on first register +} + +int registry_register(Registry* r, const char* key, const char* value, int version) { + if (registry_ensure_capacity(r) != 0) return -1; + RegistryEntry e; + e.key = key; + e.value = value; + e.version = version; + r->entries[r->count++] = e; + return 0; +} + +const char* registry_lookup(Registry* r, const char* key) { + if (!r || !r->entries) return NULL; + for (size_t i = 0; i < r->count; ++i) { + if (r->entries[i].key && strcmp(r->entries[i].key, key) == 0) { + return r->entries[i].value; + } + } + return NULL; +} diff --git a/delta_mesh/Registry.h b/delta_mesh/Registry.h new file mode 100644 index 0000000..dcbe5dd --- /dev/null +++ b/delta_mesh/Registry.h @@ -0,0 +1,23 @@ +// Simple in-process registry to map canonical primitives to versions/handles +#ifndef REGISTRY_H +#define REGISTRY_H + +#include + +typedef struct RegistryEntry { + const char* key; + const char* value; + int version; +} RegistryEntry; + +typedef struct Registry { + RegistryEntry* entries; + size_t count; + size_t capacity; +} Registry; + +void registry_init(Registry* r); +int registry_register(Registry* r, const char* key, const char* value, int version); +const char* registry_lookup(Registry* r, const char* key); + +#endif diff --git a/delta_mesh/Registry.o b/delta_mesh/Registry.o new file mode 100644 index 0000000000000000000000000000000000000000..cdb0b2f5207a1ebdefa4e8eae2afefff5485bb5f GIT binary patch literal 2184 zcmbu9&1)M+6u{r^jO4^|71uaP!KKn6EpFN@lJP0zu$G)AgtQ?}QXF!yzP7c9Wd&&i zP8^5|DFk#dw$>$(dS>U+C0@v>4c&A{$^ z^PBfIZ)W$-sdFEwiUM*d@Ez>UBn7w^*wb}K)u9UxKp4Od{{z+v8`}s+*m`67N2|f0 zx_wcxwizq|==RQ4)%uI6OS>6n?J#z1mnlnn0G5p}bn9o}TVE+~>1!USe8Zv2yLiP2 zf(=j}xjzclY&ZO{eR0Uzxf-{2GYP9P{rDl}n*aMwoikpk{eHXtjP+t3s6Az{obA-@ zFymV}jCq&yN&tE*z~MZ_rTXqBp;|64oLnr2zh8vF)@RM;rEE~QlPcI#onU{CHIN_K zZ#J7p6joj>LwS|rlg)G7)0Y6t#NNgyi9Ty+hxPVspwu}m|0edmg7q|}e{%XkJ@}aG z_8hVu+`sHkFUFv{lB#akf>3?N4lN}yKIMxjFjz`Mbx}RMrC^=Z2h6idy=Y87a{7?O z+GT$vqyCVclz&ovrxS@2k^W&Lol8wdVguTM7Cjytd@pOHV*@v0?+OInn3#rgYXtbz zTS{M7*kNzD7|+}tgDBn?x^rQMLi&S!3mx&9U@efC<#Q~4U!7MjbZ$QR<=6F%`dSEv z4xs%xe6qrCp5&=e^g(bT5T8}&l;Iki;UBKm6Pr)gH_#yzo#8b`D~`!pJ?<_HhoTaS zP%VP)Fo!>yEei-(+Z#@twKGS`Te#bYc3%p`3AWfDbVvvEwycnSM;l7q^U(>59+W+v z`sH~<1efP0O$Ly^WT?w=0+n`r2sy>?7F%=92-$`Iu!j-j(_G0c-qbR1bPA4Up(wyu zZZc=?&0K60k)$Rj3K___;-&dSp>XZSb--Ae{B^j8`DpZE9deH}e?c!C#9wn&=RGRw zCGPgxU3^p61dyv9`>2o0UX1&>hznZjX5LJtQJO_pj!Ug*Or$i^m@+}jrpy#*=~4-_ zOd+2)CXr1ROhY^U(dFYMGnKgpnqzK^k9|^1Q$zwLS9?>CqJ-+FvWmHm_WEGq5#|Flj2>2D$ZW&f!je{PDs rB4Ak*+=+}HzdxO;zxRkh7x_nN;u-$^zm99|{QJc(?25;iRKNef^?We< literal 0 HcmV?d00001 diff --git a/delta_mesh/delta_crdt.c b/delta_mesh/delta_crdt.c new file mode 100644 index 0000000..47c7b48 --- /dev/null +++ b/delta_mesh/delta_crdt.c @@ -0,0 +1,4 @@ +#include "delta_crdt.h" + +// No heavy implementation needed for a toy MVP; this file exists to +// satisfy build expectations and to place future CRDT logic here. diff --git a/delta_mesh/delta_crdt.h b/delta_mesh/delta_crdt.h new file mode 100644 index 0000000..301ebf6 --- /dev/null +++ b/delta_mesh/delta_crdt.h @@ -0,0 +1,20 @@ +// Lightweight CRDT-like delta structure and merge utility +#ifndef DELTA_CRDT_H +#define DELTA_CRDT_H + +typedef struct DeltaCRDT { + unsigned long version; + double value_delta; +} DeltaCRDT; + +// Merge two deltas by choosing the one with the higher version. +static inline void crdt_merge(const DeltaCRDT* a, const DeltaCRDT* b, DeltaCRDT* out) { + if (!a || !b || !out) return; + if (a->version >= b->version) { + *out = *a; + } else { + *out = *b; + } +} + +#endif diff --git a/delta_mesh/delta_crdt.o b/delta_mesh/delta_crdt.o new file mode 100644 index 0000000000000000000000000000000000000000..8a271251c5155ae9262f65bee212a08d3fdf1378 GIT binary patch literal 936 zcmbV~u};G<5QZ;Jfp$T#At9kM(F$rc5iCrW+R_EFF;`AvDF~8E%^|_W>+l9V7f%4^ z)Tdfby3~^W-+jK{7uormKR$GV0C)uO1KW%#K<+?UV+noe0W7A|`@wLglNVJEqFBUY zGLCMqGo3{7do;3Wdyp5IW4rMC=ixdHTfYP#gic#I@o)z}*ulF^p6NGK%XFQgNC8Ck zS)fWtalO%;Bh()VB2%b9Bvl0>T@{5ciIpqVV)67mu27|~%@+HRb26E`I`qua%Q@4uoFdhNaaH{>;EPH4JA+GOZLin%}Qox|MH+)bRAeT+=r_Sdlg o+ZG;?n%T4Ynbkh2e|Ki<#5Ov%bu51WQ`%_rU)aJq8?E~OfBQo&Bme*a literal 0 HcmV?d00001 diff --git a/delta_mesh/demo b/delta_mesh/demo index a4c49978eb28900bf86c417f37b89e6019d74c43..9ba0dcfd7c84ac1307f55606e8b26e79489ef808 100755 GIT binary patch literal 71632 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 O+xNJhnlHdth5rTmr+l0M delta 2778 zcmbVOacq-C6o2pg+O92Y*RI{V4dcoruubS%95~E?PG%6Dp%P-EqTM1FSe$V+ zq7Y+D%MC9kV(=d`kVFvTCPu=PL^S+S5`o18{apA15{(-nh9zvD@4oMjj1FSrC9l7G zzkB!Y-n+Z^HUFjK%ppg%qV$vttd_I^-2Pns=iZdpR#V>GuQ5-TW^27Hh`Z;FyKSuy zH%bp1**Ew___=4lZTx!Gd%G_Bw|uo_X=*yPW$77s-yb(|0#H$W!#I(M#$q?5(8iyuB@3%0vtchM%-bq z0Xam-&NG1h?p`ocE%7{DKbBmcL|AG~yS!#HL(?exS*S=(?jv`jBvIOE`xvl3&n4Dc zT%jXq>;d0mmhpw35*J0>uhf)jULnjA_7Fy=O>>Xn2|pps5*{Hm2!A0QCv?+^#7)zT z61EdI5@rY=MONjnS-F8+HIgZ`6x}QCz#@_?adE*>6I_zyFmcU{TH~cmI z4q8Rt1GtCi4@lZ?nr15@wD{xuU7tGF{dUPO)G*0m5@Uut!HZ>1leo!OtstlgZj@v` zaZy6i1otONoVfXd05}#29R2H9G;r4Wkh-4gI#Q@s6Bk^xVjE!CX?J{5A8<2m`gt5= z9n;k~z}}u-g}rQKx;mJYhVptthE32|iY3fyY-UfId-!KaPtU+`A}>w<3+0j!-?tWj z#6ccJj9@cwp(n1pAtgEy%-FgYlH%=0WC_rVA#c?J-A4noa#@=n24rzjeg*1K0!Qx1 z2S62}+wFsp^6)ARKg3!-qS00=phY!9*?X)`5H{HzMT4!1b@^r;V~<^*`MSv} zN}_=e6fbUqXyw-LoLgsNske9$A0H!sRcB;=3&#(*dA)*oWGuQDCp) z8ujoK)%{a@-9a4$ks`2`Dteb~2fY0KB8=6w$?uR_x{}@iLJ$gh;1fDV z5(};233F5ybTut*J)PONWi_vJV|AIjaOK=|dQ(SFNBXs%j_w{vr(fFo>NZ~^L*w{`Xmy<38h;7~q*QPjqPUkhR^IH=ouQaHd9rPvT`mN``z=G%$(q$Hi<2TSom zPe!U4ewEZ)WnGo`UY-bHgI9ePhMjzK2$u!bEmzpZkA^TFlm$iQaD&FLg)rt-g_sIf zeVAse0<178W>@oU7z4p^nP-I?`Oz>1laj?iAq-7~aTQ{cC(0=(_5ZJyca~F7>QI{a t!E&-{;#UdE+UdEAHYk0~rG6V<5yAVtZm&IbQ{&wcT&6jE{7?iJ{0j*g%@F_q diff --git a/delta_mesh/demo_main.c b/delta_mesh/demo_main.c index 491bfd5..d2c4efb 100644 --- a/delta_mesh/demo_main.c +++ b/delta_mesh/demo_main.c @@ -1,16 +1,43 @@ #include #include "LocalMarket.h" #include "admm_lite.h" +#include "Registry.h" +#include "dsl_seed.h" +#include "delta_crdt.h" // A tiny demo that creates two LocalMarkets and demonstrates a simple ADMM-lite step. int main(void) { + // 1) Demonstrate a simple registry usage (GoC-like bridge) + Registry reg; + registry_init(®); + registry_register(®, "LocalMarket", "v1.0", 1); + registry_register(®, "SharedSignals", "v1.0", 1); + const char* lm_ver = registry_lookup(®, "LocalMarket"); + printf("DeltaMesh REG: LocalMarket -> %s\n", lm_ver ? lm_ver : ""); + + // 2) Demonstrate DSL seed usage (toy initialization) + LocalMarketSeed lm_seed; + dsl_localmarket_seed_init(&lm_seed, "VenueA", 100.0, 50.0); + SharedSignalsSeed ss_seed; + dsl_sharedsignals_seed_init(&ss_seed, 0.25, 0.18); + PlanDeltaSeed pd_seed; + dsl_plandelta_seed_init(&pd_seed, 0.5, 0.2, 12345); + printf("DeltaMesh DSL seeds: lm=%s, ivol=%.3f, quote=%.3f\n", + lm_seed.venue, ss_seed.implied_vol, pd_seed.quote); + + // 3) Demonstrate a CRDT-like delta merge (toy) + DeltaCRDT d1 = { .version = 1, .value_delta = 0.2 }; + DeltaCRDT d2 = { .version = 2, .value_delta = -0.1 }; + DeltaCRDT merged = {0}; + crdt_merge(&d1, &d2, &merged); + printf("DeltaMesh CRDT merge: ver=%lu delta=%.4f\n", merged.version, merged.value_delta); + + // 4) Simple ADMM-lite step using existing demo helper for compatibility LocalMarket v1 = {"VenueA", 100.0, 50.0}; LocalMarket v2 = {"VenueB", 150.0, 75.0}; - double quotes[2] = { v1.inventory, v2.inventory }; double aggregate = 0.0; admm_lite_step(quotes, 2, &aggregate); - printf("DeltaMesh DEMO: aggregated quote = %f\n", aggregate); return 0; } diff --git a/delta_mesh/demo_main.o b/delta_mesh/demo_main.o index b171076a3d1482c20fea3d5a3a6a884428a78760..0b29804c2573be8fb1aabde79cf1df64b531c44a 100644 GIT binary patch literal 3704 zcmbuBPiz!r6u{r^fE0>|U5YgrIvZQ9flk;$45=(mZEHOgFfE!G56g7->+Z_zA9tor z5fd8|{~UK?O_T^B;R1~Z4ie+Z-o$t@^&c0_f*yMCAR$CKH2B`kd);An_o6S^eeeCg z_ultszVDlPXMFO-Xe0t65%>}so=|{=Z4KM>OcQp(BXFdUcbt4Ndz72!6UG5DCrfF| zK4w);E7xn8&RG?ena*d6mhB)JQ?_dzQ%+8w8lM=}1L6AMQN7=h?p{^JIW-cDADf=k z9i=kPux=NU{myxB{ra18C0BVi7ijb|IyH7uFQ`gZ4eRr&lI*wV^bCyx z!w=0$e~tLD@na{3bt{{#sI29xj9*(%>irwRIFI$S*RHHu4RgO5*DYZjTqU)aNVnMfEsa$BfA&ib`;yBJr0ZK zOpc3hU0c;V*H+_@y#V;5n7S6NNgd3u!p=ALM!;OJrz2i%pV@okTi##wdDQQ7)THrN z>j%ws)U}%@JiSCUy&PmZ))|4tRrHtc_j>cI-ufMC$Z$R@$-0JX5L--Ad%f4or(Cc8 zo#~M)fN^(Y=Dqc^-(6nOQa^9|#x4XoPfM$dd|v>2@|8E!}`FO zn#o&5Juzeq83zUvhxTREOk!v*@eCu}o4!Qenu1LWdn0?c_rd_89_A)a3PyHZjhx?o zq5Fl8b}hxmKkkZ7{PyclKm53ZV_GRn+XT1ow`$W`o*V!T@aeS>4O?1?hCPJkVGlHO z!WwK2hx7cKxgWo!Dc-N&%>DR|Hu25ekC)TbNb~D=0-lW~(V(-55zt_36OSS33e4Ag zj>zb_$}GWI~%9VW4orR2Jr);`{3*Hr+q6^b6K`oAV89V-E9BM1uR?)i_ z1Ki3K3Mo79s+8lZGR^=to?{FT1nn|8SE9Q^T&EIF*#CsJ)Div}bE>nOZBiH6raHk>b(uN7ARgdXnNyv|*e3M_+ft{4 z{T0?yNBDK-RHuh+Qs1*J^UAS*gSE^{c%6B8eg0rBsXj5M#G7gjNrulP#DS?!PBKz6* z0G>mGz9viotPgX+Do>2w+jM@Ue>ua)kx>`HyBu9uh89HJ`$77V??`9VguNPs3yQiF5)fBWTm+#MtswZLYF*T!pnpKibQMAvdvWmK<-YsA@7=qX*BmOC#WBlP;4kbpvcZ5L8q(B4 z{f>yD1BK<53?+a@>U|wb?irMR4ET2ag%s&!*RWf{M~ggA2H`)suQcTJ6V-qhT`NNo z0%1{6%!`i`OkQg}=gw(({zl9aujII$+ zoxnSeZScTg45M-gKXu)g6;51|LsAnTwOI66)U>+T>7^!vIb014PaIJtevHkmmu`42 q?`?DvG`tPO2a=*GMU}I77y~~7an -// Example entry point to exercise the seed artifacts without pulling external deps. -void dsl_seed_example_log(void) { - AuditLog log = { "delta_seed_initialized", 0 }; - (void)log; // suppress unused warning in a tiny demo - // No-op print guarded by a macro in a real build; kept tiny to avoid side effects. - // printf("%s @ %lu\n", log.entry, log.timestamp); +void dsl_localmarket_seed_init(LocalMarketSeed* s, const char* venue, double inventory, double risk_budget) { + if (!s) return; + s->venue = venue; + s->inventory = inventory; + s->risk_budget = risk_budget; +} + +void dsl_sharedsignals_seed_init(SharedSignalsSeed* s, double greeks, double ivol) { + if (!s) return; + s->aggregated_greeks = greeks; + s->implied_vol = ivol; +} + +void dsl_plandelta_seed_init(PlanDeltaSeed* s, double quote, double hedge, unsigned long ts) { + if (!s) return; + s->quote = quote; + s->hedge = hedge; + s->timestamp = ts; } diff --git a/delta_mesh/dsl_seed.h b/delta_mesh/dsl_seed.h index 490829a..20bccc7 100644 --- a/delta_mesh/dsl_seed.h +++ b/delta_mesh/dsl_seed.h @@ -1,24 +1,28 @@ -// Minimal DSL seed primitives for DeltaMesh MVP (toy). -// This header provides lightweight, forward-looking data structures that -// can be used by adapters and the coordination layer to agree on contract -// representations without leaking raw data. +// Lightweight seed structures for LocalMarket, SharedSignals, and PlanDelta +// to bootstrap interoperability in the DeltaMesh MVP. #ifndef DSL_SEED_H #define DSL_SEED_H -typedef struct LocalArbProblem { - double objective; // toy objective value for the arb problem - unsigned long timestamp; // monotonic timestamp for replay -} LocalArbProblem; +typedef struct LocalMarketSeed { + const char* venue; + double inventory; + double risk_budget; +} LocalMarketSeed; -typedef struct AuditLog { - const char* entry; // human-readable log entry or hash - unsigned long timestamp; // log timestamp for replay and audit -} AuditLog; +typedef struct SharedSignalsSeed { + double aggregated_greeks; + double implied_vol; +} SharedSignalsSeed; -typedef struct GovernanceBlock { - const char* policy; // description of governance constraint - unsigned long timestamp; // policy versioning / timestamp -} GovernanceBlock; +typedef struct PlanDeltaSeed { + double quote; + double hedge; + unsigned long timestamp; +} PlanDeltaSeed; + +void dsl_localmarket_seed_init(LocalMarketSeed* s, const char* venue, double inventory, double risk_budget); +void dsl_sharedsignals_seed_init(SharedSignalsSeed* s, double greeks, double ivol); +void dsl_plandelta_seed_init(PlanDeltaSeed* s, double quote, double hedge, unsigned long ts); #endif diff --git a/delta_mesh/dsl_seed.o b/delta_mesh/dsl_seed.o new file mode 100644 index 0000000000000000000000000000000000000000..ab3b1be8d696dad7c75104d0055bccc72209764f GIT binary patch literal 1504 zcmbtU&1w`u5U$B=LjFJv9s-eMgn$uElU)pioCcB@2_hnT-t_LY?vk0=Fw=oeE_(1G ze2{=wkG??i47qyrq*XIrY|%R>EtsvU@2ju6yQXJ9AH9A#69m8(z;~Eri~>aAB#x^v zh9y{pQ-Eu%{|#Ru`w@0;k-LUg9dAV8O~ub6?=Uz%IM|Q24oz>U^QhfX9ksLFe(@|Z zy>{oK{nSBlzghzzxOxYz@p`bfyisAR4riYHbB8SpE*7y18y%gs1;73@kzwN`0795) zDo0!l$yL;QYMLnZnVsr$uR`YF;S@vla}6lrttos3krlCjo)^uEaL##VuN)qsCu1Ix zGVPYeB&rXaW7te8ARYB}n(5-q*oy29^P#Ov2f8pxIsBCCwDh?1ROg9FtrqyBdO4WI z5y`3UcsTFp(8D8_gDNjGt9$5eQTqW$){HHvL|YB2SC*jqqbxHyV)@7#b^PYTc4>A0 z3{+uKt<0eNvCx^}&j01tP)%>&e{-?x%I9?HWbO`ljGpxV%{pg+=c!iO6HMmu`By#N z7wYNnlh@xuP8zSzeiuoOW!*QKh}f?^ae8?-sGRk0g_c4(tF$9b=F6D?p8scPKmOVX!5#ge?YRvvV7!QruP5A}Jwgz