orbi-cli 0.7.25__tar.gz → 0.7.26__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.
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/PKG-INFO +1 -1
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/pyproject.toml +1 -1
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/src/orbi/__init__.py +1 -1
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/src/orbi_cli.egg-info/PKG-INFO +1 -1
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_prompt_contract.py +101 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/LICENSE +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/README.md +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/docs/licenses/sustainable-use-license.md +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/setup.cfg +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/src/orbi/base_ci_red.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/src/orbi/blocked_comment.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/src/orbi/branch_reclaim.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/src/orbi/check_permission.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/src/orbi/checks.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/src/orbi/claim.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/src/orbi/clarify.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/src/orbi/cli.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/src/orbi/cli_commands.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/src/orbi/cli_doctor.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/src/orbi/cli_parser.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/src/orbi/cli_source.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/src/orbi/cli_status.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/src/orbi/cli_ticket_command.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/src/orbi/comment_kind.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/src/orbi/comment_trust.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/src/orbi/config.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/src/orbi/criteria_command.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/src/orbi/delivery_comment.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/src/orbi/delivery_labels.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/src/orbi/delivery_scene.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/src/orbi/engine_source.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/src/orbi/example_config.toml +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/src/orbi/extensions/clarify_verdict.ts +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/src/orbi/failure.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/src/orbi/failure_report.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/src/orbi/gh_response.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/src/orbi/git_identity.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/src/orbi/git_transport.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/src/orbi/github.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/src/orbi/github_feedback.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/src/orbi/gitops.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/src/orbi/human_review.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/src/orbi/journal.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/src/orbi/language.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/src/orbi/language_terms.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/src/orbi/launchd_deploy.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/src/orbi/merge_exec.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/src/orbi/merge_gate.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/src/orbi/merge_handoff.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/src/orbi/milestone.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/src/orbi/milestone_command.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/src/orbi/notify.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/src/orbi/pi_activity.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/src/orbi/pi_command.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/src/orbi/pi_idle.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/src/orbi/pi_process.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/src/orbi/pi_recovery.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/src/orbi/pi_session.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/src/orbi/pi_stream_log.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/src/orbi/pilot_setup.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/src/orbi/pilot_slots.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/src/orbi/pr_verification.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/src/orbi/progress.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/src/orbi/progress_display.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/src/orbi/progress_outcome.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/src/orbi/progress_summary.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/src/orbi/release.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/src/orbi/release_closeout.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/src/orbi/release_comments.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/src/orbi/release_declaration.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/src/orbi/release_git.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/src/orbi/release_notes.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/src/orbi/release_run.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/src/orbi/repo_config.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/src/orbi/resume_scan.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/src/orbi/resume_verification.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/src/orbi/review_merge.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/src/orbi/review_rounds.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/src/orbi/review_verdict.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/src/orbi/run_state.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/src/orbi/runner.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/src/orbi/runner_health.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/src/orbi/runner_marker.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/src/orbi/runner_source.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/src/orbi/scene.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/src/orbi/scheduler.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/src/orbi/scheduler_units.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/src/orbi/session_command.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/src/orbi/setup_checks.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/src/orbi/setup_config.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/src/orbi/source_pool.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/src/orbi/split_command.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/src/orbi/status_observe.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/src/orbi/suggest.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/src/orbi/systemd_deploy.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/src/orbi/ticket_command.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/src/orbi/user_summary.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/src/orbi_cli.egg-info/SOURCES.txt +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/src/orbi_cli.egg-info/dependency_links.txt +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/src/orbi_cli.egg-info/entry_points.txt +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/src/orbi_cli.egg-info/top_level.txt +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_agents_md.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_apply_label_patch.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_base_branch_failure.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_base_ci_red.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_blocked_comment.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_bootstrap_adapters.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_bootstrap_delivery.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_bootstrap_pi.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_bootstrap_preflight.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_bootstrap_release.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_bootstrap_runner.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_branch_reclaim.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_check_permission.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_ci_failure_issue_workflow.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_ci_failure_triage.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_ci_macos_workflow.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_ci_workflow.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_clarify.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_claude_plugin.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_cli_golden.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_cli_install.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_cli_milestone.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_cli_packaging.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_cli_source.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_cli_ticket_commands.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_command_receipt_contract.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_comment_identity.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_comment_readers_contract.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_comment_trust.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_concurrency_e2e.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_constitution.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_coverage_gate.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_criteria_command.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_deliver_pr_fakes.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_delivery_branch_delete.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_delivery_labels.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_delivery_scene.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_docker_docs.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_docker_entrypoint.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_docker_image_workflow.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_docs_i18n.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_docs_issue_shapes.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_docs_labels.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_docs_mermaid.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_docs_releases.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_docs_single_source.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_docs_site.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_engine_source.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_failure.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_failure_report.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_fix_needed_loop.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_gh_read_retry.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_gh_response.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_git_base_smoke.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_git_merge_smoke.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_git_network_retry.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_git_transport.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_github.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_github_fakes.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_gitops.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_gitops_fakes.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_human_review.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_import_graph.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_install_sh.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_issue_1367.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_issue_461.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_issue_template_config.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_journal.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_journal_events.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_launchd_deploy.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_license.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_merge_exec_extraction.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_message_language.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_milestone_command.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_notify.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_ops_e2e.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_orbi.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_orbi_dashboard.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_orbi_exporter.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_patch_ratchet.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_pi_activity.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_pi_command.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_pi_extensions.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_pi_provider_templates.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_pi_recovery.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_pi_session.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_pilot_setup.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_pilot_slots.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_pr_issue_link_workflow.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_pr_verification.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_prerequisite_check.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_progress.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_progress_wiring.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_public_contracts.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_public_helpers.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_publish_workflow.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_release_docs_workflow.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_release_extraction.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_release_ticket_templates.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_repo_config.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_resume_continue_e2e.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_resume_e2e.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_resume_pr.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_review_merge.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_review_verdict.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_run_artifacts.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_run_id_e2e.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_run_id_fixture.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_runner_config.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_runner_health.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_runner_source_freshness.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_scene.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_scheduler.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_seam.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_setup_output_golden.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_size_ratchet.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_split_command.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_src_layout.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_status_observe.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_steering_review.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_suggest.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_suite_hygiene.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_systemd_deploy.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_systemd_timer.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_ticket_command.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_user_acceptance_contract.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_user_summary.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_versioned_comment_block.py +0 -0
- {orbi_cli-0.7.25 → orbi_cli-0.7.26}/tests/test_worktree_reclaim.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: orbi-cli
|
|
3
|
-
Version: 0.7.
|
|
3
|
+
Version: 0.7.26
|
|
4
4
|
Summary: Orbi — local AI development worker: claims GitHub Issues, runs Pi in isolated worktrees, and delivers PRs (GitHub Issues + labels are the only state store).
|
|
5
5
|
Author: xqliu
|
|
6
6
|
License-Expression: AGPL-3.0-only OR LicenseRef-Sustainable-Use-1.0
|
|
@@ -44,7 +44,7 @@ build-backend = "setuptools.build_meta"
|
|
|
44
44
|
|
|
45
45
|
[project]
|
|
46
46
|
name = "orbi-cli"
|
|
47
|
-
version = "0.7.
|
|
47
|
+
version = "0.7.26"
|
|
48
48
|
description = "Orbi — local AI development worker: claims GitHub Issues, runs Pi in isolated worktrees, and delivers PRs (GitHub Issues + labels are the only state store)."
|
|
49
49
|
readme = "README.md"
|
|
50
50
|
requires-python = ">=3.14"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: orbi-cli
|
|
3
|
-
Version: 0.7.
|
|
3
|
+
Version: 0.7.26
|
|
4
4
|
Summary: Orbi — local AI development worker: claims GitHub Issues, runs Pi in isolated worktrees, and delivers PRs (GitHub Issues + labels are the only state store).
|
|
5
5
|
Author: xqliu
|
|
6
6
|
License-Expression: AGPL-3.0-only OR LicenseRef-Sustainable-Use-1.0
|
|
@@ -886,3 +886,104 @@ def test_prompt_md_step_4_does_not_use_pytest_as_completion_evidence():
|
|
|
886
886
|
text = _text(PROMPT)
|
|
887
887
|
assert "unit tests alone are not completion evidence" in text
|
|
888
888
|
assert "pytest alone is not completion evidence" not in text
|
|
889
|
+
|
|
890
|
+
|
|
891
|
+
# --- Issue #1980: a delivery changes only what the ticket asks for -----------
|
|
892
|
+
|
|
893
|
+
# The beta incident (Issue #1980) had two shapes on the same evening: ticket
|
|
894
|
+
# #260 -> PR #261 deleted a false-red test file, and ticket #262 -> PR #265
|
|
895
|
+
# removed an `exit 1` CI job from .github/workflows/ci.yml, both unmentioned,
|
|
896
|
+
# review passed, both merged. The base-red gate itself works (#254 paused), so
|
|
897
|
+
# the missing piece is the scope rule: a delivery changes only what the ticket
|
|
898
|
+
# asks for and never edits unrelated code, tests or CI configuration to get its
|
|
899
|
+
# own checks green. Both prompts must state it up front; these tests render the
|
|
900
|
+
# real templates (the exact string Pi receives) so the rule cannot silently
|
|
901
|
+
# drift away.
|
|
902
|
+
|
|
903
|
+
BASE_RED_PROMPT_ITEMS = (
|
|
904
|
+
# The general scope sentence (the ticket's acceptance 1), not a per-file
|
|
905
|
+
# list: unrelated code, tests AND CI configuration are all named.
|
|
906
|
+
("scope-only-ticket", "change only what the ticket asks for"),
|
|
907
|
+
("scope-unrelated-files",
|
|
908
|
+
"do not edit unrelated code, tests or ci configuration to make your own "
|
|
909
|
+
"checks pass"),
|
|
910
|
+
# A check already red at the frozen base belongs to the base, not the
|
|
911
|
+
# ticket — the Runner's base-red pause decides it.
|
|
912
|
+
("scope-base-check-not-mine",
|
|
913
|
+
"a check already failing at "
|
|
914
|
+
"`77e7f0ea54d8e9748f2debfd5a8f49739dd89b66` is not this ticket's to fix"),
|
|
915
|
+
("base-red-failing-test",
|
|
916
|
+
"already fails at `77e7f0ea54d8e9748f2debfd5a8f49739dd89b66`"),
|
|
917
|
+
("base-red-outside", "outside this ticket"),
|
|
918
|
+
("base-red-forbidden-actions", "delete, skip, xfail or edit it"),
|
|
919
|
+
("base-red-no-weaken", "do not weaken its assertion"),
|
|
920
|
+
("base-red-leave-failing", "leave it failing"),
|
|
921
|
+
("base-red-runner-handling", "base-red handling"),
|
|
922
|
+
# Step 5 forbids committing a change whose tests were seen failing; the
|
|
923
|
+
# carve-out keeps that rule from stalling the delivery on the base's own
|
|
924
|
+
# red test (the ticket must still end in a commit).
|
|
925
|
+
("base-red-step5-carve-out",
|
|
926
|
+
"never includes a test that already fails at "
|
|
927
|
+
"`77e7f0ea54d8e9748f2debfd5a8f49739dd89b66`"),
|
|
928
|
+
)
|
|
929
|
+
|
|
930
|
+
|
|
931
|
+
def test_prompt_md_leaves_a_test_that_already_fails_on_the_base_alone():
|
|
932
|
+
"""Issue #1980: the rendered implementer prompt carries the scope sentence
|
|
933
|
+
— change only what the ticket asks for, never unrelated code, tests or CI
|
|
934
|
+
configuration to get checks green — and states that a check already
|
|
935
|
+
failing at the frozen base SHA is outside the ticket, never deleted,
|
|
936
|
+
skipped, xfail-ed or weakened; it stays failing and the Runner's base-red
|
|
937
|
+
handling takes it from there."""
|
|
938
|
+
from orbi import pi_session
|
|
939
|
+
|
|
940
|
+
rendered = pi_session.render_prompt(
|
|
941
|
+
PROMPT.read_text(encoding="utf-8"),
|
|
942
|
+
{"BASE_SHA": "77e7f0ea54d8e9748f2debfd5a8f49739dd89b66",
|
|
943
|
+
"BASE_BRANCH": "main"},
|
|
944
|
+
)
|
|
945
|
+
text = " ".join(rendered.lower().split())
|
|
946
|
+
missing = _missing(text, BASE_RED_PROMPT_ITEMS)
|
|
947
|
+
assert not missing, (
|
|
948
|
+
f"prompt.md does not leave a base-red test alone (Issue #1980): "
|
|
949
|
+
f"{missing}"
|
|
950
|
+
)
|
|
951
|
+
# Rendered against a real base SHA, the rule names that SHA.
|
|
952
|
+
assert "77e7f0ea54d8e9748f2debfd5a8f49739dd89b66" in text
|
|
953
|
+
|
|
954
|
+
|
|
955
|
+
BASE_RED_REVIEW_ITEMS = (
|
|
956
|
+
# Acceptance 2: out-of-scope changes made to get checks green are a
|
|
957
|
+
# blocking finding, and the rule names all three file kinds, so a removed
|
|
958
|
+
# CI job (the #265 shape) is caught like a deleted test (the #261 shape).
|
|
959
|
+
("review-base-red-scope",
|
|
960
|
+
"out-of-scope changes made to get checks green are a **blocking "
|
|
961
|
+
"finding (blocker)**"),
|
|
962
|
+
("review-base-red-delete", "deleting, skipping or weakening"),
|
|
963
|
+
("review-base-red-unrelated", "unrelated existing test"),
|
|
964
|
+
("review-base-red-other-files",
|
|
965
|
+
"editing unrelated code, tests or ci configuration"),
|
|
966
|
+
("review-base-red-ci", "disabled ci job"),
|
|
967
|
+
)
|
|
968
|
+
|
|
969
|
+
|
|
970
|
+
def test_prompt_review_md_flags_a_deleted_or_weakened_existing_test():
|
|
971
|
+
"""Issue #1980: the rendered review prompt treats out-of-scope changes
|
|
972
|
+
made to get checks green — a deleted or weakened test, unrelated code or
|
|
973
|
+
CI configuration, a disabled CI job — as a blocking finding, so the PR
|
|
974
|
+
that removes the customer's red test or red job is rejected instead of
|
|
975
|
+
merged."""
|
|
976
|
+
from orbi import pi_session
|
|
977
|
+
|
|
978
|
+
rendered = pi_session.render_prompt(
|
|
979
|
+
PROMPT_REVIEW.read_text(encoding="utf-8"),
|
|
980
|
+
{"BASE_SHA": "77e7f0ea54d8e9748f2debfd5a8f49739dd89b66",
|
|
981
|
+
"BASE_BRANCH": "main"},
|
|
982
|
+
)
|
|
983
|
+
text = " ".join(rendered.lower().split())
|
|
984
|
+
missing = _missing(text, BASE_RED_REVIEW_ITEMS)
|
|
985
|
+
assert not missing, (
|
|
986
|
+
f"prompt_review.md does not flag a deleted or weakened existing test "
|
|
987
|
+
f"(Issue #1980): {missing}"
|
|
988
|
+
)
|
|
989
|
+
assert "77e7f0ea54d8e9748f2debfd5a8f49739dd89b66" in text
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|