elanous 0.2.35 → 0.2.37

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 (827) hide show
  1. package/apps/pwa/out/404/index.html +1 -1
  2. package/apps/pwa/out/404.html +1 -1
  3. package/apps/pwa/out/_next/static/{T1mBQqmkwKDLGtyisDCOd → 8kITumG9GAZ1LwT9POrAR}/_buildManifest.js +1 -1
  4. package/apps/pwa/out/_next/static/chunks/1041-5841aae848fb6403.js +1 -0
  5. package/apps/pwa/out/_next/static/chunks/1087.3177e54f672dc526.js +1 -0
  6. package/apps/pwa/out/_next/static/chunks/1105.efe1e13503ac7a33.js +1 -0
  7. package/apps/pwa/out/_next/static/chunks/1224.2ceca6c180d5130b.js +62 -0
  8. package/apps/pwa/out/_next/static/chunks/{9952.5daf5f94063a2b3e.js → 1262.a89bb27a5b2f844e.js} +1 -1
  9. package/apps/pwa/out/_next/static/chunks/1417-1768233ac92f8a5d.js +1 -0
  10. package/apps/pwa/out/_next/static/chunks/1612.81bbc19af06af16c.js +1 -0
  11. package/apps/pwa/out/_next/static/chunks/1746.3563617ea64023a3.js +115 -0
  12. package/apps/pwa/out/_next/static/chunks/1766.728d42053070bb2d.js +1 -0
  13. package/apps/pwa/out/_next/static/chunks/1773.d38e945481e04125.js +1 -0
  14. package/apps/pwa/out/_next/static/chunks/1974-c12f9600da3d3c26.js +1 -0
  15. package/apps/pwa/out/_next/static/chunks/{1dc5a567.9b092bfae3d7099b.js → 1ed5e8af.cf424815c7c0efad.js} +1 -1
  16. package/apps/pwa/out/_next/static/chunks/{4705-194e64e47ca0fbdb.js → 2002-a43a3f380df873ec.js} +1 -1
  17. package/apps/pwa/out/_next/static/chunks/2061.7232dc9dc058417f.js +1 -0
  18. package/apps/pwa/out/_next/static/chunks/{13.02a07436dec15f89.js → 210.90b2cbd64926cf34.js} +1 -1
  19. package/apps/pwa/out/_next/static/chunks/{9512.5a76207a730e0491.js → 2283.edd9627b7bdfb546.js} +2 -2
  20. package/apps/pwa/out/_next/static/chunks/{6866-79aa5b4e47cac6aa.js → 2318-450e75d07605b8fe.js} +1 -1
  21. package/apps/pwa/out/_next/static/chunks/{938.66ad1ef0e5abae1c.js → 2375.bf364c85dbb6f085.js} +1 -1
  22. package/apps/pwa/out/_next/static/chunks/244-a810d282a20f1783.js +1 -0
  23. package/apps/pwa/out/_next/static/chunks/2479-fe7e188bd9402d14.js +1 -0
  24. package/apps/pwa/out/_next/static/chunks/2514.03b60f266531a015.js +148 -0
  25. package/apps/pwa/out/_next/static/chunks/2526-a657538869888604.js +1 -0
  26. package/apps/pwa/out/_next/static/chunks/2533-6f0341ff075809e9.js +1 -0
  27. package/apps/pwa/out/_next/static/chunks/2676.e7994c695ef0f30d.js +1 -0
  28. package/apps/pwa/out/_next/static/chunks/2734.3ffdf54254fb6f99.js +27 -0
  29. package/apps/pwa/out/_next/static/chunks/2770-23252bf3a37880b9.js +1 -0
  30. package/apps/pwa/out/_next/static/chunks/2969.66b8b545139d1544.js +1 -0
  31. package/apps/pwa/out/_next/static/chunks/3128.a9210d08800ea6a8.js +1 -0
  32. package/apps/pwa/out/_next/static/chunks/3199.6a1a9b0e6cd01dc6.js +1 -0
  33. package/apps/pwa/out/_next/static/chunks/3212.12179fd3eee8cef1.js +1 -0
  34. package/apps/pwa/out/_next/static/chunks/{9214.63a510d39178e997.js → 3578.4e9f9948a9a6f2f4.js} +2 -2
  35. package/apps/pwa/out/_next/static/chunks/3760-2909ddb9279281cd.js +1 -0
  36. package/apps/pwa/out/_next/static/chunks/3825.1921b5901bf33dce.js +36 -0
  37. package/apps/pwa/out/_next/static/chunks/3994-63eb884ed0547011.js +1 -0
  38. package/apps/pwa/out/_next/static/chunks/4036.d54e55e1ebf5acdc.js +90 -0
  39. package/apps/pwa/out/_next/static/chunks/4115.5b438b99f0ae729f.js +226 -0
  40. package/apps/pwa/out/_next/static/chunks/4269.d8f9f34bb0fc6c43.js +287 -0
  41. package/apps/pwa/out/_next/static/chunks/431-4eed5bd2c5fe1719.js +1 -0
  42. package/apps/pwa/out/_next/static/chunks/{2018.a741297bce759490.js → 4313.76f232c304a15bde.js} +1 -1
  43. package/apps/pwa/out/_next/static/chunks/{1165.bad13fc9151a7288.js → 4324.c99ba3e83eb1b691.js} +1 -1
  44. package/apps/pwa/out/_next/static/chunks/{3f7c4ee5.3dde54f01a816613.js → 4337e36d.f42c3b391b3d8f20.js} +1 -1
  45. package/apps/pwa/out/_next/static/chunks/{7385.50a308a477bdfc21.js → 4383.18e5c54db3a22c88.js} +1 -1
  46. package/apps/pwa/out/_next/static/chunks/4599-96eff3f2a9c242c1.js +1 -0
  47. package/apps/pwa/out/_next/static/chunks/{8557-e7898769499cd56f.js → 4725-34bed25720cc326b.js} +1 -1
  48. package/apps/pwa/out/_next/static/chunks/4825-a9d9d4e9f5892309.js +1 -0
  49. package/apps/pwa/out/_next/static/chunks/{5483-dd5d7697f6bdb106.js → 4833-7934c592c5569f00.js} +1 -1
  50. package/apps/pwa/out/_next/static/chunks/4879-68518f547a207aff.js +1 -0
  51. package/apps/pwa/out/_next/static/chunks/4896.f9b70285363b27b2.js +24 -0
  52. package/apps/pwa/out/_next/static/chunks/{8444.4c26b379ca2b9596.js → 4931.95cc6dbd230774ca.js} +17 -17
  53. package/apps/pwa/out/_next/static/chunks/4937-28d437999b77c9dd.js +1 -0
  54. package/apps/pwa/out/_next/static/chunks/49aa54ab.80f39398e0ed0f30.js +1 -0
  55. package/apps/pwa/out/_next/static/chunks/{3408.21d1570602f4b6c0.js → 5046.7fd5cbd859299448.js} +1 -1
  56. package/apps/pwa/out/_next/static/chunks/5056.482687319b82638e.js +104 -0
  57. package/apps/pwa/out/_next/static/chunks/506.16b83d56a437a9ee.js +1 -0
  58. package/apps/pwa/out/_next/static/chunks/5260-20593b0a25d0afbc.js +1 -0
  59. package/apps/pwa/out/_next/static/chunks/5404.cc4e9fec26fd5925.js +1 -0
  60. package/apps/pwa/out/_next/static/chunks/576.485e83e3f3dec19a.js +1 -0
  61. package/apps/pwa/out/_next/static/chunks/5832-a6be14e663f65726.js +1 -0
  62. package/apps/pwa/out/_next/static/chunks/5854-56648a9fe646b9a0.js +1 -0
  63. package/apps/pwa/out/_next/static/chunks/58edce7d.f1b0c72acf13b123.js +1 -0
  64. package/apps/pwa/out/_next/static/chunks/5925.3b1f8b135710249b.js +93 -0
  65. package/apps/pwa/out/_next/static/chunks/5952.294fc574a8625184.js +1 -0
  66. package/apps/pwa/out/_next/static/chunks/{b6705a4f-b9a9047de9eecfd0.js → 5f6af561-f90b7a67f4f75d13.js} +1 -1
  67. package/apps/pwa/out/_next/static/chunks/6168.17749aa3905fa073.js +74 -0
  68. package/apps/pwa/out/_next/static/chunks/6252.240578f10952e091.js +34 -0
  69. package/apps/pwa/out/_next/static/chunks/6416.5d50b8ec9986ca98.js +1 -0
  70. package/apps/pwa/out/_next/static/chunks/{5101.e32282718f99ed6f.js → 6680.6a693c28aae4cd19.js} +1 -1
  71. package/apps/pwa/out/_next/static/chunks/{4718-17d2af636796a330.js → 6745-5a63492933959dd9.js} +3 -3
  72. package/apps/pwa/out/_next/static/chunks/6758.e7fbf532953c0783.js +1 -0
  73. package/apps/pwa/out/_next/static/chunks/6795.0cb8a59730d99703.js +149 -0
  74. package/apps/pwa/out/_next/static/chunks/{6236.e18cced2d5ba6afb.js → 6819.be5c9c4d67f22922.js} +16 -16
  75. package/apps/pwa/out/_next/static/chunks/6877-84d47b7e85d0c41e.js +1 -0
  76. package/apps/pwa/out/_next/static/chunks/{2833-0fe47af99ed13c29.js → 6971-fb5f9dc0a2cb5d2d.js} +1 -1
  77. package/apps/pwa/out/_next/static/chunks/{da5176c6.6773b6c5994e1d99.js → 709a918c.4fd3b4e2a32cb4e3.js} +1 -1
  78. package/apps/pwa/out/_next/static/chunks/717.522b08685979b814.js +1 -0
  79. package/apps/pwa/out/_next/static/chunks/7191.e41eb8f455c7f089.js +41 -0
  80. package/apps/pwa/out/_next/static/chunks/7233.8e744b7513119409.js +1 -0
  81. package/apps/pwa/out/_next/static/chunks/7238-97c2226f80504bd8.js +1 -0
  82. package/apps/pwa/out/_next/static/chunks/7285.307963afcf7e7660.js +24 -0
  83. package/apps/pwa/out/_next/static/chunks/7299-fbe4b8c47a87614a.js +1 -0
  84. package/apps/pwa/out/_next/static/chunks/7314.df0d95930b0c3f50.js +1 -0
  85. package/apps/pwa/out/_next/static/chunks/7406.c0589fdf2ee66629.js +1 -0
  86. package/apps/pwa/out/_next/static/chunks/7424.c0fe2a595d4232b5.js +23 -0
  87. package/apps/pwa/out/_next/static/chunks/752-90e3e7daad3d8e39.js +1 -0
  88. package/apps/pwa/out/_next/static/chunks/7524-bcd3d9928c6842d9.js +1 -0
  89. package/apps/pwa/out/_next/static/chunks/7549.9a4de3bf231cfc52.js +1 -0
  90. package/apps/pwa/out/_next/static/chunks/757-4fbaf50942b8c424.js +1 -0
  91. package/apps/pwa/out/_next/static/chunks/765.76ae970ceb597b5b.js +1 -0
  92. package/apps/pwa/out/_next/static/chunks/{7644.17e37ba6f1d4226e.js → 7867.e8725745ddd1d940.js} +4 -4
  93. package/apps/pwa/out/_next/static/chunks/7893-e444a1b0809cd1e4.js +1 -0
  94. package/apps/pwa/out/_next/static/chunks/7956-33748cabb3a05562.js +1 -0
  95. package/apps/pwa/out/_next/static/chunks/{0368f25d-ad84af92fefee68f.js → 7c5ed21f-f286708e57cf88f7.js} +1 -1
  96. package/apps/pwa/out/_next/static/chunks/8030-aa66b478b53dbfca.js +1 -0
  97. package/apps/pwa/out/_next/static/chunks/8051.c88c07dacbbc5f21.js +8 -0
  98. package/apps/pwa/out/_next/static/chunks/{359-2250789a2d3499e7.js → 8080-40d781e7704d3671.js} +1 -1
  99. package/apps/pwa/out/_next/static/chunks/8149.80e402d4345e8dae.js +77 -0
  100. package/apps/pwa/out/_next/static/chunks/8205.50a5268f4e12ba0b.js +1 -0
  101. package/apps/pwa/out/_next/static/chunks/8231.a128feaa6f8b6079.js +1 -0
  102. package/apps/pwa/out/_next/static/chunks/85.4ddb1dda2ea3ffa2.js +286 -0
  103. package/apps/pwa/out/_next/static/chunks/8537.26517a09e8247beb.js +1 -0
  104. package/apps/pwa/out/_next/static/chunks/8595-e9b7081ab773a61f.js +1 -0
  105. package/apps/pwa/out/_next/static/chunks/8821-30cc65a61a60951f.js +1 -0
  106. package/apps/pwa/out/_next/static/chunks/8905.b3385aadb7b133e6.js +79 -0
  107. package/apps/pwa/out/_next/static/chunks/8983.246bb3a1ac38f50f.js +1 -0
  108. package/apps/pwa/out/_next/static/chunks/{b2f6ba4d.fb56fdbbf798df33.js → 8c58d09b.e8724a299658d86f.js} +1 -1
  109. package/apps/pwa/out/_next/static/chunks/9072.18342f5941a1f3ec.js +1 -0
  110. package/apps/pwa/out/_next/static/chunks/9123.9df04866b2d6e00f.js +1 -0
  111. package/apps/pwa/out/_next/static/chunks/{1530.0e612369b6fd7ea0.js → 9151.a2c51e93f9156dae.js} +1 -1
  112. package/apps/pwa/out/_next/static/chunks/{4441-875b97f5821ed58a.js → 9175-7d383df15a82e2be.js} +1 -1
  113. package/apps/pwa/out/_next/static/chunks/9181-bf89c07ce5b8f599.js +1 -0
  114. package/apps/pwa/out/_next/static/chunks/920-429bbc4504b45f71.js +1 -0
  115. package/apps/pwa/out/_next/static/chunks/9207.625edf45d656151c.js +1 -0
  116. package/apps/pwa/out/_next/static/chunks/9378.d2575c6ffd6dd756.js +94 -0
  117. package/apps/pwa/out/_next/static/chunks/957.db5b5c4d32a35240.js +1 -0
  118. package/apps/pwa/out/_next/static/chunks/958.53a8dcf4729e6997.js +64 -0
  119. package/apps/pwa/out/_next/static/chunks/9647.8f0cd0898c592a29.js +1 -0
  120. package/apps/pwa/out/_next/static/chunks/9665-26abb02665704c2c.js +1 -0
  121. package/apps/pwa/out/_next/static/chunks/9703.e7d81b6faef1050a.js +1 -0
  122. package/apps/pwa/out/_next/static/chunks/9882-7a9164b3c2dacbe5.js +1 -0
  123. package/apps/pwa/out/_next/static/chunks/9998.b74e033efadecd10.js +1 -0
  124. package/apps/pwa/out/_next/static/chunks/app/_not-found/page-c604fb980a634d88.js +1 -0
  125. package/apps/pwa/out/_next/static/chunks/app/approvals/page-ec2d8a4979ca9075.js +1 -0
  126. package/apps/pwa/out/_next/static/chunks/app/autopilot/page-cb6add08ad3c7660.js +1 -0
  127. package/apps/pwa/out/_next/static/chunks/app/board/page-e2eaa321ec223fe6.js +1 -0
  128. package/apps/pwa/out/_next/static/chunks/app/botlab/page-5b8a09c475b5f844.js +1 -0
  129. package/apps/pwa/out/_next/static/chunks/app/bots/page-91a77daedfbac191.js +1 -0
  130. package/apps/pwa/out/_next/static/chunks/app/ceo/page-f37fc5e974bda39b.js +1 -0
  131. package/apps/pwa/out/_next/static/chunks/app/chat/page-91429a0b78415a94.js +1 -0
  132. package/apps/pwa/out/_next/static/chunks/app/consult/page-b95798b58263b910.js +1 -0
  133. package/apps/pwa/out/_next/static/chunks/app/control/page-763d53e175e17aa1.js +1 -0
  134. package/apps/pwa/out/_next/static/chunks/app/decisions/page-d55023204055b12f.js +1 -0
  135. package/apps/pwa/out/_next/static/chunks/app/design-check/page-89d2140d78abc810.js +1 -0
  136. package/apps/pwa/out/_next/static/chunks/app/editor/page-82dc069abfe27f55.js +1 -0
  137. package/apps/pwa/out/_next/static/chunks/app/exec/page-25d9eee7beb552c0.js +1 -0
  138. package/apps/pwa/out/_next/static/chunks/app/field/page-770b4594c713ee97.js +1 -0
  139. package/apps/pwa/out/_next/static/chunks/app/healthz/route-c604fb980a634d88.js +1 -0
  140. package/apps/pwa/out/_next/static/chunks/app/inside/page-ba8e0dcae4f83985.js +1 -0
  141. package/apps/pwa/out/_next/static/chunks/app/intake/page-5c112c6d7c33656e.js +1 -0
  142. package/apps/pwa/out/_next/static/chunks/app/layout-09788e1aa9a87db6.js +1 -0
  143. package/apps/pwa/out/_next/static/chunks/app/live/page-3337c6a1328c2674.js +1 -0
  144. package/apps/pwa/out/_next/static/chunks/app/live-run/page-89acd5d68c0bc560.js +1 -0
  145. package/apps/pwa/out/_next/static/chunks/app/loops/page-5c13e2c76371d797.js +1 -0
  146. package/apps/pwa/out/_next/static/chunks/app/market/page-653a9f18642825c6.js +1 -0
  147. package/apps/pwa/out/_next/static/chunks/app/missions/[id]/page-fe986fe79b107546.js +1 -0
  148. package/apps/pwa/out/_next/static/chunks/app/morning/{page-47c5d4db587266bd.js → page-1e5da297557d2354.js} +1 -1
  149. package/apps/pwa/out/_next/static/chunks/app/not-found-91ea9f5869a40943.js +1 -0
  150. package/apps/pwa/out/_next/static/chunks/app/observatory/page-7824e21b999962e2.js +1 -0
  151. package/apps/pwa/out/_next/static/chunks/app/ops/checklist/page-53d00a60cc75a922.js +1 -0
  152. package/apps/pwa/out/_next/static/chunks/app/ops/release/{page-1f5a60f70cb4dd0c.js → page-88a1edbff62eaf1d.js} +1 -1
  153. package/apps/pwa/out/_next/static/chunks/app/ops/seats/page-4e931248b3f9574b.js +1 -0
  154. package/apps/pwa/out/_next/static/chunks/app/outputs/{page-bac7dee94e5eae4a.js → page-443364c9e4a23b31.js} +1 -1
  155. package/apps/pwa/out/_next/static/chunks/app/page-b9af2ac1c4737ce8.js +1 -0
  156. package/apps/pwa/out/_next/static/chunks/app/reflection/page-25ab9c614c14129b.js +1 -0
  157. package/apps/pwa/out/_next/static/chunks/app/scheduler/page-dbcdcfac0a395a8a.js +1 -0
  158. package/apps/pwa/out/_next/static/chunks/app/sessions/page-bf1de6645089ec58.js +1 -0
  159. package/apps/pwa/out/_next/static/chunks/app/settings/devices/page-c4201761a5e839c9.js +1 -0
  160. package/apps/pwa/out/_next/static/chunks/app/settings/page-c304f469ea5d70e4.js +1 -0
  161. package/apps/pwa/out/_next/static/chunks/app/setup/done/page-8e5a238cf5e50c9c.js +1 -0
  162. package/apps/pwa/out/_next/static/chunks/app/setup/layout-c604fb980a634d88.js +1 -0
  163. package/apps/pwa/out/_next/static/chunks/app/setup/page-32b526069ee50b3c.js +1 -0
  164. package/apps/pwa/out/_next/static/chunks/app/share/page-fb9e639c107f5f72.js +1 -0
  165. package/apps/pwa/out/_next/static/chunks/app/showroom/page-84220c776608cedc.js +1 -0
  166. package/apps/pwa/out/_next/static/chunks/app/tasks/page-e475618cbfd5ca2b.js +1 -0
  167. package/apps/pwa/out/_next/static/chunks/app/term/{page-dc0a532f5b9196ec.js → page-ac2c1e6169cfce57.js} +1 -1
  168. package/apps/pwa/out/_next/static/chunks/app/today/page-fccd3020af2f8806.js +1 -0
  169. package/apps/pwa/out/_next/static/chunks/app/trace/page-9c0d7198ff7b5a91.js +1 -0
  170. package/apps/pwa/out/_next/static/chunks/app/vault/page-d54b1ec9b9c6430d.js +1 -0
  171. package/apps/pwa/out/_next/static/chunks/app/workflows/chat-ui/page-8c4bef1791d732ca.js +1 -0
  172. package/apps/pwa/out/_next/static/chunks/app/workflows/page-46fcc0b0bbc6fbfe.js +1 -0
  173. package/apps/pwa/out/_next/static/chunks/app/workspace/page-c1c80e345fa9d6f5.js +1 -0
  174. package/apps/pwa/out/_next/static/chunks/app/worktrees/page-7dfda00afd172f5b.js +1 -0
  175. package/apps/pwa/out/_next/static/chunks/{d06f9160.a3d9062f95de8ad7.js → d9815f84.4918f682a45a8502.js} +1 -1
  176. package/apps/pwa/out/_next/static/chunks/{cbe38a15.5a032598e39970c6.js → de8446d3.31b73eb239fecd7b.js} +1 -1
  177. package/apps/pwa/out/_next/static/chunks/f21fd540.63ac75328926ed30.js +1 -0
  178. package/apps/pwa/out/_next/static/chunks/framework-77fdcc873519a6cd.js +1 -0
  179. package/apps/pwa/out/_next/static/chunks/main-app-d0d620d2ce235713.js +1 -0
  180. package/apps/pwa/out/_next/static/chunks/main-e0ef79c79337ba90.js +1 -0
  181. package/apps/pwa/out/_next/static/chunks/pages/_app-84b1bc71e3f9ce6a.js +1 -0
  182. package/apps/pwa/out/_next/static/chunks/pages/_error-2acb61f1363128cb.js +1 -0
  183. package/apps/pwa/out/_next/static/chunks/webpack-462ff5727ceb7824.js +1 -0
  184. package/apps/pwa/out/_next/static/css/{b5d88eba78a3d7bf.css → be9019f696217521.css} +1 -1
  185. package/apps/pwa/out/approvals/index.html +1 -1
  186. package/apps/pwa/out/approvals/index.txt +23 -23
  187. package/apps/pwa/out/autopilot/index.html +1 -1
  188. package/apps/pwa/out/autopilot/index.txt +23 -23
  189. package/apps/pwa/out/board/index.html +1 -1
  190. package/apps/pwa/out/board/index.txt +23 -23
  191. package/apps/pwa/out/botlab/index.html +1 -1
  192. package/apps/pwa/out/botlab/index.txt +22 -22
  193. package/apps/pwa/out/bots/index.html +1 -1
  194. package/apps/pwa/out/bots/index.txt +22 -22
  195. package/apps/pwa/out/ceo/index.html +1 -1
  196. package/apps/pwa/out/ceo/index.txt +23 -23
  197. package/apps/pwa/out/chat/index.html +1 -1
  198. package/apps/pwa/out/chat/index.txt +22 -22
  199. package/apps/pwa/out/consult/index.html +1 -1
  200. package/apps/pwa/out/consult/index.txt +23 -23
  201. package/apps/pwa/out/control/index.html +1 -1
  202. package/apps/pwa/out/control/index.txt +23 -23
  203. package/apps/pwa/out/decisions/index.html +1 -1
  204. package/apps/pwa/out/decisions/index.txt +22 -22
  205. package/apps/pwa/out/design-check/index.html +1 -1
  206. package/apps/pwa/out/design-check/index.txt +23 -23
  207. package/apps/pwa/out/editor/index.html +1 -1
  208. package/apps/pwa/out/editor/index.txt +23 -23
  209. package/apps/pwa/out/exec/index.html +1 -1
  210. package/apps/pwa/out/exec/index.txt +23 -23
  211. package/apps/pwa/out/field/index.html +1 -1
  212. package/apps/pwa/out/field/index.txt +23 -23
  213. package/apps/pwa/out/healthz +1 -1
  214. package/apps/pwa/out/index.html +1 -1
  215. package/apps/pwa/out/index.txt +22 -22
  216. package/apps/pwa/out/inside/index.html +1 -1
  217. package/apps/pwa/out/inside/index.txt +22 -22
  218. package/apps/pwa/out/intake/index.html +1 -1
  219. package/apps/pwa/out/intake/index.txt +23 -23
  220. package/apps/pwa/out/live/index.html +1 -1
  221. package/apps/pwa/out/live/index.txt +23 -23
  222. package/apps/pwa/out/live-run/index.html +1 -1
  223. package/apps/pwa/out/live-run/index.txt +23 -23
  224. package/apps/pwa/out/loops/index.html +1 -1
  225. package/apps/pwa/out/loops/index.txt +22 -22
  226. package/apps/pwa/out/market/index.html +1 -1
  227. package/apps/pwa/out/market/index.txt +22 -22
  228. package/apps/pwa/out/missions/placeholder/index.html +1 -1
  229. package/apps/pwa/out/missions/placeholder/index.txt +22 -22
  230. package/apps/pwa/out/morning/index.html +1 -1
  231. package/apps/pwa/out/morning/index.txt +23 -23
  232. package/apps/pwa/out/observatory/index.html +1 -1
  233. package/apps/pwa/out/observatory/index.txt +23 -23
  234. package/apps/pwa/out/ops/checklist/index.html +1 -1
  235. package/apps/pwa/out/ops/checklist/index.txt +22 -22
  236. package/apps/pwa/out/ops/release/index.html +1 -1
  237. package/apps/pwa/out/ops/release/index.txt +22 -22
  238. package/apps/pwa/out/ops/seats/index.html +1 -1
  239. package/apps/pwa/out/ops/seats/index.txt +22 -22
  240. package/apps/pwa/out/outputs/index.html +1 -1
  241. package/apps/pwa/out/outputs/index.txt +22 -22
  242. package/apps/pwa/out/reflection/index.html +1 -1
  243. package/apps/pwa/out/reflection/index.txt +23 -23
  244. package/apps/pwa/out/scheduler/index.html +1 -1
  245. package/apps/pwa/out/scheduler/index.txt +23 -23
  246. package/apps/pwa/out/sessions/index.html +1 -1
  247. package/apps/pwa/out/sessions/index.txt +22 -22
  248. package/apps/pwa/out/settings/devices/index.html +1 -1
  249. package/apps/pwa/out/settings/devices/index.txt +23 -23
  250. package/apps/pwa/out/settings/index.html +1 -1
  251. package/apps/pwa/out/settings/index.txt +23 -23
  252. package/apps/pwa/out/setup/done/index.html +1 -1
  253. package/apps/pwa/out/setup/done/index.txt +23 -23
  254. package/apps/pwa/out/setup/index.html +1 -1
  255. package/apps/pwa/out/setup/index.txt +23 -23
  256. package/apps/pwa/out/share/index.html +1 -1
  257. package/apps/pwa/out/share/index.txt +23 -23
  258. package/apps/pwa/out/showroom/index.html +1 -1
  259. package/apps/pwa/out/showroom/index.txt +22 -22
  260. package/apps/pwa/out/tasks/index.html +1 -1
  261. package/apps/pwa/out/tasks/index.txt +23 -23
  262. package/apps/pwa/out/term/index.html +1 -1
  263. package/apps/pwa/out/term/index.txt +23 -23
  264. package/apps/pwa/out/today/index.html +1 -1
  265. package/apps/pwa/out/today/index.txt +23 -23
  266. package/apps/pwa/out/trace/index.html +1 -1
  267. package/apps/pwa/out/trace/index.txt +23 -23
  268. package/apps/pwa/out/vault/index.html +1 -1
  269. package/apps/pwa/out/vault/index.txt +23 -23
  270. package/apps/pwa/out/workflows/chat-ui/index.html +1 -1
  271. package/apps/pwa/out/workflows/chat-ui/index.txt +23 -23
  272. package/apps/pwa/out/workflows/index.html +1 -1
  273. package/apps/pwa/out/workflows/index.txt +23 -23
  274. package/apps/pwa/out/workspace/index.html +1 -1
  275. package/apps/pwa/out/workspace/index.txt +23 -23
  276. package/apps/pwa/out/worktrees/index.html +1 -1
  277. package/apps/pwa/out/worktrees/index.txt +23 -23
  278. package/docs/goal-context/05-authoring-lessons.jsonl +47 -0
  279. package/docs/goal-context/README.md +3 -0
  280. package/graphs/default-loop.yaml +6 -1
  281. package/graphs/drafts/recipes.yaml +27 -7
  282. package/graphs/implement-loop.yaml +24 -0
  283. package/graphs/release/recipes.yaml +6 -0
  284. package/graphs/release/release-loop.yaml +17 -4
  285. package/graphs/wizard/recipes.yaml +44 -0
  286. package/graphs/wizard/wizard-loop.yaml +44 -0
  287. package/graphs/work/draft-close.yaml +54 -0
  288. package/graphs/work/green-close.yaml +37 -0
  289. package/graphs/work/recipes.yaml +46 -1
  290. package/graphs/work/research-report.yaml +2 -0
  291. package/graphs/work/run-research.yaml +35 -0
  292. package/package.json +1 -1
  293. package/scripts/__fixtures__/authoring-paths-10x3.json +32 -0
  294. package/scripts/boundary-proof-mapping-audit.ts +88 -0
  295. package/scripts/ci-typecheck-changed.ts +139 -5
  296. package/scripts/codex-fallback-live-probe.ts +17 -15
  297. package/scripts/coord-role-pack.ts +1 -1
  298. package/scripts/first10-gate.ts +416 -0
  299. package/scripts/fleet/node-setup.sh +32 -2
  300. package/scripts/fleet/run-light-worker.sh +9 -0
  301. package/scripts/fleet/wsl-node-setup.sh +432 -0
  302. package/scripts/gate-0226-failure-census.ts +507 -0
  303. package/scripts/goals/authoring-metrics.ts +258 -0
  304. package/scripts/graph-units/draft-close-node.ts +222 -0
  305. package/scripts/hook-order-sweep.ts +7 -4
  306. package/scripts/land-global-checks.ts +69 -1
  307. package/scripts/measure-nl-routing-corpus.ts +207 -2
  308. package/scripts/release-loop/docs-node.ts +344 -8
  309. package/scripts/release-loop/gate-closure.ts +48 -0
  310. package/scripts/release-loop/gate-diff.ts +2 -1
  311. package/scripts/release-loop/gate-node.ts +249 -53
  312. package/scripts/release-loop/known-issues-node.ts +6 -4
  313. package/scripts/release-loop/node-verdict.ts +2 -0
  314. package/scripts/release-loop/notes-repair.ts +216 -0
  315. package/scripts/release-loop/prepare-node.ts +61 -5
  316. package/scripts/release-loop/resume-cap.ts +14 -34
  317. package/scripts/release-loop/resume-release.ts +151 -15
  318. package/scripts/release-loop/resume-test-traffic.ts +10 -0
  319. package/scripts/release-loop/traffic-node.ts +59 -0
  320. package/scripts/release-loop/traffic-transition.ts +159 -0
  321. package/scripts/release-loop/version-node.ts +81 -12
  322. package/scripts/rhythm/daily.ts +137 -3
  323. package/scripts/train/green-leg.ts +176 -0
  324. package/scripts/tui-continue-real-evidence.ts +47 -0
  325. package/scripts/ux-sim.ts +53 -0
  326. package/skills/README.md +1 -0
  327. package/src/acp/client.ts +31 -5
  328. package/src/acp/core-turn-bridge.ts +54 -6
  329. package/src/acp/stderr-summary.ts +49 -0
  330. package/src/agent/delegate-hint.ts +16 -0
  331. package/src/agent/monad-agent-turn.ts +1 -0
  332. package/src/agent/runner.ts +82 -2
  333. package/src/agent/task-notification.ts +56 -10
  334. package/src/agent/terminal-surface.ts +217 -0
  335. package/src/agent/types.ts +4 -0
  336. package/src/agent-substrate/pr-reviewer.ts +64 -4
  337. package/src/agent-substrate/review-intent.ts +29 -2
  338. package/src/agent-substrate/review-observation.ts +3 -0
  339. package/src/agent-substrate/self-review-cli.ts +490 -26
  340. package/src/autopilot/lineage/sources.ts +1 -1
  341. package/src/autopilot/mission-codebase-gate.ts +141 -12
  342. package/src/autopilot/pr-manager.ts +89 -18
  343. package/src/boot/daemon-runtime.ts +35 -3
  344. package/src/boot/daemon-tools/pty-shell.ts +2 -1
  345. package/src/boot/daemon-tools/self-implement.ts +1 -0
  346. package/src/budget/run-usage-rollup.ts +12 -7
  347. package/src/budget/unified-usage.ts +20 -0
  348. package/src/budget/usage-outcomes.ts +8 -4
  349. package/src/capture/tui-self-report.ts +132 -1
  350. package/src/chat/goal-continue-verdict.ts +41 -0
  351. package/src/chat/index.ts +30 -4
  352. package/src/chat/internal-turn-origin.ts +1 -0
  353. package/src/chat/paste-fold.ts +86 -0
  354. package/src/chat/tool-render/block.ts +32 -0
  355. package/src/chat/tool-render/dispatch.ts +2 -20
  356. package/src/chat/tool-render/result-text.ts +98 -0
  357. package/src/chat/turn-typeahead.ts +70 -7
  358. package/src/cli/autopilot-cli.ts +24 -9
  359. package/src/cli/config-audit.ts +119 -0
  360. package/src/cli/decisions-cli.ts +7 -4
  361. package/src/cli/doctor-cli.ts +137 -6
  362. package/src/cli/guardian-cli.ts +10 -0
  363. package/src/cli/herdr-cli.ts +34 -0
  364. package/src/cli/light-entry-route.ts +6 -3
  365. package/src/cli/log-event-names.ts +2 -0
  366. package/src/cli/logs-cli.ts +357 -2
  367. package/src/cli/make-cli.ts +247 -11
  368. package/src/cli/memory-cli.ts +30 -1
  369. package/src/cli/msg-cli.ts +132 -14
  370. package/src/cli/pr-cli.ts +29 -16
  371. package/src/cli/pr-granularity.ts +5 -3
  372. package/src/cli/pr-land-base-read.ts +11 -2
  373. package/src/cli/pr-land-heavy-remote.ts +6 -3
  374. package/src/cli/pr-land-overlap-evidence.ts +23 -4
  375. package/src/cli/pr-land-recovery.ts +117 -1
  376. package/src/cli/pty-takeover-cli.ts +8 -7
  377. package/src/cli/release-checklist-read-cli.ts +109 -4
  378. package/src/cli/release-cli.ts +64 -15
  379. package/src/cli/release-single-flight.ts +1 -1
  380. package/src/cli/self-update.ts +23 -5
  381. package/src/cli/self-utterances-cli.ts +13 -16
  382. package/src/cli/tasks-card-show.ts +162 -0
  383. package/src/cli/tasks-cli.ts +868 -352
  384. package/src/cli/tasks-read-cli.ts +197 -0
  385. package/src/cli/usage-cli.ts +12 -10
  386. package/src/context-bus/claude-memory-import.ts +99 -0
  387. package/src/context-bus/long-term-memory.ts +125 -0
  388. package/src/core-turn/run-core-turn.ts +4 -2
  389. package/src/core-turn/run-goal-loop.ts +76 -16
  390. package/src/core-turn/types.ts +8 -1
  391. package/src/dashboard/chat/acp-chat.ts +9 -0
  392. package/src/dashboard/context/keys.ts +8 -31
  393. package/src/dashboard/index.ts +299 -62
  394. package/src/dashboard/input/agent-wake.ts +50 -1
  395. package/src/dashboard/input/chat-main-acp-dispatch.ts +21 -1
  396. package/src/dashboard/input/chat-main-plain-turn-runtime.ts +146 -3
  397. package/src/dashboard/input/chat-main-slash-command.ts +4 -2
  398. package/src/dashboard/input/goal-continue.ts +210 -0
  399. package/src/dashboard/input/goal-interim.ts +2 -0
  400. package/src/dashboard/input/internal-turn.ts +2 -8
  401. package/src/dashboard/input/seat-autowake.ts +9 -7
  402. package/src/dashboard/input/turn-autoheal.ts +52 -0
  403. package/src/dashboard/replay-preview.ts +25 -0
  404. package/src/dashboard/seat-boot-preamble.ts +132 -5
  405. package/src/dashboard/slash-runtime/chat-persona.ts +65 -8
  406. package/src/dashboard/slash-runtime/dashboard-handlers.ts +20 -10
  407. package/src/dashboard/slash-runtime/model-choices.ts +15 -0
  408. package/src/dashboard/stale-install-check.ts +3 -99
  409. package/src/dashboard/synchronized-frame-output.ts +74 -0
  410. package/src/debug/batch-queue.ts +119 -0
  411. package/src/debug/tui-log-tag.ts +67 -0
  412. package/src/display/agent-surface.ts +7 -0
  413. package/src/display/coordinator.ts +45 -12
  414. package/src/display/resize-listener.ts +41 -20
  415. package/src/display/synchronized-output-region.ts +60 -0
  416. package/src/domains/standalone-log-sink.ts +15 -2
  417. package/src/domains/surface-events.ts +80 -1
  418. package/src/esc-abort-gate.ts +69 -0
  419. package/src/exec-requests/planner.ts +37 -2
  420. package/src/execution-loop/launch-gate.ts +4 -3
  421. package/src/git-fs/cli-stderr.ts +45 -0
  422. package/src/git-fs/gh-cli.ts +6 -3
  423. package/src/git-fs/git-cli.ts +11 -5
  424. package/src/git-fs/worktree.ts +95 -1
  425. package/src/graph-runner/graph-cli.ts +44 -2
  426. package/src/graph-runner/graph-run-api.ts +3 -2
  427. package/src/graph-runner/runner.ts +37 -16
  428. package/src/graph-wizard/generate.ts +131 -4
  429. package/src/graph-wizard/steps.ts +15 -0
  430. package/src/grounding/proactive-ground.ts +86 -0
  431. package/src/harness/control-inbox.ts +49 -1
  432. package/src/harness/harness-cli-command.ts +230 -40
  433. package/src/harness/harness-incidents.ts +52 -1
  434. package/src/harness/pod-control-send.ts +33 -5
  435. package/src/harness/review-adapter.ts +26 -6
  436. package/src/harness/self-send-remote.ts +69 -0
  437. package/src/harness/self-send-routing-guard.ts +6 -0
  438. package/src/harness/self-send-target.ts +4 -3
  439. package/src/index.ts +443 -25
  440. package/src/input-core/context-key-runtime.ts +21 -0
  441. package/src/instance/test-write-guard-real-transport.fixture.ts +52 -0
  442. package/src/light-cli.ts +6 -1
  443. package/src/llm/route-decision.ts +13 -0
  444. package/src/llm-tool-name.ts +37 -0
  445. package/src/llm-tool-schema.ts +35 -0
  446. package/src/llm-wellformed.ts +70 -0
  447. package/src/llm.ts +158 -15
  448. package/src/loops/checker.ts +100 -0
  449. package/src/loops/consensus.ts +26 -2
  450. package/src/loops/loop-cli.ts +9 -4
  451. package/src/loops/msg-wake.ts +35 -39
  452. package/src/loops/orchestrator/anomaly-cluster.ts +243 -0
  453. package/src/loops/orchestrator/inbox.ts +59 -11
  454. package/src/loops/orchestrator/knowhow-pack.ts +364 -0
  455. package/src/loops/orchestrator/tick.ts +54 -5
  456. package/src/maturity/feature-maturity.ts +1 -1
  457. package/src/model-tier/llm-tier-map.ts +12 -17
  458. package/src/models/prompts.ts +17 -2
  459. package/src/msg/msg-post-office.ts +116 -0
  460. package/src/msg/msg-store.ts +17 -0
  461. package/src/mss/logging/log-store.ts +79 -22
  462. package/src/native-tool-catalog.ts +1 -1
  463. package/src/nexus/api/decisions-route.ts +38 -18
  464. package/src/nexus/api/graph-wizard-api.ts +46 -3
  465. package/src/nexus/api/grid.ts +24 -4
  466. package/src/nexus/api/http-server.ts +1 -1
  467. package/src/nexus/api/ops-api.ts +14 -6
  468. package/src/nexus/boot/register-mcp-clients.ts +263 -38
  469. package/src/nexus/onboarding/first-boot-wizard.ts +56 -8
  470. package/src/nexus/state/state.ts +7 -1
  471. package/src/oauth/codex-account-store.ts +34 -1
  472. package/src/onboarding/first-run.ts +37 -6
  473. package/src/onboarding/web-first.ts +43 -11
  474. package/src/ops/loops-map.ts +46 -0
  475. package/src/ops/overview-cache.ts +22 -4
  476. package/src/ops/overview-collect.ts +12 -6
  477. package/src/ops/overview.ts +44 -8
  478. package/src/persona/loader.ts +11 -0
  479. package/src/persona/types.ts +8 -0
  480. package/src/policy/llm-policy.ts +3 -1
  481. package/src/prompt-enhance/enhance.ts +4 -4
  482. package/src/prompt-library/session-guidance.ts +14 -0
  483. package/src/provider-summary.ts +8 -0
  484. package/src/pty-shell/availability.ts +7 -0
  485. package/src/pty-shell/herdr-agent-report.ts +155 -37
  486. package/src/pty-shell/herdr-prompt.ts +266 -0
  487. package/src/pty-shell/herdr-prune-stale.ts +17 -0
  488. package/src/pty-shell/herdr-sequence-lease.ts +60 -0
  489. package/src/pty-shell/pty-control-ipc.ts +327 -15
  490. package/src/pty-shell/pty-special-keys.ts +42 -2
  491. package/src/pty-shell/registry.ts +25 -15
  492. package/src/pty-shell/stale-install-check.ts +99 -0
  493. package/src/pty-shell/tui-run-state.ts +249 -3
  494. package/src/release-loop/auto-start.ts +20 -2
  495. package/src/release-loop/checklist.ts +126 -9
  496. package/src/release-loop/feature-store.ts +9 -9
  497. package/src/release-loop/landed-but-yellow.ts +93 -12
  498. package/src/release-loop/rehearsal.ts +36 -20
  499. package/src/repl/index.ts +27 -1
  500. package/src/seat-loop/knowhow-lint.ts +1 -1
  501. package/src/seat-loop/seat-report.ts +1 -0
  502. package/src/self-dev/ask-launch-flow.ts +86 -10
  503. package/src/self-dev/decompose-proposal.ts +183 -20
  504. package/src/self-dev/decompose.ts +61 -0
  505. package/src/self-dev/dev-cli.ts +37 -3
  506. package/src/self-dev/dev-pipeline.ts +37 -9
  507. package/src/self-dev/draft-sweep.ts +241 -16
  508. package/src/self-dev/draft-triage-rules.ts +50 -5
  509. package/src/self-dev/glm-credential-guard.ts +77 -0
  510. package/src/self-dev/graph-journey-nodes.ts +1 -0
  511. package/src/self-dev/graph-journey-route.ts +12 -2
  512. package/src/self-dev/orchestrate-cli.ts +68 -3
  513. package/src/self-dev/orchestrate.ts +116 -17
  514. package/src/self-dev/review-provider-fallback.ts +45 -7
  515. package/src/self-dev/run-supervisor.ts +55 -2
  516. package/src/self-dev/run-types.ts +1 -1
  517. package/src/self-dev/shard-plan.ts +48 -0
  518. package/src/self-dev/shard-run.ts +50 -3
  519. package/src/self-health/autoheal.ts +153 -0
  520. package/src/self-health/signatures.ts +6 -0
  521. package/src/self-implement/device-first.ts +116 -0
  522. package/src/self-implement/doctor-visit.ts +322 -1
  523. package/src/self-implement/evidence-command-budget.ts +80 -0
  524. package/src/self-implement/gate-artifacts.ts +6 -2
  525. package/src/self-implement/gate-baseline.ts +64 -1
  526. package/src/self-implement/gate-cli.ts +93 -9
  527. package/src/self-implement/gate-remote.ts +28 -4
  528. package/src/self-implement/gate-scope.ts +13 -1
  529. package/src/self-implement/goal-author-cli.ts +1 -0
  530. package/src/self-implement/goal-author-decompose.ts +265 -4
  531. package/src/self-implement/goal-author.ts +366 -26
  532. package/src/self-implement/goal-elaborate.ts +176 -22
  533. package/src/self-implement/goal-refine.ts +3 -0
  534. package/src/self-implement/goal-supervisor-fill.ts +75 -26
  535. package/src/self-implement/graph-variant.ts +40 -6
  536. package/src/self-implement/headless-elanous-driver.ts +19 -3
  537. package/src/self-implement/importer-test-index.ts +215 -2
  538. package/src/self-implement/knowhow-pack.ts +5 -5
  539. package/src/self-implement/off-diff-evidence.ts +58 -6
  540. package/src/self-implement/orchestrator.ts +536 -42
  541. package/src/self-implement/pod-warm-pool-profile.ts +1 -0
  542. package/src/self-implement/pwa-import-graph.ts +1 -1
  543. package/src/self-implement/review-round-brief.ts +300 -0
  544. package/src/self-implement/rework-policy.ts +44 -0
  545. package/src/self-implement/run-ledger.ts +278 -6
  546. package/src/self-implement/run-stop.ts +1 -1
  547. package/src/self-implement/run-ttl.ts +38 -24
  548. package/src/self-implement/running-runs.ts +17 -3
  549. package/src/self-implement/scope-adjacency.ts +3 -1
  550. package/src/self-implement/seams.ts +72 -10
  551. package/src/self-implement/stop-autoheal.ts +1 -0
  552. package/src/self-implement/test-seams.ts +13 -1
  553. package/src/self-implement/train-reach-grouping.ts +8 -2
  554. package/src/self-implement/wiring-check.ts +358 -0
  555. package/src/session/chat.ts +7 -1
  556. package/src/session/id-prefix.ts +60 -0
  557. package/src/session/index.ts +4 -0
  558. package/src/session-runtime/index.ts +9 -1
  559. package/src/shell-env-bootstrap.ts +11 -4
  560. package/src/skills/runner.ts +4 -2
  561. package/src/skills/tools/agent.ts +290 -48
  562. package/src/skills/tools/pty.ts +5 -0
  563. package/src/skills/tools/schedule-wakeup.ts +23 -4
  564. package/src/skills/tools/shell.ts +61 -6
  565. package/src/skills/tools/terminal-modal-inject.ts +1 -2
  566. package/src/skills/tools/terminal-modal.ts +10 -8
  567. package/src/skills/url-router.ts +41 -1
  568. package/src/smart-wizard/run.ts +66 -0
  569. package/src/status/bar.ts +34 -6
  570. package/src/status/metrics.ts +12 -1
  571. package/src/status/status-provider-info.ts +37 -6
  572. package/src/steward/rejudge-tick.ts +22 -7
  573. package/src/steward/resync-tick.ts +31 -4
  574. package/src/steward/ta-repair-event-collect.ts +17 -6
  575. package/src/task-agent/actions.ts +202 -5
  576. package/src/task-agent/boundary-proof-mapping.ts +12 -0
  577. package/src/task-agent/boundary-proof-producer.ts +147 -0
  578. package/src/task-agent/completion-evidence.ts +2 -1
  579. package/src/task-agent/green-close-recipe.ts +239 -0
  580. package/src/task-agent/green-sweep.ts +64 -10
  581. package/src/task-agent/land-queue.ts +21 -8
  582. package/src/task-agent/live-moves.ts +70 -9
  583. package/src/task-agent/map-host-adapter.ts +134 -0
  584. package/src/task-agent/map-reduce.ts +158 -0
  585. package/src/task-agent/map-run-ledger.ts +226 -0
  586. package/src/task-agent/mission.ts +30 -0
  587. package/src/task-agent/parent-host.ts +21 -11
  588. package/src/task-agent/rejudge-on-head.ts +87 -5
  589. package/src/task-agent/repair-cycle.ts +179 -32
  590. package/src/task-agent/repair-next-move.ts +42 -4
  591. package/src/task-agent/repair-outcomes.ts +29 -0
  592. package/src/task-agent/repair-worker.ts +14 -4
  593. package/src/task-agent/review-prior-fix.ts +12 -2
  594. package/src/task-agent/shadow.ts +229 -8
  595. package/src/task-agent/task-card-prefix.ts +2 -0
  596. package/src/task-agent/task-hand.ts +630 -30
  597. package/src/task-agent/task-parent-role-llm.ts +45 -0
  598. package/src/task-agent/tier-split.ts +80 -10
  599. package/src/task-agent/work-order.ts +53 -2
  600. package/src/task-orchestrator/dispatcher.ts +46 -1
  601. package/src/task-orchestrator/generator-prompt.ts +6 -0
  602. package/src/task-orchestrator/surfaces/pod-account-broker.ts +9 -0
  603. package/src/task-orchestrator/surfaces/pod-artifact-return.ts +16 -6
  604. package/src/task-orchestrator/surfaces/pod-child-reuse.ts +146 -0
  605. package/src/task-orchestrator/surfaces/pod-command-job.ts +86 -5
  606. package/src/task-orchestrator/surfaces/pod-failure-reason.ts +215 -3
  607. package/src/task-orchestrator/surfaces/pod-launch-history.ts +133 -0
  608. package/src/task-orchestrator/surfaces/pod-ledger-collect.ts +8 -6
  609. package/src/task-orchestrator/surfaces/pod-ledger-events.ts +97 -0
  610. package/src/task-orchestrator/surfaces/pod-manifest-test-normalize.ts +11 -0
  611. package/src/task-orchestrator/surfaces/pod-pool.ts +126 -8
  612. package/src/task-orchestrator/surfaces/pod-provenance.ts +8 -2
  613. package/src/task-orchestrator/surfaces/pod-repair-commit.ts +18 -3
  614. package/src/task-orchestrator/surfaces/pod-si-warm-entry.ts +16 -0
  615. package/src/task-orchestrator/surfaces/pod-si-warm-host.ts +224 -0
  616. package/src/task-orchestrator/surfaces/pod-si-warm-protocol.ts +201 -0
  617. package/src/task-orchestrator/surfaces/pod-si-warm-provider.ts +444 -0
  618. package/src/task-orchestrator/surfaces/pod-si-warm-runner.ts +387 -0
  619. package/src/task-orchestrator/surfaces/pod-si-warm-transport.ts +157 -0
  620. package/src/task-orchestrator/surfaces/pod-warm-worker-protocol.ts +4 -0
  621. package/src/task-orchestrator/surfaces/pod-warm-worker-provider.ts +491 -36
  622. package/src/task-orchestrator/surfaces/pod-warm-worker-runtime.ts +3 -0
  623. package/src/task-orchestrator/surfaces/self-implement-pod.ts +612 -54
  624. package/src/task-orchestrator/surfaces/self-implement.ts +46 -2
  625. package/src/testing/linux-env.ts +177 -0
  626. package/src/tool-runtime/index.ts +15 -2
  627. package/src/tool-runtime/mcp-proxy-bootstrap.ts +29 -0
  628. package/src/tty-foreground.ts +155 -0
  629. package/src/tui/chat/goal-interim.ts +177 -0
  630. package/src/tui/chat/log-view.ts +205 -18
  631. package/src/tui/chat/self-health-status.ts +232 -0
  632. package/src/tui/entry.ts +623 -80
  633. package/src/tui/input/at-picker.ts +55 -0
  634. package/src/tui/input/composer.ts +8 -1
  635. package/src/tui/slash/compact-command.ts +7 -0
  636. package/src/tui/slash/compact.ts +1 -7
  637. package/src/tui/slash/resume.ts +98 -0
  638. package/src/tui/slash/signals.ts +114 -0
  639. package/src/tui/slash/term-next.ts +71 -0
  640. package/src/tui-client/local-chat-turn.ts +49 -5
  641. package/src/tui-client/next-dashboard-runtime.ts +8 -0
  642. package/src/tui-client/next-loop-command.ts +70 -0
  643. package/src/tui-client/next-wakeup.ts +191 -0
  644. package/src/tui.ts +37 -0
  645. package/src/ui/modal-adapter.ts +2 -2
  646. package/src/user-config.ts +19 -1
  647. package/src/ux-sim/boot-daemon-tools-pty-shell-device.ts +136 -0
  648. package/src/ux-sim/classic-tui-seat-scenarios.ts +670 -0
  649. package/src/ux-sim/cli-config-audit-device.ts +121 -0
  650. package/src/ux-sim/dashboard-event-loop-stall-monitor-device.ts +238 -0
  651. package/src/ux-sim/event-monkey.ts +3 -2
  652. package/src/ux-sim/fake-bin.ts +45 -0
  653. package/src/ux-sim/fake-gh.ts +174 -0
  654. package/src/ux-sim/fake-herdr.ts +238 -0
  655. package/src/ux-sim/fake-kubectl.ts +142 -0
  656. package/src/ux-sim/fake-llm.ts +116 -6
  657. package/src/ux-sim/fault-glm-no-credential.ts +116 -0
  658. package/src/ux-sim/fault-nextmove-dispatch.ts +102 -1
  659. package/src/ux-sim/fault-scope-escape-lift.ts +33 -6
  660. package/src/ux-sim/fault-tui-400-autoheal.ts +297 -0
  661. package/src/ux-sim/goal-device.ts +619 -0
  662. package/src/ux-sim/in-process-cli.ts +22 -5
  663. package/src/ux-sim/mock-authoring-first-run-child.ts +35 -0
  664. package/src/ux-sim/mock-authoring-first-run.ts +97 -0
  665. package/src/ux-sim/mock-seat-pty-frame-child.ts +29 -0
  666. package/src/ux-sim/mock-seat-pty-frame.ts +297 -0
  667. package/src/ux-sim/mock-seat-pty-sequence-child.ts +21 -0
  668. package/src/ux-sim/mock-seat-pty-sequence.ts +206 -0
  669. package/src/ux-sim/next-tui-seat-scenarios.ts +749 -0
  670. package/src/ux-sim/onboarding-first-run-device.ts +269 -0
  671. package/src/ux-sim/pty-key-modifiers-device.ts +85 -0
  672. package/src/ux-sim/resume-picker-device.ts +173 -0
  673. package/src/ux-sim/session-id-seed.ts +60 -0
  674. package/src/ux-sim/skills-tools-shell-device.ts +156 -0
  675. package/src/ux-sim/subagent-tools-device.ts +81 -0
  676. package/src/ux-sim/task-agent-parent-host-device.ts +264 -0
  677. package/src/ux-sim/task-agent-rejudge-on-head-device.ts +114 -0
  678. package/src/ux-sim/task-orchestrator-surfaces-self-implement-pod-device.ts +250 -0
  679. package/src/ux-sim/tty-foreground-steal-child.ts +21 -0
  680. package/src/version/packed-revision.json +1 -1
  681. package/apps/pwa/out/_next/static/chunks/1540.af38731fa7c4a3e0.js +0 -41
  682. package/apps/pwa/out/_next/static/chunks/1674.2a65fd5668e1cc5f.js +0 -1
  683. package/apps/pwa/out/_next/static/chunks/1850.f2b470ba5a471da0.js +0 -24
  684. package/apps/pwa/out/_next/static/chunks/193.62da94cd0b88323b.js +0 -74
  685. package/apps/pwa/out/_next/static/chunks/1975.260f6d249fac5f7c.js +0 -1
  686. package/apps/pwa/out/_next/static/chunks/1982-67cd8dfe8682325f.js +0 -1
  687. package/apps/pwa/out/_next/static/chunks/1993-c0007b7ad0c0ef41.js +0 -1
  688. package/apps/pwa/out/_next/static/chunks/1999-bb415351c8a2846c.js +0 -1
  689. package/apps/pwa/out/_next/static/chunks/1c735de4.f993a30bbd3c57c4.js +0 -1
  690. package/apps/pwa/out/_next/static/chunks/2085.8f950b4bda1cbbc7.js +0 -1
  691. package/apps/pwa/out/_next/static/chunks/2159-6179a961376956b9.js +0 -1
  692. package/apps/pwa/out/_next/static/chunks/216.b5c2a421aa1d28a5.js +0 -1
  693. package/apps/pwa/out/_next/static/chunks/2251.49fbe369f74c372c.js +0 -148
  694. package/apps/pwa/out/_next/static/chunks/2286-2939577360d3dcc0.js +0 -1
  695. package/apps/pwa/out/_next/static/chunks/2625.5d870aa999f33db1.js +0 -34
  696. package/apps/pwa/out/_next/static/chunks/2668.34d21539e62bf111.js +0 -77
  697. package/apps/pwa/out/_next/static/chunks/2930.d0edb4f108787ef7.js +0 -1
  698. package/apps/pwa/out/_next/static/chunks/2973.77318e7d85f59477.js +0 -62
  699. package/apps/pwa/out/_next/static/chunks/3103.0df8da390948bb84.js +0 -1
  700. package/apps/pwa/out/_next/static/chunks/3123.2bee9ba15d320bd2.js +0 -90
  701. package/apps/pwa/out/_next/static/chunks/3162-6cf652bf7124d8cf.js +0 -1
  702. package/apps/pwa/out/_next/static/chunks/3577-7340009f7007a795.js +0 -1
  703. package/apps/pwa/out/_next/static/chunks/3589.5444a06bcf6e775c.js +0 -1
  704. package/apps/pwa/out/_next/static/chunks/3618.f514792d6c59d7fd.js +0 -36
  705. package/apps/pwa/out/_next/static/chunks/3669.343f9119aa276001.js +0 -1
  706. package/apps/pwa/out/_next/static/chunks/3677-4215f826f6aa68e5.js +0 -1
  707. package/apps/pwa/out/_next/static/chunks/3736.c2efad489604cc3b.js +0 -79
  708. package/apps/pwa/out/_next/static/chunks/3817.f9aeab2bb6675d73.js +0 -1
  709. package/apps/pwa/out/_next/static/chunks/4182-0b9b1251c29cc0cf.js +0 -1
  710. package/apps/pwa/out/_next/static/chunks/4346.8601952e73bf5803.js +0 -1
  711. package/apps/pwa/out/_next/static/chunks/4582.bd68683c076649e3.js +0 -286
  712. package/apps/pwa/out/_next/static/chunks/4605-6e623f55aec77422.js +0 -1
  713. package/apps/pwa/out/_next/static/chunks/4607.5cc27468628eb4bf.js +0 -1
  714. package/apps/pwa/out/_next/static/chunks/4627.f07508b3936fd6c0.js +0 -24
  715. package/apps/pwa/out/_next/static/chunks/4747-c22262c093e46807.js +0 -1
  716. package/apps/pwa/out/_next/static/chunks/4775-178215aed0daba61.js +0 -1
  717. package/apps/pwa/out/_next/static/chunks/4815-6ffb8c3c991cc45d.js +0 -1
  718. package/apps/pwa/out/_next/static/chunks/4834-beca8b47ad29a898.js +0 -1
  719. package/apps/pwa/out/_next/static/chunks/5023-fb4802b6d2492b02.js +0 -1
  720. package/apps/pwa/out/_next/static/chunks/5154.a118f3957ed14e36.js +0 -1
  721. package/apps/pwa/out/_next/static/chunks/5210-a2e0015e3d4d5d9c.js +0 -1
  722. package/apps/pwa/out/_next/static/chunks/5356.84ac712cc15928bf.js +0 -1
  723. package/apps/pwa/out/_next/static/chunks/5401.22352141b6fd336e.js +0 -23
  724. package/apps/pwa/out/_next/static/chunks/5637.281e5dec4ea6ecf1.js +0 -94
  725. package/apps/pwa/out/_next/static/chunks/5662.02eaa029af05ad46.js +0 -1
  726. package/apps/pwa/out/_next/static/chunks/56d372f2.681ab4ec4c998fae.js +0 -1
  727. package/apps/pwa/out/_next/static/chunks/5760.22456f433c6f42c0.js +0 -1
  728. package/apps/pwa/out/_next/static/chunks/5852.db1f7449f4f74612.js +0 -287
  729. package/apps/pwa/out/_next/static/chunks/5891-0f11a7d7362a9072.js +0 -1
  730. package/apps/pwa/out/_next/static/chunks/5943.264d14a44ca32513.js +0 -1
  731. package/apps/pwa/out/_next/static/chunks/604-1b3c39df083c02aa.js +0 -1
  732. package/apps/pwa/out/_next/static/chunks/6121-5f97072330738caf.js +0 -1
  733. package/apps/pwa/out/_next/static/chunks/6193.07d8ca5af4b09086.js +0 -1
  734. package/apps/pwa/out/_next/static/chunks/6203-b3fea3a60d69ff14.js +0 -1
  735. package/apps/pwa/out/_next/static/chunks/6286.d638fb5953e2e757.js +0 -8
  736. package/apps/pwa/out/_next/static/chunks/630.fe5a46428d63b013.js +0 -1
  737. package/apps/pwa/out/_next/static/chunks/6301.ae0245f507e4395e.js +0 -1
  738. package/apps/pwa/out/_next/static/chunks/6673.fbbe5699f6ea5991.js +0 -27
  739. package/apps/pwa/out/_next/static/chunks/6777-f6d301efb5de828d.js +0 -1
  740. package/apps/pwa/out/_next/static/chunks/6786.423f24c88de034c7.js +0 -93
  741. package/apps/pwa/out/_next/static/chunks/6854-cef64a948c5e122d.js +0 -1
  742. package/apps/pwa/out/_next/static/chunks/6b89c8bd.24df687a820500b3.js +0 -1
  743. package/apps/pwa/out/_next/static/chunks/7037-fe27f001db30d323.js +0 -1
  744. package/apps/pwa/out/_next/static/chunks/7080.2d826860534fd88e.js +0 -1
  745. package/apps/pwa/out/_next/static/chunks/7118.8731be28c3ebb14b.js +0 -1
  746. package/apps/pwa/out/_next/static/chunks/7196.44241bc1df3e26fe.js +0 -149
  747. package/apps/pwa/out/_next/static/chunks/7235.c7c4e6cb5c693c2d.js +0 -104
  748. package/apps/pwa/out/_next/static/chunks/7706-58bfb1546637f217.js +0 -1
  749. package/apps/pwa/out/_next/static/chunks/7839.5b91455338c9fd3f.js +0 -1
  750. package/apps/pwa/out/_next/static/chunks/7857-31f13ee96f4011aa.js +0 -1
  751. package/apps/pwa/out/_next/static/chunks/81.f74cb60312fe4001.js +0 -1
  752. package/apps/pwa/out/_next/static/chunks/8219.baa715d1deee80e2.js +0 -1
  753. package/apps/pwa/out/_next/static/chunks/8256.e3ac8421a71f82f4.js +0 -1
  754. package/apps/pwa/out/_next/static/chunks/8310-444a6a895c402f12.js +0 -1
  755. package/apps/pwa/out/_next/static/chunks/8423.f7dda8aca4fcaae5.js +0 -1
  756. package/apps/pwa/out/_next/static/chunks/8437-8d5492094b166cfa.js +0 -1
  757. package/apps/pwa/out/_next/static/chunks/8496.75649af8652c74f4.js +0 -226
  758. package/apps/pwa/out/_next/static/chunks/8576.65bb654b524f3614.js +0 -1
  759. package/apps/pwa/out/_next/static/chunks/8609.558ce2f8f9aea2be.js +0 -64
  760. package/apps/pwa/out/_next/static/chunks/8614.caec96cfb91f4ae7.js +0 -1
  761. package/apps/pwa/out/_next/static/chunks/8637.47f5b35afcae5e6b.js +0 -1
  762. package/apps/pwa/out/_next/static/chunks/8714.ff0b7ce3ec3e3ae2.js +0 -1
  763. package/apps/pwa/out/_next/static/chunks/8732.367f44a916202353.js +0 -1
  764. package/apps/pwa/out/_next/static/chunks/9141-7fd1f73a5400bdc2.js +0 -1
  765. package/apps/pwa/out/_next/static/chunks/921.c4267d0d69a65404.js +0 -1
  766. package/apps/pwa/out/_next/static/chunks/9261.3962c3321b047691.js +0 -115
  767. package/apps/pwa/out/_next/static/chunks/936-26efd1a0efdd44d3.js +0 -1
  768. package/apps/pwa/out/_next/static/chunks/9627-4b9efe616b27e2e2.js +0 -1
  769. package/apps/pwa/out/_next/static/chunks/967-2aa39b2d04b4c690.js +0 -1
  770. package/apps/pwa/out/_next/static/chunks/9734.40eb1e558c29ccea.js +0 -1
  771. package/apps/pwa/out/_next/static/chunks/9908.3aa54f7a586a73dc.js +0 -1
  772. package/apps/pwa/out/_next/static/chunks/9954-ca8d29752bdbb45a.js +0 -1
  773. package/apps/pwa/out/_next/static/chunks/9974-507fa67cb94066dd.js +0 -1
  774. package/apps/pwa/out/_next/static/chunks/app/_not-found/page-ce9e00f7fb45506a.js +0 -1
  775. package/apps/pwa/out/_next/static/chunks/app/approvals/page-fa59d6d17daa3389.js +0 -1
  776. package/apps/pwa/out/_next/static/chunks/app/autopilot/page-53f68bbe7bd4b774.js +0 -1
  777. package/apps/pwa/out/_next/static/chunks/app/board/page-1c500fbb9f4a7a04.js +0 -1
  778. package/apps/pwa/out/_next/static/chunks/app/botlab/page-99d72673aa5c307c.js +0 -1
  779. package/apps/pwa/out/_next/static/chunks/app/bots/page-d2d5adc1e9484c88.js +0 -1
  780. package/apps/pwa/out/_next/static/chunks/app/ceo/page-c607c5aae637f1cc.js +0 -1
  781. package/apps/pwa/out/_next/static/chunks/app/chat/page-fa8c23596d555c0f.js +0 -1
  782. package/apps/pwa/out/_next/static/chunks/app/consult/page-bdab8c5e855c8416.js +0 -1
  783. package/apps/pwa/out/_next/static/chunks/app/control/page-406b47745b53f269.js +0 -1
  784. package/apps/pwa/out/_next/static/chunks/app/decisions/page-a4276386b7051f50.js +0 -1
  785. package/apps/pwa/out/_next/static/chunks/app/design-check/page-8a26bab9ad375f25.js +0 -1
  786. package/apps/pwa/out/_next/static/chunks/app/editor/page-775f48aa1dc7a2d5.js +0 -1
  787. package/apps/pwa/out/_next/static/chunks/app/exec/page-1c4dd5f959d0c558.js +0 -1
  788. package/apps/pwa/out/_next/static/chunks/app/field/page-c48938a8377c9f70.js +0 -1
  789. package/apps/pwa/out/_next/static/chunks/app/healthz/route-ce9e00f7fb45506a.js +0 -1
  790. package/apps/pwa/out/_next/static/chunks/app/inside/page-c6e7905859425aa9.js +0 -1
  791. package/apps/pwa/out/_next/static/chunks/app/intake/page-c280f4252452e830.js +0 -1
  792. package/apps/pwa/out/_next/static/chunks/app/layout-cf8c57498f20970a.js +0 -1
  793. package/apps/pwa/out/_next/static/chunks/app/live/page-ca3a17caf409fc83.js +0 -1
  794. package/apps/pwa/out/_next/static/chunks/app/live-run/page-26e6c18a1a750cf6.js +0 -1
  795. package/apps/pwa/out/_next/static/chunks/app/loops/page-3abc872cc6aeee39.js +0 -1
  796. package/apps/pwa/out/_next/static/chunks/app/market/page-f7481b7b2174fe3d.js +0 -1
  797. package/apps/pwa/out/_next/static/chunks/app/missions/[id]/page-1ae7ef8077680337.js +0 -1
  798. package/apps/pwa/out/_next/static/chunks/app/not-found-415f1e243c7ccb13.js +0 -1
  799. package/apps/pwa/out/_next/static/chunks/app/observatory/page-73f380f17b76f95c.js +0 -1
  800. package/apps/pwa/out/_next/static/chunks/app/ops/checklist/page-2991073ad66ee2d9.js +0 -1
  801. package/apps/pwa/out/_next/static/chunks/app/ops/seats/page-fbad60d1e358fb2c.js +0 -1
  802. package/apps/pwa/out/_next/static/chunks/app/page-398047d6949e8ca5.js +0 -1
  803. package/apps/pwa/out/_next/static/chunks/app/reflection/page-2d33a2231540ca89.js +0 -1
  804. package/apps/pwa/out/_next/static/chunks/app/scheduler/page-5bf1e6bf70bcb96c.js +0 -1
  805. package/apps/pwa/out/_next/static/chunks/app/sessions/page-ba59c19376a0917d.js +0 -1
  806. package/apps/pwa/out/_next/static/chunks/app/settings/devices/page-111f187139add30f.js +0 -1
  807. package/apps/pwa/out/_next/static/chunks/app/settings/page-acaae197d5be5779.js +0 -1
  808. package/apps/pwa/out/_next/static/chunks/app/setup/done/page-0df20b0f546a0d7d.js +0 -1
  809. package/apps/pwa/out/_next/static/chunks/app/setup/layout-ce9e00f7fb45506a.js +0 -1
  810. package/apps/pwa/out/_next/static/chunks/app/setup/page-27e1202d24b8fe35.js +0 -1
  811. package/apps/pwa/out/_next/static/chunks/app/share/page-bda78c50a78363e5.js +0 -1
  812. package/apps/pwa/out/_next/static/chunks/app/showroom/page-da592691293d9c9f.js +0 -1
  813. package/apps/pwa/out/_next/static/chunks/app/tasks/page-f832994317a2e9f0.js +0 -1
  814. package/apps/pwa/out/_next/static/chunks/app/today/page-cfccbbeae0473404.js +0 -1
  815. package/apps/pwa/out/_next/static/chunks/app/trace/page-527e2073af84c81b.js +0 -1
  816. package/apps/pwa/out/_next/static/chunks/app/vault/page-bac86e9112671357.js +0 -1
  817. package/apps/pwa/out/_next/static/chunks/app/workflows/chat-ui/page-6d59dff410e9d76a.js +0 -1
  818. package/apps/pwa/out/_next/static/chunks/app/workflows/page-53a61f8be09f02d2.js +0 -1
  819. package/apps/pwa/out/_next/static/chunks/app/workspace/page-db8f559e763c17f9.js +0 -1
  820. package/apps/pwa/out/_next/static/chunks/app/worktrees/page-c02aa4cc66455093.js +0 -1
  821. package/apps/pwa/out/_next/static/chunks/framework-50e6acebc630849b.js +0 -1
  822. package/apps/pwa/out/_next/static/chunks/main-7a1ae342d5ed75e6.js +0 -1
  823. package/apps/pwa/out/_next/static/chunks/main-app-7ad7d505ba1f92b4.js +0 -1
  824. package/apps/pwa/out/_next/static/chunks/pages/_app-02edba75232cb235.js +0 -1
  825. package/apps/pwa/out/_next/static/chunks/pages/_error-97d6ebae3e8eee4a.js +0 -1
  826. package/apps/pwa/out/_next/static/chunks/webpack-e986adaa429163e8.js +0 -1
  827. /package/apps/pwa/out/_next/static/{T1mBQqmkwKDLGtyisDCOd → 8kITumG9GAZ1LwT9POrAR}/_ssgManifest.js +0 -0
@@ -0,0 +1,47 @@
1
+ {"ts":"2026-10-21T07:39:10+0900","by":"OP","source":"op","cell":"DOCTOR-VISIT-FU","class":"c-unbounded-goal","diag":"문면 «생산 호출·자동 visit·원장 실물을 완성한다» · 자동 채움 경계(merge sha·타입검사)","action":"RUN-DOCTOR-AUTO-60M 에 흡수 · 0.2.36","lesson":"끝이 없는 «완성한다» 대신 착지된 코드(#27620)를 읽고 빠진 생산자 한 곳만 골로","run":"","card":"ta-20261020-ab9943","launch":"","goalSha":"","paths":"","model":"","host":"node-c","evidence":"OP 06:2x","rule":"저작이 대상 파일의 생산 호출부·착지 PR 을 먼저 읽는다","ms":"","outcome":"pending"}
2
+ {"ts":"2026-10-21T07:39:10+0900","by":"OP","source":"op","cell":"MSG-TAG-REACT","class":"a-missing-predecessor","diag":"골이 «MSG-ENVELOPE2 위에» 전제 · 그 칸은 phantom 0.2.41 · msg-store 에 tags 0","action":"0.2.36 이동 · MSG-ENVELOPE2 를 0.2.36 으로 당겨 --predecessor","lesson":"문면의 «X 위에/선행 X» 는 실재(칸 판·코드 필드) 확인 뒤에만","run":"run-680b9b65","card":"ta-20261020-bd7099","launch":"","goalSha":"","paths":"","model":"","host":"node-b","evidence":"OP #23589","rule":"칸 add 때 문면 속 선행을 --predecessor 로 강제 · 없는 칸이면 거부","ms":"","outcome":"pending"}
3
+ {"ts":"2026-10-21T07:39:11+0900","by":"OP","source":"op","cell":"TUI-STEER-NOTIFY","class":"b-stale-path","diag":"문면 한 줄 «알림 같은 경계(RFC P4)» · 대상 = 옛 대시보드 src/dashboard/index.ts (기본 TUI 는 next)","action":"0.2.36 이동 · OPC 새 TUI 문면 retitle · 옛 골 런 harness stop","lesson":"대상 경로가 현행 생산 경로인지(--tui next 전환 뒤 src/tui/·src/repl/) 확인","run":"run-d4bf8660","card":"ta-20261020-b8ca24","launch":"","goalSha":"","paths":"","model":"","host":"node-b","evidence":"OP #23588 #23749","rule":"저작이 대상 경로의 «현행 진입점 도달성» 을 잰다","ms":"","outcome":"pending"}
4
+ {"ts":"2026-10-21T07:39:11+0900","by":"OP","source":"run-doctor","cell":"LAND-RECIPE-GRAPH","class":"g-umbrella-scope","diag":"착지 반장 전체(수집→묶음→재배치→판정→게이트→병합→정리) 한 골 · 73분 · 구현 뒤 10분 LLM 0 · gate 미시작","action":"harness stop · 첫 조각(land-plan.ts 계획 출력만) retitle · 재발사(Sol)","lesson":"단계가 3개 넘는 레시피는 첫 조각(관측 가능한 산출 하나)만 골로","run":"run-53bba27c","card":"ta-20261020-baa78b","launch":"","goalSha":"","paths":"","model":"","host":"node-b","evidence":"OPT #23762 MK #23783 OP #23789","rule":"저작이 «단계 수» 를 세어 >3 이면 첫 조각으로 자동 축소","ms":"","outcome":"pending"}
5
+ {"ts":"2026-10-21T07:39:11+0900","by":"OP","source":"op","cell":"GATE-ATTRIBUTION-CHECK","class":"e-format-trap","diag":"증거 명령 값의 «;» 로 goal-author 가 줄 전체 무시 → «완료 경계 누락» 거부(0.2.35 미초록 38칸 같은 꼴)","action":"28칸 일괄 retitle(명령 한 줄 ⊕ 증거 보충)","lesson":"증거 명령 = 연산자 없는 명령 하나 · 설명은 다음 줄","run":"","card":"","launch":"","goalSha":"","paths":"","model":"","host":"mbp","evidence":"TC #23398","rule":"CELL-DONE-EVIDENCE-ONE-VALIDATOR(검사기 하나 · 정규화 · 원인 문구)","ms":"","outcome":"pending"}
6
+ {"ts":"2026-10-21T07:39:11+0900","by":"OP","source":"op","cell":"OVERLAP-SIBLING-CTX","class":"e-format-trap","diag":"자리 ta-ready 힌트 «# 대상 경로: … · 설명문» 이 칸 제목 경로를 덮어써 «형제 (경로 아님)»","action":"MK 20·UX 15 힌트 경로만 남김","lesson":"힌트 줄엔 경로만 · 설명은 칸 제목에","run":"","card":"","launch":"","goalSha":"","paths":"","model":"","host":"mbp","evidence":"OPT #23608","rule":"디스패처가 칸 제목과 다른 힌트는 무시","ms":"","outcome":"pending"}
7
+ {"ts":"2026-10-21T07:39:11+0900","by":"OP","source":"autopsy","cell":"RUBRIC-V2-REVIEW-FU","class":"f-unaware-of-code","diag":"새 이미지에서도 goal-only-rework-exhausted · 첫 자식 PR 없이 soft-stop","action":"재발사금지 hold · 골 개정 대기","lesson":"(미판정) 재작업 소진 = 골이 이미 착지/불가능한 일을 요구했는지 먼저","run":"run-06b0e6d2","card":"ta-20261020-350383","launch":"","goalSha":"","paths":"","model":"","host":"node-b","evidence":"OPT #23509","rule":"","ms":"","outcome":"pending"}
8
+ {"ts":"2026-10-21T07:39:11+0900","by":"OP","source":"run-doctor","cell":"DRAFT-SWEEP-LINEAGE-HARVESTABLE-FU","class":"env-stale-image","diag":"수리 런이 옛 pin 부모(27f0be)로 typescript 누락 Error/8","action":"수리 재발사 대신 MK 손 수확 → #29739 착지","lesson":"실패가 옛 이미지 탓이면 골을 바꾸지 말고 열린 draft 를 수확","run":"run-5381da59","card":"","launch":"","goalSha":"","paths":"","model":"","host":"node-b","evidence":"MK #23395 OP #23397","rule":"incident 묶음에 Pod 이미지 sha 열 · pin 이전이면 «환경» 분류","ms":"","outcome":"pending"}
9
+ {"ts":"2026-10-21T07:39:11+0900","by":"OP","source":"green-factory","cell":"ALREADY-BUILT-HINT","class":"f-unaware-of-code","diag":"착지했으나 alreadyBuiltHints( 생산 호출부 0","action":"FU 칸 ALREADY-BUILT-HINT-FU 발사","lesson":"골의 완료 경계에 «생산 진입점에서 호출» 을 명시(MS-05)","run":"","card":"","launch":"","goalSha":"","paths":"","model":"","host":"mbp","evidence":"MK green-e4/ALREADY-BUILT-HINT.md","rule":"TRAIN-GREEN-LEG 첫 검사 = 새 export 생산 호출부 0 이면 미배선","ms":"MS-05","outcome":"pending"}
10
+ {"ts":"2026-10-21T07:39:11+0900","by":"OP","source":"green-factory","cell":"ORG-REG","class":"d-rigid-acceptance","diag":"감사 문서 1파일만 착지 · eln org 명령 없음 · 원 수용선은 운영 실물 요구","action":"원칸 재발사 제목 보강안(OPT)","lesson":"코드 칸은 «코드 대상 경로» 가 문서만 바꾸는 PR 로 닫히지 않게 · 수용선은 동작·방법·충실성","run":"","card":"","launch":"","goalSha":"","paths":"","model":"","host":"mbp","evidence":"OPT ORG-REG-RELAUNCH-TITLE.txt","rule":"","ms":"","outcome":"pending"}
11
+ {"ts":"2026-10-21T07:39:11+0900","by":"OP","source":"op","cell":"REVIEW-CAP-COUNT-BY-CONTENT","class":"e-format-trap","diag":"리뷰 상한을 파일명 정규식으로 셈 → -rN- 이름이면 못 세어 #29789 10 head 통과","action":"0.2.35 P0 칸 · UX 구현(내용 pr·headCommit 으로)","lesson":"규칙 집행은 문자열 꼴이 아니라 의미 필드로","run":"","card":"","launch":"","goalSha":"","paths":"","model":"","host":"mbp","evidence":"UX #23784","rule":"집행 코드 리뷰 체크: 꼴 의존 여부","ms":"","outcome":"pending"}
12
+ {"ts":"2026-10-21T07:40:22+0900","by":"UX","source":"autopsy","cell":"ARG-UI-UNITS","class":"a-missing-predecessor","diag":"same-cell PR appeared after run branch push and guard refused draft creation; two rework rounds repeated capture/production-path evidence without a narrower change","action":"inventory open same-cell and path-overlap PRs before launch; if the guard refuses after push, refresh inventory and retry from that state","lesson":"Goal authoring should require a same-cell PR inventory preflight and specify how to join or retry after a late same-cell guard refusal; completion evidence should show that no duplicate push was left stranded.","run":"","card":"","launch":"","goalSha":"","paths":"","model":"","host":"","evidence":"","rule":"","ms":"","outcome":"pending"}
13
+ {"ts":"2026-10-21T07:41:57+0900","by":"TC","source":"op","cell":"LAUNCH-UTTERANCE-LEDGER","class":"g-umbrella-scope","diag":"원문 기록과 저작·결과 연결을 한 PR에서 검증하려다 r3까지 모의 경계 must-fix가 지속됐다","action":"OP #23799에 따라 원문 start JSONL·조회만 #29792에 남기고 저작·결과 연결은 FU로 분리했다","lesson":"골을 원문 보존 첫 착지와 launchId 후속 연결로 나누고 각 수용선을 생산 입구에서 독립 검증한다","run":"","card":"","launch":"","goalSha":"","paths":"","model":"","host":"","evidence":"PR #29792 r3 head 5b19e5c345, OP #23799","rule":"","ms":"","outcome":"scope-split"}
14
+ {"ts":"2026-10-21T07:43:00+0900","by":"OPT","source":"autopsy","cell":"RUN-AUTOPSY-LOOP-FU-CONTRACT","class":"d-rigid-acceptance","diag":"생산 사고 runId CLI 원문·동시 tick 관측을 자식 완료 경계로 요구해 재작업 2라운드 동일 지적 후 사람 의존","action":"자식 워크트리 밖 생산 관측 요구를 완료 경계에서 분리","lesson":"저작 때 자식이 만들 수 있는 증거와 실운영 관측을 분리","run":"run-06c32701-bb62-490a-8e24-784f877849cd","card":"","launch":"","goalSha":"","paths":"","model":"","host":"node-b","evidence":"~/elanous-hq/seat-state/OP/autopsy/reports/run-06c32701-bb62-490a-8e24-784f877849cd.json","rule":"완료 조건이 자식 워크트리에서 만들 수 없는 생산 사고 관측을 요구하면 발사 전에 그 경계를 사람 의존으로 빼고 재작업 루프에 넣지 않는다.","ms":"","outcome":"pending"}
15
+ {"ts":"2026-10-21T07:43:00+0900","by":"OPT","source":"autopsy","cell":"DECOMPOSE-BOUNDARY-ONE-STEP","class":"d-rigid-acceptance","diag":"완료 경계·판정 시험·증거 원문 누락이 EXTEND 뒤에도 반복","action":"골의 시험 파일·증거 출처를 명시하도록 개정","lesson":"완료 경계에 실행 가능한 시험과 증거 출처를 지정","run":"run-08ba654b-2918-46ef-ade0-2f7c88a9b54d","card":"","launch":"","goalSha":"","paths":"","model":"","host":"node-b","evidence":"~/elanous-hq/seat-state/OP/autopsy/reports/run-08ba654b-2918-46ef-ade0-2f7c88a9b54d.json","rule":"완료 경계와 판정 시험·증거 원문이 없으면 실행 전에 골을 되돌리고, 재작업에서 같은 식별값이 반복되면 그 누락을 골 수정 항목으로 고정해 다시 배치하지 않는다.","ms":"","outcome":"pending"}
16
+ {"ts":"2026-10-21T07:43:00+0900","by":"OPT","source":"autopsy","cell":"TUI-FLICKER-DRAW-INTEGRATION","class":"d-rigid-acceptance","diag":"bun test src/dashboard/index.test.ts 실행 원문 누락이 2라운드 반복","action":"시험 출력 증거 확보 뒤 재작업 여부 판정","lesson":"완료 경계의 시험 명령에 실행 출력의 귀속까지 명시","run":"run-0b3c828e-f513-4e06-8afc-d898b733f91b","card":"","launch":"","goalSha":"","paths":"","model":"","host":"node-b","evidence":"~/elanous-hq/seat-state/OP/autopsy/reports/run-0b3c828e-f513-4e06-8afc-d898b733f91b.json","rule":"완료 경계가 비거나 테스트 실행 원문이 없으면 재작업으로 넘기지 말고, 발사 전에 거절하거나 그 출력을 런 증거로 자동 첨부한다.","ms":"","outcome":"pending"}
17
+ {"ts":"2026-10-21T07:43:00+0900","by":"OPT","source":"autopsy","cell":"EFFECTS-YOLO-PROFILE","class":"f-unaware-of-code","diag":"nodeRequiresHumanGate 호출 배선·시험 명령 누락, 호출 없는 import만 남음","action":"생산 호출부와 시험 실행 결과를 확인하도록 골 개정","lesson":"import 존재가 아니라 생산 호출 경로의 실행 증거를 수용선으로","run":"run-1afc4b8c-dcc7-49ec-8620-3b23fb5ac68b","card":"","launch":"","goalSha":"","paths":"","model":"","host":"node-b","evidence":"~/elanous-hq/seat-state/OP/autopsy/reports/run-1afc4b8c-dcc7-49ec-8620-3b23fb5ac68b.json","rule":"완료 경계와 요구 테스트 명령 원문이 없는 골은 발사 전에 거절하고, 직전 라운드와 같은 누락을 호출 없는 import로 덮은 diff는 재작업을 더 주기 전에 기각한다.","ms":"","outcome":"pending"}
18
+ {"ts":"2026-10-21T07:43:00+0900","by":"OPT","source":"autopsy","cell":"LOGS-RETENTION-46MIN","class":"e-format-trap","diag":"판정 신호 마커가 제목뿐이고 완료 경계 누락, 4라운드 동일 지적","action":"판정 신호: <문장> 필드와 완료 경계를 채워 재저작","lesson":"파서가 읽는 판정 신호: 줄을 제목과 구별해 작성","run":"run-1b093b97-8095-48d6-adcb-4b73914d2e5f","card":"","launch":"","goalSha":"","paths":"","model":"","host":"node-b","evidence":"~/elanous-hq/seat-state/OP/autopsy/reports/run-1b093b97-8095-48d6-adcb-4b73914d2e5f.json","rule":"판정 신호 마커나 완료 경계가 없으면 발사하지 말고, 같은 지적 심볼이 반복되면 추가 연장 없이 골을 고친 뒤에만 재발사하게 한다.","ms":"","outcome":"pending"}
19
+ {"ts":"2026-10-21T07:43:00+0900","by":"OPT","source":"autopsy","cell":"RUN-HELPER-FU","class":"d-rigid-acceptance","diag":"src/harness/helper-scan.ts 소스 must-fix에 문서 diff만 두 라운드","action":"소스 수정과 테스트 증거 없으면 문서만의 수용을 보류","lesson":"구현 칸 완료 경계에는 대상 소스 diff와 작동 시험을 함께","run":"run-4e42ef41-42d6-42ab-bc54-f7e1d78dc494","card":"","launch":"","goalSha":"","paths":"","model":"","host":"mbp","evidence":"~/elanous-hq/seat-state/OP/autopsy/reports/run-4e42ef41-42d6-42ab-bc54-f7e1d78dc494.json","rule":"소스 파일을 지목한 must-fix인데 diff가 문서뿐이면 같은 게이트로 다음 라운드를 열지 말고 그 자리에서 불수렴으로 끊는다.","ms":"","outcome":"pending"}
20
+ {"ts":"2026-10-21T07:43:00+0900","by":"OPT","source":"autopsy","cell":"TA-HARVEST-CLAIMED-LABEL","class":"f-unaware-of-code","diag":"큐 진입 라벨·생산 경로 근거가 3라운드 must-fix로 반복","action":"큐 진입 생산 호출 경로 판정 신호를 골에 접지","lesson":"라벨 생성 시점·생산 진입점과 확인할 원장 신호를 명시","run":"run-e53fd51b-6f29-4291-9103-3c41ff2eb1b1","card":"","launch":"","goalSha":"","paths":"","model":"","host":"node-b","evidence":"~/elanous-hq/seat-state/OP/autopsy/reports/run-e53fd51b-6f29-4291-9103-3c41ff2eb1b1.json","rule":"must-fix가 라운드 사이에 줄지 않으면 같은 문면을 재발사하지 말고, 큐 진입 라벨 부착의 생산 경로 판정 신호를 골에 다시 접지한 뒤에만 연다.","ms":"","outcome":"pending"}
21
+ {"ts":"2026-10-21T07:43:00+0900","by":"OPT","source":"autopsy","cell":"GATE-ISOLATE-FANOUT-CAP","class":"env-capacity","diag":"OOMKilled 16Gi 뒤 32Gi 재시도가 pod-pool-unfit으로 종료","action":"메모리 증액 전 단일 노드 수용 여부 검사","lesson":"골 수정 전 OOM 요청량과 풀이 받을 수 있는 한도를 분리 관측","run":"run-61160794-6763-47bf-9e24-a20102f70e0b","card":"","launch":"","goalSha":"","paths":"","model":"","host":"node-c","evidence":"~/elanous-hq/seat-state/OP/autopsy/reports/run-61160794-6763-47bf-9e24-a20102f70e0b.json","rule":"OOM으로 메모리 상한을 올리기 전에 단일 멤버 풀이 그 요청을 스케줄할 수 있는지 확인하고, 못 하면 재시도를 걸지 말고 풀 용량 부족으로 즉시 멈추게 한다.","ms":"","outcome":"pending"}
22
+ {"ts":"2026-10-21T07:43:00+0900","by":"OPT","source":"autopsy","cell":"RELEASE-LOOP-CONTRACT","class":"env-provider","diag":"account candidateCount=0으로 구현 노드 aborted 반복","action":"계정 후보 0은 재작업 대신 자격 고갈로 분류","lesson":"자격 고갈을 골 무진전으로 오인하지 말고 발사 전 후보를 관측","run":"run-6514bbd1-0302-44fa-ab9a-611679d67277","card":"","launch":"","goalSha":"","paths":"","model":"","host":"elangram-wsl","evidence":"~/elanous-hq/seat-state/OP/autopsy/reports/run-6514bbd1-0302-44fa-ab9a-611679d67277.json","rule":"계정 후보가 0이면 구현 라운드를 시작하지 말고 자격 고갈로 즉시 끝내, 무진전·골 개정으로 오인되지 않게 한다.","ms":"","outcome":"pending"}
23
+ {"ts":"2026-10-21T07:43:00+0900","by":"OPT","source":"autopsy","cell":"RESYNC-RELEASE-FLOCK","class":"env-provider","diag":"draft PR 생성 중 GitHub CLI 인증 부재, PR 없이 종료","action":"GH_TOKEN/gh 인증 확인을 Pod 시작 전 포함","lesson":"PR 생성 자격은 완료 시점이 아니라 발사 전 확인","run":"run-690aa720-428d-4088-aecd-bcc36913dc4f","card":"","launch":"","goalSha":"","paths":"","model":"","host":"node-b","evidence":"~/elanous-hq/seat-state/OP/autopsy/reports/run-690aa720-428d-4088-aecd-bcc36913dc4f.json","rule":"파드 골 런은 시작 전에 GitHub CLI 인증(GH_TOKEN)이 있는지 확인하고, 없으면 발사하지 않는다.","ms":"","outcome":"pending"}
24
+ {"ts":"2026-10-21T07:43:00+0900","by":"OPT","source":"autopsy","cell":"GIT-API-PROXY-MOCK","class":"other","diag":"comparison-base-unavailable 반복으로 게이트 재작업 무진전","action":"base ref·공통 조상 미확보를 구현 재작업과 분리","lesson":"게이트 비교 기준 ref·merge-base를 저작 품질과 별도 환경 신호로 확인","run":"run-f2e8432e-ceb5-44bf-afc1-bb3617dbc772","card":"","launch":"","goalSha":"","paths":"","model":"","host":"mbp","evidence":"~/elanous-hq/seat-state/OP/autopsy/reports/run-f2e8432e-ceb5-44bf-afc1-bb3617dbc772.json","rule":"비교 기준 커밋을 확보하지 못하면 구현 재작업을 반복하지 않고 게이트가 comparison-base-unavailable을 즉시 종료 사유로 고정하게 한다.","ms":"","outcome":"pending"}
25
+ {"ts":"2026-10-21T07:44:40+0900","by":"OPT","source":"autopsy","cell":"LAND-RECIPE-GRAPH","class":"g-umbrella-scope","diag":"기존 run-doctor #4와 동일 run: 73분 umbrella 무PR 뒤 OP 손중지 확정; SIGTERM 자체만으로 저작 원인을 단정하지 않음","action":"중복 진단 재신고 없이 첫 조각 계획 산출로 한정","lesson":"수집·묶음·배치·판정·게이트·병합 같은 다단계 레시피는 한 산출물 경계로 쪼갬","run":"run-53bba27c-0560-481c-99e6-b331122ce571","card":"","launch":"","goalSha":"","paths":"","model":"","host":"node-b","evidence":"~/elanous-hq/seat-state/OP/autopsy/reports/run-53bba27c-0560-481c-99e6-b331122ce571.json; OP #23811; 기존 원장 #4","rule":"","ms":"","outcome":"repeated"}
26
+ {"ts":"2026-10-21T07:44:40+0900","by":"OPT","source":"autopsy","cell":"ARG-UI-UNITS","class":"a-missing-predecessor","diag":"기존 UX #12와 동일 런: push 뒤 same-cell PR guard 거부 및 두 재작업 라운드의 증거 결손","action":"같은 셀 PR 인벤토리를 재확인하고 합류·재시도","lesson":"발사 전 동일 셀 PR 선행 상태 확인 및 늦은 guard 거부의 재시도 경로를 완료 경계에 명시","run":"run-6057dab7-9afd-49dc-b36a-73ae1ba0d521","card":"","launch":"","goalSha":"","paths":"","model":"","host":"node-b","evidence":"~/elanous-hq/seat-state/OP/autopsy/reports/run-6057dab7-9afd-49dc-b36a-73ae1ba0d521.json; 기존 원장 #12","rule":"","ms":"","outcome":"repeated"}
27
+ {"ts":"2026-10-21T07:53:04+0900","by":"OP","source":"op","cell":"RELEASE-HARD-REHEARSAL","class":"env-capacity","diag":"예행 체크아웃에 node_modules 없음 → Bun 이 캐시 typescript@7 해석 → public-export.ts TypeError · 검사기는 «no structured diagnostic» 일반 문구로 덮음","action":"TC 재현 → bun install --frozen-lockfile 후 재발사","lesson":"예행·발행 체크아웃은 시작 전 install 상태(node_modules·lock 일치)를 먼저 확인 · 크래시와 누출을 다른 문구로","run":"hard-810c80b8-1e77-4aba-abdb-c8af674cae91","card":"","launch":"","goalSha":"","paths":"","model":"","host":"mbp","evidence":"TC #23868","rule":"rehearsal 가 leak-check stderr 꼬리를 detail 에 싣고 install 사전검사","ms":"","outcome":"pending"}
28
+ {"ts":"2026-10-21T07:53:51+0900","by":"UX","source":"autopsy","cell":"TUI-MSG-SLASH","class":"d-rigid-acceptance","diag":"완료 경계가 비어 [GOAL_DONE_BOUNDARY_MISSING]; 3라운드 동안 격리 TUI 화면과 PR 본문 실물 실행 증거 결손이 반복됨","action":"목표 저작 시 생산 진입점·격리 화면 검증·증거 저장 위치·회귀 명령을 완료 경계에 함께 고정","lesson":"실물 화면/로그 요구를 말로 두지 말고, 재현 명령과 기대 화면 신호 및 PR에 붙일 원문을 완료 전에 명시한다","run":"run-1b69527d-d8a4-455d-87c0-fce8025af49d","card":"","launch":"","goalSha":"","paths":"src/dashboard/slash-runtime/dashboard-handlers.ts · TUI 화면/로그 검증 경로","model":"","host":"node-b","evidence":"node-b:~/.elanous/incidents/2026-10-21.jsonl#run-1b69527d-d8a4-455d-87c0-fce8025af49d","rule":"빈 완료 경계와 반복되는 실물 증거 결손은 재작업 전에 골 저작으로 되돌려 검증 가능한 신호를 정한다","ms":"","outcome":"repeated"}
29
+ {"ts":"2026-10-21T07:53:55+0900","by":"UX","source":"autopsy","cell":"ARG-UI-UNITS","class":"other","diag":"브랜치 push 뒤 같은 셀 PR이 나타나 draft PR 가드가 거부; existing lesson #12에 a-missing-predecessor로 기록됨","action":"기존 교훈을 보완해 발사 후 guard 거부도 최신 same-cell 인벤토리에서 합류 또는 재시도하게 한다","lesson":"같은 셀 PR 검사는 발사 전 한 번으로 끝나지 않는다: guard 거부 시 최신 PR 목록을 다시 읽고 선행 PR에 합류하거나 새 인벤토리로 재시도한다","run":"run-6057dab7-9afd-49dc-b36a-73ae1ba0d521","card":"","launch":"","goalSha":"","paths":"apps/pwa/src/components/editor/GraphCanvasEditor.tsx","model":"","host":"node-b","evidence":"node-b:~/.elanous/incidents/2026-10-21.jsonl#run-6057dab7-9afd-49dc-b36a-73ae1ba0d521","rule":"same-cell guard rejection after push must refresh PR inventory and preserve/attach the work instead of ending at an opaque no-PR failure","ms":"","outcome":"repeated"}
30
+ {"ts":"2026-10-21T07:53:59+0900","by":"UX","source":"autopsy","cell":"TA-HARVEST-CLAIMED-LABEL","class":"d-rigid-acceptance","diag":"큐 진입 라벨 부착과 생산 경로 증거 must-fix가 3라운드 동안 줄지 않음; 기존 교훈 #10은 f-unaware-of-code로 기록됨","action":"수용선을 생산 큐 진입 경로의 라벨 부착 시점과 같은 런의 검증 가능한 신호로 좁힌다","lesson":"구현 완료는 helper 존재가 아니라 큐 진입에서 라벨이 생성되는 생산 호출과 회귀 시험 원문으로 판정한다","run":"run-e53fd51b-6f29-4291-9103-3c41ff2eb1b1","card":"","launch":"","goalSha":"","paths":"src/github/pr-labels.ts · src/task-agent/land-queue.ts","model":"","host":"node-b","evidence":"node-b:~/.elanous/incidents/2026-10-21.jsonl#run-e53fd51b-6f29-4291-9103-3c41ff2eb1b1","rule":"같은 production-path must-fix가 줄지 않으면 추가 라운드 전 goal의 완료 경계·증거를 생산 큐 입구에 접지한다","ms":"","outcome":"repeated"}
31
+ {"ts":"2026-10-21T07:54:04+0900","by":"UX","source":"autopsy","cell":"MSG-ADDRESS-HANDBOOK","class":"other","diag":"draft PR creation failed with terminalClass=failed-no-pr, stage=error and unclassified; underlying create failure cause absent","action":"draft-PR 생성 단계에서 gh/git stderr와 종료 코드, 동파일 PR 인벤토리 결과를 런 증거로 남긴다","lesson":"PR 생성 실패는 stderr와 exit code를 보존하고 same-file OPEN PR 충돌을 구분하기 전 provider/환경 원인으로 단정하지 않는다","run":"run-d88e9fbe-90c6-49b1-82b4-483234c58e93","card":"","launch":"","goalSha":"","paths":"docs/handbook/LOOP-AGENTS.md","model":"","host":"node-b","evidence":"node-b:~/.elanous/incidents/2026-10-21.jsonl#run-d88e9fbe-90c6-49b1-82b4-483234c58e93 · stderr 없음","rule":"failed-no-pr without captured command stderr/exit code stays unclassified until same-file PR overlap is checked","ms":"","outcome":"repeated"}
32
+ {"ts":"2026-10-21T07:54:09+0900","by":"UX","source":"autopsy","cell":"GRAPH-VOCAB","class":"d-rigid-acceptance","diag":"명시된 판정 함수 시험과 완료 원문 대신 OPC 비교 원장·생산 실행·회귀시험 증거 결손이 두 라운드 반복됨","action":"이 골의 정적 함수/회귀시험 경계와 별도 운영 표본 요구를 분리하고, 지정 시험 출력의 저장 위치를 명시","lesson":"골이 관측 함수와 테스트만 요구하면 생산 런을 완료 조건에 추가하지 않는다; 요구한 각 시험 출력은 exact run/PR 근거로 보존한다","run":"run-f9d12d33-0880-45ad-876a-c4c7001bb29e","card":"","launch":"","goalSha":"","paths":"src/self-implement/graph-templates.ts · src/self-implement/graph-templates.test.ts","model":"","host":"node-b","evidence":"node-b:~/.elanous/incidents/2026-10-21.jsonl#run-f9d12d33-0880-45ad-876a-c4c7001bb29e · goal 문서: ASK-armF-graph-vocabulary-covers-orchestrator-stages-2026-09-10.md","rule":"완료 판정은 goal이 지정한 정적 함수 출력과 회귀시험으로 한정하고 범위 밖 운영 증거를 새 수용 조건으로 만들지 않는다","ms":"","outcome":"repeated"}
33
+ {"ts":"2026-10-21T08:05:41+0900","by":"OPT","source":"op","cell":"ORG-REG","class":"g-umbrella-scope","diag":"여섯 CLI 동작과 조직도·redirect를 한 제목에 묶어 첫 조각을 완주할 수 없음","action":"설치별 원장과 add·list만 남기고 rename·merge·split·retire·PWA를 FU로 분리","lesson":"레지스트리 우산은 격리 원장의 add→재읽기 list라는 관측 가능한 한 조각으로 저작","run":"","card":"","launch":"","goalSha":"","paths":"src/hq/seats.ts · src/user-config.ts · src/seat-address/seat-address.ts","model":"","host":"","evidence":"OP #24015 · seat-state/OPT/retitle/ORG-REG.txt","rule":"","ms":"MS-05,MS-06","outcome":"pending"}
34
+ {"ts":"2026-10-21T08:05:41+0900","by":"OPT","source":"op","cell":"FEATURE-SET-BRANCH","class":"d-rigid-acceptance","diag":"부검 insufficient-evidence ×2 · preview 성공 상수는 실제 PR target·게이트 base의 근거가 아님","action":"첫 조각의 단일 runId로 자식 argv·PR target·게이트 base 원문을 연결하고 수명/preview는 FU","lesson":"성공 스텁이 아니라 서로 다른 main·feat 무대에서 생산 base 전파를 확인하도록 수용선 작성","run":"","card":"","launch":"","goalSha":"","paths":"src/harness/harness-cli-command.ts · src/harness/harness-pod-dispatch.ts · src/cli/pr-cli.ts","model":"","host":"","evidence":"OP #24015 · seat-state/OPT/retitle/FEATURE-SET-BRANCH.txt","rule":"","ms":"MS-04,MS-05","outcome":"pending"}
35
+ {"ts":"2026-10-21T08:05:41+0900","by":"OPT","source":"op","cell":"SW-CLI-ACQUIRE","class":"d-rigid-acceptance","diag":"no-progress·insufficient-evidence ×2 · API-key-only를 구독으로 오인하고 플러그인 없는 부분 성공을 ok로 처리","action":"한 CLI 구독 검사 fail-closed만 첫 조각으로, 플러그인·두 CLI 통합은 FU","lesson":"API-key-only 거부와 생산 PTY 경로 증거·부분 완료 거부를 저작 때 명시하고 mock을 실 계정 검증으로 오인하지 않는다","run":"","card":"","launch":"","goalSha":"","paths":"src/agent-mission/tool-install.ts · src/agent-mission/claude-subscription.ts","model":"","host":"","evidence":"OP #24015 · seat-state/OPT/retitle/SW-CLI-ACQUIRE.txt","rule":"","ms":"MS-05,MS-06","outcome":"pending"}
36
+ {"ts":"2026-10-21T08:09:27+0900","by":"TC","source":"retro","cell":"GRAPH-VOCAB-LINT","class":"d-rigid-acceptance","diag":"PR #29807 리뷰가 OPC 동일 49입력 전후 TSV를 첫 코드 조각에 요구해 린트 배선·실물 1회 증거와 전수 분포 검증이 뒤섞임","action":"첫 PR은 린트 코드·집중 시험·test 우주 graph run 1회로, 동일 49입력 전후 TSV는 GRAPH-VOCAB-LINT-FU로 분리","lesson":"처음부터 실물 입구 1회와 전수 운영 표본은 별도 수용선으로 쓰고, 전수 입력 집합이 고정되지 않으면 그 값을 첫 PR의 gate로 요구하지 않는다","run":"","card":"","launch":"","goalSha":"","paths":"","model":"","host":"","evidence":"PR #29807 · OP #24016 · seat-state/TC/goals-next/GRAPH-VOCAB-LINT-FU.md","rule":"","ms":"","outcome":"fixed"}
37
+ {"ts":"2026-10-21T08:09:35+0900","by":"TC","source":"retro","cell":"LAUNCH-SINGLE-DOOR","class":"g-umbrella-scope","diag":"PR #29808이 1A 순수 판정에 env 모드·실제 발사 차단·요청 원장 쓰기까지 한꺼번에 담아 리뷰 경계가 커짐","action":"1A는 순수 판정·기존 관문 연결, 1B는 env·실제 발사, 1C는 요청 원장·소비로 분리","lesson":"발사 제어 골은 판정 로직, 실제 발사 효과, 원장 소비를 처음부터 세 조각으로 나눠 각 조각의 독립 수용 신호를 쓴다","run":"","card":"","launch":"","goalSha":"","paths":"","model":"","host":"","evidence":"PR #29808 · OP #24016 · seat-state/TC/goals-next/LAUNCH-SINGLE-DOOR-1B.md · 1C.md","rule":"","ms":"","outcome":"fixed"}
38
+ {"ts":"2026-10-21T08:17:14+0900","by":"?","source":"op","cell":"UX-EXT-RFC-FIRST","class":"env-provider","diag":"test universe did not isolate baseUrl; a fake key reached the real OpenAI endpoint and returned 401","action":"Stopped retrying with the fake key; use the seat installed eln default subscription provider for exactly one isolated test-universe call","lesson":"Before testing provider routing, verify test-universe baseUrl isolation. Never treat a fake key as a local mock; if one safe real call cannot be made, use a mock runTurn capture and label the PR evidence LLM boundary = mock.","run":"","card":"","launch":"","goalSha":"","paths":"","model":"","host":"","evidence":"OP mail #24041; debug log in old worktree 2026-10-21","rule":"","ms":"","outcome":"fixed"}
39
+ {"ts":"2026-10-21T08:55:27+0900","by":"OPC","source":"green-factory","cell":"GATE-ATTRIBUTION-CHECK","class":"f-unaware-of-code","diag":"비샤드 귀속 unknown1 시험만 골에 넣어 샤드 생산 경로의 passedTestEvidence.testCases 누락을 못 봄","action":"실제 Bun JUnit XML을 남기는 --shards 1 생산 gate로 다시 재어 introduced2/unknown0 편차를 찾고 FU 지정","lesson":"귀속 골은 direct와 shard 두 생산 경로가 같은 기준선 JUnit 양성 신호를 소비하는지 같이 요구한다","run":"","card":"","launch":"","goalSha":"","paths":"src/self-implement/gate-baseline.ts · src/self-dev/shard-aggregate.ts","model":"","host":"","evidence":"~/elanous-hq/seat-state/OPC/evidence/20261021/gate-attribution-shard1/summary.json","rule":"","ms":"MS-04","outcome":"pending"}
40
+ {"ts":"2026-10-21T08:57:06+0900","by":"OP","source":"run-doctor","cell":"RUN-AUTOPSY-LOOP","class":"e-format-trap","diag":"2라운드 PR0 soft-stop · 제목에 «원 칸 설명 원문:» 중복 ⊕ 신설 경로(run-autopsy-shadow.ts)가 본문에만 있고 1행 대상 경로와 다름 · 완료 경계가 LLM classify 경로까지 요구(첫 조각치고 큼)","action":"재발사금지 hold · TC 에 1행=신설 포함 실제 대상, LLM 경로는 후속으로 떼어 재저작","lesson":"retitle 때 원 칸 원문을 붙여 넣지 말고 1행 대상 경로와 신설 줄을 한 벌로 맞춘다 · 첫 조각은 LLM 경로 없이 결정론 분류만","run":"run-bff41b39","card":"","launch":"","goalSha":"","paths":"","model":"","host":"node-b","evidence":"OPT #24212","rule":"","ms":"","outcome":"pending"}
41
+ {"ts":"2026-10-21T08:57:06+0900","by":"OP","source":"run-doctor","cell":"RELEASE-TUI-SUBCHECK-HITL","class":"b-stale-path","diag":"2라운드 PR0 soft-stop · 증거 명령이 publish-node.test.ts 를 요구하나 1행 대상 경로에 없음 → 범위 밖 편집 강요 가능","action":"재발사금지 hold · OPC 에 대상 경로에 publish-node(.test).ts 추가 여부 판단 후 재저작","lesson":"증거 명령에 쓰는 시험 파일과 그 시험이 덮는 소스는 1행 대상 경로에 모두 넣는다","run":"run-38f894ca","card":"","launch":"","goalSha":"","paths":"","model":"","host":"node-b","evidence":"OPT #24212","rule":"","ms":"","outcome":"pending"}
42
+ {"ts":"2026-10-21T08:58:42+0900","by":"OPC","source":"green-factory","cell":"RELEASE-TUI-SUBCHECK-HITL","class":"b-stale-path","diag":"골 대상 경로에는 publish-node(.test).ts가 없는데 완료 증거 명령은 publish-node.test.ts를 필수로 요구해 2라운드 PR0 soft-stop","action":"기존 네 대상에 publish-node.ts와 publish-node.test.ts를 추가한 엄격 retitle 제목을 OP에 전달, 12:00 hold 유지","lesson":"골 1행 대상 경로가 완료 경계 증거 명령의 시험 파일과 실제 생산 호출부를 모두 포함하는지 발사 전에 대조한다","run":"","card":"","launch":"","goalSha":"","paths":"scripts/release-loop/publish-node.ts · scripts/release-loop/publish-node.test.ts","model":"","host":"","evidence":"~/elanous-hq/seat-state/OPC/fu/RELEASE-TUI-SUBCHECK-HITL-retitle.txt","rule":"","ms":"MS-04","outcome":"pending"}
43
+ {"ts":"2026-10-21T10:54:02+0900","by":"OP","source":"run-doctor","cell":"TA-REPAIR-EVENT-COLLECT-FU","class":"f-unaware-of-code","diag":"골이 이미 main 에 있는 boot wiring(nexus/index.ts:91·:1138·:3387)과 collector(steward/ta-repair-event-collect.ts:146)를 새로 만들라 해 자식이 40분+ 진도 0 · PR 0","action":"재저작: 남은 것만(수리 completedAt→수집 60초 운영 표본·fallback 상호작용) · 코드 근거 있는 부분은 green 처분 검토","lesson":"저작 전 대상 기능이 이미 있는지 rg 로 확인하고, 있으면 «현재 계약:» 줄에 경로:줄을 적어 남은 조각만 쓴다","run":"run-1e47f7b5","card":"","launch":"","goalSha":"","paths":"","model":"","host":"","evidence":"TC #24624","rule":"","ms":"","outcome":"pending"}
44
+ {"ts":"2026-10-21T12:19:43+0900","by":"OP","source":"run-doctor","cell":"SW-CLI-ACQUIRE","class":"b-stale-path","diag":"골이 대상 4파일만 적으면서 생산 PTY 호출 배선 증명을 요구 → 자식이 대상 밖 src/cli/pty-takeover-cli.ts 를 고쳐 1차 scope-escape · 2차도 같은 꼴","action":"다음 재저작 때 생산 진입 파일(pty-takeover-cli.ts)을 대상 경로에 넣거나 배선 증명을 수용선에서 뺀다","lesson":"«생산 진입점 배선 증명» 을 요구하면 그 진입점 파일을 1행 대상 경로에 반드시 넣는다","run":"run-c0c379f4","card":"","launch":"","goalSha":"","paths":"","model":"","host":"","evidence":"OPT #25039","rule":"","ms":"","outcome":"pending"}
45
+ {"ts":"2026-10-21T13:26:03+0900","by":"OP","source":"run-doctor","cell":"ORG-REG","class":"f-unaware-of-code","diag":"골 본문이 생산 CLI 등록·원장 신설을 요구했는데 대상 경로에 등록 파일이 없어 자식이 범위 밖 편집 → scope-escape 2회 PR 0","action":"등록 파일만 대상 경로에 추가 ⊕ 경계: 줄로 무관 모듈 금지(13:35 재저작)","lesson":"수용선에 생산 CLI·원장을 쓰면 그 등록 지점(index.ts·*-cli.ts·원장 파일)을 대상 경로 1행에 같이 적는다","run":"run-badf928b","card":"","launch":"","goalSha":"","paths":"src/index.ts · src/cli/org-cli.ts","model":"","host":"","evidence":"seat-state/OPT/SCOPE-ESCAPE-1021.md","rule":"저작 검사: 수용선의 eln <명령> 이 대상 경로의 어느 파일에도 등록되지 않으면 경고","ms":"","outcome":"pending"}
46
+ {"ts":"2026-10-21T13:26:03+0900","by":"OP","source":"run-doctor","cell":"POD-SHELF-ANY-REF","class":"f-unaware-of-code","diag":"골 본문이 생산 CLI 등록·원장 신설을 요구했는데 대상 경로에 등록 파일이 없어 자식이 범위 밖 편집 → scope-escape 2회 PR 0","action":"등록 파일만 대상 경로에 추가 ⊕ 경계: 줄로 무관 모듈 금지(13:35 재저작)","lesson":"수용선에 생산 CLI·원장을 쓰면 그 등록 지점(index.ts·*-cli.ts·원장 파일)을 대상 경로 1행에 같이 적는다","run":"run-b4037201","card":"","launch":"","goalSha":"","paths":"src/cli/pod-cli.ts","model":"","host":"","evidence":"seat-state/OPT/SCOPE-ESCAPE-1021.md","rule":"저작 검사: 수용선의 eln <명령> 이 대상 경로의 어느 파일에도 등록되지 않으면 경고","ms":"","outcome":"pending"}
47
+ {"ts":"2026-10-21T13:26:03+0900","by":"OP","source":"run-doctor","cell":"AUTHORING-LESSONS-LOOP","class":"f-unaware-of-code","diag":"골 본문이 생산 CLI 등록·원장 신설을 요구했는데 대상 경로에 등록 파일이 없어 자식이 범위 밖 편집 → scope-escape 2회 PR 0","action":"등록 파일만 대상 경로에 추가 ⊕ 경계: 줄로 무관 모듈 금지(13:35 재저작)","lesson":"수용선에 생산 CLI·원장을 쓰면 그 등록 지점(index.ts·*-cli.ts·원장 파일)을 대상 경로 1행에 같이 적는다","run":"run-0f090004","card":"","launch":"","goalSha":"","paths":"src/cli/lesson-cli.ts · docs/goal-context/05-authoring-lessons.jsonl","model":"","host":"","evidence":"seat-state/OPT/SCOPE-ESCAPE-1021.md","rule":"저작 검사: 수용선의 eln <명령> 이 대상 경로의 어느 파일에도 등록되지 않으면 경고","ms":"","outcome":"pending"}
@@ -76,8 +76,11 @@ RESULT: 51 pass, 0 fail, 390 expect() calls; Ran 51 tests across 2 files.
76
76
  | [`01-goal-authoring-checks.md`](01-goal-authoring-checks.md) | 골을 쓰기 «전»에 답하는 여섯 | [`CONCEPT-self-implement-closed-loop-map`](../CONCEPT-self-implement-closed-loop-map-2026-08-08.md) §8 |
77
77
  | [`03-verification-menu.md`](03-verification-menu.md) | 수용선의 주장에 맞춰 검증 방법을 고르는 안내 메뉴 | 해당 방법의 정본 매뉴얼 링크는 메뉴 안에 둔다 |
78
78
  | [`04-mock-scenarios.md`](04-mock-scenarios.md) | 표준 검증 무대 템플릿과 MS-01~05 재사용 예시 | initial source: `~/elanous-hq/seat-state/OP/MOCK-SCENARIO-CATALOG.md` |
79
+ | [`05-authoring-lessons.jsonl`](05-authoring-lessons.jsonl) | 부검·런 닥터·초록·OP의 분류별 저작 교훈 원장 스냅샷(사례별 적용 판단; 자동 저작 배선은 별도 작업) | `~/elanous-hq/seat-state/OP/lessons/authoring-lessons.jsonl` |
79
80
  | [`refactoring.md`](../refactoring.md) | 리팩터링·seam·큰 파일 쪼개기 골은 냄새 → seam → 패턴 순서를 따르고, 이론상 깔끔함만으로 패턴을 도입하지 않는다 | [`refactoring.md`](../refactoring.md) |
80
81
 
82
+ `05-authoring-lessons.jsonl`은 원본의 2026-10-21T13:26:03+0900까지를 보존한 스냅샷입니다. 원본과 행별 JSON 객체를 대조하면 `evidence`의 절대경로를 `~`로 이식한 13개 행 외에는 동일합니다. 후속 원본 행은 자동 동기화되지 않습니다. 이 파일에 링크를 붙인 것과 골 저작기가 JSONL을 읽어 사용하는 것은 별개입니다. 후자의 배선과 입력 비용은 AUTHORING-LESSONS-LOOP에서 검증합니다.
83
+
81
84
  골의 수용선을 쓸 때는 [`03-verification-menu.md`](03-verification-menu.md)에서 주장에 맞는 검증 방법을 고른다. 이는 안내이며 골 발사를 막는 관문이 아니다.
82
85
 
83
86
  ## Cross-ref
@@ -360,9 +360,14 @@ edges:
360
360
  blocked: stopped
361
361
  fail: stopped
362
362
 
363
+ # recover@1 의 출구는 «다음 걸음»이다 — 전부 stopped 로 접으면 재진입이 사라져
364
+ # land-refused 한 걸음이 수렴하지 못한다(관측: pod-child-failed · 수렴 못 함).
365
+ # done = 거절 사유가 이미 풀렸다 → 착지 마무리(cleanup)
366
+ # rework = 같은 착지 단계를 «한 번» 다시 밟는다(wait-retry · request-review)
367
+ # needs-human · failed = 사람/판정에게 넘긴다
363
368
  - from: recover
364
369
  on: outcome
365
- map: { done: stopped, rework: stopped, needs-human: stopped, failed: stopped }
370
+ map: { done: cleanup, rework: merge, needs-human: stopped, failed: stopped }
366
371
 
367
372
  - { from: freeze-check, on: outcome, map: { open: merge, frozen: hold, taken: stopped, ok: merge, fail: stopped } }
368
373
  - { from: hold, to: freeze-check }
@@ -1,22 +1,42 @@
1
+ # Inventory reads stop at 100 pages; a capped/incomplete result fails closed before apply.
1
2
  classify:
2
3
  command: >-
3
4
  bun -e 'const ctx=await Bun.file(process.env.ELANOUS_GRAPH_CONTEXT).json();
4
5
  const mode=ctx.input?.mode ?? "shadow";
5
6
  if (mode !== "shadow" && mode !== "live") throw new Error("draft cleanup mode must be shadow or live");
6
7
  const repo=process.env.ELANOUS_GRAPH_DIR+"/../..";
7
- const run=Bun.spawnSync(["bun", repo+"/bin/elanous.mjs", "harness", "drafts", "sweep", "--json"], {cwd:process.env.ELANOUS_DRAFT_SWEEP_GIT_CWD || repo,stdout:"pipe",stderr:"pipe"});
8
- if (run.exitCode !== 0) { const out=new TextDecoder().decode(run.stdout); let why=""; try { why=JSON.parse(out).error ?? ""; } catch {} throw new Error(new TextDecoder().decode(run.stderr).trim() || why || "draft sweep exit " + run.exitCode); }
9
- const result=JSON.parse(new TextDecoder().decode(run.stdout));
10
- if (!result.complete || result.apply !== false) throw new Error(result.error ?? "draft sweep classification must be shadow and complete");
11
- console.log(JSON.stringify({outcome:mode,counts:result.counts,entries:result.entries}));'
8
+ const contextPath=process.env.ELANOUS_GRAPH_CONTEXT;
9
+ const evidence={stdout:contextPath+".draft-cleanup.stdout",stderr:contextPath+".draft-cleanup.stderr",meta:contextPath+".draft-cleanup.evidence.json"};
10
+ const {writeFile,chmod}=await import("node:fs/promises");
11
+ const maxOutputBytes=16*1024*1024;
12
+ const run=Bun.spawnSync(["bun", repo+"/bin/elanous.mjs", "harness", "drafts", "sweep", "--json", "--emit-apply-plan", "--max-pages", "100", "--max-drafts", "300", "--max-merged", "1000"], {cwd:process.env.ELANOUS_DRAFT_SWEEP_GIT_CWD || repo,timeout:540000,maxBuffer:maxOutputBytes,stdout:"pipe",stderr:"pipe"});
13
+ await writeFile(evidence.stdout, run.stdout, {mode:0o600}); await writeFile(evidence.stderr, run.stderr, {mode:0o600});
14
+ await writeFile(evidence.meta,JSON.stringify({exitCode:run.exitCode,stdoutBytes:run.stdout.byteLength,stderrBytes:run.stderr.byteLength,maxOutputBytes,truncated:run.exitedDueToMaxBuffer === true,stdoutPath:evidence.stdout,stderrPath:evidence.stderr,recordedAt:new Date().toISOString()}), {mode:0o600});
15
+ if (run.exitedDueToMaxBuffer) throw new Error("draft cleanup inventory incomplete (truncated: output exceeded "+maxOutputBytes+" bytes); raw evidence="+evidence.meta);
16
+ if (run.exitCode !== 0) { const out=new TextDecoder().decode(run.stdout).trim().slice(0,4000); const stderr=new TextDecoder().decode(run.stderr).trim().slice(0,4000); throw new Error("draft cleanup inventory incomplete (sweep rc="+run.exitCode+")"+(out ? ": "+out : "")+(stderr ? "\n"+stderr : "")+"; raw evidence="+evidence.meta); }
17
+ let result; try { result=JSON.parse(new TextDecoder().decode(run.stdout)); } catch (error) { throw new Error("draft cleanup inventory incomplete (invalid sweep JSON): "+String(error)+"; raw evidence="+evidence.meta); }
18
+ if (!result.complete) throw new Error("draft cleanup inventory incomplete: "+(result.error ?? "complete=false")+"; raw evidence="+evidence.meta);
19
+ if (result.apply !== false) throw new Error("draft sweep classification must be shadow; raw evidence="+evidence.meta);
20
+ if (!result.applyPlan || result.applyPlan.entries.length !== result.entries.length) throw new Error("classification apply plan missing or incomplete");
21
+ console.log(JSON.stringify({outcome:mode,counts:result.counts,entries:result.entries,applyPlan:result.applyPlan}));'
12
22
  timeout_ms: 600000
13
23
  apply:
14
24
  command: >-
15
25
  bun -e 'const ctx=await Bun.file(process.env.ELANOUS_GRAPH_CONTEXT).json();
16
26
  if (ctx.input?.mode !== "live" || ctx.outputs?.classify?.outcome !== "live") throw new Error("draft cleanup apply requires live mode and completed classification");
27
+ const plan=ctx.outputs?.classify?.applyPlan;
28
+ if (!plan || plan.version !== 1 || !Array.isArray(plan.entries)) throw new Error("draft cleanup apply requires the frozen classify plan");
17
29
  const repo=process.env.ELANOUS_GRAPH_DIR+"/../..";
18
- const run=Bun.spawnSync(["bun", repo+"/bin/elanous.mjs", "harness", "drafts", "sweep", "--json", "--apply"], {cwd:process.env.ELANOUS_DRAFT_SWEEP_GIT_CWD || repo,stdout:"pipe",stderr:"pipe"});
19
- if (run.exitCode !== 0) { const out=new TextDecoder().decode(run.stdout); let why=""; try { why=JSON.parse(out).error ?? ""; } catch {} throw new Error(new TextDecoder().decode(run.stderr).trim() || why || "draft sweep exit " + run.exitCode); }
30
+ const planPath=process.env.ELANOUS_GRAPH_CONTEXT+".draft-apply-plan.json";
31
+ let run;
32
+ try {
33
+ await Bun.write(planPath, JSON.stringify(plan));
34
+ run=Bun.spawnSync(["bun", repo+"/bin/elanous.mjs", "harness", "drafts", "sweep", "--json", "--apply", "--apply-plan-file", planPath], {cwd:process.env.ELANOUS_DRAFT_SWEEP_GIT_CWD || repo,timeout:840000,stdout:"pipe",stderr:"pipe"});
35
+ } finally {
36
+ const {unlink}=await import("node:fs/promises");
37
+ await unlink(planPath).catch(()=>{});
38
+ }
39
+ if (run.exitCode !== 0) { const out=new TextDecoder().decode(run.stdout); let why=""; try { why=JSON.parse(out).error ?? ""; } catch {} const stderr=new TextDecoder().decode(run.stderr).trim(); throw new Error([why,stderr].filter(Boolean).join("\n") || "draft sweep exit " + run.exitCode); }
20
40
  const result=JSON.parse(new TextDecoder().decode(run.stdout));
21
41
  if (!result.complete || result.apply !== true) throw new Error(result.error ?? "draft sweep application must be live and complete");
22
42
  console.log(JSON.stringify({outcome:"ok",counts:result.counts,entries:result.entries}));'
@@ -459,6 +459,20 @@ nodes:
459
459
  tools: none
460
460
  outputs: [decision_card]
461
461
 
462
+ # LAND-REFUSAL-EDGES 첫 조각 — 착지 거부 한 건을 recover@1(#29093 read-only 유닛)에 «근거째» 결속한다.
463
+ # pr land 가 거부 줄 원문·cardId·PR·head·planner 답을 merge→recover 간선 한 행에 남긴다(src/cli/pr-land-recovery.ts).
464
+ # ⛔ 실행은 아직 없다(execution=none) — 다음 동작은 기존 TA·열차 입장이 쥔다(LAND-REFUSAL-EXEC 후속).
465
+ - node_id: recover
466
+ group: recover
467
+ journey_stage: recover
468
+ kind: subgraph
469
+ recipe: none
470
+ max_visits: 1
471
+ call: recover@1
472
+ budget: { inner_steps: 4 }
473
+ terminal_stages: []
474
+ contract: { inputs: [ask, context, prior], tools: read-only, outputs: [result, evidence] }
475
+
462
476
  # LAND-REFUSAL-EDGES: destinations only; recovery execution is a later slice.
463
477
  - node_id: ready
464
478
  group: land
@@ -665,5 +679,15 @@ edges:
665
679
  public-export-leak: next-move
666
680
  other: next-move
667
681
 
682
+ # 거부 근거의 결속 간선 — 위 refusal map(목적지)과 «함께» 남는다. 목적지 계약은 그대로다.
683
+ - from: merge
684
+ on: recovery
685
+ map:
686
+ land-refused: recover
687
+
688
+ - from: recover
689
+ on: outcome
690
+ map: { done: next-move, rework: next-move, needs-human: decision-card, failed: decision-card }
691
+
668
692
  - from: merge
669
693
  to: cleanup
@@ -11,6 +11,9 @@ gate:
11
11
  command: 'bun scripts/release-loop/gate-node.ts --json'
12
12
  # 4h — the Pod gate took 2h02m on 09-30 (G1f ②) and the 0.2.5 loop was cut at exactly 2h with no verdict; K9 (≤15 min) is the real fix.
13
13
  timeout_ms: 14400000
14
+ traffic-gate-passed:
15
+ command: 'bun scripts/release-loop/traffic-node.ts traffic-gate-passed'
16
+ timeout_ms: 30000
14
17
  gate-triage:
15
18
  command: 'bun scripts/release-loop/gate-triage-node.ts'
16
19
  timeout_ms: 60000
@@ -59,6 +62,9 @@ docs-land:
59
62
  verify:
60
63
  command: 'bun scripts/release-loop/verify-node.ts'
61
64
  timeout_ms: 1800000
65
+ traffic-verify-complete:
66
+ command: 'bun scripts/release-loop/traffic-node.ts traffic-verify-complete'
67
+ timeout_ms: 30000
62
68
  vault-note:
63
69
  command: 'bun scripts/release-loop/vault-note-node.ts'
64
70
  timeout_ms: 60000
@@ -19,6 +19,8 @@ nodes:
19
19
  - { node_id: export-check, kind: gate, recipe: 'cmd:export-check', max_visits: 1 }
20
20
  - { node_id: prefetch, kind: agent, recipe: 'cmd:docs', max_visits: 1 }
21
21
  - { node_id: gate, kind: gate, recipe: 'cmd:gate', max_visits: 1, notify: { on: [fail] } }
22
+ # Deterministic, best-effort traffic transition; it never changes the release verdict.
23
+ - { node_id: traffic-gate-passed, kind: gate, recipe: 'cmd:traffic-gate-passed', max_visits: 1 }
22
24
  # S1 shadow: classify and record only; all exits still terminate through the existing failed node.
23
25
  - { node_id: gate-triage, kind: judge, recipe: 'cmd:gate-triage', max_visits: 1 }
24
26
  - { node_id: mac-smoke, kind: gate, recipe: 'cmd:mac-smoke', max_visits: 1 }
@@ -29,12 +31,17 @@ nodes:
29
31
  - { node_id: docs, kind: agent, recipe: 'cmd:docs', max_visits: 1 }
30
32
  - { node_id: known-issues, kind: agent, recipe: 'cmd:known-issues', max_visits: 1 }
31
33
  - { node_id: notes-check, kind: gate, recipe: 'cmd:notes-check', max_visits: 1 }
34
+ # RELEASE-GRAPH-SELFHEAL: a failed notes check re-enters through the docs repair node before one recheck.
35
+ # Repair is observation-only: it introduces no approval, budget, or loop-cap policy of its own.
36
+ - { node_id: notes-repair, kind: agent, recipe: 'cmd:docs', max_visits: 1 }
37
+ - { node_id: notes-recheck, kind: gate, recipe: 'cmd:notes-check', max_visits: 1 }
32
38
  - { node_id: auto-approve, kind: gate, recipe: 'cmd:auto-approve', max_visits: 1 }
33
39
  - { node_id: approve-publish, kind: hitl, recipe: 'approval:publish', max_visits: 1 }
34
40
  - { node_id: publish, kind: git, recipe: 'cmd:publish-command', max_visits: 1, notify: { on: [ok, fail] } }
35
41
  - { node_id: npm-publish, kind: git, recipe: 'cmd:npm-publish', max_visits: 1 }
36
42
  - { node_id: docs-land, kind: git, recipe: 'cmd:docs-land', max_visits: 1 }
37
43
  - { node_id: verify, kind: gate, recipe: 'cmd:verify', max_visits: 1, notify: { on: [ok, fail] } }
44
+ - { node_id: traffic-verify-complete, kind: gate, recipe: 'cmd:traffic-verify-complete', max_visits: 1 }
38
45
  - { node_id: vault-note, kind: gate, recipe: 'cmd:vault-note', max_visits: 1 }
39
46
  - { node_id: release-story, kind: gate, recipe: 'cmd:release-story', max_visits: 1 }
40
47
  - { node_id: ops-upgrade, kind: agent, recipe: 'cmd:ops-upgrade', max_visits: 1 }
@@ -49,7 +56,9 @@ edges:
49
56
  - { from: export-check, on: outcome, map: { ok: prefetch, fail: failed, error: failed } }
50
57
  # Prefetch never gates: even a crashed prefetch node is a cache miss — the late nodes take their original paths.
51
58
  - { from: prefetch, on: outcome, map: { ok: gate, fail: gate, error: gate } }
52
- - { from: gate, on: outcome, map: { ok: mac-smoke, fail: gate-triage, error: gate-triage } }
59
+ - { from: gate, on: outcome, map: { ok: traffic-gate-passed, fail: gate-triage, error: gate-triage } }
60
+ # Warning-only: the transition result stays truthful; every outcome continues to the next release node.
61
+ - { from: traffic-gate-passed, on: outcome, map: { ok: mac-smoke, fail: mac-smoke, error: mac-smoke } }
53
62
  - { from: gate-triage, on: outcome, map: { ok: failed, fail: failed, error: failed } }
54
63
  # Warning-only: a macOS failure or unmeasured run never blocks publishing — auto-approve shows it as a warning row.
55
64
  - { from: mac-smoke, on: outcome, map: { ok: pwa, fail: pwa, error: pwa } }
@@ -59,15 +68,19 @@ edges:
59
68
  - { from: tui, on: outcome, map: { ok: docs, fail: failed, error: failed } }
60
69
  - { from: docs, on: outcome, map: { ok: known-issues, fail: failed, error: failed } }
61
70
  - { from: known-issues, on: outcome, map: { ok: notes-check, fail: failed, error: failed } }
62
- - { from: notes-check, on: outcome, map: { ok: auto-approve, fail: failed, error: failed } }
71
+ # RELEASE-GRAPH-SELFHEAL: fail/error re-enter notes-check through one repair; publish still requires a passing recheck.
72
+ - { from: notes-check, on: outcome, map: { ok: auto-approve, fail: notes-repair, error: notes-repair } }
73
+ - { from: notes-repair, on: outcome, map: { ok: notes-recheck, fail: failed, error: failed } }
74
+ - { from: notes-recheck, on: outcome, map: { ok: auto-approve, fail: failed, error: failed } }
63
75
  - { from: auto-approve, on: outcome, map: { ok: publish, fail: approve-publish, error: approve-publish } }
64
76
  - { from: approve-publish, on: outcome, map: { ok: publish, fail: failed } }
65
77
  - { from: publish, on: outcome, map: { ok: npm-publish, fail: failed, error: failed } }
66
- - { from: npm-publish, on: outcome, map: { ok: docs-land, fail: docs-land, error: docs-land } }
78
+ - { from: npm-publish, on: outcome, map: { ok: docs-land, fail: failed, error: failed } }
67
79
  # RELEASE-DEVBUMP-ALWAYS: after a successful publish every fail/error routes through version-dev-bump —
68
80
  # a published release always hands main to its own next -dev, then still finishes failed.
69
81
  - { from: docs-land, on: outcome, map: { ok: verify, fail: version-dev-bump-after-failure, error: version-dev-bump-after-failure } }
70
- - { from: verify, on: outcome, map: { ok: vault-note, fail: version-dev-bump-after-failure, error: version-dev-bump-after-failure } }
82
+ - { from: verify, on: outcome, map: { ok: traffic-verify-complete, fail: version-dev-bump-after-failure, error: version-dev-bump-after-failure } }
83
+ - { from: traffic-verify-complete, on: outcome, map: { ok: vault-note, fail: vault-note, error: vault-note } }
71
84
  # Warning-only: vault note and release story failures after publication never block operational upgrades.
72
85
  - { from: vault-note, on: outcome, map: { ok: release-story, fail: release-story, error: release-story } }
73
86
  - { from: release-story, on: outcome, map: { ok: ops-upgrade, fail: ops-upgrade, error: ops-upgrade } }
@@ -0,0 +1,44 @@
1
+ # graphs/wizard/recipes.yaml — wizard-loop 그래프의 노드별 명령 카탈로그
2
+ #
3
+ # 로더(src/self-implement/graph-yaml.ts)는 recipes.yaml 을 «템플릿»이 아니라
4
+ # 명령 카탈로그로 본다 — 그래프 러너(src/graph-runner/runner.ts)가 노드 id 로 찾아 실행한다.
5
+ # 형식은 src/graph-wizard/steps.ts 의 recipesYamlFor 가 내는 것과 같다:
6
+ # cmd:<id> → command: "<bin> graph step <step> --arg '<arg>'" · timeout_ms
7
+ # approval:<id> → approval: "<사람에게 물을 한 줄>"
8
+ # 커맨드 문자열은 따옴표로 감싼다 — 산문 안의 ':' 가 중첩 매핑으로 읽히지 않게.
9
+
10
+ intake:
11
+ command: "eln graph step llm --arg '지시를 한 줄로: 무엇을 만들려는가 — 막연해도 된다'"
12
+ timeout_ms: 240000
13
+ classify:
14
+ command: "eln graph step llm --arg '분류: 종류(harness|workflow) · 결과물 · 필요한 도구 · 위험도를 적어라'"
15
+ timeout_ms: 240000
16
+ ground:
17
+ command: "eln graph step check --arg '저장소 근거: 이미 있는 부품·경로·시험을 실제로 읽어 적어라. 없으면 없다고 적어라'"
18
+ timeout_ms: 240000
19
+ gap:
20
+ command: "eln graph step llm --arg '차이: refs 와 observed 를 견주어 지금 없는 것을 gap 으로 뽑아라. 비었으면 비었다고 적어라'"
21
+ timeout_ms: 240000
22
+ approve:
23
+ approval: "분류·근거·gap 을 읽었나요? 이 계획으로 진행할까요 — 승인 또는 거부"
24
+ acquire:
25
+ command: "eln graph step knowledge-rag --arg 'gap 을 메울 자료: 저장소·문서·설치된 팩에서 인용을 모아라'"
26
+ timeout_ms: 240000
27
+ generate:
28
+ command: "eln graph step llm --arg 'gap 을 메우는 그래프 YAML 초안을 써라 — 노드·간선·종료 노드는 스키마 그대로'"
29
+ timeout_ms: 240000
30
+ compose:
31
+ command: "eln graph step llm --arg '초안을 하나의 그래프로 합쳐라 — 노드 id 와 recipes 키를 맞추고 간선을 잇는다'"
32
+ timeout_ms: 240000
33
+ verify:
34
+ command: "eln graph step check --arg '검증: 로더 불변식(노드 종류·간선 참조·to/map 배타·종료 done|failed)과 드라이런을 확인하라'"
35
+ timeout_ms: 240000
36
+ store:
37
+ command: "eln graph step llm --arg '확정된 그래프를 저장 경로 graphs/<id>.yaml 에 적고 recipes 도 같은 디렉터리에 남겨라'"
38
+ timeout_ms: 240000
39
+ run:
40
+ command: "eln graph step notify-me --arg '저장된 그래프를 실행하고 결과 상태와 지난 경로를 알려라'"
41
+ timeout_ms: 240000
42
+ improve:
43
+ command: "eln graph step summarize --arg '개선: 이번 루프에서 무엇이 아쉬웠고 다음에 무엇을 바꿀지 한 줄씩'"
44
+ timeout_ms: 240000
@@ -0,0 +1,44 @@
1
+ graph_id: wizard-loop
2
+ version: 1
3
+ entry_node: intake
4
+ terminal_nodes: [done, failed]
5
+ metadata:
6
+ title: 마법사 루프 — 지시 하나를 근거 있는 산출물로 닫는다
7
+ description: >-
8
+ intake→classify→ground→gap→approve→acquire/generate→compose→verify→store→run→improve 순서를 도는
9
+ 마법사 루프 선언. 불변식 W1~W4 는 docs/RFC-smart-wizard-to-loop-collective-2026-10-08.md §A2 를 따른다.
10
+ recipes.yaml 은 이 그래프의 명령 카탈로그다(로더는 recipes.yaml 을 템플릿으로 읽지 않는다).
11
+ limits:
12
+ max_steps: 200
13
+ max_wall_ms: 5400000
14
+ nodes:
15
+ # W1 승인 포인트: approve 는 kind=hitl · recipe=approval:* 만 쓴다(사람 승인 없이는 진행하지 않는다).
16
+ - { node_id: intake, kind: agent, recipe: 'cmd:intake', max_visits: 1 } # 지시 접수 | llm | 사용자 지시와 첨부 자료를 하나의 인테이크로 정리
17
+ - { node_id: classify, kind: agent, recipe: 'cmd:classify', max_visits: 1 } # 지시 분류 | llm | 지시 유형·필요 산출물·위험도를 분류
18
+ - { node_id: ground, kind: agent, recipe: 'cmd:ground', max_visits: 1 } # 근거 수집 | web-search | 지시가 전제하는 사실을 찾아 근거를 모은다
19
+ - { node_id: gap, kind: judge, recipe: 'cmd:gap', max_visits: 2 } # 공백 판정 | check | 근거가 지시를 받치는지 판정한다 (결과: ok/gap/fail)
20
+ - { node_id: approve, kind: hitl, recipe: 'approval:approve', max_visits: 1 } # 계획 승인 | approval | 사람이 계획과 근거를 보고 진행을 승인
21
+ - { node_id: acquire, kind: agent, recipe: 'cmd:acquire', max_visits: 2 } # 자료 보강 | web-search | gap 이 지목한 공백을 메울 자료를 더 가져온다
22
+ - { node_id: generate, kind: agent, recipe: 'cmd:generate', max_visits: 1 } # 초안 생성 | llm | 승인된 계획으로 초안을 만든다
23
+ - { node_id: compose, kind: agent, recipe: 'cmd:compose', max_visits: 3 } # 구성 조립 | llm | 초안과 근거를 하나의 산출물로 조립 (verify rework 의 back-edge 대상)
24
+ - { node_id: verify, kind: judge, recipe: 'cmd:verify', max_visits: 2 } # 검증 | check | 산출물이 지시·근거에 맞는지 검증 (결과: ok/rework/fail)
25
+ - { node_id: store, kind: agent, recipe: 'cmd:store', max_visits: 1 } # 저장 | knowledge-rag | 검증된 산출물을 지식에 적재
26
+ - { node_id: run, kind: agent, recipe: 'cmd:run', max_visits: 1 } # 실행 | llm | 산출물로 지시를 실제로 수행
27
+ - { node_id: improve, kind: agent, recipe: 'cmd:improve', max_visits: 1 } # 개선 | llm | 실행 결과를 다음 루프의 개선점으로 남긴다
28
+ - { node_id: done, kind: gate, recipe: none, max_visits: 1 } # 완료
29
+ - { node_id: failed, kind: gate, recipe: none, max_visits: 1 } # 실패
30
+ edges:
31
+ - { from: intake, on: outcome, map: { ok: classify, fail: failed } }
32
+ - { from: classify, on: outcome, map: { ok: ground, fail: failed } }
33
+ - { from: ground, on: outcome, map: { ok: gap, fail: failed } }
34
+ # W2 공백 분기: gap 은 outcome 키로 approve(충분) / acquire(보강) 로 갈라진다.
35
+ - { from: gap, on: outcome, map: { ok: approve, gap: acquire, fail: failed } }
36
+ - { from: acquire, on: outcome, map: { ok: approve, fail: failed } }
37
+ - { from: approve, on: outcome, map: { ok: generate, fail: failed } }
38
+ - { from: generate, on: outcome, map: { ok: compose, fail: failed } }
39
+ - { from: compose, on: outcome, map: { ok: verify, fail: failed } }
40
+ # W3 되돌림: verify 실패(rework)는 compose 로 돌아가고 compose.max_visits=3 ≥ 2.
41
+ - { from: verify, on: outcome, map: { ok: store, rework: compose, fail: failed } }
42
+ - { from: store, on: outcome, map: { ok: run, fail: failed } }
43
+ - { from: run, on: outcome, map: { ok: improve, fail: failed } }
44
+ - { from: improve, on: outcome, map: { ok: done, fail: failed } }
@@ -0,0 +1,54 @@
1
+ graph_id: work-draft-close
2
+ version: 1
3
+ launcher: graph-run
4
+ entry_node: decide
5
+ terminal_nodes: [done, failed]
6
+ runner_inputs: [mapRunId, snapshotTime, inventoryComplete, inventory, mainSha, item]
7
+ nodes:
8
+ - node_id: decide
9
+ kind: observe
10
+ recipe: 'cmd:draft-close-decide'
11
+ max_visits: 1
12
+ contract:
13
+ inputs: [mapRunId, snapshotTime, inventoryComplete, inventory, mainSha, item]
14
+ tools: read-only
15
+ outputs: [outcome, result, evidence]
16
+ - node_id: harvest
17
+ kind: observe
18
+ recipe: 'cmd:draft-close-emit-harvest'
19
+ max_visits: 1
20
+ contract:
21
+ inputs: [result, evidence]
22
+ tools: none
23
+ outputs: [outcome, result, evidence]
24
+ - node_id: close-candidate
25
+ kind: observe
26
+ recipe: 'cmd:draft-close-emit-close-candidate'
27
+ max_visits: 1
28
+ contract:
29
+ inputs: [result, evidence]
30
+ tools: none
31
+ outputs: [outcome, result, evidence]
32
+ - node_id: hold
33
+ kind: observe
34
+ recipe: 'cmd:draft-close-emit-hold'
35
+ max_visits: 1
36
+ contract:
37
+ inputs: [result, evidence]
38
+ tools: none
39
+ outputs: [outcome, result, evidence]
40
+ - { node_id: done, kind: gate, recipe: none, max_visits: 1 }
41
+ - { node_id: failed, kind: observe, recipe: none, max_visits: 1 }
42
+ edges:
43
+ - from: decide
44
+ on: outcome
45
+ map: { harvest: harvest, 'close-candidate': close-candidate, hold: hold, failed: failed }
46
+ - from: harvest
47
+ on: outcome
48
+ map: { done: done, failed: failed }
49
+ - from: close-candidate
50
+ on: outcome
51
+ map: { done: done, failed: failed }
52
+ - from: hold
53
+ on: outcome
54
+ map: { done: done, failed: failed }
@@ -0,0 +1,37 @@
1
+ # GREEN-CLOSE-RECIPE: deterministic evidence walk; no checklist writes.
2
+ graph_id: green-close
3
+ version: 1
4
+ entry_node: e1
5
+ terminal_nodes: [done, failed]
6
+ nodes:
7
+ - { node_id: e1, kind: observe, recipe: 'cmd:e1', max_visits: 1 }
8
+ - { node_id: e2, kind: gate, recipe: 'cmd:e2', max_visits: 1 }
9
+ - { node_id: e3, kind: judge, recipe: 'cmd:e3', max_visits: 1 }
10
+ - { node_id: produce, kind: observe, recipe: 'cmd:produce', max_visits: 1 }
11
+ - { node_id: boundary, kind: gate, recipe: 'cmd:boundary', max_visits: 1 }
12
+ - { node_id: make-test, kind: agent, recipe: 'cmd:make-test', max_visits: 1 }
13
+ - { node_id: result, kind: observe, recipe: 'cmd:result', max_visits: 1 }
14
+ - { node_id: done, kind: gate, recipe: none, max_visits: 1 }
15
+ - { node_id: failed, kind: gate, recipe: none, max_visits: 1 }
16
+ edges:
17
+ - from: e1
18
+ on: outcome
19
+ map: { pass: e2, fail: result, hold: result }
20
+ - from: e2
21
+ on: outcome
22
+ map: { pass: e3, fail: result, hold: result }
23
+ - from: e3
24
+ on: outcome
25
+ map: { pass: produce, missing: make-test, hold: result }
26
+ - from: produce
27
+ on: outcome
28
+ map: { pass: boundary, hold: result }
29
+ - from: boundary
30
+ on: outcome
31
+ map: { pass: result, hold: result }
32
+ - from: make-test
33
+ on: outcome
34
+ map: { 'mock-pr': result, hold: result }
35
+ - from: result
36
+ on: outcome
37
+ map: { ok: done, fail: failed }