{"prompt": "our changelog needs an entry for the removal of `wal_sync: never`, with the migration advice for anyone using it", "purpose": "writing", "secondary": null, "mixed": false, "difficulty": 0.4, "slice": "boundary", "lang": "en"}
{"prompt": "the events panel in the admin console refreshes every ten seconds by replacing the whole list, which resets the scroll position and makes it useless during an incident when you're trying to read something. keep the polling but merge new events in without moving what the user is looking at, and show a \"3 new events\" pill when they're scrolled away from the top", "purpose": "frontendImpl", "secondary": null, "mixed": false, "difficulty": 0.55, "slice": "boundary", "lang": "en"}
{"prompt": "message ordering guarantee we advertise, and the code that's meant to implement it. do they match?\n\ndocs: \"Messages within a thread are delivered to all devices in the order the server accepted them. Across threads, no ordering is guaranteed.\"\n\n// fanout.go\nfunc (f *Fanout) Publish(ctx context.Context, m Message) error {\n\tdevices, err := f.devices.For(ctx, m.ThreadID)\n\tif err != nil { return err }\n\tvar g errgroup.Group\n\tfor _, d := range devices {\n\t\td := d\n\t\tg.Go(func() error { return f.push.Send(ctx, d, m) })\n\t}\n\treturn g.Wait()\n}\n\n// accept path assigns m.ServerTS = time.Now() before enqueueing to a per-shard channel", "purpose": "review", "secondary": null, "mixed": false, "difficulty": 0.75, "slice": "pasted-context", "lang": "en"}
{"prompt": "our health endpoint counts a stalled compaction as healthy, so nothing pages until customers notice", "purpose": "quickFix", "secondary": null, "mixed": false, "difficulty": 0.35, "slice": "core", "lang": "en"}
{"prompt": "the reply bar's offline behaviour is currently that everything looks normal until you background the app and the message vanishes, which is the worst possible outcome. sent-but-unacknowledged messages should show a clock glyph, failed ones a retry affordance, and the bar itself should never lie about whether something has been delivered", "purpose": "frontendImpl", "secondary": "planning", "mixed": true, "difficulty": 0.6, "slice": "mixed", "lang": "en"}
{"prompt": "is this actually a race or am i misreading the memory ordering?\n\nstd::atomic<uint64_t> latest_lsn_{0};\n\nvoid WalWriter::Append(const Record& r) {\n  auto lsn = next_lsn_.fetch_add(1, std::memory_order_relaxed);\n  buffer_->Write(lsn, r);\n  latest_lsn_.store(lsn, std::memory_order_release);\n}\n\nuint64_t WalWriter::Durable() const {\n  return latest_lsn_.load(std::memory_order_acquire);\n}\n\nbool Reader::Visible(uint64_t lsn) const {\n  return lsn <= writer_->Durable();\n}\n\nfour writer threads share one WalWriter, readers call Visible on their own threads", "purpose": "review", "secondary": null, "mixed": false, "difficulty": 0.8, "slice": "pasted-context", "lang": "en"}
{"prompt": "a customer's engineer sent this and support forwarded it to me. answer it as a docs page rather than an email:\n\n\"We're running the operator in a cluster with a strict pod security admission policy (restricted). Your StatefulSet requests runAsUser: 0 and a hostPort, both of which are rejected. Is running as root actually required? Is the hostPort required, or is it there because of the old deployment model? We'd also like to know the minimum RBAC the operator needs — the ClusterRole in your chart grants * on everything, which our security team will not approve.\"", "purpose": "writing", "secondary": null, "mixed": false, "difficulty": 0.5, "slice": "pasted-context", "lang": "en"}
{"prompt": "design review ticket, i want the thinking done before the meeting:\n\nLUM-460 — Read-your-writes without pinning reads to the leader\nToday a client that needs to read its own write sends `X-Read-Your-Writes` and we route to the leader, which is why the leader is 70% of read traffic on chatty threads. Proposal is per-client LSN tracking with follower reads that wait for the LSN, bounded by a timeout after which we fall back to the leader. Concerns: clients are mobile and reconnect constantly; LSN would have to survive a reconnect; a slow follower could hold a request for the whole timeout; we have no way to observe per-client staleness today.", "purpose": "planning", "secondary": null, "mixed": false, "difficulty": 0.9, "slice": "pasted-context", "lang": "en"}
{"prompt": "support ticket volumes for the last quarter, by category. what would you fix first and why:\n\n  retention misconfiguration       182 tickets   avg 41 min to resolve\n  push registration failures       141 tickets   avg 88 min\n  pod evictions / storage           96 tickets   avg 130 min\n  upgrade gone wrong                44 tickets   avg 4.2 hours\n  \"messages out of order\"           38 tickets   avg 2.1 hours, 12 unresolved\n  RBAC / install problems           31 tickets   avg 55 min\n  everything else                   77 tickets\n\nengineering capacity for this is about one person for a quarter, and support is asking for docs rather than fixes on at least half of these", "purpose": "planning", "secondary": null, "mixed": false, "difficulty": 0.75, "slice": "pasted-context", "lang": "en"}
{"prompt": "we need the spool rotation the incident asked for. current behaviour and the requirement:\n\n- broker appends every unacknowledged message to /tmp/spool/<shard>.log, no rotation, no cap\n- on restart the whole spool is replayed in order; the file has reached 41GB on a busy shard\n- required: rotate at 2GB, keep at most 4 segments per shard, drop the oldest with a loud metric and a warning log\n- replay must still be in order across segments, and must skip segments whose checksum fails rather than crashing\n- the operator sets the cap via `tuning.spool_max_mb`, defaulting to 8192 total per shard\n- none of this may block the write path, which currently appends synchronously", "purpose": "backendImpl", "secondary": null, "mixed": false, "difficulty": 0.75, "slice": "pasted-context", "lang": "en"}
{"prompt": "message bubbles clip at large type sizes", "purpose": "frontendImpl", "secondary": null, "mixed": false, "difficulty": 0.3, "slice": "boundary", "lang": "en"}
{"prompt": "operator reconcile loop is hot-looping and i can't see why from the logs:\n\nI0729 11:02:14.881 1 controller.go:212] \"Reconciling\" cluster=\"lumen-prod\" generation=41 observedGeneration=41\nI0729 11:02:14.902 1 status.go:88] \"Updating status\" phase=\"Ready\" replicas=3 readyReplicas=3\nI0729 11:02:14.918 1 controller.go:212] \"Reconciling\" cluster=\"lumen-prod\" generation=41 observedGeneration=41\nI0729 11:02:14.941 1 status.go:88] \"Updating status\" phase=\"Ready\" replicas=3 readyReplicas=3\nI0729 11:02:14.958 1 controller.go:212] \"Reconciling\" cluster=\"lumen-prod\" generation=41 observedGeneration=41\nW0729 11:02:15.002 1 reflector.go:539] watch of *v1alpha1.MessageCluster ended with: too old resource version\nI0729 11:02:15.021 1 controller.go:212] \"Reconciling\" cluster=\"lumen-prod\" generation=41 observedGeneration=41\n\nabout 60 reconciles a second, CPU pinned, nothing in the cluster is actually changing", "purpose": "debugging", "secondary": null, "mixed": false, "difficulty": 0.8, "slice": "pasted-context", "lang": "en"}
{"prompt": "push notifications stopped for ios users on tuesday, apns feedback:\n\n{\"reason\":\"BadDeviceToken\",\"timestamp\":1753843201}   count=41221\n{\"reason\":\"Unregistered\",\"timestamp\":1753843261}     count=8814\n{\"reason\":\"TopicDisallowed\"}                          count=2201\n{\"reason\":\"ExpiredProviderToken\"}                     count=1\n\nour side:\n  push_send_total{result=\"error\"}  52,236 in 24h\n  push_send_total{result=\"ok\"}     1,102 in 24h\n  last successful send: 2026-07-27T23:58:02Z\n\nwe did rotate the signing key on monday but the ExpiredProviderToken count is 1, not 52 thousand", "purpose": "debugging", "secondary": null, "mixed": false, "difficulty": 0.7, "slice": "pasted-context", "lang": "en"}
{"prompt": "go vet after the operator refactor, all in one file:\n\n./internal/controller/cluster_controller.go:88:2: loop variable c captured by func literal\n./internal/controller/cluster_controller.go:141:12: the cancel function returned by context.WithTimeout should be called, not discarded, to avoid a context leak\n./internal/controller/cluster_controller.go:212:5: unreachable code\n./internal/controller/status.go:41:9: result of fmt.Sprintf call not used\n\nvet: exit status 1\nmake: *** [Makefile:22: vet] Error 1", "purpose": "quickFix", "secondary": null, "mixed": false, "difficulty": 0.25, "slice": "pasted-context", "lang": "en"}
{"prompt": "one timestamp helper, not three", "purpose": "refactor", "secondary": null, "mixed": false, "difficulty": 0.4, "slice": "core", "lang": "en"}
{"prompt": "what does `wal_sync: batch` promise? write it down", "purpose": "writing", "secondary": null, "mixed": false, "difficulty": 0.45, "slice": "boundary", "lang": "en"}
{"prompt": "why does compaction stall at 12%?", "purpose": "review", "secondary": null, "mixed": false, "difficulty": 0.7, "slice": "core", "lang": "en"}
{"prompt": "thread screen has eleven hardcoded colours and three magic paddings; move it onto the design tokens without changing how it looks", "purpose": "refactor", "secondary": null, "mixed": false, "difficulty": 0.45, "slice": "core", "lang": "en"}
{"prompt": "design handoff for the thread screen's reply bar, react native:\n\nReply bar\n- Pinned to the keyboard, 52pt minimum height, grows to 5 lines then scrolls internally.\n- Leading: attach button 32pt, tinted secondary; long-press opens the media sheet.\n- Text input: 16pt, placeholder \"Message\", no border, 8pt vertical padding.\n- Trailing: send button appears only when there's text, 28pt circle, scales in over 120ms.\n- Reply-to state: a 40pt strip above the input with a 2pt accent bar, the quoted text truncated to one line, and an X to clear.\n- Typing indicator sits above the bar, fades in after 400ms of a peer typing, out after 3s of silence.\n- Safe area: the bar must sit above the home indicator, and the keyboard animation must not cause a jump on iOS 18.\n- Offline: the bar stays usable, sent messages show a clock glyph until acknowledged.", "purpose": "frontendImpl", "secondary": null, "mixed": false, "difficulty": 0.65, "slice": "pasted-context", "lang": "en"}
{"prompt": "is our eviction fallback safe?", "purpose": "review", "secondary": null, "mixed": false, "difficulty": 0.7, "slice": "boundary", "lang": "en"}
{"prompt": "support burden is dominated by three things — retention misconfiguration, push registration failures and pod evictions — and support keeps asking for documentation rather than fixes, which i suspect is the wrong instinct for at least two of them. work through each one and tell me whether the answer is docs, better defaults, a validating webhook, or actual engineering, with the reasoning laid out", "purpose": "planning", "secondary": null, "mixed": false, "difficulty": 0.75, "slice": "core", "lang": "en"}
{"prompt": "a customer's security team asked why the operator needs cluster-admin and the honest answer is that nobody trimmed the ClusterRole after the prototype. work out the minimum permissions the operator actually uses from the code, then write the page explaining each permission and why it's needed, in the tone of someone who expects to be challenged on every line", "purpose": "writing", "secondary": null, "mixed": false, "difficulty": 0.6, "slice": "core", "lang": "en"}
{"prompt": "we tell customers that messages within a thread are delivered in server-accept order, and i now think that's a claim about the accept path that the fanout path doesn't honour. rather than change the code first, i want the actual guarantee written down accurately — what holds, under what conditions it doesn't, and what a client should do if it cares", "purpose": "writing", "secondary": null, "mixed": false, "difficulty": 0.65, "slice": "boundary", "lang": "en"}
{"prompt": "messages arrive out of order for maybe one user in a thousand, here's a trace from one of them:\n\nsend  msg=01HR9K2M seq=4118  client_ts=11:02:14.221  server_ts=11:02:14.402  shard=7\nsend  msg=01HR9K2N seq=4119  client_ts=11:02:14.318  server_ts=11:02:14.396  shard=7\nfanout msg=01HR9K2N  to=4 devices  at=11:02:14.441\nfanout msg=01HR9K2M  to=4 devices  at=11:02:14.512\nack   msg=01HR9K2N  device=ios-88a1  at=11:02:14.602\nack   msg=01HR9K2M  device=ios-88a1  at=11:02:14.688\nrender order on device: 01HR9K2N then 01HR9K2M\n\nthe client sorts by server_ts, and as you can see the later message got the earlier server timestamp", "purpose": "debugging", "secondary": null, "mixed": false, "difficulty": 0.8, "slice": "pasted-context", "lang": "en"}
{"prompt": "le CI est rouge une fois sur cinq, toujours sur le même test d'intégration :\n\n--- FAIL: TestOperatorScalesDownIdleClusters (30.12s)\n    operator_test.go:141: expected 1 replica after idle timeout, got 3\n    operator_test.go:148: last reconcile at 2026-07-29T11:04:02Z, idle since 2026-07-29T11:02:31Z\n    operator_test.go:152: envtest apiserver logs:\n        W0729 11:04:01.882 1 dispatcher.go:210] slow webhook response: 4.1s\n        W0729 11:04:02.114 1 admission.go:88] mutating webhook \"defaults.lumen.io\" timed out\nFAIL\nFAIL    github.com/lumen/operator/internal/controller  62.441s\n\nen local, avec -count=20, jamais d'échec", "purpose": "debugging", "secondary": null, "mixed": false, "difficulty": 0.7, "slice": "pasted-context", "lang": "fr"}
{"prompt": "CRD we're about to publish. once this is in customers' clusters we can't take it back:\n\nspec:\n  versions:\n    - name: v1alpha1\n      served: true\n      storage: true\n      schema:\n        openAPIV3Schema:\n          type: object\n          properties:\n            spec:\n              type: object\n              properties:\n                replicas: { type: integer }\n                retention: { type: string }\n                storage: { type: string }\n                tuning:\n                  type: object\n                  x-kubernetes-preserve-unknown-fields: true\n              required: [replicas]\n  subresources: {}\n\nno status subresource, no defaulting, retention is a free-form string", "purpose": "review", "secondary": null, "mixed": false, "difficulty": 0.7, "slice": "pasted-context", "lang": "en"}
{"prompt": "on-call handover notes for the week, turn them into something the next person can actually use:\n\n- broker pods evicting on ephemeral storage, spool file is unbounded, ticket LUM-441, workaround is a cron that truncates it (yes really)\n- push delivery to ios is degraded, apple's feedback says BadDeviceToken en masse, suspect the token migration, dana is on it\n- compaction on shard 7 stalls if you let the flush queue fill, restart the node, it recovers in about 4 minutes\n- do not scale the operator deployment above 1, leader election is broken and two of them fight\n- the staging cluster's certs expire on the 12th, renewal is manual, instructions are in dana's dms somewhere\n- alert `BrokerLagHigh` fires nightly at 02:00 during compaction and is safe to ignore for 20 minutes", "purpose": "writing", "secondary": null, "mixed": false, "difficulty": 0.5, "slice": "pasted-context", "lang": "en"}
{"prompt": "storage config knobs we expose, and no documentation anywhere. write the operator's tuning reference:\n\ntuning:\n  block_cache_mb: 4096          # default 512\n  write_buffer_mb: 256          # default 64\n  max_write_buffers: 4          # default 2\n  compaction_threads: 8         # default 2\n  level0_stall_threshold: 8     # default 12\n  bloom_bits_per_key: 10        # default 10\n  compression: zstd             # none | lz4 | zstd\n  wal_sync: batch               # always | batch | never\n\nthings the team knows: block_cache_mb above 60% of container memory gets you OOMKilled; wal_sync=never loses acknowledged writes on power loss; compaction_threads above the core count makes stalls worse, not better", "purpose": "writing", "secondary": null, "mixed": false, "difficulty": 0.55, "slice": "pasted-context", "lang": "en"}
{"prompt": "upgrade notes needed for the retention change, here's what actually happens:\n\n- before: `retention` was a free-form string, we parsed \"7d\", \"1 week\", \"168h\" and silently defaulted to 7 days on anything we couldn't parse\n- after: only ISO-8601 durations are accepted, the CRD rejects everything else at admission\n- on upgrade, a migration job rewrites existing values it can parse and marks clusters it can't as `Degraded` with a message\n- clusters stuck in Degraded keep serving, they just refuse spec changes until retention is fixed\n- there's no automatic rollback; downgrading the operator leaves ISO values that the old parser reads as 7 days\n\nwrite the upgrade guide for self-hosted operators", "purpose": "writing", "secondary": null, "mixed": false, "difficulty": 0.55, "slice": "pasted-context", "lang": "en"}
{"prompt": "detox config and the CI job disagree about the simulator, so e2e never runs on CI:\n\n// .detoxrc.js\ndevices: {\n  simulator: { type: 'ios.simulator', device: { type: 'iPhone 16' } }\n},\nconfigurations: {\n  'ios.sim.debug': { device: 'simulator', app: 'ios.debug' }\n}\n\n# .github/workflows/e2e.yml\n- run: xcrun simctl list devices available | grep \"iPhone 15\"\n- run: yarn detox build --configuration ios.sim.release\n- run: yarn detox test --configuration ios.sim.release --cleanup\n\nerror: Failed to find a device by type = \"iPhone 16\"\nDetox can only run on: iPhone 15, iPhone 15 Pro, iPad Air (5th generation)", "purpose": "quickFix", "secondary": null, "mixed": false, "difficulty": 0.25, "slice": "pasted-context", "lang": "en"}
{"prompt": "three components render the same message row and they've drifted. one component, same visuals:\n\n// MessageBubble.tsx — used in the thread\n<View style={[s.bubble, mine && s.mine]}>\n  <Text style={s.body}>{m.body}</Text>\n  <Text style={s.ts}>{formatTimestamp(m.serverTs)}</Text>\n</View>\n\n// SearchResultRow.tsx\n<View style={s.row}>\n  <Text numberOfLines={2} style={s.body}>{m.body}</Text>\n  <Text style={s.ts}>{format(m.serverTs, 'HH:mm')}</Text>\n</View>\n\n// PinnedMessage.tsx\n<Pressable onPress={onJump} style={s.pinned}>\n  <Text numberOfLines={1}>{m.body}</Text>\n  <Text style={s.tsSmall}>{relativeTime(m.serverTs)}</Text>\n</Pressable>\n\nthree timestamp helpers too, all in different files", "purpose": "refactor", "secondary": null, "mixed": false, "difficulty": 0.5, "slice": "pasted-context", "lang": "en"}
{"prompt": "navigation params are typed three different ways and it's why the deep link bug keeps coming back:\n\n// AppNavigator.tsx\nexport type RootStackParamList = {\n  ThreadList: undefined\n  Thread: { threadId: string; highlight?: string }\n  Profile: { userId: string }\n}\n\n// ThreadScreen.tsx\ntype Props = { route: { params: { threadId: string; highlightMessage?: string } } }\n\n// deeplink.ts\nconst parse = (url: string): { screen: string; params: Record<string, any> } => ...\n\nthe highlight param is called `highlight` in one place and `highlightMessage` in another", "purpose": "refactor", "secondary": null, "mixed": false, "difficulty": 0.45, "slice": "pasted-context", "lang": "en"}
{"prompt": "test helpers duplicated across three packages, with the usual small differences:\n\n// internal/controller/testutil.go\nfunc newCluster(name string, replicas int32) *v1alpha1.MessageCluster { ... }\n\n// internal/webhook/helpers_test.go\nfunc makeCluster(ns, name string) *v1alpha1.MessageCluster { ... }   // sets defaults\n\n// test/e2e/fixtures.go\nfunc Cluster(opts ...ClusterOpt) *v1alpha1.MessageCluster { ... }    // sets defaults + status\n\nabout 60 call sites between them, and the webhook one sets a field the others don't", "purpose": "refactor", "secondary": null, "mixed": false, "difficulty": 0.5, "slice": "pasted-context", "lang": "en"}
{"prompt": "spool cap default to 8GB", "purpose": "quickFix", "secondary": null, "mixed": false, "difficulty": 0.15, "slice": "core", "lang": "en"}
{"prompt": "el placeholder dice «Mensage», falta una j", "purpose": "quickFix", "secondary": null, "mixed": false, "difficulty": 0.1, "slice": "core", "lang": "es"}
{"prompt": "mobile team wants to drop the old react native architecture and they can't until the notification module is rewritten, which nobody has scoped. before anyone starts, i'd like the migration mapped out: what depends on the old module, what the new one has to do, how we ship it without a big-bang release, and what we do about the two native modules a contractor wrote and nobody understands", "purpose": "planning", "secondary": null, "mixed": false, "difficulty": 0.85, "slice": "core", "lang": "en"}
{"prompt": "an audit is booked for october and it will produce findings we can't predict, which is a bad way to spend a quarter. i'd rather we found the obvious things first: how would you scope a pre-audit review of the message path, the operator's RBAC, the mobile token storage and the admin tooling, given about two weeks of one engineer's time", "purpose": "planning", "secondary": null, "mixed": false, "difficulty": 0.75, "slice": "boundary", "lang": "en"}
{"prompt": "consistency model is implemented and undocumented, which means every customer question about it gets a slightly different answer depending on who replies. write the public page: what a write acknowledgement means, what a read can and cannot see, what happens during an election, and be explicit about the guarantees we do not offer rather than quietly omitting them", "purpose": "writing", "secondary": null, "mixed": false, "difficulty": 0.65, "slice": "core", "lang": "en"}
{"prompt": "tuning knobs we expose through the CRD are documented as a list of field names with no explanation, and the dangerous ones look exactly like the harmless ones. write the tuning reference: what each knob does, sensible ranges, the interactions between them, and a prominent warning on the two that can lose acknowledged writes or get the pod OOMKilled", "purpose": "writing", "secondary": null, "mixed": false, "difficulty": 0.6, "slice": "boundary", "lang": "en"}
{"prompt": "operator's finalizer logic looks fine to me and yet we have three clusters stuck terminating for two days. work out whether the teardown path can genuinely fail forever, whether removing the finalizer before the update lands is possible, and what state a partially torn-down cluster leaves behind", "purpose": "review", "secondary": null, "mixed": false, "difficulty": 0.8, "slice": "boundary", "lang": "en"}
{"prompt": "admin console's cluster detail page is unusable on a phone, which is exactly where people open it during an incident, and the stat tiles overflow into a horizontal scroll that hides the conditions table entirely. make it work down to 320px without building a separate mobile view", "purpose": "frontendImpl", "secondary": null, "mixed": false, "difficulty": 0.55, "slice": "boundary", "lang": "en"}
{"prompt": "i want an honest read on whether our WAL's relaxed ordering is correct with four writer threads, and if it isn't, the fix — with a test that fails reliably on the current code under tsan", "purpose": "review", "secondary": "backendImpl", "mixed": true, "difficulty": 0.85, "slice": "mixed", "lang": "en"}
{"prompt": "scan and iterator both know about page pinning, and neither can be tested without a real page cache", "purpose": "refactor", "secondary": null, "mixed": false, "difficulty": 0.6, "slice": "core", "lang": "en"}
{"prompt": "how does the client decide a message is undelivered — is that a timeout, an ack, or the absence of one", "purpose": "review", "secondary": null, "mixed": false, "difficulty": 0.5, "slice": "boundary", "lang": "en"}
{"prompt": "go vet is failing on a captured loop var", "purpose": "quickFix", "secondary": null, "mixed": false, "difficulty": 0.2, "slice": "core", "lang": "en"}
{"prompt": "operator replicas back to 1 for now", "purpose": "quickFix", "secondary": null, "mixed": false, "difficulty": 0.2, "slice": "boundary", "lang": "en"}
{"prompt": "one device-lookup source for fanout", "purpose": "refactor", "secondary": null, "mixed": false, "difficulty": 0.5, "slice": "core", "lang": "en"}
{"prompt": "why is the leader taking 70% of reads?", "purpose": "review", "secondary": null, "mixed": false, "difficulty": 0.65, "slice": "boundary", "lang": "en"}
{"prompt": "push registration retries on every failure code including permanent ones, which is how we spent a day hammering apple with dead tokens", "purpose": "refactor", "secondary": null, "mixed": false, "difficulty": 0.5, "slice": "core", "lang": "en"}
{"prompt": "what does `has_more` actually mean on the messages endpoint when a page ends exactly on the last message", "purpose": "review", "secondary": null, "mixed": false, "difficulty": 0.5, "slice": "core", "lang": "en"}
{"prompt": "our alerting was assembled per-service by different people and pages for things that resolve themselves nightly, what would a coherent set of alerts look like", "purpose": "planning", "secondary": null, "mixed": false, "difficulty": 0.65, "slice": "boundary", "lang": "en"}
{"prompt": "the admin console needs a proper empty state for a namespace with no clusters, because right now you get a bare table header and people assume it's broken and file a ticket. design and build it: an explanation, the kubectl command that creates one, a link to the getting-started page, and the same treatment for a filtered view that matches nothing", "purpose": "frontendImpl", "secondary": "writing", "mixed": true, "difficulty": 0.45, "slice": "mixed", "lang": "en"}
{"prompt": "message row component, shared across screens", "purpose": "refactor", "secondary": null, "mixed": false, "difficulty": 0.45, "slice": "boundary", "lang": "en"}
{"prompt": "our cluster status pill uses four colours that are nearly indistinguishable on a projector and identical in greyscale, which came up when someone screenshared during an incident. give each status a distinct shape or glyph as well as a colour, keep the pill compact enough for the table, and make sure the degraded and progressing states read differently at a glance", "purpose": "frontendImpl", "secondary": null, "mixed": false, "difficulty": 0.45, "slice": "boundary", "lang": "en"}
{"prompt": "the spool file format and its replay behaviour are known to exactly two people, and one of them is on parental leave from November. write the internal reference: the on-disk layout, how segments are ordered, what happens on a checksum failure, what replay does with a partially written record, and what an operator can safely delete when a disk fills up", "purpose": "writing", "secondary": null, "mixed": false, "difficulty": 0.55, "slice": "core", "lang": "en"}
{"prompt": "is the session object in AsyncStorage a problem on a rooted device, or am i worrying about the wrong thing", "purpose": "review", "secondary": null, "mixed": false, "difficulty": 0.6, "slice": "core", "lang": "en"}
{"prompt": "a plain description of what happens between a client sending and every device rendering would help me a lot", "purpose": "review", "secondary": null, "mixed": false, "difficulty": 0.55, "slice": "boundary", "lang": "en"}
{"prompt": "design system tokens we're meant to be using, and the thread screen ignores half of them:\n\ncolors.surface           #0E1116   (dark) / #FFFFFF (light)\ncolors.surfaceRaised     #161B22 / #F6F8FA\ncolors.textPrimary       #E6EDF3 / #1F2328\ncolors.textSecondary     #8B949E / #59636E\ncolors.accent            #2F81F7\nspacing                  4 / 8 / 12 / 16 / 24 / 32\nradius                   sm 6, md 10, lg 16, pill 999\ntype                     body 16/22, caption 13/18, title 20/26\n\nthe thread screen has 11 hardcoded hex values, three magic paddings and its own font sizes. bring it onto the tokens without changing how it looks beyond what the tokens force", "purpose": "frontendImpl", "secondary": null, "mixed": false, "difficulty": 0.5, "slice": "pasted-context", "lang": "en"}
{"prompt": "support is guessing at what our error codes mean and inventing explanations for customers. build the reference table from the code, and where a code is genuinely unhelpful — three of them just say \"internal\" — change the message to something a human could act on", "purpose": "writing", "secondary": "quickFix", "mixed": true, "difficulty": 0.5, "slice": "mixed", "lang": "en"}
{"prompt": "thread list shows a stale last-message preview for about ten seconds after sending, then corrects itself", "purpose": "debugging", "secondary": null, "mixed": false, "difficulty": 0.55, "slice": "core", "lang": "en"}
{"prompt": "message reactions need a server-side aggregate rather than counting rows on every read, and the mobile team wants it this sprint", "purpose": "backendImpl", "secondary": null, "mixed": false, "difficulty": 0.55, "slice": "core", "lang": "en"}
{"prompt": "we need a way to mark a device's push token dead after a permanent failure code, and stop sending to it", "purpose": "backendImpl", "secondary": null, "mixed": false, "difficulty": 0.45, "slice": "boundary", "lang": "en"}
{"prompt": "metro bundler is fine but the app white-screens on android release builds only:\n\nFATAL EXCEPTION: mqt_native_modules\nProcess: chat.lumen.app, PID: 9912\ncom.facebook.react.common.JavascriptException: TypeError: Cannot read property 'prototype' of undefined\n\nThis error is located at:\n    in ThreadListScreen (created by SceneView)\n    in SceneView (created by NativeStackView)\n    in RNSScreenContentWrapper\n    in NativeStackNavigator\n    in AppNavigator (created by App)\n\n  at com.facebook.react.modules.core.ExceptionsManagerModule.reportException(ExceptionsManagerModule.java:65)\n  at java.lang.reflect.Method.invoke(Native Method)\n  at com.facebook.react.bridge.JavaMethodWrapper.invoke(JavaMethodWrapper.java:372)\n\ndebug builds are perfectly fine, and it started after we enabled hermes", "purpose": "debugging", "secondary": null, "mixed": false, "difficulty": 0.75, "slice": "pasted-context", "lang": "en"}
{"prompt": "query planner picks a different plan in prod than in staging for the identical query and stats:\n\n staging:\n Index Scan using idx_messages_thread_created on messages  (cost=0.56..812.44 rows=412 width=88)\n   Index Cond: ((thread_id = $1) AND (created_at > $2))\n   Filter: (deleted_at IS NULL)\n\n prod:\n Bitmap Heap Scan on messages  (cost=4412.10..214882.31 rows=88214 width=88)\n   Recheck Cond: (thread_id = $1)\n   Filter: ((created_at > $2) AND (deleted_at IS NULL))\n   Rows Removed by Filter: 1204118\n   ->  Bitmap Index Scan on idx_messages_thread  (cost=0.00..4390.05 rows=88214 width=0)\n\nsame postgres version, same indexes, ANALYZE run this morning on both", "purpose": "debugging", "secondary": null, "mixed": false, "difficulty": 0.8, "slice": "pasted-context", "lang": "en"}
{"prompt": "sanitizer output from the storage engine tests, only under -j16:\n\n==41221==ERROR: AddressSanitizer: heap-use-after-free on address 0x60700000dfb8 at pc 0x0000004c1a2f\nREAD of size 8 at 0x60700000dfb8 thread T7\n    #0 0x4c1a2f in lumen::store::PageCache::pin(uint64_t) src/store/page_cache.cc:141\n    #1 0x4c88c0 in lumen::store::Iterator::next() src/store/iterator.cc:88\n    #2 0x4d1102 in lumen::exec::ScanNode::Next() src/exec/scan.cc:52\n\n0x60700000dfb8 is located 8 bytes inside of 72-byte region\nfreed by thread T3 here:\n    #0 0x49a112 in operator delete(void*)\n    #1 0x4c0f40 in lumen::store::PageCache::evict(uint64_t) src/store/page_cache.cc:212\n\npreviously allocated by thread T3 here:\n    #1 0x4c0221 in lumen::store::PageCache::load(uint64_t) src/store/page_cache.cc:88\n\nsingle-threaded runs are clean, and this has probably been there for months", "purpose": "debugging", "secondary": null, "mixed": false, "difficulty": 0.85, "slice": "pasted-context", "lang": "en"}
{"prompt": "pods get evicted every few hours and the events are not telling me much:\n\nEvents:\n  Type     Reason     Age                 From     Message\n  ----     ------     ----                ----     -------\n  Warning  Evicted    32m                 kubelet  The node was low on resource: ephemeral-storage. Container broker was using 41Gi, which exceeds its request of 2Gi.\n  Normal   Killing    32m                 kubelet  Stopping container broker\n  Warning  Evicted    18m                 kubelet  The node was low on resource: ephemeral-storage. Container broker was using 39Gi, which exceeds its request of 2Gi.\n  Normal   Pulled     17m                 kubelet  Container image \"ghcr.io/lumen/broker:2.11.4\" already present on machine\n  Warning  BackOff    4m (x12 over 16m)   kubelet  Back-off restarting failed container\n\nthe broker writes a spool file to /tmp and we thought that was bounded", "purpose": "debugging", "secondary": null, "mixed": false, "difficulty": 0.65, "slice": "pasted-context", "lang": "en"}
{"prompt": "react native app drops frames scrolling long threads, here's the profiler summary:\n\nJS thread: 41 fps avg, 12 fps min\nUI thread: 58 fps avg\n\nTop offenders (self time, 10s sample):\n  MessageBubble render                    2841ms   (3,912 renders)\n  useThreadMessages selector              1102ms   (3,912 calls)\n  formatTimestamp                          884ms   (11,736 calls)\n  Animated.timing                          412ms\n  FlatList onViewableItemsChanged          388ms\n\nRe-render reasons for MessageBubble:\n  props.message changed          12%\n  props.onLongPress changed      71%\n  context value changed          17%\n\nthe list has 400 items and windowSize is at the default", "purpose": "debugging", "secondary": null, "mixed": false, "difficulty": 0.7, "slice": "pasted-context", "lang": "en"}
{"prompt": "nightly compaction stalled and the only clue is this:\n\n[compaction] level=1 files=41 target=L2 started\n[compaction] level=1 read 2.1GB in 41s\n[compaction] level=2 merge started, output sst=00041.sst\n[compaction] level=2 merge progress 12% after 300s\n[compaction] level=2 merge progress 12% after 600s\n[compaction] level=2 merge progress 12% after 900s\n[bg] flush queue depth 8 (max 8), writes stalled\n[bg] write stall total 14m22s\n[compaction] level=2 merge progress 13% after 1200s\n\nthe machine is not CPU bound, iostat shows 4% utilisation, and there is 400GB free", "purpose": "debugging", "secondary": null, "mixed": false, "difficulty": 0.8, "slice": "pasted-context", "lang": "en"}
{"prompt": "someone's proposed this for the operator's finalizer handling. sound?\n\nfunc (r *ClusterReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Result, error) {\n\tvar c v1alpha1.MessageCluster\n\tif err := r.Get(ctx, req.NamespacedName, &c); err != nil {\n\t\treturn ctrl.Result{}, client.IgnoreNotFound(err)\n\t}\n\tif !c.DeletionTimestamp.IsZero() {\n\t\tif err := r.teardown(ctx, &c); err != nil {\n\t\t\treturn ctrl.Result{RequeueAfter: 10 * time.Second}, nil\n\t\t}\n\t\tcontrollerutil.RemoveFinalizer(&c, finalizerName)\n\t\treturn ctrl.Result{}, r.Update(ctx, &c)\n\t}\n\tcontrollerutil.AddFinalizer(&c, finalizerName)\n\tif err := r.Update(ctx, &c); err != nil {\n\t\treturn ctrl.Result{}, err\n\t}\n\treturn r.reconcileNormal(ctx, &c)\n}", "purpose": "review", "secondary": null, "mixed": false, "difficulty": 0.75, "slice": "pasted-context", "lang": "en"}
{"prompt": "por favor, revisa este helm chart antes de que lo subamos al repo público:\n\napiVersion: apps/v1\nkind: StatefulSet\nspec:\n  replicas: {{ .Values.replicas }}\n  template:\n    spec:\n      securityContext:\n        runAsUser: 0\n      containers:\n        - name: broker\n          image: \"ghcr.io/lumen/broker:{{ .Values.tag | default \"latest\" }}\"\n          env:\n            - name: ADMIN_TOKEN\n              value: {{ .Values.adminToken | quote }}\n          ports:\n            - containerPort: 9092\n              hostPort: 9092\n          volumeMounts:\n            - name: spool\n              mountPath: /tmp/spool\n      volumes:\n        - name: spool\n          emptyDir: {}\n\nlo van a instalar clientes en sus propios clústeres", "purpose": "review", "secondary": null, "mixed": false, "difficulty": 0.7, "slice": "pasted-context", "lang": "es"}
{"prompt": "hook that every screen uses. i keep being told it's fine and the app disagrees:\n\nexport function useThreadMessages(threadId: string) {\n  const [messages, setMessages] = useState<Message[]>([])\n  const { socket } = useSocket()\n\n  useEffect(() => {\n    let cancelled = false\n    api.messages(threadId).then(m => { if (!cancelled) setMessages(m) })\n    const off = socket.on('message', (m: Message) => {\n      if (m.threadId === threadId) setMessages(prev => [...prev, m].sort(byServerTs))\n    })\n    return () => { cancelled = true; off() }\n  }, [threadId, socket])\n\n  const onLongPress = (id: string) => actions.openMenu(id)\n  return { messages, onLongPress }\n}", "purpose": "review", "secondary": null, "mixed": false, "difficulty": 0.6, "slice": "pasted-context", "lang": "en"}
{"prompt": "buffer pool eviction policy, inherited and never questioned:\n\nPage* PageCache::Evict() {\n  std::lock_guard<std::mutex> g(mu_);\n  auto victim = lru_.back();\n  while (victim && victim->pin_count.load() > 0) {\n    victim = victim->prev;\n  }\n  if (!victim) {\n    victim = lru_.back();          // give up, take the last one anyway\n  }\n  lru_.erase(victim);\n  map_.erase(victim->page_id);\n  return victim;\n}\n\nis the fallback there for a reason anyone can defend, and what does it do to a pinned page under load?", "purpose": "review", "secondary": null, "mixed": false, "difficulty": 0.8, "slice": "pasted-context", "lang": "en"}
{"prompt": "security asked about our token handling in the mobile app and this is what i found:\n\n// auth/storage.ts\nimport AsyncStorage from '@react-native-async-storage/async-storage'\n\nexport const saveSession = (s: Session) =>\n  AsyncStorage.setItem('session', JSON.stringify(s))\n\nexport const loadSession = async (): Promise<Session | null> => {\n  const raw = await AsyncStorage.getItem('session')\n  return raw ? JSON.parse(raw) : null\n}\n\n// api/client.ts\nconst client = axios.create({ baseURL: API })\nclient.interceptors.request.use(async cfg => {\n  const s = await loadSession()\n  if (s) cfg.headers.Authorization = `Bearer ${s.accessToken}`\n  return cfg\n})\n\nrefresh tokens live in the same object, ttl 90 days", "purpose": "review", "secondary": null, "mixed": false, "difficulty": 0.65, "slice": "pasted-context", "lang": "en"}
{"prompt": "raw notes from the incident call, we owe the customer a written explanation by tomorrow:\n\n- 09:12 customer reports messages not arriving on ios\n- 09:20 we confirm push failures at 98%, android unaffected\n- 09:31 rotated the apns key on monday, suspicion falls there\n- 09:52 rules out the key, the error is BadDeviceToken not auth\n- 10:14 discover the token migration job re-encoded tokens as base64 twice\n- 10:31 stopped the job, 41k tokens affected out of 220k\n- 11:02 re-registration push sent via a silent notification, most devices recover\n- 12:40 remaining 6k devices need to open the app to re-register\n- no messages were lost, they were queued and delivered on re-registration", "purpose": "writing", "secondary": null, "mixed": false, "difficulty": 0.55, "slice": "pasted-context", "lang": "en"}
{"prompt": "my commit is ready and i always write terrible messages. the diff:\n\ndiff --git a/src/exec/scan.cc b/src/exec/scan.cc\n@@ -41,12 +41,19 @@ Status ScanNode::Next(Batch* out) {\n-  while (out->size() < batch_size_) {\n-    auto page = cache_->Pin(iter_->page_id());\n-    out->Append(iter_->Value());\n-    cache_->Unpin(page);\n-    iter_->Next();\n-  }\n+  auto page = cache_->Pin(iter_->page_id());\n+  auto guard = absl::MakeCleanup([&] { cache_->Unpin(page); });\n+  while (out->size() < batch_size_) {\n+    if (iter_->page_id() != page->id) {\n+      cache_->Unpin(page);\n+      page = cache_->Pin(iter_->page_id());\n+    }\n+    out->Append(iter_->Value());\n+    iter_->Next();\n+  }\n   return Status::OK();\n }\n\nwe use conventional commits and the body should explain why, not what", "purpose": "writing", "secondary": null, "mixed": false, "difficulty": 0.3, "slice": "pasted-context", "lang": "en"}
{"prompt": "schreib bitte die Release Notes für 2.12 aus diesen Tickets:\n\nLUM-402  Broker: Spool-Datei wird jetzt bei 2 GB rotiert statt unbegrenzt zu wachsen\nLUM-417  Operator: Leader Election repariert, mehrere Replicas sind jetzt unterstützt\nLUM-421  Storage: Kompaktierung blockiert nicht mehr, wenn die Flush-Queue voll ist\nLUM-433  API: `retention` akzeptiert jetzt nur noch ISO-8601-Dauern, alte Werte werden beim Upgrade migriert\nLUM-441  Mobile: Push-Registrierung wird bei ungültigem Token automatisch erneuert\nLUM-448  Breaking: `tuning.wal_sync=never` wurde entfernt\n\nZielgruppe sind Betreiber, die selbst hosten", "purpose": "writing", "secondary": null, "mixed": false, "difficulty": 0.4, "slice": "pasted-context", "lang": "de"}
{"prompt": "gostava de ter um documento sobre o modelo de consistência, a partir do que está no código:\n\n- as escritas vão para o líder do shard e são replicadas para dois seguidores\n- o ack ao cliente acontece depois de um seguidor confirmar, não os dois\n- as leituras podem ir para qualquer réplica, exceto quando o cliente envia o cabeçalho `X-Read-Your-Writes`\n- nesse caso a leitura vai para o líder e espera pelo LSN indicado pelo cliente\n- durante uma eleição, as escritas falham com 503 durante 2 a 5 segundos\n- não há garantia de leitura monotónica entre réplicas diferentes\n\nescreve isto como página de documentação pública, com os avisos que forem precisos", "purpose": "writing", "secondary": null, "mixed": false, "difficulty": 0.6, "slice": "pasted-context", "lang": "pt"}
{"prompt": "eslint and the react compiler disagree about our hooks, and i just want a green build:\n\nsrc/hooks/useThreadMessages.ts\n  14:6   warning  React Hook useEffect has a missing dependency: 'api'   react-hooks/exhaustive-deps\n  22:9   error    Ref values ('cancelled.current') should not be read during render  react-hooks/react-compiler\n\nsrc/screens/ThreadListScreen.tsx\n  41:11  error    Component definition is missing display name           react/display-name\n  88:3   warning  Fast refresh only works when a file only exports components  react-refresh/only-export-components\n\nsrc/components/MessageBubble.tsx\n 102:5   error    'onLongPress' changes on every render, wrap it in useCallback  react-hooks/react-compiler\n\n✖ 5 problems (3 errors, 2 warnings)", "purpose": "quickFix", "secondary": null, "mixed": false, "difficulty": 0.3, "slice": "pasted-context", "lang": "en"}
{"prompt": "clang-tidy on the storage engine, the new checks are noisy but two look real:\n\nsrc/store/page_cache.cc:141:10: warning: 'pin' is called on a possibly-null pointer [bugprone-unchecked-optional-access]\nsrc/store/page_cache.cc:212:5: warning: loop variable 'victim' is copied but only used as const reference [performance-for-range-copy]\nsrc/exec/scan.cc:88:22: warning: narrowing conversion from 'size_t' to 'int' [bugprone-narrowing-conversions]\nsrc/wal/writer.cc:44:9: warning: atomic operation on 'latest_lsn_' uses relaxed ordering, consider seq_cst [concurrency-mt-unsafe]\nsrc/util/arena.cc:19:1: warning: function 'Allocate' exceeds recommended size/complexity thresholds [readability-function-size]\n\n5 warnings generated, CI treats them as errors since last week", "purpose": "quickFix", "secondary": null, "mixed": false, "difficulty": 0.35, "slice": "pasted-context", "lang": "en"}
{"prompt": "kustomize diff between our two environments, one of these is why prod restarts more:\n\n--- base/broker/statefulset.yaml\n+++ overlays/prod/statefulset.yaml\n@@\n   resources:\n     requests:\n-      memory: 2Gi\n-      ephemeral-storage: 2Gi\n+      memory: 8Gi\n+      ephemeral-storage: 2Gi\n     limits:\n-      memory: 4Gi\n+      memory: 8Gi\n@@\n   env:\n-    - name: BLOCK_CACHE_MB\n-      value: \"512\"\n+    - name: BLOCK_CACHE_MB\n+      value: \"6144\"\n@@\n   terminationGracePeriodSeconds: 30\n+  # prod only\n+  livenessProbe:\n+    initialDelaySeconds: 5\n+    periodSeconds: 5\n+    failureThreshold: 2", "purpose": "quickFix", "secondary": null, "mixed": false, "difficulty": 0.35, "slice": "pasted-context", "lang": "en"}
{"prompt": "prometheus rule that pages us every night at 02:00 and is always benign:\n\n- alert: BrokerLagHigh\n  expr: max by (shard) (broker_consumer_lag) > 10000\n  for: 2m\n  labels:\n    severity: page\n  annotations:\n    summary: \"broker lag on shard {{ $labels.shard }}\"\n\nnightly pattern:\n  02:00  lag climbs to ~40k during compaction\n  02:18  lag drains to under 1k\n  02:19  alert resolves\n\nduring a real incident in june, lag went to 400k and stayed there for an hour", "purpose": "quickFix", "secondary": null, "mixed": false, "difficulty": 0.3, "slice": "pasted-context", "lang": "en"}
{"prompt": "dependabot on the mobile app, four PRs open and i want to merge what's safe:\n\nreact-native  0.79.2 -> 0.80.0     (major-ish, they don't do semver properly)\n@react-navigation/native  6.1.18 -> 7.0.2   (breaking: linking config shape changed)\naxios  1.7.4 -> 1.11.2            (advisory GHSA-jr83, SSRF via redirect)\ndate-fns  3.6.0 -> 4.1.0          (breaking: timezone handling moved to a separate package)\n\nour app pins react-native in three places: package.json, ios/Podfile.lock and the expo config plugin", "purpose": "quickFix", "secondary": null, "mixed": false, "difficulty": 0.35, "slice": "pasted-context", "lang": "en"}
{"prompt": "this reconciler does everything and i want the same behaviour in pieces i can test:\n\nfunc (r *ClusterReconciler) reconcileNormal(ctx context.Context, c *v1alpha1.MessageCluster) (ctrl.Result, error) {\n\t// 40 lines: ensure statefulset, diff spec, update if drifted\n\t// 30 lines: ensure service, headless service, and the ingress if enabled\n\t// 25 lines: ensure configmap from spec.tuning with defaults applied inline\n\t// 35 lines: ensure PVCs, resize if storage grew, refuse if it shrank\n\t// 50 lines: compute status from pod conditions and write it back\n\t// 20 lines: emit events for every transition\n\treturn ctrl.Result{RequeueAfter: time.Minute}, nil\n}\n\n200 lines in one function, one test that spins up envtest and asserts on the end state", "purpose": "refactor", "secondary": null, "mixed": false, "difficulty": 0.65, "slice": "pasted-context", "lang": "en"}
{"prompt": "error handling in the storage layer, three styles in one file:\n\nStatus PageCache::Load(uint64_t id, Page** out) {\n  if (!map_.contains(id)) return Status::NotFound(\"page\");\n  ...\n}\n\nPage* PageCache::Pin(uint64_t id) {\n  auto it = map_.find(id);\n  if (it == map_.end()) { LOG(FATAL) << \"pin of unknown page \" << id; }\n  ...\n}\n\nabsl::StatusOr<Page*> PageCache::Fetch(uint64_t id) {\n  ...\n}\n\nsame class, three conventions, and one of them crashes the process on a bad id", "purpose": "refactor", "secondary": null, "mixed": false, "difficulty": 0.6, "slice": "pasted-context", "lang": "en"}
{"prompt": "quatre endroits construisent la même requête de fanout, avec des différences subtiles :\n\n// fanout.go\ndevices, _ := f.devices.For(ctx, m.ThreadID)\n\n// presence.go\nrows, _ := db.Query(ctx, `SELECT device_id FROM devices WHERE thread_id = $1 AND active`, tid)\n\n// admin/tools/resend.go\nrows, _ := db.Query(ctx, `SELECT device_id FROM devices WHERE thread_id = $1`, tid)\n\n// push/retry.go\ndevices := cache.Devices(tid)  // peut être périmé de 5 minutes\n\nune seule source, s'il te plaît, et sans changer le comportement du chemin critique", "purpose": "refactor", "secondary": null, "mixed": false, "difficulty": 0.6, "slice": "pasted-context", "lang": "fr"}
{"prompt": "config plumbing in the operator, currently five layers deep:\n\ndefaults := DefaultTuning()\nif c.Spec.Tuning != nil {\n    merged := mergeMaps(defaults.AsMap(), c.Spec.Tuning.AsMap())\n    if env := os.Getenv(\"LUMEN_TUNING_OVERRIDE\"); env != \"\" {\n        var override map[string]any\n        _ = json.Unmarshal([]byte(env), &override)\n        merged = mergeMaps(merged, override)\n    }\n    if cm, err := r.getLegacyConfigMap(ctx, c); err == nil {\n        merged = mergeMaps(cm.Data, merged)   // note: legacy loses\n    }\n    tuning = TuningFromMap(merged)\n} else {\n    tuning = defaults\n}\n\nsame resolved values, one obvious precedence order", "purpose": "refactor", "secondary": null, "mixed": false, "difficulty": 0.6, "slice": "pasted-context", "lang": "fr"}
{"prompt": "quarter planning, and this is what landed in my inbox. i need a sequenced plan out of it:\n\n- self-hosted customers want a supported upgrade path between minor versions; today they redeploy and hope\n- two customers have asked for multi-region, one of them contractually\n- the mobile team wants to drop the old architecture and cannot until the notification module is rewritten\n- storage wants six weeks to finish the compaction work, otherwise the stalls continue\n- support burden is dominated by three things: retention config, push registration, and pod evictions\n- we have one platform engineer and they're on parental leave from November\n- there's a security audit booked for October that will produce work we can't predict", "purpose": "planning", "secondary": null, "mixed": false, "difficulty": 0.9, "slice": "pasted-context", "lang": "en"}
{"prompt": "customer requirement we've signed up to, and nobody has thought about how:\n\n\"Message data for EU tenants must remain within the EU, including backups, logs and any derived data such as search indexes. Cross-region replication is permitted only between EU regions. Support staff outside the EU must not be able to read message content, though they may see metadata necessary for support. The customer requires evidence of this control, not an assurance.\"\n\nwe currently have one region, logs go to a US SaaS, and support has a debug tool that dumps message bodies. i want the plan and an honest list of what we'd have to give up", "purpose": "planning", "secondary": null, "mixed": false, "difficulty": 0.9, "slice": "pasted-context", "lang": "en"}
{"prompt": "spec for the cluster detail page in our admin console, build it in react:\n\nCluster detail\n- Header: cluster name, namespace as a muted subtitle, a status pill (Ready / Progressing / Degraded / Unknown) and a kebab menu with Edit, Restart and Delete.\n- Summary strip: four stat tiles — replicas ready, storage used vs requested, message rate, consumer lag — each with a 24h sparkline and a click-through to metrics.\n- Conditions table: type, status, reason, message, last transition, newest first, with long messages truncated and expandable.\n- Events panel: last 50 events, warning ones flagged, auto-refreshing every 10 seconds without jumping the scroll position.\n- Degraded state: a banner above the summary explaining the condition in plain language with a link to the matching docs page.\n- Everything must be readable at 320px wide because people open this on phones during incidents.", "purpose": "frontendImpl", "secondary": null, "mixed": false, "difficulty": 0.65, "slice": "pasted-context", "lang": "en"}
{"prompt": "accessibility findings from a customer's audit of our mobile app, prioritise and implement:\n\n1. Message bubbles are announced as \"button, text\" with no sender or timestamp; VoiceOver users cannot tell who wrote what.\n2. The send button has no accessibility label, only an icon.\n3. Contrast on the timestamp text is 2.8:1 against the bubble background.\n4. The typing indicator is announced repeatedly, interrupting reading.\n5. Long-press is the only way to react to a message; there is no accessible alternative.\n6. Dynamic Type above the default clips the reply bar and hides the send button entirely.\n7. Focus order in the thread jumps from the header to the reply bar, skipping the message list.", "purpose": "frontendImpl", "secondary": null, "mixed": false, "difficulty": 0.7, "slice": "pasted-context", "lang": "en"}
{"prompt": "api spec we agreed with the mobile team, needs building on the server:\n\nGET /v2/threads/{id}/messages\n  query: before (message id), after (message id), limit (default 50, max 200)\n  exactly one of before/after may be given; neither means newest page\n  response: { data: Message[], has_more: boolean, oldest_id, newest_id }\n  Message: { id, thread_id, author_id, body, server_ts, edited_at?, deleted: bool, reactions: {emoji: count} }\n  deleted messages come back with body omitted and deleted: true, they still occupy a position\n  reads must be consistent within a page — no message may appear twice across pages if nothing changed\n  a client with X-Read-Your-Writes: <lsn> must not see a page missing its own just-sent message", "purpose": "backendImpl", "secondary": null, "mixed": false, "difficulty": 0.7, "slice": "pasted-context", "lang": "en"}
{"prompt": "axios advisory bump on the mobile app", "purpose": "quickFix", "secondary": null, "mixed": false, "difficulty": 0.2, "slice": "core", "lang": "en"}
{"prompt": "unread badge counts deleted messages", "purpose": "quickFix", "secondary": null, "mixed": false, "difficulty": 0.25, "slice": "core", "lang": "en"}
{"prompt": "detox targets iPhone 15 on CI", "purpose": "quickFix", "secondary": null, "mixed": false, "difficulty": 0.2, "slice": "core", "lang": "en"}
{"prompt": "BrokerLagHigh needs a 20 minute for-clause", "purpose": "quickFix", "secondary": null, "mixed": false, "difficulty": 0.25, "slice": "boundary", "lang": "en"}
{"prompt": "drop hostPort from the broker chart", "purpose": "quickFix", "secondary": null, "mixed": false, "difficulty": 0.25, "slice": "boundary", "lang": "en"}
{"prompt": "context cancel is discarded in the reconciler", "purpose": "quickFix", "secondary": null, "mixed": false, "difficulty": 0.25, "slice": "boundary", "lang": "en"}
{"prompt": "block cache 6GB in an 8GB limit", "purpose": "quickFix", "secondary": null, "mixed": false, "difficulty": 0.3, "slice": "boundary", "lang": "en"}
{"prompt": "le champ `retention` accepte encore n'importe quoi", "purpose": "quickFix", "secondary": null, "mixed": false, "difficulty": 0.25, "slice": "boundary", "lang": "fr"}
{"prompt": "typing indicator should fade, not pop", "purpose": "frontendImpl", "secondary": null, "mixed": false, "difficulty": 0.25, "slice": "core", "lang": "en"}
{"prompt": "our getting-started guide assumes a cluster with cluster-admin, a default storage class and no admission policies, which describes approximately none of our self-hosted customers. rewrite it for someone installing into a restricted namespace, including the values they'll need to override, and be explicit about what will fail and how the failure looks", "purpose": "writing", "secondary": null, "mixed": false, "difficulty": 0.55, "slice": "boundary", "lang": "en"}
{"prompt": "the iterator rewrite makes sequential scans twice as fast and point-lookup misses nearly three times slower, with allocations up by an order of magnitude on mixed workloads. our production traffic is mostly point lookups. read the code alongside the benchmark and tell me whether the regression is inherent to the design or an artefact of how the batch buffer is sized", "purpose": "review", "secondary": null, "mixed": false, "difficulty": 0.8, "slice": "boundary", "lang": "en"}
{"prompt": "send button needs a label for VoiceOver", "purpose": "frontendImpl", "secondary": null, "mixed": false, "difficulty": 0.2, "slice": "core", "lang": "en"}
{"prompt": "pinned message strip above the list", "purpose": "frontendImpl", "secondary": null, "mixed": false, "difficulty": 0.35, "slice": "core", "lang": "en"}
{"prompt": "status pill colours are too similar", "purpose": "frontendImpl", "secondary": null, "mixed": false, "difficulty": 0.25, "slice": "core", "lang": "en"}
{"prompt": "sparklines on the cluster stat tiles", "purpose": "frontendImpl", "secondary": null, "mixed": false, "difficulty": 0.4, "slice": "core", "lang": "en"}
{"prompt": "die Zeitstempel sind zu blass", "purpose": "frontendImpl", "secondary": null, "mixed": false, "difficulty": 0.2, "slice": "core", "lang": "de"}
{"prompt": "reply bar jumps when the keyboard opens", "purpose": "frontendImpl", "secondary": null, "mixed": false, "difficulty": 0.35, "slice": "boundary", "lang": "en"}
{"prompt": "events panel scroll jumps on refresh", "purpose": "frontendImpl", "secondary": null, "mixed": false, "difficulty": 0.3, "slice": "boundary", "lang": "en"}
{"prompt": "conditions table needs a newest-first sort", "purpose": "frontendImpl", "secondary": null, "mixed": false, "difficulty": 0.25, "slice": "boundary", "lang": "en"}
{"prompt": "`highlightMessage` everywhere, pick one name", "purpose": "refactor", "secondary": null, "mixed": false, "difficulty": 0.3, "slice": "core", "lang": "en"}
{"prompt": "split reconcileNormal into steps", "purpose": "refactor", "secondary": null, "mixed": false, "difficulty": 0.5, "slice": "core", "lang": "en"}
{"prompt": "les helpers de test dans un seul paquet", "purpose": "refactor", "secondary": null, "mixed": false, "difficulty": 0.4, "slice": "core", "lang": "fr"}
{"prompt": "`PageCache::Fetch` naming, be consistent", "purpose": "refactor", "secondary": null, "mixed": false, "difficulty": 0.35, "slice": "boundary", "lang": "en"}
{"prompt": "pull the tuning merge into one function", "purpose": "refactor", "secondary": null, "mixed": false, "difficulty": 0.45, "slice": "boundary", "lang": "en"}
{"prompt": "inline `makeCluster`, one caller left", "purpose": "refactor", "secondary": null, "mixed": false, "difficulty": 0.2, "slice": "boundary", "lang": "en"}
{"prompt": "comment the memory ordering in wal/writer", "purpose": "writing", "secondary": null, "mixed": false, "difficulty": 0.4, "slice": "core", "lang": "en"}
{"prompt": "upgrade notes for the retention change", "purpose": "writing", "secondary": null, "mixed": false, "difficulty": 0.4, "slice": "core", "lang": "en"}
{"prompt": "resumo do incidente de push, em português", "purpose": "writing", "secondary": null, "mixed": false, "difficulty": 0.35, "slice": "core", "lang": "pt"}
{"prompt": "document the minimum RBAC we need", "purpose": "writing", "secondary": null, "mixed": false, "difficulty": 0.4, "slice": "boundary", "lang": "en"}
{"prompt": "PR description for the spool rotation", "purpose": "writing", "secondary": null, "mixed": false, "difficulty": 0.25, "slice": "boundary", "lang": "en"}
{"prompt": "who pins pages during a scan?", "purpose": "review", "secondary": null, "mixed": false, "difficulty": 0.6, "slice": "core", "lang": "en"}
{"prompt": "¿el fanout garantiza el orden por hilo?", "purpose": "review", "secondary": null, "mixed": false, "difficulty": 0.6, "slice": "core", "lang": "es"}
{"prompt": "walk me through leader election here", "purpose": "review", "secondary": null, "mixed": false, "difficulty": 0.6, "slice": "boundary", "lang": "en"}
{"prompt": "threads reorder themselves on reconnect", "purpose": "debugging", "secondary": null, "mixed": false, "difficulty": 0.6, "slice": "core", "lang": "en"}
{"prompt": "release build white-screens, debug is fine", "purpose": "debugging", "secondary": null, "mixed": false, "difficulty": 0.7, "slice": "core", "lang": "en"}
{"prompt": "reconcile loop spins at 60/s", "purpose": "debugging", "secondary": null, "mixed": false, "difficulty": 0.7, "slice": "boundary", "lang": "en"}
{"prompt": "warum verlieren wir jede Nacht Push-Tokens?", "purpose": "debugging", "secondary": null, "mixed": false, "difficulty": 0.65, "slice": "boundary", "lang": "de"}
{"prompt": "presence endpoint for a thread", "purpose": "backendImpl", "secondary": null, "mixed": false, "difficulty": 0.45, "slice": "core", "lang": "en"}
{"prompt": "design the EU-only story, then start on logs", "purpose": "planning", "secondary": "backendImpl", "mixed": true, "difficulty": 0.85, "slice": "mixed", "lang": "en"}
{"prompt": "shape the upgrade path, then write the migration", "purpose": "planning", "secondary": "backendImpl", "mixed": true, "difficulty": 0.8, "slice": "mixed", "lang": "en"}
{"prompt": "back on the push thing", "purpose": "debugging", "secondary": null, "mixed": false, "difficulty": 0.5, "slice": "vague-eval", "lang": "en"}
{"prompt": "finish what dana started", "purpose": "backendImpl", "secondary": null, "mixed": false, "difficulty": 0.5, "slice": "vague-eval", "lang": "en"}
{"prompt": "smoother", "purpose": "frontendImpl", "secondary": null, "mixed": false, "difficulty": 0.35, "slice": "vague-eval", "lang": "en"}
{"prompt": "operator, again", "purpose": "debugging", "secondary": null, "mixed": false, "difficulty": 0.5, "slice": "vague-eval", "lang": "en"}
{"prompt": "do the thing from the handover notes", "purpose": "quickFix", "secondary": null, "mixed": false, "difficulty": 0.45, "slice": "vague-eval", "lang": "en"}
{"prompt": "algo rápido antes de la demo", "purpose": "quickFix", "secondary": null, "mixed": false, "difficulty": 0.4, "slice": "vague-eval", "lang": "es"}
{"prompt": "next chunk of the storage work", "purpose": "backendImpl", "secondary": null, "mixed": false, "difficulty": 0.55, "slice": "vague-eval", "lang": "en"}
{"prompt": "whatever unblocks QA", "purpose": "debugging", "secondary": null, "mixed": false, "difficulty": 0.5, "slice": "vague-eval", "lang": "en"}
{"prompt": "tidy before review", "purpose": "refactor", "secondary": null, "mixed": false, "difficulty": 0.4, "slice": "vague-eval", "lang": "en"}
{"prompt": "same treatment as the thread screen", "purpose": "frontendImpl", "secondary": null, "mixed": false, "difficulty": 0.45, "slice": "vague-eval", "lang": "en"}
{"prompt": "もう一度、あの通知の件", "purpose": "debugging", "secondary": null, "mixed": false, "difficulty": 0.5, "slice": "vague-eval", "lang": "ja"}
{"prompt": "keep going on the console", "purpose": "frontendImpl", "secondary": null, "mixed": false, "difficulty": 0.45, "slice": "vague-eval", "lang": "en"}
{"prompt": "plan for next quarter", "purpose": "planning", "secondary": null, "mixed": false, "difficulty": 0.6, "slice": "vague-eval", "lang": "en"}
{"prompt": "anything you think matters", "purpose": "review", "secondary": null, "mixed": false, "difficulty": 0.5, "slice": "vague-eval", "lang": "en"}
{"prompt": "multi-region is now contractual for one customer and vaguely promised to another, and we've never run more than one region. i need to understand what it means for us before anyone commits to a date: whether we replicate at the storage layer or the application layer, what happens to message ordering across regions, how a client picks a region, and what our failover story would actually be when the network partitions rather than when a region cleanly disappears", "purpose": "planning", "secondary": null, "mixed": false, "difficulty": 0.9, "slice": "core", "lang": "en"}
{"prompt": "self-hosted customers currently upgrade by redeploying the chart and hoping, which has gone badly twice this quarter, both times because a CRD field changed shape. i want a real upgrade story designed: version skew we support, how CRD migrations run, what the operator does when it finds resources it doesn't understand, whether we can roll back at all, and how a customer knows it worked", "purpose": "planning", "secondary": null, "mixed": false, "difficulty": 0.85, "slice": "core", "lang": "en"}
{"prompt": "read-your-writes currently pins reads to the leader, which is why the leader carries most of our read traffic on the busiest threads. the proposal is per-client LSN tracking with follower reads that wait, and i can see three ways it goes wrong with mobile clients that reconnect constantly. talk me through the design space and what you'd actually recommend for our size", "purpose": "planning", "secondary": null, "mixed": false, "difficulty": 0.9, "slice": "boundary", "lang": "en"}
{"prompt": "on-call handover happens verbally on a friday afternoon and the notes are a slack message that scrolls away. from this week's incidents and the current known issues, write the handover document template plus this week's filled-in version, in a form where the person picking it up can tell what is on fire, what is smouldering, and what they can ignore", "purpose": "writing", "secondary": null, "mixed": false, "difficulty": 0.5, "slice": "core", "lang": "en"}
{"prompt": "nobody can explain why the buffer pool sometimes evicts a pinned page, and the code has a fallback branch with no comment that appears to do exactly that. i don't want it changed yet — read it, work out what happens to a scan holding that page, and tell me whether the crash we saw last month is explained by it", "purpose": "review", "secondary": null, "mixed": false, "difficulty": 0.8, "slice": "core", "lang": "en"}
{"prompt": "ordering trace from a customer shows a later message getting an earlier server timestamp, which either means our clocks are wrong or our accept path is doing something i don't understand. before we call it a bug, go through how server_ts is assigned, how the shard channel orders, and whether two messages on the same shard can be timestamped out of order", "purpose": "review", "secondary": null, "mixed": false, "difficulty": 0.8, "slice": "boundary", "lang": "en"}
{"prompt": "three components render a message row with their own timestamp helper, their own truncation rules and their own styles, which is why search results look subtly different from the thread. consolidate them into one component with props for the variations, keeping each screen looking exactly as it does today, and delete the two helpers that fall out", "purpose": "refactor", "secondary": null, "mixed": false, "difficulty": 0.55, "slice": "core", "lang": "en"}
{"prompt": "storage layer uses three error conventions in the same class — a Status return, a StatusOr, and a LOG(FATAL) that takes the process down on a bad page id — and callers handle whichever they happen to hit. pick the convention the newest code uses, apply it throughout, and make sure no path can still abort the process on bad input", "purpose": "refactor", "secondary": null, "mixed": false, "difficulty": 0.7, "slice": "core", "lang": "en"}
{"prompt": "tuning resolution in the operator goes through defaults, the spec, an environment override and a legacy configmap, merged in an order that surprises everyone including the person who wrote it. make the precedence explicit and testable, keep the resolved values identical for every cluster we have in the field, and leave the legacy path working until we can remove it", "purpose": "refactor", "secondary": null, "mixed": false, "difficulty": 0.65, "slice": "boundary", "lang": "en"}
{"prompt": "messages occasionally arrive out of order on ios but not android, roughly one user in a thousand, and both clients sort by the same field. i've stared at the fanout code and the push path and can't see it. before assuming it's the client, i'd like the whole path from accept to render examined properly", "purpose": "debugging", "secondary": null, "mixed": false, "difficulty": 0.85, "slice": "core", "lang": "en"}
{"prompt": "e2e tests fail about one run in five on CI and never locally, always on the test that waits for an idle cluster to scale down. the envtest logs mention a slow admission webhook right before the failure, which may or may not be related", "purpose": "debugging", "secondary": "review", "mixed": true, "difficulty": 0.7, "slice": "mixed", "lang": "en"}
{"prompt": "CI installs the whole toolchain from scratch on every job because someone disabled caching to debug something in march and never turned it back on, and the mobile job now takes 22 minutes. turn caching back on for yarn, pods and gradle, verify the builds are still reproducible, and note what you changed", "purpose": "quickFix", "secondary": null, "mixed": false, "difficulty": 0.4, "slice": "core", "lang": "en"}
{"prompt": "data residency for EU tenants is contractual and we currently have one region, logs in a US SaaS and a support tool that dumps message bodies. i want the design for what compliant looks like, and then the first piece implemented: keeping message content out of the logs entirely", "purpose": "planning", "secondary": "backendImpl", "mixed": true, "difficulty": 0.9, "slice": "mixed", "lang": "en"}
{"prompt": "before the mobile rewrite starts i'd like the notification module's responsibilities mapped out properly — registration, token refresh, delivery receipts, deep links — and then the registration piece built against the new architecture so we can prove the approach works", "purpose": "planning", "secondary": "frontendImpl", "mixed": true, "difficulty": 0.8, "slice": "mixed", "lang": "en"}
{"prompt": "spool needs rotation and we also need to decide what \"drop the oldest\" means for delivery guarantees, because right now we'd be silently losing messages. think through the semantics first, write them down, then implement rotation with whatever loud signals you decide on", "purpose": "planning", "secondary": "backendImpl", "mixed": true, "difficulty": 0.8, "slice": "mixed", "lang": "en"}
{"prompt": "unsere Retention-Konfiguration ist ein Freitextfeld und die Migration auf ISO-8601 steht an. Ich hätte gern zuerst einen Plan, wie wir bestehende Cluster migrieren, ohne dass jemand in Degraded landet, und danach den Validierungs-Webhook dafür", "purpose": "planning", "secondary": "backendImpl", "mixed": true, "difficulty": 0.75, "slice": "mixed", "lang": "de"}
{"prompt": "consistency model needs writing up for customers and i suspect the act of writing it will surface at least one place where the code doesn't match the claim. do both: the public page, and a list of every claim you couldn't verify from the code", "purpose": "writing", "secondary": "review", "mixed": true, "difficulty": 0.7, "slice": "mixed", "lang": "en"}
{"prompt": "escreve o guia de instalação para clientes que alojam o produto, e valida no chart se o que dizemos sobre permissões é verdade — desconfio que pedimos muito mais do que precisamos", "purpose": "writing", "secondary": "review", "mixed": true, "difficulty": 0.6, "slice": "mixed", "lang": "pt"}
{"prompt": "test helpers are duplicated across three packages with subtly different defaults, which is why a test can pass in one package and fail in another with the same input. unify them, then document the fixture conventions so the next person doesn't add a fourth", "purpose": "refactor", "secondary": "writing", "mixed": true, "difficulty": 0.55, "slice": "mixed", "lang": "en"}
{"prompt": "navigation params are typed in three places with two different names for the same field, and the deep link bug keeps coming back because of it. fix the types properly, then add the short note to the contributing guide about where params are declared", "purpose": "refactor", "secondary": "writing", "mixed": true, "difficulty": 0.5, "slice": "mixed", "lang": "en"}
{"prompt": "go packages are organised by layer — models, services, handlers — and every feature touches all three, so nothing is local", "purpose": "refactor", "secondary": null, "mixed": false, "difficulty": 0.6, "slice": "boundary", "lang": "en"}
{"prompt": "rename `MessageCluster` to `Cluster` in the CRD group, it reads terribly in kubectl output", "purpose": "refactor", "secondary": null, "mixed": false, "difficulty": 0.55, "slice": "boundary", "lang": "en"}
{"prompt": "mobile app has both a `utils` and a `helpers` folder, imported interchangeably, thirty files between them", "purpose": "refactor", "secondary": null, "mixed": false, "difficulty": 0.35, "slice": "boundary", "lang": "en"}
{"prompt": "could someone explain what happens to in-flight messages when a shard leader changes, i can't tell from the code", "purpose": "review", "secondary": null, "mixed": false, "difficulty": 0.7, "slice": "core", "lang": "en"}
{"prompt": "i'd like a read on the new iterator benchmarks before we merge, particularly the point-lookup miss regression", "purpose": "review", "secondary": null, "mixed": false, "difficulty": 0.6, "slice": "core", "lang": "en"}
{"prompt": "why does the reply bar re-render when a peer starts typing in a different thread", "purpose": "review", "secondary": null, "mixed": false, "difficulty": 0.55, "slice": "boundary", "lang": "en"}
{"prompt": "is it normal for the operator to log a status update on every reconcile even when nothing changed", "purpose": "review", "secondary": null, "mixed": false, "difficulty": 0.6, "slice": "boundary", "lang": "en"}
{"prompt": "someone should sanity check our CRD before it ships, particularly the free-form tuning field and the missing status subresource", "purpose": "review", "secondary": null, "mixed": false, "difficulty": 0.65, "slice": "boundary", "lang": "en"}
{"prompt": "docs/consistency.md describes two followers acknowledging before we ack the client, which is not what the code does", "purpose": "writing", "secondary": null, "mixed": false, "difficulty": 0.45, "slice": "core", "lang": "en"}
{"prompt": "a short note for the team about why we're capping the spool, for the decision log", "purpose": "writing", "secondary": null, "mixed": false, "difficulty": 0.3, "slice": "core", "lang": "en"}
{"prompt": "CRD field descriptions are empty, which means `kubectl explain` tells operators nothing at all", "purpose": "writing", "secondary": null, "mixed": false, "difficulty": 0.4, "slice": "boundary", "lang": "en"}
{"prompt": "write the docs page answering \"why is my cluster Degraded\", covering all six conditions we can set", "purpose": "writing", "secondary": null, "mixed": false, "difficulty": 0.45, "slice": "boundary", "lang": "en"}
{"prompt": "liveness probe on the prod overlay has a 5 second delay and 2 failures, which restarts pods mid-compaction", "purpose": "quickFix", "secondary": null, "mixed": false, "difficulty": 0.3, "slice": "core", "lang": "en"}
{"prompt": "operator's default retention is 7 days in code and 30 days in the docs, and one of them has to change", "purpose": "quickFix", "secondary": null, "mixed": false, "difficulty": 0.25, "slice": "boundary", "lang": "en"}
{"prompt": "push retries use a fixed 30 second delay with no jitter, so every failure lands in the same second", "purpose": "quickFix", "secondary": null, "mixed": false, "difficulty": 0.3, "slice": "boundary", "lang": "en"}
{"prompt": "la búsqueda de mensajes ignora los acentos, y en español eso rompe la mitad de las consultas", "purpose": "quickFix", "secondary": "backendImpl", "mixed": true, "difficulty": 0.4, "slice": "mixed", "lang": "es"}
{"prompt": "one shard's consumer lag climbs steadily every night and drains by morning, and nobody knows whether that's compaction or a slow consumer", "purpose": "debugging", "secondary": null, "mixed": false, "difficulty": 0.65, "slice": "boundary", "lang": "en"}
{"prompt": "what should our story be for customers who want to run us on ARM nodes? two have asked and we've never built for it", "purpose": "planning", "secondary": null, "mixed": false, "difficulty": 0.6, "slice": "core", "lang": "en"}
{"prompt": "i want a position on whether search belongs in the storage engine or as a separate index before anyone starts building it", "purpose": "planning", "secondary": null, "mixed": false, "difficulty": 0.75, "slice": "core", "lang": "en"}
{"prompt": "how should we handle schema evolution for the message format now that self-hosted customers can be six months behind us", "purpose": "planning", "secondary": null, "mixed": false, "difficulty": 0.8, "slice": "boundary", "lang": "en"}
{"prompt": "an endpoint that returns a device's pending messages since a given LSN, for the reconnect path", "purpose": "backendImpl", "secondary": null, "mixed": false, "difficulty": 0.6, "slice": "core", "lang": "en"}
{"prompt": "admin debug tool should redact message bodies unless the operator holds a break-glass role", "purpose": "backendImpl", "secondary": "review", "mixed": true, "difficulty": 0.6, "slice": "mixed", "lang": "en"}
{"prompt": "per-thread rate limiting on the send path, since one automated client can currently saturate a shard", "purpose": "backendImpl", "secondary": "planning", "mixed": true, "difficulty": 0.65, "slice": "mixed", "lang": "en"}
{"prompt": "cluster list page needs filtering by status and namespace, and it should remember what you picked", "purpose": "frontendImpl", "secondary": "planning", "mixed": true, "difficulty": 0.5, "slice": "mixed", "lang": "en"}
{"prompt": "whatever's least embarrassing before friday", "purpose": "quickFix", "secondary": null, "mixed": false, "difficulty": 0.4, "slice": "vague-eval", "lang": "en"}
{"prompt": "pick up where the doc left off", "purpose": "writing", "secondary": null, "mixed": false, "difficulty": 0.45, "slice": "vague-eval", "lang": "en"}
{"prompt": "thread list is a FlatList that re-renders every row whenever any thread updates, which on a busy account means the whole list rebuilds several times a second and scrolling turns to mush. keep the rows visually identical but make each one independent, memoise the row callbacks properly, and fix the last-message preview so it updates without dragging the rest of the list with it", "purpose": "frontendImpl", "secondary": null, "mixed": false, "difficulty": 0.6, "slice": "core", "lang": "en"}
{"prompt": "message reactions currently open a long-press menu that appears under the thumb and covers the message being reacted to, and there's no way to reach them at all with a keyboard or a switch control. rework the interaction: an accessible affordance on each row, the picker positioned so it never covers its own message, and a sensible focus return when it closes", "purpose": "frontendImpl", "secondary": null, "mixed": false, "difficulty": 0.65, "slice": "core", "lang": "en"}
{"prompt": "support answers \"why is my push not arriving\" from scratch every time, usually badly, because the answer depends on the token state, the apns feedback, whether the device has opened the app recently, and our own retry state. write the troubleshooting page that walks through those in order, with what to check and what each outcome means", "purpose": "writing", "secondary": "review", "mixed": true, "difficulty": 0.55, "slice": "mixed", "lang": "en"}
{"prompt": "the mobile app stores its session, including a ninety-day refresh token, as plain JSON in AsyncStorage, and an interceptor reads it on every request. before i take this to the security review, i want an assessment of what that actually exposes on a compromised device, what the platform keychain would change, and whether the ninety days is the bigger problem", "purpose": "review", "secondary": "planning", "mixed": true, "difficulty": 0.7, "slice": "mixed", "lang": "en"}
{"prompt": "our go packages are split by layer, so a single feature touches models, services and handlers and nothing is ever local to one directory. restructure by feature instead, keeping the public API and every behaviour identical, and do it in a sequence where the build stays green after each step rather than one enormous move commit", "purpose": "refactor", "secondary": null, "mixed": false, "difficulty": 0.75, "slice": "core", "lang": "en"}
{"prompt": "scan and iterator both know about page pinning, which means neither can be unit tested without a real page cache and a real file, and our tests are correspondingly slow and flaky. introduce a seam so the iterator can be tested against a fake, without changing the hot path's performance characteristics or its current behaviour", "purpose": "refactor", "secondary": "review", "mixed": true, "difficulty": 0.7, "slice": "mixed", "lang": "en"}
{"prompt": "search across message bodies is being asked for by three customers and we have no plan for it. i'd like the options weighed — in the storage engine, a separate index, or a managed service — against our EU data residency commitment, our self-hosted customers who won't run another component, and the fact that we have nobody with search experience", "purpose": "planning", "secondary": "review", "mixed": true, "difficulty": 0.85, "slice": "mixed", "lang": "en"}
{"prompt": "customers running us on ARM nodes have asked twice now and we've never built for it, which means images, the storage engine's intrinsics, and whatever assumptions our chart makes about node labels. work out what supporting ARM would actually involve and whether it's a week or a quarter, then start on the multi-arch image build if it's the former", "purpose": "planning", "secondary": "backendImpl", "mixed": true, "difficulty": 0.75, "slice": "mixed", "lang": "en"}
{"prompt": "we need an endpoint the mobile clients hit on reconnect that returns everything they missed since a given LSN, bounded so a device offline for a month doesn't pull a gigabyte. cap it, tell the client when it's been truncated so it can fall back to a fresh sync, and make sure it works when the LSN is from a shard that has since been split", "purpose": "backendImpl", "secondary": null, "mixed": false, "difficulty": 0.75, "slice": "boundary", "lang": "en"}
