[{"data":1,"prerenderedAt":2808},["ShallowReactive",2],{"navigation":3,"\u002Fexamples\u002Fdocs-ingest":170,"\u002Fexamples\u002Fdocs-ingest-surround":2803},[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":146,"body":172,"description":2796,"extension":2797,"links":2798,"meta":2799,"navigation":2800,"path":147,"seo":2801,"stem":148,"__hash__":2802},"docs\u002F3.examples\u002F9.docs-ingest.md",{"type":173,"value":174,"toc":2789},"minimark",[175,179,217,222,225,719,723,734,1836,1859,1863,2277,2291,2295,2298,2592,2596,2603,2772,2785],[176,177,178],"p",{},"A document ingest has both a content tree and a run that tracks selected documents. This example builds the tree with child blueprints and the run as an aggregate, with separate local and library-wide chunk numbering.",[176,180,181,182,186,187,186,190,186,193,196,197,201,202,206,207,216],{},"A searchable corpus: ",[183,184,185],"code",{},"Library"," → ",[183,188,189],{},"Document",[183,191,192],{},"Section",[183,194,195],{},"Chunk",", and an ",[198,199,200],"strong",{},"ingest run"," modelled as an aggregate (one run plus one status row per document). Chunk ordinals restart per section, while a ",[203,204,205],"em",{},"library-wide"," ordinal keeps counting. Source: ",[208,209,213],"a",{"href":210,"rel":211},"https:\u002F\u002Fgithub.com\u002Fzeeq-ai\u002Fzeeq-biome\u002Ftree\u002Fmain\u002Ftests\u002FZeeq.Biome.Tests\u002FDocsIngest",[212],"nofollow",[183,214,215],{},"tests\u002FZeeq.Biome.Tests\u002FDocsIngest",".",[218,219,221],"h2",{"id":220},"two-ordinals-on-one-entity","Two ordinals on one entity",[176,223,224],{},"One reader may need a chunk's position within its section; another may need its position across the library. Keep those as separate sequences with the scope each use requires:",[226,227,242],"pre",{"className":228,"code":229,"filename":230,"highlights":231,"language":240,"meta":241,"style":241},"language-csharp shiki shiki-themes material-theme-lighter github-light github-dark","\u002F\u002F Chunk ordinals restart for each section.\ninternal static readonly Sequence\u003Cint> ChunkOrdinals = Sequence\n    .Of(1, n => n + 1)\n    .PerParent();\n\n\u002F\u002F This contrasting scope numbers chunks across\n\u002F\u002F every document\u002Fsection in one library.\ninternal static readonly Sequence\u003Cint> LibraryOrdinals = Sequence\n    .Of(1, n => n + 1)\n    .Per\u003CLibrary>();\n\n\u002F\u002F Reach Library through Section -> Document; keep\n\u002F\u002F local and library-wide ordinals distinct.\ninternal static readonly ChildBlueprint\u003CIngestSeed, Section, Chunk> Chunk =\n    Blueprint\n        .ChildOf\u003CIngestSeed, Section, Chunk>(\n            (section, ctx) =>\n                new() { Section = section, Library = ctx.Ancestor\u003CLibrary>() }\n        )\n        .Derive(c => c.Ordinal, ChunkOrdinals)\n        .Derive(c => c.LibraryOrdinal, LibraryOrdinals)\n        .Derive(\n            c => c.Text,\n            (c, _) => $\"{c.Section.Heading}: chunk {c.Ordinal}\"\n        );\n","DocsIngest\u002FDomain.cs",[232,233,234,235,236,237,238,239],2,3,4,8,9,10,20,21,"csharp","",[183,243,244,253,292,330,341,348,354,360,384,409,424,429,435,441,475,481,505,525,570,576,605,631,641,659,713],{"__ignoreMap":241},[245,246,249],"span",{"class":247,"line":248},"line",1,[245,250,252],{"class":251},"sutJx","\u002F\u002F Chunk ordinals restart for each section.\n",[245,254,257,261,264,267,271,275,279,282,285,288],{"class":255,"line":232},[247,256],"highlight",[245,258,260],{"class":259},"sbsja","internal",[245,262,263],{"class":259}," static",[245,265,266],{"class":259}," readonly",[245,268,270],{"class":269},"sbgvK"," Sequence",[245,272,274],{"class":273},"sP7_E","\u003C",[245,276,278],{"class":277},"smGrS","int",[245,280,281],{"class":273},">",[245,283,284],{"class":269}," ChunkOrdinals",[245,286,287],{"class":277}," =",[245,289,291],{"class":290},"su5hD"," Sequence\n",[245,293,295,298,302,305,309,312,315,318,321,324,327],{"class":294,"line":233},[247,256],[245,296,297],{"class":273},"    .",[245,299,301],{"class":300},"sGLFI","Of",[245,303,304],{"class":273},"(",[245,306,308],{"class":307},"srdBf","1",[245,310,311],{"class":273},",",[245,313,314],{"class":269}," n",[245,316,317],{"class":277}," =>",[245,319,320],{"class":290}," n ",[245,322,323],{"class":277},"+",[245,325,326],{"class":307}," 1",[245,328,329],{"class":273},")\n",[245,331,333,335,338],{"class":332,"line":234},[247,256],[245,334,297],{"class":273},[245,336,337],{"class":300},"PerParent",[245,339,340],{"class":273},"();\n",[245,342,344],{"class":247,"line":343},5,[245,345,347],{"emptyLinePlaceholder":346},true,"\n",[245,349,351],{"class":247,"line":350},6,[245,352,353],{"class":251},"\u002F\u002F This contrasting scope numbers chunks across\n",[245,355,357],{"class":247,"line":356},7,[245,358,359],{"class":251},"\u002F\u002F every document\u002Fsection in one library.\n",[245,361,363,365,367,369,371,373,375,377,380,382],{"class":362,"line":235},[247,256],[245,364,260],{"class":259},[245,366,263],{"class":259},[245,368,266],{"class":259},[245,370,270],{"class":269},[245,372,274],{"class":273},[245,374,278],{"class":277},[245,376,281],{"class":273},[245,378,379],{"class":269}," LibraryOrdinals",[245,381,287],{"class":277},[245,383,291],{"class":290},[245,385,387,389,391,393,395,397,399,401,403,405,407],{"class":386,"line":236},[247,256],[245,388,297],{"class":273},[245,390,301],{"class":300},[245,392,304],{"class":273},[245,394,308],{"class":307},[245,396,311],{"class":273},[245,398,314],{"class":269},[245,400,317],{"class":277},[245,402,320],{"class":290},[245,404,323],{"class":277},[245,406,326],{"class":307},[245,408,329],{"class":273},[245,410,412,414,417,419,421],{"class":411,"line":237},[247,256],[245,413,297],{"class":273},[245,415,416],{"class":300},"Per",[245,418,274],{"class":273},[245,420,185],{"class":269},[245,422,423],{"class":273},">();\n",[245,425,427],{"class":247,"line":426},11,[245,428,347],{"emptyLinePlaceholder":346},[245,430,432],{"class":247,"line":431},12,[245,433,434],{"class":251},"\u002F\u002F Reach Library through Section -> Document; keep\n",[245,436,438],{"class":247,"line":437},13,[245,439,440],{"class":251},"\u002F\u002F local and library-wide ordinals distinct.\n",[245,442,444,446,448,450,453,455,458,460,463,465,468,470,472],{"class":247,"line":443},14,[245,445,260],{"class":259},[245,447,263],{"class":259},[245,449,266],{"class":259},[245,451,452],{"class":269}," ChildBlueprint",[245,454,274],{"class":273},[245,456,457],{"class":269},"IngestSeed",[245,459,311],{"class":273},[245,461,462],{"class":269}," Section",[245,464,311],{"class":273},[245,466,467],{"class":269}," Chunk",[245,469,281],{"class":273},[245,471,467],{"class":269},[245,473,474],{"class":277}," =\n",[245,476,478],{"class":247,"line":477},15,[245,479,480],{"class":290},"    Blueprint\n",[245,482,484,487,490,492,494,496,498,500,502],{"class":247,"line":483},16,[245,485,486],{"class":273},"        .",[245,488,489],{"class":300},"ChildOf",[245,491,274],{"class":273},[245,493,457],{"class":269},[245,495,311],{"class":273},[245,497,462],{"class":269},[245,499,311],{"class":273},[245,501,467],{"class":269},[245,503,504],{"class":273},">(\n",[245,506,508,511,514,516,519,522],{"class":247,"line":507},17,[245,509,510],{"class":273},"            (",[245,512,513],{"class":269},"section",[245,515,311],{"class":273},[245,517,518],{"class":269}," ctx",[245,520,521],{"class":273},")",[245,523,524],{"class":277}," =>\n",[245,526,528,531,534,537,540,543,546,548,551,553,555,557,560,562,564,567],{"class":247,"line":527},18,[245,529,530],{"class":277},"                new",[245,532,533],{"class":273},"()",[245,535,536],{"class":273}," {",[245,538,539],{"class":290}," Section ",[245,541,542],{"class":277},"=",[245,544,545],{"class":290}," section",[245,547,311],{"class":273},[245,549,550],{"class":290}," Library ",[245,552,542],{"class":277},[245,554,518],{"class":290},[245,556,216],{"class":273},[245,558,559],{"class":300},"Ancestor",[245,561,274],{"class":273},[245,563,185],{"class":269},[245,565,566],{"class":273},">()",[245,568,569],{"class":273}," }\n",[245,571,573],{"class":247,"line":572},19,[245,574,575],{"class":273},"        )\n",[245,577,579,581,584,586,589,591,594,596,599,601,603],{"class":578,"line":238},[247,256],[245,580,486],{"class":273},[245,582,583],{"class":300},"Derive",[245,585,304],{"class":273},[245,587,588],{"class":269},"c",[245,590,317],{"class":277},[245,592,593],{"class":290}," c",[245,595,216],{"class":273},[245,597,598],{"class":290},"Ordinal",[245,600,311],{"class":273},[245,602,284],{"class":290},[245,604,329],{"class":273},[245,606,608,610,612,614,616,618,620,622,625,627,629],{"class":607,"line":239},[247,256],[245,609,486],{"class":273},[245,611,583],{"class":300},[245,613,304],{"class":273},[245,615,588],{"class":269},[245,617,317],{"class":277},[245,619,593],{"class":290},[245,621,216],{"class":273},[245,623,624],{"class":290},"LibraryOrdinal",[245,626,311],{"class":273},[245,628,379],{"class":290},[245,630,329],{"class":273},[245,632,634,636,638],{"class":247,"line":633},22,[245,635,486],{"class":273},[245,637,583],{"class":300},[245,639,640],{"class":273},"(\n",[245,642,644,647,649,651,653,656],{"class":247,"line":643},23,[245,645,646],{"class":269},"            c",[245,648,317],{"class":277},[245,650,593],{"class":290},[245,652,216],{"class":273},[245,654,655],{"class":290},"Text",[245,657,658],{"class":273},",\n",[245,660,662,664,666,668,671,673,675,679,682,684,686,688,690,693,696,700,702,704,706,708,710],{"class":247,"line":661},24,[245,663,510],{"class":273},[245,665,588],{"class":269},[245,667,311],{"class":273},[245,669,670],{"class":269}," _",[245,672,521],{"class":273},[245,674,317],{"class":277},[245,676,678],{"class":677},"sjJ54"," $\"",[245,680,681],{"class":677},"{",[245,683,588],{"class":290},[245,685,216],{"class":677},[245,687,192],{"class":290},[245,689,216],{"class":677},[245,691,692],{"class":290},"Heading",[245,694,695],{"class":677},"}",[245,697,699],{"class":698},"s_sjI",": chunk ",[245,701,681],{"class":677},[245,703,588],{"class":290},[245,705,216],{"class":677},[245,707,598],{"class":290},[245,709,695],{"class":677},[245,711,712],{"class":677},"\"\n",[245,714,716],{"class":247,"line":715},25,[245,717,718],{"class":273},"        );\n",[218,720,722],{"id":721},"a-corpus-and-an-ingest-run","A corpus and an ingest run",[176,724,725,726,729,730,733],{},"The ingest run is built from an ",[198,727,728],{},"input"," that selects which documents it covers. At save time, the run and its status rows expand ",[198,731,732],{},"after"," the document rows.",[735,736,737,926],"code-group",{},[226,738,742],{"className":228,"code":739,"filename":740,"highlights":741,"language":240,"meta":241,"style":241},"await biome\n    .AddLibraries(out var libraries, 2)\n    .AddDocuments(out var documents, 3) \u002F\u002F 6 documents\n    .AddSections(out var sections, 4) \u002F\u002F 24 sections\n    .AddChunks(out var chunks, 3) \u002F\u002F 72 chunks\n    \u002F\u002F Under documents marks the conceptual sibling\n    \u002F\u002F branch; input customizers select its rows.\n    .Under(documents)\n    .AddIngestRun(out var graph, i => i.Documents = documents)\n    .BuildAsync();\n","With Biome",[235,236],[183,743,744,752,778,804,830,855,860,865,880,917],{"__ignoreMap":241},[245,745,746,749],{"class":247,"line":248},[245,747,748],{"class":277},"await",[245,750,751],{"class":290}," biome\n",[245,753,754,756,759,761,764,768,771,773,776],{"class":247,"line":232},[245,755,297],{"class":273},[245,757,758],{"class":300},"AddLibraries",[245,760,304],{"class":273},[245,762,763],{"class":259},"out",[245,765,767],{"class":766},"sG8yY"," var",[245,769,770],{"class":269}," libraries",[245,772,311],{"class":273},[245,774,775],{"class":307}," 2",[245,777,329],{"class":273},[245,779,780,782,785,787,789,791,794,796,799,801],{"class":247,"line":233},[245,781,297],{"class":273},[245,783,784],{"class":300},"AddDocuments",[245,786,304],{"class":273},[245,788,763],{"class":259},[245,790,767],{"class":766},[245,792,793],{"class":269}," documents",[245,795,311],{"class":273},[245,797,798],{"class":307}," 3",[245,800,521],{"class":273},[245,802,803],{"class":251}," \u002F\u002F 6 documents\n",[245,805,806,808,811,813,815,817,820,822,825,827],{"class":247,"line":234},[245,807,297],{"class":273},[245,809,810],{"class":300},"AddSections",[245,812,304],{"class":273},[245,814,763],{"class":259},[245,816,767],{"class":766},[245,818,819],{"class":269}," sections",[245,821,311],{"class":273},[245,823,824],{"class":307}," 4",[245,826,521],{"class":273},[245,828,829],{"class":251}," \u002F\u002F 24 sections\n",[245,831,832,834,837,839,841,843,846,848,850,852],{"class":247,"line":343},[245,833,297],{"class":273},[245,835,836],{"class":300},"AddChunks",[245,838,304],{"class":273},[245,840,763],{"class":259},[245,842,767],{"class":766},[245,844,845],{"class":269}," chunks",[245,847,311],{"class":273},[245,849,798],{"class":307},[245,851,521],{"class":273},[245,853,854],{"class":251}," \u002F\u002F 72 chunks\n",[245,856,857],{"class":247,"line":350},[245,858,859],{"class":251},"    \u002F\u002F Under documents marks the conceptual sibling\n",[245,861,862],{"class":247,"line":356},[245,863,864],{"class":251},"    \u002F\u002F branch; input customizers select its rows.\n",[245,866,868,870,873,875,878],{"class":867,"line":235},[247,256],[245,869,297],{"class":273},[245,871,872],{"class":300},"Under",[245,874,304],{"class":273},[245,876,877],{"class":290},"documents",[245,879,329],{"class":273},[245,881,883,885,888,890,892,894,897,899,902,904,906,908,911,913,915],{"class":882,"line":236},[247,256],[245,884,297],{"class":273},[245,886,887],{"class":300},"AddIngestRun",[245,889,304],{"class":273},[245,891,763],{"class":259},[245,893,767],{"class":766},[245,895,896],{"class":269}," graph",[245,898,311],{"class":273},[245,900,901],{"class":269}," i",[245,903,317],{"class":277},[245,905,901],{"class":290},[245,907,216],{"class":273},[245,909,910],{"class":290},"Documents ",[245,912,542],{"class":277},[245,914,793],{"class":290},[245,916,329],{"class":273},[245,918,919,921,924],{"class":247,"line":237},[245,920,297],{"class":273},[245,922,923],{"class":300},"BuildAsync",[245,925,340],{"class":273},[927,928,931],"code-collapse",{"label":929,"name":930},"Without Biome","setup",[226,932,934],{"className":228,"code":933,"language":240,"meta":241,"style":241},"var now = DateTimeOffset.UtcNow;\nvar libraries = new[]\n{\n    new Library { Owner = \"owner\" },\n    new Library { Owner = \"owner\" },\n};\n\nvar documents = new List\u003CDocument>();\nvar sections = new List\u003CSection>();\nvar chunks = new List\u003CChunk>();\nforeach (var library in libraries)\n{\n    var version = 1; \u002F\u002F per library\n    var libraryOrdinal = 1; \u002F\u002F per library, across documents and sections\n    for (var d = 0; d \u003C 3; d++)\n    {\n        var document = new Document\n        {\n            Library = library,\n            Version = version,\n            Path = $\"guide-v{version}.md\",\n            UpdatedAt = now.AddHours(-1),\n        };\n        version++;\n        documents.Add(document);\n        for (var s = 1; s \u003C= 4; s++)\n        {\n            var section = new Section\n            {\n                Document = document,\n                Number = s,\n                Heading = $\"Section {s}\",\n            };\n            sections.Add(section);\n            for (var c = 1; c \u003C= 3; c++)\n            {\n                chunks.Add(\n                    new Chunk\n                    {\n                        Section = section,\n                        Library = library,\n                        Ordinal = c,\n                        LibraryOrdinal = libraryOrdinal++,\n                        Text = $\"{section.Heading}: chunk {c}\",\n                    }\n                );\n            }\n        }\n    }\n}\n\nvar run = new IngestRun(\"ingest\", now, now.AddMinutes(5));\nvar statuses = documents.Select(d => new DocumentStatus(run, d)).ToArray();\n\ndb.AddRange(libraries);\ndb.AddRange(documents);\ndb.AddRange(sections);\ndb.AddRange(chunks);\ndb.Add(run);\ndb.AddRange(statuses);\nawait db.SaveChangesAsync();\n",[183,935,936,957,971,976,1003,1023,1028,1032,1051,1069,1087,1108,1112,1130,1146,1181,1186,1201,1206,1217,1228,1254,1278,1283,1292,1310,1345,1350,1365,1371,1383,1395,1419,1425,1441,1474,1479,1491,1500,1506,1518,1530,1542,1556,1588,1594,1600,1606,1612,1618,1624,1629,1674,1720,1725,1743,1758,1774,1790,1805,1821],{"__ignoreMap":241},[245,937,938,941,944,946,949,951,954],{"class":247,"line":248},[245,939,940],{"class":766},"var",[245,942,943],{"class":269}," now",[245,945,287],{"class":277},[245,947,948],{"class":290}," DateTimeOffset",[245,950,216],{"class":273},[245,952,953],{"class":290},"UtcNow",[245,955,956],{"class":273},";\n",[245,958,959,961,963,965,968],{"class":247,"line":232},[245,960,940],{"class":766},[245,962,770],{"class":269},[245,964,287],{"class":277},[245,966,967],{"class":277}," new",[245,969,970],{"class":273},"[]\n",[245,972,973],{"class":247,"line":233},[245,974,975],{"class":273},"{\n",[245,977,978,981,984,986,989,991,994,997,1000],{"class":247,"line":234},[245,979,980],{"class":277},"    new",[245,982,983],{"class":269}," Library",[245,985,536],{"class":273},[245,987,988],{"class":290}," Owner ",[245,990,542],{"class":277},[245,992,993],{"class":677}," \"",[245,995,996],{"class":698},"owner",[245,998,999],{"class":677},"\"",[245,1001,1002],{"class":273}," },\n",[245,1004,1005,1007,1009,1011,1013,1015,1017,1019,1021],{"class":247,"line":343},[245,1006,980],{"class":277},[245,1008,983],{"class":269},[245,1010,536],{"class":273},[245,1012,988],{"class":290},[245,1014,542],{"class":277},[245,1016,993],{"class":677},[245,1018,996],{"class":698},[245,1020,999],{"class":677},[245,1022,1002],{"class":273},[245,1024,1025],{"class":247,"line":350},[245,1026,1027],{"class":273},"};\n",[245,1029,1030],{"class":247,"line":356},[245,1031,347],{"emptyLinePlaceholder":346},[245,1033,1034,1036,1038,1040,1042,1045,1047,1049],{"class":247,"line":235},[245,1035,940],{"class":766},[245,1037,793],{"class":269},[245,1039,287],{"class":277},[245,1041,967],{"class":277},[245,1043,1044],{"class":269}," List",[245,1046,274],{"class":273},[245,1048,189],{"class":269},[245,1050,423],{"class":273},[245,1052,1053,1055,1057,1059,1061,1063,1065,1067],{"class":247,"line":236},[245,1054,940],{"class":766},[245,1056,819],{"class":269},[245,1058,287],{"class":277},[245,1060,967],{"class":277},[245,1062,1044],{"class":269},[245,1064,274],{"class":273},[245,1066,192],{"class":269},[245,1068,423],{"class":273},[245,1070,1071,1073,1075,1077,1079,1081,1083,1085],{"class":247,"line":237},[245,1072,940],{"class":766},[245,1074,845],{"class":269},[245,1076,287],{"class":277},[245,1078,967],{"class":277},[245,1080,1044],{"class":269},[245,1082,274],{"class":273},[245,1084,195],{"class":269},[245,1086,423],{"class":273},[245,1088,1089,1093,1096,1098,1101,1104,1106],{"class":247,"line":426},[245,1090,1092],{"class":1091},"sVHd0","foreach",[245,1094,1095],{"class":273}," (",[245,1097,940],{"class":766},[245,1099,1100],{"class":269}," library",[245,1102,1103],{"class":1091}," in",[245,1105,770],{"class":290},[245,1107,329],{"class":273},[245,1109,1110],{"class":247,"line":431},[245,1111,975],{"class":273},[245,1113,1114,1117,1120,1122,1124,1127],{"class":247,"line":437},[245,1115,1116],{"class":766},"    var",[245,1118,1119],{"class":269}," version",[245,1121,287],{"class":277},[245,1123,326],{"class":307},[245,1125,1126],{"class":273},";",[245,1128,1129],{"class":251}," \u002F\u002F per library\n",[245,1131,1132,1134,1137,1139,1141,1143],{"class":247,"line":443},[245,1133,1116],{"class":766},[245,1135,1136],{"class":269}," libraryOrdinal",[245,1138,287],{"class":277},[245,1140,326],{"class":307},[245,1142,1126],{"class":273},[245,1144,1145],{"class":251}," \u002F\u002F per library, across documents and sections\n",[245,1147,1148,1151,1153,1155,1158,1160,1163,1165,1168,1170,1172,1174,1176,1179],{"class":247,"line":477},[245,1149,1150],{"class":1091},"    for",[245,1152,1095],{"class":273},[245,1154,940],{"class":766},[245,1156,1157],{"class":269}," d",[245,1159,287],{"class":277},[245,1161,1162],{"class":307}," 0",[245,1164,1126],{"class":273},[245,1166,1167],{"class":290}," d ",[245,1169,274],{"class":277},[245,1171,798],{"class":307},[245,1173,1126],{"class":273},[245,1175,1157],{"class":290},[245,1177,1178],{"class":277},"++",[245,1180,329],{"class":273},[245,1182,1183],{"class":247,"line":483},[245,1184,1185],{"class":273},"    {\n",[245,1187,1188,1191,1194,1196,1198],{"class":247,"line":507},[245,1189,1190],{"class":766},"        var",[245,1192,1193],{"class":269}," document",[245,1195,287],{"class":277},[245,1197,967],{"class":277},[245,1199,1200],{"class":269}," Document\n",[245,1202,1203],{"class":247,"line":527},[245,1204,1205],{"class":273},"        {\n",[245,1207,1208,1211,1213,1215],{"class":247,"line":572},[245,1209,1210],{"class":290},"            Library ",[245,1212,542],{"class":277},[245,1214,1100],{"class":290},[245,1216,658],{"class":273},[245,1218,1219,1222,1224,1226],{"class":247,"line":238},[245,1220,1221],{"class":290},"            Version ",[245,1223,542],{"class":277},[245,1225,1119],{"class":290},[245,1227,658],{"class":273},[245,1229,1230,1233,1235,1237,1240,1242,1245,1247,1250,1252],{"class":247,"line":239},[245,1231,1232],{"class":290},"            Path ",[245,1234,542],{"class":277},[245,1236,678],{"class":677},[245,1238,1239],{"class":698},"guide-v",[245,1241,681],{"class":677},[245,1243,1244],{"class":290},"version",[245,1246,695],{"class":677},[245,1248,1249],{"class":698},".md",[245,1251,999],{"class":677},[245,1253,658],{"class":273},[245,1255,1256,1259,1261,1263,1265,1268,1270,1273,1275],{"class":247,"line":633},[245,1257,1258],{"class":290},"            UpdatedAt ",[245,1260,542],{"class":277},[245,1262,943],{"class":290},[245,1264,216],{"class":273},[245,1266,1267],{"class":300},"AddHours",[245,1269,304],{"class":273},[245,1271,1272],{"class":277},"-",[245,1274,308],{"class":307},[245,1276,1277],{"class":273},"),\n",[245,1279,1280],{"class":247,"line":643},[245,1281,1282],{"class":273},"        };\n",[245,1284,1285,1288,1290],{"class":247,"line":661},[245,1286,1287],{"class":290},"        version",[245,1289,1178],{"class":277},[245,1291,956],{"class":273},[245,1293,1294,1297,1299,1302,1304,1307],{"class":247,"line":715},[245,1295,1296],{"class":290},"        documents",[245,1298,216],{"class":273},[245,1300,1301],{"class":300},"Add",[245,1303,304],{"class":273},[245,1305,1306],{"class":290},"document",[245,1308,1309],{"class":273},");\n",[245,1311,1313,1316,1318,1320,1323,1325,1327,1329,1332,1335,1337,1339,1341,1343],{"class":247,"line":1312},26,[245,1314,1315],{"class":1091},"        for",[245,1317,1095],{"class":273},[245,1319,940],{"class":766},[245,1321,1322],{"class":269}," s",[245,1324,287],{"class":277},[245,1326,326],{"class":307},[245,1328,1126],{"class":273},[245,1330,1331],{"class":290}," s ",[245,1333,1334],{"class":277},"\u003C=",[245,1336,824],{"class":307},[245,1338,1126],{"class":273},[245,1340,1322],{"class":290},[245,1342,1178],{"class":277},[245,1344,329],{"class":273},[245,1346,1348],{"class":247,"line":1347},27,[245,1349,1205],{"class":273},[245,1351,1353,1356,1358,1360,1362],{"class":247,"line":1352},28,[245,1354,1355],{"class":766},"            var",[245,1357,545],{"class":269},[245,1359,287],{"class":277},[245,1361,967],{"class":277},[245,1363,1364],{"class":269}," Section\n",[245,1366,1368],{"class":247,"line":1367},29,[245,1369,1370],{"class":273},"            {\n",[245,1372,1374,1377,1379,1381],{"class":247,"line":1373},30,[245,1375,1376],{"class":290},"                Document ",[245,1378,542],{"class":277},[245,1380,1193],{"class":290},[245,1382,658],{"class":273},[245,1384,1386,1389,1391,1393],{"class":247,"line":1385},31,[245,1387,1388],{"class":290},"                Number ",[245,1390,542],{"class":277},[245,1392,1322],{"class":290},[245,1394,658],{"class":273},[245,1396,1398,1401,1403,1405,1408,1410,1413,1415,1417],{"class":247,"line":1397},32,[245,1399,1400],{"class":290},"                Heading ",[245,1402,542],{"class":277},[245,1404,678],{"class":677},[245,1406,1407],{"class":698},"Section ",[245,1409,681],{"class":677},[245,1411,1412],{"class":290},"s",[245,1414,695],{"class":677},[245,1416,999],{"class":677},[245,1418,658],{"class":273},[245,1420,1422],{"class":247,"line":1421},33,[245,1423,1424],{"class":273},"            };\n",[245,1426,1428,1431,1433,1435,1437,1439],{"class":247,"line":1427},34,[245,1429,1430],{"class":290},"            sections",[245,1432,216],{"class":273},[245,1434,1301],{"class":300},[245,1436,304],{"class":273},[245,1438,513],{"class":290},[245,1440,1309],{"class":273},[245,1442,1444,1447,1449,1451,1453,1455,1457,1459,1462,1464,1466,1468,1470,1472],{"class":247,"line":1443},35,[245,1445,1446],{"class":1091},"            for",[245,1448,1095],{"class":273},[245,1450,940],{"class":766},[245,1452,593],{"class":269},[245,1454,287],{"class":277},[245,1456,326],{"class":307},[245,1458,1126],{"class":273},[245,1460,1461],{"class":290}," c ",[245,1463,1334],{"class":277},[245,1465,798],{"class":307},[245,1467,1126],{"class":273},[245,1469,593],{"class":290},[245,1471,1178],{"class":277},[245,1473,329],{"class":273},[245,1475,1477],{"class":247,"line":1476},36,[245,1478,1370],{"class":273},[245,1480,1482,1485,1487,1489],{"class":247,"line":1481},37,[245,1483,1484],{"class":290},"                chunks",[245,1486,216],{"class":273},[245,1488,1301],{"class":300},[245,1490,640],{"class":273},[245,1492,1494,1497],{"class":247,"line":1493},38,[245,1495,1496],{"class":277},"                    new",[245,1498,1499],{"class":269}," Chunk\n",[245,1501,1503],{"class":247,"line":1502},39,[245,1504,1505],{"class":273},"                    {\n",[245,1507,1509,1512,1514,1516],{"class":247,"line":1508},40,[245,1510,1511],{"class":290},"                        Section ",[245,1513,542],{"class":277},[245,1515,545],{"class":290},[245,1517,658],{"class":273},[245,1519,1521,1524,1526,1528],{"class":247,"line":1520},41,[245,1522,1523],{"class":290},"                        Library ",[245,1525,542],{"class":277},[245,1527,1100],{"class":290},[245,1529,658],{"class":273},[245,1531,1533,1536,1538,1540],{"class":247,"line":1532},42,[245,1534,1535],{"class":290},"                        Ordinal ",[245,1537,542],{"class":277},[245,1539,593],{"class":290},[245,1541,658],{"class":273},[245,1543,1545,1548,1550,1552,1554],{"class":247,"line":1544},43,[245,1546,1547],{"class":290},"                        LibraryOrdinal ",[245,1549,542],{"class":277},[245,1551,1136],{"class":290},[245,1553,1178],{"class":277},[245,1555,658],{"class":273},[245,1557,1559,1562,1564,1566,1568,1570,1572,1574,1576,1578,1580,1582,1584,1586],{"class":247,"line":1558},44,[245,1560,1561],{"class":290},"                        Text ",[245,1563,542],{"class":277},[245,1565,678],{"class":677},[245,1567,681],{"class":677},[245,1569,513],{"class":290},[245,1571,216],{"class":677},[245,1573,692],{"class":290},[245,1575,695],{"class":677},[245,1577,699],{"class":698},[245,1579,681],{"class":677},[245,1581,588],{"class":290},[245,1583,695],{"class":677},[245,1585,999],{"class":677},[245,1587,658],{"class":273},[245,1589,1591],{"class":247,"line":1590},45,[245,1592,1593],{"class":273},"                    }\n",[245,1595,1597],{"class":247,"line":1596},46,[245,1598,1599],{"class":273},"                );\n",[245,1601,1603],{"class":247,"line":1602},47,[245,1604,1605],{"class":273},"            }\n",[245,1607,1609],{"class":247,"line":1608},48,[245,1610,1611],{"class":273},"        }\n",[245,1613,1615],{"class":247,"line":1614},49,[245,1616,1617],{"class":273},"    }\n",[245,1619,1621],{"class":247,"line":1620},50,[245,1622,1623],{"class":273},"}\n",[245,1625,1627],{"class":247,"line":1626},51,[245,1628,347],{"emptyLinePlaceholder":346},[245,1630,1632,1634,1637,1639,1641,1644,1646,1648,1651,1653,1655,1657,1659,1661,1663,1666,1668,1671],{"class":247,"line":1631},52,[245,1633,940],{"class":766},[245,1635,1636],{"class":269}," run",[245,1638,287],{"class":277},[245,1640,967],{"class":277},[245,1642,1643],{"class":269}," IngestRun",[245,1645,304],{"class":273},[245,1647,999],{"class":677},[245,1649,1650],{"class":698},"ingest",[245,1652,999],{"class":677},[245,1654,311],{"class":273},[245,1656,943],{"class":290},[245,1658,311],{"class":273},[245,1660,943],{"class":290},[245,1662,216],{"class":273},[245,1664,1665],{"class":300},"AddMinutes",[245,1667,304],{"class":273},[245,1669,1670],{"class":307},"5",[245,1672,1673],{"class":273},"));\n",[245,1675,1677,1679,1682,1684,1686,1688,1691,1693,1696,1698,1700,1703,1705,1708,1710,1712,1715,1718],{"class":247,"line":1676},53,[245,1678,940],{"class":766},[245,1680,1681],{"class":269}," statuses",[245,1683,287],{"class":277},[245,1685,793],{"class":290},[245,1687,216],{"class":273},[245,1689,1690],{"class":300},"Select",[245,1692,304],{"class":273},[245,1694,1695],{"class":269},"d",[245,1697,317],{"class":277},[245,1699,967],{"class":277},[245,1701,1702],{"class":269}," DocumentStatus",[245,1704,304],{"class":273},[245,1706,1707],{"class":290},"run",[245,1709,311],{"class":273},[245,1711,1157],{"class":290},[245,1713,1714],{"class":273},")).",[245,1716,1717],{"class":300},"ToArray",[245,1719,340],{"class":273},[245,1721,1723],{"class":247,"line":1722},54,[245,1724,347],{"emptyLinePlaceholder":346},[245,1726,1728,1731,1733,1736,1738,1741],{"class":247,"line":1727},55,[245,1729,1730],{"class":290},"db",[245,1732,216],{"class":273},[245,1734,1735],{"class":300},"AddRange",[245,1737,304],{"class":273},[245,1739,1740],{"class":290},"libraries",[245,1742,1309],{"class":273},[245,1744,1746,1748,1750,1752,1754,1756],{"class":247,"line":1745},56,[245,1747,1730],{"class":290},[245,1749,216],{"class":273},[245,1751,1735],{"class":300},[245,1753,304],{"class":273},[245,1755,877],{"class":290},[245,1757,1309],{"class":273},[245,1759,1761,1763,1765,1767,1769,1772],{"class":247,"line":1760},57,[245,1762,1730],{"class":290},[245,1764,216],{"class":273},[245,1766,1735],{"class":300},[245,1768,304],{"class":273},[245,1770,1771],{"class":290},"sections",[245,1773,1309],{"class":273},[245,1775,1777,1779,1781,1783,1785,1788],{"class":247,"line":1776},58,[245,1778,1730],{"class":290},[245,1780,216],{"class":273},[245,1782,1735],{"class":300},[245,1784,304],{"class":273},[245,1786,1787],{"class":290},"chunks",[245,1789,1309],{"class":273},[245,1791,1793,1795,1797,1799,1801,1803],{"class":247,"line":1792},59,[245,1794,1730],{"class":290},[245,1796,216],{"class":273},[245,1798,1301],{"class":300},[245,1800,304],{"class":273},[245,1802,1707],{"class":290},[245,1804,1309],{"class":273},[245,1806,1808,1810,1812,1814,1816,1819],{"class":247,"line":1807},60,[245,1809,1730],{"class":290},[245,1811,216],{"class":273},[245,1813,1735],{"class":300},[245,1815,304],{"class":273},[245,1817,1818],{"class":290},"statuses",[245,1820,1309],{"class":273},[245,1822,1824,1826,1829,1831,1834],{"class":247,"line":1823},61,[245,1825,748],{"class":277},[245,1827,1828],{"class":290}," db",[245,1830,216],{"class":273},[245,1832,1833],{"class":300},"SaveChangesAsync",[245,1835,340],{"class":273},[176,1837,1838,1839,1842,1843,1846,1847,1850,1851,1854,1855,1858],{},"Assertions in the real test: ",[183,1840,1841],{},"chunks[3].Ordinal == 1"," and ",[183,1844,1845],{},"chunks[3].LibraryOrdinal == 4"," (local restarts, library-wide continues), ",[183,1848,1849],{},"chunks[36].LibraryOrdinal == 1"," (a new library restarts), and the store receives ",[183,1852,1853],{},"2 + 6 + 24 + 72 + 1 + 6"," rows. The run and its six statuses follow the documents, and the ",[183,1856,1857],{},"IngestGraph"," wrapper is never saved.",[218,1860,1862],{"id":1861},"the-aggregate","The aggregate",[226,1864,1867],{"className":228,"code":1865,"filename":230,"highlights":1866,"language":240,"meta":241,"style":241},"internal sealed record IngestGraph(IngestRun Run, DocumentStatus[] Statuses)\n    : IBiomeAggregate\n{\n    \u002F\u002F Expansion preserves run-before-status order;\n    \u002F\u002F the wrapper itself is never a row.\n    public IEnumerable\u003Cobject> GetEntities() => [Run, .. Statuses];\n}\n\n\u002F\u002F Input customizers choose documents; expansion\n\u002F\u002F yields one run and one status per document.\ninternal static readonly InputBlueprint\u003C\n    IngestSeed,\n    IngestInput,\n    IngestGraph\n> Ingest = Blueprint\n    .FromInput\u003CIngestSeed, IngestInput, IngestGraph>(\n        () => new(),\n        (input, ctx) =>\n        {\n            var run = new IngestRun(\n                input.Label!,\n                ctx.Now,\n                ctx.FromNow(TimeSpan.FromMinutes(5))\n            );\n            return new(\n                run,\n                input\n                    .Documents.Select(d => new DocumentStatus(run, d))\n                    .ToArray()\n            );\n        }\n    )\n    .Derive(i => i.Label, (_, _) => \"ingest\");\n",[248,232,350,238,239,633,643,661,715,1312,1347,1352,1367,1373],[183,1868,1869,1903,1912,1916,1921,1926,1965,1969,1973,1978,1983,1997,2002,2007,2012,2024,2046,2058,2073,2077,2092,2108,2121,2148,2154,2164,2172,2178,2211,2221,2226,2230,2235],{"__ignoreMap":241},[245,1870,1872,1874,1877,1880,1883,1885,1888,1891,1893,1895,1898,1901],{"class":1871,"line":248},[247,256],[245,1873,260],{"class":259},[245,1875,1876],{"class":259}," sealed",[245,1878,1879],{"class":766}," record",[245,1881,1882],{"class":269}," IngestGraph",[245,1884,304],{"class":273},[245,1886,1887],{"class":269},"IngestRun",[245,1889,1890],{"class":269}," Run",[245,1892,311],{"class":273},[245,1894,1702],{"class":269},[245,1896,1897],{"class":273},"[]",[245,1899,1900],{"class":269}," Statuses",[245,1902,329],{"class":273},[245,1904,1906,1909],{"class":1905,"line":232},[247,256],[245,1907,1908],{"class":273},"    :",[245,1910,1911],{"class":269}," IBiomeAggregate\n",[245,1913,1914],{"class":247,"line":233},[245,1915,975],{"class":273},[245,1917,1918],{"class":247,"line":234},[245,1919,1920],{"class":251},"    \u002F\u002F Expansion preserves run-before-status order;\n",[245,1922,1923],{"class":247,"line":343},[245,1924,1925],{"class":251},"    \u002F\u002F the wrapper itself is never a row.\n",[245,1927,1929,1932,1935,1937,1940,1942,1945,1947,1949,1952,1955,1957,1960,1962],{"class":1928,"line":350},[247,256],[245,1930,1931],{"class":259},"    public",[245,1933,1934],{"class":269}," IEnumerable",[245,1936,274],{"class":273},[245,1938,1939],{"class":277},"object",[245,1941,281],{"class":273},[245,1943,1944],{"class":300}," GetEntities",[245,1946,533],{"class":273},[245,1948,317],{"class":277},[245,1950,1951],{"class":273}," [",[245,1953,1954],{"class":290},"Run",[245,1956,311],{"class":273},[245,1958,1959],{"class":277}," ..",[245,1961,1900],{"class":290},[245,1963,1964],{"class":273},"];\n",[245,1966,1967],{"class":247,"line":356},[245,1968,1623],{"class":273},[245,1970,1971],{"class":247,"line":235},[245,1972,347],{"emptyLinePlaceholder":346},[245,1974,1975],{"class":247,"line":236},[245,1976,1977],{"class":251},"\u002F\u002F Input customizers choose documents; expansion\n",[245,1979,1980],{"class":247,"line":237},[245,1981,1982],{"class":251},"\u002F\u002F yields one run and one status per document.\n",[245,1984,1985,1987,1989,1991,1994],{"class":247,"line":426},[245,1986,260],{"class":259},[245,1988,263],{"class":259},[245,1990,266],{"class":259},[245,1992,1993],{"class":290}," InputBlueprint",[245,1995,1996],{"class":277},"\u003C\n",[245,1998,1999],{"class":247,"line":431},[245,2000,2001],{"class":290},"    IngestSeed,\n",[245,2003,2004],{"class":247,"line":437},[245,2005,2006],{"class":290},"    IngestInput,\n",[245,2008,2009],{"class":247,"line":443},[245,2010,2011],{"class":290},"    IngestGraph\n",[245,2013,2014,2016,2019,2021],{"class":247,"line":477},[245,2015,281],{"class":277},[245,2017,2018],{"class":290}," Ingest ",[245,2020,542],{"class":277},[245,2022,2023],{"class":290}," Blueprint\n",[245,2025,2026,2028,2031,2033,2035,2037,2040,2042,2044],{"class":247,"line":483},[245,2027,297],{"class":273},[245,2029,2030],{"class":300},"FromInput",[245,2032,274],{"class":273},[245,2034,457],{"class":269},[245,2036,311],{"class":273},[245,2038,2039],{"class":269}," IngestInput",[245,2041,311],{"class":273},[245,2043,1882],{"class":269},[245,2045,504],{"class":273},[245,2047,2048,2051,2053,2055],{"class":247,"line":507},[245,2049,2050],{"class":273},"        ()",[245,2052,317],{"class":277},[245,2054,967],{"class":277},[245,2056,2057],{"class":273},"(),\n",[245,2059,2060,2063,2065,2067,2069,2071],{"class":247,"line":527},[245,2061,2062],{"class":273},"        (",[245,2064,728],{"class":269},[245,2066,311],{"class":273},[245,2068,518],{"class":269},[245,2070,521],{"class":273},[245,2072,524],{"class":277},[245,2074,2075],{"class":247,"line":572},[245,2076,1205],{"class":273},[245,2078,2080,2082,2084,2086,2088,2090],{"class":2079,"line":238},[247,256],[245,2081,1355],{"class":766},[245,2083,1636],{"class":269},[245,2085,287],{"class":277},[245,2087,967],{"class":277},[245,2089,1643],{"class":269},[245,2091,640],{"class":273},[245,2093,2095,2098,2100,2103,2106],{"class":2094,"line":239},[247,256],[245,2096,2097],{"class":290},"                input",[245,2099,216],{"class":273},[245,2101,2102],{"class":290},"Label",[245,2104,2105],{"class":277},"!",[245,2107,658],{"class":273},[245,2109,2111,2114,2116,2119],{"class":2110,"line":633},[247,256],[245,2112,2113],{"class":290},"                ctx",[245,2115,216],{"class":273},[245,2117,2118],{"class":290},"Now",[245,2120,658],{"class":273},[245,2122,2124,2126,2128,2131,2133,2136,2138,2141,2143,2145],{"class":2123,"line":643},[247,256],[245,2125,2113],{"class":290},[245,2127,216],{"class":273},[245,2129,2130],{"class":300},"FromNow",[245,2132,304],{"class":273},[245,2134,2135],{"class":290},"TimeSpan",[245,2137,216],{"class":273},[245,2139,2140],{"class":300},"FromMinutes",[245,2142,304],{"class":273},[245,2144,1670],{"class":307},[245,2146,2147],{"class":273},"))\n",[245,2149,2151],{"class":2150,"line":661},[247,256],[245,2152,2153],{"class":273},"            );\n",[245,2155,2157,2160,2162],{"class":2156,"line":715},[247,256],[245,2158,2159],{"class":1091},"            return",[245,2161,967],{"class":277},[245,2163,640],{"class":273},[245,2165,2167,2170],{"class":2166,"line":1312},[247,256],[245,2168,2169],{"class":290},"                run",[245,2171,658],{"class":273},[245,2173,2175],{"class":2174,"line":1347},[247,256],[245,2176,2177],{"class":290},"                input\n",[245,2179,2181,2184,2187,2189,2191,2193,2195,2197,2199,2201,2203,2205,2207,2209],{"class":2180,"line":1352},[247,256],[245,2182,2183],{"class":273},"                    .",[245,2185,2186],{"class":290},"Documents",[245,2188,216],{"class":273},[245,2190,1690],{"class":300},[245,2192,304],{"class":273},[245,2194,1695],{"class":269},[245,2196,317],{"class":277},[245,2198,967],{"class":277},[245,2200,1702],{"class":269},[245,2202,304],{"class":273},[245,2204,1707],{"class":290},[245,2206,311],{"class":273},[245,2208,1157],{"class":290},[245,2210,2147],{"class":273},[245,2212,2214,2216,2218],{"class":2213,"line":1367},[247,256],[245,2215,2183],{"class":273},[245,2217,1717],{"class":300},[245,2219,2220],{"class":273},"()\n",[245,2222,2224],{"class":2223,"line":1373},[247,256],[245,2225,2153],{"class":273},[245,2227,2228],{"class":247,"line":1385},[245,2229,1611],{"class":273},[245,2231,2232],{"class":247,"line":1397},[245,2233,2234],{"class":273},"    )\n",[245,2236,2237,2239,2241,2243,2246,2248,2250,2252,2254,2256,2258,2261,2263,2265,2267,2269,2271,2273,2275],{"class":247,"line":1421},[245,2238,297],{"class":273},[245,2240,583],{"class":300},[245,2242,304],{"class":273},[245,2244,2245],{"class":269},"i",[245,2247,317],{"class":277},[245,2249,901],{"class":290},[245,2251,216],{"class":273},[245,2253,2102],{"class":290},[245,2255,311],{"class":273},[245,2257,1095],{"class":273},[245,2259,2260],{"class":269},"_",[245,2262,311],{"class":273},[245,2264,670],{"class":269},[245,2266,521],{"class":273},[245,2268,317],{"class":277},[245,2270,993],{"class":677},[245,2272,1650],{"class":698},[245,2274,999],{"class":677},[245,2276,1309],{"class":273},[2278,2279,2280],"note",{},[176,2281,2282,2283,2286,2287,2290],{},"The factory needs a label while building the run. On an input blueprint, ",[183,2284,2285],{},"Derive(i => i.Label, …)"," fills the input before the factory runs, so the factory can use ",[183,2288,2289],{},"input.Label!"," here.",[218,2292,2294],{"id":2293},"archived-sensitive-and-versioned","Archived, sensitive and versioned",[176,2296,2297],{},"Stacked traits, an explicit version that's reserved, and a later sibling ingest under both libraries:",[226,2299,2303],{"className":228,"code":2300,"filename":2301,"highlights":2302,"language":240,"meta":241,"style":241},"await biome\n    .AddLibraries(out var libraries, 2)\n    .AddDocuments(\n        out var documents,\n        Documents.Archived + Documents.Sensitive,\n        \u002F\u002F Explicit 1 is reserved first; the other\n        \u002F\u002F document gets 2 and derives guide-v2.md.\n        d =>\n        {\n            d.Version = 1;\n            d.Path = \"contract.md\";\n        }\n    )\n    .AddSections(out var sections, 2)\n    .AddChunks(out _, 2)\n    \u002F\u002F Resume both libraries after their deep descendant branches.\n    .Under(libraries)\n    .AddDocuments(out var later, 1)\n    \u002F\u002F Revisit one section: local ordinals continue,\n    \u002F\u002F rather than resetting on this Add call.\n    .Under(sections[0])\n    .AddChunk(out var extra)\n    .BuildAsync();\n\n\u002F\u002F documents[0].Version == 2, Path \"guide-v2.md\"\n\u002F\u002F documents[1].Path == \"contract.md\"   (call site wins)\n\u002F\u002F later.All(d => d.Version == 3);  extra.Ordinal == 3;  extra.LibraryOrdinal == 9\n","DocsIngestTests.cs",[343,237,426,507,239],[183,2304,2305,2311,2331,2339,2350,2373,2378,2383,2390,2394,2411,2432,2436,2440,2460,2478,2483,2496,2517,2522,2527,2547,2565,2573,2577,2582,2587],{"__ignoreMap":241},[245,2306,2307,2309],{"class":247,"line":248},[245,2308,748],{"class":277},[245,2310,751],{"class":290},[245,2312,2313,2315,2317,2319,2321,2323,2325,2327,2329],{"class":247,"line":232},[245,2314,297],{"class":273},[245,2316,758],{"class":300},[245,2318,304],{"class":273},[245,2320,763],{"class":259},[245,2322,767],{"class":766},[245,2324,770],{"class":269},[245,2326,311],{"class":273},[245,2328,775],{"class":307},[245,2330,329],{"class":273},[245,2332,2333,2335,2337],{"class":247,"line":233},[245,2334,297],{"class":273},[245,2336,784],{"class":300},[245,2338,640],{"class":273},[245,2340,2341,2344,2346,2348],{"class":247,"line":234},[245,2342,2343],{"class":259},"        out",[245,2345,767],{"class":766},[245,2347,793],{"class":269},[245,2349,658],{"class":273},[245,2351,2353,2356,2358,2361,2363,2366,2368,2371],{"class":2352,"line":343},[247,256],[245,2354,2355],{"class":290},"        Documents",[245,2357,216],{"class":273},[245,2359,2360],{"class":290},"Archived ",[245,2362,323],{"class":277},[245,2364,2365],{"class":290}," Documents",[245,2367,216],{"class":273},[245,2369,2370],{"class":290},"Sensitive",[245,2372,658],{"class":273},[245,2374,2375],{"class":247,"line":350},[245,2376,2377],{"class":251},"        \u002F\u002F Explicit 1 is reserved first; the other\n",[245,2379,2380],{"class":247,"line":356},[245,2381,2382],{"class":251},"        \u002F\u002F document gets 2 and derives guide-v2.md.\n",[245,2384,2385,2388],{"class":247,"line":235},[245,2386,2387],{"class":269},"        d",[245,2389,524],{"class":277},[245,2391,2392],{"class":247,"line":236},[245,2393,1205],{"class":273},[245,2395,2397,2400,2402,2405,2407,2409],{"class":2396,"line":237},[247,256],[245,2398,2399],{"class":290},"            d",[245,2401,216],{"class":273},[245,2403,2404],{"class":290},"Version ",[245,2406,542],{"class":277},[245,2408,326],{"class":307},[245,2410,956],{"class":273},[245,2412,2414,2416,2418,2421,2423,2425,2428,2430],{"class":2413,"line":426},[247,256],[245,2415,2399],{"class":290},[245,2417,216],{"class":273},[245,2419,2420],{"class":290},"Path ",[245,2422,542],{"class":277},[245,2424,993],{"class":677},[245,2426,2427],{"class":698},"contract.md",[245,2429,999],{"class":677},[245,2431,956],{"class":273},[245,2433,2434],{"class":247,"line":431},[245,2435,1611],{"class":273},[245,2437,2438],{"class":247,"line":437},[245,2439,2234],{"class":273},[245,2441,2442,2444,2446,2448,2450,2452,2454,2456,2458],{"class":247,"line":443},[245,2443,297],{"class":273},[245,2445,810],{"class":300},[245,2447,304],{"class":273},[245,2449,763],{"class":259},[245,2451,767],{"class":766},[245,2453,819],{"class":269},[245,2455,311],{"class":273},[245,2457,775],{"class":307},[245,2459,329],{"class":273},[245,2461,2462,2464,2466,2468,2470,2472,2474,2476],{"class":247,"line":477},[245,2463,297],{"class":273},[245,2465,836],{"class":300},[245,2467,304],{"class":273},[245,2469,763],{"class":259},[245,2471,670],{"class":290},[245,2473,311],{"class":273},[245,2475,775],{"class":307},[245,2477,329],{"class":273},[245,2479,2480],{"class":247,"line":483},[245,2481,2482],{"class":251},"    \u002F\u002F Resume both libraries after their deep descendant branches.\n",[245,2484,2486,2488,2490,2492,2494],{"class":2485,"line":507},[247,256],[245,2487,297],{"class":273},[245,2489,872],{"class":300},[245,2491,304],{"class":273},[245,2493,1740],{"class":290},[245,2495,329],{"class":273},[245,2497,2498,2500,2502,2504,2506,2508,2511,2513,2515],{"class":247,"line":527},[245,2499,297],{"class":273},[245,2501,784],{"class":300},[245,2503,304],{"class":273},[245,2505,763],{"class":259},[245,2507,767],{"class":766},[245,2509,2510],{"class":269}," later",[245,2512,311],{"class":273},[245,2514,326],{"class":307},[245,2516,329],{"class":273},[245,2518,2519],{"class":247,"line":572},[245,2520,2521],{"class":251},"    \u002F\u002F Revisit one section: local ordinals continue,\n",[245,2523,2524],{"class":247,"line":238},[245,2525,2526],{"class":251},"    \u002F\u002F rather than resetting on this Add call.\n",[245,2528,2530,2532,2534,2536,2538,2541,2544],{"class":2529,"line":239},[247,256],[245,2531,297],{"class":273},[245,2533,872],{"class":300},[245,2535,304],{"class":273},[245,2537,1771],{"class":290},[245,2539,2540],{"class":273},"[",[245,2542,2543],{"class":307},"0",[245,2545,2546],{"class":273},"])\n",[245,2548,2549,2551,2554,2556,2558,2560,2563],{"class":247,"line":633},[245,2550,297],{"class":273},[245,2552,2553],{"class":300},"AddChunk",[245,2555,304],{"class":273},[245,2557,763],{"class":259},[245,2559,767],{"class":766},[245,2561,2562],{"class":269}," extra",[245,2564,329],{"class":273},[245,2566,2567,2569,2571],{"class":247,"line":643},[245,2568,297],{"class":273},[245,2570,923],{"class":300},[245,2572,340],{"class":273},[245,2574,2575],{"class":247,"line":661},[245,2576,347],{"emptyLinePlaceholder":346},[245,2578,2579],{"class":247,"line":715},[245,2580,2581],{"class":251},"\u002F\u002F documents[0].Version == 2, Path \"guide-v2.md\"\n",[245,2583,2584],{"class":247,"line":1312},[245,2585,2586],{"class":251},"\u002F\u002F documents[1].Path == \"contract.md\"   (call site wins)\n",[245,2588,2589],{"class":247,"line":1347},[245,2590,2591],{"class":251},"\u002F\u002F later.All(d => d.Version == 3);  extra.Ordinal == 3;  extra.LibraryOrdinal == 9\n",[218,2593,2595],{"id":2594},"a-transient-preview-aggregate","A transient preview aggregate",[176,2597,2598,2599,2602],{},"A preview ingest run reuses a real document but is ",[198,2600,2601],{},"never saved",", and its parts inherit that exclusion:",[226,2604,2607],{"className":228,"code":2605,"filename":2301,"highlights":2606,"language":240,"meta":241,"style":241},"biome.AddSearchableChunk(out var leaf);\ntime.Advance(TimeSpan.FromMinutes(10));\n\nawait biome\n    .Under(leaf.Section.Document)\n    .AddIngestRun(out var preview, i => i.Documents = [leaf.Section.Document])\n    \u002F\u002F Built and returned, but NOT saved; aggregate\n    \u002F\u002F parts inherit the excluded branch.\n    .Transient()\n    .BuildAsync();\n\n\u002F\u002F store: no IngestRun, no DocumentStatus;\n\u002F\u002F preview.Run.StartedAt == instant.AddMinutes(10)\n",[350,236],[183,2608,2609,2630,2655,2659,2665,2686,2730,2735,2740,2750,2758,2762,2767],{"__ignoreMap":241},[245,2610,2611,2614,2616,2619,2621,2623,2625,2628],{"class":247,"line":248},[245,2612,2613],{"class":290},"biome",[245,2615,216],{"class":273},[245,2617,2618],{"class":300},"AddSearchableChunk",[245,2620,304],{"class":273},[245,2622,763],{"class":259},[245,2624,767],{"class":766},[245,2626,2627],{"class":269}," leaf",[245,2629,1309],{"class":273},[245,2631,2632,2635,2637,2640,2642,2644,2646,2648,2650,2653],{"class":247,"line":232},[245,2633,2634],{"class":290},"time",[245,2636,216],{"class":273},[245,2638,2639],{"class":300},"Advance",[245,2641,304],{"class":273},[245,2643,2135],{"class":290},[245,2645,216],{"class":273},[245,2647,2140],{"class":300},[245,2649,304],{"class":273},[245,2651,2652],{"class":307},"10",[245,2654,1673],{"class":273},[245,2656,2657],{"class":247,"line":233},[245,2658,347],{"emptyLinePlaceholder":346},[245,2660,2661,2663],{"class":247,"line":234},[245,2662,748],{"class":277},[245,2664,751],{"class":290},[245,2666,2667,2669,2671,2673,2676,2678,2680,2682,2684],{"class":247,"line":343},[245,2668,297],{"class":273},[245,2670,872],{"class":300},[245,2672,304],{"class":273},[245,2674,2675],{"class":290},"leaf",[245,2677,216],{"class":273},[245,2679,192],{"class":290},[245,2681,216],{"class":273},[245,2683,189],{"class":290},[245,2685,329],{"class":273},[245,2687,2689,2691,2693,2695,2697,2699,2702,2704,2706,2708,2710,2712,2714,2716,2718,2720,2722,2724,2726,2728],{"class":2688,"line":350},[247,256],[245,2690,297],{"class":273},[245,2692,887],{"class":300},[245,2694,304],{"class":273},[245,2696,763],{"class":259},[245,2698,767],{"class":766},[245,2700,2701],{"class":269}," preview",[245,2703,311],{"class":273},[245,2705,901],{"class":269},[245,2707,317],{"class":277},[245,2709,901],{"class":290},[245,2711,216],{"class":273},[245,2713,910],{"class":290},[245,2715,542],{"class":277},[245,2717,1951],{"class":273},[245,2719,2675],{"class":290},[245,2721,216],{"class":273},[245,2723,192],{"class":290},[245,2725,216],{"class":273},[245,2727,189],{"class":290},[245,2729,2546],{"class":273},[245,2731,2732],{"class":247,"line":356},[245,2733,2734],{"class":251},"    \u002F\u002F Built and returned, but NOT saved; aggregate\n",[245,2736,2737],{"class":247,"line":235},[245,2738,2739],{"class":251},"    \u002F\u002F parts inherit the excluded branch.\n",[245,2741,2743,2745,2748],{"class":2742,"line":236},[247,256],[245,2744,297],{"class":273},[245,2746,2747],{"class":300},"Transient",[245,2749,2220],{"class":273},[245,2751,2752,2754,2756],{"class":247,"line":237},[245,2753,297],{"class":273},[245,2755,923],{"class":300},[245,2757,340],{"class":273},[245,2759,2760],{"class":247,"line":426},[245,2761,347],{"emptyLinePlaceholder":346},[245,2763,2764],{"class":247,"line":431},[245,2765,2766],{"class":251},"\u002F\u002F store: no IngestRun, no DocumentStatus;\n",[245,2768,2769],{"class":247,"line":437},[245,2770,2771],{"class":251},"\u002F\u002F preview.Run.StartedAt == instant.AddMinutes(10)\n",[2773,2774,2775],"warning",{},[176,2776,2777,2780,2781,2784],{},[198,2778,2779],{},"Transient aggregates exclude all parts."," But EF follows navigations: if a ",[203,2782,2783],{},"saved"," row referenced one of the preview's parts, EF would save that part too.",[2786,2787,2788],"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 .srdBf, html code.shiki .srdBf{--shiki-light:#F76D47;--shiki-default:#005CC5;--shiki-dark:#79B8FF}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 .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":241,"searchDepth":248,"depth":232,"links":2790},[2791,2792,2793,2794,2795],{"id":220,"depth":232,"text":221},{"id":721,"depth":232,"text":722},{"id":1861,"depth":232,"text":1862},{"id":2293,"depth":232,"text":2294},{"id":2594,"depth":232,"text":2595},"Library, document, section and chunk, plus an ingest-run aggregate and a transient preview.","md",null,{},{"icon":149},{"title":146,"description":2796},"vdY7hfERfnALhoFgHcZRvPkxxMFRTHXGeWQa8HbIQgM",[2804,2806],{"title":141,"path":142,"stem":143,"description":2805,"icon":144,"children":-1},"School to submission, with roster numbers across sections and a clock shared with the code under test.",{"title":156,"path":157,"stem":158,"description":2807,"icon":159,"children":-1},"Every public member of Zeeq.Biome at a glance, with the pipeline order and common errors.",1791831050382]