Skip to content

Move the Shared Server fixtures reference to published 2.11.4 - #805

Merged
rmcdaniel merged 7 commits into
mainfrom
rust-325-reference-2114
Oct 27, 2026
Merged

rmcdaniel merged 7 commits into
mainfrom
rust-325-reference-2114

Conversation

@rmcdaniel

@rmcdaniel rmcdaniel commented Oct 27, 2026 •

Copy link
Copy Markdown
Member

Part of #325. This moves the Shared Server fixtures' published PHP reference from 2.11.1 to Server 2.11.4 (Core 2.14.2):

  • source ad3ac5fda0a30a58084b2d68569f2d91e23fabf3;
  • linux/amd64 sha256:bee30cde…;
  • linux/arm64 sha256:cc297aa7….

General and Security verified these artifacts (#802, server-325 chat 2846 and 2848).

1. Native follows Core 2.14 (7b5ada605)

  • Repair-pass report: adds service_call_dispatch_candidates, service_call_dispatches_enqueued and service_call_dispatch_failures. Native runs a call's handler when it accepts the call, so it has no outbox and reports zeros.
  • Service-call execute: wait_timeout_seconds is bounded at 60 (Update completion wait_timeout_seconds is caller-unbounded #775), not 86400.
  • Handler metadata: names service_call_idempotency_key, which is null for a call dispatched when it is accepted.

2. poll_transport in task-queue views (a4c1de7af)

Published 2.11.3 reports WorkerPollDiagnostics::snapshot on every task-queue list and detail entry. Native records no early poll disconnects, so it reports {"status":"unavailable","retention_seconds":900,"last_disconnect":null}, as PHP does without its cache. It never claims no_recent_observation.

Native returns the ordinary JSON response to every poll, declining the opt-in progress transport. The contract allows this, because SDKs must accept both (#325 comment 6432802069).

3. The reference move (e5d2aeb15)

  • tests/Fixtures/ServerParityBaselines/php-2.11.4.json is the new baseline. The SDK, CLI, Waterline and sample-app pins are unchanged.

  • All 40 reference pins name it: image pulls, the PHP runner image and the script defaults.

  • The takeover cohorts are unchanged: each names its own source release and layout (php2111 still takes over published 2.11.1 as php-2.11.1).

  • The 2.11.4 API route table equals 2.11.1's apart from the poll-progress middleware, so the route inventory stands.

  • repair-pass and service-calls expect the Core 2.14 answers above.

  • Boundary for Workflow #931: service-calls no longer repeats an idempotency key from another caller namespace.

    • Published 2.11.1 created a separate call for that caller.
    • 2.11.3 and 2.11.4 replay the first call and rebind its handler identity.
    • The prepared correction refuses the foreign caller.

    Nothing else in the fixture referred to that call, and the fixture's contract says why. It now has 90 requests. The step returns when a release carries the correction; until then native keeps 2.11.1's separate call.

Fixes after the first runs

  • 912f49a6d: two tests the move had left on 2.11.1.
    • The image-pull unit test pins the reference as a regex (php-2\.11\.1); it now names 2.11.4. The comparator unit batch passes 2417/2417.
    • The update-wait ceiling execution test: a 61-second wait is now a 422 validation failure before routing, as 2.11.3 answers, and a 60-second wait still reaches the unserved handler kind.
  • 0a64b6ede: the move had also changed the php2111 takeover cohort's expected layout to php-2.11.3, and every cohorts part failed its table count. Those six lines are not reference pins and are restored; the workflow no longer changes any expected layout.

4. Docs (2bf5fdfee)

A checkpoint (docs/rust-server-port-checkpoints/2026-10-27-reference-2114.md) and the refreshed current state.

Checks run

  • Full selection against 2.11.4: CI's fixture selection (the corpus without update-validation) recorded on SQLite against published 2.11.4. Before the boundary, only service-calls differed: the replayed-from-another-caller step and the three steps that follow from it.
  • After the boundary: repair-pass, service-calls and storage-test pass against both 2.11.4 and native from this branch, and the two records compare equal.
  • Contract test: the service-calls contract test passes 22/22.
  • Native tests: the full SQLite library (338) and execution (560) suites pass.
  • Policies: both organization policies pass.

5. SQLite qualification boundary for service-calls (7f6564f53, added after queue attempts)

Two of this PR's three merge-queue groups failed on the published 2.11.4 reference, not on native: PHP answered service-calls held[0] with 429 on the first call to a one-in-flight operation (runs 40463072450 and 40466604924), under SQLite writer contention from its own maintenance loop (Server #796; evidence in #796 comment 6436288360). The SQLite job now records service-calls apart from its main corpus with PHP's maintenance loop stopped, the boundary #723 already uses for update-validation. That includes #754's single fresh-prefix retry after database is locked. Fixture assertions are unchanged; the MySQL and PostgreSQL jobs keep service-calls in their main corpus with their loops running. Remove the boundary when the reference carries the #796 fix. Its unit tests pass 14/14 in the 2.11.4 image, and both organization policies pass.

CI runs the full selection on all four databases.

🤖 Generated with Claude Code

rmcdaniel and others added 6 commits October 27, 2026 04:47
…ncy key

Published Server 2.11.3 and 2.11.4 (Core 2.14.2) change three answers
native gives differently from 2.11.1:
- The repair-pass report adds service_call_dispatch_candidates,
  service_call_dispatches_enqueued and service_call_dispatch_failures
  for its dispatch outbox. Native runs a call's handler when it accepts
  the call, so it never has a dispatch to enqueue and reports zeros.
- An execute request's wait_timeout_seconds is bounded at 60 (#775's
  update-wait ceiling, extended to update-bound operations), not 86400.
- A dispatched activity or carrier handler's metadata names its
  service_call_idempotency_key; a call dispatched when it is accepted
  has none, so it is null.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Published 2.11.3 adds poll_transport to every task-queue list and detail
entry (WorkerPollDiagnostics::snapshot). Native keeps no record of
worker polls that ended early, so it reports the observation store's
unavailable state, as PHP does without its cache, and never claims
no_recent_observation. Native also returns the ordinary JSON response to
every poll, declining the opt-in progress transport, which the contract
allows because SDKs must accept both (server#325 comment 6432802069).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The published PHP reference was Server 2.11.1. It is now Server 2.11.4,
Core 2.14.2: source ad3ac5f, images
amd64 sha256:bee30cde… and arm64 sha256:cc297aa7…, as General and
Security verified them. The SDK, CLI, Waterline and sample-app pins are
unchanged.
- tests/Fixtures/ServerParityBaselines/php-2.11.4.json is the new
  baseline. Every reference pin (image pulls, the PHP runner image, the
  script defaults) names it.
- The existing-PHP takeover cohorts now expect the php-2.11.3 layout:
  2.11.4 has no schema change.
- repair-pass expects the three dispatch-outbox counts, and
  service-calls the 60-second wait bound and the null
  service_call_idempotency_key in handler metadata.
- service-calls no longer repeats an idempotency key from another
  caller namespace. Published 2.11.3 and 2.11.4 replay the first call
  for that caller and rebind its handler identity, the defect Workflow
  #931 corrects; the correction refuses the foreign caller. The step
  returns when a release carries the correction. Nothing else in the
  fixture referred to that call, and its contract says so. 90 requests.

Checked: CI's fixture selection recorded against published 2.11.4 on
SQLite; before the boundary only service-calls differed, in the
replayed-from-another-caller step and three steps that follow from it.
After it, repair-pass, service-calls and storage-test pass against both
2.11.4 and native from this branch, and the two records compare equal.
The service-calls contract test passes 22/22.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The checkpoint names the verified 2.11.4 artifacts, the Core 2.14
expectation changes native now follows, the poll_transport position and
the Workflow #931 boundary, with what was checked. The Rust port's
current state lists #799 and #801 as merged, #803 and this move as
next, and 2.11.4 as the compared reference.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This PR's first run failed in two places:
- ServerParityImagePullTest pins the reference pull as a regex
  (php-2\.11\.1), which the pin move did not match. It now names
  php-2.11.4. The whole comparator unit batch passes (2417).
- The update-wait ceiling execution test sent a 61-second wait to an
  update-bound operation and expected 501 for the unserved handler kind.
  With the 60-second bound, that request is now a validation failure
  before routing, as published 2.11.3 answers; a 60-second wait still
  reaches the unserved kind. Both are asserted.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This PR's second run failed every cohorts part: the php2111 takeover
cohort, which takes over a database published 2.11.1 creates (image
bf8bed13…), was told to expect the php-2.11.3 layout and its 51 tables.
The move treated its six DW_PARITY_UPGRADE_EXPECTED_LAYOUT lines as
reference pins; they are not. Each takeover cohort names its own source
release and layout and never uses the parity reference, so the six
lines are php-2.11.1 again and the workflow no longer changes any
expected layout. The checkpoint said otherwise and is corrected.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@rmcdaniel
rmcdaniel added this pull request to the merge queue Oct 27, 2026
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to failed status checks Oct 27, 2026
@rmcdaniel
rmcdaniel added this pull request to the merge queue Oct 27, 2026
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to failed status checks Oct 27, 2026
@rmcdaniel
rmcdaniel added this pull request to the merge queue Oct 27, 2026
On SQLite the published PHP reference shares one database file with its
one-second maintenance loop. Under that writer contention it has answered
the first call to a limited service operation with 429 twice: rated[0], one
call per minute, on 2.11.1 (merge queue run 40418397301), and held[0], one
call in flight, on 2.11.4 (run 40463072450). Each dropped an otherwise-green
merge group.

The SQLite job already records update-validation apart from its main corpus
with PHP's maintenance loop stopped (Server #723), and retries the PHP record
once under a fresh prefix when PHP logged "database is locked" (#754). The
helper now takes an optional fixture name and records service-calls the same
way, under service-calls-* evidence names. Its fresh-prefix retry also gets a
fresh namespace and admission counters, since the fixture's namespace derives
from the workflow id. The fixture's assertions are unchanged, and the MySQL
and PostgreSQL jobs keep service-calls in their main corpus with their loops
running.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@rmcdaniel
rmcdaniel removed this pull request from the merge queue due to a manual request Oct 27, 2026
@sonarqubecloud

Copy link
Copy Markdown

@rmcdaniel
rmcdaniel added this pull request to the merge queue Oct 27, 2026
Merged via the queue into main with commit b99cb41 Oct 27, 2026
58 checks passed
@rmcdaniel

Copy link
Copy Markdown
Member Author

Merged through the merge queue at 2026-10-27T08:23:34Z.

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