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/CHANGELOG.md +7 -0
- package/README.md +25 -19
- package/package.json +1 -1
- package/scripts/generate-readme-tools.mjs +67 -12
- package/src/docs.mjs +2205 -19
- package/src/protocol.mjs +6 -0
- package/src/server.mjs +1 -1
- package/src/tools.mjs +1053 -488
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
|
|
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)} })
|
|
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.
|
|
1962
|
-
|
|
1963
|
-
|
|
1964
|
-
|
|
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
|
|
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
|
-
|
|
2836
|
-
|
|
2837
|
-
|
|
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
|
-
|
|
2845
|
-
|
|
2846
|
-
|
|
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:
|
|
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(
|
|
5046
|
+
return Object.keys(RECEIPT_FIELDS_V13).sort();
|
|
2861
5047
|
},
|
|
2862
5048
|
schemaFields(schema) {
|
|
2863
|
-
const fields =
|
|
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
|
},
|