[{"data":1,"prerenderedAt":288},["ShallowReactive",2],{"$fOtRSSlwOf426OkB4-S4nsHktnMxED9CL8EHFLjiJV9c":3},{"newThing":4,"project":5,"cycle":9,"sections":23,"threads":243,"otherDocs":244,"documents":245,"images":246,"archiveItems":285,"links":286},"QMapDataflow wrapper — tag-driven context grouping with exportable props",{"id":6,"label":7,"liveBase":8},"qmap","Qmap",null,{"id":10,"num":11,"dir":12,"name":13,"title":14,"focus":15,"status":16,"statusNote":8,"created":17,"completed":8,"mode":8,"report":8,"recordless":18,"thumbnail":19,"imageCount":20,"artifactCount":21,"lastActivity":22,"hasPickup":18,"hasInitialPrompt":18},"c19",19,"c19.data-flow","data-flow","Data Flow","QMapDataflow wrapper with config-driven props and tag-based context grouping","unlisted","2026-03-30",false,"\u002Fcycles\u002Fqmap\u002Fc19-data-flow.png",9,0,"2026-08-15",[24,55,65,233],{"key":25,"title":26,"empty":18,"ast":27},"why","Why",{"type":28,"children":29},"root",[30],{"type":31,"tag":32,"props":33,"children":34},"element","p",{},[35,38,45,47,53],{"type":36,"value":37},"text","The c17 QMapDataflow wrapper hardcoded QMap props directly. With the c18 config schema system in place, we wanted to rebuild it on ",{"type":31,"tag":39,"props":40,"children":42},"code",{"className":41},[],[43],{"type":36,"value":44},"createQMapConfig",{"type":36,"value":46}," \u002F ",{"type":31,"tag":39,"props":48,"children":50},{"className":49},[],[51],{"type":36,"value":52},"resolveConfig",{"type":36,"value":54}," so its props are tunable via DevConfigurator and exportable for new wrappers — replacing the earlier effort rather than extending it.",{"key":56,"title":57,"empty":18,"ast":58},"objective","Objective",{"type":28,"children":59},[60],{"type":31,"tag":32,"props":61,"children":62},{},[63],{"type":36,"value":64},"Rebuild QMapDataflow as a config-driven wrapper showing one source → destination connection, with tag-based view contexts (like c14's View Mode section) and full visual tuning via the c18 control components.",{"key":66,"title":67,"empty":18,"ast":68},"key-changes","Key Changes",{"type":28,"children":69},[70],{"type":31,"tag":71,"props":72,"children":73},"ul",{},[74],{"type":31,"tag":75,"props":76,"children":77},"li",{},[78,80,86,88],{"type":36,"value":79},"2026-04-16 — Landed in the ",{"type":31,"tag":39,"props":81,"children":83},{"className":82},[],[84],{"type":36,"value":85},"c18-c22",{"type":36,"value":87}," batch commit (work recorded as starting 2026-03-30):\n",{"type":31,"tag":71,"props":89,"children":90},{},[91,126,144,180,215,228],{"type":31,"tag":75,"props":92,"children":93},{},[94,96,102,104,109,111,116,118,124],{"type":36,"value":95},"Rewrote ",{"type":31,"tag":39,"props":97,"children":99},{"className":98},[],[100],{"type":36,"value":101},"src\u002Fcomponents\u002FQMapDataflow.vue",{"type":36,"value":103}," on ",{"type":31,"tag":39,"props":105,"children":107},{"className":106},[],[108],{"type":36,"value":44},{"type":36,"value":110}," + ",{"type":31,"tag":39,"props":112,"children":114},{"className":113},[],[115],{"type":36,"value":52},{"type":36,"value":117},", with a ",{"type":31,"tag":39,"props":119,"children":121},{"className":120},[],[122],{"type":36,"value":123},"configOverrides",{"type":36,"value":125}," prop for external tuning",{"type":31,"tag":75,"props":127,"children":128},{},[129,135,137,142],{"type":31,"tag":39,"props":130,"children":132},{"className":131},[],[133],{"type":36,"value":134},"DATAFLOW_DEFAULTS",{"type":36,"value":136}," constant — QMapDataflow ships its own defaults optimized for 2-actor detail views; ",{"type":31,"tag":39,"props":138,"children":140},{"className":139},[],[141],{"type":36,"value":123},{"type":36,"value":143}," is either-or, not layered (deep-merging a full config silently resets component defaults)",{"type":31,"tag":75,"props":145,"children":146},{},[147,149,155,157,163,164,170,172,178],{"type":36,"value":148},"Added ",{"type":31,"tag":39,"props":150,"children":152},{"className":151},[],[153],{"type":36,"value":154},"highlightDataflows",{"type":36,"value":156}," option (",{"type":31,"tag":39,"props":158,"children":160},{"className":159},[],[161],{"type":36,"value":162},"'all'",{"type":36,"value":46},{"type":31,"tag":39,"props":165,"children":167},{"className":166},[],[168],{"type":36,"value":169},"'none'",{"type":36,"value":171},") to ",{"type":31,"tag":39,"props":173,"children":175},{"className":174},[],[176],{"type":36,"value":177},"qmapConfigSchema.js",{"type":36,"value":179}," to control whether flow lines draw on render",{"type":31,"tag":75,"props":181,"children":182},{},[183,185,191,193,199,200,206,207,213],{"type":36,"value":184},"New visual tuning controls via the multiplier pattern (post-hoc scale factors, no new math): ",{"type":31,"tag":39,"props":186,"children":188},{"className":187},[],[189],{"type":36,"value":190},"lineThickness",{"type":36,"value":192},", ",{"type":31,"tag":39,"props":194,"children":196},{"className":195},[],[197],{"type":36,"value":198},"rugLabelScale",{"type":36,"value":192},{"type":31,"tag":39,"props":201,"children":203},{"className":202},[],[204],{"type":36,"value":205},"actorLabelScale",{"type":36,"value":192},{"type":31,"tag":39,"props":208,"children":210},{"className":209},[],[211],{"type":36,"value":212},"rugPadding",{"type":36,"value":214},", threaded config → QMap prop → getter → composable\u002Fengine, with live updates",{"type":31,"tag":75,"props":216,"children":217},{},[218,220,226],{"type":36,"value":219},"Experiment at ",{"type":31,"tag":39,"props":221,"children":223},{"className":222},[],[224],{"type":36,"value":225},"dev\u002Fexperiments\u002Fc19.data-flow\u002F",{"type":36,"value":227}," with view mode buttons (Flat, Security Zone, Team, Infrastructure) + DevConfigurator overlay; test data of 2 focal actors, 4 context siblings, 1 richly-tagged dataflow",{"type":31,"tag":75,"props":229,"children":230},{},[231],{"type":36,"value":232},"Layer control polish: DevControlSlider always shows its current value; DevControlExport collapsed by default",{"key":234,"title":235,"empty":18,"ast":236},"outcome","Outcome",{"type":28,"children":237},[238],{"type":31,"tag":32,"props":239,"children":240},{},[241],{"type":36,"value":242},"Config-driven QMapDataflow with full visual tuning, replacing the c17 hardcoded wrapper. Established the multiplier pattern for adding visual controls without touching existing math, and surfaced the config-override merge-order lesson (full config objects as overrides must be either-or). This config-driven wrapper pattern carried into the c21\u002Fc22 session-map wrappers.",[],[],[],[247,254,258,262,266,270,274,278,282],{"src":248,"kind":249,"order":250,"caption":251,"capturedAt":252,"route":253},"\u002Fcycles\u002Fqmap\u002Fc19-security-zone.png","hero",26,"Security Zone grouping (default view)","2026-08-15T23:43:05.086Z","\u002Fexperiments\u002Fc19.data-flow\u002F",{"src":255,"kind":249,"order":256,"caption":257,"capturedAt":252,"route":253},"\u002Fcycles\u002Fqmap\u002Fc19-flat.png",27,"Flat — no grouping, pure topology",{"src":259,"kind":249,"order":260,"caption":261,"capturedAt":252,"route":253},"\u002Fcycles\u002Fqmap\u002Fc19-topology.png",28,"Topology grouping",{"src":263,"kind":249,"order":264,"caption":265,"capturedAt":252,"route":253},"\u002Fcycles\u002Fqmap\u002Fc19-geography.png",29,"Geography grouping — regions as rugs",{"src":267,"kind":249,"order":268,"caption":269,"capturedAt":252,"route":253},"\u002Fcycles\u002Fqmap\u002Fc19-team.png",30,"Team grouping",{"src":271,"kind":249,"order":272,"caption":273,"capturedAt":252,"route":253},"\u002Fcycles\u002Fqmap\u002Fc19-team-topdown.png",31,"Team grouping from above",{"src":275,"kind":249,"order":276,"caption":277,"capturedAt":252,"route":253},"\u002Fcycles\u002Fqmap\u002Fc19-zone-flatland.png",32,"Security zones in flatland projection",{"src":279,"kind":249,"order":280,"caption":281,"capturedAt":252,"route":253},"\u002Fcycles\u002Fqmap\u002Fc19-zone-highlight.png",33,"Zones with every dataflow highlighted",{"src":19,"kind":249,"order":283,"capturedAt":284,"route":253},4999,"2026-08-15T16:38:21.695Z",[],[287],{"route":253,"href":8},1794599433860]