Files
claude-mnemonic/scripts/eval-search/corpus.json
T

276 lines
7.6 KiB
JSON

{
"docs": [
{
"type": "bugfix",
"title": "Fixed race in session cache",
"narrative": "Concurrent map writes in the session cache caused panics; guarded with a RWMutex."
},
{
"type": "decision",
"title": "Chose SQLite WAL mode",
"narrative": "WAL lets readers proceed while a writer commits, so hooks can query during writes."
},
{
"type": "feature",
"title": "Added Prometheus metrics endpoint",
"narrative": "Exposes request latency histograms and error counters at /metrics for scraping."
},
{
"type": "bugfix",
"title": "Fixed memory leak in websocket hub",
"narrative": "Goroutines were never released when clients disconnected; added context cancellation."
},
{
"type": "refactor",
"title": "Extracted retry helper with backoff",
"narrative": "Exponential backoff with jitter now lives in one function used by all HTTP callers."
},
{
"type": "decision",
"title": "Use argon2id for password hashing",
"narrative": "bcrypt cost was too low for new hardware; argon2id with 64MB memory chosen."
},
{
"type": "feature",
"title": "Dark mode toggle in dashboard",
"narrative": "Theme preference persists in localStorage and follows prefers-color-scheme by default."
},
{
"type": "discovery",
"title": "Kubernetes readiness probe timing",
"narrative": "Pods were killed during warmup because the readiness probe fired before the model loaded."
},
{
"type": "bugfix",
"title": "Fixed off-by-one in pagination",
"narrative": "The last page skipped one row when total count was an exact multiple of page size."
},
{
"type": "decision",
"title": "Adopted table-driven tests",
"narrative": "Subtests with named cases make failures easier to locate and new cases cheap to add."
},
{
"type": "feature",
"title": "Rate limiting middleware",
"narrative": "Token bucket per client IP returns 429 with a Retry-After header when exceeded."
},
{
"type": "bugfix",
"title": "Fixed timezone bug in scheduler",
"narrative": "Cron jobs fired an hour late after daylight saving because times were stored in local zone."
},
{
"type": "discovery",
"title": "Slow query caused by missing index",
"narrative": "EXPLAIN showed a sequential scan on the events table; a composite index cut it from 900ms to 4ms."
},
{
"type": "refactor",
"title": "Split monolithic handler file",
"narrative": "The 3000 line handlers file was divided by domain: sessions, observations, search."
},
{
"type": "decision",
"title": "Embeddings computed locally with ONNX",
"narrative": "Avoids sending user text to third parties and works offline."
},
{
"type": "feature",
"title": "Export observations as JSON",
"narrative": "New CLI command dumps all stored observations to a portable JSON file for backup."
},
{
"type": "bugfix",
"title": "Fixed CORS preflight failure",
"narrative": "OPTIONS requests were rejected by auth middleware; moved CORS handling before authentication."
},
{
"type": "discovery",
"title": "Docker image size dominated by build cache",
"narrative": "Multi-stage build with a distroless runtime reduced the image from 1.2GB to 80MB."
},
{
"type": "decision",
"title": "Structured logging with zerolog",
"narrative": "JSON logs with fields are easier to filter in aggregation than free-form strings."
},
{
"type": "feature",
"title": "Full text search with FTS5",
"narrative": "Keyword queries use SQLite FTS5 with porter stemming alongside vector similarity."
},
{
"type": "bugfix",
"title": "Fixed panic on nil config",
"narrative": "Missing settings file returned a nil pointer; defaults are now loaded instead."
},
{
"type": "discovery",
"title": "GC pauses from large slices",
"narrative": "Preallocating slice capacity removed repeated growth and lowered p99 latency."
},
{
"type": "decision",
"title": "Graceful shutdown on SIGTERM",
"narrative": "Server drains in-flight requests for 30 seconds before exiting so deploys drop nothing."
},
{
"type": "refactor",
"title": "Replaced global state with dependency injection",
"narrative": "Services receive their stores through constructors, which makes tests independent."
},
{
"type": "feature",
"title": "OAuth login with GitHub",
"narrative": "Users authenticate via the GitHub authorization code flow and receive a session cookie."
},
{
"type": "bugfix",
"title": "Fixed flaky integration test",
"narrative": "The test relied on sleep; replaced with polling on a readiness condition."
},
{
"type": "discovery",
"title": "Git hooks slowed commits",
"narrative": "Pre-commit ran the full test suite; limited it to changed packages."
},
{
"type": "decision",
"title": "Pinned dependency versions",
"narrative": "Lockfile committed and CI uses frozen installs to keep builds reproducible."
},
{
"type": "feature",
"title": "Webhook retries with dead letter queue",
"narrative": "Failed deliveries retry five times and then land in a dead letter table for inspection."
},
{
"type": "discovery",
"title": "Unicode normalization broke search",
"narrative": "Accented characters did not match until queries and content were NFC normalized."
}
],
"queries": [
{
"doc": 0,
"query": "why did concurrent writes to the cache crash the program"
},
{
"doc": 1,
"query": "how can readers keep working while the database is being written"
},
{
"doc": 2,
"query": "where do I scrape request latency numbers from"
},
{
"doc": 3,
"query": "goroutines not freed after clients drop connection"
},
{
"doc": 4,
"query": "shared function for repeating failed requests with growing delays"
},
{
"doc": 5,
"query": "which algorithm protects stored passwords"
},
{
"doc": 6,
"query": "can the UI switch to a dark theme"
},
{
"doc": 7,
"query": "containers restarted while the model was still loading"
},
{
"doc": 8,
"query": "last page of results missing an item"
},
{
"doc": 9,
"query": "why do our tests use named cases"
},
{
"doc": 10,
"query": "how are abusive clients throttled"
},
{
"doc": 11,
"query": "scheduled jobs running late after clocks changed"
},
{
"doc": 12,
"query": "query got fast after adding an index"
},
{
"doc": 13,
"query": "large source file was broken up by domain"
},
{
"doc": 14,
"query": "do we send text to an external embedding API"
},
{
"doc": 15,
"query": "how to back up everything I stored"
},
{
"doc": 16,
"query": "browser blocked cross-origin request before login check"
},
{
"doc": 17,
"query": "how did we make the container image smaller"
},
{
"doc": 18,
"query": "why are logs emitted as JSON"
},
{
"doc": 19,
"query": "keyword matching with stemming"
},
{
"doc": 20,
"query": "crash when settings file is absent"
},
{
"doc": 21,
"query": "reduce latency spikes from memory allocation"
},
{
"doc": 22,
"query": "what happens to requests during deployment shutdown"
},
{
"doc": 23,
"query": "stop using package level variables for services"
},
{
"doc": 24,
"query": "sign in with a third party identity provider"
},
{
"doc": 25,
"query": "test that fails randomly because of timing"
},
{
"doc": 26,
"query": "commit takes too long because of checks"
},
{
"doc": 27,
"query": "make builds reproducible across machines"
},
{
"doc": 28,
"query": "what happens when a callback delivery fails repeatedly"
},
{
"doc": 29,
"query": "accented letters not found when searching"
}
]
}