Files
beads/.beads/beads.jsonl
2025-11-04 11:26:31 -08:00

17 lines
20 KiB
JSON

{"id":"bd-164b","content_hash":"fd9fc7c9e966b68b55c7e60f4b9d4f59581eb79c95c4ae21cf94d2bd8a6fc5f5","title":"Add template support for issue creation","description":"Support creating issues from predefined templates to streamline common workflows like epics, bug reports, or feature proposals.\n\nExample usage:\n bd create --from-template epic \"Phase 3 Features\"\n bd create --from-template bug \"Login failure\"\n bd template list\n bd template create epic\n\nTemplates should include:\n- Pre-filled description structure\n- Suggested priority and type\n- Common labels\n- Design/acceptance criteria sections\n\nImplementation notes:\n- Store templates in .beads/templates/ directory\n- Support YAML or JSON format\n- Ship with built-in templates (epic, bug, feature)\n- Allow custom project-specific templates","status":"closed","priority":1,"issue_type":"feature","created_at":"2025-11-03T18:10:18.985902-08:00","updated_at":"2025-11-03T19:56:41.287303-08:00","closed_at":"2025-11-03T19:56:41.287303-08:00"}
{"id":"bd-1f64","content_hash":"b509afe2d012683f1031c49007d10ebe9f3707c929fb0d5bc7ca46d6298477a7","title":"Add comprehensive tests for config.yaml issue-prefix migration","description":"The GH #209 config.yaml migration lacks test coverage:\n\nMissing tests:\n- config.SetIssuePrefix() edge cases (empty file, comments, malformed YAML)\n- config.GetIssuePrefix() with various config states\n- MigrateConfigToYAML() automatic migration logic\n- bd init writing to config.yaml instead of DB\n- bd migrate DB→config.yaml migration path\n\nTest scenarios needed:\n1. SetIssuePrefix with empty config.yaml\n2. SetIssuePrefix with existing config.yaml (preserves other settings)\n3. SetIssuePrefix with commented issue-prefix line\n4. SetIssuePrefix atomic write (temp file cleanup)\n5. GetIssuePrefix fallback behavior\n6. MigrateConfigToYAML when config.yaml missing prefix but DB has it\n7. MigrateConfigToYAML when both missing (detect from issues)\n8. MigrateConfigToYAML when config.yaml already has prefix (no-op)\n9. Integration test: fresh bd init writes to config.yaml only\n10. Integration test: upgrade from v0.21 DB migrates to config.yaml\n\nPriority 1 because this is a user-facing migration affecting all users upgrading to v0.22.","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-03T22:33:43.08753-08:00","updated_at":"2025-11-03T22:46:16.306565-08:00","closed_at":"2025-11-03T22:46:16.306565-08:00"}
{"id":"bd-1ls","content_hash":"af79708476d560abaac3cbe9c537bcf43c2100dcb1d676954ea604486f75d199","title":"Override test","description":"## Overview\n\n[Describe the high-level goal and scope of this epic]\n\n## Success Criteria\n\n- [ ] Criteria 1\n- [ ] Criteria 2\n- [ ] Criteria 3\n\n## Background\n\n[Provide context and motivation]\n\n## Scope\n\n**In Scope:**\n- Item 1\n- Item 2\n\n**Out of Scope:**\n- Item 1\n- Item 2\n","design":"## Architecture\n\n[Describe the overall architecture and approach]\n\n## Components\n\n- Component 1: [description]\n- Component 2: [description]\n\n## Dependencies\n\n[List external dependencies or constraints]\n","acceptance_criteria":"- [ ] All child issues are completed\n- [ ] Integration tests pass\n- [ ] Documentation is updated\n- [ ] Code review completed\n","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-11-03T20:15:10.01471-08:00","updated_at":"2025-11-03T23:47:58.44067-08:00","closed_at":"2025-11-03T23:47:58.440673-08:00","labels":["epic"]}
{"id":"bd-307","content_hash":"2cc113604477642fff079015c84a0fea383a02c8f80a6ffc645c431e6e0517d4","title":"Multi-repo hydration layer","description":"Build core infrastructure to hydrate database from N repos (N≥1), with smart caching via file mtime tracking and routing writes to correct JSONL based on source_repo metadata.","design":"Components:\n- Config schema for repos.additional\n- source_repo metadata field (which repo owns each issue)\n- Hydration logic (read from N JSONLs)\n- Write routing (write to correct JSONL)\n- Smart caching (file mtime tracking to avoid re-parsing)\n- SQLite DB as cache layer","acceptance_criteria":"1. Can configure N repos via config.toml\n2. Database hydrates from all configured repos\n3. Writes route to correct JSONL via source_repo\n4. File mtime caching prevents re-parsing unchanged JSONLs\n5. Query performance \u003c100ms even with 5-10 polling interval\n6. N=1 (single repo) works unchanged","status":"open","priority":1,"issue_type":"epic","created_at":"2025-11-04T11:21:30.655765-08:00","updated_at":"2025-11-04T11:21:30.655765-08:00","dependencies":[{"issue_id":"bd-307","depends_on_id":"bd-4ms","type":"parent-child","created_at":"2025-11-04T11:22:21.823652-08:00","created_by":"daemon"}]}
{"id":"bd-35c7","content_hash":"28e00b560e08ecbf061e998836f8a1dd11392680b273589341c13e6b267df37c","title":"Add label-based filtering to bd ready command","description":"Allow filtering ready work by labels to help organize work by sprint, week, or category.\n\nExample usage:\n bd ready --label week1-2\n bd ready --label frontend,high-priority\n\nThis helps teams organize work into batches and makes it easier for agents to focus on specific categories of work.\n\nImplementation notes:\n- Add --label flag to ready command\n- Support comma-separated labels (AND logic)\n- Should work with existing ready work logic (unblocked issues)","status":"closed","priority":1,"issue_type":"feature","created_at":"2025-11-03T18:10:18.976536-08:00","updated_at":"2025-11-03T23:47:58.441745-08:00","closed_at":"2025-11-03T23:47:58.441748-08:00"}
{"id":"bd-4ms","content_hash":"f0836ce6280dc4eaa420e4f8f620acfabfce72bc61f87aeae43bf3341d600918","title":"Multi-repo contributor workflow support","description":"Implement separate repository support for OSS contributors to prevent PR pollution while maintaining git ledger and multi-clone sync. Based on contributor-workflow-analysis.md Solution #4.","design":"See docs/contributor-workflow-analysis.md for complete design rationale.\n\nKey architecture:\n- N ≥ 1 repos (single repo default, multi-repo opt-in)\n- VCS-agnostic (git, jj, hg, sapling)\n- Config-based routing (no schema changes)\n- Smart caching (file mtime tracking, SQLite cache)\n- Global namespace (hash-based IDs)\n- Cross-repo dependencies supported","acceptance_criteria":"1. Zero PR pollution - contributor planning never reaches upstream\n2. Git ledger preserved - all repos VCS-tracked\n3. Backward compatible - existing single-repo workflows unchanged\n4. Sub-second query performance with polling\n5. Library API stable - transparent to downstream consumers like VC","status":"open","priority":1,"issue_type":"epic","created_at":"2025-11-04T11:21:19.515776-08:00","updated_at":"2025-11-04T11:21:19.515776-08:00"}
{"id":"bd-4ry","content_hash":"d71a38227ebcb455452f96d07ef100d9c82698aa36c2d4eef5842ca4f1a68fa9","title":"Clarify JSONL size bounds with multi-repo","description":"The contributor-workflow-analysis.md states (line 226): 'Keep beads.jsonl small enough for agents to read (\u003c25k)'\n\nWith multi-repo hydration, it's unclear whether this bound applies to:\n- Each individual JSONL file (likely intention)\n- The total hydrated size across all repos (unclear)\n- Both (most conservative)\n\nClarification needed because:\n- VC monitors .beads/issues.jsonl size to stay under limit\n- With multi-repo, VC needs to know if each additional repo also has 25k limit\n- Agents reading hydrated data need to know total size bounds\n- Performance characteristics depend on total vs per-repo limits\n\nExample scenario:\n- Primary repo: 20k JSONL\n- Planning repo: 15k JSONL\n- Total hydrated: 35k\nIs this acceptable or does it violate the \u003c25k principle?","acceptance_criteria":"- Documentation explicitly states size bound applies per-repo or total\n- Rationale explained (why that bound matters)\n- Guidance for monitoring size with multi-repo\n- If total bound exists, formula provided (e.g., sum of all repos \u003c25k)","status":"open","priority":2,"issue_type":"task","created_at":"2025-11-03T20:24:50.042748-08:00","updated_at":"2025-11-03T20:24:50.042748-08:00"}
{"id":"bd-5c4","content_hash":"d3443a078da2a2f77c3af572c6f43e614b3a62ef0fb87f902529085652df4317","title":"VCS-agnostic sync support","description":"Make bd sync work with multiple VCS types (git, jujutsu, mercurial, sapling) by detecting VCS per repo and using appropriate sync commands, supporting mixed-VCS multi-repo configs.","design":"Features:\n- Detect VCS type per repo (.git, .jj, .hg, .sl)\n- Sync adapters for each VCS type\n- bd sync runs appropriate commands per repo\n- Handle mixed-VCS configs (git + jj + hg)\n- Fallback to manual sync if no VCS detected\n\nExample:\nbd sync auto-detects:\n- . is git → git pull\n- ~/.beads-planning is jj → jj git fetch \u0026\u0026 jj rebase\n- ~/other is hg → hg pull \u0026\u0026 hg update","acceptance_criteria":"1. Detect VCS type per configured repo\n2. bd sync works with git, jj, hg, sapling\n3. Mixed-VCS configs supported\n4. Graceful fallback if no VCS detected\n5. Error messages guide user on manual sync\n6. Pure git workflows unchanged","status":"open","priority":2,"issue_type":"epic","created_at":"2025-11-04T11:22:00.837527-08:00","updated_at":"2025-11-04T11:22:00.837527-08:00","dependencies":[{"issue_id":"bd-5c4","depends_on_id":"bd-4ms","type":"parent-child","created_at":"2025-11-04T11:22:21.817849-08:00","created_by":"daemon"}]}
{"id":"bd-824","content_hash":"c6895598595873d74698771b8687ffbd60999120fed85a5c1d7c2176d7d2976f","title":"Add migration guide for library consumers","description":"The contributor-workflow-analysis.md has excellent migration examples for CLI users (lines 508-549) but lacks examples for library consumers like VC that use beadsLib in Go/TypeScript code.\n\nLibrary consumers need to know:\n- Whether their existing code continues to work unchanged (backward compatibility)\n- How config.toml is automatically read (transparent hydration)\n- When and how to use explicit multi-repo configuration\n- What happens if config.toml doesn't exist (defaults)\n\nExample needed:\n```go\n// Before (v0.17.3)\nstore, err := beadsLib.NewSQLiteStorage(\".beads/vc.db\")\n\n// After (v0.18.0 with multi-repo) - still works!\nstore, err := beadsLib.NewSQLiteStorage(\".beads/vc.db\")\n// Automatically reads .beads/config.toml if present\n\n// Explicit multi-repo (if needed)\ncfg := beadsLib.Config{\n Primary: \".beads/vc.db\",\n Additional: []string{\"~/.beads-planning\"},\n}\nstore, err := beadsLib.NewStorageWithConfig(cfg)\n```","acceptance_criteria":"- Section added to contributor-workflow-analysis.md for library consumers\n- Code examples showing backward compatibility\n- Code examples showing explicit multi-repo configuration\n- Guidance on when library consumers should use multi-repo vs single-repo","status":"open","priority":2,"issue_type":"task","created_at":"2025-11-03T20:24:17.748337-08:00","updated_at":"2025-11-03T20:24:17.748337-08:00"}
{"id":"bd-8hf","content_hash":"c50faf4690b24606603a10f49f898717f2f368fe656afa70180b8f4738ea943c","title":"Auto-routing and maintainer detection","description":"Implement intelligent routing to automatically send new issues to correct repo based on user's maintainer vs contributor status, with discovered issues inheriting parent's source_repo.","design":"Features:\n- Detect maintainer vs contributor (git config, permissions)\n- Config-based routing rules (no schema changes)\n- Auto-route 'bd add' to primary or planning repo\n- Discovered issues inherit parent's source_repo\n- Explicit override via --repo flag\n\nConfig schema:\n[routing]\nmode = \"auto\" # auto | explicit\ndefault = \"~/.beads-planning\"\n[routing.auto]\nmaintainer = \".\"\ncontributor = \"~/.beads-planning\"","acceptance_criteria":"1. Auto-detect maintainer vs contributor status\n2. Route bd add to correct repo automatically\n3. Discovered issues inherit parent's source_repo\n4. --repo flag overrides auto-routing\n5. Config allows explicit routing rules\n6. Works without breaking single-repo workflows","status":"open","priority":1,"issue_type":"epic","created_at":"2025-11-04T11:21:50.961196-08:00","updated_at":"2025-11-04T11:21:50.961196-08:00","dependencies":[{"issue_id":"bd-8hf","depends_on_id":"bd-4ms","type":"parent-child","created_at":"2025-11-04T11:22:24.262815-08:00","created_by":"daemon"}]}
{"id":"bd-8rd","content_hash":"35b240c77c0960acd2810a0ace985b85cdde4d16a2c4af7192a9526434143fa9","title":"Migration and onboarding for multi-repo","description":"Create migration tools, wizards, and documentation to help users adopt multi-repo workflow, with special focus on OSS contributor onboarding and team adoption scenarios.","design":"Components:\n- Migration guide documentation\n- bd migrate command to move issues between repos\n- bd init --contributor wizard for OSS setup\n- bd init --team wizard for team setup\n- Auto-detect scenarios and prompt users\n- Examples for common workflows (OSS, multi-phase, personas)\n\nScenarios:\n1. OSS contributor (fork workflow)\n2. Team member (branch workflow)\n3. Multi-phase development\n4. Multiple personas (architect/implementer)","acceptance_criteria":"1. Migration guide covers all scenarios\n2. bd migrate moves issues with filtering\n3. Init wizards guide common setups\n4. Examples demonstrate key workflows\n5. Auto-detection prompts users when appropriate\n6. Docs updated with multi-repo patterns\n7. Backward compatibility clearly documented","status":"open","priority":2,"issue_type":"epic","created_at":"2025-11-04T11:22:13.491033-08:00","updated_at":"2025-11-04T11:22:13.491033-08:00","dependencies":[{"issue_id":"bd-8rd","depends_on_id":"bd-4ms","type":"parent-child","created_at":"2025-11-04T11:22:21.858002-08:00","created_by":"daemon"}]}
{"id":"bd-e044","content_hash":"bd0f9c72de2d340fb09226f12270115762088ea65c36d2b3ca8a17a51f3311c1","title":"Add mermaid output format for bd dep tree","description":"Add visual dependency graph output using Mermaid format for better visualization of issue relationships.\n\nExample usage:\n bd dep tree --format mermaid \u003cissue-id\u003e\n bd dep tree --format mermaid bd-42 \u003e graph.md\n\nThis would output Mermaid syntax that can be rendered in GitHub, documentation sites, or Mermaid live editor.\n\nImplementation notes:\n- Add --format flag to dep tree command\n- Support 'text' (default) and 'mermaid' formats\n- Mermaid graph should show issue IDs, titles, and dependency types\n- Consider using flowchart LR or graph TD syntax","status":"closed","priority":1,"issue_type":"feature","created_at":"2025-11-03T18:10:18.978383-08:00","updated_at":"2025-11-03T20:48:28.950558-08:00","closed_at":"2025-11-03T20:48:28.950558-08:00"}
{"id":"bd-k58","content_hash":"d4b9e8a12c4870015bb8d8bbe5681db2ab75c09ff4b5bf3be98a60aeb32eb303","title":"Proposal workflow (propose/withdraw/accept)","description":"Implement commands and state machine for moving issues between personal planning repos and canonical upstream repos, enabling contributors to propose work without polluting PRs.","design":"Commands:\n- bd propose \u003cid\u003e [--target \u003crepo\u003e] - Move issue to target repo\n- bd withdraw \u003cid\u003e - Un-propose (move back)\n- bd accept \u003cid\u003e - Maintainer accepts proposal\n\nVisibility states:\n- local: Personal planning only\n- proposed: Staged for upstream PR\n- canonical: Accepted by upstream (default for existing)\n\nOptional visibility field (backward compatible, defaults to canonical)","acceptance_criteria":"1. bd propose moves issue from planning to primary repo\n2. bd withdraw reverses proposal\n3. bd accept (maintainer) finalizes acceptance\n4. Visibility field tracks state (local/proposed/canonical)\n5. Backward compatible - existing issues default to canonical\n6. State transitions are atomic and git-tracked","status":"open","priority":1,"issue_type":"epic","created_at":"2025-11-04T11:21:41.113647-08:00","updated_at":"2025-11-04T11:21:41.113647-08:00","dependencies":[{"issue_id":"bd-k58","depends_on_id":"bd-4ms","type":"parent-child","created_at":"2025-11-04T11:22:21.811261-08:00","created_by":"daemon"}]}
{"id":"bd-u8j","content_hash":"03131b068616b353b1f6c5d96a39f50680bf296629671060a7a364e76e049485","title":"Clarify exclusive lock protocol compatibility with multi-repo","description":"The contributor-workflow-analysis.md proposes per-repo file locking (Decision #7) using flock on JSONL files. However, VC (a downstream library consumer) uses an exclusive lock protocol (vc-195, requires Beads v0.17.3+) that allows bd daemon and VC executor to coexist.\n\nNeed to clarify:\n- Does the proposed per-repo file locking work with VC's existing exclusive lock protocol?\n- Do library consumers like VC need to adapt their locking logic?\n- Can multiple repos be locked atomically for cross-repo operations?\n\nContext: contributor-workflow-analysis.md lines 662-681","acceptance_criteria":"- Documentation explicitly states compatibility or incompatibility with existing lock protocols\n- If incompatible, migration path is documented for library consumers\n- If compatible, example showing coexistence is provided","status":"open","priority":2,"issue_type":"task","created_at":"2025-11-03T20:24:08.257493-08:00","updated_at":"2025-11-03T20:24:08.257493-08:00"}
{"id":"bd-wta","content_hash":"59b0c71f52b597b32340bf5675c0a5efa281d08ffcac72bb3ee7b6e6df58b4cf","title":"Add performance benchmarks for multi-repo hydration","description":"The contributor-workflow-analysis.md asserts sub-second queries (line 702) and describes smart caching via file mtime tracking (Decision #4, lines 584-618), but doesn't provide concrete performance benchmarks.\n\nVC's requirement (from VC feedback section):\n- Executor polls GetReadyWork() every 5-10 seconds\n- Queries must be sub-second (ideally \u003c100ms)\n- Smart caching must avoid re-parsing JSONLs on every query\n\nSuggested performance targets to validate:\n- File stat overhead: \u003c1ms per repo\n- Hydration (when needed): \u003c500ms for typical JSONL (\u003c25k)\n- Query (from cache): \u003c10ms\n- Total GetReadyWork(): \u003c100ms (VC's requirement)\n\nAlso test at scale:\n- N=1 repo (baseline)\n- N=3 repos (typical)\n- N=10 repos (edge case)\n\nThese benchmarks are critical for library consumers like VC that run automated polling loops.","acceptance_criteria":"- Performance benchmark suite created for multi-repo hydration\n- Benchmarks cover file stat, hydration, and query times\n- Tests at N=1, N=3, N=10 repo scales\n- Results documented in contributor-workflow-analysis.md\n- Performance targets met or issues filed for optimization","status":"open","priority":2,"issue_type":"task","created_at":"2025-11-03T20:24:39.331528-08:00","updated_at":"2025-11-03T20:24:39.331528-08:00"}
{"id":"bd-x47","content_hash":"1add411c4d4919dd7179e4e944ebbd9ec3b4672b93f9f6c303ab8fe512e66d09","title":"Add guidance for self-hosting projects","description":"The contributor-workflow-analysis.md is optimized for OSS contributors making PRs to upstream projects. However, it doesn't address projects like VC that use beads for their own development (self-hosting).\n\nSelf-hosting projects differ from OSS contributors:\n- No upstream/downstream distinction (they ARE the project)\n- May run automated executors (not just humans)\n- In bootstrap/early phase (stability matters)\n- Single team/owner (not multiple contributors with permissions)\n\nGuidance needed on:\n- When self-hosting projects should stay single-repo (default, recommended)\n- When they should adopt multi-repo (team planning, multi-phase dev)\n- How automated executors should handle multi-repo (if at all)\n- Special considerations for projects in bootstrap phase\n\nExamples of self-hosting projects: VC (building itself with beads), internal tools, pet projects","acceptance_criteria":"- Section added: 'For Projects Using Beads for Self-Hosting'\n- Clear guidance on when to stay single-repo vs adopt multi-repo\n- Recommendations for automated executor behavior with multi-repo\n- Bootstrap phase considerations documented","status":"open","priority":2,"issue_type":"task","created_at":"2025-11-03T20:24:27.805341-08:00","updated_at":"2025-11-03T20:24:27.805341-08:00"}