[{"data":1,"prerenderedAt":318},["ShallowReactive",2],{"$fFc7WboP56Kkip7rfWxE00u-Zk0bw6Fi5L9H0x7BNddw":3},{"newThing":4,"project":5,"cycle":9,"sections":22,"threads":273,"otherDocs":274,"documents":275,"images":276,"archiveItems":315,"links":316},"Actor-based scenarios — typed actors with rich metadata, type-colored nodes",{"id":6,"label":7,"liveBase":8},"qflow","Qflow",null,{"id":10,"num":11,"dir":12,"name":13,"title":14,"focus":8,"status":15,"statusNote":8,"created":16,"completed":8,"mode":8,"report":8,"recordless":17,"thumbnail":18,"imageCount":19,"artifactCount":20,"lastActivity":21,"hasPickup":17,"hasInitialPrompt":17},"c10",10,"c10.real-data","real-data","Real Data","active","2026-03-23",false,"\u002Fcycles\u002Fqflow\u002Fc10-devtools-iso.png",9,0,"2026-08-15",[23,37,224],{"key":24,"title":25,"empty":17,"ast":26},"why","Why",{"type":27,"children":28},"root",[29],{"type":30,"tag":31,"props":32,"children":33},"element","p",{},[34],{"type":35,"value":36},"text","The mock data system (c5-c8) used hardcoded IP arrays with flat audit-log objects. Real data from qmap uses rich actor types (app\u002Fvendor\u002Fdataset\u002Fservice) with tags, topology, and typed connections. Dev-tools SSE provides raw IP-based flows. c10 formalizes the data layer to support both formats.",{"key":38,"title":39,"empty":17,"ast":40},"extra","What Changed",{"type":27,"children":41},[42,58,120,126,131,144,150,181,187,219],{"type":30,"tag":43,"props":44,"children":46},"h3",{"id":45},"new-data-module-system",[47,49,56],{"type":35,"value":48},"New: ",{"type":30,"tag":50,"props":51,"children":53},"code",{"className":52},[],[54],{"type":35,"value":55},"data\u002F",{"type":35,"value":57}," module system",{"type":30,"tag":59,"props":60,"children":61},"ul",{},[62,74,84,94],{"type":30,"tag":63,"props":64,"children":65},"li",{},[66,72],{"type":30,"tag":67,"props":68,"children":69},"strong",{},[70],{"type":35,"value":71},"actors.js",{"type":35,"value":73}," — 15 apps, 6 services, 12 vendors, 6 datasets with full qmap-compatible metadata (tags, topology, urls)",{"type":30,"tag":63,"props":75,"children":76},{},[77,82],{"type":30,"tag":67,"props":78,"children":79},{},[80],{"type":35,"value":81},"connections.js",{"type":35,"value":83}," — Type-based connection weights (app->service: 0.4, service->dataset: 0.4, etc.), seeded PRNG pool generator",{"type":30,"tag":63,"props":85,"children":86},{},[87,92],{"type":30,"tag":67,"props":88,"children":89},{},[90],{"type":35,"value":91},"scenarios.js",{"type":35,"value":93}," — 5 presets: tiny (5), small (15), medium (30), large (39), devtools (29 IP-based actors)",{"type":30,"tag":63,"props":95,"children":96},{},[97,102,104,110,112,118],{"type":30,"tag":67,"props":98,"children":99},{},[100],{"type":35,"value":101},"generator.js",{"type":35,"value":103}," — ",{"type":30,"tag":50,"props":105,"children":107},{"className":106},[],[108],{"type":35,"value":109},"createFlowGenerator(scenario)",{"type":35,"value":111}," replaces ",{"type":30,"tag":50,"props":113,"children":115},{"className":114},[],[116],{"type":35,"value":117},"createTrafficGenerator()",{"type":35,"value":119},". Emits rich flow records with full actor references + backward-compat flat keys",{"type":30,"tag":43,"props":121,"children":123},{"id":122},"flow-record-format",[124],{"type":35,"value":125},"Flow record format",{"type":30,"tag":31,"props":127,"children":128},{},[129],{"type":35,"value":130},"Each generated flow carries both rich actor refs and flat keys:",{"type":30,"tag":132,"props":133,"children":139},"pre",{"className":134,"code":135,"language":136,"meta":137,"style":138},"language-javascript","{\n  source: { id, type, name, tags, url },     \u002F\u002F full actor\n  destination: { id, type, name, tags, url }, \u002F\u002F full actor\n  sourceAddress: source.id,                   \u002F\u002F flat lookup key\n  destinationAddress: destination.id,         \u002F\u002F flat lookup key\n  method, action, direction, port, protocol,\n  tags: { flow: [\"app->vendor\"], team: [\"platform\"], ... }\n}\n","javascript","","undefined",[140],{"type":30,"tag":50,"props":141,"children":142},{"__ignoreMap":137},[143],{"type":35,"value":135},{"type":30,"tag":43,"props":145,"children":147},{"id":146},"updated-appvue",[148],{"type":35,"value":149},"Updated: App.vue",{"type":30,"tag":59,"props":151,"children":152},{},[153,158,163,168],{"type":30,"tag":63,"props":154,"children":155},{},[156],{"type":35,"value":157},"Scenario selector in controls panel (resets scene on change)",{"type":30,"tag":63,"props":159,"children":160},{},[161],{"type":35,"value":162},"Actor-aware player creation: name from actor, color from type, favicon from url",{"type":30,"tag":63,"props":164,"children":165},{},[166],{"type":35,"value":167},"Color by type: apps=blue, vendors=pink, datasets=green, services=amber",{"type":30,"tag":63,"props":169,"children":170},{},[171,173,179],{"type":35,"value":172},"Removed ",{"type":30,"tag":50,"props":174,"children":176},{"className":175},[],[177],{"type":35,"value":178},"destinationMeta",{"type":35,"value":180}," dependency",{"type":30,"tag":43,"props":182,"children":184},{"id":183},"updated-noderegistryjs",[185],{"type":35,"value":186},"Updated: NodeRegistry.js",{"type":30,"tag":59,"props":188,"children":189},{},[190],{"type":30,"tag":63,"props":191,"children":192},{},[193,195,201,203,209,211,217],{"type":35,"value":194},"Stores ",{"type":30,"tag":50,"props":196,"children":198},{"className":197},[],[199],{"type":35,"value":200},"actor",{"type":35,"value":202}," reference alongside request totals (replaces ",{"type":30,"tag":50,"props":204,"children":206},{"className":205},[],[207],{"type":35,"value":208},"exe",{"type":35,"value":210},"\u002F",{"type":30,"tag":50,"props":212,"children":214},{"className":213},[],[215],{"type":35,"value":216},"meta",{"type":35,"value":218}," fields)",{"type":30,"tag":220,"props":221,"children":222},"style",{},[223],{"type":35,"value":137},{"key":38,"title":225,"empty":17,"ast":226},"Key Design Decisions",{"type":27,"children":227},[228],{"type":30,"tag":59,"props":229,"children":230},{},[231,244,255,268],{"type":30,"tag":63,"props":232,"children":233},{},[234,236,242],{"type":35,"value":235},"Actor IDs (e.g. ",{"type":30,"tag":50,"props":237,"children":239},{"className":238},[],[240],{"type":35,"value":241},"app-api-gateway",{"type":35,"value":243},") replace IPs as node lookup keys",{"type":30,"tag":63,"props":245,"children":246},{},[247,253],{"type":30,"tag":50,"props":248,"children":250},{"className":249},[],[251],{"type":35,"value":252},"devtools",{"type":35,"value":254}," scenario bridges to raw SSE format by wrapping IPs in actor objects",{"type":30,"tag":63,"props":256,"children":257},{},[258,260,266],{"type":35,"value":259},"LiveFeed.js unchanged — its ",{"type":30,"tag":50,"props":261,"children":263},{"className":262},[],[264],{"type":35,"value":265},"{ next() }",{"type":35,"value":267}," contract is generator-agnostic",{"type":30,"tag":63,"props":269,"children":270},{},[271],{"type":35,"value":272},"Self-contained actor data curated from qmap (not imported)",[],[],[],[277,284,288,292,296,300,303,307,312],{"src":278,"kind":279,"order":280,"caption":281,"capturedAt":282,"route":283},"\u002Fcycles\u002Fqflow\u002Fc10-medium-warm.png","hero",73,"Medium scenario (30 actors) at ~12s","2026-08-15T23:39:22.618Z","\u002Fexperiments\u002Fc10.real-data\u002F",{"src":285,"kind":279,"order":286,"caption":287,"capturedAt":282,"route":283},"\u002Fcycles\u002Fqflow\u002Fc10-tiny.png",75,"Tiny scenario — 5 actors, intimate scale",{"src":289,"kind":279,"order":290,"caption":291,"capturedAt":282,"route":283},"\u002Fcycles\u002Fqflow\u002Fc10-small.png",76,"Small scenario — 15 actors",{"src":293,"kind":279,"order":294,"caption":295,"capturedAt":282,"route":283},"\u002Fcycles\u002Fqflow\u002Fc10-large-warm.png",77,"Large scenario (39 actors) mid-discovery",{"src":297,"kind":279,"order":298,"caption":299,"capturedAt":282,"route":283},"\u002Fcycles\u002Fqflow\u002Fc10-devtools.png",79,"Dev Tools (raw) — real tool traffic shapes",{"src":18,"kind":279,"order":301,"caption":302,"capturedAt":282,"route":283},80,"Dev Tools with isometric trails",{"src":304,"kind":279,"order":305,"capturedAt":306,"route":283},"\u002Fcycles\u002Fqflow\u002Fc10-real-data.png",4999,"2026-08-15T19:12:28.650Z",{"src":308,"kind":309,"order":310,"caption":311,"capturedAt":282,"route":283},"\u002Fcycles\u002Fqflow\u002Fc10-large-full.png","full",9000,"Large fully populated",{"src":313,"kind":309,"order":310,"caption":314,"capturedAt":282,"route":283},"\u002Fcycles\u002Fqflow\u002Fc10-medium-full.png","Medium fully discovered (~25s)",[],[317],{"route":283,"href":8},1794599360746]