Skip to content

feat(v2): validate server identify and alias delivery - #65

Open
dustinbyrne wants to merge 3 commits into
mainfrom
feat/identify-alias-blackbox
Open

dustinbyrne wants to merge 3 commits into
mainfrom
feat/identify-alias-blackbox

Conversation

@dustinbyrne

Copy link
Copy Markdown
Contributor

Problem

The draft2 runner can observe received events but cannot inspect a private SDK queue. Server identify and alias acceptance cases should be executable through public adapter calls and received-event assertions.

Changes

  • Bind /identify and /alias for JSON arguments using the existing adapter call and native-throw handling.
  • Run the four server examples from sdk-specs #75 by stable case ID within the existing acceptance features. A generic isolated-instance binding does not require storage controls; existing storage-specific bindings remain unchanged.
  • Make v2 JSON event-property equality presence-aware and type-aware (true is not 1), updating regressions that previously accepted false matches. Keep the 157-case migration selection and v1 runner unchanged. Add Sampo minor release metadata for the new v2 actions; do not change the pinned specs revision or CI defaults.

Validation

  • Latest specs checkout: 1,267 passed, 1 skipped in the full opt-in harness suite. After the final isolated-instance binding change, 70 focused passed and 951 passed, 318 skipped in the default suite.
  • Controlled healthy/defective HTTP hosts cover exact identity, event/properties, typed JSON, missing and duplicate events, native throws, route negotiation and applicability.
  • Fresh local harness and Node adapter images: four selected acceptance examples pass in each of v0 and v1 (four older client/negative examples remain unselected per profile; no infrastructure errors). This is delivery coverage, not a claim about private queue state or client identity behavior.
  • git diff --check, Black and Ruff passed on edited files; read-only reviewer found no issues.

@github-actions

Copy link
Copy Markdown

parallel-adapter Compliance Report

Date: 2026-09-22T19:21:55.861584+00:00
Duration: 1386ms

✅ All Tests Passed!

17/17 tests passed


Feature_Flags Tests

17/17 tests passed

View Details
Test Status Duration
Request Payload.Request With Person Properties Device Id 24ms
Request Payload.Flags Request Uses V2 Query Param 25ms
Request Payload.Flags Request Hits Flags Path Not Decide 23ms
Request Payload.Flags Request Omits Authorization Header 22ms
Request Payload.Token In Flags Body Matches Init 18ms
Request Payload.Groups Round Trip 18ms
Request Payload.Groups Default To Empty Object 19ms
Request Payload.Disable Geoip False Propagates As Geoip Disable False 16ms
Request Payload.Disable Geoip Omitted Defaults To False 15ms
Request Payload.Flag Keys To Evaluate Contains Only Requested Key 15ms
Request Lifecycle.No Flags Request On Init Alone 8ms
Request Lifecycle.No Flags Request On Normal Capture 19ms
Request Lifecycle.Two Flag Calls Produce Two Remote Requests 26ms
Request Lifecycle.Mock Response Value Is Returned To Caller 20ms
Retry Behavior.Retries Flags On 502 1023ms
Retry Behavior.Retries Flags On 504 1021ms
Side Effect Events.Get Feature Flag Captures Feature Flag Called Event 11ms

@github-actions

Copy link
Copy Markdown

minimal-adapter Compliance Report

Date: 2026-09-22T19:22:04.575077+00:00
Duration: 2497ms

✅ All Tests Passed!

17/17 tests passed


Feature_Flags Tests

17/17 tests passed

View Details
Test Status Duration
Request Payload.Request With Person Properties Device Id 12ms
Request Payload.Flags Request Uses V2 Query Param 8ms
Request Payload.Flags Request Hits Flags Path Not Decide 7ms
Request Payload.Flags Request Omits Authorization Header 8ms
Request Payload.Token In Flags Body Matches Init 6ms
Request Payload.Groups Round Trip 7ms
Request Payload.Groups Default To Empty Object 7ms
Request Payload.Disable Geoip False Propagates As Geoip Disable False 8ms
Request Payload.Disable Geoip Omitted Defaults To False 8ms
Request Payload.Flag Keys To Evaluate Contains Only Requested Key 7ms
Request Lifecycle.No Flags Request On Init Alone 3ms
Request Lifecycle.No Flags Request On Normal Capture 9ms
Request Lifecycle.Two Flag Calls Produce Two Remote Requests 11ms
Request Lifecycle.Mock Response Value Is Returned To Caller 7ms
Retry Behavior.Retries Flags On 502 1010ms
Retry Behavior.Retries Flags On 504 1012ms
Side Effect Events.Get Feature Flag Captures Feature Flag Called Event 11ms

@greptile-apps

greptile-apps Bot commented Sep 22, 2026

Copy link
Copy Markdown

Retrigger

The behavior appears safe, but the async test must be changed to avoid blocking synchronous file I/O before merging because it violates an explicit repository requirement.

Reviews (1) · Last reviewed commit: "test(v2): select in-place server identit..."

Comment on lines +204 to +205
feature.read_text().replace("an isolated SDK with empty persistent storage", "an isolated SDK instance")
)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Blocking I/O in async test

This async test calls Path.read_text() and Path.write_text() directly, blocking the event loop. This violates the repository directive to flag synchronous file I/O in async Python. Move the feature rewrite into a synchronous fixture or helper, or offload the file operations to a thread. This repository requirement must be satisfied before merging.

Context Used: Be direct and concise: state the issue, its impact, and the fix, with no preamble or praise. Do not comment on alphabetical sorting, trailing commas, or formatting. Linters catch these. Judge code by four simplicity rules: it passes all the tests, ex... (source)

Prompt To Fix With AI
This is a comment left during a code review.
Path: tests/test_v2_identify_alias.py
Line: 204-205

Comment:
**Blocking I/O in async test**

This async test calls `Path.read_text()` and `Path.write_text()` directly, blocking the event loop. This violates the repository directive to flag synchronous file I/O in async Python. Move the feature rewrite into a synchronous fixture or helper, or offload the file operations to a thread. This repository requirement must be satisfied before merging.

**Context Used:** Be direct and concise: state the issue, its impact, and the fix, with no preamble or praise. Do not comment on alphabetical sorting, trailing commas, or formatting. Linters catch these. Judge code by four simplicity rules: it passes all the tests, ex... ([source](https://app.greptile.com/review/custom-context?memory=instruction-0))

---

For each issue above, determine whether it is valid and should be fixed. If so, fix it directly.

This branch has not been deployed

No deployments
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