|
| 1 | +# Optional Beads execution queue |
| 2 | + |
| 3 | +Beads can be layered onto this harness as a local execution queue for teams that |
| 4 | +want dependency-aware task planning, agent handoffs, or ready/blocked views while |
| 5 | +still keeping GitHub Issues as the external source of truth. |
| 6 | + |
| 7 | +This document is intentionally conservative: it adds Beads guidance without |
| 8 | +replacing the repository's existing GitHub issue and PR process. |
| 9 | + |
| 10 | +## Review of existing GitHub issue guidance |
| 11 | + |
| 12 | +The current harness already treats GitHub as the public planning and merge |
| 13 | +record: |
| 14 | + |
| 15 | +- `.github/ISSUE_TEMPLATE/bug.md`, `feature.md`, and `eval-regression.md` |
| 16 | + define the supported intake paths, and blank issues are disabled in |
| 17 | + `.github/ISSUE_TEMPLATE/config.yml`. |
| 18 | +- `CONTRIBUTING.md` requires one issue per branch, short-lived branches named |
| 19 | + `<type>/<issue-number>-<kebab-title>`, and green CI plus review before merge. |
| 20 | +- `.github/pull_request_template.md` requires What & why, Test plan, |
| 21 | + Invariants affected, supply-chain surface, Screenshots when relevant, and a |
| 22 | + linked issue. |
| 23 | +- `CLAUDE.md` and `docs/DEVELOPMENT.md` describe the same one-issue, |
| 24 | + one-branch, `develop` to `main` release flow for agent and human operators. |
| 25 | +- `docs/TASKS.md` is a project-local planning map cross-referenced with GitHub |
| 26 | + issues and the project board. |
| 27 | + |
| 28 | +There is no Beads-specific policy in the base harness today. Any Beads addition |
| 29 | +must therefore be additive and must not make GitHub issue state ambiguous. |
| 30 | + |
| 31 | +## GitHub Issues vs Beads |
| 32 | + |
| 33 | +| System | Owns | Does not own | |
| 34 | +|---|---|---| |
| 35 | +| GitHub Issues | Public backlog, user-facing requirements, labels, project board state, discussion, acceptance criteria, links from PRs, and final issue closure. | Local agent claims, transient execution notes, or dependency scheduling that would be noisy in the public issue. | |
| 36 | +| Beads | Local execution queue, ready/blocked views, dependency graph, implementation notes, reviewer handoff notes, and restart-safe task claims. | The canonical requirement, public status, release notes, or authority to close a GitHub issue. | |
| 37 | + |
| 38 | +The rule is simple: **GitHub answers what work exists and whether it is |
| 39 | +externally done; Beads answers what the local execution system should pick up |
| 40 | +next.** |
| 41 | + |
| 42 | +## Sync contract |
| 43 | + |
| 44 | +When using Beads with this harness: |
| 45 | + |
| 46 | +1. Create or confirm the GitHub issue first. |
| 47 | +2. Mirror the issue into Beads with an immutable external reference: |
| 48 | + - GitHub repository owner/name. |
| 49 | + - GitHub issue number. |
| 50 | + - GitHub issue URL. |
| 51 | + - Original issue title. |
| 52 | +3. Use Beads for local status only: `ready`, `in_progress`, `blocked`, |
| 53 | + `review`, or `done` are execution states, not replacements for the GitHub |
| 54 | + issue state. |
| 55 | +4. Put the Bead id in local notes, branch notes, or PR body when useful, but |
| 56 | + keep `Closes #<issue>` pointing at the GitHub issue. |
| 57 | +5. Do not close a GitHub issue because a Bead is marked done. Close only after |
| 58 | + the PR is merged, required checks are green, any required manual or browser |
| 59 | + validation is recorded, and a human-readable note has been added to the |
| 60 | + issue or PR. |
| 61 | + |
| 62 | +If the GitHub issue changes after import, update the Bead from GitHub before |
| 63 | +continuing. GitHub wins on scope, acceptance criteria, and user-visible status. |
| 64 | + |
| 65 | +## Recommended Bead fields |
| 66 | + |
| 67 | +A Bead should carry enough information for a new agent or contributor to resume |
| 68 | +without reopening every browser tab: |
| 69 | + |
| 70 | +| Field | Purpose | |
| 71 | +|---|---| |
| 72 | +| `external_ref` | GitHub issue URL, for example `https://github.com/owner/repo/issues/123`. | |
| 73 | +| `github_issue` | Numeric issue id used by branches and PRs. | |
| 74 | +| `acceptance` | The current acceptance criteria copied or summarized from GitHub. | |
| 75 | +| `dependencies` | Other Beads or GitHub issues that must land first. | |
| 76 | +| `status` | Local execution state. | |
| 77 | +| `owner` | Optional local agent or human claim. | |
| 78 | +| `evidence` | Paths or URLs for test output, review notes, screenshots, or deploy checks. | |
| 79 | +| `closeout` | Merge SHA, PR URL, and verification notes once complete. | |
| 80 | + |
| 81 | +Avoid storing secrets, tokens, credentials, private customer data, or raw |
| 82 | +production payloads in Beads. Treat Beads data as local operational metadata. |
| 83 | + |
| 84 | +## PR discipline when Beads are used |
| 85 | + |
| 86 | +The existing PR template still applies. Add Beads information without deleting |
| 87 | +any required section: |
| 88 | + |
| 89 | +- `Linked issue` remains `Closes #<issue>`. |
| 90 | +- Mention the Bead id or local queue reference under `What & why` or the |
| 91 | + optional Beads section. |
| 92 | +- Include Beads-derived evidence paths in `Test plan` only when they are useful |
| 93 | + to a reviewer. |
| 94 | +- If the Bead changed scope, update the GitHub issue before asking for review. |
| 95 | +- If the Bead was blocked by an external dependency, note that in the PR or |
| 96 | + issue rather than hiding it in the local queue. |
| 97 | + |
| 98 | +## Local artifact hygiene |
| 99 | + |
| 100 | +Beads state is usually local execution metadata. Do not commit raw Beads |
| 101 | +databases, scratch exports, or agent logs by default. Commit only intentional |
| 102 | +summaries or docs that reviewers need. |
| 103 | + |
| 104 | +If a downstream project decides to version Beads state, document that policy in |
| 105 | +that project and make sure secret scanning, review, and retention expectations |
| 106 | +are explicit. |
| 107 | + |
| 108 | +## Closure checklist |
| 109 | + |
| 110 | +Before marking a Bead done: |
| 111 | + |
| 112 | +- The GitHub issue is still the correct external requirement. |
| 113 | +- The PR links the GitHub issue and, where useful, the Bead id. |
| 114 | +- Required CI checks passed or have documented non-applicability. |
| 115 | +- Required review happened according to repository policy. |
| 116 | +- Any requested browser, deploy, eval, or security evidence is attached or |
| 117 | + linked. |
| 118 | +- The GitHub issue receives a closeout note before or during closure. |
| 119 | + |
| 120 | +Beads improve local throughput only if they reduce ambiguity. If a Bead and a |
| 121 | +GitHub issue disagree, stop and reconcile them before implementation continues. |
0 commit comments