Repository navigation
Description
Delivered — Native Server3.3.0 (2026-11-08)
Implemented by #1093; qualified and published at release source 2a15179f29801eec9f2a2d4e6a9c5f93233f104e / indexcb4b11bd. Acceptance and scope limits. No benchmark speedup is claimed.
Original requirement and evidence
External performance report, topic 15. The reported timings and proposed fixes have not been independently reproduced. The supplied patches are reference drafts for review and current-source qualification.
Problem
A workflow claim reads the run under the transition lock. The first
history page then reads last_history_sequence again, though nothing in
between wrote that run's history.
Proposal
The first page reuses the claim's last_history_sequence.
Reported benchmark evidence
Reporter-supplied cumulative measurements, not an isolated-effect or independently verified performance claim: 200 sequentially started workflows, five sequential 20ms activities or five local activities each, six PHP worker processes, mean of three repetitions, one machine, fresh SQLite/MySQL8.0/PostgreSQL16 databases with default durability. "Five" and "local" below mean last-close wall time in seconds; S/M/P means SQLite/MySQL/PostgreSQL. Preserve regressions and noise in the reported results.
MySQL five-steps: 15.82 → 15.37. The full matrix at this stage: five
11.04 / 15.37 / 16.17, local 4.29 / 4.34 / 4.34.
Acceptance
- Same pages.
- A debug assertion checks that the run's sequence is unchanged
between the claim's read and the page, so a later change that breaks the
invariant fails in tests.
Implementation constraints
It rests on one invariant, which the assertion guards.
Dependencies
No new producer dependency is required for source investigation.
Related existing work: #325.
Draft patches and validation boundary
Current main was independently read as b8f4dd13623ce645de77ba5bd89ae8dd8eea2f7c. The supplied draft series targets 3d4d4afaf2b24aaa5443eac154e253b011924738; patches are cumulative reference material, not a current-main application or test result. Review and rebase on maintained source, preserve all existing tests and published compatibility, then establish causal controls and actual conformance before shipping. No patch was applied or executed during intake.
The following sanitized unified diffs identify proposed reference material:
0024-t15-Reuse-the-claimed-run-s-last-history-sequence-for-it.patch— 4,066 bytes, SHA-25606c1d6d23ce7fc7392e72ac38077fa277aef4d4f3984a002868c38d91cf074e3.
Next action: the owning maintainer reviews the candidate against current source and the acceptance criteria above. Preserve durability, lease/fencing, idempotency, fairness and whole-completion/history budgets. New producer capabilities need versioned schemas and real producer/consumer compatibility proof; historical/frozen evidence is not rewritten.
Activity
rmcdaniel commentedon Nov 6, 2026
Sanitized reference diff
0024-t15-Reuse-the-claimed-run-s-last-history-sequence-for-it.patch, part 1/1.This is an unverified, cumulative draft from the external report. Mail author/date/commit-message metadata was removed; the unified-diff hunks were retained. No patch was applied or executed, and no build/test or compatibility result is implied. The known gaps and acceptance criteria in this issue remain mandatory.
Complete sanitized patch: 4,066 bytes, SHA-256
06c1d6d23ce7fc7392e72ac38077fa277aef4d4f3984a002868c38d91cf074e3. This part: 4,066 bytes, SHA-25606c1d6d23ce7fc7392e72ac38077fa277aef4d4f3984a002868c38d91cf074e3. Parts concatenate in order; a part boundary is between complete file diffs.rmcdaniel commentedon Nov 6, 2026
Sanitized rebased reference for report topic 15:
0024-t15-Reuse-the-claimed-run-s-last-history-sequence-for-it.patch.The supplied revision targets Server
b8f4dd13623ce645de77ba5bd89ae8dd8eea2f7c. It is cumulative external reference material, not independently qualified against today's maintained source. Mail headers and commit-message/application instructions were removed; the unified diff is retained. The reporter now claims every rebased commit builds and the tip passes SQLite/MySQL/PostgreSQL tests. Those are attributed claims, not a new maintainer test result. Existing acceptance criteria, security findings and completed implementation receipts remain authoritative. Earlier attached patches are retained as historical references.Sanitized patch: 4,066 bytes, SHA-256
63e5ab2031ef626e77531144cd488a4a720af20dc5965d396fcbb61b64ff61ad. Original-base sanitized identity:06c1d6d23ce7fc7392e72ac38077fa277aef4d4f3984a002868c38d91cf074e3. No patch was applied or executed during this update.rmcdaniel commentedon Nov 7, 2026
The independent history-total implementation is prepared as
0457f986e14b4749ad2fd816fb9f13393e8b1042, treeb4c5a7a310a7c8025be43d4439aaad3bd5c8cc7c, from accepted maindc2a9d1050e9ebb15b6a1ffaf2dce667b292bd7d. Full own-authored delta below; it has no public branch or overlapping CI train. It remains behind #1064 in the active P0 order and does not inherit the earlier combined #1088 results.The first history page reuses the run row already read by the claim. Subsequent pages and callers without a known total retain the original lookup. Debug builds independently reread the counter and assert equality. Shared SQLite/PostgreSQL/MySQL controls compare pages/cursors and statement counts, and deliberately append an intervening event to prove the assertion fires. These controls are not yet executed on this isolated current head; normal repository/backend qualification remains required.
The printed
Some(5)versusSome(4)assertion in the earlier #1088 PostgreSQL logs is the intentional caught negative control. For example, the retainedffdPG17 final summary names onlyqualification_candidates_keep_index_order_without_run_scansas failed (32 passed / one failure). The guard is preserved, not waived; that clarification is not a pass for this new isolated head.Full diff SHA-256
b5b1310643d55c363ebc120c8b0e1447bddc3265af79262d42f06cacb50d7495, 8908 bytes. Server retains normal PR/check/integration and later published-artifact ownership after its source slot opens. No new backend, installed or benchmark run is claimed.rmcdaniel commentedon Nov 7, 2026
The preparation
0457f986is rebased without conflict onto main1c34f3b7as local3d2eac17b7bc6331113111d3736594e02e358cc0(branchfeat/server-1066-known-history-total, not pushed yet). Local SQLite checks in CI's pinned Rust image pass:sqlite_workflow_and_query_poll_transaction_counts, including the newqualify_claim_history_sequence: page/cursor equality, statement counts, and the deliberate intervening-write debug assertion;executionsuite: 738 passed, 1 existing ignore.PostgreSQL/MySQL coverage comes from the normal PR checks.
Next action (Server): push and open its own draft PR once the #325 qualifier window ends. Runner, main and Source writes are frozen until then. It overlaps #1092 only in adjacent test-registration lines, so whichever PR merges second gets a trivial rebase. Owner: Server.
rmcdaniel commentedon Nov 8, 2026
Published-artifact reconciliation: delivered in Native Server3.3.0.
Implementation #1093 is an ancestor of immutable release source
2a15179f29801eec9f2a2d4e6a9c5f93233f104e. Its accepted source checks are62success/1intended skip. The integrated #1098 source head5f937ec8f385c71dc781875f2f38026b63277faahas a byte-identicalrust/tree to this release. I independently read its successful SQLite, MySQL8.0, MariaDB10.11 and PostgreSQL17 native-test job commands: they run the registered all-targets/ignored qualification suites (only the unrelated MySQL bootstrap child is skipped). This supports the specific source controls below; it is not a new benchmark run.All-backend page/cursor equality and statement-count controls cover the reused first-page total. The deliberate intervening history write is caught by the debug assertion; its printed panic is an intentional negative control, not a failed test.
The 3.3.0 release is public at index
sha256:cb4b11bd6235a551cf51e7dc6342504fbbcef19959618b376fb5648ca00fc388, with provenance binding M. Published SQLite corpus acceptance passed, as did four-cell MySQL Compose acceptance, the no-input default, and the release’s SQLite/PostgreSQL/MySQL startup/identity/stop smokes. Both registries’3.3/3/latest aliases resolve to D.The issue’s functional/source acceptance and release follow-through are met. Closing as completed. No isolated speedup, reporter benchmark reproduction, all-backend installed corpus or installed EXPLAIN rerun is claimed. Earlier rejected/combined subjects remain attributed. Remaining P0 work, including #1099, is excluded from this3.3.0 cut. Schema11 and rollback constraints remain in the tagged release notes.