codeburn/tests/providers
iamtoruk 0e11b51516 fix(cache): make the shard layout safe against a second live writer
Two live processes share one cache directory routinely (a one-shot CLI
beside the resident serve child, two menubar polls), and the shard layout
had two ways to lose data there.

- The atomic write used a FIXED temp name, so two writers publishing the
  envelope — every save does — shared one `envelope.json.tmp` and
  interleaved into a torn payload, or one deleted the shards the other's
  envelope named. 39 of 40 rounds ended in a total cache loss. The temp
  name carries a nonce again, as it did before the shard layout.
- A save reused a shard filename from its own load snapshot without
  checking the file was still there. Another process republishing that
  provider unlinks the old shard, so the stale writer published an
  envelope naming a deleted file — read back as a corrupt provider and
  dropped whole, including PR-linked orphans no re-parse can recover. A
  reused shard is now existence-checked, and re-verified once more
  immediately before the envelope is published; a vanished one is
  rewritten from memory.

Also:
- Progress saves take a 30s floor beside the file counter. Only the
  claude scan reports per file; every other provider calls saveProgress
  once at its own boundary, so the counter alone never fired there.
- The unreferenced-shard sweep waits an hour (temps still 5 minutes): an
  unreferenced shard may belong to a concurrent save whose envelope has
  not landed yet.
- The sweep also retires the pre-v8 single-file temps in the parent
  directory, which nothing writes anymore.
- The shard directory is created 0o700.
- The claude and provider paths mark the cache dirty where they DELETE a
  stale entry, not only where they replace it: an unreadable file skips
  the replace, and the deletion would otherwise live only in memory.
- Codex only treats a grown file as an append when the recorded boundary
  still lands just after a newline, so a same-inode rewrite that happens
  to end up larger re-parses instead of resuming mid-line.
2026-08-16 19:23:39 -07:00
..
antigravity.test.ts fix(usage): per-provider snapshot capture, placeholder guard, path-id display fallback 2026-07-18 03:37:42 -07:00
claude-config-dirs.test.ts fix(desktop): close cache and lifecycle review gaps 2026-08-12 20:31:17 +03:00
cline-cli.test.ts fix(cline-cli): decline the rollup when per-message calls were all deduped 2026-08-04 01:57:27 +02:00
cline.test.ts fix(cline): scan all VS Code variants for task storage 2026-08-04 00:01:57 +03:00
codebuff.test.ts Merge origin/main into feat/codebuff-provider and scope sessionId by channel 2026-05-01 00:14:18 +05:30
codewhale.test.ts perf(cache): shard the session cache per provider 2026-08-16 19:03:12 -07:00
codex-resume.test.ts fix(cache): make the shard layout safe against a second live writer 2026-08-16 19:23:39 -07:00
codex.test.ts fix(codex): guard non-string timestamp and model on the parse path 2026-08-04 00:14:28 +02:00
copilot-skills.test.ts copilot: extract skill invocations so Skills & Agents populates (#654) (#697) 2026-07-16 12:02:34 -07:00
copilot.test.ts fix(copilot): classify CLI sessions by source provenance, not producer (#945) 2026-08-09 04:51:44 +03:00
crush.test.ts fix: fix and improve test isolation and collision with environment (#530) 2026-06-20 13:42:10 +02:00
cursor-agent.test.ts Extract shared token estimation helper, migrate all CHARS_PER_TOKEN sites (#644) (#677) 2026-07-16 11:58:22 -07:00
cursor-bubble-dedup.test.ts Menubar and CLI hardening from multi-agent audit (#257) 2026-05-06 22:15:11 -07:00
cursor-large-db-cap.test.ts fix: fix and improve test isolation and collision with environment (#530) 2026-06-20 13:42:10 +02:00
cursor-real-tokens.test.ts fix(cursor): use Cursor's real context tokens for input (#574) (#575) 2026-07-02 04:53:07 +02:00
cursor-workspace-breakdown.test.ts Cursor: per-project breakdown by workspace (closes per-project half of #196) (#296) 2026-05-10 15:35:57 -07:00
cursor.test.ts perf(desktop): share cache state and eliminate duplicate cold hydration 2026-08-12 17:16:41 +03:00
devin.test.ts fix(devin): report friendly GPT model names with effort tier (#585) 2026-07-01 16:01:49 +02:00
droid.test.ts Add Droid CLI provider 2026-04-28 20:16:45 +02:00
forge.test.ts feat(providers): add forge provider support (#401) 2026-05-26 03:36:57 -07:00
gemini.test.ts Track agent calls across providers (#340) 2026-05-18 05:51:01 -07:00
grok.test.ts feat(providers): add Grok Build provider (#521) 2026-06-19 17:21:41 +02:00
hermes.test.ts fix(parser): fold SQLite -wal siblings into source fingerprints 2026-08-04 14:38:43 +03:00
ibm-bob.test.ts Add IBM Bob provider with workspace extraction (#316) 2026-05-11 20:54:13 -07:00
kilo-code.test.ts fix(test): kilo-code tests fail on machines with KiloCode installed 2026-06-03 01:03:39 +02:00
kimi.test.ts Add Kimi provider 2026-05-11 19:02:28 +03:00
kimicode.test.ts kimicode: discover desktop-runtime sessions and fix menubar visibility 2026-07-23 21:31:25 +02:00
kiro.test.ts fix(kiro): estimate input tokens from the full prompt, not a 500-char slice 2026-08-04 05:58:17 +03:00
lingtai-tui.test.ts fix(lingtai): harden manifest parsing against wrong-typed fields 2026-07-09 23:48:46 +02:00
mistral-vibe.test.ts fix: fix and improve test isolation and collision with environment (#530) 2026-06-20 13:42:10 +02:00
mux.test.ts feat(providers): add coder/mux as a datasource (#438) 2026-06-06 03:04:24 +02:00
omp.test.ts fix(omp): discover title-first session transcripts 2026-07-27 19:58:50 +02:00
open-design.test.ts feat(providers): add open-design provider for per-model usage tracking (#559) 2026-06-28 19:17:23 +02:00
openclaude.test.ts feat(openclaude): OpenClaude CLI provider (#213) 2026-08-04 04:05:25 +03:00
openclaw.test.ts Add OpenClaw, Roo Code, and KiloCode providers (#175) 2026-04-28 09:24:14 -07:00
opencode-file.test.ts fix(opencode): support custom data dir and db prefix (#620) 2026-07-16 02:18:19 -07:00
opencode.test.ts fix(opencode): read session fallback model from real schema 2026-07-24 13:03:22 +08:00
pi.test.ts Merge branch 'main' into fix/omp-title-slot-discovery 2026-08-03 21:59:19 +02:00
quickdesk.test.ts feat(quickdesk): Amazon Quick Desktop provider, parse ~/.quickwork sessions and metrics (#707) 2026-07-18 00:02:01 +03:00
roo-code.test.ts Add OpenClaw, Roo Code, and KiloCode providers (#175) 2026-04-28 09:24:14 -07:00
vercel-gateway.test.ts prerelease: quota NaN guard, 10-year daily retention, test date bomb (#764) 2026-07-20 07:37:56 -07:00
vscode-cline-parser.test.ts fix(providers): guard two malformed-input crashes in the parse path 2026-08-04 06:28:41 +03:00
warp.test.ts feat: add Warp provider adapter (#350) 2026-05-21 00:19:53 -07:00
zcode.test.ts feat(providers): add ZCode (z.ai GLM-5.2) usage provider (#537) 2026-06-20 21:37:32 +02:00
zed.test.ts fix(zed): top threads up to the cumulative counter 2026-07-02 05:53:40 +02:00
zerostack.test.ts Add zerostack provider (#519) 2026-06-19 14:44:45 +02:00