mainsequence 8.1.23.dev24__tar.gz → 8.1.24__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (144) hide show
  1. {mainsequence-8.1.23.dev24/mainsequence.egg-info → mainsequence-8.1.24}/PKG-INFO +1 -1
  2. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/mainsequence/client/models_foundry.py +2 -18
  3. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24/mainsequence.egg-info}/PKG-INFO +1 -1
  4. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/pyproject.toml +1 -1
  5. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/tests/test_github_issues_client.py +24 -92
  6. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/LICENSE +0 -0
  7. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/MANIFEST.in +0 -0
  8. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/README.md +0 -0
  9. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/agent_scaffold/AGENTS.md +0 -0
  10. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/agent_scaffold/skills/a2a_sdk_execution/SKILL.md +0 -0
  11. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/agent_scaffold/skills/application_surfaces/api_surfaces/SKILL.md +0 -0
  12. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/agent_scaffold/skills/data_access/exploration/SKILL.md +0 -0
  13. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/agent_scaffold/skills/data_publishing/meta_table_migrations/SKILL.md +0 -0
  14. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/agent_scaffold/skills/data_publishing/meta_tables/SKILL.md +0 -0
  15. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/agent_scaffold/skills/data_publishing/time_index_table_updates/SKILL.md +0 -0
  16. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/agent_scaffold/skills/maintenance/bug_auditor/SKILL.md +0 -0
  17. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/agent_scaffold/skills/maintenance/code_repository_maintenance/SKILL.md +0 -0
  18. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/agent_scaffold/skills/platform_operations/access_control_and_sharing/SKILL.md +0 -0
  19. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/agent_scaffold/skills/platform_operations/orchestration_and_releases/SKILL.md +0 -0
  20. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/agent_scaffold/skills/sdk_code_repository_execution/SKILL.md +0 -0
  21. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/mainsequence/__init__.py +0 -0
  22. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/mainsequence/__main__.py +0 -0
  23. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/mainsequence/bootstrap.py +0 -0
  24. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/mainsequence/cli/__init__.py +0 -0
  25. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/mainsequence/cli/api.py +0 -0
  26. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/mainsequence/cli/browser_auth.py +0 -0
  27. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/mainsequence/cli/cli.py +0 -0
  28. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/mainsequence/cli/code_repository_status.py +0 -0
  29. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/mainsequence/cli/config.py +0 -0
  30. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/mainsequence/cli/docker_utils.py +0 -0
  31. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/mainsequence/cli/doctor.py +0 -0
  32. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/mainsequence/cli/local_ops.py +0 -0
  33. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/mainsequence/cli/migrations.py +0 -0
  34. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/mainsequence/cli/model_filters.py +0 -0
  35. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/mainsequence/cli/pydantic_cli.py +0 -0
  36. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/mainsequence/cli/sdk_utils.py +0 -0
  37. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/mainsequence/cli/ssh_utils.py +0 -0
  38. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/mainsequence/cli/ui.py +0 -0
  39. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/mainsequence/client/__init__.py +0 -0
  40. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/mainsequence/client/agent_runtime_models.py +0 -0
  41. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/mainsequence/client/base.py +0 -0
  42. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/mainsequence/client/client.py +0 -0
  43. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/mainsequence/client/compute_validation.py +0 -0
  44. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/mainsequence/client/data_sources_interfaces/__init__.py +0 -0
  45. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/mainsequence/client/data_sources_interfaces/duckdb.py +0 -0
  46. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/mainsequence/client/data_sources_interfaces/local_paths.py +0 -0
  47. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/mainsequence/client/data_sources_interfaces/sqlite.py +0 -0
  48. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/mainsequence/client/dtype_codec.py +0 -0
  49. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/mainsequence/client/exceptions.py +0 -0
  50. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/mainsequence/client/github_issues.py +0 -0
  51. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/mainsequence/client/metatables/__init__.py +0 -0
  52. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/mainsequence/client/metatables/core.py +0 -0
  53. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/mainsequence/client/models_helpers.py +0 -0
  54. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/mainsequence/client/models_user.py +0 -0
  55. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/mainsequence/client/observability.py +0 -0
  56. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/mainsequence/client/utils.py +0 -0
  57. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/mainsequence/client/value_sets.py +0 -0
  58. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/mainsequence/code_repository_context.py +0 -0
  59. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/mainsequence/code_repository_skills.py +0 -0
  60. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/mainsequence/defaults.py +0 -0
  61. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/mainsequence/instrumentation/__init__.py +0 -0
  62. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/mainsequence/instrumentation/utils.py +0 -0
  63. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/mainsequence/logconf.py +0 -0
  64. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/mainsequence/meta_tables/__init__.py +0 -0
  65. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/mainsequence/meta_tables/__main__.py +0 -0
  66. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/mainsequence/meta_tables/compiled_sql/__init__.py +0 -0
  67. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/mainsequence/meta_tables/compiled_sql/v1.py +0 -0
  68. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/mainsequence/meta_tables/future_registry.py +0 -0
  69. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/mainsequence/meta_tables/hashing.py +0 -0
  70. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/mainsequence/meta_tables/migrations/__init__.py +0 -0
  71. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/mainsequence/meta_tables/migrations/alembic.py +0 -0
  72. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/mainsequence/meta_tables/migrations/env.py +0 -0
  73. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/mainsequence/meta_tables/migrations/provider.py +0 -0
  74. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/mainsequence/meta_tables/migrations/registry.py +0 -0
  75. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/mainsequence/meta_tables/migrations/scaffold.py +0 -0
  76. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/mainsequence/meta_tables/migrations/templates/__init__.py +0 -0
  77. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/mainsequence/meta_tables/migrations/templates/env.py.mako +0 -0
  78. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/mainsequence/meta_tables/migrations/templates/script.py.mako +0 -0
  79. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/mainsequence/meta_tables/pydantic_metadata.py +0 -0
  80. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/mainsequence/meta_tables/schema_names.py +0 -0
  81. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/mainsequence/meta_tables/sqlalchemy_contracts.py +0 -0
  82. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/mainsequence/meta_tables/time_index_table_refs.py +0 -0
  83. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/mainsequence/meta_tables/time_index_table_updates/__init__.py +0 -0
  84. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/mainsequence/meta_tables/time_index_table_updates/configuration.py +0 -0
  85. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/mainsequence/meta_tables/time_index_table_updates/dependencies.py +0 -0
  86. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/mainsequence/meta_tables/time_index_table_updates/managers.py +0 -0
  87. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/mainsequence/meta_tables/time_index_table_updates/namespacing.py +0 -0
  88. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/mainsequence/meta_tables/time_index_table_updates/runner.py +0 -0
  89. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/mainsequence/meta_tables/time_index_table_updates/updaters.py +0 -0
  90. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/mainsequence/meta_tables/time_index_table_updates/utils.py +0 -0
  91. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/mainsequence/repository_identity_security.py +0 -0
  92. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/mainsequence/runtime_flags.py +0 -0
  93. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/mainsequence/scaffold_skills.py +0 -0
  94. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/mainsequence.egg-info/SOURCES.txt +0 -0
  95. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/mainsequence.egg-info/dependency_links.txt +0 -0
  96. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/mainsequence.egg-info/entry_points.txt +0 -0
  97. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/mainsequence.egg-info/requires.txt +0 -0
  98. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/mainsequence.egg-info/top_level.txt +0 -0
  99. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/setup.cfg +0 -0
  100. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/tests/fixtures/time_index_table_update_hash_v2_golden.json +0 -0
  101. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/tests/test_auth_precedence.py +0 -0
  102. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/tests/test_canonical_api_route_contract.py +0 -0
  103. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/tests/test_cli.py +0 -0
  104. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/tests/test_cli_browser_auth.py +0 -0
  105. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/tests/test_cli_migrations.py +0 -0
  106. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/tests/test_client.py +0 -0
  107. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/tests/test_code_repository_batch_jobs_from_file.py +0 -0
  108. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/tests/test_code_repository_branch_contract.py +0 -0
  109. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/tests/test_code_repository_documentation_contract.py +0 -0
  110. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/tests/test_code_repository_runtime_context.py +0 -0
  111. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/tests/test_code_repository_skills.py +0 -0
  112. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/tests/test_dependency_extras.py +0 -0
  113. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/tests/test_dev_release_version.py +0 -0
  114. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/tests/test_duckdb_interface_dimensions.py +0 -0
  115. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/tests/test_environment_resource_context.py +0 -0
  116. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/tests/test_environment_response_contracts.py +0 -0
  117. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/tests/test_filter_normalization.py +0 -0
  118. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/tests/test_instrumentation.py +0 -0
  119. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/tests/test_local_ops.py +0 -0
  120. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/tests/test_logconf.py +0 -0
  121. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/tests/test_meta_table_migrations.py +0 -0
  122. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/tests/test_meta_tables_client_models.py +0 -0
  123. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/tests/test_meta_tables_sqlalchemy_contracts.py +0 -0
  124. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/tests/test_models_user_request_bound_auth.py +0 -0
  125. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/tests/test_notification_uid_contract.py +0 -0
  126. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/tests/test_observability_client.py +0 -0
  127. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/tests/test_pod_project_resolution.py +0 -0
  128. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/tests/test_scaffold_skills.py +0 -0
  129. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/tests/test_schema_names.py +0 -0
  130. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/tests/test_secret_client_model.py +0 -0
  131. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/tests/test_source_table_configuration.py +0 -0
  132. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/tests/test_sqlite_interface_dimensions.py +0 -0
  133. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/tests/test_ssh_utils.py +0 -0
  134. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/tests/test_time_index_table_access_dimension_audit.py +0 -0
  135. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/tests/test_time_index_table_dimension_queries.py +0 -0
  136. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/tests/test_time_index_table_update_configuration.py +0 -0
  137. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/tests/test_time_index_table_update_configuration_client.py +0 -0
  138. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/tests/test_time_index_table_update_flow.py +0 -0
  139. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/tests/test_time_index_table_update_hard_cut.py +0 -0
  140. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/tests/test_tolerant_response_reading.py +0 -0
  141. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/tests/test_tolerant_value_sets.py +0 -0
  142. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/tests/test_update_runner_uid_runtime.py +0 -0
  143. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/tests/test_update_statistics.py +0 -0
  144. {mainsequence-8.1.23.dev24 → mainsequence-8.1.24}/tests/test_update_uid_guards.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mainsequence
3
- Version: 8.1.23.dev24
3
+ Version: 8.1.24
4
4
  Summary: Main Sequence SDK
5
5
  Author-email: Main Sequence GmbH <dev@main-sequence.io>
6
6
  License-Expression: LicenseRef-MainSequence-Proprietary
@@ -574,20 +574,6 @@ class CodeRepositoryBranch(BasePydanticModel, BaseObjectOrm):
574
574
  params = {"commit_sha": commit_sha} if commit_sha else None
575
575
  return self._get_action("infra-graph", params=params, timeout=timeout)
576
576
 
577
- def _resolved_github_issue_branch_uid(self, operation: str) -> str:
578
- """Assert that this instance is the process-frozen Git branch."""
579
-
580
- from mainsequence.code_repository_context import (
581
- resolve_code_repository_branch_uid,
582
- resolve_organization_environment_uid,
583
- )
584
-
585
- branch_uid = resolve_code_repository_branch_uid(operation, supplied_uid=self.uid)
586
- # GitHub issues persist Environment ownership from the resolved branch. The
587
- # backend derives it from the branch path; it is never a caller selector.
588
- resolve_organization_environment_uid(operation)
589
- return branch_uid
590
-
591
577
  def list_github_issues(
592
578
  self,
593
579
  *,
@@ -597,14 +583,12 @@ class CodeRepositoryBranch(BasePydanticModel, BaseObjectOrm):
597
583
  limit: int = 50,
598
584
  timeout: int | float | tuple[float, float] | None = None,
599
585
  ) -> GitHubIssuePage:
600
- """List issues anchored to the process-frozen CodeRepositoryBranch."""
586
+ """List issues for this branch, subject to backend authorization."""
601
587
 
602
588
  from .github_issues import _list_github_issues_for_branch
603
589
 
604
- operation = "CodeRepositoryBranch.list_github_issues"
605
- branch_uid = self._resolved_github_issue_branch_uid(operation)
606
590
  return _list_github_issues_for_branch(
607
- branch_uid=branch_uid,
591
+ branch_uid=self.uid,
608
592
  state=state,
609
593
  updated_since=updated_since,
610
594
  cursor=cursor,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mainsequence
3
- Version: 8.1.23.dev24
3
+ Version: 8.1.24
4
4
  Summary: Main Sequence SDK
5
5
  Author-email: Main Sequence GmbH <dev@main-sequence.io>
6
6
  License-Expression: LicenseRef-MainSequence-Proprietary
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "mainsequence"
7
- version = "8.1.23.dev24"
7
+ version = "8.1.24"
8
8
  description = "Main Sequence SDK "
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.13"
@@ -2,8 +2,6 @@ from __future__ import annotations
2
2
 
3
3
  import datetime
4
4
  import inspect
5
- import pathlib
6
- import types
7
5
 
8
6
  import pytest
9
7
 
@@ -116,54 +114,11 @@ def _reset_context(monkeypatch):
116
114
  code_repository_context._reset_code_repository_context()
117
115
 
118
116
 
119
- def _configure_context(monkeypatch, *, registered=True, environment_uid=ENVIRONMENT_UID):
120
- calls = {"source": 0, "backend": 0}
121
- source = code_repository_context.GitCodeRepositorySourceContext(
122
- repository_root=pathlib.Path.cwd().resolve(),
123
- canonical_repository_identity="github.com/mainsequence-sdk/example",
124
- repository_branch="main",
125
- repository_ref="refs/heads/main",
126
- commit_sha=COMMIT_SHA,
127
- )
128
-
129
- def load_source(path):
130
- calls["source"] += 1
131
- return source
132
-
133
- def load_branch(resolved_source):
134
- calls["backend"] += 1
135
- if not registered:
136
- return None
137
- branch = types.SimpleNamespace(
138
- uid=BRANCH_UID,
139
- code_repository_uid=CODE_REPOSITORY_UID,
140
- repository_branch="main",
141
- organization_environment_uid=environment_uid,
142
- metatables_data_source=None,
143
- )
144
- return types.SimpleNamespace(
145
- canonical_repository_identity=resolved_source.canonical_repository_identity,
146
- repository_branch=resolved_source.repository_branch,
147
- repository_ref=resolved_source.repository_ref,
148
- commit_sha=resolved_source.commit_sha,
149
- code_repository_branch=branch,
150
- )
151
-
152
- monkeypatch.setattr(code_repository_context, "_resolve_git_source_context", load_source)
153
- monkeypatch.setattr(
154
- code_repository_context,
155
- "_default_code_repository_branch_context_loader",
156
- load_branch,
157
- )
158
- return calls
159
-
160
-
161
117
  def _branch(uid=BRANCH_UID):
162
118
  return CodeRepositoryBranch.model_construct(uid=uid)
163
119
 
164
120
 
165
- def test_branch_issue_list_uses_one_frozen_context_and_no_environment_selector(monkeypatch):
166
- context_calls = _configure_context(monkeypatch)
121
+ def test_branch_issue_list_uses_target_branch_and_no_environment_selector(monkeypatch):
167
122
  requests = []
168
123
 
169
124
  def fake_make_request(**kwargs):
@@ -176,20 +131,20 @@ def test_branch_issue_list_uses_one_frozen_context_and_no_environment_selector(m
176
131
  monkeypatch.setattr(github_issues, "make_request", fake_make_request)
177
132
  updated_since = datetime.datetime(2026, 9, 14, 10, tzinfo=datetime.UTC)
178
133
 
179
- first = _branch().list_github_issues(
134
+ first = _branch(OTHER_BRANCH_UID).list_github_issues(
180
135
  state="open",
181
136
  updated_since=updated_since,
182
137
  cursor="input-cursor",
183
138
  limit=25,
184
139
  )
185
- second = _branch().list_github_issues(limit=50)
140
+ second = _branch(OTHER_BRANCH_UID).list_github_issues(limit=50)
186
141
 
187
142
  assert first.next_cursor == "opaque-cursor"
188
143
  assert first.results[0].uid == ISSUE_UID
189
144
  assert second.results[0].issue_number == 17
190
- assert context_calls == {"source": 1, "backend": 1}
191
145
  assert requests[0]["url"] == (
192
- f"https://backend.example/api/v1/code-repository-branches/{BRANCH_UID}/github-issues/"
146
+ "https://backend.example/api/v1/code-repository-branches/"
147
+ f"{OTHER_BRANCH_UID}/github-issues/"
193
148
  )
194
149
  assert requests[0]["payload"]["params"] == {
195
150
  "limit": 25,
@@ -200,52 +155,33 @@ def test_branch_issue_list_uses_one_frozen_context_and_no_environment_selector(m
200
155
  assert "organization_environment_uid" not in requests[0]["payload"]["params"]
201
156
 
202
157
 
203
- def test_branch_instance_cannot_override_frozen_branch(monkeypatch):
204
- _configure_context(monkeypatch)
205
- requested = False
206
-
207
- def fake_make_request(**kwargs):
208
- nonlocal requested
209
- requested = True
210
- return Response(200, {})
211
-
212
- monkeypatch.setattr(github_issues, "make_request", fake_make_request)
213
-
214
- with pytest.raises(
215
- code_repository_context.CodeRepositoryBranchContextRequiredError,
216
- match="cannot override",
217
- ):
218
- _branch(OTHER_BRANCH_UID).list_github_issues()
219
-
220
- assert requested is False
158
+ def test_list_issues_does_not_resolve_process_branch(monkeypatch):
159
+ captured = {}
221
160
 
161
+ def fail_context_resolution(*args, **kwargs):
162
+ pytest.fail("targeted issue listing must not resolve the process branch")
222
163
 
223
- @pytest.mark.parametrize(
224
- ("registered", "environment_uid", "message"),
225
- [
226
- (False, ENVIRONMENT_UID, "requires a registered active CodeRepositoryBranch"),
227
- (True, None, "requires an Organization Environment"),
228
- ],
229
- )
230
- def test_branch_issue_listing_requires_registered_branch_environment(
231
- monkeypatch,
232
- registered,
233
- environment_uid,
234
- message,
235
- ):
236
- _configure_context(
237
- monkeypatch,
238
- registered=registered,
239
- environment_uid=environment_uid,
164
+ monkeypatch.setattr(
165
+ code_repository_context,
166
+ "resolve_code_repository_branch_uid",
167
+ fail_context_resolution,
168
+ )
169
+ monkeypatch.setattr(
170
+ code_repository_context,
171
+ "resolve_organization_environment_uid",
172
+ fail_context_resolution,
240
173
  )
241
174
  monkeypatch.setattr(
242
175
  github_issues,
243
176
  "make_request",
244
- lambda **kwargs: pytest.fail("HTTP must not run without complete branch context"),
177
+ lambda **kwargs: captured.update(kwargs)
178
+ or Response(200, {"next_cursor": None, "results": []}),
245
179
  )
246
180
 
247
- with pytest.raises(code_repository_context.CodeRepositoryContextError, match=message):
248
- _branch().list_github_issues()
181
+ result = _branch(OTHER_BRANCH_UID).list_github_issues()
182
+
183
+ assert result.results == []
184
+ assert captured["url"].endswith(f"/{OTHER_BRANCH_UID}/github-issues/")
249
185
 
250
186
 
251
187
  def test_create_issue_uses_target_branch_without_process_branch_resolution(monkeypatch):
@@ -283,7 +219,6 @@ def test_create_issue_uses_target_branch_without_process_branch_resolution(monke
283
219
 
284
220
 
285
221
  def test_create_issue_preserves_body_and_parses_synchronous_response(monkeypatch):
286
- _configure_context(monkeypatch)
287
222
  captured = {}
288
223
  monkeypatch.setattr(
289
224
  github_issues,
@@ -310,7 +245,6 @@ def test_create_issue_preserves_body_and_parses_synchronous_response(monkeypatch
310
245
 
311
246
 
312
247
  def test_accepted_mutation_returns_operation_without_retry(monkeypatch):
313
- _configure_context(monkeypatch)
314
248
  calls = []
315
249
 
316
250
  def fake_make_request(**kwargs):
@@ -330,7 +264,6 @@ def test_accepted_mutation_returns_operation_without_retry(monkeypatch):
330
264
 
331
265
 
332
266
  def test_replayed_issue_create_http_200_returns_issue(monkeypatch):
333
- _configure_context(monkeypatch)
334
267
  monkeypatch.setattr(
335
268
  github_issues,
336
269
  "make_request",
@@ -462,7 +395,6 @@ def test_synchronous_comment_create_returns_comment(monkeypatch):
462
395
  ],
463
396
  )
464
397
  def test_request_validation_matches_backend_contract(monkeypatch, operation, message):
465
- _configure_context(monkeypatch)
466
398
  monkeypatch.setattr(
467
399
  github_issues,
468
400
  "make_request",