feat(rnetwork): expand demo CRM to 48 members with delegation-only flows

Remove Demo DAO and space hub placeholder nodes — members now connect
only via trust delegation edges. Add 24 new members (m25–m48) with
ops-vertical specializations and expand delegation arrays to 141 edges
(47 per authority) with proper hierarchical flow patterns.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Jeff Emmett 2026-03-12 20:08:05 -07:00
parent 9343dc13ab
commit 073a64fe56
1 changed files with 116 additions and 58 deletions

View File

@ -218,40 +218,61 @@ routes.get("/api/graph", async (c) => {
if (!token) {
isDemoData = true;
// ── Demo DAO: 24 members with delegation-based trust ──
const daoId = "demo-dao";
const spaceHubId = "demo-space";
nodes.push(
{ id: daoId, label: "Demo DAO", type: "company", data: { role: "dao" } },
{ id: spaceHubId, label: "demo", type: "space" as any, data: {} },
);
// ── Demo: 48 members with delegation-based trust flows ──
// Members: id, name, role, delegatedWeight per authority (gov, fin, dev)
const members: Array<[string, string, string, number, number, number]> = [
["m01", "Alice Chen", "steward", 0.95, 0.60, 0.40],
["m02", "Bob Martinez", "steward", 0.80, 0.85, 0.30],
["m03", "Carol Okafor", "steward", 0.70, 0.45, 0.90],
["m04", "David Kim", "council", 0.65, 0.70, 0.55],
["m05", "Eve Nakamura", "council", 0.55, 0.50, 0.75],
["m06", "Frank Osei", "council", 0.50, 0.80, 0.35],
["m07", "Grace Liu", "contributor", 0.40, 0.35, 0.85],
["m08", "Hassan Patel", "contributor", 0.35, 0.65, 0.45],
["m09", "Ingrid Svensson", "contributor", 0.45, 0.30, 0.60],
["m10", "Jorge Reyes", "contributor", 0.30, 0.55, 0.50],
["m11", "Kaia Tanaka", "contributor", 0.25, 0.40, 0.70],
["m12", "Leo Adeyemi", "contributor", 0.35, 0.25, 0.55],
["m13", "Maya Johansson", "member", 0.20, 0.30, 0.40],
["m14", "Nia Mensah", "member", 0.15, 0.45, 0.20],
["m15", "Omar Farouk", "member", 0.25, 0.20, 0.35],
["m16", "Priya Sharma", "member", 0.10, 0.35, 0.30],
["m17", "Quinn O'Brien", "member", 0.20, 0.15, 0.25],
["m18", "Rosa Gutierrez", "member", 0.15, 0.20, 0.15],
["m19", "Sam Achebe", "member", 0.10, 0.10, 0.45],
["m20", "Tara Singh", "member", 0.05, 0.25, 0.10],
["m21", "Uri Goldberg", "member", 0.12, 0.08, 0.20],
["m22", "Valentina Costa", "member", 0.08, 0.15, 0.12],
["m23", "Wei Zhang", "member", 0.18, 0.12, 0.08],
["m24", "Yuki Mori", "member", 0.06, 0.05, 0.18],
// Stewards — top-level, high trust across boards
["m01", "Alice Chen", "steward", 0.95, 0.50, 0.40],
["m02", "Bob Martinez", "steward", 0.45, 0.90, 0.35],
["m03", "Carol Okafor", "steward", 0.40, 0.35, 0.95],
// Council — secondary hubs
["m04", "David Kim", "council", 0.70, 0.40, 0.35],
["m05", "Eve Nakamura", "council", 0.35, 0.30, 0.75],
["m06", "Frank Osei", "council", 0.30, 0.80, 0.25],
["m25", "Anika Bergström", "council", 0.65, 0.30, 0.25],
["m26", "Rafael Oliveira", "council", 0.25, 0.75, 0.30],
["m27", "Chen Wei", "council", 0.30, 0.25, 0.70],
// Contributors — mid-tier, specialize in one vertical
["m07", "Grace Liu", "contributor", 0.50, 0.20, 0.65],
["m08", "Hassan Patel", "contributor", 0.20, 0.60, 0.30],
["m09", "Ingrid Svensson", "contributor", 0.55, 0.25, 0.30],
["m10", "Jorge Reyes", "contributor", 0.20, 0.55, 0.25],
["m11", "Kaia Tanaka", "contributor", 0.15, 0.20, 0.65],
["m12", "Leo Adeyemi", "contributor", 0.20, 0.15, 0.60],
["m28", "Fatima Al-Hassan", "contributor", 0.50, 0.20, 0.15],
["m29", "Marcus Johnson", "contributor", 0.15, 0.55, 0.20],
["m30", "Yuna Park", "contributor", 0.20, 0.15, 0.55],
["m31", "Dmitri Volkov", "contributor", 0.45, 0.25, 0.20],
["m32", "Amara Diallo", "contributor", 0.15, 0.50, 0.25],
["m33", "Liam O'Connor", "contributor", 0.20, 0.20, 0.50],
["m34", "Zara Hussain", "contributor", 0.45, 0.15, 0.20],
["m35", "Tomás Herrera", "contributor", 0.20, 0.50, 0.15],
["m36", "Sakura Ito", "contributor", 0.15, 0.15, 0.50],
// Members — base layer, delegate upward
["m13", "Maya Johansson", "member", 0.15, 0.20, 0.30],
["m14", "Nia Mensah", "member", 0.10, 0.40, 0.15],
["m15", "Omar Farouk", "member", 0.30, 0.15, 0.20],
["m16", "Priya Sharma", "member", 0.10, 0.30, 0.20],
["m17", "Quinn O'Brien", "member", 0.20, 0.10, 0.15],
["m18", "Rosa Gutierrez", "member", 0.15, 0.20, 0.10],
["m19", "Sam Achebe", "member", 0.10, 0.10, 0.35],
["m20", "Tara Singh", "member", 0.05, 0.25, 0.10],
["m21", "Uri Goldberg", "member", 0.15, 0.08, 0.12],
["m22", "Valentina Costa", "member", 0.08, 0.15, 0.10],
["m23", "Wei Zhang", "member", 0.20, 0.10, 0.08],
["m24", "Yuki Mori", "member", 0.06, 0.05, 0.18],
["m37", "Eleni Papadopoulos", "member", 0.25, 0.10, 0.10],
["m38", "Kwame Asante", "member", 0.10, 0.30, 0.08],
["m39", "Astrid Lindgren", "member", 0.08, 0.10, 0.25],
["m40", "Ravi Kapoor", "member", 0.22, 0.12, 0.10],
["m41", "Nadia Petrov", "member", 0.10, 0.28, 0.12],
["m42", "Javier Morales", "member", 0.12, 0.08, 0.22],
["m43", "Asha Nair", "member", 0.20, 0.10, 0.08],
["m44", "Pierre Dubois", "member", 0.08, 0.22, 0.10],
["m45", "Hana Novak", "member", 0.10, 0.08, 0.20],
["m46", "Kofi Mensah", "member", 0.18, 0.12, 0.06],
["m47", "Isabella Romano", "member", 0.06, 0.20, 0.10],
["m48", "Lars Eriksson", "member", 0.10, 0.06, 0.18],
];
for (const [id, name, role, govW, finW, devW] of members) {
@ -265,40 +286,77 @@ routes.get("/api/graph", async (c) => {
trustScores: { "gov-ops": govW, "fin-ops": finW, "dev-ops": devW },
},
});
edges.push({ source: id, target: spaceHubId, type: "member_of" });
edges.push({ source: id, target: daoId, type: "works_at" });
}
// ── Delegation edges: who delegates to whom, per authority ──
// Governance delegations — Alice is top steward
// Gov-ops delegations — Alice (m01) is top target, m04/m25 are secondary hubs
const govDelegations: Array<[string, string, number]> = [
["m04", "m01", 0.8], ["m05", "m01", 0.6], ["m06", "m01", 0.5],
["m07", "m04", 0.7], ["m08", "m02", 0.6], ["m09", "m01", 0.5],
["m10", "m04", 0.4], ["m11", "m05", 0.5], ["m12", "m03", 0.6],
["m13", "m02", 0.3], ["m14", "m06", 0.4], ["m15", "m01", 0.5],
["m16", "m04", 0.3], ["m17", "m05", 0.4], ["m18", "m02", 0.3],
["m19", "m03", 0.2], ["m20", "m06", 0.3], ["m21", "m01", 0.2],
["m22", "m04", 0.2], ["m23", "m02", 0.4], ["m24", "m03", 0.1],
// Council → stewards
["m04", "m01", 0.7], ["m05", "m01", 0.5], ["m06", "m01", 0.4],
["m25", "m01", 0.8], ["m26", "m01", 0.3], ["m27", "m01", 0.3],
// Council cross-delegation
["m06", "m04", 0.3], ["m26", "m25", 0.4],
// Contributors → council/stewards
["m07", "m04", 0.6], ["m08", "m25", 0.4], ["m09", "m01", 0.6],
["m10", "m04", 0.3], ["m11", "m25", 0.3], ["m12", "m04", 0.4],
["m28", "m01", 0.5], ["m29", "m25", 0.3], ["m30", "m04", 0.3],
["m31", "m01", 0.5], ["m32", "m25", 0.3], ["m33", "m04", 0.3],
["m34", "m25", 0.5], ["m35", "m04", 0.3], ["m36", "m25", 0.3],
// Members → contributors/council
["m13", "m09", 0.3], ["m14", "m28", 0.3], ["m15", "m01", 0.4],
["m16", "m04", 0.2], ["m17", "m31", 0.3], ["m18", "m09", 0.2],
["m19", "m34", 0.2], ["m20", "m25", 0.2], ["m21", "m28", 0.3],
["m22", "m04", 0.2], ["m23", "m01", 0.4], ["m24", "m31", 0.1],
["m37", "m01", 0.4], ["m38", "m25", 0.2], ["m39", "m04", 0.2],
["m40", "m09", 0.3], ["m41", "m28", 0.2], ["m42", "m25", 0.2],
["m43", "m01", 0.3], ["m44", "m04", 0.2], ["m45", "m34", 0.2],
["m46", "m25", 0.3], ["m47", "m31", 0.1], ["m48", "m04", 0.2],
];
// Financial delegations — Bob is top steward
// Fin-ops delegations — Bob (m02) is top target, m06/m26 are secondary hubs
const finDelegations: Array<[string, string, number]> = [
["m04", "m02", 0.7], ["m05", "m06", 0.6], ["m03", "m02", 0.4],
["m07", "m06", 0.5], ["m08", "m02", 0.8], ["m09", "m04", 0.3],
["m10", "m02", 0.6], ["m11", "m06", 0.5], ["m12", "m08", 0.4],
["m13", "m04", 0.3], ["m14", "m02", 0.7], ["m15", "m06", 0.3],
["m16", "m08", 0.5], ["m17", "m04", 0.2], ["m18", "m02", 0.3],
["m19", "m10", 0.2], ["m20", "m06", 0.4], ["m21", "m04", 0.1],
["m22", "m02", 0.3], ["m23", "m08", 0.2], ["m24", "m14", 0.1],
// Council → stewards
["m04", "m02", 0.6], ["m05", "m06", 0.5], ["m06", "m02", 0.7],
["m25", "m02", 0.3], ["m26", "m02", 0.8], ["m27", "m06", 0.3],
// Council cross-delegation
["m04", "m06", 0.3], ["m25", "m26", 0.3],
// Contributors → council/stewards
["m07", "m06", 0.4], ["m08", "m02", 0.7], ["m09", "m26", 0.3],
["m10", "m02", 0.6], ["m11", "m06", 0.4], ["m12", "m26", 0.3],
["m28", "m06", 0.3], ["m29", "m02", 0.6], ["m30", "m26", 0.3],
["m31", "m06", 0.3], ["m32", "m02", 0.5], ["m33", "m26", 0.3],
["m34", "m06", 0.2], ["m35", "m02", 0.6], ["m36", "m26", 0.3],
// Members → contributors/council
["m13", "m06", 0.3], ["m14", "m02", 0.5], ["m15", "m26", 0.2],
["m16", "m08", 0.4], ["m17", "m06", 0.2], ["m18", "m02", 0.3],
["m19", "m10", 0.2], ["m20", "m26", 0.4], ["m21", "m06", 0.1],
["m22", "m02", 0.3], ["m23", "m29", 0.2], ["m24", "m32", 0.1],
["m37", "m26", 0.2], ["m38", "m02", 0.4], ["m39", "m06", 0.2],
["m40", "m29", 0.2], ["m41", "m02", 0.4], ["m42", "m26", 0.1],
["m43", "m06", 0.2], ["m44", "m02", 0.3], ["m45", "m32", 0.1],
["m46", "m26", 0.2], ["m47", "m02", 0.3], ["m48", "m35", 0.1],
];
// Dev-ops delegations — Carol is top steward
// Dev-ops delegations — Carol (m03) is top target, m05/m27 are secondary hubs
const devDelegations: Array<[string, string, number]> = [
["m04", "m03", 0.5], ["m05", "m03", 0.7], ["m01", "m03", 0.4],
["m07", "m03", 0.9], ["m08", "m05", 0.4], ["m09", "m07", 0.6],
["m10", "m05", 0.5], ["m11", "m03", 0.7], ["m12", "m07", 0.5],
["m13", "m09", 0.4], ["m14", "m05", 0.2], ["m15", "m03", 0.3],
["m16", "m07", 0.4], ["m17", "m11", 0.3], ["m18", "m09", 0.2],
["m19", "m03", 0.6], ["m20", "m07", 0.2], ["m21", "m11", 0.3],
["m22", "m05", 0.2], ["m23", "m09", 0.1], ["m24", "m03", 0.3],
// Council → stewards
["m04", "m03", 0.4], ["m05", "m03", 0.7], ["m06", "m03", 0.3],
["m25", "m03", 0.3], ["m26", "m27", 0.3], ["m27", "m03", 0.7],
// Council cross-delegation
["m04", "m05", 0.3], ["m25", "m27", 0.3],
// Contributors → council/stewards
["m07", "m03", 0.7], ["m08", "m05", 0.4], ["m09", "m27", 0.4],
["m10", "m05", 0.4], ["m11", "m03", 0.7], ["m12", "m27", 0.6],
["m28", "m05", 0.3], ["m29", "m27", 0.3], ["m30", "m03", 0.6],
["m31", "m05", 0.3], ["m32", "m27", 0.3], ["m33", "m03", 0.5],
["m34", "m27", 0.3], ["m35", "m05", 0.2], ["m36", "m03", 0.6],
// Members → contributors/council
["m13", "m07", 0.4], ["m14", "m05", 0.2], ["m15", "m27", 0.3],
["m16", "m11", 0.3], ["m17", "m07", 0.2], ["m18", "m30", 0.2],
["m19", "m03", 0.5], ["m20", "m27", 0.2], ["m21", "m11", 0.2],
["m22", "m05", 0.2], ["m23", "m33", 0.1], ["m24", "m03", 0.3],
["m37", "m27", 0.2], ["m38", "m05", 0.1], ["m39", "m03", 0.3],
["m40", "m30", 0.2], ["m41", "m27", 0.2], ["m42", "m03", 0.3],
["m43", "m36", 0.1], ["m44", "m05", 0.2], ["m45", "m03", 0.3],
["m46", "m33", 0.1], ["m47", "m27", 0.2], ["m48", "m03", 0.3],
];
for (const [from, to, weight] of govDelegations) {