diff --git a/.agents/skills/claw-score/references/completeness/imessage-bluebubbles.md b/.agents/skills/claw-score/references/completeness/imessage-bluebubbles.md index 5a8b658e5da7..a607f7e975ba 100644 --- a/.agents/skills/claw-score/references/completeness/imessage-bluebubbles.md +++ b/.agents/skills/claw-score/references/completeness/imessage-bluebubbles.md @@ -1,12 +1,17 @@ -# iMessage / BlueBubbles Completeness +# iMessage Completeness Use this rubric when assigning category Completeness scores for the `imessage-bluebubbles` surface. ## Category Scope -- Channel Setup and Operations: Translate legacy config, Cut over safely, Handle migration caveats, Run local imsg, Run through SSH wrapper, Grant macOS permissions, Probe runtime health, Account setup prompts, Account status checks, Doctor repair checks, Account Config, Translate legacy config, Cut over safely, Handle migration caveats, Run local imsg, Run through SSH wrapper, Grant macOS permissions, Probe runtime health -- Access and Identity: Authorize direct senders, Route direct conversations, Bind ACP sessions, Group Policy, Mentions, System Prompts, Group Policy, Mentions, System Prompts -- Conversation Routing and Delivery: Watch live messages, Coalesce split-send DMs, Replay missed messages, Seed conversation history, Authorize direct senders, Route direct conversations, Bind ACP sessions, Group Policy, Mentions, System Prompts +- Channel Setup and Operations: Translate legacy config, Cut over safely, Handle migration caveats, Run local imsg, Run through SSH wrapper, Grant macOS permissions, Probe runtime health, Account setup prompts, Account status checks, Doctor repair checks, Account Config +- Access and Identity: Authorize direct senders, Route direct conversations, Bind ACP sessions, Group Policy, Mentions, System Prompts +- Conversation Routing and Delivery: Watch live messages, Coalesce split-send DMs, Replay missed messages, Seed conversation history - Media and Rich Content: Media, Attachments, Remote Fetch, Chunking, Native Actions, Private API, Message Tool -- Native Controls and Approvals: Native Approvals, Reactions, Operator Control, Media, Attachments, Remote Fetch, Chunking, Native Actions, Private API, Message Tool, Native Actions, Private API, Message Tool +- Native Controls and Approvals: Native Approvals, Reactions, Operator Control + +## Surface-Specific Guidance + +- Score `imsg` as the active iMessage transport. BlueBubbles is removed and counts only as a bounded migration workflow under Channel Setup and Operations. +- Keep the stable `imessage-bluebubbles` surface and coverage namespace for compatibility with historical evidence; do not interpret that identifier as an active product name. diff --git a/docs/maturity/scorecard.md b/docs/maturity/scorecard.md index b4fb5dcf1301..c5e9855c6ddf 100644 --- a/docs/maturity/scorecard.md +++ b/docs/maturity/scorecard.md @@ -82,7 +82,7 @@ Surfaces are ordered by maturity level, completeness, and quality. LTS support i
TelegramM3Beta5 areas
CoverageExperimental9%
QualityAlpha68%
CompletenessBeta78%
Full - 5
SlackM3Beta5 areas
CoverageExperimental38%
QualityAlpha66%
CompletenessBeta78%
Full - 5
Google provider pathM3Beta5 areas
CoverageExperimental0%
QualityAlpha66%
CompletenessBeta78%
None
-
iMessage and BlueBubblesM3Beta5 areas
CoverageExperimental0%
QualityAlpha66%
CompletenessBeta78%
None
+
iMessageM3Beta5 areas
CoverageExperimental0%
QualityAlpha66%
CompletenessBeta78%
None
macOS companion appM3Beta8 areas
CoverageExperimental0%
QualityAlpha66%
CompletenessBeta78%
None
OpenRouter provider pathM3Beta4 areas
CoverageExperimental0%
QualityAlpha66%
CompletenessBeta78%
None
WhatsAppM3Beta5 areas
CoverageExperimental0%
QualityAlpha66%
CompletenessBeta78%
None
@@ -154,7 +154,7 @@ Surfaces are ordered by maturity level, completeness, and quality. LTS support i
DiscordM4Stable6 areas
CoverageExperimental28%
QualityBeta73%
CompletenessStable87%
Partial - 4
TelegramM3Beta5 areas
CoverageExperimental9%
QualityAlpha68%
CompletenessBeta78%
Full - 5
SlackM3Beta5 areas
CoverageExperimental38%
QualityAlpha66%
CompletenessBeta78%
Full - 5
-
iMessage and BlueBubblesM3Beta5 areas
CoverageExperimental0%
QualityAlpha66%
CompletenessBeta78%
None
+
iMessageM3Beta5 areas
CoverageExperimental0%
QualityAlpha66%
CompletenessBeta78%
None
WhatsAppM3Beta5 areas
CoverageExperimental0%
QualityAlpha66%
CompletenessBeta78%
None
MatrixM2Alpha6 areas
CoverageAlpha67%
QualityAlpha60%
CompletenessAlpha67%
None
Google ChatM2Alpha5 areas
CoverageExperimental0%
QualityAlpha59%
CompletenessAlpha66%
None
@@ -1095,7 +1095,7 @@ Open a surface to inspect the evidence state of each category. The list stays co - +

5 needs review

AreaFeatures / coverage IDsFollow-up
diff --git a/docs/maturity/taxonomy.md b/docs/maturity/taxonomy.md index 6717f28bc8d7..792f0674fac1 100644 --- a/docs/maturity/taxonomy.md +++ b/docs/maturity/taxonomy.md @@ -200,8 +200,8 @@ A surface is a product area such as Gateway runtime, Discord, or the macOS app. M3Beta5 areas - 78% complete - - iMessage and BlueBubbles + + iMessage M3Beta5 areas - 78% complete @@ -3487,10 +3487,11 @@ A surface is a product area such as Gateway runtime, Discord, or the macOS app. - + + - Supported iMessage runs through imsg on a signed-in macOS Messages host; legacy BlueBubbles configs require migration. Keep macOS permissions, SSH wrapper, SIP/private API, and migration caveats visible. + Supported iMessage runs through imsg on a signed-in macOS Messages host. Keep macOS permissions, SSH wrapper, SIP/private API, and legacy BlueBubbles migration caveats visible without presenting the removed transport as an active channel.
Coverage Experimental - 0%Quality Alpha - 66%Completeness Beta - 78%None
@@ -3520,7 +3521,7 @@ A surface is a product area such as Gateway runtime, Discord, or the macOS app.
Beta78%
- [iMessage](/channels/imessage), [Imessage From Bluebubbles](/channels/imessage-from-bluebubbles), [Config Channels](/gateway/config-channels) + [iMessage](/channels/imessage), [Config Channels](/gateway/config-channels)
@@ -3548,7 +3549,7 @@ A surface is a product area such as Gateway runtime, Discord, or the macOS app.
Beta78%
- [iMessage](/channels/imessage), [Imessage From Bluebubbles](/channels/imessage-from-bluebubbles), [Config Channels](/gateway/config-channels) + [iMessage](/channels/imessage), [Config Channels](/gateway/config-channels)
diff --git a/qa/maturity-scores.yaml b/qa/maturity-scores.yaml index b20d7f49014f..11a2217f173b 100644 --- a/qa/maturity-scores.yaml +++ b/qa/maturity-scores.yaml @@ -3067,7 +3067,7 @@ surfaces: reason: human_override human_override: true - id: imessage-bluebubbles - name: iMessage and BlueBubbles + name: iMessage family: channel level: id: beta diff --git a/scripts/qa/render-maturity-docs.ts b/scripts/qa/render-maturity-docs.ts index 92559053706e..0ed87eb50055 100644 --- a/scripts/qa/render-maturity-docs.ts +++ b/scripts/qa/render-maturity-docs.ts @@ -204,6 +204,10 @@ function markdownSlug(value: string): string { .replace(/^-|-$/g, ""); } +const legacySurfaceAnchors: Readonly> = { + "imessage-bluebubbles": ["imessage-and-bluebubbles"], +}; + function normalizeRoutePath(route: string): string { return route.replace(/^\/+/, "").replace(/\/+$/, ""); } @@ -1158,6 +1162,7 @@ function renderTaxonomy({ lines.push( ` `, `
`, + ...(legacySurfaceAnchors[surface.id] ?? []).map((anchor) => ` `), "", ` ${markdownEscape(surface.rationale ?? "")}`, "", diff --git a/taxonomy.yaml b/taxonomy.yaml index 0125c21c6a24..1500551a9bf6 100644 --- a/taxonomy.yaml +++ b/taxonomy.yaml @@ -8418,11 +8418,11 @@ surfaces: source_ref: null process_version: 3 - id: imessage-bluebubbles - name: iMessage and BlueBubbles + name: iMessage family: channel level: beta level_code: M3 - rationale: Supported iMessage runs through imsg on a signed-in macOS Messages host; legacy BlueBubbles configs require migration. Keep macOS permissions, SSH wrapper, SIP/private API, and migration caveats visible. + rationale: Supported iMessage runs through imsg on a signed-in macOS Messages host. Keep macOS permissions, SSH wrapper, SIP/private API, and legacy BlueBubbles migration caveats visible without presenting the removed transport as an active channel. completeness_instructions: references/completeness/imessage-bluebubbles.md categories: - name: Channel Setup and Operations @@ -8451,13 +8451,13 @@ surfaces: description: Covers Probe runtime health across local and remote `imsg rpc`, `cliPath`, `dbPath`, `remoteHost`, and related imsg transport, host requirements, and permissions behavior. - name: Account setup prompts coverageIds: [imessage-bluebubbles.account-setup-prompts] - description: Covers setup prompts, policy writes, account merging, default account selection, and account configuration behavior for iMessage/BlueBubbles. + description: Covers setup prompts, policy writes, account merging, default account selection, and account configuration behavior for iMessage. - name: Account status checks coverageIds: [imessage-bluebubbles.account-status-checks] - description: Covers account status output, setup state, account merging, and default account selection for iMessage/BlueBubbles. + description: Covers account status output, setup state, account merging, and default account selection for iMessage. - name: Doctor repair checks coverageIds: [imessage-bluebubbles.doctor-repair-checks] - description: Covers doctor checks, setup repair prompts, and policy verification for iMessage/BlueBubbles account configuration. + description: Covers doctor checks, setup repair prompts, and policy verification for iMessage account configuration. - name: Account Config coverageIds: [imessage-bluebubbles.account-config] description: Covers Account Config across setup prompts, policy writes, account merging, default account selection, and related setup, status, doctor, and account config behavior. @@ -8479,7 +8479,7 @@ surfaces: - account status - doctor checks - Account Config - - imessage / bluebubbles setup, status, doctor, and account config + - iMessage setup, status, doctor, and account config - setup, status, doctor, and account config category_note: setup-status-doctor-and-account-config.md human_lts_override: false @@ -8506,7 +8506,6 @@ surfaces: description: Covers System Prompts across `groupPolicy`, `groupAllowFrom`, `groups`, wildcard registry entries, `requireMention`, mention patterns, per-group tools, per-group system prompts, group sessions, and warnings for allowlist misconfiguration. docs: - docs/channels/imessage.md - - docs/channels/imessage-from-bluebubbles.md - docs/gateway/config-channels.md search_anchors: - Authorize direct senders @@ -8515,7 +8514,7 @@ surfaces: - Group Policy - Mentions - System Prompts - - imessage / bluebubbles group policy, mentions, and system prompts + - iMessage group policy, mentions, and system prompts - group policy, mentions, and system prompts category_note: dm-pairing-access-and-session-routing.md human_lts_override: false @@ -8569,19 +8568,18 @@ surfaces: description: Covers Message Tool across private API probing, action availability, action config gates, tapback mapping, edit/unsend/reply/effects/group management, `send-rich --file`, message-tool visibility/target grammar, and action dispatch errors. docs: - docs/channels/imessage.md - - docs/channels/imessage-from-bluebubbles.md - docs/gateway/config-channels.md search_anchors: - Media - Attachments - Remote Fetch - Chunking - - imessage / bluebubbles media, attachments, remote fetch, and chunking + - iMessage media, attachments, remote fetch, and chunking - media, attachments, remote fetch, and chunking - Native Actions - Private API - Message Tool - - imessage / bluebubbles native actions, private api, and message tool + - iMessage native actions, private api, and message tool - native actions, private api, and message tool category_note: media-attachments-remote-fetch-and-chunking.md human_lts_override: false @@ -8603,15 +8601,15 @@ surfaces: - Native Approvals - Reactions - Operator Control - - imessage / bluebubbles native approvals, reactions, and operator control + - iMessage native approvals, reactions, and operator control - native approvals, reactions, and operator control category_note: native-approvals-reactions-and-operator-control.md human_lts_override: false last_score_run: status: complete - completed_at: "2026-05-30" + completed_at: "2026-09-08" by: codex - source_ref: null + source_ref: openclaw@19537f3e957ce8720cfdf22a35e7f0bb3e6b7741 process_version: 3 - id: signal name: Signal diff --git a/test/scripts/render-maturity-docs.test.ts b/test/scripts/render-maturity-docs.test.ts index af646ebeba8a..d7da2cbe9845 100644 --- a/test/scripts/render-maturity-docs.test.ts +++ b/test/scripts/render-maturity-docs.test.ts @@ -440,6 +440,13 @@ describe("maturity docs renderer CLI", () => { expect(taxonomy).not.toMatch( /
[^\n]*\[[^\n]+\]\([^)]+\)[^\n]*<\/div>/, ); + const taxonomyDocument = parseDocsDocument(taxonomy); + for (const id of ["imessage", "imessage-and-bluebubbles"]) { + expect( + taxonomyDocument.ids.filter((candidate: string) => candidate === id), + id, + ).toHaveLength(1); + } for (const [markdown, id] of [ [scorecard, "surface-explorer"], [taxonomy, "product-areas"],