Port Map¶
Hexagonal boundaries. Each *Port Protocol with its concrete adapter(s) and fake (per ADR-0047). Ports without a fake are flagged ⚠️ — fakes are required for scenario testing.
graph LR
AgentPort --> AgentRunner
AgentPort -.-> FakeAgent
BotPRPort --> OpenAutoPRBotPRPort
BotPRPort -.-> FakeBotPR
IssueFetcherPort --> IssueFetcher
IssueFetcherPort -.-> FakeIssueFetcher
IssueStorePort --> IssueStore
IssueStorePort -.-> FakeIssueStore
ObservabilityPort --> SentryObservabilityAdapter
ObservabilityPort -.-> FakeSentry
PRPort --> PRManager
PRPort -.-> FakePR
ReviewInsightStorePort --> ReviewInsightStore
ReviewInsightStorePort -.-> FakeReviewInsightStore
RouteBackCounterPort --> RouteBackStateMixin
RouteBackCounterPort -.-> FakeRouteBackCounter
WorkspacePort --> WorkspaceManager
WorkspacePort -.-> FakeWorkspace
Details¶
AgentPort¶
- Module:
src.ports - Methods:
build_command,execute,verify_result - Adapters:
AgentRunner(src.agent)- Fake:
FakeAgent(mockworld.fakes.fake_agent)
BotPRPort¶
- Module:
src.term_proposer_loop - Methods:
open_bot_pr - Adapters:
OpenAutoPRBotPRPort(src.term_proposer_runtime)- Fake:
FakeBotPR(mockworld.fakes.fake_bot_pr)
IssueFetcherPort¶
- Module:
src.ports - Methods:
fetch_issue_by_number,fetch_issues_by_labels - Adapters:
IssueFetcher(src.issue_fetcher)- Fake:
FakeIssueFetcher(mockworld.fakes.fake_issue_fetcher)
IssueStorePort¶
- Module:
src.ports - Methods:
enqueue_transition,enrich_with_comments,get_discoverable,get_implementable,get_plannable,get_reviewable,get_shapeable,get_triageable,is_active,mark_active,mark_complete,mark_merged,release_in_flight - Adapters:
IssueStore(src.issue_store)- Fake:
FakeIssueStore(mockworld.fakes.fake_issue_store)
ObservabilityPort¶
- Module:
src.ports - Methods:
breadcrumb,capture_exception,capture_message,flush,set_measurement - Adapters:
SentryObservabilityAdapter(src.observability.sentry_adapter)- Fake:
FakeSentry(mockworld.fakes.fake_sentry)
PRPort¶
- Module:
src.ports - Methods:
add_labels,add_pr_labels,branch_has_diff_from_main,close_issue,close_task,create_issue,create_pr,create_promotion_pr,create_rc_branch,create_task,delete_branch,expected_pr_title,fetch_ci_failure_logs,fetch_code_scanning_alerts,find_existing_issue,find_label_drift,find_open_pr_for_branch,find_open_promotion_pr,get_dependabot_alerts,get_issue_state,get_issue_updated_at,get_latest_ci_status,get_pr_approvers,get_pr_diff,get_pr_diff_names,get_pr_head_sha,get_pr_mergeable,get_pr_recent_commit_diffs,list_closed_issues_by_label,list_conflicting_prs,list_hitl_items,list_issue_comments,list_issues_by_label,list_prs_by_label,list_rc_branches,merge_pr,merge_promotion_pr,post_comment,post_pr_comment,pull_main,push_branch,push_synthetic_commit,refresh_pr_branch_with_arch_regen,remove_label,remove_pr_label,submit_review,swap_pipeline_labels,transition,update_issue_body,update_pr_base,update_pr_branch,update_pr_title,upload_screenshot,wait_for_ci - Adapters:
PRManager(src.pr_manager)- Fake:
FakePR(mockworld.fakes.fake_github)
ReviewInsightStorePort¶
- Module:
src.ports - Methods:
append_review,get_proposed_categories,load_proposal_metadata,load_recent,mark_category_proposed,record_proposal,update_proposal_verified - Adapters:
ReviewInsightStore(src.review_insights)- Fake:
FakeReviewInsightStore(mockworld.fakes.fake_review_insight_store)
RouteBackCounterPort¶
- Module:
src.route_back - Methods:
decrement_route_back_count,get_route_back_count,increment_route_back_count - Adapters:
RouteBackStateMixin(src.state._route_back)- Fake:
FakeRouteBackCounter(mockworld.fakes.fake_route_back_counter)
WorkspacePort¶
- Module:
src.ports - Methods:
abort_merge,create,destroy,destroy_all,get_conflicting_files,merge_main,post_work_cleanup,reset_to_main,start_merge_main - Adapters:
WorkspaceManager(src.workspace)- Fake:
FakeWorkspace(mockworld.fakes.fake_workspace)