Collector 0.7.48: Codex usage filed as Codex, keyless plan readings skipped, gap census, and readable commit errors
Collector 0.7.48 files Codex usage as Codex, keeps one unbound plan reading from failing its whole batch, and writes readable diagnostics for the studio3 Codex stall.
- Codex usage is filed as Codex (#449). The collector classifies Codex OTLP data by its service name, even on a machine that also holds a valid Claude credential. Before this, Codex Desktop usage on such machines was filed as Claude Code. The same Codex record sent under two credentials now makes one usage row, not two. Invalid, unknown, malformed and header-mismatched credentials are still refused.
- A plan-limit reading without an account is skipped (#449). Before, it failed its whole batch. Every other record in that batch now arrives.
- Gaps carry a census (#449). Each capture gap now includes a bounded, typed count of what was set aside. If the cloud refuses that field, the collector resends once without it.
- Readable commit errors (#449). A rollout commit exception now logs the exception class, a message hash, and file-handle hashes and offsets. It logs no content, so the next stall can be diagnosed from the log.
Updating and rolling back:
- Rolling back to 0.7.47 keeps every usage row. In the rollback test, a packaged 0.7.47 reopened a 0.7.48 ledger after its lease expired: usage was byte-identical, with zero privacy retirements and no usage dropped.
- Known limit: the studio3 live-tail exception itself was not reproduced offline. This release adds the logging that should show it.
Runtime CLI SHA256: a4ec38fe2b9f8a42941e365098a9d796711e261b7b50f70a7a6f079051217e61.
Qualification: typecheck, the proof suite and system end-to-end qualification ran on the merged commit, on our own macOS runners. Two proofs that drive the real launchd and collector supervision are local-only on those runners, because the runners run a live collector (eco-6hoxj.165.179). 0.7.48 changes no launchd, install or supervision code. The published package is the qualified artifact from that run.