diff --git a/batches/examples/README.md b/batches/examples/README.md new file mode 100644 index 000000000..4cbe8cff7 --- /dev/null +++ b/batches/examples/README.md @@ -0,0 +1,8 @@ +# Shift brief examples + +Validator fixtures for `bin/pyauto-brain batch brief --check` +(autonomous-orchestrators phase 2). **Nothing here is a batch record**: none of +it was dispatched, and `scripts/lifecycle.py` reads only `batches/*.md`, never +this folder. The schema they follow is `../AGENTS.md`, "Shift brief +(2026-11-03)". The named task paths are placeholders, so `--check` warns that +they resolve to no prompt; that warning is expected. diff --git a/batches/examples/shift_brief_example.md b/batches/examples/shift_brief_example.md new file mode 100644 index 000000000..c78f2809e --- /dev/null +++ b/batches/examples/shift_brief_example.md @@ -0,0 +1,32 @@ +# Batch 2026-11-04 am +- dispatched: 2026-11-04T08:30Z +- review-at: 2026-11-04T11:30Z # stated by the human; the grant expires here +- shift: morning +- issue: https://github.com/PyAutoLabs/PyAutoMind/issues/1 # the digest is posted here once +- packet: yes +- heart-ack: + - Release YELLOW; monitoring RED +- expected-effects: + - example-member: merges into PyAutoArray and may stale release validation +- brief: + - goals: + - 1. land the next cluster-strong-lensing slice + - 2. clear review-ready glance PRs on PyAutoArray + - tasks: + - draft/feature/autolens/example_named_task.md + - backlog: scoped + - scoped: + - epics: cluster-strong-lensing, autonomous-orchestrators + - tags: jax-gradient + - tiers: notify, glance + - exclude: + - draft/feature/autofit/example_excluded_task.md + - epics: euclid-dr1 + - review-minutes: 45 + - lanes: any local-dev ral + - merge-cap: 3 + - token-budget: 2000000 + - ral-allowance: + - packets: 2 + - partition: ral + - cpu-hours: 64 diff --git a/tests/test_lifecycle_check.py b/tests/test_lifecycle_check.py index 772fec525..d6d3f13fb 100644 --- a/tests/test_lifecycle_check.py +++ b/tests/test_lifecycle_check.py @@ -991,6 +991,20 @@ def test_the_agents_page_is_not_a_batch_record(tmp_path): assert lifecycle.batch_records(tmp_path) == [] +def test_shift_brief_examples_are_not_batch_records(tmp_path): + """`batches/examples/` holds validator fixtures (`batch brief --check`): + nothing in it was dispatched, so a member path there that resolves nowhere + is not drift, and a missing `review-minutes-actual:` is not a warning.""" + examples = tmp_path / "batches" / "examples" + examples.mkdir(parents=True) + (examples / "shift_brief_example.md").write_text( + "# Batch 2026-11-04 am\n- review: batches/reviews/x.md\n- members:\n" + + MEMBER + "\n") + assert lifecycle.batch_records(tmp_path) == [] + assert lifecycle.batch_member_problems(tmp_path) == [] + assert lifecycle.batch_record_warnings(tmp_path) == [] + + def test_a_closed_record_with_no_measured_review_cost_warns(tmp_path): """`review-minutes-actual:` is "the only calibration there is" — without it the budget every batch is planned against never improves."""