feat: name Allen interval relations on Event Lineage edges (v2.15.0) - #484
Conversation
Persist interval_relation_code on post_lineage_edge after reconstruct chooses a parent. Ticket-aware windows (created day through earliest open due date) make the A-100 pricing follow-up Contain the revised quote and Overlap the delivery question. Click Contains to open the revised quote. ADR 0122. Independent of leftover-map #481 and SKOS chips #482.
|
Important
This repository does not receive automatic reviews because it has fewer than 10 stars. ⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: 📝 WalkthroughWalkthroughEvent Lineage 간선에 Allen(1983) 구간 관계를 추가했습니다. 관계는 UTC 기준 게시물 생성일로 계산하며, 데이터베이스·API·DAG·관련 게시물 UI에 표시합니다. ChangesEvent Lineage 구간 관계
Estimated code review effort: 4 (Complex) | ~45 minutes Merge Risk: 🟡 Moderate · up to The database migration may pause writes while it validates existing lineage edges, especially on a large production dataset. Merge readiness requires either separating constraint creation from validation or obtaining explicit owner acceptance for the deployment impact. Sequence Diagram(s)sequenceDiagram
participant Reconstruct
participant LineageIngestion
participant Database
participant LineageDag
Reconstruct->>LineageIngestion: 게시물 생성일과 lineage edge 전달
LineageIngestion->>Database: interval_relation_code 저장
Database-->>LineageIngestion: 관계 코드와 라벨 반환
LineageIngestion-->>LineageDag: 그래프 edge와 직접 관계 전달
LineageDag->>LineageDag: 관계 라벨과 탐색 버튼 렌더링
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
Cycle note (not a review): requested Copilot review on this exact head. Independent APPROVE is still required before squash-merge. I will not self-approve. Leftover-criterion Post quality landing is a separate v2.12.8 increment on main leftover pairs (ADR 0049), not mixed here. |
|
Strix MEDIUM disposition for run 32641170059: false positive. |
- Renumber migrations/0105_post_lineage_interval_relation.sql to 0140: 0105 collides with the already-open PR #387's migrations/0105_post_lineage_edge_signal.sql on the same post_lineage_edge table. Update migrate.sh's whitelist, tests/test_schema.py, tests/test_migration_replay.py, backend/tests/test_api.py, and scripts/seed_demo_data.py to match. - Renumber docs/adr/0122-event-lineage-interval-relation.md to 0160: 0122 collides with the already-open PR #383's docs/adr/0122-otel-session-observability.md. Update every in-tree "ADR 0122" cross-reference (AGENTS.md, ARCHITECTURE.md, CLAUDE.md, CHANGELOG.d entry, the migration's SQL comment, and the seed script docstring) to ADR 0160, and note the renumber + collision in the ADR itself (see ContextualWisdomLab/.github#1249). - Drop the unused "Click Contains to open the revised quote." i18n key from all four locale dictionaries and the i18n completeness test's required-keys list -- no component ever rendered it. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01B5M79L945DMyMs3sg5yJ14
|
Resolved the newly introduced cross-PR ADR collision on exact head |
# Conflicts: # CHANGELOG.md # frontend/package.json # pyproject.toml # tests/test_migration_replay.py # uv.lock
# Conflicts: # CHANGELOG.md # backend/app/main.py # frontend/package.json # pyproject.toml # uv.lock
# Conflicts: # docs/storybook-inventory.md # frontend/package.json # frontend/src/LineageDag.test.tsx # frontend/src/LineageDag.tsx # frontend/src/i18n.test.ts # lineageweave/__init__.py # pyproject.toml # uv.lock
Both sides claimed [2.15.0]; main's WorkspaceNav release keeps it and this PR's Allen-interval entry renumbers to [2.15.1] (version pins bumped to match). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015HgzNGsCxqiTaT4YuJEb5J
# Conflicts: # AGENTS.md # CLAUDE.md # backend/app/main.py # backend/tests/test_api.py # docs/adr/0049-leftover-pair-report-ui.md # tests/test_lineage_ingestion.py
Summary
Event Lineage edges now name the Allen (1983) relation between the two posts' dated windows. Reconstruct still owns the parent choice; this only labels how the windows sit in time.
After
make seed, open the A-100 pricing follow-up. Both the revised quote and the delivery question come back Before it — every post is a point interval on its observed UTC creation day, and a mutableissue_ticket.due_dateis not Event Lineage evidence, so it is never read. Click the Before row for the revised quote to open it.interval_relation_codeonpost_lineage_edge(migration0140, ADR 0160).created_atday. Ticket-aware windows (issue_ticket.due_date) are explicitly deferred until a provenance-bearing interval-evidence contract exists (ADR 0160's Context) — this PR does not implement them, andinterval_from_post()never readsissue_ticket.due_date.GET /api/lineageandGET /api/posts/{id}/lineagereturn the exact lookup label. Opening the child orients the stored parent→child code (Contains → During).Buyer next action
After seed, open Pricing renegotiation follow-up, read Before, click that row to open the revised quote.
Merge policy
Independent exact-head APPROVE required. Author will not self-approve. Do not squash-merge until independent APPROVE + exact-head required success.
Summary by CodeRabbit
새 기능
문서