Skip to content

fix(msteams): remove unused attachment helper#106461

Open
steipete wants to merge 1 commit into
mainfrom
codex/fix-msteams-deadcode-typecheck
Open

fix(msteams): remove unused attachment helper#106461
steipete wants to merge 1 commit into
mainfrom
codex/fix-msteams-deadcode-typecheck

Conversation

@steipete

Copy link
Copy Markdown
Contributor

What Problem This Solves

Current main fails the production TypeScript gate after #106279 made buildMSTeamsAttachmentPlaceholder private without removing it. TypeScript reports TS6133 because the helper has no callers.

Why This Change Was Made

Delete the unused wrapper. Its only behavior delegates directly to resolveMSTeamsInboundAttachmentPresentation, which remains the canonical production API.

User Impact

No runtime behavior change. This restores the production typecheck on current main.

Evidence

  • Failure: CI run 29242903349, check-prod-types reports extensions/msteams/src/attachments/html.ts(109,10): error TS6133.
  • Repository search found no production caller for the private helper.
  • Hosted CI is the validation gate.

@openclaw-barnacle openclaw-barnacle Bot added channel: msteams Channel integration: msteams size: XS maintainer Maintainer-authored PR labels Jul 13, 2026
@clawsweeper clawsweeper Bot added rating: 🦞 diamond lobster Very strong PR readiness with only minor maintainer review expected. status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR. P2 Normal backlog priority with limited blast radius. labels Jul 13, 2026
@clawsweeper

clawsweeper Bot commented Jul 13, 2026

Copy link
Copy Markdown
Contributor

Codex review: needs real behavior proof before merge. Reviewed July 13, 2026, 11:53 AM ET / 15:53 UTC.

Summary
Removes the unused private buildMSTeamsAttachmentPlaceholder wrapper from the Microsoft Teams attachment HTML module while retaining the canonical presentation resolver.

PR surface: Source -7. Total -7 across 1 file.

Reproducibility: yes. at source and hosted-gate level: an unused private function deterministically triggers the reported TS6133 check, although the failure was not rerun here against the newer current-main SHA.

Review metrics: none identified.

Root-cause cluster
Relationship: canonical
Canonical: #106461
Summary: This PR is the focused follow-up for an unused private helper left by the merged Microsoft Teams dead-code refactor.

Members:

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

Merge readiness
Overall: 🦞 diamond lobster
Proof: 🌊 off-meta tidepool
Patch quality: 🦞 diamond lobster
Result: ready for maintainer review.

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

Risk before merge

  • [P1] The branch trails current main, so maintainers should confirm that no intervening commit already removed or reused the helper and rerun the production TypeScript gate on the refreshed merge result.

Maintainer options:

  1. Decide the mitigation before merge
    Rebase or refresh onto current main, verify the helper remains unused, and land the deletion once the production TypeScript gate confirms the current merge result is clean.
  2. Pause or close
    Do not merge this PR until maintainers decide whether the risk is worth taking.

Next step before merge

  • [P1] The existing protected maintainer-labeled PR already contains the complete repair, so it needs ordinary branch refresh and maintainer landing rather than a separate ClawSweeper fix job.

Security
Cleared: The diff only removes an unused local function and introduces no dependency, secret, permission, network, packaging, or executable supply-chain change.

Review details

Best possible solution:

Rebase or refresh onto current main, verify the helper remains unused, and land the deletion once the production TypeScript gate confirms the current merge result is clean.

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

Yes at source and hosted-gate level: an unused private function deterministically triggers the reported TS6133 check, although the failure was not rerun here against the newer current-main SHA.

Is this the best way to solve the issue?

Yes. Deleting an unreachable delegating wrapper while retaining the canonical resolver is the narrowest maintainable fix and avoids adding suppression or compatibility code.

AGENTS.md: found and applied where relevant.

Codex review notes: model internal, reasoning high; reviewed against 260a5c6e2b1f.

Label changes

Label changes:

  • add P2: This is a bounded production type-check regression with no runtime behavior change or urgent user-facing outage.
  • add rating: 🦞 diamond lobster: Overall readiness is 🦞 diamond lobster; proof is 🌊 off-meta tidepool and patch quality is 🦞 diamond lobster.
  • add status: 👀 ready for maintainer look: ClawSweeper has no concrete contributor-facing blocker left for this PR. Not applicable: This maintainer-labeled internal dead-code cleanup claims no runtime behavior change; the relevant proof is the production TypeScript gate rather than a live Microsoft Teams interaction.

Label justifications:

  • P2: This is a bounded production type-check regression with no runtime behavior change or urgent user-facing outage.
  • rating: 🦞 diamond lobster: Overall readiness is 🦞 diamond lobster; proof is 🌊 off-meta tidepool and patch quality is 🦞 diamond lobster.
  • status: 👀 ready for maintainer look: ClawSweeper has no concrete contributor-facing blocker left for this PR. Not applicable: This maintainer-labeled internal dead-code cleanup claims no runtime behavior change; the relevant proof is the production TypeScript gate rather than a live Microsoft Teams interaction.
Evidence reviewed

PR surface:

Source -7. Total -7 across 1 file.

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

What I checked:

Likely related people:

  • steipete: Authored and merged the immediately preceding Microsoft Teams private-export cleanup that made this helper private, so they have the strongest recent context for the regression and intended cleanup boundary. (role: recent area contributor; confidence: high; commits: 1577c285009f; files: extensions/msteams/src/attachments/html.ts)
  • Evizero: Co-authored the earlier Microsoft Teams attachment-handling implementation associated with commit 0f7f7bb, making them relevant to the original attachment presentation behavior preserved by this cleanup. (role: feature introducer; confidence: medium; commits: 0f7f7bb95f; files: extensions/msteams/src/attachments/html.ts, extensions/msteams/src/attachments.ts)
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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

channel: msteams Channel integration: msteams maintainer Maintainer-authored PR P2 Normal backlog priority with limited blast radius. rating: 🦞 diamond lobster Very strong PR readiness with only minor maintainer review expected. size: XS status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant