Repository navigation
Unblock the nightly Official TCK run (SLIMRPC re-vendor) and fix two intermittent server tests - #147
Merged
Merged
Conversation
…nchanged Upstream experimental-cpb-slimrpc merged its collaborative-task work to main as 1328426 (its PR #5). That added a2a-collaborative-task.md, a2a-shared-task.md and slimrpc-collaborative-task.md to main and changed both vendored files, so check_slimrpc_spec.sh failed the nightly Official TCK run before the official suite could start. All five documents are now vendored. The binding does not follow: what the merge added to slimrpc.md and slimrpc-multicast.md is A2A 1.1 (SendLiveMessage, its multicast form in a new section 8, and the slimrpc-context-map key it uses), and no A2A 1.1 has been released. The eleven A2A 1.0 rows are unchanged. The three new documents are byte-identical to branch tip 36b03a7, which was already triaged as not followed; only "never reached main" stopped being true. The decision and its reasons are in spec/slimrpc_v1/README.md. The three triage entries are removed from KNOWN_BRANCH_SPECS: section 3 skips files main carries, so they could never match again. The binding README, the book chapter and one e2e doc comment now say "the A2A 1.0 surface" where they said complete against main. check_slimrpc_spec.sh: 5 files on main, all vendored and matching; 4 branch-only specs, all triaged. check_method_denominator.py with --slimrpc-spec: 2 sources agree on the same 11 methods. Signed-off-by: Tom F. <tomf@tomtomtech.net> Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CmrtmTtr47ip388nrSaduU
…s' own
the_rps_unit_is_multiplied_by_the_window failed on macOS with its 121st
request admitted. The limiter counts in fixed windows aligned to the
wall clock (window.rs: now_secs / window_secs), so a boundary inside the
loop resets the count and the request is correctly admitted. It and
the_tenant_limit_applies_across_distinct_callers (a 1s window) now run
through refused_within_one_window, which discards an attempt that starts
and ends in different windows and retries it. A rollover can only admit
more, so the admissions asserted inside an attempt hold either way.
concurrent_claims_of_one_key_produce_exactly_one_winner failed on
Windows with 0 winners, which only a pre-existing claim can produce. Its
database lived at a2a-idem-{pid} and was removed while the store still
held it open, which Windows refuses (the error was discarded), so a
later test process with the same PID found the key claimed. It and
a_migrated_store_can_take_an_artifact_append now use a per-run directory
(pid plus nanoseconds) and drop the store before removing it.
Both reproduced with scratch tests before the fix (not committed): a
leftover database gives claimed=0 replays=16, the CI signature; a run
forced across a 1s boundary admits the over-limit request under the old
logic, and the helper discards it and is refused on the retry.
Signed-off-by: Tom F. <tomf@tomtomtech.net>
Co-Authored-By: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CmrtmTtr47ip388nrSaduU
8 of 12 tasks
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.
What this changes
Two independent commits.
f51c776— SLIMRPC spec re-vendor; the binding does not change. Upstreama2aproject/experimental-cpb-slimrpcmerged its collaborative-task work tomainon 2026-09-29 as1328426(its PR #5). That added three documents tomainand changed both vendored ones, socheck_slimrpc_spec.shfailed the scheduled Official TCK run (36666242899). That step comes before "Start the SUT", so the official suite and the baseline gate were skipped:mainhas had no full official conformance result since the upstream merge.SendLiveMessage, its multicast form (new §8), and theslimrpc-context-mapkey used only on that call. The newesta2aproject/A2Atag isv1.0.1, so the binding stays on the A2A 1.0 surface. The spec itself requires implementations targeting an older A2A version to use that version's methods. The eleven 1.0 rows are unchanged.36b03a7, which was already triaged as not followed. Only "never reached main" stopped being true.spec/slimrpc_v1/README.md. The binding README, the book chapter and an e2e doc comment now say "A2A 1.0 surface". The three triage entries inKNOWN_BRANCH_SPECSare removed, since a file onmaincan never match one.spec/slimrpc_v1/README.mdsaid theStreamRequestvocabulary is absent from both vendored specs. Both now nameStreamRequest, but only as the request type ofSendLiveMessage.baa8ec8— two intermittent tests ina2a-protocol-server, each failing because of the test. These are the failures on #145 (Windows) and #146 (macOS). Neither PR's diff could have caused them.the_rps_unit_is_multiplied_by_the_window: the 121st request was admitted. The limiter's windows are fixed and aligned to the wall clock, so a boundary inside the loop resets the count, as it should. This test and the 1-second-window tenant test now userefused_within_one_window, which discards an attempt that straddles a boundary and retries it.concurrent_claims_of_one_key_produce_exactly_one_winner: 0 winners, which only a pre-existing claim can produce. The database path wasa2a-idem-{pid}, and it was removed while the store still held the file open. Windows refuses that, and the error was discarded, so a later test process with the same PID found the key already claimed. This test anda_migrated_store_can_take_an_artifact_appendnow use a per-run directory and drop the store first.How it was verified
./scripts/check_slimrpc_spec.sh: exit 1 before; after, "5 file(s) on upstream main, all vendored and matching; 4 branch-only spec(s), all triaged".check_method_denominator.py --slimrpc-spec spec/slimrpc_v1/slimrpc.md: 2 sources agree on the same 11 methods.claimed=0 replays=16, exactly the CI signature.cargo test -p a2a-protocol-server --libpasses with default features (1,021 tests),--features sqlite(1,183) and--all-features(1,374 passed, 2 ignored).cargo fmt --all -- --check, andrustfmt --edition 2024 --checkon the binding'stests/e2e.rs.cargo clippy -p a2a-protocol-server --all-features --all-targets -D warnings.ci.yml(7 shell, 18 Python) andcheck_book_code.shall pass.scripts/check_dco.sh: both commits carry a matching sign-off.Checklist
git commit -s) by a human git authorspec/slimrpc_v1/are verbatim upstream copies and carry none, like the two already vendoredcheck_file_lengths.shpasses)cargo fmt --allpassescargo clippy --workspace --all-targets -- -D warnings: run fora2a-protocol-serverwith all features and all targets, not the whole workspace; CI runs the restcargo test --workspace: run fora2a-protocol-server --libunder three feature sets, not the whole workspacecargo doc --workspace --no-deps: not run; no doc comments on public items changedcargo mutants: not run; only test code and documents changed, so there is no production line to mutateCHANGELOG.mdupdated ([Unreleased]→### Internal)🤖 Generated with Claude Code
https://claude.ai/code/session_01CmrtmTtr47ip388nrSaduU
Generated by Claude Code