epic-4/story-4: Support Integration Customization and Extension Boundaries - #41
Conversation
There was a problem hiding this comment.
Code Review
This pull request adds a new integration test file, tests/test_integration_customization.py, which verifies that custom adapter substitutions for transport and storage preserve SDK semantics and maintain byte-identical evaluation determinism. There are no review comments, and I have no feedback to provide.
Important
The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.
f723894 to
17b6548
Compare
ec7ed31 to
1338c8c
Compare
17b6548 to
05162b0
Compare
…tution Beads: ai-driven-product-dev-ct2u Agent: fullstack-sdk-dev Status: completed Proves custom Transport (Core kwarg) + custom DataStore (SDKConfig field) preserve evaluation/tracking/flush/sticky semantics with byte-identical determinism. 7 tests; 635 -> 642, zero regressions. Test-only story (no runtime gap found). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1338c8c to
31b611a
Compare
F-066 propagation (rebase onto remediated 3-3)Rebased onto the remediated stack. Does not modify
|
|
Superseded — all commits already in main (bc76b64). Closing without merge as part of post-sprint cleanup. |
Story 4.4 — Support Integration Customization and Extension Boundaries
Part of sprint `sprint/2026-04-06-convert-python-sdk`. Stacked on #40 (epic-4/story-3) → #39 → #38 → epic-3 chain.
What was built (test-only — extension infra already shipped by Stories 1.x–3.x)
The
@runtime_checkableports/Protocols (Transport, DataStore, EventBus), theadapters/defaults, and both injection points already exist. The Codex-claimedtests/test_integration_customization.pydid NOT exist — this PR builds it, proving adapter substitution preserves semantics against the real hybrid injection contract:Core(config, transport=...).SDKConfig(data_store=...).7 new tests (
tests/test_integration_customization.py, 287 lines, no runtime code touched):@runtime_checkableTransport/DataStore viaisinstancewithout subclassing the defaults (AC feat(python-sdk): add in-memory config evaluation managers #2/feat(python-sdk): add api manager and event queue layer #3).RecordingTransportreplaces HttpxTransport end-to-end (eval + tracking + double-flush no-op).RecordingDataStorereplaces InMemoryDataStore (sticky context state + goal dedup).4–7. Task 4.4 — byte-identical
ExperienceResultdeterminism, default vs custom adapters, across 4 visitor IDs incl. unicode, with a non-vacuous bucketing guard.Tests: 635 → 642 (+7), zero regressions. No runtime gap found; no runtime code modified.
Audit findings
SDKConfig(data_store=...)— the disk-verified field contract.@runtime_checkableconformance; the defective "typed init error" wording correctly NOT implemented.Beads
Epic `ai-driven-product-dev-neqm`; task `-ct2u` (integration customization tests) — closed.
Provenance note
Story retro-marked `done` with a stale GPT-5-Codex Dev Agent Record claiming the integration test + `ports/logger.py` shipped. The driver grepped the live branch, found neither, and resolved a genuine F-012/F-041 contract contradiction against on-disk reality (transport=kwarg, storage=config field).
Readiness
Gate passed 9/10. 5 questions auto-delegated "your call" in sprint mode (all the F-012/F-041 contradiction + deferral decisions; resolved against disk without conflict).
🤖 Generated with Claude Code