From f63885f208d2cbb9b46c9e0b43c8819472aee94a Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Mon, 24 Aug 2026 04:11:20 +0900 Subject: [PATCH 1/3] fix: require explicit location evidence in 5W1H --- lineageweave/five_w1h.py | 12 ------------ tests/test_five_w1h.py | 13 ++++++++++++- 2 files changed, 12 insertions(+), 13 deletions(-) diff --git a/lineageweave/five_w1h.py b/lineageweave/five_w1h.py index c2804aac6..accf84629 100644 --- a/lineageweave/five_w1h.py +++ b/lineageweave/five_w1h.py @@ -70,13 +70,6 @@ def assemble_five_w1h_slots( item = _value(role.get("actor_name"), "post_summary_role", (actor_type,)) if item: slots["who"].append(item) - affiliation = _value( - role.get("affiliated_organization_name"), - "post_summary_role.affiliated_organization_name", - ("prov_organization",), - ) - if affiliation: - slots["where"].append(affiliation) for event in key_events: item = _value(event, "post_summary_event", _SLOT_LOOKUP_CODES["what"]) @@ -100,11 +93,6 @@ def assemble_five_w1h_slots( if item: slots["what"].append(item) - for name in counterparties or []: - item = _value(name, "post_counterparty_entity", ("prov_organization",)) - if item: - slots["where"].append(item) - return {slot: _unique(values) for slot, values in slots.items()} diff --git a/tests/test_five_w1h.py b/tests/test_five_w1h.py index 60b5735c7..b3c3bff65 100644 --- a/tests/test_five_w1h.py +++ b/tests/test_five_w1h.py @@ -12,6 +12,13 @@ def test_five_w1h_keeps_persisted_evidence_and_leaves_unsupported_slots_empty() ], key_events=["검사 일정 확정"], counterparties=["Northwind Labs"], + evidence_claims=[ + { + "slot_code": "where", + "value_text": "Assembly Bay 4", + "evidence_text": "Inspection took place in Assembly Bay 4.", + } + ], ) assert [item["text"] for item in slots["who"]] == ["Ada West"] @@ -21,7 +28,11 @@ def test_five_w1h_keeps_persisted_evidence_and_leaves_unsupported_slots_empty() # PROV-O category (prov:generatedAtTime), and must not be shown here # as if it answered "when did this happen" (see five_w1h.py). assert slots["when"] == [] - assert {item["text"] for item in slots["where"]} == {"Demo Corp", "Northwind Labs"} + assert [item["text"] for item in slots["where"]] == ["Assembly Bay 4"] + assert slots["where"][0]["source"] == "post_summary_five_w1h" + assert slots["where"][0]["evidence_text"] == ( + "Inspection took place in Assembly Bay 4." + ) assert slots["why"] == [] assert slots["how"] == [] From 7cad9616c5f5aa343a77430c4a3ee51b12816d35 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Mon, 24 Aug 2026 04:20:09 +0900 Subject: [PATCH 2/3] refactor: stop loading unused 5W1H counterparties --- backend/app/five_w1h_ingestion.py | 3 --- lineageweave/five_w1h.py | 1 - tests/test_five_w1h.py | 1 - 3 files changed, 5 deletions(-) diff --git a/backend/app/five_w1h_ingestion.py b/backend/app/five_w1h_ingestion.py index 82f9930c6..8bc90024d 100644 --- a/backend/app/five_w1h_ingestion.py +++ b/backend/app/five_w1h_ingestion.py @@ -9,7 +9,6 @@ from lineageweave.five_w1h import assemble_five_w1h_slots, slots_payload -from .entity_relationship_ingestion import fetch_post_counterparties from .post_chat_ingestion import find_linked_post_ids from .post_summary_ingestion import fetch_persisted_summary @@ -42,11 +41,9 @@ async def load_five_w1h_slots( ) linked_titles = [row["post_title"] for row in rows if can_see_post(row)] - counterparties = await fetch_post_counterparties(conn, post_id) slots = assemble_five_w1h_slots( roles=summary.get("roles_and_responsibilities", []), key_events=summary.get("key_events", []), - counterparties=[row["counterparty_entity_name"] for row in counterparties], lineage_node_labels=linked_titles, evidence_claims=[dict(row) for row in evidence_claims], ) diff --git a/lineageweave/five_w1h.py b/lineageweave/five_w1h.py index accf84629..7f8cf1c34 100644 --- a/lineageweave/five_w1h.py +++ b/lineageweave/five_w1h.py @@ -50,7 +50,6 @@ def assemble_five_w1h_slots( *, roles: list[dict[str, Any]], key_events: list[str], - counterparties: list[str] | None = None, lineage_node_labels: list[str] | None = None, evidence_claims: list[dict[str, Any]] | None = None, ) -> dict[str, list[dict[str, Any]]]: diff --git a/tests/test_five_w1h.py b/tests/test_five_w1h.py index b3c3bff65..39fa26560 100644 --- a/tests/test_five_w1h.py +++ b/tests/test_five_w1h.py @@ -11,7 +11,6 @@ def test_five_w1h_keeps_persisted_evidence_and_leaves_unsupported_slots_empty() } ], key_events=["검사 일정 확정"], - counterparties=["Northwind Labs"], evidence_claims=[ { "slot_code": "where", From b5b0dd91d89465bb7b9a7d3fefe2ce5eec30d2d9 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Mon, 24 Aug 2026 04:22:20 +0900 Subject: [PATCH 3/3] refactor: remove stale 5W1H location lookup --- lineageweave/five_w1h.py | 1 - 1 file changed, 1 deletion(-) diff --git a/lineageweave/five_w1h.py b/lineageweave/five_w1h.py index 7f8cf1c34..b030f0cf6 100644 --- a/lineageweave/five_w1h.py +++ b/lineageweave/five_w1h.py @@ -15,7 +15,6 @@ "who": ("prov_person", "prov_organization", "prov_team", "prov_software_agent"), "what": ("node_post",), "when": (), - "where": ("prov_organization",), "why": (), "how": (), }