diff --git a/src/portfolio_truth_reconcile.py b/src/portfolio_truth_reconcile.py index 0dfd523..131fa6b 100644 --- a/src/portfolio_truth_reconcile.py +++ b/src/portfolio_truth_reconcile.py @@ -667,7 +667,6 @@ def _build_truth_project( registry_status=registry_status, lifecycle_state=declared_values["lifecycle_state"], operating_path=path_entry.get("operating_path", ""), - intended_disposition=declared_values["intended_disposition"], category=declared_values["category"], path_override=path_entry.get("path_override", ""), risk_entry=risk_entry, @@ -987,7 +986,6 @@ def _attention_state_for( registry_status: str, lifecycle_state: str, operating_path: str, - intended_disposition: str, category: str, path_override: str, risk_entry: dict[str, Any], @@ -1002,7 +1000,6 @@ def _attention_state_for( return "archived" if ( operating_path == "experiment" - or intended_disposition == "experiment" or lifecycle_state == "experimental" ): return "experiment" diff --git a/tests/test_portfolio_truth.py b/tests/test_portfolio_truth.py index 7cb9e8e..9081e96 100644 --- a/tests/test_portfolio_truth.py +++ b/tests/test_portfolio_truth.py @@ -410,7 +410,6 @@ def test_attention_state_classifier_separates_activity_from_operator_attention() registry_status="active", lifecycle_state="active", operating_path="maintain", - intended_disposition="maintain", category="commercial", path_override="", risk_entry={"security_risk": False}, @@ -422,7 +421,6 @@ def test_attention_state_classifier_separates_activity_from_operator_attention() registry_status="active", lifecycle_state="active", operating_path="maintain", - intended_disposition="maintain", category="infrastructure", path_override="", risk_entry={"security_risk": False}, @@ -434,7 +432,6 @@ def test_attention_state_classifier_separates_activity_from_operator_attention() registry_status="active", lifecycle_state="active", operating_path="maintain", - intended_disposition="maintain", category="vanity", path_override="investigate", risk_entry={"security_risk": False}, @@ -446,7 +443,6 @@ def test_attention_state_classifier_separates_activity_from_operator_attention() registry_status="active", lifecycle_state="active", operating_path="maintain", - intended_disposition="maintain", category="fun", path_override="", risk_entry={"security_risk": False}, @@ -458,7 +454,6 @@ def test_attention_state_classifier_separates_activity_from_operator_attention() registry_status="active", lifecycle_state="active", operating_path="experiment", - intended_disposition="experiment", category="vanity", path_override="investigate", risk_entry={"security_risk": True}, @@ -470,7 +465,6 @@ def test_attention_state_classifier_separates_activity_from_operator_attention() registry_status="archived", lifecycle_state="archived", operating_path="archive", - intended_disposition="archive", category="commercial", path_override="investigate", risk_entry={"security_risk": True}, @@ -479,6 +473,46 @@ def test_attention_state_classifier_separates_activity_from_operator_attention() ) +@pytest.mark.parametrize( + ("operating_path", "intended_disposition", "expected_attention"), + [ + ("maintain", "experiment", "active-product"), + ("maintain", "maintain", "active-product"), + ("experiment", "experiment", "experiment"), + ], +) +def test_attention_state_uses_resolved_catalog_operating_path( + operating_path: str, + intended_disposition: str, + expected_attention: str, +) -> None: + from src.portfolio_pathing import build_operating_path_entry + from src.portfolio_truth_reconcile import _attention_state_for + + catalog_entry = build_operating_path_entry( + { + "has_explicit_entry": True, + "operating_path": operating_path, + "intended_disposition": intended_disposition, + }, + context_quality="full", + registry_status="active", + ) + + assert catalog_entry["operating_path"] == operating_path + assert ( + _attention_state_for( + registry_status="active", + lifecycle_state="active", + operating_path=catalog_entry["operating_path"], + category="commercial", + path_override=catalog_entry["path_override"], + risk_entry={"security_risk": False}, + ) + == expected_attention + ) + + def test_github_archived_status_reconciles_to_archived_attention( portfolio_workspace: Path, portfolio_catalog: Path,