Skip to content

Fix redrive clock precision and MariaDB scheduling and child locking - #1140

Merged
rmcdaniel merged 18 commits into
mainfrom
fix/1139-mariadb-timer-deadline
Nov 14, 2026
Merged

rmcdaniel merged 18 commits into
mainfrom
fix/1139-mariadb-timer-deadline

Conversation

@rmcdaniel

@rmcdaniel rmcdaniel commented Nov 13, 2026 •

Copy link
Copy Markdown
Member

Older MariaDB schemas can silently replace scheduled times with the database wall clock when a timer status or service-dispatch audit field changes. This breaks condition reopening and can leave a due service call accepted without starting. Forward migrations remove only the known implicit ON UPDATE clause on workflow_run_timers.fire_at and workflow_service_call_dispatches.available_at. They preserve the existing default, nullability, precision and row values, refuse unfamiliar metadata before writes, honor the storage connection/prefix and restore the short schema-lock budget. Existing corrupted values are not guessed or backfilled. Condition deadlines also retain their immutable scheduled-history authority.

This Core batch additionally keeps concurrent child completion's parent-history locks on the existing per-run index, and preserves fractional seconds in initial/reused redrive clocks while retaining previously recorded reuse strings exactly. It folds the reviewed #1138 and #1143 components and accepted child-start main through normal composition. No scheduler retry, corpus expectation, deadline extension or new index is introduced.

Current frozen source is 34a631f543c78836de0a1879d69bd4369b7ba555. Focused semantic/coverage packet: full ECS/Stan; 18 ordinary migration unit cases / 77 assertions with complete changed-helper/migration coverage; real MariaDB 74 / 2,828; real MySQL 74 / 2,800 with seven Maria-only skips; and a clean predecessor regression failure with zero setup errors. The unchanged full embedded corpus class passes on both corrected backends. Earlier complete-cycle failures remain NONPASS.

The exact full cycle is complete: local unit 6,137 / 83,387, covered unit 6,137 / 83,497, unit coverage 80.22%, combined coverage 93.87%, all six default-MariaDB shards 3,085 / 30,927 with 34 declared backend skips and an exact inventory union. Current hosted/Codecov checks and semantic source review pass. Final evidence packet. Final exact-head disposition, normal integration and accepted-main tree/workflow readback remain. Security-only 2.28.1 follows its separate maintenance tree and publication checks; this PR selects no release, #1130 retry or 2.29 artifact. Refs #1137, #1139 and #1142. Saga #1132 and the broader #1063 outcome remain separate.

@rmcdaniel

Copy link
Copy Markdown
Member Author

Frozen source 12fca2ab now passes ECS idempotence and full PHPStan. Migration unit controls pass 14 tests / 385 assertions with two declared backend skips. Default MariaDB 10.5.29 (explicit_defaults_for_timestamp=0) passes all 13 affected deadline/upgrade tests / 114 assertions, with no skips. Each command exited 0. Captured runner/database/cache IDs and the private network are removed.

The MariaDB controls cover exact fractional deadlines through cancellation/firing, a populated legacy ON UPDATE schema, retained values without guessed repair, repeated migration and safe rollback, restored session lock budget, configured connection/table prefix, the three originally failing deadline paths, a drifted physical timer anchor, and missing historical/canonical anchors. The historical timer migration remains unchanged.

The initial formatting attempts are retained separately; no failed attempt has been relabelled. Counterfactual/other-backend and full-cycle/current-CI/source-review gates remain open. Saga's complete MariaDB rerun will use the accepted combined correction rather than borrow this focused result.

@rmcdaniel

Copy link
Copy Markdown
Member Author

Security exact-source review of 12fca2ab435435b1faa84756b8d2045a84dcf155 / tree a6d84c16cc6b3d90c2003d678d9ae34962eb76a5: HOLD for one migration-shape guard.

The runtime authority change is sound within the reviewed scope: occurrence reopen still requires the canonical timer row, exact timer ID and sequence, consistent occurrence/budget/key/definition history, no fired timeout, and a valid first scheduled-history deadline. It now uses that immutable first TimerScheduled.fire_at instead of a physical projection already known to drift under the legacy MariaDB clause; missing timer or missing history deadline refuses the whole batch. Connection/prefix quoting, Maria-only selection, nontransactional schema lock budget and no-op rollback direction are also appropriate. The exact MariaDB 10.5.29 focused result and current CI are relevant but do not close the issue below.

Concrete finding: the migration queries only information_schema.columns.EXTRA, then claims to preserve the existing insert default, precision, nullability and values while hardcoding:

TIMESTAMP(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6)

That is correct for the known generated legacy column, but the selection predicate is broader: any prefixed workflow_run_timers.fire_at containing ON UPDATE is rewritten. An unexpected retained shape (different datetime precision, nullable column, constant/NULL default, or another column attribute) would be silently changed or make the migration fail, despite the preservation claim. The current tests reproduce only the expected TIMESTAMP(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE ... shape and do not assert the complete before/after column metadata.

Before ALTER, read and bind the full relevant metadata (DATA_TYPE/COLUMN_TYPE, DATETIME_PRECISION, IS_NULLABLE, COLUMN_DEFAULT, and normalized EXTRA). Either:

  • require the exact supported legacy shape and throw a clear refusal for any other ON UPDATE shape, then remove only its update clause; or
  • construct an exact, safely quoted preservation statement from independently validated metadata.

Add a positive complete-metadata before/after assertion and a predecessor-failing unexpected-shape refusal with zero row/schema writes. Preserve the exact populated Maria 10.5 run and the original three full-Saga failures as separate evidence. Full counterfactual/backend/current-CI/combined-cycle gates remain required; no merge, package, or retired PHP Server release is authorized.

@rmcdaniel

Copy link
Copy Markdown
Member Author

The source HOLD is retained. The migration now reads type, nullability, default, precision and EXTRA, and permits its fixed DDL only for the exact legacy TIMESTAMP(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6) shape. Any other automatic-update shape throws before session settings or writes. Already-correct columns retain their no-op path.

Added positive full-column metadata comparison (only EXTRA changes) and four negative shapes: custom default, nullable, different precision, and DATETIME. Each negative requires unchanged metadata and zero ALTER/data/session-setting statements. These changes are prepared locally for style/static/backend/counterfactual execution; no source PASS or replacement of the frozen 12f result is claimed yet.

@rmcdaniel

Copy link
Copy Markdown
Member Author

Exact successor f494118c passes ECS idempotence and full PHPStan. Default MariaDB 10.5 passes all 17 controls / 129 assertions, zero skips. MySQL 8.4 passes the same 17 cases / 108 assertions with five declared MariaDB-only skips. Commands exit 0; owned runtime/database/cache IDs and networks are independently absent.

The full supported metadata tuple is now required before DDL: TIMESTAMP(6), NOT NULL, CURRENT_TIMESTAMP(6) insert default, precision 6, and exactly the legacy ON UPDATE clause. The positive upgrade compares all selected column metadata before/after and permits only EXTRA to change. Four unexpected shapes (custom default, nullable, precision 3, DATETIME) refuse with unchanged metadata and zero DDL/data/session-setting writes.

Independent predecessor controls discriminate both corrections: the 12f runtime with successor metadata tests fails all four refusal cases (four failures, zero errors). Accepted-main 5b runtime with the added timer/deadline controls reports three failures and one positive (zero errors): status mutation, anchored reopen, and drifted physical anchor. These original-runtime NONPASS outcomes remain distinct from the passing successor.

The prior source HOLD remains until exact counter-review. Complete current source/backends/full cycle and Saga combined-default-MariaDB inventory remain required. No published package or retired PHP Server claim follows.

@rmcdaniel

Copy link
Copy Markdown
Member Author

Security exact-source counter-review of f494118c4faa60369b605fa82b80e250c408c1a1 / tree 68b6ab8e082b3621ea8b6e1f12cc28aa2703c8d5: PASS for the migration-shape guard and focused timer source.

The two-file successor closes the 12fca2ab metadata HOLD:

  • Before any session-setting or DDL, the Maria-only migration now reads and binds COLUMN_TYPE, IS_NULLABLE, COLUMN_DEFAULT, DATETIME_PRECISION and normalized EXTRA from the configured connection and exact prefixed table.
  • It permits its fixed preservation DDL only for the known generated legacy tuple: TIMESTAMP(6), NOT NULL, insert default CURRENT_TIMESTAMP(6), precision 6, and exactly ON UPDATE CURRENT_TIMESTAMP(6). An unexpected automatic-update shape throws the explicit workflow_timer_fire_at_legacy_shape_unavailable refusal before mutation. A column without the legacy update clause retains the idempotent no-op path.
  • The positive control compares the complete selected metadata before/after and permits only EXTRA to change. The four independent negative shapes cover a constant default, nullable column, precision 3 and DATETIME(6); each requires identical metadata afterward and no ALTER/data/session-setting statement.

The exact MariaDB 17/129 and MySQL 17/108 focused results are consistent with the source. The predecessor discrimination is relevant: 12f fails all four new refusal controls, while accepted main fails the intended timer/anchor cases. git diff --check is clean.

This lifts only the broad-metadata source HOLD. Current exact-head CI is still running, and the complete combined MariaDB inventory, full backend/counterfactual cycle and Saga integration remain required before merge. The original complete-Saga MariaDB failures remain NONPASS; no package, publication, retired PHP Server or release authority is inferred.

@rmcdaniel rmcdaniel changed the title Preserve scheduled timer deadlines on MariaDB Fix fractional redrive clocks and MariaDB timer and child locking Nov 14, 2026
@rmcdaniel

rmcdaniel commented Nov 14, 2026 •

Copy link
Copy Markdown
Member Author

Security exact composition review of 12467c291d6b35e92067e0acfaf71baf028ef778 / tree 561131ca009081d315e3d935eb4232cb22a099c5: PASS for source composition only.

The PR base is accepted main 3dd1a858b2ffaeef75916ca92503f49f2a91695e. I compared every non-changelog path in the complete base-to-head delta by Git blob identity:

  • timer/deadline migration and its tests equal reviewed f494118c4faa60369b605fa82b80e250c408c1a1;
  • the child lock/index source and barrier test equal reviewed 8a066982a586204ae0665d68ee9c4125b30a7099;
  • fractional redrive clock source, fixture, corpus, and tests equal reviewed 8f895c43dc768cfb74ecebbe0b1372835c1c14fb;
  • the watchdog test adjustment equals reviewed 7376de5e809e21ca5916700abe678c0c02c68e59.

Those are all 14 non-changelog changed paths; no extra runtime, migration, test, fixture, workflow, policy, or dependency path appears. The sole composed file is CHANGELOG.md, whose added blocks retain the accepted Laravel entry plus the three component descriptions. git diff --check is clean.

This verdict does not promote the component runtime evidence to the combined head. Keep the draft and merge held for the exact combined full cycle, complete default-Maria inventory, current hosted conclusion, and the ordinary prerequisite/integration gates recorded on the PR. No package, tag, publication, installed-consumer, or broader release authority is inferred.

@rmcdaniel

Copy link
Copy Markdown
Member Author

Exact combined head 12467c291d6b35e92067e0acfaf71baf028ef778 retains its source-composition review and completed ECS/Stan checks. The first full default-MariaDB 10.5.29 local cycle stopped at shard 1 with 330 cases / 2,918 assertions / one error, exit 2. Shard 0 had completed successfully. The failed full cycle remains NONPASS.

The error is V2ActivityLeaseRepairLockTest::testLeaseRepairDoesNotWaitForAnAttemptWhileHoldingItsRun: the intentional NOWAIT lock refusal has MariaDB code 1205. Laravel's nested transaction handler wraps that concurrency error in Illuminate\Database\DeadlockException, whose previous error is the expected QueryException; the fixture currently catches only the latter. The next narrow fixture correction will inspect that original error and retain the less-than-two-second refusal and unchanged task/execution/history assertions. No activity-repair runtime change is proposed from this observation.

The same successor will replace the migration's generic RuntimeException with UnexpectedValueException for unsupported legacy metadata (Sonar php:S112); its zero-write refusal and full metadata checks remain. The first local preflight refused at 97.35% CPU before any new container/network was created. All first-cycle recorded QA IDs and its exact network are independently absent. Fresh focused checks, source review/current CI and a complete default-MariaDB inventory still precede integration.

@rmcdaniel

Copy link
Copy Markdown
Member Author

The exact successor fdfbb30c changes only three files from reviewed composition 12467c29:

  • The migration now throws UnexpectedValueException for unsupported legacy metadata, resolving the generic-exception Sonar finding. The predicate, SQL, schema lock budget, refusal message and zero-write boundary are unchanged; the regression expects the specific exception.
  • The existing lease-repair contention test handles Laravel's nested DeadlockException wrapper and inspects its original QueryException. It additionally requires the SQL to contain for update nowait, while retaining the original less-than-two-second refusal and unchanged task/execution/history assertions. No activity-repair runtime code changes.

Full ECS and full Stan pass. On default MariaDB 10.5.29, both affected classes pass 8 tests / 30 assertions, zero failures/errors/skips (one existing PHPUnit deprecation). All 2,497 captured tracked files match the committed inputs; exact QA IDs and network are independently absent. The earlier full-cycle error and pre-PHP missing-mountpoint setup refusal remain NONPASS.

Fresh current-head source CI, the complete default-MariaDB feature inventory and full unit/coverage remain required. Please rebind the source review to this frozen successor. No component pass is being promoted to a complete cycle or release verdict.

@rmcdaniel

Copy link
Copy Markdown
Member Author

Security exact-source rebind: PASS for fdfbb30 / tree a8e4de19b02b175955a049ac635cd92bdeb3ba0a.

I independently verified that this commit is a direct three-file successor of reviewed 12467c2. The migration predicate, refusal message, ALTER statement and schema-lock boundary are unchanged; only the unsupported-shape exception is narrowed to UnexpectedValueException and its regression follows that type. The activity-repair runtime is byte-identical. Its existing contention test now unwraps the MariaDB DeadlockException only to the original QueryException, requires the attempted SQL to contain for update nowait, and retains the sub-two-second, unchanged-row and unchanged-history assertions. The prior php:S112 issue is no longer open on the exact PR analysis.

This closes the narrow source and Sonar findings. It does not promote the 8-test MariaDB slice to a complete cycle: fresh current-head CI, the full default-MariaDB inventory, unit/coverage and the normal dispatcher remain required. The first 12467 uncaught-wrapper cycle remains NONPASS.

@rmcdaniel

Copy link
Copy Markdown
Member Author

Normal composition of reviewed Core fdfbb30c35d2083e914739d9d3f9557bfd3b4a7c with accepted child-start main 63991ecae72964a60df38a8a8c9f90b77b3931e4 is frozen at 70b2d93642920b10854a48755759069b774ba9fa, tree c0e141c663d5595c208009b5b99cceac1b3420c2.

The common-base comparison proves the exact union: all 15 Core-only paths and 20 accepted-main-only paths retain their parent's exact blobs and Git modes. CHANGELOG is the sole overlap and retains both complete additions. No runtime file required a content merge.

To avoid finishing an obsolete full cycle, the fdf-only default-Maria attempt was stopped after shards 0 and 1 passed; shard 2 stopped at exit 143. Its complete-cycle result remains NONPASS, and all exact QA/DB/Redis IDs and the owned network are independently absent. The incomplete fdf dispatcher is superseded too. Neither predecessor result qualifies this combined tree.

Fresh current-head full dispatcher, complete default-MariaDB inventory and full unit/coverage are the next gates on this one frozen composition. Independent composition rebind and terminal accepted-main follow-through also remain required. Security-only 2.28.1 uses its separate maintenance tree and existing publisher; no Core/child/Saga release selection is included.

@rmcdaniel

Copy link
Copy Markdown
Member Author

Security exact composition rebind: PASS for 70b2d93 / tree c0e141c663d5595c208009b5b99cceac1b3420c2.

I independently compared every tracked mode/blob across both parents and the merge. The result contains all parent paths: 2,467 blobs match both parents, 15 Core-only blobs match reviewed fdfbb30 exactly, and 20 accepted child-start blobs match main merge 63991ec exactly. CHANGELOG.md is the sole blob different from both parents and retains both complete entry sets. There is no runtime-content merge.

The fdf semantic source PASS remains valid for the unchanged 15-file Core slice, and the accepted child-start tree is unchanged. This composition PASS does not carry the interrupted fdf Maria cycle: shards 0 and 1 passed, shard 2 exited 143, so that predecessor cycle remains incomplete/NONPASS. Fresh complete combined default-Maria, current-head dispatcher and normal hosted gates remain required on 70b.

@codecov

codecov Bot commented Nov 14, 2026 •

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 94.08%. Comparing base (63991ec) to head (34a631f).

Additional details and impacted files
@@           Coverage Diff           @@
##             main    #1140   +/-   ##
=======================================
  Coverage   94.07%   94.08%           
=======================================
  Files         649      651    +2     
  Lines       87930    87983   +53     
=======================================
+ Hits        82722    82777   +55     
+ Misses       5208     5206    -2     
Flag Coverage Δ
v2 94.08% <100.00%> (+<0.01%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@rmcdaniel

Copy link
Copy Markdown
Member Author

Security current-gate readback: the separate full workflow_dispatch 43536907526 is terminal SUCCESS at exact 70b2d93642920b10854a48755759069b774ba9fa, including coverage-unit, all six MySQL and six PostgreSQL shards, feature-mariadb, both embedded upgrades, quality, corpus and aggregate coverage.

The PR is nevertheless not merge-ready. Exact-head codecov/patch and codecov/project are failing. The current Codecov report records 64.15% patch coverage and 19 uncovered lines, all in 2026_11_13_000200_preserve_workflow_timer_fire_at_on_mariadb.php. Project coverage remains 94.05%, but the new migration branch is not exercised by the coverage upload.

The MariaDB feature evidence proves backend behavior, but it is not present in the coverage-unit artifact and cannot substitute for the required patch-coverage gate. Return one narrow test/source successor that makes the migration branches visible to the ordinary coverage job, covering at minimum: non-applicable driver/server return; absent/no-ON-UPDATE return; unsupported legacy metadata refusal; and the accepted legacy shape through the schema-lock statement path. Preserve the exact predicate, SQL, lock budget and existing real-Maria controls.

Keep the complete default-Maria inventory and any successor full-cycle gates separate. No coverage waiver or merge verdict is supplied by the successful dispatcher.

@rmcdaniel

Copy link
Copy Markdown
Member Author

The complete 70b local unit inventory passes 6,119 cases / 83,203 assertions / 49 declared skips, zero failures/errors, with three PHPUnit deprecations and 15 notices. Every collected unit identity appears exactly once. The exact full dispatcher 43536907526 is terminal SUCCESS. Its separate Codecov patch/project checks still refuse uncovered migration branches; a new focused unit class already exercises the parent migration's complete 27/27 executable lines, and is being expanded with the confirmed service-dispatch correction below.

The complete default-MariaDB run is NONPASS: shards 0–4 passed; shard 5 reports 435 cases / 4,986 assertions / one failure / 15 backend skips / one risky test. The failure is nexus-original-deadline-cold-delivery: the service call remains accepted rather than started. The risky handler state follows the aborted corpus method and is retained, not suppressed. No complete backend or corpus-consumer PASS is claimed.

An unchanged-runtime focused reproduction, with only read-only diagnostic observations added privately, confirms the cause. With application time 2026-10-11T00:00:00.123456Z, the dispatch row is scheduled but available_at becomes 2026-11-14 01:27:07.374786; dispatch_attempted_at remains the original October clock and repair_available_at is five seconds later. Native metadata reports TIMESTAMP(6), CURRENT_TIMESTAMP(6), and on update current_timestamp(6). Updating enqueue metadata therefore rewrites the first scheduling timestamp on older default MariaDB, so claim correctly refuses the now-future row.

The successor adds a separate forward migration for workflow_service_call_dispatches.available_at, sharing the exact validated metadata/short schema-lock operation with the timer migration. The original timer refusal code is retained; unknown shapes refuse before writes, stored values are not backfilled, and rollback does not restore corruption. No ServiceCallScheduler, ServiceControlPlane or corpus expectation is changed. Focused unit coverage, real MariaDB metadata/data/prefix cases and the unchanged full corpus precede a new frozen review/current full cycle. All 70b and diagnostic runtime resources are independently absent.

@rmcdaniel

Copy link
Copy Markdown
Member Author

Frozen successor 34a631f543c78836de0a1879d69bd4369b7ba555, tree faf9a71edd1993f5354b35c1a949f551932407d3, corrects the confirmed second MariaDB scheduling column and the ordinary coverage gap.

The new forward migration repairs only known implicit ON UPDATE metadata on workflow_service_call_dispatches.available_at. The existing timer migration and new dispatch migration share one protected WorkflowMigration operation: same strict TIMESTAMP(6)/NOT NULL/CURRENT_TIMESTAMP(6)/precision/EXTRA tuple, configured connection and prefix, one-second schema lock budget with restoration, ALGORITHM=INPLACE/LOCK=NONE, no value backfill and no rollback that restores corruption. The timer refusal code is unchanged; column identifiers are now grammar-quoted. No service scheduler, control plane, corpus expected outcome, child-lock or redrive-clock behavior is otherwise edited.

Focused frozen-source evidence:

  • Full ECS and full Stan pass.
  • Ordinary unit cases: 18 tests / 77 assertions, zero failure/error/skip. All 25 new shared-helper statements and 8/8 statements in each migration are covered. Cases cover other backends, absent/corrected metadata, every unsupported shape with zero writes, configured table/column/prefix, successful DDL and restoration after DDL failure.
  • Real default MariaDB 10.5: 74 tests / 2,828 assertions, no failures/errors/skips/risky cases. The unchanged full embedded replay corpus class now passes, including the previously failed original-deadline Nexus delivery.
  • Real MySQL 8.4: 74 tests / 2,800 assertions, no failures/errors/risky cases; seven declared Maria-only skips.
  • New actual dispatch-update regression with unchanged 70b runtime: one test / one assertion / one failure / zero errors or skips, reproducing the scheduling timestamp rewrite. This predecessor remains NONPASS.

All focused/predecessor captured IDs and networks are independently absent; formatted source bytes equal this commit. Please perform a semantic source re-review of the shared guard/new migration and coverage cases. Fresh complete default-Maria, current full unit/coverage, ordinary required checks/Codecov and the new full dispatcher remain gates. The original 70b complete-Maria failure stays NONPASS; its unit/hosted passes are predecessor evidence only. No release or #1130 authority is added.

@sonarqubecloud

Copy link
Copy Markdown

@rmcdaniel rmcdaniel changed the title Fix fractional redrive clocks and MariaDB timer and child locking Fix redrive clock precision and MariaDB scheduling and child locking Nov 14, 2026
@rmcdaniel

Copy link
Copy Markdown
Member Author

Security semantic source PASS for 34a631f543c78836de0a1879d69bd4369b7ba555 / tree faf9a71edd1993f5354b35c1a949f551932407d3, scoped to the shared MariaDB metadata guard and new service-dispatch migration.

Independent review confirms:

  • the new migration addresses workflow_service_call_dispatches.available_at, the second affected non-null scheduling timestamp, after the table exists; nullable workflow-task timestamps are outside this implicit-first-TIMESTAMP defect;
  • only MariaDB through the configured Workflow storage connection is eligible. Other drivers and ordinary MySQL return before metadata inspection or writes;
  • the operation changes only the exact known legacy TIMESTAMP(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6) shape. Missing/already-corrected columns are inert; every mismatched type/nullability/default/precision/EXTRA shape refuses before session or schema writes;
  • physical table prefix and both identifiers are grammar-quoted. The existing one-second schema-lock budget is restored in finally, including DDL refusal; the DDL remains ALGORITHM=INPLACE, LOCK=NONE;
  • the forward change does not backfill rows, and rollback intentionally does not restore the corrupting automatic update. Real Maria before/after evidence preserves stored microseconds and all checked metadata except removal of EXTRA;
  • timer behavior is the reviewed helper extraction, while scheduler, service control plane, corpus expectations, child locking and clock code are unchanged. The unchanged 70b predecessor fails the actual dispatch regression, while this head passes the focused Maria/MySQL and embedded-corpus sets.

The new ordinary coverage closes all helper and both migration entry paths, but source PASS does not promote predecessor gates. Fresh exact-head required checks/Codecov, complete default-Maria cycle and full dispatcher remain mandatory before merge; no release, #1130 or broader Core authority is inferred.

@rmcdaniel

Copy link
Copy Markdown
Member Author

Independent exact-run readback: workflow_dispatch run 43542708476 is terminal SUCCESS at reviewed head 34a631f543c78836de0a1879d69bd4369b7ba555 (created 01:47:55Z, completed 02:12:43Z). The formerly active coverage-unit job 132287006778 completed successfully at 02:12:17Z; its Code Coverage step and retained unit-coverage/resource-metrics uploads succeeded. The dependent aggregate coverage job 132294032091 also completed successfully, including the v2 coverage ratchet and machine-readable summary, and the final build gate succeeded. All other jobs in this exact dispatcher are terminal success or intended skip; run conclusion is success.

This closes the pending exact-head full-dispatcher gate only. It does not substitute for the owner’s separate complete default-Maria inventory/readback, nor grant merge, package, installed, or publication authority.

@rmcdaniel

rmcdaniel commented Nov 14, 2026 •

Copy link
Copy Markdown
Member Author

Exact 34a631f543c78836de0a1879d69bd4369b7ba555 / tree faf9a71edd1993f5354b35c1a949f551932407d3 has completed the combined quality cycle.

  • Full ECS and full Stan pass on the identical formatted source. The exact full dispatcher 43542708476 is terminal SUCCESS; ordinary PR checks and both Codecov contexts are terminal SUCCESS.
  • Local uncovered unit: 6,137 cases / 83,387 assertions / 49 declared skips, zero failures/errors. Three PHPUnit deprecations and 15 notices remain explicit. All 6,137 collected identities occur exactly once. Unit JUnit SHA256: 6eda2747597c8aadb6a4d3d339b0aeaf8e3fb8521683177d625ef8bc6c378011.
  • Hosted full covered unit: 6,137 cases / 83,497 assertions / 49 declared skips, no failures/errors, 15 notices. Exact CI Clover SHA256: 925882699a2d809d3b00aa03f564f6fb288eefd532d9c54737895238bfb8585d. The unchanged unit-only checker passes 80.22% (67,897/84,633) against 60%. Combined unit/MySQL line coverage passes 93.87% (79,506/84,693) against 93.08%.
  • Complete default MariaDB 10.5.29: 3,085 cases / 30,927 assertions, zero failures/errors/risky cases, 34 declared backend-specific skips. All six JUnits exactly match the one full inventory with zero missing, extra or duplicate identities. Inventory SHA256: a01ec5471624c124b8badcb94a08963ede1192c4138b5d43029d8f803b3c07ef. Default explicit_defaults_for_timestamp=0 is retained and read back; flush=2/sync=0/max-connections=500. The original-deadline Nexus corpus now passes without changing its expectation.
  • All 2,506 tracked Git blobs and executable modes remain exact. Every test command exits zero. All captured QA/DB/Redis IDs, owned names and networks, including the final read-only unit-floor checker, are independently absent.

The original timer/parent-lock/precision failures, 70b full-Maria failure, and one-test old-runtime dispatch regression remain NONPASS with their original scopes. Semantic source PASS 6869701156 and focused native/unit controls remain distinct from this fresh complete cycle. Please perform final exact-head disposition before the normal non-bypass integration and accepted-main tree/workflow readback. This is Core source delivery only; security-only 2.28.1 publication, Saga #1132/full scope integration, installed #980 and #1130 remain separate.

@rmcdaniel
rmcdaniel marked this pull request as ready for review November 14, 2026 02:27
@rmcdaniel

Copy link
Copy Markdown
Member Author

Security final exact-head disposition — PASS for normal integration

Reviewed identity: 34a631f543c78836de0a1879d69bd4369b7ba555 / tree faf9a71edd1993f5354b35c1a949f551932407d3.

This closes the source-stage and required fresh-gate review for #1140:

  • the semantic migration/helper review remains PASS at 6869701156;
  • I independently re-read workflow_dispatch 43542708476: exact head 34a631f5, terminal success, with quality, MariaDB, all six MySQL and PostgreSQL shards, regression corpus, both embedded upgrade cells, covered unit, aggregate coverage and final build successful; only the intended PR-only/Sonar jobs are skipped;
  • ordinary exact-head PR checks, CodeQL, Sonar and both Codecov contexts are terminal green;
  • the final packet binds the unchanged 2,506 tracked blobs/modes, full uncovered/covered unit inventories, the complete default-Maria 3,085-case/30,927-assertion inventory at explicit_defaults_for_timestamp=0, exact coverage floors, and independent absence of captured QA/DB/Redis resources.

The original timer/parent-lock/precision failures, 70b Maria failure and old-runtime dispatch regression remain historical NONPASS evidence; none is relabelled.

PASS authorizes the ordinary non-bypass integration path for this exact tree. Accepted-main tree equality, required actual-main workflows and topic absence remain post-merge gates. This does not grant a release, package, installed #980, #1130, Saga #1132, or security-maintenance 2.28.1 claim.

@rmcdaniel
rmcdaniel merged commit 42bcc5d into main Nov 14, 2026
60 checks passed
@rmcdaniel

Copy link
Copy Markdown
Member Author

General final exact source/integration disposition: PASS for 34a631f543c78836de0a1879d69bd4369b7ba555 / tree faf9a71edd1993f5354b35c1a949f551932407d3, based on accepted 63991eca.

I read the complete20-file delta and the final quality packet. The runtime changes retain the intended boundaries:

  • Both migrations use the configured storage connection and grammar-quoted prefixed identifiers. Only MariaDB's exact known non-null microsecond timestamp/automatic-update shape is changed; other drivers and safe shapes are inert, mismatches refuse before schema/session writes. The one-second lock budget is restored after success or DDL refusal, with INPLACE/LOCK=NONE and no retained-row backfill or corrupting rollback.
  • The condition occurrence reopens at the first recorded schedule deadline, while still requiring its matching canonical timer and unchanged occurrence/fingerprint/budget correlation. A missing physical timer or missing recorded deadline still rolls back the batch.
  • Parent barrier history locks use the existing per-run/sequence index only on MySQL/MariaDB, including configured table/index prefix rules. The deterministic two-writer control retains both uncommitted sibling completions and reproduces the original cycle before the correction. No new index, lock-order prefix or runtime retry is introduced.
  • Replay clocks preserve fractional instants for original start and reused activity/marker/update/signal/timer/child events. Zero-fraction legacy rendering stays unchanged. Existing native-redrive assertions now compare parsed full-precision instants; the new strict fractional fixture proves original start/activity/timer clocks across two native redrives and cold query/executor replay, retaining original history and zero successor physical timers/tasks. Its explicit SQL-controlled activity timestamp remains source evidence, distinct from installed Server980 acceptance.
  • The NOWAIT fixture still requires the actual QueryException, SQL clause and finite wait, including Laravel's nested wrapper. The frozen-clock watchdog fixture now owns its manual execution; neither correction suppresses product failures.

I independently read the exact full dispatcher43542708476 as SUCCESS at34a and all32 current-head check contexts as terminal:26SUCCESS and6intendedSKIP, with no failed or pending context. The final packet supplies full default-Maria3,085/30,927 with exact inventory union and original explicit_defaults_for_timestamp=0, full unit6,137, plus80.22% unit-only and93.87% integrated coverage against their unchanged60%/93.08% floors. The retained original failures remain NONPASS, and Security's exact semantic review is current.

Workflow may proceed through ordinary ready/normal integration of this exact head, then verify accepted-main tree equality, all normal main outcomes and owned branch/worktree cleanup. This supplies the Core source prerequisite for the following accepted-main Saga fold/full qualification. Saga1132, retained scope issue1063, state-bound business binding1069, security-only2.28.1 package verification, installed980 and stopped1130 retain their separate requirements. No release or stopped execution is selected here.

@rmcdaniel

Copy link
Copy Markdown
Member Author

Core #1140 merged through the normal non-bypass path at 42bcc5d28f45b1ebbe94fa77662bb190e0d051ba. Its tree faf9a71edd1993f5354b35c1a949f551932407d3 exactly equals reviewed/tested 34a; the parents are accepted 639 main and that exact head.

Actual-main CodeQL, Public Boundary and Code Quality are terminal SUCCESS. The main build 43546567255 is still running; its terminal readback and topic/component branch cleanup remain owned follow-through. All local Core quality/runtime resources are absent.

This is source integration of the validated Maria scheduling, parent-lock and replay-clock corrections. No Core release or installed #980 result is inferred. Security-only 2.28.1 stays on its separate immutable maintenance tree, with ordinary Packagist P2 verification pending. Saga #1132 is composing this accepted source and still requires its own complete current cycle and source review; #1063 remains open.

@rmcdaniel
rmcdaniel deleted the fix/1139-mariadb-timer-deadline branch November 14, 2026 02:56
@rmcdaniel

Copy link
Copy Markdown
Member Author

Core source delivery is complete on accepted main 42bcc5d28f45b1ebbe94fa77662bb190e0d051ba, tree faf9a71edd1993f5354b35c1a949f551932407d3, exactly the reviewed and fully tested 34a631f5 tree. The normal merge has parents 63991eca and 34a631f5; no source was changed by integration.

All four actual-main workflows are terminal SUCCESS: build 43546567255, Public Boundary 43546567258, CodeQL 43546566860 and Code Quality 43546567110. Independent commit check-run readback is 33 terminal contexts: 29 successful and four intended PR-only skips, none active or failed. The main build includes full unit/coverage, all six MySQL and six PostgreSQL feature shards, MariaDB, upgrades and the replay corpus. The complete exact-head Maria/unit/coverage packet and final source-stage Security PASS retain their recorded scopes.

The Core topic and the two closed folded component topics (fix/1139-mariadb-timer-deadline, fix/992-replay-clock-precision, fix/parent-history-lock-index) were deleted with exact expected-head guards after proving all three commits are ancestors of main. All three refs independently return 404. No release or maintenance branch/tag was removed.

These changes are integrated source and remain unreleased. Installed #980, Saga #1132, the separate 2.28.1 security publication and the #1130 stop retain their independent boundaries. The current Saga head normally contains this accepted main and is still draft pending its own complete qualification.

@rmcdaniel

Copy link
Copy Markdown
Member Author

Security independent accepted-main closure: run 43546567255 is terminal SUCCESS at exact merge 42bcc5d / reviewed tree faf9a71e, with 29 successful checks and 4 intended skips. The exact folded topic refs fix/1139-mariadb-timer-deadline, feature/1137-clock-precision, and fix/1142-parallel-child-index are all independently absent from origin. This closes the source/main integration gate for #1140 only; it grants no release, #1130, Saga #1132, or installed-consumer authority.

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