Skip to content

Skill-card worker leaves a Convex blob when attach fails #3674

Description

@SebTardif

Summary

The skill-card worker stores generated skill-card.md in Convex, then attaches it to the skill version. If attach fails (stale lease or missing / soft-deleted version), the new storage id is never deleted. Retries store another orphan. skillCards.ts has no storage.delete.

This is a source-level resource leak in the worker action. I did not run the production skill-card worker.

Verification / reproduction

  1. Read convex/skillCards.ts completeSkillCardJob (store, then attachCardAndSucceedJobInternal).
  2. Follow lease mismatch / missing version throws.
  3. Confirm the new _storage id is not deleted.

Actual

  • A failed attach leaves an unreferenced markdown blob. Each retry adds another.

Expected

  • If attach throws, the just-stored id is deleted.
  • Successful attach still retains the card. Replacing an existing card on success may keep old fingerprints resolvable (that success-path retention is intentional).

Evidence

Source: convex/skillCards.ts. Proposed patch: PR #3614.

Security / privacy

Worker storage leak. No secret exposure.

Acceptance criteria

  • Failed attach deletes the request-local card blob.
  • Successful attach retains the new card.
  • Success-path replacement of an older card does not break existing fingerprint resolution.

This tracker stays open if PR #3614 is closed without landing on main.

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    P2Normal backlog priority with limited blast radius.clawsweeper:bulk-filedClawSweeper detected a high recent issue-filing volume from this author.clawsweeper:no-new-fix-prClawSweeper does not recommend queueing a new automated fix PR for this issue.clawsweeper:source-reproClawSweeper found a high-confidence source-level issue reproduction.impact:otherThis issue has meaningful maintainer-visible impact outside the owned taxonomy.issue-rating: 🦞 diamond lobsterVery strong issue quality with high-confidence source-level or clear reproduction.security

    Type

    No type

    Fields

    Priority

    None yet

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions