At least 8 full-workflow runs triggered via pick-next-issue.sh
KR: goals#36 — 2 configs
Winner: variant-a — higher AC linter pass rate (100% vs 25%)
baseline
Issue count
4
AC linter pass rate
25%
1/4
Total tokens
5,136
Candidate issues (4)
1.Add a scheduled workflow to regularly run pick-next-issue.sh
### Summary -- What & Why We currently don't run pick-next-issue.sh often enough to reach the target number of full-workflow selections. A recurring, automated job will produce repeatable selection events so we can reliably accumulate runs toward the KR. Without automated cadence we risk not reaching the minimum run count before the OKR window closes. ### Acceptance Criteria (pre-merge) - [ ] A workflow manifest is present in the repo that can be triggered manually (workflow_dispatch). - [ ] When the workflow is triggered via workflow_dispatch in CI, the run produces an artifact or repository-visible log file that contains either the text 'Selecting best candidate' (dry-run path) or 'Handing off to full-workflow.sh' (exec path). - [ ] A single manual trigger of the workflow creates at least one new selection log entry that is visible in the repository (artifact or file in logs directory). ### Acceptance Criteria (post-merge) - [ ] Nightly verifies that the repository's workflow logs directory contains at least one new file produced by the scheduled workflow with the string 'Handing off to full-workflow.sh' or 'Selecting best candidate'. ### Prerequisites for Autonomous Execution
2.Create ephemeral candidate-issue generator and run pick-next-issue.sh multiple times in CI
### Summary -- What & Why The agent sometimes has too few or unsuitable issues to select from, causing pick-next-issue.sh to skip or not produce selection output. Generating lightweight ephemeral candidate issues before runs ensures the selector always has candidates and enables repeated runs to accumulate toward the 8-run goal. Without ensuring available candidates, automated runs may be no-ops and won't count. ### Acceptance Criteria (pre-merge) - [ ] A script/check in the repo can be executed in CI that, when run, creates a defined number (configurable) of ephemeral candidate issues via the GitHub API and then invokes pick-next-issue.sh repeatedly. - [ ] When the script is executed in CI, repository-visible logs or artifacts show that each invocation resulted in a selection attempt, with at least one of the invoked runs containing 'Selecting best candidate' or 'Handing off to full-workflow.sh'. - [ ] The created ephemeral issues are labeled or annotated in a predictable way so they can be found and cleaned up by the same script. ### Acceptance Criteria (post-merge) - [ ] Nightly verifies that the logs produced by the CI job contain the expected number of selection entries corresponding to the configured number of ephemeral issues (e.g., N selection entries for N created issues). ### Prerequisites for Autonomous Execution
3.Centralize and persist pick-next selection output to repo-visible logs
### Summary -- What & Why Selection output is currently dispersed across runner stdout and local agent session files, making verification and counting brittle. Centralizing selection events into a small, timestamped repository-visible log makes it easy to prove how many runs produced selections and simplifies automated counting for the KR. Without a centralized record we risk undercounting or losing evidence of runs. ### Acceptance Criteria (pre-merge) - [ ] A deterministic mechanism (invoked by a test script) writes each pick-next-issue.sh selection attempt to a timestamped file in a repository-visible logs directory when executed in CI. - [ ] Executing pick-next-issue.sh via the provided test script creates a new log file containing either 'Selecting best candidate' or 'Handing off to full-workflow.sh' and the selected issue identifier or title. - [ ] The test script is included in the repo and can be invoked in CI to produce reproducible selection logs. ### Acceptance Criteria (post-merge) - [ ] Nightly validates that the centralized logs directory contains structured selection entries and that the total count of entries with selection markers has increased since the previous nightly run. ### Prerequisites for Autonomous Execution
4.Add an idempotent CI job that runs pick-next-issue.sh in a loop to reach multiple selection events
### Summary -- What & Why Manually triggering pick-next-issue.sh repeatedly is time-consuming and error-prone. An idempotent CI job that runs the selector in a loop produces multiple selection events in one reproducible action and helps us reach the 8-run target quickly. Without an automated looping job we may not accumulate runs fast enough. ### Acceptance Criteria (pre-merge) - [ ] A CI job manifest or script exists that, when executed in CI, invokes pick-next-issue.sh repeatedly for a configurable count and writes each invocation's outcome to repository-visible logs. - [ ] Running the CI job once in a CI run produces N separate selection log entries (N is configurable) and none of the runs fail with unhandled errors. - [ ] The job is idempotent: re-running it with the same configuration does not produce conflicting side effects (created ephemeral items are namespaced or cleaned up). ### Acceptance Criteria (post-merge) - [ ] Nightly confirms that the looping CI job has produced multiple selection entries and that the repository log count increased by the expected number after a single run. ### Prerequisites for Autonomous Execution
variant-a
Issue count
2
AC linter pass rate
100%
2/2
Total tokens
4,483
Candidate issues (2)
1.Add a CI job that runs the issue-selection workflow and persists workflow logs
### Summary -- What & Why We currently have too few automated selections of next issues because invocations are manual and inconsistent. Add a small CI job that runs the issue-selection flow in a sandboxed CI environment and writes a workflow log artifact so each run that hands off to the full workflow is recorded. Without this, we'll continue to miss reproducible runs and the KR will remain unachievable. ### Acceptance Criteria (pre-merge) - [ ] New workflow file committed at .github/workflows/pick-next-issue-exec.yml: run bash -lc 'test -f .github/workflows/pick-next-issue-exec.yml || (echo "workflow file missing" && exit 1)' - [ ] Local simulation of the CI job produces a workflow log containing the handoff message: run bash -lc 'mkdir -p logs/workflows && bash -lc "./dev-scripts/simulate-pick-next-exec.sh --ci-sim | tee logs/workflows/pick-next-exec.log" && grep -F "Handing off to full-workflow.sh" logs/workflows/pick-next-exec.log' ### Acceptance Criteria (post-merge) ### Prerequisites for Autonomous Execution
2.Add a lightweight wrapper to run the selection in dry-run mode and save AI session output
### Summary -- What & Why Some valid selections are produced in dry-run mode but their session outputs are not consistently persisted for verification. Provide a small wrapper that runs the selection in dry-run mode and ensures the AI session output (selection summary) is written to a repo-local sessions directory so dry-run selections count toward the KR. If we don't persist these session outputs reliably, valid dry-run selections won't be visible for measurement. ### Acceptance Criteria (pre-merge) - [ ] Wrapper script committed at scripts/run-selection-dry-wrapper.sh: run bash -lc 'test -f scripts/run-selection-dry-wrapper.sh || (echo "wrapper script missing" && exit 1)' - [ ] Running the wrapper locally with a repo-local sessions dir produces a session file containing the selection marker: run bash -lc 'rm -rf claude_sessions && mkdir -p claude_sessions && CLAUDE_SESSION_DIR=$(pwd)/claude_sessions bash scripts/run-selection-dry-wrapper.sh --dry-run | tee claude_sessions/run.log && grep -F "=== Selection ===" claude_sessions/run.log' ### Acceptance Criteria (post-merge) ### Prerequisites for Autonomous Execution