Repository navigation
Use the vendor TypeSafe SDK for crosswalk transport and retry - #725
Conversation
05b2be1 to
9a87ae0
Compare
… its own readiness message, not by a set difference The FileSdRegistrationTests helper start() treated a reused address as missing registration. An unfinished trial keeps its target registered after a clean stop. When a later exporter in the same test binds the same address, update_file_sd replaces that address's group, so set(listed()) - before stays empty and the helper waited out its 30-second deadline. This is the recurring CI failure "exporter never registered its target" (tests/test_adaptive_paper_metrics.py:467), seen on #707 and #725 today. Root cause, confirmed by measurement: - CPython's HTTPServer sets allow_reuse_address, and TCPServer.server_bind sets SO_REUSEADDR. - 1,000 sequential --port 0 exporters reused a retained address 378 times (37.8%). Every one registered, in 55.6 ms median and 79.3 ms maximum. The fix: - start() reads this child's own readiness message (its listening address and file_sd path) from non-blocking stderr, and confirms that the announced address is listed. - It keeps the 30-second bound and fails at once if the child exits. Regressions: - Forced sequential port reuse: failed after 30.2 s with the old helper; passes now. - A never-registering exporter (--no-file-sd on a reused address) is rejected within its bound. - 20 consecutive runs of FileSdRegistrationTests: 380 tests, all passing. Built by GPT-6.1 Sol through the packaged SDK worker (round filesd-flake-r1); committed by the coordinator. The builder's runs each exited 0: tests.test_adaptive_paper_metrics (42 tests), the 20-run loop, validate, evidence_manifest --check and git diff --check. Co-Authored-By: Claude Opus 5.5 <[email protected]>
…egistry plus the owned rows) Co-Authored-By: Claude Opus 5.5 <[email protected]>
…fore the final hot-file commit Co-Authored-By: Claude Opus 5.5 <[email protected]>
… (hot-file protocol: every hot-file edit in the last commit) Co-Authored-By: Claude Opus 5.5 <[email protected]>
|
Claude session native-agent-stack-5f: landing at head Observed main Required checks at this head: 7 pass . Unresolved review threads: 0. |
|
Claude session native-agent-stack-5f: post-merge observation. Landed as |
Scope
The crosswalk's
call()duplicates HTTP transport and retries already shipped by TypeSafe. Replace that loop with the publishedtypesafe-sdk==0.7.2client and its native retry policy, imported only forjudge. Preserve request construction, validation, thresholds, ledger code and recorded judgments.4af7417b7d4db8936c0136235a86717f31d16f27(descends from77d7516d8).lane:foundation.tools/sota-convergence/gap_crosswalk.py, its new SDK test, dated decision, compact synthetic evidence and the evidence registry.SOTA sources
extra="ignore"andstrict=True, requires confidence, and drops unknown answer types beforevalidate()/ledger. No modeled field is lost on any of the 695 retained successful rows (2,254 choice answers); future schema-mismatched responses can change acceptance or lose extra fields. The decision now makes this boundary explicit.typesafe-sdk/0.7.2. pydantic/[email protected], d426e2c4: public elapsed contract supplies successful-attempt HTTP timing, excluding SDK decoding; the prior timer also included final JSON decoding. Earlier attempts/backoff remain excluded.0a961148187d52e18276ed7f2d02617cfac48e3b97673cb631a8749397d43d1e. Installation used an isolated uv environment with source builds disabled.host_receipts.register_fileupdated the five owned files from main's registry and re-registered the revised decision; the registry is committed last atad6979a866317456cf80e32855c0a591f8371d88.Evidence-class table
source_reviewsyntheticlocal_integrationpython3 -Sofflinebuild --check, exit 0local_integrationvalidate.pyafter final P3 registry commit: exit 0, 10,098 hashes; integrity and scope onlyThe stub tests are locally authored integration checks through the unchanged SDK implementation, not an unchanged upstream suite or live provider acceptance. No live judge call occurred. The original environment-only credential consumer remains unchanged. No credential inventory, install script, host receipt or host-stack pin changed.
Dependency pinning in the runtime install hint remains an explicit limitation: the hint pins only
typesafe-sdk==0.7.2. The observed dependency set includeshttpx2==2.13.1,pydantic==2.13.5andtenacity==9.1.4; another resolution can select versions outside that tested set. The optional hint change is deferred, as allowed by the cross-family verdict.Local commands run
Checks used private scratch and an isolated uv cache; the private environment path prefixes are recorded in the lane status. Runtime checks are reused from the unchanged code/test inputs at
9a87ae07; the P3 follow-up changes only the decision and its registration. Validation was rerun before the doc/registry commits and after the final registry commit.The first eight-test stub run exited 1 because three preloaded mock responses lacked elapsed metadata. The final streamed fixture exercises native read/close timing; that failed attempt and correction remain in
evidence/artifacts/typesafe-sdk-transport-20261005/checks.json, with final returned output alongside it. Independent review also corrected the missing-SDK hint to preserve the original command's required--set/--outarguments; no material findings remain.Decision record
docs/decisions/2026-10-05-typesafe-sdk-transport.mdrecords the three gates, retry comparison, header/timing changes, alternatives, overturn conditions and completeness critic.Host evidence
Not applicable: no host receipts changed.
Checklist