Goal and scope
Fix the Release PR failure. ReleaseX updates example pins before publication, but source-to-report resolved Phlo from PyPI and could not find the unpublished version.
Change map and risk
- Add checkout source mappings matching the other lakehouse examples.
- Regenerate the source-to-report lockfile with editable Phlo sources. All 198 locked package versions remain unchanged.
- Also fix the lineage ULID ordering race that blocked the merge queue. No release workflow or publication behaviour changes.
Verification
- Reproduced the resolver failure in a temporary copy using unpublished phlo==99.1.0. With the fix, the real release transformer resolved that version from the checkout, reported the changed lockfile, and made no changes on a second run. This configuration-only fix uses that real-resolver check and the existing release-tooling tests rather than adding a duplicate synthetic test.
make setupandmake checkpassed.make check-example-lockspassed.uv run --locked pytest tests/tooling/test_release_replacements.py -q: 5 passed.uv sync --locked --directory examples/lakehouses/source-to-reportpassed.uv run --locked --directory examples/lakehouses/source-to-report pytest -m 'not slow' -q: 37 passed.git diff --checkpassed.
These are local checks, not release qualification. The hosted Release PR workflow has not been rerun.
Recovery and maintainer decisions
Revert the manifest and lockfile together to undo the example change. Revert the lineage follow-up commit to undo the ID ordering guard. No migration, publication, or shared-setting change is involved. No independent review has been performed. Merge remains a maintainer decision.
Merge-queue follow-up
The merge-queue run failed in the existing lineage ID ordering test. The ULID library samples time separately for the timestamp and randomness, allowing a rollover to reset randomness while retaining the previous millisecond prefix.
The follow-up commit preserves strictly increasing row IDs within a process using a lock and a monotonic floor. The existing sorting test now deterministically covers a stable millisecond, a rollover inside generation, and a rollover between IDs. The forced internal rollover failed on the original implementation and passes with the fix.
Verification for the follow-up:
- Full
make checkpassed again. - All 67 non-integration lineage tests passed.
- Focused Ruff lint, formatting, and type checks passed.
- A threaded check generated 80,000 unique IDs across eight threads, with strict ordering within each thread.
The updated commit needs fresh hosted CI. The PR has not been requeued or merged.
Architecture
Data flow
No data-flow sequence changed in this PR.
Review
1 finding on the diff · reviewed
04e4118generate_row_idruntime change rides in a configuration-only examples PR ·phlo_lineage/store.py:162-163🪧 More tips
npx skills add coldteadotai/pr-lens, then tell your coding agent: "Diagram the change you just made with PR Lens and attach it to the pull request."npx @coldtea/pr-lens-cli analyze --base origin/mainon a branch, thennpx @coldtea/pr-lens-cli render .pr-lens/graph.json. Same lenses, your own model key, before the pull request existsrenderreads.github/pr-lens.ymland applies your renames, exclusions and lane pins at draw timegithub.comment.collapsed: truein.github/pr-lens.ymlto fold the comment behind one View architecture and data flow row. Drawing still runs as beforegithub.draw: on-demandin.github/pr-lens.ymland PR Lens stops drawing pull requests on its own. Comment@pr-lens drawon a pull request when you want that one drawn.github/workflows/pr-lens.ymlwithcoldteadotai/pr-lens/packages/action@v0and your model provider's key as itsapi-keyto run PR Lens from your own CI. Any/chat/completionsendpoint worksgithub.description: falsein.github/pr-lens.ymlto stop PR Lens adding buttons to your PR descriptionsThanks for using PR Lens! It's free for OSS. If it helped, a star helps other teams find it.