diff --git a/config/notion-project-map.json b/config/notion-project-map.json index af3d097..d55b9d4 100644 --- a/config/notion-project-map.json +++ b/config/notion-project-map.json @@ -1,4 +1,10 @@ { + "operator-os-explainer": { + "localProjectId": "39dc21f1-caf0-8142-8718-e1454dea1198" + }, + "claude-code-harness": { + "localProjectId": "362c21f1-caf0-81bd-8c6e-dd3acaebc34b" + }, "Notion Operating System": { "localProjectId": "332c21f1-caf0-81c5-85fb-d7451163ab6b" }, diff --git a/config/project-registry-overrides.json b/config/project-registry-overrides.json index 15eec43..66f495e 100644 --- a/config/project-registry-overrides.json +++ b/config/project-registry-overrides.json @@ -4,6 +4,7 @@ "jcc": "JobCommandCenter", "jsm_export": "JSMTicketAnalyticsExport", "bhv": "BrowserHistoryVisualizer", + "claude-harness-modernization": "supp:claude-code-harness", "netmapper": "NetworkMapper", "notion_os": "Notion", "mcpaudit-web": "MCPAudit", @@ -13,6 +14,14 @@ "interruptionresume": "Interruption Resume Studio" }, "supplementary": [ + { + "canonical_key": "supp:claude-code-harness", + "display_name": "claude-code-harness", + "repo_full_name": null, + "group_key": "operator_infra", + "lifecycle_state": "manual-only", + "note": "Machine-wide Claude Code harness operating surface under /Users/d/.claude; tracked as shipped/monitor-only, not a standalone repo." + }, { "canonical_key": "supp:personal-ops", "display_name": "personal-ops", @@ -60,7 +69,6 @@ }, "notion_projection_only_rows": { "app": "local runtime/app shell placeholder; not a portfolio-truth repo", - "claude-code-harness": "local agent harness projection; outside repo-root truth", "RAG Knowledge Base": "notion planning row; not a portfolio-truth repo", "Sandbox Local Portfolio Project": "actuation sandbox fixture row", "SecondBrain": "knowledge vault under /Users/d/Documents; not a /Users/d/Projects repo" diff --git a/tests/test_project_registry.py b/tests/test_project_registry.py index f7ae1c9..9fd0a07 100644 --- a/tests/test_project_registry.py +++ b/tests/test_project_registry.py @@ -146,6 +146,33 @@ def test_resolve_hard_normalization_failures_via_override(): assert resolve("bhv", index)["canonical_key"] == "BrowserHistoryVisualizer" +def test_configured_shipped_mappings_cover_operator_os_and_claude_harness(): + snapshot = _snapshot( + _ident( + "operator-os-explainer", + "operator-os-explainer", + "saagpatel/operator-os-explainer", + ) + ) + registry = build_project_registry( + snapshot, + notion_project_map_path=Path("config/notion-project-map.json"), + overrides_config_path=Path("config/project-registry-overrides.json"), + ) + index = build_index(registry) + by_key = {entry["canonical_key"]: entry for entry in registry["entries"]} + + assert resolve("claude-harness-modernization", index)["canonical_key"] == ( + "supp:claude-code-harness" + ) + assert by_key["supp:claude-code-harness"]["notion_local_page_id"] == ( + "362c21f1-caf0-81bd-8c6e-dd3acaebc34b" + ) + assert by_key["operator-os-explainer"]["notion_local_page_id"] == ( + "39dc21f1-caf0-8142-8718-e1454dea1198" + ) + + def test_resolve_collision_guard_screenshotselect(): registry = build_project_registry(SNAPSHOT, overrides_config_path=None) index = build_index(registry)