[{"data":1,"prerenderedAt":2344},["ShallowReactive",2],{"navigation":3,"\u002Fexamples\u002Fmembership":170,"\u002Fexamples\u002Fmembership-surround":2339},[4,25,104,150,160],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":6},"Getting Started",false,"\u002Fgetting-started","1.getting-started",[10,15,20],{"title":11,"path":12,"stem":13,"icon":14},"Introduction","\u002Fgetting-started\u002Fintroduction","1.getting-started\u002F1.introduction","i-lucide-book-open",{"title":16,"path":17,"stem":18,"icon":19},"Installation","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F2.installation","i-lucide-download",{"title":21,"path":22,"stem":23,"icon":24},"Quick start","\u002Fgetting-started\u002Fquick-start","1.getting-started\u002F3.quick-start","i-lucide-rocket",{"title":26,"icon":6,"path":27,"stem":28,"children":29,"page":6},"Guides","\u002Fguides","2.guides",[30,35,40,45,50,55,60,65,70,75,79,84,89,94,99],{"title":31,"path":32,"stem":33,"icon":34},"Seeds and TestBiome","\u002Fguides\u002Fseeds-and-testbiome","2.guides\u002F01.seeds-and-testbiome","i-lucide-sprout",{"title":36,"path":37,"stem":38,"icon":39},"Blueprints","\u002Fguides\u002Fblueprints","2.guides\u002F02.blueprints","i-lucide-drafting-compass",{"title":41,"path":42,"stem":43,"icon":44},"Customizing","\u002Fguides\u002Fcustomizing","2.guides\u002F03.customizing","i-lucide-sliders-horizontal",{"title":46,"path":47,"stem":48,"icon":49},"Parent\u002Fchild chains and .Under","\u002Fguides\u002Fparents-and-children","2.guides\u002F04.parents-and-children","i-lucide-git-fork",{"title":51,"path":52,"stem":53,"icon":54},"Fan-out","\u002Fguides\u002Ffan-out","2.guides\u002F05.fan-out","i-lucide-split",{"title":56,"path":57,"stem":58,"icon":59},"Sequences","\u002Fguides\u002Fsequences","2.guides\u002F06.sequences","i-lucide-list-ordered",{"title":61,"path":62,"stem":63,"icon":64},"Time and precision","\u002Fguides\u002Ftime-and-precision","2.guides\u002F07.time-and-precision","i-lucide-clock",{"title":66,"path":67,"stem":68,"icon":69},"Transients","\u002Fguides\u002Ftransients","2.guides\u002F08.transients","i-lucide-ghost",{"title":71,"path":72,"stem":73,"icon":74},"Aggregates","\u002Fguides\u002Faggregates","2.guides\u002F09.aggregates","i-lucide-boxes",{"title":76,"path":77,"stem":78,"icon":74},"Input blueprints","\u002Fguides\u002Finput-blueprints","2.guides\u002F09.input-blueprints",{"title":80,"path":81,"stem":82,"icon":83},"Save hooks and global defaults","\u002Fguides\u002Fsave-hooks-and-defaults","2.guides\u002F10.save-hooks-and-defaults","i-lucide-webhook",{"title":85,"path":86,"stem":87,"icon":88},"EF Core store","\u002Fguides\u002Fef-core-store","2.guides\u002F11.ef-core-store","i-lucide-database",{"title":90,"path":91,"stem":92,"icon":93},"No-DB unit tests","\u002Fguides\u002Fno-db-unit-tests","2.guides\u002F12.no-db-unit-tests","i-lucide-flask-conical",{"title":95,"path":96,"stem":97,"icon":98},"Generated grafts and scenario helpers","\u002Fguides\u002Fscenario-helpers-and-sugar","2.guides\u002F13.scenario-helpers-and-sugar","i-lucide-wand-sparkles",{"title":100,"path":101,"stem":102,"icon":103},"Constructor setup","\u002Fguides\u002Fconstructor-setup","2.guides\u002F14.constructor-setup","i-lucide-blocks",{"title":105,"path":106,"stem":107,"children":108,"icon":6},"Examples","\u002Fexamples","3.examples\u002F1.index",[109,111,116,121,126,130,135,140,145],{"title":105,"path":106,"stem":107,"icon":110},"i-lucide-library",{"title":112,"path":113,"stem":114,"icon":115},"Code reviews","\u002Fexamples\u002Fcode-reviews","3.examples\u002F2.code-reviews","i-lucide-git-pull-request",{"title":117,"path":118,"stem":119,"icon":120},"Membership","\u002Fexamples\u002Fmembership","3.examples\u002F3.membership","i-lucide-users",{"title":122,"path":123,"stem":124,"icon":125},"Board","\u002Fexamples\u002Fboard","3.examples\u002F4.board","i-lucide-kanban",{"title":127,"path":128,"stem":129,"icon":44},"Custom seed","\u002Fexamples\u002Fcustom-seed","3.examples\u002F5.custom-seed",{"title":131,"path":132,"stem":133,"icon":134},"Commerce","\u002Fexamples\u002Fcommerce","3.examples\u002F6.commerce","i-lucide-shopping-cart",{"title":136,"path":137,"stem":138,"icon":139},"Project management","\u002Fexamples\u002Fproject-management","3.examples\u002F7.project-management","i-lucide-folder-kanban",{"title":141,"path":142,"stem":143,"icon":144},"Learning","\u002Fexamples\u002Flearning","3.examples\u002F8.learning","i-lucide-graduation-cap",{"title":146,"path":147,"stem":148,"icon":149},"Docs ingest","\u002Fexamples\u002Fdocs-ingest","3.examples\u002F9.docs-ingest","i-lucide-file-search",{"title":151,"icon":6,"path":152,"stem":153,"children":154,"page":6},"Reference","\u002Freference","4.reference",[155],{"title":156,"path":157,"stem":158,"icon":159},"API cheat sheet","\u002Freference\u002Fapi-cheat-sheet","4.reference\u002F1.api-cheat-sheet","i-lucide-list-checks",{"title":161,"icon":6,"path":162,"stem":163,"children":164,"page":6},"Agent Skills","\u002Fagents","5.agents",[165],{"title":166,"path":167,"stem":168,"icon":169},"Agent skills","\u002Fagents\u002Fagent-skills","5.agents\u002F1.agent-skills","i-lucide-bot",{"id":171,"title":117,"body":172,"description":2332,"extension":2333,"links":2334,"meta":2335,"navigation":2336,"path":118,"seo":2337,"stem":119,"__hash__":2338},"docs\u002F3.examples\u002F3.membership.md",{"type":173,"value":174,"toc":2325},"minimark",[175,179,214,219,795,799,811,1399,1413,1417,1623,1627,1759,1783,1787,1801,2127,2321],[176,177,178],"p",{},"Membership setup combines several different needs: aliases under each user, expiry based on invitation time, and an organization created with its membership. This example shows when a child blueprint, a derived default, or an aggregate fits each choice.",[176,180,181,182,186,187,190,191,194,195,198,199,203,204,213],{},"Identity and membership: ",[183,184,185],"code",{},"User"," with ",[183,188,189],{},"UserAlias"," children, ",[183,192,193],{},"PendingInvitation"," with a derived expiry, and an ",[183,196,197],{},"Organization"," built from an input as an ",[200,201,202],"strong",{},"aggregate"," (organization + membership). Source: ",[205,206,210],"a",{"href":207,"rel":208},"https:\u002F\u002Fgithub.com\u002Fzeeq-ai\u002Fzeeq-biome\u002Ftree\u002Fmain\u002Ftests\u002FZeeq.Biome.Tests\u002FMembership",[209],"nofollow",[183,211,212],{},"tests\u002FZeeq.Biome.Tests\u002FMembership",".",[215,216,218],"h2",{"id":217},"the-blueprints","The blueprints",[220,221,236],"pre",{"className":222,"code":223,"filename":224,"highlights":225,"language":234,"meta":235,"style":235},"language-csharp shiki shiki-themes material-theme-lighter github-light github-dark","\u002F\u002F Root entities use configured IDs; relationship-\n\u002F\u002F dependent fields belong in child factories.\ninternal static readonly Blueprint\u003CMembershipSeed, User> User = Blueprint.For\u003C\n    MembershipSeed,\n    User\n>(ctx => new() { Id = ctx.NewId(\"user\") });\n\n\u002F\u002F With returns a new immutable variant; it never mutates User.\ninternal static readonly Blueprint\u003CMembershipSeed, User> VipUser = User.With(\n    u => u.IsVip = true\n);\n\n\u002F\u002F Wire the typed user parent; leave NormalizedValue\n\u002F\u002F null so Derive fills only absent values.\ninternal static readonly ChildBlueprint\u003CMembershipSeed, User, UserAlias> Alias =\n    Blueprint\n        .ChildOf\u003CMembershipSeed, User, UserAlias>(\n            (user, _) => new() { User = user }\n        )\n        .Derive(a => a.NormalizedValue, (a, _) => a.Value.ToUpperInvariant());\n\n\u002F\u002F Expiry derives after customizers, so changing\n\u002F\u002F CreatedAt changes the default deadline.\ninternal static readonly Blueprint\u003C\n    MembershipSeed,\n    PendingInvitation\n> Invitation = Blueprint\n    .For\u003CMembershipSeed, PendingInvitation>(ctx =>\n        new() { CreatedAt = ctx.Now }\n    )\n    .Derive(i => i.ExpiresAt, (i, _) => i.CreatedAt.AddDays(7));\n","Membership\u002FDomain.cs",[226,227,228,229,230,231,232,233],9,10,11,17,18,19,20,31,"csharp","",[183,237,238,247,253,299,308,314,374,381,387,424,447,453,458,464,470,503,509,533,570,576,628,633,639,645,658,664,670,683,708,732,738],{"__ignoreMap":235},[239,240,243],"span",{"class":241,"line":242},"line",1,[239,244,246],{"class":245},"sutJx","\u002F\u002F Root entities use configured IDs; relationship-\n",[239,248,250],{"class":241,"line":249},2,[239,251,252],{"class":245},"\u002F\u002F dependent fields belong in child factories.\n",[239,254,256,260,263,266,270,274,277,280,283,286,288,292,296],{"class":241,"line":255},3,[239,257,259],{"class":258},"sbsja","internal",[239,261,262],{"class":258}," static",[239,264,265],{"class":258}," readonly",[239,267,269],{"class":268},"sbgvK"," Blueprint",[239,271,273],{"class":272},"sP7_E","\u003C",[239,275,276],{"class":268},"MembershipSeed",[239,278,279],{"class":272},",",[239,281,282],{"class":268}," User",[239,284,285],{"class":272},">",[239,287,282],{"class":268},[239,289,291],{"class":290},"smGrS"," =",[239,293,295],{"class":294},"su5hD"," Blueprint.For",[239,297,298],{"class":290},"\u003C\n",[239,300,302,305],{"class":241,"line":301},4,[239,303,304],{"class":294},"    MembershipSeed",[239,306,307],{"class":272},",\n",[239,309,311],{"class":241,"line":310},5,[239,312,313],{"class":268},"    User\n",[239,315,317,320,323,326,329,332,335,338,341,344,346,350,353,357,361,363,366,369,371],{"class":241,"line":316},6,[239,318,319],{"class":294},">(",[239,321,322],{"class":268},"ctx",[239,324,325],{"class":294}," => ",[239,327,328],{"class":268},"new",[239,330,331],{"class":294},"() ",[239,333,334],{"class":272},"{",[239,336,337],{"class":294}," Id ",[239,339,340],{"class":290},"=",[239,342,343],{"class":294}," ctx",[239,345,213],{"class":272},[239,347,349],{"class":348},"sGLFI","NewId",[239,351,352],{"class":272},"(",[239,354,356],{"class":355},"sjJ54","\"",[239,358,360],{"class":359},"s_sjI","user",[239,362,356],{"class":355},[239,364,365],{"class":272},")",[239,367,368],{"class":272}," }",[239,370,365],{"class":294},[239,372,373],{"class":272},";\n",[239,375,377],{"class":241,"line":376},7,[239,378,380],{"emptyLinePlaceholder":379},true,"\n",[239,382,384],{"class":241,"line":383},8,[239,385,386],{"class":245},"\u002F\u002F With returns a new immutable variant; it never mutates User.\n",[239,388,391,393,395,397,399,401,403,405,407,409,412,414,416,418,421],{"class":389,"line":226},[241,390],"highlight",[239,392,259],{"class":258},[239,394,262],{"class":258},[239,396,265],{"class":258},[239,398,269],{"class":268},[239,400,273],{"class":272},[239,402,276],{"class":268},[239,404,279],{"class":272},[239,406,282],{"class":268},[239,408,285],{"class":272},[239,410,411],{"class":268}," VipUser",[239,413,291],{"class":290},[239,415,282],{"class":294},[239,417,213],{"class":272},[239,419,420],{"class":348},"With",[239,422,423],{"class":272},"(\n",[239,425,427,430,433,436,438,441,443],{"class":426,"line":227},[241,390],[239,428,429],{"class":268},"    u",[239,431,432],{"class":290}," =>",[239,434,435],{"class":294}," u",[239,437,213],{"class":272},[239,439,440],{"class":294},"IsVip ",[239,442,340],{"class":290},[239,444,446],{"class":445},"syTEX"," true\n",[239,448,450],{"class":449,"line":228},[241,390],[239,451,452],{"class":272},");\n",[239,454,456],{"class":241,"line":455},12,[239,457,380],{"emptyLinePlaceholder":379},[239,459,461],{"class":241,"line":460},13,[239,462,463],{"class":245},"\u002F\u002F Wire the typed user parent; leave NormalizedValue\n",[239,465,467],{"class":241,"line":466},14,[239,468,469],{"class":245},"\u002F\u002F null so Derive fills only absent values.\n",[239,471,473,475,477,479,482,484,486,488,490,492,495,497,500],{"class":241,"line":472},15,[239,474,259],{"class":258},[239,476,262],{"class":258},[239,478,265],{"class":258},[239,480,481],{"class":268}," ChildBlueprint",[239,483,273],{"class":272},[239,485,276],{"class":268},[239,487,279],{"class":272},[239,489,282],{"class":268},[239,491,279],{"class":272},[239,493,494],{"class":268}," UserAlias",[239,496,285],{"class":272},[239,498,499],{"class":268}," Alias",[239,501,502],{"class":290}," =\n",[239,504,506],{"class":241,"line":505},16,[239,507,508],{"class":294},"    Blueprint\n",[239,510,512,515,518,520,522,524,526,528,530],{"class":511,"line":229},[241,390],[239,513,514],{"class":272},"        .",[239,516,517],{"class":348},"ChildOf",[239,519,273],{"class":272},[239,521,276],{"class":268},[239,523,279],{"class":272},[239,525,282],{"class":268},[239,527,279],{"class":272},[239,529,494],{"class":268},[239,531,532],{"class":272},">(\n",[239,534,536,539,541,543,546,548,550,553,556,559,562,564,567],{"class":535,"line":230},[241,390],[239,537,538],{"class":272},"            (",[239,540,360],{"class":268},[239,542,279],{"class":272},[239,544,545],{"class":268}," _",[239,547,365],{"class":272},[239,549,432],{"class":290},[239,551,552],{"class":290}," new",[239,554,555],{"class":272},"()",[239,557,558],{"class":272}," {",[239,560,561],{"class":294}," User ",[239,563,340],{"class":290},[239,565,566],{"class":294}," user ",[239,568,569],{"class":272},"}\n",[239,571,573],{"class":572,"line":231},[241,390],[239,574,575],{"class":272},"        )\n",[239,577,579,581,584,586,588,590,593,595,598,600,603,605,607,609,611,613,615,617,620,622,625],{"class":578,"line":232},[241,390],[239,580,514],{"class":272},[239,582,583],{"class":348},"Derive",[239,585,352],{"class":272},[239,587,205],{"class":268},[239,589,432],{"class":290},[239,591,592],{"class":294}," a",[239,594,213],{"class":272},[239,596,597],{"class":294},"NormalizedValue",[239,599,279],{"class":272},[239,601,602],{"class":272}," (",[239,604,205],{"class":268},[239,606,279],{"class":272},[239,608,545],{"class":268},[239,610,365],{"class":272},[239,612,432],{"class":290},[239,614,592],{"class":294},[239,616,213],{"class":272},[239,618,619],{"class":294},"Value",[239,621,213],{"class":272},[239,623,624],{"class":348},"ToUpperInvariant",[239,626,627],{"class":272},"());\n",[239,629,631],{"class":241,"line":630},21,[239,632,380],{"emptyLinePlaceholder":379},[239,634,636],{"class":241,"line":635},22,[239,637,638],{"class":245},"\u002F\u002F Expiry derives after customizers, so changing\n",[239,640,642],{"class":241,"line":641},23,[239,643,644],{"class":245},"\u002F\u002F CreatedAt changes the default deadline.\n",[239,646,648,650,652,654,656],{"class":241,"line":647},24,[239,649,259],{"class":258},[239,651,262],{"class":258},[239,653,265],{"class":258},[239,655,269],{"class":294},[239,657,298],{"class":290},[239,659,661],{"class":241,"line":660},25,[239,662,663],{"class":294},"    MembershipSeed,\n",[239,665,667],{"class":241,"line":666},26,[239,668,669],{"class":294},"    PendingInvitation\n",[239,671,673,675,678,680],{"class":241,"line":672},27,[239,674,285],{"class":290},[239,676,677],{"class":294}," Invitation ",[239,679,340],{"class":290},[239,681,682],{"class":294}," Blueprint\n",[239,684,686,689,692,694,696,698,701,703,705],{"class":241,"line":685},28,[239,687,688],{"class":272},"    .",[239,690,691],{"class":348},"For",[239,693,273],{"class":272},[239,695,276],{"class":268},[239,697,279],{"class":272},[239,699,700],{"class":268}," PendingInvitation",[239,702,319],{"class":272},[239,704,322],{"class":268},[239,706,707],{"class":290}," =>\n",[239,709,711,714,716,718,721,723,725,727,730],{"class":241,"line":710},29,[239,712,713],{"class":290},"        new",[239,715,555],{"class":272},[239,717,558],{"class":272},[239,719,720],{"class":294}," CreatedAt ",[239,722,340],{"class":290},[239,724,343],{"class":294},[239,726,213],{"class":272},[239,728,729],{"class":294},"Now ",[239,731,569],{"class":272},[239,733,735],{"class":241,"line":734},30,[239,736,737],{"class":272},"    )\n",[239,739,741,743,745,747,750,752,755,757,760,762,764,766,768,770,772,774,776,778,781,783,786,788,792],{"class":740,"line":233},[241,390],[239,742,688],{"class":272},[239,744,583],{"class":348},[239,746,352],{"class":272},[239,748,749],{"class":268},"i",[239,751,432],{"class":290},[239,753,754],{"class":294}," i",[239,756,213],{"class":272},[239,758,759],{"class":294},"ExpiresAt",[239,761,279],{"class":272},[239,763,602],{"class":272},[239,765,749],{"class":268},[239,767,279],{"class":272},[239,769,545],{"class":268},[239,771,365],{"class":272},[239,773,432],{"class":290},[239,775,754],{"class":294},[239,777,213],{"class":272},[239,779,780],{"class":294},"CreatedAt",[239,782,213],{"class":272},[239,784,785],{"class":348},"AddDays",[239,787,352],{"class":272},[239,789,791],{"class":790},"srdBf","7",[239,793,794],{"class":272},"));\n",[215,796,798],{"id":797},"aliases-fan-out-per-user","Aliases fan out per user",[176,800,801,802,805,806,808,809,213],{},"Two users × two alias customizers = ",[200,803,804],{},"four"," aliases. An explicit ",[183,807,597],{}," survives the fill-only ",[183,810,583],{},[812,813,814,1006],"code-group",{},[220,815,819],{"className":222,"code":816,"filename":817,"highlights":818,"language":234,"meta":235,"style":235},"await TestBiome\n    .Start(out _)\n    .AddUsers(out var users, 2)\n    .AddAliases(\n        out var aliases,\n        a => a.Value = \"Alice\",\n        a =>\n        {\n            a.Value = \"Bob\";\n            a.NormalizedValue = \"manual\";\n        }\n    )\n    .BuildAsync();\n\n\u002F\u002F aliases.Length == 4; aliases[0].NormalizedValue == \"ALICE\";\n\u002F\u002F aliases[3].NormalizedValue == \"manual\"\n","With Biome",[316,383,226,227],[183,820,821,829,846,871,880,892,919,925,931,952,973,978,982,992,996,1001],{"__ignoreMap":235},[239,822,823,826],{"class":241,"line":242},[239,824,825],{"class":290},"await",[239,827,828],{"class":294}," TestBiome\n",[239,830,831,833,836,838,841,843],{"class":241,"line":249},[239,832,688],{"class":272},[239,834,835],{"class":348},"Start",[239,837,352],{"class":272},[239,839,840],{"class":258},"out",[239,842,545],{"class":294},[239,844,845],{"class":272},")\n",[239,847,848,850,853,855,857,861,864,866,869],{"class":241,"line":255},[239,849,688],{"class":272},[239,851,852],{"class":348},"AddUsers",[239,854,352],{"class":272},[239,856,840],{"class":258},[239,858,860],{"class":859},"sG8yY"," var",[239,862,863],{"class":268}," users",[239,865,279],{"class":272},[239,867,868],{"class":790}," 2",[239,870,845],{"class":272},[239,872,873,875,878],{"class":241,"line":301},[239,874,688],{"class":272},[239,876,877],{"class":348},"AddAliases",[239,879,423],{"class":272},[239,881,882,885,887,890],{"class":241,"line":310},[239,883,884],{"class":258},"        out",[239,886,860],{"class":859},[239,888,889],{"class":268}," aliases",[239,891,307],{"class":272},[239,893,895,898,900,902,904,907,909,912,915,917],{"class":894,"line":316},[241,390],[239,896,897],{"class":268},"        a",[239,899,432],{"class":290},[239,901,592],{"class":294},[239,903,213],{"class":272},[239,905,906],{"class":294},"Value ",[239,908,340],{"class":290},[239,910,911],{"class":355}," \"",[239,913,914],{"class":359},"Alice",[239,916,356],{"class":355},[239,918,307],{"class":272},[239,920,921,923],{"class":241,"line":376},[239,922,897],{"class":268},[239,924,707],{"class":290},[239,926,928],{"class":927,"line":383},[241,390],[239,929,930],{"class":272},"        {\n",[239,932,934,937,939,941,943,945,948,950],{"class":933,"line":226},[241,390],[239,935,936],{"class":294},"            a",[239,938,213],{"class":272},[239,940,906],{"class":294},[239,942,340],{"class":290},[239,944,911],{"class":355},[239,946,947],{"class":359},"Bob",[239,949,356],{"class":355},[239,951,373],{"class":272},[239,953,955,957,959,962,964,966,969,971],{"class":954,"line":227},[241,390],[239,956,936],{"class":294},[239,958,213],{"class":272},[239,960,961],{"class":294},"NormalizedValue ",[239,963,340],{"class":290},[239,965,911],{"class":355},[239,967,968],{"class":359},"manual",[239,970,356],{"class":355},[239,972,373],{"class":272},[239,974,975],{"class":241,"line":228},[239,976,977],{"class":272},"        }\n",[239,979,980],{"class":241,"line":455},[239,981,737],{"class":272},[239,983,984,986,989],{"class":241,"line":460},[239,985,688],{"class":272},[239,987,988],{"class":348},"BuildAsync",[239,990,991],{"class":272},"();\n",[239,993,994],{"class":241,"line":466},[239,995,380],{"emptyLinePlaceholder":379},[239,997,998],{"class":241,"line":472},[239,999,1000],{"class":245},"\u002F\u002F aliases.Length == 4; aliases[0].NormalizedValue == \"ALICE\";\n",[239,1002,1003],{"class":241,"line":505},[239,1004,1005],{"class":245},"\u002F\u002F aliases[3].NormalizedValue == \"manual\"\n",[1007,1008,1011],"code-collapse",{"label":1009,"name":1010},"Without Biome","setup",[220,1012,1014],{"className":222,"code":1013,"language":234,"meta":235,"style":235},"var alice = new User { Id = $\"user_{Guid.CreateVersion7():N}\" };\nvar bob = new User { Id = $\"user_{Guid.CreateVersion7():N}\" };\nvar users = new[] { alice, bob };\n\nvar aliases = new List\u003CUserAlias>();\nforeach (var user in users)\n{\n    aliases.Add(\n        new UserAlias\n        {\n            User = user,\n            Value = \"Alice\",\n            NormalizedValue = \"ALICE\",\n        }\n    );\n    aliases.Add(\n        new UserAlias\n        {\n            User = user,\n            Value = \"Bob\",\n            NormalizedValue = \"manual\",\n        }\n    );\n}\n\ndb.AddRange(seed.Owner);\ndb.AddRange(users);\ndb.AddRange(aliases);\nawait db.SaveChangesAsync();\n",[183,1015,1016,1068,1111,1136,1140,1160,1180,1185,1197,1204,1208,1219,1234,1250,1254,1259,1269,1275,1279,1289,1303,1317,1321,1325,1329,1333,1355,1370,1385],{"__ignoreMap":235},[239,1017,1018,1021,1024,1026,1028,1030,1032,1034,1036,1039,1042,1044,1047,1049,1052,1054,1057,1060,1063,1065],{"class":241,"line":242},[239,1019,1020],{"class":859},"var",[239,1022,1023],{"class":268}," alice",[239,1025,291],{"class":290},[239,1027,552],{"class":290},[239,1029,282],{"class":268},[239,1031,558],{"class":272},[239,1033,337],{"class":294},[239,1035,340],{"class":290},[239,1037,1038],{"class":355}," $\"",[239,1040,1041],{"class":359},"user_",[239,1043,334],{"class":355},[239,1045,1046],{"class":294},"Guid",[239,1048,213],{"class":355},[239,1050,1051],{"class":348},"CreateVersion7",[239,1053,555],{"class":355},[239,1055,1056],{"class":290},":",[239,1058,1059],{"class":294},"N",[239,1061,1062],{"class":355},"}",[239,1064,356],{"class":355},[239,1066,1067],{"class":272}," };\n",[239,1069,1070,1072,1075,1077,1079,1081,1083,1085,1087,1089,1091,1093,1095,1097,1099,1101,1103,1105,1107,1109],{"class":241,"line":249},[239,1071,1020],{"class":859},[239,1073,1074],{"class":268}," bob",[239,1076,291],{"class":290},[239,1078,552],{"class":290},[239,1080,282],{"class":268},[239,1082,558],{"class":272},[239,1084,337],{"class":294},[239,1086,340],{"class":290},[239,1088,1038],{"class":355},[239,1090,1041],{"class":359},[239,1092,334],{"class":355},[239,1094,1046],{"class":294},[239,1096,213],{"class":355},[239,1098,1051],{"class":348},[239,1100,555],{"class":355},[239,1102,1056],{"class":290},[239,1104,1059],{"class":294},[239,1106,1062],{"class":355},[239,1108,356],{"class":355},[239,1110,1067],{"class":272},[239,1112,1113,1115,1117,1119,1121,1124,1126,1128,1130,1133],{"class":241,"line":255},[239,1114,1020],{"class":859},[239,1116,863],{"class":268},[239,1118,291],{"class":290},[239,1120,552],{"class":290},[239,1122,1123],{"class":272},"[]",[239,1125,558],{"class":272},[239,1127,1023],{"class":294},[239,1129,279],{"class":272},[239,1131,1132],{"class":294}," bob ",[239,1134,1135],{"class":272},"};\n",[239,1137,1138],{"class":241,"line":301},[239,1139,380],{"emptyLinePlaceholder":379},[239,1141,1142,1144,1146,1148,1150,1153,1155,1157],{"class":241,"line":310},[239,1143,1020],{"class":859},[239,1145,889],{"class":268},[239,1147,291],{"class":290},[239,1149,552],{"class":290},[239,1151,1152],{"class":268}," List",[239,1154,273],{"class":272},[239,1156,189],{"class":268},[239,1158,1159],{"class":272},">();\n",[239,1161,1162,1166,1168,1170,1173,1176,1178],{"class":241,"line":316},[239,1163,1165],{"class":1164},"sVHd0","foreach",[239,1167,602],{"class":272},[239,1169,1020],{"class":859},[239,1171,1172],{"class":268}," user",[239,1174,1175],{"class":1164}," in",[239,1177,863],{"class":294},[239,1179,845],{"class":272},[239,1181,1182],{"class":241,"line":376},[239,1183,1184],{"class":272},"{\n",[239,1186,1187,1190,1192,1195],{"class":241,"line":383},[239,1188,1189],{"class":294},"    aliases",[239,1191,213],{"class":272},[239,1193,1194],{"class":348},"Add",[239,1196,423],{"class":272},[239,1198,1199,1201],{"class":241,"line":226},[239,1200,713],{"class":290},[239,1202,1203],{"class":268}," UserAlias\n",[239,1205,1206],{"class":241,"line":227},[239,1207,930],{"class":272},[239,1209,1210,1213,1215,1217],{"class":241,"line":228},[239,1211,1212],{"class":294},"            User ",[239,1214,340],{"class":290},[239,1216,1172],{"class":294},[239,1218,307],{"class":272},[239,1220,1221,1224,1226,1228,1230,1232],{"class":241,"line":455},[239,1222,1223],{"class":294},"            Value ",[239,1225,340],{"class":290},[239,1227,911],{"class":355},[239,1229,914],{"class":359},[239,1231,356],{"class":355},[239,1233,307],{"class":272},[239,1235,1236,1239,1241,1243,1246,1248],{"class":241,"line":460},[239,1237,1238],{"class":294},"            NormalizedValue ",[239,1240,340],{"class":290},[239,1242,911],{"class":355},[239,1244,1245],{"class":359},"ALICE",[239,1247,356],{"class":355},[239,1249,307],{"class":272},[239,1251,1252],{"class":241,"line":466},[239,1253,977],{"class":272},[239,1255,1256],{"class":241,"line":472},[239,1257,1258],{"class":272},"    );\n",[239,1260,1261,1263,1265,1267],{"class":241,"line":505},[239,1262,1189],{"class":294},[239,1264,213],{"class":272},[239,1266,1194],{"class":348},[239,1268,423],{"class":272},[239,1270,1271,1273],{"class":241,"line":229},[239,1272,713],{"class":290},[239,1274,1203],{"class":268},[239,1276,1277],{"class":241,"line":230},[239,1278,930],{"class":272},[239,1280,1281,1283,1285,1287],{"class":241,"line":231},[239,1282,1212],{"class":294},[239,1284,340],{"class":290},[239,1286,1172],{"class":294},[239,1288,307],{"class":272},[239,1290,1291,1293,1295,1297,1299,1301],{"class":241,"line":232},[239,1292,1223],{"class":294},[239,1294,340],{"class":290},[239,1296,911],{"class":355},[239,1298,947],{"class":359},[239,1300,356],{"class":355},[239,1302,307],{"class":272},[239,1304,1305,1307,1309,1311,1313,1315],{"class":241,"line":630},[239,1306,1238],{"class":294},[239,1308,340],{"class":290},[239,1310,911],{"class":355},[239,1312,968],{"class":359},[239,1314,356],{"class":355},[239,1316,307],{"class":272},[239,1318,1319],{"class":241,"line":635},[239,1320,977],{"class":272},[239,1322,1323],{"class":241,"line":641},[239,1324,1258],{"class":272},[239,1326,1327],{"class":241,"line":647},[239,1328,569],{"class":272},[239,1330,1331],{"class":241,"line":660},[239,1332,380],{"emptyLinePlaceholder":379},[239,1334,1335,1338,1340,1343,1345,1348,1350,1353],{"class":241,"line":666},[239,1336,1337],{"class":294},"db",[239,1339,213],{"class":272},[239,1341,1342],{"class":348},"AddRange",[239,1344,352],{"class":272},[239,1346,1347],{"class":294},"seed",[239,1349,213],{"class":272},[239,1351,1352],{"class":294},"Owner",[239,1354,452],{"class":272},[239,1356,1357,1359,1361,1363,1365,1368],{"class":241,"line":672},[239,1358,1337],{"class":294},[239,1360,213],{"class":272},[239,1362,1342],{"class":348},[239,1364,352],{"class":272},[239,1366,1367],{"class":294},"users",[239,1369,452],{"class":272},[239,1371,1372,1374,1376,1378,1380,1383],{"class":241,"line":685},[239,1373,1337],{"class":294},[239,1375,213],{"class":272},[239,1377,1342],{"class":348},[239,1379,352],{"class":272},[239,1381,1382],{"class":294},"aliases",[239,1384,452],{"class":272},[239,1386,1387,1389,1392,1394,1397],{"class":241,"line":710},[239,1388,825],{"class":290},[239,1390,1391],{"class":294}," db",[239,1393,213],{"class":272},[239,1395,1396],{"class":348},"SaveChangesAsync",[239,1398,991],{"class":272},[1400,1401,1402],"note",{},[176,1403,1404,1405,1408,1409,1412],{},"The normalization rule lives ",[200,1406,1407],{},"once",", in the blueprint. Without Biome, each test restates ",[183,1410,1411],{},"\"ALICE\""," by hand, and the rule can drift.",[215,1414,1416],{"id":1415},"derived-expiry-follows-customized-creation-time","Derived expiry follows customized creation time",[220,1418,1422],{"className":222,"code":1419,"filename":1420,"highlights":1421,"language":234,"meta":235,"style":235},"var created = new DateTimeOffset(2026, 1, 1, 0, 0, 0, TimeSpan.Zero);\n\nawait TestBiome\n    .Start(out _)\n    .AddInvitations(\n        out var invitations,\n        i => i.CreatedAt = created,\n        i =>\n        {\n            i.CreatedAt = created;\n            i.ExpiresAt = created.AddDays(1);\n        }\n    )\n    .BuildAsync();\n\n\u002F\u002F invitations[0].ExpiresAt == created.AddDays(7)   (derived)\n\u002F\u002F invitations[1].ExpiresAt == created.AddDays(1)   (explicit, kept)\n","MembershipTests.cs",[376,226,227],[183,1423,1424,1477,1481,1487,1501,1510,1521,1542,1548,1553,1569,1593,1597,1601,1609,1613,1618],{"__ignoreMap":235},[239,1425,1426,1428,1431,1433,1435,1438,1440,1443,1445,1448,1450,1452,1454,1457,1459,1461,1463,1465,1467,1470,1472,1475],{"class":241,"line":242},[239,1427,1020],{"class":859},[239,1429,1430],{"class":268}," created",[239,1432,291],{"class":290},[239,1434,552],{"class":290},[239,1436,1437],{"class":268}," DateTimeOffset",[239,1439,352],{"class":272},[239,1441,1442],{"class":790},"2026",[239,1444,279],{"class":272},[239,1446,1447],{"class":790}," 1",[239,1449,279],{"class":272},[239,1451,1447],{"class":790},[239,1453,279],{"class":272},[239,1455,1456],{"class":790}," 0",[239,1458,279],{"class":272},[239,1460,1456],{"class":790},[239,1462,279],{"class":272},[239,1464,1456],{"class":790},[239,1466,279],{"class":272},[239,1468,1469],{"class":294}," TimeSpan",[239,1471,213],{"class":272},[239,1473,1474],{"class":294},"Zero",[239,1476,452],{"class":272},[239,1478,1479],{"class":241,"line":249},[239,1480,380],{"emptyLinePlaceholder":379},[239,1482,1483,1485],{"class":241,"line":255},[239,1484,825],{"class":290},[239,1486,828],{"class":294},[239,1488,1489,1491,1493,1495,1497,1499],{"class":241,"line":301},[239,1490,688],{"class":272},[239,1492,835],{"class":348},[239,1494,352],{"class":272},[239,1496,840],{"class":258},[239,1498,545],{"class":294},[239,1500,845],{"class":272},[239,1502,1503,1505,1508],{"class":241,"line":310},[239,1504,688],{"class":272},[239,1506,1507],{"class":348},"AddInvitations",[239,1509,423],{"class":272},[239,1511,1512,1514,1516,1519],{"class":241,"line":316},[239,1513,884],{"class":258},[239,1515,860],{"class":859},[239,1517,1518],{"class":268}," invitations",[239,1520,307],{"class":272},[239,1522,1524,1527,1529,1531,1533,1536,1538,1540],{"class":1523,"line":376},[241,390],[239,1525,1526],{"class":268},"        i",[239,1528,432],{"class":290},[239,1530,754],{"class":294},[239,1532,213],{"class":272},[239,1534,1535],{"class":294},"CreatedAt ",[239,1537,340],{"class":290},[239,1539,1430],{"class":294},[239,1541,307],{"class":272},[239,1543,1544,1546],{"class":241,"line":383},[239,1545,1526],{"class":268},[239,1547,707],{"class":290},[239,1549,1551],{"class":1550,"line":226},[241,390],[239,1552,930],{"class":272},[239,1554,1556,1559,1561,1563,1565,1567],{"class":1555,"line":227},[241,390],[239,1557,1558],{"class":294},"            i",[239,1560,213],{"class":272},[239,1562,1535],{"class":294},[239,1564,340],{"class":290},[239,1566,1430],{"class":294},[239,1568,373],{"class":272},[239,1570,1571,1573,1575,1578,1580,1582,1584,1586,1588,1591],{"class":241,"line":228},[239,1572,1558],{"class":294},[239,1574,213],{"class":272},[239,1576,1577],{"class":294},"ExpiresAt ",[239,1579,340],{"class":290},[239,1581,1430],{"class":294},[239,1583,213],{"class":272},[239,1585,785],{"class":348},[239,1587,352],{"class":272},[239,1589,1590],{"class":790},"1",[239,1592,452],{"class":272},[239,1594,1595],{"class":241,"line":455},[239,1596,977],{"class":272},[239,1598,1599],{"class":241,"line":460},[239,1600,737],{"class":272},[239,1602,1603,1605,1607],{"class":241,"line":466},[239,1604,688],{"class":272},[239,1606,988],{"class":348},[239,1608,991],{"class":272},[239,1610,1611],{"class":241,"line":472},[239,1612,380],{"emptyLinePlaceholder":379},[239,1614,1615],{"class":241,"line":505},[239,1616,1617],{"class":245},"\u002F\u002F invitations[0].ExpiresAt == created.AddDays(7)   (derived)\n",[239,1619,1620],{"class":241,"line":229},[239,1621,1622],{"class":245},"\u002F\u002F invitations[1].ExpiresAt == created.AddDays(1)   (explicit, kept)\n",[215,1624,1626],{"id":1625},"variants-never-mutate-the-original","Variants never mutate the original",[220,1628,1631],{"className":222,"code":1629,"filename":1420,"highlights":1630,"language":234,"meta":235,"style":235},"await TestBiome\n    .Start(out _)\n    .AddOne(Blueprints.VipUser, out var vip)\n    .AddUser(out var ordinary)\n    \u002F\u002F Keep the explicit empty normalized string:\n    \u002F\u002F call site wins, nothing overwrites.\n    .AddAlias(out var alias, a => a.NormalizedValue = \"\")\n    .BuildAsync();\n\u002F\u002F vip.IsVip is true; ordinary.IsVip is false; alias.NormalizedValue == \"\"\n",[255,376],[183,1632,1633,1639,1653,1682,1700,1705,1710,1746,1754],{"__ignoreMap":235},[239,1634,1635,1637],{"class":241,"line":242},[239,1636,825],{"class":290},[239,1638,828],{"class":294},[239,1640,1641,1643,1645,1647,1649,1651],{"class":241,"line":249},[239,1642,688],{"class":272},[239,1644,835],{"class":348},[239,1646,352],{"class":272},[239,1648,840],{"class":258},[239,1650,545],{"class":294},[239,1652,845],{"class":272},[239,1654,1656,1658,1661,1663,1665,1667,1670,1672,1675,1677,1680],{"class":1655,"line":255},[241,390],[239,1657,688],{"class":272},[239,1659,1660],{"class":348},"AddOne",[239,1662,352],{"class":272},[239,1664,36],{"class":294},[239,1666,213],{"class":272},[239,1668,1669],{"class":294},"VipUser",[239,1671,279],{"class":272},[239,1673,1674],{"class":258}," out",[239,1676,860],{"class":859},[239,1678,1679],{"class":268}," vip",[239,1681,845],{"class":272},[239,1683,1684,1686,1689,1691,1693,1695,1698],{"class":241,"line":301},[239,1685,688],{"class":272},[239,1687,1688],{"class":348},"AddUser",[239,1690,352],{"class":272},[239,1692,840],{"class":258},[239,1694,860],{"class":859},[239,1696,1697],{"class":268}," ordinary",[239,1699,845],{"class":272},[239,1701,1702],{"class":241,"line":310},[239,1703,1704],{"class":245},"    \u002F\u002F Keep the explicit empty normalized string:\n",[239,1706,1707],{"class":241,"line":316},[239,1708,1709],{"class":245},"    \u002F\u002F call site wins, nothing overwrites.\n",[239,1711,1713,1715,1718,1720,1722,1724,1727,1729,1731,1733,1735,1737,1739,1741,1744],{"class":1712,"line":376},[241,390],[239,1714,688],{"class":272},[239,1716,1717],{"class":348},"AddAlias",[239,1719,352],{"class":272},[239,1721,840],{"class":258},[239,1723,860],{"class":859},[239,1725,1726],{"class":268}," alias",[239,1728,279],{"class":272},[239,1730,592],{"class":268},[239,1732,432],{"class":290},[239,1734,592],{"class":294},[239,1736,213],{"class":272},[239,1738,961],{"class":294},[239,1740,340],{"class":290},[239,1742,1743],{"class":355}," \"\"",[239,1745,845],{"class":272},[239,1747,1748,1750,1752],{"class":241,"line":383},[239,1749,688],{"class":272},[239,1751,988],{"class":348},[239,1753,991],{"class":272},[239,1755,1756],{"class":241,"line":226},[239,1757,1758],{"class":245},"\u002F\u002F vip.IsVip is true; ordinary.IsVip is false; alias.NormalizedValue == \"\"\n",[1760,1761,1762],"caution",{},[176,1763,1764,1765,1768,1769,1772,1773,1776,1777,1779,1780,213],{},"An empty string counts as ",[200,1766,1767],{},"explicitly set",", so ",[183,1770,1771],{},"NormalizedValue = \"\""," is kept, while leaving it ",[183,1774,1775],{},"null"," lets the ",[183,1778,583],{}," fill it. See ",[205,1781,41],{"href":1782},"\u002Fguides\u002Fcustomizing#what-counts-as-unset",[215,1784,1786],{"id":1785},"an-organization-as-an-aggregate","An organization as an aggregate",[176,1788,1789,1790,1792,1793,1796,1797,1800],{},"One input becomes an ",[183,1791,197],{}," plus its ",[183,1794,1795],{},"OrganizationMembership",". At save, the ",[200,1798,1799],{},"parts"," replace the wrapper, after the seed owner:",[220,1802,1805],{"className":222,"code":1803,"filename":224,"highlights":1804,"language":234,"meta":235,"style":235},"internal sealed record OrganizationGraph(\n    Organization Organization,\n    OrganizationMembership Membership\n) : IBiomeAggregate\n{\n    public IEnumerable\u003Cobject> GetEntities() => [Organization, Membership];\n}\n\ninternal static readonly InputBlueprint\u003C\n    MembershipSeed,\n    OrganizationInput,\n    OrganizationGraph\n> Organization = Blueprint.FromInput\u003C\n    MembershipSeed,\n    OrganizationInput,\n    OrganizationGraph\n>(\n    () => new(),\n    (input, ctx) =>\n    {\n        var org = new Organization { Slug = input.Slug };\n        return new(\n            org,\n            new()\n            {\n                Organization = org,\n                User = ctx.Seed.Owner,\n                IsDefault = input.IsDefault,\n            }\n        );\n    }\n);\n",[242,249,255,301,316,460,466,472,505,229],[183,1806,1807,1823,1834,1843,1854,1858,1894,1898,1902,1915,1919,1924,1929,1944,1949,1954,1959,1966,1979,1995,2000,2031,2040,2047,2055,2060,2071,2091,2107,2112,2117,2122],{"__ignoreMap":235},[239,1808,1810,1812,1815,1818,1821],{"class":1809,"line":242},[241,390],[239,1811,259],{"class":258},[239,1813,1814],{"class":258}," sealed",[239,1816,1817],{"class":859}," record",[239,1819,1820],{"class":268}," OrganizationGraph",[239,1822,423],{"class":272},[239,1824,1826,1829,1832],{"class":1825,"line":249},[241,390],[239,1827,1828],{"class":268},"    Organization",[239,1830,1831],{"class":268}," Organization",[239,1833,307],{"class":272},[239,1835,1837,1840],{"class":1836,"line":255},[241,390],[239,1838,1839],{"class":268},"    OrganizationMembership",[239,1841,1842],{"class":268}," Membership\n",[239,1844,1846,1848,1851],{"class":1845,"line":301},[241,390],[239,1847,365],{"class":272},[239,1849,1850],{"class":272}," :",[239,1852,1853],{"class":268}," IBiomeAggregate\n",[239,1855,1856],{"class":241,"line":310},[239,1857,1184],{"class":272},[239,1859,1861,1864,1867,1869,1872,1874,1877,1879,1881,1884,1886,1888,1891],{"class":1860,"line":316},[241,390],[239,1862,1863],{"class":258},"    public",[239,1865,1866],{"class":268}," IEnumerable",[239,1868,273],{"class":272},[239,1870,1871],{"class":290},"object",[239,1873,285],{"class":272},[239,1875,1876],{"class":348}," GetEntities",[239,1878,555],{"class":272},[239,1880,432],{"class":290},[239,1882,1883],{"class":272}," [",[239,1885,197],{"class":294},[239,1887,279],{"class":272},[239,1889,1890],{"class":294}," Membership",[239,1892,1893],{"class":272},"];\n",[239,1895,1896],{"class":241,"line":376},[239,1897,569],{"class":272},[239,1899,1900],{"class":241,"line":383},[239,1901,380],{"emptyLinePlaceholder":379},[239,1903,1904,1906,1908,1910,1913],{"class":241,"line":226},[239,1905,259],{"class":258},[239,1907,262],{"class":258},[239,1909,265],{"class":258},[239,1911,1912],{"class":294}," InputBlueprint",[239,1914,298],{"class":290},[239,1916,1917],{"class":241,"line":227},[239,1918,663],{"class":294},[239,1920,1921],{"class":241,"line":228},[239,1922,1923],{"class":294},"    OrganizationInput,\n",[239,1925,1926],{"class":241,"line":455},[239,1927,1928],{"class":294},"    OrganizationGraph\n",[239,1930,1932,1934,1937,1939,1942],{"class":1931,"line":460},[241,390],[239,1933,285],{"class":290},[239,1935,1936],{"class":294}," Organization ",[239,1938,340],{"class":290},[239,1940,1941],{"class":294}," Blueprint.FromInput",[239,1943,298],{"class":290},[239,1945,1947],{"class":1946,"line":466},[241,390],[239,1948,663],{"class":294},[239,1950,1952],{"class":1951,"line":472},[241,390],[239,1953,1923],{"class":294},[239,1955,1957],{"class":1956,"line":505},[241,390],[239,1958,1928],{"class":294},[239,1960,1962,1964],{"class":1961,"line":229},[241,390],[239,1963,285],{"class":290},[239,1965,423],{"class":272},[239,1967,1968,1971,1973,1975,1977],{"class":241,"line":230},[239,1969,1970],{"class":272},"    ()",[239,1972,432],{"class":290},[239,1974,552],{"class":290},[239,1976,555],{"class":272},[239,1978,307],{"class":294},[239,1980,1981,1984,1987,1989,1991,1993],{"class":241,"line":231},[239,1982,1983],{"class":272},"    (",[239,1985,1986],{"class":268},"input",[239,1988,279],{"class":272},[239,1990,343],{"class":268},[239,1992,365],{"class":272},[239,1994,707],{"class":290},[239,1996,1997],{"class":241,"line":232},[239,1998,1999],{"class":272},"    {\n",[239,2001,2002,2005,2008,2010,2012,2014,2016,2019,2021,2024,2026,2029],{"class":241,"line":630},[239,2003,2004],{"class":859},"        var",[239,2006,2007],{"class":268}," org",[239,2009,291],{"class":290},[239,2011,552],{"class":290},[239,2013,1831],{"class":268},[239,2015,558],{"class":272},[239,2017,2018],{"class":294}," Slug ",[239,2020,340],{"class":290},[239,2022,2023],{"class":294}," input",[239,2025,213],{"class":272},[239,2027,2028],{"class":294},"Slug ",[239,2030,1135],{"class":272},[239,2032,2033,2036,2038],{"class":241,"line":635},[239,2034,2035],{"class":1164},"        return",[239,2037,552],{"class":290},[239,2039,423],{"class":272},[239,2041,2042,2045],{"class":241,"line":641},[239,2043,2044],{"class":294},"            org",[239,2046,307],{"class":272},[239,2048,2049,2052],{"class":241,"line":647},[239,2050,2051],{"class":290},"            new",[239,2053,2054],{"class":272},"()\n",[239,2056,2057],{"class":241,"line":660},[239,2058,2059],{"class":272},"            {\n",[239,2061,2062,2065,2067,2069],{"class":241,"line":666},[239,2063,2064],{"class":294},"                Organization ",[239,2066,340],{"class":290},[239,2068,2007],{"class":294},[239,2070,307],{"class":272},[239,2072,2073,2076,2078,2080,2082,2085,2087,2089],{"class":241,"line":672},[239,2074,2075],{"class":294},"                User ",[239,2077,340],{"class":290},[239,2079,343],{"class":294},[239,2081,213],{"class":272},[239,2083,2084],{"class":294},"Seed",[239,2086,213],{"class":272},[239,2088,1352],{"class":294},[239,2090,307],{"class":272},[239,2092,2093,2096,2098,2100,2102,2105],{"class":241,"line":685},[239,2094,2095],{"class":294},"                IsDefault ",[239,2097,340],{"class":290},[239,2099,2023],{"class":294},[239,2101,213],{"class":272},[239,2103,2104],{"class":294},"IsDefault",[239,2106,307],{"class":272},[239,2108,2109],{"class":241,"line":710},[239,2110,2111],{"class":272},"            }\n",[239,2113,2114],{"class":241,"line":734},[239,2115,2116],{"class":272},"        );\n",[239,2118,2119],{"class":241,"line":233},[239,2120,2121],{"class":272},"    }\n",[239,2123,2125],{"class":241,"line":2124},32,[239,2126,452],{"class":272},[220,2128,2131],{"className":222,"code":2129,"filename":1420,"highlights":2130,"language":234,"meta":235,"style":235},"var store = new RecordingStore();\nvar biome = TestBiome.Start(out var seed, store);\nawait biome\n    .AddOrganizations(\n        out var graphs,\n        input =>\n        {\n            input.Slug = \"alpha\";\n            input.IsDefault = true;\n        },\n        input => input.Slug = \"beta\"\n    )\n    .BuildAsync();\n\n\u002F\u002F store.Entities: seed.Owner, graphs[0].Organization, graphs[0].Membership, …\n\u002F\u002F (5 rows, no wrappers)\n\u002F\u002F biome.All\u003COrganizationGraph>().Count == 2   (inspection keeps the wrapper)\n",[301,310,316,376,383,226,227,228,455],[183,2132,2133,2149,2180,2187,2197,2209,2217,2222,2243,2260,2266,2289,2294,2302,2306,2311,2316],{"__ignoreMap":235},[239,2134,2135,2137,2140,2142,2144,2147],{"class":241,"line":242},[239,2136,1020],{"class":859},[239,2138,2139],{"class":268}," store",[239,2141,291],{"class":290},[239,2143,552],{"class":290},[239,2145,2146],{"class":268}," RecordingStore",[239,2148,991],{"class":272},[239,2150,2151,2153,2156,2158,2161,2163,2165,2167,2169,2171,2174,2176,2178],{"class":241,"line":249},[239,2152,1020],{"class":859},[239,2154,2155],{"class":268}," biome",[239,2157,291],{"class":290},[239,2159,2160],{"class":294}," TestBiome",[239,2162,213],{"class":272},[239,2164,835],{"class":348},[239,2166,352],{"class":272},[239,2168,840],{"class":258},[239,2170,860],{"class":859},[239,2172,2173],{"class":268}," seed",[239,2175,279],{"class":272},[239,2177,2139],{"class":294},[239,2179,452],{"class":272},[239,2181,2182,2184],{"class":241,"line":255},[239,2183,825],{"class":290},[239,2185,2186],{"class":294}," biome\n",[239,2188,2190,2192,2195],{"class":2189,"line":301},[241,390],[239,2191,688],{"class":272},[239,2193,2194],{"class":348},"AddOrganizations",[239,2196,423],{"class":272},[239,2198,2200,2202,2204,2207],{"class":2199,"line":310},[241,390],[239,2201,884],{"class":258},[239,2203,860],{"class":859},[239,2205,2206],{"class":268}," graphs",[239,2208,307],{"class":272},[239,2210,2212,2215],{"class":2211,"line":316},[241,390],[239,2213,2214],{"class":268},"        input",[239,2216,707],{"class":290},[239,2218,2220],{"class":2219,"line":376},[241,390],[239,2221,930],{"class":272},[239,2223,2225,2228,2230,2232,2234,2236,2239,2241],{"class":2224,"line":383},[241,390],[239,2226,2227],{"class":294},"            input",[239,2229,213],{"class":272},[239,2231,2028],{"class":294},[239,2233,340],{"class":290},[239,2235,911],{"class":355},[239,2237,2238],{"class":359},"alpha",[239,2240,356],{"class":355},[239,2242,373],{"class":272},[239,2244,2246,2248,2250,2253,2255,2258],{"class":2245,"line":226},[241,390],[239,2247,2227],{"class":294},[239,2249,213],{"class":272},[239,2251,2252],{"class":294},"IsDefault ",[239,2254,340],{"class":290},[239,2256,2257],{"class":445}," true",[239,2259,373],{"class":272},[239,2261,2263],{"class":2262,"line":227},[241,390],[239,2264,2265],{"class":272},"        },\n",[239,2267,2269,2271,2273,2275,2277,2279,2281,2283,2286],{"class":2268,"line":228},[241,390],[239,2270,2214],{"class":268},[239,2272,432],{"class":290},[239,2274,2023],{"class":294},[239,2276,213],{"class":272},[239,2278,2028],{"class":294},[239,2280,340],{"class":290},[239,2282,911],{"class":355},[239,2284,2285],{"class":359},"beta",[239,2287,2288],{"class":355},"\"\n",[239,2290,2292],{"class":2291,"line":455},[241,390],[239,2293,737],{"class":272},[239,2295,2296,2298,2300],{"class":241,"line":460},[239,2297,688],{"class":272},[239,2299,988],{"class":348},[239,2301,991],{"class":272},[239,2303,2304],{"class":241,"line":466},[239,2305,380],{"emptyLinePlaceholder":379},[239,2307,2308],{"class":241,"line":472},[239,2309,2310],{"class":245},"\u002F\u002F store.Entities: seed.Owner, graphs[0].Organization, graphs[0].Membership, …\n",[239,2312,2313],{"class":241,"line":505},[239,2314,2315],{"class":245},"\u002F\u002F (5 rows, no wrappers)\n",[239,2317,2318],{"class":241,"line":229},[239,2319,2320],{"class":245},"\u002F\u002F biome.All\u003COrganizationGraph>().Count == 2   (inspection keeps the wrapper)\n",[2322,2323,2324],"style",{},"html pre.shiki code .sutJx, html code.shiki .sutJx{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#6A737D;--shiki-default-font-style:inherit;--shiki-dark:#6A737D;--shiki-dark-font-style:inherit}html pre.shiki code .sbsja, html code.shiki .sbsja{--shiki-light:#9C3EDA;--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sbgvK, html code.shiki .sbgvK{--shiki-light:#E2931D;--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sP7_E, html code.shiki .sP7_E{--shiki-light:#39ADB5;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .smGrS, html code.shiki .smGrS{--shiki-light:#39ADB5;--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .su5hD, html code.shiki .su5hD{--shiki-light:#90A4AE;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sGLFI, html code.shiki .sGLFI{--shiki-light:#6182B8;--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sjJ54, html code.shiki .sjJ54{--shiki-light:#39ADB5;--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .s_sjI, html code.shiki .s_sjI{--shiki-light:#91B859;--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .syTEX, html code.shiki .syTEX{--shiki-light:#FF5370;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .srdBf, html code.shiki .srdBf{--shiki-light:#F76D47;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sG8yY, html code.shiki .sG8yY{--shiki-light:#E2931D;--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sVHd0, html code.shiki .sVHd0{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#D73A49;--shiki-default-font-style:inherit;--shiki-dark:#F97583;--shiki-dark-font-style:inherit}",{"title":235,"searchDepth":242,"depth":249,"links":2326},[2327,2328,2329,2330,2331],{"id":217,"depth":249,"text":218},{"id":797,"depth":249,"text":798},{"id":1415,"depth":249,"text":1416},{"id":1625,"depth":249,"text":1626},{"id":1785,"depth":249,"text":1786},"Users, aliases, invitations and organizations - fan-out per parent, fill-only derives and an aggregate.","md",null,{},{"icon":120},{"title":117,"description":2332},"0r403zv--ZaA00J0VWjKVqLU-VchHQTmNkuP6A1FuCM",[2340,2342],{"title":112,"path":113,"stem":114,"description":2341,"icon":115,"children":-1},"Repository, pull request, review and lock - the library's reference domain.",{"title":122,"path":123,"stem":124,"description":2343,"icon":125,"children":-1},"Board, columns and cards, with rank ordering from a per-parent string sequence.",1791831050381]