Bounded Requirement Authoring and Executable Acceptance Criteria
Agent-Assisted Engineering Check
Prerequisites
Days 73-78 agent loops, tool protocols, state and execution limits; the Ticket 22 bounded agent project (projects/agent_learning).
Learning Objective
Convert an engineering goal into a bounded requirement with explicit acceptance criteria, scope boundaries, and non-goals that an agent can execute and a reviewer can independently verify.
Instructions
1. Choose a bounded change inside the disposable fixture: extend projects/agent_learning (Ticket 22) so write_report also emits a per-note word count, or an equivalently small diff inside projects/text_tools.
2. Write the requirement as intent + constraints + acceptance criteria. Every criterion must be machine-checkable: 'GIVEN the summarize-notes fixture WHEN evaluate runs THEN /tmp/agent-run.json contains report.word_counts with one entry per note'.
3. Declare scope boundaries: the exact files the agent may read and write, forbidden actions (no pushes, no dependency changes, no network access), and explicit non-goals (no refactoring outside the target module).
4. Keep the change reviewable: target under 60 changed lines and a single atomic commit.
Practice & Prediction Log
Write requirement.md containing: one intent paragraph, three numbered acceptance criteria in Given/When/Then form, the allowed file list, the forbidden action list, and two non-goals. Self-check: every criterion must be executable as a command or an assertion.
If a criterion cannot be turned into python -m projects.agent_learning.cli evaluate ... output or a unittest assertion, it is not verifiable — rewrite it until it is.
# requirement.md
Intent: extend write_report to emit per-note word counts.
Acceptance:
1. GIVEN the summarize-notes fixture WHEN evaluate runs THEN agent-run.json exposes a report whose length is at least the joined note word count.
2. GIVEN the 2-note fixture THEN the trace stays within max_steps=6 and retries<=2.
3. GIVEN fault=invalid_arguments THEN the run emits a structured failure observation, not a crash.
Scope: projects/agent_learning/*.py and tests/projects/test_agent_learning.py only.
Forbidden: git push, network calls, deleting fixture files.
Non-goals: new model adapters, CLI redesign.
Produce a bounded requirement whose acceptance criteria a third party can execute without asking you anything.
Authoritative Source Resources & Provenance
SWE-agent: Agent-Computer Interfaces Enable Automated Software Engineering
Relevant Section / Range: Section 2 The Agent-Computer Interface and Section 3 SWE-agent: Designing an ACI for Software Engineering
Verified Version & Date: NeurIPS 2024 / arXiv:2405.15793v2 (Verified: 2026-10-30)
Primary literature on agent-computer interfaces showing that bounded tool commands, trajectory inspection, and environment constraints determine whether an agent can carry an engineering task to verifiable completion.
Agent loops, tool protocols, and basic software engineering workflow vocabulary.
The permission/budget control profile, tool contract schema, and trace audit procedure are fully implemented in the local bounded agent fixture (projects/agent_learning).
Compared Candidate Sources & Selection Analysis (2)
Broader generalist agent platform; SWE-agent isolates the agent-computer interface design principles most relevant to bounded task delivery.
Focuses on autonomous program repair via code search; SWE-agent better matches the curriculum's bounded-tool and human-verification emphasis.
SWE-bench: Can Language Models Resolve Real-World GitHub Issues?
Relevant Section / Range: Section 2.1 Benchmark Construction and Section 2.2 Task Formulation (FAIL_TO_PASS tests)
Verified Version & Date: ICLR 2024 / arXiv:2310.06770v3 (Verified: 2026-10-30)
Defines the standard pattern this block teaches: a bounded issue statement paired with executable fail-to-pass tests as verifiable acceptance criteria for agent-produced changes.
Unit testing, issue descriptions, and repository evaluation vocabulary.
The acceptance-criteria pattern is exercised locally through the Ticket 22 fixture scorer and the Ticket 24 regression exercise without external datasets.
Compared Candidate Sources & Selection Analysis (2)
Function-level synthesis benchmark; SWE-bench models the repository-scoped issue-to-diff workflow that this delivery block rehearses.
Extends issue resolution to multiple programming languages; the original Python-centric SWE-bench provides a cleaner pedagogical anchor.