Skip to content

docs(feishu): remove nonexistent disabled value from dmPolicy options#97640

Merged
vincentkoc merged 1 commit into
openclaw:mainfrom
wm0018:fix/feishu-dmpolicy-docs
Jun 29, 2026
Merged

docs(feishu): remove nonexistent disabled value from dmPolicy options#97640
vincentkoc merged 1 commit into
openclaw:mainfrom
wm0018:fix/feishu-dmpolicy-docs

Conversation

@wm0018

@wm0018 wm0018 commented Jun 29, 2026

Copy link
Copy Markdown
Contributor

What Problem This Solves

docs/channels/feishu.md line 47 lists "disabled" as a valid dmPolicy value, but the Zod schema only accepts open, pairing, allowlist. Users who configure dmPolicy: "disabled" will hit a schema validation failure at runtime.

Evidence

Schema — disabled is not a valid dmPolicy value

extensions/feishu/src/config-schema.ts:14

const DmPolicySchema = z.enum(["open", "pairing", "allowlist"]);

Only three values are valid for dmPolicy. "disabled" is not in the enum.

Schema distinguishes DM policy from group policy

extensions/feishu/src/config-schema.ts:14-18

const DmPolicySchema = z.enum(["open", "pairing", "allowlist"]);
const GroupPolicySchema = z.union([
  z.enum(["open", "allowlist", "disabled"]),
  z.literal("allowall").transform(() => "open" as const),
]);

groupPolicy supports disabled; dmPolicy does not. The doc incorrectly applied the group-policy value set to the DM-policy field.

Runtime uses dmPolicy: "disabled" only as an internal routing sentinel

extensions/feishu/src/policy.ts:182,212

// Group message ingress routing — internal sentinel, not user-configurable
dmPolicy: "disabled",
groupPolicy,

The literal "disabled" is hardcoded internally to prevent group messages from falling through to DM routing. It is never read from user config.

Validated config reference — dmPolicy has no disabled entry

The config schema validation at extensions/feishu/src/config-schema.ts:326 only handles dmPolicy === "open" for the wildcard check; validation passes through silently for pairing and allowlist:

if (value.dmPolicy === "open") {
  // checks allowFrom includes "*"
}

There is no validation branch for disabled because the schema rejects it before this code runs.

User Impact

Users who configured channels.feishu.dmPolicy: "disabled" based on the old docs would encounter a schema validation failure. To disable DMs, use dmPolicy: "allowlist" with an empty allowFrom array.

@openclaw-barnacle openclaw-barnacle Bot added docs Improvements or additions to documentation channel: feishu Channel integration: feishu size: XS triage: low-signal-docs Candidate: docs-only change looks low signal; maintainer review needed. labels Jun 29, 2026
@clawsweeper

clawsweeper Bot commented Jun 29, 2026

Copy link
Copy Markdown
Contributor

Codex review: needs maintainer review before merge. Reviewed June 28, 2026, 11:15 PM ET / 03:15 UTC.

Summary
The PR removes one Feishu channel documentation bullet that lists dmPolicy: "disabled" as a valid direct-message policy option.

PR surface: Docs -1. Total -1 across 1 file.

Reproducibility: yes. Source inspection shows current main and v2026.6.10 document dmPolicy: "disabled", while the Feishu schema accepts only open, pairing, and allowlist for user config.

Review metrics: 1 noteworthy metric.

  • Documented config values: 1 invalid value removed. The changed line is an enum-style Feishu dmPolicy option, so maintainers should compare it against the plugin schema before merge.

Merge readiness
Overall: 🐚 platinum hermit
Proof: 🌊 off-meta tidepool
Patch quality: 🐚 platinum hermit
Result: ready for maintainer review.

Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch.

Rank-up moves:

  • none.

Risk before merge

  • [P1] The PR is intentionally narrow; the shared setup wizard still appears able to offer and write dmPolicy: "disabled" for Feishu, which should be handled as separate setup/schema work if maintainers want the wizard aligned too.

Maintainer options:

  1. Decide the mitigation before merge
    Merge the docs correction, then track the existing setup wizard/schema mismatch separately if maintainers want Feishu setup to hide disabled or intentionally support it.
  2. Pause or close
    Do not merge this PR until maintainers decide whether the risk is worth taking.

Next step before merge

  • [P2] No repair lane is needed; the PR is a narrow docs-only correction and routine maintainer review or merge is the remaining action.

Security
Cleared: The diff only removes one docs bullet and introduces no dependency, workflow, secret, network, or executable surface.

Review details

Best possible solution:

Merge the docs correction, then track the existing setup wizard/schema mismatch separately if maintainers want Feishu setup to hide disabled or intentionally support it.

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

Yes. Source inspection shows current main and v2026.6.10 document dmPolicy: "disabled", while the Feishu schema accepts only open, pairing, and allowlist for user config.

Is this the best way to solve the issue?

Yes for the docs mismatch: removing the invalid value is the narrowest maintainable correction. It does not solve the separate pre-existing setup prompt inconsistency, which should be handled in a follow-up if desired.

AGENTS.md: found and applied where relevant.

Codex review notes: model internal, reasoning high; reviewed against 2001b15f5b92.

Label changes

Label justifications:

  • P3: This is a low-risk docs-only correction for a Feishu channel configuration value.
  • rating: 🐚 platinum hermit: Overall readiness is 🐚 platinum hermit; proof is 🌊 off-meta tidepool and patch quality is 🐚 platinum hermit.
  • status: 👀 ready for maintainer look: ClawSweeper has no concrete contributor-facing blocker left for this PR. Not applicable: Real behavior proof is not required because this PR only changes files under docs/.
Evidence reviewed

PR surface:

Docs -1. Total -1 across 1 file.

View PR surface stats
Area Files Added Removed Net
Source 0 0 0 0
Tests 0 0 0 0
Docs 1 0 1 -1
Config 0 0 0 0
Generated 0 0 0 0
Other 0 0 0 0
Total 1 0 1 -1

What I checked:

Likely related people:

What the crustacean ranks mean
  • 🦀 challenger crab: rare, exceptional readiness with strong proof, clean implementation, and convincing validation.
  • 🦞 diamond lobster: very strong readiness with only minor maintainer review expected.
  • 🐚 platinum hermit: good normal PR, likely mergeable with ordinary maintainer review.
  • 🦐 gold shrimp: useful signal, but proof or patch confidence is still limited.
  • 🦪 silver shellfish: thin signal; proof, validation, or implementation needs work.
  • 🧂 unranked krab: not merge-ready because proof is missing/unusable or there are serious correctness or safety concerns.
  • 🌊 off-meta tidepool: rating does not apply to this item.

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
  • 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.

@clawsweeper clawsweeper Bot added rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR. P3 Low-priority cleanup, docs, polish, ergonomics, or speculative work. labels Jun 29, 2026
@vincentkoc vincentkoc merged commit 293f036 into openclaw:main Jun 29, 2026
90 of 97 checks passed
@vincentkoc vincentkoc self-assigned this Jun 29, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

channel: feishu Channel integration: feishu docs Improvements or additions to documentation P3 Low-priority cleanup, docs, polish, ergonomics, or speculative work. rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. size: XS status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR. triage: low-signal-docs Candidate: docs-only change looks low signal; maintainer review needed.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants