meguro-mcp 0.2.12 → 0.2.13

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
@@ -15,9 +15,20 @@ const RECEIPT_GUIDE_V7_VERSION = 7;
15
15
  const RECEIPT_GUIDE_V8_VERSION = 8;
16
16
  const RECEIPT_GUIDE_V9_VERSION = 9;
17
17
  const RECEIPT_GUIDE_V10_VERSION = 10;
18
+ const RECEIPT_GUIDE_V11_VERSION = 11;
19
+ const RECEIPT_GUIDE_V12_VERSION = 12;
20
+ const RECEIPT_GUIDE_V13_VERSION = 13;
21
+ const RECEIPT_GUIDE_V14_VERSION = 14;
22
+ const RECEIPT_GUIDE_V15_VERSION = 15;
23
+ const RECEIPT_GUIDE_V16_VERSION = 16;
24
+ const RECEIPT_GUIDE_V17_VERSION = 17;
25
+ const RECEIPT_GUIDE_V18_VERSION = 18;
18
26
  const GATE_POLICY_VERSION = 1;
19
27
  const GATE_POLICY_V2_VERSION = 2;
20
28
  const GATE_POLICY_V3_VERSION = 3;
29
+ const GATE_POLICY_V4_VERSION = 4;
30
+ const GATE_POLICY_V5_VERSION = 5;
31
+ const GATE_POLICY_V6_VERSION = 6;
21
32
  const GETTING_STARTED_VERSION = 1;
22
33
  const GETTING_STARTED_V2_VERSION = 2;
23
34
  const GETTING_STARTED_LATEST_VERSION = 3;
@@ -36,6 +47,27 @@ const GETTING_STARTED_V15_VERSION = 15;
36
47
  const GETTING_STARTED_V16_VERSION = 16;
37
48
  const GETTING_STARTED_V17_VERSION = 17;
38
49
  const GETTING_STARTED_V18_VERSION = 18;
50
+ const GETTING_STARTED_V19_VERSION = 19;
51
+ const GETTING_STARTED_V20_VERSION = 20;
52
+ const GETTING_STARTED_V21_VERSION = 21;
53
+ const GETTING_STARTED_V22_VERSION = 22;
54
+ const GETTING_STARTED_V23_VERSION = 23;
55
+ const GETTING_STARTED_V24_VERSION = 24;
56
+ const GETTING_STARTED_V25_VERSION = 25;
57
+ const GETTING_STARTED_V26_VERSION = 26;
58
+ const GETTING_STARTED_V27_VERSION = 27;
59
+ const GETTING_STARTED_V28_VERSION = 28;
60
+ const GETTING_STARTED_V29_VERSION = 29;
61
+ const GETTING_STARTED_V30_VERSION = 30;
62
+ const GETTING_STARTED_V31_VERSION = 31;
63
+ const GETTING_STARTED_V32_VERSION = 32;
64
+ const GETTING_STARTED_V33_VERSION = 33;
65
+ const GETTING_STARTED_V34_VERSION = 34;
66
+ const GETTING_STARTED_V35_VERSION = 35;
67
+ const GETTING_STARTED_V36_VERSION = 36;
68
+ const GETTING_STARTED_V37_VERSION = 37;
69
+ const GETTING_STARTED_V38_VERSION = 38;
70
+ const GETTING_STARTED_V39_VERSION = 39;
39
71
  const PRODUCT_GUIDE_VERSION = 1;
40
72
  const PRODUCT_GUIDE_V2_VERSION = 2;
41
73
  const PRODUCT_GUIDE_V3_VERSION = 3;
@@ -51,6 +83,27 @@ const PRODUCT_GUIDE_V12_VERSION = 12;
51
83
  const PRODUCT_GUIDE_V13_VERSION = 13;
52
84
  const PRODUCT_GUIDE_V14_VERSION = 14;
53
85
  const PRODUCT_GUIDE_V15_VERSION = 15;
86
+ const PRODUCT_GUIDE_V16_VERSION = 16;
87
+ const PRODUCT_GUIDE_V17_VERSION = 17;
88
+ const PRODUCT_GUIDE_V18_VERSION = 18;
89
+ const PRODUCT_GUIDE_V19_VERSION = 19;
90
+ const PRODUCT_GUIDE_V20_VERSION = 20;
91
+ const PRODUCT_GUIDE_V21_VERSION = 21;
92
+ const PRODUCT_GUIDE_V22_VERSION = 22;
93
+ const PRODUCT_GUIDE_V23_VERSION = 23;
94
+ const PRODUCT_GUIDE_V24_VERSION = 24;
95
+ const PRODUCT_GUIDE_V25_VERSION = 25;
96
+ const PRODUCT_GUIDE_V26_VERSION = 26;
97
+ const PRODUCT_GUIDE_V27_VERSION = 27;
98
+ const PRODUCT_GUIDE_V28_VERSION = 28;
99
+ const PRODUCT_GUIDE_V29_VERSION = 29;
100
+ const PRODUCT_GUIDE_V30_VERSION = 30;
101
+ const PRODUCT_GUIDE_V31_VERSION = 31;
102
+ const PRODUCT_GUIDE_V32_VERSION = 32;
103
+ const PRODUCT_GUIDE_V33_VERSION = 33;
104
+ const PRODUCT_GUIDE_V34_VERSION = 34;
105
+ const PRODUCT_GUIDE_V35_VERSION = 35;
106
+ const PRODUCT_GUIDE_V36_VERSION = 36;
54
107
  const RECEIPT_GUIDE_URI = `meguro://docs/receipt-guide/v${RECEIPT_GUIDE_VERSION}`;
55
108
  const RECEIPT_GUIDE_V2_URI = `meguro://docs/receipt-guide/v${RECEIPT_GUIDE_V2_VERSION}`;
56
109
  const RECEIPT_GUIDE_V3_URI = `meguro://docs/receipt-guide/v${RECEIPT_GUIDE_V3_VERSION}`;
@@ -61,9 +114,20 @@ const RECEIPT_GUIDE_V7_URI = `meguro://docs/receipt-guide/v${RECEIPT_GUIDE_V7_VE
61
114
  const RECEIPT_GUIDE_V8_URI = `meguro://docs/receipt-guide/v${RECEIPT_GUIDE_V8_VERSION}`;
62
115
  const RECEIPT_GUIDE_V9_URI = `meguro://docs/receipt-guide/v${RECEIPT_GUIDE_V9_VERSION}`;
63
116
  const RECEIPT_GUIDE_V10_URI = `meguro://docs/receipt-guide/v${RECEIPT_GUIDE_V10_VERSION}`;
117
+ const RECEIPT_GUIDE_V11_URI = `meguro://docs/receipt-guide/v${RECEIPT_GUIDE_V11_VERSION}`;
118
+ const RECEIPT_GUIDE_V12_URI = `meguro://docs/receipt-guide/v${RECEIPT_GUIDE_V12_VERSION}`;
119
+ const RECEIPT_GUIDE_V13_URI = `meguro://docs/receipt-guide/v${RECEIPT_GUIDE_V13_VERSION}`;
120
+ const RECEIPT_GUIDE_V14_URI = `meguro://docs/receipt-guide/v${RECEIPT_GUIDE_V14_VERSION}`;
121
+ const RECEIPT_GUIDE_V15_URI = `meguro://docs/receipt-guide/v${RECEIPT_GUIDE_V15_VERSION}`;
122
+ const RECEIPT_GUIDE_V16_URI = `meguro://docs/receipt-guide/v${RECEIPT_GUIDE_V16_VERSION}`;
123
+ const RECEIPT_GUIDE_V17_URI = `meguro://docs/receipt-guide/v${RECEIPT_GUIDE_V17_VERSION}`;
124
+ const RECEIPT_GUIDE_V18_URI = `meguro://docs/receipt-guide/v${RECEIPT_GUIDE_V18_VERSION}`;
64
125
  const GATE_POLICY_URI = `meguro://docs/gate-policy/v${GATE_POLICY_VERSION}`;
65
126
  const GATE_POLICY_V2_URI = `meguro://docs/gate-policy/v${GATE_POLICY_V2_VERSION}`;
66
127
  const GATE_POLICY_V3_URI = `meguro://docs/gate-policy/v${GATE_POLICY_V3_VERSION}`;
128
+ const GATE_POLICY_V4_URI = `meguro://docs/gate-policy/v${GATE_POLICY_V4_VERSION}`;
129
+ const GATE_POLICY_V5_URI = `meguro://docs/gate-policy/v${GATE_POLICY_V5_VERSION}`;
130
+ const GATE_POLICY_V6_URI = `meguro://docs/gate-policy/v${GATE_POLICY_V6_VERSION}`;
67
131
  const GETTING_STARTED_URI = `meguro://docs/getting-started/v${GETTING_STARTED_VERSION}`;
68
132
  const GETTING_STARTED_V2_URI = `meguro://docs/getting-started/v${GETTING_STARTED_V2_VERSION}`;
69
133
  const GETTING_STARTED_LATEST_URI = `meguro://docs/getting-started/v${GETTING_STARTED_LATEST_VERSION}`;
@@ -82,6 +146,27 @@ const GETTING_STARTED_V15_URI = `meguro://docs/getting-started/v${GETTING_STARTE
82
146
  const GETTING_STARTED_V16_URI = `meguro://docs/getting-started/v${GETTING_STARTED_V16_VERSION}`;
83
147
  const GETTING_STARTED_V17_URI = `meguro://docs/getting-started/v${GETTING_STARTED_V17_VERSION}`;
84
148
  const GETTING_STARTED_V18_URI = `meguro://docs/getting-started/v${GETTING_STARTED_V18_VERSION}`;
149
+ const GETTING_STARTED_V19_URI = `meguro://docs/getting-started/v${GETTING_STARTED_V19_VERSION}`;
150
+ const GETTING_STARTED_V20_URI = `meguro://docs/getting-started/v${GETTING_STARTED_V20_VERSION}`;
151
+ const GETTING_STARTED_V21_URI = `meguro://docs/getting-started/v${GETTING_STARTED_V21_VERSION}`;
152
+ const GETTING_STARTED_V22_URI = `meguro://docs/getting-started/v${GETTING_STARTED_V22_VERSION}`;
153
+ const GETTING_STARTED_V23_URI = `meguro://docs/getting-started/v${GETTING_STARTED_V23_VERSION}`;
154
+ const GETTING_STARTED_V24_URI = `meguro://docs/getting-started/v${GETTING_STARTED_V24_VERSION}`;
155
+ const GETTING_STARTED_V25_URI = `meguro://docs/getting-started/v${GETTING_STARTED_V25_VERSION}`;
156
+ const GETTING_STARTED_V26_URI = `meguro://docs/getting-started/v${GETTING_STARTED_V26_VERSION}`;
157
+ const GETTING_STARTED_V27_URI = `meguro://docs/getting-started/v${GETTING_STARTED_V27_VERSION}`;
158
+ const GETTING_STARTED_V28_URI = `meguro://docs/getting-started/v${GETTING_STARTED_V28_VERSION}`;
159
+ const GETTING_STARTED_V29_URI = `meguro://docs/getting-started/v${GETTING_STARTED_V29_VERSION}`;
160
+ const GETTING_STARTED_V30_URI = `meguro://docs/getting-started/v${GETTING_STARTED_V30_VERSION}`;
161
+ const GETTING_STARTED_V31_URI = `meguro://docs/getting-started/v${GETTING_STARTED_V31_VERSION}`;
162
+ const GETTING_STARTED_V32_URI = `meguro://docs/getting-started/v${GETTING_STARTED_V32_VERSION}`;
163
+ const GETTING_STARTED_V33_URI = `meguro://docs/getting-started/v${GETTING_STARTED_V33_VERSION}`;
164
+ const GETTING_STARTED_V34_URI = `meguro://docs/getting-started/v${GETTING_STARTED_V34_VERSION}`;
165
+ const GETTING_STARTED_V35_URI = `meguro://docs/getting-started/v${GETTING_STARTED_V35_VERSION}`;
166
+ const GETTING_STARTED_V36_URI = `meguro://docs/getting-started/v${GETTING_STARTED_V36_VERSION}`;
167
+ const GETTING_STARTED_V37_URI = `meguro://docs/getting-started/v${GETTING_STARTED_V37_VERSION}`;
168
+ const GETTING_STARTED_V38_URI = `meguro://docs/getting-started/v${GETTING_STARTED_V38_VERSION}`;
169
+ const GETTING_STARTED_V39_URI = `meguro://docs/getting-started/v${GETTING_STARTED_V39_VERSION}`;
85
170
  const PRODUCT_GUIDE_URI = `meguro://docs/product-guide/v${PRODUCT_GUIDE_VERSION}`;
86
171
  const PRODUCT_GUIDE_V2_URI = `meguro://docs/product-guide/v${PRODUCT_GUIDE_V2_VERSION}`;
87
172
  const PRODUCT_GUIDE_V3_URI = `meguro://docs/product-guide/v${PRODUCT_GUIDE_V3_VERSION}`;
@@ -97,6 +182,27 @@ const PRODUCT_GUIDE_V12_URI = `meguro://docs/product-guide/v${PRODUCT_GUIDE_V12_
97
182
  const PRODUCT_GUIDE_V13_URI = `meguro://docs/product-guide/v${PRODUCT_GUIDE_V13_VERSION}`;
98
183
  const PRODUCT_GUIDE_V14_URI = `meguro://docs/product-guide/v${PRODUCT_GUIDE_V14_VERSION}`;
99
184
  const PRODUCT_GUIDE_V15_URI = `meguro://docs/product-guide/v${PRODUCT_GUIDE_V15_VERSION}`;
185
+ const PRODUCT_GUIDE_V16_URI = `meguro://docs/product-guide/v${PRODUCT_GUIDE_V16_VERSION}`;
186
+ const PRODUCT_GUIDE_V17_URI = `meguro://docs/product-guide/v${PRODUCT_GUIDE_V17_VERSION}`;
187
+ const PRODUCT_GUIDE_V18_URI = `meguro://docs/product-guide/v${PRODUCT_GUIDE_V18_VERSION}`;
188
+ const PRODUCT_GUIDE_V19_URI = `meguro://docs/product-guide/v${PRODUCT_GUIDE_V19_VERSION}`;
189
+ const PRODUCT_GUIDE_V20_URI = `meguro://docs/product-guide/v${PRODUCT_GUIDE_V20_VERSION}`;
190
+ const PRODUCT_GUIDE_V21_URI = `meguro://docs/product-guide/v${PRODUCT_GUIDE_V21_VERSION}`;
191
+ const PRODUCT_GUIDE_V22_URI = `meguro://docs/product-guide/v${PRODUCT_GUIDE_V22_VERSION}`;
192
+ const PRODUCT_GUIDE_V23_URI = `meguro://docs/product-guide/v${PRODUCT_GUIDE_V23_VERSION}`;
193
+ const PRODUCT_GUIDE_V24_URI = `meguro://docs/product-guide/v${PRODUCT_GUIDE_V24_VERSION}`;
194
+ const PRODUCT_GUIDE_V25_URI = `meguro://docs/product-guide/v${PRODUCT_GUIDE_V25_VERSION}`;
195
+ const PRODUCT_GUIDE_V26_URI = `meguro://docs/product-guide/v${PRODUCT_GUIDE_V26_VERSION}`;
196
+ const PRODUCT_GUIDE_V27_URI = `meguro://docs/product-guide/v${PRODUCT_GUIDE_V27_VERSION}`;
197
+ const PRODUCT_GUIDE_V28_URI = `meguro://docs/product-guide/v${PRODUCT_GUIDE_V28_VERSION}`;
198
+ const PRODUCT_GUIDE_V29_URI = `meguro://docs/product-guide/v${PRODUCT_GUIDE_V29_VERSION}`;
199
+ const PRODUCT_GUIDE_V30_URI = `meguro://docs/product-guide/v${PRODUCT_GUIDE_V30_VERSION}`;
200
+ const PRODUCT_GUIDE_V31_URI = `meguro://docs/product-guide/v${PRODUCT_GUIDE_V31_VERSION}`;
201
+ const PRODUCT_GUIDE_V32_URI = `meguro://docs/product-guide/v${PRODUCT_GUIDE_V32_VERSION}`;
202
+ const PRODUCT_GUIDE_V33_URI = `meguro://docs/product-guide/v${PRODUCT_GUIDE_V33_VERSION}`;
203
+ const PRODUCT_GUIDE_V34_URI = `meguro://docs/product-guide/v${PRODUCT_GUIDE_V34_VERSION}`;
204
+ const PRODUCT_GUIDE_V35_URI = `meguro://docs/product-guide/v${PRODUCT_GUIDE_V35_VERSION}`;
205
+ const PRODUCT_GUIDE_V36_URI = `meguro://docs/product-guide/v${PRODUCT_GUIDE_V36_VERSION}`;
100
206
  export const DOCUMENTATION_INDEX_URI = 'meguro://docs/index/v1';
101
207
  export const DOCUMENTATION_INDEX_V2_URI = 'meguro://docs/index/v2';
102
208
  export const DOCUMENTATION_INDEX_V3_URI = 'meguro://docs/index/v3';
@@ -111,6 +217,29 @@ export const DOCUMENTATION_INDEX_V11_URI = 'meguro://docs/index/v11';
111
217
  export const DOCUMENTATION_INDEX_V12_URI = 'meguro://docs/index/v12';
112
218
  export const DOCUMENTATION_INDEX_V13_URI = 'meguro://docs/index/v13';
113
219
  export const DOCUMENTATION_INDEX_V14_URI = 'meguro://docs/index/v14';
220
+ export const DOCUMENTATION_INDEX_V15_URI = 'meguro://docs/index/v15';
221
+ export const DOCUMENTATION_INDEX_V16_URI = 'meguro://docs/index/v16';
222
+ export const DOCUMENTATION_INDEX_V17_URI = 'meguro://docs/index/v17';
223
+ export const DOCUMENTATION_INDEX_V18_URI = 'meguro://docs/index/v18';
224
+ export const DOCUMENTATION_INDEX_V19_URI = 'meguro://docs/index/v19';
225
+ export const DOCUMENTATION_INDEX_V20_URI = 'meguro://docs/index/v20';
226
+ export const DOCUMENTATION_INDEX_V21_URI = 'meguro://docs/index/v21';
227
+ export const DOCUMENTATION_INDEX_V22_URI = 'meguro://docs/index/v22';
228
+ export const DOCUMENTATION_INDEX_V23_URI = 'meguro://docs/index/v23';
229
+ export const DOCUMENTATION_INDEX_V24_URI = 'meguro://docs/index/v24';
230
+ export const DOCUMENTATION_INDEX_V25_URI = 'meguro://docs/index/v25';
231
+ export const DOCUMENTATION_INDEX_V26_URI = 'meguro://docs/index/v26';
232
+ export const DOCUMENTATION_INDEX_V27_URI = 'meguro://docs/index/v27';
233
+ export const DOCUMENTATION_INDEX_V28_URI = 'meguro://docs/index/v28';
234
+ export const DOCUMENTATION_INDEX_V29_URI = 'meguro://docs/index/v29';
235
+ export const DOCUMENTATION_INDEX_V30_URI = 'meguro://docs/index/v30';
236
+ export const DOCUMENTATION_INDEX_V31_URI = 'meguro://docs/index/v31';
237
+ export const DOCUMENTATION_INDEX_V32_URI = 'meguro://docs/index/v32';
238
+ export const DOCUMENTATION_INDEX_V33_URI = 'meguro://docs/index/v33';
239
+ export const DOCUMENTATION_INDEX_V34_URI = 'meguro://docs/index/v34';
240
+ export const DOCUMENTATION_INDEX_V35_URI = 'meguro://docs/index/v35';
241
+ export const DOCUMENTATION_INDEX_V36_URI = 'meguro://docs/index/v36';
242
+ export const DOCUMENTATION_INDEX_V37_URI = 'meguro://docs/index/v37';
114
243
 
115
244
  const DOCUMENTATION_CURRENCY_V1 = deepFreeze({
116
245
  indexVersion: 1,
@@ -252,7 +381,257 @@ const DOCUMENTATION_CURRENCY_V14 = deepFreeze({
252
381
  'receipt-guide': RECEIPT_GUIDE_V10_URI,
253
382
  },
254
383
  });
255
- const CURRENT_DOCUMENTATION_CURRENCY = DOCUMENTATION_CURRENCY_V14;
384
+ const DOCUMENTATION_CURRENCY_V15 = deepFreeze({
385
+ indexVersion: 15,
386
+ currentUriByTopic: {
387
+ 'gate-policy': GATE_POLICY_V3_URI,
388
+ 'getting-started': GETTING_STARTED_V19_URI,
389
+ index: DOCUMENTATION_INDEX_V15_URI,
390
+ 'product-guide': PRODUCT_GUIDE_V16_URI,
391
+ 'receipt-guide': RECEIPT_GUIDE_V10_URI,
392
+ },
393
+ });
394
+ const DOCUMENTATION_CURRENCY_V16 = deepFreeze({
395
+ indexVersion: 16,
396
+ currentUriByTopic: {
397
+ 'gate-policy': GATE_POLICY_V3_URI,
398
+ 'getting-started': GETTING_STARTED_V20_URI,
399
+ index: DOCUMENTATION_INDEX_V16_URI,
400
+ 'product-guide': PRODUCT_GUIDE_V17_URI,
401
+ 'receipt-guide': RECEIPT_GUIDE_V10_URI,
402
+ },
403
+ });
404
+ const DOCUMENTATION_CURRENCY_V17 = deepFreeze({
405
+ indexVersion: 17,
406
+ currentUriByTopic: {
407
+ 'gate-policy': GATE_POLICY_V3_URI,
408
+ 'getting-started': GETTING_STARTED_V21_URI,
409
+ index: DOCUMENTATION_INDEX_V17_URI,
410
+ 'product-guide': PRODUCT_GUIDE_V18_URI,
411
+ 'receipt-guide': RECEIPT_GUIDE_V10_URI,
412
+ },
413
+ });
414
+ const DOCUMENTATION_CURRENCY_V18 = deepFreeze({
415
+ indexVersion: 18,
416
+ currentUriByTopic: {
417
+ 'gate-policy': GATE_POLICY_V3_URI,
418
+ 'getting-started': GETTING_STARTED_V22_URI,
419
+ index: DOCUMENTATION_INDEX_V18_URI,
420
+ 'product-guide': PRODUCT_GUIDE_V19_URI,
421
+ 'receipt-guide': RECEIPT_GUIDE_V11_URI,
422
+ },
423
+ });
424
+ const DOCUMENTATION_CURRENCY_V19 = deepFreeze({
425
+ indexVersion: 19,
426
+ currentUriByTopic: {
427
+ 'gate-policy': GATE_POLICY_V3_URI,
428
+ 'getting-started': GETTING_STARTED_V23_URI,
429
+ index: DOCUMENTATION_INDEX_V19_URI,
430
+ 'product-guide': PRODUCT_GUIDE_V20_URI,
431
+ 'receipt-guide': RECEIPT_GUIDE_V11_URI,
432
+ },
433
+ });
434
+ const DOCUMENTATION_CURRENCY_V20 = deepFreeze({
435
+ indexVersion: 20,
436
+ currentUriByTopic: {
437
+ 'gate-policy': GATE_POLICY_V3_URI,
438
+ 'getting-started': GETTING_STARTED_V24_URI,
439
+ index: DOCUMENTATION_INDEX_V20_URI,
440
+ 'product-guide': PRODUCT_GUIDE_V21_URI,
441
+ 'receipt-guide': RECEIPT_GUIDE_V12_URI,
442
+ },
443
+ });
444
+ const DOCUMENTATION_CURRENCY_V21 = deepFreeze({
445
+ indexVersion: 21,
446
+ currentUriByTopic: {
447
+ 'gate-policy': GATE_POLICY_V3_URI,
448
+ 'getting-started': GETTING_STARTED_V25_URI,
449
+ index: DOCUMENTATION_INDEX_V21_URI,
450
+ 'product-guide': PRODUCT_GUIDE_V22_URI,
451
+ 'receipt-guide': RECEIPT_GUIDE_V13_URI,
452
+ },
453
+ });
454
+ const DOCUMENTATION_CURRENCY_V22 = deepFreeze({
455
+ indexVersion: 22,
456
+ currentUriByTopic: {
457
+ 'gate-policy': GATE_POLICY_V3_URI,
458
+ 'getting-started': GETTING_STARTED_V26_URI,
459
+ index: DOCUMENTATION_INDEX_V22_URI,
460
+ 'product-guide': PRODUCT_GUIDE_V23_URI,
461
+ 'receipt-guide': RECEIPT_GUIDE_V13_URI,
462
+ },
463
+ });
464
+ const DOCUMENTATION_CURRENCY_V23 = deepFreeze({
465
+ indexVersion: 23,
466
+ currentUriByTopic: {
467
+ 'gate-policy': GATE_POLICY_V4_URI,
468
+ 'getting-started': GETTING_STARTED_V27_URI,
469
+ index: DOCUMENTATION_INDEX_V23_URI,
470
+ 'product-guide': PRODUCT_GUIDE_V24_URI,
471
+ 'receipt-guide': RECEIPT_GUIDE_V14_URI,
472
+ },
473
+ });
474
+ const DOCUMENTATION_CURRENCY_V24 = deepFreeze({
475
+ indexVersion: 24,
476
+ currentUriByTopic: {
477
+ 'gate-policy': GATE_POLICY_V4_URI,
478
+ 'getting-started': GETTING_STARTED_V28_URI,
479
+ index: DOCUMENTATION_INDEX_V24_URI,
480
+ 'product-guide': PRODUCT_GUIDE_V25_URI,
481
+ 'receipt-guide': RECEIPT_GUIDE_V14_URI,
482
+ },
483
+ });
484
+ const DOCUMENTATION_CURRENCY_V25 = deepFreeze({
485
+ indexVersion: 25,
486
+ currentUriByTopic: {
487
+ 'gate-policy': GATE_POLICY_V4_URI,
488
+ 'getting-started': GETTING_STARTED_V29_URI,
489
+ index: DOCUMENTATION_INDEX_V25_URI,
490
+ 'product-guide': PRODUCT_GUIDE_V26_URI,
491
+ 'receipt-guide': RECEIPT_GUIDE_V14_URI,
492
+ },
493
+ });
494
+ const DOCUMENTATION_CURRENCY_V26 = deepFreeze({
495
+ indexVersion: 26,
496
+ currentUriByTopic: {
497
+ 'gate-policy': GATE_POLICY_V4_URI,
498
+ 'getting-started': GETTING_STARTED_V30_URI,
499
+ index: DOCUMENTATION_INDEX_V26_URI,
500
+ 'product-guide': PRODUCT_GUIDE_V27_URI,
501
+ 'receipt-guide': RECEIPT_GUIDE_V14_URI,
502
+ },
503
+ });
504
+ // MEG-880: one new current generation carrying the admitted-recipe facts. Prior generations keep
505
+ // their exact bytes; guidance is never edited in place.
506
+ const DOCUMENTATION_CURRENCY_V27 = deepFreeze({
507
+ indexVersion: 27,
508
+ currentUriByTopic: {
509
+ 'gate-policy': GATE_POLICY_V4_URI,
510
+ 'getting-started': GETTING_STARTED_V31_URI,
511
+ index: DOCUMENTATION_INDEX_V27_URI,
512
+ 'product-guide': PRODUCT_GUIDE_V28_URI,
513
+ 'receipt-guide': RECEIPT_GUIDE_V14_URI,
514
+ },
515
+ });
516
+ // MEG-907: one new current generation carrying the ruled "When not to use Meguro" boundary.
517
+ // Prior generations keep their exact bytes; the section is minted, never edited in place.
518
+ const DOCUMENTATION_CURRENCY_V28 = deepFreeze({
519
+ indexVersion: 28,
520
+ currentUriByTopic: {
521
+ 'gate-policy': GATE_POLICY_V4_URI,
522
+ 'getting-started': GETTING_STARTED_V32_URI,
523
+ index: DOCUMENTATION_INDEX_V28_URI,
524
+ 'product-guide': PRODUCT_GUIDE_V29_URI,
525
+ 'receipt-guide': RECEIPT_GUIDE_V14_URI,
526
+ },
527
+ });
528
+ // MEG-1034: one new current generation publishing the v1 served/internal-only/deferred vertical
529
+ // boundary. Prior generations keep their exact bytes; the boundary is minted, never edited in place.
530
+ const DOCUMENTATION_CURRENCY_V29 = deepFreeze({
531
+ indexVersion: 29,
532
+ currentUriByTopic: {
533
+ 'gate-policy': GATE_POLICY_V4_URI,
534
+ 'getting-started': GETTING_STARTED_V33_URI,
535
+ index: DOCUMENTATION_INDEX_V29_URI,
536
+ 'product-guide': PRODUCT_GUIDE_V30_URI,
537
+ 'receipt-guide': RECEIPT_GUIDE_V15_URI,
538
+ },
539
+ });
540
+ // MEG-1058: one new current generation publishing the template delivery tier — templates_list is
541
+ // the compact catalog and template_get is the authoritative detail hop. Prior generations keep
542
+ // their exact bytes; the new sequence is minted, never edited in place.
543
+ const DOCUMENTATION_CURRENCY_V30 = deepFreeze({
544
+ indexVersion: 30,
545
+ currentUriByTopic: {
546
+ 'gate-policy': GATE_POLICY_V4_URI,
547
+ 'getting-started': GETTING_STARTED_V34_URI,
548
+ index: DOCUMENTATION_INDEX_V30_URI,
549
+ 'product-guide': PRODUCT_GUIDE_V31_URI,
550
+ 'receipt-guide': RECEIPT_GUIDE_V15_URI,
551
+ },
552
+ });
553
+ // MEG-1065: the public run-receipt Markdown representation is already immutable at issuance;
554
+ // publish that in-band contract as one new current generation without rewriting prior guidance.
555
+ const DOCUMENTATION_CURRENCY_V31 = deepFreeze({
556
+ indexVersion: 31,
557
+ currentUriByTopic: {
558
+ 'gate-policy': GATE_POLICY_V4_URI,
559
+ 'getting-started': GETTING_STARTED_V34_URI,
560
+ index: DOCUMENTATION_INDEX_V31_URI,
561
+ 'product-guide': PRODUCT_GUIDE_V31_URI,
562
+ 'receipt-guide': RECEIPT_GUIDE_V16_URI,
563
+ },
564
+ });
565
+ // MEG-967: the winback operating cost is published under its corrected name.
566
+ const DOCUMENTATION_CURRENCY_V32 = deepFreeze({
567
+ indexVersion: 32,
568
+ currentUriByTopic: {
569
+ 'gate-policy': GATE_POLICY_V4_URI,
570
+ 'getting-started': GETTING_STARTED_V34_URI,
571
+ index: DOCUMENTATION_INDEX_V32_URI,
572
+ 'product-guide': PRODUCT_GUIDE_V31_URI,
573
+ 'receipt-guide': RECEIPT_GUIDE_V17_URI,
574
+ },
575
+ });
576
+ // MEG-1074: publish canonical MCP request forms without rewriting historical guidance.
577
+ const DOCUMENTATION_CURRENCY_V33 = deepFreeze({
578
+ indexVersion: 33,
579
+ currentUriByTopic: {
580
+ 'gate-policy': GATE_POLICY_V4_URI,
581
+ 'getting-started': GETTING_STARTED_V35_URI,
582
+ index: DOCUMENTATION_INDEX_V33_URI,
583
+ 'product-guide': PRODUCT_GUIDE_V32_URI,
584
+ 'receipt-guide': RECEIPT_GUIDE_V17_URI,
585
+ },
586
+ });
587
+ // MEG-1107: mint one internally consistent current generation. The prior product guide and Gate
588
+ // policy each carried stale current-version pointers; every prior resource keeps its exact bytes.
589
+ const DOCUMENTATION_CURRENCY_V34 = deepFreeze({
590
+ indexVersion: 34,
591
+ currentUriByTopic: {
592
+ 'gate-policy': GATE_POLICY_V5_URI,
593
+ 'getting-started': GETTING_STARTED_V36_URI,
594
+ index: DOCUMENTATION_INDEX_V34_URI,
595
+ 'product-guide': PRODUCT_GUIDE_V33_URI,
596
+ 'receipt-guide': RECEIPT_GUIDE_V17_URI,
597
+ },
598
+ });
599
+ // MEG-1129: publish a coherent successor after correcting only Getting Started's canonical
600
+ // discovery-first ordinals. Product Guide and index advance together so all current pointers agree.
601
+ const DOCUMENTATION_CURRENCY_V35 = deepFreeze({
602
+ indexVersion: 35,
603
+ currentUriByTopic: {
604
+ 'gate-policy': GATE_POLICY_V5_URI,
605
+ 'getting-started': GETTING_STARTED_V37_URI,
606
+ index: DOCUMENTATION_INDEX_V35_URI,
607
+ 'product-guide': PRODUCT_GUIDE_V34_URI,
608
+ 'receipt-guide': RECEIPT_GUIDE_V17_URI,
609
+ },
610
+ });
611
+ // MEG-1204: publish one truthful generation. The Gate check is renamed for the only fact it
612
+ // decides on, the mutable Gate-absence claim leaves every current document, and the receipt guide's
613
+ // generated list is republished as an honest field index. Every prior resource keeps its bytes.
614
+ const DOCUMENTATION_CURRENCY_V36 = deepFreeze({
615
+ indexVersion: 36,
616
+ currentUriByTopic: {
617
+ 'gate-policy': GATE_POLICY_V6_URI,
618
+ 'getting-started': GETTING_STARTED_V38_URI,
619
+ index: DOCUMENTATION_INDEX_V36_URI,
620
+ 'product-guide': PRODUCT_GUIDE_V35_URI,
621
+ 'receipt-guide': RECEIPT_GUIDE_V18_URI,
622
+ },
623
+ });
624
+ const DOCUMENTATION_CURRENCY_V37 = deepFreeze({
625
+ indexVersion: 37,
626
+ currentUriByTopic: {
627
+ 'gate-policy': GATE_POLICY_V6_URI,
628
+ 'getting-started': GETTING_STARTED_V39_URI,
629
+ index: DOCUMENTATION_INDEX_V37_URI,
630
+ 'product-guide': PRODUCT_GUIDE_V36_URI,
631
+ 'receipt-guide': RECEIPT_GUIDE_V18_URI,
632
+ },
633
+ });
634
+ const CURRENT_DOCUMENTATION_CURRENCY = DOCUMENTATION_CURRENCY_V37;
256
635
 
257
636
  function documentationVersionFromUri(uri) {
258
637
  const match = /\/v([1-9][0-9]*)$/u.exec(uri);
@@ -282,7 +661,7 @@ const CURRENT_RECEIPT_GUIDE_URI = CURRENT_DOCUMENTATION_CURRENCY.currentUriByTop
282
661
  const CURRENT_GATE_POLICY_URI = CURRENT_DOCUMENTATION_CURRENCY.currentUriByTopic['gate-policy'];
283
662
  const CURRENT_INDEX_URI = CURRENT_DOCUMENTATION_CURRENCY.currentUriByTopic.index;
284
663
  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.`;
285
- 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)} })\`; 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}\`.`;
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}\`.`;
286
665
 
287
666
  function configuredDashboardOrigin(dashboardUrl) {
288
667
  const configured = String(dashboardUrl ?? '').trim();
@@ -985,6 +1364,54 @@ const RECEIPT_FIELDS_V10 = deepFreeze({
985
1364
  ]),
986
1365
  });
987
1366
 
1367
+ const RECEIPT_FIELDS_V11 = deepFreeze({
1368
+ ...RECEIPT_FIELDS_V10,
1369
+ 'meguro.shared-receipt.v2': stableFields([
1370
+ ...RECEIPT_FIELDS_V10['meguro.shared-receipt.v2'],
1371
+ 'changes[].delta',
1372
+ 'changes[].entityType',
1373
+ 'changes[].epistemic',
1374
+ 'changes[].source',
1375
+ 'changes[].unit',
1376
+ ]),
1377
+ });
1378
+
1379
+ const TEMPLATE_EVENT_RESOLUTION_FIELDS = Object.freeze([
1380
+ 'eventResolution.classification',
1381
+ 'eventResolution.evaluationHorizonDays',
1382
+ 'eventResolution.eventWindow.basis',
1383
+ 'eventResolution.eventWindow.endDay',
1384
+ 'eventResolution.eventWindow.key',
1385
+ 'eventResolution.eventWindow.label',
1386
+ 'eventResolution.eventWindow.startDay',
1387
+ 'eventResolution.measuredHorizon.basis',
1388
+ 'eventResolution.measuredHorizon.measuredDays',
1389
+ 'eventResolution.measuredHorizon.plannedDays',
1390
+ 'eventResolution.measuredHorizon.ranToPlannedEnd',
1391
+ 'eventResolution.measuredHorizon.worldDays.fromDay',
1392
+ 'eventResolution.measuredHorizon.worldDays.plannedToDay',
1393
+ 'eventResolution.measuredHorizon.worldDays.toDay',
1394
+ 'eventResolution.reason',
1395
+ 'eventResolution.schemaVersion',
1396
+ 'eventResolution.source.templateKey',
1397
+ 'eventResolution.source.templateLabel',
1398
+ 'eventResolution.source.templateRevision',
1399
+ 'eventResolution.status',
1400
+ ]);
1401
+
1402
+ const RECEIPT_FIELDS_V13 = deepFreeze({
1403
+ ...RECEIPT_FIELDS_V11,
1404
+ 'meguro.shared-receipt.v2': stableFields([
1405
+ ...RECEIPT_FIELDS_V11['meguro.shared-receipt.v2'],
1406
+ ...TEMPLATE_EVENT_RESOLUTION_FIELDS,
1407
+ ]),
1408
+ 'meguro.hosted-impact-report.v1': stableFields([
1409
+ ...RECEIPT_FIELDS_V11['meguro.hosted-impact-report.v1']
1410
+ .filter((field) => !field.startsWith('eventResolution.events[]')),
1411
+ ...TEMPLATE_EVENT_RESOLUTION_FIELDS,
1412
+ ]),
1413
+ });
1414
+
988
1415
  const FIELD_MEANINGS = Object.freeze({
989
1416
  schemaVersion: 'Selects the immutable wire contract used to interpret the remaining fields.',
990
1417
  evidenceContext: 'Carries the declared subject, attempt history, and world provenance without verifying a customer-declared build identity.',
@@ -1236,6 +1663,20 @@ export const GATE_POLICY_V3_CHECKS = deepFreeze(GATE_POLICY_V1_CHECKS.map((check
1236
1663
  flip: absoluteGateVerdictFactText(check.flip),
1237
1664
  })));
1238
1665
 
1666
+ // MEG-1204: the first check's only policy input, citation, threshold, and flip basis is
1667
+ // `facts.summary.failed`. Naming it for blocked writes and errors claimed two evidence kinds the
1668
+ // policy never reads; `facts.rows[].rejectedCalls` corroborates a failing row without deciding it.
1669
+ // Documentation versions 1 through 5 keep their original bytes under the earlier name.
1670
+ export const GATE_POLICY_V6_CHECKS = deepFreeze(GATE_POLICY_V3_CHECKS.map((check) => (
1671
+ check.name === 'blocked-write and error evidence'
1672
+ ? {
1673
+ ...check,
1674
+ name: 'failing receipt evidence',
1675
+ flip: 'a no-go flips only when later immutable receipt evidence establishes no failing receipt row, making facts.summary.failed = 0',
1676
+ }
1677
+ : { ...check }
1678
+ )));
1679
+
1239
1680
  const GATE_POLICY_TEXT = `# Meguro Gate policy v1
1240
1681
 
1241
1682
  Published URI: \`${GATE_POLICY_URI}\`
@@ -1886,6 +2327,11 @@ const PRODUCT_GUIDE_V10_TEXT = PRODUCT_GUIDE_V9_TEXT
1886
2327
  .replaceAll(GETTING_STARTED_V12_URI, GETTING_STARTED_V13_URI)
1887
2328
  .replaceAll(DOCUMENTATION_INDEX_V8_URI, DOCUMENTATION_INDEX_V9_URI)
1888
2329
  .replace('## Core nouns', `${ADMIN_EXECUTION_PREFLIGHT_GUIDANCE_TEXT}\n\n## Core nouns`);
2330
+ // MEG-889: the superseded sentence, and the one newly minted current documents carry instead.
2331
+ // Prior documents keep the bytes they published; the correction only moves forward.
2332
+ const STALE_COMPARE_QUANTITY_SUPERSEDED_TEXT = 'a stale value continues to return\n`COMPARE_QUANTITY_STALE` and must be followed by a fresh read.';
2333
+ const STALE_CHANGE_FROM_QUANTITY_TEXT = 'a stale value returns\n`CHANGE_FROM_QUANTITY_STALE` and must be followed by a fresh read. That refusal is\nattributed to your request, not to a modeled store rule, so predeclare it with the exact\n`readBeforeWrite.staleCursorExpectedRefusal` facts rather than restating a reason or a layer.';
2334
+
1889
2335
  const PRACTICE_RUN_LIFECYCLE_GUIDANCE_TEXT = `## Practice-run state, evidence, and terminal confirmation
1890
2336
 
1891
2337
  Every \`practice_run_start\` and \`practice_run_status\` response carries one machine-readable
@@ -1958,10 +2404,11 @@ const PRODUCT_GUIDE_V12_TEXT = PRODUCT_GUIDE_V11_TEXT
1958
2404
  .replace('## Core nouns', `${HOSTED_OAUTH_AUTHORITY_LIFECYCLE_GUIDANCE_TEXT}\n\n## Core nouns`);
1959
2405
  const RETURN_RESOLUTION_EVIDENCE_GUIDANCE_TEXT = `## Return resolution and evidence accounting
1960
2406
 
1961
- Return approval records policy approval only; it has no refund or store-credit economics. A cash
1962
- refund is an explicit idempotent \`refundCreate\` resolution. Return-linked store credit is a distinct
1963
- idempotent \`returnRefund\` resolution and never routes through SKU-linked loyalty credit. The two
1964
- financial resolutions are mutually exclusive for one return.
2407
+ Return approval records policy approval only; it has no refund or store-credit economics.
2408
+ Return-linked cash is an explicit idempotent \`returnRefund(returnRefundInput:)\` resolution. Ordinary
2409
+ order cash and store credit are \`refundCreate(input:)\` resolutions; \`RefundInput.note\` is opaque
2410
+ customer text and never selects or changes a Return. The two financial resolutions are
2411
+ mutually exclusive for one return.
1965
2412
 
1966
2413
  Receipt and Impact footprints keep four distinct counts. \`acceptedMutationCalls\` counts accepted
1967
2414
  mutation invocations, including safe idempotent replays. \`rejectedMutationCalls\` counts refused
@@ -2046,6 +2493,518 @@ const PRODUCT_GUIDE_V15_TEXT = PRODUCT_GUIDE_V14_TEXT
2046
2493
  .replace(DOCUMENTATION_V13_VERSION_LABELS_TEXT, DOCUMENTATION_V14_VERSION_LABELS_TEXT)
2047
2494
  .replaceAll(GETTING_STARTED_V17_URI, GETTING_STARTED_V18_URI)
2048
2495
  .replaceAll(DOCUMENTATION_INDEX_V13_URI, DOCUMENTATION_INDEX_V14_URI);
2496
+ const ORDINARY_STORE_HISTORY_DEFAULT_GUIDANCE_TEXT = PER_STORE_HISTORY_GUIDANCE_TEXT
2497
+ .replace(
2498
+ `An ordinary newly created practice store from \`store_create\` currently begins with zero history.
2499
+ Zero history is a planning fact, not a defect: choose a scenario that does not require pre-existing
2500
+ events, or select a store whose live provenance reports enough history for the intended evaluation.
2501
+ The server-owned seeded sample is a distinct provisioning lane and currently reports 90 days. That
2502
+ is today's sample fact, not a universal promise: never assume a future sample has 90 days; read its
2503
+ live provenance.`,
2504
+ `An ordinary newly created practice store from \`store_create\` receives 120 days of queryable
2505
+ history by server default. The direct HTTP creation API may supply an explicit \`warmupDays\` value;
2506
+ that explicit value overrides the default and remains bounded by the store span. \`store_create\`
2507
+ does not expose that override. The server-owned seeded sample is a distinct provisioning lane and
2508
+ currently reports its explicit 90-day span. That is today's sample fact, not a universal promise:
2509
+ never assume a future sample has 90 days; read its live provenance.`,
2510
+ )
2511
+ .replace(
2512
+ `A tier \`historyDays\` value does not authorize nonzero warmup for an ordinary store. Ordinary-store
2513
+ warmup remains unchanged and requires a separate founder-signed amendment.`,
2514
+ `A tier \`historyDays\` value is not the creation authority. Ordinary-store warmup comes from the
2515
+ single server-owned creation default or an explicit direct-API override.`,
2516
+ );
2517
+ const DOCUMENTATION_V15_VERSION_LABELS_TEXT = versionLabelsText(DOCUMENTATION_CURRENCY_V15);
2518
+ const DOCUMENTATION_V15_DEEPER_DOCUMENTATION_TEXT = deeperDocumentationText(DOCUMENTATION_CURRENCY_V15);
2519
+ const GETTING_STARTED_V19_TEXT = GETTING_STARTED_V18_TEXT
2520
+ .replace('# Getting started with Meguro v18', '# Getting started with Meguro v19')
2521
+ .replace('Published URI: `' + GETTING_STARTED_V18_URI + '`', 'Published URI: `' + GETTING_STARTED_V19_URI + '`')
2522
+ .replace(DOCUMENTATION_V14_VERSION_LABELS_TEXT, DOCUMENTATION_V15_VERSION_LABELS_TEXT)
2523
+ .replace(DOCUMENTATION_V14_DEEPER_DOCUMENTATION_TEXT, DOCUMENTATION_V15_DEEPER_DOCUMENTATION_TEXT)
2524
+ .replace(PER_STORE_HISTORY_GUIDANCE_TEXT, ORDINARY_STORE_HISTORY_DEFAULT_GUIDANCE_TEXT);
2525
+ const PRODUCT_GUIDE_V16_TEXT = PRODUCT_GUIDE_V15_TEXT
2526
+ .replace('# Meguro product guide v15', '# Meguro product guide v16')
2527
+ .replace('Published URI: `' + PRODUCT_GUIDE_V15_URI + '`', 'Published URI: `' + PRODUCT_GUIDE_V16_URI + '`')
2528
+ .replace(DOCUMENTATION_V14_VERSION_LABELS_TEXT, DOCUMENTATION_V15_VERSION_LABELS_TEXT)
2529
+ .replaceAll(GETTING_STARTED_V18_URI, GETTING_STARTED_V19_URI)
2530
+ .replaceAll(DOCUMENTATION_INDEX_V14_URI, DOCUMENTATION_INDEX_V15_URI)
2531
+ .replace(PER_STORE_HISTORY_GUIDANCE_TEXT, ORDINARY_STORE_HISTORY_DEFAULT_GUIDANCE_TEXT);
2532
+ const SAMPLE_ONBOARDING_TRUTH_TEXT = `An ordinary conclusion is metered exactly once. The live seeded sample is a free onboarding run on
2533
+ an ordinary, fully interrogable practice store. Its account-owned onboarding grant waives the active-
2534
+ store slot and names the one free attempt; after that attempt is consumed, every run on the sample
2535
+ store meters normally.
2536
+
2537
+ Hide removes the sample store only from the Console fleet. Connected agents can still discover,
2538
+ query, and use that same store through MCP. The account's sample claim, the original run coordinate,
2539
+ and its receipt remain permanent; hiding, showing, or retrying provisioning cannot create another
2540
+ free store or run.`;
2541
+ const DOCUMENTATION_V16_VERSION_LABELS_TEXT = versionLabelsText(DOCUMENTATION_CURRENCY_V16);
2542
+ const DOCUMENTATION_V16_DEEPER_DOCUMENTATION_TEXT = deeperDocumentationText(DOCUMENTATION_CURRENCY_V16);
2543
+ const GETTING_STARTED_V20_TEXT = GETTING_STARTED_V19_TEXT
2544
+ .replace('# Getting started with Meguro v19', '# Getting started with Meguro v20')
2545
+ .replace('Published URI: `' + GETTING_STARTED_V19_URI + '`', 'Published URI: `' + GETTING_STARTED_V20_URI + '`')
2546
+ .replace(DOCUMENTATION_V15_VERSION_LABELS_TEXT, DOCUMENTATION_V16_VERSION_LABELS_TEXT)
2547
+ .replace(DOCUMENTATION_V15_DEEPER_DOCUMENTATION_TEXT, DOCUMENTATION_V16_DEEPER_DOCUMENTATION_TEXT)
2548
+ .replace(
2549
+ `An ordinary conclusion is metered exactly once. The server-owned auto-provisioned sample run
2550
+ is exempt under its explicit provisioned-sample classification; do not infer that exemption for an
2551
+ ordinary store or run.`,
2552
+ SAMPLE_ONBOARDING_TRUTH_TEXT,
2553
+ );
2554
+ const PRODUCT_GUIDE_V17_TEXT = PRODUCT_GUIDE_V16_TEXT
2555
+ .replace('# Meguro product guide v16', '# Meguro product guide v17')
2556
+ .replace('Published URI: `' + PRODUCT_GUIDE_V16_URI + '`', 'Published URI: `' + PRODUCT_GUIDE_V17_URI + '`')
2557
+ .replace(DOCUMENTATION_V15_VERSION_LABELS_TEXT, DOCUMENTATION_V16_VERSION_LABELS_TEXT)
2558
+ .replaceAll(GETTING_STARTED_V19_URI, GETTING_STARTED_V20_URI)
2559
+ .replaceAll(DOCUMENTATION_INDEX_V15_URI, DOCUMENTATION_INDEX_V16_URI)
2560
+ .replace(
2561
+ `An ordinary conclusion is metered exactly once. The server-owned auto-provisioned sample run
2562
+ is exempt under its explicit provisioned-sample classification; do not infer that exemption for an
2563
+ ordinary store or run.`,
2564
+ SAMPLE_ONBOARDING_TRUTH_TEXT,
2565
+ );
2566
+ const SHARED_SAMPLE_HISTORY_GUIDANCE_TEXT = ORDINARY_STORE_HISTORY_DEFAULT_GUIDANCE_TEXT
2567
+ .replace(
2568
+ `The server-owned seeded sample is a distinct provisioning lane and
2569
+ currently reports its explicit 90-day span. That is today's sample fact, not a universal promise:
2570
+ never assume a future sample has 90 days; read its live provenance.`,
2571
+ `The live seeded sample is an ordinary practice store using the same shared store machinery.
2572
+ Its server-owned configuration explicitly supplies 90 days of queryable history instead of the
2573
+ ordinary 120-day default. These are different inputs to the same machinery, not different
2574
+ provisioning lanes. That explicit 90-day span is today's sample fact, not a universal promise:
2575
+ never assume a future sample has 90 days; read its live provenance.`,
2576
+ );
2577
+ const DOCUMENTATION_V17_VERSION_LABELS_TEXT = versionLabelsText(DOCUMENTATION_CURRENCY_V17);
2578
+ const DOCUMENTATION_V17_DEEPER_DOCUMENTATION_TEXT = deeperDocumentationText(DOCUMENTATION_CURRENCY_V17);
2579
+ const GETTING_STARTED_V21_TEXT = GETTING_STARTED_V20_TEXT
2580
+ .replace('# Getting started with Meguro v20', '# Getting started with Meguro v21')
2581
+ .replace('Published URI: `' + GETTING_STARTED_V20_URI + '`', 'Published URI: `' + GETTING_STARTED_V21_URI + '`')
2582
+ .replace(DOCUMENTATION_V16_VERSION_LABELS_TEXT, DOCUMENTATION_V17_VERSION_LABELS_TEXT)
2583
+ .replace(DOCUMENTATION_V16_DEEPER_DOCUMENTATION_TEXT, DOCUMENTATION_V17_DEEPER_DOCUMENTATION_TEXT)
2584
+ .replace(ORDINARY_STORE_HISTORY_DEFAULT_GUIDANCE_TEXT, SHARED_SAMPLE_HISTORY_GUIDANCE_TEXT);
2585
+ const PRODUCT_GUIDE_V18_TEXT = PRODUCT_GUIDE_V17_TEXT
2586
+ .replace('# Meguro product guide v17', '# Meguro product guide v18')
2587
+ .replace('Published URI: `' + PRODUCT_GUIDE_V17_URI + '`', 'Published URI: `' + PRODUCT_GUIDE_V18_URI + '`')
2588
+ .replace(DOCUMENTATION_V16_VERSION_LABELS_TEXT, DOCUMENTATION_V17_VERSION_LABELS_TEXT)
2589
+ .replaceAll(GETTING_STARTED_V20_URI, GETTING_STARTED_V21_URI)
2590
+ .replaceAll(DOCUMENTATION_INDEX_V16_URI, DOCUMENTATION_INDEX_V17_URI)
2591
+ .replace(ORDINARY_STORE_HISTORY_DEFAULT_GUIDANCE_TEXT, SHARED_SAMPLE_HISTORY_GUIDANCE_TEXT);
2592
+ const COMPATIBILITY_AND_FINAL_GATE_GUIDANCE_TEXT = `## Compatibility scope and final receipt Gate
2593
+
2594
+ \`Query.node\` and \`Query.nodes\` are polymorphic modeled-limit roots, not blanket Shopify Node
2595
+ compatibility claims. Read their \`nodeScope\` from the exact-version \`admin_schema\` compatibility
2596
+ manifest before selecting a fragment. Only \`nodeScope.supportedObjectTypes\` has the closed target-
2597
+ artifact, Meguro SDL, resolver, stable-identity, and executable-fixture proof. Every other Shopify
2598
+ Node implementor remains outside that claim even when Shopify declares it as Node; do not infer
2599
+ support from the root coordinate, type name, or target API alone.
2600
+
2601
+ The receipt's top-level \`gate\` is the one server-owned customer-facing promotion status. A failed
2602
+ named \`resultSemantics.evidenceAssertions\` assertion or
2603
+ \`rejectionAttribution.requiresReview = true\` prevents \`gate.status = passing\`. A matched expected
2604
+ refusal and a proven handled correction remain visible as raw rejected calls without becoming
2605
+ unhandled failures. \`resultSemantics.technicalPolicyVerdict\` remains independent and may pass while
2606
+ evidence fails. Consume the exact supplied \`gate\` in Console, MCP, public/private receipt, download,
2607
+ or generated copy; never derive another status from calls or legacy fields.`;
2608
+ const DOCUMENTATION_V18_VERSION_LABELS_TEXT = versionLabelsText(DOCUMENTATION_CURRENCY_V18);
2609
+ const DOCUMENTATION_V18_DEEPER_DOCUMENTATION_TEXT = deeperDocumentationText(DOCUMENTATION_CURRENCY_V18);
2610
+ const GETTING_STARTED_V22_TEXT = GETTING_STARTED_V21_TEXT
2611
+ .replace('# Getting started with Meguro v21', '# Getting started with Meguro v22')
2612
+ .replace('Published URI: `' + GETTING_STARTED_V21_URI + '`', 'Published URI: `' + GETTING_STARTED_V22_URI + '`')
2613
+ .replace(DOCUMENTATION_V17_VERSION_LABELS_TEXT, DOCUMENTATION_V18_VERSION_LABELS_TEXT)
2614
+ .replace(DOCUMENTATION_V17_DEEPER_DOCUMENTATION_TEXT, DOCUMENTATION_V18_DEEPER_DOCUMENTATION_TEXT)
2615
+ .replaceAll(RECEIPT_GUIDE_V10_URI, RECEIPT_GUIDE_V11_URI)
2616
+ .replace('## Deeper in-band documentation', `${COMPATIBILITY_AND_FINAL_GATE_GUIDANCE_TEXT}\n\n## Deeper in-band documentation`);
2617
+ const PRODUCT_GUIDE_V19_TEXT = PRODUCT_GUIDE_V18_TEXT
2618
+ .replace('# Meguro product guide v18', '# Meguro product guide v19')
2619
+ .replace('Published URI: `' + PRODUCT_GUIDE_V18_URI + '`', 'Published URI: `' + PRODUCT_GUIDE_V19_URI + '`')
2620
+ .replace(DOCUMENTATION_V17_VERSION_LABELS_TEXT, DOCUMENTATION_V18_VERSION_LABELS_TEXT)
2621
+ .replaceAll(GETTING_STARTED_V21_URI, GETTING_STARTED_V22_URI)
2622
+ .replaceAll(DOCUMENTATION_INDEX_V17_URI, DOCUMENTATION_INDEX_V18_URI)
2623
+ .replaceAll(RECEIPT_GUIDE_V10_URI, RECEIPT_GUIDE_V11_URI)
2624
+ .replace('## Stable concepts versus changing facts', `${COMPATIBILITY_AND_FINAL_GATE_GUIDANCE_TEXT}\n\n## Stable concepts versus changing facts`);
2625
+ const ONBOARDING_EVALUATION_GRANT_GUIDANCE_TEXT = `## One user-chosen onboarding evaluation
2626
+
2627
+ Each fresh account has one account-owned onboarding evaluation grant. While it is available,
2628
+ \`templates_list\` and the Console project the same server-owned \`starterPlans\` for every practice-
2629
+ store template. Choose the store and template you want to evaluate; the first accepted start binds
2630
+ the grant atomically to that store, template revision, deterministic root evaluation, and the
2631
+ template's pinned ideal horizon. The sample is not privileged by its route, name, seed, or shape: it
2632
+ uses the grant only when you choose it.
2633
+
2634
+ Use each selected plan's exact \`practiceRunStart.clock\`. Ordinary immutable receipt segments remain
2635
+ bounded by the current plan's per-attempt limit. When the ideal horizon is longer, continue the same
2636
+ root with \`continueFromAttemptId\`; every authorized segment carries the same
2637
+ \`onboardingEvaluation\` fact and consumes no monthly simulation-run credit. The sample POST remains
2638
+ an idempotent first-segment walkthrough; continue a longer bound sample through the ordinary run
2639
+ API rather than POSTing another sample.
2640
+
2641
+ The grant is spent once for the whole root chain. Identical retries converge on one root. Hiding,
2642
+ showing, deleting, recreating, choosing another store, or changing sample identity cannot restore or
2643
+ move it. A legacy account with the old consumption marker remains consumed. After the pinned ideal
2644
+ horizon, every new segment or run follows ordinary tier canvas, continuation, and monthly allowance
2645
+ rules. Read the returned plan and authorization facts; never infer entitlement or caps in a client.`;
2646
+ const DOCUMENTATION_V19_VERSION_LABELS_TEXT = versionLabelsText(DOCUMENTATION_CURRENCY_V19);
2647
+ const DOCUMENTATION_V19_DEEPER_DOCUMENTATION_TEXT = deeperDocumentationText(DOCUMENTATION_CURRENCY_V19);
2648
+ const GETTING_STARTED_V23_TEXT = GETTING_STARTED_V22_TEXT
2649
+ .replace('# Getting started with Meguro v22', '# Getting started with Meguro v23')
2650
+ .replace('Published URI: `' + GETTING_STARTED_V22_URI + '`', 'Published URI: `' + GETTING_STARTED_V23_URI + '`')
2651
+ .replace(DOCUMENTATION_V18_VERSION_LABELS_TEXT, DOCUMENTATION_V19_VERSION_LABELS_TEXT)
2652
+ .replace(DOCUMENTATION_V18_DEEPER_DOCUMENTATION_TEXT, DOCUMENTATION_V19_DEEPER_DOCUMENTATION_TEXT)
2653
+ .replace('## Deeper in-band documentation', `${ONBOARDING_EVALUATION_GRANT_GUIDANCE_TEXT}\n\n## Deeper in-band documentation`);
2654
+ const PRODUCT_GUIDE_V20_TEXT = PRODUCT_GUIDE_V19_TEXT
2655
+ .replace('# Meguro product guide v19', '# Meguro product guide v20')
2656
+ .replace('Published URI: `' + PRODUCT_GUIDE_V19_URI + '`', 'Published URI: `' + PRODUCT_GUIDE_V20_URI + '`')
2657
+ .replace(DOCUMENTATION_V18_VERSION_LABELS_TEXT, DOCUMENTATION_V19_VERSION_LABELS_TEXT)
2658
+ .replaceAll(GETTING_STARTED_V22_URI, GETTING_STARTED_V23_URI)
2659
+ .replaceAll(DOCUMENTATION_INDEX_V18_URI, DOCUMENTATION_INDEX_V19_URI)
2660
+ .replace('## Stable concepts versus changing facts', `${ONBOARDING_EVALUATION_GRANT_GUIDANCE_TEXT}\n\n## Stable concepts versus changing facts`);
2661
+ const DOCUMENTATION_V20_VERSION_LABELS_TEXT = versionLabelsText(DOCUMENTATION_CURRENCY_V20);
2662
+ const DOCUMENTATION_V20_DEEPER_DOCUMENTATION_TEXT = deeperDocumentationText(DOCUMENTATION_CURRENCY_V20);
2663
+ const GETTING_STARTED_V24_TEXT = GETTING_STARTED_V23_TEXT
2664
+ .replace('# Getting started with Meguro v23', '# Getting started with Meguro v24')
2665
+ .replace('Published URI: `' + GETTING_STARTED_V23_URI + '`', 'Published URI: `' + GETTING_STARTED_V24_URI + '`')
2666
+ .replace(DOCUMENTATION_V19_VERSION_LABELS_TEXT, DOCUMENTATION_V20_VERSION_LABELS_TEXT)
2667
+ .replace(DOCUMENTATION_V19_DEEPER_DOCUMENTATION_TEXT, DOCUMENTATION_V20_DEEPER_DOCUMENTATION_TEXT);
2668
+ const PRODUCT_GUIDE_V21_TEXT = PRODUCT_GUIDE_V20_TEXT
2669
+ .replace('# Meguro product guide v20', '# Meguro product guide v21')
2670
+ .replace('Published URI: `' + PRODUCT_GUIDE_V20_URI + '`', 'Published URI: `' + PRODUCT_GUIDE_V21_URI + '`')
2671
+ .replace(DOCUMENTATION_V19_VERSION_LABELS_TEXT, DOCUMENTATION_V20_VERSION_LABELS_TEXT)
2672
+ .replaceAll(GETTING_STARTED_V23_URI, GETTING_STARTED_V24_URI)
2673
+ .replaceAll(DOCUMENTATION_INDEX_V19_URI, DOCUMENTATION_INDEX_V20_URI)
2674
+ .replaceAll(RECEIPT_GUIDE_V11_URI, RECEIPT_GUIDE_V12_URI);
2675
+ const TEMPLATE_EVENT_RESOLUTION_GUIDANCE_TEXT = `## Creation-pinned template event resolution
2676
+
2677
+ New hosted run and impact receipts carry one \`eventResolution\` derived from the template
2678
+ evaluation context copied into the practice store at creation. \`source\` names that immutable
2679
+ template key, label, and revision; it is not a lookup against the current template catalog.
2680
+
2681
+ For a discrete event, \`status = resolved\` only when the exact measured world-day horizon spans the
2682
+ complete pinned \`eventWindow\`. Coverage ending before, starting after, or including only part of
2683
+ that window is \`not-resolved\`. A continuously modeled response is \`not-applicable\` because it has
2684
+ no discrete event window. A historical or custom store without pinned context is \`unavailable\`;
2685
+ clients must not infer or fabricate context from current template metadata. Preserve the supplied
2686
+ reason and measured horizon beside the status. Historical issued receipt bytes do not change.`;
2687
+ const DOCUMENTATION_V21_VERSION_LABELS_TEXT = versionLabelsText(DOCUMENTATION_CURRENCY_V21);
2688
+ const DOCUMENTATION_V21_DEEPER_DOCUMENTATION_TEXT = deeperDocumentationText(DOCUMENTATION_CURRENCY_V21);
2689
+ const GETTING_STARTED_V25_TEXT = GETTING_STARTED_V24_TEXT
2690
+ .replace('# Getting started with Meguro v24', '# Getting started with Meguro v25')
2691
+ .replace('Published URI: `' + GETTING_STARTED_V24_URI + '`', 'Published URI: `' + GETTING_STARTED_V25_URI + '`')
2692
+ .replace(DOCUMENTATION_V20_VERSION_LABELS_TEXT, DOCUMENTATION_V21_VERSION_LABELS_TEXT)
2693
+ .replace(DOCUMENTATION_V20_DEEPER_DOCUMENTATION_TEXT, DOCUMENTATION_V21_DEEPER_DOCUMENTATION_TEXT)
2694
+ .replace('## Deeper in-band documentation', `${TEMPLATE_EVENT_RESOLUTION_GUIDANCE_TEXT}\n\n## Deeper in-band documentation`);
2695
+ const PRODUCT_GUIDE_V22_TEXT = PRODUCT_GUIDE_V21_TEXT
2696
+ .replace('# Meguro product guide v21', '# Meguro product guide v22')
2697
+ .replace('Published URI: `' + PRODUCT_GUIDE_V21_URI + '`', 'Published URI: `' + PRODUCT_GUIDE_V22_URI + '`')
2698
+ .replace(DOCUMENTATION_V20_VERSION_LABELS_TEXT, DOCUMENTATION_V21_VERSION_LABELS_TEXT)
2699
+ .replaceAll(GETTING_STARTED_V24_URI, GETTING_STARTED_V25_URI)
2700
+ .replaceAll(DOCUMENTATION_INDEX_V20_URI, DOCUMENTATION_INDEX_V21_URI)
2701
+ .replaceAll(RECEIPT_GUIDE_V12_URI, RECEIPT_GUIDE_V13_URI)
2702
+ .replace('## Stable concepts versus changing facts', `${TEMPLATE_EVENT_RESOLUTION_GUIDANCE_TEXT}\n\n## Stable concepts versus changing facts`);
2703
+ const ADVANCE_CURSOR_GUIDANCE_TEXT = `## One server-owned advance cursor
2704
+
2705
+ Every practice-run start and status response carries \`practiceRun.advanceCursor\` with exactly
2706
+ \`expectedDay\` and \`expectedCallSeq\`. Copy that object unchanged into the next
2707
+ \`practice_run_advance\` call or HTTP advance body. Do not choose between \`currentDay\` and
2708
+ \`watermarkDay\`, and do not combine call-sequence fields from separate reads.
2709
+
2710
+ Start, accepted-call status, zero-call status, advance, checkpoint, terminal confirmation,
2711
+ refusal recovery, checkpoint reopen, and completed status all return the same server-owned shape.
2712
+ A stale cursor fails closed and moves no Store time; the refusal returns a fresh \`advanceCursor\`
2713
+ for one exact retry. The frozen scalar response fields and legacy flat \`expectedDay\` plus
2714
+ \`expectedCallSeq\` request fields remain available together for compatibility.`;
2715
+ const DOCUMENTATION_V22_VERSION_LABELS_TEXT = versionLabelsText(DOCUMENTATION_CURRENCY_V22);
2716
+ const DOCUMENTATION_V22_DEEPER_DOCUMENTATION_TEXT = deeperDocumentationText(DOCUMENTATION_CURRENCY_V22);
2717
+ const GETTING_STARTED_V26_TEXT = GETTING_STARTED_V25_TEXT
2718
+ .replace('# Getting started with Meguro v25', '# Getting started with Meguro v26')
2719
+ .replace('Published URI: `' + GETTING_STARTED_V25_URI + '`', 'Published URI: `' + GETTING_STARTED_V26_URI + '`')
2720
+ .replace(DOCUMENTATION_V21_VERSION_LABELS_TEXT, DOCUMENTATION_V22_VERSION_LABELS_TEXT)
2721
+ .replace(DOCUMENTATION_V21_DEEPER_DOCUMENTATION_TEXT, DOCUMENTATION_V22_DEEPER_DOCUMENTATION_TEXT)
2722
+ .replace(
2723
+ 'practice_run_advance({ attemptId, days, expectedDay, expectedCallSeq })',
2724
+ 'practice_run_advance({ attemptId, days, advanceCursor })',
2725
+ )
2726
+ .replace(
2727
+ 'Before each advance, call `practice_run_status` and copy both current cursors.',
2728
+ 'Before each advance, call `practice_run_status` and copy `practiceRun.advanceCursor` unchanged.',
2729
+ )
2730
+ .replace('## Deeper in-band documentation', `${ADVANCE_CURSOR_GUIDANCE_TEXT}\n\n## Deeper in-band documentation`);
2731
+ const PRODUCT_GUIDE_V23_TEXT = PRODUCT_GUIDE_V22_TEXT
2732
+ .replace('# Meguro product guide v22', '# Meguro product guide v23')
2733
+ .replace('Published URI: `' + PRODUCT_GUIDE_V22_URI + '`', 'Published URI: `' + PRODUCT_GUIDE_V23_URI + '`')
2734
+ .replace(DOCUMENTATION_V21_VERSION_LABELS_TEXT, DOCUMENTATION_V22_VERSION_LABELS_TEXT)
2735
+ .replaceAll(GETTING_STARTED_V25_URI, GETTING_STARTED_V26_URI)
2736
+ .replaceAll(DOCUMENTATION_INDEX_V21_URI, DOCUMENTATION_INDEX_V22_URI)
2737
+ .replace(
2738
+ 'Before each advance, call `practice_run_status` and copy both current cursors.',
2739
+ 'Before each advance, call `practice_run_status` and copy `practiceRun.advanceCursor` unchanged.',
2740
+ )
2741
+ .replace('## Stable concepts versus changing facts', `${ADVANCE_CURSOR_GUIDANCE_TEXT}\n\n## Stable concepts versus changing facts`);
2742
+ const MUTABLE_GATE_ABSENCE_TEXT = `No configured Receipt Gate exists. The receipt's recorded API behavior remains available.`;
2743
+ // MEG-1204: a documentation resource cannot know whether the reading account or practice store
2744
+ // currently has a configured Gate. The current generation states the standing rule and routes the
2745
+ // live question to the Gate tools; versions carrying the mutable sentence keep their exact bytes.
2746
+ const STATE_NEUTRAL_GATE_PRESENCE_TEXT = `A configured Receipt Gate is optional per account and practice store, and this document cannot
2747
+ report whether one exists for you. Discover the current state through the Gate tools. Its absence
2748
+ never removes the receipt's automatic Recorded API behavior.`;
2749
+ const RECEIPT_PRODUCT_TERMINOLOGY_GUIDANCE_TEXT = `## Automatic receipt facts and optional configured policy
2750
+
2751
+ Every concluded receipt carries **Recorded API behavior** automatically, whether or not a
2752
+ **Configured Receipt Gate** exists. Customer-facing Recorded API behavior is rendered from the
2753
+ receipt's existing fact-phrase authority. **Default run policy** names the provenance of that
2754
+ automatic interpretation; it is not a separately configured product.
2755
+
2756
+ **Configured Receipt Gate** is the optional configured policy over selected receipt facts exposed
2757
+ by the frozen \`gate_configure\`, \`gate_evaluate\`, and \`gate_verdict\` tool names.
2758
+ ${MUTABLE_GATE_ABSENCE_TEXT}
2759
+
2760
+ These customer terms do not rename machine fields or values. Preserve \`gate\`, \`gate.status\`,
2761
+ \`technicalPolicyVerdict\`, \`defaultVerdict\`, policy ids and versions, schema names, routes, tool
2762
+ names, and raw JSON exactly as supplied.`;
2763
+ const DOCUMENTATION_V23_VERSION_LABELS_TEXT = versionLabelsText(DOCUMENTATION_CURRENCY_V23);
2764
+ const DOCUMENTATION_V23_DEEPER_DOCUMENTATION_TEXT = deeperDocumentationText(DOCUMENTATION_CURRENCY_V23);
2765
+ const GETTING_STARTED_V27_TEXT = GETTING_STARTED_V26_TEXT
2766
+ .replace('# Getting started with Meguro v26', '# Getting started with Meguro v27')
2767
+ .replace('Published URI: `' + GETTING_STARTED_V26_URI + '`', 'Published URI: `' + GETTING_STARTED_V27_URI + '`')
2768
+ .replace(DOCUMENTATION_V22_VERSION_LABELS_TEXT, DOCUMENTATION_V23_VERSION_LABELS_TEXT)
2769
+ .replace(DOCUMENTATION_V22_DEEPER_DOCUMENTATION_TEXT, DOCUMENTATION_V23_DEEPER_DOCUMENTATION_TEXT)
2770
+ .replace('## Deeper in-band documentation', `${RECEIPT_PRODUCT_TERMINOLOGY_GUIDANCE_TEXT}\n\n## Deeper in-band documentation`);
2771
+ const PRODUCT_GUIDE_V24_TEXT = PRODUCT_GUIDE_V23_TEXT
2772
+ .replace('# Meguro product guide v23', '# Meguro product guide v24')
2773
+ .replace('Published URI: `' + PRODUCT_GUIDE_V23_URI + '`', 'Published URI: `' + PRODUCT_GUIDE_V24_URI + '`')
2774
+ .replace(DOCUMENTATION_V22_VERSION_LABELS_TEXT, DOCUMENTATION_V23_VERSION_LABELS_TEXT)
2775
+ .replaceAll(GETTING_STARTED_V26_URI, GETTING_STARTED_V27_URI)
2776
+ .replaceAll(DOCUMENTATION_INDEX_V22_URI, DOCUMENTATION_INDEX_V23_URI)
2777
+ .replaceAll(RECEIPT_GUIDE_V13_URI, RECEIPT_GUIDE_V14_URI)
2778
+ .replace('## Stable concepts versus changing facts', `${RECEIPT_PRODUCT_TERMINOLOGY_GUIDANCE_TEXT}\n\n## Stable concepts versus changing facts`);
2779
+ const OFFICIAL_RETURN_FINANCE_GUIDANCE_TEXT = `## Shopify return finance mechanics
2780
+
2781
+ Meguro's public Admin GraphQL surface follows the pinned Shopify Admin schema. A return cash refund
2782
+ uses \`returnRefund(returnRefundInput:)\` with \`returnId\` and exact
2783
+ \`returnRefundLineItems\`. A return-linked store-credit refund uses \`refundCreate(input:)\` with
2784
+ the order, exact refund line items, and \`refundMethods[].storeCreditRefund.amount\` as a
2785
+ \`MoneyInput\`. Both mutation roots require exactly one field-level
2786
+ \`@idempotent(key: String!)\` directive.
2787
+
2788
+ Public read-back uses official \`Refund\`, \`OrderTransaction\`, \`Return.refunds\`,
2789
+ \`Return.suggestedRefund\`, and \`Return.suggestedFinancialOutcome\` fields. Rehearsal-specific
2790
+ resolution kind, customer linkage, modeled economics, settlement, and replay evidence live in the
2791
+ private receipt and committed change register; they are not synthetic Shopify fields. Approval
2792
+ alone remains non-financial, and \`giftCardCreate\` remains SKU-linked loyalty credit rather than a
2793
+ return refund.`;
2794
+ const CORRECTED_RETURN_RESOLUTION_EVIDENCE_GUIDANCE_TEXT = RETURN_RESOLUTION_EVIDENCE_GUIDANCE_TEXT
2795
+ .replace('A cash\nrefund is an explicit idempotent `refundCreate` resolution. Return-linked store credit is a distinct\nidempotent `returnRefund` resolution', 'A cash\nrefund is an explicit idempotent `returnRefund` resolution. Return-linked store credit is a distinct\nidempotent `refundCreate` resolution');
2796
+ const CUSTOMER_LINKED_RETURN_RESOLUTION_EVIDENCE_GUIDANCE_TEXT = CORRECTED_RETURN_RESOLUTION_EVIDENCE_GUIDANCE_TEXT
2797
+ .replace(
2798
+ 'and never routes through SKU-linked loyalty credit.',
2799
+ 'and never routes through proactive customer-linked loyalty GiftCards.',
2800
+ );
2801
+ const CORRECTED_IDEMPOTENCY_REQUIREMENTS_TEXT = `For Admin GraphQL \`${ADMIN_API_SUPPORTED_VERSIONS.join(' and ')}\`, the authoritative set is:
2802
+ \`inventoryAdjustQuantities\`, \`refundCreate\`, and \`returnRefund\` require
2803
+ \`@idempotent(key: String!)\`. Place \`@idempotent(key: $idempotencyKey)\` exactly once on the single
2804
+ supported mutation root field. The resolved key must be a non-empty string no larger than 256 bytes.
2805
+ Use the authority-derived example when present; unrelated roots must not receive this directive.`;
2806
+ const DOCUMENTATION_V24_VERSION_LABELS_TEXT = versionLabelsText(DOCUMENTATION_CURRENCY_V24);
2807
+ const DOCUMENTATION_V24_DEEPER_DOCUMENTATION_TEXT = deeperDocumentationText(DOCUMENTATION_CURRENCY_V24);
2808
+ const GETTING_STARTED_V28_TEXT = GETTING_STARTED_V27_TEXT
2809
+ .replace('# Getting started with Meguro v27', '# Getting started with Meguro v28')
2810
+ .replace('Published URI: `' + GETTING_STARTED_V27_URI + '`', 'Published URI: `' + GETTING_STARTED_V28_URI + '`')
2811
+ .replace(DOCUMENTATION_V23_VERSION_LABELS_TEXT, DOCUMENTATION_V24_VERSION_LABELS_TEXT)
2812
+ .replace(DOCUMENTATION_V23_DEEPER_DOCUMENTATION_TEXT, DOCUMENTATION_V24_DEEPER_DOCUMENTATION_TEXT)
2813
+ .replace(RETURN_RESOLUTION_EVIDENCE_GUIDANCE_TEXT, CORRECTED_RETURN_RESOLUTION_EVIDENCE_GUIDANCE_TEXT)
2814
+ .replace(CURRENT_IDEMPOTENCY_REQUIREMENTS_TEXT, CORRECTED_IDEMPOTENCY_REQUIREMENTS_TEXT)
2815
+ .replace('## Deeper in-band documentation', `${OFFICIAL_RETURN_FINANCE_GUIDANCE_TEXT}\n\n## Deeper in-band documentation`);
2816
+ const PRODUCT_GUIDE_V25_TEXT = PRODUCT_GUIDE_V24_TEXT
2817
+ .replace('# Meguro product guide v24', '# Meguro product guide v25')
2818
+ .replace('Published URI: `' + PRODUCT_GUIDE_V24_URI + '`', 'Published URI: `' + PRODUCT_GUIDE_V25_URI + '`')
2819
+ .replace(DOCUMENTATION_V23_VERSION_LABELS_TEXT, DOCUMENTATION_V24_VERSION_LABELS_TEXT)
2820
+ .replaceAll(GETTING_STARTED_V27_URI, GETTING_STARTED_V28_URI)
2821
+ .replaceAll(DOCUMENTATION_INDEX_V23_URI, DOCUMENTATION_INDEX_V24_URI)
2822
+ .replace(RETURN_RESOLUTION_EVIDENCE_GUIDANCE_TEXT, CORRECTED_RETURN_RESOLUTION_EVIDENCE_GUIDANCE_TEXT)
2823
+ .replace(CURRENT_IDEMPOTENCY_REQUIREMENTS_TEXT, CORRECTED_IDEMPOTENCY_REQUIREMENTS_TEXT)
2824
+ .replace('## Stable concepts versus changing facts', `${OFFICIAL_RETURN_FINANCE_GUIDANCE_TEXT}\n\n## Stable concepts versus changing facts`);
2825
+ const CUSTOMER_LINKED_LOYALTY_GIFT_CARD_GUIDANCE_TEXT = `## Customer-linked loyalty GiftCards
2826
+
2827
+ Proactive loyalty value uses Shopify Admin \`giftCardCreate(input:)\` with \`initialValue: Decimal\`
2828
+ and \`customerId: ID\`. The public request and \`GiftCard.customer\` identify the modeled customer;
2829
+ there is no SKU selector or SKU response field. Meguro derives the internal product cohort only
2830
+ from the order/customer authority already present in the practice store.
2831
+
2832
+ This mutation is not declared \`@idempotent\`. An exact retry after the first accepted gift card
2833
+ returns a structured \`GiftCardUserError\` and applies no second commerce action. Read accepted
2834
+ gift cards independently through \`giftCards(first:, after:)\`; their initial value and balance
2835
+ reconcile to the accepted-action receipt cost. Return-linked store credit remains a separate
2836
+ \`refundCreate.refundMethods.storeCreditRefund\` resolution and never uses \`giftCardCreate\`.`;
2837
+ const CORRECTED_OFFICIAL_RETURN_FINANCE_GUIDANCE_TEXT = OFFICIAL_RETURN_FINANCE_GUIDANCE_TEXT
2838
+ .replace(
2839
+ 'alone remains non-financial, and `giftCardCreate` remains SKU-linked loyalty credit rather than a\nreturn refund.',
2840
+ 'alone remains non-financial. Proactive customer-linked `giftCardCreate` loyalty GiftCards remain\ndistinct from return refunds and return-linked store credit.',
2841
+ );
2842
+ const DOCUMENTATION_V25_VERSION_LABELS_TEXT = versionLabelsText(DOCUMENTATION_CURRENCY_V25);
2843
+ const DOCUMENTATION_V25_DEEPER_DOCUMENTATION_TEXT = deeperDocumentationText(DOCUMENTATION_CURRENCY_V25);
2844
+ const GETTING_STARTED_V29_TEXT = GETTING_STARTED_V28_TEXT
2845
+ .replace('# Getting started with Meguro v28', '# Getting started with Meguro v29')
2846
+ .replace('Published URI: `' + GETTING_STARTED_V28_URI + '`', 'Published URI: `' + GETTING_STARTED_V29_URI + '`')
2847
+ .replace(DOCUMENTATION_V24_VERSION_LABELS_TEXT, DOCUMENTATION_V25_VERSION_LABELS_TEXT)
2848
+ .replace(DOCUMENTATION_V24_DEEPER_DOCUMENTATION_TEXT, DOCUMENTATION_V25_DEEPER_DOCUMENTATION_TEXT)
2849
+ .replace(CORRECTED_RETURN_RESOLUTION_EVIDENCE_GUIDANCE_TEXT, CUSTOMER_LINKED_RETURN_RESOLUTION_EVIDENCE_GUIDANCE_TEXT)
2850
+ .replace(
2851
+ OFFICIAL_RETURN_FINANCE_GUIDANCE_TEXT,
2852
+ `${CORRECTED_OFFICIAL_RETURN_FINANCE_GUIDANCE_TEXT}\n\n${CUSTOMER_LINKED_LOYALTY_GIFT_CARD_GUIDANCE_TEXT}`,
2853
+ );
2854
+ const PRODUCT_GUIDE_V26_TEXT = PRODUCT_GUIDE_V25_TEXT
2855
+ .replace('# Meguro product guide v25', '# Meguro product guide v26')
2856
+ .replace('Published URI: `' + PRODUCT_GUIDE_V25_URI + '`', 'Published URI: `' + PRODUCT_GUIDE_V26_URI + '`')
2857
+ .replace(DOCUMENTATION_V24_VERSION_LABELS_TEXT, DOCUMENTATION_V25_VERSION_LABELS_TEXT)
2858
+ .replaceAll(GETTING_STARTED_V28_URI, GETTING_STARTED_V29_URI)
2859
+ .replaceAll(DOCUMENTATION_INDEX_V24_URI, DOCUMENTATION_INDEX_V25_URI)
2860
+ .replace(CORRECTED_RETURN_RESOLUTION_EVIDENCE_GUIDANCE_TEXT, CUSTOMER_LINKED_RETURN_RESOLUTION_EVIDENCE_GUIDANCE_TEXT)
2861
+ .replace(
2862
+ OFFICIAL_RETURN_FINANCE_GUIDANCE_TEXT,
2863
+ `${CORRECTED_OFFICIAL_RETURN_FINANCE_GUIDANCE_TEXT}\n\n${CUSTOMER_LINKED_LOYALTY_GIFT_CARD_GUIDANCE_TEXT}`,
2864
+ );
2865
+ const ORDER_REFUND_AUTHORITY_GUIDANCE_TEXT = `## Return cash resolution and ordinary order refunds
2866
+
2867
+ Return approval is policy-only and has no refund or store-credit economics. To resolve one exact
2868
+ Return with cash, use \`returnRefund(returnRefundInput:)\` with its \`returnId\` and exact
2869
+ \`returnRefundLineItems\`. That is the Return-linked financial operation.
2870
+
2871
+ \`refundCreate(input:)\` is instead an ordinary order refund. It may refund a paid order that has no
2872
+ Return. \`RefundInput.note\` is opaque customer text and never selects or changes a Return. Cash
2873
+ requires an explicit valid \`transactions\` refund; order store credit requires
2874
+ \`refundMethods[].storeCreditRefund.amount\`. These methods are mutually exclusive. If neither method is supplied, the practice Admin
2875
+ returns structured \`userErrors\` and changes no state. Store credit has no cash transaction, but it
2876
+ contributes to the Refund and Order refunded totals.
2877
+
2878
+ Read the committed Refund through \`Order.refunds\`. Its id, order, method, amount, cumulative order
2879
+ total, and replay identity remain stable after checkpoint reopen. An ordinary order Refund projects
2880
+ \`Refund.return\` as null. The cumulative refund cap is the order's authoritative paid amount across
2881
+ cash and store-credit methods. Reuse the same \`@idempotent\` key only for an exact replay; the replay
2882
+ returns the same Refund and applies no second commerce action or financial effect.
2883
+
2884
+ Receipt and Impact footprints keep four distinct counts. \`acceptedMutationCalls\` includes accepted
2885
+ replays; \`rejectedMutationCalls\` counts refused calls; \`idempotentReplays\` identifies reused
2886
+ results; and \`appliedCommerceActions\` counts only newly applied modeled actions.`;
2887
+ const ORDER_REFUND_EVIDENCE_GUIDANCE_TEXT = `## Refund evidence accounting
2888
+
2889
+ Return cash uses the committed \`returnRefund\` resolution. Ordinary cash and store-credit order
2890
+ refunds use the committed \`refundCreate\` authority and do not select or change a Return. Receipt
2891
+ and Impact footprints distinguish accepted calls, rejected calls, idempotent replays, and newly
2892
+ applied commerce actions; read the resolution-specific change line for the exact method and amount.`;
2893
+ const ORDER_REFUND_LOYALTY_GUIDANCE_TEXT = CUSTOMER_LINKED_LOYALTY_GIFT_CARD_GUIDANCE_TEXT.replace(
2894
+ 'Return-linked store credit remains a separate\n`refundCreate.refundMethods.storeCreditRefund` resolution and never uses `giftCardCreate`.',
2895
+ 'Order store credit remains a separate ordinary order refund through\n`refundCreate.refundMethods.storeCreditRefund` and never uses `giftCardCreate`.',
2896
+ );
2897
+ const ADMITTED_RECIPE_DISCOVERY_GUIDANCE_TEXT = `## Discover Admin recipes before lookup
2898
+
2899
+ Call \`admin_recipes_list({})\` to enumerate every canonical Admin recipe before choosing one. Every
2900
+ listed recipe has already been admitted: its exact document is valid against both the pinned official
2901
+ Shopify schema for its declared \`apiVersion\` and Meguro's served subset. A recipe that fails that
2902
+ contract is absent from the list rather than listed with a warning.
2903
+
2904
+ Each row carries a stable \`id\`, operation name, purpose, confirmation requirement, authored aliases
2905
+ and keywords, and the facts you are expected to act on:
2906
+
2907
+ - \`apiVersion\` — the Admin version the document is written for. Send it; do not substitute another.
2908
+ - \`intendedTemplates\` — the practice store templates the recipe is built for.
2909
+ - \`expectedFidelity\` — always \`supported\`, because unsupported coordinates are never published as recipes.
2910
+ - \`knownSupportBoundary\` — what the recipe deliberately does not cover.
2911
+ - \`outcome\` — for a read, \`emptyResult.meaning\` states exactly what an empty page does and does not
2912
+ prove. Treat an empty page as that answer, not as a failure to retry. For a mutation,
2913
+ \`consequence.statement\` names the state change that commits and \`consequence.readbackProves\`
2914
+ names what an independent read-back establishes.
2915
+ - \`prerequisites\` — conditions that must already hold. Each carries a stable \`id\` and, where one
2916
+ exists, the \`establishedBy\` recipe that creates the condition. Run that recipe first.
2917
+
2918
+ Then call \`admin_schema({ lookup: "recipe", name: "<id>" })\` with the selected stable id for the exact
2919
+ document and the same facts, including the read-back query for a mutation.
2920
+
2921
+ If a request is refused for selecting an unsupported coordinate, the error carries one registry-owned
2922
+ remedy in \`extensions.remedy\`: the supported coordinate to use and the exact copyable document. Use
2923
+ that remedy and ignore any generic GraphQL spelling suggestion.
2924
+
2925
+ If \`admin_schema\` returns a recipe miss, follow its bounded \`teaching.nextCall\` exactly. The teaching
2926
+ payload contains only canonical recipe ids and authored aliases or keywords; it never guesses a semantic
2927
+ match or runs \`admin_probe\`.`;
2928
+ const DOCUMENTATION_V26_VERSION_LABELS_TEXT = versionLabelsText(DOCUMENTATION_CURRENCY_V26);
2929
+ const DOCUMENTATION_V26_DEEPER_DOCUMENTATION_TEXT = deeperDocumentationText(DOCUMENTATION_CURRENCY_V26);
2930
+ const GETTING_STARTED_V30_TEXT = GETTING_STARTED_V29_TEXT
2931
+ .replace('# Getting started with Meguro v29', '# Getting started with Meguro v30')
2932
+ .replace('Published URI: `' + GETTING_STARTED_V29_URI + '`', 'Published URI: `' + GETTING_STARTED_V30_URI + '`')
2933
+ .replace(DOCUMENTATION_V25_VERSION_LABELS_TEXT, DOCUMENTATION_V26_VERSION_LABELS_TEXT)
2934
+ .replace(DOCUMENTATION_V25_DEEPER_DOCUMENTATION_TEXT, DOCUMENTATION_V26_DEEPER_DOCUMENTATION_TEXT)
2935
+ .replace(CUSTOMER_LINKED_RETURN_RESOLUTION_EVIDENCE_GUIDANCE_TEXT, ORDER_REFUND_EVIDENCE_GUIDANCE_TEXT)
2936
+ .replace(CORRECTED_OFFICIAL_RETURN_FINANCE_GUIDANCE_TEXT, ORDER_REFUND_AUTHORITY_GUIDANCE_TEXT)
2937
+ .replace(CUSTOMER_LINKED_LOYALTY_GIFT_CARD_GUIDANCE_TEXT, ORDER_REFUND_LOYALTY_GUIDANCE_TEXT);
2938
+ const PRODUCT_GUIDE_V27_TEXT = PRODUCT_GUIDE_V26_TEXT
2939
+ .replace('# Meguro product guide v26', '# Meguro product guide v27')
2940
+ .replace('Published URI: `' + PRODUCT_GUIDE_V26_URI + '`', 'Published URI: `' + PRODUCT_GUIDE_V27_URI + '`')
2941
+ .replace(DOCUMENTATION_V25_VERSION_LABELS_TEXT, DOCUMENTATION_V26_VERSION_LABELS_TEXT)
2942
+ .replaceAll(GETTING_STARTED_V29_URI, GETTING_STARTED_V30_URI)
2943
+ .replaceAll(DOCUMENTATION_INDEX_V25_URI, DOCUMENTATION_INDEX_V26_URI)
2944
+ .replace(CUSTOMER_LINKED_RETURN_RESOLUTION_EVIDENCE_GUIDANCE_TEXT, ORDER_REFUND_EVIDENCE_GUIDANCE_TEXT)
2945
+ .replace(CORRECTED_OFFICIAL_RETURN_FINANCE_GUIDANCE_TEXT, ORDER_REFUND_AUTHORITY_GUIDANCE_TEXT)
2946
+ .replace(CUSTOMER_LINKED_LOYALTY_GIFT_CARD_GUIDANCE_TEXT, ORDER_REFUND_LOYALTY_GUIDANCE_TEXT);
2947
+ /**
2948
+ * MEG-907: the RULED CANONICAL "When not to use Meguro" copy, carried verbatim from the ruling
2949
+ * document — not paraphrased, re-led, or compressed. The section owns Meguro's limits in Meguro's
2950
+ * own voice per the blame-register law, and deliberately restates no price, tier limit, trial
2951
+ * length, compatibility count, corpus size, percentage, or time span.
2952
+ *
2953
+ * The canonical copy closes with a "Where it fits" line whose receipt claims are gated on Brief #4
2954
+ * landing before launch. That line is HELD here: the quotable report-back block ships on the
2955
+ * authenticated report (MEG-828), but the shared receipt an agent actually hands to a ratifying
2956
+ * human — `meguro.shared-receipt.v2` — does not carry it, and Brief #4's share-page work is ruled
2957
+ * to be built at faucet-open. It is held whole rather than softened or partially paraphrased.
2958
+ */
2959
+ const WHEN_NOT_TO_USE_SECTION_TEXT = `## When not to use Meguro
2960
+
2961
+ Meguro is deliberately narrow. It is the wrong tool when:
2962
+
2963
+ **You need proof of live performance.** Receipts are rehearsal evidence from a simulated store — not forecasts, certifications, or evidence of market demand. Meguro says this in-band because it's true.
2964
+
2965
+ **Your critical path lives outside the modeled subset.** Meguro models a subset of the Shopify Admin API and refuses the rest with a teaching error rather than faking behavior. If the calls your app depends on aren't in the modeled subset — the refusal enumerates it, and the compatibility table lists it — Meguro cannot exercise them, and won't pretend to.
2966
+
2967
+ **You're testing storefront, themes, or checkout UX.** A practice store is commerce state behind an Admin-shaped API, not a rendered storefront.
2968
+
2969
+ **You're load-testing.** The throttle model exists to exercise your agent's backoff discipline, not to benchmark a platform.
2970
+
2971
+ **Your agent never touches commerce state.** If it reads a static catalog once, a fixture file is cheaper.
2972
+
2973
+ **You want someone to run your agent for you.** Meguro never executes your agent; it provides the store and the record. Bring your own agent — that's the design, not a gap.`;
2974
+
2975
+ const DOCUMENTATION_V27_VERSION_LABELS_TEXT = versionLabelsText(DOCUMENTATION_CURRENCY_V27);
2976
+ const DOCUMENTATION_V27_DEEPER_DOCUMENTATION_TEXT = deeperDocumentationText(DOCUMENTATION_CURRENCY_V27);
2977
+ const GETTING_STARTED_V31_TEXT = GETTING_STARTED_V30_TEXT
2978
+ .replace('# Getting started with Meguro v30', '# Getting started with Meguro v31')
2979
+ .replace('Published URI: `' + GETTING_STARTED_V30_URI + '`', 'Published URI: `' + GETTING_STARTED_V31_URI + '`')
2980
+ .replace(DOCUMENTATION_V26_VERSION_LABELS_TEXT, DOCUMENTATION_V27_VERSION_LABELS_TEXT)
2981
+ .replace(DOCUMENTATION_V26_DEEPER_DOCUMENTATION_TEXT, DOCUMENTATION_V27_DEEPER_DOCUMENTATION_TEXT)
2982
+ .replace(ADMIN_RECIPE_DISCOVERY_GUIDANCE_TEXT, ADMITTED_RECIPE_DISCOVERY_GUIDANCE_TEXT);
2983
+ const PRODUCT_GUIDE_V28_TEXT = PRODUCT_GUIDE_V27_TEXT
2984
+ .replace('# Meguro product guide v27', '# Meguro product guide v28')
2985
+ .replace('Published URI: `' + PRODUCT_GUIDE_V27_URI + '`', 'Published URI: `' + PRODUCT_GUIDE_V28_URI + '`')
2986
+ .replace(DOCUMENTATION_V26_VERSION_LABELS_TEXT, DOCUMENTATION_V27_VERSION_LABELS_TEXT)
2987
+ .replaceAll(GETTING_STARTED_V30_URI, GETTING_STARTED_V31_URI)
2988
+ .replaceAll(DOCUMENTATION_INDEX_V26_URI, DOCUMENTATION_INDEX_V27_URI)
2989
+ .replace(ADMIN_RECIPE_DISCOVERY_GUIDANCE_TEXT, ADMITTED_RECIPE_DISCOVERY_GUIDANCE_TEXT);
2990
+ const DOCUMENTATION_V28_VERSION_LABELS_TEXT = versionLabelsText(DOCUMENTATION_CURRENCY_V28);
2991
+ const DOCUMENTATION_V28_DEEPER_DOCUMENTATION_TEXT = deeperDocumentationText(DOCUMENTATION_CURRENCY_V28);
2992
+ const GETTING_STARTED_V32_TEXT = GETTING_STARTED_V31_TEXT
2993
+ .replace('# Getting started with Meguro v31', '# Getting started with Meguro v32')
2994
+ .replace('Published URI: `' + GETTING_STARTED_V31_URI + '`', 'Published URI: `' + GETTING_STARTED_V32_URI + '`')
2995
+ .replace(DOCUMENTATION_V27_VERSION_LABELS_TEXT, DOCUMENTATION_V28_VERSION_LABELS_TEXT)
2996
+ .replace(DOCUMENTATION_V27_DEEPER_DOCUMENTATION_TEXT, DOCUMENTATION_V28_DEEPER_DOCUMENTATION_TEXT)
2997
+ .replace(STALE_COMPARE_QUANTITY_SUPERSEDED_TEXT, STALE_CHANGE_FROM_QUANTITY_TEXT);
2998
+ const PRODUCT_GUIDE_V29_TEXT = PRODUCT_GUIDE_V28_TEXT
2999
+ .replace('# Meguro product guide v28', '# Meguro product guide v29')
3000
+ .replace('Published URI: `' + PRODUCT_GUIDE_V28_URI + '`', 'Published URI: `' + PRODUCT_GUIDE_V29_URI + '`')
3001
+ .replace(DOCUMENTATION_V27_VERSION_LABELS_TEXT, DOCUMENTATION_V28_VERSION_LABELS_TEXT)
3002
+ .replaceAll(GETTING_STARTED_V31_URI, GETTING_STARTED_V32_URI)
3003
+ .replaceAll(DOCUMENTATION_INDEX_V27_URI, DOCUMENTATION_INDEX_V28_URI)
3004
+ // The boundary sits immediately after the orientation, where a reader deciding whether Meguro
3005
+ // fits at all will meet it before investing in the rest of the guide.
3006
+ .replace('## Begin with live store facts', `${WHEN_NOT_TO_USE_SECTION_TEXT}\n\n## Begin with live store facts`)
3007
+ .replace(STALE_COMPARE_QUANTITY_SUPERSEDED_TEXT, STALE_CHANGE_FROM_QUANTITY_TEXT);
2049
3008
  const RECEIPT_GUIDE_V6_TEXT = simulationVocabularyText(
2050
3009
  RECEIPT_GUIDE_V5_TEXT
2051
3010
  .replace('# Meguro receipt guide v5', '# Meguro receipt guide v6')
@@ -2093,6 +3052,398 @@ const RECEIPT_GUIDE_V10_WITH_RETURN_RESOLUTIONS = RECEIPT_GUIDE_V9_TEXT
2093
3052
  .replace('Published URI: `' + RECEIPT_GUIDE_V9_URI + '`', 'Published URI: `' + RECEIPT_GUIDE_V10_URI + '`')
2094
3053
  .replace('## Field inventory', `${RETURN_RESOLUTION_EVIDENCE_GUIDANCE_TEXT}\n\n## Field inventory`);
2095
3054
  const RECEIPT_GUIDE_V10_TEXT = replaceDerivedFieldInventory(RECEIPT_GUIDE_V10_WITH_RETURN_RESOLUTIONS, RECEIPT_FIELDS_V10);
3055
+ const RECEIPT_GUIDE_V11_WITH_FINAL_GATE = RECEIPT_GUIDE_V10_TEXT
3056
+ .replace('# Meguro receipt guide v10', '# Meguro receipt guide v11')
3057
+ .replace('Published URI: `' + RECEIPT_GUIDE_V10_URI + '`', 'Published URI: `' + RECEIPT_GUIDE_V11_URI + '`')
3058
+ .replace('## Field inventory', `${COMPATIBILITY_AND_FINAL_GATE_GUIDANCE_TEXT}\n\n## Field inventory`);
3059
+ const RECEIPT_GUIDE_V11_TEXT = replaceDerivedFieldInventory(RECEIPT_GUIDE_V11_WITH_FINAL_GATE, RECEIPT_FIELDS_V10);
3060
+ const COMMITTED_CHANGE_REGISTER_GUIDANCE_TEXT = `## Complete committed change register
3061
+
3062
+ For newly issued receipts, \`changes[]\` comes from the accepted action's authoritative modeled
3063
+ before/after consequence, not from requested mutation fields. Each row names the operation and
3064
+ modeled entity type, carries the exact committed \`before\` and \`after\` values, and identifies its
3065
+ \`epistemic\` and \`source\` basis. Numeric rows may also carry \`delta\` and \`unit\`.
3066
+
3067
+ Requested values that did not commit do not appear. Normalized values are the committed values.
3068
+ Rejected actions do not create change rows. When later accepted actions produce the same public
3069
+ consequence fact byte-for-byte, the receipt records that public fact once; distinct before/after
3070
+ truth remains distinct. Historical issued receipt bytes and older guide versions do not change.`;
3071
+ const RECEIPT_GUIDE_V12_WITH_COMPLETE_CHANGES = RECEIPT_GUIDE_V11_TEXT
3072
+ .replace('# Meguro receipt guide v11', '# Meguro receipt guide v12')
3073
+ .replace('Published URI: `' + RECEIPT_GUIDE_V11_URI + '`', 'Published URI: `' + RECEIPT_GUIDE_V12_URI + '`')
3074
+ .replace('## Field inventory', `${COMMITTED_CHANGE_REGISTER_GUIDANCE_TEXT}\n\n## Field inventory`);
3075
+ const RECEIPT_GUIDE_V12_TEXT = replaceDerivedFieldInventory(RECEIPT_GUIDE_V12_WITH_COMPLETE_CHANGES, RECEIPT_FIELDS_V11);
3076
+ const RECEIPT_GUIDE_V13_WITH_TEMPLATE_CONTEXT = RECEIPT_GUIDE_V12_TEXT
3077
+ .replace('# Meguro receipt guide v12', '# Meguro receipt guide v13')
3078
+ .replace('Published URI: `' + RECEIPT_GUIDE_V12_URI + '`', 'Published URI: `' + RECEIPT_GUIDE_V13_URI + '`')
3079
+ .replace('## Field inventory', `${TEMPLATE_EVENT_RESOLUTION_GUIDANCE_TEXT}\n\n## Field inventory`);
3080
+ const RECEIPT_GUIDE_V13_TEXT = replaceDerivedFieldInventory(
3081
+ RECEIPT_GUIDE_V13_WITH_TEMPLATE_CONTEXT,
3082
+ RECEIPT_FIELDS_V13,
3083
+ );
3084
+ const RECEIPT_GUIDE_V14_WITH_TERMINOLOGY = RECEIPT_GUIDE_V13_TEXT
3085
+ .replace('# Meguro receipt guide v13', '# Meguro receipt guide v14')
3086
+ .replace('Published URI: `' + RECEIPT_GUIDE_V13_URI + '`', 'Published URI: `' + RECEIPT_GUIDE_V14_URI + '`')
3087
+ .replace('## Field inventory', `${RECEIPT_PRODUCT_TERMINOLOGY_GUIDANCE_TEXT}\n\n## Field inventory`);
3088
+ const RECEIPT_GUIDE_V14_TEXT = replaceDerivedFieldInventory(
3089
+ RECEIPT_GUIDE_V14_WITH_TERMINOLOGY,
3090
+ RECEIPT_FIELDS_V13,
3091
+ );
3092
+ /**
3093
+ * MEG-1034: the v1 capability boundary, published once as new immutable versions.
3094
+ *
3095
+ * The active documents taught verticals a v1 user cannot execute — Shopify Return writes, Gift Card
3096
+ * creation and readback, cross-location transfer — while describing aggregate scenario physics in
3097
+ * the same voice as served entities. These sections replace that teaching. Internal-only physics is
3098
+ * preserved and described as modeled evidence; deferred verticals appear once, as unavailable, with
3099
+ * no request shape, recipe, readback instruction or nearby substitute.
3100
+ */
3101
+ const V1_IDEMPOTENCY_REQUIREMENTS_TEXT = `For Admin GraphQL \`${ADMIN_API_SUPPORTED_VERSIONS.join(' and ')}\`, the authoritative set is:
3102
+ \`inventoryAdjustQuantities\` and \`refundCreate\` require
3103
+ \`@idempotent(key: String!)\`. Place \`@idempotent(key: $idempotencyKey)\` exactly once on the single
3104
+ supported mutation root field. The resolved key must be a non-empty string no larger than 256 bytes.
3105
+ Use the authority-derived example when present; unrelated roots must not receive this directive.`;
3106
+
3107
+ const V1_ORDER_REFUND_AUTHORITY_TEXT = `## Ordinary order refunds
3108
+
3109
+ \`refundCreate(input:)\` is the served financial write, and it issues cash only. It refunds a
3110
+ canonical Order — one your agent committed by completing a Draft Order.
3111
+
3112
+ Name the lines you are refunding. \`input.refundLineItems\` must carry at least one line item of that
3113
+ same committed Order, each with a positive whole \`quantity\` and each line named at most once. Value
3114
+ and currency come from the Order's own committed lines, never from the request, so \`input.currency\`
3115
+ may only repeat the Order's currency and there is no amount field to set. The cumulative refund cap
3116
+ is the Order's own outstanding paid amount. \`RefundInput.note\` is opaque customer text.
3117
+
3118
+ \`restockType\` chooses what happens to the units: \`RETURN\` restocks them and \`NO_RESTOCK\` does
3119
+ not. Those are the only two restock decisions this lane models, and the restock location is the
3120
+ Order's own — a caller-selected \`locationId\` is refused.
3121
+
3122
+ Read the committed Refund through \`Order.refunds\`; the Order's \`totalRefundedSet\` and the refunded
3123
+ leg of \`netPaymentSet\` answer for it too. Its id, order, amount, cumulative order total, and replay
3124
+ identity remain stable after checkpoint reopen. Reuse the same \`@idempotent\` key only for an exact
3125
+ replay; the replay returns the same Refund and applies no second commerce action or financial effect.
3126
+
3127
+ Amount-only refunds, explicit transaction routing, store credit, shipping, duties, discrepancy
3128
+ reasons, over-refunding, and a caller-selected \`processedAt\` are not v1 capabilities. Meguro serves
3129
+ no \`Order.transactions\`, so \`RefundInput.transactions\`, \`RefundInput.refundMethods\` and
3130
+ \`Customer.storeCreditAccounts\` are absent from the schema: naming one fails ordinary GraphQL
3131
+ validation rather than returning a substitute.
3132
+
3133
+ Return arrivals, returned units, restocking and their refund economics are modeled evidence produced
3134
+ by world physics. They are read as Impact evidence, never as a Shopify Return entity, and no Shopify
3135
+ Return write is served in v1.
3136
+
3137
+ Receipt and Impact footprints keep four distinct counts. \`acceptedMutationCalls\` includes accepted
3138
+ replays; \`rejectedMutationCalls\` counts refused calls; \`idempotentReplays\` identifies reused
3139
+ results; and \`appliedCommerceActions\` counts only newly applied modeled actions.`;
3140
+
3141
+ const V1_REFUND_EVIDENCE_TEXT = `## Refund evidence accounting
3142
+
3143
+ A cash refund of a canonical Order's committed lines uses the \`refundCreate\` authority, and it is
3144
+ the only served financial write. Modeled return and restocking economics are separate Impact
3145
+ evidence and select nothing on the Order. Receipt and Impact footprints distinguish accepted calls,
3146
+ rejected calls, idempotent replays, and newly applied commerce actions; read the resolution-specific
3147
+ change line for the exact lines and amount.`;
3148
+
3149
+ const V1_MODELED_EVIDENCE_TEXT = `## Served capability and modeled evidence
3150
+
3151
+ A practice store publishes two different kinds of fact, and a template declares them separately.
3152
+
3153
+ - **Served capability.** \`supportedReads\` and \`supportedWrites\` name Shopify Admin coordinates in
3154
+ Meguro's served 2026-07 subset. Every one of them is executable, and every write commits an entity
3155
+ you can read back through an official coordinate.
3156
+ - **Modeled evidence.** \`modeledEvidence\` names aggregate world physics: background sales, demand,
3157
+ baskets, return and restocking pressure, fulfillment pressure, loyalty-credit economics, cohort
3158
+ response and cross-location transfer physics. You read these as Impact evidence on the receipt.
3159
+
3160
+ Modeled evidence is never a served Shopify entity. Background sales and demand are not \`Order\`
3161
+ records, and background return, fulfillment, cohort and loyalty pressure is not a served entity of
3162
+ any kind. The only served Orders are the ones an agent commits through Draft-order completion, together
3163
+ with their canonical children. The shopper surface commits none: it serves UCP general access, which
3164
+ cannot collect payment or place an Order, so a checkout there ends at a buyer handoff.`;
3165
+
3166
+ // These six documents were issued before the shopper checkout withdrawal. Their issued bytes remain
3167
+ // fixed, so their own construction uses the issuance-time wording rather than the current v1 text.
3168
+ const ISSUED_ORDER_REFUND_AUTHORITY_TEXT = `## Ordinary order refunds
3169
+
3170
+ \`refundCreate(input:)\` is the served financial write, and it issues cash only. It refunds a
3171
+ canonical Order — one your agent committed by completing a Draft Order or a storefront checkout.
3172
+
3173
+ Name the lines you are refunding. \`input.refundLineItems\` must carry at least one line item of that
3174
+ same committed Order, each with a positive whole \`quantity\` and each line named at most once. Value
3175
+ and currency come from the Order's own committed lines, never from the request, so \`input.currency\`
3176
+ may only repeat the Order's currency and there is no amount field to set. The cumulative refund cap
3177
+ is the Order's own outstanding paid amount. \`RefundInput.note\` is opaque customer text.
3178
+
3179
+ \`restockType\` chooses what happens to the units: \`RETURN\` restocks them and \`NO_RESTOCK\` does
3180
+ not. Those are the only two restock decisions this lane models, and the restock location is the
3181
+ Order's own — a caller-selected \`locationId\` is refused.
3182
+
3183
+ Read the committed Refund through \`Order.refunds\`; the Order's \`totalRefundedSet\` and the refunded
3184
+ leg of \`netPaymentSet\` answer for it too. Its id, order, amount, cumulative order total, and replay
3185
+ identity remain stable after checkpoint reopen. Reuse the same \`@idempotent\` key only for an exact
3186
+ replay; the replay returns the same Refund and applies no second commerce action or financial effect.
3187
+
3188
+ Amount-only refunds, explicit transaction routing, store credit, shipping, duties, discrepancy
3189
+ reasons, over-refunding, and a caller-selected \`processedAt\` are not v1 capabilities. Meguro serves
3190
+ no \`Order.transactions\`, so \`RefundInput.transactions\`, \`RefundInput.refundMethods\` and
3191
+ \`Customer.storeCreditAccounts\` are absent from the schema: naming one fails ordinary GraphQL
3192
+ validation rather than returning a substitute.
3193
+
3194
+ Return arrivals, returned units, restocking and their refund economics are modeled evidence produced
3195
+ by world physics. They are read as Impact evidence, never as a Shopify Return entity, and no Shopify
3196
+ Return write is served in v1.
3197
+
3198
+ Receipt and Impact footprints keep four distinct counts. \`acceptedMutationCalls\` includes accepted
3199
+ replays; \`rejectedMutationCalls\` counts refused calls; \`idempotentReplays\` identifies reused
3200
+ results; and \`appliedCommerceActions\` counts only newly applied modeled actions.`;
3201
+ const ISSUED_MODELED_EVIDENCE_TEXT = `## Served capability and modeled evidence
3202
+
3203
+ A practice store publishes two different kinds of fact, and a template declares them separately.
3204
+
3205
+ - **Served capability.** \`supportedReads\` and \`supportedWrites\` name Shopify Admin coordinates in
3206
+ Meguro's served 2026-07 subset. Every one of them is executable, and every write commits an entity
3207
+ you can read back through an official coordinate.
3208
+ - **Modeled evidence.** \`modeledEvidence\` names aggregate world physics: background sales, demand,
3209
+ baskets, return and restocking pressure, fulfillment pressure, loyalty-credit economics, cohort
3210
+ response and cross-location transfer physics. You read these as Impact evidence on the receipt.
3211
+
3212
+ Modeled evidence is never a served Shopify entity. Background sales and demand are not \`Order\`
3213
+ records, and background return, fulfillment, cohort and loyalty pressure is not a served entity of
3214
+ any kind. The only served Orders are the ones an agent commits through Draft-order completion or a
3215
+ storefront checkout, together with their canonical children.`;
3216
+
3217
+ function issuedCheckoutEraDocumentationText(text) {
3218
+ return text
3219
+ .replace(V1_ORDER_REFUND_AUTHORITY_TEXT, ISSUED_ORDER_REFUND_AUTHORITY_TEXT)
3220
+ .replace(V1_MODELED_EVIDENCE_TEXT, ISSUED_MODELED_EVIDENCE_TEXT);
3221
+ }
3222
+
3223
+ const V1_VERTICAL_BOUNDARY_TEXT = `## Not available in v1
3224
+
3225
+ These Shopify verticals are deferred. Meguro serves no coordinate for them, so a document naming one
3226
+ fails ordinary GraphQL validation rather than returning a substitute.
3227
+
3228
+ - Arbitrary Product creation. Activate a pre-authored DRAFT Product with
3229
+ \`productUpdate(status: ACTIVE)\` instead.
3230
+ - Collections.
3231
+ - The Shopify Return lifecycle.
3232
+ - Persistent Customer history and enumerable customer-segment membership.
3233
+ - Gift Cards.
3234
+ - Cross-location inventory transfer as a Shopify operation.
3235
+
3236
+ Their modeled counterparts, where the world models one, remain internal physics and are reported as
3237
+ modeled evidence.`;
3238
+
3239
+ const V1_RECEIPT_RESOLUTION_TEXT = `## Order refund resolution and evidence accounting
3240
+
3241
+ A cash refund of a canonical Order's committed lines is a \`refundCreate(input:)\` resolution;
3242
+ \`RefundInput.note\` is opaque customer text and the amount is priced from the named lines. Store
3243
+ credit is not a v1 refund method. Modeled return and restocking economics are separate Impact
3244
+ evidence and are not a Shopify Return lifecycle. The \`storeCreditNetCostCents\` figures under
3245
+ \`financialSourceTotals\` are internal-only modeled loyalty-credit economics on the same footing: they
3246
+ report world physics, and no Shopify store-credit entity or refund method backs them.`;
3247
+
3248
+ const RECEIPT_GUIDE_V15_WITH_BOUNDARY = RECEIPT_GUIDE_V14_TEXT
3249
+ .replace('# Meguro receipt guide v14', '# Meguro receipt guide v15')
3250
+ .replace('Published URI: `' + RECEIPT_GUIDE_V14_URI + '`', 'Published URI: `' + RECEIPT_GUIDE_V15_URI + '`')
3251
+ .replace(`## Return resolution and evidence accounting
3252
+
3253
+ Return approval records policy approval only; it has no refund or store-credit economics.
3254
+ Return-linked cash is an explicit idempotent \`returnRefund(returnRefundInput:)\` resolution. Ordinary
3255
+ order cash and store credit are \`refundCreate(input:)\` resolutions; \`RefundInput.note\` is opaque
3256
+ customer text and never selects or changes a Return. The two financial resolutions are
3257
+ mutually exclusive for one return.`, V1_RECEIPT_RESOLUTION_TEXT);
3258
+ const RECEIPT_GUIDE_V15_TEXT = replaceDerivedFieldInventory(
3259
+ RECEIPT_GUIDE_V15_WITH_BOUNDARY,
3260
+ RECEIPT_FIELDS_V13,
3261
+ );
3262
+ const PUBLIC_RUN_RECEIPT_MARKDOWN_REPRESENTATION_TEXT = `## Public run receipt JSON and Markdown representations
3263
+
3264
+ This contract applies only to a presentation-bearing public **run** receipt. Its
3265
+ \`canonicalPath\` addresses canonical JSON; append \`.md\` to address its one fixed Markdown
3266
+ alternate. An issued canonical JSON artifact carries \`receipt.presentation.markdown\` with
3267
+ \`mediaType\`, \`bytes\`, \`sha256\`, and \`text\`.
3268
+
3269
+ Meguro compiles that object before immutable public-receipt storage. The stored canonical JSON
3270
+ artifact carries it, so the canonical JSON artifact and its digest cover that stored presentation.
3271
+ The \`.md\` resource serves exactly the stored \`receipt.presentation.markdown.text\`. It selects
3272
+ those bytes and does not render or classify prose during the request.
3273
+
3274
+ JSON and Markdown are distinct representations with distinct digests. \`Content-Digest\` and
3275
+ \`X-Meguro-SHA256\` cover the bytes of the representation selected by its fixed URI. The JSON
3276
+ resource advertises exactly one Markdown alternate through \`Link\`. \`HEAD\` returns the
3277
+ corresponding \`GET\` representation metadata with no body. \`Accept: text/markdown\` on the JSON
3278
+ URI does not switch representations and does not introduce \`Vary: Accept\`.
3279
+
3280
+ Only permitted browser origins may read \`Content-Digest\`, \`Link\`, and \`X-Meguro-SHA256\` through
3281
+ the served CORS exposure contract; do not infer universal origin admission. Unknown, malformed,
3282
+ expired, or non-presentation Markdown resources use the same opaque \`receipt-unavailable\` refusal
3283
+ and receipt-retention boundary as canonical JSON. Public Impact receipts have no Markdown
3284
+ representation contract.`;
3285
+ const RECEIPT_GUIDE_V16_WITH_MARKDOWN_REPRESENTATION = RECEIPT_GUIDE_V15_TEXT
3286
+ .replace('# Meguro receipt guide v15', '# Meguro receipt guide v16')
3287
+ .replace('Published URI: `' + RECEIPT_GUIDE_V15_URI + '`', 'Published URI: `' + RECEIPT_GUIDE_V16_URI + '`')
3288
+ .replace('## Field inventory', `${PUBLIC_RUN_RECEIPT_MARKDOWN_REPRESENTATION_TEXT}\n\n## Field inventory`);
3289
+ const RECEIPT_GUIDE_V16_TEXT = replaceDerivedFieldInventory(
3290
+ RECEIPT_GUIDE_V16_WITH_MARKDOWN_REPRESENTATION,
3291
+ RECEIPT_FIELDS_V13,
3292
+ );
3293
+
3294
+ // MEG-967: `send_winback_offer` commits one operating cost —
3295
+ // customerCount x (contactCostCents + annoyancePenaltyCents). Naming it an "offer cost" read as
3296
+ // offer value, which the discount governs instead. Publish the corrected field name as one new
3297
+ // generation; v4-v16 keep their bytes and their original name.
3298
+ const RECEIPT_GUIDE_V17_TEXT = RECEIPT_GUIDE_V16_TEXT
3299
+ .replace('# Meguro receipt guide v16', '# Meguro receipt guide v17')
3300
+ .replace('Published URI: `' + RECEIPT_GUIDE_V16_URI + '`', 'Published URI: `' + RECEIPT_GUIDE_V17_URI + '`')
3301
+ .replaceAll('winbackOfferCostCents', 'winbackContactRecoveryCostCents');
3302
+
3303
+ const DOCUMENTATION_V29_VERSION_LABELS_TEXT = versionLabelsText(DOCUMENTATION_CURRENCY_V29);
3304
+ const DOCUMENTATION_V29_DEEPER_DOCUMENTATION_TEXT = deeperDocumentationText(DOCUMENTATION_CURRENCY_V29);
3305
+ const DOCUMENTATION_V30_VERSION_LABELS_TEXT = versionLabelsText(DOCUMENTATION_CURRENCY_V30);
3306
+ const DOCUMENTATION_V30_DEEPER_DOCUMENTATION_TEXT = deeperDocumentationText(DOCUMENTATION_CURRENCY_V30);
3307
+ const DOCUMENTATION_V33_VERSION_LABELS_TEXT = versionLabelsText(DOCUMENTATION_CURRENCY_V33);
3308
+ const DOCUMENTATION_V33_DEEPER_DOCUMENTATION_TEXT = deeperDocumentationText(DOCUMENTATION_CURRENCY_V33);
3309
+ const DOCUMENTATION_V34_VERSION_LABELS_TEXT = versionLabelsText(DOCUMENTATION_CURRENCY_V34);
3310
+ const DOCUMENTATION_V34_DEEPER_DOCUMENTATION_TEXT = deeperDocumentationText(DOCUMENTATION_CURRENCY_V34);
3311
+ const DOCUMENTATION_V35_VERSION_LABELS_TEXT = versionLabelsText(DOCUMENTATION_CURRENCY_V35);
3312
+ const DOCUMENTATION_V35_DEEPER_DOCUMENTATION_TEXT = deeperDocumentationText(DOCUMENTATION_CURRENCY_V35);
3313
+
3314
+ const GETTING_STARTED_V33_TEXT = GETTING_STARTED_V32_TEXT
3315
+ .replace('# Getting started with Meguro v32', '# Getting started with Meguro v33')
3316
+ .replace('Published URI: `' + GETTING_STARTED_V32_URI + '`', 'Published URI: `' + GETTING_STARTED_V33_URI + '`')
3317
+ .replace(DOCUMENTATION_V28_VERSION_LABELS_TEXT, DOCUMENTATION_V29_VERSION_LABELS_TEXT)
3318
+ .replace(DOCUMENTATION_V28_DEEPER_DOCUMENTATION_TEXT, DOCUMENTATION_V29_DEEPER_DOCUMENTATION_TEXT)
3319
+ .replaceAll(RECEIPT_GUIDE_V14_URI, RECEIPT_GUIDE_V15_URI)
3320
+ .replace(CORRECTED_IDEMPOTENCY_REQUIREMENTS_TEXT, V1_IDEMPOTENCY_REQUIREMENTS_TEXT)
3321
+ .replace(ORDER_REFUND_EVIDENCE_GUIDANCE_TEXT, V1_REFUND_EVIDENCE_TEXT)
3322
+ .replace(ORDER_REFUND_AUTHORITY_GUIDANCE_TEXT, V1_ORDER_REFUND_AUTHORITY_TEXT)
3323
+ .replace(`${ORDER_REFUND_LOYALTY_GUIDANCE_TEXT}\n\n`, '')
3324
+ .replace('## Deeper in-band documentation', `${V1_MODELED_EVIDENCE_TEXT}\n\n${V1_VERTICAL_BOUNDARY_TEXT}\n\n## Deeper in-band documentation`);
3325
+
3326
+ const GETTING_STARTED_V34_SUCCESSOR_TEXT = GETTING_STARTED_V33_TEXT
3327
+ .replace('# Getting started with Meguro v33', '# Getting started with Meguro v34')
3328
+ .replace('Published URI: `' + GETTING_STARTED_V33_URI + '`', 'Published URI: `' + GETTING_STARTED_V34_URI + '`')
3329
+ .replace(DOCUMENTATION_V29_VERSION_LABELS_TEXT, DOCUMENTATION_V30_VERSION_LABELS_TEXT)
3330
+ .replace(DOCUMENTATION_V29_DEEPER_DOCUMENTATION_TEXT, DOCUMENTATION_V30_DEEPER_DOCUMENTATION_TEXT)
3331
+ .replaceAll(DOCUMENTATION_INDEX_V29_URI, DOCUMENTATION_INDEX_V30_URI)
3332
+ .replace(`1. Call \`templates_list()\` to discover the exact supported template keys.
3333
+ 2. Call \`stores_list()\`; reuse an owned practice store or call
3334
+ \`store_create({ templateKey })\` with a key returned by \`templates_list\`.`, `Canonical cold sequence: \`templates_list\` → \`template_get\` → \`store_create\` → \`practice_run_start\`.
3335
+
3336
+ 1. Call \`templates_list()\` to discover the exact supported template keys. It is the compact
3337
+ complete catalog: every row carries \`key\`, \`label\`, \`category\`, \`recommended\`, \`bestFor\`
3338
+ and \`recommendedRunDays\` — enough to choose, and no contracts.
3339
+ 2. Call \`template_get({ templateKey })\` for the key you are considering. It returns that one
3340
+ template's complete record: what the agent sees, timing, supported reads and writes, operation
3341
+ contracts, unsupported contracts, capability boundaries, modeled evidence and physics, and
3342
+ rubric fields. Choose from the catalog, then read the template you chose.
3343
+ 3. Call \`stores_list()\`; reuse an owned practice store or call
3344
+ \`store_create({ templateKey })\` with a key returned by \`templates_list\`.`)
3345
+ .replace(
3346
+ '| Which templates are available? | Call \\`templates_list\\`. |',
3347
+ '| Which templates are available? | Call \\`templates_list\\` to choose, then \\`template_get({ templateKey })\\` for that template\'s contracts and boundaries. |',
3348
+ );
3349
+ const GETTING_STARTED_V34_TEXT = issuedCheckoutEraDocumentationText(GETTING_STARTED_V34_SUCCESSOR_TEXT);
3350
+
3351
+ const PRODUCT_GUIDE_V30_TEXT = PRODUCT_GUIDE_V29_TEXT
3352
+ .replace('# Meguro product guide v29', '# Meguro product guide v30')
3353
+ .replace('Published URI: `' + PRODUCT_GUIDE_V29_URI + '`', 'Published URI: `' + PRODUCT_GUIDE_V30_URI + '`')
3354
+ .replace(DOCUMENTATION_V28_VERSION_LABELS_TEXT, DOCUMENTATION_V29_VERSION_LABELS_TEXT)
3355
+ .replaceAll(GETTING_STARTED_V32_URI, GETTING_STARTED_V33_URI)
3356
+ .replaceAll(DOCUMENTATION_INDEX_V28_URI, DOCUMENTATION_INDEX_V29_URI)
3357
+ .replaceAll(RECEIPT_GUIDE_V14_URI, RECEIPT_GUIDE_V15_URI)
3358
+ .replace(CORRECTED_IDEMPOTENCY_REQUIREMENTS_TEXT, V1_IDEMPOTENCY_REQUIREMENTS_TEXT)
3359
+ .replace(ORDER_REFUND_EVIDENCE_GUIDANCE_TEXT, V1_REFUND_EVIDENCE_TEXT)
3360
+ .replace(ORDER_REFUND_AUTHORITY_GUIDANCE_TEXT, V1_ORDER_REFUND_AUTHORITY_TEXT)
3361
+ .replace(`${ORDER_REFUND_LOYALTY_GUIDANCE_TEXT}\n\n`, '')
3362
+ .replace('## Begin with live store facts', `${V1_MODELED_EVIDENCE_TEXT}\n\n${V1_VERTICAL_BOUNDARY_TEXT}\n\n## Begin with live store facts`);
3363
+
3364
+ const PRODUCT_GUIDE_V31_SUCCESSOR_TEXT = PRODUCT_GUIDE_V30_TEXT
3365
+ .replace('# Meguro product guide v30', '# Meguro product guide v31')
3366
+ .replace('Published URI: `' + PRODUCT_GUIDE_V30_URI + '`', 'Published URI: `' + PRODUCT_GUIDE_V31_URI + '`')
3367
+ .replace(DOCUMENTATION_V29_VERSION_LABELS_TEXT, DOCUMENTATION_V30_VERSION_LABELS_TEXT)
3368
+ .replaceAll(GETTING_STARTED_V33_URI, GETTING_STARTED_V34_URI)
3369
+ .replaceAll(DOCUMENTATION_INDEX_V29_URI, DOCUMENTATION_INDEX_V30_URI);
3370
+ const PRODUCT_GUIDE_V31_TEXT = issuedCheckoutEraDocumentationText(PRODUCT_GUIDE_V31_SUCCESSOR_TEXT);
3371
+
3372
+ const CANONICAL_ADVANCE_CURSOR_GUIDANCE_TEXT = `## One server-owned advance cursor
3373
+
3374
+ Every practice-run start and status response carries \`practiceRun.advanceCursor\` with exactly
3375
+ \`expectedDay\` and \`expectedCallSeq\`. Copy that object unchanged into the next
3376
+ \`practice_run_advance\` call or HTTP advance body. Do not choose between \`currentDay\` and
3377
+ \`watermarkDay\`, and do not combine call-sequence fields from separate reads.
3378
+
3379
+ Start, accepted-call status, zero-call status, advance, checkpoint, terminal confirmation,
3380
+ refusal recovery, checkpoint reopen, and completed status all return the same server-owned shape.
3381
+ A stale cursor fails closed and moves no Store time; the refusal returns a fresh \`advanceCursor\`
3382
+ for one exact retry.`;
3383
+
3384
+ const GETTING_STARTED_V35_SUCCESSOR_TEXT = GETTING_STARTED_V34_SUCCESSOR_TEXT
3385
+ .replace('# Getting started with Meguro v34', '# Getting started with Meguro v35')
3386
+ .replace('Published URI: `' + GETTING_STARTED_V34_URI + '`', 'Published URI: `' + GETTING_STARTED_V35_URI + '`')
3387
+ .replace(DOCUMENTATION_V30_VERSION_LABELS_TEXT, DOCUMENTATION_V33_VERSION_LABELS_TEXT)
3388
+ .replace(DOCUMENTATION_V30_DEEPER_DOCUMENTATION_TEXT, DOCUMENTATION_V33_DEEPER_DOCUMENTATION_TEXT)
3389
+ .replaceAll(DOCUMENTATION_INDEX_V30_URI, DOCUMENTATION_INDEX_V33_URI)
3390
+ .replace(`- \`storeId\` is the canonical public id of a practice store. \`worldId\` is the legacy alias for the
3391
+ same id; prefer \`storeId\` in new integrations.`, `- \`storeId\` is the public id of a practice store. Pass it unchanged to
3392
+ \`get_connection_details\` and \`practice_run_start\`.
3393
+ - When declaring an external-agent source revision, use \`externalAgent.commitSha\`.`)
3394
+ .replace(ADVANCE_CURSOR_GUIDANCE_TEXT, CANONICAL_ADVANCE_CURSOR_GUIDANCE_TEXT);
3395
+ const GETTING_STARTED_V35_TEXT = issuedCheckoutEraDocumentationText(GETTING_STARTED_V35_SUCCESSOR_TEXT);
3396
+
3397
+ const GETTING_STARTED_V36_SUCCESSOR_TEXT = GETTING_STARTED_V35_SUCCESSOR_TEXT
3398
+ .replace('# Getting started with Meguro v35', '# Getting started with Meguro v36')
3399
+ .replace('Published URI: `' + GETTING_STARTED_V35_URI + '`', 'Published URI: `' + GETTING_STARTED_V36_URI + '`')
3400
+ .replace(DOCUMENTATION_V33_VERSION_LABELS_TEXT, DOCUMENTATION_V34_VERSION_LABELS_TEXT)
3401
+ .replace(DOCUMENTATION_V33_DEEPER_DOCUMENTATION_TEXT, DOCUMENTATION_V34_DEEPER_DOCUMENTATION_TEXT)
3402
+ .replaceAll(DOCUMENTATION_INDEX_V33_URI, DOCUMENTATION_INDEX_V34_URI)
3403
+ .replaceAll(GATE_POLICY_V4_URI, GATE_POLICY_V5_URI);
3404
+ const GETTING_STARTED_V36_TEXT = issuedCheckoutEraDocumentationText(GETTING_STARTED_V36_SUCCESSOR_TEXT);
3405
+
3406
+ const GETTING_STARTED_V37_TEXT = GETTING_STARTED_V36_SUCCESSOR_TEXT
3407
+ .replace('# Getting started with Meguro v36', '# Getting started with Meguro v37')
3408
+ .replace('Published URI: `' + GETTING_STARTED_V36_URI + '`', 'Published URI: `' + GETTING_STARTED_V37_URI + '`')
3409
+ .replace(DOCUMENTATION_V34_VERSION_LABELS_TEXT, DOCUMENTATION_V35_VERSION_LABELS_TEXT)
3410
+ .replace(DOCUMENTATION_V34_DEEPER_DOCUMENTATION_TEXT, DOCUMENTATION_V35_DEEPER_DOCUMENTATION_TEXT)
3411
+ .replaceAll(DOCUMENTATION_INDEX_V34_URI, DOCUMENTATION_INDEX_V35_URI)
3412
+ .replace('3. Call `get_connection_details({ storeId })`', '4. Call `get_connection_details({ storeId })`')
3413
+ .replace('4. Call `practice_run_start({ storeId, clock })`', '5. Call `practice_run_start({ storeId, clock })`')
3414
+ .replace('5. Run the commerce agent', '6. Run the commerce agent')
3415
+ .replace('6. Call `practice_run_status({ attemptId })`', '7. Call `practice_run_status({ attemptId })`')
3416
+ .replace('7. Call `practice_run_advance({ attemptId, days, advanceCursor })`', '8. Call `practice_run_advance({ attemptId, days, advanceCursor })`')
3417
+ .replace('8. Call `practice_run_finish({ attemptId })`', '9. Call `practice_run_finish({ attemptId })`')
3418
+ .replace('9. Call `practice_run_report({ attemptId })`', '10. Call `practice_run_report({ attemptId })`');
3419
+
3420
+ const PRODUCT_GUIDE_V32_SUCCESSOR_TEXT = PRODUCT_GUIDE_V31_SUCCESSOR_TEXT
3421
+ .replace('# Meguro product guide v31', '# Meguro product guide v32')
3422
+ .replace('Published URI: `' + PRODUCT_GUIDE_V31_URI + '`', 'Published URI: `' + PRODUCT_GUIDE_V32_URI + '`')
3423
+ .replace(DOCUMENTATION_V30_VERSION_LABELS_TEXT, DOCUMENTATION_V33_VERSION_LABELS_TEXT)
3424
+ .replaceAll(GETTING_STARTED_V34_URI, GETTING_STARTED_V35_URI)
3425
+ .replaceAll(DOCUMENTATION_INDEX_V30_URI, DOCUMENTATION_INDEX_V33_URI)
3426
+ .replace(ADVANCE_CURSOR_GUIDANCE_TEXT, CANONICAL_ADVANCE_CURSOR_GUIDANCE_TEXT);
3427
+ const PRODUCT_GUIDE_V32_TEXT = issuedCheckoutEraDocumentationText(PRODUCT_GUIDE_V32_SUCCESSOR_TEXT);
3428
+
3429
+ const PRODUCT_GUIDE_V33_SUCCESSOR_TEXT = PRODUCT_GUIDE_V32_SUCCESSOR_TEXT
3430
+ .replace('# Meguro product guide v32', '# Meguro product guide v33')
3431
+ .replace('Published URI: `' + PRODUCT_GUIDE_V32_URI + '`', 'Published URI: `' + PRODUCT_GUIDE_V33_URI + '`')
3432
+ .replace(DOCUMENTATION_V33_VERSION_LABELS_TEXT, DOCUMENTATION_V34_VERSION_LABELS_TEXT)
3433
+ .replaceAll(GETTING_STARTED_V35_URI, GETTING_STARTED_V36_URI)
3434
+ .replaceAll(DOCUMENTATION_INDEX_V33_URI, DOCUMENTATION_INDEX_V34_URI)
3435
+ .replaceAll(RECEIPT_GUIDE_V15_URI, RECEIPT_GUIDE_V17_URI)
3436
+ .replaceAll(GATE_POLICY_V3_URI, GATE_POLICY_V5_URI)
3437
+ .replaceAll(GATE_POLICY_V4_URI, GATE_POLICY_V5_URI);
3438
+ const PRODUCT_GUIDE_V33_TEXT = issuedCheckoutEraDocumentationText(PRODUCT_GUIDE_V33_SUCCESSOR_TEXT);
3439
+
3440
+ const PRODUCT_GUIDE_V34_TEXT = PRODUCT_GUIDE_V33_SUCCESSOR_TEXT
3441
+ .replace('# Meguro product guide v33', '# Meguro product guide v34')
3442
+ .replace('Published URI: `' + PRODUCT_GUIDE_V33_URI + '`', 'Published URI: `' + PRODUCT_GUIDE_V34_URI + '`')
3443
+ .replace(DOCUMENTATION_V34_VERSION_LABELS_TEXT, DOCUMENTATION_V35_VERSION_LABELS_TEXT)
3444
+ .replaceAll(GETTING_STARTED_V36_URI, GETTING_STARTED_V37_URI)
3445
+ .replaceAll(DOCUMENTATION_INDEX_V34_URI, DOCUMENTATION_INDEX_V35_URI);
3446
+
2096
3447
  const GATE_POLICY_V2_TEXT = simulationVocabularyText(
2097
3448
  GATE_POLICY_TEXT
2098
3449
  .replace('# Meguro Gate policy v1', '# Meguro Gate policy v2')
@@ -2105,6 +3456,11 @@ const GATE_POLICY_V1_CHECK_TEXT = GATE_POLICY_V1_CHECKS.map((check) => `### ${ch
2105
3456
  - Flip condition: ${check.flip}.`).join('\n\n');
2106
3457
  const GATE_POLICY_V3_CHECK_TEXT = GATE_POLICY_V3_CHECKS.map((check) => `### ${check.name}
2107
3458
 
3459
+ - Receipt facts: ${check.facts.map((fact) => `\`${fact}\``).join(', ')}
3460
+ - Threshold: ${check.threshold}.
3461
+ - Flip condition: ${check.flip}.`).join('\n\n');
3462
+ const GATE_POLICY_V6_CHECK_TEXT = GATE_POLICY_V6_CHECKS.map((check) => `### ${check.name}
3463
+
2108
3464
  - Receipt facts: ${check.facts.map((fact) => `\`${fact}\``).join(', ')}
2109
3465
  - Threshold: ${check.threshold}.
2110
3466
  - Flip condition: ${check.flip}.`).join('\n\n');
@@ -2134,6 +3490,107 @@ corrects its fact-path addressing against the complete canonical verdict payload
2134
3490
  the runtime thresholds or either historical documentation resource. Versions 1 and 2 retain their
2135
3491
  original bytes and digests, while this corrected resource remains immutable at \`${GATE_POLICY_V3_URI}\`.`,
2136
3492
  );
3493
+ const GATE_POLICY_V4_TEXT = GATE_POLICY_V3_TEXT
3494
+ .replace('# Meguro Gate policy v3', '# Meguro Configured Receipt Gate policy v4')
3495
+ .replace(`Published URI: \`${GATE_POLICY_V3_URI}\``, `Published URI: \`${GATE_POLICY_V4_URI}\``)
3496
+ .replace('## Canonical fact root', `${RECEIPT_PRODUCT_TERMINOLOGY_GUIDANCE_TEXT}\n\n## Canonical fact root`);
3497
+ const GATE_POLICY_V5_TEXT = GATE_POLICY_V4_TEXT
3498
+ .replace('# Meguro Configured Receipt Gate policy v4', '# Meguro Configured Receipt Gate policy v5')
3499
+ .replace('Published URI: `' + GATE_POLICY_V4_URI + '`', 'Published URI: `' + GATE_POLICY_V5_URI + '`')
3500
+ .replaceAll(GATE_POLICY_V3_URI, GATE_POLICY_V5_URI)
3501
+ .replace(
3502
+ 'Documentation version 3\ncorrects its fact-path addressing against the complete canonical verdict payload;',
3503
+ 'Documentation version 5\npublishes that fact-path addressing against the complete canonical verdict payload;',
3504
+ )
3505
+ .replace(
3506
+ 'Versions 1 and 2 retain their\noriginal bytes and digests',
3507
+ 'Versions 1 through 4 retain their\noriginal bytes and digests',
3508
+ );
3509
+
3510
+ // MEG-1204: one atomic generation. Each new version carries every correction that applies to it and
3511
+ // no other movement; v5/v37/v34/v17/v35 and earlier keep their exact bytes and digests.
3512
+ const GATE_POLICY_V6_TEXT = GATE_POLICY_V5_TEXT
3513
+ .replace('# Meguro Configured Receipt Gate policy v5', '# Meguro Configured Receipt Gate policy v6')
3514
+ .replaceAll(GATE_POLICY_V5_URI, GATE_POLICY_V6_URI)
3515
+ .replace(GATE_POLICY_V3_CHECK_TEXT, GATE_POLICY_V6_CHECK_TEXT)
3516
+ .replace(MUTABLE_GATE_ABSENCE_TEXT, STATE_NEUTRAL_GATE_PRESENCE_TEXT)
3517
+ .replace('Documentation version 5\npublishes', 'Documentation version 6\npublishes')
3518
+ .replace('Versions 1 through 4 retain their\noriginal bytes and digests', 'Versions 1 through 5 retain their\noriginal bytes and digests');
3519
+
3520
+ const RECEIPT_GUIDE_V18_FIELD_INDEX_HEADING_TEXT = `## Generated field index
3521
+
3522
+ This section is a generated index of paths, not an authored interpretation. Every documented path
3523
+ below participates in the bidirectional completeness guard: it proves that every schema path is
3524
+ documented and that no documented path has left its schema. It does not establish what a field
3525
+ means; read the authored sections above for meaning, basis, and limits. \`[]\` means each array
3526
+ item. A field whose value is an opaque, separately versioned object is documented at that object
3527
+ boundary and by its own schema section.`;
3528
+ const RECEIPT_GUIDE_V17_FIELD_INVENTORY_HEADING_TEXT = `## Field inventory
3529
+
3530
+ Every documented path below participates in the bidirectional completeness guard. \`[]\` means each
3531
+ array item. A field whose value is an opaque, separately versioned object is documented at that
3532
+ object boundary and by its own schema section.`;
3533
+ const RECEIPT_GUIDE_V17_WINBACK_MEANING_TEXT = ' — Recorded winback offer cost cents in meguro.hosted-impact-report.v1; interpret it with that schema\'s basis and adjacent evidence fields.';
3534
+ const RECEIPT_GUIDE_V18_WINBACK_MEANING_TEXT = ' — The per-contact recovery operating cost in cents: contact cost plus annoyance penalty for each contacted customer. It is an operating cost, distinct from any discount that changes the recovered price.';
3535
+ const RECEIPT_GUIDE_V18_TEXT = RECEIPT_GUIDE_V17_TEXT
3536
+ .replace('# Meguro receipt guide v17', '# Meguro receipt guide v18')
3537
+ .replaceAll(RECEIPT_GUIDE_V17_URI, RECEIPT_GUIDE_V18_URI)
3538
+ .replace(MUTABLE_GATE_ABSENCE_TEXT, STATE_NEUTRAL_GATE_PRESENCE_TEXT)
3539
+ .replace(RECEIPT_GUIDE_V17_FIELD_INVENTORY_HEADING_TEXT, RECEIPT_GUIDE_V18_FIELD_INDEX_HEADING_TEXT)
3540
+ .replaceAll(RECEIPT_GUIDE_V17_WINBACK_MEANING_TEXT, RECEIPT_GUIDE_V18_WINBACK_MEANING_TEXT);
3541
+
3542
+ const DOCUMENTATION_V36_VERSION_LABELS_TEXT = versionLabelsText(DOCUMENTATION_CURRENCY_V36);
3543
+ const DOCUMENTATION_V36_DEEPER_DOCUMENTATION_TEXT = deeperDocumentationText(DOCUMENTATION_CURRENCY_V36);
3544
+ const DOCUMENTATION_V37_VERSION_LABELS_TEXT = versionLabelsText(DOCUMENTATION_CURRENCY_V37);
3545
+ const DOCUMENTATION_V37_DEEPER_DOCUMENTATION_TEXT = deeperDocumentationText(DOCUMENTATION_CURRENCY_V37);
3546
+
3547
+ const HISTORY_SPAN_BASIS_FACT_TEXT = `Each practice store's history span is a live per-store fact. Its immutable creation basis is
3548
+ \`historySpan.creation\`: \`historySpan.creation.startDate\`, \`historySpan.creation.endDate\`, and
3549
+ \`historySpan.creation.days\` always describe the generated span. Its live queryable basis is
3550
+ \`historySpan.current.days\`, which can advance when a run advances Store time. Do not combine fields
3551
+ across those structures.`;
3552
+ const HOSTED_REAL_STORE_HISTORY_LANE_GUIDANCE_TEXT = `Meguro's separate real-store history lane is served through hosted OAuth MCP and public STDIO. Call
3553
+ \`runs_list\` to discover history runs, \`run_status\` to inspect one, \`run_report\` to read its report,
3554
+ and \`twin_diff\` only for a valid recorded history-run pair.`;
3555
+
3556
+ const GETTING_STARTED_V38_TEXT = GETTING_STARTED_V37_TEXT
3557
+ .replace('# Getting started with Meguro v37', '# Getting started with Meguro v38')
3558
+ .replaceAll(GETTING_STARTED_V37_URI, GETTING_STARTED_V38_URI)
3559
+ .replace(DOCUMENTATION_V35_VERSION_LABELS_TEXT, DOCUMENTATION_V36_VERSION_LABELS_TEXT)
3560
+ .replace(DOCUMENTATION_V35_DEEPER_DOCUMENTATION_TEXT, DOCUMENTATION_V36_DEEPER_DOCUMENTATION_TEXT)
3561
+ .replace(MUTABLE_GATE_ABSENCE_TEXT, STATE_NEUTRAL_GATE_PRESENCE_TEXT);
3562
+
3563
+ const PRODUCT_GUIDE_V35_TEXT = PRODUCT_GUIDE_V34_TEXT
3564
+ .replace('# Meguro product guide v34', '# Meguro product guide v35')
3565
+ .replaceAll(PRODUCT_GUIDE_V34_URI, PRODUCT_GUIDE_V35_URI)
3566
+ .replace(DOCUMENTATION_V35_VERSION_LABELS_TEXT, DOCUMENTATION_V36_VERSION_LABELS_TEXT)
3567
+ .replaceAll(GETTING_STARTED_V37_URI, GETTING_STARTED_V38_URI)
3568
+ .replaceAll(DOCUMENTATION_INDEX_V35_URI, DOCUMENTATION_INDEX_V36_URI)
3569
+ .replaceAll(RECEIPT_GUIDE_V17_URI, RECEIPT_GUIDE_V18_URI)
3570
+ .replaceAll(GATE_POLICY_V5_URI, GATE_POLICY_V6_URI)
3571
+ .replace(MUTABLE_GATE_ABSENCE_TEXT, STATE_NEUTRAL_GATE_PRESENCE_TEXT);
3572
+
3573
+ const GETTING_STARTED_V39_TEXT = GETTING_STARTED_V38_TEXT
3574
+ .replace('# Getting started with Meguro v38', '# Getting started with Meguro v39')
3575
+ .replaceAll(GETTING_STARTED_V38_URI, GETTING_STARTED_V39_URI)
3576
+ .replace(DOCUMENTATION_V36_VERSION_LABELS_TEXT, DOCUMENTATION_V37_VERSION_LABELS_TEXT)
3577
+ .replace(DOCUMENTATION_V36_DEEPER_DOCUMENTATION_TEXT, DOCUMENTATION_V37_DEEPER_DOCUMENTATION_TEXT)
3578
+ .replaceAll(DOCUMENTATION_INDEX_V36_URI, DOCUMENTATION_INDEX_V37_URI)
3579
+ .replace(REAL_STORE_HISTORY_LANE_BRIDGE, HOSTED_REAL_STORE_HISTORY_LANE_GUIDANCE_TEXT)
3580
+ .replace("Each practice store's history span is a live per-store fact.", HISTORY_SPAN_BASIS_FACT_TEXT)
3581
+ .replaceAll('stores[].historySpan.days', 'stores[].historySpan.current.days')
3582
+ .replaceAll('historySpan.historyDays', 'historySpan.current.days');
3583
+
3584
+ const PRODUCT_GUIDE_V36_TEXT = PRODUCT_GUIDE_V35_TEXT
3585
+ .replace('# Meguro product guide v35', '# Meguro product guide v36')
3586
+ .replaceAll(PRODUCT_GUIDE_V35_URI, PRODUCT_GUIDE_V36_URI)
3587
+ .replace(DOCUMENTATION_V36_VERSION_LABELS_TEXT, DOCUMENTATION_V37_VERSION_LABELS_TEXT)
3588
+ .replaceAll(GETTING_STARTED_V38_URI, GETTING_STARTED_V39_URI)
3589
+ .replaceAll(DOCUMENTATION_INDEX_V36_URI, DOCUMENTATION_INDEX_V37_URI)
3590
+ .replace(REAL_STORE_HISTORY_LANE_BRIDGE, HOSTED_REAL_STORE_HISTORY_LANE_GUIDANCE_TEXT)
3591
+ .replace("Each practice store's history span is a live per-store fact.", HISTORY_SPAN_BASIS_FACT_TEXT)
3592
+ .replaceAll('stores[].historySpan.days', 'stores[].historySpan.current.days')
3593
+ .replaceAll('historySpan.historyDays', 'historySpan.current.days');
2137
3594
 
2138
3595
  function gatePolicyValueAt(value, path) {
2139
3596
  return path.replace(/\[(\d+)\]/gu, '.$1').split('.').reduce((current, key) => {
@@ -2401,6 +3858,195 @@ const CATALOG = buildDocumentationCatalog([
2401
3858
  description: 'Zero-prior-knowledge hosted sequence that defines Meguro, practice stores, Store time, runs, receipts, and the rehearsal boundary before operational guidance.',
2402
3859
  text: GETTING_STARTED_V18_TEXT,
2403
3860
  },
3861
+ {
3862
+ topic: 'getting-started',
3863
+ version: GETTING_STARTED_V19_VERSION,
3864
+ uri: GETTING_STARTED_V19_URI,
3865
+ name: 'Getting started with Meguro v19',
3866
+ title: 'Getting started with Meguro v19',
3867
+ description: 'Zero-prior-knowledge hosted sequence that defines Meguro, practice stores, Store time, runs, receipts, and the rehearsal boundary, with the server-owned 120-day ordinary-store history default and explicit direct-API override rule.',
3868
+ text: GETTING_STARTED_V19_TEXT,
3869
+ },
3870
+ {
3871
+ topic: 'getting-started',
3872
+ version: GETTING_STARTED_V20_VERSION,
3873
+ uri: GETTING_STARTED_V20_URI,
3874
+ name: 'Getting started with Meguro v20',
3875
+ title: 'Getting started with Meguro v20',
3876
+ description: 'Zero-prior-knowledge hosted sequence that preserves the rehearsal boundary and defines the normalized sample-store onboarding, visibility, discovery, permanent-claim, receipt, and metering contract.',
3877
+ text: GETTING_STARTED_V20_TEXT,
3878
+ },
3879
+ {
3880
+ topic: 'getting-started',
3881
+ version: GETTING_STARTED_V21_VERSION,
3882
+ uri: GETTING_STARTED_V21_URI,
3883
+ name: 'Getting started with Meguro v21',
3884
+ title: 'Getting started with Meguro v21',
3885
+ description: 'Zero-prior-knowledge hosted sequence that preserves the rehearsal boundary, normalized sample-store contract, and truthful shared store machinery for the explicit 90-day sample history configuration.',
3886
+ text: GETTING_STARTED_V21_TEXT,
3887
+ },
3888
+ {
3889
+ topic: 'getting-started',
3890
+ version: GETTING_STARTED_V22_VERSION,
3891
+ uri: GETTING_STARTED_V22_URI,
3892
+ name: 'Getting started with Meguro v22',
3893
+ title: 'Getting started with Meguro v22',
3894
+ description: 'Zero-prior-knowledge hosted sequence preserving the rehearsal boundary, with exact polymorphic Node compatibility scope and one server-owned final receipt Gate.',
3895
+ text: GETTING_STARTED_V22_TEXT,
3896
+ },
3897
+ {
3898
+ topic: 'getting-started',
3899
+ version: GETTING_STARTED_V23_VERSION,
3900
+ uri: GETTING_STARTED_V23_URI,
3901
+ name: 'Getting started with Meguro v23',
3902
+ title: 'Getting started with Meguro v23',
3903
+ description: 'Zero-prior-knowledge hosted sequence preserving the rehearsal boundary with one account-owned, user-chosen onboarding evaluation grant and server-owned per-template executable plans.',
3904
+ text: GETTING_STARTED_V23_TEXT,
3905
+ },
3906
+ {
3907
+ topic: 'getting-started',
3908
+ version: GETTING_STARTED_V24_VERSION,
3909
+ uri: GETTING_STARTED_V24_URI,
3910
+ name: 'Getting started with Meguro v24',
3911
+ title: 'Getting started with Meguro v24',
3912
+ description: 'Zero-prior-knowledge hosted sequence preserving the rehearsal boundary and routing receipt interpretation to the complete committed change register.',
3913
+ text: GETTING_STARTED_V24_TEXT,
3914
+ },
3915
+ {
3916
+ topic: 'getting-started',
3917
+ version: GETTING_STARTED_V25_VERSION,
3918
+ uri: GETTING_STARTED_V25_URI,
3919
+ name: 'Getting started with Meguro v25',
3920
+ title: 'Getting started with Meguro v25',
3921
+ description: 'Zero-prior-knowledge hosted sequence preserving the rehearsal boundary with creation-pinned template event resolution and explicit legacy unavailability.',
3922
+ text: GETTING_STARTED_V25_TEXT,
3923
+ },
3924
+ {
3925
+ topic: 'getting-started',
3926
+ version: GETTING_STARTED_V26_VERSION,
3927
+ uri: GETTING_STARTED_V26_URI,
3928
+ name: 'Getting started with Meguro v26',
3929
+ title: 'Getting started with Meguro v26',
3930
+ description: 'Zero-prior-knowledge hosted sequence preserving the rehearsal boundary with one server-owned, machine-copyable practice-run advance cursor.',
3931
+ text: GETTING_STARTED_V26_TEXT,
3932
+ },
3933
+ {
3934
+ topic: 'getting-started',
3935
+ version: GETTING_STARTED_V27_VERSION,
3936
+ uri: GETTING_STARTED_V27_URI,
3937
+ name: 'Getting started with Meguro v27',
3938
+ title: 'Getting started with Meguro v27',
3939
+ description: 'Zero-prior-knowledge hosted sequence carrying the server-owned, machine-copyable advance cursor and distinguishing automatic Recorded API behavior from the optional Configured Receipt Gate while preserving frozen machine contracts.',
3940
+ text: GETTING_STARTED_V27_TEXT,
3941
+ },
3942
+ {
3943
+ topic: 'getting-started',
3944
+ version: GETTING_STARTED_V28_VERSION,
3945
+ uri: GETTING_STARTED_V28_URI,
3946
+ name: 'Getting started with Meguro v28',
3947
+ title: 'Getting started with Meguro v28',
3948
+ description: 'Zero-prior-knowledge hosted sequence carrying the server-owned, machine-copyable advance cursor, distinguishing automatic Recorded API behavior from the optional Configured Receipt Gate, and using the pinned official Shopify refund, return-refund, store-credit, transaction, and suggested-outcome mechanics.',
3949
+ text: GETTING_STARTED_V28_TEXT,
3950
+ },
3951
+ {
3952
+ topic: 'getting-started',
3953
+ version: GETTING_STARTED_V29_VERSION,
3954
+ uri: GETTING_STARTED_V29_URI,
3955
+ name: 'Getting started with Meguro v29',
3956
+ title: 'Getting started with Meguro v29',
3957
+ description: 'Zero-prior-knowledge hosted sequence carrying the server-owned, machine-copyable advance cursor, distinguishing automatic Recorded API behavior from the optional Configured Receipt Gate, and keeping official Shopify return finance distinct from customer-linked loyalty GiftCard mechanics.',
3958
+ text: GETTING_STARTED_V29_TEXT,
3959
+ },
3960
+ {
3961
+ topic: 'getting-started',
3962
+ version: GETTING_STARTED_V30_VERSION,
3963
+ uri: GETTING_STARTED_V30_URI,
3964
+ name: 'Getting started with Meguro v30',
3965
+ title: 'Getting started with Meguro v30',
3966
+ description: 'Zero-prior-knowledge hosted sequence carrying the server-owned, machine-copyable practice-run advance cursor, distinguishing automatic Recorded API behavior from the optional Configured Receipt Gate, with Return-linked cash on returnRefund and ordinary cash or store-credit order refunds on refundCreate, including explicit method, replay, cap, and read-back rules.',
3967
+ text: GETTING_STARTED_V30_TEXT,
3968
+ },
3969
+ {
3970
+ topic: 'getting-started',
3971
+ version: GETTING_STARTED_V31_VERSION,
3972
+ uri: GETTING_STARTED_V31_URI,
3973
+ name: 'Getting started with Meguro v31',
3974
+ title: 'Getting started with Meguro v31',
3975
+ description: 'Zero-prior-knowledge hosted sequence carrying the server-owned, machine-copyable practice-run advance cursor, distinguishing automatic Recorded API behavior from the optional Configured Receipt Gate, with admitted Admin recipes that publish declared API version, intended templates, support boundary, empty-result or committed-consequence semantics, prerequisites, and one registry-owned copyable remedy.',
3976
+ text: GETTING_STARTED_V31_TEXT,
3977
+ },
3978
+ {
3979
+ topic: 'getting-started',
3980
+ version: GETTING_STARTED_V32_VERSION,
3981
+ uri: GETTING_STARTED_V32_URI,
3982
+ name: 'Getting started with Meguro v32',
3983
+ title: 'Getting started with Meguro v32',
3984
+ description: 'Zero-prior-knowledge hosted sequence carrying the server-owned, machine-copyable practice-run advance cursor, distinguishing automatic Recorded API behavior from the optional Configured Receipt Gate, with admitted Admin recipes that publish declared API version, intended templates, support boundary, empty-result or committed-consequence semantics, prerequisites, and one registry-owned copyable remedy.',
3985
+ text: GETTING_STARTED_V32_TEXT,
3986
+ },
3987
+ {
3988
+ topic: 'getting-started',
3989
+ version: GETTING_STARTED_V33_VERSION,
3990
+ uri: GETTING_STARTED_V33_URI,
3991
+ name: 'Getting started with Meguro v33',
3992
+ title: 'Getting started with Meguro v33',
3993
+ description: 'Zero-prior-knowledge hosted sequence carrying the server-owned, machine-copyable practice-run advance cursor, distinguishing automatic Recorded API behavior from the optional Configured Receipt Gate, with admitted Admin recipes that publish declared API version, intended templates, support boundary, empty-result or committed-consequence semantics, prerequisites, and one registry-owned copyable remedy, and publishing the v1 served, internal-only and deferred vertical boundary so served Admin capability and modeled Impact evidence are declared separately.',
3994
+ text: GETTING_STARTED_V33_TEXT,
3995
+ },
3996
+ {
3997
+ topic: 'getting-started',
3998
+ version: GETTING_STARTED_V34_VERSION,
3999
+ uri: GETTING_STARTED_V34_URI,
4000
+ name: 'Getting started with Meguro v34',
4001
+ title: 'Getting started with Meguro v34',
4002
+ description: 'Zero-prior-knowledge hosted sequence carrying the server-owned, machine-copyable practice-run advance cursor, distinguishing automatic Recorded API behavior from the optional Configured Receipt Gate, with admitted Admin recipes that publish declared API version, intended templates, support boundary, empty-result or committed-consequence semantics, prerequisites, and one registry-owned copyable remedy, and publishing the v1 served, internal-only and deferred vertical boundary so served Admin capability and modeled Impact evidence are declared separately, and publishing the two-tier template discovery hop so templates_list is the compact complete catalog and template_get returns one template\'s complete authoritative record before store_create.',
4003
+ text: GETTING_STARTED_V34_TEXT,
4004
+ },
4005
+ {
4006
+ topic: 'getting-started',
4007
+ version: GETTING_STARTED_V35_VERSION,
4008
+ uri: GETTING_STARTED_V35_URI,
4009
+ name: 'Getting started with Meguro v35',
4010
+ title: 'Getting started with Meguro v35',
4011
+ description: 'Zero-prior-knowledge hosted sequence teaching only canonical MCP request forms: storeId, externalAgent.commitSha, and the nested practiceRun.advanceCursor.',
4012
+ text: GETTING_STARTED_V35_TEXT,
4013
+ },
4014
+ {
4015
+ topic: 'getting-started',
4016
+ version: GETTING_STARTED_V36_VERSION,
4017
+ uri: GETTING_STARTED_V36_URI,
4018
+ name: 'Getting started with Meguro v36',
4019
+ title: 'Getting started with Meguro v36',
4020
+ description: 'Zero-prior-knowledge hosted sequence with one consistent current documentation generation and canonical MCP request forms.',
4021
+ text: GETTING_STARTED_V36_TEXT,
4022
+ },
4023
+ {
4024
+ topic: 'getting-started',
4025
+ version: GETTING_STARTED_V37_VERSION,
4026
+ uri: GETTING_STARTED_V37_URI,
4027
+ name: 'Getting started with Meguro v37',
4028
+ title: 'Getting started with Meguro v37',
4029
+ description: 'Zero-prior-knowledge hosted sequence with one consistent current documentation generation and canonical MCP request forms.',
4030
+ text: GETTING_STARTED_V37_TEXT,
4031
+ },
4032
+ {
4033
+ topic: 'getting-started',
4034
+ version: GETTING_STARTED_V38_VERSION,
4035
+ uri: GETTING_STARTED_V38_URI,
4036
+ name: 'Getting started with Meguro v38',
4037
+ title: 'Getting started with Meguro v38',
4038
+ description: 'Zero-prior-knowledge hosted sequence with state-neutral Configured Receipt Gate guidance and one consistent current documentation generation.',
4039
+ text: GETTING_STARTED_V38_TEXT,
4040
+ },
4041
+ {
4042
+ topic: 'getting-started',
4043
+ version: GETTING_STARTED_V39_VERSION,
4044
+ uri: GETTING_STARTED_V39_URI,
4045
+ name: 'Getting started with Meguro v39',
4046
+ title: 'Getting started with Meguro v39',
4047
+ description: 'Zero-prior-knowledge hosted sequence with labelled creation and current history bases, and truthful hosted real-store history-tool guidance.',
4048
+ text: GETTING_STARTED_V39_TEXT,
4049
+ },
2404
4050
  {
2405
4051
  topic: 'product-guide',
2406
4052
  version: PRODUCT_GUIDE_VERSION,
@@ -2537,6 +4183,195 @@ const CATALOG = buildDocumentationCatalog([
2537
4183
  description: 'Current product concepts with a zero-prior-knowledge primer before operational guidance.',
2538
4184
  text: PRODUCT_GUIDE_V15_TEXT,
2539
4185
  },
4186
+ {
4187
+ topic: 'product-guide',
4188
+ version: PRODUCT_GUIDE_V16_VERSION,
4189
+ uri: PRODUCT_GUIDE_V16_URI,
4190
+ name: 'Meguro product guide v16',
4191
+ title: 'Meguro product guide v16',
4192
+ description: 'Current product concepts with the server-owned 120-day ordinary-store history default and explicit direct-API override rule.',
4193
+ text: PRODUCT_GUIDE_V16_TEXT,
4194
+ },
4195
+ {
4196
+ topic: 'product-guide',
4197
+ version: PRODUCT_GUIDE_V17_VERSION,
4198
+ uri: PRODUCT_GUIDE_V17_URI,
4199
+ name: 'Meguro product guide v17',
4200
+ title: 'Meguro product guide v17',
4201
+ description: 'Current product concepts with one account-owned sample-onboarding authority and ordinary store, lifecycle, visibility, discovery, receipt, and metering behavior.',
4202
+ text: PRODUCT_GUIDE_V17_TEXT,
4203
+ },
4204
+ {
4205
+ topic: 'product-guide',
4206
+ version: PRODUCT_GUIDE_V18_VERSION,
4207
+ uri: PRODUCT_GUIDE_V18_URI,
4208
+ name: 'Meguro product guide v18',
4209
+ title: 'Meguro product guide v18',
4210
+ description: 'Current product concepts with one account-owned sample-onboarding authority and truthful shared store machinery for the explicit 90-day sample history configuration.',
4211
+ text: PRODUCT_GUIDE_V18_TEXT,
4212
+ },
4213
+ {
4214
+ topic: 'product-guide',
4215
+ version: PRODUCT_GUIDE_V19_VERSION,
4216
+ uri: PRODUCT_GUIDE_V19_URI,
4217
+ name: 'Meguro product guide v19',
4218
+ title: 'Meguro product guide v19',
4219
+ description: 'Current product concepts with exact polymorphic Node compatibility scope and one server-owned final receipt Gate.',
4220
+ text: PRODUCT_GUIDE_V19_TEXT,
4221
+ },
4222
+ {
4223
+ topic: 'product-guide',
4224
+ version: PRODUCT_GUIDE_V20_VERSION,
4225
+ uri: PRODUCT_GUIDE_V20_URI,
4226
+ name: 'Meguro product guide v20',
4227
+ title: 'Meguro product guide v20',
4228
+ description: 'Current product concepts preserving the rehearsal boundary with one atomic user-chosen onboarding evaluation grant, bounded receipt segments, and shared MCP/Console planning.',
4229
+ text: PRODUCT_GUIDE_V20_TEXT,
4230
+ },
4231
+ {
4232
+ topic: 'product-guide',
4233
+ version: PRODUCT_GUIDE_V21_VERSION,
4234
+ uri: PRODUCT_GUIDE_V21_URI,
4235
+ name: 'Meguro product guide v21',
4236
+ title: 'Meguro product guide v21',
4237
+ description: 'Current product concepts preserving the rehearsal boundary and routing receipt interpretation to the complete committed change register.',
4238
+ text: PRODUCT_GUIDE_V21_TEXT,
4239
+ },
4240
+ {
4241
+ topic: 'product-guide',
4242
+ version: PRODUCT_GUIDE_V22_VERSION,
4243
+ uri: PRODUCT_GUIDE_V22_URI,
4244
+ name: 'Meguro product guide v22',
4245
+ title: 'Meguro product guide v22',
4246
+ description: 'Current product concepts preserving the rehearsal boundary with creation-pinned template event resolution and no current-catalog reconstruction.',
4247
+ text: PRODUCT_GUIDE_V22_TEXT,
4248
+ },
4249
+ {
4250
+ topic: 'product-guide',
4251
+ version: PRODUCT_GUIDE_V23_VERSION,
4252
+ uri: PRODUCT_GUIDE_V23_URI,
4253
+ name: 'Meguro product guide v23',
4254
+ title: 'Meguro product guide v23',
4255
+ description: 'Current product concepts preserving the rehearsal boundary with one server-owned, machine-copyable practice-run advance cursor.',
4256
+ text: PRODUCT_GUIDE_V23_TEXT,
4257
+ },
4258
+ {
4259
+ topic: 'product-guide',
4260
+ version: PRODUCT_GUIDE_V24_VERSION,
4261
+ uri: PRODUCT_GUIDE_V24_URI,
4262
+ name: 'Meguro product guide v24',
4263
+ title: 'Meguro product guide v24',
4264
+ description: 'Current product concepts including the server-owned, machine-copyable advance cursor and distinguishing automatic Recorded API behavior from the optional Configured Receipt Gate while preserving frozen machine contracts.',
4265
+ text: PRODUCT_GUIDE_V24_TEXT,
4266
+ },
4267
+ {
4268
+ topic: 'product-guide',
4269
+ version: PRODUCT_GUIDE_V25_VERSION,
4270
+ uri: PRODUCT_GUIDE_V25_URI,
4271
+ name: 'Meguro product guide v25',
4272
+ title: 'Meguro product guide v25',
4273
+ description: 'Current product concepts including the server-owned, machine-copyable advance cursor, distinguishing automatic Recorded API behavior from the optional Configured Receipt Gate, with official Shopify return-finance mechanics and private receipt-owned rehearsal economics.',
4274
+ text: PRODUCT_GUIDE_V25_TEXT,
4275
+ },
4276
+ {
4277
+ topic: 'product-guide',
4278
+ version: PRODUCT_GUIDE_V26_VERSION,
4279
+ uri: PRODUCT_GUIDE_V26_URI,
4280
+ name: 'Meguro product guide v26',
4281
+ title: 'Meguro product guide v26',
4282
+ description: 'Current product concepts carrying the server-owned, machine-copyable advance cursor, distinguishing automatic Recorded API behavior from the optional Configured Receipt Gate, with official customer-linked loyalty GiftCards, bounded modeled economics, replay refusal, and distinct return store credit.',
4283
+ text: PRODUCT_GUIDE_V26_TEXT,
4284
+ },
4285
+ {
4286
+ topic: 'product-guide',
4287
+ version: PRODUCT_GUIDE_V27_VERSION,
4288
+ uri: PRODUCT_GUIDE_V27_URI,
4289
+ name: 'Meguro product guide v27',
4290
+ title: 'Meguro product guide v27',
4291
+ description: 'Current product concepts carrying the server-owned, machine-copyable practice-run advance cursor, distinguishing automatic Recorded API behavior from the optional Configured Receipt Gate, with one ordinary order-refund authority, explicit cash or store-credit method, opaque notes, cumulative paid-amount caps, stable replay, and no invented Return linkage.',
4292
+ text: PRODUCT_GUIDE_V27_TEXT,
4293
+ },
4294
+ {
4295
+ topic: 'product-guide',
4296
+ version: PRODUCT_GUIDE_V28_VERSION,
4297
+ uri: PRODUCT_GUIDE_V28_URI,
4298
+ name: 'Meguro product guide v28',
4299
+ title: 'Meguro product guide v28',
4300
+ description: 'Current product concepts carrying the server-owned, machine-copyable practice-run advance cursor, distinguishing automatic Recorded API behavior from the optional Configured Receipt Gate, with one ordinary order-refund authority, explicit cash or store-credit method, opaque notes, cumulative paid-amount caps, stable replay, and no invented Return linkage.',
4301
+ text: PRODUCT_GUIDE_V28_TEXT,
4302
+ },
4303
+ {
4304
+ topic: 'product-guide',
4305
+ version: PRODUCT_GUIDE_V29_VERSION,
4306
+ uri: PRODUCT_GUIDE_V29_URI,
4307
+ name: 'Meguro product guide v29',
4308
+ title: 'Meguro product guide v29',
4309
+ description: 'Current product concepts carrying the server-owned, machine-copyable practice-run advance cursor, distinguishing automatic Recorded API behavior from the optional Configured Receipt Gate, with one ordinary order-refund authority, explicit cash or store-credit method, opaque notes, cumulative paid-amount caps, stable replay, and no invented Return linkage.',
4310
+ text: PRODUCT_GUIDE_V29_TEXT,
4311
+ },
4312
+ {
4313
+ topic: 'product-guide',
4314
+ version: PRODUCT_GUIDE_V30_VERSION,
4315
+ uri: PRODUCT_GUIDE_V30_URI,
4316
+ name: 'Meguro product guide v30',
4317
+ title: 'Meguro product guide v30',
4318
+ description: 'Current product concepts carrying the server-owned, machine-copyable practice-run advance cursor, distinguishing automatic Recorded API behavior from the optional Configured Receipt Gate, with one ordinary order-refund authority that refunds named committed Order lines for cash, opaque notes, cumulative paid-amount caps, stable replay, and no invented Return linkage, and publishing the v1 served, internal-only and deferred vertical boundary so aggregate scenario physics is reported as modeled evidence rather than a Shopify entity.',
4319
+ text: PRODUCT_GUIDE_V30_TEXT,
4320
+ },
4321
+ {
4322
+ topic: 'product-guide',
4323
+ version: PRODUCT_GUIDE_V31_VERSION,
4324
+ uri: PRODUCT_GUIDE_V31_URI,
4325
+ name: 'Meguro product guide v31',
4326
+ title: 'Meguro product guide v31',
4327
+ description: 'Current product concepts carrying the server-owned, machine-copyable practice-run advance cursor, distinguishing automatic Recorded API behavior from the optional Configured Receipt Gate, with one ordinary order-refund authority that refunds named committed Order lines for cash, opaque notes, cumulative paid-amount caps, stable replay, and no invented Return linkage, and publishing the v1 served, internal-only and deferred vertical boundary so aggregate scenario physics is reported as modeled evidence rather than a Shopify entity, tracking the two-tier template discovery hop introduced in getting-started v34.',
4328
+ text: PRODUCT_GUIDE_V31_TEXT,
4329
+ },
4330
+ {
4331
+ topic: 'product-guide',
4332
+ version: PRODUCT_GUIDE_V32_VERSION,
4333
+ uri: PRODUCT_GUIDE_V32_URI,
4334
+ name: 'Meguro product guide v32',
4335
+ title: 'Meguro product guide v32',
4336
+ description: 'Current product concepts carrying only the server-owned, machine-copyable nested practice-run advance cursor.',
4337
+ text: PRODUCT_GUIDE_V32_TEXT,
4338
+ },
4339
+ {
4340
+ topic: 'product-guide',
4341
+ version: PRODUCT_GUIDE_V33_VERSION,
4342
+ uri: PRODUCT_GUIDE_V33_URI,
4343
+ name: 'Meguro product guide v33',
4344
+ title: 'Meguro product guide v33',
4345
+ description: 'Current product concepts with one consistent current documentation generation and the server-owned nested practice-run advance cursor.',
4346
+ text: PRODUCT_GUIDE_V33_TEXT,
4347
+ },
4348
+ {
4349
+ topic: 'product-guide',
4350
+ version: PRODUCT_GUIDE_V34_VERSION,
4351
+ uri: PRODUCT_GUIDE_V34_URI,
4352
+ name: 'Meguro product guide v34',
4353
+ title: 'Meguro product guide v34',
4354
+ description: 'Current product concepts with one consistent current documentation generation and the server-owned nested practice-run advance cursor.',
4355
+ text: PRODUCT_GUIDE_V34_TEXT,
4356
+ },
4357
+ {
4358
+ topic: 'product-guide',
4359
+ version: PRODUCT_GUIDE_V35_VERSION,
4360
+ uri: PRODUCT_GUIDE_V35_URI,
4361
+ name: 'Meguro product guide v35',
4362
+ title: 'Meguro product guide v35',
4363
+ description: 'Current product concepts with state-neutral Configured Receipt Gate guidance and one consistent current documentation generation.',
4364
+ text: PRODUCT_GUIDE_V35_TEXT,
4365
+ },
4366
+ {
4367
+ topic: 'product-guide',
4368
+ version: PRODUCT_GUIDE_V36_VERSION,
4369
+ uri: PRODUCT_GUIDE_V36_URI,
4370
+ name: 'Meguro product guide v36',
4371
+ title: 'Meguro product guide v36',
4372
+ description: 'Current product concepts with labelled creation and current history bases, and truthful hosted real-store history-tool guidance.',
4373
+ text: PRODUCT_GUIDE_V36_TEXT,
4374
+ },
2540
4375
  {
2541
4376
  topic: 'index',
2542
4377
  version: DOCUMENTATION_CURRENCY_V1.indexVersion,
@@ -2663,6 +4498,213 @@ const CATALOG = buildDocumentationCatalog([
2663
4498
  description: 'Immutable current-version pointers after the zero-prior-knowledge onboarding correction.',
2664
4499
  text: documentationIndexText(DOCUMENTATION_CURRENCY_V14, DOCUMENTATION_INDEX_V14_URI),
2665
4500
  },
4501
+ {
4502
+ topic: 'index',
4503
+ version: DOCUMENTATION_CURRENCY_V15.indexVersion,
4504
+ uri: DOCUMENTATION_INDEX_V15_URI,
4505
+ name: 'Meguro documentation index v15',
4506
+ title: 'Meguro documentation index v15',
4507
+ description: 'Immutable current-version pointers after the server-owned ordinary-store history-default mint.',
4508
+ text: documentationIndexText(DOCUMENTATION_CURRENCY_V15, DOCUMENTATION_INDEX_V15_URI),
4509
+ },
4510
+ {
4511
+ topic: 'index',
4512
+ version: DOCUMENTATION_CURRENCY_V16.indexVersion,
4513
+ uri: DOCUMENTATION_INDEX_V16_URI,
4514
+ name: 'Meguro documentation index v16',
4515
+ title: 'Meguro documentation index v16',
4516
+ description: 'Immutable current-version pointers after the sample-normalization closeout documentation mint.',
4517
+ text: documentationIndexText(DOCUMENTATION_CURRENCY_V16, DOCUMENTATION_INDEX_V16_URI),
4518
+ },
4519
+ {
4520
+ topic: 'index',
4521
+ version: DOCUMENTATION_CURRENCY_V17.indexVersion,
4522
+ uri: DOCUMENTATION_INDEX_V17_URI,
4523
+ name: 'Meguro documentation index v17',
4524
+ title: 'Meguro documentation index v17',
4525
+ description: 'Immutable current-version pointers after correcting the sample history configuration to use shared store machinery.',
4526
+ text: documentationIndexText(DOCUMENTATION_CURRENCY_V17, DOCUMENTATION_INDEX_V17_URI),
4527
+ },
4528
+ {
4529
+ topic: 'index',
4530
+ version: DOCUMENTATION_CURRENCY_V18.indexVersion,
4531
+ uri: DOCUMENTATION_INDEX_V18_URI,
4532
+ name: 'Meguro documentation index v18',
4533
+ title: 'Meguro documentation index v18',
4534
+ description: 'Immutable current-version pointers after closing polymorphic Node compatibility and final receipt Gate authority.',
4535
+ text: documentationIndexText(DOCUMENTATION_CURRENCY_V18, DOCUMENTATION_INDEX_V18_URI),
4536
+ },
4537
+ {
4538
+ topic: 'index',
4539
+ version: DOCUMENTATION_CURRENCY_V19.indexVersion,
4540
+ uri: DOCUMENTATION_INDEX_V19_URI,
4541
+ name: 'Meguro documentation index v19',
4542
+ title: 'Meguro documentation index v19',
4543
+ description: 'Immutable current-version pointers after the user-chosen onboarding evaluation grant mint.',
4544
+ text: documentationIndexText(DOCUMENTATION_CURRENCY_V19, DOCUMENTATION_INDEX_V19_URI),
4545
+ },
4546
+ {
4547
+ topic: 'index',
4548
+ version: DOCUMENTATION_CURRENCY_V20.indexVersion,
4549
+ uri: DOCUMENTATION_INDEX_V20_URI,
4550
+ name: 'Meguro documentation index v20',
4551
+ title: 'Meguro documentation index v20',
4552
+ description: 'Immutable current-version pointers after receipts adopted the complete committed change register.',
4553
+ text: documentationIndexText(DOCUMENTATION_CURRENCY_V20, DOCUMENTATION_INDEX_V20_URI),
4554
+ },
4555
+ {
4556
+ topic: 'index',
4557
+ version: DOCUMENTATION_CURRENCY_V21.indexVersion,
4558
+ uri: DOCUMENTATION_INDEX_V21_URI,
4559
+ name: 'Meguro documentation index v21',
4560
+ title: 'Meguro documentation index v21',
4561
+ description: 'Immutable current-version pointers after receipts adopted creation-pinned template event resolution.',
4562
+ text: documentationIndexText(DOCUMENTATION_CURRENCY_V21, DOCUMENTATION_INDEX_V21_URI),
4563
+ },
4564
+ {
4565
+ topic: 'index',
4566
+ version: DOCUMENTATION_CURRENCY_V22.indexVersion,
4567
+ uri: DOCUMENTATION_INDEX_V22_URI,
4568
+ name: 'Meguro documentation index v22',
4569
+ title: 'Meguro documentation index v22',
4570
+ description: 'Immutable current-version pointers after practice runs adopted one server-owned, machine-copyable advance cursor.',
4571
+ text: documentationIndexText(DOCUMENTATION_CURRENCY_V22, DOCUMENTATION_INDEX_V22_URI),
4572
+ },
4573
+ {
4574
+ topic: 'index',
4575
+ version: DOCUMENTATION_CURRENCY_V23.indexVersion,
4576
+ uri: DOCUMENTATION_INDEX_V23_URI,
4577
+ name: 'Meguro documentation index v23',
4578
+ title: 'Meguro documentation index v23',
4579
+ description: 'Immutable current-version pointers after disambiguating automatic Recorded API behavior from the optional Configured Receipt Gate.',
4580
+ text: documentationIndexText(DOCUMENTATION_CURRENCY_V23, DOCUMENTATION_INDEX_V23_URI),
4581
+ },
4582
+ {
4583
+ topic: 'index',
4584
+ version: DOCUMENTATION_CURRENCY_V24.indexVersion,
4585
+ uri: DOCUMENTATION_INDEX_V24_URI,
4586
+ name: 'Meguro documentation index v24',
4587
+ title: 'Meguro documentation index v24',
4588
+ description: 'Immutable current-version pointers after adopting official Shopify return-finance mechanics.',
4589
+ text: documentationIndexText(DOCUMENTATION_CURRENCY_V24, DOCUMENTATION_INDEX_V24_URI),
4590
+ },
4591
+ {
4592
+ topic: 'index',
4593
+ version: DOCUMENTATION_CURRENCY_V25.indexVersion,
4594
+ uri: DOCUMENTATION_INDEX_V25_URI,
4595
+ name: 'Meguro documentation index v25',
4596
+ title: 'Meguro documentation index v25',
4597
+ description: 'Immutable current-version pointers after adopting official customer-linked Shopify loyalty GiftCard mechanics.',
4598
+ text: documentationIndexText(DOCUMENTATION_CURRENCY_V25, DOCUMENTATION_INDEX_V25_URI),
4599
+ },
4600
+ {
4601
+ topic: 'index',
4602
+ version: DOCUMENTATION_CURRENCY_V26.indexVersion,
4603
+ uri: DOCUMENTATION_INDEX_V26_URI,
4604
+ name: 'Meguro documentation index v26',
4605
+ title: 'Meguro documentation index v26',
4606
+ description: 'Immutable current-version pointers after establishing the ordinary order-refund authority and correcting Return linkage teaching.',
4607
+ text: documentationIndexText(DOCUMENTATION_CURRENCY_V26, DOCUMENTATION_INDEX_V26_URI),
4608
+ },
4609
+ {
4610
+ topic: 'index',
4611
+ version: DOCUMENTATION_CURRENCY_V27.indexVersion,
4612
+ uri: DOCUMENTATION_INDEX_V27_URI,
4613
+ name: 'Meguro documentation index v27',
4614
+ title: 'Meguro documentation index v27',
4615
+ description: 'Immutable current-version pointers after admitted Admin recipes began publishing declared version, outcome semantics, prerequisites, and one registry-owned remedy.',
4616
+ text: documentationIndexText(DOCUMENTATION_CURRENCY_V27, DOCUMENTATION_INDEX_V27_URI),
4617
+ },
4618
+ {
4619
+ topic: 'index',
4620
+ version: DOCUMENTATION_CURRENCY_V28.indexVersion,
4621
+ uri: DOCUMENTATION_INDEX_V28_URI,
4622
+ name: 'Meguro documentation index v28',
4623
+ title: 'Meguro documentation index v28',
4624
+ description: 'Immutable current-version pointers after admitted Admin recipes began publishing declared version, outcome semantics, prerequisites, and one registry-owned remedy.',
4625
+ text: documentationIndexText(DOCUMENTATION_CURRENCY_V28, DOCUMENTATION_INDEX_V28_URI),
4626
+ },
4627
+ {
4628
+ topic: 'index',
4629
+ version: DOCUMENTATION_CURRENCY_V29.indexVersion,
4630
+ uri: DOCUMENTATION_INDEX_V29_URI,
4631
+ name: 'Meguro documentation index v29',
4632
+ title: 'Meguro documentation index v29',
4633
+ description: 'Immutable current-version pointers after the v1 served, internal-only and deferred vertical boundary was published.',
4634
+ text: documentationIndexText(DOCUMENTATION_CURRENCY_V29, DOCUMENTATION_INDEX_V29_URI),
4635
+ },
4636
+ {
4637
+ topic: 'index',
4638
+ version: DOCUMENTATION_CURRENCY_V30.indexVersion,
4639
+ uri: DOCUMENTATION_INDEX_V30_URI,
4640
+ name: 'Meguro documentation index v30',
4641
+ title: 'Meguro documentation index v30',
4642
+ description: 'Immutable current-version pointers after the compact templates_list and template_get detail hop were published.',
4643
+ text: documentationIndexText(DOCUMENTATION_CURRENCY_V30, DOCUMENTATION_INDEX_V30_URI),
4644
+ },
4645
+ {
4646
+ topic: 'index',
4647
+ version: DOCUMENTATION_CURRENCY_V31.indexVersion,
4648
+ uri: DOCUMENTATION_INDEX_V31_URI,
4649
+ name: 'Meguro documentation index v31',
4650
+ title: 'Meguro documentation index v31',
4651
+ description: 'Immutable current-version pointers after publishing the stored public run-receipt Markdown representation contract.',
4652
+ text: documentationIndexText(DOCUMENTATION_CURRENCY_V31, DOCUMENTATION_INDEX_V31_URI),
4653
+ },
4654
+ {
4655
+ topic: 'index',
4656
+ version: DOCUMENTATION_CURRENCY_V32.indexVersion,
4657
+ uri: DOCUMENTATION_INDEX_V32_URI,
4658
+ name: 'Meguro documentation index v32',
4659
+ title: 'Meguro documentation index v32',
4660
+ description: 'Immutable current-version pointers after renaming the winback operating cost to its contact/recovery meaning.',
4661
+ text: documentationIndexText(DOCUMENTATION_CURRENCY_V32, DOCUMENTATION_INDEX_V32_URI),
4662
+ },
4663
+ {
4664
+ topic: 'index',
4665
+ version: DOCUMENTATION_CURRENCY_V33.indexVersion,
4666
+ uri: DOCUMENTATION_INDEX_V33_URI,
4667
+ name: 'Meguro documentation index v33',
4668
+ title: 'Meguro documentation index v33',
4669
+ description: 'Immutable current-version pointers after retiring obsolete MCP request aliases.',
4670
+ text: documentationIndexText(DOCUMENTATION_CURRENCY_V33, DOCUMENTATION_INDEX_V33_URI),
4671
+ },
4672
+ {
4673
+ topic: 'index',
4674
+ version: DOCUMENTATION_CURRENCY_V34.indexVersion,
4675
+ uri: DOCUMENTATION_INDEX_V34_URI,
4676
+ name: 'Meguro documentation index v34',
4677
+ title: 'Meguro documentation index v34',
4678
+ description: 'Immutable current-version pointers after reconciling every current documentation cross-reference.',
4679
+ text: documentationIndexText(DOCUMENTATION_CURRENCY_V34, DOCUMENTATION_INDEX_V34_URI),
4680
+ },
4681
+ {
4682
+ topic: 'index',
4683
+ version: DOCUMENTATION_CURRENCY_V35.indexVersion,
4684
+ uri: DOCUMENTATION_INDEX_V35_URI,
4685
+ name: 'Meguro documentation index v35',
4686
+ title: 'Meguro documentation index v35',
4687
+ description: 'Immutable current-version pointers after reconciling every current documentation cross-reference.',
4688
+ text: documentationIndexText(DOCUMENTATION_CURRENCY_V35, DOCUMENTATION_INDEX_V35_URI),
4689
+ },
4690
+ {
4691
+ topic: 'index',
4692
+ version: DOCUMENTATION_CURRENCY_V36.indexVersion,
4693
+ uri: DOCUMENTATION_INDEX_V36_URI,
4694
+ name: 'Meguro documentation index v36',
4695
+ title: 'Meguro documentation index v36',
4696
+ description: 'Immutable current-version pointers for the truthful Gate-check and field-index generation.',
4697
+ text: documentationIndexText(DOCUMENTATION_CURRENCY_V36, DOCUMENTATION_INDEX_V36_URI),
4698
+ },
4699
+ {
4700
+ topic: 'index',
4701
+ version: DOCUMENTATION_CURRENCY_V37.indexVersion,
4702
+ uri: DOCUMENTATION_INDEX_V37_URI,
4703
+ name: 'Meguro documentation index v37',
4704
+ title: 'Meguro documentation index v37',
4705
+ description: 'Immutable current-version pointers for the labelled hosted-history generation.',
4706
+ text: documentationIndexText(DOCUMENTATION_CURRENCY_V37, DOCUMENTATION_INDEX_V37_URI),
4707
+ },
2666
4708
  {
2667
4709
  topic: 'receipt-guide',
2668
4710
  version: RECEIPT_GUIDE_VERSION,
@@ -2753,6 +4795,78 @@ const CATALOG = buildDocumentationCatalog([
2753
4795
  description: 'V9 receipt interpretation plus explicit return-resolution economics and four-way mutation evidence accounting.',
2754
4796
  text: RECEIPT_GUIDE_V10_TEXT,
2755
4797
  },
4798
+ {
4799
+ topic: 'receipt-guide',
4800
+ version: RECEIPT_GUIDE_V11_VERSION,
4801
+ uri: RECEIPT_GUIDE_V11_URI,
4802
+ name: 'Meguro receipt guide v11',
4803
+ title: 'Meguro receipt guide v11',
4804
+ description: 'V10 receipt interpretation plus exact polymorphic Node compatibility scope and one server-owned final receipt Gate.',
4805
+ text: RECEIPT_GUIDE_V11_TEXT,
4806
+ },
4807
+ {
4808
+ topic: 'receipt-guide',
4809
+ version: RECEIPT_GUIDE_V12_VERSION,
4810
+ uri: RECEIPT_GUIDE_V12_URI,
4811
+ name: 'Meguro receipt guide v12',
4812
+ title: 'Meguro receipt guide v12',
4813
+ description: 'V11 receipt interpretation plus the authoritative complete committed change register and provenance fields.',
4814
+ text: RECEIPT_GUIDE_V12_TEXT,
4815
+ },
4816
+ {
4817
+ topic: 'receipt-guide',
4818
+ version: RECEIPT_GUIDE_V13_VERSION,
4819
+ uri: RECEIPT_GUIDE_V13_URI,
4820
+ name: 'Meguro receipt guide v13',
4821
+ title: 'Meguro receipt guide v13',
4822
+ description: 'V12 receipt interpretation plus creation-pinned template event resolution, measured-horizon boundaries, and explicit legacy unavailability.',
4823
+ text: RECEIPT_GUIDE_V13_TEXT,
4824
+ },
4825
+ {
4826
+ topic: 'receipt-guide',
4827
+ version: RECEIPT_GUIDE_V14_VERSION,
4828
+ uri: RECEIPT_GUIDE_V14_URI,
4829
+ name: 'Meguro receipt guide v14',
4830
+ title: 'Meguro receipt guide v14',
4831
+ description: 'V13 receipt interpretation distinguishing automatic Recorded API behavior from the optional Configured Receipt Gate while preserving frozen machine fields.',
4832
+ text: RECEIPT_GUIDE_V14_TEXT,
4833
+ },
4834
+ {
4835
+ topic: 'receipt-guide',
4836
+ version: RECEIPT_GUIDE_V15_VERSION,
4837
+ uri: RECEIPT_GUIDE_V15_URI,
4838
+ name: 'Meguro receipt guide v15',
4839
+ title: 'Meguro receipt guide v15',
4840
+ description: 'Receipt interpretation distinguishing automatic Recorded API behavior from the optional Configured Receipt Gate while preserving frozen machine fields, with the v1 refund boundary: canonical Order line-item cash refunds are the served financial write and modeled return economics are Impact evidence.',
4841
+ text: RECEIPT_GUIDE_V15_TEXT,
4842
+ },
4843
+ {
4844
+ topic: 'receipt-guide',
4845
+ version: RECEIPT_GUIDE_V16_VERSION,
4846
+ uri: RECEIPT_GUIDE_V16_URI,
4847
+ name: 'Meguro receipt guide v16',
4848
+ title: 'Meguro receipt guide v16',
4849
+ description: 'Receipt interpretation plus the issuance-time stored Markdown representation contract for presentation-bearing public run receipts.',
4850
+ text: RECEIPT_GUIDE_V16_TEXT,
4851
+ },
4852
+ {
4853
+ topic: 'receipt-guide',
4854
+ version: RECEIPT_GUIDE_V17_VERSION,
4855
+ uri: RECEIPT_GUIDE_V17_URI,
4856
+ name: 'Meguro receipt guide v17',
4857
+ title: 'Meguro receipt guide v17',
4858
+ description: 'Receipt interpretation naming the winback operating cost as the contact/recovery cost it commits, distinct from the discount that governs recovered price.',
4859
+ text: RECEIPT_GUIDE_V17_TEXT,
4860
+ },
4861
+ {
4862
+ topic: 'receipt-guide',
4863
+ version: RECEIPT_GUIDE_V18_VERSION,
4864
+ uri: RECEIPT_GUIDE_V18_URI,
4865
+ name: 'Meguro receipt guide v18',
4866
+ title: 'Meguro receipt guide v18',
4867
+ description: 'Receipt interpretation with the generated path list republished as a field index and an authored winback contact-recovery cost definition.',
4868
+ text: RECEIPT_GUIDE_V18_TEXT,
4869
+ },
2756
4870
  {
2757
4871
  topic: 'gate-policy',
2758
4872
  version: GATE_POLICY_VERSION,
@@ -2780,6 +4894,33 @@ const CATALOG = buildDocumentationCatalog([
2780
4894
  description: 'Immutable named checks with absolute fact paths against the complete canonical Gate verdict payload.',
2781
4895
  text: GATE_POLICY_V3_TEXT,
2782
4896
  },
4897
+ {
4898
+ topic: 'gate-policy',
4899
+ version: GATE_POLICY_V4_VERSION,
4900
+ uri: GATE_POLICY_V4_URI,
4901
+ name: 'Meguro Configured Receipt Gate policy v4',
4902
+ title: 'Meguro Configured Receipt Gate policy v4',
4903
+ description: 'Immutable configured-policy guide distinguishing Configured Receipt Gate from automatic Recorded API behavior and its Default run policy provenance.',
4904
+ text: GATE_POLICY_V4_TEXT,
4905
+ },
4906
+ {
4907
+ topic: 'gate-policy',
4908
+ version: GATE_POLICY_V5_VERSION,
4909
+ uri: GATE_POLICY_V5_URI,
4910
+ name: 'Meguro Configured Receipt Gate policy v5',
4911
+ title: 'Meguro Configured Receipt Gate policy v5',
4912
+ description: 'Immutable configured-policy guide with one self-consistent current policy URI and version narrative.',
4913
+ text: GATE_POLICY_V5_TEXT,
4914
+ },
4915
+ {
4916
+ topic: 'gate-policy',
4917
+ version: GATE_POLICY_V6_VERSION,
4918
+ uri: GATE_POLICY_V6_URI,
4919
+ name: 'Meguro Configured Receipt Gate policy v6',
4920
+ 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
+ },
2783
4924
  ], CURRENT_DOCUMENTATION_CURRENCY);
2784
4925
 
2785
4926
  export function documentationResources() {
@@ -2800,10 +4941,14 @@ function documentationList(values, conjunction = 'and') {
2800
4941
  return `${values.slice(0, -1).join(', ')}, ${conjunction} ${values.at(-1)}`;
2801
4942
  }
2802
4943
 
2803
- export function deriveDocumentationToolContract(resources) {
4944
+ export function deriveDocumentationToolContract(resources, currency = CURRENT_DOCUMENTATION_CURRENCY) {
2804
4945
  if (!Array.isArray(resources) || resources.length === 0) {
2805
4946
  throw new Error('Documentation tool contract requires at least one published resource');
2806
4947
  }
4948
+ const currentUriByTopic = currency?.currentUriByTopic;
4949
+ if (!currentUriByTopic || typeof currentUriByTopic !== 'object') {
4950
+ throw new Error('Documentation tool contract requires the current documentation currency map');
4951
+ }
2807
4952
  const byTopic = new Map();
2808
4953
  const seen = new Set();
2809
4954
  for (const resource of resources) {
@@ -2830,26 +4975,67 @@ export function deriveDocumentationToolContract(resources) {
2830
4975
  const topics = [...byTopic.keys()].sort(codepointCompare);
2831
4976
  const versions = [...new Set([...byTopic.values()].flatMap((rows) => rows.map((row) => row.version)))]
2832
4977
  .sort((left, right) => left - right);
2833
- const announcements = topics.map((topic) => {
4978
+ const versionsByTopic = {};
4979
+ const currentByTopic = {};
4980
+ for (const topic of topics) {
2834
4981
  const rows = byTopic.get(topic).sort((left, right) => left.version - right.version);
2835
- const latest = rows.at(-1);
2836
- return `${topic} versions [${rows.map((row) => row.version).join(', ')}] `
2837
- + `(latest v${latest.version}: ${latest.description.replace(/[.]+$/u, '')})`;
2838
- });
4982
+ versionsByTopic[topic] = rows.map((row) => row.version);
4983
+ const currentUri = String(currentUriByTopic[topic] ?? '');
4984
+ if (!currentUri) throw new Error(`Documentation currency map has no current entry for ${topic}`);
4985
+ const current = documentationVersionFromUri(currentUri);
4986
+ if (!versionsByTopic[topic].includes(current)) {
4987
+ throw new Error(`Documentation currency map names an unpublished ${topic} version: v${current}`);
4988
+ }
4989
+ currentByTopic[topic] = current;
4990
+ }
4991
+ // MEG-1059: one derived `<topic>: latest vN of N` row per topic. The deleted description embedded
4992
+ // every historical version AND each latest document's full description — 2,816 bytes of discovery
4993
+ // that grew with every append-only mint, on a surface a caller reads before it can ask anything.
4994
+ const summary = topics
4995
+ .map((topic) => `${topic}: latest v${currentByTopic[topic]} of ${versionsByTopic[topic].length}`)
4996
+ .join('; ');
2839
4997
  const topicList = documentationList(topics);
2840
- const versionList = documentationList(versions);
2841
4998
  return deepFreeze({
2842
4999
  topics,
2843
5000
  versions,
2844
- description: `Read immutable Meguro product and simulation evidence documentation in-band. `
2845
- + `Published registry: ${announcements.join('; ')}. Account deletion is deliberately not an MCP tool. `
2846
- + 'Pass the exact published topic and version so cited documentation never resolves to mutable latest content.',
5001
+ versionsByTopic: deepFreeze(versionsByTopic),
5002
+ currentByTopic: deepFreeze(currentByTopic),
5003
+ // MEG-695/MEG-704 vocabulary: docs_read is the one tool that names the rehearsal boundary, and
5004
+ // the prose says "simulation". Compacting the registry must not withdraw that.
5005
+ description: 'Read immutable Meguro simulation documentation in-band, including the rehearsal boundary. '
5006
+ + `Published: ${summary}. `
5007
+ + 'Pass an exact published integer version, or "latest" to resolve this topic\'s current one; '
5008
+ + 'either way the response carries the concrete integer version and its immutable '
5009
+ + 'meguro://docs/<topic>/vN URI, so citations pin bytes. Account deletion is not an MCP tool.',
2847
5010
  topicDescription: `Published Meguro simulation-documentation topic. Registry topics: ${topicList}.`,
2848
- versionDescription: `Published immutable simulation-documentation version. Registry versions: ${versionList}.`,
5011
+ versionDescription: 'Exact published immutable version, or "latest" for this topic\'s current published version.',
2849
5012
  topicError: `topic must be ${documentationList(topics, 'or')}`,
5013
+ versionError: 'version must be a positive integer or the exact string "latest"',
2850
5014
  });
2851
5015
  }
2852
5016
 
5017
+ /**
5018
+ * MEG-1059: resolve one documentation read. `latest` is a discovery sentinel resolved through the
5019
+ * SAME currency map the initialize instructions cite — it mints no alias resource and no second
5020
+ * registry, and the caller is handed the concrete immutable entry.
5021
+ */
5022
+ export function resolveDocumentationRead(topic, version, contract = documentationToolContract()) {
5023
+ if (!contract.topics.includes(topic)) throw new Error(contract.topicError);
5024
+ const resolved = version === 'latest' ? contract.currentByTopic[topic] : version;
5025
+ if (!Number.isSafeInteger(resolved) || resolved < 1) throw new Error(contract.versionError);
5026
+ const published = contract.versionsByTopic[topic];
5027
+ if (!published.includes(resolved)) {
5028
+ // Name what this topic actually publishes and the two choices that work. The deleted message
5029
+ // said only "not found", which leaves blind retry as the caller's only move.
5030
+ throw new Error(
5031
+ `${topic} publishes v${published[0]}-v${published.at(-1)}; v${resolved} is not published. `
5032
+ + `Current latest is v${contract.currentByTopic[topic]}. `
5033
+ + `Call docs_read({ topic: "${topic}", version: "latest" }) or an exact published integer.`,
5034
+ );
5035
+ }
5036
+ return documentationByTopic(topic, resolved);
5037
+ }
5038
+
2853
5039
  export function documentationToolContract() {
2854
5040
  return deriveDocumentationToolContract(documentationResources());
2855
5041
  }
@@ -2857,10 +5043,10 @@ export function documentationToolContract() {
2857
5043
  export function receiptGuideFieldManifest() {
2858
5044
  return deepFreeze({
2859
5045
  schemas() {
2860
- return Object.keys(RECEIPT_FIELDS_V10).sort();
5046
+ return Object.keys(RECEIPT_FIELDS_V13).sort();
2861
5047
  },
2862
5048
  schemaFields(schema) {
2863
- const fields = RECEIPT_FIELDS_V10[schema];
5049
+ const fields = RECEIPT_FIELDS_V13[schema];
2864
5050
  if (!fields) throw new Error(`Receipt schema not documented: ${schema}`);
2865
5051
  return [...fields];
2866
5052
  },