pi-crew 0.9.50 → 0.9.52

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 (609) hide show
  1. package/CHANGELOG.md +150 -0
  2. package/README.md +216 -20
  3. package/dist/build-meta.json +2222 -1761
  4. package/dist/index.mjs +18636 -17603
  5. package/docs/actions-reference.md +431 -1
  6. package/package.json +19 -9
  7. package/schema.json +41 -0
  8. package/scripts/check-bundle-size.mjs +38 -0
  9. package/scripts/test-runner.mjs +11 -1
  10. package/skills/distill-software/SKILL.md +24 -1
  11. package/dist/index.mjs.map +0 -7
  12. package/docs/FEATURE_INTAKE.md +0 -126
  13. package/docs/HARNESS.md +0 -87
  14. package/docs/HARNESS_BACKLOG.md +0 -89
  15. package/docs/PROJECT_REVIEW.md +0 -270
  16. package/docs/PROJECT_REVIEW_FIXES.md +0 -342
  17. package/docs/PROJECT_REVIEW_ROUND4.md +0 -156
  18. package/docs/PROJECT_REVIEW_ROUND5.md +0 -86
  19. package/docs/REVIEW-FINDINGS-2026-06 +0 -357
  20. package/docs/REVIEW-FINDINGS-2026-07-CORE.md +0 -139
  21. package/docs/REVIEW-FINDINGS-2026-07.md +0 -125
  22. package/docs/TEST_MATRIX.md +0 -51
  23. package/docs/archive/README.md +0 -91
  24. package/docs/archive/followup-review-round3-2026-05-12.md +0 -342
  25. package/docs/archive/followup-review-round4-2026-05-13.md +0 -107
  26. package/docs/archive/pi-crew-bugs.md +0 -961
  27. package/docs/archive/pi-crew-test-final.md +0 -120
  28. package/docs/archive/pi-crew-test-results.md +0 -260
  29. package/docs/archive/pi-crew-test-round2.md +0 -136
  30. package/docs/archive/pi-crew-test-round4.md +0 -100
  31. package/docs/archive/pi-crew-test-round5.md +0 -70
  32. package/docs/archive/pi-crew-test-round6.md +0 -110
  33. package/docs/archive/pi-crew-v0.5.10-audit-fix-plan.md +0 -60
  34. package/docs/archive/pi-crew-v0.5.11-audit-fix-plan.md +0 -92
  35. package/docs/archive/pi-crew-v0.5.12-audit-fix-plan.md +0 -76
  36. package/docs/archive/pi-crew-v0.5.13-audit-fix-plan.md +0 -75
  37. package/docs/archive/pi-crew-v0.5.14-audit-fix-plan.md +0 -75
  38. package/docs/archive/pi-crew-v0.5.16-audit-fix-plan.md +0 -35
  39. package/docs/archive/pi-crew-v0.5.17-audit-fix-plan.md +0 -80
  40. package/docs/archive/pi-crew-v0.5.5-audit-fix-plan.md +0 -133
  41. package/docs/archive/pi-crew-v0.5.9-audit-fix-plan.md +0 -88
  42. package/docs/archive/pi-mono-opportunities.md +0 -969
  43. package/docs/archive/pi-mono-review.md +0 -291
  44. package/docs/archive/pi-subagent4-comparison.md +0 -261
  45. package/docs/archive/pi-subagents3-deep-analysis.md +0 -508
  46. package/docs/bugs/bug-021-notification-badge-counter-misleading.md +0 -293
  47. package/docs/bugs/bug-023-chain-windows-path-resolution.md +0 -106
  48. package/docs/bugs/bug-quota-display-truncation.md +0 -223
  49. package/docs/bugs/cross-session-notification-leakage.md +0 -82
  50. package/docs/code-review-2026-05-11.md +0 -592
  51. package/docs/coding-agent-optimization.md +0 -268
  52. package/docs/comparison-pi-subagents-vs-pi-crew.md +0 -303
  53. package/docs/decisions/0001-durable-state.md +0 -41
  54. package/docs/decisions/0002-child-process-for-async.md +0 -42
  55. package/docs/decisions/0003-depth-guard.md +0 -36
  56. package/docs/decisions/0004-execfile-over-exec.md +0 -34
  57. package/docs/decisions/0005-no-parameter-properties.md +0 -49
  58. package/docs/decisions/0006-publish-bundled-esm.md +0 -63
  59. package/docs/decisions/0007-active-run-binary-index.md +0 -54
  60. package/docs/decisions/0008-child-pi-warm-pool.md +0 -61
  61. package/docs/decisions/2026-07-21-broker-phase4-default-on.md +0 -77
  62. package/docs/decisions/2026-07-21-broker-windows-perms.md +0 -91
  63. package/docs/decisions/2026-07-22-broker-phase4-gated-on.md +0 -99
  64. package/docs/decisions/2026-07-24-oidc-trusted-publishing.md +0 -112
  65. package/docs/decisions/README.md +0 -26
  66. package/docs/deep-review-report.md +0 -384
  67. package/docs/distillation/cybersecurity-patterns.md +0 -294
  68. package/docs/feature-analysis-subagent4.md +0 -305
  69. package/docs/fix-plan-disabletools-exit-null.md +0 -219
  70. package/docs/fixes/BATCH_A_H1_H2.md +0 -86
  71. package/docs/fixes/bug-006-foreground-cancel-concurrent.md +0 -78
  72. package/docs/fixes/bug-007-async-notifier-stale-ctx.md +0 -112
  73. package/docs/fixes/bug-008-child-process-silent-timeout.md +0 -100
  74. package/docs/fixes/bug-009-executor-yield-limit-needs-attention.md +0 -75
  75. package/docs/fixes/bug-010-child-process-api-key-filtered.md +0 -109
  76. package/docs/fixes/bug-011-spawn-pi-enoent.md +0 -92
  77. package/docs/fixes/bug-012-essential-env-stripped.md +0 -89
  78. package/docs/fixes/bug-013-background-runner-death.md +0 -84
  79. package/docs/fixes/bug-014-infinite-retry-loop-needs-attention.md +0 -82
  80. package/docs/fixes/bug-015-background-runner-sigterm.md +0 -65
  81. package/docs/fixes/bug-017-background-runner-session-shutdown.md +0 -66
  82. package/docs/fixes/bug-017-background-runner-sigkill-double-fork.md +0 -28
  83. package/docs/fixes/bug-018-child-pi-worker-stdin-hang.md +0 -61
  84. package/docs/fixes/bug-019-phantom-runs-temp-workspace.md +0 -52
  85. package/docs/fixes/bug-020-infinite-retry-loop-needs-attention.md +0 -47
  86. package/docs/fixes/v0.9.10/locks-fix-verify.md +0 -3
  87. package/docs/fixes/v0.9.10/smoke-test.md +0 -12
  88. package/docs/followup-plan-2026-05-12.md +0 -463
  89. package/docs/followup-review-2026-05-12.md +0 -297
  90. package/docs/goals.md +0 -59
  91. package/docs/implementation-plan-top3.md +0 -333
  92. package/docs/issue-29-analysis.md +0 -189
  93. package/docs/live-mailbox-runtime.md +0 -36
  94. package/docs/migration/atomic-write-v2-migration.md +0 -299
  95. package/docs/next-upgrade-roadmap.md +0 -808
  96. package/docs/oh-my-pi-research.md +0 -509
  97. package/docs/optimization-plan-2026-07.md +0 -366
  98. package/docs/optimization-plan.md +0 -644
  99. package/docs/patterns/command-agent-skill.md +0 -71
  100. package/docs/perf/baseline-2026-05.md +0 -113
  101. package/docs/perf/final-report-2026-05.md +0 -206
  102. package/docs/perf/optimization-plan-2026-07-verified.md +0 -396
  103. package/docs/perf/performance-audit-report-2026-07.md +0 -948
  104. package/docs/perf/performance-review-2026-07.md +0 -287
  105. package/docs/perf/sprint-1-report.md +0 -71
  106. package/docs/perf/sprint-2-report.md +0 -81
  107. package/docs/perf/sprint-2.5-report.md +0 -53
  108. package/docs/perf/sprint-3-report.md +0 -36
  109. package/docs/perf/sprint-4-report.md +0 -47
  110. package/docs/perf/sprint-5-report.md +0 -51
  111. package/docs/perf/sprint-6-report.md +0 -94
  112. package/docs/perf/sprint-7-report.md +0 -74
  113. package/docs/perf/upgrade-plan-2026-05.md +0 -147
  114. package/docs/performance-optimization-execution-plan.md +0 -520
  115. package/docs/phase4-triage.md +0 -58
  116. package/docs/pi-crew-investigation-report.md +0 -411
  117. package/docs/product/README.md +0 -31
  118. package/docs/product/platform.md +0 -27
  119. package/docs/product/runtime-safety.md +0 -37
  120. package/docs/product/team-run.md +0 -39
  121. package/docs/product/team-tool.md +0 -37
  122. package/docs/runtime-analysis-child-vs-live.md +0 -171
  123. package/docs/runtime-migration-in-process-analysis.md +0 -250
  124. package/docs/skills/REFERENCE.md +0 -138
  125. package/docs/stories/README.md +0 -32
  126. package/docs/stories/US-DEPS-major-upgrade.md +0 -62
  127. package/docs/stories/backlog.md +0 -36
  128. package/docs/superpowers/plans/2026-06-09-fallow-patterns-adoption.md +0 -1270
  129. package/docs/templates/decision.md +0 -27
  130. package/docs/templates/story.md +0 -44
  131. package/docs/templates/validation-report.md +0 -32
  132. package/docs/ui-optimization-plan.md +0 -447
  133. package/src/adapters/claude-adapter.ts +0 -23
  134. package/src/adapters/codex-adapter.ts +0 -21
  135. package/src/adapters/cursor-adapter.ts +0 -17
  136. package/src/adapters/export-util.ts +0 -143
  137. package/src/adapters/index.ts +0 -15
  138. package/src/adapters/registry.ts +0 -18
  139. package/src/adapters/types.ts +0 -23
  140. package/src/agents/agent-config.ts +0 -194
  141. package/src/agents/agent-search.ts +0 -98
  142. package/src/agents/agent-serializer.ts +0 -38
  143. package/src/agents/discover-agents.ts +0 -623
  144. package/src/benchmark/benchmark-runner.ts +0 -313
  145. package/src/benchmark/feedback-loop.ts +0 -73
  146. package/src/config/config.ts +0 -1269
  147. package/src/config/defaults.ts +0 -193
  148. package/src/config/drift-detector.ts +0 -290
  149. package/src/config/markers.ts +0 -330
  150. package/src/config/resilient-parser.ts +0 -117
  151. package/src/config/role-tools.ts +0 -118
  152. package/src/config/suggestions.ts +0 -75
  153. package/src/config/types.ts +0 -278
  154. package/src/errors.ts +0 -194
  155. package/src/extension/action-suggestions.ts +0 -117
  156. package/src/extension/async-notifier.ts +0 -179
  157. package/src/extension/autonomous-policy.ts +0 -209
  158. package/src/extension/command-completions.ts +0 -120
  159. package/src/extension/context-status-injection.ts +0 -185
  160. package/src/extension/crew-autocomplete.ts +0 -131
  161. package/src/extension/crew-cleanup.ts +0 -168
  162. package/src/extension/crew-input-router.ts +0 -93
  163. package/src/extension/crew-shortcuts.ts +0 -87
  164. package/src/extension/crew-vibes/cat-frames.ts +0 -18
  165. package/src/extension/crew-vibes/config.ts +0 -195
  166. package/src/extension/crew-vibes/figures.ts +0 -101
  167. package/src/extension/crew-vibes/font-detect.ts +0 -71
  168. package/src/extension/crew-vibes/footer.ts +0 -292
  169. package/src/extension/crew-vibes/index.ts +0 -432
  170. package/src/extension/crew-vibes/provider-usage.ts +0 -396
  171. package/src/extension/crew-vibes/render.ts +0 -206
  172. package/src/extension/crew-vibes/speed.ts +0 -286
  173. package/src/extension/cross-extension-rpc.ts +0 -350
  174. package/src/extension/help.ts +0 -62
  175. package/src/extension/import-index.ts +0 -74
  176. package/src/extension/knowledge-injection.ts +0 -402
  177. package/src/extension/management.ts +0 -571
  178. package/src/extension/message-renderers.ts +0 -108
  179. package/src/extension/notification-router.ts +0 -152
  180. package/src/extension/notification-sink.ts +0 -54
  181. package/src/extension/pi-api.ts +0 -56
  182. package/src/extension/plan-orchestrate.ts +0 -302
  183. package/src/extension/project-init.ts +0 -170
  184. package/src/extension/register.ts +0 -113
  185. package/src/extension/registration/artifact-cleanup.ts +0 -20
  186. package/src/extension/registration/command-registration.ts +0 -58
  187. package/src/extension/registration/command-utils.ts +0 -58
  188. package/src/extension/registration/commands.ts +0 -1228
  189. package/src/extension/registration/compaction-guard.ts +0 -333
  190. package/src/extension/registration/context-builder.ts +0 -135
  191. package/src/extension/registration/crash-recovery-cache.ts +0 -54
  192. package/src/extension/registration/foreground-run-controller.ts +0 -238
  193. package/src/extension/registration/hook-registration.ts +0 -119
  194. package/src/extension/registration/lazy-configurers.ts +0 -124
  195. package/src/extension/registration/lifecycle-handlers.ts +0 -923
  196. package/src/extension/registration/lifecycle.ts +0 -259
  197. package/src/extension/registration/observability.ts +0 -322
  198. package/src/extension/registration/registration-types.ts +0 -158
  199. package/src/extension/registration/runtime-cleanup.ts +0 -230
  200. package/src/extension/registration/subagent-helpers.ts +0 -125
  201. package/src/extension/registration/subagent-manager-setup.ts +0 -330
  202. package/src/extension/registration/subagent-tools.ts +0 -456
  203. package/src/extension/registration/team-tool.ts +0 -220
  204. package/src/extension/registration/tool-registration.ts +0 -50
  205. package/src/extension/registration/ui.ts +0 -172
  206. package/src/extension/registration/viewers.ts +0 -121
  207. package/src/extension/registration/wire-cross-extension.ts +0 -37
  208. package/src/extension/result-watcher.ts +0 -139
  209. package/src/extension/rpc-hmac.ts +0 -256
  210. package/src/extension/run-bundle-schema.ts +0 -104
  211. package/src/extension/run-export.ts +0 -97
  212. package/src/extension/run-import.ts +0 -168
  213. package/src/extension/run-index.ts +0 -131
  214. package/src/extension/run-maintenance.ts +0 -190
  215. package/src/extension/session-summary.ts +0 -18
  216. package/src/extension/team-manager-command.ts +0 -153
  217. package/src/extension/team-onboard.ts +0 -177
  218. package/src/extension/team-recommendation.ts +0 -288
  219. package/src/extension/team-tool/anchor.ts +0 -172
  220. package/src/extension/team-tool/api.ts +0 -1244
  221. package/src/extension/team-tool/auto-summarize.ts +0 -142
  222. package/src/extension/team-tool/cache-control.ts +0 -19
  223. package/src/extension/team-tool/cancel.ts +0 -337
  224. package/src/extension/team-tool/chain-dispatch.ts +0 -95
  225. package/src/extension/team-tool/chain-executor.ts +0 -379
  226. package/src/extension/team-tool/config-patch.ts +0 -50
  227. package/src/extension/team-tool/context.ts +0 -149
  228. package/src/extension/team-tool/destructive-gate.ts +0 -52
  229. package/src/extension/team-tool/doctor.ts +0 -431
  230. package/src/extension/team-tool/explain.ts +0 -282
  231. package/src/extension/team-tool/failure-patterns.ts +0 -118
  232. package/src/extension/team-tool/goal-wrap.ts +0 -330
  233. package/src/extension/team-tool/goal.ts +0 -556
  234. package/src/extension/team-tool/handle-schedule.ts +0 -332
  235. package/src/extension/team-tool/handle-settings.ts +0 -520
  236. package/src/extension/team-tool/health-monitor.ts +0 -481
  237. package/src/extension/team-tool/inspect.ts +0 -88
  238. package/src/extension/team-tool/intent-policy.ts +0 -45
  239. package/src/extension/team-tool/lifecycle-actions.ts +0 -615
  240. package/src/extension/team-tool/orchestrate.ts +0 -98
  241. package/src/extension/team-tool/parallel-dispatch.ts +0 -183
  242. package/src/extension/team-tool/plan.ts +0 -50
  243. package/src/extension/team-tool/respond.ts +0 -150
  244. package/src/extension/team-tool/run-not-found.ts +0 -49
  245. package/src/extension/team-tool/run.ts +0 -1035
  246. package/src/extension/team-tool/status.ts +0 -260
  247. package/src/extension/team-tool/workflow-manage.ts +0 -261
  248. package/src/extension/team-tool-types.ts +0 -26
  249. package/src/extension/team-tool.ts +0 -1116
  250. package/src/extension/tool-result.ts +0 -16
  251. package/src/extension/validate-resources.ts +0 -108
  252. package/src/hooks/registry.ts +0 -200
  253. package/src/hooks/types.ts +0 -69
  254. package/src/i18n.ts +0 -212
  255. package/src/observability/correlation.ts +0 -50
  256. package/src/observability/event-bus.ts +0 -86
  257. package/src/observability/event-to-metric.ts +0 -170
  258. package/src/observability/exporters/adapter.ts +0 -27
  259. package/src/observability/exporters/otlp-exporter.ts +0 -356
  260. package/src/observability/exporters/prometheus-exporter.ts +0 -54
  261. package/src/observability/metric-registry.ts +0 -100
  262. package/src/observability/metric-retention.ts +0 -64
  263. package/src/observability/metric-sink.ts +0 -99
  264. package/src/observability/metrics-primitives.ts +0 -219
  265. package/src/plugins/plugin-define.ts +0 -6
  266. package/src/plugins/plugin-registry.ts +0 -32
  267. package/src/plugins/plugins/index.ts +0 -3
  268. package/src/plugins/plugins/nextjs.ts +0 -19
  269. package/src/plugins/plugins/vite.ts +0 -10
  270. package/src/plugins/plugins/vitest.ts +0 -9
  271. package/src/prompt/prompt-runtime.ts +0 -380
  272. package/src/runtime/adaptive-plan.ts +0 -563
  273. package/src/runtime/agent-control.ts +0 -215
  274. package/src/runtime/agent-memory.ts +0 -81
  275. package/src/runtime/agent-observability.ts +0 -122
  276. package/src/runtime/anchor-manager.ts +0 -475
  277. package/src/runtime/async-marker.ts +0 -32
  278. package/src/runtime/async-runner.ts +0 -381
  279. package/src/runtime/attention-events.ts +0 -28
  280. package/src/runtime/auto-summarize.ts +0 -344
  281. package/src/runtime/background-runner.ts +0 -837
  282. package/src/runtime/batch-barrier.ts +0 -147
  283. package/src/runtime/broker-issuer.ts +0 -37
  284. package/src/runtime/cancellation-token.ts +0 -99
  285. package/src/runtime/cancellation.ts +0 -99
  286. package/src/runtime/capability-inventory.ts +0 -137
  287. package/src/runtime/chain-parser.ts +0 -237
  288. package/src/runtime/chain-runner.ts +0 -606
  289. package/src/runtime/checkpoint.ts +0 -291
  290. package/src/runtime/child-pi-constants.ts +0 -42
  291. package/src/runtime/child-pi-kill.ts +0 -180
  292. package/src/runtime/child-pi-pool.ts +0 -68
  293. package/src/runtime/child-pi-spawn.ts +0 -287
  294. package/src/runtime/child-pi-steering.ts +0 -128
  295. package/src/runtime/child-pi-streams.ts +0 -296
  296. package/src/runtime/child-pi-transcript.ts +0 -169
  297. package/src/runtime/child-pi.ts +0 -1105
  298. package/src/runtime/coalesce-tasks.ts +0 -268
  299. package/src/runtime/code-summary.ts +0 -292
  300. package/src/runtime/command-trace.ts +0 -105
  301. package/src/runtime/compact-pipeline.ts +0 -56
  302. package/src/runtime/compact-stages/ansi-strip-stage.ts +0 -25
  303. package/src/runtime/compact-stages/blank-collapse-stage.ts +0 -31
  304. package/src/runtime/compact-stages/deduplicate-stage.ts +0 -34
  305. package/src/runtime/compact-stages/head-snap-stage.ts +0 -57
  306. package/src/runtime/compact-stages/index.ts +0 -23
  307. package/src/runtime/compact-stages/tail-capture-stage.ts +0 -77
  308. package/src/runtime/compact-stages/truncation-stage.ts +0 -74
  309. package/src/runtime/compaction-summary.ts +0 -278
  310. package/src/runtime/completion-guard.ts +0 -207
  311. package/src/runtime/concurrency.ts +0 -58
  312. package/src/runtime/crash-classification.ts +0 -229
  313. package/src/runtime/crash-recovery.ts +0 -577
  314. package/src/runtime/crew-agent-records.ts +0 -593
  315. package/src/runtime/crew-agent-runtime.ts +0 -62
  316. package/src/runtime/crew-broker-child.ts +0 -88
  317. package/src/runtime/crew-broker-client.ts +0 -673
  318. package/src/runtime/crew-broker-tokens.ts +0 -84
  319. package/src/runtime/crew-broker.ts +0 -1276
  320. package/src/runtime/crew-hooks.ts +0 -227
  321. package/src/runtime/cross-extension-rpc.ts +0 -143
  322. package/src/runtime/custom-tools/irc-tool.ts +0 -282
  323. package/src/runtime/custom-tools/submit-result-tool.ts +0 -102
  324. package/src/runtime/deadletter.ts +0 -47
  325. package/src/runtime/delivery-coordinator.ts +0 -211
  326. package/src/runtime/delta-conflict.ts +0 -348
  327. package/src/runtime/deterministic-ast.ts +0 -161
  328. package/src/runtime/diagnostic-export.ts +0 -171
  329. package/src/runtime/direct-run.ts +0 -45
  330. package/src/runtime/dwf-state-store.ts +0 -102
  331. package/src/runtime/dynamic-workflow-context.ts +0 -1016
  332. package/src/runtime/dynamic-workflow-runner.ts +0 -310
  333. package/src/runtime/effectiveness.ts +0 -90
  334. package/src/runtime/errors/crew-errors.ts +0 -162
  335. package/src/runtime/event-stream-bridge.ts +0 -98
  336. package/src/runtime/foreground-control.ts +0 -193
  337. package/src/runtime/foreground-watchdog.ts +0 -132
  338. package/src/runtime/global-worker-cap.ts +0 -96
  339. package/src/runtime/goal-achievement.ts +0 -148
  340. package/src/runtime/goal-evaluator.ts +0 -361
  341. package/src/runtime/goal-loop-runner.ts +0 -828
  342. package/src/runtime/goal-state-store.ts +0 -219
  343. package/src/runtime/green-contract.ts +0 -55
  344. package/src/runtime/group-join.ts +0 -267
  345. package/src/runtime/handoff-manager.ts +0 -598
  346. package/src/runtime/heartbeat-gradient.ts +0 -36
  347. package/src/runtime/heartbeat-watcher.ts +0 -239
  348. package/src/runtime/hidden-handoff.ts +0 -407
  349. package/src/runtime/important-line-classifier.ts +0 -140
  350. package/src/runtime/intercom-bridge.ts +0 -187
  351. package/src/runtime/iteration-hooks.ts +0 -305
  352. package/src/runtime/live-agent-control.ts +0 -136
  353. package/src/runtime/live-agent-manager.ts +0 -704
  354. package/src/runtime/live-control-realtime.ts +0 -56
  355. package/src/runtime/live-extension-bridge.ts +0 -148
  356. package/src/runtime/live-irc.ts +0 -97
  357. package/src/runtime/live-session-health.ts +0 -108
  358. package/src/runtime/live-session-runtime.ts +0 -1139
  359. package/src/runtime/loop-gates.ts +0 -128
  360. package/src/runtime/manifest-cache.ts +0 -375
  361. package/src/runtime/mcp-proxy.ts +0 -105
  362. package/src/runtime/metric-parser.ts +0 -36
  363. package/src/runtime/model-fallback.ts +0 -409
  364. package/src/runtime/model-resolver.ts +0 -126
  365. package/src/runtime/model-scope.ts +0 -158
  366. package/src/runtime/orphan-worker-registry.ts +0 -465
  367. package/src/runtime/output-validator.ts +0 -202
  368. package/src/runtime/overflow-recovery.ts +0 -206
  369. package/src/runtime/parallel-research.ts +0 -68
  370. package/src/runtime/parallel-utils.ts +0 -160
  371. package/src/runtime/parent-guard.ts +0 -134
  372. package/src/runtime/path-overlap.ts +0 -150
  373. package/src/runtime/peer-dep.ts +0 -292
  374. package/src/runtime/per-write-validator.ts +0 -181
  375. package/src/runtime/phase-progress.ts +0 -217
  376. package/src/runtime/phase-tracker.ts +0 -385
  377. package/src/runtime/pi-args.ts +0 -655
  378. package/src/runtime/pi-json-output.ts +0 -170
  379. package/src/runtime/pi-spawn.ts +0 -273
  380. package/src/runtime/pipeline-runner.ts +0 -523
  381. package/src/runtime/plan-templates.ts +0 -201
  382. package/src/runtime/policy-engine.ts +0 -115
  383. package/src/runtime/post-checks.ts +0 -142
  384. package/src/runtime/post-exit-stdio-guard.ts +0 -104
  385. package/src/runtime/process-lifecycle.ts +0 -491
  386. package/src/runtime/process-status.ts +0 -154
  387. package/src/runtime/progress-event-coalescer.ts +0 -44
  388. package/src/runtime/progress-tracker.ts +0 -124
  389. package/src/runtime/prose-compressor.ts +0 -162
  390. package/src/runtime/recovery-recipes.ts +0 -203
  391. package/src/runtime/replace.ts +0 -570
  392. package/src/runtime/resilient-edit.ts +0 -153
  393. package/src/runtime/result-extractor.ts +0 -213
  394. package/src/runtime/retry-executor.ts +0 -100
  395. package/src/runtime/retry-runner.ts +0 -336
  396. package/src/runtime/role-permission.ts +0 -59
  397. package/src/runtime/run-coalesced-task-group.ts +0 -308
  398. package/src/runtime/run-drift.ts +0 -219
  399. package/src/runtime/run-tracker.ts +0 -116
  400. package/src/runtime/runtime-policy.ts +0 -29
  401. package/src/runtime/runtime-resolver.ts +0 -172
  402. package/src/runtime/runtime-warmup.ts +0 -160
  403. package/src/runtime/scheduler.ts +0 -353
  404. package/src/runtime/semaphore.ts +0 -141
  405. package/src/runtime/sensitive-paths.ts +0 -93
  406. package/src/runtime/session-resources.ts +0 -25
  407. package/src/runtime/session-snapshot.ts +0 -59
  408. package/src/runtime/session-usage.ts +0 -79
  409. package/src/runtime/settings-store.ts +0 -155
  410. package/src/runtime/sidechain-output.ts +0 -35
  411. package/src/runtime/single-agent-compose.ts +0 -84
  412. package/src/runtime/skill-effectiveness.ts +0 -524
  413. package/src/runtime/skill-instructions.ts +0 -391
  414. package/src/runtime/stale-reconciler.ts +0 -680
  415. package/src/runtime/stream-preview.ts +0 -184
  416. package/src/runtime/streaming-output.ts +0 -50
  417. package/src/runtime/subagent-manager.ts +0 -561
  418. package/src/runtime/subprocess-tool-registry.ts +0 -70
  419. package/src/runtime/supervisor-contact.ts +0 -64
  420. package/src/runtime/task-display.ts +0 -52
  421. package/src/runtime/task-graph-scheduler.ts +0 -227
  422. package/src/runtime/task-graph.ts +0 -290
  423. package/src/runtime/task-health.ts +0 -83
  424. package/src/runtime/task-id.ts +0 -161
  425. package/src/runtime/task-output-context.ts +0 -602
  426. package/src/runtime/task-packet.ts +0 -268
  427. package/src/runtime/task-quality.ts +0 -199
  428. package/src/runtime/task-runner/capabilities.ts +0 -78
  429. package/src/runtime/task-runner/context-retrieval.ts +0 -163
  430. package/src/runtime/task-runner/live-executor.ts +0 -227
  431. package/src/runtime/task-runner/output-splitter.ts +0 -152
  432. package/src/runtime/task-runner/progress.ts +0 -157
  433. package/src/runtime/task-runner/prompt-builder.ts +0 -278
  434. package/src/runtime/task-runner/prompt-pipeline.ts +0 -88
  435. package/src/runtime/task-runner/result-utils.ts +0 -16
  436. package/src/runtime/task-runner/retrieval-orchestrator.ts +0 -310
  437. package/src/runtime/task-runner/run-projection.ts +0 -125
  438. package/src/runtime/task-runner/state-helpers.ts +0 -176
  439. package/src/runtime/task-runner/tail-read.ts +0 -34
  440. package/src/runtime/task-runner.ts +0 -1420
  441. package/src/runtime/team-runner-artifacts.ts +0 -13
  442. package/src/runtime/team-runner.ts +0 -1993
  443. package/src/runtime/tool-output-pruner.ts +0 -333
  444. package/src/runtime/tool-progress.ts +0 -278
  445. package/src/runtime/usage-tracker.ts +0 -73
  446. package/src/runtime/verification-gates.ts +0 -571
  447. package/src/runtime/verification-integrity.ts +0 -105
  448. package/src/runtime/verification-worktree.ts +0 -186
  449. package/src/runtime/worker-heartbeat.ts +0 -25
  450. package/src/runtime/worker-startup.ts +0 -83
  451. package/src/runtime/workflow-state.ts +0 -195
  452. package/src/runtime/workspace-lock.ts +0 -443
  453. package/src/runtime/workspace-tree.ts +0 -312
  454. package/src/runtime/yield-handler.ts +0 -224
  455. package/src/runtime/zombie-scanner.ts +0 -298
  456. package/src/schema/config-schema.ts +0 -327
  457. package/src/schema/team-tool-schema.ts +0 -415
  458. package/src/schema/validation-types.ts +0 -159
  459. package/src/skills/discover-skills.ts +0 -197
  460. package/src/skills/skill-templates.ts +0 -456
  461. package/src/skills/validate.ts +0 -285
  462. package/src/state/active-run-registry.ts +0 -439
  463. package/src/state/artifact-store.ts +0 -176
  464. package/src/state/atomic-write.ts +0 -903
  465. package/src/state/blob-store.ts +0 -308
  466. package/src/state/contracts.ts +0 -158
  467. package/src/state/crew-init.ts +0 -269
  468. package/src/state/decision-ledger.ts +0 -345
  469. package/src/state/event-log-rotation.ts +0 -342
  470. package/src/state/event-log.ts +0 -1311
  471. package/src/state/event-reconstructor.ts +0 -229
  472. package/src/state/gitignore-manager.ts +0 -46
  473. package/src/state/health-store.ts +0 -79
  474. package/src/state/hook-instinct-bridge.ts +0 -94
  475. package/src/state/hook-integrations.ts +0 -51
  476. package/src/state/instinct-store.ts +0 -275
  477. package/src/state/jsonl-writer.ts +0 -107
  478. package/src/state/locks.ts +0 -562
  479. package/src/state/mailbox.ts +0 -916
  480. package/src/state/observation-store.ts +0 -176
  481. package/src/state/run-cache.ts +0 -193
  482. package/src/state/run-graph.ts +0 -183
  483. package/src/state/run-metrics.ts +0 -165
  484. package/src/state/schedule.ts +0 -166
  485. package/src/state/session-state-map.ts +0 -51
  486. package/src/state/state-store.ts +0 -958
  487. package/src/state/task-claims.ts +0 -61
  488. package/src/state/tiered-eval.ts +0 -480
  489. package/src/state/types-eval.ts +0 -58
  490. package/src/state/types.ts +0 -440
  491. package/src/state/usage.ts +0 -138
  492. package/src/state/worker-atomic-writer.ts +0 -194
  493. package/src/subagents/async-entry.ts +0 -1
  494. package/src/subagents/index.ts +0 -3
  495. package/src/subagents/live/control.ts +0 -1
  496. package/src/subagents/live/manager.ts +0 -1
  497. package/src/subagents/live/realtime.ts +0 -1
  498. package/src/subagents/live/session-runtime.ts +0 -1
  499. package/src/subagents/manager.ts +0 -1
  500. package/src/subagents/spawn.ts +0 -1
  501. package/src/teams/discover-teams.ts +0 -187
  502. package/src/teams/team-config.ts +0 -27
  503. package/src/teams/team-serializer.ts +0 -38
  504. package/src/tools/safe-bash-extension.ts +0 -54
  505. package/src/tools/safe-bash.ts +0 -505
  506. package/src/types/diff.d.ts +0 -18
  507. package/src/types/new-api-types.ts +0 -35
  508. package/src/ui/agent-management-overlay.ts +0 -160
  509. package/src/ui/card-colors.ts +0 -139
  510. package/src/ui/crew-footer.ts +0 -102
  511. package/src/ui/crew-select-list.ts +0 -111
  512. package/src/ui/dashboard-panes/agents-pane.ts +0 -164
  513. package/src/ui/dashboard-panes/cancellation-pane.ts +0 -66
  514. package/src/ui/dashboard-panes/capability-pane.ts +0 -77
  515. package/src/ui/dashboard-panes/health-pane.ts +0 -31
  516. package/src/ui/dashboard-panes/mailbox-pane.ts +0 -35
  517. package/src/ui/dashboard-panes/metrics-pane.ts +0 -37
  518. package/src/ui/dashboard-panes/progress-pane.ts +0 -38
  519. package/src/ui/dashboard-panes/transcript-pane.ts +0 -10
  520. package/src/ui/deploy-bundled-themes.ts +0 -71
  521. package/src/ui/dwf-phase-display.ts +0 -151
  522. package/src/ui/dynamic-border.ts +0 -35
  523. package/src/ui/heartbeat-aggregator.ts +0 -74
  524. package/src/ui/key-utils.ts +0 -42
  525. package/src/ui/keybinding-map.ts +0 -248
  526. package/src/ui/layout-primitives.ts +0 -106
  527. package/src/ui/live-conversation-overlay.ts +0 -183
  528. package/src/ui/live-duration.ts +0 -55
  529. package/src/ui/live-run-sidebar.ts +0 -301
  530. package/src/ui/loaders.ts +0 -176
  531. package/src/ui/mascot.ts +0 -436
  532. package/src/ui/overlays/agent-picker-overlay.ts +0 -65
  533. package/src/ui/overlays/confirm-overlay.ts +0 -60
  534. package/src/ui/overlays/help-overlay.ts +0 -177
  535. package/src/ui/overlays/mailbox-compose-overlay.ts +0 -181
  536. package/src/ui/overlays/mailbox-compose-preview.ts +0 -78
  537. package/src/ui/overlays/mailbox-detail-overlay.ts +0 -154
  538. package/src/ui/pi-ui-compat.ts +0 -68
  539. package/src/ui/powerbar-publisher.ts +0 -459
  540. package/src/ui/render-coalescer.ts +0 -101
  541. package/src/ui/render-diff.ts +0 -160
  542. package/src/ui/render-scheduler.ts +0 -224
  543. package/src/ui/run-action-dispatcher.ts +0 -182
  544. package/src/ui/run-dashboard.ts +0 -913
  545. package/src/ui/run-event-bus.ts +0 -381
  546. package/src/ui/run-snapshot-cache.ts +0 -1057
  547. package/src/ui/settings-overlay.ts +0 -1067
  548. package/src/ui/snapshot-types.ts +0 -90
  549. package/src/ui/spinner.ts +0 -17
  550. package/src/ui/status-colors.ts +0 -143
  551. package/src/ui/syntax-highlight.ts +0 -136
  552. package/src/ui/terminal-status.ts +0 -269
  553. package/src/ui/theme-adapter.ts +0 -271
  554. package/src/ui/theme-discovery.ts +0 -199
  555. package/src/ui/tool-progress-formatter.ts +0 -93
  556. package/src/ui/tool-render.ts +0 -453
  557. package/src/ui/tool-renderers/brief-mode.ts +0 -225
  558. package/src/ui/tool-renderers/index.ts +0 -726
  559. package/src/ui/transcript-cache.ts +0 -128
  560. package/src/ui/transcript-entries.ts +0 -256
  561. package/src/ui/transcript-viewer.ts +0 -424
  562. package/src/ui/widget/index.ts +0 -357
  563. package/src/ui/widget/widget-formatters.ts +0 -182
  564. package/src/ui/widget/widget-model.ts +0 -110
  565. package/src/ui/widget/widget-renderer.ts +0 -182
  566. package/src/ui/widget/widget-types.ts +0 -36
  567. package/src/utils/bm25-search.ts +0 -235
  568. package/src/utils/completion-dedupe.ts +0 -63
  569. package/src/utils/conflict-detect.ts +0 -668
  570. package/src/utils/env-allowlist.ts +0 -30
  571. package/src/utils/env-filter.ts +0 -155
  572. package/src/utils/file-coalescer.ts +0 -98
  573. package/src/utils/fingerprint.ts +0 -180
  574. package/src/utils/frontmatter.ts +0 -70
  575. package/src/utils/fs-watch.ts +0 -37
  576. package/src/utils/gh-protocol.ts +0 -556
  577. package/src/utils/git.ts +0 -260
  578. package/src/utils/guards.ts +0 -107
  579. package/src/utils/ids.ts +0 -24
  580. package/src/utils/incremental-reader.ts +0 -220
  581. package/src/utils/internal-error.ts +0 -10
  582. package/src/utils/names.ts +0 -36
  583. package/src/utils/ndjson.ts +0 -115
  584. package/src/utils/paths.ts +0 -227
  585. package/src/utils/project-detector.ts +0 -160
  586. package/src/utils/redaction.ts +0 -347
  587. package/src/utils/resolve-shell.ts +0 -36
  588. package/src/utils/run-watcher-registry.ts +0 -152
  589. package/src/utils/safe-paths.ts +0 -383
  590. package/src/utils/scan-cache.ts +0 -144
  591. package/src/utils/session-utils.ts +0 -110
  592. package/src/utils/sleep.ts +0 -54
  593. package/src/utils/socket-path.ts +0 -127
  594. package/src/utils/sse-parser.ts +0 -129
  595. package/src/utils/task-name-generator.ts +0 -337
  596. package/src/utils/timings.ts +0 -33
  597. package/src/utils/token-counter.ts +0 -200
  598. package/src/utils/visual.ts +0 -207
  599. package/src/workflows/cost-estimator.ts +0 -34
  600. package/src/workflows/discover-workflows.ts +0 -290
  601. package/src/workflows/intermediate-store.ts +0 -166
  602. package/src/workflows/preflight-validator.ts +0 -168
  603. package/src/workflows/topology-analyzer.ts +0 -203
  604. package/src/workflows/validate-workflow.ts +0 -50
  605. package/src/workflows/workflow-config.ts +0 -70
  606. package/src/workflows/workflow-serializer.ts +0 -32
  607. package/src/worktree/branch-freshness.ts +0 -112
  608. package/src/worktree/cleanup.ts +0 -341
  609. package/src/worktree/worktree-manager.ts +0 -1200
@@ -1,520 +0,0 @@
1
- # PI-CREW PERFORMANCE OPTIMIZATIONS: DETAILED EXECUTION PLAN
2
-
3
- **Created:** 2026-07-13
4
- **Based on:** Performance review findings and planner output
5
- **Scope:** 8 performance optimizations across 4 phases
6
-
7
- ---
8
-
9
- ## Executive Summary
10
-
11
- This plan details the execution of 8 performance optimizations for pi-crew, organized into 4 phases with clear dependency chains, parallelization opportunities, and risk assessment. The optimizations range from quick wins (0.5 day) to major architectural changes (5-8 days), with a total estimated timeline of 4 weeks with 2 developers or 2 weeks with 4 developers.
12
-
13
- ---
14
-
15
- ## Phase 1: Quick Wins (Week 1)
16
-
17
- **Goal:** Low-risk, high-impact optimizations that can be done in parallel
18
- **Total Effort:** 3-5 days (parallel)
19
-
20
- ### OPT-03: Guard collectedJsonEvents (0.5 day)
21
-
22
- **Current State:**
23
- - `task-runner.ts:301`: Already guarded with conditional allocation
24
- - `live-session-runtime.ts:597`: Still allocates unconditionally
25
-
26
- **Implementation:**
27
- 1. Apply same pattern from `task-runner.ts` to `live-session-runtime.ts`
28
- 2. Check yield configuration before allocating array
29
- 3. Update all usage sites to handle `undefined` case
30
-
31
- **Files to Modify:**
32
- - `src/runtime/live-session-runtime.ts` (line 597)
33
- - `src/runtime/task-runner.ts` (verify existing implementation)
34
-
35
- **Validation:**
36
- - Unit test: verify no allocation when yield disabled
37
- - Memory profile: compare before/after for 100-task run
38
- - Verify no behavioral changes
39
-
40
- ### OPT-05: Cache compacted skill content (0.5 day)
41
-
42
- **Current State:**
43
- - `skill-instructions.ts:144`: Cache already exists with `SKILL_CACHE_MAX_ENTRIES = 128`
44
- - `skill-instructions.ts:132`: Compacted content already cached
45
-
46
- **Implementation:**
47
- 1. Verify cache hit rates in production
48
- 2. Tune `SKILL_CACHE_MAX_ENTRIES` if needed
49
- 3. Consider cross-run cache (like `stableIOCache` in prompt-builder.ts)
50
-
51
- **Files to Modify:**
52
- - `src/runtime/skill-instructions.ts` (cache tuning)
53
-
54
- **Validation:**
55
- - Add cache hit/miss metrics
56
- - Verify with 10-run session that cache hit rate > 80%
57
- - Benchmark render time with/without cache
58
-
59
- ### OPT-02: Convert saveRunManifest to async (1-2 days)
60
-
61
- **Current State:**
62
- - `state/state-store.ts:332`: Synchronous `saveRunManifest` with sync file I/O
63
- - `state/state-store.ts:373`: Async `saveRunManifestAsync` exists but not widely used
64
- - Multiple callers still use sync version in critical paths
65
-
66
- **Implementation:**
67
- 1. Audit all `saveRunManifest` call sites
68
- 2. Convert critical path callers to use async version
69
- 3. Verify no sync-only callers remain
70
- 4. Update `task-runner.ts` line 1205 to use async version
71
-
72
- **Files to Modify:**
73
- - `src/runtime/team-runner.ts` (lines 640, 748, 776)
74
- - `src/runtime/task-runner.ts` (line 1205)
75
- - `src/runtime/stale-reconciler.ts` (lines 77, 332)
76
- - `src/runtime/adaptive-plan.ts` (line 445)
77
- - `src/runtime/background-runner.ts` (lines 624, 645, 690)
78
- - `src/extension/team-tool.ts` (lines 305, 375)
79
- - `src/extension/team-tool/goal-wrap.ts` (line 271)
80
- - `src/extension/team-tool/api.ts` (lines 172, 247)
81
- - `src/extension/team-tool/goal.ts` (line 194)
82
-
83
- **Validation:**
84
- - Grep for all `saveRunManifest` calls, ensure none remain sync
85
- - Unit test: async save with concurrent reads
86
- - Integration test: run with `--trace-warnings` to detect event loop blocking
87
- - Verify no race conditions in concurrent writes
88
-
89
- ### OPT-06: Optimize transcript reads (1-2 days)
90
-
91
- **Current State:**
92
- - `child-pi.ts:413`: Uses sync `writeSync` for transcript writes
93
- - `live-session-runtime.ts:152`: Uses sync `appendFileSync`
94
-
95
- **Implementation:**
96
- 1. Convert `appendTranscript` to use async `writeFile`
97
- 2. Keep fd open per-task instead of open/write/close per line
98
- 3. Add path validation caching (like OPT-05 pattern)
99
- 4. Ensure transcript writes are best-effort (loss acceptable)
100
-
101
- **Files to Modify:**
102
- - `src/runtime/child-pi.ts` (line 413)
103
- - `src/runtime/live-session-runtime.ts` (line 152)
104
- - `src/runtime/task-runner.ts` (line 414)
105
-
106
- **Validation:**
107
- - Benchmark: 1000-line transcript write time
108
- - Verify no event loop blocking with `--trace-warnings`
109
- - Test transcript integrity after async writes
110
-
111
- ---
112
-
113
- ## Phase 2: Independent Optimizations (Week 2)
114
-
115
- **Goal:** Medium-effort optimizations that don't depend on Phase 1
116
- **Total Effort:** 5-8 days (parallel)
117
-
118
- ### OPT-04: Code-aware token estimation (2-3 days)
119
-
120
- **Current State:**
121
- - `utils/token-counter.ts:46-80`: Uses alpha/4 + punct heuristic
122
- - Already better than naive char/4, but still ~10-15% off for code
123
-
124
- **Implementation:**
125
- 1. Add language detection (heuristic: look for keywords like `function`, `const`, `=>`)
126
- 2. Apply different weighting for code vs prose
127
- 3. Benchmark against real tokenizer outputs
128
- 4. Update `tool-output-pruner.ts` to use new estimator
129
-
130
- **Files to Modify:**
131
- - `src/utils/token-counter.ts` (lines 46-80)
132
- - `src/runtime/tool-output-pruner.ts` (update to use new estimator)
133
-
134
- **Validation:**
135
- - Benchmark against tiktoken/actual tokenizer for 100 code samples
136
- - Ensure no regression for existing prose estimation
137
- - Update `tool-output-pruner.ts` to use new estimator
138
- - Add unit tests for code vs prose detection
139
-
140
- ### OPT-01: Streaming dispatch (3-5 days)
141
-
142
- **Current State:**
143
- - `team-runner.ts:1265-1340`: Tasks grouped into `readyBatch`, then dispatched via `mapConcurrent`
144
- - Loop waits for ALL tasks in a batch to complete before checking for new ready tasks
145
- - Creates unnecessary latency when tasks finish at different times
146
-
147
- **Implementation:**
148
- 1. Refactor main execution loop in `executeTeamRunCore`
149
- 2. Implement task completion events to trigger immediate dispatch
150
- 3. Maintain correct ordering for dependency graph
151
- 4. Handle race conditions in concurrent dispatch + completion callbacks
152
- 5. Ensure proper state serialization
153
-
154
- **Files to Modify:**
155
- - `src/runtime/team-runner.ts` (main execution loop)
156
- - `src/runtime/task-graph-scheduler.ts` (readiness updates)
157
- - `src/runtime/parallel-utils.ts` (concurrent dispatch)
158
-
159
- **Validation:**
160
- - Unit test: DAG scheduler with dynamic readiness updates
161
- - Integration test: 10-task workflow with varying task durations
162
- - Measure: Time from first task ready to all tasks completed
163
- - Stress test: 100 concurrent tasks with complex dependencies
164
-
165
- ---
166
-
167
- ## Phase 3: Structural Changes (Week 3-4)
168
-
169
- **Goal:** High-effort architectural changes that depend on earlier phases
170
- **Total Effort:** 8-13 days (parallel)
171
-
172
- ### OPT-08: In-memory task state (5-8 days)
173
-
174
- **Dependencies:** Requires OPT-02 (async saveRunManifest)
175
-
176
- **Current State:**
177
- - `state-store.ts`: Every state change reads full manifest + tasks from disk
178
- - `task-runner/state-helpers.ts:29-141`: `persistSingleTaskUpdate` does 100-iteration sync CAS loop
179
- - Performance review F1/F2/F4 all relate to this issue
180
-
181
- **Implementation:**
182
- 1. Design in-memory state model with write-through
183
- 2. Implement CAS (compare-and-swap) for concurrent updates
184
- 3. Add crash recovery for in-memory state
185
- 4. Migrate all callers to new API
186
- 5. Ensure bulletproof crash recovery
187
-
188
- **Files to Modify:**
189
- - `src/state/state-store.ts` (in-memory state model)
190
- - `src/runtime/task-runner/state-helpers.ts` (CAS implementation)
191
- - `src/runtime/team-runner.ts` (state persistence)
192
- - `src/runtime/task-runner.ts` (state updates)
193
-
194
- **Validation:**
195
- - Stress test: 100 concurrent tasks writing state
196
- - Kill test: random process termination during write
197
- - Verify no data loss after crash recovery
198
- - Benchmark: state update latency before/after
199
-
200
- ### OPT-07: Live-session migration (3-5 days)
201
-
202
- **Dependencies:** Requires OPT-01 (streaming dispatch)
203
-
204
- **Current State:**
205
- - `live-session-runtime.ts`: Separate execution path from child-process
206
- - Has its own `collectedJsonEvents` allocation (see OPT-03)
207
- - Different state management than child-process path
208
-
209
- **Implementation:**
210
- 1. Align live-session with new streaming dispatch architecture
211
- 2. Refactor `live-session-runtime.ts` to use shared patterns
212
- 3. Ensure behavioral parity with child-process path
213
- 4. Extensive integration testing
214
-
215
- **Files to Modify:**
216
- - `src/runtime/live-session-runtime.ts` (major refactoring)
217
- - `src/runtime/task-runner/live-executor.ts` (alignment)
218
- - `src/runtime/team-runner.ts` (integration)
219
-
220
- **Validation:**
221
- - Full integration test suite for live-session
222
- - Manual testing with real Pi session
223
- - Performance comparison before/after
224
- - Verify no breaking changes
225
-
226
- ---
227
-
228
- ## Dependency Graph
229
-
230
- ```
231
- Phase 1 (Week 1):
232
- OPT-03 ─┐
233
- OPT-05 ─┤
234
- OPT-02 ─┼── (no dependencies)
235
- OPT-06 ─┘
236
-
237
- Phase 2 (Week 2):
238
- OPT-04 ─── (no dependencies)
239
- OPT-01 ─── (no dependencies)
240
-
241
- Phase 3 (Week 3-4):
242
- OPT-08 ─── depends on OPT-02
243
- OPT-07 ─── depends on OPT-01
244
- ```
245
-
246
- ---
247
-
248
- ## Risk Assessment
249
-
250
- | Optimization | Risk Level | Mitigation |
251
- |--------------|------------|------------|
252
- | OPT-01 | MEDIUM | Extensive integration testing, gradual rollout |
253
- | OPT-02 | LOW | Incremental migration, existing async version |
254
- | OPT-03 | VERY LOW | Pattern already proven |
255
- | OPT-04 | LOW | Additive change, benchmark validation |
256
- | OPT-05 | VERY LOW | Already implemented, just tuning |
257
- | OPT-06 | LOW | Best-effort writes, no consistency requirements |
258
- | OPT-07 | HIGH | Extensive testing, manual validation |
259
- | OPT-08 | VERY HIGH | Stress testing, crash recovery validation |
260
-
261
- ---
262
-
263
- ## Potential Conflicts
264
-
265
- 1. **OPT-01 vs OPT-07:** Both affect task dispatch. Ensure streaming dispatch design accommodates live-session runtime.
266
-
267
- 2. **OPT-02 vs OPT-08:** Both affect state persistence. Ensure async save works with in-memory write-through.
268
-
269
- 3. **OPT-04 vs existing callers:** Token estimation is used in `tool-output-pruner.ts`. Ensure new estimator doesn't break pruning logic.
270
-
271
- 4. **Cross-cutting concerns:** All optimizations must maintain cross-platform compatibility (Windows/macOS/Linux).
272
-
273
- ---
274
-
275
- ## Parallelization Opportunities
276
-
277
- **Maximum Parallelism:**
278
- - Phase 1: 4 developers can work simultaneously
279
- - Phase 2: 2 developers can work simultaneously
280
- - Phase 3: 2 developers can work simultaneously
281
-
282
- **Critical Path:** OPT-02 → OPT-08 (8-10 days) or OPT-01 → OPT-07 (6-10 days)
283
-
284
- **Total Timeline:** 4 weeks with 2 developers, 2 weeks with 4 developers
285
-
286
- ---
287
-
288
- ## Validation Strategy
289
-
290
- ### Unit Tests
291
- Each optimization should have unit tests for the specific change:
292
- - OPT-03: Test conditional allocation
293
- - OPT-05: Test cache hit/miss metrics
294
- - OPT-02: Test async save with concurrent reads
295
- - OPT-06: Test async transcript writes
296
- - OPT-04: Test code vs prose detection
297
- - OPT-01: Test DAG scheduler with dynamic readiness
298
- - OPT-08: Test CAS operations
299
- - OPT-07: Test live-session integration
300
-
301
- ### Integration Tests
302
- Full workflow tests before/after each phase:
303
- - Run complete team workflows
304
- - Verify state persistence
305
- - Test error handling and recovery
306
-
307
- ### Performance Tests
308
- - Micro-benchmarks for individual functions
309
- - End-to-end benchmarks for 10/50/100-task runs
310
- - Event loop blocking detection (`--trace-warnings`)
311
- - Memory usage profiling
312
-
313
- ### Stress Tests
314
- - OPT-08: Concurrent writes + crash recovery
315
- - OPT-01: High concurrency with complex dependencies
316
- - All optimizations: Long-running sessions
317
-
318
- ### Manual Testing
319
- - OPT-07: Real Pi session testing
320
- - All optimizations: Cross-platform verification
321
-
322
- ---
323
-
324
- ## Success Metrics
325
-
326
- 1. **Event Loop Blocking:** Reduce from ~50ms/task to <5ms/task
327
- 2. **Task Dispatch Latency:** Reduce from batch-complete to task-ready (target: 50% reduction)
328
- 3. **Token Estimation Accuracy:** Improve from ±15% to ±5%
329
- 4. **Cache Hit Rates:** Skill cache >80%, config cache >90%
330
- 5. **Memory Usage:** Stable for long runs (no linear growth)
331
- 6. **State Update Latency:** Reduce from disk-read to in-memory (target: 10x improvement)
332
-
333
- ---
334
-
335
- ## Recommendations
336
-
337
- 1. **Start with Phase 1:** Quick wins provide immediate value with minimal risk
338
- 2. **Defer OPT-08:** In-memory task state is high-risk; consider as future project
339
- 3. **Monitor OPT-07:** Live-session migration is complex; may need to split into sub-tasks
340
- 4. **Benchmark everything:** Establish baseline before starting, measure after each phase
341
- 5. **Cross-platform testing:** Ensure all changes work on Windows/macOS/Linux
342
- 6. **Gradual rollout:** Implement optimizations incrementally, not all at once
343
-
344
- ---
345
-
346
- ## Files to Modify (Summary)
347
-
348
- ### Phase 1:
349
- - `src/runtime/live-session-runtime.ts` (OPT-03)
350
- - `src/runtime/skill-instructions.ts` (OPT-05)
351
- - `src/state/state-store.ts` (OPT-02)
352
- - `src/runtime/team-runner.ts` (OPT-02)
353
- - `src/runtime/task-runner.ts` (OPT-02)
354
- - `src/runtime/stale-reconciler.ts` (OPT-02)
355
- - `src/runtime/adaptive-plan.ts` (OPT-02)
356
- - `src/runtime/background-runner.ts` (OPT-02)
357
- - `src/extension/team-tool.ts` (OPT-02)
358
- - `src/extension/team-tool/goal-wrap.ts` (OPT-02)
359
- - `src/extension/team-tool/api.ts` (OPT-02)
360
- - `src/extension/team-tool/goal.ts` (OPT-02)
361
- - `src/runtime/child-pi.ts` (OPT-06)
362
- - `src/runtime/task-runner.ts` (OPT-06)
363
-
364
- ### Phase 2:
365
- - `src/utils/token-counter.ts` (OPT-04)
366
- - `src/runtime/tool-output-pruner.ts` (OPT-04)
367
- - `src/runtime/team-runner.ts` (OPT-01)
368
- - `src/runtime/task-graph-scheduler.ts` (OPT-01)
369
- - `src/runtime/parallel-utils.ts` (OPT-01)
370
-
371
- ### Phase 3:
372
- - `src/state/state-store.ts` (OPT-08)
373
- - `src/runtime/task-runner/state-helpers.ts` (OPT-08)
374
- - `src/runtime/live-session-runtime.ts` (OPT-07)
375
- - `src/runtime/task-runner/live-executor.ts` (OPT-07)
376
- - `src/runtime/team-runner.ts` (OPT-07)
377
-
378
- ---
379
-
380
- ## Remaining Risks
381
-
382
- 1. **OPT-01 complexity:** Streaming dispatch may introduce subtle race conditions
383
- 2. **OPT-08 crash recovery:** In-memory state must survive process crashes
384
- 3. **OPT-07 behavioral parity:** Live-session must behave identically to child-process
385
- 4. **Cross-platform:** Ensure all changes work on Windows/macOS/Linux
386
- 5. **Performance regression:** New optimizations must not introduce performance regressions
387
- 6. **Breaking changes:** All optimizations must maintain backward compatibility
388
-
389
- ---
390
-
391
- ## Next Steps
392
-
393
- 1. Review this plan with the team
394
- 2. Assign owners for each optimization
395
- 3. Create detailed design documents for Phase 2 and Phase 3
396
- 4. Establish baseline metrics before starting
397
- 5. Begin Phase 1 execution
398
- 6. Set up performance monitoring and alerting
399
- 7. Create rollback procedures for each optimization
400
-
401
- ---
402
-
403
- ## Appendix: Detailed Technical Specifications
404
-
405
- ### OPT-01: Streaming Dispatch Technical Details
406
-
407
- **Current Architecture:**
408
- ```
409
- while (tasks.some(queued)) {
410
- readyBatch = getReadyTasks(tasks);
411
- if (readyBatch.length === 0) break;
412
- results = await mapConcurrent(readyBatch, ...);
413
- tasks = mergeResults(tasks, results);
414
- }
415
- ```
416
-
417
- **Proposed Architecture:**
418
- ```
419
- const pendingPromises = new Map();
420
- while (tasks.some(queued) || pendingPromises.size > 0) {
421
- readyBatch = getReadyTasks(tasks);
422
- for (task of readyBatch) {
423
- const promise = runTask(task).then(result => {
424
- pendingPromises.delete(task.id);
425
- tasks = mergeResult(tasks, result);
426
- // Trigger next iteration
427
- });
428
- pendingPromises.set(task.id, promise);
429
- }
430
- await Promise.race([...pendingPromises.values()]);
431
- }
432
- ```
433
-
434
- ### OPT-02: Async Migration Strategy
435
-
436
- **Migration Pattern:**
437
- ```typescript
438
- // Before
439
- saveRunManifest(manifest);
440
-
441
- // After
442
- await saveRunManifestAsync(manifest);
443
- ```
444
-
445
- **Critical Path Analysis:**
446
- - `team-runner.ts:640` - Plan approval
447
- - `team-runner.ts:748` - Budget persistence
448
- - `team-runner.ts:776` - Goal achievement
449
- - `task-runner.ts:1205` - Task completion
450
-
451
- ### OPT-03: Guard Pattern
452
-
453
- **Current Implementation:**
454
- ```typescript
455
- const collectedJsonEvents: Record<string, unknown>[] = [];
456
- ```
457
-
458
- **Proposed Implementation:**
459
- ```typescript
460
- const collectYieldEvents = runtimeKind !== "child-process" &&
461
- (input.runtimeConfig?.yield?.enabled ?? DEFAULT_YIELD_CONFIG.enabled);
462
- const collectedJsonEvents: Record<string, unknown>[] | undefined =
463
- collectYieldEvents ? [] : undefined;
464
- ```
465
-
466
- ### OPT-04: Code-Aware Estimation
467
-
468
- **Heuristic Detection:**
469
- ```typescript
470
- function isCodeContent(text: string): boolean {
471
- const codeIndicators = [
472
- /function\s*\w*\s*\(/,
473
- /const\s+\w+\s*=/,
474
- /=>\s*{/,
475
- /import\s+.*from\s+['"]/,
476
- /export\s+(default\s+)?(function|class|const)/,
477
- /\w+\.\w+\(.*\)/, // Method calls
478
- /[{}\[\]();]/, // Code punctuation
479
- ];
480
-
481
- let score = 0;
482
- for (const indicator of codeIndicators) {
483
- if (indicator.test(text)) score++;
484
- }
485
-
486
- return score >= 3; // Threshold for code detection
487
- }
488
- ```
489
-
490
- ### OPT-08: In-Memory State Model
491
-
492
- **Architecture:**
493
- ```typescript
494
- class InMemoryTaskState {
495
- private state: Map<string, TeamTaskState> = new Map();
496
- private manifest: TeamRunManifest;
497
-
498
- async updateTask(taskId: string, update: Partial<TeamTaskState>): Promise<void> {
499
- const current = this.state.get(taskId);
500
- if (!current) throw new Error(`Task ${taskId} not found`);
501
-
502
- const merged = { ...current, ...update };
503
- this.state.set(taskId, merged);
504
-
505
- // Write-through to disk
506
- await this.flushToDisk();
507
- }
508
-
509
- private async flushToDisk(): Promise<void> {
510
- await saveRunManifestAsync(this.manifest);
511
- await saveRunTasksAsync(this.manifest, Array.from(this.state.values()));
512
- }
513
- }
514
- ```
515
-
516
- ---
517
-
518
- **Document Version:** 1.0
519
- **Last Updated:** 2026-07-13
520
- **Author:** Performance Optimization Task Force
@@ -1,58 +0,0 @@
1
- # Phase 4 Triage: sync `appendEvent` → async migration
2
-
3
- ## Summary
4
-
5
- Migrated **4 non-terminal diagnostic calls** to `appendEventFireAndForget` and **1 audit-critical call** to `await appendEventAsync`. All other sync callers remain sync. Three review rounds caught and fixed real production bugs during this phase.
6
-
7
- ## Key finding: hot path already migrated
8
-
9
- `src/runtime/task-runner.ts` (the hottest path — fires on every worker event) is **already fully async**. Verified: **zero** sync `appendEvent` calls in task-runner.ts. Event writes use:
10
- - 6 × `appendEventAsync` (lines 213, 503, 621, 916, 1013, 1237)
11
- - 1 × `appendEventBuffered` (line 430)
12
- - 1 × `appendEventFireAndForget` (line 282)
13
-
14
- This means the `sleepSync` busy-wait in `withEventLogLockSync` is NOT on the per-event hot path. It only contends during lifecycle transitions (run start/stop, signal handling) where the blocking cost is acceptable.
15
-
16
- ## Final migration — 5 calls in 1 file
17
-
18
- Only `adaptive-plan.ts` was migrated (partially):
19
-
20
- | Call | Event type | Method | Rationale |
21
- |------|-----------|--------|-----------|
22
- | Line 398 | `adaptive.plan_missing` | `appendEventFireAndForget` | Diagnostic — safe |
23
- | Line 417 | `adaptive.plan_missing` | `appendEventFireAndForget` | Diagnostic — safe |
24
- | Line 450 | `adaptive.plan_repaired` | `appendEventFireAndForget` | Diagnostic — safe |
25
- | Line 458 | `adaptive.plan_repaired` | `appendEventFireAndForget` | Diagnostic — safe |
26
- | Line 465 | `adaptive.plan_repair_failed` | `appendEventFireAndForget` | Diagnostic — safe |
27
- | Line 534 | `adaptive.plan_injected` | `await appendEventAsync` | **Audit-critical** — team-runner reads tasks immediately after. Upgraded to awaited async to prevent ordering inversion. |
28
-
29
- ## Reverted after review (test regressions + error context loss)
30
-
31
- | File | Calls | Why reverted |
32
- |------|-------|-------------|
33
- | `attention-events.ts` | 1 | Dedup regression: sync `readEvents` for dedup + async write = rapid calls bypass dedup (Round 2 MEDIUM-1) |
34
- | `supervisor-contact.ts` | 1 | Test regression: `recordSupervisorContact` called from sync `onStdoutLine` callback; event not on disk when consumer reads (Round 1 HIGH #1). Also dead `try/catch` losing runId/taskId error context (Round 3 HIGH-1). |
35
- | `hooks/registry.ts` | 1 | Test regression: 3 tests fail because `appendHookEvent` is followed by sync `readEvents` (Round 1 HIGH #2). Also ordering inversion risk with subsequent sync events in crash-recovery.ts (Round 1 MEDIUM #1). |
36
-
37
- ## Intentionally kept sync — 86 calls (unchanged from original 94)
38
-
39
- | Path | Reason to keep sync |
40
- |------|---------------------|
41
- | `background-runner.ts` (11) | Separate child process; terminal/crash events (`async.failed`, `async.completed`, `unhandledRejection` guard) must be on disk before exit. |
42
- | `crash-recovery.ts` (4) | Terminal recovery events — ordering and durability critical. |
43
- | `team-tool/*.ts` (lifecycle) | Run start/cancel/status — terminal-ish, fire once per run. |
44
- | `goal-loop-runner.ts` (12) | Goal turn boundaries — ordering matters for goal state. |
45
- | `dynamic-workflow-runner.ts` (5) | Phase transitions — ordering matters. |
46
- | `state-store.ts` (2) | State persistence — sync write guarantees. |
47
-
48
- ## Real ordering risk: sync-vs-async lock divergence
49
-
50
- The sync and async event-write paths use **different lock mechanisms**:
51
- - **Sync** `appendEvent` → `withEventLogLockSync` → filesystem directory lock + `sleepSync`
52
- - **Async** `appendEventAsync` / `appendEventFireAndForget` → in-process promise chain → no filesystem lock
53
-
54
- These do not coordinate. A fire-and-forget call yields to the event loop before its I/O starts, while a subsequent sync `appendEvent` acquires the file lock and writes immediately. The sync event can land on disk **before** the earlier fire-and-forget event — a true ordering inversion (acknowledged in `event-log.ts` comment "EL-1: the sidecar can regress via sync/async interleave").
55
-
56
- ## Why not migrate everything?
57
-
58
- Migrating the remaining 86 would require per-caller analysis of ordering dependencies and consumers that read events immediately after. The three review rounds found that even seemingly safe migrations (supervisor-contact, hooks/registry) caused test regressions because downstream consumers read events synchronously. High effort, low return since they're not hot-path and the sync/async mixing risk is already accepted in the codebase.