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
ConformanceRunnerPort --> SubprocessConformanceRunner
ConformanceRunnerPort -.-> FakeConformanceRunner
IssueFetcherPort --> IssueFetcher
IssueFetcherPort -.-> FakeIssueFetcher
IssueStorePort --> CachingIssueStore
IssueStorePort --> IssueStore
IssueStorePort -.-> FakeIssueStore
ObservabilityPort --> NoOpObservabilityAdapter
ObservabilityPort --> SentryObservabilityAdapter
ObservabilityPort -.-> FakeObservability
PRPort --> PRManager
PRPort -.-> FakeGitHub
ReviewInsightStorePort --> ReviewInsightStore
ReviewInsightStorePort -.-> FakeReviewInsightStore
RouteBackCounterPort --> RouteBackStateMixin
RouteBackCounterPort --> StateTracker
RouteBackCounterPort -.-> FakeRouteBackCounter
WorkspacePort --> WorkspaceManager
WorkspacePort -.-> FakeWorkspace
Details¶
AgentPort¶
- Module:
src.ports - Methods:
build_command,execute,verify_result - Adapters:
AgentRunner(src.agent._runner)- Fake:
FakeAgent(mockworld.fakes.fake_agent)
BotPRPort¶
- Module:
src.term_proposer_loop - Methods:
find_open_bot_pr,open_bot_pr - Adapters:
OpenAutoPRBotPRPort(src.term_proposer_runtime)- Fake:
FakeBotPR(mockworld.fakes.fake_bot_pr)
ConformanceRunnerPort¶
- Module:
src.ports - Methods:
available,run - Adapters:
SubprocessConformanceRunner(src.adr_conformance_runner)- Fake:
FakeConformanceRunner(mockworld.fakes.fake_conformance_runner)
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_implementable,get_plannable,get_reviewable,get_triageable,is_active,mark_active,mark_complete,mark_merged,release_in_flight,try_claim_stage - Adapters:
CachingIssueStore(src.caching_issue_store)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:
NoOpObservabilityAdapter(src.observability.noop_adapter)SentryObservabilityAdapter(src.observability.sentry_adapter)- Fake:
FakeObservability(mockworld.fakes.fake_observability)
PRPort¶
- Module:
src.ports - Methods:
add_labels,add_pr_labels,branch_has_diff_from_main,close_issue,close_pr,close_task,count_workflow_run_artifacts,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_closed_stage_labeled_issues,find_existing_issue,find_label_drift,find_open_pr_for_branch,find_open_promotion_pr,find_open_resolving_pr,get_branch_pr_state,get_dependabot_alerts,get_issue_body,get_issue_labels,get_issue_state,get_issue_updated_at,get_latest_ci_status,get_pr_approvers,get_pr_checks,get_pr_commit_messages,get_pr_diff,get_pr_diff_names,get_pr_diff_stats,get_pr_head_sha,get_pr_labels,get_pr_mergeable,get_pr_recent_commit_diffs,get_pr_title_and_body,get_workflow_run_jobs,list_all_issues,list_all_open_prs,list_all_prs,list_branch_commits,list_branch_refs,list_closed_issues_by_label,list_conflicting_prs,list_hitl_items,list_issue_comments,list_issues_by_label,list_open_issue_numbers,list_open_issues,list_prs_by_label,list_rc_branches,list_runs_for_workflow,list_workflow_runs,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,reopen_issue,rerun_workflow_failed,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:
FakeGitHub(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)StateTracker(src.state.__init__)- Fake:
FakeRouteBackCounter(mockworld.fakes.fake_route_back_counter)
WorkspacePort¶
- Module:
src.ports - Methods:
abort_merge,create,destroy,destroy_all,get_conflicting_files,list_project_worktrees,merge_main,post_work_cleanup,prune_dead_registrations,reset_to_main,start_merge_main - Adapters:
WorkspaceManager(src.workspace._manager)- Fake:
FakeWorkspace(mockworld.fakes.fake_workspace)