bpsai-pair 2.35.0__tar.gz → 2.35.2__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 (1080) hide show
  1. {bpsai_pair-2.35.0/bpsai_pair.egg-info → bpsai_pair-2.35.2}/PKG-INFO +15 -2
  2. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/README.md +13 -1
  3. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/benchmarks/matrix/__init__.py +6 -0
  4. bpsai_pair-2.35.2/bpsai_pair/benchmarks/matrix/fixtures/bugfix/bf-001.json +19 -0
  5. bpsai_pair-2.35.2/bpsai_pair/benchmarks/matrix/fixtures/bugfix/bf-002.json +19 -0
  6. bpsai_pair-2.35.2/bpsai_pair/benchmarks/matrix/fixtures/chore/ch-001.json +19 -0
  7. bpsai_pair-2.35.2/bpsai_pair/benchmarks/matrix/fixtures/chore/ch-002.json +19 -0
  8. {bpsai_pair-2.35.0/bpsai_pair/benchmarks/matrix/fixtures → bpsai_pair-2.35.2/bpsai_pair/benchmarks/matrix/fixtures/extended}/plan-draft/pd-001.json +1 -1
  9. {bpsai_pair-2.35.0/bpsai_pair/benchmarks/matrix/fixtures → bpsai_pair-2.35.2/bpsai_pair/benchmarks/matrix/fixtures/extended}/plan-draft/pd-002.json +1 -1
  10. {bpsai_pair-2.35.0/bpsai_pair/benchmarks/matrix/fixtures → bpsai_pair-2.35.2/bpsai_pair/benchmarks/matrix/fixtures/extended}/plan-draft/pd-003.json +1 -1
  11. {bpsai_pair-2.35.0/bpsai_pair/benchmarks/matrix/fixtures → bpsai_pair-2.35.2/bpsai_pair/benchmarks/matrix/fixtures/extended}/security-audit/sa-001.json +1 -1
  12. {bpsai_pair-2.35.0/bpsai_pair/benchmarks/matrix/fixtures → bpsai_pair-2.35.2/bpsai_pair/benchmarks/matrix/fixtures/extended}/security-audit/sa-002.json +1 -1
  13. {bpsai_pair-2.35.0/bpsai_pair/benchmarks/matrix/fixtures/implement-with-tests → bpsai_pair-2.35.2/bpsai_pair/benchmarks/matrix/fixtures/feature}/iwt-001.json +1 -1
  14. {bpsai_pair-2.35.0/bpsai_pair/benchmarks/matrix/fixtures/implement-with-tests → bpsai_pair-2.35.2/bpsai_pair/benchmarks/matrix/fixtures/feature}/iwt-002.json +1 -1
  15. {bpsai_pair-2.35.0/bpsai_pair/benchmarks/matrix/fixtures/implement-with-tests → bpsai_pair-2.35.2/bpsai_pair/benchmarks/matrix/fixtures/feature}/iwt-003.json +1 -1
  16. bpsai_pair-2.35.2/bpsai_pair/benchmarks/matrix/fixtures/refactor/rf-001.json +19 -0
  17. bpsai_pair-2.35.2/bpsai_pair/benchmarks/matrix/fixtures/refactor/rf-002.json +19 -0
  18. {bpsai_pair-2.35.0/bpsai_pair/benchmarks/matrix/fixtures/code-review → bpsai_pair-2.35.2/bpsai_pair/benchmarks/matrix/fixtures/review}/cr-001.json +2 -2
  19. {bpsai_pair-2.35.0/bpsai_pair/benchmarks/matrix/fixtures/code-review → bpsai_pair-2.35.2/bpsai_pair/benchmarks/matrix/fixtures/review}/cr-002.json +2 -2
  20. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/benchmarks/matrix/task_set.py +65 -16
  21. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/artifact_ownership.py +14 -0
  22. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/engage.py +5 -2
  23. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/engage_branch_multi.py +26 -23
  24. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/engage_executor.py +47 -8
  25. bpsai_pair-2.35.2/bpsai_pair/commands/engage_graph_build.py +42 -0
  26. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/engage_pause_resume.py +1 -0
  27. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/engage_pr.py +21 -0
  28. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/engage_result.py +14 -1
  29. bpsai_pair-2.35.2/bpsai_pair/commands/engage_sibling_setup.py +133 -0
  30. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/init_repo.py +31 -2
  31. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/upgrade.py +49 -13
  32. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/upgrade_execute.py +14 -0
  33. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/upgrade_helpers.py +9 -0
  34. bpsai_pair-2.35.2/bpsai_pair/core/claude_paths.py +46 -0
  35. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/data/cookiecutter-paircoder/{{cookiecutter.project_slug}}/.claude/agents/divona.md +5 -1
  36. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/data/cookiecutter-paircoder/{{cookiecutter.project_slug}}/.claude/skills/managing-task-lifecycle/reference/all-cli-commands.md +3 -3
  37. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/data/cookiecutter-paircoder/{{cookiecutter.project_slug}}/scripts/bootstrap-remote.sh +1 -1
  38. bpsai_pair-2.35.2/bpsai_pair/data/seeds/manifest.json +11 -0
  39. bpsai_pair-2.35.2/bpsai_pair/data/seeds/seed-01-verification-is-yours.md +24 -0
  40. bpsai_pair-2.35.2/bpsai_pair/data/seeds/seed-02-shared-checkouts-belong-to-runs.md +25 -0
  41. bpsai_pair-2.35.2/bpsai_pair/data/seeds/seed-03-dispatch-dont-implement.md +25 -0
  42. bpsai_pair-2.35.2/bpsai_pair/data/seeds/seed-04-fail-closed-audited-bypass.md +23 -0
  43. bpsai_pair-2.35.2/bpsai_pair/data/seeds/seed-05-no-deferral-at-agent-velocity.md +25 -0
  44. bpsai_pair-2.35.2/bpsai_pair/data/seeds/seed-06-repo-reality-beats-templates.md +23 -0
  45. bpsai_pair-2.35.2/bpsai_pair/data/seeds/seed-07-bounded-waits-only.md +23 -0
  46. bpsai_pair-2.35.2/bpsai_pair/data/seeds/seed-08-stop-the-tail.md +23 -0
  47. bpsai_pair-2.35.2/bpsai_pair/data/seeds/seed-09-delegate-loops-probe-limits.md +35 -0
  48. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/feedback/benchmark_seed.py +2 -1
  49. bpsai_pair-2.35.2/bpsai_pair/feedback/task_type_aliases.py +26 -0
  50. bpsai_pair-2.35.2/bpsai_pair/gitops/__init__.py +42 -0
  51. bpsai_pair-2.35.2/bpsai_pair/gitops/failure_rules.py +136 -0
  52. bpsai_pair-2.35.2/bpsai_pair/gitops/failure_types.py +132 -0
  53. bpsai_pair-2.35.2/bpsai_pair/gitops/failures.py +237 -0
  54. bpsai_pair-2.35.2/bpsai_pair/gitops/retry.py +171 -0
  55. bpsai_pair-2.35.2/bpsai_pair/orchestration/commit_halt.py +97 -0
  56. bpsai_pair-2.35.2/bpsai_pair/orchestration/commit_landing.py +213 -0
  57. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/headless_dispatch.py +36 -7
  58. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/headless_runner.py +24 -3
  59. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/sibling_branch.py +59 -35
  60. bpsai_pair-2.35.2/bpsai_pair/orchestration/sibling_branch_verify.py +91 -0
  61. bpsai_pair-2.35.2/bpsai_pair/orchestration/sibling_fetch.py +248 -0
  62. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/sprint_commit.py +169 -74
  63. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/sprint_executor.py +28 -0
  64. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/sprint_executor_outcome.py +11 -2
  65. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/sprint_models.py +5 -0
  66. bpsai_pair-2.35.2/bpsai_pair/seeds/__init__.py +1 -0
  67. bpsai_pair-2.35.2/bpsai_pair/seeds/manifest.py +64 -0
  68. bpsai_pair-2.35.2/bpsai_pair/seeds/safety.py +82 -0
  69. bpsai_pair-2.35.2/bpsai_pair/seeds/writer.py +238 -0
  70. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/telemetry/cache_health.py +4 -4
  71. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/telemetry/parser.py +4 -3
  72. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2/bpsai_pair.egg-info}/PKG-INFO +15 -2
  73. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair.egg-info/SOURCES.txt +45 -12
  74. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair.egg-info/requires.txt +1 -0
  75. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/pyproject.toml +8 -1
  76. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/tests/test_feature_gating.py +1 -0
  77. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/LICENSE +0 -0
  78. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/MANIFEST.in +0 -0
  79. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/__init__.py +0 -0
  80. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/__main__.py +0 -0
  81. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/agent_archetypes.py +0 -0
  82. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/benchmarks/__init__.py +0 -0
  83. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/benchmarks/matrix/checks.py +0 -0
  84. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/benchmarks/matrix/dispatch.py +0 -0
  85. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/benchmarks/matrix/engine.py +0 -0
  86. {bpsai_pair-2.35.0/bpsai_pair/benchmarks/matrix/fixtures → bpsai_pair-2.35.2/bpsai_pair/benchmarks/matrix/fixtures/extended}/content-draft/cd-001.json +0 -0
  87. {bpsai_pair-2.35.0/bpsai_pair/benchmarks/matrix/fixtures → bpsai_pair-2.35.2/bpsai_pair/benchmarks/matrix/fixtures/extended}/content-draft/cd-002.json +0 -0
  88. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/benchmarks/matrix/io.py +0 -0
  89. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/benchmarks/matrix/models.py +0 -0
  90. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/benchmarks/matrix/schema.py +0 -0
  91. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/benchmarks/matrix/scorer.py +0 -0
  92. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/benchmarks/reports.py +0 -0
  93. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/benchmarks/runner.py +0 -0
  94. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/benchmarks/validation.py +0 -0
  95. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/cli.py +0 -0
  96. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/cli_registration.py +0 -0
  97. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/cli_startup.py +0 -0
  98. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/__init__.py +0 -0
  99. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/advisory.py +0 -0
  100. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/arch.py +0 -0
  101. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/arch_display.py +0 -0
  102. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/arch_handler_length.py +0 -0
  103. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/arch_lint_commands.py +0 -0
  104. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/arch_provenance.py +0 -0
  105. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/arch_wiring.py +0 -0
  106. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/audit.py +0 -0
  107. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/benchmark.py +0 -0
  108. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/benchmark_cli_helpers.py +0 -0
  109. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/benchmark_matrix_helpers.py +0 -0
  110. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/budget.py +0 -0
  111. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/budget_programmatic.py +0 -0
  112. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/cache.py +0 -0
  113. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/calibration.py +0 -0
  114. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/calibration_helpers.py +0 -0
  115. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/capabilities_merge.py +0 -0
  116. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/claude_md_merge.py +0 -0
  117. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/compaction_commands.py +0 -0
  118. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/config.py +0 -0
  119. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/config_cmd.py +0 -0
  120. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/containment_checkpoint.py +0 -0
  121. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/containment_commands.py +0 -0
  122. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/containment_session.py +0 -0
  123. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/context_commands.py +0 -0
  124. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/core.py +0 -0
  125. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/doctor.py +0 -0
  126. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/doctor_checks.py +0 -0
  127. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/enforce.py +0 -0
  128. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/enforce_containment.py +0 -0
  129. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/enforce_state_edit.py +0 -0
  130. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/enforce_task_edit.py +0 -0
  131. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/engage_base.py +0 -0
  132. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/engage_base_cache.py +0 -0
  133. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/engage_branch.py +0 -0
  134. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/engage_checkout_restore.py +0 -0
  135. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/engage_cross_base.py +0 -0
  136. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/engage_cross_module.py +0 -0
  137. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/engage_dry_run.py +0 -0
  138. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/engage_entry.py +0 -0
  139. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/engage_feasibility_gate.py +0 -0
  140. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/engage_guard_checks.py +0 -0
  141. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/engage_guards.py +0 -0
  142. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/engage_navigator.py +0 -0
  143. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/engage_p2_surface.py +0 -0
  144. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/engage_plan_id.py +0 -0
  145. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/engage_pr_body_cap.py +0 -0
  146. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/engage_pr_multi.py +0 -0
  147. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/engage_pre_dispatch_boundary.py +0 -0
  148. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/engage_preflight.py +0 -0
  149. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/engage_qa_multi.py +0 -0
  150. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/engage_resume.py +0 -0
  151. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/engage_resume_integrity.py +0 -0
  152. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/engage_run_context.py +0 -0
  153. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/engage_security.py +0 -0
  154. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/engage_sweep.py +0 -0
  155. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/engage_target_repo.py +0 -0
  156. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/engage_worktree.py +0 -0
  157. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/engage_worktree_guards.py +0 -0
  158. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/feedback.py +0 -0
  159. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/feedback_helpers.py +0 -0
  160. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/fleet_audit.py +0 -0
  161. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/fleet_check.py +0 -0
  162. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/fleet_upgrade_result.py +0 -0
  163. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/fleet_upgrade_transaction.py +0 -0
  164. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/fleet_workflow_audit.py +0 -0
  165. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/gitignore.py +0 -0
  166. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/init_commands.py +0 -0
  167. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/init_feature.py +0 -0
  168. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/license.py +0 -0
  169. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/license_display.py +0 -0
  170. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/license_helpers.py +0 -0
  171. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/mcp.py +0 -0
  172. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/metrics/__init__.py +0 -0
  173. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/metrics/analysis_commands.py +0 -0
  174. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/metrics/burndown_command.py +0 -0
  175. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/metrics/helpers.py +0 -0
  176. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/metrics/summary_commands.py +0 -0
  177. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/orchestrate.py +0 -0
  178. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/orchestrate_evaluate.py +0 -0
  179. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/pm.py +0 -0
  180. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/pm_crud.py +0 -0
  181. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/pm_diagnostics.py +0 -0
  182. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/pm_helpers.py +0 -0
  183. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/pm_hierarchy_cmd.py +0 -0
  184. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/pm_migrate.py +0 -0
  185. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/pm_sprint.py +0 -0
  186. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/preflight.py +0 -0
  187. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/preset.py +0 -0
  188. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/prime_learn.py +0 -0
  189. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/provider_command.py +0 -0
  190. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/provider_presets.py +0 -0
  191. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/qc_commands.py +0 -0
  192. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/query.py +0 -0
  193. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/review.py +0 -0
  194. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/review_sprint_cmd.py +0 -0
  195. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/security.py +0 -0
  196. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/session.py +0 -0
  197. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/session_check.py +0 -0
  198. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/session_status.py +0 -0
  199. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/setup_commands.py +0 -0
  200. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/state.py +0 -0
  201. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/state_anchors.py +0 -0
  202. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/state_fence.py +0 -0
  203. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/state_validation.py +0 -0
  204. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/status_derive.py +0 -0
  205. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/status_handoff.py +0 -0
  206. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/status_render.py +0 -0
  207. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/subscription.py +0 -0
  208. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/support.py +0 -0
  209. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/sweep_command.py +0 -0
  210. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/sweep_helpers.py +0 -0
  211. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/system.py +0 -0
  212. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/telemetry.py +0 -0
  213. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/telemetry_aggregate_cmd.py +0 -0
  214. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/telemetry_archive_cmd.py +0 -0
  215. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/telemetry_display.py +0 -0
  216. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/telemetry_export.py +0 -0
  217. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/telemetry_helpers.py +0 -0
  218. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/telemetry_log_failure.py +0 -0
  219. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/telemetry_log_lifecycle.py +0 -0
  220. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/timer.py +0 -0
  221. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/upgrade_agent_removal.py +0 -0
  222. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/upgrade_config_write.py +0 -0
  223. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/upgrade_containment.py +0 -0
  224. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/upgrade_display.py +0 -0
  225. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/upgrade_fleet_sync.py +0 -0
  226. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/upgrade_prompt.py +0 -0
  227. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/upgrade_skill_removal.py +0 -0
  228. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/upgrade_source_repo.py +0 -0
  229. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/upgrade_state_fence.py +0 -0
  230. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/validate_runner.py +0 -0
  231. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/validation_commands.py +0 -0
  232. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/version_consistency.py +0 -0
  233. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/wizard.py +0 -0
  234. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/workflow_md_generator.py +0 -0
  235. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/workflow_md_plan.py +0 -0
  236. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/workspace.py +0 -0
  237. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/workspace_helpers.py +0 -0
  238. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/workspace_impact.py +0 -0
  239. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/workspace_index_cmd.py +0 -0
  240. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/workspace_init_helpers.py +0 -0
  241. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/workspace_init_project.py +0 -0
  242. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/workspace_repos.py +0 -0
  243. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/workspace_setup_permissions.py +0 -0
  244. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/commands/workspace_validate.py +0 -0
  245. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/compaction.py +0 -0
  246. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/compaction_events.py +0 -0
  247. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/compaction_helpers.py +0 -0
  248. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/compaction_models.py +0 -0
  249. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/compaction_recovery.py +0 -0
  250. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/completion/__init__.py +0 -0
  251. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/completion/ac_claims.py +0 -0
  252. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/completion/ac_semantics.py +0 -0
  253. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/completion/ac_substance_check.py +0 -0
  254. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/completion/ac_substance_gate.py +0 -0
  255. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/completion/pipeline.py +0 -0
  256. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/completion/policy.py +0 -0
  257. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/completion/store.py +0 -0
  258. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/context/__init__.py +0 -0
  259. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/context/cache.py +0 -0
  260. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/context/freshness.py +0 -0
  261. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/context/loader.py +0 -0
  262. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/core/__init__.py +0 -0
  263. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/core/arch_headroom.py +0 -0
  264. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/core/arch_prescan.py +0 -0
  265. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/core/budget_heuristic.py +0 -0
  266. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/core/bypass_log.py +0 -0
  267. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/core/cache_paths.py +0 -0
  268. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/core/ci_gate.py +0 -0
  269. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/core/cli_command_tree.py +0 -0
  270. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/core/config.py +0 -0
  271. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/core/config_architecture.py +0 -0
  272. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/core/config_containment.py +0 -0
  273. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/core/config_defaults.py +0 -0
  274. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/core/config_helpers.py +0 -0
  275. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/core/config_loader.py +0 -0
  276. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/core/config_profiles.py +0 -0
  277. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/core/config_templates.py +0 -0
  278. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/core/config_validation.py +0 -0
  279. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/core/config_validator.py +0 -0
  280. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/core/constants.py +0 -0
  281. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/core/deprecation.py +0 -0
  282. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/core/encoding.py +0 -0
  283. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/core/encoding_lint.py +0 -0
  284. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/core/enforcement.py +0 -0
  285. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/core/enforcement_analyzer.py +0 -0
  286. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/core/enforcement_checker.py +0 -0
  287. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/core/enforcement_components.py +0 -0
  288. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/core/enforcement_functions.py +0 -0
  289. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/core/enforcement_hub.py +0 -0
  290. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/core/enforcement_imports.py +0 -0
  291. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/core/enforcement_limits.py +0 -0
  292. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/core/enforcement_models.py +0 -0
  293. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/core/enforcement_split_suggest.py +0 -0
  294. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/core/enforcement_utils.py +0 -0
  295. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/core/engage_ac_sidecar.py +0 -0
  296. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/core/engage_task_start.py +0 -0
  297. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/core/enrichment_helpers.py +0 -0
  298. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/core/enrichment_hooks.py +0 -0
  299. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/core/file_role_detector.py +0 -0
  300. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/core/gate_executor.py +0 -0
  301. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/core/gate_hooks.py +0 -0
  302. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/core/glob_match.py +0 -0
  303. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/core/handler_baseline.py +0 -0
  304. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/core/handler_lint.py +0 -0
  305. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/core/hook_budget.py +0 -0
  306. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/core/hook_budget_programmatic.py +0 -0
  307. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/core/hook_handlers.py +0 -0
  308. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/core/hook_metrics.py +0 -0
  309. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/core/hook_pm.py +0 -0
  310. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/core/hook_routing.py +0 -0
  311. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/core/hook_state.py +0 -0
  312. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/core/hook_trello.py +0 -0
  313. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/core/hook_types.py +0 -0
  314. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/core/hooks.py +0 -0
  315. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/core/line_count_mode.py +0 -0
  316. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/core/line_metrics.py +0 -0
  317. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/core/model_id_lint.py +0 -0
  318. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/core/ops.py +0 -0
  319. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/core/ops_ci.py +0 -0
  320. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/core/ops_context.py +0 -0
  321. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/core/ops_feature.py +0 -0
  322. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/core/ops_git.py +0 -0
  323. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/core/ops_project.py +0 -0
  324. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/core/orchestration_hooks.py +0 -0
  325. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/core/preconditions.py +0 -0
  326. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/core/preferences.py +0 -0
  327. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/core/preset_config.py +0 -0
  328. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/core/preset_definitions.py +0 -0
  329. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/core/presets.py +0 -0
  330. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/core/profile_resolver.py +0 -0
  331. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/core/programmatic_credit_state.py +0 -0
  332. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/core/programmatic_credit_validator.py +0 -0
  333. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/core/provenance_lint.py +0 -0
  334. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/core/randomization_log.py +0 -0
  335. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/core/reachability_ast.py +0 -0
  336. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/core/reachability_lint.py +0 -0
  337. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/core/readonly_commands.py +0 -0
  338. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/core/routing.py +0 -0
  339. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/core/subprocess_lint.py +0 -0
  340. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/core/task_acceptance.py +0 -0
  341. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/core/task_ready.py +0 -0
  342. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/core/task_state.py +0 -0
  343. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/core/utils.py +0 -0
  344. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/data/__init__.py +0 -0
  345. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/data/containment_section.md +0 -0
  346. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/data/cookiecutter-paircoder/README.md +0 -0
  347. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/data/cookiecutter-paircoder/cookiecutter.json +0 -0
  348. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/data/cookiecutter-paircoder/{{cookiecutter.project_slug}}/.agentpackignore +0 -0
  349. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/data/cookiecutter-paircoder/{{cookiecutter.project_slug}}/.claude/agent-memory/bellona/MEMORY.md +0 -0
  350. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/data/cookiecutter-paircoder/{{cookiecutter.project_slug}}/.claude/agent-memory/driver/MEMORY.md +0 -0
  351. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/data/cookiecutter-paircoder/{{cookiecutter.project_slug}}/.claude/agent-memory/laverna/MEMORY.md +0 -0
  352. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/data/cookiecutter-paircoder/{{cookiecutter.project_slug}}/.claude/agent-memory/navigator/MEMORY.md +0 -0
  353. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/data/cookiecutter-paircoder/{{cookiecutter.project_slug}}/.claude/agent-memory/nayru/MEMORY.md +0 -0
  354. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/data/cookiecutter-paircoder/{{cookiecutter.project_slug}}/.claude/agents/bellona.md +0 -0
  355. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/data/cookiecutter-paircoder/{{cookiecutter.project_slug}}/.claude/agents/driver.md +0 -0
  356. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/data/cookiecutter-paircoder/{{cookiecutter.project_slug}}/.claude/agents/laverna.md +0 -0
  357. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/data/cookiecutter-paircoder/{{cookiecutter.project_slug}}/.claude/agents/navigator.md +0 -0
  358. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/data/cookiecutter-paircoder/{{cookiecutter.project_slug}}/.claude/agents/nayru.md +0 -0
  359. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/data/cookiecutter-paircoder/{{cookiecutter.project_slug}}/.claude/agents/vaivora.md +0 -0
  360. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/data/cookiecutter-paircoder/{{cookiecutter.project_slug}}/.claude/commands/draft-backlog.md +0 -0
  361. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/data/cookiecutter-paircoder/{{cookiecutter.project_slug}}/.claude/commands/make-it-so.md +0 -0
  362. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/data/cookiecutter-paircoder/{{cookiecutter.project_slug}}/.claude/commands/pc-audit-sibling.md +0 -0
  363. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/data/cookiecutter-paircoder/{{cookiecutter.project_slug}}/.claude/commands/pc-plan.md +0 -0
  364. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/data/cookiecutter-paircoder/{{cookiecutter.project_slug}}/.claude/commands/run-qc.md +0 -0
  365. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/data/cookiecutter-paircoder/{{cookiecutter.project_slug}}/.claude/commands/start-task.md +0 -0
  366. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/data/cookiecutter-paircoder/{{cookiecutter.project_slug}}/.claude/commands/update-skills.md +0 -0
  367. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/data/cookiecutter-paircoder/{{cookiecutter.project_slug}}/.claude/rules/architecture.md +0 -0
  368. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/data/cookiecutter-paircoder/{{cookiecutter.project_slug}}/.claude/settings.json +0 -0
  369. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/data/cookiecutter-paircoder/{{cookiecutter.project_slug}}/.claude/skills/architecting-modules/SKILL.md +0 -0
  370. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/data/cookiecutter-paircoder/{{cookiecutter.project_slug}}/.claude/skills/auditing-sibling-projects/SKILL.md +0 -0
  371. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/data/cookiecutter-paircoder/{{cookiecutter.project_slug}}/.claude/skills/creating-skills/SKILL.md +0 -0
  372. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/data/cookiecutter-paircoder/{{cookiecutter.project_slug}}/.claude/skills/designing-and-implementing/SKILL.md +0 -0
  373. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/data/cookiecutter-paircoder/{{cookiecutter.project_slug}}/.claude/skills/finishing-branches/SKILL.md +0 -0
  374. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/data/cookiecutter-paircoder/{{cookiecutter.project_slug}}/.claude/skills/implementing-with-tdd/SKILL.md +0 -0
  375. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/data/cookiecutter-paircoder/{{cookiecutter.project_slug}}/.claude/skills/managing-task-lifecycle/SKILL.md +0 -0
  376. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/data/cookiecutter-paircoder/{{cookiecutter.project_slug}}/.claude/skills/managing-task-lifecycle/reference/bps-trello-conventions.md +0 -0
  377. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/data/cookiecutter-paircoder/{{cookiecutter.project_slug}}/.claude/skills/managing-task-lifecycle/scripts/check_completion.py +0 -0
  378. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/data/cookiecutter-paircoder/{{cookiecutter.project_slug}}/.claude/skills/managing-task-lifecycle/scripts/validate_task_status.py +0 -0
  379. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/data/cookiecutter-paircoder/{{cookiecutter.project_slug}}/.claude/skills/planning-with-pm/SKILL.md +0 -0
  380. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/data/cookiecutter-paircoder/{{cookiecutter.project_slug}}/.claude/skills/reviewing-code/SKILL.md +0 -0
  381. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/data/cookiecutter-paircoder/{{cookiecutter.project_slug}}/.claude/skills/running-qc/SKILL.md +0 -0
  382. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/data/cookiecutter-paircoder/{{cookiecutter.project_slug}}/.editorconfig +0 -0
  383. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/data/cookiecutter-paircoder/{{cookiecutter.project_slug}}/.gitignore +0 -0
  384. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/data/cookiecutter-paircoder/{{cookiecutter.project_slug}}/.paircoder/.gitignore +0 -0
  385. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/data/cookiecutter-paircoder/{{cookiecutter.project_slug}}/.paircoder/capabilities.yaml +0 -0
  386. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/data/cookiecutter-paircoder/{{cookiecutter.project_slug}}/.paircoder/context/project.md +0 -0
  387. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/data/cookiecutter-paircoder/{{cookiecutter.project_slug}}/.paircoder/context/state.md +0 -0
  388. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/data/cookiecutter-paircoder/{{cookiecutter.project_slug}}/.paircoder/context/workflow.md +0 -0
  389. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/data/cookiecutter-paircoder/{{cookiecutter.project_slug}}/.paircoder/feedback/.gitkeep +0 -0
  390. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/data/cookiecutter-paircoder/{{cookiecutter.project_slug}}/.paircoder/history/.gitkeep +0 -0
  391. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/data/cookiecutter-paircoder/{{cookiecutter.project_slug}}/.paircoder/plans/.gitkeep +0 -0
  392. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/data/cookiecutter-paircoder/{{cookiecutter.project_slug}}/.paircoder/security/allowlist.yaml +0 -0
  393. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/data/cookiecutter-paircoder/{{cookiecutter.project_slug}}/.paircoder/security/sandbox.yaml +0 -0
  394. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/data/cookiecutter-paircoder/{{cookiecutter.project_slug}}/.paircoder/security/secret-allowlist.yaml +0 -0
  395. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/data/cookiecutter-paircoder/{{cookiecutter.project_slug}}/.paircoder/tasks/.gitkeep +0 -0
  396. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/data/cookiecutter-paircoder/{{cookiecutter.project_slug}}/.paircoder/telemetry/.gitkeep +0 -0
  397. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/data/cookiecutter-paircoder/{{cookiecutter.project_slug}}/CLAUDE.md +0 -0
  398. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/data/cookiecutter-paircoder/{{cookiecutter.project_slug}}/scripts/on_permission_denied.sh +0 -0
  399. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/data/hooks/on_permission_denied.sh +0 -0
  400. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/data/workflows/bps-full.yaml +0 -0
  401. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/data/workflows/simple.yaml +0 -0
  402. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/engage/__init__.py +0 -0
  403. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/engage/a2a_push.py +0 -0
  404. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/engage/boundary_clean.py +0 -0
  405. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/engage/constants.py +0 -0
  406. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/engage/containment_audit.py +0 -0
  407. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/feedback/__init__.py +0 -0
  408. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/feedback/_batch_stats_helpers.py +0 -0
  409. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/feedback/anomaly.py +0 -0
  410. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/feedback/calibration.py +0 -0
  411. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/feedback/calibration_helpers.py +0 -0
  412. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/feedback/calibration_refresh.py +0 -0
  413. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/feedback/classifier.py +0 -0
  414. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/feedback/context_load.py +0 -0
  415. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/feedback/drift.py +0 -0
  416. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/feedback/feasibility.py +0 -0
  417. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/feedback/fleet.py +0 -0
  418. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/feedback/overhead.py +0 -0
  419. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/feedback/prior_decay.py +0 -0
  420. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/feedback/query_builder.py +0 -0
  421. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/feedback/routing_report.py +0 -0
  422. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/feedback/schema.py +0 -0
  423. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/feedback/scoring.py +0 -0
  424. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/feedback/seam_heat.py +0 -0
  425. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/feedback/service.py +0 -0
  426. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/feedback/stack_detect.py +0 -0
  427. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/feedback/state_query.py +0 -0
  428. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/feedback/stats.py +0 -0
  429. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/feedback/workspace_query.py +0 -0
  430. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/github/__init__.py +0 -0
  431. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/github/client.py +0 -0
  432. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/github/client_prs.py +0 -0
  433. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/github/commands.py +0 -0
  434. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/github/merge_strategy.py +0 -0
  435. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/github/pr.py +0 -0
  436. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/github/pr_manager.py +0 -0
  437. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/github/pr_models.py +0 -0
  438. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/github/pr_workflow.py +0 -0
  439. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/harness/__init__.py +0 -0
  440. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/harness/claude_code.py +0 -0
  441. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/harness/dispatch_adapter.py +0 -0
  442. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/harness/env_overrides.py +0 -0
  443. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/harness/provider_loader.py +0 -0
  444. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/init_bundled_cli.py +0 -0
  445. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/integrations/__init__.py +0 -0
  446. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/integrations/time_tracking.py +0 -0
  447. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/integrations/time_tracking_cache.py +0 -0
  448. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/integrations/time_tracking_providers.py +0 -0
  449. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/integrations/toggl.py +0 -0
  450. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/intelligence/__init__.py +0 -0
  451. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/intelligence/config.py +0 -0
  452. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/intelligence/gap_mapper.py +0 -0
  453. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/intelligence/gate_mapper.py +0 -0
  454. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/intelligence/license_gate.py +0 -0
  455. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/intelligence/mapper_base.py +0 -0
  456. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/intelligence/pipeline.py +0 -0
  457. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/intelligence/recommender.py +0 -0
  458. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/intelligence/recommender_models.py +0 -0
  459. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/intelligence/recommender_weights.py +0 -0
  460. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/intelligence/scorer_mapper.py +0 -0
  461. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/intelligence/session_mapper.py +0 -0
  462. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/intelligence/signal_model.py +0 -0
  463. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/intelligence/task_hook.py +0 -0
  464. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/intelligence/telemetry_mapper.py +0 -0
  465. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/intent_gate/__init__.py +0 -0
  466. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/intent_gate/approval.py +0 -0
  467. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/intent_gate/approval_gate.py +0 -0
  468. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/intent_gate/capability_gate.py +0 -0
  469. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/intent_gate/classifier.py +0 -0
  470. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/intent_gate/command_router.py +0 -0
  471. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/intent_gate/dispatch_guard.py +0 -0
  472. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/intent_gate/frustration.py +0 -0
  473. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/intent_gate/response_injection.py +0 -0
  474. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/intent_gate/schema.py +0 -0
  475. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/json_envelope.py +0 -0
  476. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/licensing/__init__.py +0 -0
  477. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/licensing/activation.py +0 -0
  478. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/licensing/binding.py +0 -0
  479. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/licensing/cache_signing.py +0 -0
  480. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/licensing/core.py +0 -0
  481. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/licensing/keys.py +0 -0
  482. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/licensing/machine.py +0 -0
  483. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/licensing/online.py +0 -0
  484. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/licensing/paths.py +0 -0
  485. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/licensing/public_key.pem +0 -0
  486. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/licensing/schema.py +0 -0
  487. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/licensing/security.py +0 -0
  488. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/licensing/snapshot_bridge.py +0 -0
  489. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/licensing/startup.py +0 -0
  490. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/licensing/tier_change.py +0 -0
  491. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/licensing/unchecked.py +0 -0
  492. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/licensing/validation_cache.py +0 -0
  493. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/mcp/__init__.py +0 -0
  494. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/mcp/server.py +0 -0
  495. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/mcp/server_inspect.py +0 -0
  496. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/mcp/tools/__init__.py +0 -0
  497. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/mcp/tools/channels.py +0 -0
  498. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/mcp/tools/completion_gates.py +0 -0
  499. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/mcp/tools/context.py +0 -0
  500. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/mcp/tools/metrics.py +0 -0
  501. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/mcp/tools/orchestration.py +0 -0
  502. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/mcp/tools/planning.py +0 -0
  503. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/mcp/tools/support.py +0 -0
  504. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/mcp/tools/tasks.py +0 -0
  505. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/mcp/tools/trello.py +0 -0
  506. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/memory_retention.py +0 -0
  507. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/metrics/__init__.py +0 -0
  508. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/metrics/accuracy.py +0 -0
  509. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/metrics/budget.py +0 -0
  510. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/metrics/burndown.py +0 -0
  511. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/metrics/calibration_pin.py +0 -0
  512. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/metrics/collector.py +0 -0
  513. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/metrics/collector_store.py +0 -0
  514. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/metrics/estimation.py +0 -0
  515. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/metrics/hours_comparison.py +0 -0
  516. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/metrics/reports.py +0 -0
  517. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/metrics/token_estimator.py +0 -0
  518. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/metrics/token_feedback.py +0 -0
  519. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/metrics/velocity.py +0 -0
  520. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/migrate.py +0 -0
  521. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/model_ids.py +0 -0
  522. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/__init__.py +0 -0
  523. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/_exploration.py +0 -0
  524. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/_failure_escalation.py +0 -0
  525. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/_model_band.py +0 -0
  526. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/_override_warning.py +0 -0
  527. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/ac_propagation.py +0 -0
  528. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/added_file_placeholder_scan.py +0 -0
  529. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/agent_names.py +0 -0
  530. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/agent_selector.py +0 -0
  531. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/autonomous.py +0 -0
  532. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/autonomous_models.py +0 -0
  533. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/autonomous_steps.py +0 -0
  534. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/backlog_header.py +0 -0
  535. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/backlog_materializer.py +0 -0
  536. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/backlog_parser.py +0 -0
  537. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/backlog_validation.py +0 -0
  538. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/backlog_yaml.py +0 -0
  539. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/baseline_io.py +0 -0
  540. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/blast_radius.py +0 -0
  541. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/blocked_completion.py +0 -0
  542. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/branch_review.py +0 -0
  543. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/checkin_diagnostic.py +0 -0
  544. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/checkin_kill.py +0 -0
  545. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/circuit_breaker_recovery.py +0 -0
  546. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/commit_gitignore_prune.py +0 -0
  547. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/commit_scope.py +0 -0
  548. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/commit_verification.py +0 -0
  549. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/completion_guard.py +0 -0
  550. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/dependency_resolver.py +0 -0
  551. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/engage_push.py +0 -0
  552. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/engage_push_scan.py +0 -0
  553. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/engage_review.py +0 -0
  554. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/engage_run_state.py +0 -0
  555. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/failure_taxonomy.py +0 -0
  556. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/failure_taxonomy_backfill.py +0 -0
  557. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/final_message_artifact.py +0 -0
  558. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/finding_extraction.py +0 -0
  559. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/finding_records.py +0 -0
  560. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/findings_loop.py +0 -0
  561. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/freshness_gate.py +0 -0
  562. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/handoff.py +0 -0
  563. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/handoff_consumer.py +0 -0
  564. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/handoff_formatting.py +0 -0
  565. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/handoff_retention.py +0 -0
  566. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/headless.py +0 -0
  567. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/headless_runner_helpers.py +0 -0
  568. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/headless_session_lifecycle.py +0 -0
  569. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/heartbeat.py +0 -0
  570. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/impact_dedup.py +0 -0
  571. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/invoker.py +0 -0
  572. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/invoker_helpers.py +0 -0
  573. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/issue_refs.py +0 -0
  574. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/manager.py +0 -0
  575. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/model_doctrine.py +0 -0
  576. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/model_routing.py +0 -0
  577. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/nayru_deterministic.py +0 -0
  578. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/nayru_pregates.py +0 -0
  579. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/orchestrator.py +0 -0
  580. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/orchestrator_helpers.py +0 -0
  581. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/orchestrator_models.py +0 -0
  582. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/output_verifier.py +0 -0
  583. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/output_verifier_git_args.py +0 -0
  584. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/output_verifier_signals.py +0 -0
  585. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/package_builder.py +0 -0
  586. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/plan_graph.py +0 -0
  587. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/plan_graph_models.py +0 -0
  588. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/plan_vaivora.py +0 -0
  589. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/plan_vaivora_llm.py +0 -0
  590. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/planner.py +0 -0
  591. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/planner_context.py +0 -0
  592. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/planner_parsing.py +0 -0
  593. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/porcelain_status.py +0 -0
  594. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/portfolio_status.py +0 -0
  595. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/pr_review.py +0 -0
  596. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/pre_dispatch_check.py +0 -0
  597. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/pre_task_sha.py +0 -0
  598. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/reconciliation.py +0 -0
  599. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/residue_sideref.py +0 -0
  600. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/review_checks.py +0 -0
  601. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/review_common.py +0 -0
  602. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/review_dispatch.py +0 -0
  603. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/review_models.py +0 -0
  604. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/review_output.py +0 -0
  605. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/review_severity.py +0 -0
  606. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/review_sprint.py +0 -0
  607. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/review_sprint_artifact.py +0 -0
  608. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/review_sprint_gate.py +0 -0
  609. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/review_worktree.py +0 -0
  610. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/reviewer.py +0 -0
  611. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/run_exit_gate.py +0 -0
  612. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/seam_delta.py +0 -0
  613. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/security.py +0 -0
  614. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/security_models.py +0 -0
  615. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/security_parser.py +0 -0
  616. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/selector_scoring.py +0 -0
  617. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/serializer.py +0 -0
  618. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/sprint_block_handler.py +0 -0
  619. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/sprint_executor_baseline.py +0 -0
  620. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/sprint_executor_hooks.py +0 -0
  621. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/sprint_lifecycle_args.py +0 -0
  622. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/sprint_lifecycle_hooks.py +0 -0
  623. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/sprint_residue_defer.py +0 -0
  624. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/sprint_residue_handler.py +0 -0
  625. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/sprint_review_helpers.py +0 -0
  626. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/sprint_signals.py +0 -0
  627. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/sprint_skipped_handler.py +0 -0
  628. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/sprint_summary.py +0 -0
  629. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/state_commit.py +0 -0
  630. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/subagent_context.py +0 -0
  631. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/target_repo_resolution.py +0 -0
  632. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/targeted_tests.py +0 -0
  633. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/task_md_runtime.py +0 -0
  634. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/task_review.py +0 -0
  635. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/task_review_command.py +0 -0
  636. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/task_timeout.py +0 -0
  637. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/terminal_message_classifier.py +0 -0
  638. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/wiring_review.py +0 -0
  639. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/workflow_guide.py +0 -0
  640. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/planning/__init__.py +0 -0
  641. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/planning/auto_assign.py +0 -0
  642. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/planning/cli_update_cache.py +0 -0
  643. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/planning/commands.py +0 -0
  644. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/planning/completion_helpers.py +0 -0
  645. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/planning/helpers.py +0 -0
  646. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/planning/intelligence_helpers.py +0 -0
  647. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/planning/intent_commands.py +0 -0
  648. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/planning/intent_detection.py +0 -0
  649. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/planning/models.py +0 -0
  650. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/planning/parser.py +0 -0
  651. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/planning/plan_commands.py +0 -0
  652. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/planning/plan_complete_command.py +0 -0
  653. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/planning/plan_crud_commands.py +0 -0
  654. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/planning/plan_ensure_from_backlog.py +0 -0
  655. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/planning/plan_enums.py +0 -0
  656. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/planning/plan_estimation.py +0 -0
  657. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/planning/plan_feasibility.py +0 -0
  658. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/planning/plan_intelligence.py +0 -0
  659. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/planning/plan_legacy_helpers.py +0 -0
  660. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/planning/plan_legacy_sync.py +0 -0
  661. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/planning/plan_model.py +0 -0
  662. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/planning/plan_parser.py +0 -0
  663. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/planning/plan_pm_enrich.py +0 -0
  664. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/planning/plan_pm_hierarchy.py +0 -0
  665. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/planning/plan_pm_sync.py +0 -0
  666. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/planning/plan_query_commands.py +0 -0
  667. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/planning/plan_record_emission.py +0 -0
  668. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/planning/plan_status_commands.py +0 -0
  669. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/planning/plan_task_push.py +0 -0
  670. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/planning/plan_trello_sync.py +0 -0
  671. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/planning/plan_workspace.py +0 -0
  672. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/planning/review_intent.py +0 -0
  673. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/planning/scope_detector.py +0 -0
  674. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/planning/standup.py +0 -0
  675. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/planning/standup_commands.py +0 -0
  676. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/planning/state.py +0 -0
  677. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/planning/status_hooks.py +0 -0
  678. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/planning/status_rendering.py +0 -0
  679. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/planning/task_archive_commands.py +0 -0
  680. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/planning/task_check_commands.py +0 -0
  681. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/planning/task_commands.py +0 -0
  682. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/planning/task_consistency.py +0 -0
  683. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/planning/task_done.py +0 -0
  684. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/planning/task_model.py +0 -0
  685. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/planning/task_parser.py +0 -0
  686. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/planning/task_reconcile.py +0 -0
  687. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/planning/task_update_completion.py +0 -0
  688. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/planning/task_update_enforcement.py +0 -0
  689. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/planning/token_estimate_display.py +0 -0
  690. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/planning/token_estimator.py +0 -0
  691. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/pm/__init__.py +0 -0
  692. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/pm/actions.py +0 -0
  693. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/pm/backlog_mixin.py +0 -0
  694. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/pm/backlog_rollup.py +0 -0
  695. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/pm/backlog_types.py +0 -0
  696. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/pm/compat.py +0 -0
  697. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/pm/completion_cascade.py +0 -0
  698. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/pm/completion_eval.py +0 -0
  699. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/pm/engine.py +0 -0
  700. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/pm/errors.py +0 -0
  701. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/pm/hierarchy.py +0 -0
  702. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/pm/lifecycle.py +0 -0
  703. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/pm/migration.py +0 -0
  704. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/pm/null_provider.py +0 -0
  705. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/pm/orchestration.py +0 -0
  706. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/pm/presets.py +0 -0
  707. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/pm/project_hooks.py +0 -0
  708. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/pm/provider.py +0 -0
  709. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/pm/registry.py +0 -0
  710. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/pm/sprint_lifecycle.py +0 -0
  711. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/pm/status_vocab.py +0 -0
  712. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/pm/sync.py +0 -0
  713. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/pm/types.py +0 -0
  714. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/pm/workflow.py +0 -0
  715. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/pm/workflow_validation.py +0 -0
  716. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/pm_trello/__init__.py +0 -0
  717. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/pm_trello/adapter.py +0 -0
  718. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/pm_trello/backlog_engage.py +0 -0
  719. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/pm_trello/backlog_tree.py +0 -0
  720. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/pm_trello/config.py +0 -0
  721. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/pm_trello/discovery.py +0 -0
  722. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/pm_trello/enrichment.py +0 -0
  723. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/pm_trello/label_resolver.py +0 -0
  724. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/pm_trello/provider.py +0 -0
  725. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/pm_trello/relationship_ops.py +0 -0
  726. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/pm_trello/relationships.py +0 -0
  727. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/pm_trello/sync_ops.py +0 -0
  728. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/prime_learn/__init__.py +0 -0
  729. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/prime_learn/a2a_push.py +0 -0
  730. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/prime_learn/storage.py +0 -0
  731. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/prime_learn/synthesis.py +0 -0
  732. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/qc/__init__.py +0 -0
  733. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/qc/config.py +0 -0
  734. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/qc/executor.py +0 -0
  735. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/qc/fill_validator.py +0 -0
  736. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/qc/gate.py +0 -0
  737. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/qc/loader.py +0 -0
  738. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/qc/models.py +0 -0
  739. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/qc/reporter.py +0 -0
  740. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/qc/results.py +0 -0
  741. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/qc/step_handlers.py +0 -0
  742. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/qc/telemetry_store.py +0 -0
  743. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/qc/templates.py +0 -0
  744. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/qc/timeout_handler.py +0 -0
  745. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/query_skills/__init__.py +0 -0
  746. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/query_skills/a2a_adapter.py +0 -0
  747. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/query_skills/driver_activity.py +0 -0
  748. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/query_skills/qc_trends.py +0 -0
  749. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/query_skills/quality_metrics.py +0 -0
  750. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/query_skills/remote_query_client.py +0 -0
  751. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/query_skills/review_findings.py +0 -0
  752. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/query_skills/schema_validator.py +0 -0
  753. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/query_skills/session_outcomes.py +0 -0
  754. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/query_skills/sprint_status.py +0 -0
  755. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/query_skills/task_state.py +0 -0
  756. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/release/__init__.py +0 -0
  757. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/release/commands.py +0 -0
  758. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/release/docs_drift_commands.py +0 -0
  759. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/release/docs_drift_gate.py +0 -0
  760. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/release/notes_allowlist.py +0 -0
  761. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/release/notes_commands.py +0 -0
  762. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/release/notes_gate.py +0 -0
  763. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/release/notes_markers.py +0 -0
  764. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/release/phase89_gate.py +0 -0
  765. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/release/release_checks.py +0 -0
  766. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/release/template.py +0 -0
  767. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/release/validate.py +0 -0
  768. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/security/Dockerfile.containment +0 -0
  769. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/security/__init__.py +0 -0
  770. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/security/advisory/__init__.py +0 -0
  771. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/security/advisory/manifests.py +0 -0
  772. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/security/advisory/manifests_node.py +0 -0
  773. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/security/advisory/manifests_python.py +0 -0
  774. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/security/advisory/models.py +0 -0
  775. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/security/advisory/package_list.py +0 -0
  776. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/security/advisory/repo_resolve.py +0 -0
  777. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/security/advisory/report_format.py +0 -0
  778. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/security/advisory/scanner.py +0 -0
  779. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/security/advisory/version_match.py +0 -0
  780. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/security/allowlist.py +0 -0
  781. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/security/allowlist_data.py +0 -0
  782. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/security/allowlist_matching.py +0 -0
  783. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/security/checkpoint.py +0 -0
  784. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/security/checkpoint_base.py +0 -0
  785. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/security/checkpoint_containment.py +0 -0
  786. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/security/checkpoint_format.py +0 -0
  787. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/security/checkpoint_models.py +0 -0
  788. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/security/checkpoint_rollback.py +0 -0
  789. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/security/containment.py +0 -0
  790. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/security/containment_check.py +0 -0
  791. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/security/containment_config.py +0 -0
  792. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/security/containment_paths.py +0 -0
  793. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/security/data_classes.py +0 -0
  794. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/security/dep_models.py +0 -0
  795. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/security/dep_scanner.py +0 -0
  796. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/security/dependencies.py +0 -0
  797. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/security/image_manager.py +0 -0
  798. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/security/interactive_runner.py +0 -0
  799. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/security/network.py +0 -0
  800. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/security/network_control.py +0 -0
  801. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/security/review.py +0 -0
  802. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/security/review_agent.py +0 -0
  803. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/security/review_models.py +0 -0
  804. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/security/review_patterns.py +0 -0
  805. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/security/review_scanner.py +0 -0
  806. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/security/runner.py +0 -0
  807. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/security/sandbox.py +0 -0
  808. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/security/secrets.py +0 -0
  809. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/security/secrets_config.py +0 -0
  810. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/security/secrets_format.py +0 -0
  811. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/security/secrets_patterns.py +0 -0
  812. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/security/secrets_scanner.py +0 -0
  813. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/security/secrets_types.py +0 -0
  814. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/session.py +0 -0
  815. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/session_finalize.py +0 -0
  816. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/session_handoff.py +0 -0
  817. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/skills/__init__.py +0 -0
  818. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/skills/classifier.py +0 -0
  819. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/skills/classifier_engine.py +0 -0
  820. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/skills/classifier_models.py +0 -0
  821. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/skills/classifier_report.py +0 -0
  822. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/skills/cli_commands.py +0 -0
  823. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/skills/display_helpers.py +0 -0
  824. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/skills/export_base.py +0 -0
  825. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/skills/exporter.py +0 -0
  826. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/skills/gap_detector.py +0 -0
  827. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/skills/gap_engine.py +0 -0
  828. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/skills/gap_models.py +0 -0
  829. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/skills/gap_persistence.py +0 -0
  830. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/skills/gaps_commands.py +0 -0
  831. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/skills/gaps_query_commands.py +0 -0
  832. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/skills/gate_definitions.py +0 -0
  833. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/skills/gate_evaluator.py +0 -0
  834. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/skills/gates.py +0 -0
  835. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/skills/generator.py +0 -0
  836. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/skills/generator_engine.py +0 -0
  837. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/skills/generator_io.py +0 -0
  838. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/skills/generator_models.py +0 -0
  839. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/skills/installer.py +0 -0
  840. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/skills/installer_sources.py +0 -0
  841. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/skills/intent_matcher.py +0 -0
  842. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/skills/pattern_detector.py +0 -0
  843. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/skills/scorer.py +0 -0
  844. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/skills/scorer_engine.py +0 -0
  845. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/skills/scorer_format.py +0 -0
  846. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/skills/scorer_models.py +0 -0
  847. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/skills/scorer_telemetry.py +0 -0
  848. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/skills/skill_commands.py +0 -0
  849. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/skills/skill_export_cmd.py +0 -0
  850. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/skills/skill_gap_commands.py +0 -0
  851. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/skills/skill_gap_handlers.py +0 -0
  852. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/skills/skill_install_cmd.py +0 -0
  853. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/skills/skill_recommend_cmd.py +0 -0
  854. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/skills/skill_score_cmds.py +0 -0
  855. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/skills/skill_suggester.py +0 -0
  856. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/skills/skill_validate_cmd.py +0 -0
  857. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/skills/subagent_commands.py +0 -0
  858. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/skills/subagent_detector.py +0 -0
  859. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/skills/subagent_parser.py +0 -0
  860. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/skills/subagent_patterns.py +0 -0
  861. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/skills/suggestion.py +0 -0
  862. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/skills/validator.py +0 -0
  863. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/sprint/__init__.py +0 -0
  864. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/sprint/commands.py +0 -0
  865. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/statusline.py +0 -0
  866. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/statusline_install.py +0 -0
  867. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/statusline_state.py +0 -0
  868. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/support/__init__.py +0 -0
  869. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/support/auth.py +0 -0
  870. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/support/client.py +0 -0
  871. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/support/system_info.py +0 -0
  872. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/sweep/__init__.py +0 -0
  873. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/sweep/a2a_integration.py +0 -0
  874. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/sweep/classifier.py +0 -0
  875. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/sweep/diff_parser.py +0 -0
  876. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/sweep/providers/__init__.py +0 -0
  877. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/sweep/providers/_patterns.py +0 -0
  878. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/sweep/providers/generic.py +0 -0
  879. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/sweep/providers/python_provider.py +0 -0
  880. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/tasks/__init__.py +0 -0
  881. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/tasks/archiver.py +0 -0
  882. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/tasks/changelog.py +0 -0
  883. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/tasks/lifecycle.py +0 -0
  884. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/telemetry/__init__.py +0 -0
  885. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/telemetry/_provider.py +0 -0
  886. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/telemetry/_routing_tier.py +0 -0
  887. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/telemetry/_serialization.py +0 -0
  888. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/telemetry/_token_usage.py +0 -0
  889. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/telemetry/_validation.py +0 -0
  890. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/telemetry/aggregate.py +0 -0
  891. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/telemetry/aggregates.py +0 -0
  892. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/telemetry/archive.py +0 -0
  893. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/telemetry/audit.py +0 -0
  894. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/telemetry/auto_archive.py +0 -0
  895. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/telemetry/auto_compaction.py +0 -0
  896. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/telemetry/batch_submit.py +0 -0
  897. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/telemetry/collector.py +0 -0
  898. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/telemetry/collector_helpers.py +0 -0
  899. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/telemetry/collectors.py +0 -0
  900. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/telemetry/compaction.py +0 -0
  901. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/telemetry/config.py +0 -0
  902. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/telemetry/failure_pattern_detector.py +0 -0
  903. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/telemetry/hook_collector.py +0 -0
  904. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/telemetry/hooks_schema.py +0 -0
  905. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/telemetry/migrate.py +0 -0
  906. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/telemetry/privacy.py +0 -0
  907. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/telemetry/queries.py +0 -0
  908. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/telemetry/query_helpers.py +0 -0
  909. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/telemetry/recovery.py +0 -0
  910. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/telemetry/recovery_helpers.py +0 -0
  911. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/telemetry/schema.py +0 -0
  912. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/telemetry/session_outcomes.py +0 -0
  913. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/telemetry/session_store.py +0 -0
  914. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/telemetry/signal_checks.py +0 -0
  915. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/telemetry/signal_emitter.py +0 -0
  916. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/telemetry/signal_thresholds.py +0 -0
  917. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/telemetry/snapshot.py +0 -0
  918. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/telemetry/sqlite_migration.py +0 -0
  919. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/telemetry/sqlite_schema.py +0 -0
  920. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/telemetry/sqlite_telemetry_store.py +0 -0
  921. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/telemetry/store.py +0 -0
  922. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/telemetry/t1_gate.py +0 -0
  923. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/telemetry/task_state_index.py +0 -0
  924. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/telemetry/task_state_log.py +0 -0
  925. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/tokens.py +0 -0
  926. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/trello/__init__.py +0 -0
  927. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/trello/activity.py +0 -0
  928. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/trello/auth.py +0 -0
  929. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/trello/board_commands.py +0 -0
  930. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/trello/board_index.py +0 -0
  931. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/trello/board_setup.py +0 -0
  932. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/trello/checklist_ops.py +0 -0
  933. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/trello/client.py +0 -0
  934. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/trello/commands.py +0 -0
  935. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/trello/connection.py +0 -0
  936. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/trello/custom_fields.py +0 -0
  937. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/trello/errors.py +0 -0
  938. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/trello/field_commands.py +0 -0
  939. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/trello/fields.py +0 -0
  940. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/trello/label_ops.py +0 -0
  941. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/trello/list_resolver.py +0 -0
  942. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/trello/pm_sync_bridge.py +0 -0
  943. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/trello/progress.py +0 -0
  944. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/trello/retry.py +0 -0
  945. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/trello/sync.py +0 -0
  946. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/trello/sync_cards.py +0 -0
  947. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/trello/sync_checklists.py +0 -0
  948. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/trello/sync_commands.py +0 -0
  949. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/trello/sync_fields.py +0 -0
  950. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/trello/sync_helpers.py +0 -0
  951. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/trello/task_card_ops.py +0 -0
  952. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/trello/task_checklist_match.py +0 -0
  953. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/trello/task_commands.py +0 -0
  954. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/trello/task_completion.py +0 -0
  955. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/trello/task_display.py +0 -0
  956. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/trello/task_done_pipeline.py +0 -0
  957. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/trello/task_handoff.py +0 -0
  958. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/trello/task_helpers.py +0 -0
  959. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/trello/task_lifecycle.py +0 -0
  960. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/trello/task_operations.py +0 -0
  961. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/trello/task_pm_routing.py +0 -0
  962. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/trello/task_provider.py +0 -0
  963. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/trello/task_sync.py +0 -0
  964. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/trello/templates.py +0 -0
  965. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/trello/webhook.py +0 -0
  966. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/trello/webhook_auth.py +0 -0
  967. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/trello/webhook_commands.py +0 -0
  968. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/trello/webhook_config.py +0 -0
  969. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/trello/webhook_handlers.py +0 -0
  970. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/trello/webhook_server.py +0 -0
  971. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/utils/__init__.py +0 -0
  972. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/utils/sysproc.py +0 -0
  973. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/wizard/__init__.py +0 -0
  974. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/wizard/api_routes.py +0 -0
  975. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/wizard/app.py +0 -0
  976. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/wizard/architecture_api.py +0 -0
  977. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/wizard/architecture_delta.py +0 -0
  978. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/wizard/architecture_step.py +0 -0
  979. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/wizard/budget_api.py +0 -0
  980. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/wizard/chat_api.py +0 -0
  981. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/wizard/config_builder.py +0 -0
  982. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/wizard/config_merge.py +0 -0
  983. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/wizard/config_parser.py +0 -0
  984. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/wizard/containment_step.py +0 -0
  985. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/wizard/creator.py +0 -0
  986. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/wizard/demo.py +0 -0
  987. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/wizard/editor_api.py +0 -0
  988. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/wizard/enforcement_api.py +0 -0
  989. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/wizard/github_api.py +0 -0
  990. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/wizard/guided_api.py +0 -0
  991. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/wizard/license_installer.py +0 -0
  992. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/wizard/loader.py +0 -0
  993. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/wizard/mcp_api.py +0 -0
  994. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/wizard/page_route_registry.py +0 -0
  995. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/wizard/page_routes.py +0 -0
  996. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/wizard/preset_tables.py +0 -0
  997. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/wizard/pro_page_routes.py +0 -0
  998. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/wizard/project_api.py +0 -0
  999. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/wizard/prompts/__init__.py +0 -0
  1000. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/wizard/prompts/guided_setup.md +0 -0
  1001. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/wizard/review_api.py +0 -0
  1002. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/wizard/routes.py +0 -0
  1003. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/wizard/session.py +0 -0
  1004. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/wizard/state.py +0 -0
  1005. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/wizard/static/chat.js +0 -0
  1006. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/wizard/static/style.css +0 -0
  1007. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/wizard/static/wizard.js +0 -0
  1008. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/wizard/steps.py +0 -0
  1009. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/wizard/templates/architecture.html +0 -0
  1010. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/wizard/templates/base.html +0 -0
  1011. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/wizard/templates/budget.html +0 -0
  1012. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/wizard/templates/chat.html +0 -0
  1013. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/wizard/templates/enforcement.html +0 -0
  1014. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/wizard/templates/github.html +0 -0
  1015. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/wizard/templates/index.html +0 -0
  1016. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/wizard/templates/mcp.html +0 -0
  1017. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/wizard/templates/partials/license_install.html +0 -0
  1018. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/wizard/templates/partials/locked_overlay.html +0 -0
  1019. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/wizard/templates/partials/upgrade_modal.html +0 -0
  1020. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/wizard/templates/project.html +0 -0
  1021. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/wizard/templates/review.html +0 -0
  1022. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/wizard/templates/success.html +0 -0
  1023. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/wizard/templates/trello.html +0 -0
  1024. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/wizard/templates/welcome.html +0 -0
  1025. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/wizard/templates/workflow.html +0 -0
  1026. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/wizard/trello_api.py +0 -0
  1027. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/wizard/update_api.py +0 -0
  1028. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/wizard/workflow_routes.py +0 -0
  1029. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/workspace/__init__.py +0 -0
  1030. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/workspace/agent_spawning.py +0 -0
  1031. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/workspace/agent_teams.py +0 -0
  1032. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/workspace/audit.py +0 -0
  1033. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/workspace/contracts.py +0 -0
  1034. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/workspace/discovery.py +0 -0
  1035. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/workspace/execution_plan.py +0 -0
  1036. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/workspace/git_ops.py +0 -0
  1037. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/workspace/gitignore.py +0 -0
  1038. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/workspace/impact.py +0 -0
  1039. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/workspace/init_project.py +0 -0
  1040. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/workspace/membership.py +0 -0
  1041. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/workspace/orchestrator.py +0 -0
  1042. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/workspace/parser.py +0 -0
  1043. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/workspace/permissions.py +0 -0
  1044. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/workspace/project_md.py +0 -0
  1045. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/workspace/schema.py +0 -0
  1046. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/workspace/sibling_conventions.py +0 -0
  1047. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/workspace/stack_detect.py +0 -0
  1048. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/workspace/task_push.py +0 -0
  1049. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair/workspace/workspace_index.py +0 -0
  1050. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair.egg-info/dependency_links.txt +0 -0
  1051. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair.egg-info/entry_points.txt +0 -0
  1052. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/bpsai_pair.egg-info/top_level.txt +0 -0
  1053. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/setup.cfg +0 -0
  1054. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/tests/test_agent_archetypes.py +0 -0
  1055. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/tests/test_cli_registration.py +0 -0
  1056. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/tests/test_cli_startup_archive_pre_t1.py +0 -0
  1057. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/tests/test_cli_startup_context_freshness_gate.py +0 -0
  1058. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/tests/test_cli_startup_offline_network.py +0 -0
  1059. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/tests/test_cli_startup_readonly_gate.py +0 -0
  1060. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/tests/test_compaction_containment.py +0 -0
  1061. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/tests/test_compaction_coverage.py +0 -0
  1062. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/tests/test_compaction_decomp.py +0 -0
  1063. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/tests/test_compaction_events.py +0 -0
  1064. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/tests/test_conftest_env_isolation.py +0 -0
  1065. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/tests/test_dependency_completeness.py +0 -0
  1066. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/tests/test_init_bundled_cli.py +0 -0
  1067. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/tests/test_main_entrypoint.py +0 -0
  1068. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/tests/test_memory_retention.py +0 -0
  1069. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/tests/test_model_ids.py +0 -0
  1070. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/tests/test_readonly_command_state_e2e.py +0 -0
  1071. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/tests/test_session_finalize.py +0 -0
  1072. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/tests/test_stale_task_lint.py +0 -0
  1073. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/tests/test_statusline.py +0 -0
  1074. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/tests/test_statusline_heartbeat.py +0 -0
  1075. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/tests/test_statusline_install.py +0 -0
  1076. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/tests/test_statusline_integration.py +0 -0
  1077. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/tests/test_statusline_mtime.py +0 -0
  1078. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/tests/test_t42_1_qc_rename.py +0 -0
  1079. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/tests/test_template_signal_hooks.py +0 -0
  1080. {bpsai_pair-2.35.0 → bpsai_pair-2.35.2}/tests/test_website_signal_hooks.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: bpsai-pair
3
- Version: 2.35.0
3
+ Version: 2.35.2
4
4
  Summary: AI-augmented pair programming framework with 270+ CLI commands for planning, orchestration, Trello/GitHub integration, and autonomous workflows
5
5
  Author-email: BPS AI Software <support@paircoder.ai>
6
6
  License-Expression: LicenseRef-Proprietary
@@ -40,6 +40,7 @@ Requires-Dist: anthropic>=0.76.0
40
40
  Requires-Dist: httpx>=0.27
41
41
  Requires-Dist: packaging>=21.0
42
42
  Requires-Dist: click>=8.0
43
+ Requires-Dist: tenacity>=8.0
43
44
  Provides-Extra: test
44
45
  Requires-Dist: pytest>=8.0; extra == "test"
45
46
  Requires-Dist: pytest-cov>=4.0; extra == "test"
@@ -78,7 +79,7 @@ Provides-Extra: integrations
78
79
  Requires-Dist: py-trello>=0.19.0; extra == "integrations"
79
80
  Dynamic: license-file
80
81
 
81
- # PairCoder v2.35.0
82
+ # PairCoder v2.35.2
82
83
 
83
84
  > AI-augmented pair programming framework with 270+ CLI commands
84
85
 
@@ -188,6 +189,18 @@ Check your license: `bpsai-pair license status`
188
189
 
189
190
  > Full release history and detailed notes: [paircoder.ai](https://paircoder.ai).
190
191
 
192
+ **v2.35.2 — Benchmarks join reality, QC agent regains its browser**
193
+ - **Benchmark fixtures speak your task types.** The matrix fixture set is re-keyed to the vocabulary real projects actually use (`feature`, `bugfix`, `chore`, `refactor`, `review`), with legacy strings alias-normalized at ingestion — so `benchmark matrix-run --auto-seed` primes the same calibration cells your production tasks read, instead of cells nothing joins.
194
+ - **Fixtures can't over-demand.** A fail-closed fixture lint rejects any fixture whose grading requirements aren't explicitly stated in its own prompt, ending a class of false cross-model failures.
195
+ - **Divona sees Chrome again.** The QC agent's tool allowlist had excluded the browser tools entirely; it now inherits the full toolset and knows to load deferred browser tools before assuming they're absent.
196
+ - **GitHub Release notes publish again.** The release workflow's notes extraction wrote to the wrong stream in CI, shipping empty release bodies; notes now publish with every release.
197
+
198
+ **v2.35.1 — Telemetry restored, typed git-failure handling, memory seed packs**
199
+ - **Driver telemetry records again under parallel lanes.** v2.35.0's run-root worktree isolation sent driver-task telemetry into the ephemeral worktree, which is destroyed at run teardown — runs recorded zero driver rows. Telemetry now lands in the durable checkout, and calibration reads from the same place.
200
+ - **Git and GitHub failures are classified, not guessed.** A typed failure taxonomy (transient / ambiguous / permanent) drives retries — unrecognized failures are never auto-retried — and error text is scrubbed of tokens and credentials.
201
+ - **`engage` commit and branch seams fail closed.** A staging failure now fails the task instead of silently dropping its diff, branch reuse must be provably safe, cross-repo dispatch fetches a missing base branch on demand, and a halted run can no longer exit 0 and cut a PR.
202
+ - **Runtime memory seed packs.** `init`/`upgrade` seed Claude Code's harness memory with shipped doctrine (provenance-stamped, refresh-on-write, organic memories untouched).
203
+
191
204
  **v2.35.0 — Parallel lanes, governed actions, fleet threat scanning**
192
205
  - **`engage` lanes run in parallel.** Each run's bookkeeping lives in an isolated worktree cut from the declared base, so multiple lanes no longer contend on one shared checkout (`--no-worktree` opt-out available), and a fail-closed count guard refuses dispatch if any task heading fails to parse.
193
206
  - **Enforcement moves to the action seam.** An intent layer routes requests, artifact-chain preconditions replace prose-as-command, ad-hoc bypasses are audited, and tasks marked `privileged` run only through an isolated executor.
@@ -1,4 +1,4 @@
1
- # PairCoder v2.35.0
1
+ # PairCoder v2.35.2
2
2
 
3
3
  > AI-augmented pair programming framework with 270+ CLI commands
4
4
 
@@ -108,6 +108,18 @@ Check your license: `bpsai-pair license status`
108
108
 
109
109
  > Full release history and detailed notes: [paircoder.ai](https://paircoder.ai).
110
110
 
111
+ **v2.35.2 — Benchmarks join reality, QC agent regains its browser**
112
+ - **Benchmark fixtures speak your task types.** The matrix fixture set is re-keyed to the vocabulary real projects actually use (`feature`, `bugfix`, `chore`, `refactor`, `review`), with legacy strings alias-normalized at ingestion — so `benchmark matrix-run --auto-seed` primes the same calibration cells your production tasks read, instead of cells nothing joins.
113
+ - **Fixtures can't over-demand.** A fail-closed fixture lint rejects any fixture whose grading requirements aren't explicitly stated in its own prompt, ending a class of false cross-model failures.
114
+ - **Divona sees Chrome again.** The QC agent's tool allowlist had excluded the browser tools entirely; it now inherits the full toolset and knows to load deferred browser tools before assuming they're absent.
115
+ - **GitHub Release notes publish again.** The release workflow's notes extraction wrote to the wrong stream in CI, shipping empty release bodies; notes now publish with every release.
116
+
117
+ **v2.35.1 — Telemetry restored, typed git-failure handling, memory seed packs**
118
+ - **Driver telemetry records again under parallel lanes.** v2.35.0's run-root worktree isolation sent driver-task telemetry into the ephemeral worktree, which is destroyed at run teardown — runs recorded zero driver rows. Telemetry now lands in the durable checkout, and calibration reads from the same place.
119
+ - **Git and GitHub failures are classified, not guessed.** A typed failure taxonomy (transient / ambiguous / permanent) drives retries — unrecognized failures are never auto-retried — and error text is scrubbed of tokens and credentials.
120
+ - **`engage` commit and branch seams fail closed.** A staging failure now fails the task instead of silently dropping its diff, branch reuse must be provably safe, cross-repo dispatch fetches a missing base branch on demand, and a halted run can no longer exit 0 and cut a PR.
121
+ - **Runtime memory seed packs.** `init`/`upgrade` seed Claude Code's harness memory with shipped doctrine (provenance-stamped, refresh-on-write, organic memories untouched).
122
+
111
123
  **v2.35.0 — Parallel lanes, governed actions, fleet threat scanning**
112
124
  - **`engage` lanes run in parallel.** Each run's bookkeeping lives in an isolated worktree cut from the declared base, so multiple lanes no longer contend on one shared checkout (`--no-worktree` opt-out available), and a fail-closed count guard refuses dispatch if any task heading fails to parse.
113
125
  - **Enforcement moves to the action seam.** An intent layer routes requests, artifact-chain preconditions replace prose-as-command, ad-hoc bypasses are audited, and tasks marked `privileged` run only through an isolated executor.
@@ -15,6 +15,9 @@ Public API:
15
15
  - ``TASK_TYPES`` -- the five v0 task categories.
16
16
  - ``BenchmarkFixture`` / ``ExpectedShape`` -- fixture data model.
17
17
  - ``load_fixture`` / ``load_all_fixtures`` / ``fixtures_dir`` -- fixture loaders.
18
+ - ``validate_fixture_shape`` / ``missing_required_sections`` /
19
+ ``FixtureShapeMismatch`` -- fixture lint: fail closed when a fixture's
20
+ ``required_sections`` aren't demanded by its own prompt.
18
21
  - ``score`` / ``ScoreReport`` / ``CheckResult`` -- composable v0 scoring.
19
22
  - ``DEFAULT_CHECKS`` -- the three v0 checks.
20
23
  - ``MatrixRow`` / ``MatrixResult`` / ``MatrixRunner`` -- 5x5 runner.
@@ -59,9 +62,12 @@ _LAZY_EXPORTS: dict[str, str] = {
59
62
  "TASK_TYPES": "task_set",
60
63
  "BenchmarkFixture": "task_set",
61
64
  "ExpectedShape": "task_set",
65
+ "FixtureShapeMismatch": "task_set",
62
66
  "fixtures_dir": "task_set",
63
67
  "load_all_fixtures": "task_set",
64
68
  "load_fixture": "task_set",
69
+ "missing_required_sections": "task_set",
70
+ "validate_fixture_shape": "task_set",
65
71
  }
66
72
 
67
73
  __all__ = sorted(_LAZY_EXPORTS)
@@ -0,0 +1,19 @@
1
+ {
2
+ "id": "bf-001",
3
+ "task_type": "bugfix",
4
+ "input_prompt": "`parse_duration(s)` currently raises `ValueError` for the input `\"0s\"` because it strips the numeric prefix with `s.rstrip(\"s\")` and then rejects an empty string before checking for zero. Fix `parse_duration` so `\"0s\"` returns `0`, and add a regression test for the zero-duration case alongside the existing suffix cases (`\"s\"`, `\"m\"`, `\"h\"`).",
5
+ "system_prompt": "You are a Driver agent fixing a reported bug. Output a single Python file: the corrected implementation followed by pytest tests, with the new regression test clearly covering the reported input.",
6
+ "expected_shape": {
7
+ "produces_code": true,
8
+ "required_sections": [],
9
+ "min_length": 120,
10
+ "must_contain": ["def parse_duration", "def test_", "0s"],
11
+ "must_not_contain": ["TODO"],
12
+ "json_schema_keys": []
13
+ },
14
+ "metadata": {
15
+ "source": "session-2026-06-02-pc2.1",
16
+ "redacted": true,
17
+ "redaction_notes": "Function name and bug shape generalized from the original report."
18
+ }
19
+ }
@@ -0,0 +1,19 @@
1
+ {
2
+ "id": "bf-002",
3
+ "task_type": "bugfix",
4
+ "input_prompt": "`retry_with_backoff(fn, attempts=3)` swallows the final exception and returns `None` on total failure instead of re-raising it, so callers can't distinguish a genuine `None` result from an exhausted retry. Fix it so the last exception propagates after `attempts` failures, and add tests covering the eventual-success-after-retries path and the exhausted-retries path.",
5
+ "system_prompt": "You are a Driver agent fixing a reported bug. Output a single Python file: the corrected implementation followed by pytest tests.",
6
+ "expected_shape": {
7
+ "produces_code": true,
8
+ "required_sections": [],
9
+ "min_length": 150,
10
+ "must_contain": ["def retry_with_backoff", "def test_", "raise"],
11
+ "must_not_contain": ["TODO"],
12
+ "json_schema_keys": []
13
+ },
14
+ "metadata": {
15
+ "source": "session-2026-06-02-pc2.1",
16
+ "redacted": true,
17
+ "redaction_notes": "Retry helper generalized from the original module."
18
+ }
19
+ }
@@ -0,0 +1,19 @@
1
+ {
2
+ "id": "ch-001",
3
+ "task_type": "chore",
4
+ "input_prompt": "Write the CHANGELOG entry for v2.18.0: bumps the pinned `httpx` dependency from 0.27 to 0.28, drops the Python 3.9 compatibility shim in `core/compat.py` (now dead code since the minimum supported version is 3.10), and regenerates the lockfile. No new features or bug fixes in this release.",
5
+ "system_prompt": "You are a release chore agent. Structure the entry with exactly one markdown header, `## Changes`, followed by a bullet list of the changes.",
6
+ "expected_shape": {
7
+ "produces_code": false,
8
+ "required_sections": ["## Changes"],
9
+ "min_length": 100,
10
+ "must_contain": ["httpx", "0.28"],
11
+ "must_not_contain": ["TODO:", "lorem ipsum"],
12
+ "json_schema_keys": []
13
+ },
14
+ "metadata": {
15
+ "source": "session-2026-06-10-pc2.3",
16
+ "redacted": true,
17
+ "redaction_notes": "Version numbers and dependency generalized from the real release."
18
+ }
19
+ }
@@ -0,0 +1,19 @@
1
+ {
2
+ "id": "ch-002",
3
+ "task_type": "chore",
4
+ "input_prompt": "Delete the deprecated `legacy_format_report()` function from `reporting/format.py` -- it was replaced by `format_report()` two releases ago and every remaining call site (checked: none in `src/`, two in `tests/`) needs updating to call `format_report()` directly instead. Update the two test call sites accordingly.",
5
+ "system_prompt": "You are a cleanup agent. Output a single unified diff showing the deletion and the two call-site updates.",
6
+ "expected_shape": {
7
+ "produces_code": true,
8
+ "required_sections": [],
9
+ "min_length": 80,
10
+ "must_contain": ["format_report"],
11
+ "must_not_contain": ["legacy_format_report"],
12
+ "json_schema_keys": []
13
+ },
14
+ "metadata": {
15
+ "source": "session-2026-06-10-pc2.3",
16
+ "redacted": true,
17
+ "redaction_notes": "Module/function names generalized."
18
+ }
19
+ }
@@ -2,7 +2,7 @@
2
2
  "id": "pd-001",
3
3
  "task_type": "plan-draft",
4
4
  "input_prompt": "Draft a sprint backlog for adding per-call cost logging to a sibling repo. Surface should follow the unified ~/.bpsai/burn-log.jsonl schema (timestamp, service, tokens_input, tokens_output, model, cost_estimate_usd, dispatch_origin, blocked, repo). Identify the API callsites, propose a colocated burn_log module, and break the work into tasks with acceptance criteria.",
5
- "system_prompt": "You are a Navigator agent. Produce a sprint backlog in the engage-compatible markdown format with a Sprint header, a Tasks section, and a Risks section.",
5
+ "system_prompt": "You are a Navigator agent. Produce a sprint backlog in the engage-compatible markdown format with a Sprint header, a `## Tasks` section, and a `## Risks` section.",
6
6
  "expected_shape": {
7
7
  "produces_code": false,
8
8
  "required_sections": ["## Tasks", "## Risks"],
@@ -2,7 +2,7 @@
2
2
  "id": "pd-002",
3
3
  "task_type": "plan-draft",
4
4
  "input_prompt": "Plan the rollout of a deterministic-first review pipeline. The Nayru agent should run six pre-gates (ruff, black, secrets, architecture, coverage, contract_break) and only call Claude if any gate fails. Define the module layout, the telemetry signal payload, and the migration plan that keeps Laverna and Vaivora on the legacy path.",
5
- "system_prompt": "You are a Navigator agent. Output a markdown plan with explicit sections for Goals, Tasks, and Risks. Include acceptance criteria checklists under each task.",
5
+ "system_prompt": "You are a Navigator agent. Output a markdown plan with explicit `## Goals`, `## Tasks`, and `## Risks` sections. Include acceptance criteria checklists under each task.",
6
6
  "expected_shape": {
7
7
  "produces_code": false,
8
8
  "required_sections": ["## Goals", "## Tasks", "## Risks"],
@@ -2,7 +2,7 @@
2
2
  "id": "pd-003",
3
3
  "task_type": "plan-draft",
4
4
  "input_prompt": "Draft a plan for a new CLI command `bpsai-pair budget programmatic` that reads ~/.bpsai/burn-log.jsonl, aggregates current-month spend, and compares against a configured monthly cap. Define the threshold ladder (80/90/100%) and the CI-gate-ready exit codes. Break the work into one task per sub-feature.",
5
- "system_prompt": "You are a Navigator agent. Produce a backlog in the engage-compatible format with a Sprint header, Goals, Tasks, and Risks.",
5
+ "system_prompt": "You are a Navigator agent. Produce a backlog in the engage-compatible format with a Sprint header, Goals, a `## Tasks` section, and Risks.",
6
6
  "expected_shape": {
7
7
  "produces_code": false,
8
8
  "required_sections": ["## Tasks"],
@@ -2,7 +2,7 @@
2
2
  "id": "sa-001",
3
3
  "task_type": "security-audit",
4
4
  "input_prompt": "Audit the burn-log writer module for security issues. The module appends JSON-Lines records to ~/.bpsai/burn-log.jsonl. Look for: (a) path traversal via the configured BURN_LOG_PATH env override, (b) injection of attacker-controlled fields into the JSON record (model name, service tag), (c) log forging via embedded newlines in string fields, (d) information disclosure (does it ever log secrets like API keys?). Use the P0/P1/P2 severity scheme.",
5
- "system_prompt": "You are the Laverna security review agent. Produce a markdown audit with findings tagged P0/P1/P2. End with a Recommendation line: approve | revise | block.",
5
+ "system_prompt": "You are the Laverna security review agent. Structure the audit with exactly these markdown headers, in order: a `## Findings` section (findings tagged P0/P1/P2), then a `## Recommendation` section with a single line: approve | revise | block.",
6
6
  "expected_shape": {
7
7
  "produces_code": false,
8
8
  "required_sections": ["## Findings", "## Recommendation"],
@@ -2,7 +2,7 @@
2
2
  "id": "sa-002",
3
3
  "task_type": "security-audit",
4
4
  "input_prompt": "Audit the `bpsai-pair budget programmatic` CLI command for security issues. It reads ~/.bpsai/burn-log.jsonl, parses each line as JSON, aggregates spend by month, and compares against a cap loaded from .paircoder/config.yaml. Look for: YAML deserialization of untrusted config, JSON-bomb / deeply nested payload DoS, malformed-line crash paths, and exposure of file paths in error messages. Tag findings P0/P1/P2.",
5
- "system_prompt": "You are the Laverna security review agent. Produce a markdown audit with P0/P1/P2-tagged findings and a Recommendation line.",
5
+ "system_prompt": "You are the Laverna security review agent. Structure the audit with exactly these markdown headers, in order: a `## Findings` section (P0/P1/P2-tagged findings), then a `## Recommendation` section with a single line: approve | revise | block.",
6
6
  "expected_shape": {
7
7
  "produces_code": false,
8
8
  "required_sections": ["## Findings", "## Recommendation"],
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "id": "iwt-001",
3
- "task_type": "implement-with-tests",
3
+ "task_type": "feature",
4
4
  "input_prompt": "Implement a pure function `aggregate(records, by)` that groups a list of dicts by the field named `by` and sums `cost_estimate_usd` per bucket. Unknown bucket values become the literal string '(unknown)'. Raise ValueError for an unsupported `by`. Cover with pytest unit tests including the unknown-bucket path and the ValueError branch.",
5
5
  "system_prompt": "You are a Driver agent. Output a single Python file. Place the implementation and pytest tests in the same file. Follow TDD ordering: tests appear above the implementation.",
6
6
  "expected_shape": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "id": "iwt-002",
3
- "task_type": "implement-with-tests",
3
+ "task_type": "feature",
4
4
  "input_prompt": "Implement `compute_threshold(spend_usd, cap_usd)` that returns one of the string verdicts 'ok' | 'warn80' | 'warn90' | 'over'. The boundaries are: <80% ok, ≥80% warn80, ≥90% warn90, ≥100% over. Treat cap_usd == 0 as 'over' when spend_usd > 0 and 'ok' otherwise. Cover every boundary exactly and the zero-cap edge case with pytest.",
5
5
  "system_prompt": "You are a Driver agent. Output a single Python file with implementation and pytest tests.",
6
6
  "expected_shape": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "id": "iwt-003",
3
- "task_type": "implement-with-tests",
3
+ "task_type": "feature",
4
4
  "input_prompt": "Implement a soft-failing `log_call_safely(*, service, tokens_input, tokens_output, model, cost_estimate_usd, dispatch_origin, blocked, repo, path)` that appends a JSON-Lines record to `path`. The wrapper must NEVER raise: OSError (e.g. permission denied, parent missing) is logged and swallowed. Tests must include a successful write, an append (two records), and a fault-injected OSError path that does not propagate.",
5
5
  "system_prompt": "You are a Driver agent. Provide a single Python file: implementation followed by pytest tests using `tmp_path` and monkeypatch.",
6
6
  "expected_shape": {
@@ -0,0 +1,19 @@
1
+ {
2
+ "id": "rf-001",
3
+ "task_type": "refactor",
4
+ "input_prompt": "`validate_order(order)` and `validate_invoice(invoice)` each independently repeat the same three checks: non-empty `line_items`, non-negative `total`, and a valid ISO-8601 `created_at`. Extract the shared checks into a single `_validate_common_fields(obj)` helper that both functions call, without changing either function's public signature or error messages.",
5
+ "system_prompt": "You are a Driver agent doing a pure refactor -- behavior must not change. Output a single Python file: the refactored implementation followed by pytest tests proving both functions still produce identical error messages for each invalid case.",
6
+ "expected_shape": {
7
+ "produces_code": true,
8
+ "required_sections": [],
9
+ "min_length": 150,
10
+ "must_contain": ["def _validate_common_fields", "def test_"],
11
+ "must_not_contain": ["TODO"],
12
+ "json_schema_keys": []
13
+ },
14
+ "metadata": {
15
+ "source": "session-2026-06-15-pc2.4",
16
+ "redacted": true,
17
+ "redaction_notes": "Domain objects (order/invoice) generalized from the original module."
18
+ }
19
+ }
@@ -0,0 +1,19 @@
1
+ {
2
+ "id": "rf-002",
3
+ "task_type": "refactor",
4
+ "input_prompt": "`summarize_batch(records)` is a single 90-line function that filters, groups, and aggregates in one pass, making it impossible to unit test the grouping logic in isolation. Decompose it into `_filter_valid(records)`, `_group_by_key(records)`, and `_aggregate_groups(groups)`, with `summarize_batch` becoming a thin composition of the three. Preserve the existing return shape exactly.",
5
+ "system_prompt": "You are a Driver agent doing a pure refactor -- behavior must not change. Output a single Python file: the decomposed implementation followed by pytest tests for each extracted helper plus one end-to-end test for `summarize_batch`.",
6
+ "expected_shape": {
7
+ "produces_code": true,
8
+ "required_sections": [],
9
+ "min_length": 200,
10
+ "must_contain": ["def _filter_valid", "def _group_by_key", "def _aggregate_groups", "def test_"],
11
+ "must_not_contain": ["TODO"],
12
+ "json_schema_keys": []
13
+ },
14
+ "metadata": {
15
+ "source": "session-2026-06-15-pc2.4",
16
+ "redacted": true,
17
+ "redaction_notes": "Function name and field names generalized from the original module."
18
+ }
19
+ }
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "id": "cr-001",
3
- "task_type": "code-review",
3
+ "task_type": "review",
4
4
  "input_prompt": "Review the following patch that adds a `dispatch_surface` field to TelemetryRecord. The field is a Literal[\"interactive\", \"programmatic\"] | None classified by a new `classify_dispatch_surface()` helper that wraps an `isatty` check on sys.stdout. Flag any backward-compatibility risks, any correctness gaps in the classifier (terminal detection edge cases), and any test-coverage gaps. Use the P0/P1/P2 severity scheme.",
5
- "system_prompt": "You are the Nayru review agent. Produce a markdown review with explicit findings tagged by severity (P0/P1/P2). Conclude with a Recommendation line: approve | revise | block.",
5
+ "system_prompt": "You are the Nayru review agent. Structure the review with exactly these markdown headers, in order: a `## Findings` section listing findings tagged by severity (P0/P1/P2), then a `## Recommendation` section with a single line: approve | revise | block.",
6
6
  "expected_shape": {
7
7
  "produces_code": false,
8
8
  "required_sections": ["## Findings", "## Recommendation"],
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "id": "cr-002",
3
- "task_type": "code-review",
3
+ "task_type": "review",
4
4
  "input_prompt": "Review the change that lifts the hardcoded model string from `_synthesize_with_llm` into a local variable `model = \"claude-sonnet-4-6\"` so it can be logged consistently with the actual API call. Confirm the lift covers the SKIP-response path (still billable) and the API-failure path (no record). Flag any places where the model string drifts away from the logged value.",
5
- "system_prompt": "You are the Nayru review agent. Produce a markdown review with findings tagged P0/P1/P2 and end with a Recommendation line: approve | revise | block.",
5
+ "system_prompt": "You are the Nayru review agent. Structure the review with exactly these markdown headers, in order: a `## Findings` section (findings tagged P0/P1/P2), then a `## Recommendation` section with a single line: approve | revise | block.",
6
6
  "expected_shape": {
7
7
  "produces_code": false,
8
8
  "required_sections": ["## Findings", "## Recommendation"],
@@ -1,9 +1,13 @@
1
1
  """Benchmark fixture data model + on-disk loaders.
2
2
 
3
- Defines the five v0 task types, the ``ExpectedShape`` spec used by the
3
+ Defines the five task types (aligned to the production telemetry
4
+ vocabulary -- paircoder#674), the ``ExpectedShape`` spec used by the
4
5
  default scorer, and the ``BenchmarkFixture`` record that ties an input
5
6
  prompt to an expected-shape spec. Fixtures live under
6
- ``fixtures/<task-type>/<id>.json`` next to this module.
7
+ ``fixtures/<task-type>/<id>.json`` next to this module. Retired fixtures
8
+ whose type has no production-vocabulary equivalent live under
9
+ ``fixtures/extended/`` and are excluded from the default load (see
10
+ ``load_all_fixtures``).
7
11
  """
8
12
 
9
13
  from __future__ import annotations
@@ -14,21 +18,23 @@ from pathlib import Path
14
18
  from typing import Any, Literal
15
19
 
16
20
  TaskType = Literal[
17
- "plan-draft",
18
- "implement-with-tests",
19
- "code-review",
20
- "security-audit",
21
- "content-draft",
21
+ "feature",
22
+ "bugfix",
23
+ "chore",
24
+ "refactor",
25
+ "review",
22
26
  ]
23
27
 
24
28
  TASK_TYPES: tuple[TaskType, ...] = (
25
- "plan-draft",
26
- "implement-with-tests",
27
- "code-review",
28
- "security-audit",
29
- "content-draft",
29
+ "feature",
30
+ "bugfix",
31
+ "chore",
32
+ "refactor",
33
+ "review",
30
34
  )
31
35
 
36
+ _EXTENDED_DIR_NAME = "extended"
37
+
32
38
 
33
39
  @dataclass
34
40
  class ExpectedShape:
@@ -103,20 +109,63 @@ class BenchmarkFixture:
103
109
  )
104
110
 
105
111
 
112
+ class FixtureShapeMismatch(ValueError):
113
+ """Raised when expected_shape demands content the fixture's prompt never states.
114
+
115
+ The grader fails any output missing a literal ``required_sections`` string.
116
+ A fixture whose prompt never asks the model for that section is unwinnable
117
+ by construction, and previously produced misleading cross-model scores
118
+ (paircoder#673). Loading fails closed instead.
119
+ """
120
+
121
+
122
+ def missing_required_sections(fixture: BenchmarkFixture) -> list[str]:
123
+ """Return required_sections entries absent from the fixture's own prompt text."""
124
+ haystack = f"{fixture.system_prompt or ''}\n{fixture.input_prompt}"
125
+ return [s for s in fixture.expected_shape.required_sections if s not in haystack]
126
+
127
+
128
+ def validate_fixture_shape(fixture: BenchmarkFixture) -> None:
129
+ """Fail closed if expected_shape.required_sections aren't demanded by the prompt."""
130
+ missing = missing_required_sections(fixture)
131
+ if missing:
132
+ raise FixtureShapeMismatch(
133
+ f"fixture {fixture.id!r} expected_shape.required_sections demands "
134
+ f"{missing}, but neither system_prompt nor input_prompt states it "
135
+ "verbatim",
136
+ )
137
+
138
+
106
139
  def fixtures_dir() -> Path:
107
140
  """Return the bundled-fixtures directory next to this module."""
108
141
  return Path(__file__).resolve().parent / "fixtures"
109
142
 
110
143
 
111
144
  def load_fixture(path: Path | str) -> BenchmarkFixture:
112
- """Load a single fixture from a JSON file."""
145
+ """Load a single fixture from a JSON file.
146
+
147
+ Raises ``FixtureShapeMismatch`` if the fixture's required_sections aren't
148
+ demanded by its own prompt.
149
+ """
113
150
  raw = json.loads(Path(path).read_text())
114
- return BenchmarkFixture.from_dict(raw)
151
+ fixture = BenchmarkFixture.from_dict(raw)
152
+ validate_fixture_shape(fixture)
153
+ return fixture
115
154
 
116
155
 
117
156
  def load_all_fixtures(root: Path | str) -> list[BenchmarkFixture]:
118
- """Recursively load every ``*.json`` fixture under ``root``."""
157
+ """Recursively load every default ``*.json`` fixture under ``root``.
158
+
159
+ Skips anything under an ``extended/`` subdirectory: retired fixtures
160
+ preserved there (paircoder#674) carry pre-vocabulary task_type values
161
+ and are excluded from the default matrix run, not merely a subset of
162
+ it.
163
+ """
119
164
  root_path = Path(root)
120
165
  if not root_path.is_dir():
121
166
  return []
122
- return [load_fixture(p) for p in sorted(root_path.rglob("*.json"))]
167
+ return [
168
+ load_fixture(p)
169
+ for p in sorted(root_path.rglob("*.json"))
170
+ if _EXTENDED_DIR_NAME not in p.relative_to(root_path).parts[:-1]
171
+ ]
@@ -41,6 +41,20 @@ OWNERSHIP_MANIFEST: dict[str, Ownership] = {
41
41
  "CLAUDE.md": Ownership.MERGED,
42
42
  ".paircoder/capabilities.yaml": Ownership.MERGED,
43
43
  ".claude/settings.json": Ownership.MERGED,
44
+ # Seed pack: shipped doctrine seeds under the harness memory dir
45
+ # are tool-owned (refreshed every write); the MEMORY.md index is a
46
+ # managed-region merge -- organic entries and other memory files it
47
+ # doesn't enumerate are never touched.
48
+ "memory/seed-01-verification-is-yours.md": Ownership.TOOL_OWNED,
49
+ "memory/seed-02-shared-checkouts-belong-to-runs.md": Ownership.TOOL_OWNED,
50
+ "memory/seed-03-dispatch-dont-implement.md": Ownership.TOOL_OWNED,
51
+ "memory/seed-04-fail-closed-audited-bypass.md": Ownership.TOOL_OWNED,
52
+ "memory/seed-05-no-deferral-at-agent-velocity.md": Ownership.TOOL_OWNED,
53
+ "memory/seed-06-repo-reality-beats-templates.md": Ownership.TOOL_OWNED,
54
+ "memory/seed-07-bounded-waits-only.md": Ownership.TOOL_OWNED,
55
+ "memory/seed-08-stop-the-tail.md": Ownership.TOOL_OWNED,
56
+ "memory/seed-09-delegate-loops-probe-limits.md": Ownership.TOOL_OWNED,
57
+ "memory/MEMORY.md": Ownership.MERGED,
44
58
  }
45
59
 
46
60
 
@@ -260,6 +260,7 @@ def _run_engage(
260
260
  skip_planning, resume, active_branch, auto_created, parent,
261
261
  project_root, env_overrides, touched_siblings, strict_targets,
262
262
  use_wt, kickoff_branch, reason, wt_path, wt_branch,
263
+ reuse_branch,
263
264
  )
264
265
  # A pause is a normal return, not an exception -- see `finally` below.
265
266
  pipeline_paused = bool(result.get("paused_task"))
@@ -291,6 +292,7 @@ def _run_sprint_pipeline(
291
292
  strict_targets: bool = False,
292
293
  reason: str = "",
293
294
  wt_path: Path | None = None, wt_branch: str | None = None,
295
+ reuse_branch: bool = False,
294
296
  ) -> dict[str, Any]:
295
297
  """Execute planning, sprint, and finalization in *run_root*."""
296
298
  project_root = project_root or run_root
@@ -309,12 +311,13 @@ def _run_sprint_pipeline(
309
311
  backlog_target, per_task_repos, preflight_block = _preflight_and_kickoff(
310
312
  run_root, project_root, parsed, plan_id, max_parallel,
311
313
  active_branch, strict_targets, touched_siblings, reason=reason,
314
+ reuse_branch=reuse_branch or resume, # a resume's sibling branches exist
312
315
  )
313
316
  result = _execute_sprint(
314
317
  run_root, plan_id, max_parallel, completed_tasks=completed,
315
- target_repo=backlog_target,
316
- per_task_target_repos=per_task_repos,
318
+ target_repo=backlog_target, per_task_target_repos=per_task_repos,
317
319
  env_overrides=env_overrides, engage_branch=active_branch, # #469 P1 pin
320
+ telemetry_root=project_root, # #657: durable checkout, not run_root
318
321
  )
319
322
  if result.paused_task:
320
323
  return _handle_pause(
@@ -20,6 +20,11 @@ from bpsai_pair.commands import engage_base
20
20
  from bpsai_pair.commands.engage_branch import _fail_checkout, _validate_branch_name
21
21
  from bpsai_pair.commands.engage_guards import _get_protected_branches
22
22
  from bpsai_pair.commands.engage_pr import _detect_pr_base
23
+ from bpsai_pair.commands.engage_preflight import PreflightRefused
24
+ from bpsai_pair.commands.engage_sibling_setup import (
25
+ describe_sibling_residue,
26
+ resolve_sibling_cut_ref,
27
+ )
23
28
 
24
29
  logger = logging.getLogger(__name__)
25
30
 
@@ -111,8 +116,10 @@ def restore_siblings_on_failure(
111
116
  and surfaced, never raised, so one stranded sibling can't mask the original
112
117
  sprint error); siblings with no captured prior branch are skipped (nothing
113
118
  safe to restore to);
114
- * LOUDLY surfaces (stderr) that the sibling still carries ``branch`` and may
115
- hold committed driver work needing attention.
119
+ * LOUDLY surfaces (stderr) what the sibling actually carries --
120
+ ``describe_sibling_residue`` reads the repo rather than asserting the
121
+ branch was preserved, because a setup abort can land here having died
122
+ BEFORE the cut, with no such branch and no work to go looking for.
116
123
 
117
124
  The engage ``branch`` is deliberately NOT deleted -- it may carry committed
118
125
  driver work; deleting it would lose that work. Restoring the working tree +
@@ -135,13 +142,7 @@ def restore_siblings_on_failure(
135
142
  "Could not restore %s to '%s' after sprint failure: %s",
136
143
  repo, prior, restored.stderr.strip(),
137
144
  )
138
- typer.echo(
139
- f" ! Sibling {repo} still carries engage branch '{branch}' "
140
- f"(restored working tree to '{prior or 'UNKNOWN'}'). The branch was "
141
- f"PRESERVED (it may hold committed driver work) -- review/clean it "
142
- f"manually.",
143
- err=True,
144
- )
145
+ typer.echo(describe_sibling_residue(repo, branch, prior), err=True)
145
146
 
146
147
 
147
148
  def compute_sibling_repos(parsed: Any, project_root: Path) -> list[Path]:
@@ -238,13 +239,13 @@ def compute_touched_repos(parsed: Any, project_root: Path) -> list[Path]:
238
239
  def _assert_git_repo(repo: Path) -> None:
239
240
  """Fail loud if *repo* is not an existing git repository."""
240
241
  if not repo.exists():
241
- raise ValueError(
242
+ raise PreflightRefused(
242
243
  f"Engage target repo does not exist: {repo}. Cannot create the "
243
244
  f"engage branch in a missing repo -- declare a valid **Target "
244
245
  f"repo:** or create the sibling.",
245
246
  )
246
247
  if not (repo / ".git").exists():
247
- raise ValueError(
248
+ raise PreflightRefused(
248
249
  f"Engage target repo is not a git repository (no .git): {repo}. "
249
250
  f"The engage branch can only be created in a git repo.",
250
251
  )
@@ -265,7 +266,7 @@ def _assert_clean_tree(repo: Path) -> None:
265
266
  encoding="utf-8", errors="replace",
266
267
  )
267
268
  if status.stdout.strip():
268
- raise ValueError(
269
+ raise PreflightRefused(
269
270
  f"Engage target repo has a dirty working tree: {repo}. The engage "
270
271
  f"branch cannot be cut from uncommitted changes (cross-repo "
271
272
  f"contamination risk) -- commit or stash the sibling's changes "
@@ -281,7 +282,7 @@ def _assert_not_protected(branch: str) -> None:
281
282
  protected branch) in a sibling.
282
283
  """
283
284
  if branch in _get_protected_branches(None):
284
- raise ValueError(
285
+ raise PreflightRefused(
285
286
  f"Refusing to use protected branch '{branch}' as the engage "
286
287
  f"working branch in a target repo. Use an 'engage/<sprint>' name.",
287
288
  )
@@ -306,23 +307,25 @@ def _safe_checkout_engage_branch(
306
307
  against the SAME base -- closing the gap where a declared ``dev`` on a
307
308
  ``main``-default sibling still cut and PR'd from ``main``. When ``None`` the
308
309
  resolver's detected default is used (unchanged back-compat).
310
+
311
+ A DECLARED base is fetched into the sibling first and then resolved to a ref
312
+ that exists there (``resolve_sibling_cut_ref``): a fleet sibling is normally
313
+ a long-lived clone nobody fetches by hand, and a base living only on its
314
+ remote used to kill the whole dispatch at setup. The cut-from ref may
315
+ therefore be ``origin/<base>`` while the RECORDED branch-point stays the
316
+ logical ``<base>`` -- a remote-tracking ref is not something a later PR
317
+ should target.
309
318
  """
319
+ cut_ref = base
310
320
  if base is None:
311
- base = _detect_pr_base(repo)
321
+ cut_ref = base = _detect_pr_base(repo)
312
322
  else:
313
- # Asymmetry vs the run repo's ``_checkout_branch`` (#549): there we
314
- # ref_exists-check the base because it comes from the RAW backlog header
315
- # (untrusted, may name a ref this repo lacks). Here *base* has already
316
- # been resolved per-repo by the #548 machinery (``engage_cross_base`` ->
317
- # ``detect_repo_base``), which only returns a ref that exists in THIS
318
- # repo -- so validate (option-injection guard) but do not re-check
319
- # existence.
320
- engage_base.validate_base_ref(base)
323
+ cut_ref = resolve_sibling_cut_ref(repo, branch, base)
321
324
  created = subprocess.run(
322
325
  # EH2.1: ``switch -c … -- <base>`` end-of-options guard so a flag-like
323
326
  # base ref is never parsed as an option (the new branch name is safe as
324
327
  # the ``-c`` argument). Mirrors the push/rev-list/gh hardening.
325
- ["git", "switch", "-c", branch, "--", base],
328
+ ["git", "switch", "-c", branch, "--", cut_ref],
326
329
  cwd=repo, capture_output=True, check=False,
327
330
  encoding="utf-8", errors="replace",
328
331
  )