Attribution coverage and better prompt telemetry
This week was a lot of bug fixes, as well as a big to represent Agent Sessions as trees (not giant JSON arrays) to better represent more complex agent behaviors, and make prompt telemetry easier to emit, store, and query at scale.
Bug Fixes
- Stale INITIAL-only prompts filtered — human-only commit notes no longer pick up leftover stub prompts.
@svarlamov(#1123) - AI-authored gap lines — gap lines between AI edits are now correctly attributed instead of falling through to human authorship.
@svarlamov(#1099) - Authorship notes survive rebases — conflict resolution during rebase preserves the AI authorship notes instead of dropping them, and rebases no longer write notes onto unrelated merge commits.
@svarlamov(#1121, #1131) - Stash attribution in release builds — stash/pop attribution now works in release binaries, matching debug behavior.
@svarlamov(#1122) - CRLF/LF normalization — stats and checkpoint diffing now normalize line endings, fixing inflated/empty diffs in mixed-EOL repos.
@svarlamov(#1075) - No-data gaps from
detect_copies— removed copy detection from diff blame; was producing false no-data regions in some commits.@svarlamov(#1132) - Sibling heuristic false-positives — fixed a Docker-on-real-git case where the sibling heuristic was over-matching.
@svarlamov(#1102)
Daemon & Performance
- ~60× faster captured checkpoints — checkpoints captured by the daemon no longer wait for trace ingestion before returning.
@svarlamov(#1135) - Daemon support for
update-refplumbing — low-levelupdate-refcalls now flow through the daemon.@svarlamov(#1175) - Centralized
agent_usagemetric emission — all AI hooks now emit usage through a single path.@svarlamov(#1124)
Agent Support
- Windsurf fixes — bash attribution for agent-generated files (migrations, scaffolding, etc), installer no longer skips when
.codium/windsurfis missing, andmodel_nameis now extracted from the hook payload.@acunniffe(#1139, #1174, #1117) - Android Studio plugin path — JetBrains plugin now uses the Google plugin dir on macOS, and prefers
dataDirectoryNameeverywhere.@peckfly(#1146, #1151) - Copilot hooks moved — Copilot hooks now live at
~/.copilot/hooks.@svarlamov(#1141) - OpenCode memory consumption — reading large OpenCode DBs no longer balloons memory.
@steventohme(#1120) - Bash tool git calls — routed through
exec_git_allow_nonzeroso non-zero exits don't break attribution.@jwiegley(#1182) - Agent presets refactor — presets rewritten as pure parsers around a single
CheckpointRequesttype.@svarlamov(#1157)
Self-Hosted & Stats
- Custom CA certs — self-hosted instances behind a corporate proxy with a custom CA can now be used without env-var workarounds.
@svarlamov(#1100) - Notes tree fanout consistency —
notes_add_batchis now used everywhere notes are written, for a consistent fanout shape.@a-churchill(#1074). Better support for some of the massive monorepos using Git AI . --skip-pushonci local merge— for offline batch-backfill of authorship notes across many historical MRs: rewrite locally in bulk, inspect, then push once at the end.@blanet(#1190)- Protobuf default ignores — generated protobuf files are now ignored by default.
@svarlamov(#1111)