Skip to content

refactor(channels): remove v2026.7.2-gated compat (flat streaming keys, group intro hint)#113533

Merged
steipete merged 2 commits into
mainfrom
codex/remove-gated-compat
Jul 25, 2026
Merged

refactor(channels): remove v2026.7.2-gated compat (flat streaming keys, group intro hint)#113533
steipete merged 2 commits into
mainfrom
codex/remove-gated-compat

Conversation

@steipete

Copy link
Copy Markdown
Contributor

What Problem This Solves

Channel runtime still carried short-lived v2026.7.2 compatibility branches for flat streaming keys and the deprecated group-introduction hint even though migration ownership now belongs in doctor.

Supersedes the older held draft #107656 with the current reviewed scope and the maintainer-approved early-removal decision.

Why This Change Was Made

This AI-assisted, maintainer-approved early removal makes runtime consume only canonical nested streaming.* configuration, keeps the key migration in doctor, and removes the deprecated group-intro adapter member.

User Impact

Current canonical configurations behave the same. Configurations with the removed flat keys must be normalized through openclaw doctor --fix; runtime no longer silently reads the old shape.

Release-note context: channel streaming configuration now has one canonical nested runtime shape, with legacy repair owned by doctor.

Evidence

  • WhatsApp extension proof: 97 files and 1,161 tests passed.
  • Changed gate: Blacksmith Testbox tbx_01kybcm321ng7e999xg4s7b660, Actions run 30137601175.
  • Plugin SDK surface check and two post-fix autoreviews passed.
  • The known unrelated src/channels unit-fast loader/mock quirk reproduced separately; no failing file overlaps this patch, while focused proof and the authoritative changed gate are green.

steipete added 2 commits July 24, 2026 17:48
maintainer-approved early removal of v2026.7.2-gated compat
maintainer-approved early removal of v2026.7.2-gated compat

Plugin SDK surface baseline update is maintainer-approved for this intentional removal.
@steipete
steipete marked this pull request as ready for review July 25, 2026 06:37
@openclaw-barnacle openclaw-barnacle Bot added docs Improvements or additions to documentation channel: matrix Channel integration: matrix channel: mattermost Channel integration: mattermost channel: telegram Channel integration: telegram channel: whatsapp-web Channel integration: whatsapp-web commands Command implementations agents Agent runtime and tooling size: L maintainer Maintainer-authored PR labels Jul 25, 2026
@steipete

Copy link
Copy Markdown
Contributor Author

@clawsweeper re-review

The previous review lease expired without replacing the start placeholder with a verdict or Rank-up moves.

@clawsweeper

clawsweeper Bot commented Jul 25, 2026

Copy link
Copy Markdown
Contributor

🦞🧹
ClawSweeper re-review requested.

I asked ClawSweeper to review this item again.
Action: item re-review queued (workflow sweep.yml, event repository_dispatch).
Result: when the review finishes, ClawSweeper will create the durable review comment if needed or update the existing comment in place.

Re-review progress:

@clawsweeper clawsweeper Bot added rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. P1 High-priority user-facing bug, regression, or broken workflow. merge-risk: 🚨 compatibility 🚨 May break existing users, config, migrations, defaults, or upgrade paths. labels Jul 25, 2026
@clawsweeper

clawsweeper Bot commented Jul 25, 2026

Copy link
Copy Markdown
Contributor

Codex review: needs real behavior proof before merge. Reviewed July 25, 2026, 3:42 AM ET / 07:42 UTC.

ClawSweeper review

What this changes

This PR makes channel runtime accept only nested streaming.* configuration, leaves legacy-key migration to openclaw doctor --fix, and removes the unused resolveGroupIntroHint channel adapter.

Merge readiness

Blocked until real behavior proof from a real setup is added - 6 items remain

Keep this PR open for explicit maintainer release/SDK compatibility confirmation. It deliberately removes fallback behavior and one public channel adapter, while the supplied context does not independently establish that external plugin authors received a shipped deprecation window; the maintainer label also requires human handling. Likely related people: steipete is the recent compatibility-surface contributor (medium confidence).

Priority: P1
Reviewed head: d554552970b56fb67699a8a84aff8aa8139b6bc6
Owner decision: Required. See Decision needed.

Review scores

Measure Result What it means
Overall readiness 🦪 silver shellfish (2/6) The patch is focused and has automated validation, but merge confidence is capped by missing real upgrade proof and the unresolved early-removal compatibility decision.
Proof confidence 🦪 silver shellfish (2/6) Needs real behavior proof before merge: The supplied evidence reports tests and CI gates only; add a redacted terminal transcript showing openclaw doctor --fix normalizes a legacy streaming configuration and the updated runtime then uses the migrated nested configuration. Redact any tokens, endpoints, phone numbers, IP addresses, and other private values; updating the PR body should trigger a fresh review, or a maintainer can request @clawsweeper re-review. After adding proof, update the PR body; ClawSweeper should re-review automatically. If it does not, the PR author or someone with repository write access can comment @clawsweeper re-review.
Patch quality 🐚 platinum hermit (4/6) No actionable review findings were identified.

Verification

Check Result Evidence
Real behavior Needs proof Needs real behavior proof before merge: The supplied evidence reports tests and CI gates only; add a redacted terminal transcript showing openclaw doctor --fix normalizes a legacy streaming configuration and the updated runtime then uses the migrated nested configuration. Redact any tokens, endpoints, phone numbers, IP addresses, and other private values; updating the PR body should trigger a fresh review, or a maintainer can request @clawsweeper re-review. After adding proof, update the PR body; ClawSweeper should re-review automatically. If it does not, the PR author or someone with repository write access can comment @clawsweeper re-review.
Evidence reviewed 5 items Runtime compatibility removal: The proposed patch replaces the shared streaming compatibility entry with a nested-only shape and removes scalar/flat-key fallback readers, so existing configurations that still depend on those reads change behavior after upgrade.
Doctor remains the migration owner: The proposed patch retains the doctor deprecation record and changes its note to say runtime reads are nested-only while doctor migrates shipped legacy configuration.
Plugin SDK adapter removal: The patch removes resolveGroupIntroHint from ChannelGroupAdapter, a published channel-plugin contract, and updates the generated SDK baseline accordingly.
Findings None None.
Security None None.

How this fits together

Channel configuration is parsed by channel plugins and shared streaming resolvers before auto-reply delivery renders partial, block, or progress output. Doctor is the upgrade boundary that rewrites legacy configuration into the canonical nested form before runtime consumes it.

flowchart LR
  A[User channel configuration] --> B[Doctor migration]
  B --> C[Canonical nested streaming config]
  A --> D[Channel plugin schema]
  C --> E[Shared streaming resolvers]
  D --> E
  E --> F[Auto-reply delivery]
  F --> G[Channel messages]
Loading

Decision needed

Question Recommendation
Should v2026.7.2 intentionally remove the external channel streaming fallbacks and resolveGroupIntroHint adapter before the normal tagged deprecation window is independently verified? Keep one tagged deprecation window: Retain the fallback readers and deprecated adapter until a release containing clear warnings has shipped, then remove them in the scheduled follow-up.

Why: This is an intentional compatibility and plugin-contract change rather than a mechanical defect; the PR body asserts early approval, but the supplied visible discussion does not provide the decision or its upgrade rationale.

Before merge

  • Add real behavior proof - Needs real behavior proof before merge: The supplied evidence reports tests and CI gates only; add a redacted terminal transcript showing openclaw doctor --fix normalizes a legacy streaming configuration and the updated runtime then uses the migrated nested configuration. Redact any tokens, endpoints, phone numbers, IP addresses, and other private values; updating the PR body should trigger a fresh review, or a maintainer can request @clawsweeper re-review. After adding proof, update the PR body; ClawSweeper should re-review automatically. If it does not, the PR author or someone with repository write access can comment @clawsweeper re-review.
  • Resolve merge risk (P1) - Existing external channel plugins or stored configurations using flat/scalar streaming forms can stop working at runtime unless the doctor migration covers their concrete configuration and users run it before startup.
  • Resolve merge risk (P1) - Removing ChannelGroupAdapter.resolveGroupIntroHint is a plugin SDK compatibility break; generated-baseline acceptance alone does not establish the intended external upgrade contract.
  • Resolve merge risk (P1) - The earlier branch required a tagged deprecation-warning release before removal. The supplied context does not independently prove the asserted early-removal exception or release-window decision.
  • Complete next step (P2) - A maintainer must explicitly decide whether the early external SDK/config break is acceptable and verify the upgrade contract; this is not a safe automated repair task.
Agent review details

Security

None.

PR surface

Source -170, Tests -222, Docs -2, Generated 0. Total -394 across 26 files.

View PR surface stats
Area Files Added Removed Net
Source 13 80 250 -170
Tests 11 37 259 -222
Docs 1 2 4 -2
Config 0 0 0 0
Generated 1 3 3 0
Other 0 0 0 0
Total 26 122 516 -394

Review metrics

Metric Value Why it matters
Public compatibility removals 1 channel-plugin adapter removed; shared scalar and flat streaming fallback reads removed Both changes can affect installed external plugins and existing configuration on upgrade even though canonical nested configuration remains unchanged.

Stored data model

Persistent data-model change detected: migration/backfill/repair: docs/concepts/streaming.md, migration/backfill/repair: extensions/matrix/src/config-schema.test.ts, migration/backfill/repair: extensions/matrix/src/config-schema.ts, migration/backfill/repair: src/commands/doctor/shared/deprecation-compat.ts, serialized state: extensions/matrix/src/config-schema.test.ts. Confirm migration or upgrade compatibility proof before merge.

Root-cause cluster

Relationship: canonical
Canonical: #113533
Summary: This PR is presented as the current replacement for the same fallback-removal scope in the older held draft.

Members:

Proposal only: this assessment does not dispatch repair, suppress jobs, mutate sibling items, close, or merge anything.

Merge-risk options

Maintainer options:

  1. Keep the deprecation boundary through a tagged release (recommended)
    Restore the temporary external fallback and adapter until the project can point to a shipped warning period and a tested upgrade path.
  2. Accept the v2026.7.2 breaking change explicitly
    A responsible owner can approve removal now after confirming the release note, doctor migration coverage, and external plugin SDK upgrade policy.

Technical review

Best possible solution:

Keep one documented, shipped deprecation window for external plugin-facing fallbacks and the adapter, or obtain explicit owner approval that v2026.7.2 intentionally makes this breaking SDK/config transition and that doctor migration is sufficient for upgrades.

Do we have a high-confidence way to reproduce the issue?

Yes, from source: start with an external channel entry that uses a retired scalar or flat streaming form, then run the updated runtime without doctor normalization; the proposed resolver no longer reads that shape. A live current-head terminal reproduction was not included in the supplied evidence.

Is this the best way to solve the issue?

Unclear: nested-only runtime plus doctor-owned migration is the maintainable architecture, but early removal is not yet shown to be the best upgrade path for the published plugin/config contract.

AGENTS.md: found and applied where relevant.

Codex review notes: model internal, reasoning high; reviewed against 749dbcb2a7bf.

Labels

Label changes:

  • add P1: The PR can break existing channel/plugin configurations during the next update rather than only changing internal cleanup behavior.
  • add merge-risk: 🚨 compatibility: It removes runtime compatibility reads and a published channel adapter while requiring users or plugin authors to adopt the canonical path.
  • add rating: 🦪 silver shellfish: Overall readiness is 🦪 silver shellfish; proof is 🦪 silver shellfish and patch quality is 🐚 platinum hermit.
  • add status: 📣 needs proof: The PR needs real behavior proof before ClawSweeper can clear the contributor ask. Needs real behavior proof before merge: The supplied evidence reports tests and CI gates only; add a redacted terminal transcript showing openclaw doctor --fix normalizes a legacy streaming configuration and the updated runtime then uses the migrated nested configuration. Redact any tokens, endpoints, phone numbers, IP addresses, and other private values; updating the PR body should trigger a fresh review, or a maintainer can request @clawsweeper re-review. After adding proof, update the PR body; ClawSweeper should re-review automatically. If it does not, the PR author or someone with repository write access can comment @clawsweeper re-review.

Label justifications:

  • P1: The PR can break existing channel/plugin configurations during the next update rather than only changing internal cleanup behavior.
  • merge-risk: 🚨 compatibility: It removes runtime compatibility reads and a published channel adapter while requiring users or plugin authors to adopt the canonical path.
  • rating: 🦪 silver shellfish: Overall readiness is 🦪 silver shellfish; proof is 🦪 silver shellfish and patch quality is 🐚 platinum hermit.
  • status: 📣 needs proof: The PR needs real behavior proof before ClawSweeper can clear the contributor ask. Needs real behavior proof before merge: The supplied evidence reports tests and CI gates only; add a redacted terminal transcript showing openclaw doctor --fix normalizes a legacy streaming configuration and the updated runtime then uses the migrated nested configuration. Redact any tokens, endpoints, phone numbers, IP addresses, and other private values; updating the PR body should trigger a fresh review, or a maintainer can request @clawsweeper re-review. After adding proof, update the PR body; ClawSweeper should re-review automatically. If it does not, the PR author or someone with repository write access can comment @clawsweeper re-review.

Evidence

What I checked:

  • Runtime compatibility removal: The proposed patch replaces the shared streaming compatibility entry with a nested-only shape and removes scalar/flat-key fallback readers, so existing configurations that still depend on those reads change behavior after upgrade. (src/channels/streaming.ts:39, d554552970b5)
  • Doctor remains the migration owner: The proposed patch retains the doctor deprecation record and changes its note to say runtime reads are nested-only while doctor migrates shipped legacy configuration. (src/commands/doctor/shared/deprecation-compat.ts:436, d554552970b5)
  • Plugin SDK adapter removal: The patch removes resolveGroupIntroHint from ChannelGroupAdapter, a published channel-plugin contract, and updates the generated SDK baseline accordingly. (src/channels/plugins/types.adapters.ts:172, d554552970b5)
  • Prior removal plan: The related earlier draft explicitly said not to merge the same compatibility removal until a release train had tagged the deprecation warnings; this replacement PR asserts an early-removal decision but the supplied discussion contains no maintainer confirmation of the release-contract exception. (63d2b927b696)
  • Available proof is automated only: The PR body reports focused tests, a changed gate, SDK surface checking, and autoreviews, but does not contain a redacted live migration/runtime transcript showing legacy configuration repaired by doctor and then accepted by the updated runtime. (d554552970b5)

Likely related people:

  • steipete: Authored both commits in this PR and the related earlier branch that defines the same streaming fallback and group-adapter removal scope. (role: recent compatibility-surface contributor; confidence: medium; commits: 08104b02ecea, d554552970b5, 63d2b927b696; files: src/channels/streaming.ts, src/channels/plugins/types.adapters.ts, src/commands/doctor/shared/deprecation-compat.ts)

Rank-up moves

Optional improvements that raise the rating; they are not merge blockers.

  • Add redacted real terminal proof of doctor migration followed by successful runtime startup or channel resolution.
  • Record the responsible maintainer's explicit v2026.7.2 SDK/config compatibility decision and upgrade rationale.

Rating scale

Score Internal tier Crab rank Meaning
6/6 S 🦀 challenger crab Exceptional readiness
5/6 A 🦞 diamond lobster Very strong readiness
4/6 B 🐚 platinum hermit Good normal PR; ordinary maintainer review
3/6 C 🦐 gold shrimp Useful, but confidence is limited
2/6 D 🦪 silver shellfish Proof or implementation needs work
1/6 F 🧂 unranked krab Not merge-ready
N/A NA 🌊 off-meta tidepool Rating does not apply

Overall follows the weaker of proof and patch quality.
Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics.

Workflow

  • ClawSweeper keeps one durable marker-backed review comment per issue or PR.
  • Re-runs edit this comment so the latest verdict, findings, and automation markers stay together instead of adding duplicate bot comments.
  • A fresh review can be triggered by eligible @clawsweeper re-review comments, exact-item GitHub events, scheduled/background review runs, or manual workflow dispatch.
  • PR/issue authors and users with repository write access can comment @clawsweeper re-review or @clawsweeper re-run on an open PR or issue to request a fresh review only.
  • Maintainers can also comment @clawsweeper review to request a fresh review only.
  • Fresh-review commands do not start repair, autofix, rebase, CI repair, or automerge.
  • Maintainer-only repair and merge flows require explicit commands such as @clawsweeper autofix, @clawsweeper automerge, @clawsweeper fix ci, or @clawsweeper address review.
  • Maintainers can comment @clawsweeper explain to ask for more context, or @clawsweeper stop to stop active automation.

@steipete

Copy link
Copy Markdown
Contributor Author

ClawSweeper rank-up moves and compatibility decision resolved for landing:

  • Responsible maintainer decision: approve the early v2026.7.2 compatibility removal. Runtime must consume only canonical nested streaming.*; openclaw doctor --fix remains the sole owner for repairing flat/scalar legacy configuration. The unused resolveGroupIntroHint adapter member is intentionally removed from the Plugin SDK contract. This explicitly supersedes the earlier hold in refactor(channels)!: close the streaming flat-key and intro-hint deprecation windows #107656.
  • Upgrade rationale: one canonical runtime shape prevents fallback stacks from becoming permanent architecture, while doctor provides the explicit migration boundary. Existing canonical configurations are unchanged; legacy configurations require doctor normalization before runtime.
  • Skipping a new live doctor/runtime transcript. The exact head passed WhatsApp proof (97 files / 1,161 tests), focused channel/SDK tests, public surface checks, Blacksmith changed gate tbx_01kybcm321ng7e999xg4s7b660 / 30137601175, hosted CI 30147839902 attempt 2, Workflow Sanity 30147838624 attempt 2, and Labeler 30147838605 attempt 2. The maintainer accepts the remaining live-upgrade uncertainty for this intentional compatibility transition.

No ClawSweeper implementation finding remains; this is the explicit v2026.7.2 SDK/config decision requested by the review.

@steipete
steipete merged commit d2b6573 into main Jul 25, 2026
331 of 358 checks passed
@steipete
steipete deleted the codex/remove-gated-compat branch July 25, 2026 08:09
@steipete

Copy link
Copy Markdown
Contributor Author

Merged via squash.

github-actions Bot pushed a commit to Desicool/openclaw that referenced this pull request Jul 26, 2026
…s, group intro hint) (openclaw#113533)

* refactor(channels): remove flat streaming compat

maintainer-approved early removal of v2026.7.2-gated compat

* refactor(channels): remove group intro hint adapter

maintainer-approved early removal of v2026.7.2-gated compat

Plugin SDK surface baseline update is maintainer-approved for this intentional removal.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

agents Agent runtime and tooling channel: matrix Channel integration: matrix channel: mattermost Channel integration: mattermost channel: telegram Channel integration: telegram channel: whatsapp-web Channel integration: whatsapp-web commands Command implementations docs Improvements or additions to documentation maintainer Maintainer-authored PR merge-risk: 🚨 compatibility 🚨 May break existing users, config, migrations, defaults, or upgrade paths. P1 High-priority user-facing bug, regression, or broken workflow. rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. size: L status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant