Skip to content

Instantly share code, notes, and snippets.

@tlkahn
Created August 31, 2026 06:54
Show Gist options
  • Select an option

  • Save tlkahn/be2aa60b4d97d829c51b3b76d6d25de5 to your computer and use it in GitHub Desktop.

Select an option

Save tlkahn/be2aa60b4d97d829c51b3b76d6d25de5 to your computer and use it in GitHub Desktop.
plantuml from inventory-bootstrap-ideation.md
Display the source blob
Display the rendered blob
Raw
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentStyleType="text/css" data-diagram-type="DESCRIPTION" height="878px" preserveAspectRatio="none" style="width:1109px;height:878px;background:#FFFFFF;" version="1.1" viewBox="0 0 1109 878" width="1109px" zoomAndPan="magnify"><defs/><g><g class="title" data-source-line="1"><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="700" lengthAdjust="spacing" textLength="290.7666" x="406.0585" y="23.5352">Components C-PA and C-PB (stable ids)</text></g><!--cluster OP--><g class="cluster" data-qualified-name="OP" data-source-line="3" id="ent0001"><rect fill="none" height="587.79" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:1;" width="180" x="285" y="44.4883"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="700" lengthAdjust="spacing" textLength="123.833" x="313.0835" y="60.0234">Operator session</text></g><!--cluster PA--><g class="cluster" data-qualified-name="PA" data-source-line="10" id="ent0006"><rect fill="#ADD8E6" height="543.4" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:1;" width="226" x="497" y="320.7083"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="700" lengthAdjust="spacing" textLength="186.0127" x="516.9937" y="336.2434">C-PA Inventory bootstrap</text><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="700" lengthAdjust="spacing" textLength="70.1025" x="574.9487" y="352.7317">issue #48</text></g><!--cluster PB--><g class="cluster" data-qualified-name="PB" data-source-line="17" id="ent0011"><rect fill="#FFFFE0" height="231.7" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:1;" width="246" x="7" y="516.9183"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="700" lengthAdjust="spacing" textLength="160.7402" x="49.6299" y="532.4534">C-PB Transfer resume</text><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="700" lengthAdjust="spacing" textLength="70.1025" x="94.9487" y="548.9417">issue #49</text></g><!--entity COLD--><g class="entity" data-qualified-name="OP.COLD" data-source-line="4" id="ent0002"><ellipse cx="377.9988" cy="104.4406" fill="#F1F1F1" rx="68.0288" ry="24.9523" style="stroke:#181818;stroke-width:0.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="97.6855" x="329.156" y="102.9361">cold list+head</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="70.1641" x="342.9167" y="119.4244">~O(N) RTT</text></g><!--entity PLAN--><g class="entity" data-qualified-name="OP.PLAN" data-source-line="5" id="ent0003"><ellipse cx="377.0029" cy="205.0473" fill="#F1F1F1" rx="23.7029" ry="14.659" style="stroke:#181818;stroke-width:0.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="29.2783" x="362.3637" y="209.7914">plan</text></g><!--entity XFER--><g class="entity" data-qualified-name="OP.XFER" data-source-line="6" id="ent0004"><ellipse cx="375.0026" cy="402.9573" fill="#F1F1F1" rx="45.6626" ry="14.659" style="stroke:#181818;stroke-width:0.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="60.334" x="344.8356" y="407.7014">transfers</text></g><!--entity COMMIT--><g class="entity" data-qualified-name="OP.COMMIT" data-source-line="7" id="ent0005"><ellipse cx="374.9983" cy="599.1659" fill="#F1F1F1" rx="73.5383" ry="17.1077" style="stroke:#181818;stroke-width:0.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="114.4814" x="317.7575" y="603.9101">manifest commit</text></g><!--entity RM--><g class="entity" data-qualified-name="PA.RM" data-source-line="11" id="ent0007"><path d="M538.06,690.6283 L538.06,722.1166 A2.5,2.5 0 0 0 540.56,724.6166 L657.436,724.6166 A2.5,2.5 0 0 0 659.936,722.1166 L659.936,698.1283 L649.936,688.1283 L540.56,688.1283 A2.5,2.5 0 0 0 538.06,690.6283" fill="#F1F1F1" style="stroke:#181818;stroke-width:0.5;"/><path d="M649.936,688.1283 L649.936,695.6283 A2.5,2.5 0 0 0 652.436,698.1283 L659.936,698.1283" fill="#F1F1F1" style="stroke:#181818;stroke-width:0.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="101.876" x="548.06" y="711.6634">remote v1.json</text></g><!--entity LC--><g class="entity" data-qualified-name="PA.LC" data-source-line="12" id="ent0008"><path d="M528.04,806.1183 L528.04,837.6066 A2.5,2.5 0 0 0 530.54,840.1066 L667.4589,840.1066 A2.5,2.5 0 0 0 669.9589,837.6066 L669.9589,813.6183 L659.9589,803.6183 L530.54,803.6183 A2.5,2.5 0 0 0 528.04,806.1183" fill="#F1F1F1" style="stroke:#181818;stroke-width:0.5;"/><path d="M659.9589,803.6183 L659.9589,811.1183 A2.5,2.5 0 0 0 662.4589,813.6183 L669.9589,813.6183" fill="#F1F1F1" style="stroke:#181818;stroke-width:0.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="121.9189" x="538.04" y="827.1534">local cache mirror</text></g><!--entity B1--><g class="entity" data-qualified-name="PA.B1" data-source-line="13" id="ent0009"><rect fill="#F1F1F1" height="46.4883" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="170.9834" x="520.51" y="575.9183"/><rect fill="#F1F1F1" height="10" style="stroke:#181818;stroke-width:0.5;" width="15" x="671.4934" y="580.9183"/><rect fill="#F1F1F1" height="2" style="stroke:#181818;stroke-width:0.5;" width="4" x="669.4934" y="582.9183"/><rect fill="#F1F1F1" height="2" style="stroke:#181818;stroke-width:0.5;" width="4" x="669.4934" y="586.9183"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="130.9834" x="535.51" y="609.4534">B1 bootstrap writer</text></g><!--entity B3--><g class="entity" data-qualified-name="PA.B3" data-source-line="14" id="ent0010"><rect fill="#F1F1F1" height="46.4883" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="101.3252" x="553.34" y="379.7083"/><rect fill="#F1F1F1" height="10" style="stroke:#181818;stroke-width:0.5;" width="15" x="634.6652" y="384.7083"/><rect fill="#F1F1F1" height="2" style="stroke:#181818;stroke-width:0.5;" width="4" x="632.6652" y="386.7083"/><rect fill="#F1F1F1" height="2" style="stroke:#181818;stroke-width:0.5;" width="4" x="632.6652" y="390.7083"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="61.3252" x="568.34" y="413.2434">B3 policy</text></g><!--entity RJ--><g class="entity" data-qualified-name="PB.RJ" data-source-line="18" id="ent0012"><path d="M42.27,690.6283 L42.27,722.1166 A2.5,2.5 0 0 0 44.77,724.6166 L195.2378,724.6166 A2.5,2.5 0 0 0 197.7378,722.1166 L197.7378,698.1283 L187.7378,688.1283 L44.77,688.1283 A2.5,2.5 0 0 0 42.27,690.6283" fill="#F1F1F1" style="stroke:#181818;stroke-width:0.5;"/><path d="M187.7378,688.1283 L187.7378,695.6283 A2.5,2.5 0 0 0 190.2378,698.1283 L197.7378,698.1283" fill="#F1F1F1" style="stroke:#181818;stroke-width:0.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="135.4678" x="52.27" y="711.6634">optional run journal</text></g><!--entity B2--><g class="entity" data-qualified-name="PB.B2" data-source-line="19" id="ent0013"><rect fill="#F1F1F1" height="46.4883" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="178.373" x="30.81" y="575.9183"/><rect fill="#F1F1F1" height="10" style="stroke:#181818;stroke-width:0.5;" width="15" x="189.183" y="580.9183"/><rect fill="#F1F1F1" height="2" style="stroke:#181818;stroke-width:0.5;" width="4" x="187.183" y="582.9183"/><rect fill="#F1F1F1" height="2" style="stroke:#181818;stroke-width:0.5;" width="4" x="187.183" y="586.9183"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="138.373" x="45.81" y="609.4534">B2 journal (optional)</text></g><g class="entity" data-qualified-name="GMN24" data-source-line="35" id="ent0025"><path d="M821.12,374.9883 L821.12,430.9199 L1094.8837,430.9199 L1094.8837,384.9883 L1084.8837,374.9883 L821.12,374.9883" fill="#FEFFDD" style="stroke:#181818;stroke-width:0.5;"/><path d="M1084.8837,374.9883 L1084.8837,384.9883 L1094.8837,384.9883 L1084.8837,374.9883" fill="#FEFFDD" style="stroke:#181818;stroke-width:1;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="172.9673" x="827.12" y="392.5566">Authority must stay remote</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="105.2886" x="827.12" y="407.8672">(or cold live list).</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="252.7637" x="827.12" y="423.1777">Local inventory-as-base = vision break.</text></g><g class="entity" data-qualified-name="GMN27" data-source-line="41" id="ent0028"><path d="M747.48,571.1983 L747.48,627.1299 L1008.5103,627.1299 L1008.5103,581.1983 L998.5103,571.1983 L747.48,571.1983" fill="#FEFFDD" style="stroke:#181818;stroke-width:0.5;"/><path d="M998.5103,571.1983 L998.5103,581.1983 L1008.5103,581.1983 L998.5103,571.1983" fill="#FEFFDD" style="stroke:#181818;stroke-width:1;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="193.1719" x="753.48" y="588.7666">Journal is per-run, per-device.</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="240.0303" x="753.48" y="604.0772">Must not feed build_plan remote side.</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="227.4111" x="753.48" y="619.3877">Default: prefer #26 re-plan over B2.</text></g><!--link COLD to PLAN--><g class="link" data-entity-1="ent0002" data-entity-2="ent0003" data-link-type="dependency" data-source-line="22" id="lnk14"><path d="M377.75,129.8183 C377.56,148.7483 377.3511,169.3485 377.1911,184.9985" fill="none" id="COLD-to-PLAN" style="stroke:#181818;stroke-width:1;"/><polygon fill="#181818" points="377.14,189.9983,381.2318,181.0396,377.1911,184.9985,373.2322,180.9579,377.14,189.9983" style="stroke:#181818;stroke-width:1;stroke-linejoin:miter;stroke-miterlimit:10;"/></g><!--link PLAN to XFER--><g class="link" data-entity-1="ent0003" data-entity-2="ent0004" data-link-type="dependency" data-source-line="23" id="lnk15"><path d="M376.86,220.1383 C376.49,256.2883 375.5614,346.9885 375.1914,382.9985" fill="none" id="PLAN-to-XFER" style="stroke:#181818;stroke-width:1;"/><polygon fill="#181818" points="375.14,387.9983,379.2323,379.0399,375.1914,382.9985,371.2327,378.9577,375.14,387.9983" style="stroke:#181818;stroke-width:1;stroke-linejoin:miter;stroke-miterlimit:10;"/></g><!--link XFER to COMMIT--><g class="link" data-entity-1="ent0004" data-entity-2="ent0005" data-link-type="dependency" data-source-line="24" id="lnk16"><path d="M375,417.9183 C375,452.8883 375,539.0583 375,576.6283" fill="none" id="XFER-to-COMMIT" style="stroke:#181818;stroke-width:1;"/><polygon fill="#181818" points="375,581.6283,379,572.6283,375,576.6283,371,572.6283,375,581.6283" style="stroke:#181818;stroke-width:1;stroke-linejoin:miter;stroke-miterlimit:10;"/></g><!--link COMMIT to RM--><g class="link" data-entity-1="ent0005" data-entity-2="ent0007" data-link-type="dependency" data-source-line="25" id="lnk17"><path d="M406.62,615.0183 C447.38,634.1583 513.6344,665.2826 557.0444,685.6726" fill="none" id="COMMIT-to-RM" style="stroke:#181818;stroke-width:1;"/><polygon fill="#181818" points="561.57,687.7983,555.1244,680.3515,557.0444,685.6726,551.7233,687.5925,561.57,687.7983" style="stroke:#181818;stroke-width:1;stroke-linejoin:miter;stroke-miterlimit:10;"/></g><!--link RM to LC--><g class="link" data-entity-1="ent0007" data-entity-2="ent0008" data-link-type="dependency" data-source-line="26" id="lnk18"><path d="M599,725.1083 C599,746.4283 599,776.9883 599,798.2583" fill="none" id="RM-to-LC" style="stroke:#181818;stroke-width:1;"/><polygon fill="#181818" points="599,803.2583,603,794.2583,599,798.2583,595,794.2583,599,803.2583" style="stroke:#181818;stroke-width:1;stroke-linejoin:miter;stroke-miterlimit:10;"/></g><!--link COLD to B1--><g class="link" data-entity-1="ent0002" data-entity-2="ent0009" data-link-type="dependency" data-source-line="28" id="lnk19"><path d="M434.95,118.4983 C517.32,140.7883 666.87,194.8583 731,304.7083 C773.74,377.9283 747.61,422.7783 700,492.9183 C679.09,523.7283 653.3986,551.5158 633.1086,571.8858" fill="none" id="COLD-to-B1" style="stroke:#181818;stroke-width:1;stroke-dasharray:7,7;"/><polygon fill="#181818" points="629.58,575.4283,638.7654,571.8747,633.1086,571.8858,633.0974,566.229,629.58,575.4283" style="stroke:#181818;stroke-width:1;stroke-linejoin:miter;stroke-miterlimit:10;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="66.6948" x="783.28" y="263.2766">gap today:</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="157.7837" x="737.7355" y="278.5872">cold result not published</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="180.1147" x="726.57" y="293.8977">unless repair / push success</text></g><!--link B1 to RM--><g class="link" data-entity-1="ent0009" data-entity-2="ent0007" data-link-type="dependency" data-source-line="29" id="lnk20"><path d="M604.5,622.7383 C603.2,642.1783 601.6896,664.8592 600.5096,682.7192" fill="none" id="B1-to-RM" style="stroke:#181818;stroke-width:1;"/><polygon fill="#181818" points="600.18,687.7083,604.7646,678.9916,600.5096,682.7192,596.782,678.4642,600.18,687.7083" style="stroke:#181818;stroke-width:1;stroke-linejoin:miter;stroke-miterlimit:10;"/></g><!--link B3 to B1--><g class="link" data-entity-1="ent0010" data-entity-2="ent0009" data-link-type="dependency" data-source-line="30" id="lnk21"><path d="M604.23,426.6183 C604.62,464.0383 605.3278,533.3286 605.7178,570.6486" fill="none" id="B3-to-B1" style="stroke:#181818;stroke-width:1;stroke-dasharray:7,7;"/><polygon fill="#181818" points="605.77,575.6483,609.6757,566.607,605.7178,570.6486,601.6762,566.6906,605.77,575.6483" style="stroke:#181818;stroke-width:1;stroke-linejoin:miter;stroke-miterlimit:10;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="85.6299" x="605.88" y="481.9866">when allowed</text></g><!--link XFER to B2--><g class="link" data-entity-1="ent0004" data-entity-2="ent0013" data-link-type="dependency" data-source-line="31" id="lnk22"><path d="M333.8,409.6383 C296.81,416.4983 242.7,431.0683 205,460.9183 C166.22,491.6283 142.3799,540.6011 130.1499,570.9311" fill="none" id="XFER-to-B2" style="stroke:#181818;stroke-width:1;stroke-dasharray:7,7;"/><polygon fill="#181818" points="128.28,575.5683,135.3555,568.7172,130.1499,570.9311,127.936,565.7254,128.28,575.5683" style="stroke:#181818;stroke-width:1;stroke-linejoin:miter;stroke-miterlimit:10;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="66.6948" x="252.8076" y="474.4866">gap today:</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="160.3101" x="206" y="489.7972">no checkpoint of Ok keys</text></g><!--link B2 to RJ--><g class="link" data-entity-1="ent0013" data-entity-2="ent0012" data-link-type="dependency" data-source-line="32" id="lnk23"><path d="M120,622.7383 C120,642.1783 120,664.8483 120,682.7083" fill="none" id="B2-to-RJ" style="stroke:#181818;stroke-width:1;"/><polygon fill="#181818" points="120,687.7083,124,678.7083,120,682.7083,116,678.7083,120,687.7083" style="stroke:#181818;stroke-width:1;stroke-linejoin:miter;stroke-miterlimit:10;"/></g><!--link PA to GMN24--><g class="link" data-entity-1="ent0006" data-entity-2="ent0025" data-link-type="association" data-source-line="35" id="lnk26"><path d="M723.2762,402.9583 C723.4131,402.9583 723.5501,402.9583 723.687,402.9583 C724.2348,402.9583 724.7826,402.9583 725.3304,402.9583 C726.4259,402.9583 727.5215,402.9583 728.6171,402.9583 C732.9993,402.9583 737.3813,402.9583 741.7633,402.9583 C750.5272,402.9583 759.2906,402.9583 768.0538,402.9583 C785.58,402.9583 803.105,402.9583 820.63,402.9583" fill="none" id="PA-GMN24" style="stroke:#181818;stroke-width:1;stroke-dasharray:7,7;"/></g><!--link PB to GMN27--><g class="link" data-entity-1="ent0011" data-entity-2="ent0028" data-link-type="association" data-source-line="41" id="lnk29"><path d="M253.0579,545.7163 C253.1133,545.5001 253.1692,545.2837 253.2254,545.0671 C253.3378,544.6338 253.4517,544.1997 253.5672,543.7646 C253.7981,542.8945 254.0353,542.021 254.2787,541.1445 C262.07,513.0983 276.355,482.0783 302.5,465.9183 C375.66,420.7083 607.54,439.8783 689.5,465.9183 C754.24,486.4883 815.89,538.2383 850.15,570.8583" fill="none" id="PB-GMN27" style="stroke:#181818;stroke-width:1;stroke-dasharray:7,7;"/></g></g></svg>
Display the source blob
Display the rendered blob
Raw
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Display the source blob
Display the rendered blob
Raw
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment