Skip to content

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)