meguro-mcp 0.2.13 → 0.2.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/src/docs.mjs CHANGED
@@ -23,12 +23,28 @@ const RECEIPT_GUIDE_V15_VERSION = 15;
23
23
  const RECEIPT_GUIDE_V16_VERSION = 16;
24
24
  const RECEIPT_GUIDE_V17_VERSION = 17;
25
25
  const RECEIPT_GUIDE_V18_VERSION = 18;
26
+ const RECEIPT_GUIDE_V19_VERSION = 19;
27
+ const RECEIPT_GUIDE_V20_VERSION = 20;
28
+ const RECEIPT_GUIDE_V21_VERSION = 21;
29
+ const RECEIPT_GUIDE_V22_VERSION = 22;
30
+ const RECEIPT_GUIDE_V23_VERSION = 23;
31
+ const RECEIPT_GUIDE_V24_VERSION = 24;
32
+ const RECEIPT_GUIDE_V25_VERSION = 25;
33
+ const RECEIPT_GUIDE_V26_VERSION = 26;
34
+ const RECEIPT_GUIDE_V27_VERSION = 27;
35
+ const RECEIPT_GUIDE_V28_VERSION = 28;
36
+ const RECEIPT_GUIDE_V29_VERSION = 29;
37
+ const RECEIPT_GUIDE_V30_VERSION = 30;
38
+ const RECEIPT_GUIDE_V31_VERSION = 31;
26
39
  const GATE_POLICY_VERSION = 1;
27
40
  const GATE_POLICY_V2_VERSION = 2;
28
41
  const GATE_POLICY_V3_VERSION = 3;
29
42
  const GATE_POLICY_V4_VERSION = 4;
30
43
  const GATE_POLICY_V5_VERSION = 5;
31
44
  const GATE_POLICY_V6_VERSION = 6;
45
+ const GATE_POLICY_V7_VERSION = 7;
46
+ const GATE_POLICY_V8_VERSION = 8;
47
+ const GATE_POLICY_V9_VERSION = 9;
32
48
  const GETTING_STARTED_VERSION = 1;
33
49
  const GETTING_STARTED_V2_VERSION = 2;
34
50
  const GETTING_STARTED_LATEST_VERSION = 3;
@@ -68,6 +84,18 @@ const GETTING_STARTED_V36_VERSION = 36;
68
84
  const GETTING_STARTED_V37_VERSION = 37;
69
85
  const GETTING_STARTED_V38_VERSION = 38;
70
86
  const GETTING_STARTED_V39_VERSION = 39;
87
+ const GETTING_STARTED_V40_VERSION = 40;
88
+ const GETTING_STARTED_V41_VERSION = 41;
89
+ const GETTING_STARTED_V42_VERSION = 42;
90
+ const GETTING_STARTED_V43_VERSION = 43;
91
+ const GETTING_STARTED_V44_VERSION = 44;
92
+ const GETTING_STARTED_V45_VERSION = 45;
93
+ const GETTING_STARTED_V46_VERSION = 46;
94
+ const GETTING_STARTED_V47_VERSION = 47;
95
+ const GETTING_STARTED_V48_VERSION = 48;
96
+ const GETTING_STARTED_V49_VERSION = 49;
97
+ const GETTING_STARTED_V50_VERSION = 50;
98
+ const GETTING_STARTED_V51_VERSION = 51;
71
99
  const PRODUCT_GUIDE_VERSION = 1;
72
100
  const PRODUCT_GUIDE_V2_VERSION = 2;
73
101
  const PRODUCT_GUIDE_V3_VERSION = 3;
@@ -104,6 +132,18 @@ const PRODUCT_GUIDE_V33_VERSION = 33;
104
132
  const PRODUCT_GUIDE_V34_VERSION = 34;
105
133
  const PRODUCT_GUIDE_V35_VERSION = 35;
106
134
  const PRODUCT_GUIDE_V36_VERSION = 36;
135
+ const PRODUCT_GUIDE_V37_VERSION = 37;
136
+ const PRODUCT_GUIDE_V38_VERSION = 38;
137
+ const PRODUCT_GUIDE_V39_VERSION = 39;
138
+ const PRODUCT_GUIDE_V40_VERSION = 40;
139
+ const PRODUCT_GUIDE_V41_VERSION = 41;
140
+ const PRODUCT_GUIDE_V42_VERSION = 42;
141
+ const PRODUCT_GUIDE_V43_VERSION = 43;
142
+ const PRODUCT_GUIDE_V44_VERSION = 44;
143
+ const PRODUCT_GUIDE_V45_VERSION = 45;
144
+ const PRODUCT_GUIDE_V46_VERSION = 46;
145
+ const PRODUCT_GUIDE_V47_VERSION = 47;
146
+ const PRODUCT_GUIDE_V48_VERSION = 48;
107
147
  const RECEIPT_GUIDE_URI = `meguro://docs/receipt-guide/v${RECEIPT_GUIDE_VERSION}`;
108
148
  const RECEIPT_GUIDE_V2_URI = `meguro://docs/receipt-guide/v${RECEIPT_GUIDE_V2_VERSION}`;
109
149
  const RECEIPT_GUIDE_V3_URI = `meguro://docs/receipt-guide/v${RECEIPT_GUIDE_V3_VERSION}`;
@@ -122,12 +162,28 @@ const RECEIPT_GUIDE_V15_URI = `meguro://docs/receipt-guide/v${RECEIPT_GUIDE_V15_
122
162
  const RECEIPT_GUIDE_V16_URI = `meguro://docs/receipt-guide/v${RECEIPT_GUIDE_V16_VERSION}`;
123
163
  const RECEIPT_GUIDE_V17_URI = `meguro://docs/receipt-guide/v${RECEIPT_GUIDE_V17_VERSION}`;
124
164
  const RECEIPT_GUIDE_V18_URI = `meguro://docs/receipt-guide/v${RECEIPT_GUIDE_V18_VERSION}`;
165
+ const RECEIPT_GUIDE_V19_URI = `meguro://docs/receipt-guide/v${RECEIPT_GUIDE_V19_VERSION}`;
166
+ const RECEIPT_GUIDE_V20_URI = `meguro://docs/receipt-guide/v${RECEIPT_GUIDE_V20_VERSION}`;
167
+ const RECEIPT_GUIDE_V21_URI = `meguro://docs/receipt-guide/v${RECEIPT_GUIDE_V21_VERSION}`;
168
+ const RECEIPT_GUIDE_V22_URI = `meguro://docs/receipt-guide/v${RECEIPT_GUIDE_V22_VERSION}`;
169
+ const RECEIPT_GUIDE_V23_URI = `meguro://docs/receipt-guide/v${RECEIPT_GUIDE_V23_VERSION}`;
170
+ const RECEIPT_GUIDE_V24_URI = `meguro://docs/receipt-guide/v${RECEIPT_GUIDE_V24_VERSION}`;
171
+ const RECEIPT_GUIDE_V25_URI = `meguro://docs/receipt-guide/v${RECEIPT_GUIDE_V25_VERSION}`;
172
+ const RECEIPT_GUIDE_V26_URI = `meguro://docs/receipt-guide/v${RECEIPT_GUIDE_V26_VERSION}`;
173
+ const RECEIPT_GUIDE_V27_URI = `meguro://docs/receipt-guide/v${RECEIPT_GUIDE_V27_VERSION}`;
174
+ const RECEIPT_GUIDE_V28_URI = `meguro://docs/receipt-guide/v${RECEIPT_GUIDE_V28_VERSION}`;
175
+ const RECEIPT_GUIDE_V29_URI = `meguro://docs/receipt-guide/v${RECEIPT_GUIDE_V29_VERSION}`;
176
+ const RECEIPT_GUIDE_V30_URI = `meguro://docs/receipt-guide/v${RECEIPT_GUIDE_V30_VERSION}`;
177
+ const RECEIPT_GUIDE_V31_URI = `meguro://docs/receipt-guide/v${RECEIPT_GUIDE_V31_VERSION}`;
125
178
  const GATE_POLICY_URI = `meguro://docs/gate-policy/v${GATE_POLICY_VERSION}`;
126
179
  const GATE_POLICY_V2_URI = `meguro://docs/gate-policy/v${GATE_POLICY_V2_VERSION}`;
127
180
  const GATE_POLICY_V3_URI = `meguro://docs/gate-policy/v${GATE_POLICY_V3_VERSION}`;
128
181
  const GATE_POLICY_V4_URI = `meguro://docs/gate-policy/v${GATE_POLICY_V4_VERSION}`;
129
182
  const GATE_POLICY_V5_URI = `meguro://docs/gate-policy/v${GATE_POLICY_V5_VERSION}`;
130
183
  const GATE_POLICY_V6_URI = `meguro://docs/gate-policy/v${GATE_POLICY_V6_VERSION}`;
184
+ const GATE_POLICY_V7_URI = `meguro://docs/gate-policy/v${GATE_POLICY_V7_VERSION}`;
185
+ const GATE_POLICY_V8_URI = `meguro://docs/gate-policy/v${GATE_POLICY_V8_VERSION}`;
186
+ const GATE_POLICY_V9_URI = `meguro://docs/gate-policy/v${GATE_POLICY_V9_VERSION}`;
131
187
  const GETTING_STARTED_URI = `meguro://docs/getting-started/v${GETTING_STARTED_VERSION}`;
132
188
  const GETTING_STARTED_V2_URI = `meguro://docs/getting-started/v${GETTING_STARTED_V2_VERSION}`;
133
189
  const GETTING_STARTED_LATEST_URI = `meguro://docs/getting-started/v${GETTING_STARTED_LATEST_VERSION}`;
@@ -167,6 +223,18 @@ const GETTING_STARTED_V36_URI = `meguro://docs/getting-started/v${GETTING_STARTE
167
223
  const GETTING_STARTED_V37_URI = `meguro://docs/getting-started/v${GETTING_STARTED_V37_VERSION}`;
168
224
  const GETTING_STARTED_V38_URI = `meguro://docs/getting-started/v${GETTING_STARTED_V38_VERSION}`;
169
225
  const GETTING_STARTED_V39_URI = `meguro://docs/getting-started/v${GETTING_STARTED_V39_VERSION}`;
226
+ const GETTING_STARTED_V40_URI = `meguro://docs/getting-started/v${GETTING_STARTED_V40_VERSION}`;
227
+ const GETTING_STARTED_V41_URI = `meguro://docs/getting-started/v${GETTING_STARTED_V41_VERSION}`;
228
+ const GETTING_STARTED_V42_URI = `meguro://docs/getting-started/v${GETTING_STARTED_V42_VERSION}`;
229
+ const GETTING_STARTED_V43_URI = `meguro://docs/getting-started/v${GETTING_STARTED_V43_VERSION}`;
230
+ const GETTING_STARTED_V44_URI = `meguro://docs/getting-started/v${GETTING_STARTED_V44_VERSION}`;
231
+ const GETTING_STARTED_V45_URI = `meguro://docs/getting-started/v${GETTING_STARTED_V45_VERSION}`;
232
+ const GETTING_STARTED_V46_URI = `meguro://docs/getting-started/v${GETTING_STARTED_V46_VERSION}`;
233
+ const GETTING_STARTED_V47_URI = `meguro://docs/getting-started/v${GETTING_STARTED_V47_VERSION}`;
234
+ const GETTING_STARTED_V48_URI = `meguro://docs/getting-started/v${GETTING_STARTED_V48_VERSION}`;
235
+ const GETTING_STARTED_V49_URI = `meguro://docs/getting-started/v${GETTING_STARTED_V49_VERSION}`;
236
+ const GETTING_STARTED_V50_URI = `meguro://docs/getting-started/v${GETTING_STARTED_V50_VERSION}`;
237
+ const GETTING_STARTED_V51_URI = `meguro://docs/getting-started/v${GETTING_STARTED_V51_VERSION}`;
170
238
  const PRODUCT_GUIDE_URI = `meguro://docs/product-guide/v${PRODUCT_GUIDE_VERSION}`;
171
239
  const PRODUCT_GUIDE_V2_URI = `meguro://docs/product-guide/v${PRODUCT_GUIDE_V2_VERSION}`;
172
240
  const PRODUCT_GUIDE_V3_URI = `meguro://docs/product-guide/v${PRODUCT_GUIDE_V3_VERSION}`;
@@ -203,6 +271,18 @@ const PRODUCT_GUIDE_V33_URI = `meguro://docs/product-guide/v${PRODUCT_GUIDE_V33_
203
271
  const PRODUCT_GUIDE_V34_URI = `meguro://docs/product-guide/v${PRODUCT_GUIDE_V34_VERSION}`;
204
272
  const PRODUCT_GUIDE_V35_URI = `meguro://docs/product-guide/v${PRODUCT_GUIDE_V35_VERSION}`;
205
273
  const PRODUCT_GUIDE_V36_URI = `meguro://docs/product-guide/v${PRODUCT_GUIDE_V36_VERSION}`;
274
+ const PRODUCT_GUIDE_V37_URI = `meguro://docs/product-guide/v${PRODUCT_GUIDE_V37_VERSION}`;
275
+ const PRODUCT_GUIDE_V38_URI = `meguro://docs/product-guide/v${PRODUCT_GUIDE_V38_VERSION}`;
276
+ const PRODUCT_GUIDE_V39_URI = `meguro://docs/product-guide/v${PRODUCT_GUIDE_V39_VERSION}`;
277
+ const PRODUCT_GUIDE_V40_URI = `meguro://docs/product-guide/v${PRODUCT_GUIDE_V40_VERSION}`;
278
+ const PRODUCT_GUIDE_V41_URI = `meguro://docs/product-guide/v${PRODUCT_GUIDE_V41_VERSION}`;
279
+ const PRODUCT_GUIDE_V42_URI = `meguro://docs/product-guide/v${PRODUCT_GUIDE_V42_VERSION}`;
280
+ const PRODUCT_GUIDE_V43_URI = `meguro://docs/product-guide/v${PRODUCT_GUIDE_V43_VERSION}`;
281
+ const PRODUCT_GUIDE_V44_URI = `meguro://docs/product-guide/v${PRODUCT_GUIDE_V44_VERSION}`;
282
+ const PRODUCT_GUIDE_V45_URI = `meguro://docs/product-guide/v${PRODUCT_GUIDE_V45_VERSION}`;
283
+ const PRODUCT_GUIDE_V46_URI = `meguro://docs/product-guide/v${PRODUCT_GUIDE_V46_VERSION}`;
284
+ const PRODUCT_GUIDE_V47_URI = `meguro://docs/product-guide/v${PRODUCT_GUIDE_V47_VERSION}`;
285
+ const PRODUCT_GUIDE_V48_URI = `meguro://docs/product-guide/v${PRODUCT_GUIDE_V48_VERSION}`;
206
286
  export const DOCUMENTATION_INDEX_URI = 'meguro://docs/index/v1';
207
287
  export const DOCUMENTATION_INDEX_V2_URI = 'meguro://docs/index/v2';
208
288
  export const DOCUMENTATION_INDEX_V3_URI = 'meguro://docs/index/v3';
@@ -240,6 +320,21 @@ export const DOCUMENTATION_INDEX_V34_URI = 'meguro://docs/index/v34';
240
320
  export const DOCUMENTATION_INDEX_V35_URI = 'meguro://docs/index/v35';
241
321
  export const DOCUMENTATION_INDEX_V36_URI = 'meguro://docs/index/v36';
242
322
  export const DOCUMENTATION_INDEX_V37_URI = 'meguro://docs/index/v37';
323
+ export const DOCUMENTATION_INDEX_V38_URI = 'meguro://docs/index/v38';
324
+ export const DOCUMENTATION_INDEX_V39_URI = 'meguro://docs/index/v39';
325
+ export const DOCUMENTATION_INDEX_V40_URI = 'meguro://docs/index/v40';
326
+ export const DOCUMENTATION_INDEX_V41_URI = 'meguro://docs/index/v41';
327
+ export const DOCUMENTATION_INDEX_V42_URI = 'meguro://docs/index/v42';
328
+ export const DOCUMENTATION_INDEX_V43_URI = 'meguro://docs/index/v43';
329
+ export const DOCUMENTATION_INDEX_V44_URI = 'meguro://docs/index/v44';
330
+ export const DOCUMENTATION_INDEX_V45_URI = 'meguro://docs/index/v45';
331
+ export const DOCUMENTATION_INDEX_V46_URI = 'meguro://docs/index/v46';
332
+ export const DOCUMENTATION_INDEX_V47_URI = 'meguro://docs/index/v47';
333
+ export const DOCUMENTATION_INDEX_V48_URI = 'meguro://docs/index/v48';
334
+ export const DOCUMENTATION_INDEX_V49_URI = 'meguro://docs/index/v49';
335
+ export const DOCUMENTATION_INDEX_V50_URI = 'meguro://docs/index/v50';
336
+ export const DOCUMENTATION_INDEX_V51_URI = 'meguro://docs/index/v51';
337
+ export const DOCUMENTATION_INDEX_V52_URI = 'meguro://docs/index/v52';
243
338
 
244
339
  const DOCUMENTATION_CURRENCY_V1 = deepFreeze({
245
340
  indexVersion: 1,
@@ -631,7 +726,188 @@ const DOCUMENTATION_CURRENCY_V37 = deepFreeze({
631
726
  'receipt-guide': RECEIPT_GUIDE_V18_URI,
632
727
  },
633
728
  });
634
- const CURRENT_DOCUMENTATION_CURRENCY = DOCUMENTATION_CURRENCY_V37;
729
+ const DOCUMENTATION_CURRENCY_V38 = deepFreeze({
730
+ indexVersion: 38,
731
+ currentUriByTopic: {
732
+ 'gate-policy': GATE_POLICY_V6_URI,
733
+ 'getting-started': GETTING_STARTED_V39_URI,
734
+ index: DOCUMENTATION_INDEX_V38_URI,
735
+ 'product-guide': PRODUCT_GUIDE_V36_URI,
736
+ 'receipt-guide': RECEIPT_GUIDE_V19_URI,
737
+ },
738
+ });
739
+ const DOCUMENTATION_CURRENCY_V39 = deepFreeze({
740
+ indexVersion: 39,
741
+ currentUriByTopic: {
742
+ 'gate-policy': GATE_POLICY_V6_URI,
743
+ 'getting-started': GETTING_STARTED_V40_URI,
744
+ index: DOCUMENTATION_INDEX_V39_URI,
745
+ 'product-guide': PRODUCT_GUIDE_V37_URI,
746
+ 'receipt-guide': RECEIPT_GUIDE_V19_URI,
747
+ },
748
+ });
749
+ // MEG-1364: the receipt and Impact contracts gained a required modeled-mechanism table, so the
750
+ // receipt guide republishes its generated field index as v20 and the pointers that must name it
751
+ // advance with it. Gate policy is untouched; every prior resource keeps its bytes.
752
+ const DOCUMENTATION_CURRENCY_V40 = deepFreeze({
753
+ indexVersion: 40,
754
+ currentUriByTopic: {
755
+ 'gate-policy': GATE_POLICY_V6_URI,
756
+ 'getting-started': GETTING_STARTED_V41_URI,
757
+ index: DOCUMENTATION_INDEX_V40_URI,
758
+ 'product-guide': PRODUCT_GUIDE_V38_URI,
759
+ 'receipt-guide': RECEIPT_GUIDE_V20_URI,
760
+ },
761
+ });
762
+ // MEG-1391: the current shared receipt adds required lossless public multiplicity, so its receipt
763
+ // guide and the index that points to it advance together. Every prior resource keeps its bytes.
764
+ const DOCUMENTATION_CURRENCY_V41 = deepFreeze({
765
+ indexVersion: 41,
766
+ currentUriByTopic: {
767
+ 'gate-policy': GATE_POLICY_V6_URI,
768
+ 'getting-started': GETTING_STARTED_V41_URI,
769
+ index: DOCUMENTATION_INDEX_V41_URI,
770
+ 'product-guide': PRODUCT_GUIDE_V38_URI,
771
+ 'receipt-guide': RECEIPT_GUIDE_V21_URI,
772
+ },
773
+ });
774
+ // MEG-1398: the current receipt's forensic register publishes one row per distinct public refusal
775
+ // fact with its multiplicity and complete call references, so its receipt guide and the index that
776
+ // points to it advance together. Every prior resource keeps its bytes.
777
+ const DOCUMENTATION_CURRENCY_V42 = deepFreeze({
778
+ indexVersion: 42,
779
+ currentUriByTopic: {
780
+ 'gate-policy': GATE_POLICY_V6_URI,
781
+ 'getting-started': GETTING_STARTED_V41_URI,
782
+ index: DOCUMENTATION_INDEX_V42_URI,
783
+ 'product-guide': PRODUCT_GUIDE_V38_URI,
784
+ 'receipt-guide': RECEIPT_GUIDE_V22_URI,
785
+ },
786
+ });
787
+ // MEG-1398 integration: republish the two current cross-referencing guides and their index so every
788
+ // current resource names the compact forensic generation. Prior immutable resources keep their bytes.
789
+ const DOCUMENTATION_CURRENCY_V43 = deepFreeze({
790
+ indexVersion: 43,
791
+ currentUriByTopic: {
792
+ 'gate-policy': GATE_POLICY_V6_URI,
793
+ 'getting-started': GETTING_STARTED_V42_URI,
794
+ index: DOCUMENTATION_INDEX_V43_URI,
795
+ 'product-guide': PRODUCT_GUIDE_V39_URI,
796
+ 'receipt-guide': RECEIPT_GUIDE_V22_URI,
797
+ },
798
+ });
799
+ // MEG-1386: the current receipt carries one compiled Conduct authority every rendition consumes,
800
+ // so its receipt guide advances and the two guides that cite it are republished with the index.
801
+ // Every prior resource keeps its bytes.
802
+ const DOCUMENTATION_CURRENCY_V44 = deepFreeze({
803
+ indexVersion: 44,
804
+ currentUriByTopic: {
805
+ 'gate-policy': GATE_POLICY_V6_URI,
806
+ 'getting-started': GETTING_STARTED_V43_URI,
807
+ index: DOCUMENTATION_INDEX_V44_URI,
808
+ 'product-guide': PRODUCT_GUIDE_V40_URI,
809
+ 'receipt-guide': RECEIPT_GUIDE_V23_URI,
810
+ },
811
+ });
812
+ // MEG-1457: the current receipt now carries explicitly bounded customer-authored before/after
813
+ // values, so every current document that names the receipt guide is republished with v24.
814
+ // Earlier publications remain immutable.
815
+ const DOCUMENTATION_CURRENCY_V45 = deepFreeze({
816
+ indexVersion: 45,
817
+ currentUriByTopic: {
818
+ 'gate-policy': GATE_POLICY_V6_URI,
819
+ 'getting-started': GETTING_STARTED_V44_URI,
820
+ index: DOCUMENTATION_INDEX_V45_URI,
821
+ 'product-guide': PRODUCT_GUIDE_V41_URI,
822
+ 'receipt-guide': RECEIPT_GUIDE_V24_URI,
823
+ },
824
+ });
825
+ const DOCUMENTATION_CURRENCY_V46 = deepFreeze({
826
+ indexVersion: 46,
827
+ currentUriByTopic: {
828
+ 'gate-policy': GATE_POLICY_V6_URI,
829
+ 'getting-started': GETTING_STARTED_V45_URI,
830
+ index: DOCUMENTATION_INDEX_V46_URI,
831
+ 'product-guide': PRODUCT_GUIDE_V42_URI,
832
+ 'receipt-guide': RECEIPT_GUIDE_V25_URI,
833
+ },
834
+ });
835
+ // MEG-1570: publish one correction-contract generation. Every new guide names only this
836
+ // generation's immutable resources; every earlier resource remains byte-identical.
837
+ const DOCUMENTATION_CURRENCY_V47 = deepFreeze({
838
+ indexVersion: 47,
839
+ currentUriByTopic: {
840
+ 'gate-policy': GATE_POLICY_V7_URI,
841
+ 'getting-started': GETTING_STARTED_V46_URI,
842
+ index: DOCUMENTATION_INDEX_V47_URI,
843
+ 'product-guide': PRODUCT_GUIDE_V43_URI,
844
+ 'receipt-guide': RECEIPT_GUIDE_V26_URI,
845
+ },
846
+ });
847
+ // MEG-1568: publish one public-comparison-card generation. Every new guide names only this
848
+ // generation's immutable resources; every earlier resource remains byte-identical.
849
+ const DOCUMENTATION_CURRENCY_V48 = deepFreeze({
850
+ indexVersion: 48,
851
+ currentUriByTopic: {
852
+ 'gate-policy': GATE_POLICY_V8_URI,
853
+ 'getting-started': GETTING_STARTED_V47_URI,
854
+ index: DOCUMENTATION_INDEX_V48_URI,
855
+ 'product-guide': PRODUCT_GUIDE_V44_URI,
856
+ 'receipt-guide': RECEIPT_GUIDE_V27_URI,
857
+ },
858
+ });
859
+ // MEG-1585: append one tier-facts and assertion-key generation. The unlanded bundle advances every
860
+ // changed guide together; the preceding v48 generation and every earlier resource remain immutable.
861
+ const DOCUMENTATION_CURRENCY_V49 = deepFreeze({
862
+ indexVersion: 49,
863
+ currentUriByTopic: {
864
+ 'gate-policy': GATE_POLICY_V9_URI,
865
+ 'getting-started': GETTING_STARTED_V48_URI,
866
+ index: DOCUMENTATION_INDEX_V49_URI,
867
+ 'product-guide': PRODUCT_GUIDE_V45_URI,
868
+ 'receipt-guide': RECEIPT_GUIDE_V28_URI,
869
+ },
870
+ });
871
+ // MEG-1590: append the reproducibility, CI, trust, indexing, and token-lifecycle guides together.
872
+ const DOCUMENTATION_CURRENCY_V50 = deepFreeze({
873
+ indexVersion: 50,
874
+ currentUriByTopic: {
875
+ 'gate-policy': GATE_POLICY_V9_URI,
876
+ 'getting-started': GETTING_STARTED_V49_URI,
877
+ index: DOCUMENTATION_INDEX_V50_URI,
878
+ 'product-guide': PRODUCT_GUIDE_V46_URI,
879
+ 'receipt-guide': RECEIPT_GUIDE_V29_URI,
880
+ },
881
+ });
882
+ // MEG-1593: the receipt guide advances for the recorded Admin API version fact, and the three
883
+ // documents that point at it are republished so one currency names one generation. The Gate policy
884
+ // says nothing about this fact, so it is not republished at all: this currency names v9, the same
885
+ // bytes the previous generation named.
886
+ const DOCUMENTATION_CURRENCY_V51 = deepFreeze({
887
+ indexVersion: 51,
888
+ currentUriByTopic: {
889
+ 'gate-policy': GATE_POLICY_V9_URI,
890
+ 'getting-started': GETTING_STARTED_V50_URI,
891
+ index: DOCUMENTATION_INDEX_V51_URI,
892
+ 'product-guide': PRODUCT_GUIDE_V47_URI,
893
+ 'receipt-guide': RECEIPT_GUIDE_V30_URI,
894
+ },
895
+ });
896
+ // MEG-1594: the receipt guide advances for the completed-run baseline-reversion fact, and the three
897
+ // documents that point at it are republished so one currency names one generation. The Gate policy
898
+ // says nothing about this fact, so it is not republished at all: this currency names v9, the same
899
+ // bytes the previous generation named.
900
+ const DOCUMENTATION_CURRENCY_V52 = deepFreeze({
901
+ indexVersion: 52,
902
+ currentUriByTopic: {
903
+ 'gate-policy': GATE_POLICY_V9_URI,
904
+ 'getting-started': GETTING_STARTED_V51_URI,
905
+ index: DOCUMENTATION_INDEX_V52_URI,
906
+ 'product-guide': PRODUCT_GUIDE_V48_URI,
907
+ 'receipt-guide': RECEIPT_GUIDE_V31_URI,
908
+ },
909
+ });
910
+ const CURRENT_DOCUMENTATION_CURRENCY = DOCUMENTATION_CURRENCY_V52;
635
911
 
636
912
  function documentationVersionFromUri(uri) {
637
913
  const match = /\/v([1-9][0-9]*)$/u.exec(uri);
@@ -661,7 +937,7 @@ const CURRENT_RECEIPT_GUIDE_URI = CURRENT_DOCUMENTATION_CURRENCY.currentUriByTop
661
937
  const CURRENT_GATE_POLICY_URI = CURRENT_DOCUMENTATION_CURRENCY.currentUriByTopic['gate-policy'];
662
938
  const CURRENT_INDEX_URI = CURRENT_DOCUMENTATION_CURRENCY.currentUriByTopic.index;
663
939
  const MCP_ZERO_PRIOR_KNOWLEDGE_INTRO = `Meguro is a rehearsal and technical-evaluation environment for commerce agents. A practice store is an isolated commerce model that never touches a live store. Store time is its simulated clock. A run is a bounded evaluation that advances Store time. A receipt is the record of the calls, changes, and evidence Meguro captured. This connection lets you discover or create a practice store, run an evaluation, and inspect its receipt. These are rehearsal results, not forecasts, certifications, or proof of live performance.`;
664
- const MCP_INITIALIZE_DOCUMENTATION_INSTRUCTIONS = `${MCP_ZERO_PRIOR_KNOWLEDGE_INTRO} Start with \`${CURRENT_GETTING_STARTED_URI}\` or call \`docs_read({ topic: "getting-started", version: ${documentationVersionFromUri(CURRENT_GETTING_STARTED_URI)} })\`; for general Meguro questions, read \`${CURRENT_PRODUCT_GUIDE_URI}\` or call \`docs_read({ topic: "product-guide", version: ${documentationVersionFromUri(CURRENT_PRODUCT_GUIDE_URI)} })\`. Every receipt carries automatic Recorded API behavior under the Default run policy; Configured Receipt Gate is a separate optional configured policy. Distinguish the documentation resource version in each \`meguro://docs/.../vN\` URI, the runtime Gate policy contract \`meguro.release-gate-policy.v1\` version 1, and the requested Shopify Admin API version from ${ADMIN_API_SUPPORTED_VERSIONS.map((version) => `\`${version}\``).join(' or ')} with default \`${ADMIN_API_DEFAULT_VERSION}\`.`;
940
+ const MCP_INITIALIZE_DOCUMENTATION_INSTRUCTIONS = `${MCP_ZERO_PRIOR_KNOWLEDGE_INTRO} Start with \`${CURRENT_GETTING_STARTED_URI}\` or call \`docs_read({ topic: "getting-started", version: ${documentationVersionFromUri(CURRENT_GETTING_STARTED_URI)} })\`; for general Meguro questions, read \`${CURRENT_PRODUCT_GUIDE_URI}\` or call \`docs_read({ topic: "product-guide", version: ${documentationVersionFromUri(CURRENT_PRODUCT_GUIDE_URI)} })\`. Use the Product Guide routing table for pre-sign-in coverage and scenario questions. Every receipt carries automatic Recorded API behavior under the Default run policy; Configured Receipt Gate is a separate optional configured policy. Distinguish the documentation resource version in each \`meguro://docs/.../vN\` URI, the runtime Gate policy contract \`meguro.release-gate-policy.v1\` version 1, and the requested Shopify Admin API version from ${ADMIN_API_SUPPORTED_VERSIONS.map((version) => `\`${version}\``).join(' or ')} with default \`${ADMIN_API_DEFAULT_VERSION}\`.`;
665
941
 
666
942
  function configuredDashboardOrigin(dashboardUrl) {
667
943
  const configured = String(dashboardUrl ?? '').trim();
@@ -1125,89 +1401,6 @@ const RECEIPT_FIELDS = deepFreeze({
1125
1401
  'totals.unsupported',
1126
1402
  'visibility',
1127
1403
  ]),
1128
- 'meguro.tiktok-practice-receipt.v1': stableFields([
1129
- 'actionLedgerDigest',
1130
- 'artifactChecksum',
1131
- 'attempt.attemptId',
1132
- 'attempt.completedAt',
1133
- 'attempt.startedAt',
1134
- 'attempt.status',
1135
- 'counts.accepted',
1136
- 'counts.actions',
1137
- 'counts.calls',
1138
- 'counts.consequences',
1139
- 'counts.matchedActions',
1140
- 'counts.missingActions',
1141
- 'counts.omittedAccepted',
1142
- 'counts.omittedCalls',
1143
- 'counts.omittedConsequences',
1144
- 'counts.omittedRejected',
1145
- 'counts.rejected',
1146
- 'counts.unmatchedActions',
1147
- 'createdAt',
1148
- 'gaps[]',
1149
- 'omittedEvidenceDigest',
1150
- 'platform',
1151
- 'practiceStore.storeId',
1152
- 'programGate.changedByPracticeReceipt',
1153
- 'programGate.color',
1154
- 'programGate.missingGreen[]',
1155
- 'programGate.missingYellow[]',
1156
- 'programGate.readyForDriverConvergence',
1157
- 'programGate.reasons[]',
1158
- 'programGate.source',
1159
- 'rehearsalDigest',
1160
- 'receiptId',
1161
- 'scenario.key',
1162
- 'scenario.title',
1163
- 'scenario.version',
1164
- 'scenarioTime.clockRevision',
1165
- 'scenarioTime.currentAt',
1166
- 'scenarioTime.startedAt',
1167
- 'scenarioTime.storeDate',
1168
- 'scenarioTime.timeZone',
1169
- 'schemaVersion',
1170
- 'seed',
1171
- 'software.adapter.id',
1172
- 'software.adapter.profileVersion',
1173
- 'software.artifactSchemaVersion',
1174
- 'software.buildStamp',
1175
- 'software.product',
1176
- 'software.rehearsalProjectionVersion',
1177
- 'template.key',
1178
- 'template.version',
1179
- 'timeline[].actionCount',
1180
- 'timeline[].businessCode',
1181
- 'timeline[].businessMessage',
1182
- 'timeline[].clockRevision',
1183
- 'timeline[].consequences[]',
1184
- 'timeline[].durationMs',
1185
- 'timeline[].fullEvidenceDigest',
1186
- 'timeline[].method',
1187
- 'timeline[].omittedConsequencesCount',
1188
- 'timeline[].omittedConsequencesDigest',
1189
- 'timeline[].operation',
1190
- 'timeline[].outcome',
1191
- 'timeline[].path',
1192
- 'timeline[].practiceStatus',
1193
- 'timeline[].realStatus',
1194
- 'timeline[].rejectionReason',
1195
- 'timeline[].requestBody.bytes',
1196
- 'timeline[].requestBody.raw',
1197
- 'timeline[].requestBody.truncated',
1198
- 'timeline[].requestQuery.bytes',
1199
- 'timeline[].requestQuery.raw',
1200
- 'timeline[].requestQuery.truncated',
1201
- 'timeline[].responseBody.bytes',
1202
- 'timeline[].responseBody.raw',
1203
- 'timeline[].responseBody.truncated',
1204
- 'timeline[].scenarioTime',
1205
- 'timeline[].scenarioTimeZone',
1206
- 'timeline[].sequence',
1207
- 'timeline[].status',
1208
- 'timeline[].wallTime',
1209
- 'warning',
1210
- ]),
1211
1404
  });
1212
1405
 
1213
1406
  const RECEIPT_FIELDS_V3 = deepFreeze({
@@ -1265,12 +1458,6 @@ const RECEIPT_FIELDS_V5 = deepFreeze({
1265
1458
 
1266
1459
  const RECEIPT_FIELDS_LATEST = deepFreeze({
1267
1460
  ...RECEIPT_FIELDS_V5,
1268
- 'meguro.tiktok-practice-receipt.v1': stableFields([
1269
- ...RECEIPT_FIELDS_V5['meguro.tiktok-practice-receipt.v1']
1270
- .filter((field) => field !== 'rehearsalDigest' && field !== 'software.rehearsalProjectionVersion'),
1271
- 'simulationDigest',
1272
- 'software.simulationProjectionVersion',
1273
- ]),
1274
1461
  });
1275
1462
 
1276
1463
  const RECEIPT_FIELDS_V7 = deepFreeze({
@@ -1380,10 +1567,16 @@ const TEMPLATE_EVENT_RESOLUTION_FIELDS = Object.freeze([
1380
1567
  'eventResolution.classification',
1381
1568
  'eventResolution.evaluationHorizonDays',
1382
1569
  'eventResolution.eventWindow.basis',
1570
+ 'eventResolution.eventWindow.durationDays',
1383
1571
  'eventResolution.eventWindow.endDay',
1384
1572
  'eventResolution.eventWindow.key',
1385
1573
  'eventResolution.eventWindow.label',
1574
+ 'eventResolution.eventWindow.modeledRampDays',
1575
+ 'eventResolution.eventWindow.startOffsetDays',
1386
1576
  'eventResolution.eventWindow.startDay',
1577
+ 'eventResolution.eventWindow.trigger.commitment',
1578
+ 'eventResolution.eventWindow.trigger.kind',
1579
+ 'eventResolution.eventWindow.trigger.label',
1387
1580
  'eventResolution.measuredHorizon.basis',
1388
1581
  'eventResolution.measuredHorizon.measuredDays',
1389
1582
  'eventResolution.measuredHorizon.plannedDays',
@@ -1392,6 +1585,23 @@ const TEMPLATE_EVENT_RESOLUTION_FIELDS = Object.freeze([
1392
1585
  'eventResolution.measuredHorizon.worldDays.plannedToDay',
1393
1586
  'eventResolution.measuredHorizon.worldDays.toDay',
1394
1587
  'eventResolution.reason',
1588
+ 'eventResolution.realizedWindow.activationDay',
1589
+ 'eventResolution.realizedWindow.arcEndDay',
1590
+ 'eventResolution.realizedWindow.basis',
1591
+ 'eventResolution.realizedWindow.clipped',
1592
+ 'eventResolution.realizedWindow.declaredDurationDays',
1593
+ 'eventResolution.realizedWindow.endDay',
1594
+ 'eventResolution.realizedWindow.explanation',
1595
+ 'eventResolution.realizedWindow.intendedEndDay',
1596
+ 'eventResolution.realizedWindow.key',
1597
+ 'eventResolution.realizedWindow.label',
1598
+ 'eventResolution.realizedWindow.modeledRampDays',
1599
+ 'eventResolution.realizedWindow.realizedDays',
1600
+ 'eventResolution.realizedWindow.schemaVersion',
1601
+ 'eventResolution.realizedWindow.startDay',
1602
+ 'eventResolution.realizedWindow.trigger.commitment',
1603
+ 'eventResolution.realizedWindow.trigger.kind',
1604
+ 'eventResolution.realizedWindow.trigger.label',
1395
1605
  'eventResolution.schemaVersion',
1396
1606
  'eventResolution.source.templateKey',
1397
1607
  'eventResolution.source.templateLabel',
@@ -1412,6 +1622,279 @@ const RECEIPT_FIELDS_V13 = deepFreeze({
1412
1622
  ]),
1413
1623
  });
1414
1624
 
1625
+ const RECEIPT_FIELDS_V19 = deepFreeze({
1626
+ ...RECEIPT_FIELDS_V13,
1627
+ 'meguro.shared-receipt.v2': stableFields([
1628
+ ...RECEIPT_FIELDS_V13['meguro.shared-receipt.v2']
1629
+ .filter((field) => field !== 'temporalEvidence.evaluations[].requirementId'),
1630
+ 'changes[].committedEntities[].id',
1631
+ 'changes[].committedEntities[].role',
1632
+ 'changes[].committedEntities[].type',
1633
+ 'presentation.blocks[].availability',
1634
+ 'presentation.blocks[].block',
1635
+ 'presentation.blocks[].fallback',
1636
+ 'presentation.blocks[].rows[].detail',
1637
+ 'presentation.blocks[].rows[].label',
1638
+ 'presentation.blocks[].rows[].provenance',
1639
+ 'presentation.blocks[].rows[].status',
1640
+ 'presentation.blocks[].rows[].statusLabel',
1641
+ 'presentation.blocks[].rows[].transition',
1642
+ 'presentation.blocks[].rows[].value',
1643
+ 'presentation.blocks[].subtitle',
1644
+ 'presentation.blocks[].title',
1645
+ 'presentation.blocks[].truncatedCount',
1646
+ 'presentation.markdown.bytes',
1647
+ 'presentation.markdown.mediaType',
1648
+ 'presentation.markdown.sha256',
1649
+ 'presentation.markdown.text',
1650
+ 'presentation.reportBack.narrative[]',
1651
+ 'presentation.reportBack.planes[].facts',
1652
+ 'presentation.reportBack.planes[].label',
1653
+ 'presentation.reportBack.planes[].narrative[]',
1654
+ 'presentation.reportBack.planes[].plane',
1655
+ 'presentation.reportBack.schemaVersion',
1656
+ 'presentation.schemaVersion',
1657
+ 'presentation.takeHome.boundary.claims[]',
1658
+ 'presentation.takeHome.boundary.evidence[]',
1659
+ 'presentation.takeHome.boundary.notClaimed[]',
1660
+ 'presentation.takeHome.planes[].facts[].label',
1661
+ 'presentation.takeHome.planes[].facts[].value',
1662
+ 'presentation.takeHome.planes[].label',
1663
+ 'presentation.takeHome.planes[].plane',
1664
+ 'presentation.takeHome.schemaVersion',
1665
+ 'presentation.takeHome.verification.digestAlgorithm',
1666
+ 'presentation.takeHome.verification.instructions[]',
1667
+ ]),
1668
+ 'meguro.hosted-impact-report.v1': stableFields([
1669
+ ...RECEIPT_FIELDS_V13['meguro.hosted-impact-report.v1']
1670
+ .filter((field) => field !== 'financialSourceTotals.baseline.winbackOfferCostCents'
1671
+ && field !== 'financialSourceTotals.treated.winbackOfferCostCents'),
1672
+ 'committedEntities[].id',
1673
+ 'committedEntities[].role',
1674
+ 'committedEntities[].type',
1675
+ 'financialSourceTotals.baseline.winbackContactRecoveryCostCents',
1676
+ 'financialSourceTotals.treated.winbackContactRecoveryCostCents',
1677
+ ]),
1678
+ });
1679
+
1680
+ /**
1681
+ * MEG-1364: the modeled-mechanism observation paths, added to the two public contracts that now
1682
+ * carry the table. One suffix list, applied at each contract's own prefix, because the receipt
1683
+ * carries the set at its root and the Impact report carries it inside the shared measurement.
1684
+ */
1685
+ const MODELED_MECHANISM_FIELD_SUFFIXES = Object.freeze([
1686
+ 'declaration',
1687
+ 'observations[].activation',
1688
+ 'observations[].availability',
1689
+ 'observations[].basis',
1690
+ 'observations[].gating',
1691
+ 'observations[].mechanism',
1692
+ 'observations[].publicLabel',
1693
+ 'observations[].quantities[].key',
1694
+ 'observations[].quantities[].label',
1695
+ 'observations[].quantities[].source',
1696
+ 'observations[].quantities[].unit',
1697
+ 'observations[].quantities[].value',
1698
+ 'observations[].reason',
1699
+ 'reason',
1700
+ 'schemaVersion',
1701
+ 'source.templateKey',
1702
+ 'source.templateLabel',
1703
+ 'source.templateRevision',
1704
+ ]);
1705
+
1706
+ function modeledMechanismFields(prefix) {
1707
+ return MODELED_MECHANISM_FIELD_SUFFIXES.map((suffix) => `${prefix}.${suffix}`);
1708
+ }
1709
+
1710
+ // MEG-1364: v19 plus the modeled-mechanism observation table, which is a REQUIRED field of both
1711
+ // public contracts. Every earlier generation keeps its own list and therefore its own bytes.
1712
+ const RECEIPT_FIELDS_V20 = deepFreeze({
1713
+ ...RECEIPT_FIELDS_V19,
1714
+ 'meguro.shared-receipt.v2': stableFields([
1715
+ ...RECEIPT_FIELDS_V19['meguro.shared-receipt.v2']
1716
+ .filter((field) => !field.startsWith('expectedRefusals.assertions[]')),
1717
+ 'assertionOutcomes.rows[].assertionKey',
1718
+ 'assertionOutcomes.rows[].availability',
1719
+ 'assertionOutcomes.rows[].callReferences[].attempt',
1720
+ 'assertionOutcomes.rows[].callReferences[].operationName',
1721
+ 'assertionOutcomes.rows[].callReferences[].referenceType',
1722
+ 'assertionOutcomes.rows[].callReferences[].sequence',
1723
+ 'assertionOutcomes.rows[].callReferences[].topic',
1724
+ 'assertionOutcomes.rows[].correctionObserved',
1725
+ 'assertionOutcomes.rows[].detail',
1726
+ 'assertionOutcomes.rows[].evaluationSubject',
1727
+ 'assertionOutcomes.rows[].exercised',
1728
+ 'assertionOutcomes.rows[].family',
1729
+ 'assertionOutcomes.rows[].label',
1730
+ 'assertionOutcomes.rows[].observedReasonCodes[]',
1731
+ 'assertionOutcomes.rows[].observedResponsibleLayers[]',
1732
+ 'assertionOutcomes.rows[].status',
1733
+ 'assertionOutcomes.schemaVersion',
1734
+ ...modeledMechanismFields('modeledMechanisms'),
1735
+ 'receiptForensics.rows[].behaviorClass',
1736
+ 'receiptForensics.rows[].callReference.sequence',
1737
+ 'receiptForensics.rows[].entity.identityState',
1738
+ 'receiptForensics.rows[].entity.type',
1739
+ 'receiptForensics.rows[].operation',
1740
+ 'receiptForensics.rows[].operationCommitBoundary',
1741
+ 'receiptForensics.rows[].refusal.explanation',
1742
+ 'receiptForensics.rows[].refusal.reasonCode',
1743
+ 'receiptForensics.rows[].responsibleLayer',
1744
+ 'receiptForensics.schemaVersion',
1745
+ ]),
1746
+ 'meguro.hosted-impact-report.v1': stableFields([
1747
+ ...RECEIPT_FIELDS_V19['meguro.hosted-impact-report.v1'],
1748
+ ...modeledMechanismFields('measurement.modeledMechanisms'),
1749
+ ]),
1750
+ });
1751
+
1752
+ const RECEIPT_FIELDS_V21 = deepFreeze({
1753
+ ...RECEIPT_FIELDS_V20,
1754
+ 'meguro.shared-receipt.v2': stableFields([
1755
+ ...RECEIPT_FIELDS_V20['meguro.shared-receipt.v2'],
1756
+ 'changes[].occurrenceCount',
1757
+ ]),
1758
+ });
1759
+
1760
+ const RECEIPT_FIELDS_V22 = deepFreeze({
1761
+ ...RECEIPT_FIELDS_V21,
1762
+ 'meguro.shared-receipt.v2': stableFields([
1763
+ ...RECEIPT_FIELDS_V21['meguro.shared-receipt.v2']
1764
+ .filter((field) => field !== 'receiptForensics.rows[].callReference.sequence'),
1765
+ 'receiptForensics.rows[].callReferences[].sequence',
1766
+ 'receiptForensics.rows[].occurrenceCount',
1767
+ ]),
1768
+ });
1769
+
1770
+ // MEG-1386: the one compiled Conduct authority every rendition consumes unchanged. Its fields are
1771
+ // REQUIRED on the current shared receipt, so this generation advances with them.
1772
+ const RECEIPT_FIELDS_V23 = deepFreeze({
1773
+ ...RECEIPT_FIELDS_V22,
1774
+ 'meguro.shared-receipt.v2': stableFields([
1775
+ ...RECEIPT_FIELDS_V22['meguro.shared-receipt.v2'],
1776
+ 'conductAuthority.assertions.rowCount',
1777
+ 'conductAuthority.assertions.schemaVersion',
1778
+ 'conductAuthority.assertions.source',
1779
+ 'conductAuthority.behaviors[].behaviorKey',
1780
+ 'conductAuthority.behaviors[].callReferences[].sequence',
1781
+ 'conductAuthority.behaviors[].label',
1782
+ 'conductAuthority.behaviors[].occurrenceCount',
1783
+ 'conductAuthority.behaviors[].statement',
1784
+ 'conductAuthority.blockedAttempts[].blockingLayer',
1785
+ 'conductAuthority.blockedAttempts[].callKind',
1786
+ 'conductAuthority.blockedAttempts[].callReferences[].sequence',
1787
+ 'conductAuthority.blockedAttempts[].explanation',
1788
+ 'conductAuthority.blockedAttempts[].occurrenceCount',
1789
+ 'conductAuthority.blockedAttempts[].operation',
1790
+ 'conductAuthority.blockedAttempts[].reasonClass',
1791
+ 'conductAuthority.blockedAttempts[].reasonCode',
1792
+ 'conductAuthority.blockedAttempts[].responsibleLayer',
1793
+ 'conductAuthority.reasonCode',
1794
+ 'conductAuthority.recoveryLinks[].callKind',
1795
+ 'conductAuthority.recoveryLinks[].correlation',
1796
+ 'conductAuthority.recoveryLinks[].mechanism',
1797
+ 'conductAuthority.recoveryLinks[].operation',
1798
+ 'conductAuthority.recoveryLinks[].recoveredByCall.sequence',
1799
+ 'conductAuthority.recoveryLinks[].rejectedCall.sequence',
1800
+ 'conductAuthority.rejections.corrected',
1801
+ 'conductAuthority.rejections.correctedMutations',
1802
+ 'conductAuthority.rejections.correctedReads',
1803
+ 'conductAuthority.rejections.recorded',
1804
+ 'conductAuthority.rejections.rejectedMutations',
1805
+ 'conductAuthority.rejections.rejectedReads',
1806
+ 'conductAuthority.rejections.unresolved',
1807
+ 'conductAuthority.rejections.unresolvedMutations',
1808
+ 'conductAuthority.rejections.unresolvedReads',
1809
+ 'conductAuthority.responsibleLayer',
1810
+ 'conductAuthority.schemaVersion',
1811
+ 'conductAuthority.statements.recordedApiBehavior',
1812
+ 'conductAuthority.statements.rejections',
1813
+ ]),
1814
+ });
1815
+
1816
+ // MEG-1457: accepted customer-authored values above the byte bound are published as one explicit
1817
+ // bounded-value object at each committed before/after position. The object is the current receipt
1818
+ // contract, so the current guide's complete field index advances with every required member.
1819
+ const BOUNDED_CHANGE_VALUE_FIELD_SUFFIXES = Object.freeze([
1820
+ 'schemaVersion',
1821
+ 'truncated',
1822
+ 'byteLength',
1823
+ 'sha256',
1824
+ 'retainedPrefix',
1825
+ 'retainedPrefixBytes',
1826
+ ]);
1827
+
1828
+ const RECEIPT_FIELDS_V24 = deepFreeze({
1829
+ ...RECEIPT_FIELDS_V23,
1830
+ 'meguro.shared-receipt.v2': stableFields([
1831
+ ...RECEIPT_FIELDS_V23['meguro.shared-receipt.v2'],
1832
+ ...BOUNDED_CHANGE_VALUE_FIELD_SUFFIXES.flatMap((suffix) => [
1833
+ `changes[].before.${suffix}`,
1834
+ `changes[].after.${suffix}`,
1835
+ ]),
1836
+ ]),
1837
+ });
1838
+
1839
+ // MEG-600: each current recovery link states the authority that established it, and the current
1840
+ // receipt publishes the corrected total split by that authority. This is a v26-only inventory
1841
+ // advance: earlier immutable guides retain their issued field inventories byte-for-byte.
1842
+ const RECEIPT_FIELDS_V26 = deepFreeze({
1843
+ ...RECEIPT_FIELDS_V24,
1844
+ 'meguro.shared-receipt.v2': stableFields([
1845
+ ...RECEIPT_FIELDS_V24['meguro.shared-receipt.v2'],
1846
+ 'conductAuthority.recoveryLinks[].source',
1847
+ 'conductAuthority.rejections.correctedByAgentAuthored',
1848
+ 'conductAuthority.rejections.correctedByServedRemedy',
1849
+ ]),
1850
+ });
1851
+
1852
+ // MEG-1590: the current generated field inventory advances with the correction-episode and
1853
+ // lead-sentence fields already present in newly issued public receipts. Earlier immutable guides
1854
+ // retain their original inventories.
1855
+ const RECEIPT_FIELDS_V29 = deepFreeze({
1856
+ ...RECEIPT_FIELDS_V26,
1857
+ 'meguro.shared-receipt.v2': stableFields([
1858
+ ...RECEIPT_FIELDS_V26['meguro.shared-receipt.v2'],
1859
+ 'conductAuthority.recoveryLinks[].attemptCount',
1860
+ 'conductAuthority.recoveryLinks[].rejectedAttempts[].code',
1861
+ 'conductAuthority.recoveryLinks[].rejectedAttempts[].reason',
1862
+ 'conductAuthority.recoveryLinks[].rejectedAttempts[].redactedGraphql',
1863
+ 'conductAuthority.recoveryLinks[].rejectedAttempts[].sequence',
1864
+ 'conductAuthority.recoveryLinks[].rejectedCallSequences[]',
1865
+ 'conductAuthority.recoveryLinks[].targetHash',
1866
+ 'conductAuthority.rejections.correctedAttempts',
1867
+ 'presentation.leadSentence',
1868
+ ]),
1869
+ });
1870
+
1871
+ // MEG-1593: newly issued receipts carry the recorded Admin API version fact, so the inventory
1872
+ // advances in its own generation. Every earlier generation, v29 included, keeps its issued
1873
+ // inventory and therefore its issued bytes.
1874
+ const RECEIPT_FIELDS_V30 = deepFreeze({
1875
+ ...RECEIPT_FIELDS_V29,
1876
+ 'meguro.shared-receipt.v2': stableFields([
1877
+ ...RECEIPT_FIELDS_V29['meguro.shared-receipt.v2'],
1878
+ 'recordedAdminApiVersion.schemaVersion',
1879
+ 'recordedAdminApiVersion.statement',
1880
+ 'recordedAdminApiVersion.versions[]',
1881
+ ]),
1882
+ });
1883
+
1884
+ // MEG-1594: newly issued receipts for a run whose close returned the practice store to baseline
1885
+ // carry that evidence, so the inventory advances in its own generation. Every earlier generation,
1886
+ // v30 included, keeps its issued inventory and therefore its issued bytes.
1887
+ const RECEIPT_FIELDS_V31 = deepFreeze({
1888
+ ...RECEIPT_FIELDS_V30,
1889
+ 'meguro.shared-receipt.v2': stableFields([
1890
+ ...RECEIPT_FIELDS_V30['meguro.shared-receipt.v2'],
1891
+ 'storeReversion.outcome',
1892
+ 'storeReversion.revertedAt',
1893
+ 'storeReversion.schemaVersion',
1894
+ 'storeReversion.statement',
1895
+ ]),
1896
+ });
1897
+
1415
1898
  const FIELD_MEANINGS = Object.freeze({
1416
1899
  schemaVersion: 'Selects the immutable wire contract used to interpret the remaining fields.',
1417
1900
  evidenceContext: 'Carries the declared subject, attempt history, and world provenance without verifying a customer-declared build identity.',
@@ -1430,6 +1913,49 @@ const FIELD_MEANINGS = Object.freeze({
1430
1913
  finalDecision: 'Receipt-scoped final decision over the evidence in this artifact; it is not a production prediction.',
1431
1914
  declaredSubjectNotice: 'States that the declared subject came from the customer and Meguro did not verify the build identity.',
1432
1915
  warmupSpan: 'The deterministic warmup range used to establish the starting world state.',
1916
+ 'changes[].occurrenceCount': 'Required positive integer count of distinct private change facts represented by this customer-safe public row. A non-repeated fact records 1; summing the register recovers the complete distinct-fact count without exposing private identity.',
1917
+ 'receiptForensics.rows[].occurrenceCount': 'Required positive integer count of rejected calls represented by this one distinct complete public refusal fact. It equals the number of entries in this row\'s callReferences and is at least 1.',
1918
+ 'receiptForensics.rows[].callReferences[].sequence': 'Complete, untruncated list of the receipt-windowed append sequences at which this one public refusal fact was recorded, in ascending order.',
1919
+ 'conductAuthority.rejections.rejectedReads': 'Exact count of recorded rejected READ calls. A rejected read is never counted or named as a blocked write.',
1920
+ 'conductAuthority.rejections.rejectedMutations': 'Exact count of recorded rejected MUTATION calls; this is the blocked-write count.',
1921
+ 'conductAuthority.rejections.corrected': 'Count of rejected calls with an explicit recorded recovery link. Adjacency, operation name and document resemblance never produce one.',
1922
+ 'conductAuthority.rejections.correctedByServedRemedy': 'Count of corrected rejections whose recovery link source is `served-remedy`; it is derived from the recorded recovery links.',
1923
+ 'conductAuthority.rejections.correctedByAgentAuthored': 'Count of corrected rejections whose recovery link source is `agent-authored`; it is derived from the recorded recovery links.',
1924
+ 'conductAuthority.rejections.unresolved': 'Recorded rejected calls minus explicitly recovered ones. It is not a judgement about the agent.',
1925
+ 'conductAuthority.rejections.correctedAttempts': 'Raw rejected-call count represented by corrected episodes. It is derived from the recovery links and does not reduce the raw rejected count.',
1926
+ 'conductAuthority.recoveryLinks[].attemptCount': 'Number of rejected calls represented by this corrected episode.',
1927
+ 'conductAuthority.recoveryLinks[].rejectedAttempts[].code': 'Served rejection code for one rejected call in this corrected episode.',
1928
+ 'conductAuthority.recoveryLinks[].rejectedAttempts[].reason': 'Full served rejection reason for one rejected call in this corrected episode.',
1929
+ 'conductAuthority.recoveryLinks[].rejectedAttempts[].redactedGraphql': 'Rejected Admin GraphQL document with identifiers and URLs redacted for the public receipt.',
1930
+ 'conductAuthority.recoveryLinks[].rejectedAttempts[].sequence': 'Receipt-ledger sequence of one rejected call in this corrected episode.',
1931
+ 'conductAuthority.recoveryLinks[].rejectedCallSequences[]': 'Receipt-ledger sequences of every rejected call represented by this corrected episode.',
1932
+ 'conductAuthority.recoveryLinks[].targetHash': 'Stable opaque hash of the exact target shared by the rejected calls and their accepted correction.',
1933
+ 'presentation.leadSentence': 'Plain receipt lead derived from the receipt facts: what the agent did and the modeled outcome.',
1934
+ 'recordedAdminApiVersion.versions[]': 'Every distinct Shopify Admin API version the receipt-windowed recorded Admin calls carried, as the exact sorted set. It is never completed from the current default, the supported set, or a route.',
1935
+ 'recordedAdminApiVersion.statement': 'The one value every public projection of this receipt displays: the exact recorded versions, or `not recorded on receipts sealed before this revision` when no recorded Admin call carried one.',
1936
+ 'storeReversion.outcome': 'Always `returned-to-baseline`. The field is present only when the close transaction that returned this practice store to baseline persisted its witness, so its presence is the evidence and its absence is not a denial.',
1937
+ 'storeReversion.revertedAt': 'The exact close timestamp the reverting write committed under; it is wall-clock time, not Store time.',
1938
+ 'storeReversion.statement': 'The one sentence every public projection of this receipt displays about the reversion. A receipt without this fact displays no reversion sentence and no reversion row at all.',
1939
+ 'conductAuthority.recoveryLinks[].source': 'Which authority established this recovery link: `served-remedy` or `agent-authored`. Every link states its source; none is inferred.',
1940
+ 'conductAuthority.recoveryLinks[].correlation': 'Opaque server-issued correlation published with a bounded-recovery instruction and recorded on the accepted call that carried it back; null for mechanisms that issue none.',
1941
+ 'conductAuthority.recoveryLinks[].mechanism': 'How this link was established. Every value names an explicit recorded fact, never an inference from ordering.',
1942
+ 'conductAuthority.blockedAttempts[].reasonClass': 'Factual class of the refusal. Only practice-surface-coverage-gap means Meguro does not model the operation; every other class names a refusal Meguro emitted on purpose about an operation it serves.',
1943
+ 'conductAuthority.blockedAttempts[].blockingLayer': 'The layer that emitted the refusal, which is not always the layer responsible for it.',
1944
+ 'conductAuthority.blockedAttempts[].callKind': 'Whether the blocked attempt was a read or a mutation; renditions name it accordingly.',
1945
+ 'conductAuthority.behaviors[].behaviorKey': 'Stable key of one already-detected named behavior. The authority compacts detected behavior facts; it detects nothing itself.',
1946
+ 'conductAuthority.assertions.source': 'Names the receipt field holding the canonical assertion-outcome register this authority references. The register is never copied into the authority.',
1947
+ 'conductAuthority.assertions.rowCount': 'Row count of the referenced register. A resolution whose row count differs is refused rather than published.',
1948
+ 'conductAuthority.statements.rejections': 'The compiled rejected-read and blocked-write sentence. Every rendition prints this string; none of them composes its own.',
1949
+ 'conductAuthority.statements.recordedApiBehavior': 'The compiled Recorded API behavior label. Lists, receipt detail and Gate-facing surfaces render this exact string.',
1950
+ });
1951
+
1952
+ const BOUNDED_CHANGE_VALUE_FIELD_MEANINGS = Object.freeze({
1953
+ schemaVersion: 'Selects the bounded-value contract used when this before or after value exceeds the published byte bound.',
1954
+ truncated: 'Always true on this bounded-value object: the complete customer-authored value is not published whole.',
1955
+ byteLength: 'Exact UTF-8 byte length of the complete customer-authored value before bounding, with no trim or normalization.',
1956
+ sha256: 'Lowercase SHA-256 of the complete customer-authored UTF-8 bytes before bounding; use it to verify an original value without publishing it.',
1957
+ retainedPrefix: 'Literal retained whole-code-point prefix of the original value, present only when at least one complete code point fits the bound.',
1958
+ retainedPrefixBytes: 'UTF-8 byte length of retainedPrefix, or 0 when no complete prefix is retained.',
1433
1959
  });
1434
1960
 
1435
1961
  function lastField(path) {
@@ -1446,6 +1972,10 @@ function words(value) {
1446
1972
  }
1447
1973
 
1448
1974
  function fieldMeaning(schema, path) {
1975
+ const boundedValueField = /^changes\[\]\.(?:before|after)\.([a-zA-Z0-9]+)$/u.exec(path)?.[1];
1976
+ if (boundedValueField && BOUNDED_CHANGE_VALUE_FIELD_MEANINGS[boundedValueField]) {
1977
+ return BOUNDED_CHANGE_VALUE_FIELD_MEANINGS[boundedValueField];
1978
+ }
1449
1979
  const exact = FIELD_MEANINGS[path];
1450
1980
  if (exact) return exact;
1451
1981
  const leaf = lastField(path);
@@ -1504,8 +2034,6 @@ production outcome, production revenue, or future platform behavior.
1504
2034
  - \`meguro.shopify-exam-receipt.v2\` and \`meguro.shopify-exam-public-receipt.v2\`: private and
1505
2035
  bounded public projections of the captured API-shape fidelity exam. Published v1 artifacts keep
1506
2036
  their v1 interpretation.
1507
- - \`meguro.tiktok-practice-receipt.v1\`: practice evidence only; it does not establish production
1508
- or app-review compatibility.
1509
2037
  - \`meguro.public-receipt-reference.v1\`: public id, immutable revision, canonical path, and digest
1510
2038
  used to fetch and verify an issued run or impact receipt.
1511
2039
 
@@ -1925,6 +2453,30 @@ function simulationVocabularyText(source) {
1925
2453
  return text;
1926
2454
  }
1927
2455
 
2456
+ /**
2457
+ * MEG-1568: the customer run noun, applied to a guide AFTER its field inventory is generated.
2458
+ *
2459
+ * `fieldMeaning` composes an inventory line from the machine field name, so a path called
2460
+ * `attemptId` produces the prose "attempt id". Version 25 corrected those lines by hand and
2461
+ * version 26 regenerated the inventory over the top of them, restoring "attempt" as the customer
2462
+ * noun for a run. Applying the vocabulary last makes the correction survive the next
2463
+ * regeneration. Every replacement is a whole phrase of prose: machine field names, code spans and
2464
+ * literal enum values contain none of them and are left exactly as the receipt emits them.
2465
+ */
2466
+ function runVocabularyText(source) {
2467
+ const replacements = [
2468
+ ['Recorded prior attempt count on the basis', 'Recorded prior run count on the basis'],
2469
+ ['Recorded attempt in meguro.shared-receipt.v2', 'Recorded call number in meguro.shared-receipt.v2'],
2470
+ ['Whether the blocked attempt was a read or a mutation', 'Whether the blocked call was a read or a write'],
2471
+ ['declared subject, attempt history, and world provenance', 'declared subject, run history, and world provenance'],
2472
+ ['Recorded attempt id in meguro.hosted-impact-report.v1', 'Recorded run id in meguro.hosted-impact-report.v1'],
2473
+ ['Recorded attempt id in meguro.shopify-exam-receipt.v2', 'Recorded run id in meguro.shopify-exam-receipt.v2'],
2474
+ ];
2475
+ let text = String(source);
2476
+ for (const [before, after] of replacements) text = text.split(before).join(after);
2477
+ return text;
2478
+ }
2479
+
1928
2480
  const GETTING_STARTED_V4_TEXT = simulationVocabularyText(
1929
2481
  GETTING_STARTED_V3_TEXT
1930
2482
  .replace('# Getting started with Meguro v3', '# Getting started with Meguro v4')
@@ -2643,6 +3195,23 @@ showing, deleting, recreating, choosing another store, or changing sample identi
2643
3195
  move it. A legacy account with the old consumption marker remains consumed. After the pinned ideal
2644
3196
  horizon, every new segment or run follows ordinary tier canvas, continuation, and monthly allowance
2645
3197
  rules. Read the returned plan and authorization facts; never infer entitlement or caps in a client.`;
3198
+ const INCLUDED_EVALUATION_GUIDANCE_TEXT = `## One user-chosen included evaluation
3199
+
3200
+ Your account includes one evaluation on the practice store you choose. The first accepted run reserves it for that store and its planned Store-day horizon. Runs inside that horizon don't use monthly simulation runs; after it, plan limits apply.
3201
+
3202
+ \`templates_list\` and the Console project the same server-owned \`starterPlans\` for every practice-store
3203
+ template. Choose the store and template you want to evaluate. The sample is not privileged by its
3204
+ route, name, seed, or shape: it uses the included evaluation only when you choose it.
3205
+
3206
+ Use each selected plan's exact \`practiceRunStart.clock\`. Ordinary immutable receipts remain bounded
3207
+ by the current plan's per-run Store-day limit. When the planned horizon is longer, continue the
3208
+ first included evaluation with \`continueFromAttemptId\`; every authorized run carries the same
3209
+ \`onboardingEvaluation\` machine fact. The sample POST remains an idempotent first-run walkthrough;
3210
+ continue a longer sample through the ordinary run API rather than POSTing another sample.
3211
+
3212
+ The included evaluation is spent once across its continued runs. Identical retries converge on one
3213
+ run. Hiding, showing, deleting, recreating, choosing another store, or changing sample identity
3214
+ cannot restore or move it. A legacy account with the old consumption marker remains consumed.`;
2646
3215
  const DOCUMENTATION_V19_VERSION_LABELS_TEXT = versionLabelsText(DOCUMENTATION_CURRENCY_V19);
2647
3216
  const DOCUMENTATION_V19_DEEPER_DOCUMENTATION_TEXT = deeperDocumentationText(DOCUMENTATION_CURRENCY_V19);
2648
3217
  const GETTING_STARTED_V23_TEXT = GETTING_STARTED_V22_TEXT
@@ -3517,6 +4086,37 @@ const GATE_POLICY_V6_TEXT = GATE_POLICY_V5_TEXT
3517
4086
  .replace('Documentation version 5\npublishes', 'Documentation version 6\npublishes')
3518
4087
  .replace('Versions 1 through 4 retain their\noriginal bytes and digests', 'Versions 1 through 5 retain their\noriginal bytes and digests');
3519
4088
 
4089
+ const GATE_POLICY_REJECTION_CORRECTION_GUIDANCE_TEXT = [
4090
+ '## Rejected Admin-call assertion contract',
4091
+ '',
4092
+ 'The current Gate emits and consumes the receipt assertion `receipt.no_unhandled_rejected_admin_calls`.',
4093
+ 'Raw rejected counts remain raw counts. Correction evidence is `served-remedy` or `agent-authored`.',
4094
+ 'An agent-authored correction is only an error-free accepted call within the next three ledger calls',
4095
+ 'after a clean rejection, matching plane, provenance, kind, exact root operation, and one identical',
4096
+ 'target GID; an intervening rejection, missing or ambiguous identity, or a second target fails closed.',
4097
+ 'One accepted call corrects at most one rejection. Precedence is served remedy, then agent-authored,',
4098
+ 'then unresolved; corrected does not claim semantic equivalence. `requiresReview` is true only for',
4099
+ 'unresolved rejections, and issued receipts are never backfilled or rewritten.',
4100
+ '',
4101
+ 'This guide records only the assertion contract emitted and consumed by the current Gate; it does not',
4102
+ 'define configuration inputs or a configuration outcome for retired assertion ids.',
4103
+ ].join('\n');
4104
+ const GATE_POLICY_V7_TEXT = GATE_POLICY_V6_TEXT.replace('# Meguro Configured Receipt Gate policy v6', '# Meguro Configured Receipt Gate policy v7').replaceAll(GATE_POLICY_V6_URI, GATE_POLICY_V7_URI).replace('Documentation version 6\npublishes', 'Documentation version 7\npublishes').replace('Versions 1 through 5 retain their\noriginal bytes and digests', 'Versions 1 through 6 retain their\noriginal bytes and digests').replace('## Canonical fact root', GATE_POLICY_REJECTION_CORRECTION_GUIDANCE_TEXT + '\n\n## Canonical fact root');
4105
+
4106
+ const GATE_POLICY_V8_TEXT = GATE_POLICY_V7_TEXT
4107
+ .replace('# Meguro Configured Receipt Gate policy v7', '# Meguro Configured Receipt Gate policy v8')
4108
+ .replaceAll(GATE_POLICY_V7_URI, GATE_POLICY_V8_URI)
4109
+ .replace('Documentation version 7\npublishes', 'Documentation version 8\npublishes')
4110
+ .replace('Versions 1 through 6 retain their\noriginal bytes and digests', 'Versions 1 through 7 retain their\noriginal bytes and digests');
4111
+
4112
+ const ASSERTION_KEY_IMMUTABILITY_TEXT = 'Receipts issued before the assertion rename carry `receipt.no_rejected_admin_calls` and remain immutable; current receipts use `receipt.no_unhandled_rejected_admin_calls`.';
4113
+ const GATE_POLICY_V9_TEXT = GATE_POLICY_V8_TEXT
4114
+ .replace('# Meguro Configured Receipt Gate policy v8', '# Meguro Configured Receipt Gate policy v9')
4115
+ .replaceAll(GATE_POLICY_V8_URI, GATE_POLICY_V9_URI)
4116
+ .replace('Documentation version 8\npublishes', 'Documentation version 9\npublishes')
4117
+ .replace('Versions 1 through 7 retain their\noriginal bytes and digests', 'Versions 1 through 8 retain their\noriginal bytes and digests')
4118
+ .replace('## Rejected Admin-call assertion contract', `## Rejected Admin-call assertion contract\n\n${ASSERTION_KEY_IMMUTABILITY_TEXT}`);
4119
+
3520
4120
  const RECEIPT_GUIDE_V18_FIELD_INDEX_HEADING_TEXT = `## Generated field index
3521
4121
 
3522
4122
  This section is a generated index of paths, not an authored interpretation. Every documented path
@@ -3538,11 +4138,302 @@ const RECEIPT_GUIDE_V18_TEXT = RECEIPT_GUIDE_V17_TEXT
3538
4138
  .replace(MUTABLE_GATE_ABSENCE_TEXT, STATE_NEUTRAL_GATE_PRESENCE_TEXT)
3539
4139
  .replace(RECEIPT_GUIDE_V17_FIELD_INVENTORY_HEADING_TEXT, RECEIPT_GUIDE_V18_FIELD_INDEX_HEADING_TEXT)
3540
4140
  .replaceAll(RECEIPT_GUIDE_V17_WINBACK_MEANING_TEXT, RECEIPT_GUIDE_V18_WINBACK_MEANING_TEXT);
4141
+ const RECEIPT_GUIDE_V19_TEXT = replaceDerivedFieldInventory(
4142
+ RECEIPT_GUIDE_V18_TEXT
4143
+ .replace('# Meguro receipt guide v18', '# Meguro receipt guide v19')
4144
+ .replaceAll(RECEIPT_GUIDE_V18_URI, RECEIPT_GUIDE_V19_URI)
4145
+ .replace(RECEIPT_GUIDE_V18_FIELD_INDEX_HEADING_TEXT, RECEIPT_GUIDE_V17_FIELD_INVENTORY_HEADING_TEXT),
4146
+ RECEIPT_FIELDS_V19,
4147
+ ).replace(RECEIPT_GUIDE_V17_FIELD_INVENTORY_HEADING_TEXT, RECEIPT_GUIDE_V18_FIELD_INDEX_HEADING_TEXT);
4148
+
4149
+ const RECEIPT_GUIDE_V20_TEXT = replaceDerivedFieldInventory(
4150
+ RECEIPT_GUIDE_V19_TEXT
4151
+ .replace('# Meguro receipt guide v19', '# Meguro receipt guide v20')
4152
+ .replaceAll(RECEIPT_GUIDE_V19_URI, RECEIPT_GUIDE_V20_URI)
4153
+ .replace(RECEIPT_GUIDE_V18_FIELD_INDEX_HEADING_TEXT, RECEIPT_GUIDE_V17_FIELD_INVENTORY_HEADING_TEXT),
4154
+ RECEIPT_FIELDS_V20,
4155
+ ).replace(RECEIPT_GUIDE_V17_FIELD_INVENTORY_HEADING_TEXT, RECEIPT_GUIDE_V18_FIELD_INDEX_HEADING_TEXT);
4156
+
4157
+ const COMPACT_CHANGE_MULTIPLICITY_GUIDANCE_TEXT = `## Compact complete change multiplicity
4158
+
4159
+ Every \`changes[]\` row carries a required positive integer \`occurrenceCount\`. Meguro groups rows
4160
+ only when their complete customer-safe public fact is equal; the count states how many distinct
4161
+ private facts that one public row represents. A non-repeated public fact records
4162
+ \`occurrenceCount: 1\`.
4163
+
4164
+ Exact replay of one private tuple is suppressed before this public grouping. Summing
4165
+ \`changes[].occurrenceCount\` therefore recovers the complete distinct private-fact count without
4166
+ publishing a private entity reference. The What changed presentation renders this same compact
4167
+ register once and states the multiplicity; it does not duplicate the represented private rows.`;
4168
+ const RECEIPT_GUIDE_V21_TEXT = replaceDerivedFieldInventory(
4169
+ RECEIPT_GUIDE_V20_TEXT
4170
+ .replace('# Meguro receipt guide v20', '# Meguro receipt guide v21')
4171
+ .replaceAll(RECEIPT_GUIDE_V20_URI, RECEIPT_GUIDE_V21_URI)
4172
+ .replace(RECEIPT_GUIDE_V18_FIELD_INDEX_HEADING_TEXT, `${COMPACT_CHANGE_MULTIPLICITY_GUIDANCE_TEXT}\n\n${RECEIPT_GUIDE_V17_FIELD_INVENTORY_HEADING_TEXT}`),
4173
+ RECEIPT_FIELDS_V21,
4174
+ ).replace(RECEIPT_GUIDE_V17_FIELD_INVENTORY_HEADING_TEXT, RECEIPT_GUIDE_V18_FIELD_INDEX_HEADING_TEXT);
4175
+
4176
+ const COMPACT_REFUSAL_MULTIPLICITY_GUIDANCE_TEXT = `## Compact complete refusal multiplicity
4177
+
4178
+ Every \`receiptForensics.rows[]\` row is one distinct COMPLETE public refusal fact: operation,
4179
+ behavior class, public entity state and type, refusal reason and explanation, responsible layer,
4180
+ and operation commit boundary. Rejected calls are grouped only when every one of those fields is
4181
+ equal.
4182
+
4183
+ \`occurrenceCount\` is a required positive integer stating how many rejected calls the row
4184
+ represents, and \`callReferences[]\` names every one of their receipt-windowed append sequences in
4185
+ ascending order. Neither is ever truncated, so summing \`occurrenceCount\` recovers the run's
4186
+ complete attributed-refusal count and the references recover every represented call. A refusal fact
4187
+ that occurred once records \`occurrenceCount: 1\` and a single reference.
4188
+
4189
+ Every forensic rendition — presentation, report-back, take-home, HTML, and Markdown — renders this
4190
+ same compact row once with its multiplicity and its references. None of them re-expands the row
4191
+ into one full fact per call.`;
4192
+ const RECEIPT_GUIDE_V22_TEXT = replaceDerivedFieldInventory(
4193
+ RECEIPT_GUIDE_V21_TEXT
4194
+ .replace('# Meguro receipt guide v21', '# Meguro receipt guide v22')
4195
+ .replaceAll(RECEIPT_GUIDE_V21_URI, RECEIPT_GUIDE_V22_URI)
4196
+ .replace(RECEIPT_GUIDE_V18_FIELD_INDEX_HEADING_TEXT, `${COMPACT_REFUSAL_MULTIPLICITY_GUIDANCE_TEXT}\n\n${RECEIPT_GUIDE_V17_FIELD_INVENTORY_HEADING_TEXT}`),
4197
+ RECEIPT_FIELDS_V22,
4198
+ ).replace(RECEIPT_GUIDE_V17_FIELD_INVENTORY_HEADING_TEXT, RECEIPT_GUIDE_V18_FIELD_INDEX_HEADING_TEXT);
4199
+
4200
+ const ONE_CONDUCT_AUTHORITY_GUIDANCE_TEXT = `## One compiled Conduct authority
4201
+
4202
+ \`conductAuthority\` is compiled once, when the receipt is issued, from the recorder's own calls,
4203
+ the explicit recovery links, the already-detected behavior facts, the forensic register, the
4204
+ default run policy, and the canonical assertion-outcome register. Every rendition — the factual
4205
+ register, the report-back Conduct plane, the take-home packet, the shared and public views, the
4206
+ Gate-facing counts, the Console, and the MCP projections — consumes that object unchanged. None of
4207
+ them recounts, reclassifies, or renames what it holds, and a rendition that cannot find it
4208
+ publishes nothing about Conduct rather than deriving a copy.
4209
+
4210
+ Rejected READS and rejected MUTATIONS are counted and named separately.
4211
+ \`rejections.rejectedReads\` is stated as rejected reads and \`rejections.rejectedMutations\` as
4212
+ blocked writes; a run with only a rejected read publishes no blocked write at all, and a run with
4213
+ both publishes both exact counts. \`statements.rejections\` is that sentence, compiled once.
4214
+
4215
+ \`rejections.corrected\` counts EXPLICIT recovery links only. When Meguro publishes a bounded read
4216
+ with an over-cost refusal, that instruction carries an opaque server-issued correlation in
4217
+ \`nextCall.body.variables.__meguroRecoveryCorrelation\`. Submitting the suggested call unchanged
4218
+ returns the correlation, which is recorded on the accepted call and links it to the refusal. A
4219
+ bounded recovery necessarily changes the page sizes it bounds, so nothing about the two documents
4220
+ resembling each other establishes a recovery — only the correlation does. Send the suggested call
4221
+ as published if you want the correction recorded.
4222
+
4223
+ \`blockedAttempts[]\` and \`behaviors[]\` are compact: one row per distinct complete public fact,
4224
+ with \`occurrenceCount\` and every \`callReferences[].sequence\` it stands for. Each row names its
4225
+ factual \`reasonClass\` and the \`blockingLayer\` that emitted the refusal. Only the
4226
+ \`practice-surface-coverage-gap\` class means Meguro does not model an operation; a throttle, a
4227
+ run-lifecycle refusal, an idempotency conflict, and a by-design non-served surface each state their
4228
+ own exact reason and never claim the operation is unmodelled.`;
4229
+
4230
+ const RECEIPT_GUIDE_V23_TEXT = replaceDerivedFieldInventory(
4231
+ RECEIPT_GUIDE_V22_TEXT
4232
+ .replace('# Meguro receipt guide v22', '# Meguro receipt guide v23')
4233
+ .replaceAll(RECEIPT_GUIDE_V22_URI, RECEIPT_GUIDE_V23_URI)
4234
+ .replace(RECEIPT_GUIDE_V18_FIELD_INDEX_HEADING_TEXT, `${ONE_CONDUCT_AUTHORITY_GUIDANCE_TEXT}\n\n${RECEIPT_GUIDE_V17_FIELD_INVENTORY_HEADING_TEXT}`),
4235
+ RECEIPT_FIELDS_V23,
4236
+ ).replace(RECEIPT_GUIDE_V17_FIELD_INVENTORY_HEADING_TEXT, RECEIPT_GUIDE_V18_FIELD_INDEX_HEADING_TEXT);
4237
+
4238
+ const BOUNDED_CHANGE_VALUE_GUIDANCE_TEXT = `## Bounded customer-authored change values
4239
+
4240
+ Each \`changes[].before\` and \`changes[].after\` value is either the exact scalar committed by the
4241
+ accepted action or, when a customer-authored string exceeds 200 UTF-8 bytes, a
4242
+ \`meguro.admin-probe-bounded-value.v1\` object. The bounded object states \`truncated: true\`, the
4243
+ exact original \`byteLength\`, and the SHA-256 of those original UTF-8 bytes. It does not trim,
4244
+ normalize, or substitute the customer-authored value.
4245
+
4246
+ \`retainedPrefix\`, when present, is only a whole-code-point prefix that fits the byte bound.
4247
+ \`retainedPrefixBytes\` is its UTF-8 byte length and is 0 when no whole code point is retained. Do
4248
+ not treat the prefix as the complete value; use \`byteLength\` and \`sha256\` to identify or verify
4249
+ the omitted original.`;
4250
+
4251
+ const RECEIPT_GUIDE_V24_TEXT = replaceDerivedFieldInventory(
4252
+ RECEIPT_GUIDE_V23_TEXT
4253
+ .replace('# Meguro receipt guide v23', '# Meguro receipt guide v24')
4254
+ .replaceAll(RECEIPT_GUIDE_V23_URI, RECEIPT_GUIDE_V24_URI)
4255
+ .replace(RECEIPT_GUIDE_V18_FIELD_INDEX_HEADING_TEXT, `${BOUNDED_CHANGE_VALUE_GUIDANCE_TEXT}\n\n${RECEIPT_GUIDE_V17_FIELD_INVENTORY_HEADING_TEXT}`),
4256
+ RECEIPT_FIELDS_V24,
4257
+ ).replace(RECEIPT_GUIDE_V17_FIELD_INVENTORY_HEADING_TEXT, RECEIPT_GUIDE_V18_FIELD_INDEX_HEADING_TEXT);
4258
+
4259
+ const RECEIPT_GUIDE_V25_TEXT = RECEIPT_GUIDE_V24_TEXT
4260
+ .replace('# Meguro receipt guide v24', '# Meguro receipt guide v25')
4261
+ .replaceAll(RECEIPT_GUIDE_V24_URI, RECEIPT_GUIDE_V25_URI)
4262
+ .replace('Attempt ordinal and prior-attempt count disclose repetition on the same lineage.', 'Run ordinal and prior-run count disclose repetition on the same lineage.')
4263
+ .replaceAll('the run, store, attempt, raw', 'the run, store, run identity, raw')
4264
+ .replaceAll('attempt budget', 'call budget')
4265
+ .replace('Recorded prior attempt count on the basis', 'Recorded prior run count on the basis')
4266
+ .replace('Recorded attempt in meguro.shared-receipt.v2', 'Recorded call number in meguro.shared-receipt.v2')
4267
+ .replace('Whether the blocked attempt was a read or a mutation', 'Whether the blocked call was a read or a write')
4268
+ .replaceAll('declared subject, attempt history, and world provenance', 'declared subject, run history, and world provenance')
4269
+ .replaceAll('Recorded attempt id in meguro.hosted-impact-report.v1', 'Recorded run id in meguro.hosted-impact-report.v1')
4270
+ .replaceAll('Recorded attempt id in meguro.shopify-exam-receipt.v2', 'Recorded run id in meguro.shopify-exam-receipt.v2');
4271
+
4272
+ const STALE_EXPLICIT_RECOVERY_LINKS_TEXT = [
4273
+ '`rejections.corrected` counts EXPLICIT recovery links only. When Meguro publishes a bounded read',
4274
+ 'with an over-cost refusal, that instruction carries an opaque server-issued correlation in',
4275
+ '`nextCall.body.variables.__meguroRecoveryCorrelation`. Submitting the suggested call unchanged',
4276
+ 'returns the correlation, which is recorded on the accepted call and links it to the refusal. A',
4277
+ 'bounded recovery necessarily changes the page sizes it bounds, so nothing about the two documents',
4278
+ 'resembling each other establishes a recovery — only the correlation does. Send the suggested call',
4279
+ 'as published if you want the correction recorded.',
4280
+ ].join('\n');
4281
+
4282
+ const RECEIPT_REJECTION_CORRECTION_GUIDANCE_TEXT = [
4283
+ '## Rejected Admin-call correction evidence',
4284
+ '',
4285
+ '`receipt.no_unhandled_rejected_admin_calls` is the only current assertion id. The retired',
4286
+ '`receipt.no_rejected_admin_calls` id has no alias. Raw rejected-call counts do not change when',
4287
+ 'a rejection is handled.',
4288
+ '',
4289
+ 'Correction evidence has two sources: `served-remedy` and `agent-authored`. An agent-authored',
4290
+ 'correction means only that an accepted call follows a clean rejection within the next three',
4291
+ 'receipt-ledger calls with the same plane, provenance, kind, exact root operation, and exactly one',
4292
+ 'identical target GID. The accepted call has no errors; no rejection intervenes; one accepted call',
4293
+ 'corrects at most one rejection; and missing or ambiguous target identity fails closed. Precedence',
4294
+ 'is served remedy, then agent-authored, then unresolved. Corrected does not claim semantic',
4295
+ 'equivalence.',
4296
+ '',
4297
+ '`requiresReview` is true only for unresolved rejections. Issued receipts are never backfilled',
4298
+ 'or rewritten.',
4299
+ ].join('\n');
4300
+
4301
+ const RECEIPT_GUIDE_V26_TEXT = replaceDerivedFieldInventory(
4302
+ RECEIPT_GUIDE_V25_TEXT.replace('# Meguro receipt guide v25', '# Meguro receipt guide v26').replaceAll(RECEIPT_GUIDE_V25_URI, RECEIPT_GUIDE_V26_URI).replace(STALE_EXPLICIT_RECOVERY_LINKS_TEXT, RECEIPT_REJECTION_CORRECTION_GUIDANCE_TEXT).replace(RECEIPT_GUIDE_V18_FIELD_INDEX_HEADING_TEXT, RECEIPT_GUIDE_V17_FIELD_INVENTORY_HEADING_TEXT),
4303
+ RECEIPT_FIELDS_V26,
4304
+ ).replace(RECEIPT_GUIDE_V17_FIELD_INVENTORY_HEADING_TEXT, RECEIPT_GUIDE_V18_FIELD_INDEX_HEADING_TEXT);
4305
+
4306
+ const RECEIPT_COMPARISON_CARD_GUIDANCE_TEXT = [
4307
+ '## Receipt comparison card',
4308
+ '',
4309
+ '`meguro.receipt-comparison-card.v1` is a bounded, facts-only projection of one concluded run',
4310
+ 'receipt. It is not an authority. Every fact it carries is copied from the immutable receipt, and',
4311
+ 'the receipt remains the artifact to cite.',
4312
+ '',
4313
+ '`practice_run_report` and `practice_run_impact` return the card by default. Pass `detail: "full"`',
4314
+ 'to either tool for the complete receipt or Impact document. The card states nothing those',
4315
+ 'documents do not already state.',
4316
+ '',
4317
+ 'Beside every public run receipt, appending `.card.json` to that receipt URL serves the same card',
4318
+ 'to an unauthenticated reader. It follows the receipt\'s own opaque identity and availability',
4319
+ 'window, and reading it changes no receipt byte, digest, or revision.',
4320
+ '',
4321
+ '`sourceReceipt` carries three digests copied from the receipt: the run receipt SHA-256, the',
4322
+ 'frozen-Markdown SHA-256, and the Impact SHA-256. None of them is recomputed when the card is',
4323
+ 'read. A receipt that does not carry one of them publishes `null` for that digest beside the exact',
4324
+ 'reason it is unavailable, never a substitute value.',
4325
+ '',
4326
+ 'The card exists so two runs can be read on the same named facts. Meguro supplies comparable',
4327
+ 'facts; it does not rank agents against each other and it emits no verdict aggregated across runs.',
4328
+ 'The comparison, and anything concluded from it, belongs to the reader.',
4329
+ ].join('\n');
4330
+
4331
+ const RECEIPT_GUIDE_V27_TEXT = runVocabularyText(
4332
+ RECEIPT_GUIDE_V26_TEXT
4333
+ .replace('# Meguro receipt guide v26', '# Meguro receipt guide v27')
4334
+ .replaceAll(RECEIPT_GUIDE_V26_URI, RECEIPT_GUIDE_V27_URI)
4335
+ .replace(
4336
+ RECEIPT_GUIDE_V18_FIELD_INDEX_HEADING_TEXT,
4337
+ `${RECEIPT_COMPARISON_CARD_GUIDANCE_TEXT}\n\n${RECEIPT_GUIDE_V18_FIELD_INDEX_HEADING_TEXT}`,
4338
+ ),
4339
+ );
4340
+
4341
+ const RECEIPT_GUIDE_V28_TEXT = RECEIPT_GUIDE_V27_TEXT
4342
+ .replace('# Meguro receipt guide v27', '# Meguro receipt guide v28')
4343
+ .replaceAll(RECEIPT_GUIDE_V27_URI, RECEIPT_GUIDE_V28_URI)
4344
+ .replace('## Rejected Admin-call correction evidence', `## Rejected Admin-call correction evidence\n\n${ASSERTION_KEY_IMMUTABILITY_TEXT}`);
4345
+
4346
+ const RECEIPT_REPRODUCIBILITY_TEXT = `## Deterministic reruns
4347
+
4348
+ The seed is fixed per store; rerunning the same store replays that seed.
4349
+ For an identical rerun with the same actions and measured window,
4350
+ day series, totals, and world provenance are guaranteed byte-identical;
4351
+ timestamps and ordinals may differ.`;
4352
+ const RECEIPT_GUIDE_V29_TEXT = replaceDerivedFieldInventory(
4353
+ RECEIPT_GUIDE_V28_TEXT
4354
+ .replace('# Meguro receipt guide v28', '# Meguro receipt guide v29')
4355
+ .replaceAll(RECEIPT_GUIDE_V28_URI, RECEIPT_GUIDE_V29_URI)
4356
+ .replace(RECEIPT_GUIDE_V18_FIELD_INDEX_HEADING_TEXT, RECEIPT_GUIDE_V17_FIELD_INVENTORY_HEADING_TEXT),
4357
+ RECEIPT_FIELDS_V29,
4358
+ )
4359
+ .replace(RECEIPT_GUIDE_V17_FIELD_INVENTORY_HEADING_TEXT, RECEIPT_GUIDE_V18_FIELD_INDEX_HEADING_TEXT)
4360
+ .replace('## Reading order', `${RECEIPT_REPRODUCIBILITY_TEXT}\n\n## Reading order`)
4361
+ .replace('## Public receipt delivery', '## Public receipt delivery\n\nPublic-receipt URLs are unguessable and served with `X-Robots-Tag: noindex, nofollow`.');
4362
+
4363
+ const RECORDED_ADMIN_API_VERSION_TEXT = `## Recorded Admin API version
4364
+
4365
+ \`recordedAdminApiVersion\` names the Shopify Admin API version the calls inside this receipt's
4366
+ window recorded. \`versions\` is the exact sorted set those calls carried: a run that exercised two
4367
+ versions publishes both, and no member of the set is preferred, latest, or configured.
4368
+ \`statement\` is the one value the public JSON, the comparison card, the public page, and the frozen
4369
+ Markdown all display, so those four renditions cannot disagree.
4370
+
4371
+ A receipt whose recorded calls carried no version reads
4372
+ \`not recorded on receipts sealed before this revision\`. That sentence is the recorded evidence:
4373
+ do not read the default version, the supported set, or a request path in its place, and do not
4374
+ expect a receipt sealed before this generation to be rewritten with one.`;
4375
+
4376
+ const RECEIPT_GUIDE_V30_TEXT = replaceDerivedFieldInventory(
4377
+ RECEIPT_GUIDE_V29_TEXT
4378
+ .replace('# Meguro receipt guide v29', '# Meguro receipt guide v30')
4379
+ .replaceAll(RECEIPT_GUIDE_V29_URI, RECEIPT_GUIDE_V30_URI)
4380
+ .replace(RECEIPT_GUIDE_V18_FIELD_INDEX_HEADING_TEXT, RECEIPT_GUIDE_V17_FIELD_INVENTORY_HEADING_TEXT),
4381
+ RECEIPT_FIELDS_V30,
4382
+ )
4383
+ .replace(RECEIPT_GUIDE_V17_FIELD_INVENTORY_HEADING_TEXT, RECEIPT_GUIDE_V18_FIELD_INDEX_HEADING_TEXT)
4384
+ .replace('## Receipt comparison card', `${RECORDED_ADMIN_API_VERSION_TEXT}\n\n## Receipt comparison card`);
4385
+
4386
+ const STORE_BASELINE_REVERSION_TEXT = `## Practice store returned to baseline
4387
+
4388
+ \`storeReversion\` is the evidence that this run's close returned the practice store to its
4389
+ baseline. It is written by the transaction that ended the run and gave the store back, so it exists
4390
+ only where that transaction committed. \`statement\` is the one sentence the public JSON, the public
4391
+ page, and the frozen Markdown all display, so those renditions cannot disagree.
4392
+
4393
+ A receipt that carries no \`storeReversion\` publishes no reversion sentence and no reversion row.
4394
+ Read that as an absence of evidence and nothing more: a run that stopped short of its end day, and a
4395
+ run that never passed through a close at all, both carry none. Do not read the run's \`completed\`
4396
+ status, its lifecycle contract's \`storeAfterCompletion\` value, or any other configuration in place
4397
+ of this fact, and do not expect a receipt sealed before this generation to be rewritten with one.`;
4398
+
4399
+ const RECEIPT_GUIDE_V31_TEXT = replaceDerivedFieldInventory(
4400
+ RECEIPT_GUIDE_V30_TEXT
4401
+ .replace('# Meguro receipt guide v30', '# Meguro receipt guide v31')
4402
+ .replaceAll(RECEIPT_GUIDE_V30_URI, RECEIPT_GUIDE_V31_URI)
4403
+ .replace(RECEIPT_GUIDE_V18_FIELD_INDEX_HEADING_TEXT, RECEIPT_GUIDE_V17_FIELD_INVENTORY_HEADING_TEXT),
4404
+ RECEIPT_FIELDS_V31,
4405
+ )
4406
+ .replace(RECEIPT_GUIDE_V17_FIELD_INVENTORY_HEADING_TEXT, RECEIPT_GUIDE_V18_FIELD_INDEX_HEADING_TEXT)
4407
+ .replace('## Receipt comparison card', `${STORE_BASELINE_REVERSION_TEXT}\n\n## Receipt comparison card`);
3541
4408
 
3542
4409
  const DOCUMENTATION_V36_VERSION_LABELS_TEXT = versionLabelsText(DOCUMENTATION_CURRENCY_V36);
3543
4410
  const DOCUMENTATION_V36_DEEPER_DOCUMENTATION_TEXT = deeperDocumentationText(DOCUMENTATION_CURRENCY_V36);
3544
4411
  const DOCUMENTATION_V37_VERSION_LABELS_TEXT = versionLabelsText(DOCUMENTATION_CURRENCY_V37);
3545
4412
  const DOCUMENTATION_V37_DEEPER_DOCUMENTATION_TEXT = deeperDocumentationText(DOCUMENTATION_CURRENCY_V37);
4413
+ const DOCUMENTATION_V39_VERSION_LABELS_TEXT = versionLabelsText(DOCUMENTATION_CURRENCY_V39);
4414
+ const DOCUMENTATION_V39_DEEPER_DOCUMENTATION_TEXT = deeperDocumentationText(DOCUMENTATION_CURRENCY_V39);
4415
+ const DOCUMENTATION_V40_VERSION_LABELS_TEXT = versionLabelsText(DOCUMENTATION_CURRENCY_V40);
4416
+ const DOCUMENTATION_V40_DEEPER_DOCUMENTATION_TEXT = deeperDocumentationText(DOCUMENTATION_CURRENCY_V40);
4417
+ const DOCUMENTATION_V43_VERSION_LABELS_TEXT = versionLabelsText(DOCUMENTATION_CURRENCY_V43);
4418
+ const DOCUMENTATION_V43_DEEPER_DOCUMENTATION_TEXT = deeperDocumentationText(DOCUMENTATION_CURRENCY_V43);
4419
+ const DOCUMENTATION_V44_VERSION_LABELS_TEXT = versionLabelsText(DOCUMENTATION_CURRENCY_V44);
4420
+ const DOCUMENTATION_V44_DEEPER_DOCUMENTATION_TEXT = deeperDocumentationText(DOCUMENTATION_CURRENCY_V44);
4421
+ const DOCUMENTATION_V45_VERSION_LABELS_TEXT = versionLabelsText(DOCUMENTATION_CURRENCY_V45);
4422
+ const DOCUMENTATION_V45_DEEPER_DOCUMENTATION_TEXT = deeperDocumentationText(DOCUMENTATION_CURRENCY_V45);
4423
+ const DOCUMENTATION_V46_VERSION_LABELS_TEXT = versionLabelsText(DOCUMENTATION_CURRENCY_V46);
4424
+ const DOCUMENTATION_V46_DEEPER_DOCUMENTATION_TEXT = deeperDocumentationText(DOCUMENTATION_CURRENCY_V46);
4425
+ const DOCUMENTATION_V47_VERSION_LABELS_TEXT = versionLabelsText(DOCUMENTATION_CURRENCY_V47);
4426
+ const DOCUMENTATION_V47_DEEPER_DOCUMENTATION_TEXT = deeperDocumentationText(DOCUMENTATION_CURRENCY_V47);
4427
+ const DOCUMENTATION_V48_VERSION_LABELS_TEXT = versionLabelsText(DOCUMENTATION_CURRENCY_V48);
4428
+ const DOCUMENTATION_V48_DEEPER_DOCUMENTATION_TEXT = deeperDocumentationText(DOCUMENTATION_CURRENCY_V48);
4429
+ const DOCUMENTATION_V49_VERSION_LABELS_TEXT = versionLabelsText(DOCUMENTATION_CURRENCY_V49);
4430
+ const DOCUMENTATION_V49_DEEPER_DOCUMENTATION_TEXT = deeperDocumentationText(DOCUMENTATION_CURRENCY_V49);
4431
+ const DOCUMENTATION_V50_VERSION_LABELS_TEXT = versionLabelsText(DOCUMENTATION_CURRENCY_V50);
4432
+ const DOCUMENTATION_V50_DEEPER_DOCUMENTATION_TEXT = deeperDocumentationText(DOCUMENTATION_CURRENCY_V50);
4433
+ const DOCUMENTATION_V51_VERSION_LABELS_TEXT = versionLabelsText(DOCUMENTATION_CURRENCY_V51);
4434
+ const DOCUMENTATION_V51_DEEPER_DOCUMENTATION_TEXT = deeperDocumentationText(DOCUMENTATION_CURRENCY_V51);
4435
+ const DOCUMENTATION_V52_VERSION_LABELS_TEXT = versionLabelsText(DOCUMENTATION_CURRENCY_V52);
4436
+ const DOCUMENTATION_V52_DEEPER_DOCUMENTATION_TEXT = deeperDocumentationText(DOCUMENTATION_CURRENCY_V52);
3546
4437
 
3547
4438
  const HISTORY_SPAN_BASIS_FACT_TEXT = `Each practice store's history span is a live per-store fact. Its immutable creation basis is
3548
4439
  \`historySpan.creation\`: \`historySpan.creation.startDate\`, \`historySpan.creation.endDate\`, and
@@ -3581,6 +4472,62 @@ const GETTING_STARTED_V39_TEXT = GETTING_STARTED_V38_TEXT
3581
4472
  .replaceAll('stores[].historySpan.days', 'stores[].historySpan.current.days')
3582
4473
  .replaceAll('historySpan.historyDays', 'historySpan.current.days');
3583
4474
 
4475
+ const GETTING_STARTED_V40_TEXT = GETTING_STARTED_V39_TEXT
4476
+ .replace('# Getting started with Meguro v39', '# Getting started with Meguro v40')
4477
+ .replaceAll(GETTING_STARTED_V39_URI, GETTING_STARTED_V40_URI)
4478
+ .replace(DOCUMENTATION_V37_VERSION_LABELS_TEXT, DOCUMENTATION_V39_VERSION_LABELS_TEXT)
4479
+ .replace(DOCUMENTATION_V37_DEEPER_DOCUMENTATION_TEXT, DOCUMENTATION_V39_DEEPER_DOCUMENTATION_TEXT);
4480
+
4481
+ // MEG-1364: the only change is which receipt guide and index this generation points at.
4482
+ const GETTING_STARTED_V41_TEXT = GETTING_STARTED_V40_TEXT
4483
+ .replace('# Getting started with Meguro v40', '# Getting started with Meguro v41')
4484
+ .replaceAll(GETTING_STARTED_V40_URI, GETTING_STARTED_V41_URI)
4485
+ .replace(DOCUMENTATION_V39_VERSION_LABELS_TEXT, DOCUMENTATION_V40_VERSION_LABELS_TEXT)
4486
+ .replace(DOCUMENTATION_V39_DEEPER_DOCUMENTATION_TEXT, DOCUMENTATION_V40_DEEPER_DOCUMENTATION_TEXT)
4487
+ .replaceAll(DOCUMENTATION_INDEX_V39_URI, DOCUMENTATION_INDEX_V40_URI)
4488
+ .replaceAll(RECEIPT_GUIDE_V19_URI, RECEIPT_GUIDE_V20_URI);
4489
+
4490
+ const GETTING_STARTED_V42_TEXT = GETTING_STARTED_V41_TEXT
4491
+ .replace('# Getting started with Meguro v41', '# Getting started with Meguro v42')
4492
+ .replaceAll(GETTING_STARTED_V41_URI, GETTING_STARTED_V42_URI)
4493
+ .replace(DOCUMENTATION_V40_VERSION_LABELS_TEXT, DOCUMENTATION_V43_VERSION_LABELS_TEXT)
4494
+ .replace(DOCUMENTATION_V40_DEEPER_DOCUMENTATION_TEXT, DOCUMENTATION_V43_DEEPER_DOCUMENTATION_TEXT)
4495
+ .replaceAll(DOCUMENTATION_INDEX_V40_URI, DOCUMENTATION_INDEX_V43_URI)
4496
+ .replaceAll(RECEIPT_GUIDE_V20_URI, RECEIPT_GUIDE_V22_URI);
4497
+
4498
+ const GETTING_STARTED_V43_TEXT = GETTING_STARTED_V42_TEXT
4499
+ .replace('# Getting started with Meguro v42', '# Getting started with Meguro v43')
4500
+ .replaceAll(GETTING_STARTED_V42_URI, GETTING_STARTED_V43_URI)
4501
+ .replace(DOCUMENTATION_V43_VERSION_LABELS_TEXT, DOCUMENTATION_V44_VERSION_LABELS_TEXT)
4502
+ .replace(DOCUMENTATION_V43_DEEPER_DOCUMENTATION_TEXT, DOCUMENTATION_V44_DEEPER_DOCUMENTATION_TEXT)
4503
+ .replaceAll(DOCUMENTATION_INDEX_V43_URI, DOCUMENTATION_INDEX_V44_URI)
4504
+ .replaceAll(RECEIPT_GUIDE_V22_URI, RECEIPT_GUIDE_V23_URI);
4505
+
4506
+ const GETTING_STARTED_V44_TEXT = GETTING_STARTED_V43_TEXT
4507
+ .replace('# Getting started with Meguro v43', '# Getting started with Meguro v44')
4508
+ .replaceAll(GETTING_STARTED_V43_URI, GETTING_STARTED_V44_URI)
4509
+ .replace(DOCUMENTATION_V44_VERSION_LABELS_TEXT, DOCUMENTATION_V45_VERSION_LABELS_TEXT)
4510
+ .replace(DOCUMENTATION_V44_DEEPER_DOCUMENTATION_TEXT, DOCUMENTATION_V45_DEEPER_DOCUMENTATION_TEXT)
4511
+ .replaceAll(DOCUMENTATION_INDEX_V44_URI, DOCUMENTATION_INDEX_V45_URI)
4512
+ .replaceAll(RECEIPT_GUIDE_V23_URI, RECEIPT_GUIDE_V24_URI);
4513
+
4514
+ const GETTING_STARTED_V45_TEXT = GETTING_STARTED_V44_TEXT
4515
+ .replace('# Getting started with Meguro v44', '# Getting started with Meguro v45')
4516
+ .replaceAll(GETTING_STARTED_V44_URI, GETTING_STARTED_V45_URI)
4517
+ .replace(DOCUMENTATION_V45_VERSION_LABELS_TEXT, DOCUMENTATION_V46_VERSION_LABELS_TEXT)
4518
+ .replace(DOCUMENTATION_V45_DEEPER_DOCUMENTATION_TEXT, DOCUMENTATION_V46_DEEPER_DOCUMENTATION_TEXT)
4519
+ .replaceAll(DOCUMENTATION_INDEX_V45_URI, DOCUMENTATION_INDEX_V46_URI)
4520
+ .replaceAll(RECEIPT_GUIDE_V24_URI, RECEIPT_GUIDE_V25_URI)
4521
+ .replace(ONBOARDING_EVALUATION_GRANT_GUIDANCE_TEXT, INCLUDED_EVALUATION_GUIDANCE_TEXT)
4522
+ .replaceAll('attempt-local and disposable', 'run-local and disposable')
4523
+ .replaceAll('names the one free attempt; after that attempt is consumed', 'names the one included run; after that run is consumed')
4524
+ .replaceAll('conclude the attempt and close its write lane', 'conclude the run and close its write lane')
4525
+ .replaceAll('the run, store, attempt, raw', 'the run, store, run identity, raw')
4526
+ .replaceAll('attempt budget', 'call budget');
4527
+ const GETTING_STARTED_V46_TEXT = GETTING_STARTED_V45_TEXT.replace('# Getting started with Meguro v45', '# Getting started with Meguro v46').replaceAll(GETTING_STARTED_V45_URI, GETTING_STARTED_V46_URI).replace(DOCUMENTATION_V46_VERSION_LABELS_TEXT, DOCUMENTATION_V47_VERSION_LABELS_TEXT).replace(DOCUMENTATION_V46_DEEPER_DOCUMENTATION_TEXT, DOCUMENTATION_V47_DEEPER_DOCUMENTATION_TEXT).replaceAll(DOCUMENTATION_INDEX_V46_URI, DOCUMENTATION_INDEX_V47_URI).replaceAll(RECEIPT_GUIDE_V25_URI, RECEIPT_GUIDE_V26_URI).replaceAll(GATE_POLICY_V6_URI, GATE_POLICY_V7_URI).replaceAll(PRODUCT_GUIDE_V42_URI, PRODUCT_GUIDE_V43_URI);
4528
+ const GETTING_STARTED_V47_TEXT = GETTING_STARTED_V46_TEXT.replace('# Getting started with Meguro v46', '# Getting started with Meguro v47').replaceAll(GETTING_STARTED_V46_URI, GETTING_STARTED_V47_URI).replace(DOCUMENTATION_V47_VERSION_LABELS_TEXT, DOCUMENTATION_V48_VERSION_LABELS_TEXT).replace(DOCUMENTATION_V47_DEEPER_DOCUMENTATION_TEXT, DOCUMENTATION_V48_DEEPER_DOCUMENTATION_TEXT).replaceAll(DOCUMENTATION_INDEX_V47_URI, DOCUMENTATION_INDEX_V48_URI).replaceAll(RECEIPT_GUIDE_V26_URI, RECEIPT_GUIDE_V27_URI).replaceAll(GATE_POLICY_V7_URI, GATE_POLICY_V8_URI).replaceAll(PRODUCT_GUIDE_V43_URI, PRODUCT_GUIDE_V44_URI);
4529
+ const GETTING_STARTED_V48_TEXT = GETTING_STARTED_V47_TEXT.replace('# Getting started with Meguro v47', '# Getting started with Meguro v48').replaceAll(GETTING_STARTED_V47_URI, GETTING_STARTED_V48_URI).replace(DOCUMENTATION_V48_VERSION_LABELS_TEXT, DOCUMENTATION_V49_VERSION_LABELS_TEXT).replace(DOCUMENTATION_V48_DEEPER_DOCUMENTATION_TEXT, DOCUMENTATION_V49_DEEPER_DOCUMENTATION_TEXT).replaceAll(DOCUMENTATION_INDEX_V48_URI, DOCUMENTATION_INDEX_V49_URI).replaceAll(PRODUCT_GUIDE_V44_URI, PRODUCT_GUIDE_V45_URI).replaceAll(RECEIPT_GUIDE_V27_URI, RECEIPT_GUIDE_V28_URI).replaceAll(GATE_POLICY_V8_URI, GATE_POLICY_V9_URI);
4530
+
3584
4531
  const PRODUCT_GUIDE_V36_TEXT = PRODUCT_GUIDE_V35_TEXT
3585
4532
  .replace('# Meguro product guide v35', '# Meguro product guide v36')
3586
4533
  .replaceAll(PRODUCT_GUIDE_V35_URI, PRODUCT_GUIDE_V36_URI)
@@ -3592,6 +4539,215 @@ const PRODUCT_GUIDE_V36_TEXT = PRODUCT_GUIDE_V35_TEXT
3592
4539
  .replaceAll('stores[].historySpan.days', 'stores[].historySpan.current.days')
3593
4540
  .replaceAll('historySpan.historyDays', 'historySpan.current.days');
3594
4541
 
4542
+ const PRODUCT_GUIDE_V37_TEXT = PRODUCT_GUIDE_V36_TEXT
4543
+ .replace('# Meguro product guide v36', '# Meguro product guide v37')
4544
+ .replaceAll(PRODUCT_GUIDE_V36_URI, PRODUCT_GUIDE_V37_URI)
4545
+ .replaceAll(GETTING_STARTED_V39_URI, GETTING_STARTED_V40_URI)
4546
+ .replaceAll(DOCUMENTATION_INDEX_V37_URI, DOCUMENTATION_INDEX_V39_URI)
4547
+ .replaceAll(RECEIPT_GUIDE_V18_URI, RECEIPT_GUIDE_V19_URI);
4548
+
4549
+ const PRODUCT_GUIDE_V38_TEXT = PRODUCT_GUIDE_V37_TEXT
4550
+ .replace('# Meguro product guide v37', '# Meguro product guide v38')
4551
+ .replaceAll(PRODUCT_GUIDE_V37_URI, PRODUCT_GUIDE_V38_URI)
4552
+ .replaceAll(GETTING_STARTED_V40_URI, GETTING_STARTED_V41_URI)
4553
+ .replaceAll(DOCUMENTATION_INDEX_V39_URI, DOCUMENTATION_INDEX_V40_URI)
4554
+ .replaceAll(RECEIPT_GUIDE_V19_URI, RECEIPT_GUIDE_V20_URI);
4555
+
4556
+ const PRODUCT_GUIDE_V39_TEXT = PRODUCT_GUIDE_V38_TEXT
4557
+ .replace('# Meguro product guide v38', '# Meguro product guide v39')
4558
+ .replaceAll(PRODUCT_GUIDE_V38_URI, PRODUCT_GUIDE_V39_URI)
4559
+ .replaceAll(GETTING_STARTED_V41_URI, GETTING_STARTED_V42_URI)
4560
+ .replaceAll(DOCUMENTATION_INDEX_V40_URI, DOCUMENTATION_INDEX_V43_URI)
4561
+ .replaceAll(RECEIPT_GUIDE_V20_URI, RECEIPT_GUIDE_V22_URI);
4562
+
4563
+ const PRODUCT_GUIDE_V40_TEXT = PRODUCT_GUIDE_V39_TEXT
4564
+ .replace('# Meguro product guide v39', '# Meguro product guide v40')
4565
+ .replaceAll(PRODUCT_GUIDE_V39_URI, PRODUCT_GUIDE_V40_URI)
4566
+ .replaceAll(GETTING_STARTED_V42_URI, GETTING_STARTED_V43_URI)
4567
+ .replaceAll(DOCUMENTATION_INDEX_V43_URI, DOCUMENTATION_INDEX_V44_URI)
4568
+ .replaceAll(RECEIPT_GUIDE_V22_URI, RECEIPT_GUIDE_V23_URI);
4569
+
4570
+ const PRODUCT_GUIDE_V41_TEXT = PRODUCT_GUIDE_V40_TEXT
4571
+ .replace('# Meguro product guide v40', '# Meguro product guide v41')
4572
+ .replaceAll(PRODUCT_GUIDE_V40_URI, PRODUCT_GUIDE_V41_URI)
4573
+ .replaceAll(GETTING_STARTED_V43_URI, GETTING_STARTED_V44_URI)
4574
+ .replaceAll(DOCUMENTATION_INDEX_V44_URI, DOCUMENTATION_INDEX_V45_URI)
4575
+ .replaceAll(RECEIPT_GUIDE_V23_URI, RECEIPT_GUIDE_V24_URI);
4576
+
4577
+ const PRODUCT_GUIDE_V42_TEXT = PRODUCT_GUIDE_V41_TEXT
4578
+ .replace('# Meguro product guide v41', '# Meguro product guide v42')
4579
+ .replaceAll(PRODUCT_GUIDE_V41_URI, PRODUCT_GUIDE_V42_URI)
4580
+ .replaceAll(GETTING_STARTED_V44_URI, GETTING_STARTED_V45_URI)
4581
+ .replaceAll(DOCUMENTATION_INDEX_V45_URI, DOCUMENTATION_INDEX_V46_URI)
4582
+ .replaceAll(RECEIPT_GUIDE_V24_URI, RECEIPT_GUIDE_V25_URI)
4583
+ .replace(ONBOARDING_EVALUATION_GRANT_GUIDANCE_TEXT, INCLUDED_EVALUATION_GUIDANCE_TEXT)
4584
+ .replaceAll('attempt-local and disposable', 'run-local and disposable')
4585
+ .replaceAll('names the one free attempt; after that attempt is consumed', 'names the one included run; after that run is consumed')
4586
+ .replaceAll('conclude the attempt and close its write lane', 'conclude the run and close its write lane')
4587
+ .replaceAll('the run, store, attempt, raw', 'the run, store, run identity, raw')
4588
+ .replaceAll('attempt budget', 'call budget')
4589
+ .replaceAll('quote immutable pricing or attempt payment', 'quote immutable pricing or initiate payment');
4590
+
4591
+ const PRODUCT_GUIDE_V43_ADDITION_TEXT = [
4592
+ '| Which Shopify Admin operations does Meguro serve, and does it cover the calls my agent makes? | Before sign-in, read the environment-templated site `/facts/compatibility.json`; after sign-in, call `admin_schema` for the exact-version manifest. Never infer support from a type name or Shopify documentation alone. |',
4593
+ '| Which practice scenarios exist, and what does each expect from an agent? | Before sign-in, call `templates_list`, then `template_get` for the chosen template and read `goodAgentShould`, `agentSees`, and `avoid`. |',
4594
+ '',
4595
+ '## Before sign-in',
4596
+ '',
4597
+ 'An anonymous agent can establish what Meguro is and when it is not the right tool; distinguish',
4598
+ 'served behavior from modeled behavior; inspect the anonymous scenario catalog and compatibility',
4599
+ 'feed; and direct the human to the pricing page for current terms. Account creation and consent are',
4600
+ 'human actions.',
4601
+ '',
4602
+ '## Before you start: four facts to establish and report',
4603
+ '',
4604
+ '1. **Scenario match.** Call `templates_list` then `template_get`. Name a template only when',
4605
+ ' `bestFor` and `goodAgentShould` match; quote the brief and say no match rather than choose the',
4606
+ ' closest template.',
4607
+ '2. **Coverage.** Use the compatibility feed or signed-in `admin_schema`. List required operations',
4608
+ ' as served, modeled-only, or absent. An absent critical-path operation is not yet.',
4609
+ '3. **Human actions and current terms.** Account, consent, and current trial terms are human-facing.',
4610
+ ' Never buy, change a plan, or consent for the human.',
4611
+ '4. **Receipt meaning.** A receipt is rehearsal evidence from a simulated Store: calls, accepted and',
4612
+ ' rejected changes, and modeled comparison. It is not a forecast, certification, or live-platform',
4613
+ ' proof.',
4614
+ '',
4615
+ 'Report one recommendation — start, not yet, or not for this agent — followed by all four facts',
4616
+ 'marked established or not established in the operator’s language. If any fact is not established,',
4617
+ 'the recommendation cannot be start.',
4618
+ ].join('\n');
4619
+ const PRODUCT_GUIDE_V43_TEXT = PRODUCT_GUIDE_V42_TEXT.replace('# Meguro product guide v42', '# Meguro product guide v43').replaceAll(PRODUCT_GUIDE_V42_URI, PRODUCT_GUIDE_V43_URI).replace(DOCUMENTATION_V46_VERSION_LABELS_TEXT, DOCUMENTATION_V47_VERSION_LABELS_TEXT).replace(DOCUMENTATION_V46_DEEPER_DOCUMENTATION_TEXT, DOCUMENTATION_V47_DEEPER_DOCUMENTATION_TEXT).replaceAll(GETTING_STARTED_V45_URI, GETTING_STARTED_V46_URI).replaceAll(DOCUMENTATION_INDEX_V46_URI, DOCUMENTATION_INDEX_V47_URI).replaceAll(RECEIPT_GUIDE_V25_URI, RECEIPT_GUIDE_V26_URI).replaceAll(GATE_POLICY_V6_URI, GATE_POLICY_V7_URI).replace('## Answering discipline', PRODUCT_GUIDE_V43_ADDITION_TEXT + '\n\n## Answering discipline');
4620
+
4621
+ const PRODUCT_GUIDE_V43_HUMAN_ACTIONS_TEXT = [
4622
+ '3. **Human actions and current terms.** Account, consent, and current trial terms are human-facing.',
4623
+ ' Never buy, change a plan, or consent for the human.',
4624
+ ].join('\n');
4625
+
4626
+ // MEG-1568: the four-fact start report tells the agent that current terms are human-facing without
4627
+ // naming where the human reads them, so the pointer the same generation's pre-sign-in section
4628
+ // carries is restored here. It names a destination only; prices, allowances, trial lengths and
4629
+ // country availability stay on the surfaces that own them.
4630
+ const PRODUCT_GUIDE_V44_HUMAN_ACTIONS_TEXT = [
4631
+ '3. **Human actions and current terms.** Account, consent, and current trial terms are human-facing.',
4632
+ ' Point the human to the Meguro pricing page for current terms, and to Console → Plans & Billing',
4633
+ ' to subscribe or change a plan. Never buy, change a plan, or consent for the human.',
4634
+ ].join('\n');
4635
+
4636
+ const PRODUCT_GUIDE_V44_TEXT = PRODUCT_GUIDE_V43_TEXT
4637
+ .replace('# Meguro product guide v43', '# Meguro product guide v44')
4638
+ .replaceAll(PRODUCT_GUIDE_V43_URI, PRODUCT_GUIDE_V44_URI)
4639
+ .replace(DOCUMENTATION_V47_VERSION_LABELS_TEXT, DOCUMENTATION_V48_VERSION_LABELS_TEXT)
4640
+ .replace(DOCUMENTATION_V47_DEEPER_DOCUMENTATION_TEXT, DOCUMENTATION_V48_DEEPER_DOCUMENTATION_TEXT)
4641
+ .replaceAll(GETTING_STARTED_V46_URI, GETTING_STARTED_V47_URI)
4642
+ .replaceAll(DOCUMENTATION_INDEX_V47_URI, DOCUMENTATION_INDEX_V48_URI)
4643
+ .replaceAll(RECEIPT_GUIDE_V26_URI, RECEIPT_GUIDE_V27_URI)
4644
+ .replaceAll(GATE_POLICY_V7_URI, GATE_POLICY_V8_URI)
4645
+ .replace(PRODUCT_GUIDE_V43_HUMAN_ACTIONS_TEXT, PRODUCT_GUIDE_V44_HUMAN_ACTIONS_TEXT);
4646
+
4647
+ // Published copy, not a second entitlement authority. The focused served-surface discriminator
4648
+ // constructs these rows from LAUNCH_TIER_POLICIES and fails if the immutable prose drifts.
4649
+ const PRODUCT_GUIDE_V45_TIER_FACTS_TEXT = [
4650
+ '## Launch tier capacity and receipt retention',
4651
+ '',
4652
+ 'The active-practice-store allowance is per account, not per workspace. The workspace allowance',
4653
+ 'counts active workspaces in that account, including Default. Receipt retention is how long an',
4654
+ 'issued receipt remains fetchable; it never changes the issued receipt.',
4655
+ '',
4656
+ '| Tier | Active practice stores | Active workspaces | Receipt retention |',
4657
+ '| --- | ---: | ---: | ---: |',
4658
+ '| Free | 1 active practice store per account | 1 active workspace per account | 7 days |',
4659
+ '| Builder | 3 active practice stores per account | 10 active workspaces per account | 365 days |',
4660
+ ].join('\n');
4661
+
4662
+ const PRODUCT_GUIDE_V45_TEXT = PRODUCT_GUIDE_V44_TEXT
4663
+ .replace('# Meguro product guide v44', '# Meguro product guide v45')
4664
+ .replaceAll(PRODUCT_GUIDE_V44_URI, PRODUCT_GUIDE_V45_URI)
4665
+ .replace(DOCUMENTATION_V48_VERSION_LABELS_TEXT, DOCUMENTATION_V49_VERSION_LABELS_TEXT)
4666
+ .replace(DOCUMENTATION_V48_DEEPER_DOCUMENTATION_TEXT, DOCUMENTATION_V49_DEEPER_DOCUMENTATION_TEXT)
4667
+ .replaceAll(GETTING_STARTED_V47_URI, GETTING_STARTED_V48_URI)
4668
+ .replaceAll(DOCUMENTATION_INDEX_V48_URI, DOCUMENTATION_INDEX_V49_URI)
4669
+ .replaceAll(RECEIPT_GUIDE_V27_URI, RECEIPT_GUIDE_V28_URI)
4670
+ .replaceAll(GATE_POLICY_V8_URI, GATE_POLICY_V9_URI)
4671
+ .replace('## Answering discipline', `${PRODUCT_GUIDE_V45_TIER_FACTS_TEXT}\n\n## Answering discipline`);
4672
+
4673
+ const CONSOLE_CI_RECIPE_TEXT = `## CI recipe and exit status
4674
+
4675
+ In Console, open a receipt and select **CI recipe**.
4676
+ Gate \`go\` exits 0; every other result exits 1; waiting is not a pass.`;
4677
+ const STORE_ADMIN_TOKEN_LIFETIME_TEXT = `## Store Admin-token lifetime
4678
+
4679
+ A store's Admin token lives as long as that store; deleting the store revokes it;
4680
+ there is no rotation short of deletion.`;
4681
+ const PRODUCT_PROCESSING_LOCATION_TEXT = `## Trust and processing location
4682
+
4683
+ Meguro uses Amazon Web Services for cloud hosting, storage, authentication, security monitoring,
4684
+ and service email. See the [Privacy service-provider list](https://meguro.io/privacy/#sharing).
4685
+
4686
+ Meguro’s primary application workload and connected-platform storage are hosted in the United States.
4687
+ Warehouse One currently administers Meguro from the United States.
4688
+ See [Privacy — Where information is processed](https://meguro.io/privacy/#location).`;
4689
+
4690
+ const GETTING_STARTED_V49_TEXT = GETTING_STARTED_V48_TEXT
4691
+ .replace('# Getting started with Meguro v48', '# Getting started with Meguro v49')
4692
+ .replaceAll(GETTING_STARTED_V48_URI, GETTING_STARTED_V49_URI)
4693
+ .replace(DOCUMENTATION_V49_VERSION_LABELS_TEXT, DOCUMENTATION_V50_VERSION_LABELS_TEXT)
4694
+ .replace(DOCUMENTATION_V49_DEEPER_DOCUMENTATION_TEXT, DOCUMENTATION_V50_DEEPER_DOCUMENTATION_TEXT)
4695
+ .replaceAll(DOCUMENTATION_INDEX_V49_URI, DOCUMENTATION_INDEX_V50_URI)
4696
+ .replaceAll(PRODUCT_GUIDE_V45_URI, PRODUCT_GUIDE_V46_URI)
4697
+ .replaceAll(RECEIPT_GUIDE_V28_URI, RECEIPT_GUIDE_V29_URI)
4698
+ .replace('## Practice-run state, evidence, and terminal confirmation', `${STORE_ADMIN_TOKEN_LIFETIME_TEXT}\n\n## Practice-run state, evidence, and terminal confirmation`)
4699
+ .replace('## Deeper in-band documentation', `${CONSOLE_CI_RECIPE_TEXT}\n\n## Deeper in-band documentation`);
4700
+
4701
+ const PRODUCT_GUIDE_V46_TEXT = PRODUCT_GUIDE_V45_TEXT
4702
+ .replace('# Meguro product guide v45', '# Meguro product guide v46')
4703
+ .replaceAll(PRODUCT_GUIDE_V45_URI, PRODUCT_GUIDE_V46_URI)
4704
+ .replace(DOCUMENTATION_V49_VERSION_LABELS_TEXT, DOCUMENTATION_V50_VERSION_LABELS_TEXT)
4705
+ .replace(DOCUMENTATION_V49_DEEPER_DOCUMENTATION_TEXT, DOCUMENTATION_V50_DEEPER_DOCUMENTATION_TEXT)
4706
+ .replaceAll(GETTING_STARTED_V48_URI, GETTING_STARTED_V49_URI)
4707
+ .replaceAll(DOCUMENTATION_INDEX_V49_URI, DOCUMENTATION_INDEX_V50_URI)
4708
+ .replaceAll(RECEIPT_GUIDE_V28_URI, RECEIPT_GUIDE_V29_URI)
4709
+ .replace('## Stable concepts versus changing facts', `${CONSOLE_CI_RECIPE_TEXT}\n\n${PRODUCT_PROCESSING_LOCATION_TEXT}\n\n## Stable concepts versus changing facts`);
4710
+
4711
+ // MEG-1593: pointer-only republishes. Neither document's prose changes; both are reissued so the
4712
+ // current generation names one receipt guide, one index, and each other.
4713
+ const GETTING_STARTED_V50_TEXT = GETTING_STARTED_V49_TEXT
4714
+ .replace('# Getting started with Meguro v49', '# Getting started with Meguro v50')
4715
+ .replaceAll(GETTING_STARTED_V49_URI, GETTING_STARTED_V50_URI)
4716
+ .replace(DOCUMENTATION_V50_VERSION_LABELS_TEXT, DOCUMENTATION_V51_VERSION_LABELS_TEXT)
4717
+ .replace(DOCUMENTATION_V50_DEEPER_DOCUMENTATION_TEXT, DOCUMENTATION_V51_DEEPER_DOCUMENTATION_TEXT)
4718
+ .replaceAll(DOCUMENTATION_INDEX_V50_URI, DOCUMENTATION_INDEX_V51_URI)
4719
+ .replaceAll(PRODUCT_GUIDE_V46_URI, PRODUCT_GUIDE_V47_URI)
4720
+ .replaceAll(RECEIPT_GUIDE_V29_URI, RECEIPT_GUIDE_V30_URI);
4721
+
4722
+ const PRODUCT_GUIDE_V47_TEXT = PRODUCT_GUIDE_V46_TEXT
4723
+ .replace('# Meguro product guide v46', '# Meguro product guide v47')
4724
+ .replaceAll(PRODUCT_GUIDE_V46_URI, PRODUCT_GUIDE_V47_URI)
4725
+ .replace(DOCUMENTATION_V50_VERSION_LABELS_TEXT, DOCUMENTATION_V51_VERSION_LABELS_TEXT)
4726
+ .replace(DOCUMENTATION_V50_DEEPER_DOCUMENTATION_TEXT, DOCUMENTATION_V51_DEEPER_DOCUMENTATION_TEXT)
4727
+ .replaceAll(GETTING_STARTED_V49_URI, GETTING_STARTED_V50_URI)
4728
+ .replaceAll(DOCUMENTATION_INDEX_V50_URI, DOCUMENTATION_INDEX_V51_URI)
4729
+ .replaceAll(RECEIPT_GUIDE_V29_URI, RECEIPT_GUIDE_V30_URI);
4730
+
4731
+ // MEG-1594: pointer-only republishes. Neither document's prose changes; both are reissued so the
4732
+ // current generation names one receipt guide, one index, and each other.
4733
+ const GETTING_STARTED_V51_TEXT = GETTING_STARTED_V50_TEXT
4734
+ .replace('# Getting started with Meguro v50', '# Getting started with Meguro v51')
4735
+ .replaceAll(GETTING_STARTED_V50_URI, GETTING_STARTED_V51_URI)
4736
+ .replace(DOCUMENTATION_V51_VERSION_LABELS_TEXT, DOCUMENTATION_V52_VERSION_LABELS_TEXT)
4737
+ .replace(DOCUMENTATION_V51_DEEPER_DOCUMENTATION_TEXT, DOCUMENTATION_V52_DEEPER_DOCUMENTATION_TEXT)
4738
+ .replaceAll(DOCUMENTATION_INDEX_V51_URI, DOCUMENTATION_INDEX_V52_URI)
4739
+ .replaceAll(PRODUCT_GUIDE_V47_URI, PRODUCT_GUIDE_V48_URI)
4740
+ .replaceAll(RECEIPT_GUIDE_V30_URI, RECEIPT_GUIDE_V31_URI);
4741
+
4742
+ const PRODUCT_GUIDE_V48_TEXT = PRODUCT_GUIDE_V47_TEXT
4743
+ .replace('# Meguro product guide v47', '# Meguro product guide v48')
4744
+ .replaceAll(PRODUCT_GUIDE_V47_URI, PRODUCT_GUIDE_V48_URI)
4745
+ .replace(DOCUMENTATION_V51_VERSION_LABELS_TEXT, DOCUMENTATION_V52_VERSION_LABELS_TEXT)
4746
+ .replace(DOCUMENTATION_V51_DEEPER_DOCUMENTATION_TEXT, DOCUMENTATION_V52_DEEPER_DOCUMENTATION_TEXT)
4747
+ .replaceAll(GETTING_STARTED_V50_URI, GETTING_STARTED_V51_URI)
4748
+ .replaceAll(DOCUMENTATION_INDEX_V51_URI, DOCUMENTATION_INDEX_V52_URI)
4749
+ .replaceAll(RECEIPT_GUIDE_V30_URI, RECEIPT_GUIDE_V31_URI);
4750
+
3595
4751
  function gatePolicyValueAt(value, path) {
3596
4752
  return path.replace(/\[(\d+)\]/gu, '.$1').split('.').reduce((current, key) => {
3597
4753
  if (!current || typeof current !== 'object' || !Object.hasOwn(current, key)) return undefined;
@@ -4047,6 +5203,66 @@ const CATALOG = buildDocumentationCatalog([
4047
5203
  description: 'Zero-prior-knowledge hosted sequence with labelled creation and current history bases, and truthful hosted real-store history-tool guidance.',
4048
5204
  text: GETTING_STARTED_V39_TEXT,
4049
5205
  },
5206
+ {
5207
+ topic: 'getting-started',
5208
+ version: GETTING_STARTED_V40_VERSION,
5209
+ uri: GETTING_STARTED_V40_URI,
5210
+ name: 'Getting started with Meguro v40',
5211
+ title: 'Getting started with Meguro v40',
5212
+ description: 'Zero-prior-knowledge hosted sequence with current immutable documentation pointers.',
5213
+ text: GETTING_STARTED_V40_TEXT,
5214
+ },
5215
+ {
5216
+ topic: 'getting-started',
5217
+ version: GETTING_STARTED_V41_VERSION,
5218
+ uri: GETTING_STARTED_V41_URI,
5219
+ name: 'Getting started with Meguro v41',
5220
+ title: 'Getting started with Meguro v41',
5221
+ description: 'Zero-prior-knowledge hosted sequence with current immutable documentation pointers.',
5222
+ text: GETTING_STARTED_V41_TEXT,
5223
+ },
5224
+ {
5225
+ topic: 'getting-started',
5226
+ version: GETTING_STARTED_V42_VERSION,
5227
+ uri: GETTING_STARTED_V42_URI,
5228
+ name: 'Getting started with Meguro v42',
5229
+ title: 'Getting started with Meguro v42',
5230
+ description: 'Zero-prior-knowledge hosted sequence with current immutable documentation pointers.',
5231
+ text: GETTING_STARTED_V42_TEXT,
5232
+ },
5233
+ {
5234
+ topic: 'getting-started',
5235
+ version: GETTING_STARTED_V43_VERSION,
5236
+ uri: GETTING_STARTED_V43_URI,
5237
+ name: 'Getting started with Meguro v43',
5238
+ title: 'Getting started with Meguro v43',
5239
+ description: 'Zero-prior-knowledge hosted sequence with current immutable documentation pointers.',
5240
+ text: GETTING_STARTED_V43_TEXT,
5241
+ },
5242
+ {
5243
+ topic: 'getting-started',
5244
+ version: GETTING_STARTED_V44_VERSION,
5245
+ uri: GETTING_STARTED_V44_URI,
5246
+ name: 'Getting started with Meguro v44',
5247
+ title: 'Getting started with Meguro v44',
5248
+ description: 'Zero-prior-knowledge hosted sequence with current immutable documentation pointers.',
5249
+ text: GETTING_STARTED_V44_TEXT,
5250
+ },
5251
+ {
5252
+ topic: 'getting-started',
5253
+ version: GETTING_STARTED_V45_VERSION,
5254
+ uri: GETTING_STARTED_V45_URI,
5255
+ name: 'Getting started with Meguro v45',
5256
+ title: 'Getting started with Meguro v45',
5257
+ description: 'Zero-prior-knowledge hosted sequence using customer run and included-evaluation vocabulary.',
5258
+ text: GETTING_STARTED_V45_TEXT,
5259
+ },
5260
+ { topic: 'getting-started', version: GETTING_STARTED_V46_VERSION, uri: GETTING_STARTED_V46_URI, name: 'Getting started with Meguro v46', title: 'Getting started with Meguro v46', description: 'Pointer-only republish for the correction-contract documentation generation.', text: GETTING_STARTED_V46_TEXT },
5261
+ { topic: 'getting-started', version: GETTING_STARTED_V47_VERSION, uri: GETTING_STARTED_V47_URI, name: 'Getting started with Meguro v47', title: 'Getting started with Meguro v47', description: 'Pointer-only republish for the public receipt comparison card documentation generation.', text: GETTING_STARTED_V47_TEXT },
5262
+ { topic: 'getting-started', version: GETTING_STARTED_V48_VERSION, uri: GETTING_STARTED_V48_URI, name: 'Getting started with Meguro v48', title: 'Getting started with Meguro v48', description: 'Pointer-only republish for the account-capacity tier-facts documentation generation.', text: GETTING_STARTED_V48_TEXT },
5263
+ { topic: 'getting-started', version: GETTING_STARTED_V49_VERSION, uri: GETTING_STARTED_V49_URI, name: 'Getting started with Meguro v49', title: 'Getting started with Meguro v49', description: 'Getting Started with the Console CI exit contract and per-store Admin-token lifetime.', text: GETTING_STARTED_V49_TEXT },
5264
+ { topic: 'getting-started', version: GETTING_STARTED_V50_VERSION, uri: GETTING_STARTED_V50_URI, name: 'Getting started with Meguro v50', title: 'Getting started with Meguro v50', description: 'Pointer-only republish for the recorded Admin API version documentation generation.', text: GETTING_STARTED_V50_TEXT },
5265
+ { topic: 'getting-started', version: GETTING_STARTED_V51_VERSION, uri: GETTING_STARTED_V51_URI, name: 'Getting started with Meguro v51', title: 'Getting started with Meguro v51', description: 'Pointer-only republish for the practice-store baseline reversion documentation generation.', text: GETTING_STARTED_V51_TEXT },
4050
5266
  {
4051
5267
  topic: 'product-guide',
4052
5268
  version: PRODUCT_GUIDE_VERSION,
@@ -4372,6 +5588,66 @@ const CATALOG = buildDocumentationCatalog([
4372
5588
  description: 'Current product concepts with labelled creation and current history bases, and truthful hosted real-store history-tool guidance.',
4373
5589
  text: PRODUCT_GUIDE_V36_TEXT,
4374
5590
  },
5591
+ {
5592
+ topic: 'product-guide',
5593
+ version: PRODUCT_GUIDE_V37_VERSION,
5594
+ uri: PRODUCT_GUIDE_V37_URI,
5595
+ name: 'Meguro product guide v37',
5596
+ title: 'Meguro product guide v37',
5597
+ description: 'Current product concepts with current immutable documentation pointers.',
5598
+ text: PRODUCT_GUIDE_V37_TEXT,
5599
+ },
5600
+ {
5601
+ topic: 'product-guide',
5602
+ version: PRODUCT_GUIDE_V38_VERSION,
5603
+ uri: PRODUCT_GUIDE_V38_URI,
5604
+ name: 'Meguro product guide v38',
5605
+ title: 'Meguro product guide v38',
5606
+ description: 'Current product concepts with current immutable documentation pointers.',
5607
+ text: PRODUCT_GUIDE_V38_TEXT,
5608
+ },
5609
+ {
5610
+ topic: 'product-guide',
5611
+ version: PRODUCT_GUIDE_V39_VERSION,
5612
+ uri: PRODUCT_GUIDE_V39_URI,
5613
+ name: 'Meguro product guide v39',
5614
+ title: 'Meguro product guide v39',
5615
+ description: 'Current product concepts with current immutable documentation pointers.',
5616
+ text: PRODUCT_GUIDE_V39_TEXT,
5617
+ },
5618
+ {
5619
+ topic: 'product-guide',
5620
+ version: PRODUCT_GUIDE_V40_VERSION,
5621
+ uri: PRODUCT_GUIDE_V40_URI,
5622
+ name: 'Meguro product guide v40',
5623
+ title: 'Meguro product guide v40',
5624
+ description: 'Current product concepts with current immutable documentation pointers.',
5625
+ text: PRODUCT_GUIDE_V40_TEXT,
5626
+ },
5627
+ {
5628
+ topic: 'product-guide',
5629
+ version: PRODUCT_GUIDE_V41_VERSION,
5630
+ uri: PRODUCT_GUIDE_V41_URI,
5631
+ name: 'Meguro product guide v41',
5632
+ title: 'Meguro product guide v41',
5633
+ description: 'Current product concepts with current immutable documentation pointers.',
5634
+ text: PRODUCT_GUIDE_V41_TEXT,
5635
+ },
5636
+ {
5637
+ topic: 'product-guide',
5638
+ version: PRODUCT_GUIDE_V42_VERSION,
5639
+ uri: PRODUCT_GUIDE_V42_URI,
5640
+ name: 'Meguro product guide v42',
5641
+ title: 'Meguro product guide v42',
5642
+ description: 'Current product concepts using customer run and included-evaluation vocabulary.',
5643
+ text: PRODUCT_GUIDE_V42_TEXT,
5644
+ },
5645
+ { topic: 'product-guide', version: PRODUCT_GUIDE_V43_VERSION, uri: PRODUCT_GUIDE_V43_URI, name: 'Meguro product guide v43', title: 'Meguro product guide v43', description: 'Current product concepts with pre-sign-in coverage and scenario routing plus a four-fact start report.', text: PRODUCT_GUIDE_V43_TEXT },
5646
+ { topic: 'product-guide', version: PRODUCT_GUIDE_V44_VERSION, uri: PRODUCT_GUIDE_V44_URI, name: 'Meguro product guide v44', title: 'Meguro product guide v44', description: 'Current product concepts whose four-fact start report names the pricing page for current terms.', text: PRODUCT_GUIDE_V44_TEXT },
5647
+ { topic: 'product-guide', version: PRODUCT_GUIDE_V45_VERSION, uri: PRODUCT_GUIDE_V45_URI, name: 'Meguro product guide v45', title: 'Meguro product guide v45', description: 'Current product concepts with explicit Free and Builder account capacity and receipt-retention facts.', text: PRODUCT_GUIDE_V45_TEXT },
5648
+ { topic: 'product-guide', version: PRODUCT_GUIDE_V46_VERSION, uri: PRODUCT_GUIDE_V46_URI, name: 'Meguro product guide v46', title: 'Meguro product guide v46', description: 'Current product concepts with the Console CI exit contract and Privacy-sourced processing location.', text: PRODUCT_GUIDE_V46_TEXT },
5649
+ { topic: 'product-guide', version: PRODUCT_GUIDE_V47_VERSION, uri: PRODUCT_GUIDE_V47_URI, name: 'Meguro product guide v47', title: 'Meguro product guide v47', description: 'Pointer-only republish for the recorded Admin API version documentation generation.', text: PRODUCT_GUIDE_V47_TEXT },
5650
+ { topic: 'product-guide', version: PRODUCT_GUIDE_V48_VERSION, uri: PRODUCT_GUIDE_V48_URI, name: 'Meguro product guide v48', title: 'Meguro product guide v48', description: 'Pointer-only republish for the practice-store baseline reversion documentation generation.', text: PRODUCT_GUIDE_V48_TEXT },
4375
5651
  {
4376
5652
  topic: 'index',
4377
5653
  version: DOCUMENTATION_CURRENCY_V1.indexVersion,
@@ -4705,6 +5981,93 @@ const CATALOG = buildDocumentationCatalog([
4705
5981
  description: 'Immutable current-version pointers for the labelled hosted-history generation.',
4706
5982
  text: documentationIndexText(DOCUMENTATION_CURRENCY_V37, DOCUMENTATION_INDEX_V37_URI),
4707
5983
  },
5984
+ {
5985
+ topic: 'index',
5986
+ version: DOCUMENTATION_CURRENCY_V38.indexVersion,
5987
+ uri: DOCUMENTATION_INDEX_V38_URI,
5988
+ name: 'Meguro documentation index v38',
5989
+ title: 'Meguro documentation index v38',
5990
+ description: 'Immutable current-version pointers with the current receipt schema field index.',
5991
+ text: documentationIndexText(DOCUMENTATION_CURRENCY_V38, DOCUMENTATION_INDEX_V38_URI),
5992
+ },
5993
+ {
5994
+ topic: 'index',
5995
+ version: DOCUMENTATION_CURRENCY_V39.indexVersion,
5996
+ uri: DOCUMENTATION_INDEX_V39_URI,
5997
+ name: 'Meguro documentation index v39',
5998
+ title: 'Meguro documentation index v39',
5999
+ description: 'Immutable current-version pointers for the coherent current documentation generation.',
6000
+ text: documentationIndexText(DOCUMENTATION_CURRENCY_V39, DOCUMENTATION_INDEX_V39_URI),
6001
+ },
6002
+ {
6003
+ topic: 'index',
6004
+ version: DOCUMENTATION_CURRENCY_V40.indexVersion,
6005
+ uri: DOCUMENTATION_INDEX_V40_URI,
6006
+ name: 'Meguro documentation index v40',
6007
+ title: 'Meguro documentation index v40',
6008
+ description: 'Immutable current-version pointers for the generation whose receipt guide carries the modeled-mechanism field index.',
6009
+ text: documentationIndexText(DOCUMENTATION_CURRENCY_V40, DOCUMENTATION_INDEX_V40_URI),
6010
+ },
6011
+ {
6012
+ topic: 'index',
6013
+ version: DOCUMENTATION_CURRENCY_V41.indexVersion,
6014
+ uri: DOCUMENTATION_INDEX_V41_URI,
6015
+ name: 'Meguro documentation index v41',
6016
+ title: 'Meguro documentation index v41',
6017
+ description: 'Immutable current-version pointers for the compact, complete receipt-change multiplicity generation.',
6018
+ text: documentationIndexText(DOCUMENTATION_CURRENCY_V41, DOCUMENTATION_INDEX_V41_URI),
6019
+ },
6020
+ {
6021
+ topic: 'index',
6022
+ version: DOCUMENTATION_CURRENCY_V42.indexVersion,
6023
+ uri: DOCUMENTATION_INDEX_V42_URI,
6024
+ name: 'Meguro documentation index v42',
6025
+ title: 'Meguro documentation index v42',
6026
+ description: 'Immutable current-version pointers for the compact, complete receipt-forensic refusal multiplicity generation.',
6027
+ text: documentationIndexText(DOCUMENTATION_CURRENCY_V42, DOCUMENTATION_INDEX_V42_URI),
6028
+ },
6029
+ {
6030
+ topic: 'index',
6031
+ version: DOCUMENTATION_CURRENCY_V43.indexVersion,
6032
+ uri: DOCUMENTATION_INDEX_V43_URI,
6033
+ name: 'Meguro documentation index v43',
6034
+ title: 'Meguro documentation index v43',
6035
+ description: 'Immutable current-version pointers for the reconciled compact receipt-forensic generation.',
6036
+ text: documentationIndexText(DOCUMENTATION_CURRENCY_V43, DOCUMENTATION_INDEX_V43_URI),
6037
+ },
6038
+ {
6039
+ topic: 'index',
6040
+ version: DOCUMENTATION_CURRENCY_V44.indexVersion,
6041
+ uri: DOCUMENTATION_INDEX_V44_URI,
6042
+ name: 'Meguro documentation index v44',
6043
+ title: 'Meguro documentation index v44',
6044
+ description: 'Immutable current-version pointers for the one compiled receipt Conduct authority generation.',
6045
+ text: documentationIndexText(DOCUMENTATION_CURRENCY_V44, DOCUMENTATION_INDEX_V44_URI),
6046
+ },
6047
+ {
6048
+ topic: 'index',
6049
+ version: DOCUMENTATION_CURRENCY_V45.indexVersion,
6050
+ uri: DOCUMENTATION_INDEX_V45_URI,
6051
+ name: 'Meguro documentation index v45',
6052
+ title: 'Meguro documentation index v45',
6053
+ description: 'Immutable current-version pointers for the receipt bounded-value documentation generation.',
6054
+ text: documentationIndexText(DOCUMENTATION_CURRENCY_V45, DOCUMENTATION_INDEX_V45_URI),
6055
+ },
6056
+ {
6057
+ topic: 'index',
6058
+ version: DOCUMENTATION_CURRENCY_V46.indexVersion,
6059
+ uri: DOCUMENTATION_INDEX_V46_URI,
6060
+ name: 'Meguro documentation index v46',
6061
+ title: 'Meguro documentation index v46',
6062
+ description: 'Immutable current-version pointers for the customer run-vocabulary generation.',
6063
+ text: documentationIndexText(DOCUMENTATION_CURRENCY_V46, DOCUMENTATION_INDEX_V46_URI),
6064
+ },
6065
+ { topic: 'index', version: DOCUMENTATION_CURRENCY_V47.indexVersion, uri: DOCUMENTATION_INDEX_V47_URI, name: 'Meguro documentation index v47', title: 'Meguro documentation index v47', description: 'Immutable current-version pointers for the correction-contract documentation generation.', text: documentationIndexText(DOCUMENTATION_CURRENCY_V47, DOCUMENTATION_INDEX_V47_URI) },
6066
+ { topic: 'index', version: DOCUMENTATION_CURRENCY_V48.indexVersion, uri: DOCUMENTATION_INDEX_V48_URI, name: 'Meguro documentation index v48', title: 'Meguro documentation index v48', description: 'Immutable current-version pointers for the public receipt comparison card documentation generation.', text: documentationIndexText(DOCUMENTATION_CURRENCY_V48, DOCUMENTATION_INDEX_V48_URI) },
6067
+ { topic: 'index', version: DOCUMENTATION_CURRENCY_V49.indexVersion, uri: DOCUMENTATION_INDEX_V49_URI, name: 'Meguro documentation index v49', title: 'Meguro documentation index v49', description: 'Immutable current-version pointers for the account-capacity tier-facts documentation generation.', text: documentationIndexText(DOCUMENTATION_CURRENCY_V49, DOCUMENTATION_INDEX_V49_URI) },
6068
+ { topic: 'index', version: DOCUMENTATION_CURRENCY_V50.indexVersion, uri: DOCUMENTATION_INDEX_V50_URI, name: 'Meguro documentation index v50', title: 'Meguro documentation index v50', description: 'Immutable current-version pointers for reproducibility, CI, trust, public indexing, and Admin-token lifetime.', text: documentationIndexText(DOCUMENTATION_CURRENCY_V50, DOCUMENTATION_INDEX_V50_URI) },
6069
+ { topic: 'index', version: DOCUMENTATION_CURRENCY_V51.indexVersion, uri: DOCUMENTATION_INDEX_V51_URI, name: 'Meguro documentation index v51', title: 'Meguro documentation index v51', description: 'Immutable current-version pointers for the recorded Admin API version documentation generation.', text: documentationIndexText(DOCUMENTATION_CURRENCY_V51, DOCUMENTATION_INDEX_V51_URI) },
6070
+ { topic: 'index', version: DOCUMENTATION_CURRENCY_V52.indexVersion, uri: DOCUMENTATION_INDEX_V52_URI, name: 'Meguro documentation index v52', title: 'Meguro documentation index v52', description: 'Immutable current-version pointers for the practice-store baseline reversion documentation generation.', text: documentationIndexText(DOCUMENTATION_CURRENCY_V52, DOCUMENTATION_INDEX_V52_URI) },
4708
6071
  {
4709
6072
  topic: 'receipt-guide',
4710
6073
  version: RECEIPT_GUIDE_VERSION,
@@ -4867,6 +6230,75 @@ const CATALOG = buildDocumentationCatalog([
4867
6230
  description: 'Receipt interpretation with the generated path list republished as a field index and an authored winback contact-recovery cost definition.',
4868
6231
  text: RECEIPT_GUIDE_V18_TEXT,
4869
6232
  },
6233
+ {
6234
+ topic: 'receipt-guide',
6235
+ version: RECEIPT_GUIDE_V19_VERSION,
6236
+ uri: RECEIPT_GUIDE_V19_URI,
6237
+ name: 'Meguro receipt guide v19',
6238
+ title: 'Meguro receipt guide v19',
6239
+ description: 'Receipt interpretation with the generated field index aligned to the current receipt and Impact schemas.',
6240
+ text: RECEIPT_GUIDE_V19_TEXT,
6241
+ },
6242
+ {
6243
+ topic: 'receipt-guide',
6244
+ version: RECEIPT_GUIDE_V20_VERSION,
6245
+ uri: RECEIPT_GUIDE_V20_URI,
6246
+ name: 'Meguro receipt guide v20',
6247
+ title: 'Meguro receipt guide v20',
6248
+ description: 'Receipt interpretation whose generated field index carries the modeled-mechanism observation table now required by the receipt and Impact schemas.',
6249
+ text: RECEIPT_GUIDE_V20_TEXT,
6250
+ },
6251
+ {
6252
+ topic: 'receipt-guide',
6253
+ version: RECEIPT_GUIDE_V21_VERSION,
6254
+ uri: RECEIPT_GUIDE_V21_URI,
6255
+ name: 'Meguro receipt guide v21',
6256
+ title: 'Meguro receipt guide v21',
6257
+ description: 'Receipt interpretation for the compact, complete public change register and its required occurrence count.',
6258
+ text: RECEIPT_GUIDE_V21_TEXT,
6259
+ },
6260
+ {
6261
+ topic: 'receipt-guide',
6262
+ version: RECEIPT_GUIDE_V22_VERSION,
6263
+ uri: RECEIPT_GUIDE_V22_URI,
6264
+ name: 'Meguro receipt guide v22',
6265
+ title: 'Meguro receipt guide v22',
6266
+ description: 'Receipt interpretation for the compact, complete public refusal register, its required occurrence count, and its complete call references.',
6267
+ text: RECEIPT_GUIDE_V22_TEXT,
6268
+ },
6269
+ {
6270
+ topic: 'receipt-guide',
6271
+ version: RECEIPT_GUIDE_V23_VERSION,
6272
+ uri: RECEIPT_GUIDE_V23_URI,
6273
+ name: 'Meguro receipt guide v23',
6274
+ title: 'Meguro receipt guide v23',
6275
+ description: 'Receipt interpretation for the one compiled Conduct authority: exact rejected-read and blocked-write counts, explicit recovery correlations, and typed refusal reason classes.',
6276
+ text: RECEIPT_GUIDE_V23_TEXT,
6277
+ },
6278
+ {
6279
+ topic: 'receipt-guide',
6280
+ version: RECEIPT_GUIDE_V24_VERSION,
6281
+ uri: RECEIPT_GUIDE_V24_URI,
6282
+ name: 'Meguro receipt guide v24',
6283
+ title: 'Meguro receipt guide v24',
6284
+ description: 'Receipt interpretation for explicitly bounded customer-authored before and after values, including exact byte lengths, digests, and whole-code-point retained prefixes.',
6285
+ text: RECEIPT_GUIDE_V24_TEXT,
6286
+ },
6287
+ {
6288
+ topic: 'receipt-guide',
6289
+ version: RECEIPT_GUIDE_V25_VERSION,
6290
+ uri: RECEIPT_GUIDE_V25_URI,
6291
+ name: 'Meguro receipt guide v25',
6292
+ title: 'Meguro receipt guide v25',
6293
+ description: 'Receipt interpretation using customer run vocabulary while preserving machine field names.',
6294
+ text: RECEIPT_GUIDE_V25_TEXT,
6295
+ },
6296
+ { topic: 'receipt-guide', version: RECEIPT_GUIDE_V26_VERSION, uri: RECEIPT_GUIDE_V26_URI, name: 'Meguro receipt guide v26', title: 'Meguro receipt guide v26', description: 'Receipt interpretation for unhandled rejected Admin calls and narrow correction evidence.', text: RECEIPT_GUIDE_V26_TEXT },
6297
+ { topic: 'receipt-guide', version: RECEIPT_GUIDE_V27_VERSION, uri: RECEIPT_GUIDE_V27_URI, name: 'Meguro receipt guide v27', title: 'Meguro receipt guide v27', description: 'Receipt interpretation with the non-authoritative comparison card, its public path, and customer run vocabulary.', text: RECEIPT_GUIDE_V27_TEXT },
6298
+ { topic: 'receipt-guide', version: RECEIPT_GUIDE_V28_VERSION, uri: RECEIPT_GUIDE_V28_URI, name: 'Meguro receipt guide v28', title: 'Meguro receipt guide v28', description: 'Receipt interpretation with the immutable assertion-key rename boundary.', text: RECEIPT_GUIDE_V28_TEXT },
6299
+ { topic: 'receipt-guide', version: RECEIPT_GUIDE_V29_VERSION, uri: RECEIPT_GUIDE_V29_URI, name: 'Meguro receipt guide v29', title: 'Meguro receipt guide v29', description: 'Receipt interpretation with deterministic rerun guarantees and public-receipt indexing headers.', text: RECEIPT_GUIDE_V29_TEXT },
6300
+ { topic: 'receipt-guide', version: RECEIPT_GUIDE_V30_VERSION, uri: RECEIPT_GUIDE_V30_URI, name: 'Meguro receipt guide v30', title: 'Meguro receipt guide v30', description: 'Receipt interpretation with the recorded Admin API version fact and its not-recorded sentence.', text: RECEIPT_GUIDE_V30_TEXT },
6301
+ { topic: 'receipt-guide', version: RECEIPT_GUIDE_V31_VERSION, uri: RECEIPT_GUIDE_V31_URI, name: 'Meguro receipt guide v31', title: 'Meguro receipt guide v31', description: 'Receipt interpretation with the completed-run practice-store baseline reversion fact.', text: RECEIPT_GUIDE_V31_TEXT },
4870
6302
  {
4871
6303
  topic: 'gate-policy',
4872
6304
  version: GATE_POLICY_VERSION,
@@ -4918,9 +6350,12 @@ const CATALOG = buildDocumentationCatalog([
4918
6350
  uri: GATE_POLICY_V6_URI,
4919
6351
  name: 'Meguro Configured Receipt Gate policy v6',
4920
6352
  title: 'Meguro Configured Receipt Gate policy v6',
4921
- description: 'Immutable configured-policy guide naming the failing-receipt-evidence check for the single fact it decides on, with state-neutral Gate guidance.',
4922
- text: GATE_POLICY_V6_TEXT,
4923
- },
6353
+ description: 'Immutable configured-policy guide naming the failing-receipt-evidence check for the single fact it decides on, with state-neutral Gate guidance.',
6354
+ text: GATE_POLICY_V6_TEXT,
6355
+ },
6356
+ { topic: 'gate-policy', version: GATE_POLICY_V7_VERSION, uri: GATE_POLICY_V7_URI, name: 'Meguro Configured Receipt Gate policy v7', title: 'Meguro Configured Receipt Gate policy v7', description: 'Immutable Gate guide for the current unhandled rejected Admin-call assertion contract.', text: GATE_POLICY_V7_TEXT },
6357
+ { topic: 'gate-policy', version: GATE_POLICY_V8_VERSION, uri: GATE_POLICY_V8_URI, name: 'Meguro Configured Receipt Gate policy v8', title: 'Meguro Configured Receipt Gate policy v8', description: 'Pointer-only republish for the public receipt comparison card documentation generation.', text: GATE_POLICY_V8_TEXT },
6358
+ { topic: 'gate-policy', version: GATE_POLICY_V9_VERSION, uri: GATE_POLICY_V9_URI, name: 'Meguro Configured Receipt Gate policy v9', title: 'Meguro Configured Receipt Gate policy v9', description: 'Immutable Gate guide with the assertion-key rename boundary.', text: GATE_POLICY_V9_TEXT },
4924
6359
  ], CURRENT_DOCUMENTATION_CURRENCY);
4925
6360
 
4926
6361
  export function documentationResources() {
@@ -5043,10 +6478,10 @@ export function documentationToolContract() {
5043
6478
  export function receiptGuideFieldManifest() {
5044
6479
  return deepFreeze({
5045
6480
  schemas() {
5046
- return Object.keys(RECEIPT_FIELDS_V13).sort();
6481
+ return Object.keys(RECEIPT_FIELDS_V31).sort();
5047
6482
  },
5048
6483
  schemaFields(schema) {
5049
- const fields = RECEIPT_FIELDS_V13[schema];
6484
+ const fields = RECEIPT_FIELDS_V31[schema];
5050
6485
  if (!fields) throw new Error(`Receipt schema not documented: ${schema}`);
5051
6486
  return [...fields];
5052
6487
  },