specfuse-loop 0.23.0__tar.gz → 0.23.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.
- {specfuse_loop-0.23.0/specfuse_loop.egg-info → specfuse_loop-0.23.2}/PKG-INFO +1 -1
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/pyproject.toml +1 -1
- specfuse_loop-0.23.2/specfuse/loop/data/VERSION +1 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/loop/labels.py +5 -5
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/loop/loop.py +1 -1
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/loop/red_on_base.py +20 -5
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2/specfuse_loop.egg-info}/PKG-INFO +1 -1
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse_loop.egg-info/SOURCES.txt +1 -0
- specfuse_loop-0.23.2/tests/test_label_description_length.py +64 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_red_on_base_probe.py +70 -0
- specfuse_loop-0.23.0/specfuse/loop/data/VERSION +0 -1
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/LICENSE +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/NOTICE +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/README.md +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/setup.cfg +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/agent/__init__.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/agent/budget.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/agent/diagnose_invoke.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/agent/drafting_answers.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/agent/drafting_invoke.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/agent/drafting_questions.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/agent/driver_command.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/agent/driver_invoke.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/agent/invoke.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/agent/monitoring_read.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/agent/providers/__init__.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/agent/providers/answers.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/agent/providers/bugs.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/agent/providers/feature.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/agent/providers/findings_autofix.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/agent/providers/findings_diagnose.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/agent/providers/triage.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/agent/queue_read.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/agent/repo_detect.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/agent/run.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/agent/severity_backfill.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/agent/state.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/agent/triage_invoke.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/agent/worktree.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/loop/__init__.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/loop/_filelock.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/loop/_miniyaml.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/loop/_wu_sections.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/loop/adopt_feature.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/loop/agent_policy.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/loop/arm_eval.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/loop/arm_sweep.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/loop/arm_txn.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/loop/bug_lane.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/loop/bug_lane_run.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/loop/bug_lane_state.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/loop/build_provenance.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/loop/caller_check.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/loop/changelog.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/loop/closing_requirements.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/loop/cost.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/loop/criteria_state.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/loop/data/CHANGELOG.seed.md +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/loop/data/LEARNINGS.template.md +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/loop/data/docs/concepts/adopting-auto-mode.md +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/loop/data/docs/concepts/architecture-addendum-gates-and-iterative-planning.md +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/loop/data/docs/concepts/autonomy-stop-classes.md +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/loop/data/docs/concepts/ralph-lineage.md +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/loop/data/docs/getting-started.md +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/loop/data/docs/glossary.md +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/loop/data/docs/methodology.md +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/loop/data/docs/skills.md +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/loop/data/gitignore.snippet +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/loop/data/monitoring-secrets-checklist.md +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/loop/data/monitoring.overrides.yml.example +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/loop/data/monitoring.yml.example +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/loop/data/roadmap.template.md +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/loop/data/rules/close-discipline.md +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/loop/data/rules/correlation-ids.md +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/loop/data/rules/design-for-diagnosis.md +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/loop/data/rules/human-output.md +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/loop/data/rules/never-touch.md +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/loop/data/rules/operator-escalation.md +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/loop/data/rules/planning-discipline.md +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/loop/data/rules/result-contract.md +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/loop/data/rules/security-boundaries.md +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/loop/data/rules/verification-discipline.md +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/loop/data/rules-local/README.md +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/loop/data/schemas/driver-event.schema.json +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/loop/data/schemas/event.schema.json +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/loop/data/schemas/events/initiative_created.schema.json +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/loop/data/schemas/events/spec_issue_resolved.schema.json +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/loop/data/schemas/events/spec_issue_routed.schema.json +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/loop/data/schemas/events/spec_validated.schema.json +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/loop/data/templates/DECISIONS.template.md +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/loop/data/templates/GATE.template.md +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/loop/data/templates/LEARNINGS-pending.template.md +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/loop/data/templates/PLAN.template.md +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/loop/data/templates/WU.template.md +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/loop/data/verification.yml.example +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/loop/data/workflows/specfuse-monitor.yml +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/loop/decisions_format.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/loop/driver_edit.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/loop/escalation.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/loop/events_stats.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/loop/gate_commands.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/loop/gate_eval.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/loop/gh_backend.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/loop/gh_features.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/loop/heartbeat.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/loop/judge.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/loop/learnings_distil.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/loop/learnings_query.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/loop/lint_closing.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/loop/lint_monitoring.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/loop/lint_plan.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/loop/lint_roadmap.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/loop/notify.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/loop/notify_escalation.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/loop/notify_sla.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/loop/plan_baseline.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/loop/policy_proposals.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/loop/policy_review.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/loop/prerun.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/loop/prerun_capture.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/loop/promotion.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/loop/rearm_migration.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/loop/replay_spin.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/loop/roadmap_archive.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/loop/scaffold.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/loop/triage.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/loop/upgrade_merge_gate.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/loop/validate_event.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/monitor/__init__.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/monitor/adapters.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/monitor/artifact.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/monitor/autofix.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/monitor/autofix_invoke.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/monitor/autofix_run.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/monitor/autofix_state.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/monitor/cli.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/monitor/diagnose_cli.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/monitor/diagnosis.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/monitor/fingerprint.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/monitor/issues.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/monitor/providers/__init__.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/monitor/providers/_azure_auth.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/monitor/providers/azure_app_insights.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/monitor/providers/azure_service_bus.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/monitor/redaction.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/monitor/schedule.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse_loop.egg-info/dependency_links.txt +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse_loop.egg-info/entry_points.txt +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse_loop.egg-info/requires.txt +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse_loop.egg-info/top_level.txt +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_abandon_feature_skill.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_abandoned_work_reported.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_abandoned_wu_strands_gate.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_adopt_feature.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_agent_budget.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_agent_bug_selection_dedup.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_agent_default_features_root.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_agent_driver_command.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_agent_driver_invoke.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_agent_driver_restart.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_agent_escalation_on_issue.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_agent_escalation_run_state.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_agent_findings_seam.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_agent_invoke_timeout.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_agent_invoke_usage.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_agent_item_worktree.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_agent_lock.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_agent_policy_key_ownership.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_agent_policy_queue.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_agent_policy_schema.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_agent_policy_triage_dial.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_agent_provider_answers.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_agent_provider_bugs.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_agent_provider_feature.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_agent_provider_findings_autofix.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_agent_provider_findings_diagnose.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_agent_provider_isolation.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_agent_provider_triage.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_agent_queue_read.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_agent_relays_driver_output.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_agent_repo_detect.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_agent_run.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_agent_run_progress.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_agent_seam.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_agent_snapshot_refresh.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_agent_state.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_answer_escalation_skill.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_app_insights_adapters.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_archive_ref_reconciliation.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_arm_eval.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_arm_eval_lint_class.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_arm_eval_wiring.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_arm_gate_edits_uncommitted.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_arm_sweep.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_arm_sweep_gate.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_arm_txn.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_arm_wiring.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_artifact_redaction.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_attempt_note_untracked_files.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_attempt_outcome_contract.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_attempt_outcome_emission.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_attention_nonwriting_guard.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_attention_silence_section.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_attention_skill_structure.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_attribution_halt_claims.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_autoclose_deferral_visibility.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_autoclose_gate_note.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_autoclose_stub_states_what_passed.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_autofix_invoke.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_autofix_live.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_autofix_predicate.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_autofix_run.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_autofix_state.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_autosync.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_autosync_consent.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_autosync_firstrun.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_autosync_no_cwd_leak.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_autosync_plugin.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_azure_credential_resolution.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_backend.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_baseline_escalation_message.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_baseline_persistence.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_baseline_probe.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_baseline_provenance.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_baseline_tree_hash_key.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_bash_routing.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_bats_suites_gated.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_binary_verdict.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_binding_block_advisory.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_binding_block_allocation.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_binding_block_budget.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_bookkeeping_commit_crash_run.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_bookkeeping_commit_hook_crash.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_bookkeeping_no_verify.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_brief_covers_every_unit_escalation.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_bug_lane_ci_pending.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_bug_lane_guardrails.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_bug_lane_label_nonfatal.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_bug_lane_labels_registered.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_bug_lane_min_severity.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_bug_lane_policy_contract.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_bug_lane_pr_number_carried.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_bug_lane_preflight_and_dial.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_bug_lane_run.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_bug_lane_state.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_bug_lane_stopped_outcome_pr_number.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_bug_lane_test_paths.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_build_provenance.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_caller_check_ratchet.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_changed_file_test_selection.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_changelog_append_only.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_changelog_collection.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_changelog_release_wiring.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_changelog_schema.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_ci_conclusion_wait.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_ci_runs_every_gate.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_claude_resolution.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_close_b_pending_learnings.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_close_records_feature_oracle.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_close_wu_self_reference.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_closing_deliverable_guard.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_closing_guard_contracts.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_closing_guard_prediction.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_closing_learnings_destination.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_closing_requirements.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_coauthor_trailer_allowlist.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_conditional_reflection.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_console_encoding.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_convergent_iteration.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_convergent_wu_lint.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_correlation_id_override.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_correlation_id_two_surfaces.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_cost_lifetime.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_cost_tracking.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_criteria_per_gate_lint.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_criteria_state.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_criteria_worklist.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_decision_citation_lint.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_decision_followups_discharged.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_decision_override_lint.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_decisions_format.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_default_severity_aliases.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_degraded_oracle.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_deliverable_missing_note.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_deliverable_presence_gate.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_derive_agent_policy_review_mode.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_derive_agent_policy_skill.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_derive_monitoring_discovery.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_derive_monitoring_skill_registration.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_design_for_diagnosis_rule.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_deterministic_refusal_repeat.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_diagnose_headless.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_diagnose_issue_skill.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_diagnosis.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_diagnosis_roundtrip_live.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_dispatch_model_from_fix_scope.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_dispatch_skeleton.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_distilled_accept_step.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_doctor.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_doctor_command_preflight.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_done_feature_gates.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_draft_feature_answers_mode.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_drafting_answer_gate.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_drafting_invoke.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_drafting_question_issue.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_drafting_questions.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_drafting_reply_shape.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_driver_edit_detection.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_driver_event_registry_covers_emitters.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_driver_integration.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_driver_lock.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_driver_module_surface.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_driver_restart_halt_surfaced.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_driver_restart_halt_wiring.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_driver_restart_hold.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_driver_staleness_gate_summary.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_driver_staleness_warning.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_dry_run_no_branch_mutation.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_duration_tracking.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_empty_files_escalation.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_ensure_feature_branch.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_ensure_feature_branch_base.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_escalation_assignee_policy.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_escalation_contract.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_escalation_crash_containment.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_escalation_dedup_search.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_escalation_emit.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_event_gate_full_envelope.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_events_redaction.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_events_stats.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_extra_gates.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_failure_artifact_model.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_failure_signature_fail_prefix.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_failure_signature_skips_log_noise.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_feature_branch_auto_sync.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_feature_branch_squash_merge.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_feature_branch_stale_base.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_feature_id_resolution.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_feature_oracle_e2e.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_feature_provider_drafting_dispatch.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_feature_review_accumulation.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_filelock_portable.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_files_changed_auto_repair.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_find_pr_no_search_index.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_fingerprint.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_fix_bug_diff_self_check.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_fix_bug_headless.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_fix_bug_reads_comments.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_fold_contract_documented.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_followups_artifact.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_force_full_close.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_frontmatter_scalar_quoting.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_gate_broad_run.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_gate_budget.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_gate_budget_post_dispatch.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_gate_commands_needs.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_gate_eval.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_gate_eval_calibration.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_gate_eval_intermediate_wiring.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_gate_eval_repo_flag.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_gate_eval_terminal_wiring.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_gate_report_verdict.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_gh_backend.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_gh_features.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_git_env_isolation.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_gitleaks_pinning.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_groom_backlog_skill.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_guard_refusal_failure_class.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_guard_refusal_failure_excerpt.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_guard_repair_e2e.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_guard_repair_prompt.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_hashed_denylist.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_hashed_denylist_ci.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_heartbeat.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_heartbeat_adapter.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_human_output_rule.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_human_work_unit.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_hygiene_boundary_guidance.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_hyphenated_gate_name.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_ignored_cleanup_before_probe.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_init_integration.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_installed_copy_driver_e2e.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_interpreter_normalization.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_judge_close_path.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_judge_cost.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_judge_cost_fold_committed.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_judge_module.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_judge_path_registry.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_judge_terminal_flip_state.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_label_provisioning_runner_contract.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_label_registry.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_label_registry_covers_consumers.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_language_aware_narrow_selection.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_lazy_baseline_e2e.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_leak_findings_redaction.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_leak_scan.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_leak_scan_content.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_learnings_curate_vendored_promote.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_learnings_distil_cli.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_learnings_query.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_learnings_staging.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_learnings_suggest_signature_filter.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_learnings_weights.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_legacy_4wu_terminal_flips.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_lifecycle_integration.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_lifetime_accounting.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_lint_ac_observable.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_lint_bare_produces_path.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_lint_boundary_consistency.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_lint_boundary_extraction.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_lint_close_intermediate.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_lint_close_verdict_not_predecided.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_lint_close_wu.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_lint_closing.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_lint_closing_criteria.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_lint_closing_criteria_pristine.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_lint_correlation_id.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_lint_correlation_id_close_intermediate.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_lint_covers_load_wu_invariants.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_lint_feature_oracle_declared.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_lint_gate_proportionality.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_lint_monitoring.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_lint_oracle_env.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_lint_plan_contract_fields.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_lint_plan_errors.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_lint_plan_next_draft.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_lint_plan_relative_import.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_lint_plan_verdict_exempt.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_lint_planning_sections.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_lint_produces_driver_helper.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_lint_produces_satisfiability.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_lint_roadmap.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_lint_sections.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_lint_task_graph_yaml_selection.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_lint_verification_reference.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_live_tests_opt_in.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_load_bearing_close_lint.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_loop_attempt_evidence.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_loop_auto_archive.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_loop_caveman_preamble.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_loop_close_intermediate.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_loop_criteria_skeleton.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_loop_criteria_survival.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_loop_defaults_by_type.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_loop_effort.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_loop_failure_note_cap.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_loop_files_changed_guard.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_loop_gate_budget.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_loop_gate_needs.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_loop_model_alias.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_loop_orchestration.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_loop_post_pass_invariant.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_loop_reset_preserving_events.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_loop_smoke_runner.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_loop_unsandboxed.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_loop_worklist_injection.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_loop_zero_token_guard.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_make_repo_gpgsign_isolation.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_marker_dual_shape.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_maven_failure_excerpt.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_max_attempts_configurable.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_max_open_prs.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_migrate_legacy.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_miniyaml_equivalence.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_miniyaml_negative.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_monitor_cli.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_monitor_issue_lifecycle.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_monitor_runner_surfaces.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_monitoring_bootstrap_artifacts.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_monitoring_cron_dialect.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_monitoring_example.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_monitoring_fenced_blocks.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_monitoring_seed.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_narrow_fallback_warning.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_needs_decision_outcome.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_no_pytest_subprocess.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_notify.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_notify_escalation.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_notify_sla.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_operator_escalation_rule.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_oracle_set_declared.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_oracle_unrunnable_attribution.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_per_run_item_cap_disclosure.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_pick_feature_skill.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_pin_honesty_and_integrity.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_pin_marker_not_inherited.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_pin_marker_spawn_sites.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_plan_baseline.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_planned_cost_lint.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_planning_cost_floor.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_plugin_prose_cross_refs.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_plugin_qualified_dispatch.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_policy_budgets_applied.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_policy_proposals.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_policy_review.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_pr_checks_json_field.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_pr_reference_in_title.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_pre_existing_claims_cite_evidence.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_prep_halt_operator_surface.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_prepare_feature.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_prepare_scaffold_sync.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_prerun_capture.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_prerun_oracles.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_prerun_wiring.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_produced_document_verdict_guard.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_produces_bracket_literal.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_produces_bracket_wildcard.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_produces_field.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_produces_in_diff.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_produces_justification.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_produces_recursive_glob.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_produces_semantics_unified.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_produces_shape.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_progress_forward_note.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_progress_lines_end_to_end.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_promotion_ledger.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_provider_escalation_traces.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_provision_labels.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_queue_stalled_adapter.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_rearm_clears_stale_criteria_state.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_rearm_fold_marker.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_rearm_migration.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_red_baseline_never_reused.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_red_on_base_guardrail.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_redaction_windows_home.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_reflection_required_signals.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_replan_end_to_end.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_replan_event_emission.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_replan_note_collision.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_replan_trigger.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_replan_turn_contract.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_replay_spin.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_required_checks.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_resolve_base.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_restart_cap_counts_progress.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_result_block.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_result_block_audience.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_resume_command_build.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_retain_on_guard_refusal_docs.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_roadmap_add_skill.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_roadmap_archive_cli.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_roadmap_archive_shim.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_roadmap_archive_skill.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_roadmap_archive_skill_delegates.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_roadmap_link_gate.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_roadmap_row_parser.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_ruff_verdict_lines.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_rule_import_convergence.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_run_level_failure_breaker.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_scaffold_data_in_sync.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_scaffold_doc_hygiene.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_scaffold_docs.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_scaffold_init.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_scaffold_label_provisioning.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_scaffold_manifest.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_scaffold_resources.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_scaffold_seed_sanity.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_scaffold_skew_halts.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_scaffold_upgrade.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_scaffold_wiring.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_schedule_dialect.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_seed_documents_prerun_keys.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_service_bus_dlq_adapter.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_session_env_preflight.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_severity_aliases.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_severity_backfill_apply.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_severity_backfill_end_to_end.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_severity_backfill_limit.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_severity_backfill_marker.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_severity_backfill_run.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_severity_label_projection.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_severity_reconciliation.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_severity_rubric.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_shipped_templates_parse.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_skill_discovery_links.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_skills_vendored_in_sync.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_spinning_rearm_gate.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_spinout_brief_end_to_end.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_spinout_brief_replan_option.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_squash_commit_hook_crash.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_stop_rationale_captured.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_stranded_halt_cause.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_surefire_run_level_signature.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_surefire_verdict_lines.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_template_closing_shapes.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_terminal_flip_ownership.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_terminal_flips.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_terminal_gate_message.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_tiered_verification_e2e.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_timeout_kill_portable.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_triage.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_triage_apply.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_triage_severity_classify.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_triage_severity_end_to_end.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_triage_severity_write.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_triage_skill_contract.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_triage_skips_agent_escalations.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_tsc_verdict_lines.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_umbrella_version_resolution.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_unterminated_frontmatter.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_untracked_feature_folder.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_untracked_file_absorption.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_upgrade_integration.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_upgrade_merge_gate.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_validate_event.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_validate_event_driver_types.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_verdict_coupling.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_verify_empty_gate_set.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_version_consistency.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_version_skew.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_windows_gate_exec.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_worktree_restore.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_wu_execution_metadata.py +0 -0
- {specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/tests/test_wu_template_renders_lintable.py +0 -0
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "specfuse-loop"
|
|
7
|
-
version = "0.23.
|
|
7
|
+
version = "0.23.2"
|
|
8
8
|
description = "Local-first executor for the Specfuse Plan + Work Unit gate-cycle methodology."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.10"
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
0.23.2
|
|
@@ -194,8 +194,8 @@ LABEL_REGISTRY: tuple[LabelSpec, ...] = (
|
|
|
194
194
|
name=bug_lane.DECLINE_LABELS[bug_lane.REASON_CI_PENDING],
|
|
195
195
|
colour="fbca04",
|
|
196
196
|
description=(
|
|
197
|
-
"Bug-lane auto-merge declined: CI
|
|
198
|
-
"
|
|
197
|
+
"Bug-lane auto-merge declined: CI still pending at the deadline; "
|
|
198
|
+
"re-run once it concludes"
|
|
199
199
|
),
|
|
200
200
|
consumer="loop/bug_lane_run.py",
|
|
201
201
|
),
|
|
@@ -203,8 +203,8 @@ LABEL_REGISTRY: tuple[LabelSpec, ...] = (
|
|
|
203
203
|
name=bug_lane.DECLINE_LABELS[bug_lane.REASON_TEST_NOT_RED_ON_BASE],
|
|
204
204
|
colour="fbca04",
|
|
205
205
|
description=(
|
|
206
|
-
"Bug-lane auto-merge declined: the
|
|
207
|
-
"
|
|
206
|
+
"Bug-lane auto-merge declined: the new test passes at the merge "
|
|
207
|
+
"base, so it proves nothing"
|
|
208
208
|
),
|
|
209
209
|
consumer="loop/bug_lane_run.py",
|
|
210
210
|
),
|
|
@@ -213,7 +213,7 @@ LABEL_REGISTRY: tuple[LabelSpec, ...] = (
|
|
|
213
213
|
colour="fbca04",
|
|
214
214
|
description=(
|
|
215
215
|
"Bug-lane auto-merge declined: the red-on-base check was required "
|
|
216
|
-
"and could not be run
|
|
216
|
+
"and could not be run"
|
|
217
217
|
),
|
|
218
218
|
consumer="loop/bug_lane_run.py",
|
|
219
219
|
),
|
|
@@ -125,7 +125,7 @@ SPECFUSE_DIR = Path(".specfuse")
|
|
|
125
125
|
REPO_ROOT = SPECFUSE_DIR.parent
|
|
126
126
|
FEATURES_DIR = SPECFUSE_DIR / "features"
|
|
127
127
|
VERIFICATION_PATH = SPECFUSE_DIR / "verification.yml"
|
|
128
|
-
DRIVER_VERSION = "0.23.
|
|
128
|
+
DRIVER_VERSION = "0.23.2"
|
|
129
129
|
# Oldest scaffold layout this driver can drive. init.sh stamps the scaffold's own
|
|
130
130
|
# version into `.specfuse/VERSION`; check_scaffold_version() fails loud at startup if
|
|
131
131
|
# the consumer's scaffold is older than this, pointing at `specfuse upgrade`. Bump
|
|
@@ -27,6 +27,13 @@ Three deliberate constraints:
|
|
|
27
27
|
* **Never guess the command.** The operator declares it. A guessed command that
|
|
28
28
|
silently matched no tests would exit non-zero, read as "red on base", and
|
|
29
29
|
wave every PR through -- strictly worse than the gap it was meant to close.
|
|
30
|
+
* **Run it through a shell.** Operator-authored commands use pipes, `||`, `$(...)`
|
|
31
|
+
and inline environment overrides, exactly as the gate commands in
|
|
32
|
+
`verification.yml` do -- `_run_gate_set` runs those with `shell=True` for the
|
|
33
|
+
same stated reason. A first cut of this module used `shlex.split` and no
|
|
34
|
+
shell, which could not express the command of the very repository it was
|
|
35
|
+
built for: every merge would have declined `red_on_base_unverified` while
|
|
36
|
+
looking configured.
|
|
30
37
|
* **Fail closed.** Every unknown returns `None`, which the guardrail reads as
|
|
31
38
|
unverified and declines. An unverifiable claim is not a satisfied one.
|
|
32
39
|
|
|
@@ -77,9 +84,16 @@ def test_was_red_on_base(
|
|
|
77
84
|
"""`True` if *test_files* fail at *base_sha*, `False` if they pass, else `None`.
|
|
78
85
|
|
|
79
86
|
`command_template` is the operator's own command with a `{tests}`
|
|
80
|
-
placeholder
|
|
81
|
-
|
|
82
|
-
|
|
87
|
+
placeholder, run through `sh -c` so pipes, `||` and `$(...)` all work --
|
|
88
|
+
a Maven repository needs `$(...)` just to turn the changed file paths into
|
|
89
|
+
the class names `-Dtest=` accepts. Absent, this returns `None` and the
|
|
90
|
+
merge declines: see the module docstring on why guessing is worse than the
|
|
91
|
+
gap.
|
|
92
|
+
|
|
93
|
+
`sh -c` rather than `subprocess(shell=True)` so the command still arrives
|
|
94
|
+
through the injected runner as an argv, which is what makes this testable
|
|
95
|
+
without executing anything. It also means the template is POSIX shell; a
|
|
96
|
+
Windows runner would need its own spelling, and none is invented here.
|
|
83
97
|
|
|
84
98
|
`None` means "could not establish", never "fine". A worktree that will not
|
|
85
99
|
create, a runner that raises, no declared command and no test file in the
|
|
@@ -103,9 +117,10 @@ def test_was_red_on_base(
|
|
|
103
117
|
return None
|
|
104
118
|
|
|
105
119
|
try:
|
|
106
|
-
rendered = command_template.replace(
|
|
120
|
+
rendered = command_template.replace(
|
|
121
|
+
"{tests}", " ".join(shlex.quote(p) for p in files))
|
|
107
122
|
try:
|
|
108
|
-
result = runner(
|
|
123
|
+
result = runner(["sh", "-c", rendered], cwd=str(root), check=False)
|
|
109
124
|
except Exception: # noqa: BLE001 - same reason as above
|
|
110
125
|
return None
|
|
111
126
|
code = getattr(result, "returncode", None)
|
|
@@ -382,6 +382,7 @@ tests/test_judge_cost_fold_committed.py
|
|
|
382
382
|
tests/test_judge_module.py
|
|
383
383
|
tests/test_judge_path_registry.py
|
|
384
384
|
tests/test_judge_terminal_flip_state.py
|
|
385
|
+
tests/test_label_description_length.py
|
|
385
386
|
tests/test_label_provisioning_runner_contract.py
|
|
386
387
|
tests/test_label_registry.py
|
|
387
388
|
tests/test_label_registry_covers_consumers.py
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Copyright 2026 Specfuse contributors
|
|
3
|
+
# Licensed under the Apache License, Version 2.0. See LICENSE.
|
|
4
|
+
"""Every registered label description fits what GitHub will accept.
|
|
5
|
+
|
|
6
|
+
`gh label create` rejects a description over **100 characters** with
|
|
7
|
+
`HTTP 422: Validation Failed — description is too long (maximum is 100
|
|
8
|
+
characters)`. `provision_labels` reports the failure and carries on, which is
|
|
9
|
+
the right behaviour for one repository being briefly unreachable and the wrong
|
|
10
|
+
outcome entirely for a spec that can never be created anywhere.
|
|
11
|
+
|
|
12
|
+
Measured on a consumer repository at upgrade time:
|
|
13
|
+
|
|
14
|
+
label provisioning — created [], failed ['bug-lane:ci-pending',
|
|
15
|
+
'bug-lane:test-not-red-on-base', 'bug-lane:red-on-base-unverified']
|
|
16
|
+
|
|
17
|
+
`bug-lane:ci-pending` is 101 characters and had been failing in every
|
|
18
|
+
repository since it shipped. Nothing noticed, because the consequence only
|
|
19
|
+
appears later and elsewhere: a declining bug-lane path calls `gh pr edit
|
|
20
|
+
--add-label` against a label that was never created, which is #1420 exactly —
|
|
21
|
+
the failure `tests/test_bug_lane_labels_registered.py` was written for, arriving
|
|
22
|
+
through the one door that test does not watch.
|
|
23
|
+
|
|
24
|
+
That test asserts every declining reason HAS a spec. This one asserts the spec
|
|
25
|
+
is one GitHub will actually accept. A registry entry that cannot be created is
|
|
26
|
+
indistinguishable, at the moment it matters, from no entry at all.
|
|
27
|
+
"""
|
|
28
|
+
|
|
29
|
+
from __future__ import annotations
|
|
30
|
+
|
|
31
|
+
import unittest
|
|
32
|
+
|
|
33
|
+
from specfuse.loop.labels import LABEL_REGISTRY
|
|
34
|
+
|
|
35
|
+
#: GitHub's documented maximum for a label description.
|
|
36
|
+
GITHUB_LABEL_DESCRIPTION_MAX = 100
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
class LabelDescriptionsFitGitHubsLimit(unittest.TestCase):
|
|
40
|
+
|
|
41
|
+
def test_no_description_exceeds_the_limit(self):
|
|
42
|
+
too_long = [
|
|
43
|
+
f"{spec.name}: {len(spec.description)} chars"
|
|
44
|
+
for spec in LABEL_REGISTRY
|
|
45
|
+
if len(spec.description) > GITHUB_LABEL_DESCRIPTION_MAX
|
|
46
|
+
]
|
|
47
|
+
|
|
48
|
+
self.assertEqual(
|
|
49
|
+
too_long, [],
|
|
50
|
+
f"`gh label create` rejects a description over "
|
|
51
|
+
f"{GITHUB_LABEL_DESCRIPTION_MAX} characters with HTTP 422, so "
|
|
52
|
+
f"these labels cannot be created in ANY repository — and a "
|
|
53
|
+
f"declining path that tries to apply one fails the way #1420 did. "
|
|
54
|
+
f"Over the limit:\n " + "\n ".join(too_long),
|
|
55
|
+
)
|
|
56
|
+
|
|
57
|
+
def test_the_registry_is_not_empty(self):
|
|
58
|
+
# Guards the assertion above against passing vacuously if the registry
|
|
59
|
+
# were ever emptied or failed to import.
|
|
60
|
+
self.assertGreater(len(LABEL_REGISTRY), 0)
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
if __name__ == "__main__": # pragma: no cover
|
|
64
|
+
unittest.main()
|
|
@@ -178,5 +178,75 @@ class TheProbe(unittest.TestCase):
|
|
|
178
178
|
self.assertNotIn("reset", argv)
|
|
179
179
|
|
|
180
180
|
|
|
181
|
+
class TheCommandGetsAShell(unittest.TestCase):
|
|
182
|
+
"""Operator commands use shell features; the probe must provide them.
|
|
183
|
+
|
|
184
|
+
The first cut of this module ran `shlex.split(rendered)` with no shell. It
|
|
185
|
+
passed every test above, because none of them used a shell feature — and it
|
|
186
|
+
could not express the command of the repository it was built for. A Maven
|
|
187
|
+
project needs `$(...)` just to turn changed file paths into the class names
|
|
188
|
+
`-Dtest=` accepts, so turning the guardrail on there would have declined
|
|
189
|
+
every merge as `red_on_base_unverified` while looking configured.
|
|
190
|
+
"""
|
|
191
|
+
|
|
192
|
+
def _tmp(self) -> Path:
|
|
193
|
+
tmp = TemporaryDirectory()
|
|
194
|
+
self.addCleanup(tmp.cleanup)
|
|
195
|
+
return Path(tmp.name)
|
|
196
|
+
|
|
197
|
+
def _capture(self, template):
|
|
198
|
+
seen = {}
|
|
199
|
+
|
|
200
|
+
def runner(argv, **kw):
|
|
201
|
+
if argv[:2] == ["git", "worktree"]:
|
|
202
|
+
return SimpleNamespace(returncode=0, stdout="", stderr="")
|
|
203
|
+
seen["argv"] = list(argv)
|
|
204
|
+
return SimpleNamespace(returncode=1, stdout="", stderr="")
|
|
205
|
+
|
|
206
|
+
test_was_red_on_base(
|
|
207
|
+
runner, base_sha="abc123", test_files=["src/test/java/FooTest.java"],
|
|
208
|
+
command_template=template, worktree_root=self._tmp(),
|
|
209
|
+
)
|
|
210
|
+
return seen["argv"]
|
|
211
|
+
|
|
212
|
+
def test_the_command_is_handed_to_a_shell(self):
|
|
213
|
+
argv = self._capture("pytest {tests}")
|
|
214
|
+
|
|
215
|
+
self.assertEqual(["sh", "-c"], argv[:2])
|
|
216
|
+
self.assertEqual(3, len(argv), "the whole command is one shell string")
|
|
217
|
+
|
|
218
|
+
def test_shell_syntax_survives_intact(self):
|
|
219
|
+
template = (
|
|
220
|
+
'./mvnw test -Dtest=$(echo "{tests}" | sed -E "s@.*/([^/]+)\\.java@\\1@")'
|
|
221
|
+
' || { echo failed; exit 1; }'
|
|
222
|
+
)
|
|
223
|
+
|
|
224
|
+
argv = self._capture(template)
|
|
225
|
+
|
|
226
|
+
self.assertIn("$(", argv[2])
|
|
227
|
+
self.assertIn("||", argv[2])
|
|
228
|
+
self.assertIn("|", argv[2])
|
|
229
|
+
|
|
230
|
+
def test_a_path_needing_quoting_is_quoted(self):
|
|
231
|
+
seen = {}
|
|
232
|
+
|
|
233
|
+
def runner(argv, **kw):
|
|
234
|
+
if argv[:2] == ["git", "worktree"]:
|
|
235
|
+
return SimpleNamespace(returncode=0, stdout="", stderr="")
|
|
236
|
+
seen["argv"] = list(argv)
|
|
237
|
+
return SimpleNamespace(returncode=1, stdout="", stderr="")
|
|
238
|
+
|
|
239
|
+
test_was_red_on_base(
|
|
240
|
+
runner, base_sha="abc", test_files=["tests/a b.py", "tests/c;d.py"],
|
|
241
|
+
command_template="pytest {tests}", worktree_root=self._tmp(),
|
|
242
|
+
)
|
|
243
|
+
|
|
244
|
+
# Unquoted, `a b.py` would become two arguments and `c;d.py` would end
|
|
245
|
+
# the command — a path the repository controls must not be able to do
|
|
246
|
+
# either.
|
|
247
|
+
self.assertIn("'tests/a b.py'", seen["argv"][2])
|
|
248
|
+
self.assertIn("'tests/c;d.py'", seen["argv"][2])
|
|
249
|
+
|
|
250
|
+
|
|
181
251
|
if __name__ == "__main__": # pragma: no cover
|
|
182
252
|
unittest.main()
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
0.23.0
|
|
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
|
{specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/loop/data/docs/concepts/adopting-auto-mode.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/loop/data/docs/concepts/ralph-lineage.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/loop/data/monitoring-secrets-checklist.md
RENAMED
|
File without changes
|
{specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/loop/data/monitoring.overrides.yml.example
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/loop/data/rules/design-for-diagnosis.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/loop/data/rules/operator-escalation.md
RENAMED
|
File without changes
|
{specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/loop/data/rules/planning-discipline.md
RENAMED
|
File without changes
|
|
File without changes
|
{specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/loop/data/rules/security-boundaries.md
RENAMED
|
File without changes
|
{specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/loop/data/rules/verification-discipline.md
RENAMED
|
File without changes
|
|
File without changes
|
{specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/loop/data/schemas/driver-event.schema.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/loop/data/templates/DECISIONS.template.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{specfuse_loop-0.23.0 → specfuse_loop-0.23.2}/specfuse/loop/data/workflows/specfuse-monitor.yml
RENAMED
|
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
|