diff --git a/README.md b/README.md index 55491e9..ced268c 100644 --- a/README.md +++ b/README.md @@ -20,16 +20,24 @@ python3 -m src.release_engine \ --dry-run ``` -Execute one ticket: +Execute one ticket after implementing and committing its change directly on +the deterministic branch printed by `--dry-run`: ```bash -export RELEASE_AGENT_COMMAND='codex exec "Implement Gitea issue #{issue_number}: {issue_title}. Follow the issue body and run tests."' +export GITEA_TOKEN='' +export RELEASE_AGENT_COMMAND=true python3 -m src.release_engine \ --repo stackchain/stackchain-dashboard \ --agent timmy \ + --issue 19 \ --test-command 'python3 -m pytest tests/ -q' ``` -Required secret: `GITEA_TOKEN`. Durable state defaults to -`.release-engine/state.json`. Full behavior and safety gates are documented in -[`docs/release-engine-spec.md`](docs/release-engine-spec.md). \ No newline at end of file +`GITEA_TOKEN` needs issue and repository write scopes. The engine verifies the +claim, reruns the test command, pushes the branch, and opens a PR containing +`Closes #19` plus test evidence. Replace `19` with the selected issue number; +do not run without `--issue` when processing a preselected ticket. + +Durable state defaults to `.release-engine/state.json`. Full behavior and +safety gates are documented in +[`docs/release-engine-spec.md`](docs/release-engine-spec.md). diff --git a/tests/test_readme.py b/tests/test_readme.py new file mode 100644 index 0000000..c9cf911 --- /dev/null +++ b/tests/test_readme.py @@ -0,0 +1,12 @@ +from pathlib import Path + + +README = Path(__file__).parents[1] / "README.md" + + +def test_release_worker_instructions_use_direct_agent_execution(): + text = README.read_text() + + assert "codex" not in text.lower() + assert "RELEASE_AGENT_COMMAND=true" in text + assert "--issue 19" in text