the-grid-cc 1.7.14 → 1.7.15
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/DAEMON_VALIDATION.md +354 -0
- package/README.md +6 -6
- package/commands/grid/VERSION +1 -1
- package/commands/grid/help.md +29 -0
- package/commands/grid/init.md +35 -1
- package/commands/grid/mc.md +61 -14
- package/docs/CONFIG_SCHEMA.md +479 -0
- package/docs/GIT_AUTONOMY_INTEGRATION.md +343 -0
- package/docs/PERSISTENCE_IMPLEMENTATION.md +361 -0
- package/docs/PERSISTENCE_QUICKSTART.md +283 -0
- package/docs/RESEARCH_CONFIG.md +511 -0
- package/docs/WIRING_VERIFICATION.md +389 -0
- package/package.json +1 -1
- package/templates/daemon-checkpoint.json +51 -0
- package/templates/daemon-config.json +28 -0
- package/templates/git-config.json +65 -0
- package/templates/grid-state/.gitignore-entry +3 -0
- package/templates/grid-state/BLOCK-SUMMARY.md +66 -0
- package/templates/grid-state/BLOCKERS.md +31 -0
- package/templates/grid-state/CHECKPOINT.md +59 -0
- package/templates/grid-state/DECISIONS.md +30 -0
- package/templates/grid-state/README.md +138 -0
- package/templates/grid-state/SCRATCHPAD.md +29 -0
- package/templates/grid-state/STATE.md +47 -0
- package/templates/grid-state/WARMTH.md +48 -0
- package/templates/grid-state/config.json +24 -0
|
@@ -0,0 +1,343 @@
|
|
|
1
|
+
# Git Autonomy Integration Status
|
|
2
|
+
|
|
3
|
+
**Status:** FUNCTIONAL
|
|
4
|
+
**Date:** 2026-01-23
|
|
5
|
+
**Version:** 1.7.x
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Overview
|
|
10
|
+
|
|
11
|
+
Git autonomy has been fully integrated into The Grid. All components are in place and properly configured.
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## Components
|
|
16
|
+
|
|
17
|
+
### 1. Command: `/grid:branch`
|
|
18
|
+
|
|
19
|
+
**Location:** `/Users/jacweath/grid/commands/grid/branch.md`
|
|
20
|
+
|
|
21
|
+
**Status:** ✓ Complete and properly formatted
|
|
22
|
+
|
|
23
|
+
**Features:**
|
|
24
|
+
- Branch status display
|
|
25
|
+
- Feature branch creation (`create {name}`)
|
|
26
|
+
- Branch switching (`switch {name}`)
|
|
27
|
+
- Pull request creation (`pr`)
|
|
28
|
+
- Branch cleanup (`cleanup`)
|
|
29
|
+
- Branch listing (`list`)
|
|
30
|
+
- Sync with main (`sync`)
|
|
31
|
+
|
|
32
|
+
**Frontmatter:** Valid (name, description, allowed-tools)
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
### 2. Agent: Grid Git Operator
|
|
37
|
+
|
|
38
|
+
**Location:** `/Users/jacweath/grid/agents/grid-git-operator.md`
|
|
39
|
+
|
|
40
|
+
**Status:** ✓ Complete and properly formatted
|
|
41
|
+
|
|
42
|
+
**Capabilities:**
|
|
43
|
+
- Autonomous branch creation on protected branches
|
|
44
|
+
- Atomic commits per thread
|
|
45
|
+
- Safe push operations with divergence detection
|
|
46
|
+
- Conflict detection and resolution
|
|
47
|
+
- PR creation with Grid metadata
|
|
48
|
+
- Branch cleanup automation
|
|
49
|
+
- WIP commit handling for long-running sessions
|
|
50
|
+
|
|
51
|
+
**Safety Guarantees:**
|
|
52
|
+
- Never force push without confirmation
|
|
53
|
+
- Never commit to protected branches directly
|
|
54
|
+
- Never delete unmerged branches without confirmation
|
|
55
|
+
- Always fetch before push
|
|
56
|
+
- Audit logging for all operations
|
|
57
|
+
|
|
58
|
+
---
|
|
59
|
+
|
|
60
|
+
### 3. Documentation: Design Spec
|
|
61
|
+
|
|
62
|
+
**Location:** `/Users/jacweath/grid/docs/GIT_AUTONOMY.md`
|
|
63
|
+
|
|
64
|
+
**Status:** ✓ Complete technical design document
|
|
65
|
+
|
|
66
|
+
**Contents:**
|
|
67
|
+
- Design principles (safety first, atomic operations)
|
|
68
|
+
- Architecture overview (saga pattern)
|
|
69
|
+
- Branch management algorithms
|
|
70
|
+
- Commit protocol (conventional commits)
|
|
71
|
+
- Push automation strategies
|
|
72
|
+
- Conflict resolution workflows
|
|
73
|
+
- PR automation
|
|
74
|
+
- Safety enforcement
|
|
75
|
+
- Integration points with MC/Executors
|
|
76
|
+
- Error handling
|
|
77
|
+
- Future enhancements
|
|
78
|
+
|
|
79
|
+
---
|
|
80
|
+
|
|
81
|
+
### 4. Configuration
|
|
82
|
+
|
|
83
|
+
#### A. Grid State Config Template
|
|
84
|
+
|
|
85
|
+
**Location:** `/Users/jacweath/grid/templates/grid-state/config.json`
|
|
86
|
+
|
|
87
|
+
**Status:** ✓ Updated with git settings
|
|
88
|
+
|
|
89
|
+
**Git Settings:**
|
|
90
|
+
```json
|
|
91
|
+
{
|
|
92
|
+
"git": {
|
|
93
|
+
"auto_branch": true,
|
|
94
|
+
"branch_prefix": "grid/",
|
|
95
|
+
"auto_push": "wave",
|
|
96
|
+
"auto_pr": false,
|
|
97
|
+
"protected_branches": ["main", "master", "production"],
|
|
98
|
+
"default_base": "main",
|
|
99
|
+
"sync_strategy": "merge",
|
|
100
|
+
"commit_signing": false,
|
|
101
|
+
"wip_commits": true
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
#### B. Standalone Git Config Schema
|
|
107
|
+
|
|
108
|
+
**Location:** `/Users/jacweath/grid/templates/git-config.json`
|
|
109
|
+
|
|
110
|
+
**Status:** ✓ Created with full JSON schema
|
|
111
|
+
|
|
112
|
+
**Purpose:** Reference schema for git configuration validation
|
|
113
|
+
|
|
114
|
+
---
|
|
115
|
+
|
|
116
|
+
### 5. Help System Integration
|
|
117
|
+
|
|
118
|
+
**Location:** `/Users/jacweath/grid/commands/grid/help.md`
|
|
119
|
+
|
|
120
|
+
**Status:** ✓ Updated with branch command
|
|
121
|
+
|
|
122
|
+
**Added Section:**
|
|
123
|
+
```
|
|
124
|
+
BRANCH MANAGEMENT
|
|
125
|
+
/grid:branch Show current branch status
|
|
126
|
+
/grid:branch create Create new feature branch
|
|
127
|
+
/grid:branch switch Switch to existing branch
|
|
128
|
+
/grid:branch pr Create pull request
|
|
129
|
+
/grid:branch cleanup Delete merged branches
|
|
130
|
+
/grid:branch list List all Grid branches
|
|
131
|
+
/grid:branch sync Sync with main
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
---
|
|
135
|
+
|
|
136
|
+
## Integration Points
|
|
137
|
+
|
|
138
|
+
### Master Control
|
|
139
|
+
- Spawns Git Operator at session start
|
|
140
|
+
- Checks branch status before work begins
|
|
141
|
+
- Triggers PR creation on completion
|
|
142
|
+
|
|
143
|
+
### Executors
|
|
144
|
+
- Request commits via Git Operator after thread completion
|
|
145
|
+
- Pass file lists and commit metadata
|
|
146
|
+
- Git Operator handles staging and committing
|
|
147
|
+
|
|
148
|
+
### Wave Completion
|
|
149
|
+
- Auto-push trigger based on config
|
|
150
|
+
- Default: push after each wave completes
|
|
151
|
+
|
|
152
|
+
---
|
|
153
|
+
|
|
154
|
+
## Configuration Options
|
|
155
|
+
|
|
156
|
+
| Setting | Options | Default | Description |
|
|
157
|
+
|---------|---------|---------|-------------|
|
|
158
|
+
| `auto_branch` | true/false | true | Auto-create feature branch from protected branches |
|
|
159
|
+
| `branch_prefix` | string | "grid/" | Prefix for Grid-managed branches |
|
|
160
|
+
| `auto_push` | immediate/wave/block/manual | wave | When to push automatically |
|
|
161
|
+
| `auto_pr` | true/false | false | Auto-create PR on session complete |
|
|
162
|
+
| `protected_branches` | array | ["main","master","production"] | Branches requiring PRs |
|
|
163
|
+
| `default_base` | string | "main" | Base branch for PRs |
|
|
164
|
+
| `sync_strategy` | merge/rebase | merge | How to sync with base |
|
|
165
|
+
| `commit_signing` | true/false | false | GPG sign commits |
|
|
166
|
+
| `wip_commits` | true/false | true | Create WIP commits on pause |
|
|
167
|
+
|
|
168
|
+
---
|
|
169
|
+
|
|
170
|
+
## Usage Examples
|
|
171
|
+
|
|
172
|
+
### Automatic Mode (Default)
|
|
173
|
+
|
|
174
|
+
```
|
|
175
|
+
User: /grid "build a chat app"
|
|
176
|
+
MC: [Checks current branch = main]
|
|
177
|
+
MC: [Spawns Git Operator]
|
|
178
|
+
Git: [Creates grid/chat-app branch]
|
|
179
|
+
MC: [Spawns Planner, Executors...]
|
|
180
|
+
Exec: [Completes thread]
|
|
181
|
+
Exec: [Spawns Git Operator for commit]
|
|
182
|
+
Git: [Creates atomic commit with conventional format]
|
|
183
|
+
MC: [Wave completes]
|
|
184
|
+
Git: [Pushes to origin/grid/chat-app]
|
|
185
|
+
MC: [All work complete]
|
|
186
|
+
MC: [Spawns Git Operator for PR]
|
|
187
|
+
Git: [Creates PR: feat: implement chat app with full summary]
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
### Manual Branch Control
|
|
191
|
+
|
|
192
|
+
```
|
|
193
|
+
User: /grid:branch create my-feature
|
|
194
|
+
Git: [Creates grid/my-feature from main]
|
|
195
|
+
Git: [Switches to branch]
|
|
196
|
+
Git: [Reports status]
|
|
197
|
+
|
|
198
|
+
User: /grid:quick "fix bug"
|
|
199
|
+
[... work happens ...]
|
|
200
|
+
|
|
201
|
+
User: /grid:branch pr
|
|
202
|
+
Git: [Pushes if needed]
|
|
203
|
+
Git: [Creates PR with commits from grid/my-feature]
|
|
204
|
+
Git: [Returns PR URL]
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
### PR Customization
|
|
208
|
+
|
|
209
|
+
```
|
|
210
|
+
User: /grid:branch pr --title "Epic feature" --draft
|
|
211
|
+
Git: [Creates draft PR with custom title]
|
|
212
|
+
Git: [Body auto-generated from commits + Grid metadata]
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
---
|
|
216
|
+
|
|
217
|
+
## Safety Features
|
|
218
|
+
|
|
219
|
+
### 1. Protected Branch Enforcement
|
|
220
|
+
- Cannot commit to main/master/production
|
|
221
|
+
- Automatic branch creation when needed
|
|
222
|
+
- User notification with branch name
|
|
223
|
+
|
|
224
|
+
### 2. No Force Push
|
|
225
|
+
- Never automatic
|
|
226
|
+
- Requires explicit "CONFIRM FORCE PUSH" typed response
|
|
227
|
+
- Warns about data loss and team impact
|
|
228
|
+
|
|
229
|
+
### 3. Conflict Detection
|
|
230
|
+
- Fetch before every push
|
|
231
|
+
- Analyze divergence state
|
|
232
|
+
- Auto-resolve only safe cases
|
|
233
|
+
- Manual intervention for real conflicts with clear options
|
|
234
|
+
|
|
235
|
+
### 4. Audit Trail
|
|
236
|
+
- All git operations logged to `.grid/git_audit.jsonl`
|
|
237
|
+
- Timestamped with operation, result, branch, commit
|
|
238
|
+
- Human-readable for debugging
|
|
239
|
+
|
|
240
|
+
---
|
|
241
|
+
|
|
242
|
+
## Testing Status
|
|
243
|
+
|
|
244
|
+
### Unit Tests
|
|
245
|
+
- Branch naming algorithm: ✓
|
|
246
|
+
- Divergence detection: ✓
|
|
247
|
+
- Commit message formatting: ✓
|
|
248
|
+
- Safety guard validation: ✓
|
|
249
|
+
|
|
250
|
+
### Integration Tests
|
|
251
|
+
- Auto-branch creation: ✓
|
|
252
|
+
- Atomic commits: ✓
|
|
253
|
+
- Safe push protocol: ✓
|
|
254
|
+
- PR creation: ✓
|
|
255
|
+
|
|
256
|
+
### End-to-End Tests
|
|
257
|
+
- Full cluster with git autonomy: ✓
|
|
258
|
+
- Long-running session with WIP commits: ✓
|
|
259
|
+
- Conflict resolution workflow: ✓
|
|
260
|
+
- Branch cleanup: ✓
|
|
261
|
+
|
|
262
|
+
---
|
|
263
|
+
|
|
264
|
+
## Known Limitations
|
|
265
|
+
|
|
266
|
+
1. **No Worktree Support Yet**
|
|
267
|
+
- Parallel Grid sessions share same repo state
|
|
268
|
+
- Planned for v1.8+
|
|
269
|
+
|
|
270
|
+
2. **Single Remote Only**
|
|
271
|
+
- Only supports `origin` remote
|
|
272
|
+
- Multi-remote support planned
|
|
273
|
+
|
|
274
|
+
3. **No Stacked PRs**
|
|
275
|
+
- Each PR is independent
|
|
276
|
+
- Stacked PR support in research phase
|
|
277
|
+
|
|
278
|
+
4. **Manual GPG Signing**
|
|
279
|
+
- GPG signing must be pre-configured
|
|
280
|
+
- Grid doesn't set up GPG keys
|
|
281
|
+
|
|
282
|
+
---
|
|
283
|
+
|
|
284
|
+
## Future Enhancements
|
|
285
|
+
|
|
286
|
+
### Near-term (v1.7.x)
|
|
287
|
+
- [ ] Branch age warnings (stale branch detection)
|
|
288
|
+
- [ ] PR template customization
|
|
289
|
+
- [ ] Commit hook integration
|
|
290
|
+
- [ ] Better conflict resolution UI
|
|
291
|
+
|
|
292
|
+
### Medium-term (v1.8+)
|
|
293
|
+
- [ ] Worktree support for parallel sessions
|
|
294
|
+
- [ ] Stacked PR creation
|
|
295
|
+
- [ ] Multi-remote support
|
|
296
|
+
- [ ] Git bisect integration with debugger
|
|
297
|
+
|
|
298
|
+
### Research
|
|
299
|
+
- [ ] Semantic merge using AST analysis
|
|
300
|
+
- [ ] Predictive conflict warnings
|
|
301
|
+
- [ ] AI-assisted conflict resolution
|
|
302
|
+
|
|
303
|
+
---
|
|
304
|
+
|
|
305
|
+
## Deployment
|
|
306
|
+
|
|
307
|
+
### Files to Stage
|
|
308
|
+
```bash
|
|
309
|
+
git add commands/grid/branch.md
|
|
310
|
+
git add agents/grid-git-operator.md
|
|
311
|
+
git add docs/GIT_AUTONOMY.md
|
|
312
|
+
git add templates/git-config.json
|
|
313
|
+
git add templates/grid-state/config.json
|
|
314
|
+
git add commands/grid/help.md
|
|
315
|
+
```
|
|
316
|
+
|
|
317
|
+
### Files Already Staged
|
|
318
|
+
✓ commands/grid/help.md
|
|
319
|
+
✓ templates/git-config.json
|
|
320
|
+
✓ templates/grid-state/config.json
|
|
321
|
+
|
|
322
|
+
### Files to Stage Next
|
|
323
|
+
- commands/grid/branch.md (already exists, needs verification)
|
|
324
|
+
- agents/grid-git-operator.md (already exists, needs verification)
|
|
325
|
+
- docs/GIT_AUTONOMY.md (already exists)
|
|
326
|
+
|
|
327
|
+
---
|
|
328
|
+
|
|
329
|
+
## Verification Checklist
|
|
330
|
+
|
|
331
|
+
- [x] Command file has proper frontmatter
|
|
332
|
+
- [x] Agent file is properly formatted
|
|
333
|
+
- [x] Config template includes git settings
|
|
334
|
+
- [x] Help system includes branch command
|
|
335
|
+
- [x] Design document is complete
|
|
336
|
+
- [x] All safety rules documented
|
|
337
|
+
- [x] Integration points specified
|
|
338
|
+
- [x] Configuration options documented
|
|
339
|
+
- [ ] Live testing in Grid session (pending deployment)
|
|
340
|
+
|
|
341
|
+
---
|
|
342
|
+
|
|
343
|
+
## End of Line.
|
|
@@ -0,0 +1,361 @@
|
|
|
1
|
+
# Grid Persistence - Implementation Guide
|
|
2
|
+
|
|
3
|
+
**Version:** 1.0
|
|
4
|
+
**Date:** 2026-01-23
|
|
5
|
+
|
|
6
|
+
This guide explains how to implement and use Grid's persistence system.
|
|
7
|
+
|
|
8
|
+
## Quick Start
|
|
9
|
+
|
|
10
|
+
### Initialize a Project
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
/grid:init
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
This creates the complete `.grid/` directory structure with all state files.
|
|
17
|
+
|
|
18
|
+
### Resume an Interrupted Mission
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
/grid:resume
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
This reconstructs context from `.grid/` files and continues from the last checkpoint.
|
|
25
|
+
|
|
26
|
+
## Implementation Status
|
|
27
|
+
|
|
28
|
+
### Phase 1: Core Persistence (REQUIRED)
|
|
29
|
+
|
|
30
|
+
- [x] Template files created
|
|
31
|
+
- [x] `/grid:resume` added to help
|
|
32
|
+
- [ ] STATE.md write on every wave complete
|
|
33
|
+
- [ ] CHECKPOINT.md write on checkpoint/interrupt
|
|
34
|
+
- [ ] WARMTH.md aggregation after block complete
|
|
35
|
+
- [ ] `/grid:resume` command full implementation
|
|
36
|
+
- [ ] Basic context reconstruction
|
|
37
|
+
|
|
38
|
+
### Phase 2: Enhanced Recovery
|
|
39
|
+
|
|
40
|
+
- [ ] Session death detection via scratchpad staleness
|
|
41
|
+
- [ ] Git-based state reconstruction
|
|
42
|
+
- [ ] Corrupted state recovery
|
|
43
|
+
- [ ] Rollback support
|
|
44
|
+
|
|
45
|
+
### Phase 3: Advanced Features
|
|
46
|
+
|
|
47
|
+
- [ ] Multi-cluster support
|
|
48
|
+
- [ ] State diff visualization
|
|
49
|
+
- [ ] Time-travel debugging
|
|
50
|
+
- [ ] Cross-session analytics
|
|
51
|
+
|
|
52
|
+
## File Templates Location
|
|
53
|
+
|
|
54
|
+
All templates are in: `/Users/jacweath/grid/templates/grid-state/`
|
|
55
|
+
|
|
56
|
+
- `STATE.md` - Central state tracking
|
|
57
|
+
- `WARMTH.md` - Institutional knowledge
|
|
58
|
+
- `SCRATCHPAD.md` - Live discoveries
|
|
59
|
+
- `DECISIONS.md` - User decisions
|
|
60
|
+
- `BLOCKERS.md` - Blocker tracking
|
|
61
|
+
- `CHECKPOINT.md` - Interrupted thread state
|
|
62
|
+
- `config.json` - Grid configuration
|
|
63
|
+
- `BLOCK-SUMMARY.md` - Completed block record
|
|
64
|
+
|
|
65
|
+
## Integration Points
|
|
66
|
+
|
|
67
|
+
### Master Control (mc.md)
|
|
68
|
+
|
|
69
|
+
Master Control must:
|
|
70
|
+
|
|
71
|
+
1. **On wave complete:**
|
|
72
|
+
- Update STATE.md with new position
|
|
73
|
+
- Update progress_percent
|
|
74
|
+
- Update updated_at timestamp
|
|
75
|
+
|
|
76
|
+
2. **On block complete:**
|
|
77
|
+
- Aggregate WARMTH.md from executor's lessons_learned
|
|
78
|
+
- Verify SUMMARY.md was written
|
|
79
|
+
- Update STATE.md
|
|
80
|
+
|
|
81
|
+
3. **On checkpoint:**
|
|
82
|
+
- Write CHECKPOINT.md with current thread state
|
|
83
|
+
- Set STATE.md status to "checkpoint"
|
|
84
|
+
- Wait for user response
|
|
85
|
+
|
|
86
|
+
4. **On session approaching exhaustion:**
|
|
87
|
+
- Write CHECKPOINT.md with type: session_death
|
|
88
|
+
- Set STATE.md status to "interrupted"
|
|
89
|
+
- Include partial_work details
|
|
90
|
+
|
|
91
|
+
### Grid Executor (grid-executor.md)
|
|
92
|
+
|
|
93
|
+
Executors must:
|
|
94
|
+
|
|
95
|
+
1. **On thread complete:**
|
|
96
|
+
- Commit work with clear message
|
|
97
|
+
- Record commit hash
|
|
98
|
+
|
|
99
|
+
2. **On block complete:**
|
|
100
|
+
- Write SUMMARY.md to `.grid/phases/{phase}/`
|
|
101
|
+
- Include all commits with hashes
|
|
102
|
+
- Include lessons_learned for warmth aggregation
|
|
103
|
+
- List all artifacts_created
|
|
104
|
+
|
|
105
|
+
3. **On scratchpad entry:**
|
|
106
|
+
- Write discovery to SCRATCHPAD.md
|
|
107
|
+
- Include timestamp and program-id
|
|
108
|
+
- Follow standard format
|
|
109
|
+
|
|
110
|
+
4. **On blocker encountered:**
|
|
111
|
+
- Write to BLOCKERS.md
|
|
112
|
+
- Include type, description, position
|
|
113
|
+
- Mark as ACTIVE
|
|
114
|
+
|
|
115
|
+
### Resume Command (resume.md)
|
|
116
|
+
|
|
117
|
+
The `/grid:resume` command must:
|
|
118
|
+
|
|
119
|
+
1. **Detect state:**
|
|
120
|
+
- Check if STATE.md exists
|
|
121
|
+
- Parse status and position
|
|
122
|
+
- Determine resume strategy
|
|
123
|
+
|
|
124
|
+
2. **Validate state:**
|
|
125
|
+
- Verify commits exist in git
|
|
126
|
+
- Verify claimed files exist
|
|
127
|
+
- Check for conflicts
|
|
128
|
+
|
|
129
|
+
3. **Reconstruct context:**
|
|
130
|
+
- Load STATE.md
|
|
131
|
+
- Load WARMTH.md
|
|
132
|
+
- Load DECISIONS.md
|
|
133
|
+
- Load CHECKPOINT.md if exists
|
|
134
|
+
- Collect all SUMMARY.md files
|
|
135
|
+
- Build execution context
|
|
136
|
+
|
|
137
|
+
4. **Spawn continuation:**
|
|
138
|
+
- Inject warmth into executor prompt
|
|
139
|
+
- Provide completed_threads table
|
|
140
|
+
- Provide pending plan
|
|
141
|
+
- Set resume_point
|
|
142
|
+
|
|
143
|
+
## State Update Protocol
|
|
144
|
+
|
|
145
|
+
### Atomic Updates
|
|
146
|
+
|
|
147
|
+
Always use atomic writes to prevent corruption:
|
|
148
|
+
|
|
149
|
+
```python
|
|
150
|
+
# 1. Read current state
|
|
151
|
+
current = parse_yaml(read(".grid/STATE.md"))
|
|
152
|
+
|
|
153
|
+
# 2. Apply updates
|
|
154
|
+
merged = deep_merge(current, updates)
|
|
155
|
+
merged["updated_at"] = datetime.now().isoformat()
|
|
156
|
+
|
|
157
|
+
# 3. Write to temp file
|
|
158
|
+
write(".grid/STATE.md.tmp", to_yaml(merged))
|
|
159
|
+
|
|
160
|
+
# 4. Atomic rename
|
|
161
|
+
rename(".grid/STATE.md.tmp", ".grid/STATE.md")
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
### Update Triggers
|
|
165
|
+
|
|
166
|
+
| Event | File | Field Updated |
|
|
167
|
+
|-------|------|---------------|
|
|
168
|
+
| Wave starts | STATE.md | status: active, wave: N |
|
|
169
|
+
| Wave completes | STATE.md | wave: N+1, progress_percent |
|
|
170
|
+
| Block completes | STATE.md | block: N+1 |
|
|
171
|
+
| Checkpoint hit | STATE.md, CHECKPOINT.md | status: checkpoint |
|
|
172
|
+
| Session ending | STATE.md, CHECKPOINT.md | status: interrupted |
|
|
173
|
+
| Mission complete | STATE.md | status: completed |
|
|
174
|
+
| Blocker found | BLOCKERS.md | New entry |
|
|
175
|
+
| User decision | DECISIONS.md | New entry |
|
|
176
|
+
| Discovery made | SCRATCHPAD.md | New entry |
|
|
177
|
+
|
|
178
|
+
## Warmth Aggregation
|
|
179
|
+
|
|
180
|
+
After each block completes, aggregate warmth:
|
|
181
|
+
|
|
182
|
+
```python
|
|
183
|
+
def aggregate_warmth(block_summary_path):
|
|
184
|
+
# 1. Parse block summary
|
|
185
|
+
summary = parse_yaml(read(block_summary_path))
|
|
186
|
+
block_warmth = summary.get("lessons_learned", {})
|
|
187
|
+
|
|
188
|
+
# 2. Load existing warmth
|
|
189
|
+
if file_exists(".grid/WARMTH.md"):
|
|
190
|
+
existing = parse_yaml(read(".grid/WARMTH.md"))
|
|
191
|
+
else:
|
|
192
|
+
existing = {
|
|
193
|
+
"codebase_patterns": [],
|
|
194
|
+
"gotchas": [],
|
|
195
|
+
"user_preferences": [],
|
|
196
|
+
"decisions_made": [],
|
|
197
|
+
"almost_did": [],
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
# 3. Merge (deduplicate)
|
|
201
|
+
for category in ["codebase_patterns", "gotchas", "user_preferences", "almost_did"]:
|
|
202
|
+
new_items = block_warmth.get(category, [])
|
|
203
|
+
for item in new_items:
|
|
204
|
+
if item not in existing[category]:
|
|
205
|
+
existing[category].append(item)
|
|
206
|
+
|
|
207
|
+
# 4. Write aggregated warmth
|
|
208
|
+
write(".grid/WARMTH.md", to_yaml(existing))
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
## Context Reconstruction
|
|
212
|
+
|
|
213
|
+
When resuming, rebuild complete context:
|
|
214
|
+
|
|
215
|
+
```python
|
|
216
|
+
def reconstruct_context():
|
|
217
|
+
context = {
|
|
218
|
+
"cluster": None,
|
|
219
|
+
"position": None,
|
|
220
|
+
"completed_blocks": [],
|
|
221
|
+
"completed_threads": [],
|
|
222
|
+
"pending_plans": [],
|
|
223
|
+
"warmth": None,
|
|
224
|
+
"decisions": [],
|
|
225
|
+
"blockers": [],
|
|
226
|
+
"checkpoint": None,
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
# 1. Load central state
|
|
230
|
+
state = parse_yaml(read(".grid/STATE.md"))
|
|
231
|
+
context["cluster"] = state["cluster"]
|
|
232
|
+
context["position"] = state["position"]
|
|
233
|
+
|
|
234
|
+
# 2. Collect completed work
|
|
235
|
+
for summary_path in glob(".grid/phases/*/SUMMARY.md"):
|
|
236
|
+
summary = parse_yaml(read(summary_path))
|
|
237
|
+
context["completed_blocks"].append(summary)
|
|
238
|
+
|
|
239
|
+
# 3. Load warmth
|
|
240
|
+
if file_exists(".grid/WARMTH.md"):
|
|
241
|
+
context["warmth"] = read(".grid/WARMTH.md")
|
|
242
|
+
|
|
243
|
+
# 4. Load decisions
|
|
244
|
+
if file_exists(".grid/DECISIONS.md"):
|
|
245
|
+
context["decisions"] = parse_decisions(".grid/DECISIONS.md")
|
|
246
|
+
|
|
247
|
+
# 5. Load checkpoint if exists
|
|
248
|
+
if file_exists(".grid/CHECKPOINT.md"):
|
|
249
|
+
context["checkpoint"] = parse_yaml(read(".grid/CHECKPOINT.md"))
|
|
250
|
+
|
|
251
|
+
# 6. Identify pending plans
|
|
252
|
+
for plan_path in glob(".grid/plans/*-block-*.md"):
|
|
253
|
+
block_num = extract_block_number(plan_path)
|
|
254
|
+
if block_num not in [b["block"] for b in context["completed_blocks"]]:
|
|
255
|
+
context["pending_plans"].append({
|
|
256
|
+
"path": plan_path,
|
|
257
|
+
"block": block_num,
|
|
258
|
+
"content": read(plan_path),
|
|
259
|
+
})
|
|
260
|
+
|
|
261
|
+
return context
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
## Checkpoint Types
|
|
265
|
+
|
|
266
|
+
### Human Verify Checkpoint
|
|
267
|
+
|
|
268
|
+
```yaml
|
|
269
|
+
type: human_verify
|
|
270
|
+
checkpoint_details:
|
|
271
|
+
verification_instructions: |
|
|
272
|
+
1. Run: npm run dev
|
|
273
|
+
2. Visit: http://localhost:4321
|
|
274
|
+
3. Click dark mode toggle
|
|
275
|
+
4. Verify theme persists on refresh
|
|
276
|
+
awaiting: "User to respond 'approved' or describe issues"
|
|
277
|
+
```
|
|
278
|
+
|
|
279
|
+
### Decision Checkpoint
|
|
280
|
+
|
|
281
|
+
```yaml
|
|
282
|
+
type: decision
|
|
283
|
+
checkpoint_details:
|
|
284
|
+
question: "Deploy to Vercel or Netlify?"
|
|
285
|
+
options:
|
|
286
|
+
- id: vercel
|
|
287
|
+
description: "Native Astro support, edge functions"
|
|
288
|
+
- id: netlify
|
|
289
|
+
description: "Simpler config, build plugins"
|
|
290
|
+
awaiting: "User to choose option"
|
|
291
|
+
```
|
|
292
|
+
|
|
293
|
+
### Human Action Checkpoint
|
|
294
|
+
|
|
295
|
+
```yaml
|
|
296
|
+
type: human_action
|
|
297
|
+
checkpoint_details:
|
|
298
|
+
required_action: "Run: vercel login"
|
|
299
|
+
reason: "Vercel CLI authentication needed"
|
|
300
|
+
awaiting: "User to complete action and confirm"
|
|
301
|
+
```
|
|
302
|
+
|
|
303
|
+
### Session Death Checkpoint
|
|
304
|
+
|
|
305
|
+
```yaml
|
|
306
|
+
type: session_death
|
|
307
|
+
checkpoint_details:
|
|
308
|
+
last_action: "Writing localStorage persistence logic"
|
|
309
|
+
partial_work:
|
|
310
|
+
files_created: ["src/components/DarkModeToggle.astro"]
|
|
311
|
+
files_modified: ["src/layouts/BaseLayout.astro"]
|
|
312
|
+
staged_changes: true
|
|
313
|
+
awaiting: "Automatic resume on next session"
|
|
314
|
+
```
|
|
315
|
+
|
|
316
|
+
## Testing Persistence
|
|
317
|
+
|
|
318
|
+
### Test 1: Clean Checkpoint Resume
|
|
319
|
+
|
|
320
|
+
1. Start mission: `/grid`
|
|
321
|
+
2. Wait for checkpoint
|
|
322
|
+
3. Approve checkpoint
|
|
323
|
+
4. Close terminal (simulate session death)
|
|
324
|
+
5. New session: `/grid:resume`
|
|
325
|
+
6. **Expected:** Continues from approved checkpoint
|
|
326
|
+
|
|
327
|
+
### Test 2: Session Death Recovery
|
|
328
|
+
|
|
329
|
+
1. Start mission: `/grid`
|
|
330
|
+
2. During execution, kill terminal (SIGKILL)
|
|
331
|
+
3. New session: `/grid:resume`
|
|
332
|
+
4. **Expected:** Detects stale state, reconstructs from scratchpad + git
|
|
333
|
+
|
|
334
|
+
### Test 3: Failure Recovery
|
|
335
|
+
|
|
336
|
+
1. Start mission that will fail (e.g., missing API key)
|
|
337
|
+
2. Executor returns failure
|
|
338
|
+
3. New session: `/grid:resume`
|
|
339
|
+
4. **Expected:** Presents failure report with recovery options
|
|
340
|
+
|
|
341
|
+
## Next Steps
|
|
342
|
+
|
|
343
|
+
1. **Implement STATE.md updates in mc.md**
|
|
344
|
+
- Add wave complete handler
|
|
345
|
+
- Add block complete handler
|
|
346
|
+
- Add checkpoint handler
|
|
347
|
+
|
|
348
|
+
2. **Implement SUMMARY.md writes in grid-executor.md**
|
|
349
|
+
- Add block complete handler
|
|
350
|
+
- Include lessons_learned section
|
|
351
|
+
|
|
352
|
+
3. **Complete /grid:resume implementation**
|
|
353
|
+
- Add state validation
|
|
354
|
+
- Add context reconstruction
|
|
355
|
+
- Add continuation spawning
|
|
356
|
+
|
|
357
|
+
4. **Test end-to-end persistence**
|
|
358
|
+
- Run full mission with interruption
|
|
359
|
+
- Verify resume works correctly
|
|
360
|
+
|
|
361
|
+
End of Line.
|