Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 0 additions & 23 deletions scripts/reviewer_bot_lib/lifecycle.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,9 @@
from __future__ import annotations

import hashlib
import json
from copy import deepcopy
from dataclasses import dataclass
from datetime import datetime, timezone
from pathlib import Path

from . import assignment_flow
from .config import CODING_GUIDELINE_LABEL, TRANSITION_NOTICE_MARKER_PREFIX
Expand Down Expand Up @@ -52,26 +50,6 @@ def _semantic_digest(value: str) -> str:
return hashlib.sha256(_normalize_comment_body(value).encode("utf-8")).hexdigest()


def _write_transition_notice_marker_cutover(bot) -> None:
config_dir_value = bot.get_config_value("OPENCODE_CONFIG_DIR").strip()
if not config_dir_value:
return
config_dir = Path(config_dir_value)
artifact_path = config_dir / "reviewer-bot" / "issue-428-reminder-remediation" / "transition-notice-marker-cutover.json"
artifact_path.parent.mkdir(parents=True, exist_ok=True)
artifact_path.write_text(
json.dumps(
{
"artifact_id": "transition-notice-marker-cutover",
"completed_at": bot.clock.now().isoformat(),
"state_issue_number": bot.state_issue_number(),
},
indent=2,
) + "\n",
encoding="utf-8",
)


def handle_transition_notice(bot, state: dict, issue_number: int, reviewer: str) -> bool:
from .overdue import (
_clear_transport_failure,
Expand Down Expand Up @@ -152,7 +130,6 @@ def handle_transition_notice(bot, state: dict, issue_number: int, reviewer: str)
return True
return _record_transport_failure(bot, review_data, issue_number, phase="transition_post", result=post_result)
changed = _clear_transport_failure(bot, review_data, issue_number, phase="transition_post") or changed
_write_transition_notice_marker_cutover(bot)
record_transition_notice_sent(
review_data,
bot.datetime.now(bot.timezone.utc).isoformat(),
Expand Down
61 changes: 0 additions & 61 deletions tests/contract/reviewer_bot/test_stage2_completion_gate.py

This file was deleted.

2 changes: 1 addition & 1 deletion tests/fixtures/equivalence/blast_radius/review.json
Original file line number Diff line number Diff line change
Expand Up @@ -280,7 +280,7 @@
"scripts/reviewer_bot_lib/deferred_gap_bookkeeping.py` owns `DeferredGapRecord` and `ReconciledSourceEventRecord",
"scripts/reviewer_bot_lib/sweeper_observer_correlation.py` owns `ObserverDiscoveryWatermark",
"scripts/reviewer_bot_core/review_state_machine.py` does not default, clear, or reshape the retained sidecar subtree",
"$OPENCODE_CONFIG_DIR/reviewer-bot/maintainability-remediation/g0f-persisted-record-inventory.json` names one schema owner, one constructor owner, one retained sidecar subtree path, exact record fields, and exact closed status or result families for the changed field"
"tests/contract/reviewer_bot/test_review_state_contract.py` and `scripts/reviewer_bot_core/state_adapters.py` together name the retained review-entry schema owner, sidecar subtree path, exact record fields, and closed compatibility shapes for the changed field"
]
},
{
Expand Down
29 changes: 1 addition & 28 deletions tests/unit/reviewer_bot/test_lifecycle.py
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ def test_check_overdue_reviews_skips_transition_after_transition_notice_sent(mon
assert maintenance.check_overdue_reviews(runtime, state) == []


def test_handle_transition_notice_records_transition_notice_sent_at_once(monkeypatch):
def test_handle_transition_notice_records_transition_notice_sent_at_once_without_external_config(monkeypatch):
runtime = FakeReviewerBotRuntime(monkeypatch)
state = make_state()
review = review_state.ensure_review_entry(state, 42, create=True)
Expand Down Expand Up @@ -121,33 +121,6 @@ def test_handle_transition_notice_message_does_not_claim_reassignment(monkeypatc
assert "/pass" in posted[0]


@pytest.mark.parametrize("config_value", [None, ""])
def test_handle_transition_notice_skips_cutover_artifact_write_when_opencode_config_dir_is_blank_or_unset(
monkeypatch, tmp_path, config_value
):
monkeypatch.chdir(tmp_path)
runtime = FakeReviewerBotRuntime(monkeypatch)
state = make_state()
review_state.ensure_review_entry(state, 42, create=True)
runtime.github.post_comment_result = lambda issue_number, body: runtime.GitHubApiResult(
201,
{},
{},
"created",
True,
None,
0,
None,
)
if config_value is not None:
runtime.set_config_value("OPENCODE_CONFIG_DIR", config_value)

assert lifecycle.handle_transition_notice(runtime, state, 42, "alice") is True
assert not (
tmp_path / "reviewer-bot" / "maintainability-remediation" / "transition-notice-marker-cutover.json"
).exists()


def test_l1_fake_runtime_and_bootstrap_keep_override_wiring_explicit_without_canonical_introspection():
fake_runtime_text = Path("tests/fixtures/fake_runtime.py").read_text(encoding="utf-8")
bootstrap_text = Path("scripts/reviewer_bot_lib/bootstrap_runtime.py").read_text(encoding="utf-8")
Expand Down
Loading