Repository navigation
[Buyer Gap] Open project evidence as a unified chronological history timeline #279
Description
Buyer problem
The Buyer surface can already show source_project_code / source_project_name, semantic post_project_mention evidence, Event Lineage, R&R actors, tickets, and post details. However, a project evidence card currently offers only Search related posts. A buyer cannot open one project and inspect the full order-to-current-issue history on one screen.
The required To-Be surface is a project timeline such as:
Order → specification change → delivery → VOC → rebid
with the selected event showing:
- the related order and prior history,
- the relevant specification-change history,
- observed responsibility history,
- responsibility handoffs or intervals with no observed assignee,
- exact source records and provenance.
Root cause
Project identity, chronological post facts, reconstruction edges, and R&R evidence are stored in separate read paths. There is no ABAC-safe project-history projection that joins them without changing their truth status. The frontend therefore falls back to a board text search rather than a project-level history view.
Product boundary
This feature must explain stored evidence without inventing project-management facts.
- PostgreSQL source records remain authoritative.
source_project_*fields are explicit source hints.post_project_mentionrows are semantic candidates with their existing confidence and provenance.post_lineage_edgeis reconstructed/inferred related history, not a causal claim.post_summary_roleis observed R&R evidence, not an authoritative HR assignment ledger.- The first release uses
source_post.created_atasdocument_timeunless an explicit event clock exists; it must not relabel document time as event time. - Unauthorized private, draft-excluded, or deletion-excluded posts must not influence the timeline, reverse trace, counts, or handoff analysis.
Functional acceptance criteria
Backend projection
- Add a versioned
GET /api/project-history?project_key=...read contract. - Match authorized posts by exact normalized explicit project code/name or exact stored semantic project key/name.
- Bound the request and response; stable-sort by
(occurred_at, post_id)and report truncation. - Return a declared
time_basis_code; default todocument_timefor the current schema. - Return typed related-prior paths using only visible project posts and persisted lineage edges.
- Return each path's truth status, source relation, score where applicable, and provenance.
- Return observed R&R actors per event and adjacent-event responsibility transitions:
continuous,handoff, orassignment_gap. - Return the distinct observed actor count without treating missing R&R as a negative assignment fact.
Buyer UI
- Replace the project card's search-only dead end with Open project history while retaining board search as a secondary action.
- Render an accessible chronological timeline with event date, title, and declared time basis.
- Selecting an event updates one detail panel with related prior history and observed responsibility history.
- Handoffs and gaps are communicated by text/icons, not color alone.
- Provide keyboard operation, visible focus,
aria-current, responsive reflow, and an exact-value table/ordered-list representation. - Allow opening the selected event's source post without losing the originating Buyer context.
- Localize the surface for Korean, English, Chinese, Japanese, and Vietnamese.
- Add a Storybook fixture representing order, specification change, delivery, VOC, and rebid.
Required tests
- RED→GREEN API contract tests for exact project matching and stable chronology.
- ABAC regression proving an unauthorized private event cannot affect history, lineage paths, actor counts, or handoff segments.
- Regression for explicit and semantic project evidence converging on one event without duplication.
- Unit tests for reverse-path traversal and
continuous/handoff/assignment_gapclassification. - Frontend tests for selection, keyboard navigation, related-history disclosure, responsibility count, and source-post opening.
- I18n and Storybook build checks.
- Full PostgreSQL/Python and frontend lint/test/build gates on the exact head.
Standards grounding
- W3C PROV-O for portable provenance and explicit truth/source boundaries: https://www.w3.org/TR/prov-o/
- W3C OWL-Time for temporal positions and ordering semantics: https://www.w3.org/TR/owl-time/
- ISO 8601-1:2019 with Amendment 1:2022 for interchange date/time representation; the 2026 edition is still a committee draft: https://www.iso.org/standard/70907.html
- WCAG 2.2 / WAI-ARIA 1.2 keyboard and non-color-only interaction requirements: https://www.w3.org/WAI/WCAG22/Understanding/ and https://www.w3.org/TR/wai-aria/
Stack and merge boundary
Implement as a new stacked PR on the stabilized head of #264. Do not mix the separate #274 channel-score evidence-table work into this slice. #258 must ultimately land before the descendant Buyer-surface stack is merged.
Activity
seonghobae commentedon Aug 20, 2026
Consolidated into canonical issue #280 and implementation PR #285. The shared exact-project chronology, authorized/cutoff-safe paths, responsibility evidence gaps, GNB/post-detail entry points, five locales, Figma, Storybook, and accessibility requirements remain tracked there; closing this duplicate without claiming protected-main delivery.
seonghobae commentedon Aug 20, 2026
Consolidated into canonical issue #280 and implementation PR #285. The shared exact-project chronology, authorized/cutoff-safe paths, responsibility evidence gaps, GNB/post-detail entry points, five locales, Figma, Storybook, and accessibility requirements remain tracked there; closing this duplicate without claiming protected-main delivery.