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
-
+
@@ -154,7 +154,7 @@ Surfaces are ordered by maturity level, completeness, and quality. LTS support i
-
+
@@ -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"],