@pome-sh/cli 0.7.0 → 0.8.0

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.
Files changed (131) hide show
  1. package/dist/build-info.json +3 -3
  2. package/dist/src/cli/docs-topics.js +5 -3
  3. package/dist/src/runner/runTask.d.ts +14 -0
  4. package/dist/src/task/taskSchema.d.ts +52 -16
  5. package/node_modules/@pome-sh/shared-types/dist/seed-state.d.ts +27 -0
  6. package/node_modules/@pome-sh/shared-types/dist/seed-state.js +12 -0
  7. package/node_modules/@pome-sh/shared-types/dist/seed-state.js.map +1 -1
  8. package/node_modules/@pome-sh/shared-types/dist/task.d.ts +18 -0
  9. package/node_modules/@pome-sh/shared-types/package.json +1 -1
  10. package/node_modules/@pome-sh/shared-types/trace-contract.json +1 -1
  11. package/node_modules/@pome-sh/twin-gmail/CHANGELOG.md +21 -0
  12. package/node_modules/@pome-sh/twin-gmail/HOSTED.md +37 -15
  13. package/node_modules/@pome-sh/twin-gmail/LIMITS.md +10 -0
  14. package/node_modules/@pome-sh/twin-gmail/README.md +52 -11
  15. package/node_modules/@pome-sh/twin-gmail/dist/fixtures/mcp-tools-list.canonical.json +242 -7
  16. package/node_modules/@pome-sh/twin-gmail/dist/src/db.js +6 -0
  17. package/node_modules/@pome-sh/twin-gmail/dist/src/db.js.map +1 -1
  18. package/node_modules/@pome-sh/twin-gmail/dist/src/domain/drafts.d.ts +41 -0
  19. package/node_modules/@pome-sh/twin-gmail/dist/src/domain/drafts.js +138 -0
  20. package/node_modules/@pome-sh/twin-gmail/dist/src/domain/drafts.js.map +1 -0
  21. package/node_modules/@pome-sh/twin-gmail/dist/src/domain/filters.d.ts +10 -0
  22. package/node_modules/@pome-sh/twin-gmail/dist/src/{domain-search.js → domain/filters.js} +52 -36
  23. package/node_modules/@pome-sh/twin-gmail/dist/src/domain/filters.js.map +1 -0
  24. package/node_modules/@pome-sh/twin-gmail/dist/src/{domain.d.ts → domain/gmail-domain.d.ts} +45 -34
  25. package/node_modules/@pome-sh/twin-gmail/dist/src/domain/gmail-domain.js +174 -0
  26. package/node_modules/@pome-sh/twin-gmail/dist/src/domain/gmail-domain.js.map +1 -0
  27. package/node_modules/@pome-sh/twin-gmail/dist/src/domain/hydrate.d.ts +8 -0
  28. package/node_modules/@pome-sh/twin-gmail/dist/src/domain/hydrate.js +122 -0
  29. package/node_modules/@pome-sh/twin-gmail/dist/src/domain/hydrate.js.map +1 -0
  30. package/node_modules/@pome-sh/twin-gmail/dist/src/domain/index.d.ts +4 -0
  31. package/node_modules/@pome-sh/twin-gmail/dist/src/domain/index.js +5 -0
  32. package/node_modules/@pome-sh/twin-gmail/dist/src/domain/index.js.map +1 -0
  33. package/node_modules/@pome-sh/twin-gmail/dist/src/domain/labels.d.ts +40 -0
  34. package/node_modules/@pome-sh/twin-gmail/dist/src/domain/labels.js +122 -0
  35. package/node_modules/@pome-sh/twin-gmail/dist/src/domain/labels.js.map +1 -0
  36. package/node_modules/@pome-sh/twin-gmail/dist/src/domain/messages.d.ts +49 -0
  37. package/node_modules/@pome-sh/twin-gmail/dist/src/domain/messages.js +276 -0
  38. package/node_modules/@pome-sh/twin-gmail/dist/src/domain/messages.js.map +1 -0
  39. package/node_modules/@pome-sh/twin-gmail/dist/src/domain/search-sql.d.ts +19 -0
  40. package/node_modules/@pome-sh/twin-gmail/dist/src/domain/search-sql.js +179 -0
  41. package/node_modules/@pome-sh/twin-gmail/dist/src/domain/search-sql.js.map +1 -0
  42. package/node_modules/@pome-sh/twin-gmail/dist/src/domain/settings.d.ts +27 -0
  43. package/node_modules/@pome-sh/twin-gmail/dist/src/domain/settings.js +98 -0
  44. package/node_modules/@pome-sh/twin-gmail/dist/src/domain/settings.js.map +1 -0
  45. package/node_modules/@pome-sh/twin-gmail/dist/src/errors.js +2 -0
  46. package/node_modules/@pome-sh/twin-gmail/dist/src/errors.js.map +1 -1
  47. package/node_modules/@pome-sh/twin-gmail/dist/src/faults.d.ts +21 -0
  48. package/node_modules/@pome-sh/twin-gmail/dist/src/faults.js +52 -0
  49. package/node_modules/@pome-sh/twin-gmail/dist/src/faults.js.map +1 -0
  50. package/node_modules/@pome-sh/twin-gmail/dist/src/identity.d.ts +1 -6
  51. package/node_modules/@pome-sh/twin-gmail/dist/src/identity.js +0 -11
  52. package/node_modules/@pome-sh/twin-gmail/dist/src/identity.js.map +1 -1
  53. package/node_modules/@pome-sh/twin-gmail/dist/src/index.d.ts +4 -3
  54. package/node_modules/@pome-sh/twin-gmail/dist/src/index.js +3 -3
  55. package/node_modules/@pome-sh/twin-gmail/dist/src/index.js.map +1 -1
  56. package/node_modules/@pome-sh/twin-gmail/dist/src/mcp-schemas.d.ts +48 -0
  57. package/node_modules/@pome-sh/twin-gmail/dist/src/mcp-schemas.js +23 -0
  58. package/node_modules/@pome-sh/twin-gmail/dist/src/mcp-schemas.js.map +1 -1
  59. package/node_modules/@pome-sh/twin-gmail/dist/src/mcp.d.ts +1 -1
  60. package/node_modules/@pome-sh/twin-gmail/dist/src/mcp.js +39 -1
  61. package/node_modules/@pome-sh/twin-gmail/dist/src/mcp.js.map +1 -1
  62. package/node_modules/@pome-sh/twin-gmail/dist/src/rest-routes-drafts.js +4 -5
  63. package/node_modules/@pome-sh/twin-gmail/dist/src/rest-routes-drafts.js.map +1 -1
  64. package/node_modules/@pome-sh/twin-gmail/dist/src/rest-routes-kit.d.ts +2 -3
  65. package/node_modules/@pome-sh/twin-gmail/dist/src/rest-routes-kit.js +4 -4
  66. package/node_modules/@pome-sh/twin-gmail/dist/src/rest-routes-kit.js.map +1 -1
  67. package/node_modules/@pome-sh/twin-gmail/dist/src/rest-routes-messages.js +7 -8
  68. package/node_modules/@pome-sh/twin-gmail/dist/src/rest-routes-messages.js.map +1 -1
  69. package/node_modules/@pome-sh/twin-gmail/dist/src/rest-routes-resources.js +20 -21
  70. package/node_modules/@pome-sh/twin-gmail/dist/src/rest-routes-resources.js.map +1 -1
  71. package/node_modules/@pome-sh/twin-gmail/dist/src/rest-routes.d.ts +1 -1
  72. package/node_modules/@pome-sh/twin-gmail/dist/src/rest-serializers.d.ts +2 -4
  73. package/node_modules/@pome-sh/twin-gmail/dist/src/rest-serializers.js +4 -6
  74. package/node_modules/@pome-sh/twin-gmail/dist/src/rest-serializers.js.map +1 -1
  75. package/node_modules/@pome-sh/twin-gmail/dist/src/search-match.d.ts +4 -0
  76. package/node_modules/@pome-sh/twin-gmail/dist/src/search-match.js +179 -0
  77. package/node_modules/@pome-sh/twin-gmail/dist/src/search-match.js.map +1 -0
  78. package/node_modules/@pome-sh/twin-gmail/dist/src/search-parse.d.ts +61 -0
  79. package/node_modules/@pome-sh/twin-gmail/dist/src/search-parse.js +318 -0
  80. package/node_modules/@pome-sh/twin-gmail/dist/src/search-parse.js.map +1 -0
  81. package/node_modules/@pome-sh/twin-gmail/dist/src/search.d.ts +3 -61
  82. package/node_modules/@pome-sh/twin-gmail/dist/src/search.js +2 -503
  83. package/node_modules/@pome-sh/twin-gmail/dist/src/search.js.map +1 -1
  84. package/node_modules/@pome-sh/twin-gmail/dist/src/seed.d.ts +13 -4
  85. package/node_modules/@pome-sh/twin-gmail/dist/src/seed.js +3 -1
  86. package/node_modules/@pome-sh/twin-gmail/dist/src/seed.js.map +1 -1
  87. package/node_modules/@pome-sh/twin-gmail/dist/src/server.js +1 -1
  88. package/node_modules/@pome-sh/twin-gmail/dist/src/server.js.map +1 -1
  89. package/node_modules/@pome-sh/twin-gmail/dist/src/storage.js +1 -1
  90. package/node_modules/@pome-sh/twin-gmail/dist/src/storage.js.map +1 -1
  91. package/node_modules/@pome-sh/twin-gmail/dist/src/twin.d.ts +2 -3
  92. package/node_modules/@pome-sh/twin-gmail/dist/src/twin.js +1 -4
  93. package/node_modules/@pome-sh/twin-gmail/dist/src/twin.js.map +1 -1
  94. package/node_modules/@pome-sh/twin-gmail/dist/src/types.d.ts +1 -0
  95. package/node_modules/@pome-sh/twin-gmail/fidelity.inventory.json +42 -435
  96. package/node_modules/@pome-sh/twin-gmail/fixtures/README.md +4 -4
  97. package/node_modules/@pome-sh/twin-gmail/fixtures/mcp-tools-list.canonical.json +242 -7
  98. package/node_modules/@pome-sh/twin-gmail/fixtures/mcp-tools-list.meta.json +3 -3
  99. package/node_modules/@pome-sh/twin-gmail/package.json +3 -2
  100. package/node_modules/hono/dist/cjs/client/utils.js +1 -1
  101. package/node_modules/hono/dist/cjs/helper/streaming/sse.js +5 -4
  102. package/node_modules/hono/dist/cjs/middleware/cache/index.js +1 -1
  103. package/node_modules/hono/dist/cjs/middleware/compress/index.js +2 -1
  104. package/node_modules/hono/dist/cjs/middleware/method-override/index.js +5 -3
  105. package/node_modules/hono/dist/cjs/middleware/secure-headers/secure-headers.js +10 -4
  106. package/node_modules/hono/dist/cjs/request.js +8 -3
  107. package/node_modules/hono/dist/cjs/utils/accept.js +1 -1
  108. package/node_modules/hono/dist/cjs/utils/body.js +6 -0
  109. package/node_modules/hono/dist/cjs/utils/url.js +1 -1
  110. package/node_modules/hono/dist/client/utils.js +1 -1
  111. package/node_modules/hono/dist/helper/streaming/sse.js +5 -4
  112. package/node_modules/hono/dist/middleware/cache/index.js +1 -1
  113. package/node_modules/hono/dist/middleware/compress/index.js +2 -1
  114. package/node_modules/hono/dist/middleware/method-override/index.js +5 -3
  115. package/node_modules/hono/dist/middleware/secure-headers/secure-headers.js +10 -4
  116. package/node_modules/hono/dist/request.js +8 -3
  117. package/node_modules/hono/dist/types/adapter/aws-lambda/types.d.ts +9 -0
  118. package/node_modules/hono/dist/types/helper/websocket/index.d.ts +1 -1
  119. package/node_modules/hono/dist/types/middleware/combine/index.d.ts +1 -1
  120. package/node_modules/hono/dist/utils/accept.js +1 -1
  121. package/node_modules/hono/dist/utils/body.js +6 -0
  122. package/node_modules/hono/dist/utils/url.js +1 -1
  123. package/node_modules/hono/package.json +3 -3
  124. package/package.json +3 -3
  125. package/node_modules/@pome-sh/twin-gmail/dist/src/domain-search.d.ts +0 -5
  126. package/node_modules/@pome-sh/twin-gmail/dist/src/domain-search.js.map +0 -1
  127. package/node_modules/@pome-sh/twin-gmail/dist/src/domain.js +0 -407
  128. package/node_modules/@pome-sh/twin-gmail/dist/src/domain.js.map +0 -1
  129. package/node_modules/@pome-sh/twin-gmail/dist/src/rest-store.d.ts +0 -75
  130. package/node_modules/@pome-sh/twin-gmail/dist/src/rest-store.js +0 -282
  131. package/node_modules/@pome-sh/twin-gmail/dist/src/rest-store.js.map +0 -1
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "twin": "gmail",
3
3
  "package": "@pome-sh/twin-gmail",
4
- "updated": "2026-07-20",
5
- "notes": "Heat from Gmail task chains is cross-validated against the captured 10-tool launch set. Launch MCP tools and in-scope REST rows are semantic over one deterministic domain; users.watch, users.stop, and resumable uploads remain named cold 501/unsupported gaps.",
4
+ "updated": "2026-07-22",
5
+ "notes": "Heat from Gmail task chains is cross-validated against the captured Gate-1 13-tool launch set (Gate 0 ten tools plus get_message / apply_sensitive_*). Launch MCP tools and in-scope REST rows are semantic over one deterministic domain; users.watch, users.stop, and resumable uploads remain named cold 501/unsupported gaps.",
6
6
  "evidenceCodes": {
7
7
  "TC:inbox-triage": "Search/read threads and messages for agent email triage",
8
8
  "TC:compose-draft": "Create/list/update drafts without sending",
@@ -37,6 +37,13 @@
37
37
  "justification": "MCP:get_thread (vendor default Gmail MCP toolset); TC:inbox-triage|compose-draft|label-triage. Live capture schemas frozen in fixtures/mcp-tools-list.canonical.json.",
38
38
  "defer": "Implemented by the shared deterministic Gmail domain."
39
39
  },
40
+ {
41
+ "name": "get_message",
42
+ "heat": "hot",
43
+ "fidelity": "semantic",
44
+ "justification": "MCP:get_message (Gate-1 Developer Preview promotion); TC:inbox-triage. Live capture schemas frozen in fixtures/mcp-tools-list.canonical.json.",
45
+ "defer": "Implemented by the shared deterministic Gmail domain."
46
+ },
40
47
  {
41
48
  "name": "search_threads",
42
49
  "heat": "hot",
@@ -58,6 +65,13 @@
58
65
  "justification": "MCP:unlabel_thread (vendor default Gmail MCP toolset); TC:inbox-triage|compose-draft|label-triage. Live capture schemas frozen in fixtures/mcp-tools-list.canonical.json.",
59
66
  "defer": "Implemented by the shared deterministic Gmail domain."
60
67
  },
68
+ {
69
+ "name": "apply_sensitive_thread_label",
70
+ "heat": "hot",
71
+ "fidelity": "semantic",
72
+ "justification": "MCP:apply_sensitive_thread_label (Gate-1 Developer Preview promotion); TC:cleanup|label-triage. Applies TRASH/SPAM and removes INBOX via the shared domain.",
73
+ "defer": "Implemented by the shared deterministic Gmail domain."
74
+ },
61
75
  {
62
76
  "name": "list_labels",
63
77
  "heat": "hot",
@@ -80,32 +94,18 @@
80
94
  "defer": "Implemented by the shared deterministic Gmail domain."
81
95
  },
82
96
  {
83
- "name": "create_label",
97
+ "name": "apply_sensitive_message_label",
84
98
  "heat": "hot",
85
99
  "fidelity": "semantic",
86
- "justification": "MCP:create_label (vendor default Gmail MCP toolset); TC:inbox-triage|compose-draft|label-triage. Live capture schemas frozen in fixtures/mcp-tools-list.canonical.json.",
100
+ "justification": "MCP:apply_sensitive_message_label (Gate-1 Developer Preview promotion); TC:cleanup|label-triage. Applies TRASH/SPAM and removes INBOX via the shared domain.",
87
101
  "defer": "Implemented by the shared deterministic Gmail domain."
88
102
  },
89
103
  {
90
- "name": "get_message",
91
- "heat": "cold",
92
- "fidelity": "unsupported",
93
- "justification": "PS: present in live Developer Preview tools/list (2026-07-20) but outside the documented 10-tool launch set. Twin must not advertise these while claiming launch listing parity; catch-all/unsupported if called.",
94
- "defer": "Keep as named cold unless a new ruling expands the launch toolset."
95
- },
96
- {
97
- "name": "apply_sensitive_thread_label",
98
- "heat": "cold",
99
- "fidelity": "unsupported",
100
- "justification": "PS: present in live Developer Preview tools/list (2026-07-20) but outside the documented 10-tool launch set. Twin must not advertise these while claiming launch listing parity; catch-all/unsupported if called.",
101
- "defer": "Keep as named cold unless a new ruling expands the launch toolset."
102
- },
103
- {
104
- "name": "apply_sensitive_message_label",
105
- "heat": "cold",
106
- "fidelity": "unsupported",
107
- "justification": "PS: present in live Developer Preview tools/list (2026-07-20) but outside the documented 10-tool launch set. Twin must not advertise these while claiming launch listing parity; catch-all/unsupported if called.",
108
- "defer": "Keep as named cold unless a new ruling expands the launch toolset."
104
+ "name": "create_label",
105
+ "heat": "hot",
106
+ "fidelity": "semantic",
107
+ "justification": "MCP:create_label (vendor default Gmail MCP toolset); TC:inbox-triage|compose-draft|label-triage. Live capture schemas frozen in fixtures/mcp-tools-list.canonical.json.",
108
+ "defer": "Implemented by the shared deterministic Gmail domain."
109
109
  }
110
110
  ],
111
111
  "rest": [
@@ -153,7 +153,7 @@
153
153
  "name": "POST /resumable/upload/gmail/v1/users/{userId}/messages/send (resumable)",
154
154
  "heat": "cold",
155
155
  "fidelity": "unsupported",
156
- "justification": "PS: resumable upload for users.messages.send declared by discovery but explicitly unsupported in launch \u2014 loud 501, no chunk persistence.",
156
+ "justification": "PS: resumable upload for users.messages.send declared by discovery but explicitly unsupported in launch loud 501, no chunk persistence.",
157
157
  "discoveryId": "users.messages.send"
158
158
  },
159
159
  {
@@ -176,7 +176,7 @@
176
176
  "name": "POST /resumable/upload/gmail/v1/users/{userId}/messages (resumable)",
177
177
  "heat": "cold",
178
178
  "fidelity": "unsupported",
179
- "justification": "PS: resumable upload for users.messages.insert declared by discovery but explicitly unsupported in launch \u2014 loud 501, no chunk persistence.",
179
+ "justification": "PS: resumable upload for users.messages.insert declared by discovery but explicitly unsupported in launch loud 501, no chunk persistence.",
180
180
  "discoveryId": "users.messages.insert"
181
181
  },
182
182
  {
@@ -199,7 +199,7 @@
199
199
  "name": "POST /resumable/upload/gmail/v1/users/{userId}/messages/import (resumable)",
200
200
  "heat": "cold",
201
201
  "fidelity": "unsupported",
202
- "justification": "PS: resumable upload for users.messages.import declared by discovery but explicitly unsupported in launch \u2014 loud 501, no chunk persistence.",
202
+ "justification": "PS: resumable upload for users.messages.import declared by discovery but explicitly unsupported in launch loud 501, no chunk persistence.",
203
203
  "discoveryId": "users.messages.import"
204
204
  },
205
205
  {
@@ -294,7 +294,7 @@
294
294
  "name": "POST /resumable/upload/gmail/v1/users/{userId}/drafts (resumable)",
295
295
  "heat": "cold",
296
296
  "fidelity": "unsupported",
297
- "justification": "PS: resumable upload for users.drafts.create declared by discovery but explicitly unsupported in launch \u2014 loud 501, no chunk persistence.",
297
+ "justification": "PS: resumable upload for users.drafts.create declared by discovery but explicitly unsupported in launch loud 501, no chunk persistence.",
298
298
  "discoveryId": "users.drafts.create"
299
299
  },
300
300
  {
@@ -317,7 +317,7 @@
317
317
  "name": "PUT /resumable/upload/gmail/v1/users/{userId}/drafts/{id} (resumable)",
318
318
  "heat": "cold",
319
319
  "fidelity": "unsupported",
320
- "justification": "PS: resumable upload for users.drafts.update declared by discovery but explicitly unsupported in launch \u2014 loud 501, no chunk persistence.",
320
+ "justification": "PS: resumable upload for users.drafts.update declared by discovery but explicitly unsupported in launch loud 501, no chunk persistence.",
321
321
  "discoveryId": "users.drafts.update"
322
322
  },
323
323
  {
@@ -340,7 +340,7 @@
340
340
  "name": "POST /resumable/upload/gmail/v1/users/{userId}/drafts/send (resumable)",
341
341
  "heat": "cold",
342
342
  "fidelity": "unsupported",
343
- "justification": "PS: resumable upload for users.drafts.send declared by discovery but explicitly unsupported in launch \u2014 loud 501, no chunk persistence.",
343
+ "justification": "PS: resumable upload for users.drafts.send declared by discovery but explicitly unsupported in launch loud 501, no chunk persistence.",
344
344
  "discoveryId": "users.drafts.send"
345
345
  },
346
346
  {
@@ -459,7 +459,7 @@
459
459
  "name": "GET /gmail/v1/users/{userId}/settings/filters",
460
460
  "heat": "warm",
461
461
  "fidelity": "semantic",
462
- "justification": "TC:filter-setup. Discovery id users.settings.filters.list. Settings reads/writes adjacent to delivery/identity; target shape. Gate 0: unsupported pending REST PR.",
462
+ "justification": "TC:filter-setup. Discovery id users.settings.filters.list. Settings reads/writes adjacent to delivery/identity; target shape. Implemented by the shared deterministic Gmail domain.",
463
463
  "discoveryId": "users.settings.filters.list",
464
464
  "defer": "Implemented by the shared deterministic Gmail domain."
465
465
  },
@@ -467,7 +467,7 @@
467
467
  "name": "GET /gmail/v1/users/{userId}/settings/filters/{id}",
468
468
  "heat": "warm",
469
469
  "fidelity": "semantic",
470
- "justification": "TC:filter-setup. Discovery id users.settings.filters.get. Settings reads/writes adjacent to delivery/identity; target shape. Gate 0: unsupported pending REST PR.",
470
+ "justification": "TC:filter-setup. Discovery id users.settings.filters.get. Settings reads/writes adjacent to delivery/identity; target shape. Implemented by the shared deterministic Gmail domain.",
471
471
  "discoveryId": "users.settings.filters.get",
472
472
  "defer": "Implemented by the shared deterministic Gmail domain."
473
473
  },
@@ -475,7 +475,7 @@
475
475
  "name": "POST /gmail/v1/users/{userId}/settings/filters",
476
476
  "heat": "warm",
477
477
  "fidelity": "semantic",
478
- "justification": "TC:filter-setup. Discovery id users.settings.filters.create. Settings reads/writes adjacent to delivery/identity; target shape. Gate 0: unsupported pending REST PR.",
478
+ "justification": "TC:filter-setup. Discovery id users.settings.filters.create. Settings reads/writes adjacent to delivery/identity; target shape. Implemented by the shared deterministic Gmail domain.",
479
479
  "discoveryId": "users.settings.filters.create",
480
480
  "defer": "Implemented by the shared deterministic Gmail domain."
481
481
  },
@@ -483,7 +483,7 @@
483
483
  "name": "DELETE /gmail/v1/users/{userId}/settings/filters/{id}",
484
484
  "heat": "warm",
485
485
  "fidelity": "semantic",
486
- "justification": "TC:filter-setup. Discovery id users.settings.filters.delete. Settings reads/writes adjacent to delivery/identity; target shape. Gate 0: unsupported pending REST PR.",
486
+ "justification": "TC:filter-setup. Discovery id users.settings.filters.delete. Settings reads/writes adjacent to delivery/identity; target shape. Implemented by the shared deterministic Gmail domain.",
487
487
  "discoveryId": "users.settings.filters.delete",
488
488
  "defer": "Implemented by the shared deterministic Gmail domain."
489
489
  },
@@ -491,7 +491,7 @@
491
491
  "name": "GET /gmail/v1/users/{userId}/settings/forwardingAddresses",
492
492
  "heat": "warm",
493
493
  "fidelity": "semantic",
494
- "justification": "TC:identity-read. Discovery id users.settings.forwardingAddresses.list. Settings reads/writes adjacent to delivery/identity; target shape. Gate 0: unsupported pending REST PR.",
494
+ "justification": "TC:identity-read. Discovery id users.settings.forwardingAddresses.list. Settings reads/writes adjacent to delivery/identity; target shape. Implemented by the shared deterministic Gmail domain.",
495
495
  "discoveryId": "users.settings.forwardingAddresses.list",
496
496
  "defer": "Implemented by the shared deterministic Gmail domain."
497
497
  },
@@ -499,7 +499,7 @@
499
499
  "name": "GET /gmail/v1/users/{userId}/settings/forwardingAddresses/{forwardingEmail}",
500
500
  "heat": "warm",
501
501
  "fidelity": "semantic",
502
- "justification": "TC:identity-read. Discovery id users.settings.forwardingAddresses.get. Settings reads/writes adjacent to delivery/identity; target shape. Gate 0: unsupported pending REST PR.",
502
+ "justification": "TC:identity-read. Discovery id users.settings.forwardingAddresses.get. Settings reads/writes adjacent to delivery/identity; target shape. Implemented by the shared deterministic Gmail domain.",
503
503
  "discoveryId": "users.settings.forwardingAddresses.get",
504
504
  "defer": "Implemented by the shared deterministic Gmail domain."
505
505
  },
@@ -507,7 +507,7 @@
507
507
  "name": "GET /gmail/v1/users/{userId}/settings/sendAs",
508
508
  "heat": "warm",
509
509
  "fidelity": "semantic",
510
- "justification": "TC:identity-read. Discovery id users.settings.sendAs.list. Settings reads/writes adjacent to delivery/identity; target shape. Gate 0: unsupported pending REST PR.",
510
+ "justification": "TC:identity-read. Discovery id users.settings.sendAs.list. Settings reads/writes adjacent to delivery/identity; target shape. Implemented by the shared deterministic Gmail domain.",
511
511
  "discoveryId": "users.settings.sendAs.list",
512
512
  "defer": "Implemented by the shared deterministic Gmail domain."
513
513
  },
@@ -515,7 +515,7 @@
515
515
  "name": "GET /gmail/v1/users/{userId}/settings/sendAs/{sendAsEmail}",
516
516
  "heat": "warm",
517
517
  "fidelity": "semantic",
518
- "justification": "TC:identity-read. Discovery id users.settings.sendAs.get. Settings reads/writes adjacent to delivery/identity; target shape. Gate 0: unsupported pending REST PR.",
518
+ "justification": "TC:identity-read. Discovery id users.settings.sendAs.get. Settings reads/writes adjacent to delivery/identity; target shape. Implemented by the shared deterministic Gmail domain.",
519
519
  "discoveryId": "users.settings.sendAs.get",
520
520
  "defer": "Implemented by the shared deterministic Gmail domain."
521
521
  },
@@ -523,415 +523,22 @@
523
523
  "name": "POST /gmail/v1/users/{userId}/watch",
524
524
  "heat": "cold",
525
525
  "fidelity": "unsupported",
526
- "justification": "PS: named gap \u2014 Pub/Sub watch/stop out of launch scope. Must return loud 501; never fake successful registration. Discovery id users.watch.",
526
+ "justification": "PS: named gap Pub/Sub watch/stop out of launch scope. Must return loud 501; never fake successful registration. Discovery id users.watch.",
527
527
  "discoveryId": "users.watch"
528
528
  },
529
529
  {
530
530
  "name": "POST /gmail/v1/users/{userId}/stop",
531
531
  "heat": "cold",
532
532
  "fidelity": "unsupported",
533
- "justification": "PS: named gap \u2014 Pub/Sub watch/stop out of launch scope. Must return loud 501; never fake successful registration. Discovery id users.stop.",
533
+ "justification": "PS: named gap Pub/Sub watch/stop out of launch scope. Must return loud 501; never fake successful registration. Discovery id users.stop.",
534
534
  "discoveryId": "users.stop"
535
535
  }
536
536
  ],
537
- "gaps": [
538
- {
539
- "surface": "GET /gmail/v1/users/{userId}/profile",
540
- "kind": "rest",
541
- "heat": "hot",
542
- "fidelity": "unsupported",
543
- "note": "Gate 0 freeze only \u2014 implementation deferred to REST/MCP/domain PRs. Target fidelity per heat: hot\u2192semantic, warm\u2192shape, cold\u2192unsupported."
544
- },
545
- {
546
- "surface": "GET /gmail/v1/users/{userId}/messages",
547
- "kind": "rest",
548
- "heat": "hot",
549
- "fidelity": "unsupported",
550
- "note": "Gate 0 freeze only \u2014 implementation deferred to REST/MCP/domain PRs. Target fidelity per heat: hot\u2192semantic, warm\u2192shape, cold\u2192unsupported."
551
- },
552
- {
553
- "surface": "GET /gmail/v1/users/{userId}/messages/{id}",
554
- "kind": "rest",
555
- "heat": "hot",
556
- "fidelity": "unsupported",
557
- "note": "Gate 0 freeze only \u2014 implementation deferred to REST/MCP/domain PRs. Target fidelity per heat: hot\u2192semantic, warm\u2192shape, cold\u2192unsupported."
558
- },
559
- {
560
- "surface": "POST /gmail/v1/users/{userId}/messages/send",
561
- "kind": "rest",
562
- "heat": "hot",
563
- "fidelity": "unsupported",
564
- "note": "Gate 0 freeze only \u2014 implementation deferred to REST/MCP/domain PRs. Target fidelity per heat: hot\u2192semantic, warm\u2192shape, cold\u2192unsupported."
565
- },
566
- {
567
- "surface": "POST /upload/gmail/v1/users/{userId}/messages/send (simple multipart)",
568
- "kind": "rest",
569
- "heat": "hot",
570
- "fidelity": "unsupported",
571
- "note": "Gate 0 freeze only \u2014 implementation deferred to REST/MCP/domain PRs. Target fidelity per heat: hot\u2192semantic, warm\u2192shape, cold\u2192unsupported."
572
- },
573
- {
574
- "surface": "POST /gmail/v1/users/{userId}/messages",
575
- "kind": "rest",
576
- "heat": "hot",
577
- "fidelity": "unsupported",
578
- "note": "Gate 0 freeze only \u2014 implementation deferred to REST/MCP/domain PRs. Target fidelity per heat: hot\u2192semantic, warm\u2192shape, cold\u2192unsupported."
579
- },
580
- {
581
- "surface": "POST /upload/gmail/v1/users/{userId}/messages (simple multipart)",
582
- "kind": "rest",
583
- "heat": "hot",
584
- "fidelity": "unsupported",
585
- "note": "Gate 0 freeze only \u2014 implementation deferred to REST/MCP/domain PRs. Target fidelity per heat: hot\u2192semantic, warm\u2192shape, cold\u2192unsupported."
586
- },
587
- {
588
- "surface": "POST /gmail/v1/users/{userId}/messages/import",
589
- "kind": "rest",
590
- "heat": "hot",
591
- "fidelity": "unsupported",
592
- "note": "Gate 0 freeze only \u2014 implementation deferred to REST/MCP/domain PRs. Target fidelity per heat: hot\u2192semantic, warm\u2192shape, cold\u2192unsupported."
593
- },
594
- {
595
- "surface": "POST /upload/gmail/v1/users/{userId}/messages/import (simple multipart)",
596
- "kind": "rest",
597
- "heat": "hot",
598
- "fidelity": "unsupported",
599
- "note": "Gate 0 freeze only \u2014 implementation deferred to REST/MCP/domain PRs. Target fidelity per heat: hot\u2192semantic, warm\u2192shape, cold\u2192unsupported."
600
- },
601
- {
602
- "surface": "POST /gmail/v1/users/{userId}/messages/{id}/modify",
603
- "kind": "rest",
604
- "heat": "hot",
605
- "fidelity": "unsupported",
606
- "note": "Gate 0 freeze only \u2014 implementation deferred to REST/MCP/domain PRs. Target fidelity per heat: hot\u2192semantic, warm\u2192shape, cold\u2192unsupported."
607
- },
608
- {
609
- "surface": "POST /gmail/v1/users/{userId}/messages/batchModify",
610
- "kind": "rest",
611
- "heat": "hot",
612
- "fidelity": "unsupported",
613
- "note": "Gate 0 freeze only \u2014 implementation deferred to REST/MCP/domain PRs. Target fidelity per heat: hot\u2192semantic, warm\u2192shape, cold\u2192unsupported."
614
- },
615
- {
616
- "surface": "POST /gmail/v1/users/{userId}/messages/batchDelete",
617
- "kind": "rest",
618
- "heat": "hot",
619
- "fidelity": "unsupported",
620
- "note": "Gate 0 freeze only \u2014 implementation deferred to REST/MCP/domain PRs. Target fidelity per heat: hot\u2192semantic, warm\u2192shape, cold\u2192unsupported."
621
- },
622
- {
623
- "surface": "POST /gmail/v1/users/{userId}/messages/{id}/trash",
624
- "kind": "rest",
625
- "heat": "hot",
626
- "fidelity": "unsupported",
627
- "note": "Gate 0 freeze only \u2014 implementation deferred to REST/MCP/domain PRs. Target fidelity per heat: hot\u2192semantic, warm\u2192shape, cold\u2192unsupported."
628
- },
629
- {
630
- "surface": "POST /gmail/v1/users/{userId}/messages/{id}/untrash",
631
- "kind": "rest",
632
- "heat": "hot",
633
- "fidelity": "unsupported",
634
- "note": "Gate 0 freeze only \u2014 implementation deferred to REST/MCP/domain PRs. Target fidelity per heat: hot\u2192semantic, warm\u2192shape, cold\u2192unsupported."
635
- },
636
- {
637
- "surface": "DELETE /gmail/v1/users/{userId}/messages/{id}",
638
- "kind": "rest",
639
- "heat": "hot",
640
- "fidelity": "unsupported",
641
- "note": "Gate 0 freeze only \u2014 implementation deferred to REST/MCP/domain PRs. Target fidelity per heat: hot\u2192semantic, warm\u2192shape, cold\u2192unsupported."
642
- },
643
- {
644
- "surface": "GET /gmail/v1/users/{userId}/messages/{messageId}/attachments/{id}",
645
- "kind": "rest",
646
- "heat": "hot",
647
- "fidelity": "unsupported",
648
- "note": "Gate 0 freeze only \u2014 implementation deferred to REST/MCP/domain PRs. Target fidelity per heat: hot\u2192semantic, warm\u2192shape, cold\u2192unsupported."
649
- },
650
- {
651
- "surface": "GET /gmail/v1/users/{userId}/drafts",
652
- "kind": "rest",
653
- "heat": "hot",
654
- "fidelity": "unsupported",
655
- "note": "Gate 0 freeze only \u2014 implementation deferred to REST/MCP/domain PRs. Target fidelity per heat: hot\u2192semantic, warm\u2192shape, cold\u2192unsupported."
656
- },
657
- {
658
- "surface": "GET /gmail/v1/users/{userId}/drafts/{id}",
659
- "kind": "rest",
660
- "heat": "hot",
661
- "fidelity": "unsupported",
662
- "note": "Gate 0 freeze only \u2014 implementation deferred to REST/MCP/domain PRs. Target fidelity per heat: hot\u2192semantic, warm\u2192shape, cold\u2192unsupported."
663
- },
664
- {
665
- "surface": "POST /gmail/v1/users/{userId}/drafts",
666
- "kind": "rest",
667
- "heat": "hot",
668
- "fidelity": "unsupported",
669
- "note": "Gate 0 freeze only \u2014 implementation deferred to REST/MCP/domain PRs. Target fidelity per heat: hot\u2192semantic, warm\u2192shape, cold\u2192unsupported."
670
- },
671
- {
672
- "surface": "POST /upload/gmail/v1/users/{userId}/drafts (simple multipart)",
673
- "kind": "rest",
674
- "heat": "hot",
675
- "fidelity": "unsupported",
676
- "note": "Gate 0 freeze only \u2014 implementation deferred to REST/MCP/domain PRs. Target fidelity per heat: hot\u2192semantic, warm\u2192shape, cold\u2192unsupported."
677
- },
678
- {
679
- "surface": "PUT /gmail/v1/users/{userId}/drafts/{id}",
680
- "kind": "rest",
681
- "heat": "hot",
682
- "fidelity": "unsupported",
683
- "note": "Gate 0 freeze only \u2014 implementation deferred to REST/MCP/domain PRs. Target fidelity per heat: hot\u2192semantic, warm\u2192shape, cold\u2192unsupported."
684
- },
685
- {
686
- "surface": "PUT /upload/gmail/v1/users/{userId}/drafts/{id} (simple multipart)",
687
- "kind": "rest",
688
- "heat": "hot",
689
- "fidelity": "unsupported",
690
- "note": "Gate 0 freeze only \u2014 implementation deferred to REST/MCP/domain PRs. Target fidelity per heat: hot\u2192semantic, warm\u2192shape, cold\u2192unsupported."
691
- },
692
- {
693
- "surface": "POST /gmail/v1/users/{userId}/drafts/send",
694
- "kind": "rest",
695
- "heat": "hot",
696
- "fidelity": "unsupported",
697
- "note": "Gate 0 freeze only \u2014 implementation deferred to REST/MCP/domain PRs. Target fidelity per heat: hot\u2192semantic, warm\u2192shape, cold\u2192unsupported."
698
- },
699
- {
700
- "surface": "POST /upload/gmail/v1/users/{userId}/drafts/send (simple multipart)",
701
- "kind": "rest",
702
- "heat": "hot",
703
- "fidelity": "unsupported",
704
- "note": "Gate 0 freeze only \u2014 implementation deferred to REST/MCP/domain PRs. Target fidelity per heat: hot\u2192semantic, warm\u2192shape, cold\u2192unsupported."
705
- },
706
- {
707
- "surface": "DELETE /gmail/v1/users/{userId}/drafts/{id}",
708
- "kind": "rest",
709
- "heat": "hot",
710
- "fidelity": "unsupported",
711
- "note": "Gate 0 freeze only \u2014 implementation deferred to REST/MCP/domain PRs. Target fidelity per heat: hot\u2192semantic, warm\u2192shape, cold\u2192unsupported."
712
- },
713
- {
714
- "surface": "GET /gmail/v1/users/{userId}/threads",
715
- "kind": "rest",
716
- "heat": "hot",
717
- "fidelity": "unsupported",
718
- "note": "Gate 0 freeze only \u2014 implementation deferred to REST/MCP/domain PRs. Target fidelity per heat: hot\u2192semantic, warm\u2192shape, cold\u2192unsupported."
719
- },
720
- {
721
- "surface": "GET /gmail/v1/users/{userId}/threads/{id}",
722
- "kind": "rest",
723
- "heat": "hot",
724
- "fidelity": "unsupported",
725
- "note": "Gate 0 freeze only \u2014 implementation deferred to REST/MCP/domain PRs. Target fidelity per heat: hot\u2192semantic, warm\u2192shape, cold\u2192unsupported."
726
- },
727
- {
728
- "surface": "POST /gmail/v1/users/{userId}/threads/{id}/modify",
729
- "kind": "rest",
730
- "heat": "hot",
731
- "fidelity": "unsupported",
732
- "note": "Gate 0 freeze only \u2014 implementation deferred to REST/MCP/domain PRs. Target fidelity per heat: hot\u2192semantic, warm\u2192shape, cold\u2192unsupported."
733
- },
734
- {
735
- "surface": "POST /gmail/v1/users/{userId}/threads/{id}/trash",
736
- "kind": "rest",
737
- "heat": "hot",
738
- "fidelity": "unsupported",
739
- "note": "Gate 0 freeze only \u2014 implementation deferred to REST/MCP/domain PRs. Target fidelity per heat: hot\u2192semantic, warm\u2192shape, cold\u2192unsupported."
740
- },
741
- {
742
- "surface": "POST /gmail/v1/users/{userId}/threads/{id}/untrash",
743
- "kind": "rest",
744
- "heat": "hot",
745
- "fidelity": "unsupported",
746
- "note": "Gate 0 freeze only \u2014 implementation deferred to REST/MCP/domain PRs. Target fidelity per heat: hot\u2192semantic, warm\u2192shape, cold\u2192unsupported."
747
- },
748
- {
749
- "surface": "DELETE /gmail/v1/users/{userId}/threads/{id}",
750
- "kind": "rest",
751
- "heat": "hot",
752
- "fidelity": "unsupported",
753
- "note": "Gate 0 freeze only \u2014 implementation deferred to REST/MCP/domain PRs. Target fidelity per heat: hot\u2192semantic, warm\u2192shape, cold\u2192unsupported."
754
- },
755
- {
756
- "surface": "GET /gmail/v1/users/{userId}/labels",
757
- "kind": "rest",
758
- "heat": "hot",
759
- "fidelity": "unsupported",
760
- "note": "Gate 0 freeze only \u2014 implementation deferred to REST/MCP/domain PRs. Target fidelity per heat: hot\u2192semantic, warm\u2192shape, cold\u2192unsupported."
761
- },
762
- {
763
- "surface": "GET /gmail/v1/users/{userId}/labels/{id}",
764
- "kind": "rest",
765
- "heat": "hot",
766
- "fidelity": "unsupported",
767
- "note": "Gate 0 freeze only \u2014 implementation deferred to REST/MCP/domain PRs. Target fidelity per heat: hot\u2192semantic, warm\u2192shape, cold\u2192unsupported."
768
- },
769
- {
770
- "surface": "POST /gmail/v1/users/{userId}/labels",
771
- "kind": "rest",
772
- "heat": "hot",
773
- "fidelity": "unsupported",
774
- "note": "Gate 0 freeze only \u2014 implementation deferred to REST/MCP/domain PRs. Target fidelity per heat: hot\u2192semantic, warm\u2192shape, cold\u2192unsupported."
775
- },
776
- {
777
- "surface": "PUT /gmail/v1/users/{userId}/labels/{id}",
778
- "kind": "rest",
779
- "heat": "hot",
780
- "fidelity": "unsupported",
781
- "note": "Gate 0 freeze only \u2014 implementation deferred to REST/MCP/domain PRs. Target fidelity per heat: hot\u2192semantic, warm\u2192shape, cold\u2192unsupported."
782
- },
783
- {
784
- "surface": "PATCH /gmail/v1/users/{userId}/labels/{id}",
785
- "kind": "rest",
786
- "heat": "hot",
787
- "fidelity": "unsupported",
788
- "note": "Gate 0 freeze only \u2014 implementation deferred to REST/MCP/domain PRs. Target fidelity per heat: hot\u2192semantic, warm\u2192shape, cold\u2192unsupported."
789
- },
790
- {
791
- "surface": "DELETE /gmail/v1/users/{userId}/labels/{id}",
792
- "kind": "rest",
793
- "heat": "hot",
794
- "fidelity": "unsupported",
795
- "note": "Gate 0 freeze only \u2014 implementation deferred to REST/MCP/domain PRs. Target fidelity per heat: hot\u2192semantic, warm\u2192shape, cold\u2192unsupported."
796
- },
797
- {
798
- "surface": "GET /gmail/v1/users/{userId}/history",
799
- "kind": "rest",
800
- "heat": "hot",
801
- "fidelity": "unsupported",
802
- "note": "Gate 0 freeze only \u2014 implementation deferred to REST/MCP/domain PRs. Target fidelity per heat: hot\u2192semantic, warm\u2192shape, cold\u2192unsupported."
803
- },
804
- {
805
- "surface": "GET /gmail/v1/users/{userId}/settings/filters",
806
- "kind": "rest",
807
- "heat": "warm",
808
- "fidelity": "unsupported",
809
- "note": "Gate 0 freeze only \u2014 implementation deferred to REST/MCP/domain PRs. Target fidelity per heat: hot\u2192semantic, warm\u2192shape, cold\u2192unsupported."
810
- },
811
- {
812
- "surface": "GET /gmail/v1/users/{userId}/settings/filters/{id}",
813
- "kind": "rest",
814
- "heat": "warm",
815
- "fidelity": "unsupported",
816
- "note": "Gate 0 freeze only \u2014 implementation deferred to REST/MCP/domain PRs. Target fidelity per heat: hot\u2192semantic, warm\u2192shape, cold\u2192unsupported."
817
- },
818
- {
819
- "surface": "POST /gmail/v1/users/{userId}/settings/filters",
820
- "kind": "rest",
821
- "heat": "warm",
822
- "fidelity": "unsupported",
823
- "note": "Gate 0 freeze only \u2014 implementation deferred to REST/MCP/domain PRs. Target fidelity per heat: hot\u2192semantic, warm\u2192shape, cold\u2192unsupported."
824
- },
825
- {
826
- "surface": "DELETE /gmail/v1/users/{userId}/settings/filters/{id}",
827
- "kind": "rest",
828
- "heat": "warm",
829
- "fidelity": "unsupported",
830
- "note": "Gate 0 freeze only \u2014 implementation deferred to REST/MCP/domain PRs. Target fidelity per heat: hot\u2192semantic, warm\u2192shape, cold\u2192unsupported."
831
- },
832
- {
833
- "surface": "GET /gmail/v1/users/{userId}/settings/forwardingAddresses",
834
- "kind": "rest",
835
- "heat": "warm",
836
- "fidelity": "unsupported",
837
- "note": "Gate 0 freeze only \u2014 implementation deferred to REST/MCP/domain PRs. Target fidelity per heat: hot\u2192semantic, warm\u2192shape, cold\u2192unsupported."
838
- },
839
- {
840
- "surface": "GET /gmail/v1/users/{userId}/settings/forwardingAddresses/{forwardingEmail}",
841
- "kind": "rest",
842
- "heat": "warm",
843
- "fidelity": "unsupported",
844
- "note": "Gate 0 freeze only \u2014 implementation deferred to REST/MCP/domain PRs. Target fidelity per heat: hot\u2192semantic, warm\u2192shape, cold\u2192unsupported."
845
- },
846
- {
847
- "surface": "GET /gmail/v1/users/{userId}/settings/sendAs",
848
- "kind": "rest",
849
- "heat": "warm",
850
- "fidelity": "unsupported",
851
- "note": "Gate 0 freeze only \u2014 implementation deferred to REST/MCP/domain PRs. Target fidelity per heat: hot\u2192semantic, warm\u2192shape, cold\u2192unsupported."
852
- },
853
- {
854
- "surface": "GET /gmail/v1/users/{userId}/settings/sendAs/{sendAsEmail}",
855
- "kind": "rest",
856
- "heat": "warm",
857
- "fidelity": "unsupported",
858
- "note": "Gate 0 freeze only \u2014 implementation deferred to REST/MCP/domain PRs. Target fidelity per heat: hot\u2192semantic, warm\u2192shape, cold\u2192unsupported."
859
- },
860
- {
861
- "surface": "create_draft",
862
- "kind": "mcp",
863
- "heat": "hot",
864
- "fidelity": "unsupported",
865
- "note": "Gate 0 freeze only \u2014 implementation deferred to REST/MCP/domain PRs. Target fidelity per heat: hot\u2192semantic, warm\u2192shape, cold\u2192unsupported."
866
- },
867
- {
868
- "surface": "list_drafts",
869
- "kind": "mcp",
870
- "heat": "hot",
871
- "fidelity": "unsupported",
872
- "note": "Gate 0 freeze only \u2014 implementation deferred to REST/MCP/domain PRs. Target fidelity per heat: hot\u2192semantic, warm\u2192shape, cold\u2192unsupported."
873
- },
874
- {
875
- "surface": "get_thread",
876
- "kind": "mcp",
877
- "heat": "hot",
878
- "fidelity": "unsupported",
879
- "note": "Gate 0 freeze only \u2014 implementation deferred to REST/MCP/domain PRs. Target fidelity per heat: hot\u2192semantic, warm\u2192shape, cold\u2192unsupported."
880
- },
881
- {
882
- "surface": "search_threads",
883
- "kind": "mcp",
884
- "heat": "hot",
885
- "fidelity": "unsupported",
886
- "note": "Gate 0 freeze only \u2014 implementation deferred to REST/MCP/domain PRs. Target fidelity per heat: hot\u2192semantic, warm\u2192shape, cold\u2192unsupported."
887
- },
888
- {
889
- "surface": "label_thread",
890
- "kind": "mcp",
891
- "heat": "hot",
892
- "fidelity": "unsupported",
893
- "note": "Gate 0 freeze only \u2014 implementation deferred to REST/MCP/domain PRs. Target fidelity per heat: hot\u2192semantic, warm\u2192shape, cold\u2192unsupported."
894
- },
895
- {
896
- "surface": "unlabel_thread",
897
- "kind": "mcp",
898
- "heat": "hot",
899
- "fidelity": "unsupported",
900
- "note": "Gate 0 freeze only \u2014 implementation deferred to REST/MCP/domain PRs. Target fidelity per heat: hot\u2192semantic, warm\u2192shape, cold\u2192unsupported."
901
- },
902
- {
903
- "surface": "list_labels",
904
- "kind": "mcp",
905
- "heat": "hot",
906
- "fidelity": "unsupported",
907
- "note": "Gate 0 freeze only \u2014 implementation deferred to REST/MCP/domain PRs. Target fidelity per heat: hot\u2192semantic, warm\u2192shape, cold\u2192unsupported."
908
- },
909
- {
910
- "surface": "label_message",
911
- "kind": "mcp",
912
- "heat": "hot",
913
- "fidelity": "unsupported",
914
- "note": "Gate 0 freeze only \u2014 implementation deferred to REST/MCP/domain PRs. Target fidelity per heat: hot\u2192semantic, warm\u2192shape, cold\u2192unsupported."
915
- },
916
- {
917
- "surface": "unlabel_message",
918
- "kind": "mcp",
919
- "heat": "hot",
920
- "fidelity": "unsupported",
921
- "note": "Gate 0 freeze only \u2014 implementation deferred to REST/MCP/domain PRs. Target fidelity per heat: hot\u2192semantic, warm\u2192shape, cold\u2192unsupported."
922
- },
923
- {
924
- "surface": "create_label",
925
- "kind": "mcp",
926
- "heat": "hot",
927
- "fidelity": "unsupported",
928
- "note": "Gate 0 freeze only \u2014 implementation deferred to REST/MCP/domain PRs. Target fidelity per heat: hot\u2192semantic, warm\u2192shape, cold\u2192unsupported."
929
- }
930
- ],
537
+ "gaps": [],
931
538
  "doc_drift": [
932
539
  {
933
- "item": "mcp_live_tools_list_count",
934
- "detail": "Live tools/list returned 13 tools; public docs + launch plan freeze 10. Extras: get_message, apply_sensitive_thread_label, apply_sensitive_message_label."
540
+ "item": "mcp_gate1_launch_expansion",
541
+ "detail": "Gate 1 promotes get_message, apply_sensitive_thread_label, and apply_sensitive_message_label into the OSS launch set so tools/list matches the live 13-tool Developer Preview capture."
935
542
  },
936
543
  {
937
544
  "item": "list_drafts_readOnlyHint_docs_vs_live",