scripts/quality_gates.py uses SQLite-style ? parameter placeholders in all db.execute() calls (log_gate_result, init_quality_gates_table, gate_duplicate_task_check). PostgreSQL via psycopg2 requires %s placeholders. Any invocation will raise psycopg2 ProgrammingError.
Fix: replace all ? with %s in scripts/quality_gates.py db.execute() calls. Also update any comment referencing 'SQLite limitation' (e.g., line ~196).
Acceptance criteria:
- python3 scripts/quality_gates.py pre-merge runs without psycopg2 placeholder errors
- All ? placeholders in db.execute() calls replaced with %s
Triage source: task:7828a688-1494-4465-a9b3-c128f94879a0
Payload JSON
{
"completion_shas": [
"4aacfe4f8988bfff40f6e4bd95cfb0f7959a4804"
],
"completion_shas_checked_at": "2026-04-21T19:23:41.155386+00:00"
}