feat: prefer structural origins for tree parents - #27
Merged
Merged
Conversation
Owner
Author
|
All contributors have signed the CLA. |
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.
Summary
When a trace has an earlier span link and a later structural execution parent, TREE_PARENT now selects the structural parent. Origin precedence is GRAPH_PARENT/CHECKPOINT_PARENT, then SPAN_PARENT_FALLBACK, SPAN_LINK, and legacy/unknown; ties retain the existing temporal ordering, and raw CAUSED_BY edges remain unchanged.
Accept legacy temporal projections and preserve their bytes through both stores. Stamp schema 4 only when origin precedence changes the projection; otherwise keep schema 2/3. Restore the September 10 handoff history and distinguish local validation from remote CI and server E2E evidence.
Validation
uv run --no-sync pytest -q: 620 passed in 9.99s.uv run --no-sync pytest -q -m perf: 4 passed, 616 deselected in 2.48s.uvx ruff@0.14.2 check src tests scripts examples: passed.git diff --checkand README/HANDOFF relative-link checks: passed.8f6c3fanormalizer/serializer probe: legacy v2/v3 loading, canonical validation, byte preservation, and Ladybug reconstruction passed; the baseline reader rejected new v4 artifacts explicitly.codex-20260915-164249-65907: SHIP, zero blockers/majors; its README schema note is addressed. The review inspected source/tests without executing them; handoff edits followed that review.Source/test changes are unchanged since the local checks; subsequent edits only updated documentation. Exact-head
4d0ed7cremote validation: push CI and PR CI each passed all seven jobs, including core/Cypher installed-wheel smoke; CLA also passed. Actual Phoenix + SyncMill server E2E was not rerun for this change.Notes for the reviewer
Readers supporting only schema 1–3 intentionally reject origin-dependent v4 artifacts. Legacy canonical v2/v3 artifacts retain their bytes. Privacy defaults, pending-task/trace status, and numeric Phoenix timestamp validation remain backlog work. This PR does not publish a release.