Repository navigation
chore(cli,conformance): review hygiene sweep (#1447) - #1510
Merged
Merged
Conversation
- CLI help text: command docstrings without issue, spec or ADR references or RST markup; extras render as [llm] instead of being eaten as markup. - donkey verify exits 2 when an asset needs a live read and there is no gateway credential, naming the variables (or, in jwt/bearer mode, that the CLI has no token). Shared CLI helpers move to cli/_common.py. - The conformance responder's strip_budget also drops x-llm-proxy-ratelimit; the server-mode extra hint covers --donkey-mode server and run_conformance(mode="server"); the correlation remediation points at donkey.current_run.run_id. - langgraph-demo and openai-agents-demo also run conformance in server mode. - CibaScenario says where its shapes were captured; the duplicate mcp.* mypy override and the stale if_changed vulture entry are gone; the suite docstring counts four tool-binding scenarios; the wheel smoke tests skip on a Python without ensurepip. Part of #1447 Co-authored-by: Cursor <cursoragent@cursor.com>
tommasobolis
marked this pull request as draft
October 30, 2026 10:50
Collaborator
Author
This was referenced Oct 30, 2026
tommasobolis
marked this pull request as ready for review
October 30, 2026 11:56
This was referenced Oct 30, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #1447
Merge order: merge this PR last. #1447 is split across four PRs, and this one carries
Closesplus the full item table below:chore/1447-adk-bridged-classes, not yet opened): the ADK bridged classesSummary
#N,BG §x.yorADR NNNNreferences and no RST``markup. Before, rich markup also swallowed the extras, sodonkey doctor --helpprinted "Needs the ```` extra"; they now render as[llm], `[local]` and so on. The citations stay in the module docstrings. The generated `cli.mdx` block changes in one line (`verify` keeps "read-only").donkey verifyand the gateway credential: when an asset needs a live read (an MCP server or ana2a_v1agent) and there is no gateway credential, verify now exits2before any read. The message namesDONKEY_LLM_PROXY_CLIENT_ID/_SECRET. Injwt/bearermode the CLI has no token provider, so the message says so and points atDONKEY_LLM_PROXY_AUTH=client-idorPublication.verify()from code. Before, each asset failed on its own and the command exited1. A plan with nothing to read live still needs no gateway credential. The module docstring andcli.mdxare updated.cli/_common.py:ci_source(),document()andprint_issues()move here frompublish.py, soexposeandverifyno longer import private helpers from.publish.exposehas its own_runtimetest seam._fixture_responder(strip_budget=True)also dropsx-llm-proxy-ratelimit(_wire.RATELIMIT_HEADER), the other header the token window is read from.[local]hint now covers all of server mode: thegatewayfixture,--donkey-mode serverandrun_conformance(mode="server").donkey.current_run.run_idinstead of the Provisionalcore.telemetry.current_correlation_id(). The example page that prints the message is updated.langgraph-demoandopenai-agents-demoalso run conformance with--donkey-mode=server. Both already install[local]; both modes pass 4/4 locally.CibaScenariodocstring says its shapes were captured on an A2Amessage/sendand an MCPtools/call, not on an LLM-proxy route. Thesimulator.mdxnote is in docs: ledger recount, key-header row and review wording sweep (#1447) #1495."mcp.*"mypy override and the staleif_changedvulture entry (if_changedis now a live option ofdonkey publish);tests/conformance/suite.pynow counts four tool-binding scenarios;ensurepip.Every #1447 item
initif_changedsession.py: dead_check_approvals,_bind_tooldocstringverifyvalidates only the control planeexpose --pathvs positional pathexpose/verifyimport private helpers from.publishcli/_common.py)donkey-kit[cli]without a constraints lock"mcp.*"overridelitellm[mcp]a no-op below ~1.102_fixture_responderkeepsx-llm-proxy-ratelimitCibaScenariodocstring and mock docssimulator.mdx)Governed*:ModelPrivateAttrmarker, local classeschore/1447-adk-bridged-classes, not yet opened)_LOCAL_EXTRA_HINTnames only thegatewayfixture--donkey-mode serverrun in the demo sessionscurrent_correlation_id()llm_proxy_key_headerexamples/openai_agents/collector.pyduplicates LangGraph'sbinding.mdxstep-up exceptionfraction_usedoverflowPublicationAssetTypedocstringConfigWarningdocstringensurepipdonkey --version)warm()guard wordingARCHITECTURE.mdexperimental503wordinggoverned=TrueNone of the items had already been resolved by #1460–#1475 when this work started on
7bdaf455; each was re-checked ondevelopbefore it was fixed.Waivers
expose --pathvs a positional path:expose/preflighttake the optional service ID as their positional argument (donkey expose [SERVICE]). A second optional positional for the path would makedonkey expose fooambiguous between a service and a directory. Making them match means either moving the service to--serviceor the path to a positional, and either way the CLI surface changes. Maintainer call: keep--path, or redesign theexposearguments?action/action.ymlinstallsdonkey-kit[cli]into the Python the user's workflow chose (3.10+). A lock would need one constraints file per Python minor version, and it would pin users to versions they did not resolve themselves, against the floors-not-ceilings dependency policy. Thedonkey-kitinput already lets a workflow pin the package. Maintainer call: is a lock wanted despite that?python -m examples.<dir>.main). Each is type-checked as its own package (mypy -p examples.<dir>) and smoke-tested against its own extra, andmain.pyloadscollector.pyfrom its own directory. A shared module would couple two examples that are meant to be copied out one at a time. The files differ only in their docstring.Test plan
nox -s typecheck-and-lint test-3.11 new-dependencies commit-identities(passed, after rebasing on5af7d0e7)nox -s docs-site docs-llms-drift(passed)nox -s langgraph-demo openai-agents-demo(passed; conformance 4/4 in-process and 4/4 with--donkey-mode=serverfor both)test_cli_verify.py: a missing gateway credential exits 2 before any read; bearer mode names the client-id pair; a plan with nothing to read live needs no credential.test_conformance.py:strip_budgetdropsx-llm-proxy-ratelimit.nox(every session): not run locally; CI runs itpython scripts/verify_frameworks.py: n/a, no adapters or extras changedADR needed?
Acceptance-harness impact
group3_public_surface/test_cli.py::test_verify_rejects_missing_version_before_readingis unaffected: a declaration issue still exits 1 before the credential check.donkey verifyagainst a live proxy withoutDONKEY_LLM_PROXY_CLIENT_ID/_SECRETwill now see exit2and "No gateway credential", not per-asset errors and exit1. No current test does.Migration note
donkey verifyexits2, not1, when an asset needs a live read and there is no gateway credential. That includesjwt/bearermode, where the CLI has no token. SetDONKEY_LLM_PROXY_CLIENT_ID/DONKEY_LLM_PROXY_CLIENT_SECRET, or callPublication.verify()from code withDonkey(llm_auth=...).Post-deploy steps
None.