fix(reporting): restore late-account materializer progress - #1206
Merged
Merged
Conversation
Reset the materializer sampling continuation only after a committed account turn moves its durable served_at rank. Keep continuation across lock misses so a busy prefix cannot block later eligible accounts. Cover continuous producer activity, both account orders, size-one pools, more than two busy pages, concurrent workers, commit rollback and fencing. Exercise typed public enrollment, real HTTP/PG delivery, 503-row exact reads, receipts, reconciliation and restart under continuing catch-up load. Include the store regression in installed production distributions.
This was referenced Sep 22, 2026
Base automatically changed from
conductor/fix-reporting-scope-selector-default
to
main
September 25, 2026 12:40
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.
When one reporting account remains continuously due, the materializer can repeatedly select it against its own previous
served_atvalue. A newly enrolled due account stays behind the continuation cursor and receives no materialization until the first account has a due gap.After an account turn commits, the PostgreSQL materializer now clears its sampling cursor so the next bounded sample starts from the durable scheduling order. Lock misses still advance through a busy prefix. The reset occurs after the transaction exits successfully, preserving rollback behavior, advisory/account lock ordering, and fencing. This addresses continuous-first-account starvation; it does not claim starvation persists after a due gap.
This is the separate PY-RUNTIME-001 / RLX-RT-001 review leaf. The production change is seven lines in
reporting/materializer/pg.py; the remaining changes add store and public-process regressions and include the public fixture in installed tests. Total: six files, +1247/-1. Producer publication time and live revocation classification remain separate children.dba15b6b0dd8063d38c2df4196491ae64d9720ae8154ac8fc0ba2a55c10aed4d7de466a5b0aea142b203bbcff51cb648c1fd605224fb74e5a3465a8fonconductor/fix-reporting-scope-selector-defaultValidation from retained originals:
production_rollingpassed all eight installed Python 3.10 B23 (50e35f0a) / hardening (a09878f6) × current VCS/sdist × notification-mode cases. Actual historical page-one/binding/pending state survives current-child activation, SIGKILL and restart; old projectors are fenced after activation. This does not prove universal old-decoder support. The retained child probes establish Python 3.10 minor and installed module origins; full per-disposable-process executable hashes and historical dependency inventories were not retained. The separate B24 continuation four-pass record is not added to these eight.The complete gate history remains explicit:
datetime.fromisoformatrejects the captured five-fractional-digit PostgreSQL value2026-09-22T19:50:38.81632+00:00on actual 3.10.21; 3.12.14 accepts it losslessly. Stable post-failure boundary selection strongly links this mechanism to diagnostic r2, but is not a capture of the child-local argument. Other original values, inner failures and historical dependencies remain unknown. The old declared-support limitation remains open: the 3.12 passes neither waive it nor establish a shared cause for all four original failures or a new materializer source regression.fe1a1cbd/ fix(decisioning): preserve sanitized validation fallback #1204 corrects it only in a separate sibling; no suppression or retroactive green. Final aggregate hooks remain required.Selected frozen installed artifacts (candidate metadata
adcp==8.0.0b15, not the published beta15 package):70f1fcd4108b3e11d61f4f5a7b190ea91e8248d09e5de65f6dad2e3fa6c4626a979a6200fb9271dbe6ad64bf40224f68e5b0da5145f8f75685d924a64787f93c356e9d9ae32f313fd84b0202fc224677bb2ae29d3a66d386645213c76c3747a66bddb9fc04959da7a9981acf5291ec1a32f007984e4afa178c0c43e19fda3d28The two wheel archives have distinct hashes; their 7,813 member paths and bytes match. Both build-input manifests contain 7,820 entries and hash to
f7e5deda5aa8713f6a37625e7c21e289a496488ef98a9e985f6a0dbf13b35d27.Existing original record references under
.context/py-runtime-001-20260922/:store-red-basis.json,red-continuous-late-store/,green-continuous-late-store/,mutation-old-success-cursor-r2/,focused-lock-rollback-workers-r2/.parent-public-red-basis.json,red-parent-typed-public-late-r3/,public-r3-result.json,installed-public-progress-summary.json; raw installed streams inacceptance/production-installed-pg-{vcs,sdist}/production-evidence/.completed-local-gate-disposition.json,completed-installed-runtime-version-disposition.json,completed-installed-floor-signing-disposition.json,runtime/artifact-equivalence.json.configured-python312-rolling-gates-20260922/completed-configured-runtime-gates.json, the two groups'record.jsonandoriginal.log;acceptance/production-rolling/record.jsonandacceptance/b24-continuation/record.jsonretain their separate executions.Source publication is for independent review only. This draft leaf targets the frozen wire branch; scheduled leaf checks are reported as observed, with no full-CI inference or transfer from #1203. Delivery requires later approved ancestry-preserving integration and fresh aggregate/main checks. Runtime review, dependent finality publication, #1199 qualification, security and release decisions remain separate; this PR grants no merge or package-release approval.