Repository navigation
Description
Current delivery — November 9, 2026
General owns this work while the Server agent is Off. #1099's seven retained reductions are released in Native 3.3.1. Final acceptance binds source 0bcadca1, exact image index775e83d5, corpus, published Compose/default, PHP replay, physical MySQL and Sample App checks. #1099's signed merge/main verification and topic cleanup are complete. Earlier NONPASSs remain attributed.
The paired poll-cache writer remains deferred to preserve the binding and result writes' separate expiration-time origins. It is not delivered; this issue remains open for that item. No benchmark speedup is claimed. The stored answers, schema, protocol and capabilities are unchanged.
Next: review a writer design that preserves the accepted expiry contract, with discriminating timing and rollback controls before selecting another source train. #1068's #1110 is the current active source train. All original WIP refs remain preserved.
Original requirement and evidence
External performance report, topic 12. The reported timings and proposed fixes have not been independently reproduced. The supplied patches are reference drafts for review and current-source qualification.
Problem
MySQL's general log, grouped by transaction, shows 639 locked statements
per five-steps workflow. Many of them return nothing the transaction
doesn't already know. Each one is a network round trip made while every
other transition waits.
Proposal
Each item below is independent and can be its own PR:
- Write the run summary row with one upsert (
ON CONFLICT, or
REPLACEon MySQL, where the primary key is the only unique key)
instead of DELETE + INSERT. A missing run or instance row still deletes
the stored row. (75109f35) - Write a poll's binding and result cache rows in one two-row upsert.
(639b6854) - Read them in one SELECT (
QUERY_CACHE_GET_PAIR). An expired row is
still deleted, and a kinds conflict still refuses before the result is
read. (cab8eb91) - Count the projection's waits and tasks in one pass each, with
COUNT(CASE ...), instead of eight subqueries. (cbe380a0) - Read the run's authored sequences with its row: one statement
instead of four. (d705f92a) - Read the run status before marking a completed task's run waiting.
This drops 6 no-op UPDATEs per workflow. (a23b1f6d) - Let a fenced claim reuse the registration row its fence just read
(FENCE_REGISTRATION). (e48cd22a) - Keep a run's immutable columns (namespace, type, priority, fairness,
compatibility) from the run row the transaction already read
(Transaction::run_tags). A rolled-back savepoint forgets them.
(1ccda45c)
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.
- 639 → 558 locked statements per five-steps workflow on MySQL.
- Five-steps: 17.87 → 17.25 on the slowest backend (MySQL), with S / M / P
11.56 / 17.25 / 15.90. - The projection census took 175–187 µs instead of 310–370 µs on MySQL.
Acceptance
- Each item keeps every stored row and every answer the same. The existing
suites pass on all three backends. - A statement-count test, or the bench trace, shows the drop.
Implementation constraints
Each change removes a statement whose answer was already
known.
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:
0014-t12-Write-a-run-s-summary-row-in-one-upsert.patch— 16,841 bytes, SHA-2561b4a258192fb0d63eb1db0b5ffbe28887c358648fcd70b633ef8b6ae2c25b479.0015-t12-Write-a-poll-s-binding-and-result-cache-rows-togethe.patch— 1,249 bytes, SHA-2568cd4d67fb3f4b4244d2cc2c66d0a63c3529a4d0d8039c49319bc8567a98e5136.0016-t12-Count-the-projection-s-waits-and-tasks-in-one-pass-e.patch— 3,288 bytes, SHA-256fdf483da82c731f6e82ef547a10285235d2817e9dba9038c55edc572195533e7.0017-t12-Read-a-run-s-authored-sequences-with-its-row.patch— 3,569 bytes, SHA-256fbb211a4e75583b3358c011a64050d533392722a98feea3c4d28153034aa62e6.0018-t12-Read-a-completed-task-s-run-status-before-marking-it.patch— 1,866 bytes, SHA-2560d26bdf3ad8b7d0303c7799912b6365fff536a1f423a4f3f91a5f5fd23967ebe.0019-t12-Read-a-workflow-poll-s-binding-and-result-cache-rows.patch— 8,846 bytes, SHA-256310bae18f59ce4bc467471607644a8b7a0427b7923d7bd320ac5767612bc1c8e.0020-t12-Let-a-claim-use-the-registration-row-its-fence-just-.patch— 10,243 bytes, SHA-2560998f68703f4b37116717e01dc97313ee3d0c028673467d8fd563192cd3193fa.0021-t12-Keep-a-run-s-tags-from-the-run-row-a-transaction-alr.patch— 12,625 bytes, SHA-2565107f116242ef169daa18c71e6ac69fa571946a4cce8a6d6b39ac41e7f6bc42c.
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
0014-t12-Write-a-run-s-summary-row-in-one-upsert.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: 16,841 bytes, SHA-256
1b4a258192fb0d63eb1db0b5ffbe28887c358648fcd70b633ef8b6ae2c25b479. This part: 16,841 bytes, SHA-2561b4a258192fb0d63eb1db0b5ffbe28887c358648fcd70b633ef8b6ae2c25b479. Parts concatenate in order; a part boundary is between complete file diffs.rmcdaniel commentedon Nov 6, 2026
Sanitized reference diff
0015-t12-Write-a-poll-s-binding-and-result-cache-rows-togethe.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: 1,249 bytes, SHA-256
8cd4d67fb3f4b4244d2cc2c66d0a63c3529a4d0d8039c49319bc8567a98e5136. This part: 1,249 bytes, SHA-2568cd4d67fb3f4b4244d2cc2c66d0a63c3529a4d0d8039c49319bc8567a98e5136. Parts concatenate in order; a part boundary is between complete file diffs.rmcdaniel commentedon Nov 6, 2026
Sanitized reference diff
0016-t12-Count-the-projection-s-waits-and-tasks-in-one-pass-e.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: 3,288 bytes, SHA-256
fdf483da82c731f6e82ef547a10285235d2817e9dba9038c55edc572195533e7. This part: 3,288 bytes, SHA-256fdf483da82c731f6e82ef547a10285235d2817e9dba9038c55edc572195533e7. Parts concatenate in order; a part boundary is between complete file diffs.rmcdaniel commentedon Nov 6, 2026
Sanitized reference diff
0017-t12-Read-a-run-s-authored-sequences-with-its-row.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: 3,569 bytes, SHA-256
fbb211a4e75583b3358c011a64050d533392722a98feea3c4d28153034aa62e6. This part: 3,569 bytes, SHA-256fbb211a4e75583b3358c011a64050d533392722a98feea3c4d28153034aa62e6. Parts concatenate in order; a part boundary is between complete file diffs.rmcdaniel commentedon Nov 6, 2026
Sanitized reference diff
0018-t12-Read-a-completed-task-s-run-status-before-marking-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: 1,866 bytes, SHA-256
0d26bdf3ad8b7d0303c7799912b6365fff536a1f423a4f3f91a5f5fd23967ebe. This part: 1,866 bytes, SHA-2560d26bdf3ad8b7d0303c7799912b6365fff536a1f423a4f3f91a5f5fd23967ebe. Parts concatenate in order; a part boundary is between complete file diffs.rmcdaniel commentedon Nov 6, 2026
Sanitized reference diff
0019-t12-Read-a-workflow-poll-s-binding-and-result-cache-rows.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: 8,846 bytes, SHA-256
310bae18f59ce4bc467471607644a8b7a0427b7923d7bd320ac5767612bc1c8e. This part: 8,846 bytes, SHA-256310bae18f59ce4bc467471607644a8b7a0427b7923d7bd320ac5767612bc1c8e. Parts concatenate in order; a part boundary is between complete file diffs.rmcdaniel commentedon Nov 6, 2026
Sanitized reference diff
0020-t12-Let-a-claim-use-the-registration-row-its-fence-just-.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: 10,243 bytes, SHA-256
0998f68703f4b37116717e01dc97313ee3d0c028673467d8fd563192cd3193fa. This part: 10,243 bytes, SHA-2560998f68703f4b37116717e01dc97313ee3d0c028673467d8fd563192cd3193fa. Parts concatenate in order; a part boundary is between complete file diffs.rmcdaniel commentedon Nov 6, 2026
Sanitized reference diff
0021-t12-Keep-a-run-s-tags-from-the-run-row-a-transaction-alr.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: 12,625 bytes, SHA-256
5107f116242ef169daa18c71e6ac69fa571946a4cce8a6d6b39ac41e7f6bc42c. This part: 12,625 bytes, SHA-2565107f116242ef169daa18c71e6ac69fa571946a4cce8a6d6b39ac41e7f6bc42c. Parts concatenate in order; a part boundary is between complete file diffs.rmcdaniel commentedon Nov 6, 2026
Sanitized rebased reference for report topic 12:
0017-t12-Read-a-run-s-authored-sequences-with-its-row.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: 3,569 bytes, SHA-256
9a5cd5b265d2474b5c7fcab5393abb5f208f60f666f83ee56321732e241bb561. Original-base sanitized identity:fbb211a4e75583b3358c011a64050d533392722a98feea3c4d28153034aa62e6. No patch was applied or executed during this update.rmcdaniel commentedon Nov 6, 2026
Sanitized rebased reference for report topic 12:
0018-t12-Read-a-completed-task-s-run-status-before-marking-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: 1,866 bytes, SHA-256
9f0ec14c9efad65dd34ceba07d321ada27bfa21c295220feccbf31ff71b73290. Original-base sanitized identity:0d26bdf3ad8b7d0303c7799912b6365fff536a1f423a4f3f91a5f5fd23967ebe. No patch was applied or executed during this update.rmcdaniel commentedon Nov 6, 2026
Sanitized rebased reference for report topic 12:
0019-t12-Read-a-workflow-poll-s-binding-and-result-cache-rows.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: 8,846 bytes, SHA-256
2a7dd8f79d1e1d10f159863923fd9cecc538e560a16f83c07ce042ae12fba7c4. Original-base sanitized identity:310bae18f59ce4bc467471607644a8b7a0427b7923d7bd320ac5767612bc1c8e. No patch was applied or executed during this update.rmcdaniel commentedon Nov 6, 2026
Sanitized rebased reference for report topic 12:
0020-t12-Let-a-claim-use-the-registration-row-its-fence-just-.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: 11,084 bytes, SHA-256
89a13457fffaeebf438e024b29d05236dd559149a11fba12e12fe42e80379328. Original-base sanitized identity:0998f68703f4b37116717e01dc97313ee3d0c028673467d8fd563192cd3193fa. No patch was applied or executed during this update.rmcdaniel commentedon Nov 6, 2026
Sanitized rebased reference for report topic 12:
0021-t12-Keep-a-run-s-tags-from-the-run-row-a-transaction-alr.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: 12,732 bytes, SHA-256
125dba25dfab135c7e6a3ba983fb259a7c95a6c12b2ae6874fdc776c070a8c2d. Original-base sanitized identity:5107f116242ef169daa18c71e6ac69fa571946a4cce8a6d6b39ac41e7f6bc42c. No patch was applied or executed during this update.rmcdaniel commentedon Nov 7, 2026
Three checklist items now have independent, unpublished Source preparations while the current P0 #1088 queue/main train finishes:
These are separate local candidate commits on the accepted current-main basis, not merged or released checklist completions. They will be refreshed onto actual maintained main before their ordinary PRs. All eight acceptance items remain open until delivered. The next Source window first belongs to the already prepared runner-only native3.2 qualifier prerequisite after #1088 actual-main acceptance/cleanup; no overlapping CI, new artifact publication or runtime is started here. The remaining census, authored-sequence, waiting-status, fenced-registration and savepoint-aware immutable-tag items are still unimplemented. Reported benchmark timings remain unverified.
rmcdaniel commentedon Nov 7, 2026
The fourth independent local checklist preparation is f86e49f / tree197ec26abb6673f18d714856b39bc77cf3e1088f, on the current accepted-main basis. The census query now counts all six wait categories in one aggregate pass and both task categories in one aggregate pass. Its signal/failure subqueries and all ten answers remain unchanged; empty aggregate tables still return one zero-count row. Bindings drop10→4. This removes repeated table passes, not an extra client SQL statement: the census remains one statement, and I am not reporting1→0.
Actual SQLite3.46.1 execution of both source SQL strings preserves all ten counts for empty, mixed, foreign-run and missing-run data. Actual EXPLAIN QUERY PLAN shows wait/task accesses(6,2)→(1,1). The prepared common SQLite/PostgreSQL/MySQL/MariaDB test adds all wait kind/status/source combinations and workflow/activity task status/repair combinations, compares every count against the retained exact old query, checks physical table accesses, and then retains the existing full stored-summary byte comparisons. These Rust tests are written but not yet repository-compiled or executed; no other-backend or runtime pass is claimed.
This is unpublished local preparation, not a completed checkbox. PR1088's queue original now has the separately recorded historical-PHP corrected-marker observation failure; no retry/re-entry or next Source push is started while its remaining original jobs and finite cause/disposition are unresolved. All prior local preparations stay separate. The authored-sequence, waiting-status, fenced-registration and savepoint-aware run-tag items remain unimplemented.
rmcdaniel commentedon Nov 7, 2026
The remaining four checklist items now have separate unpublished source preparations on accepted main6df80b35, alongside the four earlier preparations. No checkbox is marked complete and no additional CI train has started.
The Rust common-backend controls above are written but have not been repository-compiled or executed yet. These are source candidates, not backend/performance/release acceptance. Full maintained-toolchain builds, actual SQLite/PostgreSQL/MySQL/MariaDB qualification, review and integration remain required. The current public train is the separately narrowed #1069 PR1088, whose own63 checks passed before its first queue original; #1064/#1066 also retain separate source preparations. I retain the next integration and release work without overlapping CI.
rmcdaniel commentedon Nov 8, 2026
Operator nudge: this benchmax ticket (P0) has had no linked PR and no activity for about 15 h. Please pick it up next, after the current work on #1057. Suggested order for the stalled server tickets: #1063, #1068, #1075, #1077, #1078, #1079, then #1081 (P2); this one is 1 of 7. Open a draft PR as soon as work starts so the tracker shows it. If it is blocked, add the status:blocked label with a one-line reason.
rmcdaniel commentedon Nov 8, 2026
Draft PR #1099 is open, combining all eight source preparations on current main
6f279f9b. Head50047cbb, tree067f3bb2; diff 104,586 B /15f93010…. The four test-only conflicts were resolved as unions, and the original WIP refs are kept unchanged. Its PR CI is the first compile and qualification; General selected that train. Next action: Server watches that train and reports the results to General. Owner: Server.