CtrlK
BlogDocsLog inGet started
Tessl Logo

jbaruch/coding-policy

General-purpose coding policy for Baruch's AI agents

73

Quality

91%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide

SecuritybySnyk

Low

Low-risk findings worth noting

Overview
Quality
Evals
Security
Files

test_seat_holds.pyskills/herdr-foreman/tests/

"""Developer reservations and busy workers come from owner records, not memory (#483)."""

import copy
import io
import json
import sys
import unittest
from pathlib import Path
from unittest.mock import patch

sys.path.insert(0, str(Path(__file__).resolve().parents[1]))

from foreman.composition import seat_holds
from foreman.errors import UsageError
from foreman.recovery import close_task, developer_reservations, register_task, task_closure, validate_store
from foreman.state import add_assignment, empty_state, load_state, save_state
from tests import test_cli
from tests.test_cli import CliCase

DEV_AT = "2026-09-23T09:05:56+00:00"
REVIEW_AT = "2026-09-23T09:19:43+00:00"
CLOSE_AT = "2026-09-23T11:00:00+00:00"
REOPEN_AT = "2026-09-23T12:00:00+00:00"
MERGED = {"task": "media-77", "outcome": "merged", "evidence": "https://github.com/example/media/pull/77"}


def media_round():
    """The 09:22 near-miss: codex-census developed media-77 and awaits review."""
    state = empty_state()
    add_assignment(state, DEV_AT, "developer", "codex-census", task="media-77")
    add_assignment(state, REVIEW_AT, "reviewer", "claude-review", task="media-77")
    return state


class ReservationTest(unittest.TestCase):
    def test_developer_awaiting_review_is_held_to_its_task(self):
        state = media_round()
        self.assertEqual(developer_reservations(state["recovery"], state["assignments"]), {"codex-census": "media-77"})

    def test_closing_the_task_releases_its_developer(self):
        state = media_round()
        close_task(state["recovery"], state["assignments"], MERGED, CLOSE_AT)
        self.assertEqual(developer_reservations(state["recovery"], state["assignments"]), {})

    def test_a_developer_round_after_closure_reopens_the_hold(self):
        state = media_round()
        close_task(state["recovery"], state["assignments"], MERGED, CLOSE_AT)
        add_assignment(state, REOPEN_AT, "developer", "codex-census", task="media-77", fix_round=1)
        self.assertIsNone(task_closure(state["recovery"], state["assignments"], "media-77"))
        self.assertEqual(developer_reservations(state["recovery"], state["assignments"]), {"codex-census": "media-77"})

    def test_a_fourth_fix_takes_a_fresh_worker_so_nothing_is_held(self):
        state = empty_state()
        add_assignment(state, DEV_AT, "developer", "grok", task="t", fix_round=4)
        self.assertEqual(developer_reservations(state["recovery"], state["assignments"]), {})

    def test_a_later_assignment_of_the_worker_ends_the_hold(self):
        state = media_round()
        add_assignment(state, CLOSE_AT, "tester", "codex-census", task="other-task")
        self.assertEqual(developer_reservations(state["recovery"], state["assignments"]), {})

    def test_another_worker_reopening_the_task_does_not_re_hold_the_first(self):
        state = media_round()
        close_task(state["recovery"], state["assignments"], MERGED, CLOSE_AT)
        add_assignment(state, REOPEN_AT, "developer", "grok", task="media-77")
        self.assertEqual(developer_reservations(state["recovery"], state["assignments"]), {"grok": "media-77"})

    def test_a_malformed_closure_is_refused_rather_than_releasing_anyone(self):
        state = media_round()
        close_task(state["recovery"], state["assignments"], MERGED, CLOSE_AT)
        for broken in ({"outcome": "done", "evidence": "x"}, {"outcome": "merged", "evidence": " "},
                       {"outcome": "merged"}):
            with self.subTest(details=broken):
                store = copy.deepcopy(state["recovery"])
                store["events"][-1]["details"] = broken
                with self.assertRaisesRegex(UsageError, "Task-closed event 1 is malformed"):
                    validate_store(store, state["assignments"])
        validate_store(state["recovery"], state["assignments"])

    def test_replaying_a_closure_after_reopening_does_not_close_again(self):
        state = media_round()
        first = close_task(state["recovery"], state["assignments"], MERGED, CLOSE_AT)
        add_assignment(state, REOPEN_AT, "developer", "codex-census", task="media-77", fix_round=1)
        replay = close_task(state["recovery"], state["assignments"], MERGED, "2026-09-23T13:00:00+00:00")
        self.assertEqual(replay, first)
        self.assertEqual(len(state["recovery"]["events"]), 1)
        self.assertEqual(developer_reservations(state["recovery"], state["assignments"]), {"codex-census": "media-77"})

    def test_repeating_a_closure_is_idempotent_and_a_different_one_is_refused(self):
        state = media_round()
        first = close_task(state["recovery"], state["assignments"], MERGED, CLOSE_AT)
        again = close_task(state["recovery"], state["assignments"], dict(MERGED), REOPEN_AT)
        self.assertEqual(first, again)
        self.assertEqual(len(state["recovery"]["events"]), 1)
        with self.assertRaisesRegex(UsageError, "already closed"):
            close_task(state["recovery"], state["assignments"], {**MERGED, "outcome": "abandoned"}, REOPEN_AT)

    def test_a_tied_or_backdated_closure_is_refused_and_releases_nobody(self):
        for at in (DEV_AT, "2026-09-23T08:00:00+00:00", "2026-09-23T10:05:56+01:00"):
            with self.subTest(at=at):
                state = media_round()
                with self.assertRaisesRegex(UsageError, "does not follow task 'media-77'"):
                    close_task(state["recovery"], state["assignments"], MERGED, at)
                self.assertEqual(state["recovery"]["events"], [])
                self.assertEqual(developer_reservations(state["recovery"], state["assignments"]),
                                 {"codex-census": "media-77"})

    def test_closures_are_selected_by_time_and_ties_are_uncertain(self):
        state = media_round()
        close_task(state["recovery"], state["assignments"], MERGED, REOPEN_AT)
        backfilled = dict(state["recovery"]["events"][0], sequence=2, at=CLOSE_AT,
                          details={"outcome": "abandoned", "evidence": "backfill"})
        state["recovery"]["events"].append(backfilled)
        closure = task_closure(state["recovery"], state["assignments"], "media-77")
        assert closure is not None
        self.assertEqual(closure["at"], REOPEN_AT)
        state["recovery"]["events"][1]["at"] = REOPEN_AT
        with self.assertRaisesRegex(UsageError, "closure chronology is uncertain"):
            task_closure(state["recovery"], state["assignments"], "media-77")

    def test_a_registered_task_abandoned_before_dispatch_can_close(self):
        state = empty_state()
        register_task(state["recovery"], {"task": "early-drop", "base_revision": "a" * 40, "scope": "dropped",
                                          "allowed_paths": ["src/*"], "authorization": {"source": "operator", "quote": "go"}},
                      DEV_AT)
        event = close_task(state["recovery"], state["assignments"],
                           {"task": "early-drop", "outcome": "abandoned", "evidence": "operator dropped it"}, CLOSE_AT)
        self.assertEqual((event["kind"], event["task"]), ("task_closed", "early-drop"))

    def test_malformed_or_unknown_closures_are_refused(self):
        state = media_round()
        for data, message in (({**MERGED, "extra": 1}, "exactly task, outcome and evidence"),
                              ({**MERGED, "outcome": "done"}, "outcome must be one of"),
                              ({**MERGED, "task": "never-dispatched"}, "neither registered nor assigned")):
            with self.subTest(message=message), self.assertRaisesRegex(UsageError, message):
                close_task(state["recovery"], state["assignments"], data, CLOSE_AT)
        self.assertEqual(state["recovery"]["events"], [])


class SeatHoldsTest(unittest.TestCase):
    def test_reserved_developer_is_barred_from_other_tasks(self):
        result = seat_holds(["tester", "reviewer"], "telegram-lint-zero", {"codex-census": "media-77"}, {})
        self.assertEqual(result["exclude"], {"tester": ["codex-census"], "reviewer": ["codex-census"]})
        self.assertIn("close-task", result["rationale"][0])

    def test_reserved_developer_may_take_its_own_fix_and_release(self):
        result = seat_holds(["developer", "release", "reviewer"], "media-77", {"codex-census": "media-77"}, {})
        self.assertEqual(result["exclude"], {"developer": [], "release": [], "reviewer": ["codex-census"]})

    def test_busy_worker_is_barred_from_every_seat(self):
        result = seat_holds(["developer", "reviewer#api"], "t", {}, {"claude": "fleet-deps-admin"})
        self.assertEqual(result["exclude"], {"developer": ["claude"], "reviewer#api": ["claude"]})
        self.assertIn("supervision-resolve", result["rationale"][0])


class PlanHoldsTest(CliCase):
    _client = test_cli.ApplyCommandTest._client

    def plan(self, task="other-task"):
        return self.run_cli(self.base() + ["plan", "--roles", "developer", "--snapshot", str(self.snapshot),
                                           "--task", task])

    def seed(self):
        state = empty_state()
        add_assignment(state, DEV_AT, "developer", "grok", task="media-77")
        save_state(self.state, state)

    def test_plan_skips_the_reserved_developer_and_says_why(self):
        self.seed()
        code, out, err = self.plan()
        self.assertEqual(code, 0, err)
        result = json.loads(out)
        self.assertNotEqual(result["assignments"]["developer"], "grok")
        self.assertTrue(any("reserved as developer for media-77" in line for line in result["rationale"]))

    def test_plan_offers_the_developer_again_once_its_task_closes(self):
        self.seed()
        record = self.tmp / "close.json"
        record.write_text(json.dumps(MERGED), encoding="utf-8")
        code, out, err = self.run_cli(self.base() + ["close-task", "--record", str(record), "--now", CLOSE_AT])
        self.assertEqual(code, 0, err)
        self.assertEqual(json.loads(out)["kind"], "task_closed")
        self.assertEqual(load_state(self.state)["recovery"]["events"][-1]["task"], "media-77")
        self.out, self.err = io.StringIO(), io.StringIO()
        code, out, err = self.plan()
        self.assertEqual(code, 0, err)
        self.assertEqual(json.loads(out)["assignments"]["developer"], "grok")

    def dry_apply(self, *extra, role="developer"):
        self.out, self.err = io.StringIO(), io.StringIO()
        return self.run_cli(self.base() + ["apply", "--composer-settle", "0", "--assignments",
                                           json.dumps({role: "grok"}), "--common", str(self.common),
                                           "--task", "other-task", "--dry-run", *extra]
                            + self.brief_args(role), client=self._client({}))

    def test_apply_refuses_a_plan_whose_worker_became_reserved(self):
        self.seed()
        code, _, err = self.dry_apply()
        self.assertEqual(code, 1)
        self.assertIn("reserved as developer for media-77", err)
        self.assertIn("close-task", err)

    def test_apply_proceeds_once_the_reserved_task_is_closed(self):
        self.seed()
        record = self.tmp / "close.json"
        record.write_text(json.dumps(MERGED), encoding="utf-8")
        self.out, self.err = io.StringIO(), io.StringIO()
        code, _, err = self.run_cli(self.base() + ["close-task", "--record", str(record), "--now", CLOSE_AT])
        self.assertEqual(code, 0, err)
        code, out, err = self.dry_apply()
        self.assertEqual(code, 0, err)
        self.assertEqual(json.loads(out)["steps"][0]["agent"], "grok")

    def test_plan_skips_a_busy_worker(self):
        member = {"active": True, "assignment": {"agent": "grok", "task": "fleet-deps-admin"}}
        with patch("foreman.cli.supervision.load", return_value={"members": [member]}):
            code, out, err = self.plan()
        self.assertEqual(code, 0, err)
        result = json.loads(out)
        self.assertNotEqual(result["assignments"]["developer"], "grok")
        self.assertTrue(any("busy on the active enrollment for task fleet-deps-admin" in line
                            for line in result["rationale"]))


if __name__ == "__main__":
    unittest.main()

skills

herdr-foreman

tests

__init__.py

fakes.py

test_assign.py

test_attention.py

test_billing.py

test_bounded_run.sh

test_capabilities.py

test_capability_routing.py

test_chronology.py

test_churn.py

test_classify.sh

test_claude_native.py

test_cli.py

test_compose_briefs.sh

test_composer.py

test_composition.py

test_config.py

test_continuity_cli.py

test_cost_report.py

test_diagnostics.py

test_engagement.py

test_entrypoints.py

test_foreman_launcher.sh

test_foreman_queue.py

test_foreman_reset.py

test_foreman_seat.py

test_foreman_tier_check.py

test_freeze.py

test_herdr.py

test_historical.py

test_home.py

test_label_workspaces.sh

test_launch.py

test_legacy_recovery.py

test_load_set.py

test_measure.py

test_members.py

test_memory.py

test_oracle.py

test_parsers.py

test_partition.py

test_planner.py

test_probe.py

test_provision_worktree.sh

test_prune_remote_branches.sh

test_prune_report_caches.py

test_prune_result.py

test_prune_worktrees.sh

test_recovery_cli.py

test_recovery.py

test_renderable.py

test_report_contract.py

test_report_delivery.py

test_report_gates.py

test_report_verdict.py

test_resolve_gates.sh

test_resolve_policy_paths.py

test_restoration.py

test_retrospective_runtime.py

test_retrospective.py

test_review_package.py

test_role_clear.py

test_roster.sh

test_round_preflight.sh

test_runnable.py

test_scoring.py

test_script_dir_newline.sh

test_seat_holds.py

test_selection.py

test_skill_invocations.sh

test_slice_scope_parity.py

test_specialist_cli.py

test_specialist_delivery.py

test_specialist_recovery.py

test_specialist_retention.py

test_stale_grok_delivery.py

test_start_judge_worker.py

test_state.py

test_supervision_cli.py

test_supervision_diagnostics.py

test_supervision_gate.py

test_supervision_replay.py

test_supervision.py

test_sweep_worktrees.sh

test_tier_integration.py

test_tiers.py

test_triggers.py

test_typesafe_client.py

test_verdict_gates.py

test_verify_authority.sh

test_wait_report.sh

tier_fixture.py

bounded-run.sh

compose-briefs.sh

config.example.json

foreman-tier-check.py

foreman.sh

label-workspaces.sh

provision-worktree.sh

prune-remote-branches.sh

prune-report-caches.py

prune-worktrees.sh

resolve-gates.sh

resolve-policy-paths.sh

review-package.sh

roster.sh

round-preflight.sh

SKILL.md

start-judge-worker.sh

state-schema.md

sweep-worktrees.sh

verify-authority.sh

wait-report.sh

README.md

tile.json