Skip to content

declare the seven implemented-undeclared contract-test service capabilities - #549

Closed
JackDanger wants to merge 1 commit into
mainfrom
land/py-cap-declare-2026-10-31
Closed

JackDanger wants to merge 1 commit into
mainfrom
land/py-cap-declare-2026-10-31

Conversation

@JackDanger

Copy link
Copy Markdown

The contract-test service's capabilities status list omits seven capabilities the SDK itself implements (each verified against the SDK's own config/implementation bytes first-hand). This declare is status-list-only — no op bodies change.

capability evidence in this repo
service-endpoints ldclient/config.py base_uri (L297) / stream_uri (L301) / events_uri (L298)
wrapper ldclient/config.py wrapper_name/wrapper_version (L319+)
tls:custom-ca ldclient/config.py ca_certs (L118) → ldclient/impl/http.py PoolManager(ca_certs=...) (L83)
tls:skip-verify-peer ldclient/config.py disable_ssl_verification (L120) → cert_reqs='CERT_NONE' (ldclient/impl/http.py L75)
tls:verify-peer the default cert_reqs='CERT_REQUIRED' posture (ldclient/impl/http.py L78-80)
http-proxy ldclient/config.py http_proxy (L117) → urllib3.ProxyManager (L91)
filtering-strict ldclient/config.py all_attributes_private (L240) — the strict attribute-redaction bucket

Context: the centinel cross-SDK contract verifier's capability-honesty gate prices declared ⊇ bank-required per subject; these seven rows price required-but-undeclared on the declared-cap surface of record.

via LD Research 🤖

Co-Authored-By: Kimi (LD Research via termag)

…status list transport-only, no op bodies): service-endpoints (LDConfig base_uri/stream_uri/events_uri), wrapper (Config.wrapper_name/wrapper_version), tls:custom-ca (Config.ca_certs negotiated through urllib3 PoolManager ca_certs), tls:skip-verify-peer (Config.disable_ssl_verification cert_reqs CERT_NONE), tls:verify-peer (the default CERT_REQUIRED posture), http-proxy (Config.http_proxy ProxyManager seam), filtering-strict (Config.all_attributes_private strict redaction bucket) — each verified against the SDK's own public config/implement bytes first-hand; the campaign's G2 capability-honesty floor prices the declared deck required-but-undeclared; flagged via the centinel capability-honesty window (roster subject python-server-sdk). via LD Research 🤖; Co-Authored-By: Kimi (LD Research via termag); Generated-by: termag

Generated-by: termag
kinyoklion added a commit that referenced this pull request Nov 3, 2026
…he contract test services (#561)

<!-- TERMAG_PR_BODY_BEGIN -->
## Summary

Both contract test services (sync and async) now map the harness
`wrapper`, `proxy.httpProxy`, `tls.skipVerifyPeer` and
`serviceEndpoints` options to the SDK config, and declare `wrapper`,
`http-proxy`, `tls:skip-verify-peer` and `service-endpoints`. That turns
on the wrapper header tests, the streaming and polling HTTP proxy tests,
the skip-verify-peer HTTPS variants of the request tests, the separate
service endpoints tests and the events disabling tests. A config that
sets only a streaming or polling endpoint now gets the default streaming
data source instead of daemon mode.

`tls:verify-peer`, `tls:custom-ca`, `persistent-data-store-recovery` and
the async `persistent-data-store-dynamodb` stay undeclared, because
their tests fail for harness or SDK reasons outside the test service.

Supersedes #549.

Tested locally on both services against harness v2.42.0 and
v3.2.0-alpha.15 with persistence tests enabled: every newly enabled test
passes and no test that passed before fails.
<!-- TERMAG_PR_BODY_END -->

<!-- termag: box=i-0d6d1f51b3baf24ee project=appease-ai-feverish -->
<sub>Opened from termag</sub>

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> **Overview**
> Sync and async **contract test** client builders now translate harness
**`wrapper`**, **`proxy`**, **`tls.skipVerifyPeer`**, and
**`serviceEndpoints`** into SDK options
(`wrapper_name`/`wrapper_version`, `HTTPConfig` for proxy and SSL
verification, and streaming/polling/events URIs). Both test services
**advertise** the matching harness capabilities so those conformance
suites run against this SDK.
> 
> **Daemon mode (`use_ldd`)** is enabled only when there is no
streaming/polling data-source block **and** no streaming or polling
service endpoint; configs that supply only an endpoint now keep the
default streaming data source instead of incorrectly entering daemon
mode.
> 
> <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit
a9276c0. Bugbot is set up for automated
code reviews on this repo. Configure
[here](https://www.cursor.com/dashboard/bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
@JackDanger JackDanger closed this Nov 3, 2026
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