forge-workflow 0.0.9 → 0.0.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/commands/dev.md +2 -2
- package/.claude/commands/plan.md +2 -2
- package/.claude/commands/ship.md +2 -2
- package/.claude/commands/status.md +4 -4
- package/.cline/workflows/dev.md +2 -2
- package/.cline/workflows/plan.md +2 -2
- package/.cline/workflows/ship.md +2 -2
- package/.cline/workflows/status.md +4 -4
- package/.codex/skills/dev/SKILL.md +2 -2
- package/.codex/skills/plan/SKILL.md +2 -2
- package/.codex/skills/ship/SKILL.md +2 -2
- package/.codex/skills/status/SKILL.md +4 -4
- package/.cursor/commands/dev.md +2 -2
- package/.cursor/commands/plan.md +2 -2
- package/.cursor/commands/ship.md +2 -2
- package/.cursor/commands/status.md +4 -4
- package/.github/prompts/dev.prompt.md +2 -2
- package/.github/prompts/plan.prompt.md +2 -2
- package/.github/prompts/ship.prompt.md +2 -2
- package/.github/prompts/status.prompt.md +4 -4
- package/.github/workflows/beads-to-github.yml +43 -10
- package/.github/workflows/github-to-beads.yml +10 -7
- package/.kilocode/workflows/dev.md +2 -2
- package/.kilocode/workflows/plan.md +2 -2
- package/.kilocode/workflows/ship.md +2 -2
- package/.kilocode/workflows/status.md +4 -4
- package/.opencode/commands/dev.md +2 -2
- package/.opencode/commands/plan.md +2 -2
- package/.opencode/commands/ship.md +2 -2
- package/.opencode/commands/status.md +4 -4
- package/.roo/commands/dev.md +2 -2
- package/.roo/commands/plan.md +2 -2
- package/.roo/commands/ship.md +2 -2
- package/.roo/commands/status.md +4 -4
- package/AGENTS.md +1 -0
- package/CLAUDE.md +12 -0
- package/bin/forge.js +10 -5
- package/docs/BEADS_GITHUB_SYNC.md +26 -0
- package/docs/TOOLCHAIN.md +130 -148
- package/lib/beads-bootstrap.js +225 -0
- package/lib/beads-health-check.js +55 -10
- package/lib/beads-setup.js +104 -28
- package/lib/beads-sync-scaffold.js +11 -6
- package/lib/commands/_issue.js +11 -1
- package/lib/commands/issues.js +49 -0
- package/lib/commands/recommend.js +22 -1
- package/lib/commands/setup.js +16 -10
- package/lib/commands/status.js +181 -0
- package/lib/commands/team.js +11 -1
- package/lib/commands/test.js +37 -2
- package/lib/commands/validate.js +14 -8
- package/lib/commands/worktree.js +27 -54
- package/lib/dep-guard/keyword-ripple.js +184 -0
- package/lib/detect-worktree.js +9 -10
- package/lib/forge-issues.js +326 -0
- package/lib/issue-sync/authority.js +100 -0
- package/lib/issue-sync/github-pull.js +184 -0
- package/lib/issue-sync/import-primitives.js +98 -0
- package/lib/issue-sync/legacy-link-bridge.js +436 -0
- package/lib/issue-sync/link-store.js +292 -0
- package/lib/issue-sync/project-github.js +123 -0
- package/lib/issue-sync/reconcile.js +195 -0
- package/lib/issue-sync/schema.js +126 -0
- package/lib/lefthook-check.js +5 -2
- package/lib/project-memory.js +564 -0
- package/lib/runtime-health.js +100 -12
- package/lib/smart-status/conflicts.js +205 -0
- package/lib/smart-status/scoring.js +177 -0
- package/lib/status/beads-snapshot.js +102 -0
- package/lib/status/presenter.js +65 -0
- package/lib/workflow/enforce-stage.js +3 -1
- package/lib/workflow/state-manager.js +164 -8
- package/package.json +12 -4
- package/scripts/beads-context.sh +124 -5
- package/scripts/beads-context.test.js +21 -4
- package/scripts/beads-migrate-to-dolt.sh +7 -0
- package/scripts/beads-upgrade-smoke.sh +263 -0
- package/scripts/behavioral-judge.sh +115 -11
- package/scripts/benchmark.js +349 -63
- package/scripts/dep-guard-analyze.js +52 -17
- package/scripts/dep-guard-keyword-ripple.js +29 -0
- package/scripts/dep-guard-render-review.js +86 -0
- package/scripts/dep-guard.sh +45 -232
- package/scripts/forge-team/lib/sync-github.sh +160 -28
- package/scripts/forge-team/tests/sync-github.test.sh +195 -58
- package/scripts/github-beads-sync/index.mjs +122 -98
- package/scripts/github-beads-sync/mapping.mjs +54 -0
- package/scripts/github-beads-sync/reverse-sync-cli.mjs +2 -2
- package/scripts/github-beads-sync/reverse-sync.mjs +31 -7
- package/scripts/lib/beads-migrate-to-dolt.mjs +503 -0
- package/scripts/preflight.sh +181 -0
- package/scripts/smart-status-score.js +31 -0
- package/scripts/smart-status-sessions.js +51 -0
- package/scripts/smart-status.sh +74 -329
- package/scripts/sync-agentic-workflow.js +48 -0
- package/scripts/test-ci-shard.js +244 -0
- package/scripts/test-dashboard.js +188 -52
- package/scripts/test-full-suite.js +186 -0
- package/scripts/test-profile.js +278 -0
- package/scripts/test.js +219 -28
- package/scripts/validate.js +143 -0
- package/scripts/validate.sh +18 -1
package/.claude/commands/dev.md
CHANGED
|
@@ -69,8 +69,8 @@ Do NOT write any code until ALL confirmed:
|
|
|
69
69
|
Before starting the per-task loop, check for cross-developer conflicts:
|
|
70
70
|
|
|
71
71
|
```bash
|
|
72
|
-
# Auto-sync to get latest team state
|
|
73
|
-
|
|
72
|
+
# Auto-sync to get latest team state (non-blocking)
|
|
73
|
+
forge sync || true
|
|
74
74
|
|
|
75
75
|
# Check for conflicts with the current beads issue
|
|
76
76
|
bash scripts/conflict-detect.sh --issue <beads-id>
|
package/.claude/commands/plan.md
CHANGED
|
@@ -57,7 +57,7 @@ Before proceeding to Phase 1, check for cross-developer conflicts:
|
|
|
57
57
|
|
|
58
58
|
```bash
|
|
59
59
|
# Auto-sync to get latest team state
|
|
60
|
-
|
|
60
|
+
forge sync || true
|
|
61
61
|
|
|
62
62
|
# Check for conflicts with this issue's planned work area
|
|
63
63
|
bash scripts/conflict-detect.sh --issue <beads-id>
|
|
@@ -107,7 +107,7 @@ If merge conflicts or unmet dependencies are found:
|
|
|
107
107
|
Before starting planning, verify team identity is mapped:
|
|
108
108
|
|
|
109
109
|
```bash
|
|
110
|
-
|
|
110
|
+
forge team verify 2>&1 || true
|
|
111
111
|
```
|
|
112
112
|
|
|
113
113
|
If verify reports issues, address them before proceeding (the output will include `FORGE_AGENT_7f3a:PROMPT:` directives with exact commands to run).
|
package/.claude/commands/ship.md
CHANGED
|
@@ -166,10 +166,10 @@ After PR is created, sync issue state to GitHub and verify 1:1 mapping:
|
|
|
166
166
|
|
|
167
167
|
```bash
|
|
168
168
|
# Sync issue state to GitHub
|
|
169
|
-
|
|
169
|
+
forge team sync 2>&1 || true
|
|
170
170
|
|
|
171
171
|
# Verify 1:1 mapping
|
|
172
|
-
|
|
172
|
+
forge team verify 2>&1 || true
|
|
173
173
|
```
|
|
174
174
|
|
|
175
175
|
## Example Output
|
|
@@ -20,7 +20,7 @@ This command helps you understand the current state of the project before starti
|
|
|
20
20
|
|
|
21
21
|
```bash
|
|
22
22
|
# Sync team state before showing status
|
|
23
|
-
|
|
23
|
+
forge sync || true
|
|
24
24
|
```
|
|
25
25
|
|
|
26
26
|
### Step 1: Smart Status (ranked issues with conflict detection)
|
|
@@ -28,7 +28,7 @@ bash scripts/sync-utils.sh auto-sync
|
|
|
28
28
|
```bash
|
|
29
29
|
bash scripts/smart-status.sh
|
|
30
30
|
```
|
|
31
|
-
This
|
|
31
|
+
This command dynamically computes and displays all issues ranked by composite score (priority, dependency impact, type, staleness, epic proximity). Output includes active sessions, conflict risk annotations, and grouped categories. No manual querying needed.
|
|
32
32
|
|
|
33
33
|
For full context on any issue: `bd show <id>`
|
|
34
34
|
|
|
@@ -77,10 +77,10 @@ Show current developer's active work and team overview:
|
|
|
77
77
|
|
|
78
78
|
```bash
|
|
79
79
|
# Show my active issues
|
|
80
|
-
|
|
80
|
+
forge team workload --me 2>&1 || true
|
|
81
81
|
|
|
82
82
|
# One-line team summary
|
|
83
|
-
|
|
83
|
+
forge team dashboard 2>&1 | head -5 || true
|
|
84
84
|
```
|
|
85
85
|
|
|
86
86
|
## Next Steps
|
package/.cline/workflows/dev.md
CHANGED
|
@@ -66,8 +66,8 @@ Do NOT write any code until ALL confirmed:
|
|
|
66
66
|
Before starting the per-task loop, check for cross-developer conflicts:
|
|
67
67
|
|
|
68
68
|
```bash
|
|
69
|
-
# Auto-sync to get latest team state
|
|
70
|
-
|
|
69
|
+
# Auto-sync to get latest team state (non-blocking)
|
|
70
|
+
forge sync || true
|
|
71
71
|
|
|
72
72
|
# Check for conflicts with the current beads issue
|
|
73
73
|
bash scripts/conflict-detect.sh --issue <beads-id>
|
package/.cline/workflows/plan.md
CHANGED
|
@@ -54,7 +54,7 @@ Before proceeding to Phase 1, check for cross-developer conflicts:
|
|
|
54
54
|
|
|
55
55
|
```bash
|
|
56
56
|
# Auto-sync to get latest team state
|
|
57
|
-
|
|
57
|
+
forge sync || true
|
|
58
58
|
|
|
59
59
|
# Check for conflicts with this issue's planned work area
|
|
60
60
|
bash scripts/conflict-detect.sh --issue <beads-id>
|
|
@@ -104,7 +104,7 @@ If merge conflicts or unmet dependencies are found:
|
|
|
104
104
|
Before starting planning, verify team identity is mapped:
|
|
105
105
|
|
|
106
106
|
```bash
|
|
107
|
-
|
|
107
|
+
forge team verify 2>&1 || true
|
|
108
108
|
```
|
|
109
109
|
|
|
110
110
|
If verify reports issues, address them before proceeding (the output will include `FORGE_AGENT_7f3a:PROMPT:` directives with exact commands to run).
|
package/.cline/workflows/ship.md
CHANGED
|
@@ -163,10 +163,10 @@ After PR is created, sync issue state to GitHub and verify 1:1 mapping:
|
|
|
163
163
|
|
|
164
164
|
```bash
|
|
165
165
|
# Sync issue state to GitHub
|
|
166
|
-
|
|
166
|
+
forge team sync 2>&1 || true
|
|
167
167
|
|
|
168
168
|
# Verify 1:1 mapping
|
|
169
|
-
|
|
169
|
+
forge team verify 2>&1 || true
|
|
170
170
|
```
|
|
171
171
|
|
|
172
172
|
## Example Output
|
|
@@ -17,7 +17,7 @@ This command helps you understand the current state of the project before starti
|
|
|
17
17
|
|
|
18
18
|
```bash
|
|
19
19
|
# Sync team state before showing status
|
|
20
|
-
|
|
20
|
+
forge sync || true
|
|
21
21
|
```
|
|
22
22
|
|
|
23
23
|
### Step 1: Smart Status (ranked issues with conflict detection)
|
|
@@ -25,7 +25,7 @@ bash scripts/sync-utils.sh auto-sync
|
|
|
25
25
|
```bash
|
|
26
26
|
bash scripts/smart-status.sh
|
|
27
27
|
```
|
|
28
|
-
This
|
|
28
|
+
This command dynamically computes and displays all issues ranked by composite score (priority, dependency impact, type, staleness, epic proximity). Output includes active sessions, conflict risk annotations, and grouped categories. No manual querying needed.
|
|
29
29
|
|
|
30
30
|
For full context on any issue: `bd show <id>`
|
|
31
31
|
|
|
@@ -74,10 +74,10 @@ Show current developer's active work and team overview:
|
|
|
74
74
|
|
|
75
75
|
```bash
|
|
76
76
|
# Show my active issues
|
|
77
|
-
|
|
77
|
+
forge team workload --me 2>&1 || true
|
|
78
78
|
|
|
79
79
|
# One-line team summary
|
|
80
|
-
|
|
80
|
+
forge team dashboard 2>&1 | head -5 || true
|
|
81
81
|
```
|
|
82
82
|
|
|
83
83
|
## Next Steps
|
|
@@ -69,8 +69,8 @@ Do NOT write any code until ALL confirmed:
|
|
|
69
69
|
Before starting the per-task loop, check for cross-developer conflicts:
|
|
70
70
|
|
|
71
71
|
```bash
|
|
72
|
-
# Auto-sync to get latest team state
|
|
73
|
-
|
|
72
|
+
# Auto-sync to get latest team state (non-blocking)
|
|
73
|
+
forge sync || true
|
|
74
74
|
|
|
75
75
|
# Check for conflicts with the current beads issue
|
|
76
76
|
bash scripts/conflict-detect.sh --issue <beads-id>
|
|
@@ -57,7 +57,7 @@ Before proceeding to Phase 1, check for cross-developer conflicts:
|
|
|
57
57
|
|
|
58
58
|
```bash
|
|
59
59
|
# Auto-sync to get latest team state
|
|
60
|
-
|
|
60
|
+
forge sync || true
|
|
61
61
|
|
|
62
62
|
# Check for conflicts with this issue's planned work area
|
|
63
63
|
bash scripts/conflict-detect.sh --issue <beads-id>
|
|
@@ -107,7 +107,7 @@ If merge conflicts or unmet dependencies are found:
|
|
|
107
107
|
Before starting planning, verify team identity is mapped:
|
|
108
108
|
|
|
109
109
|
```bash
|
|
110
|
-
|
|
110
|
+
forge team verify 2>&1 || true
|
|
111
111
|
```
|
|
112
112
|
|
|
113
113
|
If verify reports issues, address them before proceeding (the output will include `FORGE_AGENT_7f3a:PROMPT:` directives with exact commands to run).
|
|
@@ -166,10 +166,10 @@ After PR is created, sync issue state to GitHub and verify 1:1 mapping:
|
|
|
166
166
|
|
|
167
167
|
```bash
|
|
168
168
|
# Sync issue state to GitHub
|
|
169
|
-
|
|
169
|
+
forge team sync 2>&1 || true
|
|
170
170
|
|
|
171
171
|
# Verify 1:1 mapping
|
|
172
|
-
|
|
172
|
+
forge team verify 2>&1 || true
|
|
173
173
|
```
|
|
174
174
|
|
|
175
175
|
## Example Output
|
|
@@ -20,7 +20,7 @@ This command helps you understand the current state of the project before starti
|
|
|
20
20
|
|
|
21
21
|
```bash
|
|
22
22
|
# Sync team state before showing status
|
|
23
|
-
|
|
23
|
+
forge sync || true
|
|
24
24
|
```
|
|
25
25
|
|
|
26
26
|
### Step 1: Smart Status (ranked issues with conflict detection)
|
|
@@ -28,7 +28,7 @@ bash scripts/sync-utils.sh auto-sync
|
|
|
28
28
|
```bash
|
|
29
29
|
bash scripts/smart-status.sh
|
|
30
30
|
```
|
|
31
|
-
This
|
|
31
|
+
This command dynamically computes and displays all issues ranked by composite score (priority, dependency impact, type, staleness, epic proximity). Output includes active sessions, conflict risk annotations, and grouped categories. No manual querying needed.
|
|
32
32
|
|
|
33
33
|
For full context on any issue: `bd show <id>`
|
|
34
34
|
|
|
@@ -77,10 +77,10 @@ Show current developer's active work and team overview:
|
|
|
77
77
|
|
|
78
78
|
```bash
|
|
79
79
|
# Show my active issues
|
|
80
|
-
|
|
80
|
+
forge team workload --me 2>&1 || true
|
|
81
81
|
|
|
82
82
|
# One-line team summary
|
|
83
|
-
|
|
83
|
+
forge team dashboard 2>&1 | head -5 || true
|
|
84
84
|
```
|
|
85
85
|
|
|
86
86
|
## Next Steps
|
package/.cursor/commands/dev.md
CHANGED
|
@@ -66,8 +66,8 @@ Do NOT write any code until ALL confirmed:
|
|
|
66
66
|
Before starting the per-task loop, check for cross-developer conflicts:
|
|
67
67
|
|
|
68
68
|
```bash
|
|
69
|
-
# Auto-sync to get latest team state
|
|
70
|
-
|
|
69
|
+
# Auto-sync to get latest team state (non-blocking)
|
|
70
|
+
forge sync || true
|
|
71
71
|
|
|
72
72
|
# Check for conflicts with the current beads issue
|
|
73
73
|
bash scripts/conflict-detect.sh --issue <beads-id>
|
package/.cursor/commands/plan.md
CHANGED
|
@@ -54,7 +54,7 @@ Before proceeding to Phase 1, check for cross-developer conflicts:
|
|
|
54
54
|
|
|
55
55
|
```bash
|
|
56
56
|
# Auto-sync to get latest team state
|
|
57
|
-
|
|
57
|
+
forge sync || true
|
|
58
58
|
|
|
59
59
|
# Check for conflicts with this issue's planned work area
|
|
60
60
|
bash scripts/conflict-detect.sh --issue <beads-id>
|
|
@@ -104,7 +104,7 @@ If merge conflicts or unmet dependencies are found:
|
|
|
104
104
|
Before starting planning, verify team identity is mapped:
|
|
105
105
|
|
|
106
106
|
```bash
|
|
107
|
-
|
|
107
|
+
forge team verify 2>&1 || true
|
|
108
108
|
```
|
|
109
109
|
|
|
110
110
|
If verify reports issues, address them before proceeding (the output will include `FORGE_AGENT_7f3a:PROMPT:` directives with exact commands to run).
|
package/.cursor/commands/ship.md
CHANGED
|
@@ -163,10 +163,10 @@ After PR is created, sync issue state to GitHub and verify 1:1 mapping:
|
|
|
163
163
|
|
|
164
164
|
```bash
|
|
165
165
|
# Sync issue state to GitHub
|
|
166
|
-
|
|
166
|
+
forge team sync 2>&1 || true
|
|
167
167
|
|
|
168
168
|
# Verify 1:1 mapping
|
|
169
|
-
|
|
169
|
+
forge team verify 2>&1 || true
|
|
170
170
|
```
|
|
171
171
|
|
|
172
172
|
## Example Output
|
|
@@ -17,7 +17,7 @@ This command helps you understand the current state of the project before starti
|
|
|
17
17
|
|
|
18
18
|
```bash
|
|
19
19
|
# Sync team state before showing status
|
|
20
|
-
|
|
20
|
+
forge sync || true
|
|
21
21
|
```
|
|
22
22
|
|
|
23
23
|
### Step 1: Smart Status (ranked issues with conflict detection)
|
|
@@ -25,7 +25,7 @@ bash scripts/sync-utils.sh auto-sync
|
|
|
25
25
|
```bash
|
|
26
26
|
bash scripts/smart-status.sh
|
|
27
27
|
```
|
|
28
|
-
This
|
|
28
|
+
This command dynamically computes and displays all issues ranked by composite score (priority, dependency impact, type, staleness, epic proximity). Output includes active sessions, conflict risk annotations, and grouped categories. No manual querying needed.
|
|
29
29
|
|
|
30
30
|
For full context on any issue: `bd show <id>`
|
|
31
31
|
|
|
@@ -74,10 +74,10 @@ Show current developer's active work and team overview:
|
|
|
74
74
|
|
|
75
75
|
```bash
|
|
76
76
|
# Show my active issues
|
|
77
|
-
|
|
77
|
+
forge team workload --me 2>&1 || true
|
|
78
78
|
|
|
79
79
|
# One-line team summary
|
|
80
|
-
|
|
80
|
+
forge team dashboard 2>&1 | head -5 || true
|
|
81
81
|
```
|
|
82
82
|
|
|
83
83
|
## Next Steps
|
|
@@ -71,8 +71,8 @@ Do NOT write any code until ALL confirmed:
|
|
|
71
71
|
Before starting the per-task loop, check for cross-developer conflicts:
|
|
72
72
|
|
|
73
73
|
```bash
|
|
74
|
-
# Auto-sync to get latest team state
|
|
75
|
-
|
|
74
|
+
# Auto-sync to get latest team state (non-blocking)
|
|
75
|
+
forge sync || true
|
|
76
76
|
|
|
77
77
|
# Check for conflicts with the current beads issue
|
|
78
78
|
bash scripts/conflict-detect.sh --issue <beads-id>
|
|
@@ -59,7 +59,7 @@ Before proceeding to Phase 1, check for cross-developer conflicts:
|
|
|
59
59
|
|
|
60
60
|
```bash
|
|
61
61
|
# Auto-sync to get latest team state
|
|
62
|
-
|
|
62
|
+
forge sync || true
|
|
63
63
|
|
|
64
64
|
# Check for conflicts with this issue's planned work area
|
|
65
65
|
bash scripts/conflict-detect.sh --issue <beads-id>
|
|
@@ -109,7 +109,7 @@ If merge conflicts or unmet dependencies are found:
|
|
|
109
109
|
Before starting planning, verify team identity is mapped:
|
|
110
110
|
|
|
111
111
|
```bash
|
|
112
|
-
|
|
112
|
+
forge team verify 2>&1 || true
|
|
113
113
|
```
|
|
114
114
|
|
|
115
115
|
If verify reports issues, address them before proceeding (the output will include `FORGE_AGENT_7f3a:PROMPT:` directives with exact commands to run).
|
|
@@ -168,10 +168,10 @@ After PR is created, sync issue state to GitHub and verify 1:1 mapping:
|
|
|
168
168
|
|
|
169
169
|
```bash
|
|
170
170
|
# Sync issue state to GitHub
|
|
171
|
-
|
|
171
|
+
forge team sync 2>&1 || true
|
|
172
172
|
|
|
173
173
|
# Verify 1:1 mapping
|
|
174
|
-
|
|
174
|
+
forge team verify 2>&1 || true
|
|
175
175
|
```
|
|
176
176
|
|
|
177
177
|
## Example Output
|
|
@@ -22,7 +22,7 @@ This command helps you understand the current state of the project before starti
|
|
|
22
22
|
|
|
23
23
|
```bash
|
|
24
24
|
# Sync team state before showing status
|
|
25
|
-
|
|
25
|
+
forge sync || true
|
|
26
26
|
```
|
|
27
27
|
|
|
28
28
|
### Step 1: Smart Status (ranked issues with conflict detection)
|
|
@@ -30,7 +30,7 @@ bash scripts/sync-utils.sh auto-sync
|
|
|
30
30
|
```bash
|
|
31
31
|
bash scripts/smart-status.sh
|
|
32
32
|
```
|
|
33
|
-
This
|
|
33
|
+
This command dynamically computes and displays all issues ranked by composite score (priority, dependency impact, type, staleness, epic proximity). Output includes active sessions, conflict risk annotations, and grouped categories. No manual querying needed.
|
|
34
34
|
|
|
35
35
|
For full context on any issue: `bd show <id>`
|
|
36
36
|
|
|
@@ -79,10 +79,10 @@ Show current developer's active work and team overview:
|
|
|
79
79
|
|
|
80
80
|
```bash
|
|
81
81
|
# Show my active issues
|
|
82
|
-
|
|
82
|
+
forge team workload --me 2>&1 || true
|
|
83
83
|
|
|
84
84
|
# One-line team summary
|
|
85
|
-
|
|
85
|
+
forge team dashboard 2>&1 | head -5 || true
|
|
86
86
|
```
|
|
87
87
|
|
|
88
88
|
## Next Steps
|
|
@@ -5,6 +5,7 @@ on:
|
|
|
5
5
|
branches: [master]
|
|
6
6
|
paths:
|
|
7
7
|
- '.beads/**'
|
|
8
|
+
- '.github/beads-snapshots/issues.jsonl'
|
|
8
9
|
|
|
9
10
|
# Serialize with forward-sync to prevent race conditions
|
|
10
11
|
concurrency:
|
|
@@ -34,23 +35,55 @@ jobs:
|
|
|
34
35
|
with:
|
|
35
36
|
fetch-depth: 0
|
|
36
37
|
|
|
38
|
+
- name: Install Beads CLI (pinned to v1.0.0)
|
|
39
|
+
if: env.SKIP != 'true'
|
|
40
|
+
run: |
|
|
41
|
+
BD_VERSION="1.0.0"
|
|
42
|
+
BD_URL="https://github.com/steveyegge/beads/releases/download/v${BD_VERSION}/beads_${BD_VERSION}_linux_amd64.tar.gz"
|
|
43
|
+
mkdir -p "$HOME/.local/bin"
|
|
44
|
+
curl -fsSL "$BD_URL" | tar -xz -C "$HOME/.local/bin" bd
|
|
45
|
+
chmod +x "$HOME/.local/bin/bd"
|
|
46
|
+
echo "$HOME/.local/bin" >> "$GITHUB_PATH"
|
|
47
|
+
|
|
37
48
|
- name: Detect and close
|
|
38
49
|
if: env.SKIP != 'true'
|
|
39
50
|
env:
|
|
40
51
|
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
41
52
|
BEFORE_SHA: ${{ github.event.before }}
|
|
42
53
|
run: |
|
|
43
|
-
|
|
44
|
-
|
|
54
|
+
OLD_SNAPSHOT_PATH="$RUNNER_TEMP/old-issues.jsonl"
|
|
55
|
+
NEW_SNAPSHOT_PATH="$RUNNER_TEMP/new-issues.jsonl"
|
|
56
|
+
BEFORE_WORKTREE="$RUNNER_TEMP/beads-before"
|
|
57
|
+
|
|
58
|
+
generate_snapshot() {
|
|
59
|
+
local repo_root="$1"
|
|
60
|
+
local output_path="$2"
|
|
61
|
+
|
|
62
|
+
BEADS_DIR="$repo_root/.beads" bd init 2>/dev/null || true
|
|
63
|
+
if BEADS_DIR="$repo_root/.beads" bd backup --force 2>/dev/null; then
|
|
64
|
+
cp "$repo_root/.beads/backup/issues.jsonl" "$output_path"
|
|
65
|
+
else
|
|
66
|
+
: > "$output_path"
|
|
67
|
+
fi
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
# Rebuild the current snapshot from the pushed Beads state so local bd close
|
|
71
|
+
# transitions are reflected even when the tracked snapshot file was not updated.
|
|
72
|
+
generate_snapshot "$GITHUB_WORKSPACE" "$NEW_SNAPSHOT_PATH"
|
|
73
|
+
|
|
74
|
+
# Use github.event.before (pre-push SHA) to catch multi-commit pushes.
|
|
75
|
+
# Rebuild the previous snapshot from that tree's Beads state when possible.
|
|
45
76
|
if [ "$BEFORE_SHA" = "0000000000000000000000000000000000000000" ] || [ -z "$BEFORE_SHA" ]; then
|
|
46
|
-
|
|
77
|
+
: > "$OLD_SNAPSHOT_PATH"
|
|
78
|
+
elif git cat-file -e "$BEFORE_SHA:.beads" 2>/dev/null; then
|
|
79
|
+
rm -rf "$BEFORE_WORKTREE"
|
|
80
|
+
mkdir -p "$BEFORE_WORKTREE"
|
|
81
|
+
git archive "$BEFORE_SHA" .beads | tar -x -C "$BEFORE_WORKTREE"
|
|
82
|
+
generate_snapshot "$BEFORE_WORKTREE" "$OLD_SNAPSHOT_PATH"
|
|
47
83
|
else
|
|
48
|
-
|
|
84
|
+
# Fallback for historical commits that predate tracked .beads state.
|
|
85
|
+
OLD_CONTENT=$(git show "$BEFORE_SHA":.github/beads-snapshots/issues.jsonl 2>/dev/null || echo "")
|
|
86
|
+
printf '%s' "$OLD_CONTENT" > "$OLD_SNAPSHOT_PATH"
|
|
49
87
|
fi
|
|
50
|
-
NEW_CONTENT=$(cat .beads/issues.jsonl 2>/dev/null || echo "")
|
|
51
|
-
|
|
52
|
-
# Export via temp files to avoid shell injection
|
|
53
|
-
printf '%s' "$OLD_CONTENT" > /tmp/old-issues.jsonl
|
|
54
|
-
printf '%s' "$NEW_CONTENT" > /tmp/new-issues.jsonl
|
|
55
88
|
|
|
56
|
-
node scripts/github-beads-sync/reverse-sync-cli.mjs
|
|
89
|
+
node scripts/github-beads-sync/reverse-sync-cli.mjs "$OLD_SNAPSHOT_PATH" "$NEW_SNAPSHOT_PATH"
|
|
@@ -30,9 +30,9 @@ jobs:
|
|
|
30
30
|
- name: Setup Bun
|
|
31
31
|
uses: oven-sh/setup-bun@4bc047ad259df6fc24a6c9b0f9a0cb08cf17fbe5 # v2
|
|
32
32
|
|
|
33
|
-
- name: Install Beads CLI (pinned to
|
|
33
|
+
- name: Install Beads CLI (pinned to v1.0.0)
|
|
34
34
|
run: |
|
|
35
|
-
BD_VERSION="0.
|
|
35
|
+
BD_VERSION="1.0.0"
|
|
36
36
|
BD_URL="https://github.com/steveyegge/beads/releases/download/v${BD_VERSION}/beads_${BD_VERSION}_linux_amd64.tar.gz"
|
|
37
37
|
mkdir -p "$HOME/.local/bin"
|
|
38
38
|
curl -fsSL "$BD_URL" | tar -xz -C "$HOME/.local/bin" bd
|
|
@@ -43,7 +43,7 @@ jobs:
|
|
|
43
43
|
BEADS_DIR: ${{ github.workspace }}/.beads
|
|
44
44
|
run: |
|
|
45
45
|
bd --version
|
|
46
|
-
# Initialize
|
|
46
|
+
# Initialize the current Dolt-backed layout on fresh checkout
|
|
47
47
|
bd init 2>/dev/null || true
|
|
48
48
|
|
|
49
49
|
- name: Run sync
|
|
@@ -57,10 +57,13 @@ jobs:
|
|
|
57
57
|
run: |
|
|
58
58
|
node scripts/github-beads-sync/index.mjs "$SYNC_ACTION"
|
|
59
59
|
|
|
60
|
-
- name: Export
|
|
60
|
+
- name: Export backup snapshot
|
|
61
61
|
env:
|
|
62
62
|
BEADS_DIR: ${{ github.workspace }}/.beads
|
|
63
|
-
run:
|
|
63
|
+
run: |
|
|
64
|
+
bd backup --force
|
|
65
|
+
mkdir -p .github/beads-snapshots
|
|
66
|
+
cp .beads/backup/issues.jsonl .github/beads-snapshots/issues.jsonl
|
|
64
67
|
|
|
65
68
|
- name: Commit and push changes
|
|
66
69
|
env:
|
|
@@ -69,8 +72,8 @@ jobs:
|
|
|
69
72
|
git config user.name "github-actions[bot]"
|
|
70
73
|
git config user.email "github-actions[bot]@users.noreply.github.com"
|
|
71
74
|
|
|
72
|
-
# Stage beads
|
|
73
|
-
git add .beads/ .github/beads-mapping.json || true
|
|
75
|
+
# Stage beads state, mapping changes, and the tracked issue snapshot
|
|
76
|
+
git add .beads/ .github/beads-mapping.json .github/beads-snapshots/issues.jsonl || true
|
|
74
77
|
|
|
75
78
|
# Only commit if there are changes
|
|
76
79
|
if git diff --cached --quiet; then
|
|
@@ -70,8 +70,8 @@ Do NOT write any code until ALL confirmed:
|
|
|
70
70
|
Before starting the per-task loop, check for cross-developer conflicts:
|
|
71
71
|
|
|
72
72
|
```bash
|
|
73
|
-
# Auto-sync to get latest team state
|
|
74
|
-
|
|
73
|
+
# Auto-sync to get latest team state (non-blocking)
|
|
74
|
+
forge sync || true
|
|
75
75
|
|
|
76
76
|
# Check for conflicts with the current beads issue
|
|
77
77
|
bash scripts/conflict-detect.sh --issue <beads-id>
|
|
@@ -58,7 +58,7 @@ Before proceeding to Phase 1, check for cross-developer conflicts:
|
|
|
58
58
|
|
|
59
59
|
```bash
|
|
60
60
|
# Auto-sync to get latest team state
|
|
61
|
-
|
|
61
|
+
forge sync || true
|
|
62
62
|
|
|
63
63
|
# Check for conflicts with this issue's planned work area
|
|
64
64
|
bash scripts/conflict-detect.sh --issue <beads-id>
|
|
@@ -108,7 +108,7 @@ If merge conflicts or unmet dependencies are found:
|
|
|
108
108
|
Before starting planning, verify team identity is mapped:
|
|
109
109
|
|
|
110
110
|
```bash
|
|
111
|
-
|
|
111
|
+
forge team verify 2>&1 || true
|
|
112
112
|
```
|
|
113
113
|
|
|
114
114
|
If verify reports issues, address them before proceeding (the output will include `FORGE_AGENT_7f3a:PROMPT:` directives with exact commands to run).
|
|
@@ -167,10 +167,10 @@ After PR is created, sync issue state to GitHub and verify 1:1 mapping:
|
|
|
167
167
|
|
|
168
168
|
```bash
|
|
169
169
|
# Sync issue state to GitHub
|
|
170
|
-
|
|
170
|
+
forge team sync 2>&1 || true
|
|
171
171
|
|
|
172
172
|
# Verify 1:1 mapping
|
|
173
|
-
|
|
173
|
+
forge team verify 2>&1 || true
|
|
174
174
|
```
|
|
175
175
|
|
|
176
176
|
## Example Output
|
|
@@ -21,7 +21,7 @@ This command helps you understand the current state of the project before starti
|
|
|
21
21
|
|
|
22
22
|
```bash
|
|
23
23
|
# Sync team state before showing status
|
|
24
|
-
|
|
24
|
+
forge sync || true
|
|
25
25
|
```
|
|
26
26
|
|
|
27
27
|
### Step 1: Smart Status (ranked issues with conflict detection)
|
|
@@ -29,7 +29,7 @@ bash scripts/sync-utils.sh auto-sync
|
|
|
29
29
|
```bash
|
|
30
30
|
bash scripts/smart-status.sh
|
|
31
31
|
```
|
|
32
|
-
This
|
|
32
|
+
This command dynamically computes and displays all issues ranked by composite score (priority, dependency impact, type, staleness, epic proximity). Output includes active sessions, conflict risk annotations, and grouped categories. No manual querying needed.
|
|
33
33
|
|
|
34
34
|
For full context on any issue: `bd show <id>`
|
|
35
35
|
|
|
@@ -78,10 +78,10 @@ Show current developer's active work and team overview:
|
|
|
78
78
|
|
|
79
79
|
```bash
|
|
80
80
|
# Show my active issues
|
|
81
|
-
|
|
81
|
+
forge team workload --me 2>&1 || true
|
|
82
82
|
|
|
83
83
|
# One-line team summary
|
|
84
|
-
|
|
84
|
+
forge team dashboard 2>&1 | head -5 || true
|
|
85
85
|
```
|
|
86
86
|
|
|
87
87
|
## Next Steps
|
|
@@ -69,8 +69,8 @@ Do NOT write any code until ALL confirmed:
|
|
|
69
69
|
Before starting the per-task loop, check for cross-developer conflicts:
|
|
70
70
|
|
|
71
71
|
```bash
|
|
72
|
-
# Auto-sync to get latest team state
|
|
73
|
-
|
|
72
|
+
# Auto-sync to get latest team state (non-blocking)
|
|
73
|
+
forge sync || true
|
|
74
74
|
|
|
75
75
|
# Check for conflicts with the current beads issue
|
|
76
76
|
bash scripts/conflict-detect.sh --issue <beads-id>
|
|
@@ -57,7 +57,7 @@ Before proceeding to Phase 1, check for cross-developer conflicts:
|
|
|
57
57
|
|
|
58
58
|
```bash
|
|
59
59
|
# Auto-sync to get latest team state
|
|
60
|
-
|
|
60
|
+
forge sync || true
|
|
61
61
|
|
|
62
62
|
# Check for conflicts with this issue's planned work area
|
|
63
63
|
bash scripts/conflict-detect.sh --issue <beads-id>
|
|
@@ -107,7 +107,7 @@ If merge conflicts or unmet dependencies are found:
|
|
|
107
107
|
Before starting planning, verify team identity is mapped:
|
|
108
108
|
|
|
109
109
|
```bash
|
|
110
|
-
|
|
110
|
+
forge team verify 2>&1 || true
|
|
111
111
|
```
|
|
112
112
|
|
|
113
113
|
If verify reports issues, address them before proceeding (the output will include `FORGE_AGENT_7f3a:PROMPT:` directives with exact commands to run).
|
|
@@ -166,10 +166,10 @@ After PR is created, sync issue state to GitHub and verify 1:1 mapping:
|
|
|
166
166
|
|
|
167
167
|
```bash
|
|
168
168
|
# Sync issue state to GitHub
|
|
169
|
-
|
|
169
|
+
forge team sync 2>&1 || true
|
|
170
170
|
|
|
171
171
|
# Verify 1:1 mapping
|
|
172
|
-
|
|
172
|
+
forge team verify 2>&1 || true
|
|
173
173
|
```
|
|
174
174
|
|
|
175
175
|
## Example Output
|