refactor(channels)!: close the streaming flat-key and intro-hint deprecation windows#107656
refactor(channels)!: close the streaming flat-key and intro-hint deprecation windows#107656steipete wants to merge 6 commits into
Conversation
…sted-only rewrite
|
Landing gate research (codex sweep of 77 external channel packages — catalogs, npm, ClawHub; full file:line evidence archived in the maintainer notes): 13 packages use the surface this PR deletes. Flat/scalar streaming config ships in 11 (notably @srinathh/openclaw-channel-twilio-whatsapp carries flat chunkMode in its own plugin.json defaults — operator-side doctor cannot fix that; only a plugin update can), and resolveGroupIntroHint is registered by @soimy/dingtalk (4.3k downloads), @tencent-connect/openclaw-qqbot, @cxyhhhhh/openclaw-qqbot, @nevis/talk (type-level break only; core never read the hint). The deprecated channel-streaming subpath (used by @inline-openclaw/inline and @roamhq/openclaw-roam) is NOT deleted here. Tag math: the warnings first shipped in v2026.7.2-beta.1; v2026.7.1 stable predates them. Earliest policy-compliant landing: after the 2026.7.2 STABLE tag (which must also pick up the intro-hint deprecation from #107252), into the 2026.7.3 train — realistically 2026-07-16/17 at current cadence, ideally after notifying the affected package owners. |
|
Deprecation umbrella issue with the affected-package list, migration snippet, and train timeline: #107860 |
|
Codex review: needs real behavior proof before merge. Reviewed July 15, 2026, 12:23 AM ET / 04:23 UTC. Summary PR surface: Source -185, Tests -227, Docs -2, Generated 0. Total -414 across 29 files. Reproducibility: not applicable. This PR intentionally removes deprecated compatibility behavior rather than fixing a reported current-main bug. The affected upgrade paths are clearly identified from source and the external-package audit. Review metrics: 3 noteworthy metrics.
Stored data model Root-cause cluster Members:
Proposal only: this assessment does not dispatch repair, suppress jobs, mutate sibling items, close, or merge anything. Merge readiness Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch. Rank-up moves:
Proof guidance:
Risk before merge
Maintainer options:
Next step before merge
Maintainer decision needed
Security Review detailsBest possible solution: Keep doctor migrations, notify or update affected plugin packages, then remove the compatibility surfaces in an explicitly approved breaking train with fresh-install and real upgrade proof. Do we have a high-confidence way to reproduce the issue? Not applicable: this PR intentionally removes deprecated compatibility behavior rather than fixing a reported current-main bug. The affected upgrade paths are clearly identified from source and the external-package audit. Is this the best way to solve the issue? Not yet. Nested-only runtime reads with doctor-owned migration are the right end state, but removal should follow a stable warning release, affected-plugin migration or notification, explicit API-break approval, and real upgrade proof. AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning high; reviewed against 81d634be5054. Label changesLabel changes:
Label justifications:
Evidence reviewedPR surface: Source -185, Tests -227, Docs -2, Generated 0. Total -414 across 29 files. View PR surface stats
What I checked:
Likely related people:
What the crustacean ranks mean
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. How this review workflow works
|
What Problem This Solves
Closes the two deprecation windows opened by the channel-config refactor program, deleting the compat surface that exists only to warn external plugin authors: the streaming flat-key/scalar fallback (
streaming-flat-key-deprecation.tsand friends) and the never-consumedresolveGroupIntroHintadapter surface.DO NOT MERGE until a release train has tagged a build containing the deprecation warnings (they landed unreleased on main 2026-07-12/14; latest tag at draft time is v2026.7.1-beta.5, which predates them). Merging earlier would ship warning and removal in the same release, giving external plugins zero notice.
Why This Change Was Made
The removal-plan comments in
streaming.tsandtypes.adapters.tsname exactly this scope. Net −442 LOC: the four public streaming resolvers survive, rewritten nested-only and moved home tostreaming.ts(single-use coercers inlined; file lands exactly at its ratcheted base of 1,210 lines); the warn-once module, leaf compat-entry type, scalar reads (shared, matrix monitor window, ACP), fallback-only tests, and the intro-hint adapter field + whatsapp export are deleted. Review-caught hardening: matrix's schema-open account entries would have silently resolved legacy scalarstreamingto"off"— the account schema now rejects scalars with a doctor pointer (both directions test-pinned). QQBot's private engineresolveIntroHintis renamed, not removed — that feature is live and unrelated to the adapter field. All doctor migrations stay:openclaw doctor --fixremains the owner of legacy-config repair.User Impact
Configs still carrying retired spellings fail validation with an actionable doctor message instead of being silently reinterpreted; doctor migrates them in place. Nested configs see zero change.
Evidence
check:changedlanes green except twolint coreerrors in ui test files this branch does not touch (already fixed on main by fix(ui): restore lint for context test imports #107618 — stale base, resolved by the pre-land rebase); Plugin SDK surface budgets exact (zero export delta) with the regenerated API baseline hash committed.