Skip to content

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

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

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

Conversation

@JackDanger

Copy link
Copy Markdown

The test service's getStatus() capabilities list omits seven capabilities the SDK itself implements (each verified against the SDK's own option/implementation bytes first-hand). Status-list-only — no bodies change.

capability evidence in this repo
service-endpoints SdkClientEntity maps the polling baseUri frame (test-service/SdkClientEntity.php:53-54); LDClient carries the per-service URI options
server-side-polling the polling arm test-service/SdkClientEntity.php:53-54 + src/LaunchDarkly/Impl/Integrations/FeatureRequesterBase.php
filtering Config::allAttributesPrivate/privateAttributes (src/LaunchDarkly/LDClient.php, test-service/SdkClientEntity.php)
filtering-strict the same allAttributesPrivate strict redaction bucket (src/LaunchDarkly/Impl/Events/EventSerializer.php redact law)
http-proxy src/LaunchDarkly/LDClient.php:40 http_proxy option (Curl/Guzzle integrations)
tags src/LaunchDarkly/LDClient.php:98,165-167 application_info (Types\\ApplicationInfo)
wrapper src/LaunchDarkly/LDClient.php:100-101 wrapper_name/wrapper_version

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)

…getStatus status list transport-only, no bodies): service-endpoints (baseUri/streamUri/eventsUri rows SdkClientEntity maps), server-side-polling (the polling arm SdkClientEntity $config['polling'] already prices, FeatureRequesterBase), filtering (LDConfig allAttributesPrivate/privateAttributes), filtering-strict (the allAttributesPrivate strict redaction bucket, EventSerializer redact law), http-proxy (LDClient 'http_proxy' option, Integrations/Curl proxy rows), tags (LDClient application_info Types\ApplicationInfo), wrapper (LDClient 'wrapper_name'/'wrapper_version' User-Agent rows) — each verified against the SDK's own public option/implement bytes first-hand; the centinel capability-honesty window (roster subject php-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
<!-- TERMAG_PR_BODY_BEGIN -->
## Summary

The contract test service now declares `tls:verify-peer`. The SDK's
Guzzle clients already verify peers by default, so the service needs no
further wiring. This turns on the harness test `events/requests/invalid
tls certificate`, which checks that event posts to a server with an
untrusted certificate fail.

Supersedes #283.

Tested locally with sdk-test-harness v2.41.1, using the CI skip
patterns: 4454 total, 6 skipped, no failures. The newly run test passes,
and none of the 4446 tests that passed before regressed.
<!-- TERMAG_PR_BODY_END -->

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

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> **Overview**
> The PHP contract test service **advertises the `tls:verify-peer`
capability** in `getStatus()`, so the SDK test harness knows peer
certificate verification is supported.
> 
> That enables the **`events/requests/invalid tls certificate`**
scenario, which expects event posts to a host with an untrusted cert to
fail. **No SDK or service wiring changes** are required—the existing
Guzzle clients already verify TLS peers by default; this is only a
capability declaration for the harness.
> 
> <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit
1db0253. 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