[{"data":1,"prerenderedAt":215},["ShallowReactive",2],{"$fl2-239k6QnYOL2zTbAL_Q68K2UwuKM-T0vdLCwZoJNo":3},{"newThing":4,"project":5,"cycle":9,"sections":22,"threads":169,"otherDocs":170,"documents":171,"images":172,"archiveItems":212,"links":213},"Incremental scene diffing — actors animate in, out, and to new positions",{"id":6,"label":7,"liveBase":8},"qmap","Qmap",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},"c12",12,"c12.state-transition","state-transition","State Transition","archived","2026-03-23",false,"\u002Fcycles\u002Fqmap\u002Fc12-churn.png",9,0,"2026-08-15",[23,37,88,105,160],{"key":24,"title":25,"empty":17,"ast":26},"objective","Goal",{"type":27,"children":28},"root",[29],{"type":30,"tag":31,"props":32,"children":33},"element","p",{},[34],{"type":35,"value":36},"text","Explore animated transitions when data changes at runtime — actors entering, exiting, and moving between positions as filters are applied.",{"key":38,"title":39,"empty":17,"ast":40},"extra","What's New",{"type":27,"children":41},[42],{"type":30,"tag":43,"props":44,"children":45},"ul",{},[46,58,68,78],{"type":30,"tag":47,"props":48,"children":49},"li",{},[50,56],{"type":30,"tag":51,"props":52,"children":53},"strong",{},[54],{"type":35,"value":55},"SceneReconciler",{"type":35,"value":57}," — pure diff engine that compares current scene against a new layout and produces a transition plan (enter\u002Fexit\u002Fmove for actors, rugs, and flows)",{"type":30,"tag":47,"props":59,"children":60},{},[61,66],{"type":30,"tag":51,"props":62,"children":63},{},[64],{"type":35,"value":65},"TransitionOrchestrator",{"type":35,"value":67}," — phased animation sequencer that executes transition plans in 4 phases: EXIT → RUG RESHAPE → MOVE → ENTER, with staggered animations",{"type":30,"tag":47,"props":69,"children":70},{},[71,76],{"type":30,"tag":51,"props":72,"children":73},{},[74],{"type":35,"value":75},"Transition scenarios",{"type":35,"value":77}," — sequential filter snapshots simulating live data changes (progressive filter, scaling events, regrouping)",{"type":30,"tag":47,"props":79,"children":80},{},[81,86],{"type":30,"tag":51,"props":82,"children":83},{},[84],{"type":35,"value":85},"useTransitionPlayer",{"type":35,"value":87}," — composable wiring scenarios to reconciler + orchestrator with play\u002Fpause\u002Fstep controls",{"key":38,"title":89,"empty":17,"ast":90},"Architecture",{"type":27,"children":91},[92],{"type":30,"tag":93,"props":94,"children":98},"pre",{"className":95,"code":97,"language":35},[96],"language-text","New data (filtered actors + groupBy)\n    │\n    ▼\nLayoutEngine (unchanged, pure)\n    │\n    ▼\nSceneReconciler.diff() → TransitionPlan\n    │\n    ▼\nTransitionOrchestrator.execute(plan)\n    │\n    ▼\nPhased animations (EXIT 300ms → RUG 400ms → MOVE 500ms → ENTER 300ms)\n",[99],{"type":30,"tag":100,"props":101,"children":103},"code",{"__ignoreMap":102},"",[104],{"type":35,"value":97},{"key":38,"title":106,"empty":17,"ast":107},"Key Decisions",{"type":27,"children":108},[109],{"type":30,"tag":43,"props":110,"children":111},{},[112,122,132,142],{"type":30,"tag":47,"props":113,"children":114},{},[115,120],{"type":30,"tag":51,"props":116,"children":117},{},[118],{"type":35,"value":119},"Incremental update",{"type":35,"value":121}," over clear+redraw — filter changes typically add\u002Fremove a few actors, full rebuild would be jarring",{"type":30,"tag":47,"props":123,"children":124},{},[125,130],{"type":30,"tag":51,"props":126,"children":127},{},[128],{"type":35,"value":129},"Reconciliation pattern",{"type":35,"value":131}," — layout engine stays pure, diff logic is a separate layer",{"type":30,"tag":47,"props":133,"children":134},{},[135,140],{"type":30,"tag":51,"props":136,"children":137},{},[138],{"type":35,"value":139},"Staggered animations",{"type":35,"value":141}," — max 15 concurrent, 30ms stagger delay, capped per phase",{"type":30,"tag":47,"props":143,"children":144},{},[145,150,152,158],{"type":30,"tag":51,"props":146,"children":147},{},[148],{"type":35,"value":149},"BaseMesh tweens",{"type":35,"value":151}," reused for scale\u002Fopacity (battle-tested), ",{"type":30,"tag":100,"props":153,"children":155},{"className":154},[],[156],{"type":35,"value":157},"animateValue()",{"type":35,"value":159}," for position (new)",{"key":38,"title":161,"empty":17,"ast":162},"Built From",{"type":27,"children":163},[164],{"type":30,"tag":31,"props":165,"children":166},{},[167],{"type":35,"value":168},"C11: Grid Layout — the layout engine, entity system, and composable architecture carry forward unchanged.",[],[],[],[173,180,184,187,191,195,199,204,208],{"src":174,"kind":175,"order":176,"caption":177,"capturedAt":178,"route":179},"\u002Fcycles\u002Fqmap\u002Fc12-regroup.png","hero",91,"Regroup scenario mid-story","2026-08-16T03:06:59.862Z","\u002Fexperiments\u002Fc12.state-transition\u002F",{"src":181,"kind":175,"order":182,"caption":183,"capturedAt":178,"route":179},"\u002Fcycles\u002Fqmap\u002Fc12-scale-storm.png",92,"Scale Storm — 200 actors arriving",{"src":18,"kind":175,"order":185,"caption":186,"capturedAt":178,"route":179},93,"Churn — 100 actors cycling",{"src":188,"kind":175,"order":189,"caption":190,"capturedAt":178,"route":179},"\u002Fcycles\u002Fqmap\u002Fc12-deep-nest-drill.png",94,"Deep Nest Drill",{"src":192,"kind":175,"order":193,"caption":194,"capturedAt":178,"route":179},"\u002Fcycles\u002Fqmap\u002Fc12-static-mode.png",95,"Static mode — the c11 scenarios without transitions",{"src":196,"kind":197,"order":198},"\u002Fcycles\u002Fqmap\u002Fc12.outcomes.png","legacy",100,{"src":200,"kind":201,"order":202,"caption":203,"capturedAt":178,"route":179},"\u002Fcycles\u002Fqmap\u002Fc12-progressive-1.png","slice",1,"Progressive Filter, frame 1",{"src":205,"kind":201,"order":206,"caption":207,"capturedAt":178,"route":179},"\u002Fcycles\u002Fqmap\u002Fc12-progressive-2.png",2,"Frame 2 — vendors exiting",{"src":209,"kind":201,"order":210,"caption":211,"capturedAt":178,"route":179},"\u002Fcycles\u002Fqmap\u002Fc12-progressive-3.png",3,"Frame 3 — the narrowed field",[],[214],{"route":179,"href":8},1794599369664]