compounding-loop 0.4.0 → 0.6.0

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.
Files changed (128) hide show
  1. package/README.md +152 -128
  2. package/dist/cli/draft.js +69 -0
  3. package/dist/cli/draft.js.map +1 -0
  4. package/dist/cli/eval.js +186 -0
  5. package/dist/cli/eval.js.map +1 -0
  6. package/dist/cli/hook.js +92 -0
  7. package/dist/cli/hook.js.map +1 -0
  8. package/dist/cli/index.js +336 -1
  9. package/dist/cli/index.js.map +1 -1
  10. package/dist/cli/init.js +41 -4
  11. package/dist/cli/init.js.map +1 -1
  12. package/dist/cli/lanesInit.js +8 -2
  13. package/dist/cli/lanesInit.js.map +1 -1
  14. package/dist/cli/pace.js +41 -0
  15. package/dist/cli/pace.js.map +1 -0
  16. package/dist/cli/pause.js +3 -3
  17. package/dist/cli/pause.js.map +1 -1
  18. package/dist/cli/recipe.js +89 -0
  19. package/dist/cli/recipe.js.map +1 -0
  20. package/dist/cli/recipeDraft.js +64 -0
  21. package/dist/cli/recipeDraft.js.map +1 -0
  22. package/dist/cli/runs.js +49 -11
  23. package/dist/cli/runs.js.map +1 -1
  24. package/dist/cli/schedule.js +177 -0
  25. package/dist/cli/schedule.js.map +1 -0
  26. package/dist/core/brief.js +35 -12
  27. package/dist/core/brief.js.map +1 -1
  28. package/dist/core/draftBrief.js +68 -0
  29. package/dist/core/draftBrief.js.map +1 -0
  30. package/dist/core/eval.js +123 -0
  31. package/dist/core/eval.js.map +1 -0
  32. package/dist/core/hooksInit.js +54 -0
  33. package/dist/core/hooksInit.js.map +1 -0
  34. package/dist/core/laneRound.js +28 -7
  35. package/dist/core/laneRound.js.map +1 -1
  36. package/dist/core/lanes.js +3 -0
  37. package/dist/core/lanes.js.map +1 -1
  38. package/dist/core/lanesInit.js +19 -0
  39. package/dist/core/lanesInit.js.map +1 -1
  40. package/dist/core/parse/index.js +8 -0
  41. package/dist/core/parse/index.js.map +1 -1
  42. package/dist/core/parse/outcomes.js +51 -0
  43. package/dist/core/parse/outcomes.js.map +1 -0
  44. package/dist/core/parse/policy.js +56 -0
  45. package/dist/core/parse/policy.js.map +1 -0
  46. package/dist/core/parse/runs.js +1 -0
  47. package/dist/core/parse/runs.js.map +1 -1
  48. package/dist/core/parse/schedule.js +101 -0
  49. package/dist/core/parse/schedule.js.map +1 -0
  50. package/dist/core/parse/steer.js +68 -0
  51. package/dist/core/parse/steer.js.map +1 -0
  52. package/dist/core/recipeDraft.js +37 -0
  53. package/dist/core/recipeDraft.js.map +1 -0
  54. package/dist/core/recipes.js +185 -0
  55. package/dist/core/recipes.js.map +1 -0
  56. package/dist/core/repo.js +16 -1
  57. package/dist/core/repo.js.map +1 -1
  58. package/dist/core/triggers.js +137 -0
  59. package/dist/core/triggers.js.map +1 -0
  60. package/dist/server/actionBody.js +54 -0
  61. package/dist/server/actionBody.js.map +1 -0
  62. package/dist/server/checkLabels.js +7 -2
  63. package/dist/server/checkLabels.js.map +1 -1
  64. package/dist/server/claude.js +18 -0
  65. package/dist/server/claude.js.map +1 -0
  66. package/dist/server/controls.js +28 -1
  67. package/dist/server/controls.js.map +1 -1
  68. package/dist/server/data.js +8 -3
  69. package/dist/server/data.js.map +1 -1
  70. package/dist/server/draftInputs.js +33 -0
  71. package/dist/server/draftInputs.js.map +1 -0
  72. package/dist/server/health.js +3 -3
  73. package/dist/server/health.js.map +1 -1
  74. package/dist/server/index.js +55 -0
  75. package/dist/server/index.js.map +1 -1
  76. package/dist/server/laneChecks.js +1 -1
  77. package/dist/server/laneChecks.js.map +1 -1
  78. package/dist/server/laneSchedule.js +15 -0
  79. package/dist/server/laneSchedule.js.map +1 -0
  80. package/dist/server/live/build.js +25 -10
  81. package/dist/server/live/build.js.map +1 -1
  82. package/dist/server/live/index.js +4 -2
  83. package/dist/server/live/index.js.map +1 -1
  84. package/dist/server/live/urls.js +3 -1
  85. package/dist/server/live/urls.js.map +1 -1
  86. package/dist/server/loops.js +145 -20
  87. package/dist/server/loops.js.map +1 -1
  88. package/dist/server/memory.js +115 -0
  89. package/dist/server/memory.js.map +1 -0
  90. package/dist/server/memory.json +398 -0
  91. package/dist/server/paceNote.js +13 -0
  92. package/dist/server/paceNote.js.map +1 -0
  93. package/dist/server/roundState.js +26 -2
  94. package/dist/server/roundState.js.map +1 -1
  95. package/dist/server/runs.js +72 -9
  96. package/dist/server/runs.js.map +1 -1
  97. package/dist/server/shipped.js +35 -0
  98. package/dist/server/shipped.js.map +1 -0
  99. package/dist/server/static-export.js +8 -2
  100. package/dist/server/static-export.js.map +1 -1
  101. package/dist/server/this-repo.json +2367 -858
  102. package/dist/web/assets/index-C5q9d5-n.css +2 -0
  103. package/dist/web/assets/index-DDEAcJFt.js +123 -0
  104. package/dist/web/index.html +2 -2
  105. package/method/COMPOUNDING_LOOP.md +33 -6
  106. package/method/operating-card.md +1 -1
  107. package/method/retro.md +4 -3
  108. package/package.json +4 -4
  109. package/plugin/.claude-plugin/plugin.json +1 -1
  110. package/plugin/commands/loop-init.md +1 -0
  111. package/plugin/commands/retro.md +3 -2
  112. package/plugin/hooks/hooks.json +62 -0
  113. package/runners/github-actions/lanes.yml +2 -2
  114. package/runners/routine/README.md +4 -0
  115. package/runners/routine/control-room-prompt.md +4 -14
  116. package/runners/routine/lane-prompt.md +4 -10
  117. package/templates/lanes/README.md +5 -1
  118. package/templates/lanes/claude-section.md +1 -0
  119. package/templates/lanes/control-run.md +37 -0
  120. package/templates/lanes/lane-run.md +33 -0
  121. package/templates/lanes/schedule.json +4 -0
  122. package/templates/lanes/steer.md +3 -0
  123. package/templates/recipe.md +39 -0
  124. package/templates/recipes/cli-command-json.md +47 -0
  125. package/templates/recipes/static-calculator-site.md +50 -0
  126. package/templates/static-site/CLAUDE.md +1 -1
  127. package/dist/web/assets/index-BOPytDNU.js +0 -53
  128. package/dist/web/assets/index-BSHEI7fa.css +0 -2
@@ -5,21 +5,21 @@
5
5
  "url": "https://minntooos.github.io/Compounding-Loop/",
6
6
  "demoUrl": "https://minntooos.github.io/Compounding-Loop/",
7
7
  "repoUrl": "https://github.com/Minntooos/Compounding-Loop",
8
- "state": "done",
9
- "reason": "rounds 1 to 3 built unattended by five parallel lanes, all done; round 4 is running now",
10
- "round": 3,
11
- "roundsTotal": 4,
12
- "roundLabel": "Round 3 done · 0.3.0",
8
+ "state": "building",
9
+ "reason": "round 5 \"Cockpit\" is being built by five parallel lanes",
10
+ "round": 5,
11
+ "roundsTotal": 5,
12
+ "roundLabel": "Round 5 · building",
13
13
  "run": 63,
14
14
  "runLimit": 350,
15
15
  "lastCommit": {
16
- "sha": "b3b51a5",
17
- "at": "2026-10-11T14:51:27.000Z",
18
- "message": "Release 0.3.0: version bump and CHANGELOG",
19
- "author": "Minntooos",
20
- "lane": "control"
16
+ "sha": "e178a6a",
17
+ "at": "2026-10-13T12:12:18.000Z",
18
+ "message": "web: run 9 handoff, outbox (A3 + C9 shipped; pace note ask), run log",
19
+ "author": "Claude",
20
+ "lane": "web"
21
21
  },
22
- "snapshotAt": "2026-10-11T14:51:27.000Z",
22
+ "snapshotAt": "2026-10-13T12:40:00.000Z",
23
23
  "lanes": [
24
24
  {
25
25
  "name": "core",
@@ -27,9 +27,9 @@
27
27
  "run": 14,
28
28
  "limit": 70,
29
29
  "lastCommit": {
30
- "sha": "1256361",
31
- "subject": "core: round 3 lane DONE",
32
- "at": "2026-10-11T07:10:24.000Z"
30
+ "sha": "fad1df2",
31
+ "subject": "core: lane DONE (round 5), run 5 log",
32
+ "at": "2026-10-13T07:11:41.000Z"
33
33
  },
34
34
  "locked": false,
35
35
  "unanswered": []
@@ -40,42 +40,42 @@
40
40
  "run": 9,
41
41
  "limit": 70,
42
42
  "lastCommit": {
43
- "sha": "5dd559c",
44
- "subject": "kit: lane DONE for round 3",
45
- "at": "2026-10-11T10:22:58.000Z"
43
+ "sha": "0a9ce38",
44
+ "subject": "kit: round 5 DONE (init --lanes hook left to core), run log",
45
+ "at": "2026-10-13T02:23:01.000Z"
46
46
  },
47
47
  "locked": false,
48
48
  "unanswered": []
49
49
  },
50
50
  {
51
51
  "name": "server",
52
- "state": "done",
52
+ "state": "building",
53
53
  "run": 6,
54
54
  "limit": 70,
55
55
  "lastCommit": {
56
- "sha": "d03b48a",
57
- "subject": "server: round 3 lane DONE",
58
- "at": "2026-10-11T07:33:57.000Z"
56
+ "sha": "ebc3ff2",
57
+ "subject": "server: no card CI when the tests check is unchecked",
58
+ "at": "2026-10-13T11:42:02.000Z"
59
59
  },
60
60
  "locked": false,
61
61
  "unanswered": []
62
62
  },
63
63
  {
64
64
  "name": "web",
65
- "state": "done",
65
+ "state": "building",
66
66
  "run": 21,
67
67
  "limit": 70,
68
68
  "lastCommit": {
69
- "sha": "4a797ed",
70
- "subject": "web: run 8, lane DONE for round 3",
71
- "at": "2026-10-11T12:46:04.000Z"
69
+ "sha": "e178a6a",
70
+ "subject": "web: run 9 handoff, outbox (A3 + C9 shipped; pace note ask), run log",
71
+ "at": "2026-10-13T12:12:18.000Z"
72
72
  },
73
73
  "locked": false,
74
74
  "unanswered": []
75
75
  },
76
76
  {
77
77
  "name": "docs",
78
- "state": "done",
78
+ "state": "waiting",
79
79
  "run": 13,
80
80
  "limit": 70,
81
81
  "lastCommit": {
@@ -89,1478 +89,2987 @@
89
89
  ],
90
90
  "timeline": [
91
91
  {
92
- "sha": "b3b51a5",
93
- "at": "2026-10-11T14:51:27.000Z",
94
- "message": "Release 0.3.0: version bump and CHANGELOG",
95
- "author": "Minntooos",
96
- "lane": "control"
92
+ "sha": "e178a6a",
93
+ "at": "2026-10-13T12:12:18.000Z",
94
+ "message": "web: run 9 handoff, outbox (A3 + C9 shipped; pace note ask), run log",
95
+ "author": "Claude",
96
+ "lane": "web"
97
97
  },
98
98
  {
99
- "sha": "69cedb3",
100
- "at": "2026-10-11T14:11:45.000Z",
101
- "message": "control room: product DONE for round 3",
99
+ "sha": "0382919",
100
+ "at": "2026-10-13T12:11:53.000Z",
101
+ "message": "web: C9 review fixes (downshift rule, demo paste warning, Escape closes, capitalised lane pace)",
102
102
  "author": "Claude",
103
- "lane": "control"
103
+ "lane": "web"
104
104
  },
105
105
  {
106
- "sha": "4a797ed",
107
- "at": "2026-10-11T12:46:04.000Z",
108
- "message": "web: run 8, lane DONE for round 3",
106
+ "sha": "a082422",
107
+ "at": "2026-10-13T12:06:21.000Z",
108
+ "message": "web: C9 Pace control (Lanes tab Pace block, per-lane Pace chooser; local save, demo policy.json on GitHub)",
109
109
  "author": "Claude",
110
110
  "lane": "web"
111
111
  },
112
112
  {
113
- "sha": "4574135",
114
- "at": "2026-10-11T11:58:52.000Z",
115
- "message": "docs: retro, dashboard page covers lanes and live demo, drop stale screenshot script, lane DONE",
113
+ "sha": "31be735",
114
+ "at": "2026-10-13T12:00:43.000Z",
115
+ "message": "web: A3 review fixes (unchecked test check is not CI on a live card, lane check labels, proof wraps at 375 px, tighter Not checked copy)",
116
116
  "author": "Claude",
117
- "lane": "docs"
117
+ "lane": "web"
118
118
  },
119
119
  {
120
- "sha": "778f216",
121
- "at": "2026-10-11T11:48:41.000Z",
122
- "message": "web: loop header shows the run budget as a bar",
120
+ "sha": "9a9f1ab",
121
+ "at": "2026-10-13T11:56:51.000Z",
122
+ "message": "web: Health three states (A3): Not checked rows in grey with how to check, state summary",
123
123
  "author": "Claude",
124
124
  "lane": "web"
125
125
  },
126
126
  {
127
- "sha": "e3bb7b4",
128
- "at": "2026-10-11T10:58:04.000Z",
129
- "message": "docs: dashboard page uses the refreshed fleet screenshot, run 7 handoff",
127
+ "sha": "ebc3ff2",
128
+ "at": "2026-10-13T11:42:02.000Z",
129
+ "message": "server: no card CI when the tests check is unchecked",
130
130
  "author": "Claude",
131
- "lane": "docs"
131
+ "lane": "server"
132
132
  },
133
133
  {
134
- "sha": "e1e36c2",
135
- "at": "2026-10-11T10:51:46.000Z",
136
- "message": "web: loop tabs scroll in one row, run 6 handoff, outbox for docs",
134
+ "sha": "5784845",
135
+ "at": "2026-10-13T11:39:13.000Z",
136
+ "message": "server: HealthCheck.state (pass/fail/unchecked) + howToCheck, run 9",
137
137
  "author": "Claude",
138
- "lane": "web"
138
+ "lane": "server"
139
139
  },
140
140
  {
141
- "sha": "97233f6",
142
- "at": "2026-10-11T10:48:41.000Z",
143
- "message": "web: after screenshots in demo mode (strip, chip, self-build loop), design review recorded",
141
+ "sha": "b9bb333",
142
+ "at": "2026-10-13T11:03:29.000Z",
143
+ "message": "web: Runs review fixes (DESIGN.md Runs paragraph, units count as worked, silent lanes skip running slots), run 8 log",
144
144
  "author": "Claude",
145
145
  "lane": "web"
146
146
  },
147
147
  {
148
- "sha": "5dd559c",
149
- "at": "2026-10-11T10:22:58.000Z",
150
- "message": "kit: lane DONE for round 3",
148
+ "sha": "65ca327",
149
+ "at": "2026-10-13T10:59:43.000Z",
150
+ "message": "web: Runs list speaks the heat map's words and glyphs (worked, idle, failed, limit stop, likely running)",
151
151
  "author": "Claude",
152
- "lane": "kit"
152
+ "lane": "web"
153
153
  },
154
154
  {
155
- "sha": "cd1e191",
156
- "at": "2026-10-11T09:56:29.000Z",
157
- "message": "docs: run 6 handoff, still waiting on web screenshots",
155
+ "sha": "73aa9dc",
156
+ "at": "2026-10-13T10:56:17.000Z",
157
+ "message": "web: heat map review fixes (same cell twice, tie, readout, filter), run 8 handoff, outbox, run log",
158
158
  "author": "Claude",
159
- "lane": "docs"
159
+ "lane": "web"
160
160
  },
161
161
  {
162
- "sha": "6be797c",
163
- "at": "2026-10-11T09:54:52.000Z",
164
- "message": "web: lane progress on building cards, hide empty run bars, CI and live-site rows for the self card",
162
+ "sha": "b8b2c1a",
163
+ "at": "2026-10-13T10:56:17.000Z",
164
+ "message": "web: lane × hour heat map on the loop page and the Runs tab head (C3)",
165
165
  "author": "Claude",
166
166
  "lane": "web"
167
167
  },
168
168
  {
169
- "sha": "8745e76",
170
- "at": "2026-10-11T09:23:51.000Z",
171
- "message": "kit: lane-aware retro and handoff wording, tested",
169
+ "sha": "176dcc2",
170
+ "at": "2026-10-13T10:48:04.000Z",
171
+ "message": "server: draftInputs on LoopDetail (local + demo), draft-brief kills claude when the stream closes; run 8",
172
172
  "author": "Claude",
173
- "lane": "kit"
173
+ "lane": "server"
174
174
  },
175
175
  {
176
- "sha": "9878884",
177
- "at": "2026-10-11T08:56:11.000Z",
178
- "message": "docs: run 5 handoff, still waiting on web screenshots",
176
+ "sha": "3bd9ad4",
177
+ "at": "2026-10-13T10:02:31.000Z",
178
+ "message": "web: Runs tab skips the quiet heat-map slots (not-due, paused, done); run 7 handoff",
179
179
  "author": "Claude",
180
- "lane": "docs"
180
+ "lane": "web"
181
181
  },
182
182
  {
183
- "sha": "e42b59f",
184
- "at": "2026-10-11T08:25:10.000Z",
185
- "message": "kit: systemd units get PATH, linger and verify notes from review; handoff",
183
+ "sha": "fd960e2",
184
+ "at": "2026-10-13T09:57:41.000Z",
185
+ "message": "web: C6 review fixes, run 7 handoff, outbox (draftInputs, claude abort), run log",
186
186
  "author": "Claude",
187
- "lane": "kit"
187
+ "lane": "web"
188
188
  },
189
189
  {
190
- "sha": "041ea27",
191
- "at": "2026-10-11T08:24:35.000Z",
192
- "message": "kit: systemd user service and timer for the local runner, tested",
190
+ "sha": "6ba063b",
191
+ "at": "2026-10-13T09:57:41.000Z",
192
+ "message": "web: next round dialog with ingredients, Draft with Claude (SSE) and Copy prompt (C6)",
193
193
  "author": "Claude",
194
- "lane": "kit"
194
+ "lane": "web"
195
195
  },
196
196
  {
197
- "sha": "52fb0b9",
198
- "at": "2026-10-11T07:56:15.000Z",
199
- "message": "docs: run 4 handoff, waiting on web screenshots",
197
+ "sha": "b6ffbb6",
198
+ "at": "2026-10-13T09:47:48.000Z",
199
+ "message": "server: pace (LoopDetail.pace, POST /pace, policy.json URL builders, demo fixture)",
200
200
  "author": "Claude",
201
- "lane": "docs"
201
+ "lane": "server"
202
202
  },
203
203
  {
204
- "sha": "1c6e51a",
205
- "at": "2026-10-11T07:51:16.000Z",
206
- "message": "web: review fixes (note role, safe reset time, notice under h1), handoff",
204
+ "sha": "0208898",
205
+ "at": "2026-10-13T09:43:50.000Z",
206
+ "message": "server: LoopRun.kind, quiet slots for the heat map, RunOutcomes.paused",
207
207
  "author": "Claude",
208
- "lane": "web"
208
+ "lane": "server"
209
209
  },
210
210
  {
211
- "sha": "03be106",
212
- "at": "2026-10-11T07:51:16.000Z",
213
- "message": "web: shared Notice, paused-live note when rate limited, sticky day headings",
211
+ "sha": "268607a",
212
+ "at": "2026-10-13T09:01:40.000Z",
213
+ "message": "web: run 6 handoff, outbox (C3 slot kind ask), run log",
214
214
  "author": "Claude",
215
215
  "lane": "web"
216
216
  },
217
217
  {
218
- "sha": "2c4db3a",
219
- "at": "2026-10-11T07:51:06.000Z",
220
- "message": "control: owner review notes for web (self card progress, run bars, CI row)",
221
- "author": "Minntooos",
222
- "lane": "control"
223
- },
224
- {
225
- "sha": "d03b48a",
226
- "at": "2026-10-11T07:33:57.000Z",
227
- "message": "server: round 3 lane DONE",
218
+ "sha": "841eab1",
219
+ "at": "2026-10-13T09:00:47.000Z",
220
+ "message": "web: fleet chips, card subtitle and loop header follow the hold/Stalled state",
228
221
  "author": "Claude",
229
- "lane": "server"
222
+ "lane": "web"
230
223
  },
231
224
  {
232
- "sha": "21dab1c",
233
- "at": "2026-10-11T07:24:44.000Z",
234
- "message": "kit: optional control-room job in the lanes workflow",
225
+ "sha": "e01a78c",
226
+ "at": "2026-10-13T08:53:57.000Z",
227
+ "message": "web: badges never contradict the schedule or the strip; steer fold clears the footer",
235
228
  "author": "Claude",
236
- "lane": "kit"
229
+ "lane": "web"
237
230
  },
238
231
  {
239
- "sha": "1256361",
240
- "at": "2026-10-11T07:10:24.000Z",
241
- "message": "core: round 3 lane DONE",
232
+ "sha": "89d6013",
233
+ "at": "2026-10-13T08:41:31.000Z",
234
+ "message": "server: run 6 handoff, outbox, run log",
242
235
  "author": "Claude",
243
- "lane": "core"
236
+ "lane": "server"
244
237
  },
245
238
  {
246
- "sha": "40e499c",
247
- "at": "2026-10-11T06:59:17.000Z",
248
- "message": "docs: handoff and outbox",
239
+ "sha": "55cdae2",
240
+ "at": "2026-10-13T08:41:06.000Z",
241
+ "message": "server: POST /api/loops/:id/draft-brief streams the next-round draft (SSE) with its score",
249
242
  "author": "Claude",
250
- "lane": "docs"
243
+ "lane": "server"
251
244
  },
252
245
  {
253
- "sha": "d5ae9ea",
254
- "at": "2026-10-11T06:59:08.000Z",
255
- "message": "docs: record the fresh-install test in the Round 3 audit",
246
+ "sha": "1b73f3a",
247
+ "at": "2026-10-13T08:35:55.000Z",
248
+ "message": "server: routines-look-off replaces the usage-limit inbox item; local root DONE.md stops lanes",
256
249
  "author": "Claude",
257
- "lane": "docs"
250
+ "lane": "server"
258
251
  },
259
252
  {
260
- "sha": "8aa4fa6",
261
- "at": "2026-10-11T06:58:26.000Z",
262
- "message": "docs: launch drafts lead with the live self-build; honest check-lanes FAQ; CHANGELOG",
253
+ "sha": "8daffad",
254
+ "at": "2026-10-13T08:13:49.000Z",
255
+ "message": "web: one lane action row (Steer + schedule buttons), Snooze until…, run 5 design review, handoff, outbox, run log",
263
256
  "author": "Claude",
264
- "lane": "docs"
257
+ "lane": "web"
265
258
  },
266
259
  {
267
- "sha": "bb8ee3f",
268
- "at": "2026-10-11T06:58:01.000Z",
269
- "message": "docs: README live-demo link, snapshot FAQ, /loop-lanes in getting-started",
260
+ "sha": "99f5c15",
261
+ "at": "2026-10-13T08:08:26.000Z",
262
+ "message": "web: C5 schedule buttons on each lane (Pause lane with inline confirm, Resume, Snooze presets, Wake now) through POST …/schedule; demo links schedule.json on GitHub",
270
263
  "author": "Claude",
271
- "lane": "docs"
264
+ "lane": "web"
272
265
  },
273
266
  {
274
- "sha": "8a34f9b",
275
- "at": "2026-10-11T06:52:45.000Z",
276
- "message": "web: live GitHub mode with snapshot fallback, live/snapshot chip, mocked-GitHub e2e",
267
+ "sha": "8d67f22",
268
+ "at": "2026-10-13T07:59:54.000Z",
269
+ "message": "web: steer composer saves locally through POST …/steer; an unpushed commit shows Saved and is never written twice",
277
270
  "author": "Claude",
278
271
  "lane": "web"
279
272
  },
280
273
  {
281
- "sha": "919a9ad",
282
- "at": "2026-10-11T06:45:46.000Z",
283
- "message": "server: self snapshot covers rounds 1 and 2; handoff",
274
+ "sha": "c97388f",
275
+ "at": "2026-10-13T07:53:23.000Z",
276
+ "message": "web: \"Routines look off\" is one Needs-you row and a Stalled strip; it replaces the inbox's usage-limit item for that loop",
284
277
  "author": "Claude",
285
- "lane": "server"
278
+ "lane": "web"
286
279
  },
287
280
  {
288
- "sha": "fe8bb16",
289
- "at": "2026-10-11T06:42:09.000Z",
290
- "message": "server: live commits fall back to the author date",
281
+ "sha": "77fb917",
282
+ "at": "2026-10-13T07:39:39.000Z",
283
+ "message": "server: steer rejects lane 'all'; run 5 handoff, outbox, run log",
291
284
  "author": "Claude",
292
285
  "lane": "server"
293
286
  },
294
287
  {
295
- "sha": "60f87eb",
296
- "at": "2026-10-11T06:39:56.000Z",
297
- "message": "server: live GitHub mappers, static CSP meta and live.json, round 3 audit",
288
+ "sha": "4a7d52b",
289
+ "at": "2026-10-13T07:38:40.000Z",
290
+ "message": "server: POST steer and schedule routes over core's runSteer/runScheduleAction, prefilled GitHub URL builders for steer and schedule edits",
298
291
  "author": "Claude",
299
292
  "lane": "server"
300
293
  },
301
294
  {
302
- "sha": "72cacc3",
303
- "at": "2026-10-11T06:30:42.000Z",
304
- "message": "control: nudge server lane (Run 0/20 in round 3)",
295
+ "sha": "b230b06",
296
+ "at": "2026-10-13T07:22:23.000Z",
297
+ "message": "web: limit stops say 'not checked' unless every laned loop reports and none went silent; run 4 handoff, run log",
305
298
  "author": "Claude",
306
- "lane": "control"
299
+ "lane": "web"
307
300
  },
308
301
  {
309
- "sha": "3174cd5",
310
- "at": "2026-10-11T06:25:38.000Z",
311
- "message": "kit: plugin /loop-lanes command",
302
+ "sha": "fce9d33",
303
+ "at": "2026-10-13T07:16:22.000Z",
304
+ "message": "web: status strip reads server's runOutcomes (Running with lanes, Sleeping, Routines look off as Stalled, limit stops, next due)",
312
305
  "author": "Claude",
313
- "lane": "kit"
306
+ "lane": "web"
314
307
  },
315
308
  {
316
- "sha": "cfbd75a",
317
- "at": "2026-10-11T06:15:21.000Z",
318
- "message": "core: trust a dead lock pid only on the host that wrote it; handoff",
309
+ "sha": "6725b05",
310
+ "at": "2026-10-13T07:12:12.000Z",
311
+ "message": "web: lane schedule review fixes (finished/blocked lanes, idle count once, frozen demo clock, unread steer on a finished lane, sentence before the button)",
319
312
  "author": "Claude",
320
- "lane": "core"
313
+ "lane": "web"
321
314
  },
322
315
  {
323
- "sha": "b32b85d",
324
- "at": "2026-10-11T06:13:42.000Z",
325
- "message": "core: a session lock records its pid; a dead holder is stale at once",
316
+ "sha": "4f3cfd1",
317
+ "at": "2026-10-13T07:12:12.000Z",
318
+ "message": "web: C5 lane schedule sentence and C4 steer history with acknowledgement chips on the Lanes tab; de-flake the BLOCKED.md e2e",
326
319
  "author": "Claude",
327
- "lane": "core"
320
+ "lane": "web"
328
321
  },
329
322
  {
330
- "sha": "963491e",
331
- "at": "2026-10-11T06:11:59.000Z",
332
- "message": "core: loop run --as lets a claimant's own run proceed",
323
+ "sha": "fad1df2",
324
+ "at": "2026-10-13T07:11:41.000Z",
325
+ "message": "core: lane DONE (round 5), run 5 log",
333
326
  "author": "Claude",
334
327
  "lane": "core"
335
328
  },
336
329
  {
337
- "sha": "eca435d",
338
- "at": "2026-10-11T06:00:59.000Z",
339
- "message": "web: skeleton loading state, handoff and outbox",
330
+ "sha": "d804fb0",
331
+ "at": "2026-10-13T06:54:15.000Z",
332
+ "message": "web: screenshot spec review fixes (laptop project only, 1500 px cap, config baseURL); audit and outbox for docs",
340
333
  "author": "Claude",
341
334
  "lane": "web"
342
335
  },
343
336
  {
344
- "sha": "1fff83d",
345
- "at": "2026-10-11T05:59:26.000Z",
346
- "message": "web: lane claims and run bars in the Lanes tab, commits-per-day chart with table alternative",
337
+ "sha": "e6d402c",
338
+ "at": "2026-10-13T06:54:15.000Z",
339
+ "message": "web: docs screenshot set (1440 @1x, 375 @2x, top of page, each under 400 kB) in web/design/docs",
347
340
  "author": "Claude",
348
341
  "lane": "web"
349
342
  },
350
343
  {
351
- "sha": "fd3b16c",
352
- "at": "2026-10-11T05:59:06.000Z",
353
- "message": "docs: handoff and outbox for run 2",
344
+ "sha": "6b3b1c2",
345
+ "at": "2026-10-13T06:47:52.000Z",
346
+ "message": "server: cockpit data (runOutcomes, schedule, idleRuns, steer), live fetches schedule.json and steer.md, demo example fixtures",
354
347
  "author": "Claude",
355
- "lane": "docs"
348
+ "lane": "server"
356
349
  },
357
350
  {
358
- "sha": "a4e66b9",
359
- "at": "2026-10-11T05:58:57.000Z",
360
- "message": "docs: changelog Unreleased for 0.3.0 so far",
351
+ "sha": "88984fa",
352
+ "at": "2026-10-13T06:13:14.000Z",
353
+ "message": "core: loop pace show warns on an unusable policy.json; run 4 handoff, run log",
361
354
  "author": "Claude",
362
- "lane": "docs"
355
+ "lane": "core"
363
356
  },
364
357
  {
365
- "sha": "345a243",
366
- "at": "2026-10-11T05:58:40.000Z",
367
- "message": "docs: add team workflow page (claim, next, release), link it from README, lanes and getting started",
358
+ "sha": "9880adf",
359
+ "at": "2026-10-13T06:06:07.000Z",
360
+ "message": "web: phone loop-page strip on two lines; run 3 handoff, run log",
368
361
  "author": "Claude",
369
- "lane": "docs"
362
+ "lane": "web"
370
363
  },
371
364
  {
372
- "sha": "be07c68",
373
- "at": "2026-10-11T05:53:03.000Z",
374
- "message": "web: timeline grouped by day with lane colours, lane filter and UTC times",
365
+ "sha": "b80f8c5",
366
+ "at": "2026-10-13T06:02:23.000Z",
367
+ "message": "web: steer composer design review fixes (centred modal dialogs, ship-wheel icon, sticky actions)",
375
368
  "author": "Claude",
376
369
  "lane": "web"
377
370
  },
378
371
  {
379
- "sha": "2fe5ee8",
380
- "at": "2026-10-11T05:49:27.000Z",
381
- "message": "web: card edge cases (no total hides the bar, raw numbers in text), surface-2 token, handoff",
372
+ "sha": "ae7702f",
373
+ "at": "2026-10-13T05:56:20.000Z",
374
+ "message": "web: C4 steer composer (preview from core's formatter, demo GitHub editor, local loop steer command)",
382
375
  "author": "Claude",
383
376
  "lane": "web"
384
377
  },
385
378
  {
386
- "sha": "759cd35",
387
- "at": "2026-10-11T05:47:38.000Z",
388
- "message": "web: fleet cards with round and run-budget bars, self-build card first, empty rows omitted",
379
+ "sha": "82c0b13",
380
+ "at": "2026-10-13T05:40:32.000Z",
381
+ "message": "server: A2 stopped lanes never look off; task, outbox, run log",
389
382
  "author": "Claude",
390
- "lane": "web"
383
+ "lane": "server"
391
384
  },
392
385
  {
393
- "sha": "66b4d56",
394
- "at": "2026-10-11T05:25:24.000Z",
395
- "message": "core: note the last-test.json writer question",
386
+ "sha": "0f98c55",
387
+ "at": "2026-10-13T05:37:40.000Z",
388
+ "message": "server: run slots honour schedule.json (A2), routinesLookOff on RunsData",
396
389
  "author": "Claude",
397
- "lane": "core"
390
+ "lane": "server"
398
391
  },
399
392
  {
400
- "sha": "ddd2bcd",
401
- "at": "2026-10-11T05:25:14.000Z",
402
- "message": "core: claim rule in the lane prompt that loop run prepends",
393
+ "sha": "04b80bf",
394
+ "at": "2026-10-13T05:17:23.000Z",
395
+ "message": "core: pace review nits, handoff, outbox, run log",
403
396
  "author": "Claude",
404
397
  "lane": "core"
405
398
  },
406
399
  {
407
- "sha": "18efe52",
408
- "at": "2026-10-11T05:24:05.000Z",
409
- "message": "kit: /loop-next plugin command; handoff",
400
+ "sha": "83303cf",
401
+ "at": "2026-10-13T05:16:36.000Z",
402
+ "message": "core: pace policy parser, loop pace show|set, init --lanes writes .ai/policy.json (round 5 B7)",
410
403
  "author": "Claude",
411
- "lane": "kit"
404
+ "lane": "core"
412
405
  },
413
406
  {
414
- "sha": "c435234",
415
- "at": "2026-10-11T05:23:41.000Z",
416
- "message": "kit: method chapter on working with teammates",
417
- "author": "Claude",
418
- "lane": "kit"
407
+ "sha": "d5af9b3",
408
+ "at": "2026-10-13T03:21:44.000Z",
409
+ "message": "Round 5: add Pace (.ai/policy.json, B7/C9, lane-run and control-run read it)",
410
+ "author": "Minntooos",
411
+ "lane": "control"
419
412
  },
420
413
  {
421
- "sha": "59af400",
422
- "at": "2026-10-11T05:23:35.000Z",
423
- "message": "core: loop next, claims in loop status and LaneStatus",
414
+ "sha": "236d268",
415
+ "at": "2026-10-13T03:15:29.000Z",
416
+ "message": "core: init --lanes and lanes add write lane-run, control-run, schedule and steer files (round 5)",
424
417
  "author": "Claude",
425
418
  "lane": "core"
426
419
  },
427
420
  {
428
- "sha": "1a368ef",
429
- "at": "2026-10-11T05:23:13.000Z",
430
- "message": "kit: lane prompts and template honour lane claims",
421
+ "sha": "d01590c",
422
+ "at": "2026-10-13T03:08:04.000Z",
423
+ "message": "web: the status strip re-reads the clock every minute, so Likely running and next run do not go stale",
431
424
  "author": "Claude",
432
- "lane": "kit"
425
+ "lane": "web"
433
426
  },
434
427
  {
435
- "sha": "ee95e1a",
436
- "at": "2026-10-11T05:19:08.000Z",
437
- "message": "core: loop claim and loop release, claim parser",
428
+ "sha": "da3f76d",
429
+ "at": "2026-10-13T03:05:00.000Z",
430
+ "message": "web: strip and Needs-you review fixes (ship check wording, partial CI, released date, phone two lines), audit verdict, run 2 handoff, outbox, run log",
438
431
  "author": "Claude",
439
- "lane": "core"
432
+ "lane": "web"
440
433
  },
441
434
  {
442
- "sha": "52ae3a9",
443
- "at": "2026-10-11T05:15:11.000Z",
444
- "message": "core: browser-safe parsers (src/core/parse), Round 3 audit, handoff",
435
+ "sha": "62aad73",
436
+ "at": "2026-10-13T03:00:17.000Z",
437
+ "message": "web: status strip on every page and Needs-you rows with inline actions (round 5 C1, C2)",
445
438
  "author": "Claude",
446
- "lane": "core"
439
+ "lane": "web"
447
440
  },
448
441
  {
449
- "sha": "cceb048",
450
- "at": "2026-10-11T05:02:57.000Z",
451
- "message": "web: live cache and indicator wording (tested); fix typecheck of format.ts under tests; handoff",
442
+ "sha": "3e100b7",
443
+ "at": "2026-10-13T02:38:24.000Z",
444
+ "message": "server: git tag list failure leaves release tags absent; run 2 handoff",
452
445
  "author": "Claude",
453
- "lane": "web"
446
+ "lane": "server"
454
447
  },
455
448
  {
456
- "sha": "37928d9",
457
- "at": "2026-10-11T05:01:07.000Z",
458
- "message": "web: welcome strip and snapshot indicator replace the grey banner",
449
+ "sha": "dc738a5",
450
+ "at": "2026-10-13T02:38:24.000Z",
451
+ "message": "server: shipped needs the tag newer than DONE.md; releases leave unchecked tag/npm absent (round 5 A1)",
459
452
  "author": "Claude",
460
- "lane": "web"
453
+ "lane": "server"
461
454
  },
462
455
  {
463
- "sha": "9b89537",
464
- "at": "2026-10-11T04:58:11.000Z",
465
- "message": "docs: round 3 re-audit; Pages deploy also triggers on src/core changes",
456
+ "sha": "841852b",
457
+ "at": "2026-10-13T02:37:23.000Z",
458
+ "message": "core: check-lanes lets any lane touch .ai/schedule.json",
466
459
  "author": "Claude",
467
- "lane": "docs"
460
+ "lane": "core"
468
461
  },
469
462
  {
470
- "sha": "354c11e",
471
- "at": "2026-10-11T04:54:33.000Z",
472
- "message": "web: phone nav on one row, no 404 probe on static hosting",
463
+ "sha": "786ae1b",
464
+ "at": "2026-10-13T02:35:17.000Z",
465
+ "message": "core: confine next-round --draft output; round number from top-level headings",
473
466
  "author": "Claude",
474
- "lane": "web"
467
+ "lane": "core"
475
468
  },
476
469
  {
477
- "sha": "8756452",
478
- "at": "2026-10-11T04:48:52.000Z",
479
- "message": "web: DESIGN.md spec for the 0.3.0 dashboard",
470
+ "sha": "c7eca24",
471
+ "at": "2026-10-13T02:32:29.000Z",
472
+ "message": "core: loop next-round --draft with --print-prompt (round 5 B4)",
480
473
  "author": "Claude",
481
- "lane": "web"
474
+ "lane": "core"
482
475
  },
483
476
  {
484
- "sha": "cffbe9e",
485
- "at": "2026-10-11T04:47:06.000Z",
486
- "message": "web: round 3 re-audit and before screenshots",
477
+ "sha": "392fea9",
478
+ "at": "2026-10-13T02:28:35.000Z",
479
+ "message": "core: lintBrief reads round briefs; rounds counted from headings (round 5 A5/A9)",
487
480
  "author": "Claude",
488
- "lane": "web"
489
- },
490
- {
491
- "sha": "1fa8b73",
492
- "at": "2026-10-11T04:34:40.000Z",
493
- "message": "Round 3 start time in UTC (was local time)",
494
- "author": "Minntooos",
495
- "lane": "control"
481
+ "lane": "core"
496
482
  },
497
483
  {
498
- "sha": "693243e",
499
- "at": "2026-10-11T04:31:35.000Z",
500
- "message": "Start round 3: 0.3.0 \"Showcase\" brief, lane contracts, claims rule",
501
- "author": "Minntooos",
502
- "lane": "control"
484
+ "sha": "2315b03",
485
+ "at": "2026-10-13T02:25:00.000Z",
486
+ "message": "core: classifyRunSlots replaces phantom run slots in loop runs (round 5 A2/B3)",
487
+ "author": "Claude",
488
+ "lane": "core"
503
489
  },
504
490
  {
505
- "sha": "084bb9f",
506
- "at": "2026-10-11T04:01:08.000Z",
507
- "message": "Release 0.2.0: version bump and CHANGELOG",
508
- "author": "Minntooos",
509
- "lane": "control"
491
+ "sha": "0a9ce38",
492
+ "at": "2026-10-13T02:23:01.000Z",
493
+ "message": "kit: round 5 DONE (init --lanes hook left to core), run log",
494
+ "author": "Claude",
495
+ "lane": "kit"
510
496
  },
511
497
  {
512
- "sha": "c959167",
513
- "at": "2026-10-11T03:30:56.000Z",
514
- "message": "control: Round 2 done, root DONE.md",
498
+ "sha": "a44eb3f",
499
+ "at": "2026-10-13T02:21:41.000Z",
500
+ "message": "core: loop schedule and loop steer (round 5 B1-B2)",
515
501
  "author": "Claude",
516
- "lane": "control"
502
+ "lane": "core"
517
503
  },
518
504
  {
519
- "sha": "e1f69d2",
520
- "at": "2026-10-11T03:11:33.000Z",
521
- "message": "core: lane DONE",
505
+ "sha": "34c9f9e",
506
+ "at": "2026-10-13T02:17:27.000Z",
507
+ "message": "web: audit note on live tag edge cases",
522
508
  "author": "Claude",
523
- "lane": "core"
509
+ "lane": "web"
524
510
  },
525
511
  {
526
- "sha": "82eceb9",
527
- "at": "2026-10-11T03:11:21.000Z",
528
- "message": "core: start Claude Code from pnpm-style .cmd shims via the script they name",
512
+ "sha": "11bfe8a",
513
+ "at": "2026-10-13T02:17:27.000Z",
514
+ "message": "web: run 1 handoff, outbox (core: steer formatter + draft prompt; docs: new UI), run log",
529
515
  "author": "Claude",
530
- "lane": "core"
516
+ "lane": "web"
531
517
  },
532
518
  {
533
- "sha": "0da6d7e",
534
- "at": "2026-10-11T02:10:45.000Z",
535
- "message": "core: init --lanes and lanes add also merge the lane section into an existing AGENTS.md",
519
+ "sha": "5c5e875",
520
+ "at": "2026-10-13T02:17:27.000Z",
521
+ "message": "web: live tags from the tag list plus the exact lookup; npm only for a tagged version; no real registry in e2e (review)",
536
522
  "author": "Claude",
537
- "lane": "core"
523
+ "lane": "web"
538
524
  },
539
525
  {
540
- "sha": "dc20ba4",
541
- "at": "2026-10-11T01:56:34.000Z",
542
- "message": "control: round 2 status, only core left, local runner may stop",
543
- "author": "Minntooos",
544
- "lane": "control"
526
+ "sha": "5521bb6",
527
+ "at": "2026-10-13T02:17:27.000Z",
528
+ "message": "web: live mode fetches the release tag and npm state for A1/C7 (omitted on failure)",
529
+ "author": "Claude",
530
+ "lane": "web"
545
531
  },
546
532
  {
547
- "sha": "5e900de",
548
- "at": "2026-10-11T01:48:00.000Z",
549
- "message": "web: wrap long text on Fleet and Lanes (375 px e2e), audit closed, lane DONE",
533
+ "sha": "7caccef",
534
+ "at": "2026-10-13T02:17:27.000Z",
535
+ "message": "web: Releases show tag and npm state; a shipped version replaces Ready to ship and Release (round 5 C7, A1)",
550
536
  "author": "Claude",
551
537
  "lane": "web"
552
538
  },
553
539
  {
554
- "sha": "8b03b7a",
555
- "at": "2026-10-11T01:10:58.000Z",
556
- "message": "core: check-lanes says 'no commits yet' in an empty repo",
540
+ "sha": "d0bfb47",
541
+ "at": "2026-10-13T02:14:49.000Z",
542
+ "message": "core: steer/schedule review fixes (heading in body, outbox times, keep later snooze)",
557
543
  "author": "Claude",
558
544
  "lane": "core"
559
545
  },
560
546
  {
561
- "sha": "eebdcc7",
562
- "at": "2026-10-11T00:59:08.000Z",
563
- "message": "docs: fresh-install test 2, init --lanes needs a brief, blocking lane check in CI, lane DONE",
547
+ "sha": "117c556",
548
+ "at": "2026-10-13T02:13:55.000Z",
549
+ "message": "core: schedule and steer parsers, Round 5 audit (units 1-2)",
564
550
  "author": "Claude",
565
- "lane": "docs"
551
+ "lane": "core"
566
552
  },
567
553
  {
568
- "sha": "0026ad7",
569
- "at": "2026-10-11T00:50:41.000Z",
570
- "message": "web: 375 px overflow e2e, audit rows refreshed, run 4 handoff",
554
+ "sha": "ae92c71",
555
+ "at": "2026-10-13T02:05:26.000Z",
556
+ "message": "web: tab rows keep a keyboard-focused tab clear of the fade; fade set before first paint (review)",
571
557
  "author": "Claude",
572
558
  "lane": "web"
573
559
  },
574
560
  {
575
- "sha": "c0e6ca4",
576
- "at": "2026-10-11T00:33:50.000Z",
577
- "message": "server: audit closed, lane DONE with next improvements",
561
+ "sha": "188f274",
562
+ "at": "2026-10-13T02:03:09.000Z",
563
+ "message": "web: phone tab rows fade where labels are cut and keep the active tab in view (round 5 A6)",
578
564
  "author": "Claude",
579
- "lane": "server"
565
+ "lane": "web"
580
566
  },
581
567
  {
582
- "sha": "fb21555",
583
- "at": "2026-10-11T00:32:42.000Z",
584
- "message": "control: lane crossings and kit stalled notes",
568
+ "sha": "f55a95a",
569
+ "at": "2026-10-13T01:59:09.000Z",
570
+ "message": "web: DESIGN.md section 12 review fixes (C6 dialog, 375 px heat map, strip precedence, shared outcome words)",
585
571
  "author": "Claude",
586
- "lane": "control"
572
+ "lane": "web"
587
573
  },
588
574
  {
589
- "sha": "29c43e8",
590
- "at": "2026-10-11T00:13:33.000Z",
591
- "message": "core: a second Ctrl-C releases the lock and exits at once",
575
+ "sha": "5547505",
576
+ "at": "2026-10-13T01:57:50.000Z",
577
+ "message": "web: DESIGN.md section 12 for the round 5 cockpit components",
592
578
  "author": "Claude",
593
- "lane": "core"
579
+ "lane": "web"
594
580
  },
595
581
  {
596
- "sha": "3ba1731",
597
- "at": "2026-10-11T00:11:59.000Z",
598
- "message": "core: keep the session lock until the claude child settles after Ctrl-C",
582
+ "sha": "2ed7274",
583
+ "at": "2026-10-13T01:56:52.000Z",
584
+ "message": "web: Inbox lists every attention item the badge counts; release sentence without our colons (review fixes)",
599
585
  "author": "Claude",
600
- "lane": "core"
586
+ "lane": "web"
601
587
  },
602
588
  {
603
- "sha": "13ebeff",
604
- "at": "2026-10-10T23:59:05.000Z",
605
- "message": "docs: README screenshots, launch drafts for 0.2.0 with objections, CHANGELOG, handoff",
589
+ "sha": "515bf9a",
590
+ "at": "2026-10-13T01:52:13.000Z",
591
+ "message": "web: one attention list for banner and badge, shipped release leaves it, A8 strings (round 5 A1, A4, A8)",
606
592
  "author": "Claude",
607
- "lane": "docs"
593
+ "lane": "web"
608
594
  },
609
595
  {
610
- "sha": "7f77381",
611
- "at": "2026-10-10T23:49:02.000Z",
612
- "message": "web: toasts for server-sent events",
596
+ "sha": "78aa64f",
597
+ "at": "2026-10-13T01:48:05.000Z",
598
+ "message": "web: audit review fixes (A7 verify-only, C6/C8, A5/A9 routed)",
613
599
  "author": "Claude",
614
600
  "lane": "web"
615
601
  },
616
602
  {
617
- "sha": "6f94a5c",
618
- "at": "2026-10-10T23:47:36.000Z",
619
- "message": "web: demo-based Lanes e2e, refreshed docs screenshots",
603
+ "sha": "5ad5791",
604
+ "at": "2026-10-13T01:46:56.000Z",
605
+ "message": "web: round 5 audit (A1/A3/A4/A6/A7/A8 findings, cockpit gaps)",
620
606
  "author": "Claude",
621
607
  "lane": "web"
622
608
  },
623
609
  {
624
- "sha": "f10f088",
625
- "at": "2026-10-10T23:35:37.000Z",
626
- "message": "server: serve the sixth demo loop (this repo); demo-self rebuild test skips on shallow clones",
610
+ "sha": "2db9b11",
611
+ "at": "2026-10-13T01:41:25.000Z",
612
+ "message": "server: shipped only after DONE.md, ignore repo-only homepage, unreadable npm without latest; run log",
627
613
  "author": "Claude",
628
614
  "lane": "server"
629
615
  },
630
616
  {
631
- "sha": "a85c3a0",
632
- "at": "2026-10-10T23:10:25.000Z",
633
- "message": "core: run 4 handoff",
634
- "author": "Claude",
635
- "lane": "core"
636
- },
637
- {
638
- "sha": "5a35d94",
639
- "at": "2026-10-10T23:10:16.000Z",
640
- "message": "core: prefer the matching bin key when reading an npm shim's package",
617
+ "sha": "803ce9d",
618
+ "at": "2026-10-13T01:38:58.000Z",
619
+ "message": "server: A1 shipped release detection (tag + npm), A7 local card fields, round 5 audit",
641
620
  "author": "Claude",
642
- "lane": "core"
621
+ "lane": "server"
643
622
  },
644
623
  {
645
- "sha": "17881dc",
646
- "at": "2026-10-10T23:09:17.000Z",
647
- "message": "core: run claude via its npm package entry when only claude.cmd exists on Windows",
624
+ "sha": "d59d44c",
625
+ "at": "2026-10-13T01:25:17.000Z",
626
+ "message": "kit: round 5 run model templates, thin routine prompts, tests",
648
627
  "author": "Claude",
649
- "lane": "core"
628
+ "lane": "kit"
650
629
  },
651
630
  {
652
- "sha": "82b38ae",
653
- "at": "2026-10-10T22:28:38.000Z",
654
- "message": "control: vitest hookTimeout 20s and half the cores on Windows",
631
+ "sha": "0a48e44",
632
+ "at": "2026-10-13T01:17:05.000Z",
633
+ "message": "Start round 5: 0.5.0 \"Cockpit\" (glance, steer, sleep)",
634
+ "author": "Minntooos",
655
635
  "lane": "control"
656
636
  },
657
637
  {
658
- "sha": "4a3535d",
659
- "at": "2026-10-10T22:15:36.000Z",
660
- "message": "control: note for core about npm-installed claude.cmd on Windows",
638
+ "sha": "b3b51a5",
639
+ "at": "2026-10-11T14:51:27.000Z",
640
+ "message": "Release 0.3.0: version bump and CHANGELOG",
641
+ "author": "Minntooos",
661
642
  "lane": "control"
662
643
  },
663
644
  {
664
- "sha": "fa3952f",
665
- "at": "2026-10-10T21:53:11.000Z",
666
- "message": "core: shared paths pass check-lanes even inside another lane's glob",
667
- "lane": "core"
668
- },
669
- {
670
- "sha": "7d57b7a",
671
- "at": "2026-10-10T21:53:11.000Z",
672
- "message": "control: make npm test pass on Windows; web owns tests/unit/web",
645
+ "sha": "69cedb3",
646
+ "at": "2026-10-11T14:11:45.000Z",
647
+ "message": "control room: product DONE for round 3",
648
+ "author": "Claude",
673
649
  "lane": "control"
674
650
  },
675
651
  {
676
- "sha": "dff830c",
677
- "at": "2026-10-08T21:10:06.000Z",
678
- "message": "core: handoff and outbox order",
652
+ "sha": "4a797ed",
653
+ "at": "2026-10-11T12:46:04.000Z",
654
+ "message": "web: run 8, lane DONE for round 3",
679
655
  "author": "Claude",
680
- "lane": "core"
656
+ "lane": "web"
681
657
  },
682
658
  {
683
- "sha": "5ad8373",
684
- "at": "2026-10-08T21:09:57.000Z",
685
- "message": "core: lane stall threshold from cron, hide lanes from loop new templates",
659
+ "sha": "4574135",
660
+ "at": "2026-10-11T11:58:52.000Z",
661
+ "message": "docs: retro, dashboard page covers lanes and live demo, drop stale screenshot script, lane DONE",
686
662
  "author": "Claude",
687
- "lane": "core"
663
+ "lane": "docs"
688
664
  },
689
665
  {
690
- "sha": "a4fbb78",
691
- "at": "2026-10-08T20:59:16.000Z",
692
- "message": "docs: outbox note and handoff",
666
+ "sha": "778f216",
667
+ "at": "2026-10-11T11:48:41.000Z",
668
+ "message": "web: loop header shows the run budget as a bar",
693
669
  "author": "Claude",
694
- "lane": "docs"
670
+ "lane": "web"
695
671
  },
696
672
  {
697
- "sha": "64594d2",
698
- "at": "2026-10-08T20:59:03.000Z",
699
- "message": "docs: check 7 covers subcommands, advisory check-lanes CI step, softer lanes claim, outbox and handoff",
673
+ "sha": "e3bb7b4",
674
+ "at": "2026-10-11T10:58:04.000Z",
675
+ "message": "docs: dashboard page uses the refreshed fleet screenshot, run 7 handoff",
700
676
  "author": "Claude",
701
677
  "lane": "docs"
702
678
  },
703
679
  {
704
- "sha": "e5258c5",
705
- "at": "2026-10-08T20:57:12.000Z",
706
- "message": "docs: README lanes story, comparison table, FAQ; docs/lanes.md; check-lanes in CI",
680
+ "sha": "e1e36c2",
681
+ "at": "2026-10-11T10:51:46.000Z",
682
+ "message": "web: loop tabs scroll in one row, run 6 handoff, outbox for docs",
707
683
  "author": "Claude",
708
- "lane": "docs"
684
+ "lane": "web"
709
685
  },
710
686
  {
711
- "sha": "4d52e0f",
712
- "at": "2026-10-08T20:53:50.000Z",
713
- "message": "web: Fleet filter by status",
687
+ "sha": "97233f6",
688
+ "at": "2026-10-11T10:48:41.000Z",
689
+ "message": "web: after screenshots in demo mode (strip, chip, self-build loop), design review recorded",
714
690
  "author": "Claude",
715
691
  "lane": "web"
716
692
  },
717
693
  {
718
- "sha": "a5706b8",
719
- "at": "2026-10-08T20:51:30.000Z",
720
- "message": "web: count blocked lanes in Needs you, handoff and outbox",
694
+ "sha": "5dd559c",
695
+ "at": "2026-10-11T10:22:58.000Z",
696
+ "message": "kit: lane DONE for round 3",
721
697
  "author": "Claude",
722
- "lane": "web"
698
+ "lane": "kit"
723
699
  },
724
700
  {
725
- "sha": "b497604",
726
- "at": "2026-10-08T20:50:02.000Z",
727
- "message": "web: Lanes tab, Fleet lane strip and lane-aware Needs-you count, with fixture e2e and unit tests",
701
+ "sha": "cd1e191",
702
+ "at": "2026-10-11T09:56:29.000Z",
703
+ "message": "docs: run 6 handoff, still waiting on web screenshots",
728
704
  "author": "Claude",
729
- "lane": "web"
705
+ "lane": "docs"
730
706
  },
731
707
  {
732
- "sha": "27eb065",
733
- "at": "2026-10-08T20:46:44.000Z",
734
- "message": "web: fleet e2e tolerates a sixth demo loop; regenerate stale demo/this-repo.json (built from a shallow clone)",
708
+ "sha": "6be797c",
709
+ "at": "2026-10-11T09:54:52.000Z",
710
+ "message": "web: lane progress on building cards, hide empty run bars, CI and live-site rows for the self card",
735
711
  "author": "Claude",
736
712
  "lane": "web"
737
713
  },
738
714
  {
739
- "sha": "f969e31",
740
- "at": "2026-10-08T20:44:19.000Z",
741
- "message": "kit: lane DONE, handoff and outbox",
715
+ "sha": "8745e76",
716
+ "at": "2026-10-11T09:23:51.000Z",
717
+ "message": "kit: lane-aware retro and handoff wording, tested",
742
718
  "author": "Claude",
743
719
  "lane": "kit"
744
720
  },
745
721
  {
746
- "sha": "b458e98",
747
- "at": "2026-10-08T20:44:19.000Z",
748
- "message": "demo: regenerate this-repo.json so the up-to-date test passes again (main-stays-green fix, server owns it)",
722
+ "sha": "9878884",
723
+ "at": "2026-10-11T08:56:11.000Z",
724
+ "message": "docs: run 5 handoff, still waiting on web screenshots",
749
725
  "author": "Claude",
750
- "lane": "control"
726
+ "lane": "docs"
751
727
  },
752
728
  {
753
- "sha": "cba3a50",
754
- "at": "2026-10-08T20:42:30.000Z",
755
- "message": "kit: launchd plist notes on permissions and PATH",
729
+ "sha": "e42b59f",
730
+ "at": "2026-10-11T08:25:10.000Z",
731
+ "message": "kit: systemd units get PATH, linger and verify notes from review; handoff",
756
732
  "author": "Claude",
757
733
  "lane": "kit"
758
734
  },
759
735
  {
760
- "sha": "4a25201",
761
- "at": "2026-10-08T20:42:30.000Z",
762
- "message": "kit: two more example knowledge entries",
736
+ "sha": "041ea27",
737
+ "at": "2026-10-11T08:24:35.000Z",
738
+ "message": "kit: systemd user service and timer for the local runner, tested",
763
739
  "author": "Claude",
764
740
  "lane": "kit"
765
741
  },
766
742
  {
767
- "sha": "012d930",
768
- "at": "2026-10-08T20:42:30.000Z",
769
- "message": "kit: chrome-extension icons and a macOS launchd plist",
743
+ "sha": "52fb0b9",
744
+ "at": "2026-10-11T07:56:15.000Z",
745
+ "message": "docs: run 4 handoff, waiting on web screenshots",
770
746
  "author": "Claude",
771
- "lane": "kit"
747
+ "lane": "docs"
772
748
  },
773
749
  {
774
- "sha": "511ac42",
775
- "at": "2026-10-08T20:41:00.000Z",
776
- "message": "server: leak check covers Vercel, Cloudflare Pages and GitHub Pages configs",
750
+ "sha": "1c6e51a",
751
+ "at": "2026-10-11T07:51:16.000Z",
752
+ "message": "web: review fixes (note role, safe reset time, notice under h1), handoff",
777
753
  "author": "Claude",
778
- "lane": "server"
754
+ "lane": "web"
779
755
  },
780
756
  {
781
- "sha": "f9d4768",
782
- "at": "2026-10-08T20:39:34.000Z",
783
- "message": "server: sixth demo loop data (this repo) with scrub test",
784
- "author": "Claude",
785
- "lane": "server"
786
- },
787
- {
788
- "sha": "889dadc",
789
- "at": "2026-10-08T20:38:49.000Z",
790
- "message": "kit: say how a lane fixes a red main without failing check-lanes; note 0.2.0 requirement",
757
+ "sha": "03be106",
758
+ "at": "2026-10-11T07:51:16.000Z",
759
+ "message": "web: shared Notice, paused-live note when rate limited, sticky day headings",
791
760
  "author": "Claude",
792
- "lane": "kit"
761
+ "lane": "web"
793
762
  },
794
763
  {
795
- "sha": "1c361da",
796
- "at": "2026-10-08T20:38:49.000Z",
797
- "message": "kit: Lanes chapter in the method (Part B, section 16)",
798
- "author": "Claude",
799
- "lane": "kit"
764
+ "sha": "2c4db3a",
765
+ "at": "2026-10-11T07:51:06.000Z",
766
+ "message": "control: owner review notes for web (self card progress, run bars, CI row)",
767
+ "author": "Minntooos",
768
+ "lane": "control"
800
769
  },
801
770
  {
802
- "sha": "8a1bfc2",
803
- "at": "2026-10-08T20:37:48.000Z",
804
- "message": "server: handoff notes, cron finding for core",
771
+ "sha": "d03b48a",
772
+ "at": "2026-10-11T07:33:57.000Z",
773
+ "message": "server: round 3 lane DONE",
805
774
  "author": "Claude",
806
775
  "lane": "server"
807
776
  },
808
777
  {
809
- "sha": "396c50b",
810
- "at": "2026-10-08T20:37:48.000Z",
811
- "message": "server: lanes in the API, lane health checks, contracts",
778
+ "sha": "21dab1c",
779
+ "at": "2026-10-11T07:24:44.000Z",
780
+ "message": "kit: optional control-room job in the lanes workflow",
812
781
  "author": "Claude",
813
- "lane": "server"
782
+ "lane": "kit"
814
783
  },
815
784
  {
816
- "sha": "00ff6ca",
817
- "at": "2026-10-08T20:37:48.000Z",
818
- "message": "server: round 2 audit",
785
+ "sha": "1256361",
786
+ "at": "2026-10-11T07:10:24.000Z",
787
+ "message": "core: round 3 lane DONE",
819
788
  "author": "Claude",
820
- "lane": "server"
789
+ "lane": "core"
821
790
  },
822
791
  {
823
- "sha": "36b2f53",
824
- "at": "2026-10-08T20:35:11.000Z",
825
- "message": "kit: lanes.yml matrix workflow with test; prompt and README fixes from review",
792
+ "sha": "40e499c",
793
+ "at": "2026-10-11T06:59:17.000Z",
794
+ "message": "docs: handoff and outbox",
826
795
  "author": "Claude",
827
- "lane": "kit"
796
+ "lane": "docs"
828
797
  },
829
798
  {
830
- "sha": "7877df6",
831
- "at": "2026-10-08T20:32:39.000Z",
832
- "message": "kit: align lane templates with loop init --lanes; lane and control-room prompts with README",
799
+ "sha": "d5ae9ea",
800
+ "at": "2026-10-11T06:59:08.000Z",
801
+ "message": "docs: record the fresh-install test in the Round 3 audit",
833
802
  "author": "Claude",
834
- "lane": "kit"
803
+ "lane": "docs"
835
804
  },
836
805
  {
837
- "sha": "05859b0",
838
- "at": "2026-10-08T20:30:36.000Z",
839
- "message": "core: clearer answer --push failures; handoff",
806
+ "sha": "8aa4fa6",
807
+ "at": "2026-10-11T06:58:26.000Z",
808
+ "message": "docs: launch drafts lead with the live self-build; honest check-lanes FAQ; CHANGELOG",
840
809
  "author": "Claude",
841
- "lane": "core"
810
+ "lane": "docs"
842
811
  },
843
812
  {
844
- "sha": "090b145",
845
- "at": "2026-10-08T20:30:36.000Z",
846
- "message": "core: answer --push, loop new keeps the folder when gh fails, idle icon is - ; audit updated",
813
+ "sha": "bb8ee3f",
814
+ "at": "2026-10-11T06:58:01.000Z",
815
+ "message": "docs: README live-demo link, snapshot FAQ, /loop-lanes in getting-started",
847
816
  "author": "Claude",
848
- "lane": "core"
817
+ "lane": "docs"
849
818
  },
850
819
  {
851
- "sha": "6345418",
852
- "at": "2026-10-08T20:28:52.000Z",
853
- "message": "kit: lane templates survive first push, are idempotent, carry the unattended rules",
820
+ "sha": "8a34f9b",
821
+ "at": "2026-10-11T06:52:45.000Z",
822
+ "message": "web: live GitHub mode with snapshot fallback, live/snapshot chip, mocked-GitHub e2e",
854
823
  "author": "Claude",
855
- "lane": "kit"
824
+ "lane": "web"
856
825
  },
857
826
  {
858
- "sha": "8c33b8e",
859
- "at": "2026-10-08T20:28:51.000Z",
860
- "message": "kit: templates/lanes with documented placeholders and tests",
827
+ "sha": "919a9ad",
828
+ "at": "2026-10-11T06:45:46.000Z",
829
+ "message": "server: self snapshot covers rounds 1 and 2; handoff",
861
830
  "author": "Claude",
862
- "lane": "kit"
831
+ "lane": "server"
863
832
  },
864
833
  {
865
- "sha": "e2095e3",
866
- "at": "2026-10-08T20:27:08.000Z",
867
- "message": "core: lanes add normalizes and validates globs; outbox for kit, server, web",
834
+ "sha": "fe8bb16",
835
+ "at": "2026-10-11T06:42:09.000Z",
836
+ "message": "server: live commits fall back to the author date",
868
837
  "author": "Claude",
869
- "lane": "core"
838
+ "lane": "server"
870
839
  },
871
840
  {
872
- "sha": "5d78151",
873
- "at": "2026-10-08T20:27:08.000Z",
874
- "message": "core: loop init --lanes and loop lanes add",
841
+ "sha": "60f87eb",
842
+ "at": "2026-10-11T06:39:56.000Z",
843
+ "message": "server: live GitHub mappers, static CSP meta and live.json, round 3 audit",
875
844
  "author": "Claude",
876
- "lane": "core"
845
+ "lane": "server"
877
846
  },
878
847
  {
879
- "sha": "89b9431",
880
- "at": "2026-10-08T20:24:47.000Z",
881
- "message": "kit: keep shipped prompt, default prompt and gitignore test in sync",
848
+ "sha": "72cacc3",
849
+ "at": "2026-10-11T06:30:42.000Z",
850
+ "message": "control: nudge server lane (Run 0/20 in round 3)",
882
851
  "author": "Claude",
883
- "lane": "kit"
852
+ "lane": "control"
884
853
  },
885
854
  {
886
- "sha": "2cda5e2",
887
- "at": "2026-10-08T20:24:47.000Z",
888
- "message": "kit: audit; runner's own session lock no longer stops the prompt",
855
+ "sha": "3174cd5",
856
+ "at": "2026-10-11T06:25:38.000Z",
857
+ "message": "kit: plugin /loop-lanes command",
889
858
  "author": "Claude",
890
859
  "lane": "kit"
891
860
  },
892
861
  {
893
- "sha": "0c7c8b6",
894
- "at": "2026-10-08T20:22:58.000Z",
895
- "message": "core: lane status counts a later commit as a reply and falls back to subject prefix",
862
+ "sha": "cfbd75a",
863
+ "at": "2026-10-11T06:15:21.000Z",
864
+ "message": "core: trust a dead lock pid only on the host that wrote it; handoff",
896
865
  "author": "Claude",
897
866
  "lane": "core"
898
867
  },
899
868
  {
900
- "sha": "6e713c4",
901
- "at": "2026-10-08T20:21:23.000Z",
902
- "message": "core: per-lane state and loop status lane rows; LaneStatus type",
869
+ "sha": "b32b85d",
870
+ "at": "2026-10-11T06:13:42.000Z",
871
+ "message": "core: a session lock records its pid; a dead holder is stale at once",
903
872
  "author": "Claude",
904
873
  "lane": "core"
905
874
  },
906
875
  {
907
- "sha": "17605b8",
908
- "at": "2026-10-08T20:19:26.000Z",
909
- "message": "core: lock handles SIGHUP, failed rounds are recorded, doctor explains claude.cmd; outbox",
876
+ "sha": "963491e",
877
+ "at": "2026-10-11T06:11:59.000Z",
878
+ "message": "core: loop run --as lets a claimant's own run proceed",
910
879
  "author": "Claude",
911
880
  "lane": "core"
912
881
  },
913
882
  {
914
- "sha": "592bd6d",
915
- "at": "2026-10-08T20:17:39.000Z",
916
- "message": "core: loop run --lane with session lock written and cleared (also on failure and Ctrl-C)",
883
+ "sha": "eca435d",
884
+ "at": "2026-10-11T06:00:59.000Z",
885
+ "message": "web: skeleton loading state, handoff and outbox",
917
886
  "author": "Claude",
918
- "lane": "core"
887
+ "lane": "web"
919
888
  },
920
889
  {
921
- "sha": "8606f29",
922
- "at": "2026-10-08T20:15:38.000Z",
923
- "message": "core: loop doctor with injectable probes",
890
+ "sha": "1fff83d",
891
+ "at": "2026-10-11T05:59:26.000Z",
892
+ "message": "web: lane claims and run bars in the Lanes tab, commits-per-day chart with table alternative",
924
893
  "author": "Claude",
925
- "lane": "core"
894
+ "lane": "web"
926
895
  },
927
896
  {
928
- "sha": "1e80b43",
929
- "at": "2026-10-08T20:14:04.000Z",
930
- "message": "core: loop check-lanes (merges, shallow clones, non-ASCII paths handled)",
897
+ "sha": "fd3b16c",
898
+ "at": "2026-10-11T05:59:06.000Z",
899
+ "message": "docs: handoff and outbox for run 2",
931
900
  "author": "Claude",
932
- "lane": "core"
901
+ "lane": "docs"
933
902
  },
934
903
  {
935
- "sha": "c1e8faf",
936
- "at": "2026-10-08T20:10:57.000Z",
937
- "message": "core: lanes config parser, validator and ownership check (pure); core audit",
904
+ "sha": "a4e66b9",
905
+ "at": "2026-10-11T05:58:57.000Z",
906
+ "message": "docs: changelog Unreleased for 0.3.0 so far",
938
907
  "author": "Claude",
939
- "lane": "core"
908
+ "lane": "docs"
940
909
  },
941
910
  {
942
- "sha": "a373e23",
943
- "at": "2026-10-08T20:09:49.000Z",
944
- "message": "check: run docs-vs-help check from source so npm test works on a fresh checkout",
911
+ "sha": "345a243",
912
+ "at": "2026-10-11T05:58:40.000Z",
913
+ "message": "docs: add team workflow page (claim, next, release), link it from README, lanes and getting started",
945
914
  "author": "Claude",
946
- "lane": "core"
915
+ "lane": "docs"
947
916
  },
948
917
  {
949
- "sha": "53bb653",
950
- "at": "2026-10-08T19:58:55.000Z",
951
- "message": "docs: audit, fresh-install test, docs-vs-help check",
918
+ "sha": "be07c68",
919
+ "at": "2026-10-11T05:53:03.000Z",
920
+ "message": "web: timeline grouped by day with lane colours, lane filter and UTC times",
952
921
  "author": "Claude",
953
- "lane": "docs"
922
+ "lane": "web"
954
923
  },
955
924
  {
956
- "sha": "8a322c5",
957
- "at": "2026-10-08T19:47:57.000Z",
958
- "message": "web: screenshot generator and docs screenshots; request lane data shape",
925
+ "sha": "2fe5ee8",
926
+ "at": "2026-10-11T05:49:27.000Z",
927
+ "message": "web: card edge cases (no total hides the bar, raw numbers in text), surface-2 token, handoff",
959
928
  "author": "Claude",
960
929
  "lane": "web"
961
930
  },
962
931
  {
963
- "sha": "48ce16a",
964
- "at": "2026-10-08T19:46:36.000Z",
965
- "message": "web: audit, axe accessibility e2e on all screens and themes",
932
+ "sha": "759cd35",
933
+ "at": "2026-10-11T05:47:38.000Z",
934
+ "message": "web: fleet cards with round and run-budget bars, self-build card first, empty rows omitted",
966
935
  "author": "Claude",
967
936
  "lane": "web"
968
937
  },
969
938
  {
970
- "sha": "e979881",
971
- "at": "2026-10-08T19:38:28.000Z",
972
- "message": "Start round 2: 0.2.0 \"Lanes\" brief, lane contracts and audits",
973
- "author": "Minntooos",
974
- "lane": "control"
939
+ "sha": "66b4d56",
940
+ "at": "2026-10-11T05:25:24.000Z",
941
+ "message": "core: note the last-test.json writer question",
942
+ "author": "Claude",
943
+ "lane": "core"
975
944
  },
976
945
  {
977
- "sha": "c9bff21",
978
- "at": "2026-10-08T19:09:20.000Z",
979
- "message": "CI on Windows and Node 20/24; Pages demo deploys on change; link the live demo",
980
- "author": "Minntooos",
981
- "lane": "other"
946
+ "sha": "ddd2bcd",
947
+ "at": "2026-10-11T05:25:14.000Z",
948
+ "message": "core: claim rule in the lane prompt that loop run prepends",
949
+ "author": "Claude",
950
+ "lane": "core"
982
951
  },
983
952
  {
984
- "sha": "a10709e",
985
- "at": "2026-10-08T19:05:55.000Z",
986
- "message": "Make the Pages demo work under a subpath; add Dependabot and package links",
987
- "author": "Minntooos",
988
- "lane": "other"
953
+ "sha": "18efe52",
954
+ "at": "2026-10-11T05:24:05.000Z",
955
+ "message": "kit: /loop-next plugin command; handoff",
956
+ "author": "Claude",
957
+ "lane": "kit"
989
958
  },
990
959
  {
991
- "sha": "3385cdf",
992
- "at": "2026-10-08T17:58:34.000Z",
993
- "message": "Release 0.1.0",
994
- "lane": "release"
960
+ "sha": "c435234",
961
+ "at": "2026-10-11T05:23:41.000Z",
962
+ "message": "kit: method chapter on working with teammates",
963
+ "author": "Claude",
964
+ "lane": "kit"
995
965
  },
996
966
  {
997
- "sha": "36953a0",
998
- "at": "2026-10-08T15:29:55.000Z",
999
- "message": "control room: product DONE",
967
+ "sha": "59af400",
968
+ "at": "2026-10-11T05:23:35.000Z",
969
+ "message": "core: loop next, claims in loop status and LaneStatus",
1000
970
  "author": "Claude",
1001
- "lane": "control"
971
+ "lane": "core"
1002
972
  },
1003
973
  {
1004
- "sha": "b85e7d3",
1005
- "at": "2026-10-08T14:30:53.000Z",
1006
- "message": "Close three launch gaps: settings route, recorded test results, full Code of Conduct",
1007
- "lane": "other"
974
+ "sha": "1a368ef",
975
+ "at": "2026-10-11T05:23:13.000Z",
976
+ "message": "kit: lane prompts and template honour lane claims",
977
+ "author": "Claude",
978
+ "lane": "kit"
1008
979
  },
1009
980
  {
1010
- "sha": "6bfd42b",
1011
- "at": "2026-10-08T14:20:51.000Z",
1012
- "message": "Fix tests on Windows: run tsx through node, use an absolute missing-file URL",
1013
- "lane": "other"
981
+ "sha": "ee95e1a",
982
+ "at": "2026-10-11T05:19:08.000Z",
983
+ "message": "core: loop claim and loop release, claim parser",
984
+ "author": "Claude",
985
+ "lane": "core"
1014
986
  },
1015
987
  {
1016
- "sha": "7555d39",
1017
- "at": "2026-10-08T12:45:28.000Z",
1018
- "message": "web: run 8, lane DONE",
988
+ "sha": "52ae3a9",
989
+ "at": "2026-10-11T05:15:11.000Z",
990
+ "message": "core: browser-safe parsers (src/core/parse), Round 3 audit, handoff",
1019
991
  "author": "Claude",
1020
- "lane": "web"
992
+ "lane": "core"
1021
993
  },
1022
994
  {
1023
- "sha": "346d25d",
1024
- "at": "2026-10-08T12:31:01.000Z",
1025
- "message": "control room: tell web to finish with DONE",
995
+ "sha": "cceb048",
996
+ "at": "2026-10-11T05:02:57.000Z",
997
+ "message": "web: live cache and indicator wording (tested); fix typecheck of format.ts under tests; handoff",
1026
998
  "author": "Claude",
1027
- "lane": "control"
999
+ "lane": "web"
1028
1000
  },
1029
1001
  {
1030
- "sha": "e874baa",
1031
- "at": "2026-10-08T11:45:26.000Z",
1032
- "message": "web: record run 7, request GET /api/settings",
1002
+ "sha": "37928d9",
1003
+ "at": "2026-10-11T05:01:07.000Z",
1004
+ "message": "web: welcome strip and snapshot indicator replace the grey banner",
1033
1005
  "author": "Claude",
1034
1006
  "lane": "web"
1035
1007
  },
1036
1008
  {
1037
- "sha": "3e123ef",
1038
- "at": "2026-10-08T10:46:01.000Z",
1039
- "message": "web: unit tests for Loading and LoadError (busy state), jsx in root tsconfig",
1009
+ "sha": "9b89537",
1010
+ "at": "2026-10-11T04:58:11.000Z",
1011
+ "message": "docs: round 3 re-audit; Pages deploy also triggers on src/core changes",
1040
1012
  "author": "Claude",
1041
- "lane": "web"
1013
+ "lane": "docs"
1042
1014
  },
1043
1015
  {
1044
- "sha": "11c7e75",
1045
- "at": "2026-10-08T09:47:21.000Z",
1046
- "message": "web: record run 5 attempt and handoff",
1016
+ "sha": "354c11e",
1017
+ "at": "2026-10-11T04:54:33.000Z",
1018
+ "message": "web: phone nav on one row, no 404 probe on static hosting",
1047
1019
  "author": "Claude",
1048
1020
  "lane": "web"
1049
1021
  },
1050
1022
  {
1051
- "sha": "04a32c2",
1052
- "at": "2026-10-08T08:48:05.000Z",
1053
- "message": "web: record run 4 attempt and handoff",
1023
+ "sha": "8756452",
1024
+ "at": "2026-10-11T04:48:52.000Z",
1025
+ "message": "web: DESIGN.md spec for the 0.3.0 dashboard",
1054
1026
  "author": "Claude",
1055
1027
  "lane": "web"
1056
1028
  },
1057
1029
  {
1058
- "sha": "1fa8db2",
1059
- "at": "2026-10-08T07:46:38.000Z",
1060
- "message": "web: disable retry while refetching, error tests for health, inbox, loop detail",
1030
+ "sha": "cffbe9e",
1031
+ "at": "2026-10-11T04:47:06.000Z",
1032
+ "message": "web: round 3 re-audit and before screenshots",
1061
1033
  "author": "Claude",
1062
1034
  "lane": "web"
1063
1035
  },
1064
1036
  {
1065
- "sha": "01d2526",
1066
- "at": "2026-10-08T07:10:35.000Z",
1067
- "message": "core: DONE, handoff, outbox",
1068
- "author": "Claude",
1069
- "lane": "core"
1037
+ "sha": "1fa8b73",
1038
+ "at": "2026-10-11T04:34:40.000Z",
1039
+ "message": "Round 3 start time in UTC (was local time)",
1040
+ "author": "Minntooos",
1041
+ "lane": "control"
1070
1042
  },
1071
1043
  {
1072
- "sha": "0f037ac",
1073
- "at": "2026-10-08T06:46:26.000Z",
1074
- "message": "web: shared loading and error states with retry",
1075
- "author": "Claude",
1076
- "lane": "web"
1044
+ "sha": "693243e",
1045
+ "at": "2026-10-11T04:31:35.000Z",
1046
+ "message": "Start round 3: 0.3.0 \"Showcase\" brief, lane contracts, claims rule",
1047
+ "author": "Minntooos",
1048
+ "lane": "control"
1077
1049
  },
1078
1050
  {
1079
- "sha": "cbf9e96",
1080
- "at": "2026-10-08T06:22:28.000Z",
1081
- "message": "kit: outbox",
1082
- "author": "Claude",
1083
- "lane": "kit"
1051
+ "sha": "084bb9f",
1052
+ "at": "2026-10-11T04:01:08.000Z",
1053
+ "message": "Release 0.2.0: version bump and CHANGELOG",
1054
+ "author": "Minntooos",
1055
+ "lane": "control"
1084
1056
  },
1085
1057
  {
1086
- "sha": "f3d3f4b",
1087
- "at": "2026-10-08T06:22:20.000Z",
1088
- "message": "kit: ship template gitignore as gitignore, ignore loop runtime files, DONE",
1058
+ "sha": "c959167",
1059
+ "at": "2026-10-11T03:30:56.000Z",
1060
+ "message": "control: Round 2 done, root DONE.md",
1089
1061
  "author": "Claude",
1090
- "lane": "kit"
1062
+ "lane": "control"
1091
1063
  },
1092
1064
  {
1093
- "sha": "9ee6e75",
1094
- "at": "2026-10-08T06:11:23.000Z",
1095
- "message": "core: handoff, outbox",
1065
+ "sha": "e1f69d2",
1066
+ "at": "2026-10-11T03:11:33.000Z",
1067
+ "message": "core: lane DONE",
1096
1068
  "author": "Claude",
1097
1069
  "lane": "core"
1098
1070
  },
1099
1071
  {
1100
- "sha": "6ac5aff",
1101
- "at": "2026-10-08T06:11:14.000Z",
1102
- "message": "core: loop new writes gitignore as .gitignore and {{host}}; loop run honours session.lock and records runs.jsonl; DEFAULT_PROMPT mirrors routine prompt",
1072
+ "sha": "82eceb9",
1073
+ "at": "2026-10-11T03:11:21.000Z",
1074
+ "message": "core: start Claude Code from pnpm-style .cmd shims via the script they name",
1103
1075
  "author": "Claude",
1104
1076
  "lane": "core"
1105
1077
  },
1106
1078
  {
1107
- "sha": "a3b6e4c",
1108
- "at": "2026-10-08T06:02:45.000Z",
1109
- "message": "docs: demo pages workflow, DONE",
1079
+ "sha": "0da6d7e",
1080
+ "at": "2026-10-11T02:10:45.000Z",
1081
+ "message": "core: init --lanes and lanes add also merge the lane section into an existing AGENTS.md",
1110
1082
  "author": "Claude",
1111
- "lane": "docs"
1083
+ "lane": "core"
1112
1084
  },
1113
1085
  {
1114
- "sha": "8ff8c26",
1115
- "at": "2026-10-08T06:02:04.000Z",
1116
- "message": "docs: dashboard screenshot, command options",
1086
+ "sha": "dc20ba4",
1087
+ "at": "2026-10-11T01:56:34.000Z",
1088
+ "message": "control: round 2 status, only core left, local runner may stop",
1089
+ "author": "Minntooos",
1090
+ "lane": "control"
1091
+ },
1092
+ {
1093
+ "sha": "5e900de",
1094
+ "at": "2026-10-11T01:48:00.000Z",
1095
+ "message": "web: wrap long text on Fleet and Lanes (375 px e2e), audit closed, lane DONE",
1117
1096
  "author": "Claude",
1118
- "lane": "docs"
1097
+ "lane": "web"
1119
1098
  },
1120
1099
  {
1121
- "sha": "72dab42",
1122
- "at": "2026-10-08T06:01:11.000Z",
1123
- "message": "docs: social preview image",
1100
+ "sha": "8b03b7a",
1101
+ "at": "2026-10-11T01:10:58.000Z",
1102
+ "message": "core: check-lanes says 'no commits yet' in an empty repo",
1124
1103
  "author": "Claude",
1125
- "lane": "docs"
1104
+ "lane": "core"
1126
1105
  },
1127
1106
  {
1128
- "sha": "6f4d759",
1129
- "at": "2026-10-08T06:00:18.000Z",
1130
- "message": "docs: handoff",
1107
+ "sha": "eebdcc7",
1108
+ "at": "2026-10-11T00:59:08.000Z",
1109
+ "message": "docs: fresh-install test 2, init --lanes needs a brief, blocking lane check in CI, lane DONE",
1131
1110
  "author": "Claude",
1132
1111
  "lane": "docs"
1133
1112
  },
1134
1113
  {
1135
- "sha": "a7d2cdd",
1136
- "at": "2026-10-08T06:00:18.000Z",
1137
- "message": "docs: launch drafts",
1114
+ "sha": "0026ad7",
1115
+ "at": "2026-10-11T00:50:41.000Z",
1116
+ "message": "web: 375 px overflow e2e, audit rows refreshed, run 4 handoff",
1138
1117
  "author": "Claude",
1139
- "lane": "docs"
1118
+ "lane": "web"
1140
1119
  },
1141
1120
  {
1142
- "sha": "5456d6d",
1143
- "at": "2026-10-08T05:59:32.000Z",
1144
- "message": "docs: README with proof table, docs pages, README/link checks",
1121
+ "sha": "c0e6ca4",
1122
+ "at": "2026-10-11T00:33:50.000Z",
1123
+ "message": "server: audit closed, lane DONE with next improvements",
1145
1124
  "author": "Claude",
1146
- "lane": "docs"
1125
+ "lane": "server"
1147
1126
  },
1148
1127
  {
1149
- "sha": "926133b",
1150
- "at": "2026-10-08T05:57:27.000Z",
1151
- "message": "docs: CI workflow, contributing, conduct, security, changelog, templates, marketplace",
1128
+ "sha": "fb21555",
1129
+ "at": "2026-10-11T00:32:42.000Z",
1130
+ "message": "control: lane crossings and kit stalled notes",
1152
1131
  "author": "Claude",
1153
- "lane": "docs"
1132
+ "lane": "control"
1154
1133
  },
1155
1134
  {
1156
- "sha": "73bafcb",
1157
- "at": "2026-10-08T05:53:24.000Z",
1158
- "message": "web: tab arrow keys, contrast test, read-only inbox without a server, AA-safe accent buttons",
1135
+ "sha": "29c43e8",
1136
+ "at": "2026-10-11T00:13:33.000Z",
1137
+ "message": "core: a second Ctrl-C releases the lock and exits at once",
1159
1138
  "author": "Claude",
1160
- "lane": "web"
1139
+ "lane": "core"
1161
1140
  },
1162
1141
  {
1163
- "sha": "c4520a5",
1164
- "at": "2026-10-08T05:52:21.000Z",
1165
- "message": "web: new-loop wizard with live brief score and first-run state",
1142
+ "sha": "3ba1731",
1143
+ "at": "2026-10-11T00:11:59.000Z",
1144
+ "message": "core: keep the session lock until the claude child settles after Ctrl-C",
1166
1145
  "author": "Claude",
1167
- "lane": "web"
1146
+ "lane": "core"
1168
1147
  },
1169
1148
  {
1170
- "sha": "185bff3",
1171
- "at": "2026-10-08T05:51:29.000Z",
1172
- "message": "web: loop detail, inbox, health, settings, live updates; e2e on the demo server",
1149
+ "sha": "13ebeff",
1150
+ "at": "2026-10-10T23:59:05.000Z",
1151
+ "message": "docs: README screenshots, launch drafts for 0.2.0 with objections, CHANGELOG, handoff",
1173
1152
  "author": "Claude",
1174
- "lane": "web"
1153
+ "lane": "docs"
1175
1154
  },
1176
1155
  {
1177
- "sha": "360ae18",
1178
- "at": "2026-10-08T05:48:00.000Z",
1179
- "message": "web: app shell, command palette, theme, hash router and Fleet with e2e",
1156
+ "sha": "7f77381",
1157
+ "at": "2026-10-10T23:49:02.000Z",
1158
+ "message": "web: toasts for server-sent events",
1180
1159
  "author": "Claude",
1181
1160
  "lane": "web"
1182
1161
  },
1183
1162
  {
1184
- "sha": "bcc83ca",
1185
- "at": "2026-10-08T05:46:45.000Z",
1186
- "message": "server: lane DONE, retro, knowledge entry",
1163
+ "sha": "6f94a5c",
1164
+ "at": "2026-10-10T23:47:36.000Z",
1165
+ "message": "web: demo-based Lanes e2e, refreshed docs screenshots",
1187
1166
  "author": "Claude",
1188
- "lane": "server"
1167
+ "lane": "web"
1189
1168
  },
1190
1169
  {
1191
- "sha": "bee870d",
1192
- "at": "2026-10-08T05:45:20.000Z",
1193
- "message": "server: serve the built dashboard with a strict CSP; static demo API export",
1170
+ "sha": "f10f088",
1171
+ "at": "2026-10-10T23:35:37.000Z",
1172
+ "message": "server: serve the sixth demo loop (this repo); demo-self rebuild test skips on shallow clones",
1194
1173
  "author": "Claude",
1195
1174
  "lane": "server"
1196
1175
  },
1197
1176
  {
1198
- "sha": "c6faf17",
1199
- "at": "2026-10-08T05:43:30.000Z",
1200
- "message": "server: health checks (leak, stale lock, short runs, failing tests, runner silent) feed status and /api/checks",
1177
+ "sha": "a85c3a0",
1178
+ "at": "2026-10-10T23:10:25.000Z",
1179
+ "message": "core: run 4 handoff",
1201
1180
  "author": "Claude",
1202
- "lane": "server"
1181
+ "lane": "core"
1203
1182
  },
1204
1183
  {
1205
- "sha": "55749c0",
1206
- "at": "2026-10-08T05:41:10.000Z",
1207
- "message": "server: SSE /api/events with a polling clone watcher and periodic git fetch",
1184
+ "sha": "5a35d94",
1185
+ "at": "2026-10-10T23:10:16.000Z",
1186
+ "message": "core: prefer the matching bin key when reading an npm shim's package",
1208
1187
  "author": "Claude",
1209
- "lane": "server"
1188
+ "lane": "core"
1210
1189
  },
1211
1190
  {
1212
- "sha": "a75365c",
1213
- "at": "2026-10-08T05:39:19.000Z",
1214
- "message": "server: answer endpoint with host/origin/content-type guard",
1191
+ "sha": "17881dc",
1192
+ "at": "2026-10-10T23:09:17.000Z",
1193
+ "message": "core: run claude via its npm package entry when only claude.cmd exists on Windows",
1215
1194
  "author": "Claude",
1216
- "lane": "server"
1195
+ "lane": "core"
1217
1196
  },
1218
1197
  {
1219
- "sha": "8955f5c",
1220
- "at": "2026-10-08T05:37:30.000Z",
1221
- "message": "server: read real loops, inbox and detail from a projects folder",
1222
- "author": "Claude",
1223
- "lane": "server"
1198
+ "sha": "82b38ae",
1199
+ "at": "2026-10-10T22:28:38.000Z",
1200
+ "message": "control: vitest hookTimeout 20s and half the cores on Windows",
1201
+ "lane": "control"
1224
1202
  },
1225
1203
  {
1226
- "sha": "803d0db",
1227
- "at": "2026-10-08T05:35:49.000Z",
1228
- "message": "server: createApp, startServer and read routes from the demo snapshot",
1229
- "author": "Claude",
1230
- "lane": "server"
1204
+ "sha": "4a3535d",
1205
+ "at": "2026-10-10T22:15:36.000Z",
1206
+ "message": "control: note for core about npm-installed claude.cmd on Windows",
1207
+ "lane": "control"
1231
1208
  },
1232
1209
  {
1233
- "sha": "88eeea0",
1234
- "at": "2026-10-08T05:34:46.000Z",
1235
- "message": "server: demo snapshot builder, scrubbed five-sites.json, shared API types",
1210
+ "sha": "fa3952f",
1211
+ "at": "2026-10-10T21:53:11.000Z",
1212
+ "message": "core: shared paths pass check-lanes even inside another lane's glob",
1213
+ "lane": "core"
1214
+ },
1215
+ {
1216
+ "sha": "7d57b7a",
1217
+ "at": "2026-10-10T21:53:11.000Z",
1218
+ "message": "control: make npm test pass on Windows; web owns tests/unit/web",
1219
+ "lane": "control"
1220
+ },
1221
+ {
1222
+ "sha": "dff830c",
1223
+ "at": "2026-10-08T21:10:06.000Z",
1224
+ "message": "core: handoff and outbox order",
1236
1225
  "author": "Claude",
1237
- "lane": "server"
1226
+ "lane": "core"
1238
1227
  },
1239
1228
  {
1240
- "sha": "1abf8d9",
1241
- "at": "2026-10-08T05:31:46.000Z",
1242
- "message": "kit: method protocol files, lock rule in static-site loop prompt, stricter consistency tests",
1229
+ "sha": "5ad8373",
1230
+ "at": "2026-10-08T21:09:57.000Z",
1231
+ "message": "core: lane stall threshold from cron, hide lanes from loop new templates",
1243
1232
  "author": "Claude",
1244
- "lane": "kit"
1233
+ "lane": "core"
1245
1234
  },
1246
1235
  {
1247
- "sha": "d48aab3",
1248
- "at": "2026-10-08T05:29:55.000Z",
1249
- "message": "kit: outbox requests for core (gitignore in tarball) and docs (marketplace.json)",
1236
+ "sha": "a4fbb78",
1237
+ "at": "2026-10-08T20:59:16.000Z",
1238
+ "message": "docs: outbox note and handoff",
1250
1239
  "author": "Claude",
1251
- "lane": "kit"
1240
+ "lane": "docs"
1252
1241
  },
1253
1242
  {
1254
- "sha": "aaf8ab9",
1255
- "at": "2026-10-08T05:29:09.000Z",
1256
- "message": "kit: Chrome extension template with check script and Playwright extension test",
1243
+ "sha": "64594d2",
1244
+ "at": "2026-10-08T20:59:03.000Z",
1245
+ "message": "docs: check 7 covers subcommands, advisory check-lanes CI step, softer lanes claim, outbox and handoff",
1257
1246
  "author": "Claude",
1258
- "lane": "kit"
1247
+ "lane": "docs"
1259
1248
  },
1260
1249
  {
1261
- "sha": "c8ddbae",
1262
- "at": "2026-10-08T05:28:05.000Z",
1263
- "message": "kit: Claude Code plugin with loop-init, handoff, retro and stuck commands",
1250
+ "sha": "e5258c5",
1251
+ "at": "2026-10-08T20:57:12.000Z",
1252
+ "message": "docs: README lanes story, comparison table, FAQ; docs/lanes.md; check-lanes in CI",
1264
1253
  "author": "Claude",
1265
- "lane": "kit"
1254
+ "lane": "docs"
1266
1255
  },
1267
1256
  {
1268
- "sha": "3c0b4c8",
1269
- "at": "2026-10-08T05:27:20.000Z",
1270
- "message": "kit: fix runner review findings (github_token, allowedTools, XML encoding, lock wording)",
1257
+ "sha": "4d52e0f",
1258
+ "at": "2026-10-08T20:53:50.000Z",
1259
+ "message": "web: Fleet filter by status",
1271
1260
  "author": "Claude",
1272
- "lane": "kit"
1261
+ "lane": "web"
1273
1262
  },
1274
1263
  {
1275
- "sha": "8201e6e",
1276
- "at": "2026-10-08T05:26:35.000Z",
1277
- "message": "kit: GitHub Actions workflow and local scheduler configs with tests",
1264
+ "sha": "a5706b8",
1265
+ "at": "2026-10-08T20:51:30.000Z",
1266
+ "message": "web: count blocked lanes in Needs you, handoff and outbox",
1267
+ "author": "Claude",
1268
+ "lane": "web"
1269
+ },
1270
+ {
1271
+ "sha": "b497604",
1272
+ "at": "2026-10-08T20:50:02.000Z",
1273
+ "message": "web: Lanes tab, Fleet lane strip and lane-aware Needs-you count, with fixture e2e and unit tests",
1274
+ "author": "Claude",
1275
+ "lane": "web"
1276
+ },
1277
+ {
1278
+ "sha": "27eb065",
1279
+ "at": "2026-10-08T20:46:44.000Z",
1280
+ "message": "web: fleet e2e tolerates a sixth demo loop; regenerate stale demo/this-repo.json (built from a shallow clone)",
1281
+ "author": "Claude",
1282
+ "lane": "web"
1283
+ },
1284
+ {
1285
+ "sha": "f969e31",
1286
+ "at": "2026-10-08T20:44:19.000Z",
1287
+ "message": "kit: lane DONE, handoff and outbox",
1278
1288
  "author": "Claude",
1279
1289
  "lane": "kit"
1280
1290
  },
1281
1291
  {
1282
- "sha": "d8cc97d",
1283
- "at": "2026-10-08T05:25:56.000Z",
1284
- "message": "kit: routine runner prompt and README; loop run test accepts the shipped prompt",
1292
+ "sha": "b458e98",
1293
+ "at": "2026-10-08T20:44:19.000Z",
1294
+ "message": "demo: regenerate this-repo.json so the up-to-date test passes again (main-stays-green fix, server owns it)",
1295
+ "author": "Claude",
1296
+ "lane": "control"
1297
+ },
1298
+ {
1299
+ "sha": "cba3a50",
1300
+ "at": "2026-10-08T20:42:30.000Z",
1301
+ "message": "kit: launchd plist notes on permissions and PATH",
1285
1302
  "author": "Claude",
1286
1303
  "lane": "kit"
1287
1304
  },
1288
1305
  {
1289
- "sha": "2b919a7",
1290
- "at": "2026-10-08T05:25:03.000Z",
1291
- "message": "kit: static-site check rejects invalid hostnames; flag underscore-name bug to core",
1306
+ "sha": "4a25201",
1307
+ "at": "2026-10-08T20:42:30.000Z",
1308
+ "message": "kit: two more example knowledge entries",
1292
1309
  "author": "Claude",
1293
1310
  "lane": "kit"
1294
1311
  },
1295
1312
  {
1296
- "sha": "61467c3",
1297
- "at": "2026-10-08T05:25:03.000Z",
1298
- "message": "kit: static-site template passes its own checks when freshly generated",
1313
+ "sha": "012d930",
1314
+ "at": "2026-10-08T20:42:30.000Z",
1315
+ "message": "kit: chrome-extension icons and a macOS launchd plist",
1299
1316
  "author": "Claude",
1300
1317
  "lane": "kit"
1301
1318
  },
1302
1319
  {
1303
- "sha": "ea9869d",
1304
- "at": "2026-10-08T05:23:30.000Z",
1305
- "message": "core: dashboard shutdown, busy-port hint, handoff",
1320
+ "sha": "511ac42",
1321
+ "at": "2026-10-08T20:41:00.000Z",
1322
+ "message": "server: leak check covers Vercel, Cloudflare Pages and GitHub Pages configs",
1306
1323
  "author": "Claude",
1307
- "lane": "core"
1324
+ "lane": "server"
1308
1325
  },
1309
1326
  {
1310
- "sha": "d6c7a02",
1311
- "at": "2026-10-08T05:23:30.000Z",
1312
- "message": "core: loop dashboard command with lazy server import",
1327
+ "sha": "f9d4768",
1328
+ "at": "2026-10-08T20:39:34.000Z",
1329
+ "message": "server: sixth demo loop data (this repo) with scrub test",
1313
1330
  "author": "Claude",
1314
- "lane": "core"
1331
+ "lane": "server"
1315
1332
  },
1316
1333
  {
1317
- "sha": "0e0d08f",
1318
- "at": "2026-10-08T05:22:11.000Z",
1319
- "message": "kit: fix review findings (empty shipped index, prefilled goal, lock file named)",
1334
+ "sha": "889dadc",
1335
+ "at": "2026-10-08T20:38:49.000Z",
1336
+ "message": "kit: say how a lane fixes a red main without failing check-lanes; note 0.2.0 requirement",
1320
1337
  "author": "Claude",
1321
1338
  "lane": "kit"
1322
1339
  },
1323
1340
  {
1324
- "sha": "d4f7299",
1325
- "at": "2026-10-08T05:22:10.000Z",
1326
- "message": "kit: operating card, task template, knowledge index and unattended rules with tests",
1341
+ "sha": "1c361da",
1342
+ "at": "2026-10-08T20:38:49.000Z",
1343
+ "message": "kit: Lanes chapter in the method (Part B, section 16)",
1327
1344
  "author": "Claude",
1328
1345
  "lane": "kit"
1329
1346
  },
1330
1347
  {
1331
- "sha": "0596cfe",
1332
- "at": "2026-10-08T05:21:44.000Z",
1333
- "message": "core: loop run allows the tools a round needs, handles Windows claude lookup",
1348
+ "sha": "8a1bfc2",
1349
+ "at": "2026-10-08T20:37:48.000Z",
1350
+ "message": "server: handoff notes, cron finding for core",
1334
1351
  "author": "Claude",
1335
- "lane": "core"
1352
+ "lane": "server"
1336
1353
  },
1337
1354
  {
1338
- "sha": "039455a",
1339
- "at": "2026-10-08T05:20:45.000Z",
1340
- "message": "core: loop run builds the scheduler prompt and starts claude with an argument array",
1355
+ "sha": "396c50b",
1356
+ "at": "2026-10-08T20:37:48.000Z",
1357
+ "message": "server: lanes in the API, lane health checks, contracts",
1341
1358
  "author": "Claude",
1342
- "lane": "core"
1359
+ "lane": "server"
1343
1360
  },
1344
1361
  {
1345
- "sha": "936fee6",
1346
- "at": "2026-10-08T05:19:46.000Z",
1347
- "message": "core: answer commits only its files and extends a spent run budget; wider next-list headings",
1362
+ "sha": "00ff6ca",
1363
+ "at": "2026-10-08T20:37:48.000Z",
1364
+ "message": "server: round 2 audit",
1348
1365
  "author": "Claude",
1349
- "lane": "core"
1366
+ "lane": "server"
1350
1367
  },
1351
1368
  {
1352
- "sha": "b8aaa33",
1353
- "at": "2026-10-08T05:18:27.000Z",
1354
- "message": "core: loop status, next-round and answer",
1369
+ "sha": "36b2f53",
1370
+ "at": "2026-10-08T20:35:11.000Z",
1371
+ "message": "kit: lanes.yml matrix workflow with test; prompt and README fixes from review",
1355
1372
  "author": "Claude",
1356
- "lane": "core"
1373
+ "lane": "kit"
1357
1374
  },
1358
1375
  {
1359
- "sha": "7a1ecb0",
1360
- "at": "2026-10-08T05:16:47.000Z",
1361
- "message": "core: loop new cleans up when gh fails, git identity fallback",
1376
+ "sha": "7877df6",
1377
+ "at": "2026-10-08T20:32:39.000Z",
1378
+ "message": "kit: align lane templates with loop init --lanes; lane and control-room prompts with README",
1362
1379
  "author": "Claude",
1363
- "lane": "core"
1380
+ "lane": "kit"
1364
1381
  },
1365
1382
  {
1366
- "sha": "4e9b6ce",
1367
- "at": "2026-10-08T05:15:52.000Z",
1368
- "message": "core: loop new with template copier and Gh interface",
1383
+ "sha": "05859b0",
1384
+ "at": "2026-10-08T20:30:36.000Z",
1385
+ "message": "core: clearer answer --push failures; handoff",
1369
1386
  "author": "Claude",
1370
1387
  "lane": "core"
1371
1388
  },
1372
1389
  {
1373
- "sha": "f8eaff3",
1374
- "at": "2026-10-08T05:14:38.000Z",
1375
- "message": "core: init never overwrites loop state, rejects broken card markers",
1390
+ "sha": "090b145",
1391
+ "at": "2026-10-08T20:30:36.000Z",
1392
+ "message": "core: answer --push, loop new keeps the folder when gh fails, idle icon is - ; audit updated",
1376
1393
  "author": "Claude",
1377
1394
  "lane": "core"
1378
1395
  },
1379
1396
  {
1380
- "sha": "2aeee01",
1381
- "at": "2026-10-08T05:13:40.000Z",
1382
- "message": "core: loop init with brief gate, idempotent card merge",
1397
+ "sha": "6345418",
1398
+ "at": "2026-10-08T20:28:52.000Z",
1399
+ "message": "kit: lane templates survive first push, are idempotent, carry the unattended rules",
1383
1400
  "author": "Claude",
1384
- "lane": "core"
1401
+ "lane": "kit"
1385
1402
  },
1386
1403
  {
1387
- "sha": "a12a3ea",
1388
- "at": "2026-10-08T05:12:29.000Z",
1389
- "message": "core: anchor brief heading matching, nest sub-headings, accept bold labels",
1404
+ "sha": "8c33b8e",
1405
+ "at": "2026-10-08T20:28:51.000Z",
1406
+ "message": "kit: templates/lanes with documented placeholders and tests",
1390
1407
  "author": "Claude",
1391
- "lane": "core"
1408
+ "lane": "kit"
1392
1409
  },
1393
1410
  {
1394
- "sha": "947d666",
1395
- "at": "2026-10-08T05:11:25.000Z",
1396
- "message": "core: brief linter with named gaps",
1411
+ "sha": "e2095e3",
1412
+ "at": "2026-10-08T20:27:08.000Z",
1413
+ "message": "core: lanes add normalizes and validates globs; outbox for kit, server, web",
1397
1414
  "author": "Claude",
1398
1415
  "lane": "core"
1399
1416
  },
1400
1417
  {
1401
- "sha": "abed9af",
1402
- "at": "2026-10-08T05:10:44.000Z",
1403
- "message": "core: harden repo readers, update task file",
1418
+ "sha": "5d78151",
1419
+ "at": "2026-10-08T20:27:08.000Z",
1420
+ "message": "core: loop init --lanes and loop lanes add",
1404
1421
  "author": "Claude",
1405
1422
  "lane": "core"
1406
1423
  },
1407
1424
  {
1408
- "sha": "0db189d",
1409
- "at": "2026-10-08T05:09:58.000Z",
1410
- "message": "core: read a loop's facts from a folder (repo.ts)",
1425
+ "sha": "89b9431",
1426
+ "at": "2026-10-08T20:24:47.000Z",
1427
+ "message": "kit: keep shipped prompt, default prompt and gitignore test in sync",
1411
1428
  "author": "Claude",
1412
- "lane": "core"
1429
+ "lane": "kit"
1413
1430
  },
1414
1431
  {
1415
- "sha": "6706123",
1416
- "at": "2026-10-08T05:09:20.000Z",
1417
- "message": "Fix green: stop favicon 404 failing the dashboard smoke test",
1432
+ "sha": "2cda5e2",
1433
+ "at": "2026-10-08T20:24:47.000Z",
1434
+ "message": "kit: audit; runner's own session lock no longer stops the prompt",
1418
1435
  "author": "Claude",
1419
- "lane": "other"
1436
+ "lane": "kit"
1420
1437
  },
1421
1438
  {
1422
- "sha": "74b8626",
1423
- "at": "2026-10-08T04:58:48.000Z",
1424
- "message": "Add control room notes file that every lane reads",
1425
- "lane": "other"
1439
+ "sha": "0c7c8b6",
1440
+ "at": "2026-10-08T20:22:58.000Z",
1441
+ "message": "core: lane status counts a later commit as a reply and falls back to subject prefix",
1442
+ "author": "Claude",
1443
+ "lane": "core"
1426
1444
  },
1427
1445
  {
1428
- "sha": "0c397a2",
1429
- "at": "2026-10-08T04:55:53.000Z",
1430
- "message": "Set up Compounding Loop for five parallel build lanes",
1431
- "lane": "other"
1446
+ "sha": "6e713c4",
1447
+ "at": "2026-10-08T20:21:23.000Z",
1448
+ "message": "core: per-lane state and loop status lane rows; LaneStatus type",
1449
+ "author": "Claude",
1450
+ "lane": "core"
1432
1451
  },
1433
1452
  {
1434
- "sha": "2539ddd",
1435
- "at": "2026-10-05T22:14:08.000Z",
1436
- "message": "Add the Compounding Loop method",
1437
- "lane": "other"
1453
+ "sha": "17605b8",
1454
+ "at": "2026-10-08T20:19:26.000Z",
1455
+ "message": "core: lock handles SIGHUP, failed rounds are recorded, doctor explains claude.cmd; outbox",
1456
+ "author": "Claude",
1457
+ "lane": "core"
1458
+ },
1459
+ {
1460
+ "sha": "592bd6d",
1461
+ "at": "2026-10-08T20:17:39.000Z",
1462
+ "message": "core: loop run --lane with session lock written and cleared (also on failure and Ctrl-C)",
1463
+ "author": "Claude",
1464
+ "lane": "core"
1465
+ },
1466
+ {
1467
+ "sha": "8606f29",
1468
+ "at": "2026-10-08T20:15:38.000Z",
1469
+ "message": "core: loop doctor with injectable probes",
1470
+ "author": "Claude",
1471
+ "lane": "core"
1472
+ },
1473
+ {
1474
+ "sha": "1e80b43",
1475
+ "at": "2026-10-08T20:14:04.000Z",
1476
+ "message": "core: loop check-lanes (merges, shallow clones, non-ASCII paths handled)",
1477
+ "author": "Claude",
1478
+ "lane": "core"
1479
+ },
1480
+ {
1481
+ "sha": "c1e8faf",
1482
+ "at": "2026-10-08T20:10:57.000Z",
1483
+ "message": "core: lanes config parser, validator and ownership check (pure); core audit",
1484
+ "author": "Claude",
1485
+ "lane": "core"
1486
+ },
1487
+ {
1488
+ "sha": "a373e23",
1489
+ "at": "2026-10-08T20:09:49.000Z",
1490
+ "message": "check: run docs-vs-help check from source so npm test works on a fresh checkout",
1491
+ "author": "Claude",
1492
+ "lane": "core"
1493
+ },
1494
+ {
1495
+ "sha": "53bb653",
1496
+ "at": "2026-10-08T19:58:55.000Z",
1497
+ "message": "docs: audit, fresh-install test, docs-vs-help check",
1498
+ "author": "Claude",
1499
+ "lane": "docs"
1500
+ },
1501
+ {
1502
+ "sha": "8a322c5",
1503
+ "at": "2026-10-08T19:47:57.000Z",
1504
+ "message": "web: screenshot generator and docs screenshots; request lane data shape",
1505
+ "author": "Claude",
1506
+ "lane": "web"
1507
+ },
1508
+ {
1509
+ "sha": "48ce16a",
1510
+ "at": "2026-10-08T19:46:36.000Z",
1511
+ "message": "web: audit, axe accessibility e2e on all screens and themes",
1512
+ "author": "Claude",
1513
+ "lane": "web"
1514
+ },
1515
+ {
1516
+ "sha": "e979881",
1517
+ "at": "2026-10-08T19:38:28.000Z",
1518
+ "message": "Start round 2: 0.2.0 \"Lanes\" brief, lane contracts and audits",
1519
+ "author": "Minntooos",
1520
+ "lane": "control"
1521
+ },
1522
+ {
1523
+ "sha": "c9bff21",
1524
+ "at": "2026-10-08T19:09:20.000Z",
1525
+ "message": "CI on Windows and Node 20/24; Pages demo deploys on change; link the live demo",
1526
+ "author": "Minntooos",
1527
+ "lane": "other"
1528
+ },
1529
+ {
1530
+ "sha": "a10709e",
1531
+ "at": "2026-10-08T19:05:55.000Z",
1532
+ "message": "Make the Pages demo work under a subpath; add Dependabot and package links",
1533
+ "author": "Minntooos",
1534
+ "lane": "other"
1535
+ },
1536
+ {
1537
+ "sha": "3385cdf",
1538
+ "at": "2026-10-08T17:58:34.000Z",
1539
+ "message": "Release 0.1.0",
1540
+ "lane": "release"
1541
+ },
1542
+ {
1543
+ "sha": "36953a0",
1544
+ "at": "2026-10-08T15:29:55.000Z",
1545
+ "message": "control room: product DONE",
1546
+ "author": "Claude",
1547
+ "lane": "control"
1548
+ },
1549
+ {
1550
+ "sha": "b85e7d3",
1551
+ "at": "2026-10-08T14:30:53.000Z",
1552
+ "message": "Close three launch gaps: settings route, recorded test results, full Code of Conduct",
1553
+ "lane": "other"
1554
+ },
1555
+ {
1556
+ "sha": "6bfd42b",
1557
+ "at": "2026-10-08T14:20:51.000Z",
1558
+ "message": "Fix tests on Windows: run tsx through node, use an absolute missing-file URL",
1559
+ "lane": "other"
1560
+ },
1561
+ {
1562
+ "sha": "7555d39",
1563
+ "at": "2026-10-08T12:45:28.000Z",
1564
+ "message": "web: run 8, lane DONE",
1565
+ "author": "Claude",
1566
+ "lane": "web"
1567
+ },
1568
+ {
1569
+ "sha": "346d25d",
1570
+ "at": "2026-10-08T12:31:01.000Z",
1571
+ "message": "control room: tell web to finish with DONE",
1572
+ "author": "Claude",
1573
+ "lane": "control"
1574
+ },
1575
+ {
1576
+ "sha": "e874baa",
1577
+ "at": "2026-10-08T11:45:26.000Z",
1578
+ "message": "web: record run 7, request GET /api/settings",
1579
+ "author": "Claude",
1580
+ "lane": "web"
1581
+ },
1582
+ {
1583
+ "sha": "3e123ef",
1584
+ "at": "2026-10-08T10:46:01.000Z",
1585
+ "message": "web: unit tests for Loading and LoadError (busy state), jsx in root tsconfig",
1586
+ "author": "Claude",
1587
+ "lane": "web"
1588
+ },
1589
+ {
1590
+ "sha": "11c7e75",
1591
+ "at": "2026-10-08T09:47:21.000Z",
1592
+ "message": "web: record run 5 attempt and handoff",
1593
+ "author": "Claude",
1594
+ "lane": "web"
1595
+ },
1596
+ {
1597
+ "sha": "04a32c2",
1598
+ "at": "2026-10-08T08:48:05.000Z",
1599
+ "message": "web: record run 4 attempt and handoff",
1600
+ "author": "Claude",
1601
+ "lane": "web"
1602
+ },
1603
+ {
1604
+ "sha": "1fa8db2",
1605
+ "at": "2026-10-08T07:46:38.000Z",
1606
+ "message": "web: disable retry while refetching, error tests for health, inbox, loop detail",
1607
+ "author": "Claude",
1608
+ "lane": "web"
1609
+ },
1610
+ {
1611
+ "sha": "01d2526",
1612
+ "at": "2026-10-08T07:10:35.000Z",
1613
+ "message": "core: DONE, handoff, outbox",
1614
+ "author": "Claude",
1615
+ "lane": "core"
1616
+ },
1617
+ {
1618
+ "sha": "0f037ac",
1619
+ "at": "2026-10-08T06:46:26.000Z",
1620
+ "message": "web: shared loading and error states with retry",
1621
+ "author": "Claude",
1622
+ "lane": "web"
1623
+ },
1624
+ {
1625
+ "sha": "cbf9e96",
1626
+ "at": "2026-10-08T06:22:28.000Z",
1627
+ "message": "kit: outbox",
1628
+ "author": "Claude",
1629
+ "lane": "kit"
1630
+ },
1631
+ {
1632
+ "sha": "f3d3f4b",
1633
+ "at": "2026-10-08T06:22:20.000Z",
1634
+ "message": "kit: ship template gitignore as gitignore, ignore loop runtime files, DONE",
1635
+ "author": "Claude",
1636
+ "lane": "kit"
1637
+ },
1638
+ {
1639
+ "sha": "9ee6e75",
1640
+ "at": "2026-10-08T06:11:23.000Z",
1641
+ "message": "core: handoff, outbox",
1642
+ "author": "Claude",
1643
+ "lane": "core"
1644
+ },
1645
+ {
1646
+ "sha": "6ac5aff",
1647
+ "at": "2026-10-08T06:11:14.000Z",
1648
+ "message": "core: loop new writes gitignore as .gitignore and {{host}}; loop run honours session.lock and records runs.jsonl; DEFAULT_PROMPT mirrors routine prompt",
1649
+ "author": "Claude",
1650
+ "lane": "core"
1651
+ },
1652
+ {
1653
+ "sha": "a3b6e4c",
1654
+ "at": "2026-10-08T06:02:45.000Z",
1655
+ "message": "docs: demo pages workflow, DONE",
1656
+ "author": "Claude",
1657
+ "lane": "docs"
1658
+ },
1659
+ {
1660
+ "sha": "8ff8c26",
1661
+ "at": "2026-10-08T06:02:04.000Z",
1662
+ "message": "docs: dashboard screenshot, command options",
1663
+ "author": "Claude",
1664
+ "lane": "docs"
1665
+ },
1666
+ {
1667
+ "sha": "72dab42",
1668
+ "at": "2026-10-08T06:01:11.000Z",
1669
+ "message": "docs: social preview image",
1670
+ "author": "Claude",
1671
+ "lane": "docs"
1672
+ },
1673
+ {
1674
+ "sha": "6f4d759",
1675
+ "at": "2026-10-08T06:00:18.000Z",
1676
+ "message": "docs: handoff",
1677
+ "author": "Claude",
1678
+ "lane": "docs"
1679
+ },
1680
+ {
1681
+ "sha": "a7d2cdd",
1682
+ "at": "2026-10-08T06:00:18.000Z",
1683
+ "message": "docs: launch drafts",
1684
+ "author": "Claude",
1685
+ "lane": "docs"
1686
+ },
1687
+ {
1688
+ "sha": "5456d6d",
1689
+ "at": "2026-10-08T05:59:32.000Z",
1690
+ "message": "docs: README with proof table, docs pages, README/link checks",
1691
+ "author": "Claude",
1692
+ "lane": "docs"
1693
+ },
1694
+ {
1695
+ "sha": "926133b",
1696
+ "at": "2026-10-08T05:57:27.000Z",
1697
+ "message": "docs: CI workflow, contributing, conduct, security, changelog, templates, marketplace",
1698
+ "author": "Claude",
1699
+ "lane": "docs"
1700
+ },
1701
+ {
1702
+ "sha": "73bafcb",
1703
+ "at": "2026-10-08T05:53:24.000Z",
1704
+ "message": "web: tab arrow keys, contrast test, read-only inbox without a server, AA-safe accent buttons",
1705
+ "author": "Claude",
1706
+ "lane": "web"
1707
+ },
1708
+ {
1709
+ "sha": "c4520a5",
1710
+ "at": "2026-10-08T05:52:21.000Z",
1711
+ "message": "web: new-loop wizard with live brief score and first-run state",
1712
+ "author": "Claude",
1713
+ "lane": "web"
1714
+ },
1715
+ {
1716
+ "sha": "185bff3",
1717
+ "at": "2026-10-08T05:51:29.000Z",
1718
+ "message": "web: loop detail, inbox, health, settings, live updates; e2e on the demo server",
1719
+ "author": "Claude",
1720
+ "lane": "web"
1721
+ },
1722
+ {
1723
+ "sha": "360ae18",
1724
+ "at": "2026-10-08T05:48:00.000Z",
1725
+ "message": "web: app shell, command palette, theme, hash router and Fleet with e2e",
1726
+ "author": "Claude",
1727
+ "lane": "web"
1728
+ },
1729
+ {
1730
+ "sha": "bcc83ca",
1731
+ "at": "2026-10-08T05:46:45.000Z",
1732
+ "message": "server: lane DONE, retro, knowledge entry",
1733
+ "author": "Claude",
1734
+ "lane": "server"
1735
+ },
1736
+ {
1737
+ "sha": "bee870d",
1738
+ "at": "2026-10-08T05:45:20.000Z",
1739
+ "message": "server: serve the built dashboard with a strict CSP; static demo API export",
1740
+ "author": "Claude",
1741
+ "lane": "server"
1742
+ },
1743
+ {
1744
+ "sha": "c6faf17",
1745
+ "at": "2026-10-08T05:43:30.000Z",
1746
+ "message": "server: health checks (leak, stale lock, short runs, failing tests, runner silent) feed status and /api/checks",
1747
+ "author": "Claude",
1748
+ "lane": "server"
1749
+ },
1750
+ {
1751
+ "sha": "55749c0",
1752
+ "at": "2026-10-08T05:41:10.000Z",
1753
+ "message": "server: SSE /api/events with a polling clone watcher and periodic git fetch",
1754
+ "author": "Claude",
1755
+ "lane": "server"
1756
+ },
1757
+ {
1758
+ "sha": "a75365c",
1759
+ "at": "2026-10-08T05:39:19.000Z",
1760
+ "message": "server: answer endpoint with host/origin/content-type guard",
1761
+ "author": "Claude",
1762
+ "lane": "server"
1763
+ },
1764
+ {
1765
+ "sha": "8955f5c",
1766
+ "at": "2026-10-08T05:37:30.000Z",
1767
+ "message": "server: read real loops, inbox and detail from a projects folder",
1768
+ "author": "Claude",
1769
+ "lane": "server"
1770
+ },
1771
+ {
1772
+ "sha": "803d0db",
1773
+ "at": "2026-10-08T05:35:49.000Z",
1774
+ "message": "server: createApp, startServer and read routes from the demo snapshot",
1775
+ "author": "Claude",
1776
+ "lane": "server"
1777
+ },
1778
+ {
1779
+ "sha": "88eeea0",
1780
+ "at": "2026-10-08T05:34:46.000Z",
1781
+ "message": "server: demo snapshot builder, scrubbed five-sites.json, shared API types",
1782
+ "author": "Claude",
1783
+ "lane": "server"
1784
+ },
1785
+ {
1786
+ "sha": "1abf8d9",
1787
+ "at": "2026-10-08T05:31:46.000Z",
1788
+ "message": "kit: method protocol files, lock rule in static-site loop prompt, stricter consistency tests",
1789
+ "author": "Claude",
1790
+ "lane": "kit"
1791
+ },
1792
+ {
1793
+ "sha": "d48aab3",
1794
+ "at": "2026-10-08T05:29:55.000Z",
1795
+ "message": "kit: outbox requests for core (gitignore in tarball) and docs (marketplace.json)",
1796
+ "author": "Claude",
1797
+ "lane": "kit"
1798
+ },
1799
+ {
1800
+ "sha": "aaf8ab9",
1801
+ "at": "2026-10-08T05:29:09.000Z",
1802
+ "message": "kit: Chrome extension template with check script and Playwright extension test",
1803
+ "author": "Claude",
1804
+ "lane": "kit"
1805
+ },
1806
+ {
1807
+ "sha": "c8ddbae",
1808
+ "at": "2026-10-08T05:28:05.000Z",
1809
+ "message": "kit: Claude Code plugin with loop-init, handoff, retro and stuck commands",
1810
+ "author": "Claude",
1811
+ "lane": "kit"
1812
+ },
1813
+ {
1814
+ "sha": "3c0b4c8",
1815
+ "at": "2026-10-08T05:27:20.000Z",
1816
+ "message": "kit: fix runner review findings (github_token, allowedTools, XML encoding, lock wording)",
1817
+ "author": "Claude",
1818
+ "lane": "kit"
1819
+ },
1820
+ {
1821
+ "sha": "8201e6e",
1822
+ "at": "2026-10-08T05:26:35.000Z",
1823
+ "message": "kit: GitHub Actions workflow and local scheduler configs with tests",
1824
+ "author": "Claude",
1825
+ "lane": "kit"
1826
+ },
1827
+ {
1828
+ "sha": "d8cc97d",
1829
+ "at": "2026-10-08T05:25:56.000Z",
1830
+ "message": "kit: routine runner prompt and README; loop run test accepts the shipped prompt",
1831
+ "author": "Claude",
1832
+ "lane": "kit"
1833
+ },
1834
+ {
1835
+ "sha": "2b919a7",
1836
+ "at": "2026-10-08T05:25:03.000Z",
1837
+ "message": "kit: static-site check rejects invalid hostnames; flag underscore-name bug to core",
1838
+ "author": "Claude",
1839
+ "lane": "kit"
1840
+ },
1841
+ {
1842
+ "sha": "61467c3",
1843
+ "at": "2026-10-08T05:25:03.000Z",
1844
+ "message": "kit: static-site template passes its own checks when freshly generated",
1845
+ "author": "Claude",
1846
+ "lane": "kit"
1847
+ },
1848
+ {
1849
+ "sha": "ea9869d",
1850
+ "at": "2026-10-08T05:23:30.000Z",
1851
+ "message": "core: dashboard shutdown, busy-port hint, handoff",
1852
+ "author": "Claude",
1853
+ "lane": "core"
1854
+ },
1855
+ {
1856
+ "sha": "d6c7a02",
1857
+ "at": "2026-10-08T05:23:30.000Z",
1858
+ "message": "core: loop dashboard command with lazy server import",
1859
+ "author": "Claude",
1860
+ "lane": "core"
1861
+ },
1862
+ {
1863
+ "sha": "0e0d08f",
1864
+ "at": "2026-10-08T05:22:11.000Z",
1865
+ "message": "kit: fix review findings (empty shipped index, prefilled goal, lock file named)",
1866
+ "author": "Claude",
1867
+ "lane": "kit"
1868
+ },
1869
+ {
1870
+ "sha": "d4f7299",
1871
+ "at": "2026-10-08T05:22:10.000Z",
1872
+ "message": "kit: operating card, task template, knowledge index and unattended rules with tests",
1873
+ "author": "Claude",
1874
+ "lane": "kit"
1875
+ },
1876
+ {
1877
+ "sha": "0596cfe",
1878
+ "at": "2026-10-08T05:21:44.000Z",
1879
+ "message": "core: loop run allows the tools a round needs, handles Windows claude lookup",
1880
+ "author": "Claude",
1881
+ "lane": "core"
1882
+ },
1883
+ {
1884
+ "sha": "039455a",
1885
+ "at": "2026-10-08T05:20:45.000Z",
1886
+ "message": "core: loop run builds the scheduler prompt and starts claude with an argument array",
1887
+ "author": "Claude",
1888
+ "lane": "core"
1889
+ },
1890
+ {
1891
+ "sha": "936fee6",
1892
+ "at": "2026-10-08T05:19:46.000Z",
1893
+ "message": "core: answer commits only its files and extends a spent run budget; wider next-list headings",
1894
+ "author": "Claude",
1895
+ "lane": "core"
1896
+ },
1897
+ {
1898
+ "sha": "b8aaa33",
1899
+ "at": "2026-10-08T05:18:27.000Z",
1900
+ "message": "core: loop status, next-round and answer",
1901
+ "author": "Claude",
1902
+ "lane": "core"
1903
+ },
1904
+ {
1905
+ "sha": "7a1ecb0",
1906
+ "at": "2026-10-08T05:16:47.000Z",
1907
+ "message": "core: loop new cleans up when gh fails, git identity fallback",
1908
+ "author": "Claude",
1909
+ "lane": "core"
1910
+ },
1911
+ {
1912
+ "sha": "4e9b6ce",
1913
+ "at": "2026-10-08T05:15:52.000Z",
1914
+ "message": "core: loop new with template copier and Gh interface",
1915
+ "author": "Claude",
1916
+ "lane": "core"
1917
+ },
1918
+ {
1919
+ "sha": "f8eaff3",
1920
+ "at": "2026-10-08T05:14:38.000Z",
1921
+ "message": "core: init never overwrites loop state, rejects broken card markers",
1922
+ "author": "Claude",
1923
+ "lane": "core"
1924
+ },
1925
+ {
1926
+ "sha": "2aeee01",
1927
+ "at": "2026-10-08T05:13:40.000Z",
1928
+ "message": "core: loop init with brief gate, idempotent card merge",
1929
+ "author": "Claude",
1930
+ "lane": "core"
1931
+ },
1932
+ {
1933
+ "sha": "a12a3ea",
1934
+ "at": "2026-10-08T05:12:29.000Z",
1935
+ "message": "core: anchor brief heading matching, nest sub-headings, accept bold labels",
1936
+ "author": "Claude",
1937
+ "lane": "core"
1938
+ },
1939
+ {
1940
+ "sha": "947d666",
1941
+ "at": "2026-10-08T05:11:25.000Z",
1942
+ "message": "core: brief linter with named gaps",
1943
+ "author": "Claude",
1944
+ "lane": "core"
1945
+ },
1946
+ {
1947
+ "sha": "abed9af",
1948
+ "at": "2026-10-08T05:10:44.000Z",
1949
+ "message": "core: harden repo readers, update task file",
1950
+ "author": "Claude",
1951
+ "lane": "core"
1952
+ },
1953
+ {
1954
+ "sha": "0db189d",
1955
+ "at": "2026-10-08T05:09:58.000Z",
1956
+ "message": "core: read a loop's facts from a folder (repo.ts)",
1957
+ "author": "Claude",
1958
+ "lane": "core"
1959
+ },
1960
+ {
1961
+ "sha": "6706123",
1962
+ "at": "2026-10-08T05:09:20.000Z",
1963
+ "message": "Fix green: stop favicon 404 failing the dashboard smoke test",
1964
+ "author": "Claude",
1965
+ "lane": "other"
1966
+ },
1967
+ {
1968
+ "sha": "74b8626",
1969
+ "at": "2026-10-08T04:58:48.000Z",
1970
+ "message": "Add control room notes file that every lane reads",
1971
+ "lane": "other"
1972
+ },
1973
+ {
1974
+ "sha": "0c397a2",
1975
+ "at": "2026-10-08T04:55:53.000Z",
1976
+ "message": "Set up Compounding Loop for five parallel build lanes",
1977
+ "lane": "other"
1978
+ },
1979
+ {
1980
+ "sha": "2539ddd",
1981
+ "at": "2026-10-05T22:14:08.000Z",
1982
+ "message": "Add the Compounding Loop method",
1983
+ "lane": "other"
1438
1984
  }
1439
1985
  ],
1440
1986
  "contract": [
1441
1987
  {
1442
- "text": "core lane: every done-when passes",
1443
- "pass": true
1988
+ "text": "core lane: every done-when passes",
1989
+ "pass": true
1990
+ },
1991
+ {
1992
+ "text": "kit lane: every done-when passes",
1993
+ "pass": true
1994
+ },
1995
+ {
1996
+ "text": "server lane: every done-when passes",
1997
+ "pass": false
1998
+ },
1999
+ {
2000
+ "text": "web lane: every done-when passes",
2001
+ "pass": false
2002
+ },
2003
+ {
2004
+ "text": "docs lane: every done-when passes",
2005
+ "pass": false
2006
+ }
2007
+ ],
2008
+ "laneNotes": [
2009
+ {
2010
+ "lane": "core",
2011
+ "contract": [
2012
+ {
2013
+ "text": "`npm test` passes",
2014
+ "pass": true
2015
+ },
2016
+ {
2017
+ "text": "Round 5 audit section with no open blocker",
2018
+ "pass": true
2019
+ },
2020
+ {
2021
+ "text": "schedule, steer and pace parsers and commands ship with tests",
2022
+ "pass": true
2023
+ }
2024
+ ],
2025
+ "decisions": [],
2026
+ "knowledge": []
2027
+ },
2028
+ {
2029
+ "lane": "kit",
2030
+ "contract": [
2031
+ {
2032
+ "text": "`npm test` passes",
2033
+ "pass": true
2034
+ },
2035
+ {
2036
+ "text": "run-model templates and thin routine prompts ship",
2037
+ "pass": true
2038
+ }
2039
+ ],
2040
+ "decisions": [],
2041
+ "knowledge": []
2042
+ },
2043
+ {
2044
+ "lane": "server",
2045
+ "contract": [
2046
+ {
2047
+ "text": "`npm test` passes",
2048
+ "pass": true
2049
+ },
2050
+ {
2051
+ "text": "Round 5 audit section with no open blocker",
2052
+ "pass": false
2053
+ },
2054
+ {
2055
+ "text": "every new route has unit tests and is in contracts.md",
2056
+ "pass": true
2057
+ },
2058
+ {
2059
+ "text": "live mode shows the same cockpit fields as the demo",
2060
+ "pass": false
2061
+ }
2062
+ ],
2063
+ "decisions": [
2064
+ "Fixtures in tests/unit/server/fixtures/live are hand-written to the documented GitHub API shape (no network in cloud runs), with no names or emails.",
2065
+ "Moved `laneChecks` to src/server/laneChecks.ts and `bulletsUnder`/`contractFromTask` to src/server/taskBullets.ts so live/ stays browser-safe; old modules re-export them.",
2066
+ "CSP for the hosted demo is a meta tag written by demo/export-static.mjs into demo/static/index.html (workflow already copies demo/static over dist/web)."
2067
+ ],
2068
+ "knowledge": []
2069
+ },
2070
+ {
2071
+ "lane": "web",
2072
+ "contract": [
2073
+ {
2074
+ "text": "`npm test` passes",
2075
+ "pass": true
2076
+ },
2077
+ {
2078
+ "text": "DESIGN.md covers every Round 5 screen",
2079
+ "pass": false
2080
+ },
2081
+ {
2082
+ "text": "axe passes on the new screens in both themes",
2083
+ "pass": false
2084
+ }
2085
+ ],
2086
+ "decisions": [
2087
+ "2026-10-11: lane colours are Okabe-Ito tuned to AA on both themes (web/DESIGN.md §3); status palette from IDEA.md unchanged. Charts hand-written SVG, no dependency. Timeline times are absolute UTC (relative in title). DESIGN.md research: only Vercel Geist was re-verified online, others from working knowledge, stated in the doc."
2088
+ ],
2089
+ "knowledge": []
2090
+ },
2091
+ {
2092
+ "lane": "docs",
2093
+ "contract": [
2094
+ {
2095
+ "text": "the dashboard docs describe Steer, Pace and the schedule",
2096
+ "pass": false
2097
+ },
2098
+ {
2099
+ "text": "README screenshots are the Round 5 ones",
2100
+ "pass": false
2101
+ }
2102
+ ],
2103
+ "decisions": [],
2104
+ "knowledge": []
2105
+ }
2106
+ ],
2107
+ "knowledge": [],
2108
+ "decisions": [],
2109
+ "history": [],
2110
+ "runs": [
2111
+ {
2112
+ "lane": "server",
2113
+ "at": "2026-10-13T12:25:00.000Z",
2114
+ "outcome": "pushed",
2115
+ "kind": "worked",
2116
+ "endedAt": "2026-10-13T12:37:00.000Z",
2117
+ "units": [
2118
+ "unit 48"
2119
+ ],
2120
+ "tests": {
2121
+ "passed": 227,
2122
+ "failed": 0
2123
+ },
2124
+ "commits": [],
2125
+ "note": "unit shipped"
2126
+ },
2127
+ {
2128
+ "lane": "kit",
2129
+ "at": "2026-10-13T12:15:00.000Z",
2130
+ "outcome": "no-run-recorded",
2131
+ "kind": "done",
2132
+ "units": [],
2133
+ "commits": []
2134
+ },
2135
+ {
2136
+ "lane": "core",
2137
+ "at": "2026-10-13T12:05:00.000Z",
2138
+ "outcome": "no-run-recorded",
2139
+ "kind": "done",
2140
+ "units": [],
2141
+ "commits": []
2142
+ },
2143
+ {
2144
+ "lane": "docs",
2145
+ "at": "2026-10-13T11:45:00.000Z",
2146
+ "outcome": "no-run-recorded",
2147
+ "kind": "not-due",
2148
+ "units": [],
2149
+ "commits": []
2150
+ },
2151
+ {
2152
+ "lane": "web",
2153
+ "at": "2026-10-13T11:35:00.000Z",
2154
+ "outcome": "pushed",
2155
+ "kind": "worked",
2156
+ "endedAt": "2026-10-13T11:47:00.000Z",
2157
+ "units": [
2158
+ "unit 47"
2159
+ ],
2160
+ "tests": {
2161
+ "passed": 226,
2162
+ "failed": 0
2163
+ },
2164
+ "commits": [],
2165
+ "note": "unit shipped"
2166
+ },
2167
+ {
2168
+ "lane": "server",
2169
+ "at": "2026-10-13T11:25:00.000Z",
2170
+ "outcome": "pushed",
2171
+ "kind": "worked",
2172
+ "endedAt": "2026-10-13T11:37:00.000Z",
2173
+ "units": [
2174
+ "unit 47"
2175
+ ],
2176
+ "tests": {
2177
+ "passed": 226,
2178
+ "failed": 0
2179
+ },
2180
+ "commits": [],
2181
+ "note": "unit shipped"
2182
+ },
2183
+ {
2184
+ "lane": "kit",
2185
+ "at": "2026-10-13T11:15:00.000Z",
2186
+ "outcome": "no-run-recorded",
2187
+ "kind": "done",
2188
+ "units": [],
2189
+ "commits": []
2190
+ },
2191
+ {
2192
+ "lane": "core",
2193
+ "at": "2026-10-13T11:05:00.000Z",
2194
+ "outcome": "no-run-recorded",
2195
+ "kind": "done",
2196
+ "units": [],
2197
+ "commits": []
2198
+ },
2199
+ {
2200
+ "lane": "docs",
2201
+ "at": "2026-10-13T10:45:00.000Z",
2202
+ "outcome": "no-run-recorded",
2203
+ "kind": "not-due",
2204
+ "units": [],
2205
+ "commits": []
2206
+ },
2207
+ {
2208
+ "lane": "web",
2209
+ "at": "2026-10-13T10:35:00.000Z",
2210
+ "outcome": "pushed",
2211
+ "kind": "worked",
2212
+ "endedAt": "2026-10-13T10:47:00.000Z",
2213
+ "units": [
2214
+ "unit 46"
2215
+ ],
2216
+ "tests": {
2217
+ "passed": 225,
2218
+ "failed": 0
2219
+ },
2220
+ "commits": [],
2221
+ "note": "unit shipped"
2222
+ },
2223
+ {
2224
+ "lane": "server",
2225
+ "at": "2026-10-13T10:25:00.000Z",
2226
+ "outcome": "no-run-recorded",
2227
+ "kind": "missed",
2228
+ "units": [],
2229
+ "commits": []
2230
+ },
2231
+ {
2232
+ "lane": "kit",
2233
+ "at": "2026-10-13T10:15:00.000Z",
2234
+ "outcome": "no-run-recorded",
2235
+ "kind": "done",
2236
+ "units": [],
2237
+ "commits": []
2238
+ },
2239
+ {
2240
+ "lane": "core",
2241
+ "at": "2026-10-13T10:05:00.000Z",
2242
+ "outcome": "no-run-recorded",
2243
+ "kind": "done",
2244
+ "units": [],
2245
+ "commits": []
2246
+ },
2247
+ {
2248
+ "lane": "docs",
2249
+ "at": "2026-10-13T09:45:00.000Z",
2250
+ "outcome": "nothing-pushed",
2251
+ "kind": "idle",
2252
+ "endedAt": "2026-10-13T09:57:00.000Z",
2253
+ "units": [],
2254
+ "commits": [],
2255
+ "note": "nothing to do"
2256
+ },
2257
+ {
2258
+ "lane": "web",
2259
+ "at": "2026-10-13T09:35:00.000Z",
2260
+ "outcome": "pushed",
2261
+ "kind": "worked",
2262
+ "endedAt": "2026-10-13T09:47:00.000Z",
2263
+ "units": [
2264
+ "unit 45"
2265
+ ],
2266
+ "tests": {
2267
+ "passed": 224,
2268
+ "failed": 0
2269
+ },
2270
+ "commits": [],
2271
+ "note": "unit shipped"
2272
+ },
2273
+ {
2274
+ "lane": "server",
2275
+ "at": "2026-10-13T09:25:00.000Z",
2276
+ "outcome": "no-run-recorded",
2277
+ "kind": "missed",
2278
+ "units": [],
2279
+ "commits": []
2280
+ },
2281
+ {
2282
+ "lane": "kit",
2283
+ "at": "2026-10-13T09:15:00.000Z",
2284
+ "outcome": "no-run-recorded",
2285
+ "kind": "done",
2286
+ "units": [],
2287
+ "commits": []
2288
+ },
2289
+ {
2290
+ "lane": "core",
2291
+ "at": "2026-10-13T09:05:00.000Z",
2292
+ "outcome": "no-run-recorded",
2293
+ "kind": "done",
2294
+ "units": [],
2295
+ "commits": []
2296
+ },
2297
+ {
2298
+ "lane": "docs",
2299
+ "at": "2026-10-13T08:45:00.000Z",
2300
+ "outcome": "nothing-pushed",
2301
+ "kind": "idle",
2302
+ "endedAt": "2026-10-13T08:57:00.000Z",
2303
+ "units": [],
2304
+ "commits": [],
2305
+ "note": "nothing to do"
2306
+ },
2307
+ {
2308
+ "lane": "web",
2309
+ "at": "2026-10-13T08:35:00.000Z",
2310
+ "outcome": "nothing-pushed",
2311
+ "kind": "idle",
2312
+ "endedAt": "2026-10-13T08:47:00.000Z",
2313
+ "units": [],
2314
+ "commits": [],
2315
+ "note": "nothing to do"
2316
+ },
2317
+ {
2318
+ "lane": "server",
2319
+ "at": "2026-10-13T08:25:00.000Z",
2320
+ "outcome": "pushed",
2321
+ "kind": "worked",
2322
+ "endedAt": "2026-10-13T08:37:00.000Z",
2323
+ "units": [
2324
+ "unit 44"
2325
+ ],
2326
+ "tests": {
2327
+ "passed": 223,
2328
+ "failed": 0
2329
+ },
2330
+ "commits": [],
2331
+ "note": "unit shipped"
2332
+ },
2333
+ {
2334
+ "lane": "kit",
2335
+ "at": "2026-10-13T08:15:00.000Z",
2336
+ "outcome": "no-run-recorded",
2337
+ "kind": "done",
2338
+ "units": [],
2339
+ "commits": []
1444
2340
  },
1445
2341
  {
1446
- "text": "kit lane: every done-when passes",
1447
- "pass": true
2342
+ "lane": "core",
2343
+ "at": "2026-10-13T08:05:00.000Z",
2344
+ "outcome": "no-run-recorded",
2345
+ "kind": "done",
2346
+ "units": [],
2347
+ "commits": []
1448
2348
  },
1449
2349
  {
1450
- "text": "server lane: every done-when passes",
1451
- "pass": true
2350
+ "lane": "docs",
2351
+ "at": "2026-10-13T07:45:00.000Z",
2352
+ "outcome": "nothing-pushed",
2353
+ "kind": "idle",
2354
+ "endedAt": "2026-10-13T07:57:00.000Z",
2355
+ "units": [],
2356
+ "commits": [],
2357
+ "note": "nothing to do"
1452
2358
  },
1453
2359
  {
1454
- "text": "web lane: every done-when passes",
1455
- "pass": true
2360
+ "lane": "web",
2361
+ "at": "2026-10-13T07:35:00.000Z",
2362
+ "outcome": "pushed",
2363
+ "kind": "worked",
2364
+ "endedAt": "2026-10-13T07:47:00.000Z",
2365
+ "units": [
2366
+ "unit 43"
2367
+ ],
2368
+ "tests": {
2369
+ "passed": 222,
2370
+ "failed": 0
2371
+ },
2372
+ "commits": [],
2373
+ "note": "unit shipped"
1456
2374
  },
1457
2375
  {
1458
- "text": "docs lane: every done-when passes",
1459
- "pass": true
1460
- }
1461
- ],
1462
- "laneNotes": [
2376
+ "lane": "server",
2377
+ "at": "2026-10-13T07:25:00.000Z",
2378
+ "outcome": "pushed",
2379
+ "kind": "worked",
2380
+ "endedAt": "2026-10-13T07:37:00.000Z",
2381
+ "units": [
2382
+ "unit 43"
2383
+ ],
2384
+ "tests": {
2385
+ "passed": 222,
2386
+ "failed": 0
2387
+ },
2388
+ "commits": [],
2389
+ "note": "unit shipped"
2390
+ },
2391
+ {
2392
+ "lane": "kit",
2393
+ "at": "2026-10-13T07:15:00.000Z",
2394
+ "outcome": "no-run-recorded",
2395
+ "kind": "done",
2396
+ "units": [],
2397
+ "commits": []
2398
+ },
1463
2399
  {
1464
2400
  "lane": "core",
1465
- "contract": [
1466
- {
1467
- "text": "`npm test` passes",
1468
- "pass": true
1469
- },
1470
- {
1471
- "text": "Round 3 audit section with no open blocker",
1472
- "pass": true
1473
- },
1474
- {
1475
- "text": "every item below has unit tests",
1476
- "pass": true
1477
- }
2401
+ "at": "2026-10-13T07:05:00.000Z",
2402
+ "outcome": "pushed",
2403
+ "kind": "worked",
2404
+ "endedAt": "2026-10-13T07:17:00.000Z",
2405
+ "units": [
2406
+ "unit 43"
1478
2407
  ],
1479
- "decisions": [],
1480
- "knowledge": []
2408
+ "tests": {
2409
+ "passed": 222,
2410
+ "failed": 0
2411
+ },
2412
+ "commits": [],
2413
+ "note": "unit shipped"
2414
+ },
2415
+ {
2416
+ "lane": "docs",
2417
+ "at": "2026-10-13T06:45:00.000Z",
2418
+ "outcome": "pushed",
2419
+ "kind": "worked",
2420
+ "endedAt": "2026-10-13T06:57:00.000Z",
2421
+ "units": [
2422
+ "unit 42"
2423
+ ],
2424
+ "tests": {
2425
+ "passed": 221,
2426
+ "failed": 0
2427
+ },
2428
+ "commits": [],
2429
+ "note": "unit shipped"
2430
+ },
2431
+ {
2432
+ "lane": "web",
2433
+ "at": "2026-10-13T06:35:00.000Z",
2434
+ "outcome": "pushed",
2435
+ "kind": "worked",
2436
+ "endedAt": "2026-10-13T06:47:00.000Z",
2437
+ "units": [
2438
+ "unit 42"
2439
+ ],
2440
+ "tests": {
2441
+ "passed": 221,
2442
+ "failed": 0
2443
+ },
2444
+ "commits": [],
2445
+ "note": "unit shipped"
2446
+ },
2447
+ {
2448
+ "lane": "server",
2449
+ "at": "2026-10-13T06:25:00.000Z",
2450
+ "outcome": "pushed",
2451
+ "kind": "worked",
2452
+ "endedAt": "2026-10-13T06:37:00.000Z",
2453
+ "units": [
2454
+ "unit 42"
2455
+ ],
2456
+ "tests": {
2457
+ "passed": 221,
2458
+ "failed": 0
2459
+ },
2460
+ "commits": [],
2461
+ "note": "unit shipped"
1481
2462
  },
1482
2463
  {
1483
2464
  "lane": "kit",
1484
- "contract": [
1485
- {
1486
- "text": "`npm test` passes",
1487
- "pass": true
1488
- },
1489
- {
1490
- "text": "Round 3 audit section with no open blocker",
1491
- "pass": true
1492
- },
1493
- {
1494
- "text": "tests assert the claim rule is in every lane prompt and template",
1495
- "pass": true
1496
- }
2465
+ "at": "2026-10-13T06:15:00.000Z",
2466
+ "outcome": "pushed",
2467
+ "kind": "worked",
2468
+ "endedAt": "2026-10-13T06:27:00.000Z",
2469
+ "units": [
2470
+ "unit 42"
1497
2471
  ],
1498
- "decisions": [],
1499
- "knowledge": []
2472
+ "tests": {
2473
+ "passed": 221,
2474
+ "failed": 0
2475
+ },
2476
+ "commits": [],
2477
+ "note": "unit shipped"
2478
+ },
2479
+ {
2480
+ "lane": "core",
2481
+ "at": "2026-10-13T06:05:00.000Z",
2482
+ "outcome": "pushed",
2483
+ "kind": "worked",
2484
+ "endedAt": "2026-10-13T06:17:00.000Z",
2485
+ "units": [
2486
+ "unit 42"
2487
+ ],
2488
+ "tests": {
2489
+ "passed": 221,
2490
+ "failed": 0
2491
+ },
2492
+ "commits": [],
2493
+ "note": "unit shipped"
2494
+ },
2495
+ {
2496
+ "lane": "docs",
2497
+ "at": "2026-10-13T05:45:00.000Z",
2498
+ "outcome": "pushed",
2499
+ "kind": "worked",
2500
+ "endedAt": "2026-10-13T05:57:00.000Z",
2501
+ "units": [
2502
+ "unit 41"
2503
+ ],
2504
+ "tests": {
2505
+ "passed": 220,
2506
+ "failed": 0
2507
+ },
2508
+ "commits": [],
2509
+ "note": "unit shipped"
2510
+ },
2511
+ {
2512
+ "lane": "web",
2513
+ "at": "2026-10-13T05:35:00.000Z",
2514
+ "outcome": "pushed",
2515
+ "kind": "worked",
2516
+ "endedAt": "2026-10-13T05:47:00.000Z",
2517
+ "units": [
2518
+ "unit 41"
2519
+ ],
2520
+ "tests": {
2521
+ "passed": 220,
2522
+ "failed": 0
2523
+ },
2524
+ "commits": [],
2525
+ "note": "unit shipped"
1500
2526
  },
1501
2527
  {
1502
2528
  "lane": "server",
1503
- "contract": [
1504
- {
1505
- "text": "`npm test` passes",
1506
- "pass": true
1507
- },
1508
- {
1509
- "text": "Round 3 audit section with no open blocker",
1510
- "pass": true
1511
- },
1512
- {
1513
- "text": "`src/server/live/**` is pure, browser-safe and unit-tested against recorded GitHub response fixtures (scrubbed: no emails, no author names)",
1514
- "pass": true
1515
- }
2529
+ "at": "2026-10-13T05:25:00.000Z",
2530
+ "outcome": "pushed",
2531
+ "kind": "worked",
2532
+ "endedAt": "2026-10-13T05:37:00.000Z",
2533
+ "units": [
2534
+ "unit 41"
1516
2535
  ],
1517
- "decisions": [
1518
- "Fixtures in tests/unit/server/fixtures/live are hand-written to the documented GitHub API shape (no network in cloud runs), with no names or emails.",
1519
- "Moved `laneChecks` to src/server/laneChecks.ts and `bulletsUnder`/`contractFromTask` to src/server/taskBullets.ts so live/ stays browser-safe; old modules re-export them.",
1520
- "CSP for the hosted demo is a meta tag written by demo/export-static.mjs into demo/static/index.html (workflow already copies demo/static over dist/web)."
2536
+ "tests": {
2537
+ "passed": 220,
2538
+ "failed": 0
2539
+ },
2540
+ "commits": [],
2541
+ "note": "unit shipped"
2542
+ },
2543
+ {
2544
+ "lane": "kit",
2545
+ "at": "2026-10-13T05:15:00.000Z",
2546
+ "outcome": "pushed",
2547
+ "kind": "worked",
2548
+ "endedAt": "2026-10-13T05:27:00.000Z",
2549
+ "units": [
2550
+ "unit 41"
1521
2551
  ],
1522
- "knowledge": []
2552
+ "tests": {
2553
+ "passed": 220,
2554
+ "failed": 0
2555
+ },
2556
+ "commits": [],
2557
+ "note": "unit shipped"
2558
+ },
2559
+ {
2560
+ "lane": "core",
2561
+ "at": "2026-10-13T05:05:00.000Z",
2562
+ "outcome": "pushed",
2563
+ "kind": "worked",
2564
+ "endedAt": "2026-10-13T05:17:00.000Z",
2565
+ "units": [
2566
+ "unit 41"
2567
+ ],
2568
+ "tests": {
2569
+ "passed": 220,
2570
+ "failed": 0
2571
+ },
2572
+ "commits": [],
2573
+ "note": "unit shipped"
2574
+ },
2575
+ {
2576
+ "lane": "docs",
2577
+ "at": "2026-10-13T04:45:00.000Z",
2578
+ "outcome": "pushed",
2579
+ "kind": "worked",
2580
+ "endedAt": "2026-10-13T04:57:00.000Z",
2581
+ "units": [
2582
+ "unit 40"
2583
+ ],
2584
+ "tests": {
2585
+ "passed": 219,
2586
+ "failed": 0
2587
+ },
2588
+ "commits": [],
2589
+ "note": "unit shipped"
1523
2590
  },
1524
2591
  {
1525
2592
  "lane": "web",
1526
- "contract": [
1527
- {
1528
- "text": "every web line of \"Round 3 done when\" in IDEA.md passes: mocked-GitHub e2e (live, rate-limit fallback, copy command), axe at 1440 and 375 px in both themes, no console errors, no horizontal scroll at 375 px, bundle under 300 kB gzip, `web/DESIGN.md` plus before/after screenshots, and an independent design review recorded in `.ai/audit/web.md`",
1529
- "pass": true
1530
- }
2593
+ "at": "2026-10-13T04:35:00.000Z",
2594
+ "outcome": "pushed",
2595
+ "kind": "worked",
2596
+ "endedAt": "2026-10-13T04:47:00.000Z",
2597
+ "units": [
2598
+ "unit 40"
1531
2599
  ],
1532
- "decisions": [
1533
- "2026-10-11: lane colours are Okabe-Ito tuned to AA on both themes (web/DESIGN.md §3); status palette from IDEA.md unchanged. Charts hand-written SVG, no dependency. Timeline times are absolute UTC (relative in title). DESIGN.md research: only Vercel Geist was re-verified online, others from working knowledge, stated in the doc."
2600
+ "tests": {
2601
+ "passed": 219,
2602
+ "failed": 0
2603
+ },
2604
+ "commits": [],
2605
+ "note": "unit shipped"
2606
+ },
2607
+ {
2608
+ "lane": "server",
2609
+ "at": "2026-10-13T04:25:00.000Z",
2610
+ "outcome": "pushed",
2611
+ "kind": "worked",
2612
+ "endedAt": "2026-10-13T04:37:00.000Z",
2613
+ "units": [
2614
+ "unit 40"
1534
2615
  ],
1535
- "knowledge": []
2616
+ "tests": {
2617
+ "passed": 219,
2618
+ "failed": 0
2619
+ },
2620
+ "commits": [],
2621
+ "note": "unit shipped"
2622
+ },
2623
+ {
2624
+ "lane": "kit",
2625
+ "at": "2026-10-13T04:15:00.000Z",
2626
+ "outcome": "pushed",
2627
+ "kind": "worked",
2628
+ "endedAt": "2026-10-13T04:27:00.000Z",
2629
+ "units": [
2630
+ "unit 40"
2631
+ ],
2632
+ "tests": {
2633
+ "passed": 219,
2634
+ "failed": 0
2635
+ },
2636
+ "commits": [],
2637
+ "note": "unit shipped"
2638
+ },
2639
+ {
2640
+ "lane": "core",
2641
+ "at": "2026-10-13T04:05:00.000Z",
2642
+ "outcome": "pushed",
2643
+ "kind": "worked",
2644
+ "endedAt": "2026-10-13T04:17:00.000Z",
2645
+ "units": [
2646
+ "unit 40"
2647
+ ],
2648
+ "tests": {
2649
+ "passed": 219,
2650
+ "failed": 0
2651
+ },
2652
+ "commits": [],
2653
+ "note": "unit shipped"
1536
2654
  },
1537
2655
  {
1538
2656
  "lane": "docs",
1539
- "contract": [
2657
+ "at": "2026-10-13T03:45:00.000Z",
2658
+ "outcome": "pushed",
2659
+ "kind": "worked",
2660
+ "endedAt": "2026-10-13T03:57:00.000Z",
2661
+ "units": [
2662
+ "unit 39"
2663
+ ],
2664
+ "tests": {
2665
+ "passed": 218,
2666
+ "failed": 0
2667
+ },
2668
+ "commits": [],
2669
+ "note": "unit shipped"
2670
+ },
2671
+ {
2672
+ "lane": "web",
2673
+ "at": "2026-10-13T03:35:00.000Z",
2674
+ "outcome": "pushed",
2675
+ "kind": "worked",
2676
+ "endedAt": "2026-10-13T03:47:00.000Z",
2677
+ "units": [
2678
+ "unit 39"
2679
+ ],
2680
+ "tests": {
2681
+ "passed": 218,
2682
+ "failed": 0
2683
+ },
2684
+ "commits": [],
2685
+ "note": "unit shipped"
2686
+ },
2687
+ {
2688
+ "lane": "server",
2689
+ "at": "2026-10-13T03:25:00.000Z",
2690
+ "outcome": "pushed",
2691
+ "kind": "worked",
2692
+ "endedAt": "2026-10-13T03:37:00.000Z",
2693
+ "units": [
2694
+ "unit 39"
2695
+ ],
2696
+ "tests": {
2697
+ "passed": 218,
2698
+ "failed": 0
2699
+ },
2700
+ "commits": [],
2701
+ "note": "unit shipped"
2702
+ },
2703
+ {
2704
+ "lane": "kit",
2705
+ "at": "2026-10-13T03:15:00.000Z",
2706
+ "outcome": "pushed",
2707
+ "kind": "worked",
2708
+ "endedAt": "2026-10-13T03:27:00.000Z",
2709
+ "units": [
2710
+ "unit 39"
2711
+ ],
2712
+ "tests": {
2713
+ "passed": 218,
2714
+ "failed": 0
2715
+ },
2716
+ "commits": [],
2717
+ "note": "unit shipped"
2718
+ },
2719
+ {
2720
+ "lane": "core",
2721
+ "at": "2026-10-13T03:05:00.000Z",
2722
+ "outcome": "pushed",
2723
+ "kind": "worked",
2724
+ "endedAt": "2026-10-13T03:17:00.000Z",
2725
+ "units": [
2726
+ "unit 39"
2727
+ ],
2728
+ "tests": {
2729
+ "passed": 218,
2730
+ "failed": 0
2731
+ },
2732
+ "commits": [],
2733
+ "note": "unit shipped"
2734
+ },
2735
+ {
2736
+ "lane": "docs",
2737
+ "at": "2026-10-13T02:45:00.000Z",
2738
+ "outcome": "pushed",
2739
+ "kind": "worked",
2740
+ "endedAt": "2026-10-13T02:57:00.000Z",
2741
+ "units": [
2742
+ "unit 38"
2743
+ ],
2744
+ "tests": {
2745
+ "passed": 217,
2746
+ "failed": 0
2747
+ },
2748
+ "commits": [],
2749
+ "note": "unit shipped"
2750
+ },
2751
+ {
2752
+ "lane": "web",
2753
+ "at": "2026-10-13T02:35:00.000Z",
2754
+ "outcome": "pushed",
2755
+ "kind": "worked",
2756
+ "endedAt": "2026-10-13T02:47:00.000Z",
2757
+ "units": [
2758
+ "unit 38"
2759
+ ],
2760
+ "tests": {
2761
+ "passed": 217,
2762
+ "failed": 0
2763
+ },
2764
+ "commits": [],
2765
+ "note": "unit shipped"
2766
+ },
2767
+ {
2768
+ "lane": "server",
2769
+ "at": "2026-10-13T02:25:00.000Z",
2770
+ "outcome": "pushed",
2771
+ "kind": "worked",
2772
+ "endedAt": "2026-10-13T02:37:00.000Z",
2773
+ "units": [
2774
+ "unit 38"
2775
+ ],
2776
+ "tests": {
2777
+ "passed": 217,
2778
+ "failed": 0
2779
+ },
2780
+ "commits": [],
2781
+ "note": "unit shipped"
2782
+ },
2783
+ {
2784
+ "lane": "kit",
2785
+ "at": "2026-10-13T02:15:00.000Z",
2786
+ "outcome": "pushed",
2787
+ "kind": "worked",
2788
+ "endedAt": "2026-10-13T02:27:00.000Z",
2789
+ "units": [
2790
+ "unit 38"
2791
+ ],
2792
+ "tests": {
2793
+ "passed": 217,
2794
+ "failed": 0
2795
+ },
2796
+ "commits": [],
2797
+ "note": "unit shipped"
2798
+ },
2799
+ {
2800
+ "lane": "core",
2801
+ "at": "2026-10-13T02:05:00.000Z",
2802
+ "outcome": "pushed",
2803
+ "kind": "worked",
2804
+ "endedAt": "2026-10-13T02:17:00.000Z",
2805
+ "units": [
2806
+ "unit 38"
2807
+ ],
2808
+ "tests": {
2809
+ "passed": 217,
2810
+ "failed": 0
2811
+ },
2812
+ "commits": [],
2813
+ "note": "unit shipped"
2814
+ },
2815
+ {
2816
+ "lane": "docs",
2817
+ "at": "2026-10-13T01:45:00.000Z",
2818
+ "outcome": "pushed",
2819
+ "kind": "worked",
2820
+ "endedAt": "2026-10-13T01:57:00.000Z",
2821
+ "units": [
2822
+ "unit 37"
2823
+ ],
2824
+ "tests": {
2825
+ "passed": 216,
2826
+ "failed": 0
2827
+ },
2828
+ "commits": [],
2829
+ "note": "unit shipped"
2830
+ },
2831
+ {
2832
+ "lane": "web",
2833
+ "at": "2026-10-13T01:35:00.000Z",
2834
+ "outcome": "pushed",
2835
+ "kind": "worked",
2836
+ "endedAt": "2026-10-13T01:47:00.000Z",
2837
+ "units": [
2838
+ "unit 37"
2839
+ ],
2840
+ "tests": {
2841
+ "passed": 216,
2842
+ "failed": 0
2843
+ },
2844
+ "commits": [],
2845
+ "note": "unit shipped"
2846
+ },
2847
+ {
2848
+ "lane": "server",
2849
+ "at": "2026-10-13T01:25:00.000Z",
2850
+ "outcome": "pushed",
2851
+ "kind": "worked",
2852
+ "endedAt": "2026-10-13T01:37:00.000Z",
2853
+ "units": [
2854
+ "unit 37"
2855
+ ],
2856
+ "tests": {
2857
+ "passed": 216,
2858
+ "failed": 0
2859
+ },
2860
+ "commits": [],
2861
+ "note": "unit shipped"
2862
+ },
2863
+ {
2864
+ "lane": "kit",
2865
+ "at": "2026-10-13T01:15:00.000Z",
2866
+ "outcome": "pushed",
2867
+ "kind": "worked",
2868
+ "endedAt": "2026-10-13T01:27:00.000Z",
2869
+ "units": [
2870
+ "unit 37"
2871
+ ],
2872
+ "tests": {
2873
+ "passed": 216,
2874
+ "failed": 0
2875
+ },
2876
+ "commits": [],
2877
+ "note": "unit shipped"
2878
+ },
2879
+ {
2880
+ "lane": "core",
2881
+ "at": "2026-10-13T01:05:00.000Z",
2882
+ "outcome": "pushed",
2883
+ "kind": "worked",
2884
+ "endedAt": "2026-10-13T01:17:00.000Z",
2885
+ "units": [
2886
+ "unit 37"
2887
+ ],
2888
+ "tests": {
2889
+ "passed": 216,
2890
+ "failed": 0
2891
+ },
2892
+ "commits": [],
2893
+ "note": "unit shipped"
2894
+ },
2895
+ {
2896
+ "lane": "docs",
2897
+ "at": "2026-10-13T00:45:00.000Z",
2898
+ "outcome": "pushed",
2899
+ "kind": "worked",
2900
+ "endedAt": "2026-10-13T00:57:00.000Z",
2901
+ "units": [
2902
+ "unit 36"
2903
+ ],
2904
+ "tests": {
2905
+ "passed": 215,
2906
+ "failed": 0
2907
+ },
2908
+ "commits": [],
2909
+ "note": "unit shipped"
2910
+ }
2911
+ ],
2912
+ "runOutcomes": {
2913
+ "limitStops5h": 2,
2914
+ "running": [
2915
+ "web"
2916
+ ],
2917
+ "sleeping": [
2918
+ "docs"
2919
+ ],
2920
+ "paused": [],
2921
+ "routinesLookOff": false,
2922
+ "nextDue": {
2923
+ "lane": "server",
2924
+ "at": "2026-10-13T13:25:00.000Z"
2925
+ }
2926
+ },
2927
+ "idleRuns": {
2928
+ "core": 0,
2929
+ "kit": 0,
2930
+ "server": 0,
2931
+ "web": 0,
2932
+ "docs": 3
2933
+ },
2934
+ "schedule": {
2935
+ "version": 1,
2936
+ "lanes": {
2937
+ "docs": {
2938
+ "notBefore": null,
2939
+ "sleeping": true,
2940
+ "paused": false,
2941
+ "reason": "docs waits for the first features"
2942
+ }
2943
+ }
2944
+ },
2945
+ "steer": [
2946
+ {
2947
+ "lane": "core",
2948
+ "entries": [
1540
2949
  {
1541
- "text": "`npm test` passes",
1542
- "pass": true
2950
+ "at": "2026-10-13T05:50:00.000Z",
2951
+ "author": "owner",
2952
+ "scope": "next-run",
2953
+ "text": "Ship the pace parser before anything else.",
2954
+ "ack": {
2955
+ "state": "done",
2956
+ "run": 4
2957
+ }
1543
2958
  },
1544
2959
  {
1545
- "text": "Round 3 audit section with no open blocker",
1546
- "pass": true
2960
+ "at": "2026-10-12T21:00:00.000Z",
2961
+ "author": "owner",
2962
+ "scope": "standing",
2963
+ "text": "Keep every new command usable with --json.",
2964
+ "ack": {
2965
+ "state": "done",
2966
+ "run": 1
2967
+ }
2968
+ }
2969
+ ]
2970
+ },
2971
+ {
2972
+ "lane": "server",
2973
+ "entries": [
2974
+ {
2975
+ "at": "2026-10-13T11:30:00.000Z",
2976
+ "author": "owner",
2977
+ "scope": "next-run",
2978
+ "text": "Put run-log fixtures in the demo snapshot first; web is waiting on them."
1547
2979
  },
1548
2980
  {
1549
- "text": "README/docs checks pass",
1550
- "pass": true
2981
+ "at": "2026-10-13T09:10:00.000Z",
2982
+ "author": "owner",
2983
+ "scope": "next-run",
2984
+ "text": "Add the npm state to every release.",
2985
+ "ack": {
2986
+ "state": "not-done",
2987
+ "why": "npm is only asked in live mode; local mode stays offline"
2988
+ }
1551
2989
  },
1552
2990
  {
1553
- "text": "the fresh-install test (README quick start + `docs/team.md`, word for word, from a packed tarball in an empty temp dir) is recorded in `.ai/audit/docs.md`",
1554
- "pass": true
2991
+ "at": "2026-10-12T21:00:00.000Z",
2992
+ "author": "owner",
2993
+ "scope": "standing",
2994
+ "text": "Never call npm from local mode.",
2995
+ "ack": {
2996
+ "state": "done",
2997
+ "run": 1
2998
+ }
1555
2999
  }
1556
- ],
1557
- "decisions": [],
1558
- "knowledge": []
3000
+ ]
3001
+ },
3002
+ {
3003
+ "lane": "web",
3004
+ "entries": [
3005
+ {
3006
+ "at": "2026-10-13T10:05:00.000Z",
3007
+ "author": "owner",
3008
+ "scope": "standing",
3009
+ "text": "Keep the phone layout to one thumb: no horizontal scroll at 375 px."
3010
+ }
3011
+ ]
1559
3012
  }
1560
3013
  ],
1561
- "knowledge": [],
1562
- "decisions": [],
1563
- "history": []
3014
+ "lastRun": {
3015
+ "lane": "server",
3016
+ "at": "2026-10-13T12:25:00.000Z",
3017
+ "outcome": "pushed"
3018
+ },
3019
+ "pace": {
3020
+ "pace": "balanced",
3021
+ "overrides": {
3022
+ "web": "careful"
3023
+ },
3024
+ "note": "control room set web to careful: CI red twice in 24 h"
3025
+ },
3026
+ "draftInputs": {
3027
+ "name": "compounding-loop",
3028
+ "round": 6,
3029
+ "next": [
3030
+ {
3031
+ "source": ".ai/lanes/core/DONE.md",
3032
+ "items": [
3033
+ "`loop pace` per lane in the dashboard",
3034
+ "Windows path tests for the schedule commands"
3035
+ ]
3036
+ },
3037
+ {
3038
+ "source": ".ai/lanes/web/DONE.md",
3039
+ "items": [
3040
+ "Compress the phone screenshots",
3041
+ "A keyboard shortcut list"
3042
+ ]
3043
+ }
3044
+ ],
3045
+ "findings": [
3046
+ {
3047
+ "source": ".ai/audit/server.md",
3048
+ "text": "A3 · HealthCheck.state is missing on local checks"
3049
+ }
3050
+ ],
3051
+ "steer": [
3052
+ {
3053
+ "lane": "server",
3054
+ "entries": [
3055
+ {
3056
+ "at": "2026-10-13T11:30:00.000Z",
3057
+ "author": "owner",
3058
+ "scope": "next-run",
3059
+ "text": "Put run-log fixtures in the demo snapshot first; web is waiting on them."
3060
+ }
3061
+ ]
3062
+ }
3063
+ ],
3064
+ "outOfScope": [
3065
+ "Hosted dashboard",
3066
+ "Billing"
3067
+ ]
3068
+ },
3069
+ "ci": {
3070
+ "ok": true,
3071
+ "reason": "the latest run on main passed (it was red twice in the last 24 h)"
3072
+ }
1564
3073
  },
1565
3074
  "checks": [
1566
3075
  {