Repository navigation
Rust #325: move the Shared Server fixtures reference to published 2.11.5 - #815
Merged
Merged
Conversation
Core 2.15.1 (Workflow #931, #948) makes a service-call idempotency key belong to the target operation, not to a caller: ServiceCallIdempotency finds the first call under (target namespace, endpoint, service, operation, trimmed key) whoever made it, and Server's execute path answers 403 service_operation_forbidden unless the request comes from that call's owner, the same caller namespace, caller workflow instance and run, through the same endpoint, service and operation rows. The refusal writes no call or audit row and leaves the first call as it was. Native found a prior call only for the same caller namespace, so another caller reusing the key got a new call of its own, as published 2.11.1 did. Published 2.11.3 and 2.11.4 replay the first call to the foreign caller and rebind its handler identity, the defect #931 corrects; the shared fixture leaves that step out until a release carries the correction. Native now looks the key up by the stored catalog names and answers the same 403 to anyone but the owner. Names are matched as stored, so an upper-case path still replays the call. A taken-over PHP database's idempotency_scope_hash is not read: native writes none, and for a PHP row the names lookup finds the same first call. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A Nexus workflow-bound handler binds a service call to a workflow run. PHP closes the call when that run ends, and published 2.11.5's maintenance pass repairs one it missed (Core 2.15's LinkedServiceCallCloser, reported as service_call_linked_* in the repair pass). Native serves no workflow-bound handler yet (Server #794) and closes no linked call, so an open one taken over from PHP would stay open forever. The service-call inspection now also counts open calls (pending, accepted or started) whose resolved binding is workflow_run, without naming them. Any makes the inspection unqualified, and takeover refuses with upgrade_source_service_calls_workflow_bound_open before any change. Closed workflow-bound calls and open calls of other bindings still take over. The takeover runbook says how to clear them before the stop. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The published PHP reference was Server 2.11.4 (Core 2.14.2). It is now Server 2.11.5, Core 2.15.1: source 721b283, index sha256:f4f2ec64… (identical on Docker Hub and GHCR), amd64 sha256:bcc67285… and arm64 sha256:3160f4f5…, as General verified them. The SDK, CLI, Waterline and sample-app pins are unchanged, and the API route table is identical to 2.11.4's. - The SQLite job's maintenance pause is gone. 2.11.5 carries the #726 update-validation lock fixes and #796 atomic service admission, so update-validation and service-calls record in the SQLite main corpus with PHP's maintenance loop running, as on MySQL and PostgreSQL. update-validation-sqlite.sh, php-maintenance-window.sh and their tests are removed; the native image corpus follows. - service-calls restores "replay other caller": the key belongs to the operation (Workflow #931), so another caller namespace gets 403 service_operation_forbidden. 91 requests. - repair-pass expects Core 2.15's three linked service-call counts; native reports them as zeros, since it binds no call to a workflow run (#794). - bridge-adapters bounds 2.11.5's intermediate #777 answer: Core checks the namespace first, but the 2.11.5 controller still echoes "cannot be reused with a different namespace" for both foreign starts. #811 answers the intended "unavailable", which stays the expectation. Checked locally on SQLite with native-image-corpus.sh, a native image built from this branch, published 2.11.5 and embedded 2.11.5: published 2.11.5, native and embedded each pass all 73 cases, and the three records compare equal. The contract unit tests for the changed fixtures pass. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
12 tasks
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.



Part of #325. Moves the fixture reference from published 2.11.4 to published Server 2.11.5 (Core 2.15.1). It also removes the SQLite maintenance-pause workaround, per the #726 handoff (#325 comment 6446634830).
Reference. Source
721b2831975cc898cc39d7528c5ba7e8441fe744. The indexsha256:f4f2ec64…is identical on Hub and GHCR. Per-platform digests: amd64sha256:bcc67285…, arm64sha256:3160f4f5…, recorded intests/Fixtures/ServerParityBaselines/php-2.11.5.json. SDK, CLI, Waterline and sample-app pins are unchanged. The API route table is identical to 2.11.4's (174api/routes, diffed from both images).Commits
service_operation_forbiddenwith no call or audit row, matching Core 2.15.1 (Workflow #931).upgrade_source_service_calls_workflow_bound_open).workflow_bound_open, and the runbook says how to clear such calls before the stop.update-validationandservice-callsrecord in its main corpus, as on MySQL and PostgreSQL.update-validation-sqlite.sh,php-maintenance-window.shand their tests are removed, and the native image corpus follows.service-callsrestores the "replay other caller" step, now expecting 403 (#931). 91 requests.repair-passexpects Core 2.15's threeservice_call_linked_*counts. Native reports zeros.bridge-adaptersgets a second bounded answer for Bridge adapters: foreign-instance type disclosure, non-atomic dedupe and colliding update keys, unbounded adapter name #777. 2.11.5 checks the namespace first but still says "cannot be reused with a different namespace". Deduplicate bridge commands inside the instance writer lock #811 (after 2.11.5) answers the intended "is unavailable", which remains the expectation.Checked locally (Rust dev host, SQLite,
native-image-corpus.shwith a native image built from this branch):update-validationandservice-callswith maintenance running. It failed onlyrepair-pass(new counts) andbridge-adapters(start_other_type), which led to the two expectation changes above.73d43c8c, the same tree as this head apart from docs and the takeover commit):cargo test --lib: repair_pass 3/3, upgrade module 60/60 (including the new refusal test).MySQL, MariaDB and PostgreSQL run in CI only.
Not in this PR: the canonical history-byte unit for v1 projections (#770) is prepared on
rust-325-wip/canonical-history-bytes. It lands with the first reference carrying #812, becausewaterline-importrecordshistory_size_bytesfrom the reference.🤖 Generated with Claude Code