George Weale
90d · built 2026-07-24
90-day totals
- Commits
- 150
- Grow
- 2.8
- Maintenance
- 10.5
- Fixes
- 8.5
- Total ETV
- 21.9
Where this dev ranks
Percentile against the global top-100 leaderboard (all-time totals).
- By commits
- Top 70 %
- By Growth share
- Top 94 %
30-day trajectory
Last 30 days vs. the 30 days before. Up arrows on Growth and ETV mean improvement; up arrow on Fixes share means more time on fixes (worse).
↑+50.0 %
vs 52 prior
↓-2.9 pp
recent vs prior
↑+3.9 pp
recent vs prior
Daily performance
Daily ETV, stacked by Growth, Maintenance and Fixes.
Work-mix over time
Share of Growth / Maintenance / Fixes over a rolling 7-day window. Reads as 'where is effort flowing right now'.
Repository spread
Where this developer's commits land. Concentrated work (top1 > 80%) vs polymath spread (top1 < 30%).
| Repo | Commits | ETV |
|---|---|---|
| adk-python | 140 | 21.9 |
Most impactful commits
Top 20 by ETV in the 90-day window.
- 1.7ETVfeat: add OpenAI Responses API support in labs Add OpenAIResponsesLlm and AzureOpenAIResponsesLlm under labs.openai, a BaseLlm targeting the OpenAI Responses API: request/response/streaming conversion, reasoning summaries, structured output, tool mapping, and usage metadata. Merge https://github.com/google/adk-python/pull/6188 Closes #3209 Co-authored-by: Luca Frigato <37444661+FrigaZzz@users.noreply.github.com> Co-authored-by: George Weale <gweale@google.com> PiperOrigin-RevId: 938272066github.com-google-adk-python · 6b831d5a · 2026-06-26
- 0.8ETVfix: emit resumability checkpoints from workflow graph nodes In resumable mode the workflow node now records node-status checkpoint events and an end-of-agent marker as it runs, so a paused human-in-the-loop workflow can be resumed and its progress is visible on the event stream. Co-authored-by: George Weale <gweale@google.com> PiperOrigin-RevId: 949594038github.com-google-adk-python · cecc1f98 · 2026-07-17
- 0.8ETVfeat: Add `--trigger_sources` and ADK service options to `cli_deploy_agent_engine` COPYBARA_INTEGRATE_REVIEW=https://github.com/google/adk-python/pull/5960 from google:adk-api-server 28b12358b702154b35f9e88325c8240e1d947930 Change-Id: If1e5374682468dd1f4d9a11983bcf0f830418ffdgithub.com-google-adk-python · ffa057c1 · 2026-06-04
- 0.7ETVchore: fix mypy strict type errors in adk evaluation Co-authored-by: George Weale <gweale@google.com> PiperOrigin-RevId: 947184782github.com-google-adk-python · e37a8bef · 2026-07-13
- 0.6ETVfeat(agents): restore 1.x agent config wiring for backward compatibility Change-Id: I1c8b61cf21d5fef8a622b93f55411e1628845097github.com-google-adk-python · 44cd1167 · 2026-05-27
- 0.6ETVfix: reject incomplete evaluation inputs Several evaluators paired actual and expected invocations with a plain zip, so extra turns were silently dropped and a truncated run could still pass. The rubric parser likewise discarded incomplete fields, and empty multi-turn inputs could crash. This validates invocation counts and pairs strictly, rejects partially parsed rubric responses, and returns a not-evaluated result for empty multi-turn inputs. Co-authored-by: George Weale <gweale@google.com> PiperOrigin-RevId: 949253981github.com-google-adk-python · 8ca9128a · 2026-07-17
- 0.5ETVfix: add artifacts in each agent's .adk folder The local artifact service wrote to a single <agents_dir>/.adk/artifacts root shared by all agents, while session storage is per-agent under <agents_dir>/<agent>/.adk. Route artifacts the same way so each agent's artifacts live next to its session.db. For adk web/api_server this moves the default artifact location to <agents_dir>/<agent>/.adk/artifacts. To stay backward compatible, PerAgentFileArtifactService falls back to reading the old shared root on a miss, so existing artifacts keep loading; new writes go per-agent (copy-on-write migration). create_artifact_service_from_options logs a WARNING when a legacy shared root is found, pointing users at the manual move (the users/ dir into <agent>/.adk/artifacts). adk run is unaffected (it already resolved to the per-agent path). Also harden _resolve_agent_dir to use Path.is_relative_to instead of a string-prefix check, which accepted prefix-sharing siblings (e.g. app_name "../agents_evil" under an "agents" root). This guards both the artifact and session per-agent paths. Change-Id: Ib1b911fa35de00ebf8335a0825a03bb98dfab336github.com-google-adk-python · bae5b1a1 · 2026-06-02
- 0.5ETVchore: fix mypy strict type errors in adk cli Co-authored-by: George Weale <gweale@google.com> PiperOrigin-RevId: 944616907github.com-google-adk-python · 7b081416 · 2026-07-08
- 0.5ETVrefactor: yield the sliding-window compaction event to the runner Move event persistence to the main runner loop, the runtime's synchronization point: sliding-window compaction now yields its event instead of appending it, and the runner appends it like any other event. Co-authored-by: George Weale <gweale@google.com> PiperOrigin-RevId: 944093841github.com-google-adk-python · 49c0a365 · 2026-07-07
- 0.5ETVchore: fix mypy strict type errors in adk plugins Co-authored-by: George Weale <gweale@google.com> PiperOrigin-RevId: 947131804github.com-google-adk-python · fd8fa3b8 · 2026-07-13
- 0.4ETVfix: match rubric verdicts by echoed id so paraphrased rubrics are not dropped RubricBasedEvaluator mapped each auto-rater verdict back to its rubric by exact normalized property text. When the judge paraphrased the property text (e.g. kanji/hiragana rewrites), nothing matched and every verdict was silently dropped, leaving the invocation unscored. Each rubric now carries a short id that the judge is asked to echo, and verdicts are matched by id first, falling back to normalized property text so existing behavior is preserved. Close #6171 Co-authored-by: George Weale <gweale@google.com> PiperOrigin-RevId: 951036528github.com-google-adk-python · 0b7355ba · 2026-07-20
- 0.4ETVfeat: add to_mcp_server to serve an ADK agent over MCP Exposes an ADK agent as an MCP server, the MCP counterpart of to_a2a, so MCP hosts such as Antigravity, Claude Code, and Codex can drive an ADK agent. The agent is registered as a single MCP tool backed by a Runner, with intermediate events surfaced as MCP progress notifications. Ships @experimental behind the existing mcp extra. Co-authored-by: George Weale <gweale@google.com> PiperOrigin-RevId: 944100870github.com-google-adk-python · 50ff37f8 · 2026-07-07
- 0.4ETVchore: fix mypy strict type errors in adk tools Co-authored-by: George Weale <gweale@google.com> PiperOrigin-RevId: 944705634github.com-google-adk-python · 0c733ace · 2026-07-08
- 0.4ETVfeat(memory): add Vertex AI load_profiles tool Add VertexAiLoadProfilesTool for explicit agent access to structured user profiles from Vertex AI Memory Bank, backed by a new VertexAiMemoryBankService.retrieve_profiles method. Profiles are a Vertex backend capability (a scope-keyed lookup), not a memory-interface concept, so BaseMemoryService is unchanged. Co-authored-by: George Weale <gweale@google.com> PiperOrigin-RevId: 938264248github.com-google-adk-python · fb2b3afe · 2026-06-25
- 0.4ETVtest: synchronize BigQuery write assertions The BigQuery analytics plugin test relied on fixed 10ms sleeps to wait for asynchronous writes, which is not a valid completion signal and produced timing-dependent failures and leaked Queue.get coroutine warnings. This replaces the sleeps with the plugin's flush() synchronization boundary and shuts the loop-owned worker down before closing the event loop. Co-authored-by: George Weale <gweale@google.com> PiperOrigin-RevId: 951592599github.com-google-adk-python · 2dc07457 · 2026-07-21
- 0.4ETVchore: fix mypy strict type errors in adk integrations Co-authored-by: George Weale <gweale@google.com> PiperOrigin-RevId: 947131751github.com-google-adk-python · 0f279d63 · 2026-07-13
- 0.4ETVfix: recover compacted function calls during prompt assembly Close #5602 Co-authored-by: George Weale <gweale@google.com> PiperOrigin-RevId: 944697651github.com-google-adk-python · 0c517e76 · 2026-07-08
- 0.3ETVfix: use mTLS endpoint for Google OAuth2 token requests When a client certificate is configured, OAuth2 token exchange and refresh now present the certificate and target the *.mtls.googleapis.com endpoint so Context-Aware Access / token binding is honored. Gated to *.googleapis.com token endpoints with a client cert available; third-party providers and non-cert environments are unchanged. Co-authored-by: George Weale <gweale@google.com> PiperOrigin-RevId: 941319195github.com-google-adk-python · ffe41f05 · 2026-07-01
- 0.3ETVperf(litellm): track brace depth incrementally for streaming tool-call args Co-authored-by: George Weale <gweale@google.com> PiperOrigin-RevId: 945173968github.com-google-adk-python · e5fdb51e · 2026-07-09
- 0.3ETVfix: surface error for empty STOP model turn in non-streaming mode An empty model turn (finish_reason=STOP with no content parts) was silently becoming an empty final response. The non-streaming flow now surfaces it as a MODEL_RETURNED_NO_CONTENT error event. Detection lives in the flow and only in non-streaming mode, not in LlmResponse.create, so streaming consumers that batch parts across chunks (where a terminal finish-only chunk legitimately follows earlier content) are unaffected. Close #5631 Co-authored-by: George Weale <gweale@google.com> PiperOrigin-RevId: 939915020github.com-google-adk-python · 932a9b56 · 2026-06-29