201 lines
84 KiB
JSON
201 lines
84 KiB
JSON
{"prompt": "our on-call runbook for the settlement job is four years stale. rewrite it against how the job actually behaves today — retry semantics, the manual replay command, who to page", "purpose": "writing", "secondary": null, "mixed": false, "difficulty": 0.5, "slice": "core", "lang": "en"}
|
||||
|
|
{"prompt": "a partner integration is coming that needs us to expose per-line-item tax breakdown, which we don't currently persist — we compute it at invoice time and throw it away. before we start storing it i want to think through retention, whether we backfill, and what it means for the invoice PDFs that were already generated with the old rounding", "purpose": "planning", "secondary": null, "mixed": false, "difficulty": 0.85, "slice": "boundary", "lang": "en"}
|
|||
|
|
{"prompt": "our device provisioning flow is undocumented and also slightly wrong — the cert rotation step happens after first telemetry, which nobody intended. i need the sequence written up for the field team, and the ordering bug sorted out in the firmware handshake", "purpose": "writing", "secondary": "debugging", "mixed": true, "difficulty": 0.7, "slice": "mixed", "lang": "en"}
|
|||
|
|
{"prompt": "a contractor delivered the disputes module last month and it works, but i haven't read a line of it and we're about to depend on it heavily. go through `services/disputes/` and tell me what you'd flag: correctness, error handling, anything that will hurt at volume, and anything that reads like it was written against an older version of our gateway SDK", "purpose": "review", "secondary": null, "mixed": false, "difficulty": 0.75, "slice": "core", "lang": "en"}
|
|||
|
|
{"prompt": "we're about to move order history off postgres onto a partitioned setup and i genuinely don't know the sequencing. constraints: no downtime, 400M rows, reporting queries hit the same tables, and the mobile team ships a release every tuesday so any API change has to be additive for at least two months. want a migration strategy with rollback points before anyone writes code", "purpose": "planning", "secondary": null, "mixed": false, "difficulty": 0.9, "slice": "core", "lang": "en"}
|
|||
|
|
{"prompt": "three helpers in utils/money.ts do rounding: `roundMoney`, `toCents`, `safeRound`. two of them disagree on negatives. collapse them into one and update the ~60 call sites", "purpose": "refactor", "secondary": null, "mixed": false, "difficulty": 0.6, "slice": "boundary", "lang": "en"}
|
|||
|
|
{"prompt": "webhook delivery worker needs exponential backoff with jitter, capped at 6 hours, max 12 attempts, then dead-letter", "purpose": "backendImpl", "secondary": null, "mixed": false, "difficulty": 0.5, "slice": "core", "lang": "en"}
|
|||
|
|
{"prompt": "payout table needs zebra striping", "purpose": "frontendImpl", "secondary": null, "mixed": false, "difficulty": 0.2, "slice": "core", "lang": "en"}
|
|||
|
|
{"prompt": "drop the currency symbol from the cart subtotal, product asked", "purpose": "quickFix", "secondary": null, "mixed": false, "difficulty": 0.15, "slice": "boundary", "lang": "en"}
|
|||
|
|
{"prompt": "src/pipeline/transform_orders.py is 1100 lines and every dbt model imports from it. i want it broken into something sane — but first tell me how you'd carve it up and in what order, then do the first slice", "purpose": "planning", "secondary": "refactor", "mixed": true, "difficulty": 0.75, "slice": "mixed", "lang": "en"}
|
|||
|
|
{"prompt": "same three lines of duplicated setup at the top of every one of these tests. worth extracting a fixture?\n\ndef test_charge_declined(db, monkeypatch):\n gw = FakeGateway()\n monkeypatch.setattr(charges, \"gateway\", gw)\n order = make_order(db, total=Decimal(\"25.00\"), currency=\"usd\")\n gw.next_response = DECLINE\n with pytest.raises(ChargeDeclined):\n charges.capture(order)\n\ndef test_charge_partial(db, monkeypatch):\n gw = FakeGateway()\n monkeypatch.setattr(charges, \"gateway\", gw)\n order = make_order(db, total=Decimal(\"25.00\"), currency=\"usd\")\n gw.next_response = PARTIAL\n result = charges.capture(order)\n assert result.captured == Decimal(\"10.00\")\n\ndef test_charge_retries_on_timeout(db, monkeypatch):\n gw = FakeGateway()\n monkeypatch.setattr(charges, \"gateway\", gw)\n order = make_order(db, total=Decimal(\"25.00\"), currency=\"usd\")\n gw.responses = [TIMEOUT, OK]\n assert charges.capture(order).attempts == 2", "purpose": "refactor", "secondary": null, "mixed": false, "difficulty": 0.4, "slice": "pasted-context", "lang": "en"}
|
|||
|
|
{"prompt": "design ticket from figma handoff — build the empty state for the payouts screen:\n\nPayouts • Empty state\nIllustration: 160x160, centered, 32px above the heading. Use the existing `illustration/wallet` asset.\nHeading: \"No payouts yet\" — text-lg, semibold, foreground.\nBody: \"Payouts appear here once your first order settles. This usually takes 2 business days.\" — text-sm, muted-foreground, max-width 420px, centered.\nPrimary button: \"View settlement schedule\" — secondary variant, opens the schedule sheet.\nSpacing: 96px top padding on desktop, 48px on mobile.\nDark mode: illustration swaps to the `-dark` variant; nothing else changes.\nMotion: fade + 8px rise on mount, 180ms ease-out, respects reduced-motion.", "purpose": "frontendImpl", "secondary": null, "mixed": false, "difficulty": 0.4, "slice": "pasted-context", "lang": "en"}
|
|||
|
|
{"prompt": "paste of the dedup helper in the ingestion job. two of these live in the repo (one in `ingest/`, one in `backfill/`) and they've drifted. unify them:\n\ndef dedupe(rows, key=lambda r: r[\"id\"]):\n seen = set()\n out = []\n for r in rows:\n k = key(r)\n if k in seen:\n continue\n seen.add(k)\n out.append(r)\n return out\n\n# backfill/util.py version\ndef dedupe_rows(rows, key_field=\"id\", keep=\"last\"):\n index = {}\n for r in rows:\n k = r.get(key_field)\n if keep == \"last\" or k not in index:\n index[k] = r\n return list(index.values())\n\ncallers: ingest/orders.py:88, ingest/refunds.py:41, backfill/orders.py:210, backfill/merchants.py:77, tools/reconcile.py:19", "purpose": "refactor", "secondary": null, "mixed": false, "difficulty": 0.6, "slice": "pasted-context", "lang": "en"}
|
|||
|
|
{"prompt": "can you look over the new webhook signature verification and also write up how partners should implement it on their end", "purpose": "review", "secondary": "writing", "mixed": true, "difficulty": 0.55, "slice": "mixed", "lang": "en"}
|
|||
|
|
{"prompt": "o job de conciliação está a demorar 3h e ninguém sabe porquê. antes de mexer, explica-me o que ele faz passo a passo", "purpose": "review", "secondary": null, "mixed": false, "difficulty": 0.6, "slice": "boundary", "lang": "pt"}
|
|||
|
|
{"prompt": "invoice numbering has to be gapless per legal entity, and right now it's a `MAX(id)+1` in the app. i need both the approach and the actual implementation — sequence table vs advisory lock vs something else, then build it", "purpose": "planning", "secondary": "backendImpl", "mixed": true, "difficulty": 0.8, "slice": "mixed", "lang": "en"}
|
|||
|
|
{"prompt": "before we ship split-tender i want a written threat model of the auth-then-void window, and then the guard rails implemented in the charge service", "purpose": "planning", "secondary": "backendImpl", "mixed": true, "difficulty": 0.85, "slice": "mixed", "lang": "en"}
|
|||
|
|
{"prompt": "settlement docs and the settlement code disagree about when a batch closes. figure out which one is lying, then fix whichever is wrong", "purpose": "review", "secondary": "writing", "mixed": true, "difficulty": 0.6, "slice": "mixed", "lang": "en"}
|
|||
|
|
{"prompt": "the k6 run against staging ingest, before and after we turned on batching. is this actually better or am i reading noise?\n\n scenarios: (100.00%) 1 scenario, 400 max VUs, 5m30s max duration\n\n checks.........................: 99.81% ✓ 238914 ✗ 452\n data_received..................: 1.4 GB 4.6 MB/s\n http_req_blocked...............: avg=1.21ms min=1µs med=4µs max=1.02s\n http_req_duration..............: avg=411.02ms min=18.11ms med=298ms max=9.81s\n { expected_response:true }...: avg=402.55ms min=18.11ms med=291ms max=9.81s\n http_req_failed................: 0.18% ✓ 452 ✗ 238914\n http_reqs......................: 239366 798.55/s\n iteration_duration.............: avg=1.24s min=201ms med=1.11s max=11.2s\n vus............................: 400 min=40 max=400\n\n ✗ p(95) < 500ms\n ↳ p(95)=1.42s", "purpose": "review", "secondary": null, "mixed": false, "difficulty": 0.6, "slice": "pasted-context", "lang": "en"}
|
|||
|
|
{"prompt": "support keeps forwarding this and i want one canonical doc instead of ten slack answers:\n\n> Hi — we're integrating your payouts API and the docs don't say what happens when a payout fails. Do you retry automatically? Is there a webhook? We saw a payout go from `pending` to `failed` and then back to `pending` two hours later which we did not expect. Also: are `failure_code` values stable enough to switch on, or should we treat them as display-only? Our finance team needs to know whether a `failed` payout can still settle later, because we've already reversed the ledger entry on our side by then.\n\nwrite the page that answers all of that", "purpose": "writing", "secondary": null, "mixed": false, "difficulty": 0.5, "slice": "pasted-context", "lang": "en"}
|
|||
|
|
{"prompt": "two of these do the same job with different names and one of them silently swallows the error. collapse them:\n\n// packages/gateway/src/http.ts\nexport async function postJSON(url: string, body: unknown, timeoutMs = 30_000) {\n const ctrl = new AbortController()\n const t = setTimeout(() => ctrl.abort(), timeoutMs)\n try {\n const res = await fetch(url, { method: 'POST', body: JSON.stringify(body), signal: ctrl.signal })\n if (!res.ok) throw new GatewayError(res.status, await res.text())\n return await res.json()\n } finally {\n clearTimeout(t)\n }\n}\n\n// packages/gateway/src/legacy/request.ts\nexport async function sendJson(url, payload, opts = {}) {\n try {\n const res = await fetch(url, { method: 'POST', body: JSON.stringify(payload) })\n return await res.json()\n } catch (e) {\n return null\n }\n}", "purpose": "refactor", "secondary": null, "mixed": false, "difficulty": 0.55, "slice": "pasted-context", "lang": "en"}
|
|||
|
|
{"prompt": "someone drafted this migration for the split-tender work. would this lock the table in prod?\n\nBEGIN;\n\nALTER TABLE orders ADD COLUMN tender_count smallint NOT NULL DEFAULT 1;\n\nALTER TABLE payments\n ADD COLUMN instrument_kind text NOT NULL DEFAULT 'card',\n ADD CONSTRAINT payments_instrument_kind_chk\n CHECK (instrument_kind IN ('card','gift_card','store_credit'));\n\nCREATE INDEX idx_payments_order_instrument\n ON payments (order_id, instrument_kind);\n\nUPDATE payments SET instrument_kind = 'gift_card'\n WHERE gateway = 'internal_gc';\n\nALTER TABLE payments ALTER COLUMN instrument_kind DROP DEFAULT;\n\nCOMMIT;\n\npayments is 190M rows, postgres 15, no downtime window", "purpose": "review", "secondary": null, "mixed": false, "difficulty": 0.7, "slice": "pasted-context", "lang": "en"}
|
|||
|
|
{"prompt": "there's a `docs/adr/` folder with eleven ADRs and four of them describe systems we deleted. clear out the dead ones, and write a new ADR covering the ledger v2 decision we actually made in march but never recorded", "purpose": "writing", "secondary": "refactor", "mixed": true, "difficulty": 0.5, "slice": "mixed", "lang": "en"}
|
|||
|
|
{"prompt": "firmware devices on the 4.1 build sometimes report telemetry timestamps a year in the future and our ingest happily accepts them, poisoning the warehouse. find out where the clock goes wrong on the device side, and add the ingest-side guard so bad timestamps never land again", "purpose": "debugging", "secondary": "backendImpl", "mixed": true, "difficulty": 0.8, "slice": "mixed", "lang": "en"}
|
|||
|
|
{"prompt": "merchant dashboard imports the design system in three different ways depending on when the file was written: barrel imports, deep paths, and a couple of copy-pasted components that were never migrated. normalise all of it, delete the copies, same pixels on screen afterwards", "purpose": "refactor", "secondary": null, "mixed": false, "difficulty": 0.55, "slice": "core", "lang": "en"}
|
|||
|
|
{"prompt": "dedupe the two CSV writers", "purpose": "refactor", "secondary": null, "mixed": false, "difficulty": 0.4, "slice": "core", "lang": "en"}
|
|||
|
|
{"prompt": "we inherited a rust firmware crate from an acquisition and the interrupt handling in `src/rt/isr.rs` looks unusual to me — there's a static mut ring buffer touched from both the ISR and the main loop with a bare `unsafe` and no critical section. is that actually sound on a single-core cortex-m, or are we one compiler upgrade away from disaster", "purpose": "review", "secondary": null, "mixed": false, "difficulty": 0.8, "slice": "boundary", "lang": "en"}
|
|||
|
|
{"prompt": "three of us reviewed the ledger PR and disagreed about whether the compensating-entry approach is sound. settle it — read `internal/ledger/` and tell me who's right", "purpose": "review", "secondary": null, "mixed": false, "difficulty": 0.7, "slice": "core", "lang": "en"}
|
|||
|
|
{"prompt": "webhook signing helper is duplicated between the node SDK and the python SDK and they've drifted on how they canonicalise the payload. get them back in sync, then add the note to both SDK readmes so integrators know which versions changed", "purpose": "refactor", "secondary": "writing", "mixed": true, "difficulty": 0.6, "slice": "mixed", "lang": "en"}
|
|||
|
|
{"prompt": "we're a four-person team and every deploy needs someone to babysit the settlement job afterwards. that's not sustainable for the next quarter when we double order volume. what would you sequence — better alerting first, or making the job idempotent so a bad deploy doesn't need a human? give me the reasoning and a rough order of work, not code", "purpose": "planning", "secondary": null, "mixed": false, "difficulty": 0.75, "slice": "core", "lang": "en"}
|
|||
|
|
{"prompt": "payout amount doc, for support", "purpose": "writing", "secondary": null, "mixed": false, "difficulty": 0.4, "slice": "core", "lang": "en"}
|
|||
|
|
{"prompt": "checkout blows up for about 1 in 40 carts and this is all sentry gives me:\n\nTypeError: Cannot read properties of undefined (reading 'currency')\n at normalizeLineItem (/srv/checkout/dist/cart/normalize.js:88:31)\n at Array.map (<anonymous>)\n at buildOrderDraft (/srv/checkout/dist/cart/draft.js:42:38)\n at async createOrder (/srv/checkout/dist/orders/create.js:117:20)\n at async /srv/checkout/dist/http/routes/orders.js:29:24\n at async Object.handler (/srv/checkout/node_modules/fastify/lib/handleRequest.js:129:9)\n {\n requestId: 'req_9f2b1c',\n cartId: 'cart_01HQ8V',\n lineItems: 4,\n promoApplied: true,\n userAgent: 'Shopify-Mobile/9.4.1 (iOS 18.2)'\n }\n\nit only ever fires when a promo is on the cart, never on a plain cart. no idea what makes those items different", "purpose": "debugging", "secondary": null, "mixed": false, "difficulty": 0.7, "slice": "pasted-context", "lang": "en"}
|
|||
|
|
{"prompt": "why does the ESP32 reboot roughly 40s after it associates to wifi? nothing in my firmware touches the watchdog", "purpose": "debugging", "secondary": null, "mixed": false, "difficulty": 0.7, "slice": "core", "lang": "en"}
|
|||
|
|
{"prompt": "toolbar icons are 1px off center in dark mode only", "purpose": "frontendImpl", "secondary": null, "mixed": false, "difficulty": 0.2, "slice": "boundary", "lang": "en"}
|
|||
|
|
{"prompt": "npm audit tail from the payments package, tell me which of these actually matter for us and just do the safe upgrades:\n\n# npm audit report\n\naxios 1.6.0 - 1.7.3\nSevere: Server-Side Request Forgery in axios\nfix available via `npm audit fix --force`\nWill install [email protected], which is a breaking change\nnode_modules/axios\n @acme/gateway-sdk 0.4.0 - 0.9.2\n Depends on vulnerable versions of axios\n node_modules/@acme/gateway-sdk\n\ntar-fs 2.0.0 - 2.1.1\nModerate: Link Following in tar-fs\nfix available via `npm audit fix`\nnode_modules/tar-fs\n\n7 vulnerabilities (4 moderate, 3 high)", "purpose": "quickFix", "secondary": null, "mixed": false, "difficulty": 0.35, "slice": "pasted-context", "lang": "en"}
|
|||
|
|
{"prompt": "continue from where the sync work stopped", "purpose": "backendImpl", "secondary": null, "mixed": false, "difficulty": 0.4, "slice": "vague-eval", "lang": "en"}
|
|||
|
|
{"prompt": "here's the hunk that landed friday. does it hold up?\n\n@@ -41,17 +41,24 @@ func (s *Settler) Settle(ctx context.Context, batchID string) error {\n-\ttx, err := s.db.BeginTx(ctx, nil)\n+\ttx, err := s.db.BeginTx(ctx, &sql.TxOptions{Isolation: sql.LevelReadCommitted})\n \tif err != nil {\n \t\treturn err\n \t}\n-\tdefer tx.Rollback()\n+\tdefer func() { _ = tx.Rollback() }()\n \n \trows, err := tx.QueryContext(ctx, selectPendingSQL, batchID)\n \tif err != nil {\n \t\treturn err\n \t}\n+\tdefer rows.Close()\n \n \tfor rows.Next() {\n \t\tvar p payout\n \t\tif err := rows.Scan(&p.ID, &p.AmountCents, &p.Currency); err != nil {\n \t\t\treturn err\n \t\t}\n-\t\tif err := s.send(ctx, p); err != nil {\n+\t\tgo func(p payout) {\n+\t\t\t_ = s.send(ctx, p)\n+\t\t}(p)\n-\t\t\treturn err\n-\t\t}\n \t}\n \treturn tx.Commit()\n }", "purpose": "review", "secondary": null, "mixed": false, "difficulty": 0.65, "slice": "pasted-context", "lang": "en"}
|
|||
|
|
{"prompt": "ticket copy below, turn it into customer-facing release notes for the 4.2 firmware drop. keep it short, they are field techs not engineers:\n\nFW-2201 — Modbus RTU timing\nDevices on long RS-485 runs (>300m) intermittently dropped frames when polled faster than 20Hz. Root cause was the inter-frame delay being computed from the nominal baud rate rather than the measured one. Fixed by sampling the actual bit time at link-up.\n\nFW-2214 — Battery gauge drift\nThe SoC estimate drifted up to 12% after ~40 charge cycles because the coulomb counter was never re-zeroed at full charge. Now re-zeroes when terminal voltage holds above 4.15V for 90 seconds.\n\nFW-2230 — OTA rollback\nA failed OTA could leave slot B marked valid. Bootloader now requires a heartbeat from the new image within 60s before confirming.", "purpose": "writing", "secondary": null, "mixed": false, "difficulty": 0.45, "slice": "pasted-context", "lang": "en"}
|
|||
|
|
{"prompt": "rename `TxnCtx` to `PaymentContext` everywhere, it's in about 30 files", "purpose": "refactor", "secondary": null, "mixed": false, "difficulty": 0.3, "slice": "boundary", "lang": "en"}
|
|||
|
|
{"prompt": "pytest output, no clue why this only fails on CI:\n\n=================================== FAILURES ===================================\n_______________ test_settlement_rounds_half_even[eur-2.005] ____________________\n\namounts = ['2.005', '10.115', '0.005']\n\n @pytest.mark.parametrize(\"currency,amount\", CASES)\n def test_settlement_rounds_half_even(currency, amount):\n got = settle(Decimal(amount), currency)\n> assert got == Decimal(\"2.00\")\nE assert Decimal('2.01') == Decimal('2.00')\nE + where Decimal('2.01') = settle(Decimal('2.005'), 'eur')\n\ntests/test_settlement.py:64: AssertionError\n=========================== short test summary info ============================\nFAILED tests/test_settlement.py::test_settlement_rounds_half_even[eur-2.005]\nFAILED tests/test_settlement.py::test_settlement_rounds_half_even[eur-0.005]\n2 failed, 318 passed in 41.22s\n\nlocally all 320 pass. same python version per the container image", "purpose": "debugging", "secondary": null, "mixed": false, "difficulty": 0.65, "slice": "pasted-context", "lang": "en"}
|
|||
|
|
{"prompt": "give the dashboard some love", "purpose": "frontendImpl", "secondary": null, "mixed": false, "difficulty": 0.3, "slice": "vague-eval", "lang": "en"}
|
|||
|
|
{"prompt": "quiero un README para el paquete `acme-payments-sdk`, con ejemplos de uso y la tabla de errores", "purpose": "writing", "secondary": null, "mixed": false, "difficulty": 0.4, "slice": "core", "lang": "es"}
|
|||
|
|
{"prompt": "epic dropped in my lap this morning, need a shape for it before standup:\n\nPAY-880: Split-tender checkout\nCustomers should be able to pay with up to three instruments on one order (gift card + card + store credit). Partial authorization must be supported; if the second instrument declines we must void the first within 30s or the customer sees a phantom hold. Refunds must unwind in reverse order of capture. Accounting needs one journal entry per instrument, not per order. Mobile and web both in scope; POS is explicitly out of scope for this quarter. Legal wants a written record of authorization order for disputes.\n\nno estimates yet, just want the milestones and where the risk is", "purpose": "planning", "secondary": null, "mixed": false, "difficulty": 0.85, "slice": "pasted-context", "lang": "en"}
|
|||
|
|
{"prompt": "skeleton loader for the orders table please, matching the card one we already have", "purpose": "frontendImpl", "secondary": null, "mixed": false, "difficulty": 0.35, "slice": "core", "lang": "en"}
|
|||
|
|
{"prompt": "git log since v3.8 is below, produce the changelog entry. group by user-visible vs internal, drop the noise:\n\n8f21c0a fix(cart): guard against null promo on line items\n1b93de2 chore: bump esbuild 0.21.5 -> 0.23.0\nc0aa774 feat(checkout): remember last used shipping method\n77de110 refactor(orders): extract draft builder\n2e91b45 fix(orders): don't double-count tax on split shipments\naa30f19 test: flaky settlement rounding case\n9c1d004 feat(admin): bulk refund from the order list\n4410bb7 chore(deps): dependabot bump tar-fs\nb77e910 fix(webhooks): retry paypal IPN on 5xx instead of dropping\n30cc219 docs: correct the payout schedule table\ne1f0a52 perf(cart): memoize currency formatter", "purpose": "writing", "secondary": null, "mixed": false, "difficulty": 0.35, "slice": "pasted-context", "lang": "en"}
|
|||
|
|
{"prompt": "walk me through what `reconcileLedger` actually does before i touch it", "purpose": "review", "secondary": null, "mixed": false, "difficulty": 0.5, "slice": "boundary", "lang": "en"}
|
|||
|
|
{"prompt": "serial console from the gateway board, it wedges after a few hours in the field but never on my desk:\n\n[00:04:12.331] mqtt: connected broker=ssl://ingest.acme.io:8883\n[01:58:03.117] mqtt: publish qos=1 topic=v1/telemetry len=284\n[01:58:03.402] mqtt: puback id=41221\n[02:11:44.980] wifi: rssi=-81 (weak)\n[02:11:47.002] mqtt: keepalive timeout, reconnecting\n[02:11:47.004] net: dhcp renew\n[02:11:52.118] mqtt: connect failed rc=-2\n[02:12:02.118] mqtt: connect failed rc=-2\n[02:12:12.119] mqtt: connect failed rc=-2\n[02:12:12.120] heap: free=3128 largest=1024 min_ever=3128\n[02:12:22.121] mqtt: connect failed rc=-2\n[02:12:22.122] heap: free=2104 largest=768 min_ever=2104\n[02:12:32.123] mqtt: connect failed rc=-2\n[02:12:32.124] heap: free=1080 largest=512 min_ever=1080\n<no further output>", "purpose": "debugging", "secondary": null, "mixed": false, "difficulty": 0.75, "slice": "pasted-context", "lang": "en"}
|
|||
|
|
{"prompt": "nochmal die Frage: warum ruft der Checkout `getShippingRates` zweimal auf, wenn man die Adresse ändert?", "purpose": "debugging", "secondary": null, "mixed": false, "difficulty": 0.55, "slice": "boundary", "lang": "de"}
|
|||
|
|
{"prompt": "do the thing with the invoices", "purpose": "backendImpl", "secondary": null, "mixed": false, "difficulty": 0.4, "slice": "vague-eval", "lang": "en"}
|
|||
|
|
{"prompt": "ruff is unhappy on the pipeline package, clear these out:\n\npipelines/orders/load.py:12:1: F401 [*] `datetime.timezone` imported but unused\npipelines/orders/load.py:88:5: E722 Do not use bare `except`\npipelines/orders/load.py:141:9: F841 Local variable `rowcount` is assigned to but never used\npipelines/orders/transform.py:23:1: E402 Module level import not at top of file\npipelines/orders/transform.py:210:80: E501 Line too long (118 > 100)\npipelines/orders/transform.py:377:15: B008 Do not perform function call `dict()` in argument defaults\npipelines/common/io.py:5:1: F401 [*] `typing.Optional` imported but unused\npipelines/common/io.py:66:12: SIM108 Use ternary operator instead of `if`-`else`-block\nFound 8 errors (3 fixable with the `--fix` option).", "purpose": "quickFix", "secondary": null, "mixed": false, "difficulty": 0.2, "slice": "pasted-context", "lang": "en"}
|
|||
|
|
{"prompt": "our staging environment shares a gateway sandbox account with two other teams, which is why our e2e tests are flaky, and i'm tired of it. options as i see them: our own sandbox account, a recorded-fixtures approach, or a fake gateway we maintain. weigh those up for a team our size and tell me what you'd do", "purpose": "planning", "secondary": null, "mixed": false, "difficulty": 0.7, "slice": "boundary", "lang": "en"}
|
|||
|
|
{"prompt": "a merchant reported that their payout for tuesday arrived split into two payments with different reference numbers, which shouldn't be possible. i've been staring at the batching code for an hour. the batch closes on a size trigger and a time trigger and i think both can fire, but i can't prove it from reading. take a look and explain what's happening", "purpose": "debugging", "secondary": null, "mixed": false, "difficulty": 0.8, "slice": "core", "lang": "en"}
|
|||
|
|
{"prompt": "our checkout conversion dropped 4% on android chrome last week and nothing in the payments code changed. the only thing i can find is that the card element sometimes doesn't get focus on first tap. i don't know whether that's the cause or a red herring, and i don't know how to tell", "purpose": "debugging", "secondary": null, "mixed": false, "difficulty": 0.75, "slice": "boundary", "lang": "en"}
|
|||
|
|
{"prompt": "a `/v1/instruments` endpoint is needed: list saved payment instruments for the authenticated merchant's customer, with the default one first, expired cards excluded unless `include_expired=true`, and last-four plus brand only — never the token. keep it consistent with how `/v1/orders` handles auth and pagination", "purpose": "backendImpl", "secondary": null, "mixed": false, "difficulty": 0.55, "slice": "core", "lang": "en"}
|
|||
|
|
{"prompt": "finish it", "purpose": "backendImpl", "secondary": null, "mixed": false, "difficulty": 0.4, "slice": "vague-eval", "lang": "en"}
|
|||
|
|
{"prompt": "POST /v1/refunds handler is pasted below — i need the public API reference page for it. request/response schema, every error code, and an idempotency note:\n\[email protected](\"/v1/refunds\", status_code=201)\nasync def create_refund(body: RefundIn, idem: str = Header(alias=\"Idempotency-Key\")):\n order = await orders.get(body.order_id)\n if order is None:\n raise HTTPException(404, \"order_not_found\")\n if order.state not in (\"captured\", \"partially_refunded\"):\n raise HTTPException(409, \"order_not_refundable\")\n if body.amount_cents > order.refundable_cents:\n raise HTTPException(422, \"amount_exceeds_refundable\")\n existing = await idem_store.get(idem)\n if existing:\n return existing\n refund = await gateway.refund(order.charge_id, body.amount_cents, reason=body.reason)\n await idem_store.put(idem, refund, ttl=86400)\n return refund", "purpose": "writing", "secondary": null, "mixed": false, "difficulty": 0.5, "slice": "pasted-context", "lang": "en"}
|
|||
|
|
{"prompt": "airflow scheduler log tail — the daily orders DAG has been marked success while producing nothing for three days:\n\n[2026-07-27, 02:00:04 UTC] {scheduler_job.py:412} INFO - DAG orders_daily scheduled run 2026-07-26\n[2026-07-27, 02:00:09 UTC] {taskinstance.py:1157} INFO - Executing extract_orders on 2026-07-26T00:00:00+00:00\n[2026-07-27, 02:00:11 UTC] {sql.py:88} INFO - Running: SELECT * FROM orders WHERE updated_at >= '2026-07-26' AND updated_at < '2026-07-27'\n[2026-07-27, 02:00:12 UTC] {sql.py:96} INFO - Fetched 0 rows\n[2026-07-27, 02:00:12 UTC] {taskinstance.py:1372} INFO - Marking task as SUCCESS\n[2026-07-27, 02:00:13 UTC] {taskinstance.py:1157} INFO - Executing load_warehouse on 2026-07-26T00:00:00+00:00\n[2026-07-27, 02:00:14 UTC] {load.py:52} INFO - upserting 0 rows into warehouse.fct_orders\n[2026-07-27, 02:00:14 UTC] {taskinstance.py:1372} INFO - Marking task as SUCCESS\n[2026-07-27, 02:00:15 UTC] {dagrun.py:604} INFO - Marking run <DagRun orders_daily @ 2026-07-26> successful\n\nthe source table definitely has rows for those days", "purpose": "debugging", "secondary": null, "mixed": false, "difficulty": 0.6, "slice": "pasted-context", "lang": "en"}
|
|||
|
|
{"prompt": "explain plan for our slowest reporting query, is the sort the real problem or is it the nested loop:\n\nGroupAggregate (cost=2841002.31..2912441.09 rows=1428215 width=48) (actual time=18422.113..21033.885 rows=1201 loops=1)\n Group Key: m.merchant_id, date_trunc('day', o.captured_at)\n -> Sort (cost=2841002.31..2844572.85 rows=1428215 width=32) (actual time=18421.980..19884.210 rows=4118222 loops=1)\n Sort Key: m.merchant_id, (date_trunc('day', o.captured_at))\n Sort Method: external merge Disk: 214880kB\n -> Nested Loop (cost=0.43..2610411.02 rows=1428215 width=32) (actual time=0.061..14022.771 rows=4118222 loops=1)\n -> Seq Scan on merchants m (cost=0.00..812.44 rows=3244 width=16) (actual time=0.008..1.902 rows=3244 loops=1)\n -> Index Scan using orders_merchant_captured_idx on orders o (cost=0.43..798.11 rows=440 width=24) (actual time=0.004..3.902 rows=1269 loops=3244)\n Index Cond: (merchant_id = m.merchant_id)\nPlanning Time: 0.641 ms\nExecution Time: 21041.223 ms", "purpose": "review", "secondary": null, "mixed": false, "difficulty": 0.7, "slice": "pasted-context", "lang": "en"}
|
|||
|
|
{"prompt": "gift card balance shows stale after a partial redemption — i think it's just the cache key missing the version, one-line change if so", "purpose": "quickFix", "secondary": null, "mixed": false, "difficulty": 0.3, "slice": "boundary", "lang": "en"}
|
|||
|
|
{"prompt": "dependabot opened this and i can't tell if it's safe to merge blind:\n\nBumps `pyarrow` from 14.0.2 to 17.0.0.\n\nRelease notes (17.0.0):\n- ARROW-41567: [Python] Deprecate `pyarrow.parquet.ParquetDataset` legacy behaviour; `use_legacy_dataset` removed\n- ARROW-42011: [C++] Default compression for `write_table` changed from `snappy` to `zstd`\n- ARROW-40199: [Python] `Table.to_pandas` now returns nullable dtypes by default when `types_mapper` is unset\n- ARROW-43121: [C++] Minimum supported glibc raised to 2.28\n\nCommits\n- 9a1b2c3 MINOR: bump version\n- 77aa019 ARROW-43121: raise glibc floor\n- 2b91d40 ARROW-40199: nullable dtypes by default\n\nCompatibility score: 61%", "purpose": "quickFix", "secondary": null, "mixed": false, "difficulty": 0.4, "slice": "pasted-context", "lang": "en"}
|
|||
|
|
{"prompt": "browser console on the checkout page, customers report the pay button doing nothing:\n\nrefused to execute inline script because it violates the following Content Security Policy directive: \"script-src 'self' https://js.stripe.com\"\n (index):1\nUncaught (in promise) IntegrationError: We could not retrieve data from the specified Element. Please make sure the Element you are attempting to use is still mounted.\n at Bn (v3:1:19233)\n at e._handleMessage (v3:1:41102)\n at e._handleMessage (v3:1:40011)\npayment-form.tsx:212 Uncaught TypeError: Cannot read properties of null (reading 'confirmPayment')\n at handleSubmit (payment-form.tsx:212:28)\n at HTMLFormElement.callCallback (react-dom.development.js:4164:14)\nGET https://api.acme.io/v1/payment_intents/pi_3Qb 401 (Unauthorized)\n\nhappens on safari only as far as we can tell", "purpose": "debugging", "secondary": null, "mixed": false, "difficulty": 0.7, "slice": "pasted-context", "lang": "en"}
|
|||
|
|
{"prompt": "comparto el hilo de slack de anoche, resúmelo en un post-mortem para el canal #incidents:\n\nmarta: el settlement job lleva 40 min parado\nmarta: los locks en payouts están al rojo\ndani: yo veo la conexión del pooler saturada, 200/200\ndani: creo que alguien lanzó el replay manual sin el flag de batch\nmarta: confirmado, jorge lo lanzó a las 21:14 para el merchant 8812\njorge: perdón, pensaba que el replay ya iba en lotes\ndani: he matado el proceso, los locks se liberaron a las 21:52\nmarta: cola drenada a las 22:06, sin pagos perdidos\ndani: mañana metemos un guard para que replay sin --batch no arranque\nmarta: y hay que documentarlo, nadie sabía que era peligroso", "purpose": "writing", "secondary": null, "mixed": false, "difficulty": 0.5, "slice": "pasted-context", "lang": "es"}
|
|||
|
|
{"prompt": "tax calculation lives in the order service, the cart service and the admin refund flow. i want one owner for it. sketch the target shape and the steps to get there without a big-bang cutover", "purpose": "planning", "secondary": null, "mixed": false, "difficulty": 0.75, "slice": "boundary", "lang": "en"}
|
|||
|
|
{"prompt": "got this in prod, go service, no idea:\n\npanic: send on closed channel\n\ngoroutine 214 [running]:\nacme/settle.(*Batcher).enqueue(0xc0001a4000, {0xc0004b2100, 0x18})\n\t/build/settle/batcher.go:132 +0x9c\nacme/settle.(*Batcher).Add(...)\n\t/build/settle/batcher.go:98\nacme/settle.(*Worker).handle(0xc0000b6060, {0x8f2d40, 0xc0001bc0c0})\n\t/build/settle/worker.go:74 +0x1c5\nacme/settle.(*Worker).Run.func1()\n\t/build/settle/worker.go:41 +0x59\ncreated by acme/settle.(*Worker).Run in goroutine 1\n\t/build/settle/worker.go:39 +0x8d\n\nexit status 2\n\nit survived four weeks in staging without a single one of these", "purpose": "debugging", "secondary": null, "mixed": false, "difficulty": 0.75, "slice": "pasted-context", "lang": "en"}
|
|||
|
|
{"prompt": "terraform for the ingest bucket, below. anything here that would make an auditor unhappy?\n\nresource \"aws_s3_bucket\" \"ingest\" {\n bucket = \"acme-ingest-prod\"\n}\n\nresource \"aws_s3_bucket_public_access_block\" \"ingest\" {\n bucket = aws_s3_bucket.ingest.id\n block_public_acls = true\n ignore_public_acls = true\n block_public_policy = false\n restrict_public_buckets = false\n}\n\nresource \"aws_s3_bucket_policy\" \"ingest\" {\n bucket = aws_s3_bucket.ingest.id\n policy = jsonencode({\n Version = \"2012-10-17\"\n Statement = [{\n Effect = \"Allow\"\n Principal = \"*\"\n Action = [\"s3:GetObject\"]\n Resource = \"${aws_s3_bucket.ingest.arn}/public/*\"\n }]\n })\n}\n\nresource \"aws_s3_bucket_lifecycle_configuration\" \"ingest\" {\n bucket = aws_s3_bucket.ingest.id\n rule {\n id = \"expire-raw\"\n status = \"Enabled\"\n expiration { days = 3650 }\n }\n}", "purpose": "review", "secondary": null, "mixed": false, "difficulty": 0.6, "slice": "pasted-context", "lang": "en"}
|
|||
|
|
{"prompt": "spec below, stand up the endpoint. postgres + sqlc, follow how /v1/orders does it:\n\nGET /v1/settlements\n query: merchant_id (required), from (date), to (date), status (pending|paid|failed), cursor, limit (default 50, max 200)\n auth: merchant-scoped API key; a platform key may pass merchant_id for any merchant it owns\n response: { data: Settlement[], next_cursor: string|null }\n Settlement: { id, merchant_id, amount_cents, currency, status, expected_at, paid_at|null, failure_code|null }\n ordering: expected_at desc, id desc\n errors: 400 invalid_range if to < from, 403 merchant_not_owned, 422 limit_out_of_range\n the cursor must be opaque and must survive new rows being inserted mid-page", "purpose": "backendImpl", "secondary": null, "mixed": false, "difficulty": 0.6, "slice": "pasted-context", "lang": "en"}
|
|||
|
|
{"prompt": "diff below — write the commit message. we squash, so one subject line plus a body:\n\ndiff --git a/internal/ledger/post.go b/internal/ledger/post.go\n@@ -18,6 +18,7 @@ type Entry struct {\n \tAccount string\n \tAmount int64\n \tCurrency string\n+\tBatchID string\n }\n@@ -55,9 +56,16 @@ func Post(ctx context.Context, db DB, entries []Entry) error {\n-\tfor _, e := range entries {\n-\t\tif _, err := db.Exec(ctx, insertEntry, e.Account, e.Amount, e.Currency); err != nil {\n-\t\t\treturn err\n-\t\t}\n-\t}\n+\tbatch := &pgx.Batch{}\n+\tfor _, e := range entries {\n+\t\tbatch.Queue(insertEntry, e.Account, e.Amount, e.Currency, e.BatchID)\n+\t}\n+\tres := db.SendBatch(ctx, batch)\n+\tdefer res.Close()\n+\tfor range entries {\n+\t\tif _, err := res.Exec(); err != nil {\n+\t\t\treturn fmt.Errorf(\"post entry: %w\", err)\n+\t\t}\n+\t}\n \treturn nil\n }", "purpose": "writing", "secondary": null, "mixed": false, "difficulty": 0.3, "slice": "pasted-context", "lang": "en"}
|
|||
|
|
{"prompt": "sort out the invoice thing from yesterday", "purpose": "backendImpl", "secondary": null, "mixed": false, "difficulty": 0.45, "slice": "vague-eval", "lang": "en"}
|
|||
|
|
{"prompt": "docs/webhooks.md still describes the v1 payload shape we killed in march. bring it in line with what we send now, and add the migration note partners keep asking for", "purpose": "writing", "secondary": null, "mixed": false, "difficulty": 0.4, "slice": "boundary", "lang": "en"}
|
|||
|
|
{"prompt": "help", "purpose": "debugging", "secondary": null, "mixed": false, "difficulty": 0.4, "slice": "vague-eval", "lang": "en"}
|
|||
|
|
{"prompt": "summarise what the settlement service does for a new hire, then turn that into the actual service README", "purpose": "writing", "secondary": "review", "mixed": true, "difficulty": 0.45, "slice": "mixed", "lang": "en"}
|
|||
|
|
{"prompt": "reading through the fraud scoring service for the first time. give me the tour — entry points, what calls what, where the model gets loaded, and anything that looks load-bearing but undocumented", "purpose": "review", "secondary": null, "mixed": false, "difficulty": 0.6, "slice": "core", "lang": "en"}
|
|||
|
|
{"prompt": "loading spinner on the refunds table flashes for 40ms then disappears, looks broken", "purpose": "frontendImpl", "secondary": null, "mixed": false, "difficulty": 0.3, "slice": "boundary", "lang": "en"}
|
|||
|
|
{"prompt": "unify the two date formatters and then note it in the changelog", "purpose": "refactor", "secondary": "writing", "mixed": true, "difficulty": 0.35, "slice": "mixed", "lang": "en"}
|
|||
|
|
{"prompt": "dark mode on the invoice preview inverts the PDF thumbnail and it looks terrible", "purpose": "frontendImpl", "secondary": null, "mixed": false, "difficulty": 0.35, "slice": "core", "lang": "en"}
|
|||
|
|
{"prompt": "needs to be faster", "purpose": "refactor", "secondary": null, "mixed": false, "difficulty": 0.5, "slice": "vague-eval", "lang": "en"}
|
|||
|
|
{"prompt": "docstrings in `pipelines/common/io.py` are wrong about what happens on partial writes — they describe behaviour we removed. correct them to match the code", "purpose": "writing", "secondary": null, "mixed": false, "difficulty": 0.3, "slice": "boundary", "lang": "en"}
|
|||
|
|
{"prompt": "我们的 payout 对账逻辑要不要拆成独立服务?先给我一个方案对比,别写代码", "purpose": "planning", "secondary": null, "mixed": false, "difficulty": 0.75, "slice": "core", "lang": "zh"}
|
|||
|
|
{"prompt": "same thing as last time but for refunds", "purpose": "backendImpl", "secondary": null, "mixed": false, "difficulty": 0.45, "slice": "vague-eval", "lang": "en"}
|
|||
|
|
{"prompt": "tell me whether the retry logic in `gateway/client.go` can double-charge, and if it can, patch it", "purpose": "review", "secondary": "quickFix", "mixed": true, "difficulty": 0.7, "slice": "mixed", "lang": "en"}
|
|||
|
|
{"prompt": "stale `TODO(marta): remove after Q1` comments all over the ingest package, it's Q3", "purpose": "quickFix", "secondary": null, "mixed": false, "difficulty": 0.15, "slice": "boundary", "lang": "en"}
|
|||
|
|
{"prompt": "just make the dashboard usable again", "purpose": "frontendImpl", "secondary": null, "mixed": false, "difficulty": 0.5, "slice": "vague-eval", "lang": "en"}
|
|||
|
|
{"prompt": "jest is red after the money refactor and i can't tell if the test or the code is wrong:\n\n FAIL src/cart/__tests__/totals.test.ts\n ● cart totals › applies percentage promo before shipping\n\n expect(received).toEqual(expected) // deep equality\n\n - Expected - 3\n + Received + 3\n\n Object {\n - \"discountCents\": 450,\n - \"shippingCents\": 599,\n - \"totalCents\": 4649,\n + \"discountCents\": 449,\n + \"shippingCents\": 599,\n + \"totalCents\": 4650,\n \"subtotalCents\": 4500,\n }\n\n at Object.<anonymous> (src/cart/__tests__/totals.test.ts:88:23)\n\nTests: 1 failed, 214 passed, 215 total\nSnapshots: 0 total\nTime: 18.446 s", "purpose": "debugging", "secondary": null, "mixed": false, "difficulty": 0.55, "slice": "pasted-context", "lang": "en"}
|
|||
|
|
{"prompt": "prometheus alert fired overnight and i don't understand the rule, let alone the alert:\n\nALERT SettlementLagHigh\n expr: max by (region) (settlement_batch_age_seconds{env=\"prod\"}) > 900\n for: 10m\n labels: { severity: page, team: payments }\n annotations:\n summary: \"settlement batches lagging in {{ $labels.region }}\"\n\nfiring instances:\n settlement_batch_age_seconds{env=\"prod\",region=\"eu-west-1\",shard=\"3\"} 1841\n settlement_batch_age_seconds{env=\"prod\",region=\"eu-west-1\",shard=\"7\"} 1802\n settlement_batch_age_seconds{env=\"prod\",region=\"us-east-1\",shard=\"1\"} 212\n\nlag cleared on its own at 04:12 without anyone touching it", "purpose": "debugging", "secondary": null, "mixed": false, "difficulty": 0.65, "slice": "pasted-context", "lang": "en"}
|
|||
|
|
{"prompt": "jira ticket, verbatim, and i want the rollout plan not the code:\n\nDATA-417 — Retire the nightly full refresh\nToday `warehouse_refresh` truncates and rebuilds fct_orders, fct_payments and dim_merchant every night (runtime 3h10m, growing ~4%/month). We want incremental models instead. Constraints: finance reconciles against fct_payments at 06:00 UTC and cannot see partial state; the merchant dimension is SCD2 and history must not be rewritten; three downstream Looker models and one ML feature job read these tables. There is no staging warehouse with production volume. Prior attempt in February was rolled back after duplicate rows appeared in fct_payments.", "purpose": "planning", "secondary": null, "mixed": false, "difficulty": 0.8, "slice": "pasted-context", "lang": "en"}
|
|||
|
|
{"prompt": "eslint output after the checkout rewrite, just make it quiet:\n\n/app/src/checkout/PaymentForm.tsx\n 14:8 warning 'useMemo' is defined but never used @typescript-eslint/no-unused-vars\n 88:11 error 'cardToken' is assigned a value but never used @typescript-eslint/no-unused-vars\n 132:5 error React Hook useEffect has a missing dependency: 'merchantId' react-hooks/exhaustive-deps\n 204:7 warning Unexpected console statement no-console\n\n/app/src/checkout/SummaryPanel.tsx\n 9:1 error 'formatMoney' is defined but never used @typescript-eslint/no-unused-vars\n 41:22 error Missing \"key\" prop for element in iterator react/jsx-key\n\n✖ 6 problems (4 errors, 2 warnings)\n 3 errors and 0 warnings potentially fixable with the `--fix` option.", "purpose": "quickFix", "secondary": null, "mixed": false, "difficulty": 0.2, "slice": "pasted-context", "lang": "en"}
|
|||
|
|
{"prompt": "cargo clippy on the firmware crate, mostly noise but a couple look real:\n\nwarning: this `if` statement can be collapsed\n --> src/modbus/frame.rs:118:5\n |\n118 | / if crc_ok {\n119 | | if len >= MIN_FRAME {\n | |_________^\n = help: for further information visit https://rust-lang.github.io/rust-clippy/\n\nwarning: casting `u32` to `u16` may truncate the value\n --> src/modbus/timing.rs:44:23\n |\n44 | let ticks: u16 = (bit_time_ns / 1000) as u16;\n | ^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nwarning: large size difference between variants\n --> src/proto/mod.rs:12:1\n |\n12 | enum Msg { Ping, Telemetry([u8; 512]) }\n\nwarning: `acme-fw` (lib) generated 14 warnings", "purpose": "quickFix", "secondary": null, "mixed": false, "difficulty": 0.35, "slice": "pasted-context", "lang": "en"}
|
|||
|
|
{"prompt": "ingest handler as it stands, pasted below. i want the same behaviour with the nesting flattened out, it's five levels deep in places:\n\nfunc (h *Handler) Ingest(w http.ResponseWriter, r *http.Request) {\n\tif r.Method == http.MethodPost {\n\t\tif ct := r.Header.Get(\"Content-Type\"); ct == \"application/json\" {\n\t\t\tvar batch Batch\n\t\t\tif err := json.NewDecoder(r.Body).Decode(&batch); err == nil {\n\t\t\t\tif len(batch.Readings) > 0 {\n\t\t\t\t\tif h.limiter.Allow(batch.DeviceID) {\n\t\t\t\t\t\tif err := h.store.Write(r.Context(), batch); err == nil {\n\t\t\t\t\t\t\tw.WriteHeader(202)\n\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t}\n\t\t\t\t\t\thttp.Error(w, \"store\", 500)\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t\thttp.Error(w, \"rate\", 429)\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t}\n\t\t\thttp.Error(w, \"bad json\", 400)\n\t\t\treturn\n\t\t}\n\t}\n\thttp.Error(w, \"nope\", 400)\n}", "purpose": "refactor", "secondary": null, "mixed": false, "difficulty": 0.5, "slice": "pasted-context", "lang": "en"}
|
|||
|
|
{"prompt": "docker logs from the ingest pod, it restarts every ~9 minutes under load:\n\n2026-07-29T11:02:14.881Z INFO ingest listening on :8080\n2026-07-29T11:04:02.113Z INFO batch accepted device=dev_7781 readings=512\n2026-07-29T11:06:41.552Z WARN write queue depth 8192 (max 8192)\n2026-07-29T11:07:03.918Z WARN write queue depth 8192 (max 8192)\n2026-07-29T11:08:22.004Z WARN gc pause 812ms\n2026-07-29T11:09:15.337Z WARN gc pause 1.44s\n2026-07-29T11:10:58.221Z ERROR liveness probe failed: context deadline exceeded\n2026-07-29T11:11:02.119Z INFO SIGTERM received, draining\n2026-07-29T11:11:32.120Z ERROR drain timed out, 6112 readings dropped\nstream closed EOF for prod/ingest-7d9c4f8b6-x2plq (ingest)\n\nmemory limit is 2Gi and it never reports above 1.3Gi", "purpose": "debugging", "secondary": null, "mixed": false, "difficulty": 0.75, "slice": "pasted-context", "lang": "en"}
|
|||
|
|
{"prompt": "le rapport de l'audit sécurité, section paiements. dis-moi ce qui est vraiment exploitable chez nous :\n\nF-03 — Les clés API marchand sont stockées en clair dans la table `api_keys` (colonne `secret`). Rotation manuelle uniquement.\nF-07 — L'endpoint `/v1/charges` accepte un champ `merchant_id` dans le corps de la requête et ne vérifie pas qu'il correspond au scope du token.\nF-11 — Les webhooks sortants ne signent pas le corps ; les partenaires vérifient uniquement l'adresse IP source.\nF-14 — Les journaux applicatifs contiennent le PAN tronqué (6+4) ainsi que le nom du porteur.\nF-19 — Pas de limite de tentatives sur `/v1/auth/token` (bruteforce possible sur les clés courtes).", "purpose": "review", "secondary": null, "mixed": false, "difficulty": 0.7, "slice": "pasted-context", "lang": "fr"}
|
|||
|
|
{"prompt": "figma spec for the settlement timeline widget on the merchant dashboard:\n\nSettlement timeline (desktop ≥1024px)\n- Horizontal rail, 4 nodes: Captured → In transit → Paid → Reconciled. Node diameter 20px, 3px stroke.\n- Completed nodes: filled accent, white check glyph. Current node: accent stroke, pulsing 2s ease-in-out halo. Future nodes: 1px muted stroke, no fill.\n- Connector: 2px line, accent up to the current node, muted after. Animate the fill left-to-right over 400ms when a node completes.\n- Under each node: label (text-xs, medium) and timestamp (text-xs, muted). Timestamps in merchant local time, \"—\" when unknown.\n- Failed state: current node turns destructive, connector stops, an inline banner appears below the rail with the failure reason and a Retry link.\n- Below 1024px the rail becomes vertical, nodes left-aligned, 16px gutter.", "purpose": "frontendImpl", "secondary": null, "mixed": false, "difficulty": 0.6, "slice": "pasted-context", "lang": "en"}
|
|||
|
|
{"prompt": "handoff notes for the mobile checkout sheet, build it in SwiftUI against our design system:\n\nCheckoutSheet\n- Presented as a `.sheet` with detents [.medium, .large]; drag indicator visible.\n- Header: order total (title2, bold) with the merchant name beneath (footnote, secondary).\n- Instrument list: rows of 56pt, leading icon 24pt, trailing checkmark on the selected row. Tapping a row selects it; long-press opens the remove menu.\n- \"Add payment method\" row pinned to the bottom of the list, tinted accent, chevron trailing.\n- Pay button: full width, 50pt tall, 12pt corner radius, disabled until an instrument is selected, spinner replaces the label while authorizing.\n- Errors surface as an inline red caption under the Pay button, never as an alert.\n- Dynamic Type up to AX3 must not clip the total; the row stack switches to vertical past AX1.", "purpose": "frontendImpl", "secondary": null, "mixed": false, "difficulty": 0.6, "slice": "pasted-context", "lang": "en"}
|
|||
|
|
{"prompt": "css for our status chips, currently copy-pasted per status. i want one component out of this without any visual change:\n\n.chip-pending {\n display: inline-flex; align-items: center; gap: 6px;\n padding: 2px 10px; border-radius: 9999px;\n font-size: 12px; font-weight: 500; line-height: 20px;\n background: var(--gray-100); color: var(--gray-700);\n}\n.chip-paid {\n display: inline-flex; align-items: center; gap: 6px;\n padding: 2px 10px; border-radius: 9999px;\n font-size: 12px; font-weight: 500; line-height: 20px;\n background: var(--green-100); color: var(--green-800);\n}\n.chip-failed {\n display: inline-flex; align-items: center; gap: 6px;\n padding: 2px 10px; border-radius: 9999px;\n font-size: 12px; font-weight: 600; line-height: 20px;\n background: var(--red-100); color: var(--red-800);\n}", "purpose": "frontendImpl", "secondary": null, "mixed": false, "difficulty": 0.4, "slice": "pasted-context", "lang": "en"}
|
|||
|
|
{"prompt": "paste from the RFC someone abandoned in march. is any of it still true, and what would you keep?\n\n## Ledger v2 — motivation\nThe current ledger writes one row per order and derives per-instrument amounts at read time. With split tender this stops working: the derivation assumes a single capture. Proposal is double-entry with an `entries` table keyed by (account, batch_id) and a nightly compaction job.\n\n## Open questions\n- Do we backfill history or start fresh at cutover?\n- Compaction under load: the February prototype held locks for 40+ minutes.\n- Reporting reads go through `v_ledger_flat`; do we keep the view or force callers to migrate?\n\n## Not doing\nMulti-currency netting. Real-time reconciliation.", "purpose": "review", "secondary": null, "mixed": false, "difficulty": 0.7, "slice": "pasted-context", "lang": "en"}
|
|||
|
|
{"prompt": "这是 backfill 脚本的报错,跑到一半就挂了,看不出是数据问题还是代码问题:\n\nTraceback (most recent call last):\n File \"tools/backfill_payments.py\", line 141, in <module>\n main()\n File \"tools/backfill_payments.py\", line 118, in main\n load_chunk(conn, rows)\n File \"tools/backfill_payments.py\", line 87, in load_chunk\n cur.executemany(UPSERT_SQL, [as_tuple(r) for r in rows])\n File \"/usr/lib/python3.12/site-packages/psycopg/cursor.py\", line 742, in executemany\n raise ex.with_traceback(None)\npsycopg.errors.UniqueViolation: duplicate key value violates unique constraint \"fct_payments_pkey\"\nDETAIL: Key (payment_id)=(pay_01HR9K2M) already exists.\n\n已经跑过一次 partial backfill,可能有关系", "purpose": "debugging", "secondary": null, "mixed": false, "difficulty": 0.6, "slice": "pasted-context", "lang": "zh"}
|
|||
|
|
{"prompt": "README for the reconciliation CLI is basically the argparse help text. here's what the tool actually takes now, write something a new operator could follow:\n\nusage: reconcile [-h] --since SINCE [--until UNTIL] [--merchant MERCHANT]\n [--source {gateway,ledger,both}] [--batch BATCH] [--dry-run]\n [--out OUT] [--format {csv,ndjson,table}] [--fail-on-drift]\n [--tolerance-cents TOLERANCE_CENTS] [--parallel PARALLEL]\n\nnotes the team knows but never wrote down: --dry-run still writes the audit row; --fail-on-drift is what CI uses; --parallel above 8 starves the pooler; --source both is the only mode that catches missing gateway events; running without --merchant on a full day takes ~25 minutes.", "purpose": "writing", "secondary": null, "mixed": false, "difficulty": 0.45, "slice": "pasted-context", "lang": "en"}
|
|||
|
|
{"prompt": "incident timeline from last night, in raw form. turn it into the post-mortem doc, our template has Summary / Impact / Timeline / Root cause / Action items:\n\n21:04 alert SettlementLagHigh eu-west-1\n21:07 on-call ack, sees pooler at 200/200 connections\n21:12 manual replay found running for merchant 8812, started 20:51\n21:14 replay killed\n21:18 connections recover to 40/200, lag still climbing\n21:31 second replay discovered on shard 7, also killed\n21:52 locks released, batches start draining\n22:06 queue empty, lag back under 60s\n22:20 confirmed no payouts lost, 41 delayed by >30m\n09:15 next day: guard added to block replay without --batch\n\nimpact numbers: 41 merchants saw delayed payouts, longest 74 minutes, no financial loss", "purpose": "writing", "secondary": null, "mixed": false, "difficulty": 0.5, "slice": "pasted-context", "lang": "en"}
|
|||
|
|
{"prompt": "grafana panel query plus what support is telling us. something's off and i want the endpoint documented properly once we know:\n\nsum(rate(http_requests_total{route=\"/v1/payouts\",code=~\"4..\"}[5m])) by (code)\n\n code=\"400\" 0.02/s\n code=\"401\" 0.00/s\n code=\"409\" 1.84/s\n code=\"422\" 0.31/s\n\nsupport ticket: \"we get 409 conflict on about a third of our payout creates but the payout is created anyway, so we ignore it now\"\n\nnobody can tell me what 409 means on that route — it isn't in the reference at all", "purpose": "writing", "secondary": null, "mixed": false, "difficulty": 0.5, "slice": "pasted-context", "lang": "en"}
|
|||
|
|
{"prompt": "pyproject and the CI matrix disagree and the build is amber. smallest change that makes them agree:\n\n[project]\nname = \"acme-pipelines\"\nrequires-python = \">=3.10\"\ndependencies = [\n \"pandas>=2.0,<2.2\",\n \"pyarrow>=14,<15\",\n \"psycopg[binary]>=3.1\",\n \"dbt-core==1.7.9\",\n]\n\n# .github/workflows/ci.yml\nstrategy:\n matrix:\n python: [\"3.10\", \"3.11\", \"3.12\", \"3.13\"]\n\n# failure on 3.13:\nERROR: Could not find a version that satisfies the requirement pandas<2.2,>=2.0\nERROR: No matching distribution found for pandas<2.2,>=2.0", "purpose": "quickFix", "secondary": null, "mixed": false, "difficulty": 0.3, "slice": "pasted-context", "lang": "en"}
|
|||
|
|
{"prompt": "helm values diff between staging and prod, i think one of these is why prod is slower:\n\n--- staging/values.yaml\n+++ prod/values.yaml\n@@ -8,7 +8,7 @@ ingest:\n replicas: 4\n- maxUnavailable: 1\n+ maxUnavailable: 0\n@@ -18,10 +18,10 @@ ingest:\n resources:\n requests:\n- cpu: 500m\n- memory: 1Gi\n+ cpu: 250m\n+ memory: 2Gi\n limits:\n- cpu: \"2\"\n+ cpu: 500m\n memory: 2Gi\n@@ -31,6 +31,7 @@ ingest:\n env:\n WRITE_QUEUE_MAX: \"8192\"\n+ GOGC: \"20\"\n BATCH_FLUSH_MS: \"250\"", "purpose": "review", "secondary": null, "mixed": false, "difficulty": 0.6, "slice": "pasted-context", "lang": "en"}
|
|||
|
|
{"prompt": "o ficheiro `services/payouts/schedule.py` está assim há dois anos e ninguém lhe toca. o que é que ele faz exatamente, sobretudo a parte dos feriados?\n\ndef next_payout_date(merchant, after=None):\n d = after or date.today()\n delay = merchant.payout_delay_days or 2\n d = d + timedelta(days=delay)\n while d.weekday() >= 5 or d in HOLIDAYS.get(merchant.country, ()):\n d = d + timedelta(days=1)\n if merchant.payout_schedule == \"weekly\":\n while d.weekday() != merchant.payout_weekday:\n d = d + timedelta(days=1)\n elif merchant.payout_schedule == \"monthly\":\n d = d.replace(day=min(merchant.payout_dom, monthrange(d.year, d.month)[1]))\n if d <= (after or date.today()):\n d = (d + timedelta(days=32)).replace(day=merchant.payout_dom)\n return d", "purpose": "review", "secondary": null, "mixed": false, "difficulty": 0.55, "slice": "pasted-context", "lang": "pt"}
|
|||
|
|
{"prompt": "three call sites, three different ways of building the same gateway request. i want one builder and identical behaviour:\n\n# charges.py\nreq = {\"amount\": amount_cents, \"currency\": cur.lower(), \"source\": token,\n \"capture\": True, \"metadata\": {\"order\": order_id}}\n\n# refunds.py\nreq = dict(amount=amount_cents, currency=cur.upper(), charge=charge_id,\n reason=reason or \"requested_by_customer\",\n metadata={\"order\": str(order_id), \"actor\": actor})\n\n# admin/tools/manual_charge.py\nreq = {}\nreq[\"amount\"] = int(amount * 100)\nreq[\"currency\"] = cur\nreq[\"source\"] = token\nreq[\"capture\"] = capture\nif order_id:\n req[\"metadata\"] = {\"order\": order_id, \"manual\": \"1\"}", "purpose": "refactor", "secondary": null, "mixed": false, "difficulty": 0.6, "slice": "pasted-context", "lang": "en"}
|
|||
|
|
{"prompt": "gateway client's retry decorator, which is wrapped around six methods and looks wrong to me but i want it restructured rather than rewritten:\n\ndef with_retries(attempts=3, backoff=0.5):\n def deco(fn):\n @wraps(fn)\n def inner(*a, **kw):\n last = None\n for i in range(attempts):\n try:\n return fn(*a, **kw)\n except (Timeout, ConnectionError) as e:\n last = e\n time.sleep(backoff * (2 ** i))\n except GatewayError as e:\n if e.status >= 500:\n last = e\n time.sleep(backoff * (2 ** i))\n else:\n raise\n raise last\n return inner\n return deco", "purpose": "refactor", "secondary": null, "mixed": false, "difficulty": 0.55, "slice": "pasted-context", "lang": "en"}
|
|||
|
|
{"prompt": "legacy module header, comments included. same behaviour, modern shape, no new deps:\n\n# NOTE(2019): this file predates the payments service split. it talks to the\n# old ledger over a socket. do not remove the sleep on line 40, it is load\n# bearing (see INC-221).\n\nclass LedgerBridge(object):\n def __init__(self, host, port, retries=3):\n self.host = host\n self.port = port\n self.retries = retries\n self._sock = None\n\n def _connect(self):\n if self._sock is None:\n self._sock = socket.create_connection((self.host, self.port), 5)\n time.sleep(0.25)\n return self._sock\n\n def post(self, entry):\n for i in range(self.retries):\n try:\n s = self._connect()\n s.sendall(json.dumps(entry).encode() + b\"\\n\")\n return json.loads(s.recv(65536).decode())\n except Exception:\n self._sock = None\n raise RuntimeError(\"ledger unreachable\")", "purpose": "refactor", "secondary": null, "mixed": false, "difficulty": 0.65, "slice": "pasted-context", "lang": "en"}
|
|||
|
|
{"prompt": "product wrote this in the ticket and i need it broken into shippable pieces with an order and the risky bits called out:\n\nMerchants should be able to set their own payout schedule from the dashboard: daily, weekly on a chosen weekday, or monthly on a chosen day. Changing the schedule must not affect payouts already in flight. Merchants on manual payouts should see the option but disabled with an upsell. We need an audit record of every schedule change including who changed it. Finance wants a report of merchants whose schedule changed in the last 30 days. Support needs the ability to override a schedule temporarily without the merchant seeing it change permanently.", "purpose": "planning", "secondary": null, "mixed": false, "difficulty": 0.75, "slice": "pasted-context", "lang": "en"}
|
|||
|
|
{"prompt": "rate limiting keeps coming up and we keep deferring it. below is what ops observed last week; i want the design written down before any code — where counters live, redis failure behaviour, response headers, and the order we roll it across v1/v2/v3:\n\ntop talkers, 7d, requests per minute at peak:\n merchant 8812 14,200 rpm (bulk order sync every 5 min)\n merchant 4419 9,850 rpm (polling /v1/payouts once per second per store)\n merchant 7702 6,140 rpm (webhook replay loop, self-inflicted)\n everyone else < 900 rpm\n\ntwo of those three took the API down for everyone on tuesday for eleven minutes", "purpose": "planning", "secondary": null, "mixed": false, "difficulty": 0.8, "slice": "pasted-context", "lang": "en"}
|
|||
|
|
{"prompt": "reconciliation service has grown three responsibilities and i want a target architecture on paper before anyone opens an editor — and while you're in there, the naming is a mess. two deliverables: the design doc first, then the rename pass across the package", "purpose": "planning", "secondary": "refactor", "mixed": true, "difficulty": 0.8, "slice": "mixed", "lang": "en"}
|
|||
|
|
{"prompt": "finance asked for a plain-language explanation of how we compute the payout amount, including fees and reserves, and while writing it i realised the reserve calculation in `payouts/amount.go` doesn't match what we tell merchants. do both: the explainer, and then correct whichever side is wrong", "purpose": "writing", "secondary": "debugging", "mixed": true, "difficulty": 0.7, "slice": "mixed", "lang": "en"}
|
|||
|
|
{"prompt": "tengo dos problemas con el exportador de CSV: primero, nadie sabe qué significan las columnas y hace falta documentación para soporte; segundo, tarda 40 minutos con un millón de filas y creo que hay una consulta N+1 escondida. mira las dos cosas", "purpose": "writing", "secondary": "debugging", "mixed": true, "difficulty": 0.65, "slice": "mixed", "lang": "es"}
|
|||
|
|
{"prompt": "`services/settlement/` has a `utils.py` that's become a junk drawer — 40 functions, no theme. split it along actual responsibilities, and once that's done i want the module docstrings to actually describe the new layout", "purpose": "refactor", "secondary": "writing", "mixed": true, "difficulty": 0.55, "slice": "mixed", "lang": "en"}
|
|||
|
|
{"prompt": "customers on the merchant dashboard see payout amounts flicker between the cached and fresh value for about a second. i suspect the SWR key, but i also want the loading behaviour on that whole screen rethought so it stops happening in general", "purpose": "debugging", "secondary": "frontendImpl", "mixed": true, "difficulty": 0.6, "slice": "mixed", "lang": "en"}
|
|||
|
|
{"prompt": "since thursday the nightly dbt run fails about half the time on `fct_payments` with a duplicate key, and it started right after the incremental change went in. work out what's actually duplicating, then put a test in the model so it can't happen silently again", "purpose": "debugging", "secondary": "backendImpl", "mixed": true, "difficulty": 0.7, "slice": "mixed", "lang": "en"}
|
|||
|
|
{"prompt": "il y a deux composants `MoneyInput` dans le repo, un dans `packages/ui` et un dans l'app checkout, et ils gèrent les décimales différemment. garde-en un seul, et corrige au passage le padding qui saute sur mobile", "purpose": "refactor", "secondary": "frontendImpl", "mixed": true, "difficulty": 0.5, "slice": "mixed", "lang": "fr"}
|
|||
|
|
{"prompt": "`X-Merchant-Id` is accepted on six endpoints and ignored on the rest, which is confusing enough that partners get it wrong constantly. decide what the right behaviour is and write it up, then make the handlers consistent", "purpose": "planning", "secondary": "backendImpl", "mixed": true, "difficulty": 0.65, "slice": "mixed", "lang": "en"}
|
|||
|
|
{"prompt": "settlement batch size is a magic 500 in four files. bump it to 2000 everywhere and note the change in the runbook so on-call isn't surprised", "purpose": "quickFix", "secondary": "writing", "mixed": true, "difficulty": 0.3, "slice": "mixed", "lang": "en"}
|
|||
|
|
{"prompt": "admin refund modal still says \"Refund order\" when it's a partial. change the copy to reflect the amount, and update the help-centre article that shows the old screenshot", "purpose": "quickFix", "secondary": "writing", "mixed": true, "difficulty": 0.25, "slice": "mixed", "lang": "en"}
|
|||
|
|
{"prompt": "we've been asked to support offline payments on the POS terminals, which means queueing captures on device and reconciling when the network comes back. i have no idea how we handle a capture that expires while queued, or a refund issued against a capture that hasn't reached us yet. i want the whole flow reasoned through — device state machine, server-side dedupe, what the merchant sees in the dashboard while things are pending — before we commit to a shape", "purpose": "planning", "secondary": null, "mixed": false, "difficulty": 0.9, "slice": "core", "lang": "en"}
|
|||
|
|
{"prompt": "honestly the biggest problem with our data platform is that nobody knows which tables are canonical. there are three `orders` tables in two schemas, one of them is a view over another, and the ML team reads a fourth one that a contractor built in 2023. i want a plan for consolidating this: what we keep, what we deprecate, how we migrate the readers, and how we stop it happening again", "purpose": "planning", "secondary": null, "mixed": false, "difficulty": 0.85, "slice": "core", "lang": "en"}
|
|||
|
|
{"prompt": "firmware team wants over-the-air updates delivered in waves rather than all at once, with automatic halt if the failure rate crosses a threshold. we have 30k devices on flaky rural links, no device-side telemetry beyond a heartbeat, and no way to roll back once slot B is confirmed. what does a safe rollout system look like here, and what has to exist before we can even start", "purpose": "planning", "secondary": null, "mixed": false, "difficulty": 0.9, "slice": "core", "lang": "en"}
|
|||
|
|
{"prompt": "engineering handbook has nothing about how we handle money in code and every new hire asks the same questions — cents vs decimals, where rounding happens, why the go service uses int64 and python uses Decimal, what to do about currencies with three decimal places. i'd like a proper page on it with examples from our own codebase", "purpose": "writing", "secondary": null, "mixed": false, "difficulty": 0.5, "slice": "core", "lang": "en"}
|
|||
|
|
{"prompt": "public API changelog has been a bulleted list of git commits for a year and partners have told us politely that it's useless. rewrite the last three months of it the way stripe does theirs — what changed, who it affects, what you need to do, with dates and version markers. the raw commits are in `CHANGELOG-raw.md`", "purpose": "writing", "secondary": null, "mixed": false, "difficulty": 0.55, "slice": "core", "lang": "en"}
|
|||
|
|
{"prompt": "we're deprecating the v1 payouts endpoints in january and i need the comms package: the deprecation notice for the docs site, the email to affected merchants, the response header we'll add, and a short internal note about what support should say when someone calls. tone should be apologetic but firm about the date", "purpose": "writing", "secondary": null, "mixed": false, "difficulty": 0.55, "slice": "boundary", "lang": "en"}
|
|||
|
|
{"prompt": "i've been asked to summarise, for the security review board, exactly what data crosses the boundary between our app servers and the gateway, in what direction, and how long we retain each field. i can read the code but writing this in a form a non-engineer reviewer will accept is the hard part", "purpose": "writing", "secondary": null, "mixed": false, "difficulty": 0.6, "slice": "boundary", "lang": "en"}
|
|||
|
|
{"prompt": "nobody on the team can explain how the fraud score gets into the checkout decision, including the person who wrote it. i want to understand the whole path: what features are computed where, which service calls the model, what happens when the model times out, and whether the fallback is a hard-coded threshold or something smarter", "purpose": "review", "secondary": null, "mixed": false, "difficulty": 0.7, "slice": "core", "lang": "en"}
|
|||
|
|
{"prompt": "two engineers are arguing about whether our webhook delivery is at-least-once or effectively at-most-once given how the worker acks. rather than take sides i'd like someone to actually trace the code path from event write through delivery and ack, and say plainly which it is and where the gap is", "purpose": "review", "secondary": null, "mixed": false, "difficulty": 0.7, "slice": "boundary", "lang": "en"}
|
|||
|
|
{"prompt": "before the pen test next month, go over how we authenticate merchant API calls end to end — key issuance, storage, the scope check middleware, rotation, and what happens with a revoked key that's already in flight. i'm not asking for changes yet, i want to know where we stand", "purpose": "review", "secondary": null, "mixed": false, "difficulty": 0.75, "slice": "boundary", "lang": "en"}
|
|||
|
|
{"prompt": "src/sync/reconcile.ts is 900 lines and does fetching, diffing, conflict resolution and persistence in one file. no behaviour should change, but i want it in modules that a new person could navigate, with the conflict rules isolated enough that they're testable on their own", "purpose": "refactor", "secondary": null, "mixed": false, "difficulty": 0.7, "slice": "core", "lang": "en"}
|
|||
|
|
{"prompt": "every service in the monorepo has its own hand-rolled config loading — env vars in some, a yaml file in others, and the python one reads both plus a json blob from consul. i'd like one approach across all of them, same values resolved the same way, and no service changing behaviour as a result", "purpose": "refactor", "secondary": null, "mixed": false, "difficulty": 0.75, "slice": "boundary", "lang": "en"}
|
|||
|
|
{"prompt": "dependency situation in the settlement worker is grim: database handle, gateway client, metrics recorder and feature-flag client all reached through package-level singletons, which is why it's untestable. thread them through as dependencies instead without changing what the worker does", "purpose": "refactor", "secondary": null, "mixed": false, "difficulty": 0.65, "slice": "core", "lang": "en"}
|
|||
|
|
{"prompt": "device registry needs a bulk enrolment path: operators upload a CSV of serial numbers and MAC addresses, we mint certs for each, and the whole thing has to be resumable because they upload 20k rows over a hotel wifi connection. postgres and a worker queue are fine, no new infra", "purpose": "backendImpl", "secondary": null, "mixed": false, "difficulty": 0.7, "slice": "boundary", "lang": "en"}
|
|||
|
|
{"prompt": "chip radius should be 4px not 9999px", "purpose": "quickFix", "secondary": null, "mixed": false, "difficulty": 0.1, "slice": "boundary", "lang": "en"}
|
|||
|
|
{"prompt": "modal close button sits 2px too high", "purpose": "quickFix", "secondary": null, "mixed": false, "difficulty": 0.1, "slice": "boundary", "lang": "en"}
|
|||
|
|
{"prompt": "console.log left in the payment form", "purpose": "quickFix", "secondary": null, "mixed": false, "difficulty": 0.1, "slice": "core", "lang": "en"}
|
|||
|
|
{"prompt": "receipt footer has last year's address", "purpose": "quickFix", "secondary": null, "mixed": false, "difficulty": 0.1, "slice": "core", "lang": "en"}
|
|||
|
|
{"prompt": "\"recieve\" on the billing empty state", "purpose": "quickFix", "secondary": null, "mixed": false, "difficulty": 0.1, "slice": "core", "lang": "en"}
|
|||
|
|
{"prompt": "turn split_tender on in staging", "purpose": "quickFix", "secondary": null, "mixed": false, "difficulty": 0.15, "slice": "core", "lang": "en"}
|
|||
|
|
{"prompt": "webhook timeout 5s -> 15s", "purpose": "quickFix", "secondary": null, "mixed": false, "difficulty": 0.1, "slice": "core", "lang": "en"}
|
|||
|
|
{"prompt": "pin dbt-core to 1.7.9 in CI", "purpose": "quickFix", "secondary": null, "mixed": false, "difficulty": 0.15, "slice": "boundary", "lang": "en"}
|
|||
|
|
{"prompt": "CHANGELOG date says 2025, should be 2026", "purpose": "quickFix", "secondary": null, "mixed": false, "difficulty": 0.1, "slice": "boundary", "lang": "en"}
|
|||
|
|
{"prompt": "raise the payout page size to 100", "purpose": "quickFix", "secondary": null, "mixed": false, "difficulty": 0.15, "slice": "boundary", "lang": "en"}
|
|||
|
|
{"prompt": "das Retry-Limit auf 5 setzen, bitte", "purpose": "quickFix", "secondary": null, "mixed": false, "difficulty": 0.15, "slice": "boundary", "lang": "de"}
|
|||
|
|
{"prompt": "flag icons next to the currency codes", "purpose": "frontendImpl", "secondary": null, "mixed": false, "difficulty": 0.3, "slice": "core", "lang": "en"}
|
|||
|
|
{"prompt": "empty cart art above the fold on mobile", "purpose": "frontendImpl", "secondary": null, "mixed": false, "difficulty": 0.25, "slice": "core", "lang": "en"}
|
|||
|
|
{"prompt": "disable bulk refund when nothing's selected", "purpose": "frontendImpl", "secondary": null, "mixed": false, "difficulty": 0.2, "slice": "core", "lang": "en"}
|
|||
|
|
{"prompt": "pricing page hover feels sluggish", "purpose": "frontendImpl", "secondary": null, "mixed": false, "difficulty": 0.3, "slice": "core", "lang": "en"}
|
|||
|
|
{"prompt": "sticky header on the orders list", "purpose": "frontendImpl", "secondary": null, "mixed": false, "difficulty": 0.3, "slice": "core", "lang": "en"}
|
|||
|
|
{"prompt": "toast should slide, not fade", "purpose": "frontendImpl", "secondary": null, "mixed": false, "difficulty": 0.25, "slice": "core", "lang": "en"}
|
|||
|
|
{"prompt": "tighten the mobile card gap to 8px", "purpose": "frontendImpl", "secondary": null, "mixed": false, "difficulty": 0.15, "slice": "boundary", "lang": "en"}
|
|||
|
|
{"prompt": "spinner flashes for 40ms, looks broken", "purpose": "frontendImpl", "secondary": null, "mixed": false, "difficulty": 0.3, "slice": "boundary", "lang": "en"}
|
|||
|
|
{"prompt": "failed chip amber with an icon", "purpose": "frontendImpl", "secondary": null, "mixed": false, "difficulty": 0.3, "slice": "boundary", "lang": "en"}
|
|||
|
|
{"prompt": "`TxnCtx` should be `PaymentContext`", "purpose": "refactor", "secondary": null, "mixed": false, "difficulty": 0.3, "slice": "boundary", "lang": "en"}
|
|||
|
|
{"prompt": "one money helper, not three", "purpose": "refactor", "secondary": null, "mixed": false, "difficulty": 0.4, "slice": "boundary", "lang": "en"}
|
|||
|
|
{"prompt": "pull the promo logic out of `buildOrderDraft`", "purpose": "refactor", "secondary": null, "mixed": false, "difficulty": 0.45, "slice": "core", "lang": "en"}
|
|||
|
|
{"prompt": "kill the barrel file in packages/ui", "purpose": "refactor", "secondary": null, "mixed": false, "difficulty": 0.4, "slice": "core", "lang": "en"}
|
|||
|
|
{"prompt": "`amt` -> `amountCents` across the go service", "purpose": "refactor", "secondary": null, "mixed": false, "difficulty": 0.3, "slice": "boundary", "lang": "en"}
|
|||
|
|
{"prompt": "die Test-Helper gehören in ein eigenes Paket", "purpose": "refactor", "secondary": null, "mixed": false, "difficulty": 0.4, "slice": "core", "lang": "de"}
|
|||
|
|
{"prompt": "split settlement/utils.py by responsibility", "purpose": "refactor", "secondary": null, "mixed": false, "difficulty": 0.5, "slice": "core", "lang": "en"}
|
|||
|
|
{"prompt": "inline the single-use `formatChip` helper", "purpose": "refactor", "secondary": null, "mixed": false, "difficulty": 0.2, "slice": "boundary", "lang": "en"}
|
|||
|
|
{"prompt": "who calls `LedgerBridge.post` these days?", "purpose": "review", "secondary": null, "mixed": false, "difficulty": 0.35, "slice": "core", "lang": "en"}
|
|||
|
|
{"prompt": "is our webhook signature check constant-time?", "purpose": "review", "secondary": null, "mixed": false, "difficulty": 0.5, "slice": "core", "lang": "en"}
|
|||
|
|
{"prompt": "what does `reconcileLedger` do on a partial?", "purpose": "review", "secondary": null, "mixed": false, "difficulty": 0.5, "slice": "boundary", "lang": "en"}
|
|||
|
|
{"prompt": "safe to run two settlement workers?", "purpose": "review", "secondary": null, "mixed": false, "difficulty": 0.5, "slice": "core", "lang": "en"}
|
|||
|
|
{"prompt": "¿es seguro exponer `failure_code` a los partners?", "purpose": "review", "secondary": null, "mixed": false, "difficulty": 0.45, "slice": "boundary", "lang": "es"}
|
|||
|
|
{"prompt": "PR description for the batching change", "purpose": "writing", "secondary": null, "mixed": false, "difficulty": 0.25, "slice": "core", "lang": "en"}
|
|||
|
|
{"prompt": "docstring for `next_payout_date`, please", "purpose": "writing", "secondary": null, "mixed": false, "difficulty": 0.25, "slice": "boundary", "lang": "en"}
|
|||
|
|
{"prompt": "one-paragraph summary of the ledger ADR", "purpose": "writing", "secondary": null, "mixed": false, "difficulty": 0.3, "slice": "boundary", "lang": "en"}
|
|||
|
|
{"prompt": "release notes für Firmware 4.2, bitte kurz", "purpose": "writing", "secondary": null, "mixed": false, "difficulty": 0.35, "slice": "boundary", "lang": "de"}
|
|||
|
|
{"prompt": "design doc for per-merchant limits", "purpose": "planning", "secondary": null, "mixed": false, "difficulty": 0.7, "slice": "core", "lang": "en"}
|
|||
|
|
{"prompt": "milestones for the POS offline work", "purpose": "planning", "secondary": null, "mixed": false, "difficulty": 0.7, "slice": "boundary", "lang": "en"}
|
|||
|
|
{"prompt": "`/v1/devices/{id}/certs` rotate endpoint, go", "purpose": "backendImpl", "secondary": null, "mixed": false, "difficulty": 0.5, "slice": "core", "lang": "en"}
|
|||
|
|
{"prompt": "nightly job to expire stale carts", "purpose": "backendImpl", "secondary": null, "mixed": false, "difficulty": 0.4, "slice": "core", "lang": "en"}
|
|||
|
|
{"prompt": "cursor pagination on the disputes list", "purpose": "backendImpl", "secondary": null, "mixed": false, "difficulty": 0.45, "slice": "boundary", "lang": "en"}
|
|||
|
|
{"prompt": "dedupe the money helpers, then note it in the changelog", "purpose": "refactor", "secondary": "writing", "mixed": true, "difficulty": 0.35, "slice": "mixed", "lang": "en"}
|
|||
|
|
{"prompt": "scope out the retry redesign, then land step one", "purpose": "planning", "secondary": "backendImpl", "mixed": true, "difficulty": 0.6, "slice": "mixed", "lang": "en"}
|
|||
|
|
{"prompt": "the usual, for the payouts screen", "purpose": "frontendImpl", "secondary": null, "mixed": false, "difficulty": 0.4, "slice": "vague-eval", "lang": "en"}
|
|||
|
|
{"prompt": "pick up the reconciliation thing", "purpose": "backendImpl", "secondary": null, "mixed": false, "difficulty": 0.45, "slice": "vague-eval", "lang": "en"}
|
|||
|
|
{"prompt": "tidy", "purpose": "refactor", "secondary": null, "mixed": false, "difficulty": 0.3, "slice": "vague-eval", "lang": "en"}
|
|||
|
|
{"prompt": "otra vez lo del checkout", "purpose": "debugging", "secondary": null, "mixed": false, "difficulty": 0.45, "slice": "vague-eval", "lang": "es"}
|
|||
|
|
{"prompt": "can you look at the thing", "purpose": "review", "secondary": null, "mixed": false, "difficulty": 0.4, "slice": "vague-eval", "lang": "en"}
|
|||
|
|
{"prompt": "ship the rest of it", "purpose": "backendImpl", "secondary": null, "mixed": false, "difficulty": 0.5, "slice": "vague-eval", "lang": "en"}
|
|||
|
|
{"prompt": "設定画面のあれ、直しておいて", "purpose": "frontendImpl", "secondary": null, "mixed": false, "difficulty": 0.4, "slice": "vague-eval", "lang": "ja"}
|
|||
|
|
{"prompt": "payout CSV header says Amount, make it Amount (cents)", "purpose": "quickFix", "secondary": null, "mixed": false, "difficulty": 0.1, "slice": "core", "lang": "en"}
|
|||
|
|
{"prompt": "sandbox base URL still points at api-test", "purpose": "quickFix", "secondary": null, "mixed": false, "difficulty": 0.15, "slice": "boundary", "lang": "en"}
|
|||
|
|
{"prompt": "drop the unused `legacy_gc` column", "purpose": "quickFix", "secondary": null, "mixed": false, "difficulty": 0.2, "slice": "boundary", "lang": "en"}
|
|||
|
|
{"prompt": "merchant avatar should be circular", "purpose": "frontendImpl", "secondary": null, "mixed": false, "difficulty": 0.15, "slice": "core", "lang": "en"}
|
|||
|
|
{"prompt": "amount column right-aligned, monospaced", "purpose": "frontendImpl", "secondary": null, "mixed": false, "difficulty": 0.2, "slice": "core", "lang": "en"}
|
|||
|
|
{"prompt": "keyboard focus ring is invisible on dark", "purpose": "frontendImpl", "secondary": null, "mixed": false, "difficulty": 0.3, "slice": "boundary", "lang": "en"}
|
|||
|
|
{"prompt": "payments team wiki has a page called \"How refunds work\" that three different people have edited in three different directions, so it now contradicts itself twice — once about whether partial refunds can exceed the captured amount and once about the 90-day window. sort out what's actually true from the code and rewrite the page so it reads like one person wrote it", "purpose": "writing", "secondary": null, "mixed": false, "difficulty": 0.55, "slice": "core", "lang": "en"}
|
|||
|
|
{"prompt": "new engineers keep asking why there are two settlement services, and the honest answer is that one was a migration that never finished. i'd like that written down somewhere permanent — what each one owns today, which one is authoritative for which merchant cohort, and the fact that nobody should add features to the old one", "purpose": "writing", "secondary": null, "mixed": false, "difficulty": 0.5, "slice": "core", "lang": "en"}
|
|||
|
|
{"prompt": "support is drowning in \"where is my payout\" tickets and half of them are answered by explaining the two-day settlement delay. give me a help-centre article that covers the normal timeline, what a weekend or bank holiday does to it, why a payout can show as pending for longer, and when they should actually escalate to us", "purpose": "writing", "secondary": null, "mixed": false, "difficulty": 0.45, "slice": "boundary", "lang": "en"}
|
|||
|
|
{"prompt": "there's a class in the checkout service called `OrderCoordinator` that everyone is afraid of, about 600 lines, and it's the last thing standing between us and deleting the old cart module. read it and tell me what it's actually responsible for, what state it owns, and which of its methods are dead code — i'm not asking for changes yet", "purpose": "review", "secondary": null, "mixed": false, "difficulty": 0.65, "slice": "core", "lang": "en"}
|
|||
|
|
{"prompt": "a junior on the team opened a PR that adds caching to the merchant lookup and it's got 40 files in it because they also reformatted everything. i can't see the actual change through the noise. tell me what the substantive change is, whether the cache invalidation is sound, and what i should push back on", "purpose": "review", "secondary": null, "mixed": false, "difficulty": 0.6, "slice": "boundary", "lang": "en"}
|
|||
|
|
{"prompt": "someone on the data team wants to know whether our `fct_payments` model can be trusted for revenue reporting, given that it's incremental and keyed on payment_id with a merge strategy. i'd like an honest read of the model and its tests, including what happens when a payment row is updated after the incremental window has passed", "purpose": "review", "secondary": null, "mixed": false, "difficulty": 0.7, "slice": "boundary", "lang": "en"}
|
|||
|
|
{"prompt": "error handling in the payments package is a mix of sentinel errors, wrapped errors with %w, and a custom `PaymentError` type that swallows the cause about half the time. i want one convention applied throughout, callers updated, and identical behaviour at the API boundary — same status codes, same response bodies", "purpose": "refactor", "secondary": null, "mixed": false, "difficulty": 0.7, "slice": "core", "lang": "en"}
|
|||
|
|
{"prompt": "our integration tests spin up the whole stack through a 300-line bash script that predates docker compose, and every new test copies a chunk of it. i'd like the setup expressed once, in something maintainable, with the tests themselves unchanged — they should pass exactly as they do now, just faster to reason about", "purpose": "refactor", "secondary": null, "mixed": false, "difficulty": 0.65, "slice": "boundary", "lang": "en"}
|
|||
|
|
{"prompt": "analytics team wants event-level payment data in the warehouse within five minutes instead of the current nightly batch, and my instinct is CDC off the postgres WAL, but i haven't thought through schema evolution, backfill, or what we do when the consumer falls behind. talk me through the options and what you'd pick for a team that has no streaming experience", "purpose": "planning", "secondary": null, "mixed": false, "difficulty": 0.85, "slice": "boundary", "lang": "en"}
|
|||
|
|
{"prompt": "roughly once a day a merchant's dashboard shows a payout that then disappears on refresh, and support has three screenshots proving it. the API returns the payout from one replica and not from another as far as i can tell, but our reads are supposed to be routed to the primary for that endpoint. no errors anywhere in the logs", "purpose": "debugging", "secondary": null, "mixed": false, "difficulty": 0.8, "slice": "core", "lang": "en"}
|
|||
|
|
{"prompt": "invoice preview screen renders server-side HTML in a webview and it's slow, janky on scroll, and completely inaccessible to VoiceOver. rebuild it as a native SwiftUI view backed by the same invoice model, matching the existing PDF layout closely enough that finance won't notice, including the itemised tax rows and the footer", "purpose": "frontendImpl", "secondary": null, "mixed": false, "difficulty": 0.75, "slice": "core", "lang": "en"}
|
|||
|
|
{"prompt": "we need an internal endpoint that support can hit to force-close a settlement batch early, with a reason and an actor recorded, guarded so it can only run on batches older than an hour and never on one that's mid-transfer. it should return the resulting batch state and the ids of anything it skipped", "purpose": "backendImpl", "secondary": null, "mixed": false, "difficulty": 0.6, "slice": "core", "lang": "en"}
|
|||
|
|
{"prompt": "telemetry ingest endpoint currently accepts one reading per request and devices batch by sending 500 requests in a burst. add a batch endpoint that takes up to 1000 readings, rejects the whole batch if any reading fails validation, dedupes on (device_id, captured_at) against the last hour, and returns per-reading status", "purpose": "backendImpl", "secondary": null, "mixed": false, "difficulty": 0.65, "slice": "boundary", "lang": "en"}
|