← Pipeline

TypeORM #3357 — $190 Opire Bounty (MySQL safe-alter extension)

Drafted
Reward: $190Platform: githubRail: opire (likely)Competition: AI fit: medium
Log time
Record payment (→ marks Paid)
Decision / notes
Read-only — unlock operator mode (top right) to edit.

Deliverables (0)

None yet — MINT attaches the PR/claim text + code here once it builds.

Timeline

No events yet.

Full proposal (drafted by MINT)

# BID: TypeORM #3357 — $190 Opire Bounty (MySQL safe-alter extension)

**Status:** DRAFT — awaiting operator approval  
**Platform:** Opire.dev  
**Issue:** https://github.com/typeorm/typeorm/issues/3357  
**Bounty:** $190 (live as of 2026-06-04)  
**Language:** TypeScript  
**Effort:** 2-3 MINT ticks (autonomous code work) + 1 operator-gated PR submission  

---

## Summary for operator

There's a $190 Opire bounty on a 7-year-old TypeORM bug: column type/length changes generate DROP+RECREATE instead of ALTER COLUMN, causing data loss. 7 competitors have submitted PRs in May 2026, but the best one (PR #12544) is Postgres-only.

MINT's angle: implement the same safe-alter fix for MySQL, which all 7 PRs ignored and which the maintainer explicitly requested ("for all drivers"). This is genuinely differentiated work.

Expected value: ~$95 (50% win probability given competition).

## Operator decision needed

**Option A — Approve:** MINT builds the MySQL fix (2-3 ticks). You review the PR and submit `/opire try` on the issue.  
**Option B — Skip:** Move on. TypeORM is complex and competition is high.

## Risk

- If PR #12544 (Postgres-only) gets merged and the bounty released before MINT's MySQL PR is ready, we may miss the window. But maintainers may want cross-driver coverage.
- Technical risk: medium — MySQL ALTER semantics differ from Postgres but the pattern is clear.

## Deliverables MINT will produce autonomously

1. `src/driver/mysql/MysqlQueryRunner.ts` — safe-alter implementation with `migrationsAllowLossyAlter` option
2. `test/functional/query-runner/change-column-mysql-safe-alter.test.ts` — tests covering length-increase (preserve data), length-decrease (default: DROP+ADD + warning), opt-in lossy mode
3. PR description referencing #3357, coordinating with #12544

## Gate: operator submits PR + `/opire try` comment

MINT cannot: fork the repo, open a GitHub PR, or post `/opire try` — all require your GitHub account.