{"prompt": "a consultant reviewed our compose code and left a list of \"performance issues\" that i'm not sure i believe — unstable lambdas, missing keys in lazy lists, derivedStateOf everywhere, and a claim that our whole schedule screen recomposes on every scroll tick. check the actual code and tell me which of those are real for us", "purpose": "review", "secondary": null, "mixed": false, "difficulty": 0.7, "slice": "boundary", "lang": "en"}
{"prompt": "our accessibility story on android is \"we ran the scanner once\". i'd like a plan for getting the booking flow to a state we could defend in a procurement review, and as a first step the slot picker fixed properly — content descriptions, touch targets, focus order, the lot", "purpose": "planning", "secondary": "frontendImpl", "mixed": true, "difficulty": 0.7, "slice": "mixed", "lang": "en"}
{"prompt": "the retry delays array in constants.ts goes 1s 2s 4s 8s but the client only ever reads the first two, wire the rest up", "purpose": "quickFix", "secondary": null, "mixed": false, "difficulty": 0.3, "slice": "boundary", "lang": "en"}
{"prompt": "appointment reminders stopped going out saturday night, here's the sidekiq log around then:\n\n2026-07-25T22:58:01.114Z pid=41 tid=9x8 class=ReminderJob jid=8f2b1c INFO: start\n2026-07-25T22:58:01.882Z pid=41 tid=9x8 class=ReminderJob jid=8f2b1c INFO: 412 reminders queued\n2026-07-25T23:00:00.004Z pid=41 tid=a02 class=ReminderJob jid=91cc40 INFO: start\n2026-07-25T23:00:00.119Z pid=41 tid=a02 class=ReminderJob jid=91cc40 INFO: 0 reminders queued\n2026-07-25T23:02:00.006Z pid=41 tid=b71 class=ReminderJob jid=aa1902 INFO: start\n2026-07-25T23:02:00.101Z pid=41 tid=b71 class=ReminderJob jid=aa1902 INFO: 0 reminders queued\n2026-07-26T00:00:00.008Z pid=41 tid=c19 class=ReminderJob jid=bb7711 INFO: start\n2026-07-26T00:00:00.093Z pid=41 tid=c19 class=ReminderJob jid=bb7711 INFO: 0 reminders queued\n\nno errors, it just decided there was nothing to send", "purpose": "debugging", "secondary": null, "mixed": false, "difficulty": 0.7, "slice": "pasted-context", "lang": "en"}
{"prompt": "we need the waitlist offer job written, here's what product agreed to:\n\n- triggered when an appointment is cancelled or a slot opens through a reschedule\n- eligible entries: same clinic, same day, provider matches or the entry says \"any\", not expired, not already holding an offer\n- FIFO by created_at, one offer at a time, 2-hour acceptance window (configurable per clinic)\n- offer goes out on the patient's preferred channel; if that channel fails, fall back to the other and record it\n- if the window passes, the offer moves to the next eligible entry automatically\n- if nobody accepts within 24 hours, the slot goes back to normal availability and we stop\n- everything must survive a redeploy mid-window\n\nrails, sidekiq, postgres — same patterns as the reminder job", "purpose": "backendImpl", "secondary": null, "mixed": false, "difficulty": 0.7, "slice": "pasted-context", "lang": "en"}
{"prompt": "a mid-size clinic reported that dragging an appointment to a new time occasionally moves a different appointment instead, maybe once a day, and we have no way to reproduce it. the drag layer keys blocks by index in some places and by id in others, which smells, but i can't connect that to what they're seeing", "purpose": "debugging", "secondary": null, "mixed": false, "difficulty": 0.8, "slice": "core", "lang": "en"}
{"prompt": "our error codes are documented nowhere and support guesses; produce the table from `app/errors/` with a human explanation per code", "purpose": "writing", "secondary": null, "mixed": false, "difficulty": 0.45, "slice": "boundary", "lang": "en"}
{"prompt": "the endpoint for cancelling an appointment takes a reason enum that the mobile app doesn't send, so 40% of cancellations are `unspecified`, and product wants that fixed properly rather than defaulted", "purpose": "backendImpl", "secondary": null, "mixed": false, "difficulty": 0.45, "slice": "boundary", "lang": "en"}
{"prompt": "we have to support double-booking because three of our five pilot clinics deliberately overbook for no-show buffer, and our model currently forbids overlapping appointments at the database level with an exclusion constraint. i need to know what changes, how the schedule screen renders it, what the API says when someone books into an occupied slot, and how we let clinics that hate the idea keep the current behaviour", "purpose": "planning", "secondary": null, "mixed": false, "difficulty": 0.85, "slice": "core", "lang": "en"}
{"prompt": "appointment blocks on the week grid are laid out with absolute positioning and magic offsets, so on a 13-inch laptop the 8am row is cut off and on a 4k monitor there's a band of dead space at the bottom. make the grid size to the viewport properly, keeping the existing look at the default zoom", "purpose": "frontendImpl", "secondary": null, "mixed": false, "difficulty": 0.6, "slice": "boundary", "lang": "en"}
{"prompt": "compose theme file, inherited from a contractor. before i extend it for the dark palette i want to know what i'm dealing with:\n\n@Composable\nfun ClinicalTheme(\n    darkTheme: Boolean = isSystemInDarkTheme(),\n    dynamicColor: Boolean = true,\n    content: @Composable () -> Unit\n) {\n    val colorScheme = when {\n        dynamicColor && Build.VERSION.SDK_INT >= Build.VERSION_CODES.S -> {\n            val ctx = LocalContext.current\n            if (darkTheme) dynamicDarkColorScheme(ctx) else dynamicLightColorScheme(ctx)\n        }\n        darkTheme -> DarkColors\n        else -> LightColors\n    }\n    val view = LocalView.current\n    if (!view.isInEditMode) {\n        SideEffect {\n            val window = (view.context as Activity).window\n            window.statusBarColor = colorScheme.primary.toArgb()\n            WindowCompat.getInsetsController(window, view).isAppearanceLightStatusBars = !darkTheme\n        }\n    }\n    MaterialTheme(colorScheme = colorScheme, typography = ClinicalType, content = content)\n}", "purpose": "review", "secondary": null, "mixed": false, "difficulty": 0.5, "slice": "pasted-context", "lang": "en"}
{"prompt": "unity console after the build, the frame time doubled and i think one of these is the culprit:\n\n[Profiler] PlayerLoop 33.4ms\n  ├ Update.ScriptRunBehaviourUpdate 21.8ms\n  │   ├ EnemySpawner.Update() 14.2ms  (GC.Alloc 1.4 MB)\n  │   ├ PathfindingManager.Update() 5.1ms\n  │   └ HUDController.Update() 2.4ms  (GC.Alloc 220 KB)\n  ├ PreLateUpdate.DirectorUpdate 3.1ms\n  └ Render.OpaqueGeometry 7.6ms\n\nWarning: Instantiating 'Bullet(Clone)' 240 times this frame\nWarning: GameObject.FindWithTag called from EnemySpawner.Update()\nWarning: Camera.main accessed 240 times this frame\n[GC] Incremental GC collected 3.2 MB in 8.1ms", "purpose": "debugging", "secondary": null, "mixed": false, "difficulty": 0.65, "slice": "pasted-context", "lang": "en"}
{"prompt": "play console ANR cluster from last week's release, 0.9% of sessions:\n\nANR in io.clinicly.app (io.clinicly.app/.MainActivity)\nPID: 4471\nReason: Input dispatching timed out (Application does not respond)\n\n\"main\" prio=5 tid=1 Blocked\n  | group=\"main\" sCount=1 dsCount=0 flags=1 obj=0x72b9c4d0\n  at io.clinicly.data.SyncCoordinator.awaitIdle(SyncCoordinator.kt:88)\n  - waiting to lock <0x0a11c3f2> (a java.lang.Object) held by thread 42\n  at io.clinicly.data.AppointmentRepository.refresh(AppointmentRepository.kt:214)\n  at io.clinicly.ui.ScheduleViewModel$load$1.invokeSuspend(ScheduleViewModel.kt:66)\n\n\"DefaultDispatcher-worker-3\" prio=5 tid=42 Native\n  at android.database.sqlite.SQLiteConnection.nativeExecuteForChangedRowCount(Native method)\n  at io.clinicly.data.local.AppointmentDao_Impl.upsertAll(AppointmentDao_Impl.java:181)\n\nlocked <0x0a11c3f2>", "purpose": "debugging", "secondary": null, "mixed": false, "difficulty": 0.8, "slice": "pasted-context", "lang": "en"}
{"prompt": "sentry issue, been firing since the timezone work went in:\n\nActiveRecord::StatementInvalid: PG::DatetimeFieldOverflow: ERROR:  date/time field value out of range: \"2026-11-01 02:30:00\"\nHINT:  Perhaps you need a different \"datestyle\" setting.\n\n  app/models/clinic_hours.rb:41:in `slots_for'\n  app/services/appointments/availability.rb:88:in `block in build'\n  app/services/appointments/availability.rb:84:in `each'\n  app/services/appointments/availability.rb:84:in `build'\n  app/controllers/api/v2/availability_controller.rb:19:in `index'\n\n  clinic_id: 4412 (America/Santiago)\n  requested_date: 2026-11-01\n  events: 1,204 in 6 days\n  users affected: 38\n\nonly clinics in a handful of timezones, and always on specific dates", "purpose": "debugging", "secondary": null, "mixed": false, "difficulty": 0.8, "slice": "pasted-context", "lang": "en"}
{"prompt": "gradle keeps failing on CI only, works on my machine and on two other laptops:\n\n> Task :app:kaptGenerateStubsReleaseKotlin FAILED\ne: file:///home/runner/work/clinicly/app/src/main/java/io/clinicly/di/AppModule.kt:44:1 error: [Dagger/DuplicateBindings] io.clinicly.data.Clock is bound multiple times:\n    @Provides @Singleton io.clinicly.data.Clock io.clinicly.di.AppModule.provideClock()\n    @Provides @Singleton io.clinicly.data.Clock io.clinicly.di.TestClockModule.provideClock()\n\nFAILURE: Build failed with an exception.\n* What went wrong:\nExecution failed for task ':app:kaptGenerateStubsReleaseKotlin'.\n> A failure occurred while executing org.jetbrains.kotlin.gradle.internal.KaptExecution\n\n* Try:\n> Run with --stacktrace option to get the stack trace.\n\nBUILD FAILED in 4m 12s", "purpose": "debugging", "secondary": null, "mixed": false, "difficulty": 0.6, "slice": "pasted-context", "lang": "en"}
{"prompt": "PR i'm meant to approve today. it's from someone senior so i want a second opinion before i comment:\n\n@@ -12,6 +12,28 @@ class Appointment < ApplicationRecord\n   belongs_to :clinic\n   belongs_to :patient\n \n+  after_commit :sync_to_calendar, on: [:create, :update]\n+\n+  def sync_to_calendar\n+    CalendarSyncJob.perform_now(id)\n+  rescue => e\n+    Rails.logger.warn(\"calendar sync failed: #{e.message}\")\n+  end\n+\n+  def self.overlapping(clinic_id, range)\n+    where(clinic_id: clinic_id)\n+      .where(\"tstzrange(starts_at, ends_at) && tstzrange(?, ?)\", range.first, range.last)\n+  end\n+\n   scope :upcoming, -> { where(\"starts_at > ?\", Time.current) }\n@@ -41,7 +63,7 @@ class Appointment < ApplicationRecord\n-  validates :starts_at, presence: true\n+  validates :starts_at, presence: true, if: -> { !skip_validation }", "purpose": "review", "secondary": null, "mixed": false, "difficulty": 0.65, "slice": "pasted-context", "lang": "en"}
{"prompt": "das ist unsere Migration für die Mandantentrennung. Bevor wir sie ausführen: hältst du das für sicher?\n\nclass AddClinicScopeToAppointments < ActiveRecord::Migration[7.1]\n  def change\n    add_column :appointments, :clinic_id, :bigint\n    add_index :appointments, :clinic_id, algorithm: :concurrently\n    Appointment.reset_column_information\n    Appointment.find_each do |a|\n      a.update_column(:clinic_id, a.patient.clinic_id)\n    end\n    change_column_null :appointments, :clinic_id, false\n    add_foreign_key :appointments, :clinics\n  end\nend\n\nTabelle hat 22 Millionen Zeilen, Postgres 16, kein Wartungsfenster", "purpose": "review", "secondary": null, "mixed": false, "difficulty": 0.7, "slice": "pasted-context", "lang": "de"}
{"prompt": "changelog time, we ship the android app thursday. commits since 3.4:\n\n* a81f22c feat(schedule): week view swipe gestures\n* 4409ba1 fix(sync): don't drop local edits when the server 409s\n* 77c0e19 fix(a11y): talkback reads slot times correctly now\n* 2b1904d chore: bump compose bom to 2026.06.00\n* 9911aa0 feat(booking): waitlist join from a full day\n* 31de770 perf(schedule): remove recomposition storm on day change\n* cc4102b fix(notifications): reminder deep link opened the wrong appointment\n* 6f2b901 chore: crashlytics ndk symbols upload\n* 0091ac4 fix(login): biometric prompt dismissed on first launch\n\nplay store listing, so friendly and short, no commit hashes", "purpose": "writing", "secondary": null, "mixed": false, "difficulty": 0.35, "slice": "pasted-context", "lang": "en"}
{"prompt": "support macro draft below is terrible and i have to send something today. rewrite it:\n\n\"Hi, Thank you for contacting Clinicly Support. Regarding your issue with appointment reminders not being sent, this is caused by the clinic timezone setting being incorrect in your Clinic Settings page which needs to be set correctly by an administrator of your clinic account. Please navigate to Settings > Clinic > Regional and select the correct timezone from the dropdown list and then save the changes and reminders will be sent correctly going forward. Note that appointments already scheduled will not be updated retroactively. Thank you for your patience. Best regards, Clinicly Support Team\"\n\nkeep the facts, lose the bureaucracy, and add the bit about existing appointments needing a manual resend", "purpose": "writing", "secondary": null, "mixed": false, "difficulty": 0.35, "slice": "pasted-context", "lang": "en"}
{"prompt": "app crashes on API 34 the moment you open notifications settings, and the fix is probably one line:\n\njava.lang.SecurityException: One of RECEIVER_EXPORTED or RECEIVER_NOT_EXPORTED should be specified when a receiver isn't being registered exclusively for system broadcasts\n\tat android.os.Parcel.createExceptionOrNull(Parcel.java:3057)\n\tat android.app.ContextImpl.registerReceiverInternal(ContextImpl.java:1826)\n\tat io.clinicly.notifications.ReminderSettingsFragment.onStart(ReminderSettingsFragment.kt:44)\n\ntargetSdk went from 33 to 34 in the last release", "purpose": "quickFix", "secondary": null, "mixed": false, "difficulty": 0.25, "slice": "pasted-context", "lang": "en"}
{"prompt": "HUD prefab is a mess of anchors and i've been asked to make it work on ultrawide and on steam deck. current layout values:\n\nCanvas: Scale With Screen Size, ref 1920x1080, match 0.5\nHealthBar: anchor min (0,1) max (0,1), pos (120, -60), size (240, 24)\nAmmoCounter: anchor min (1,1) max (1,1), pos (-140, -60), size (180, 40)\nMinimap: anchor min (1,0) max (1,0), pos (-160, 160), size (280, 280)\nWaveBanner: anchor min (0.5,1) max (0.5,1), pos (0, -40), size (600, 80)\nBossHealth: anchor min (0.5,1) max (0.5,1), pos (0, -140), size (900, 32)\n\nat 21:9 the minimap sits under the bezel on deck and the boss bar overlaps the wave banner", "purpose": "frontendImpl", "secondary": null, "mixed": false, "difficulty": 0.55, "slice": "pasted-context", "lang": "en"}
{"prompt": "clinic phone number missing from the receipt", "purpose": "quickFix", "secondary": null, "mixed": false, "difficulty": 0.1, "slice": "core", "lang": "en"}
{"prompt": "waitlist window default to 90 minutes", "purpose": "quickFix", "secondary": null, "mixed": false, "difficulty": 0.15, "slice": "core", "lang": "en"}
{"prompt": "one slot-eligibility function, not three", "purpose": "refactor", "secondary": null, "mixed": false, "difficulty": 0.45, "slice": "core", "lang": "en"}
{"prompt": "kdoc on SyncCoordinator, please", "purpose": "writing", "secondary": null, "mixed": false, "difficulty": 0.25, "slice": "core", "lang": "en"}
{"prompt": "is our tenant scoping actually enforced?", "purpose": "review", "secondary": null, "mixed": false, "difficulty": 0.6, "slice": "core", "lang": "en"}
{"prompt": "schedule thing again", "purpose": "debugging", "secondary": null, "mixed": false, "difficulty": 0.45, "slice": "vague-eval", "lang": "en"}
{"prompt": "there is no document anywhere that says what happens to a patient's data when a clinic leaves us, and both legal and two prospects have now asked. from the code and the ops runbooks, work out what actually happens today — export format, deletion timeline, what stays in backups — and write it up as a page we can hand to a customer without lawyering it first", "purpose": "writing", "secondary": null, "mixed": false, "difficulty": 0.6, "slice": "core", "lang": "en"}
{"prompt": "i'd like to understand how room assignment picks a room when two appointments could use the same one", "purpose": "review", "secondary": null, "mixed": false, "difficulty": 0.5, "slice": "core", "lang": "en"}
{"prompt": "compose app is one gradle module and builds take four minutes on the CI runners, which is starting to hurt. modularising is the obvious answer but i've seen it go badly — circular dependencies, dagger components everywhere, nobody agreeing where things live. what would a sane module structure look like for an app this size, and in what order would you carve it up", "purpose": "planning", "secondary": null, "mixed": false, "difficulty": 0.8, "slice": "boundary", "lang": "en"}
{"prompt": "logcat from a tester's Pixel, the appointment list just goes blank:\n\nE/AndroidRuntime( 8812): FATAL EXCEPTION: main\nE/AndroidRuntime( 8812): Process: io.clinicly.app, PID: 8812\nE/AndroidRuntime( 8812): java.lang.IllegalStateException: Reading a state that was created after the snapshot was taken or in a snapshot that has not yet been applied\nE/AndroidRuntime( 8812): \tat androidx.compose.runtime.snapshots.SnapshotKt.readError(Snapshot.kt:2371)\nE/AndroidRuntime( 8812): \tat androidx.compose.runtime.snapshots.SnapshotStateList.get(SnapshotStateList.kt:88)\nE/AndroidRuntime( 8812): \tat io.clinicly.schedule.DayColumnKt$DayColumn$1$2.invoke(DayColumn.kt:141)\nE/AndroidRuntime( 8812): \tat androidx.compose.foundation.lazy.LazyListKt.items(LazyList.kt:212)\nE/AndroidRuntime( 8812): \tat io.clinicly.schedule.ScheduleScreenKt.ScheduleScreen(ScheduleScreen.kt:88)\nE/AndroidRuntime( 8812): \tat io.clinicly.MainActivity$onCreate$1.invoke(MainActivity.kt:52)\n\nonly reproduces after you rotate while the refresh is in flight", "purpose": "debugging", "secondary": null, "mixed": false, "difficulty": 0.75, "slice": "pasted-context", "lang": "en"}
{"prompt": "rspec is red on main and the diff that broke it is three commits back somewhere:\n\nFailures:\n\n  1) Appointments::Reschedule moves the slot and notifies the patient\n     Failure/Error: expect(appointment.reload.starts_at).to eq(new_slot.starts_at)\n\n       expected: 2026-08-03 14:00:00.000000000 +0000\n            got: 2026-08-03 13:00:00.000000000 +0000\n\n       (compared using ==)\n     # ./spec/services/appointments/reschedule_spec.rb:41:in `block (2 levels)'\n\n  2) Appointments::Reschedule refuses a slot outside clinic hours\n     Failure/Error: expect { subject }.to raise_error(OutsideClinicHours)\n       expected OutsideClinicHours, got #<ActiveRecord::RecordInvalid: Validation failed: Starts at must be in the future>\n     # ./spec/services/appointments/reschedule_spec.rb:63:in `block (2 levels)'\n\nFinished in 1 minute 12.4 seconds (files took 6.1 seconds to load)\n412 examples, 2 failures\n\nboth of these passed on friday and nobody touched the scheduler", "purpose": "debugging", "secondary": null, "mixed": false, "difficulty": 0.7, "slice": "pasted-context", "lang": "en"}
{"prompt": "ログにこれが延々と出ていて、予約の同期が止まります。原因が分かりません:\n\nW/SyncWorker(3312): retrying sync attempt=4 delay=8000ms\nW/SyncWorker(3312): retrying sync attempt=5 delay=16000ms\nE/SyncWorker(3312): sync failed: retrofit2.HttpException: HTTP 409 Conflict\nE/SyncWorker(3312): \tat io.clinicly.net.ApiClient$sync$2.invokeSuspend(ApiClient.kt:141)\nE/SyncWorker(3312): \tat kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:104)\nI/WM-WorkerWrapper(3312): Worker result RETRY for Work [ id=8f21-c0aa-4771, tags={ sync } ]\nI/WM-Processor(3312): Processor stopping foreground work sync\nW/SyncWorker(3312): retrying sync attempt=6 delay=32000ms\n\nサーバー側のログでは 409 は「revision mismatch」と書いてあります", "purpose": "debugging", "secondary": null, "mixed": false, "difficulty": 0.7, "slice": "pasted-context", "lang": "ja"}
{"prompt": "crash reporter groups these together but the stacks look unrelated to me:\n\nNullReferenceException: Object reference not set to an instance of an object\n  at Clinicly.Game.WaveDirector.OnEnemyKilled (Clinicly.Game.Enemy e) [0x00021] in /Assets/Scripts/WaveDirector.cs:118\n  at Clinicly.Game.Enemy.Die () [0x0000c] in /Assets/Scripts/Enemy.cs:88\n  at Clinicly.Game.DamageSystem.Apply (Clinicly.Game.Enemy target, System.Single amount) [0x00044] in /Assets/Scripts/DamageSystem.cs:52\n  at Clinicly.Game.Bullet.OnTriggerEnter (UnityEngine.Collider other) [0x0001a] in /Assets/Scripts/Bullet.cs:41\n\nMissingReferenceException: The object of type 'Transform' has been destroyed but you are still trying to access it.\n  at UnityEngine.Transform.get_position ()\n  at Clinicly.Game.HomingBullet.FixedUpdate () [0x00010] in /Assets/Scripts/HomingBullet.cs:33\n\n480 users, all on the wave-12 boss", "purpose": "debugging", "secondary": null, "mixed": false, "difficulty": 0.7, "slice": "pasted-context", "lang": "en"}
{"prompt": "detekt and the runtime disagree about this coroutine scope, and users see duplicate bookings:\n\nclass BookingViewModel(\n    private val repo: AppointmentRepository,\n    private val scope: CoroutineScope = CoroutineScope(SupervisorJob() + Dispatchers.Default)\n) : ViewModel() {\n\n    fun book(slotId: String) {\n        scope.launch {\n            val result = repo.book(slotId)\n            _state.update { it.copy(booked = result) }\n        }\n    }\n\n    override fun onCleared() {\n        super.onCleared()\n    }\n}\n\ntapping book twice quickly creates two appointments about 30% of the time, and rotating the phone mid-book does it every time", "purpose": "debugging", "secondary": null, "mixed": false, "difficulty": 0.7, "slice": "pasted-context", "lang": "en"}
{"prompt": "security questionnaire from a hospital customer came back with this section and i need to answer honestly:\n\n7.3 — Does the application enforce role-based access control at the API layer, and are authorization decisions logged?\n7.4 — Are patient records segregated per tenant at the database level, and if so by what mechanism?\n7.5 — Describe session invalidation on password change and on administrative account suspension.\n7.6 — Are audit logs immutable and retained for at least six years?\n7.9 — Can a clinic administrator export all data for a single patient on request, and how long does that take?\n\ngo through our rails app and tell me what's actually true for each of these", "purpose": "review", "secondary": null, "mixed": false, "difficulty": 0.75, "slice": "pasted-context", "lang": "en"}
{"prompt": "someone's proposed this ECS refactor in the game repo and i can't tell if it's an improvement or just fashion:\n\n// current\npublic class Enemy : MonoBehaviour {\n    public float speed; public int hp;\n    void Update() { transform.position += dir * speed * Time.deltaTime; }\n}\n\n// proposed\npublic struct Position : IComponentData { public float3 Value; }\npublic struct Velocity : IComponentData { public float3 Value; }\npublic partial struct MoveSystem : ISystem {\n    public void OnUpdate(ref SystemState state) {\n        foreach (var (pos, vel) in SystemAPI.Query<RefRW<Position>, RefRO<Velocity>>())\n            pos.ValueRW.Value += vel.ValueRO.Value * SystemAPI.Time.DeltaTime;\n    }\n}\n\nwe have maybe 300 enemies on screen at peak and a two-person team", "purpose": "review", "secondary": null, "mixed": false, "difficulty": 0.7, "slice": "pasted-context", "lang": "en"}
{"prompt": "accessibility audit output for the booking flow, tell me which of these are real problems and which are the tool being pedantic:\n\nsrc/booking/SlotPicker.tsx\n  serious   Buttons must have discernible text (button-name) — 14 nodes\n  serious   Form elements must have labels (label) — 3 nodes\n  moderate  Elements must have sufficient color contrast (color-contrast) — 22 nodes (4.1:1 vs required 4.5:1)\n  minor     Heading levels should only increase by one (heading-order) — 2 nodes\n\nsrc/booking/Confirmation.tsx\n  critical  <html> element must have a lang attribute (html-has-lang)\n  serious   ARIA attributes must conform to valid values (aria-valid-attr-value) — aria-live=\"polite \" (trailing space)\n  moderate  Interactive controls must not be nested (nested-interactive) — 1 node\n\n47 total violations, 0 incomplete", "purpose": "review", "secondary": null, "mixed": false, "difficulty": 0.55, "slice": "pasted-context", "lang": "en"}
{"prompt": "here's the query the scheduling page runs every time someone changes the week. is 400ms reasonable for this or is something dumb happening?\n\nSELECT a.id, a.starts_at, a.ends_at, a.status,\n       p.first_name, p.last_name, p.date_of_birth,\n       pr.display_name AS provider_name,\n       r.name AS room_name,\n       (SELECT COUNT(*) FROM appointment_notes n WHERE n.appointment_id = a.id) AS note_count\nFROM appointments a\nJOIN patients p ON p.id = a.patient_id\nJOIN providers pr ON pr.id = a.provider_id\nLEFT JOIN rooms r ON r.id = a.room_id\nWHERE a.clinic_id = $1\n  AND a.starts_at >= $2 AND a.starts_at < $3\n  AND a.status <> 'cancelled'\nORDER BY a.starts_at ASC;\n\nindexes: appointments(clinic_id, starts_at), patients(id), providers(id)", "purpose": "review", "secondary": null, "mixed": false, "difficulty": 0.6, "slice": "pasted-context", "lang": "en"}
{"prompt": "two engineers wrote the same helper in the same sprint. which one would you keep, and why?\n\n// version A — utils/time.ts\nexport function slotsBetween(open: Date, close: Date, minutes: number): Date[] {\n  const out: Date[] = []\n  for (let t = open.getTime(); t + minutes * 60000 <= close.getTime(); t += minutes * 60000)\n    out.push(new Date(t))\n  return out\n}\n\n// version B — booking/slots.ts\nexport const buildSlots = ({ open, close, step, skip = [] }: SlotArgs) =>\n  Array.from(\n    { length: Math.floor((+close - +open) / (step * 60000)) },\n    (_, i) => new Date(+open + i * step * 60000)\n  ).filter(d => !skip.some(([s, e]) => d >= s && d < e))\n\nboth are used in production right now, on different screens", "purpose": "review", "secondary": null, "mixed": false, "difficulty": 0.5, "slice": "pasted-context", "lang": "en"}
{"prompt": "raw notes from the clinic onboarding call, turn them into the implementation guide we hand to new customers:\n\n- they get a CSV of patients from their old system, columns never match, we map by hand today\n- provider availability set up in the admin, but recurring blocks (lunch, admin time) are a separate screen nobody finds\n- rooms are optional; single-provider clinics skip them entirely\n- SMS reminders need their own twilio number, takes 2-3 days for approval, has to start before go-live\n- test appointment then a test reminder is how we prove it works\n- go-live is always a monday, they keep the old system read-only for a month\n- most common failure: nobody set the clinic timezone and every reminder goes out an hour off", "purpose": "writing", "secondary": null, "mixed": false, "difficulty": 0.5, "slice": "pasted-context", "lang": "en"}
{"prompt": "api reference for the availability endpoint is one sentence long. here's the controller — write the real thing:\n\ndef index\n  clinic = Clinic.find(params[:clinic_id])\n  authorize! :read, clinic\n  range = DateRange.parse!(params[:from], params[:to])\n  raise TooWide if range.days > 62\n  providers = clinic.providers.where(id: params[:provider_ids].presence || clinic.provider_ids)\n  slots = Appointments::Availability.new(clinic:, providers:, range:, duration: params.fetch(:duration, 30).to_i).build\n  render json: { data: slots.map { |s| SlotSerializer.new(s) }, meta: { timezone: clinic.timezone } }\nend\n\ncover the 30-day default, the 62-day cap, what duration does, and that all times come back in clinic-local ISO8601", "purpose": "writing", "secondary": null, "mixed": false, "difficulty": 0.5, "slice": "pasted-context", "lang": "en"}
{"prompt": "escreve o texto do post-mortem a partir destas notas, formato: impacto, cronologia, causa, ações:\n\n14:02 — clientes reportam que a agenda aparece vazia\n14:06 — on-call confirma: API devolve 200 com lista vazia para clínicas com fuso -03\n14:11 — deploy das 13:40 identificado como suspeito (mudança no cálculo de intervalos)\n14:19 — rollback iniciado\n14:26 — rollback concluído, agendas voltam ao normal\n14:40 — confirmado: 61 clínicas afetadas durante 24 minutos, nenhuma consulta perdida\n15:10 — causa: o novo cálculo usava a data do servidor em UTC em vez do fuso da clínica\n\nações combinadas: teste de regressão com fusos negativos, alerta para respostas vazias acima de 5%", "purpose": "writing", "secondary": null, "mixed": false, "difficulty": 0.45, "slice": "pasted-context", "lang": "pt"}
{"prompt": "kotlin file has zero kdoc and the next person will hate us. document the public surface based on what it does:\n\nclass SyncCoordinator(\n    private val api: ApiClient,\n    private val dao: AppointmentDao,\n    private val clock: Clock,\n) {\n    suspend fun pull(since: Instant?): SyncResult { /* ... */ }\n    suspend fun push(pending: List<PendingEdit>): SyncResult { /* ... */ }\n    suspend fun awaitIdle(timeout: Duration = 30.seconds)\n    fun observeState(): Flow<SyncState>\n    val lastSuccessfulSync: Instant?\n}\n\nthings worth capturing: pull with a null `since` does a full refresh and can take minutes on a big clinic; push is all-or-nothing per batch; awaitIdle throws on timeout; observeState never completes", "purpose": "writing", "secondary": null, "mixed": false, "difficulty": 0.4, "slice": "pasted-context", "lang": "en"}
{"prompt": "i have to explain our offline behaviour to the app review team and to our own support staff. here's what the code does, in bullets, from my reading:\n\n- edits made offline go into a `pending_edits` room table with a local revision\n- on reconnect, push happens before pull, oldest first\n- a 409 from the server means the server version won, and the local edit is discarded silently\n- appointments created offline get a client-generated UUID that the server honours\n- if the app is killed mid-sync, the worker restarts the whole batch\n- there is no user-visible indication that a local edit was discarded\n\nturn that into two documents: one for the app review notes, one for support", "purpose": "writing", "secondary": null, "mixed": false, "difficulty": 0.55, "slice": "pasted-context", "lang": "en"}
{"prompt": "README for the game repo hasn't been touched since the jam version. current state of things:\n\n- unity 6000.0.28f1, URP, addressables for the level packs\n- three scenes that matter: Boot, Hub, Run. everything else is test scaffolding\n- input via the new Input System, bindings in Assets/Settings/PlayerControls.inputactions\n- steam build via a bash script in tools/, needs SteamCMD on PATH and a `.env` with the app id\n- tests: EditMode only, playmode tests are broken and skipped in CI\n- known: opening Run directly from the editor bypasses save loading and softlocks after the first wave\n\nwrite it so a new contributor can get to a running build without asking anyone", "purpose": "writing", "secondary": null, "mixed": false, "difficulty": 0.4, "slice": "pasted-context", "lang": "en"}
{"prompt": "ktlint is blocking the merge, all of it looks cosmetic:\n\napp/src/main/java/io/clinicly/ui/ScheduleScreen.kt:41:1: Wildcard import (cannot be auto-corrected)\napp/src/main/java/io/clinicly/ui/ScheduleScreen.kt:88:121: Exceeded max line length (120)\napp/src/main/java/io/clinicly/ui/ScheduleScreen.kt:141:5: Missing newline before \"}\"\napp/src/main/java/io/clinicly/data/SyncCoordinator.kt:19:1: Package name must not contain underscore\napp/src/main/java/io/clinicly/data/SyncCoordinator.kt:66:33: Unnecessary semicolon\napp/src/main/java/io/clinicly/di/AppModule.kt:12:1: Imports must be ordered in lexicographic order\n\n> Task :app:ktlintMainSourceSetCheck FAILED\n6 style violations", "purpose": "quickFix", "secondary": null, "mixed": false, "difficulty": 0.15, "slice": "pasted-context", "lang": "en"}
{"prompt": "rubocop after the rebase, just get it green:\n\nOffenses:\n\napp/services/appointments/availability.rb:14:5: C: Metrics/MethodLength: Method has too many lines. [22/15]\napp/services/appointments/availability.rb:41:81: C: Layout/LineLength: Line is too long. [104/100]\napp/services/appointments/reschedule.rb:9:3: C: Style/Documentation: Missing top-level class documentation comment.\napp/models/clinic_hours.rb:33:11: W: Lint/UselessAssignment: Useless assignment to variable - `tz`.\napp/controllers/api/v2/availability_controller.rb:22:7: C: Style/GuardClause: Use a guard clause instead of wrapping the code inside a conditional expression.\nspec/factories/appointments.rb:5:1: C: Naming/VariableNumber: Use normalcase for symbol numbers.\n\n612 files inspected, 6 offenses detected, 3 offenses auto-correctable", "purpose": "quickFix", "secondary": null, "mixed": false, "difficulty": 0.2, "slice": "pasted-context", "lang": "en"}
{"prompt": "dependency check flagged these in the rails app, pick the ones we should just bump today:\n\nName: nokogiri\nVersion: 1.16.2\nAdvisory: CVE-2026-11221\nCriticality: High\nSolution: upgrade to '>= 1.17.1'\n\nName: rack\nVersion: 3.0.9\nAdvisory: CVE-2026-10884\nCriticality: Medium\nTitle: Possible ReDoS in Rack::Request header parsing\nSolution: upgrade to '>= 3.0.11'\n\nName: image_processing\nVersion: 1.12.2\nAdvisory: GHSA-7x2f-9k1c\nCriticality: Low\nSolution: upgrade to '>= 1.13.0'\n\nVulnerabilities found!", "purpose": "quickFix", "secondary": null, "mixed": false, "difficulty": 0.3, "slice": "pasted-context", "lang": "en"}
{"prompt": "tsc is unhappy after the react 19 bump, and i think these are all the same mistake repeated:\n\nsrc/booking/SlotPicker.tsx:44:7 - error TS2322: Type '{ children: Element; ref: MutableRefObject<HTMLDivElement | null>; }' is not assignable to type 'IntrinsicAttributes & SlotGridProps'.\n  Property 'ref' does not exist on type 'IntrinsicAttributes & SlotGridProps'.\n\nsrc/booking/Confirmation.tsx:19:23 - error TS2769: No overload matches this call.\n  Argument of type '(e: React.FormEvent) => Promise<void>' is not assignable to parameter of type 'FormEventHandler<HTMLFormElement>'.\n\nsrc/schedule/WeekGrid.tsx:88:11 - error TS2339: Property 'defaultProps' does not exist on type 'FunctionComponent<WeekGridProps>'.\n\nFound 3 errors in 3 files.", "purpose": "quickFix", "secondary": null, "mixed": false, "difficulty": 0.35, "slice": "pasted-context", "lang": "en"}
{"prompt": "a short note for the team explaining why we moved reminders off after_commit, for the decision log", "purpose": "writing", "secondary": null, "mixed": false, "difficulty": 0.35, "slice": "core", "lang": "en"}
{"prompt": "our repository interfaces return `Result<T>` in some places and throw in others; pick one and apply it, no behaviour change at the UI layer", "purpose": "refactor", "secondary": null, "mixed": false, "difficulty": 0.6, "slice": "boundary", "lang": "en"}
{"prompt": "the usual pre-release pass, you know the drill", "purpose": "review", "secondary": null, "mixed": false, "difficulty": 0.5, "slice": "vague-eval", "lang": "en"}
{"prompt": "appointment types are hardcoded as an enum in three languages: a rails enum, a kotlin sealed class, and a typescript union that's already out of date. how would you like to see this owned in one place? tell me the approach and then do the rails side", "purpose": "planning", "secondary": "refactor", "mixed": true, "difficulty": 0.7, "slice": "mixed", "lang": "en"}
{"prompt": "we keep telling customers that appointment data syncs \"in near real time\" and i genuinely don't know if that's true anymore given the worker changes. read the sync path, work out what the actual guarantees are — latency, ordering, what happens on conflict — and write the honest version for the docs site, including the caveats we'd rather not advertise", "purpose": "writing", "secondary": null, "mixed": false, "difficulty": 0.6, "slice": "boundary", "lang": "en"}
{"prompt": "a migration note for integrators about the v2 availability response shape, they need to know about the `meta.timezone` field", "purpose": "writing", "secondary": null, "mixed": false, "difficulty": 0.4, "slice": "boundary", "lang": "en"}
{"prompt": "our CI runs the android lint task twice, once in the check job and once in the release job, drop one", "purpose": "quickFix", "secondary": null, "mixed": false, "difficulty": 0.2, "slice": "core", "lang": "en"}
{"prompt": "the compose theme file came from a contractor and i've been told it's \"basically standard\" three times by people who haven't opened it. i'd like an actual assessment against how material 3 expects to be set up, particularly the dynamic colour branch and the status bar side effect, before i add a dark palette on top of it", "purpose": "review", "secondary": null, "mixed": false, "difficulty": 0.5, "slice": "boundary", "lang": "en"}
{"prompt": "we owe the partner an eligibility-check endpoint on our side by the end of the month: they call us with a patient reference and a payer id, we look up the patient, hit their sandbox, cache the answer for an hour, and return a normalised status. rate limit is 5 rps on their side and they penalise us for exceeding it", "purpose": "backendImpl", "secondary": "planning", "mixed": true, "difficulty": 0.7, "slice": "mixed", "lang": "en"}
{"prompt": "appointment durations over 4 hours render as a block with no end time, clamp it or show the end explicitly", "purpose": "quickFix", "secondary": null, "mixed": false, "difficulty": 0.3, "slice": "boundary", "lang": "en"}
{"prompt": "config drift between the two staging clinics, one of them sends reminders at the wrong hour:\n\n# clinic 4412 (settings.yml)\nreminder_lead_hours: 24\nreminder_send_window: \"08:00-20:00\"\ntimezone: \"America/Santiago\"\nsms_enabled: true\nemail_enabled: true\nwaitlist_offer_window_minutes: 120\ndouble_booking_allowed: false\nslot_minutes: 30\n\n# clinic 4419 (settings.yml)\nreminder_lead_hours: 24\nreminder_send_window: \"08:00-20:00\"\ntimezone: \"UTC\"\nsms_enabled: true\nemail_enabled: false\nwaitlist_offer_window_minutes: 120\ndouble_booking_allowed: false\nslot_minutes: 15\n\n# production template both were cloned from\nreminder_lead_hours: 24\nreminder_send_window: \"08:00-20:00\"\ntimezone: null   # must be set per clinic on creation\nsms_enabled: true\nemail_enabled: true\nwaitlist_offer_window_minutes: 120\ndouble_booking_allowed: false\nslot_minutes: 30\n\nboth were meant to be copies of that template and neither matches it", "purpose": "quickFix", "secondary": null, "mixed": false, "difficulty": 0.2, "slice": "pasted-context", "lang": "en"}
{"prompt": "unity throws this every time the level loads and it's just noise in the console but it's hiding real errors:\n\nAssets/Scripts/UI/HUDController.cs(41,17): warning CS0618: 'Object.FindObjectOfType<T>()' is obsolete: 'Object.FindObjectOfType has been deprecated. Use Object.FindFirstObjectByType instead or if finding any instance is acceptable the faster Object.FindAnyObjectByType'\nAssets/Scripts/WaveDirector.cs(88,9): warning CS0618: same\nAssets/Scripts/Audio/MusicManager.cs(22,13): warning CS0618: same\nAssets/Scripts/Save/SaveSystem.cs(112,21): warning CS0672: 'SaveSystem.Serialize(Stream)' overrides obsolete member\n\n41 warnings total, 12 of them this one", "purpose": "quickFix", "secondary": null, "mixed": false, "difficulty": 0.2, "slice": "pasted-context", "lang": "en"}
{"prompt": "esta función se repite en tres pantallas casi igual. quiero una sola versión, sin cambiar el comportamiento:\n\n// SlotPicker.tsx\nconst isBookable = (s: Slot) =>\n  !s.taken && s.startsAt > new Date() && !s.blocked && s.providerId === selectedProvider\n\n// WeekGrid.tsx\nfunction bookable(slot) {\n  if (slot.taken) return false\n  if (slot.blocked) return false\n  if (new Date(slot.startsAt) <= new Date()) return false\n  return !provider || slot.providerId === provider\n}\n\n// WaitlistSheet.tsx\nconst canOffer = (slot: Slot, providerId?: string) =>\n  [!slot.taken, !slot.blocked, +new Date(slot.startsAt) > Date.now(),\n   providerId ? slot.providerId === providerId : true].every(Boolean)", "purpose": "refactor", "secondary": null, "mixed": false, "difficulty": 0.5, "slice": "pasted-context", "lang": "es"}
{"prompt": "this composable has grown a fifth responsibility and i want it split without changing a pixel:\n\n@Composable\nfun ScheduleScreen(vm: ScheduleViewModel = hiltViewModel()) {\n    val state by vm.state.collectAsStateWithLifecycle()\n    val snackbar = remember { SnackbarHostState() }\n    LaunchedEffect(state.error) { state.error?.let { snackbar.showSnackbar(it) } }\n    LaunchedEffect(Unit) { vm.trackScreenView() }\n    Scaffold(\n        topBar = { /* 40 lines of week picker, provider filter and overflow menu */ },\n        snackbarHost = { SnackbarHost(snackbar) },\n        floatingActionButton = { /* 20 lines with three conditional states */ },\n    ) { padding ->\n        when {\n            state.loading -> ShimmerGrid(padding)\n            state.days.isEmpty() -> EmptyDay(padding, onRefresh = vm::refresh)\n            else -> /* 90 lines of day columns, drag-to-reschedule and overlap layout */\n        }\n    }\n}", "purpose": "refactor", "secondary": null, "mixed": false, "difficulty": 0.6, "slice": "pasted-context", "lang": "en"}
{"prompt": "service object that grew organically. same behaviour, better seams, and it needs to stay callable from the controller exactly as it is:\n\nclass Appointments::Reschedule\n  def initialize(appointment, new_slot, actor:, notify: true, skip_validation: false)\n    @appointment = appointment; @new_slot = new_slot; @actor = actor\n    @notify = notify; @skip_validation = skip_validation\n  end\n\n  def call\n    raise OutsideClinicHours unless @skip_validation || within_hours?\n    raise SlotTaken if Appointment.overlapping(@appointment.clinic_id, @new_slot.range).where.not(id: @appointment.id).exists?\n    ActiveRecord::Base.transaction do\n      @appointment.update!(starts_at: @new_slot.starts_at, ends_at: @new_slot.ends_at)\n      AuditLog.create!(actor: @actor, action: \"reschedule\", subject: @appointment)\n      CalendarSyncJob.perform_later(@appointment.id)\n      PatientMailer.rescheduled(@appointment).deliver_later if @notify\n      SmsSender.new(@appointment.patient).rescheduled(@appointment) if @notify && sms?\n    end\n    @appointment\n  end\nend", "purpose": "refactor", "secondary": null, "mixed": false, "difficulty": 0.6, "slice": "pasted-context", "lang": "en"}
{"prompt": "four scripts in the unity project all reach for the player the same way. i want one accessor and no behaviour change:\n\n// WaveDirector.cs\nvar player = GameObject.FindWithTag(\"Player\").GetComponent<PlayerController>();\n\n// HomingBullet.cs\nvar player = GameObject.Find(\"Player\").transform;\n\n// HUDController.cs\nPlayerController player = FindObjectOfType<PlayerController>();\n\n// SaveSystem.cs\nvar player = GameObject.FindGameObjectsWithTag(\"Player\").FirstOrDefault()?.GetComponent<PlayerController>();\n\nall four are called from Update or from OnEnable, some of them every frame", "purpose": "refactor", "secondary": null, "mixed": false, "difficulty": 0.5, "slice": "pasted-context", "lang": "en"}
{"prompt": "test suite has this shape repeated 60-odd times and it's why nobody adds tests:\n\nRSpec.describe Appointments::Availability do\n  let(:clinic) { create(:clinic, timezone: \"America/New_York\") }\n  let(:provider) { create(:provider, clinic: clinic) }\n  let!(:hours) { create(:clinic_hours, clinic: clinic, weekday: 1, opens_at: \"09:00\", closes_at: \"17:00\") }\n  let(:range) { Date.new(2026, 8, 3)..Date.new(2026, 8, 3) }\n\n  before do\n    travel_to Time.zone.parse(\"2026-08-01 08:00\")\n    allow(FeatureFlags).to receive(:enabled?).with(:waitlist).and_return(false)\n  end\n\n  after { travel_back }\n  # ... 8 examples\nend\n\nsame five let blocks, same travel_to, same flag stub, in every scheduling spec", "purpose": "refactor", "secondary": null, "mixed": false, "difficulty": 0.5, "slice": "pasted-context", "lang": "en"}
{"prompt": "navigation in the app is half compose-navigation and half fragments, this is the current graph plus the leftovers:\n\nNavHost(navController, startDestination = \"schedule\") {\n    composable(\"schedule\") { ScheduleScreen() }\n    composable(\"booking/{slotId}\") { BookingScreen(it.arguments?.getString(\"slotId\")!!) }\n    composable(\"patient/{id}\") { PatientScreen(it.arguments?.getString(\"id\")!!) }\n    activity(\"legacy_settings\") { activityClass = SettingsActivity::class }\n}\n\n// still around\nclass PatientListFragment : Fragment()   // reached from SettingsActivity\nclass ProviderPickerFragment : DialogFragment()  // shown from ScheduleScreen via FragmentManager\nclass OnboardingActivity : AppCompatActivity()  // launched from MainActivity.onCreate\n\nthe hybrid is why back handling is inconsistent. same destinations, one mechanism", "purpose": "refactor", "secondary": null, "mixed": false, "difficulty": 0.7, "slice": "pasted-context", "lang": "en"}
{"prompt": "un fichier de constantes qui a mal vieilli, je veux le réorganiser sans rien casser :\n\n// constants.ts\nexport const SLOT_MINUTES = 30\nexport const MAX_RANGE_DAYS = 62\nexport const API_BASE = process.env.NEXT_PUBLIC_API ?? \"https://api.clinicly.io\"\nexport const COLORS = { booked: \"#2f6fed\", blocked: \"#9aa0a6\", free: \"#ffffff\" }\nexport const REMINDER_LEAD_HOURS = 24\nexport const WAITLIST_WINDOW_MIN = 120\nexport const FEATURE_WAITLIST = true\nexport const DATE_FMT = \"yyyy-MM-dd\"\nexport const TZ_FALLBACK = \"UTC\"\nexport const SUPPORT_EMAIL = \"help@clinicly.io\"\nexport const RETRY_DELAYS = [1000, 2000, 4000, 8000]\nexport const LEGACY_SLOT_MINUTES = 15 // still used by the old week grid\n\nimporté par 41 fichiers", "purpose": "refactor", "secondary": null, "mixed": false, "difficulty": 0.45, "slice": "pasted-context", "lang": "fr"}
{"prompt": "discovery notes from the clinic visits last week. i need this turned into a roadmap with phases, not a feature list:\n\n- front desk staff use paper for the waitlist because the digital one takes too many taps\n- three of five clinics double-book deliberately for no-show buffer; our model forbids it\n- providers want to see their own day on a phone, receptionists want the whole clinic on a monitor\n- nobody uses the reporting screen; two clinics export to excel weekly instead\n- the biggest complaint is that cancelling requires four confirmations\n- one clinic runs two locations from one account and it half-works\n- insurance eligibility check is done outside our system entirely, on a separate portal", "purpose": "planning", "secondary": null, "mixed": false, "difficulty": 0.8, "slice": "pasted-context", "lang": "en"}
{"prompt": "leadership handed down this constraint set for the mobile rewrite and i need a realistic sequencing before we commit to dates:\n\n- android and ios must ship the same features at the same time from Q4\n- the current android app is kotlin/compose, ios is a webview wrapper nobody maintains\n- team is four android engineers, one ios contractor starting in september\n- offline support is non-negotiable for both, clinics have bad wifi\n- the design system exists in figma but only android components are built\n- there is a hard deadline: a customer conference in march where both must demo\n- we cannot stop shipping android features in the meantime", "purpose": "planning", "secondary": null, "mixed": false, "difficulty": 0.85, "slice": "pasted-context", "lang": "en"}
{"prompt": "game's save system is about to become a problem and i'd rather design now than patch later. current state:\n\n- SaveSystem.cs writes a JSON blob to Application.persistentDataPath every checkpoint\n- no versioning; loading an old save from before the wave rework silently zeroes progress\n- cloud saves via steam are on the roadmap for the 1.0 release\n- players have already reported losing runs when the game is force-quit mid-write\n- we want a run history screen eventually, which means multiple saves, not one blob\n\nwhat should the shape of this be, and what's the migration path for saves already in the wild", "purpose": "planning", "secondary": null, "mixed": false, "difficulty": 0.8, "slice": "pasted-context", "lang": "en"}
{"prompt": "compliance ticket landed and i don't want to start coding before we agree the shape:\n\nCOMP-118 — Audit trail for patient record access\nEvery read of a patient record must be recorded: who, when, which record, from which client, and the stated reason where one is required. Records must be queryable by patient (for subject access requests) and by user (for internal investigations). Retention six years, tamper-evident. Must not measurably slow the schedule screen, which reads dozens of patient summaries per page load. Applies to API, admin panel and the mobile apps. Existing access is not backfilled.", "purpose": "planning", "secondary": null, "mixed": false, "difficulty": 0.85, "slice": "pasted-context", "lang": "en"}
{"prompt": "figma redlines for the new day column, build it in compose:\n\nDay column (phone, 360dp)\n- Header: weekday abbrev (labelMedium) over day number (headlineSmall). Today: number in a 32dp filled circle, onPrimary text.\n- Hour rows 64dp tall, 1dp divider at 12% onSurface. Half-hour: dotted divider, 6% opacity.\n- Appointment block: 8dp corner, 4dp inset from the column edges, 3dp leading accent bar coloured by appointment type. Title bodyMedium truncated to one line; patient name bodySmall, 70% alpha.\n- Overlaps: split the column evenly, 2dp gutter, max three side by side, then \"+N\" chip on the third.\n- Now line: 2dp accent, dot at the leading edge, only shown for today.\n- Drag to reschedule: block lifts 4dp with shadow, snaps to 15-minute steps, target row highlighted at 8% accent.\n- Empty state: centred \"Nothing booked\" bodyMedium at 50% alpha.", "purpose": "frontendImpl", "secondary": null, "mixed": false, "difficulty": 0.7, "slice": "pasted-context", "lang": "en"}
{"prompt": "ticket with the designer's notes attached, the waitlist sheet on web:\n\nWaitlist sheet (desktop modal, 480px)\n- Title \"Join the waitlist\" (20px semibold), subtitle with the chosen day in long form.\n- Provider select: our existing Select component, defaults to \"Any provider\", shows avatars.\n- Time-of-day preference: three toggle chips (Morning / Afternoon / Any), single select, \"Any\" default.\n- Contact preference: radio group, SMS / Email, prefilled from the patient record, with the masked contact shown next to each.\n- Footnote in 12px muted: \"We'll hold your spot for 2 hours once we offer it.\"\n- Primary \"Join waitlist\", secondary \"Cancel\". Primary disabled while submitting, spinner inside the button.\n- On success the modal is replaced in place by a confirmation state with a checkmark, no navigation.\n- Errors render above the buttons in a red inline alert, never a toast.", "purpose": "frontendImpl", "secondary": null, "mixed": false, "difficulty": 0.6, "slice": "pasted-context", "lang": "en"}
{"prompt": "这是设计稿标注，帮我把预约确认页写出来（React + Tailwind）：\n\n确认页（移动端 375px）\n- 顶部：诊所名称 16px 中等字重，下面是地址 13px 灰色，右侧是地图图标按钮 40x40。\n- 主卡片：圆角 12px，1px 边框，内边距 16px。第一行日期 20px 半粗，第二行时间段 15px。\n- 医生一行：32px 头像 + 姓名 + 科室，中间用 8px 间距。\n- 提醒开关：默认开启，副标题写「就诊前 24 小时短信提醒」。\n- 底部按钮：主按钮「确认预约」占满宽度 48px 高，次要按钮「取消」文字按钮。\n- 加载中：主按钮内显示 spinner，其余内容保持不动。\n- 出错时在按钮上方显示红色提示条，不要弹窗。", "purpose": "frontendImpl", "secondary": null, "mixed": false, "difficulty": 0.55, "slice": "pasted-context", "lang": "zh"}
{"prompt": "spec from the integration partner, build our side of it:\n\nPOST /v2/webhooks/eligibility\n  headers: X-Partner-Signature (HMAC-SHA256 of the raw body, secret per partner), X-Partner-Id\n  body: { request_id, patient_ref, payer_id, status: \"active\"|\"inactive\"|\"unknown\", copay_cents?, checked_at }\n  we must respond 200 within 3 seconds or they retry with the same request_id for 24 hours\n  duplicate request_id must be a no-op that still returns 200\n  unknown patient_ref: respond 200 and record it, do not 404 (they treat 4xx as a hard failure and disable the hook)\n  signature mismatch: 401, and we should alert\n  they send roughly 40k of these a day, bursty around 06:00 clinic-local", "purpose": "backendImpl", "secondary": null, "mixed": false, "difficulty": 0.65, "slice": "pasted-context", "lang": "en"}
{"prompt": "reminder lead time to 48h", "purpose": "quickFix", "secondary": null, "mixed": false, "difficulty": 0.15, "slice": "core", "lang": "en"}
{"prompt": "versionCode wasn't bumped for the hotfix", "purpose": "quickFix", "secondary": null, "mixed": false, "difficulty": 0.1, "slice": "core", "lang": "en"}
{"prompt": "\"appointement\" in the confirmation email", "purpose": "quickFix", "secondary": null, "mixed": false, "difficulty": 0.1, "slice": "core", "lang": "en"}
{"prompt": "proguard rule for the analytics SDK", "purpose": "quickFix", "secondary": null, "mixed": false, "difficulty": 0.2, "slice": "core", "lang": "en"}
{"prompt": "strip the debug toast from BookingScreen", "purpose": "quickFix", "secondary": null, "mixed": false, "difficulty": 0.1, "slice": "boundary", "lang": "en"}
{"prompt": "sentry DSN is still the staging one", "purpose": "quickFix", "secondary": null, "mixed": false, "difficulty": 0.15, "slice": "boundary", "lang": "en"}
{"prompt": "delete the dead `LEGACY_SLOT_MINUTES`", "purpose": "quickFix", "secondary": null, "mixed": false, "difficulty": 0.15, "slice": "boundary", "lang": "en"}
{"prompt": "el copy del botón dice «Reservar», debería ser «Confirmar»", "purpose": "quickFix", "secondary": null, "mixed": false, "difficulty": 0.1, "slice": "boundary", "lang": "es"}
{"prompt": "nokogiri to 1.17.1 please", "purpose": "quickFix", "secondary": null, "mixed": false, "difficulty": 0.15, "slice": "boundary", "lang": "en"}
{"prompt": "turn off dynamicColor for now", "purpose": "quickFix", "secondary": null, "mixed": false, "difficulty": 0.15, "slice": "boundary", "lang": "en"}
{"prompt": "today's date needs a filled circle", "purpose": "frontendImpl", "secondary": null, "mixed": false, "difficulty": 0.2, "slice": "core", "lang": "en"}
{"prompt": "pull-to-refresh on the day view", "purpose": "frontendImpl", "secondary": null, "mixed": false, "difficulty": 0.3, "slice": "core", "lang": "en"}
{"prompt": "provider avatars in the week header", "purpose": "frontendImpl", "secondary": null, "mixed": false, "difficulty": 0.3, "slice": "core", "lang": "en"}
{"prompt": "minimap clips on ultrawide", "purpose": "frontendImpl", "secondary": null, "mixed": false, "difficulty": 0.35, "slice": "core", "lang": "en"}
{"prompt": "empty day needs an illustration", "purpose": "frontendImpl", "secondary": null, "mixed": false, "difficulty": 0.25, "slice": "core", "lang": "en"}
{"prompt": "ボタンのタップ領域が小さすぎます", "purpose": "frontendImpl", "secondary": null, "mixed": false, "difficulty": 0.25, "slice": "core", "lang": "ja"}
{"prompt": "cancel confirmation should be one tap", "purpose": "frontendImpl", "secondary": null, "mixed": false, "difficulty": 0.3, "slice": "boundary", "lang": "en"}
{"prompt": "slot chips wrap badly at 320dp", "purpose": "frontendImpl", "secondary": null, "mixed": false, "difficulty": 0.3, "slice": "boundary", "lang": "en"}
{"prompt": "now-line should be accent, not red", "purpose": "frontendImpl", "secondary": null, "mixed": false, "difficulty": 0.15, "slice": "boundary", "lang": "en"}
{"prompt": "HUD scale is wrong on deck", "purpose": "frontendImpl", "secondary": null, "mixed": false, "difficulty": 0.35, "slice": "boundary", "lang": "en"}
{"prompt": "`ApptSvc` should read `AppointmentService`", "purpose": "refactor", "secondary": null, "mixed": false, "difficulty": 0.25, "slice": "core", "lang": "en"}
{"prompt": "lift the week picker out of ScheduleScreen", "purpose": "refactor", "secondary": null, "mixed": false, "difficulty": 0.4, "slice": "core", "lang": "en"}
{"prompt": "die Konstanten nach Bereichen gruppieren", "purpose": "refactor", "secondary": null, "mixed": false, "difficulty": 0.35, "slice": "core", "lang": "de"}
{"prompt": "a nightly job that flags appointments whose provider no longer works at the clinic, so front desk can reassign them before the patient turns up", "purpose": "backendImpl", "secondary": null, "mixed": false, "difficulty": 0.5, "slice": "core", "lang": "en"}
{"prompt": "our staging data is a six-month-old production dump with names scrambled, which is why timezone bugs never show up before release. what should the test data story actually be", "purpose": "planning", "secondary": null, "mixed": false, "difficulty": 0.65, "slice": "boundary", "lang": "en"}
{"prompt": "the changelog for the android app has been \"bug fixes and improvements\" for six releases, which is embarrassing given how much has actually changed. go through the commits since 3.0, write proper release notes for each version, and while you're in there fix the two entries in the existing changelog that describe features we cut", "purpose": "writing", "secondary": "quickFix", "mixed": true, "difficulty": 0.4, "slice": "mixed", "lang": "en"}
{"prompt": "collapse the two slot builders", "purpose": "refactor", "secondary": null, "mixed": false, "difficulty": 0.4, "slice": "core", "lang": "en"}
{"prompt": "`starts_at` naming, consistent everywhere", "purpose": "refactor", "secondary": null, "mixed": false, "difficulty": 0.3, "slice": "boundary", "lang": "en"}
{"prompt": "shared rspec context for scheduling specs", "purpose": "refactor", "secondary": null, "mixed": false, "difficulty": 0.4, "slice": "boundary", "lang": "en"}
{"prompt": "one player accessor for all scripts", "purpose": "refactor", "secondary": null, "mixed": false, "difficulty": 0.4, "slice": "boundary", "lang": "en"}
{"prompt": "inline `bookable`, it's used once", "purpose": "refactor", "secondary": null, "mixed": false, "difficulty": 0.2, "slice": "boundary", "lang": "en"}
{"prompt": "play store release notes, friendly tone", "purpose": "writing", "secondary": null, "mixed": false, "difficulty": 0.3, "slice": "core", "lang": "en"}
{"prompt": "changelog entry for the waitlist", "purpose": "writing", "secondary": null, "mixed": false, "difficulty": 0.25, "slice": "core", "lang": "en"}
{"prompt": "kurze Doku für den Reminder-Job", "purpose": "writing", "secondary": null, "mixed": false, "difficulty": 0.3, "slice": "boundary", "lang": "de"}
{"prompt": "summarise `Availability#build` for the wiki", "purpose": "writing", "secondary": null, "mixed": false, "difficulty": 0.35, "slice": "boundary", "lang": "en"}
{"prompt": "PR body for the ANR fix", "purpose": "writing", "secondary": null, "mixed": false, "difficulty": 0.25, "slice": "boundary", "lang": "en"}
{"prompt": "where does `skip_validation` come from?", "purpose": "review", "secondary": null, "mixed": false, "difficulty": 0.4, "slice": "core", "lang": "en"}
{"prompt": "¿qué hace exactamente `SyncCoordinator.pull`?", "purpose": "review", "secondary": null, "mixed": false, "difficulty": 0.45, "slice": "core", "lang": "es"}
{"prompt": "which of these two helpers is safer?", "purpose": "review", "secondary": null, "mixed": false, "difficulty": 0.4, "slice": "boundary", "lang": "en"}
{"prompt": "walk me through the offer job", "purpose": "review", "secondary": null, "mixed": false, "difficulty": 0.5, "slice": "boundary", "lang": "en"}
{"prompt": "any reason `after_commit` fires twice here?", "purpose": "review", "secondary": null, "mixed": false, "difficulty": 0.55, "slice": "boundary", "lang": "en"}
{"prompt": "reminders went out an hour early", "purpose": "debugging", "secondary": null, "mixed": false, "difficulty": 0.6, "slice": "core", "lang": "en"}
{"prompt": "week view flickers on day change", "purpose": "debugging", "secondary": null, "mixed": false, "difficulty": 0.5, "slice": "core", "lang": "en"}
{"prompt": "booking twice creates two appointments", "purpose": "debugging", "secondary": null, "mixed": false, "difficulty": 0.6, "slice": "boundary", "lang": "en"}
{"prompt": "le calendrier reste vide après le login", "purpose": "debugging", "secondary": null, "mixed": false, "difficulty": 0.55, "slice": "boundary", "lang": "fr"}
{"prompt": "soft-delete on appointments, rails side", "purpose": "backendImpl", "secondary": null, "mixed": false, "difficulty": 0.4, "slice": "core", "lang": "en"}
{"prompt": "plan the audit trail, then build phase one", "purpose": "planning", "secondary": "backendImpl", "mixed": true, "difficulty": 0.75, "slice": "mixed", "lang": "en"}
{"prompt": "scope the ios rewrite, then start the shell", "purpose": "planning", "secondary": "frontendImpl", "mixed": true, "difficulty": 0.8, "slice": "mixed", "lang": "en"}
{"prompt": "same as yesterday", "purpose": "backendImpl", "secondary": null, "mixed": false, "difficulty": 0.4, "slice": "vague-eval", "lang": "en"}
{"prompt": "clean this up", "purpose": "refactor", "secondary": null, "mixed": false, "difficulty": 0.35, "slice": "vague-eval", "lang": "en"}
{"prompt": "go ahead with the waitlist", "purpose": "backendImpl", "secondary": null, "mixed": false, "difficulty": 0.5, "slice": "vague-eval", "lang": "en"}
{"prompt": "nicer", "purpose": "frontendImpl", "secondary": null, "mixed": false, "difficulty": 0.3, "slice": "vague-eval", "lang": "en"}
{"prompt": "onboarding, but properly this time", "purpose": "planning", "secondary": null, "mixed": false, "difficulty": 0.5, "slice": "vague-eval", "lang": "en"}
{"prompt": "weiter wie besprochen", "purpose": "backendImpl", "secondary": null, "mixed": false, "difficulty": 0.45, "slice": "vague-eval", "lang": "de"}
{"prompt": "you know what to do", "purpose": "quickFix", "secondary": null, "mixed": false, "difficulty": 0.35, "slice": "vague-eval", "lang": "en"}
{"prompt": "できるところまでお願いします", "purpose": "backendImpl", "secondary": null, "mixed": false, "difficulty": 0.45, "slice": "vague-eval", "lang": "ja"}
{"prompt": "round two on the sync", "purpose": "debugging", "secondary": null, "mixed": false, "difficulty": 0.5, "slice": "vague-eval", "lang": "en"}
{"prompt": "make the wave feel meaner", "purpose": "frontendImpl", "secondary": null, "mixed": false, "difficulty": 0.4, "slice": "vague-eval", "lang": "en"}
{"prompt": "do the needful on scheduling", "purpose": "backendImpl", "secondary": null, "mixed": false, "difficulty": 0.45, "slice": "vague-eval", "lang": "en"}
{"prompt": "tidy the theme file", "purpose": "refactor", "secondary": null, "mixed": false, "difficulty": 0.35, "slice": "vague-eval", "lang": "en"}
{"prompt": "o de sempre, mas para a agenda", "purpose": "frontendImpl", "secondary": null, "mixed": false, "difficulty": 0.4, "slice": "vague-eval", "lang": "pt"}
{"prompt": "clinics with two locations are running on one account and it half works today: shared provider list, shared patient records, but the schedule screen can only show one location's rooms at a time and reminders always use the first location's address. before we build multi-location properly i want to know whether that's a data model change or a permissions change, and what it does to every clinic already on the platform", "purpose": "planning", "secondary": null, "mixed": false, "difficulty": 0.85, "slice": "core", "lang": "en"}
{"prompt": "insurance eligibility is checked on a separate portal today and front desk staff retype the result into a note. bringing it in-house means a partner API, PHI leaving our boundary in a new direction, and a support burden when the payer is down. i'd like the options laid out — full integration, deep link with prefill, or nothing — with what each costs us over a year", "purpose": "planning", "secondary": null, "mixed": false, "difficulty": 0.8, "slice": "core", "lang": "en"}
{"prompt": "game needs a difficulty curve that isn't just hp multipliers and i keep going back and forth. we have wave composition, enemy stats, spawn rate, arena hazards and drop rates as knobs, plus a run-length target of about 25 minutes. sketch out how you'd structure the tuning so a designer can iterate without touching code, and what we'd need to log to know whether it's working", "purpose": "planning", "secondary": null, "mixed": false, "difficulty": 0.8, "slice": "core", "lang": "en"}
{"prompt": "hospital group wants us on their infrastructure rather than our cloud, which we have never done. that means a deployment story, a licence story, an upgrade story and a support story, none of which exist. i want the shape of what we'd have to build and what we'd have to say no to, before sales promises anything in the next call", "purpose": "planning", "secondary": null, "mixed": false, "difficulty": 0.9, "slice": "boundary", "lang": "en"}
{"prompt": "clinic staff turnover is high and every new receptionist gets trained by the last one, which is why nobody knows about half the features. i'd like a proper training guide: the daily workflow start to finish, the five things that go wrong most often and how to fix them, and a one-page cheat sheet they can print and stick on the monitor", "purpose": "writing", "secondary": null, "mixed": false, "difficulty": 0.5, "slice": "core", "lang": "en"}
{"prompt": "android release process lives in one engineer's head: which branch, when to bump versionCode, the staged rollout percentages, when to promote, what to do when crashlytics spikes mid-rollout, and how to halt. write it down as a runbook that someone else could follow on a wednesday afternoon without asking them anything", "purpose": "writing", "secondary": null, "mixed": false, "difficulty": 0.45, "slice": "core", "lang": "en"}
{"prompt": "steam page copy is three sentences and reads like a placeholder because it is one. the game is a roguelike with a clinic aesthetic, run-based, 25-minute runs, deck-of-treatments mechanic. write the store description, the short blurb, and the five bullet features, in a voice that isn't every other roguelike page", "purpose": "writing", "secondary": null, "mixed": false, "difficulty": 0.45, "slice": "boundary", "lang": "en"}
{"prompt": "reading `Appointments::Availability` end to end took me an hour and i still couldn't tell you why the 62-day cap exists or what the `duration` parameter really does to slot boundaries. go through it and tell me what it does, where the surprises are, and which behaviours look intentional versus accidental", "purpose": "review", "secondary": null, "mixed": false, "difficulty": 0.65, "slice": "core", "lang": "en"}
{"prompt": "on-call docs claim the reminder job is idempotent and safe to re-run, and i want that verified rather than assumed before someone re-runs it during an incident at 3am. trace it properly: what it reads, what it writes, what happens if two copies run at once, and whether a patient could get two texts", "purpose": "review", "secondary": null, "mixed": false, "difficulty": 0.7, "slice": "boundary", "lang": "en"}
{"prompt": "schedule screen makes about forty network calls when you switch weeks quickly, one per day column, and half of them are cancelled mid-flight. the data layer is supposed to coalesce these. same behaviour on screen afterwards, but i want the fetching restructured so it's one request per week and cancellation is handled in one place", "purpose": "refactor", "secondary": null, "mixed": false, "difficulty": 0.7, "slice": "core", "lang": "en"}
{"prompt": "rails app has thirteen service objects under `app/services/appointments/` and four of them are wrappers around another one, which nobody can see without reading all thirteen. i'd like the layer flattened into something honest, same public entry points from the controllers, same behaviour, fewer indirections", "purpose": "refactor", "secondary": null, "mixed": false, "difficulty": 0.65, "slice": "core", "lang": "en"}
{"prompt": "every screen in the app builds its own retrofit call, its own loading boolean and its own error string, so the same three-state dance is written 20 times with subtle differences. i want one pattern applied everywhere without changing what any screen looks like or how it behaves offline", "purpose": "refactor", "secondary": null, "mixed": false, "difficulty": 0.7, "slice": "boundary", "lang": "en"}
{"prompt": "biggest source of paper cuts is that the confirmation modal, the sheet on mobile and the toast all render appointment times through different formatting helpers, so they disagree about am/pm and timezone suffixes. one helper, all three call sites, and the output should match the modal's current format", "purpose": "refactor", "secondary": null, "mixed": false, "difficulty": 0.5, "slice": "core", "lang": "en"}
{"prompt": "gradle config for the android app has accumulated flags from three years of stack overflow answers and nobody knows which are load-bearing. tidy it up, keep the build producing an identical APK, and tell me which flags you removed and why", "purpose": "quickFix", "secondary": null, "mixed": false, "difficulty": 0.5, "slice": "core", "lang": "en"}
{"prompt": "before the multi-location work starts i want the current single-location assumptions written down — every place the code assumes one address, one timezone, one set of rooms — and then a phased plan for undoing them. the audit first, the plan second, both in one document if that reads better", "purpose": "planning", "secondary": "review", "mixed": true, "difficulty": 0.8, "slice": "mixed", "lang": "en"}
{"prompt": "waitlist feature needs a design before code, but it also needs the offer expiry job soon or QA can't test anything. give me the design for the whole flow, then implement just the expiry worker against it so the rest can land behind it", "purpose": "planning", "secondary": "backendImpl", "mixed": true, "difficulty": 0.75, "slice": "mixed", "lang": "en"}
{"prompt": "das Sync-Verhalten der App ist weder dokumentiert noch besonders durchdacht: Push vor Pull, Konflikte gewinnt immer der Server, verworfene Änderungen sieht der Nutzer nie. Ich hätte gern erst ein Konzept, wie es aussehen sollte, und danach die Umsetzung des Konfliktfalls im Repository", "purpose": "planning", "secondary": "backendImpl", "mixed": true, "difficulty": 0.8, "slice": "mixed", "lang": "de"}
{"prompt": "nobody outside the team understands what the sync worker does, and the parts i understand look wrong. write the explainer for the rest of engineering, and while you're in there work out whether a discarded local edit can ever take a patient's cancellation with it", "purpose": "writing", "secondary": "debugging", "mixed": true, "difficulty": 0.7, "slice": "mixed", "lang": "en"}
{"prompt": "support has asked for a page explaining why a reminder might not arrive, which needs to cover the timezone setting, the send window, the twilio number status and the do-not-disturb flag on the patient record. write that, and separately confirm from the code that those four are actually the only reasons", "purpose": "writing", "secondary": "review", "mixed": true, "difficulty": 0.6, "slice": "mixed", "lang": "en"}
{"prompt": "audit-trail schema we sketched last week never made it into the repo, and the ticket is now in this sprint. put the design into `docs/adr/` properly, then stand up the migration and the write path for API reads only — the admin panel can follow later", "purpose": "writing", "secondary": "backendImpl", "mixed": true, "difficulty": 0.7, "slice": "mixed", "lang": "en"}
{"prompt": "`SyncCoordinator` and `AppointmentRepository` overlap so much that i can never remember which one owns the pending-edit queue. merge the responsibilities sensibly, and afterwards write the class-level docs so the boundary is obvious to whoever touches it next", "purpose": "refactor", "secondary": "writing", "mixed": true, "difficulty": 0.65, "slice": "mixed", "lang": "en"}
{"prompt": "there are two spawn systems in the unity project, the jam-era one and the new director, and both are wired into the boot scene. delete the dead one carefully, and note in the design doc which behaviours we deliberately dropped so the designers aren't surprised", "purpose": "refactor", "secondary": "writing", "mixed": true, "difficulty": 0.6, "slice": "mixed", "lang": "en"}
{"prompt": "scheduling API returns 200 with an empty array when a clinic's timezone is unset, which is how we shipped a 24-minute outage. work out every endpoint with that failure mode, then make them fail loudly instead", "purpose": "debugging", "secondary": "backendImpl", "mixed": true, "difficulty": 0.75, "slice": "mixed", "lang": "en"}
{"prompt": "patient search is a plain LIKE query and takes two seconds on the bigger clinics. i want fuzzy matching on name and date of birth, with the exact matches ranked first", "purpose": "backendImpl", "secondary": null, "mixed": false, "difficulty": 0.6, "slice": "core", "lang": "en"}
{"prompt": "recurring provider blocks — lunch, admin time, theatre lists — need to exist as real records rather than one-off appointments, with an end date and the ability to skip a single occurrence", "purpose": "backendImpl", "secondary": null, "mixed": false, "difficulty": 0.65, "slice": "core", "lang": "en"}
{"prompt": "an internal endpoint that returns a clinic's next 30 days of capacity as a single payload, for the reporting screen. cache it for five minutes, key on clinic and provider filter", "purpose": "backendImpl", "secondary": null, "mixed": false, "difficulty": 0.5, "slice": "boundary", "lang": "en"}
{"prompt": "run summary screen at the end of a game — time survived, waves cleared, treatments used, a graph of damage over time, and a share button that copies a text summary", "purpose": "frontendImpl", "secondary": null, "mixed": false, "difficulty": 0.55, "slice": "core", "lang": "en"}
{"prompt": "drag-to-reschedule on the web week grid, snapping to 15 minutes, with the original position ghosted while dragging", "purpose": "frontendImpl", "secondary": null, "mixed": false, "difficulty": 0.6, "slice": "core", "lang": "en"}
{"prompt": "toast messages stack up and cover the FAB when sync retries, needs a proper snackbar host with a queue", "purpose": "frontendImpl", "secondary": null, "mixed": false, "difficulty": 0.4, "slice": "boundary", "lang": "en"}
{"prompt": "boss health bar overlaps the wave banner at 21:9, and both are anchored to the top centre", "purpose": "frontendImpl", "secondary": null, "mixed": false, "difficulty": 0.4, "slice": "boundary", "lang": "en"}
{"prompt": "what's the actual difference between `pull(null)` and `pull(lastSync)` in terms of what the server sends back", "purpose": "review", "secondary": null, "mixed": false, "difficulty": 0.5, "slice": "core", "lang": "en"}
{"prompt": "opinions on the `after_commit` calendar sync in the appointment model — is that going to bite us under load?", "purpose": "review", "secondary": null, "mixed": false, "difficulty": 0.6, "slice": "core", "lang": "en"}
{"prompt": "is there anything in the waitlist offer flow that could offer the same slot to two patients at once", "purpose": "review", "secondary": null, "mixed": false, "difficulty": 0.65, "slice": "core", "lang": "en"}
{"prompt": "could someone explain the difference between our `Slot` and `Availability` models to me, they seem to overlap completely", "purpose": "review", "secondary": null, "mixed": false, "difficulty": 0.45, "slice": "boundary", "lang": "en"}
{"prompt": "someone needs to explain, in writing, what our appointment status transitions are — the code has six statuses and the docs mention four", "purpose": "review", "secondary": null, "mixed": false, "difficulty": 0.5, "slice": "boundary", "lang": "en"}
{"prompt": "give me a plain-english account of what the eligibility webhook handler does with a duplicate request id", "purpose": "review", "secondary": null, "mixed": false, "difficulty": 0.45, "slice": "boundary", "lang": "en"}
{"prompt": "how does the save system decide a run is finished — i can see two places that write the final state", "purpose": "review", "secondary": null, "mixed": false, "difficulty": 0.5, "slice": "boundary", "lang": "en"}
{"prompt": "docs/scheduling.md describes the availability algorithm from two rewrites ago, bring it in line with the code", "purpose": "writing", "secondary": null, "mixed": false, "difficulty": 0.4, "slice": "core", "lang": "en"}
{"prompt": "kdoc on our public data classes is copy-pasted from the field names and adds nothing, make it actually useful", "purpose": "writing", "secondary": null, "mixed": false, "difficulty": 0.35, "slice": "boundary", "lang": "en"}
{"prompt": "`ClinicHours#slots_for` and `Availability#build` have grown into each other; separate the concerns without changing what the endpoint returns", "purpose": "refactor", "secondary": null, "mixed": false, "difficulty": 0.6, "slice": "core", "lang": "en"}
{"prompt": "pull the twilio and sendgrid calls behind one notification port so tests stop hitting HTTP stubs directly", "purpose": "refactor", "secondary": null, "mixed": false, "difficulty": 0.55, "slice": "core", "lang": "en"}
{"prompt": "enemy scripts each hold their own copy of the tuning numbers, move them to scriptable objects with the same values", "purpose": "refactor", "secondary": null, "mixed": false, "difficulty": 0.5, "slice": "core", "lang": "en"}
{"prompt": "rename the `booking` package to `appointments` across the android app, it's confused with the web team's `booking` for two years now", "purpose": "refactor", "secondary": null, "mixed": false, "difficulty": 0.35, "slice": "boundary", "lang": "en"}
{"prompt": "three components import `formatSlotTime` from three different files that all re-export the same function, collapse the chain", "purpose": "refactor", "secondary": null, "mixed": false, "difficulty": 0.3, "slice": "boundary", "lang": "en"}
{"prompt": "新しい医師を追加すると、既存の予約の色が全部変わってしまいます。色の割り当てを固定にできますか", "purpose": "quickFix", "secondary": "frontendImpl", "mixed": true, "difficulty": 0.35, "slice": "mixed", "lang": "ja"}
{"prompt": "deep links from a reminder open the app but land on the schedule root instead of the appointment, and it's been like that since the navigation change", "purpose": "debugging", "secondary": null, "mixed": false, "difficulty": 0.55, "slice": "core", "lang": "en"}
{"prompt": "we need a position on offline conflict resolution before the ios work starts, because copying android's silent server-wins would be a mistake to repeat twice", "purpose": "planning", "secondary": null, "mixed": false, "difficulty": 0.75, "slice": "boundary", "lang": "en"}
{"prompt": "appointment reminders, waitlist offers and calendar sync all send messages, and each one built its own template handling. what would a single messaging layer look like here", "purpose": "planning", "secondary": "refactor", "mixed": true, "difficulty": 0.7, "slice": "mixed", "lang": "en"}
{"prompt": "whatever's next on the schedule board", "purpose": "planning", "secondary": null, "mixed": false, "difficulty": 0.5, "slice": "vague-eval", "lang": "en"}
{"prompt": "mobile confirmation sheet shows only the time right now, which is useless when a patient has appointments at two of the clinic's sites. it needs the clinic name, the street address under it, a map button that opens the native maps app, and the provider's name — without making the sheet taller than the detent it opens at", "purpose": "frontendImpl", "secondary": null, "mixed": false, "difficulty": 0.45, "slice": "boundary", "lang": "en"}
{"prompt": "setting up a dev environment here takes a full day because the instructions are spread across a wiki page, a pinned slack message and one engineer's memory. we need one document: prerequisites, the database seed step, how to point the app at the local API, how to get test twilio credentials, and the three things that always go wrong on a new mac", "purpose": "writing", "secondary": null, "mixed": false, "difficulty": 0.45, "slice": "boundary", "lang": "en"}
{"prompt": "internally nobody can describe how appointment sync works without drawing on a whiteboard, so it gets explained badly and differently every time. one document, covering the pull path, the push path, what the revision numbers mean, when the worker gives up, and what the user sees at each stage — diagrams are welcome but the prose has to stand alone", "purpose": "writing", "secondary": null, "mixed": false, "difficulty": 0.5, "slice": "core", "lang": "en"}
{"prompt": "a patient who moved from Madrid to Mexico City still gets reminders on Spanish time as far as support can tell, and i want to know whether that's the code or the data. the reminder job reads the clinic timezone, not the patient's, so on paper it shouldn't matter — but the patient record has a timezone column that something must be using", "purpose": "review", "secondary": null, "mixed": false, "difficulty": 0.6, "slice": "boundary", "lang": "en"}
{"prompt": "sidekiq queue names drifted from the job class names over about two years, so `ReminderJob` runs on `default`, `CalendarSyncJob` runs on `mailers` of all things, and two jobs share a queue that's meant to be low priority. line them up with the class names, keep the priority weights we have today, and don't leave jobs stranded on the old queues during the deploy", "purpose": "quickFix", "secondary": null, "mixed": false, "difficulty": 0.4, "slice": "core", "lang": "en"}
{"prompt": "providers keep asking for a view that's just their own day: their appointments only, defaulting to today, remembering the last provider they picked between launches, and usable one-handed while walking between rooms. it should open instantly from the local cache and refresh quietly behind that, with no spinner unless there's genuinely nothing cached", "purpose": "frontendImpl", "secondary": null, "mixed": false, "difficulty": 0.6, "slice": "core", "lang": "en"}
{"prompt": "reporting is the screen clinics complain about most and also the one we understand least — five joins per row, no aggregates, and now they want twelve-month ranges. work out what it's really doing today and where the time goes, then propose whether we need a read model, a materialised view, or just better indexes. i want the analysis and the recommendation, not an implementation", "purpose": "planning", "secondary": "review", "mixed": true, "difficulty": 0.75, "slice": "mixed", "lang": "en"}
{"prompt": "compose multiplatform versus two native codebases is the decision blocking our ios plan, and i'd rather see it reasoned through than argued about in standup. weigh it for our situation — four android engineers, one ios contractor, offline-first requirements, a design system that only exists for android — then draft the ADR whichever way it lands", "purpose": "planning", "secondary": "writing", "mixed": true, "difficulty": 0.8, "slice": "mixed", "lang": "en"}
{"prompt": "bookings made close to midnight land on the wrong day for the provider but the right day for the patient, at least in Chile and probably anywhere with a negative offset. find out where the date gets derived from the wrong clock, and once you know, add the regression tests that would have caught it — parameterised over a few nasty timezones", "purpose": "debugging", "secondary": "backendImpl", "mixed": true, "difficulty": 0.8, "slice": "mixed", "lang": "en"}
{"prompt": "i'd like someone to read the eligibility webhook handler with fresh eyes — signature check, replay handling, what happens when the patient reference is unknown — and tell me whether it matches the partner's spec. if the retry behaviour is as wrong as i suspect, fix the handler as part of the same pass", "purpose": "review", "secondary": "backendImpl", "mixed": true, "difficulty": 0.7, "slice": "mixed", "lang": "en"}
{"prompt": "our appointment status transitions are documented as four states and implemented as six, and support has built workarounds around the undocumented ones. work out what the real state machine is from the code, then write the reference page that we should have had, flagging any transition that looks accidental", "purpose": "review", "secondary": "writing", "mixed": true, "difficulty": 0.6, "slice": "mixed", "lang": "en"}
{"prompt": "`app/services/appointments/` has thirteen classes where four would do, and half of them are one-line wrappers. consolidate the layer so the controllers call the same entry points they call today, then update the service-layer section of the architecture doc, which describes a structure we abandoned last year", "purpose": "refactor", "secondary": "writing", "mixed": true, "difficulty": 0.65, "slice": "mixed", "lang": "en"}
{"prompt": "the slot picker fails almost every accessibility check we run — no content descriptions on the chips, 32dp touch targets, and a focus order that jumps between columns. bring it up to standard, and take a screenshot pass afterwards so i can put the before and after in the procurement questionnaire", "purpose": "frontendImpl", "secondary": "writing", "mixed": true, "difficulty": 0.6, "slice": "mixed", "lang": "en"}
