Skip to content

fix: support Loom transcript extraction#355

Open
kartikkabadi wants to merge 18 commits into
steipete:mainfrom
kartikkabadi:fix/loom-transcript-extraction
Open

fix: support Loom transcript extraction#355
kartikkabadi wants to merge 18 commits into
steipete:mainfrom
kartikkabadi:fix/loom-transcript-extraction

Conversation

@kartikkabadi

@kartikkabadi kartikkabadi commented Jul 10, 2026

Copy link
Copy Markdown

Summary

  • recognize strict Loom share/embed video URLs as media-like inputs for CLI/core transcript routing
  • route Loom through the existing generic yt-dlp transcription pipeline
  • ensure audio transcription cannot select a video-only fallback
  • reject explicit --video-mode transcript Loom failures as a real CLI/non-zero failure (not empty successful extract content with the error only in diagnostics)
  • prefer-mode still discovers embedded captions from Loom HTML before yt-dlp, without returning landing-page text
  • disable shared embedded-YouTube URL substitution during Loom caption HTML discovery
  • always pass the original Loom share/embed URL to yt-dlp (never embedded CDN renditions)
  • harden Loom URL matching against nonstandard ports, credentials, and uppercase IDs
  • do not hard-prefer Loom in the shared shouldPreferUrlMode(...) policy used by Chrome/daemon auto routing
  • Chrome/daemon: do not infer video/url/slides/timestamps from Loom page media flags unless video input is explicit
  • AUTO HTML/Firecrawl: do not advertise Loom share URL as video.kind: "direct" (prefer/transcript-only still does, for yt-dlp identity)
  • same-ID redirect/metadata: pass htmlBaseUrl for relative caption resolution; cross-ID / conflicting metadata discards foreign HTML (and Firecrawl markdown)
  • add focused regression coverage and documentation

Root cause

  1. Loom share/embed URLs were not classified as known media URLs for CLI/core transcript routing, so the generic transcript provider could return generic/not_implemented for public Loom pages.
  2. The shared yt-dlp audio selector allowed unconstrained best fallbacks. For hosts with split HLS (including Loom), that can resolve to a video-only rendition and fail with Media has no audio stream.
  3. Even after Loom routing, explicit prefer-mode transcript failures could fall through the HTML pipeline and surface Loom landing-page text as successful extract output.
  4. Embedded/og:video CDN URLs could replace the Loom share URL before yt-dlp, risking video-only signed renditions.
  5. The URL extraction session treated all shouldPreferUrlMode failures as best-effort URL-only empty successes. Because Loom was briefly prefer-url-mode, CLI prefer failures were swallowed into empty successful extracts with the real error buried in diagnostics.
  6. The Loom prefer transcript-only strategy initially called resolveTranscriptForLink(url, null, ...), so embedded <track kind="captions|subtitles"> discovery never ran on the real prefer path.
  7. Passing Loom HTML into resolveTranscriptForLink without disabling embedded YouTube substitution allowed incidental YouTube iframes to replace the Loom URL before the generic provider ran.
  8. Including Loom in the shared shouldPreferUrlMode(...) helper hard-routed Chrome/daemon requests into URL/video extraction even though guarded daemon URL flows intentionally disable yt-dlp for unresolved URLs.
  9. AUTO extracts advertising { kind: "direct", url: loomShareUrl } made thin Loom pages look like downloadable media (isVideoOnly / loadRemoteAsset / slides).
  10. Firecrawl Loom caption bases ignored metadata final URLs, and conflicting Loom IDs in Firecrawl metadata could still trust foreign HTML.

Implementation

  • Added isLoomVideoUrl / isSameLoomRecording with structured URL parsing for http(s)://loom.com|www.loom.com share/embed paths and a lowercase 32-hex video id.
  • Generic transcript provider attempts Loom transcription in auto and prefer, always with the original Loom URL (mediaKind: "video", service: "generic").
  • Prefer-mode Loom entry in TRANSCRIPT_ONLY_STRATEGIES: cache-before-HTML, same-ID htmlBaseUrl, embeddedMediaUrl: null, failures throw.
  • AUTO HTML path: pin original Loom URL, same-ID htmlBaseUrl / discard foreign HTML on cross-ID redirect, disable YouTube substitution, set video: null.
  • Firecrawl path: same YouTube/video-null policy; htmlBaseUrl from same-ID metadata (url/ogUrl preferred over sourceURL); conflicting Loom IDs discard HTML/markdown/metadata text.
  • Chrome: daemon suppress for implicit Loom video mode; slides-seed gated to explicit inputMode: "video".
  • Constrained DEFAULT_AUDIO_FORMAT so every combined best fallback requires [acodec!=none].
  • Docs/changelog updates. Guarded-daemon external-downloader policy unchanged.

Verification

Focused Loom / Chrome / sidepanel / Firecrawl suite (post-polish):
  tests/link-preview.loom-*.test.ts
  tests/chrome.panel-summarize*.test.ts
  tests/sidepanel.slides-seed-policy.test.ts
  tests/chrome.daemon-payload.test.ts
  tests/chrome.media-extraction-plan.test.ts
  tests/link-preview.media-transcript-prefer.test.ts
  tests/transcript.generic.video-tag.test.ts
  tests/content.url.test.ts
# → 12 files / 89+ tests passed (broader focused run); loom-auto alone 9 passed

pnpm -s check
# → format, lint, typecheck, and coverage gates passed (HEAD b0e49833)

Reviews before push:
- ponytail-review (complexity)
- thermo-nuclear + code-quality
- code-reviewer
- security-review (Firecrawl htmlBaseUrl / video.kind trust)
# Medium Firecrawl metadata-conflict gap fixed in 80da4e46 / 2ca44d4b

Live behaviour proof

Public fixture: https://www.loom.com/share/ef3224a48a084371bd6d766ee81f083f (~51 min)

yt-dlp extractor / audio-capable selection (earlier on this PR):

$ yt-dlp --print '%(extractor)s|%(id)s|%(duration)s' --skip-download <loom-url>
loom|ef3224a48a084371bd6d766ee81f083f|3076

Built CLI: explicit prefer failure is a real reject (no transcription provider):

# exit=1
Failed to transcribe Loom video (... Missing transcription provider ...)

Live end-to-end transcription: SUCCESS (2026-07-10, local whisper.cpp)

Branch tip at proof run base: 2ca44d4b (Firecrawl non-Loom fail-closed landed after as b0e49833; Loom→whisper path unchanged).

export SUMMARIZE_TRANSCRIBER=whisper
export SUMMARIZE_WHISPER_CPP_MODEL_PATH="$HOME/Library/Application Support/superwhisper/ggml-tiny.en.bin"
unset SUMMARIZE_DISABLE_LOCAL_WHISPER_CPP

pnpm summarize -- \
  "https://www.loom.com/share/ef3224a48a084371bd6d766ee81f083f" \
  --extract --video-mode transcript --transcriber whisper --format md --json --timeout 3h
exit=0
wall clock ≈ 2m 15s (media cache hit for Loom audio; whisper.cpp tiny.en)
transcriptionProvider=whisper.cpp
transcriptSource=yt-dlp
content length=42296 chars (~7.9k words)
diagnostics.transcript.notes includes: "media cache hit; whisper.cpp: model=tiny; Loom video: transcript-only ..."
Firecrawl skipped (Loom transcript-only short-circuit)
not HTML/landing-page fallback

Transcript excerpt (public fixture; no redaction):

Transcript:
We are going to be learning how to do CRM enrichment in clay. Just out of curiosity, has anybody here ever tried importing records and exporting records out from their CRM through clay before today? Getting a lot of nose? Okay. Oh, Chaton, you have. Yeah, I just imported a client's file from the USA.
I don't have any credits that time. So, yeah.
Yes. Perfect. If actually, you guys can come off mute or put in the chat. What are some common like data warehouses or CRM that you use today? Salesforce, HubSpot, Snowflake, any of these? Salesforce. Perfect. Salesforce. Oh, I'm getting lots of HubSpot too. Perfect. Does anybody else use something that is not
one of these two? MailChimp. MailChimp. Okay. Share CRM. I've never heard of that one. So, I'll be looking into that after this call. So, right now with audiences, this is where you're going to be bringing in different data warehouses and different CRM solutions all into one view. And you're going to see all the companies, all

Also since ClawSweeper's Firecrawl non-Loom final-URL finding: b0e49833 fails closed when authoritative url/ogUrl is outside the same Loom recording (regression in tests/link-preview.loom-auto-youtube.test.ts). pnpm -s check passed on that tip.

Security

Raw Loom URLs were not allowed to bypass the daemon’s guarded fetch/external-downloader boundary. Firecrawl metadata URLs used as htmlBaseUrl must pass isSameLoomRecording (Loom host + same 32-hex id). Cross-ID / conflicting metadata discards foreign HTML. AUTO video: null avoids treating share HTML as direct media.

Fixes #353

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 4a0c54c3ce

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread packages/core/src/content/url.ts Outdated

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: a84288c945

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread packages/core/src/content/url.ts Outdated
@kartikkabadi

Copy link
Copy Markdown
Author

@codex review

Please re-review the current head (6d084d2b51a88fa58e849689610e8d2323729052).

Since the previous review on 4a0c54c3ce / a84288c945:

  • Loom prefer failures now rethrow in extraction-session (real CLI exit=1)
  • Loom prefer HTML caption discovery passes embeddedMediaUrl: null so incidental YouTube iframes cannot replace the Loom URL
  • Collision regression tests cover caption-first + yt-dlp original-URL behavior with competing YouTube embeds

Do not merge.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 6d084d2b51

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread packages/core/src/content/transcript/providers/generic.ts
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, you can upgrade your account or add credits to your account and enable them for code reviews in your settings.

@kartikkabadi

Copy link
Copy Markdown
Author

@codex review

Please re-review the current head (1b433f5b77212ca98412ba0cdd7a6a9d2fc54bf4).

Since 6d084d2b:

  • Loom was removed from shared shouldPreferUrlMode(...) so guarded daemon/Chrome no longer hard-route Loom into URL/video extraction
  • CLI/core Loom transcript support remains via direct isLoomVideoUrl(...) checks
  • daemon auto, Chrome media plan, daemon payload, extractor router, and chat extract-cache regressions were added

Do not merge.

@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, you can upgrade your account or add credits to your account and enable them for code reviews in your settings.

@clawsweeper clawsweeper Bot added rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. P2 Normal priority bug or improvement with limited blast radius. merge-risk: 🚨 other 🚨 Merging this PR has meaningful risk outside the owned taxonomy. labels Jul 10, 2026
@clawsweeper

clawsweeper Bot commented Jul 10, 2026

Copy link
Copy Markdown

Codex review: needs maintainer review before merge. Reviewed July 10, 2026, 8:35 AM ET / 12:35 UTC.

Summary
Adds Loom share/embed transcript extraction through the generic yt-dlp pipeline, with redirect and metadata trust controls, CLI failure propagation, Chrome/daemon routing safeguards, documentation, and regression tests.

Reproducibility: yes. at source level: current main lacks Loom media-host classification, and #353 provides a concrete CLI command that reaches generic/not_implemented. This review did not execute the failing current-main command because the checkout must remain byte-for-byte read-only.

Review metrics: 3 noteworthy metrics.

  • Changed surface: 35 files affected. The PR coordinates core extraction, CLI errors, extension routing, documentation, and tests.
  • Diff size: 2,210 added, 49 removed. Most additions are focused regression coverage, but the production changes alter several extraction decision points.
  • New regression suites: 6 test files added. New suites cover Loom caption discovery, redirects, Firecrawl trust, cache ordering, Chrome extraction, and panel behavior.

Root-cause cluster
Relationship: fixed_by_candidate
Canonical: #353
Summary: This PR is the active candidate fix for the canonical Loom transcript extraction issue.

Members:

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

Merge readiness
Overall: 🐚 platinum hermit
Proof: 🦞 diamond lobster
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:

  • Decide whether the shared yt-dlp audio selector should remain global or be scoped to Loom.

Risk before merge

  • [P2] The stricter DEFAULT_AUDIO_FORMAT applies to every yt-dlp transcription download, not only Loom; a supported extractor with incomplete acodec metadata could lose a previously selected fallback even though video-only formats are invalid for transcription.

Maintainer options:

  1. Confirm the shared selector (recommended)
    Review whether existing supported yt-dlp extractors reliably expose acodec, then merge with the shared audio-capable selector if compatibility is acceptable.
  2. Limit the selector change
    Scope the stricter format expression to Loom if compatibility across existing media hosts cannot be established before merge.

Next step before merge

  • [P2] A maintainer should decide the scope of the shared yt-dlp audio selector; no concrete automated repair is otherwise needed.

Maintainer decision needed

  • Question: Should the audio-capable DEFAULT_AUDIO_FORMAT constraints become the shared transcription default, or be scoped to Loom until compatibility across existing yt-dlp hosts is demonstrated?
  • Rationale: The selector is logically appropriate for audio transcription, but this PR's live proof and focused tests cover Loom rather than the full set of existing media hosts that share this setting.
  • Likely owner: Peter Steinberger — The available history connects him to the shared yt-dlp format policy and the surrounding transcript pipeline.
  • Options:
    • Keep the shared selector (recommended): Accept the stricter audio-capable format chain for all yt-dlp transcription because selecting a video-only fallback cannot produce a valid transcript.
    • Scope it to Loom: Preserve the established selector for other hosts and apply the stricter chain only to Loom until broader extractor compatibility is verified.

Security
Cleared: No concrete security or supply-chain regression was found; downloader boundaries remain unchanged and foreign Loom redirect or Firecrawl content is rejected before use.

Review details

Best possible solution:

Ship Loom through the existing generic yt-dlp/transcriber pipeline with the current fail-closed URL safeguards, while retaining the shared audio selector only if maintainers are comfortable that supported extractors expose reliable audio-codec metadata; otherwise scope that selector change to Loom.

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

Yes at source level: current main lacks Loom media-host classification, and #353 provides a concrete CLI command that reaches generic/not_implemented. This review did not execute the failing current-main command because the checkout must remain byte-for-byte read-only.

Is this the best way to solve the issue?

Yes. Extending the existing generic yt-dlp and transcription chain is narrower and more maintainable than bespoke Loom API or scraping code, and the branch now preserves guarded daemon behavior and rejects foreign redirect content.

AGENTS.md: found and applied where relevant.

Codex review notes: model internal, reasoning high; reviewed against 206a6f844764.

Label changes

Label changes:

  • add merge-risk: 🚨 compatibility: The PR changes the shared yt-dlp transcription format selector, which could affect existing non-Loom media hosts after merge.
  • add proof: sufficient: Contributor real behavior proof is sufficient. The PR includes after-fix terminal evidence from a real public Loom recording transcribed through yt-dlp and local whisper.cpp, with exit status, provider, diagnostics, output measurements, and transcript text; the later head commit only strengthens Firecrawl rejection.
  • add rating: 🐚 platinum hermit: Overall readiness is 🐚 platinum hermit; proof is 🦞 diamond lobster and patch quality is 🐚 platinum hermit.
  • add status: 👀 ready for maintainer look: ClawSweeper has no concrete contributor-facing blocker left for this PR. Sufficient (terminal): The PR includes after-fix terminal evidence from a real public Loom recording transcribed through yt-dlp and local whisper.cpp, with exit status, provider, diagnostics, output measurements, and transcript text; the later head commit only strengthens Firecrawl rejection.
  • remove status: 📣 needs proof: Current PR status label is status: 👀 ready for maintainer look.
  • remove rating: 🦐 gold shrimp: Current PR rating is rating: 🐚 platinum hermit, so this older rating label is no longer current.
  • remove merge-risk: 🚨 other: Current PR review merge-risk labels are merge-risk: 🚨 compatibility.

Label justifications:

  • P2: This is a normal-priority host-specific extraction bug with a concrete user-facing failure and bounded blast radius.
  • merge-risk: 🚨 compatibility: The PR changes the shared yt-dlp transcription format selector, which could affect existing non-Loom media hosts after merge.
  • rating: 🐚 platinum hermit: Overall readiness is 🐚 platinum hermit; proof is 🦞 diamond lobster and patch quality is 🐚 platinum hermit.
  • status: 👀 ready for maintainer look: ClawSweeper has no concrete contributor-facing blocker left for this PR. Sufficient (terminal): The PR includes after-fix terminal evidence from a real public Loom recording transcribed through yt-dlp and local whisper.cpp, with exit status, provider, diagnostics, output measurements, and transcript text; the later head commit only strengthens Firecrawl rejection.
  • proof: sufficient: Contributor real behavior proof is sufficient. The PR includes after-fix terminal evidence from a real public Loom recording transcribed through yt-dlp and local whisper.cpp, with exit status, provider, diagnostics, output measurements, and transcript text; the later head commit only strengthens Firecrawl rejection.
Evidence reviewed

What I checked:

Likely related people:

  • Peter Steinberger: The available current-main history connects him to the central generic transcript, link-preview, shared yt-dlp format, and Chrome panel code paths affected by this PR. (role: current area contributor; confidence: high; commits: 288bec056698; files: packages/core/src/content/transcript/providers/generic.ts, packages/core/src/content/link-preview/content/index.ts, packages/core/src/content/transcript/providers/youtube/yt-dlp-media.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.
Review history (3 earlier review cycles)
  • reviewed 2026-07-10T10:59:35.898Z sha 1b433f5 :: needs real behavior proof before merge. :: [P2] Resolve Loom captions against the fetched final URL | [P2] Prevent auto mode from substituting embedded YouTube media | [P2] Check the transcript cache before optional Loom HTML
  • reviewed 2026-07-10T12:06:35.495Z sha 2ca44d4 :: needs real behavior proof before merge. :: none
  • reviewed 2026-07-10T12:14:37.208Z sha 2ca44d4 :: needs real behavior proof before merge. :: [P2] Reject non-Loom Firecrawl final URLs

@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, you can upgrade your account or add credits to your account and enable them for code reviews in your settings.

@kartikkabadi

Copy link
Copy Markdown
Author

Pushed HEAD 2ca44d4b on fix/loom-transcript-extraction (fork).

Polish since last push:

  • slides-seed Loom gate (explicit video only)
  • split Loom panel-summarize tests
  • Firecrawl same-ID htmlBaseUrl + metadata ID conflict discard
  • AUTO HTML/Firecrawl video: null (prefer still kind: "direct")
  • foreign HTML discard / Chrome daemon suppress / redirect trust (earlier commits on branch)

Open Codex P2 threads (caption finalUrl, auto YouTube, cache-before-HTML) replied + resolved.

Live transcript proof still blocked — no transcription API key / whisper.cpp in this environment. Do not treat as ClawSweeper-ready for live success until Kartik can supply a key (or run extract with a configured provider). Code quality gates (pnpm -s check + focused Loom suites) passed.

Do not merge from this comment.

@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, you can upgrade your account or add credits to your account and enable them for code reviews in your settings.

@kartikkabadi

Copy link
Copy Markdown
Author

Live Loom → whisper.cpp proof + Firecrawl fail-closed

@clawsweeper re-review

Live transcript proof (required)

  • Fixture: https://www.loom.com/share/ef3224a48a084371bd6d766ee81f083f (~51 min)
  • Command: pnpm summarize -- <loom-url> --extract --video-mode transcript --transcriber whisper --format md --json --timeout 3h
  • Env: SUMMARIZE_TRANSCRIBER=whisper, Superwhisper ggml-tiny.en.bin, SUMMARIZE_DISABLE_LOCAL_WHISPER_CPP unset
  • exit=0
  • transcriptionProvider=whisper.cpp (notes: whisper.cpp: model=tiny; media cache hit; transcript-only path)
  • Content: 42,296 chars / ~7.9k words; wall ~2m 15s
  • Not HTML/landing-page fallback; Firecrawl skipped on Loom transcript-only short-circuit
  • Excerpt (public fixture): CRM enrichment in Clay / Salesforce / HubSpot / audiences…

Firecrawl P1/P2 from prior review

  • b0e49833 — fail closed when authoritative Firecrawl url/ogUrl is outside the same Loom recording (incl. non-Loom login/error pages)
  • Regression: tests/link-preview.loom-auto-youtube.test.ts
  • pnpm -s check passed on HEAD b0e49833

Do not merge from this comment.

@clawsweeper

clawsweeper Bot commented Jul 10, 2026

Copy link
Copy Markdown

🦞🧹
ClawSweeper re-review requested.

I asked ClawSweeper to review this item again.
Action: item re-review queued (workflow sweep.yml, event repository_dispatch).
Result: the existing ClawSweeper review comment will be edited in place when the review finishes.

Re-review progress:

@clawsweeper clawsweeper Bot added proof: sufficient Contributor real behavior proof is sufficient. 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. merge-risk: 🚨 compatibility 🚨 Merging this PR could break existing users, config, migrations, defaults, or upgrades. and removed rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. merge-risk: 🚨 other 🚨 Merging this PR has meaningful risk outside the owned taxonomy. labels Jul 10, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

merge-risk: 🚨 compatibility 🚨 Merging this PR could break existing users, config, migrations, defaults, or upgrades. P2 Normal priority bug or improvement with limited blast radius. proof: sufficient Contributor real behavior proof is sufficient. 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.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Support Loom share URLs in transcript extraction

1 participant