adding purpose-classifier data
This commit is contained in:
@@ -0,0 +1,129 @@
|
||||
{"prompt": "bazel migration. we have a 900k line monorepo on a homegrown make + npm setup, ci is 40 minutes, and nobody can build the whole thing locally. i want the plan with a realistic estimate and the option of not doing it", "purpose": "planning", "secondary": null, "mixed": false, "difficulty": 0.9, "slice": "core", "lang": "en"}
|
||||
{"prompt": "bazel build files for the three go services, with a remote cache configured and the ci reading from it", "purpose": "backendImpl", "secondary": null, "mixed": false, "difficulty": 0.8, "slice": "core", "lang": "en"}
|
||||
{"prompt": "the remote cache is write-enabled from developer machines", "purpose": "quickFix", "secondary": null, "mixed": false, "difficulty": 0.4, "slice": "core", "lang": "en"}
|
||||
{"prompt": "build times are worse with bazel than without for incremental local builds and i can't work out why", "purpose": "debugging", "secondary": null, "mixed": false, "difficulty": 0.8, "slice": "core", "lang": "en"}
|
||||
{"prompt": "our build scripts have 40 environment variables that leak into build outputs, which is why nothing caches. make the builds hermetic, same artifacts produced", "purpose": "refactor", "secondary": null, "mixed": false, "difficulty": 0.9, "slice": "core", "lang": "en"}
|
||||
{"prompt": "read our ci config and tell me what's actually being cached today and what's re-downloaded every run", "purpose": "review", "secondary": null, "mixed": false, "difficulty": 0.7, "slice": "core", "lang": "en"}
|
||||
{"prompt": "build system docs: how to build a target, the cache, what hermetic means for us, and how to debug a cache miss", "purpose": "writing", "secondary": null, "mixed": false, "difficulty": 0.7, "slice": "core", "lang": "en"}
|
||||
{"prompt": "build insights dashboard: cache hit rate, slowest targets, and which targets rebuild most often", "purpose": "frontendImpl", "secondary": null, "mixed": false, "difficulty": 0.6, "slice": "core", "lang": "en"}
|
||||
{"prompt": "affected-targets detection so a PR only builds and tests what it touches", "purpose": "backendImpl", "secondary": null, "mixed": false, "difficulty": 0.8, "slice": "core", "lang": "en"}
|
||||
{"prompt": "a one-line readme change rebuilds everything", "purpose": "debugging", "secondary": null, "mixed": false, "difficulty": 0.7, "slice": "core", "lang": "en"}
|
||||
{"prompt": "the affected-targets step falls back to 'build everything' whenever it errors, silently", "purpose": "quickFix", "secondary": null, "mixed": false, "difficulty": 0.4, "slice": "boundary", "lang": "en"}
|
||||
{"prompt": "plan the developer environment — one command to a working setup, and how we keep it working as the repo grows", "purpose": "planning", "secondary": null, "mixed": false, "difficulty": 0.7, "slice": "core", "lang": "en"}
|
||||
{"prompt": "rails: tenant scoping enforced at the model layer so a missing where clause can't leak across accounts", "purpose": "backendImpl", "secondary": null, "mixed": false, "difficulty": 0.9, "slice": "core", "lang": "en"}
|
||||
{"prompt": "our 90 models each rely on the developer remembering to scope by account. introduce a default scope with an explicit escape hatch, and audit every query for a behavior change", "purpose": "refactor", "secondary": null, "mixed": false, "difficulty": 0.9, "slice": "core", "lang": "en"}
|
||||
{"prompt": "one endpoint returns another account's records when a specific filter combination is used", "purpose": "debugging", "secondary": null, "mixed": false, "difficulty": 0.9, "slice": "core", "lang": "en"}
|
||||
{"prompt": "the tenant id comes from a request header with no verification against the session", "purpose": "quickFix", "secondary": null, "mixed": false, "difficulty": 0.4, "slice": "core", "lang": "en"}
|
||||
{"prompt": "review every place we read the current account and tell me which ones could be influenced by user input", "purpose": "review", "secondary": null, "mixed": false, "difficulty": 0.9, "slice": "core", "lang": "en"}
|
||||
{"prompt": "multi-tenancy documentation for the team: how scoping works, the escape hatches and when they're allowed, and the review checklist", "purpose": "writing", "secondary": null, "mixed": false, "difficulty": 0.7, "slice": "boundary", "lang": "en"}
|
||||
{"prompt": "account switcher for users who belong to several accounts, with the current account unmistakable", "purpose": "frontendImpl", "secondary": null, "mixed": false, "difficulty": 0.5, "slice": "core", "lang": "en"}
|
||||
{"prompt": "switching accounts leaves the previous account's data in the sidebar until you navigate", "purpose": "debugging", "secondary": null, "mixed": false, "difficulty": 0.6, "slice": "core", "lang": "en"}
|
||||
{"prompt": "watchos: complication showing today's step count and a ring, updated efficiently within the budget", "purpose": "frontendImpl", "secondary": null, "mixed": false, "difficulty": 0.7, "slice": "core", "lang": "en"}
|
||||
{"prompt": "healthkit background delivery for step updates, with the app handling being woken and doing minimal work", "purpose": "backendImpl", "secondary": null, "mixed": false, "difficulty": 0.8, "slice": "core", "lang": "en"}
|
||||
{"prompt": "the complication shows yesterday's data until you open the app", "purpose": "debugging", "secondary": null, "mixed": false, "difficulty": 0.7, "slice": "core", "lang": "en"}
|
||||
{"prompt": "the step goal is hardcoded 10000", "purpose": "quickFix", "secondary": null, "mixed": false, "difficulty": 0.2, "slice": "core", "lang": "en"}
|
||||
{"prompt": "keep going", "purpose": "backendImpl", "secondary": null, "mixed": false, "difficulty": 0.3, "slice": "vague-eval", "lang": "en"}
|
||||
{"prompt": "…so the health data sync. the watch collects, the phone aggregates, our server stores it, and the numbers disagree at every layer. the watch says 8,400 steps, the phone says 8,100, our server says 7,900, and the user screenshots all three and asks which is right. i want the plan for a single defensible number, including what we do about retroactive corrections from healthkit", "purpose": "planning", "secondary": null, "mixed": false, "difficulty": 0.9, "slice": "core", "lang": "en"}
|
||||
{"prompt": "aggregation that reconciles healthkit's anchored queries properly, handling deletions and retroactive edits without double counting", "purpose": "backendImpl", "secondary": null, "mixed": false, "difficulty": 0.9, "slice": "core", "lang": "en"}
|
||||
{"prompt": "our step totals are computed on the watch, on the phone, and server side with different bucketing. one computation, and tell me how much historical data changes", "purpose": "refactor", "secondary": null, "mixed": false, "difficulty": 0.9, "slice": "core", "lang": "en"}
|
||||
{"prompt": "our totals include steps from both the phone and the watch for the same period", "purpose": "debugging", "secondary": null, "mixed": false, "difficulty": 0.8, "slice": "core", "lang": "en"}
|
||||
{"prompt": "the anchor is stored in user defaults so a reinstall re-imports everything", "purpose": "quickFix", "secondary": null, "mixed": false, "difficulty": 0.4, "slice": "boundary", "lang": "en"}
|
||||
{"prompt": "explain how healthkit's source priority works for us and which device wins for a given sample type", "purpose": "review", "secondary": null, "mixed": false, "difficulty": 0.8, "slice": "core", "lang": "en"}
|
||||
{"prompt": "write the data accuracy explainer for users: where the numbers come from, why devices differ, and which one we show", "purpose": "writing", "secondary": null, "mixed": false, "difficulty": 0.6, "slice": "core", "lang": "en"}
|
||||
{"prompt": "activity detail screen: the day's chart by hour, the source device per segment, and a total that matches the health app", "purpose": "frontendImpl", "secondary": null, "mixed": false, "difficulty": 0.7, "slice": "core", "lang": "en"}
|
||||
{"prompt": "the hourly chart's last bar includes the whole remaining day so it's always tallest", "purpose": "quickFix", "secondary": null, "mixed": false, "difficulty": 0.3, "slice": "core", "lang": "en"}
|
||||
{"prompt": "plan the privacy story for health data — what leaves the device, what we store, and how we support users who want local-only", "purpose": "planning", "secondary": null, "mixed": false, "difficulty": 0.8, "slice": "core", "lang": "en"}
|
||||
{"prompt": "local-only mode where nothing health-related is uploaded, with the features that depend on the server clearly disabled", "purpose": "backendImpl", "secondary": null, "mixed": false, "difficulty": 0.8, "slice": "core", "lang": "en"}
|
||||
{"prompt": "in local-only mode the weekly summary still uploads", "purpose": "debugging", "secondary": null, "mixed": false, "difficulty": 0.7, "slice": "core", "lang": "en"}
|
||||
{"prompt": "check every network call the app makes for whether it carries health data, and list them", "purpose": "review", "secondary": null, "mixed": false, "difficulty": 0.8, "slice": "core", "lang": "en"}
|
||||
{"prompt": "privacy policy section on health data, specific about the categories, the purposes, and the retention", "purpose": "writing", "secondary": null, "mixed": false, "difficulty": 0.6, "slice": "core", "lang": "en"}
|
||||
{"prompt": "onboarding for the health permissions that explains why we want each one, per permission, before the system prompt", "purpose": "frontendImpl", "secondary": null, "mixed": false, "difficulty": 0.5, "slice": "core", "lang": "en"}
|
||||
{"prompt": "we request all healthkit read permissions at once including ones we never use", "purpose": "quickFix", "secondary": null, "mixed": false, "difficulty": 0.3, "slice": "core", "lang": "en"}
|
||||
{"prompt": "plan the trends feature — week over week, month over month, with a statement about a change only when it's meaningful and not noise", "purpose": "planning", "secondary": null, "mixed": false, "difficulty": 0.8, "slice": "core", "lang": "en"}
|
||||
{"prompt": "trend computation with a significance threshold, so we don't tell someone they improved 2% when that's within their normal variation", "purpose": "backendImpl", "secondary": null, "mixed": false, "difficulty": 0.8, "slice": "core", "lang": "en"}
|
||||
{"prompt": "trends screen: a sparkline per metric with the change stated in plain language, and nothing shown when there isn't enough data", "purpose": "frontendImpl", "secondary": null, "mixed": false, "difficulty": 0.6, "slice": "core", "lang": "en"}
|
||||
{"prompt": "design the health data model then implement the aggregation service", "purpose": "planning", "secondary": "backendImpl", "mixed": true, "difficulty": 0.9, "slice": "mixed", "lang": "en"}
|
||||
{"prompt": "find out why the totals double count and then write the user-facing explanation", "purpose": "debugging", "secondary": "writing", "mixed": true, "difficulty": 0.8, "slice": "mixed", "lang": "en"}
|
||||
{"prompt": "next up then", "purpose": "backendImpl", "secondary": null, "mixed": false, "difficulty": 0.3, "slice": "vague-eval", "lang": "en"}
|
||||
{"prompt": "here's the ci timing breakdown, this is the thing i want to fix this quarter:\n\nPipeline: main (median 38m 12s over last 200 runs)\n\n setup / checkout 1m 04s\n install deps (npm) 4m 51s cache hit rate 22%\n install deps (bundler) 2m 18s cache hit rate 61%\n build web 6m 40s\n build admin 5m 12s\n rubocop 1m 44s\n eslint 2m 09s\n rspec (unit) 9m 30s (4 parallel jobs)\n rspec (system) 14m 02s (4 parallel jobs, 38 flaky-retries last week)\n jest 3m 21s\n docker build + push 4m 55s\n\n (several run in parallel; critical path is deps -> build web -> rspec system)\n\nthe npm cache hit rate of 22% is suspicious and the system specs are half our time", "purpose": "planning", "secondary": null, "mixed": false, "difficulty": 0.8, "slice": "pasted-context", "lang": "en"}
|
||||
{"prompt": "fix the npm cache key so it isn't invalidated by unrelated changes, and prove the hit rate improves", "purpose": "debugging", "secondary": null, "mixed": false, "difficulty": 0.6, "slice": "core", "lang": "en"}
|
||||
{"prompt": "the cache key includes the git sha", "purpose": "quickFix", "secondary": null, "mixed": false, "difficulty": 0.3, "slice": "boundary", "lang": "en"}
|
||||
{"prompt": "split the system specs across 16 parallel jobs with balanced timing based on historical durations", "purpose": "backendImpl", "secondary": null, "mixed": false, "difficulty": 0.7, "slice": "core", "lang": "en"}
|
||||
{"prompt": "our system specs each log in through the ui, which is 3 seconds per test times 400 tests. use a session helper, same coverage", "purpose": "refactor", "secondary": null, "mixed": false, "difficulty": 0.7, "slice": "core", "lang": "en"}
|
||||
{"prompt": "38 flaky retries a week in the system specs, mostly on pages with an ajax load", "purpose": "debugging", "secondary": null, "mixed": false, "difficulty": 0.8, "slice": "core", "lang": "en"}
|
||||
{"prompt": "review our system specs for hardcoded sleeps and tell me how much time they account for", "purpose": "review", "secondary": null, "mixed": false, "difficulty": 0.6, "slice": "core", "lang": "en"}
|
||||
{"prompt": "ci guide for the team: what runs when, how to reproduce a failure locally, and the rule about not merging on a retry", "purpose": "writing", "secondary": null, "mixed": false, "difficulty": 0.5, "slice": "core", "lang": "en"}
|
||||
{"prompt": "flaky test tracking — record retries per test, surface the top offenders weekly, and auto-quarantine anything over a threshold", "purpose": "backendImpl", "secondary": null, "mixed": false, "difficulty": 0.7, "slice": "core", "lang": "en"}
|
||||
{"prompt": "quarantined tests stay quarantined forever because nobody looks at the list", "purpose": "debugging", "secondary": null, "mixed": false, "difficulty": 0.5, "slice": "boundary", "lang": "en"}
|
||||
{"prompt": "test health dashboard: flakiest tests, slowest tests, and the quarantine list with an age per entry", "purpose": "frontendImpl", "secondary": null, "mixed": false, "difficulty": 0.6, "slice": "core", "lang": "en"}
|
||||
{"prompt": "the dashboard's flake rate is computed over all time so a fixed test stays red forever", "purpose": "quickFix", "secondary": null, "mixed": false, "difficulty": 0.3, "slice": "core", "lang": "en"}
|
||||
{"prompt": "plan how we get feedback on a PR in under 5 minutes, even if the full suite still takes 20", "purpose": "planning", "secondary": null, "mixed": false, "difficulty": 0.7, "slice": "core", "lang": "en"}
|
||||
{"prompt": "fast-feedback job that runs the tests touching the changed files first, reporting before the full suite finishes", "purpose": "backendImpl", "secondary": null, "mixed": false, "difficulty": 0.8, "slice": "core", "lang": "en"}
|
||||
{"prompt": "explain how our test-to-file mapping is derived, because i suspect it's a filename convention and misses a lot", "purpose": "review", "secondary": null, "mixed": false, "difficulty": 0.7, "slice": "boundary", "lang": "en"}
|
||||
{"prompt": "our rubocop and eslint configs disagree about line length and someone changes one every few months. reconcile them and document the decision", "purpose": "refactor", "secondary": null, "mixed": false, "difficulty": 0.4, "slice": "boundary", "lang": "en"}
|
||||
{"prompt": "docker build layer caching so a code change doesn't reinstall gems", "purpose": "backendImpl", "secondary": null, "mixed": false, "difficulty": 0.6, "slice": "core", "lang": "en"}
|
||||
{"prompt": "the dockerfile copies Gemfile.lock after the app code", "purpose": "quickFix", "secondary": null, "mixed": false, "difficulty": 0.3, "slice": "boundary", "lang": "en"}
|
||||
{"prompt": "ci が 38 分かかっていて、system spec が半分を占めている。まず改善計画を出してほしい", "purpose": "planning", "secondary": null, "mixed": false, "difficulty": 0.7, "slice": "core", "lang": "ja"}
|
||||
{"prompt": "plan the seed data strategy for tests — factories vs fixtures, and how we stop tests depending on each other's data", "purpose": "planning", "secondary": null, "mixed": false, "difficulty": 0.7, "slice": "core", "lang": "en"}
|
||||
{"prompt": "tests fail when run in a different order, about 20 of them", "purpose": "debugging", "secondary": null, "mixed": false, "difficulty": 0.7, "slice": "core", "lang": "en"}
|
||||
{"prompt": "our factories create 12 associated records each so a simple test inserts 40 rows. trim them to the minimum, same assertions passing", "purpose": "refactor", "secondary": null, "mixed": false, "difficulty": 0.6, "slice": "core", "lang": "en"}
|
||||
{"prompt": "database cleaning between tests uses truncation on 90 tables every test", "purpose": "quickFix", "secondary": null, "mixed": false, "difficulty": 0.4, "slice": "boundary", "lang": "en"}
|
||||
{"prompt": "review whether our tests could pass while the app is broken — specifically the ones that mock the thing they're testing", "purpose": "review", "secondary": null, "mixed": false, "difficulty": 0.7, "slice": "core", "lang": "en"}
|
||||
{"prompt": "yeah keep going", "purpose": "refactor", "secondary": null, "mixed": false, "difficulty": 0.3, "slice": "vague-eval", "lang": "en"}
|
||||
{"prompt": "propose how we do per-account customization without forking the codebase. enterprise customers want custom fields, custom statuses, and one wants a whole extra approval step. currently we've been adding if-account-is-X branches and there are 40 of them", "purpose": "planning", "secondary": null, "mixed": false, "difficulty": 0.9, "slice": "core", "lang": "en"}
|
||||
{"prompt": "custom fields per account — definition, storage, validation, and exposure through the api and exports", "purpose": "backendImpl", "secondary": null, "mixed": false, "difficulty": 0.9, "slice": "core", "lang": "en"}
|
||||
{"prompt": "custom field builder ui: field type, label, required, options for selects, and a preview of the form", "purpose": "frontendImpl", "secondary": null, "mixed": false, "difficulty": 0.7, "slice": "core", "lang": "en"}
|
||||
{"prompt": "custom field values are stored as strings so a number field sorts alphabetically", "purpose": "quickFix", "secondary": null, "mixed": false, "difficulty": 0.4, "slice": "core", "lang": "en"}
|
||||
{"prompt": "the 40 if-account-is-X branches need to become configuration. enumerate them first, then replace, with each account's behavior unchanged", "purpose": "refactor", "secondary": null, "mixed": false, "difficulty": 0.9, "slice": "core", "lang": "en"}
|
||||
{"prompt": "one account's custom status appears in another account's filter dropdown", "purpose": "debugging", "secondary": null, "mixed": false, "difficulty": 0.7, "slice": "core", "lang": "en"}
|
||||
{"prompt": "read the account-specific branches and tell me which are genuinely customer-specific versus a feature we never generalized", "purpose": "review", "secondary": null, "mixed": false, "difficulty": 0.8, "slice": "core", "lang": "en"}
|
||||
{"prompt": "customization documentation: what's configurable per account, what isn't, and the process for requesting something new", "purpose": "writing", "secondary": null, "mixed": false, "difficulty": 0.6, "slice": "core", "lang": "en"}
|
||||
{"prompt": "custom statuses per account with the workflow transitions configurable, and the reporting still working across accounts", "purpose": "backendImpl", "secondary": null, "mixed": false, "difficulty": 0.9, "slice": "core", "lang": "en"}
|
||||
{"prompt": "cross-account reports break when one account renames a status", "purpose": "debugging", "secondary": null, "mixed": false, "difficulty": 0.7, "slice": "core", "lang": "en"}
|
||||
{"prompt": "status configuration screen: the statuses, their order, the allowed transitions as a matrix, and a warning about records in a status you're removing", "purpose": "frontendImpl", "secondary": null, "mixed": false, "difficulty": 0.7, "slice": "core", "lang": "en"}
|
||||
{"prompt": "you can delete a status that records are currently in", "purpose": "quickFix", "secondary": null, "mixed": false, "difficulty": 0.3, "slice": "core", "lang": "en"}
|
||||
{"prompt": "plan how custom fields flow into our warehouse without a schema change per customer", "purpose": "planning", "secondary": null, "mixed": false, "difficulty": 0.8, "slice": "core", "lang": "en"}
|
||||
{"prompt": "explain how custom field permissions work — can a viewer see a field marked sensitive", "purpose": "review", "secondary": null, "mixed": false, "difficulty": 0.7, "slice": "core", "lang": "en"}
|
||||
{"prompt": "api documentation for custom fields: discovery, the value types, and how they appear in list and detail responses", "purpose": "writing", "secondary": null, "mixed": false, "difficulty": 0.6, "slice": "boundary", "lang": "en"}
|
||||
{"prompt": "custom field values in the api typed properly rather than all strings, with the definitions discoverable", "purpose": "backendImpl", "secondary": null, "mixed": false, "difficulty": 0.7, "slice": "core", "lang": "en"}
|
||||
{"prompt": "our export code has a hardcoded column list so custom fields never appear in exports", "purpose": "refactor", "secondary": null, "mixed": false, "difficulty": 0.6, "slice": "core", "lang": "en"}
|
||||
{"prompt": "check whether a custom field named the same as a system field shadows it anywhere", "purpose": "review", "secondary": null, "mixed": false, "difficulty": 0.7, "slice": "core", "lang": "en"}
|
||||
{"prompt": "alright, next", "purpose": "backendImpl", "secondary": null, "mixed": false, "difficulty": 0.3, "slice": "vague-eval", "lang": "en"}
|
||||
{"prompt": "the rails app's background jobs. sidekiq, 40 job classes, and the queue configuration has grown organically so we have queues called 'default', 'high', 'urgent', 'critical' and 'now', which tells you everything. i want the plan: proper queue design, priorities that mean something, and per-queue capacity", "purpose": "planning", "secondary": null, "mixed": false, "difficulty": 0.8, "slice": "core", "lang": "en"}
|
||||
{"prompt": "queue restructuring by latency requirement rather than vague urgency, with each job class assigned deliberately", "purpose": "refactor", "secondary": null, "mixed": false, "difficulty": 0.7, "slice": "core", "lang": "en"}
|
||||
{"prompt": "the 'critical' queue has one worker and 'default' has 20", "purpose": "quickFix", "secondary": null, "mixed": false, "difficulty": 0.3, "slice": "core", "lang": "en"}
|
||||
{"prompt": "a slow job class in the shared queue delays password reset emails by 20 minutes at peak", "purpose": "debugging", "secondary": null, "mixed": false, "difficulty": 0.7, "slice": "core", "lang": "en"}
|
||||
{"prompt": "job monitoring page: per-queue latency, per-job-class duration percentiles, and the failure rate", "purpose": "frontendImpl", "secondary": null, "mixed": false, "difficulty": 0.6, "slice": "core", "lang": "en"}
|
||||
{"prompt": "review our jobs for ones that aren't idempotent, since sidekiq retries them", "purpose": "review", "secondary": null, "mixed": false, "difficulty": 0.8, "slice": "core", "lang": "en"}
|
||||
{"prompt": "job authoring guide: which queue, idempotency requirements, argument rules, and the timeout expectations", "purpose": "writing", "secondary": null, "mixed": false, "difficulty": 0.5, "slice": "core", "lang": "en"}
|
||||
{"prompt": "per-account job concurrency so one large customer's bulk import doesn't starve everyone else", "purpose": "backendImpl", "secondary": null, "mixed": false, "difficulty": 0.8, "slice": "core", "lang": "en"}
|
||||
{"prompt": "one customer's import enqueued 400k jobs and the whole queue was theirs for 6 hours", "purpose": "debugging", "secondary": null, "mixed": false, "difficulty": 0.7, "slice": "core", "lang": "en"}
|
||||
{"prompt": "the import enqueues one job per row", "purpose": "quickFix", "secondary": null, "mixed": false, "difficulty": 0.3, "slice": "boundary", "lang": "en"}
|
||||
{"prompt": "plan the move from sidekiq to solid_queue, or a defensible decision not to, given we're on rails 8 now", "purpose": "planning", "secondary": null, "mixed": false, "difficulty": 0.8, "slice": "core", "lang": "en"}
|
||||
{"prompt": "explain how our job retries interact with the api's idempotency keys — can a retried job re-charge someone", "purpose": "review", "secondary": null, "mixed": false, "difficulty": 0.8, "slice": "core", "lang": "en"}
|
||||
{"prompt": "job failure alerting per job class with a threshold, rather than the current all-or-nothing", "purpose": "backendImpl", "secondary": null, "mixed": false, "difficulty": 0.6, "slice": "core", "lang": "en"}
|
||||
{"prompt": "job failure alerts go to a channel nobody watches", "purpose": "quickFix", "secondary": null, "mixed": false, "difficulty": 0.2, "slice": "core", "lang": "en"}
|
||||
{"prompt": "runbook for the queues: how to tell what's backed up, how to drain safely, and which jobs are safe to discard", "purpose": "writing", "secondary": null, "mixed": false, "difficulty": 0.5, "slice": "core", "lang": "en"}
|
||||
{"prompt": "our jobs pass activerecord objects as arguments in 8 classes, which breaks on retry after a delete. move to ids, same behavior for live records", "purpose": "refactor", "secondary": null, "mixed": false, "difficulty": 0.6, "slice": "core", "lang": "en"}
|
||||
{"prompt": "jobs fail with RecordNotFound after a record is deleted, and retry 25 times before giving up", "purpose": "debugging", "secondary": null, "mixed": false, "difficulty": 0.5, "slice": "core", "lang": "en"}
|
||||
{"prompt": "check whether any of our jobs can enqueue themselves in a loop", "purpose": "review", "secondary": null, "mixed": false, "difficulty": 0.7, "slice": "core", "lang": "en"}
|
||||
{"prompt": "keep at it", "purpose": "backendImpl", "secondary": null, "mixed": false, "difficulty": 0.3, "slice": "vague-eval", "lang": "en"}
|
||||
{"prompt": "here's the diff for the tenant scoping change, please look before i merge because if this is wrong it's a data leak:\n\n@@ -1,12 +1,29 @@\n class ApplicationRecord < ActiveRecord::Base\n self.abstract_class = true\n+\n+ def self.acts_as_tenanted\n+ default_scope do\n+ if Current.account\n+ where(account_id: Current.account.id)\n+ else\n+ all\n+ end\n+ end\n+\n+ belongs_to :account\n+ before_validation { self.account ||= Current.account }\n+ end\n end\n\n@@ -4,6 +4,7 @@\n class Invoice < ApplicationRecord\n+ acts_as_tenanted\n belongs_to :customer\n has_many :line_items\n end\n\nthe `else all` branch is what worries me — that's every background job, every console session, and the admin tool", "purpose": "review", "secondary": null, "mixed": false, "difficulty": 0.9, "slice": "pasted-context", "lang": "en"}
|
||||
{"prompt": "make the unscoped case fail loudly rather than returning everything, with an explicit opt-out for the places that genuinely need it", "purpose": "backendImpl", "secondary": null, "mixed": false, "difficulty": 0.8, "slice": "core", "lang": "en"}
|
||||
{"prompt": "Current.account isn't set in any of our background jobs", "purpose": "quickFix", "secondary": null, "mixed": false, "difficulty": 0.4, "slice": "boundary", "lang": "en"}
|
||||
{"prompt": "account context propagated into jobs from the enqueuing request, so a job runs scoped to the right account", "purpose": "backendImpl", "secondary": null, "mixed": false, "difficulty": 0.8, "slice": "core", "lang": "en"}
|
||||
{"prompt": "plan the rollout of tenant scoping across the 90 models, incrementally, with a way to detect an unscoped query in production before it leaks", "purpose": "planning", "secondary": null, "mixed": false, "difficulty": 0.9, "slice": "core", "lang": "en"}
|
||||
{"prompt": "query instrumentation that logs any query against a tenanted table without an account condition, in production, without blocking", "purpose": "backendImpl", "secondary": null, "mixed": false, "difficulty": 0.9, "slice": "core", "lang": "en"}
|
||||
{"prompt": "the instrumentation logs 40k unscoped queries an hour, mostly from the admin tool", "purpose": "debugging", "secondary": null, "mixed": false, "difficulty": 0.7, "slice": "core", "lang": "en"}
|
||||
{"prompt": "tenant scoping test helper that runs a spec twice with two accounts and asserts no cross-visibility", "purpose": "backendImpl", "secondary": null, "mixed": false, "difficulty": 0.8, "slice": "core", "lang": "en"}
|
||||
{"prompt": "write the tenancy design doc explaining the scoping mechanism, the escape hatches, and the review rule for new models", "purpose": "writing", "secondary": null, "mixed": false, "difficulty": 0.7, "slice": "boundary", "lang": "en"}
|
||||
{"prompt": "internal tool showing which models are tenanted and which aren't, generated from the code", "purpose": "frontendImpl", "secondary": null, "mixed": false, "difficulty": 0.5, "slice": "core", "lang": "en"}
|
||||
{"prompt": "review the admin tool specifically — it deliberately runs unscoped, so what stops an admin action from writing to the wrong account", "purpose": "review", "secondary": null, "mixed": false, "difficulty": 0.8, "slice": "core", "lang": "en"}
|
||||
{"prompt": "admin actions require an explicit account selection, shown persistently, and every write is audited with it", "purpose": "backendImpl", "secondary": null, "mixed": false, "difficulty": 0.7, "slice": "core", "lang": "en"}
|
||||
{"prompt": "the admin's selected account is stored in the session and persists across a logout", "purpose": "quickFix", "secondary": null, "mixed": false, "difficulty": 0.3, "slice": "core", "lang": "en"}
|
||||
{"prompt": "plan how we'd offer a per-account database for the two customers who are asking, without maintaining two architectures", "purpose": "planning", "secondary": null, "mixed": false, "difficulty": 0.9, "slice": "core", "lang": "en"}
|
||||
{"prompt": "explain what our current architecture assumes about there being one database, and what would have to change", "purpose": "review", "secondary": null, "mixed": false, "difficulty": 0.8, "slice": "core", "lang": "en"}
|
||||
{"prompt": "deployment architecture doc covering the shared and dedicated options, for the sales engineering team to use with prospects", "purpose": "writing", "secondary": null, "mixed": false, "difficulty": 0.7, "slice": "core", "lang": "en"}
|
||||
{"prompt": "design the scoping mechanism then implement it for the invoice models", "purpose": "planning", "secondary": "backendImpl", "mixed": true, "difficulty": 0.9, "slice": "mixed", "lang": "en"}
|
||||
{"prompt": "review the scoping change and fix anything obviously unsafe", "purpose": "review", "secondary": "quickFix", "mixed": true, "difficulty": 0.8, "slice": "mixed", "lang": "en"}
|
||||
{"prompt": "that's me done, last bit", "purpose": "quickFix", "secondary": null, "mixed": false, "difficulty": 0.3, "slice": "vague-eval", "lang": "en"}
|
||||
Reference in New Issue
Block a user