Repository navigation
Bound schedule audit snapshots and clean up purged schedules - #1149
Conversation
|
Security whole-source review for exact The retention design is fail-closed at the relevant ownership and deduplication seams:
I read the complete eleven-file delta, including the migration, command, configured model seam, trigger fallback and all focused tests. The new 15-case retention suite is passing on PostgreSQL in the current run, in addition to the recorded focused MySQL evidence. The PR is not integration-qualified yet. Current This review does not authorize publication, a cleanup execution, or closure of #873; public guide follow-through and the user-visible release remain separate. |
|
Security exact-successor review for The new internal retention queries correctly bypass application global scopes, but the This contradicts the documented operator loop (“repeat … stop when the retained count reaches the configured limit”) and the new guarantee that application filters cannot hide maintenance state. It can make an operator stop an idle legacy compaction early even though the physical history remains above the configured bound. Please compute the reported count through the same unscoped, storage-connection-bound internal history query keyed by the exact schedule owner, and add a causal command control using a globally filtered configured history model that proves the returned retained count is the physical count after pruning. I reviewed the remainder of the |
|
Security exact-successor review: source PASS for The direct fix is The command now delegates exact-schedule compaction and reporting to The new command control configures the deliberately invisible I found no further source/security issue in this correction. Current-head hosted CI and final integration remain required; this source PASS does not borrow the predecessor run or convert the currently active checks into acceptance. |
|
The remaining scoped-count finding is fixed at
The unchanged prior command fails this regression at its first report: 0 instead of 106, with one assertion failure and no setup errors. The correction passes the complete retention class: 19 tests / 136 assertions. ECS has reached a fixed point and full Stan passes. The complete combined source is an exact disjoint union of 12 topic paths and 18 accepted-main paths, with no content conflicts. The complete current schedule cohort also passes against MariaDB 10.5.29 using the MariaDB driver: 119 tests / 685 assertions, including independent committed-writer contention and the physical-count regression. Reproduction: Independent source/security rebind is PASS. Current ordinary checks and full dispatcher 43609700776 remain pending. The earlier PostgreSQL fixture failure, MySQL snapshot counterfactual and scoped-report failure retain their original scopes. Owner review of the 17 open Sonar findings: all are maintainability |
|
Security final exact-head integration disposition: PASS for The reviewed physical-retention fix remains unchanged: The complete current-head check set is terminal with 24 SUCCESS / 6 intended SKIPPED / 0 failed / 0 pending. That includes repository contracts, central policy preflight, quality/static analysis, regression corpus, CodeQL, both public-boundary scans, Sonar analyses, unit/contract/tracing/MySQL selection, and all six PostgreSQL shards. Build run This closes the bounded source/security and current-head integration review for normal repository handling. It does not select a release or assert any broader runtime/product acceptance beyond PR #1149. |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #1149 +/- ##
==========================================
+ Coverage 94.13% 94.14% +0.01%
==========================================
Files 691 694 +3
Lines 90596 90835 +239
==========================================
+ Hits 85283 85520 +237
- Misses 5313 5315 +2
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
|
Current integration HOLD: Codecov completed after the original 30-context snapshot and failed patch/project: 91.89% patch against 94.13%, with 21 uncovered changed lines. The full dispatcher and retained 93.91% repository ratchet remain PASS at their scopes. Focused refusal/maintenance tests and a fresh successor cycle are required; no threshold or gate waiver is selected. Final source validation is complete at
Exact source/security PASS, ordinary current-head integration PASS, and the causal controls / maintainability disposition remain at their stated scopes. Normal non-bypass integration and accepted-main verification follow. #873 remains open for published-package availability and the public schedules guide; this is source delivery only. |
|
Correction to my earlier final integration disposition: integration is HOLD, not PASS, on exact The earlier comment relied on the then-current 30-context snapshot. Codecov completed asynchronously afterward, and the authoritative current check rollup now has two failures: The separate full-dispatcher evidence remains valid at its narrower scope. Run Do not use comment 6879821837 as merge/integration clearance. Require the narrow tests for the actual uncovered refusal/maintenance paths, a fresh exact-head source rebind if the commit changes, and all required current-head checks—including both Codecov contexts—terminal PASS. No threshold reduction, production substitution, merge, or published #873 acceptance is selected. |
|
Coverage successor: The topic change from The complete retention class passes: 32 tests / 193 assertions. A local PCOV run exercises every statement previously uncovered in the three affected files (the Clover input reports 23 statements; Codecov classified 21 changed lines). That closes the concrete local coverage gaps, rather than assuming another unchanged full upload will improve them. The prior failed Codecov checks remain NONPASS. The successor also normally merges accepted main |
|
rmcdaniel
left a comment
There was a problem hiding this comment.
Security bounded source/test-composition review: PASS for exact bdbb2d04ed16781ecfda58f914f1ee146b1e69a4 / tree 546a30a958b38e57c1923bb0b808a64725a04458.
I independently verified:
- direct topic successor
291258fcd9c7cb1dd2ab762af48368df88d94bb0changes onlytests/Feature/V2/V2ScheduleAuditRetentionTest.php(+182/-0);git diff --checkis clean; - the added cases cover the reported uncovered refusal and maintenance seams: canonical/overflow limits, manual-trigger compaction without an invented occurrence receipt, unusable legacy clocks with row preservation, conflicting receipt ownership rollback, cleanup/namespace/schedule bounds, and occurrence-migration idempotence;
- schedule-retention production, command, and migration blobs are byte-identical to reviewed
51048657; git merge-tree --write-tree 291258fcd9c7cb1dd2ab762af48368df88d94bb0 f9bcaf060952f15cdc0b4c437dfe002e4c713ba6reproduces546a30a958b38e57c1923bb0b808a64725a04458, so the current head is the exact disjoint composition with accepted PR #1148.
This closes only the bounded source/test-composition review. Integration remains HOLD until fresh full dispatcher 43612689518 and both asynchronous Codecov patch/project checks are terminal PASS on this exact head. No threshold, production, release, or prior failed-check waiver is inferred.
|
All current integration gates are clear at
The exact source/test-composition review passes, and its remaining full-dispatcher/Codecov conditions are now met. The preceding |
rmcdaniel
left a comment
There was a problem hiding this comment.
Security final exact-head integration disposition: PASS for bdbb2d04ed16781ecfda58f914f1ee146b1e69a4 / tree 546a30a958b38e57c1923bb0b808a64725a04458.
Independent current-head reconciliation:
- ordinary PR run
43612674263: terminal SUCCESS; - required full dispatcher
43612689518: terminal SUCCESS on exact head, 23 SUCCESS / 5 intended SKIP / 0 failed or active; codecov/patchcheck132508204901: SUCCESS, 100.00% of diff hit versus 94.13% target;codecov/projectcheck132508199519: SUCCESS, 94.14% (+0.01%) versus accepted basef9bcaf0;- coverage summary artifact
14122090218: API/archive SHA-2567700085841c13b660b1c9ef6859c48734f90495f3cf2f90338cc0830002ee8f1, internally binds commitbdbb2d04..., 794 PHP source files, 82,158/87,457 covered lines = 93.94%, ratchet PASS over 93.08%; - unit coverage
14121169610: API/archive SHA-256d64891f0b18c699b6a67fbacf3b0864a2bc3c7250fb0ba6ffe30d656e6581aa9; - Sonar coverage
14121880744: API/archive SHA-2565c9d9b3904de7eca8cde320ba2a96afc70f53fa56842eb1c548ee77418d40e0c; both retained coverage XML payloads are byte-identical (420a833952b8a82e10826fae7a9a0f9312a91d6316e637c02508ee2855c438f6).
The earlier 51048657 Codecov failure remains correctly NONPASS and is not reused. Together with the bounded source/test-composition PASS in review 5905622118, this clears normal integration for this exact head. It does not select a release, published #873 acceptance, or any broader runtime effect.



Schedule updates can grow audit storage indefinitely, and physically purged schedules leave audit rows behind. This adds a default limit of 1,000 snapshots, preserving the first and newest events, plus namespace-scoped maintenance for legacy backlogs and orphaned rows.
Occurrence receipts preserve duplicate-firing protection when trigger snapshots are removed. Audit append, receipt retention and each bounded compaction pass share the schedule lock and transaction. Application query filters cannot hide correctness metadata or physical owners. Malformed legacy occurrence metadata refuses the transaction, and rollback cannot discard populated receipts. Upgrades must stop old schedulers and lifecycle writers before compaction, or explicitly disable compaction with
nulluntil those processes stop.The maintenance command reports physical remaining rows under the same lock, including rows hidden by application scopes. The independent-writer regression uses separate PDO sessions: a committed sibling sequence survives the failed insert/savepoint, and MySQL repeatable-read retries use a current locking read without changing the 32-attempt bound. SQLite instead proves that writer admission blocks the competing insert.
Validation: 32 focused retention cases / 193 assertions pass on SQLite and MariaDB, with local PCOV exercising every previously uncovered statement in the three affected files. ECS and full Stan pass. The scoped-report counterfactual fails with 0 reported versus 106 physical rows; the MAX-only retry counterfactual fails the independent MySQL writer case. Both corrections pass. The earlier full
51048657cycle passed runtime tests and the repository coverage ratchet but failed asynchronous Codecov patch/project checks; that result remains NONPASS. Current ordinary CI and full dispatcher 43612689518 validate combined headbdbb2d04, including accepted mainf9bcaf06. Normal integration is complete at2b6ba0eb, whose tree546a30a9exactly equals testedbdbb2d04. All four actual-main workflows pass, including build 43615384277: 29 successful checks, four intended skips, and both Codecov statuses successful. The remote topic branch is absent. No package release is selected; #873 remains open for published-package availability and the schedules guide.Accepted source implementation for #873. Published-package availability and the public schedules-guide update remain separate acceptance requirements, so the issue stays open.