Skip to content

feat(adk): read returned plain tool closures with invocation evidence - #965

Open
pengfei-threemoonslab wants to merge 5 commits into
codex/874-returned-tool-listsfrom
codex/874-returned-tool-closures
Open

pengfei-threemoonslab wants to merge 5 commits into
codex/874-returned-tool-listsfrom
codex/874-returned-tool-closures

Conversation

@pengfei-threemoonslab

@pengfei-threemoonslab pengfei-threemoonslab commented Oct 4, 2026 •

Copy link
Copy Markdown
Contributor

Draft validation notice: renewed independent review identified scope gaps involving comprehension assignments, eager headers, generic type parameters, and unevaluated annotations. The shared correction is being validated on #964; #965 will be restacked afterward. Earlier clear-validation statements below apply to the previous head and do not establish readiness. The final source, replay provenance, committed verification and hosted checks will replace this notice before readiness.

ADK agents that select plain nested functions from a synchronous factory's returned list, tuple or literal-key dictionary currently lose that tool binding. This change follows those fresh functions through the established factory invocation and records their source locations and per-agent captured literal values.

The reader checks every eager nested header, including unselected dictionary members. Executable headers, decorated tools, named capture aliases, callbacks, shared mutable defaults and unproved parent cells keep explicit limits. Unknown captures establish no complete implementation comparison, and their diagnostics omit literal argument payloads. Factory namespace and retained-container ownership checks still apply to empty projections. OpenAI Agents SDK remains outside this plain-closure route.

This is the next bounded increment for #874, stacked on #964. Foreign target-agent surfaces, runtime runner retention and instance attributes remain subsequent work. It does not claim complete #874 or Vesta acceptance.

Validation: the full suite passed 15,100 tests with 7 skips (20m01s). The focused reader suite passed 896 tests, static-only checks passed 522 tests, and all five latency gates passed (7.18s). Ruff and whitespace checks passed; fixture self-check reports ready. Both independent reviewers cleared the change, including separate probes for nonlocal cells, per-agent capture separation, payload privacy and empty-projection namespace escapes.

The frozen 49-case replay completed with all members answering: 1 compared, 42 partial and 6 not established. All 68 established rows (60 changed, 8 added across 9 members), all statuses/limits/row payloads, and all other substantive answer content are unchanged from 87381ec12. Tuatha's combined-scope output carries updated nested engine identities; its substantive answer is unchanged. This replay is unscored and claims no new Q qualification. Independent source audit validated 98 tree pins, 49 merge bases, 44 definitions, 15 constructions and 41 import blobs. All 51 engine occurrences match one engine. The replay ran on the reviewed uncommitted overlay, and its entire engine requirement is equivalent to the clean committed source on 0399f386d. Hosted CI will be recorded before marking the PR ready.

Local boundary checking names no recognized host changes and requires verification. Fresh committed verification against origin/main...HEAD reports control_state=complete, decision=passed and all six permissions true on 0399f386d.

@pengfei-threemoonslab

Copy link
Copy Markdown
Contributor Author

Review (2026-10-05): holding this PR, not merging. It is based on an older #964 commit (87381ec12) and conflicts with #964's head in two list_expressions.py hunks: the _factory_result_changed signature and the reflection handling. Its own description says it is waiting to be restacked after #964's scope correction. I haven't reviewed it further; it waits until #963 and #964 are settled (see the reviews there).

@pengfei-threemoonslab
pengfei-threemoonslab force-pushed the codex/874-returned-tool-lists branch from 1db868c to e8f997a Compare October 8, 2026 08:55

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant