elanous 0.2.34 → 0.2.36

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 (802) 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/chunks/{abb4b98b.163e0f56e84ae35d.js → 053a429e.9a63436527cc751c.js} +1 -1
  4. package/apps/pwa/out/_next/static/chunks/109.f196abf3484bb97f.js +287 -0
  5. package/apps/pwa/out/_next/static/chunks/1201.afbfc5b1c5e5cbe4.js +1 -0
  6. package/apps/pwa/out/_next/static/chunks/1517.9275b89572098ff3.js +1 -0
  7. package/apps/pwa/out/_next/static/chunks/1574.ad11f8db8396ab45.js +1 -0
  8. package/apps/pwa/out/_next/static/chunks/1614.7a8c5c40aee0261f.js +1 -0
  9. package/apps/pwa/out/_next/static/chunks/1871-f1eb29d8dbb4065b.js +1 -0
  10. package/apps/pwa/out/_next/static/chunks/190.285c832bd9626f8c.js +64 -0
  11. package/apps/pwa/out/_next/static/chunks/2193.0ea24c4a7aa1d004.js +36 -0
  12. package/apps/pwa/out/_next/static/chunks/223-ad865c1e80491d78.js +1 -0
  13. package/apps/pwa/out/_next/static/chunks/2265-f0d90b6dbec05f81.js +1 -0
  14. package/apps/pwa/out/_next/static/chunks/2267.eb4a62a209f09ec4.js +149 -0
  15. package/apps/pwa/out/_next/static/chunks/2341-86cd06c0cf01aa33.js +1 -0
  16. package/apps/pwa/out/_next/static/chunks/2352.9abc42422bade876.js +1 -0
  17. package/apps/pwa/out/_next/static/chunks/2397-c1653a816061842d.js +1 -0
  18. package/apps/pwa/out/_next/static/chunks/2500.cbc1257b774aae52.js +1 -0
  19. package/apps/pwa/out/_next/static/chunks/{6086.913a69e6fa3e4a8b.js → 2683.c9773a0c589b031b.js} +4 -4
  20. package/apps/pwa/out/_next/static/chunks/2709.8e1889034255fc5f.js +24 -0
  21. package/apps/pwa/out/_next/static/chunks/{5576-82d3703636d5c4b9.js → 275-02ea4c2a33980422.js} +3 -3
  22. package/apps/pwa/out/_next/static/chunks/{ffdc3a04.b9c23c1b28dd4a96.js → 2812ca6a.3b9f4a7a08885744.js} +1 -1
  23. package/apps/pwa/out/_next/static/chunks/284.ac77c0db55bfd3a8.js +1 -0
  24. package/apps/pwa/out/_next/static/chunks/2941.3c3546f96bc6efa7.js +1 -0
  25. package/apps/pwa/out/_next/static/chunks/2976.b000698a3c6512dc.js +24 -0
  26. package/apps/pwa/out/_next/static/chunks/{9550.d5f76828f972058c.js → 2986.45d7652e4f13557e.js} +2 -2
  27. package/apps/pwa/out/_next/static/chunks/3031-85328a92fcce4da6.js +1 -0
  28. package/apps/pwa/out/_next/static/chunks/{8817.61bb7ffbba502ecb.js → 3136.30aaaa5fa03662a3.js} +1 -1
  29. package/apps/pwa/out/_next/static/chunks/{9131-fce7256c4180c4a5.js → 3148-98efd4869d660a87.js} +1 -1
  30. package/apps/pwa/out/_next/static/chunks/{3498.cf2a15a8a9e5b926.js → 3155.2587a55196ecb394.js} +3 -3
  31. package/apps/pwa/out/_next/static/chunks/3277.785db1cf09f98601.js +1 -0
  32. package/apps/pwa/out/_next/static/chunks/3320-f9c77381f85a2c0a.js +1 -0
  33. package/apps/pwa/out/_next/static/chunks/{3103.84470c8445962f04.js → 3324.a09703033abcbd2f.js} +1 -1
  34. package/apps/pwa/out/_next/static/chunks/3386-91049feabff9a94e.js +1 -0
  35. package/apps/pwa/out/_next/static/chunks/339.80afb7e8839372af.js +8 -0
  36. package/apps/pwa/out/_next/static/chunks/3410.7f9af5ab77cbe65f.js +115 -0
  37. package/apps/pwa/out/_next/static/chunks/{3819.163d4777f0a597f6.js → 3538.a445e50bb359d068.js} +2 -2
  38. package/apps/pwa/out/_next/static/chunks/3540c645.2595a6af01a97672.js +1 -0
  39. package/apps/pwa/out/_next/static/chunks/3621.581b2054cc14bee4.js +286 -0
  40. package/apps/pwa/out/_next/static/chunks/3676.8c28d16fd84ca843.js +1 -0
  41. package/apps/pwa/out/_next/static/chunks/{3414.172ad4ca2d9b08e8.js → 3727.7949ccaacaa71242.js} +2 -2
  42. package/apps/pwa/out/_next/static/chunks/375-b84540853523fe52.js +1 -0
  43. package/apps/pwa/out/_next/static/chunks/3757-180308bc61021b05.js +1 -0
  44. package/apps/pwa/out/_next/static/chunks/379.ee262e37586fe1ae.js +74 -0
  45. package/apps/pwa/out/_next/static/chunks/3840-5825d56d46976a92.js +1 -0
  46. package/apps/pwa/out/_next/static/chunks/3969-81054381eaec4c4c.js +1 -0
  47. package/apps/pwa/out/_next/static/chunks/{9b48c871.204d5d13e7809bd0.js → 3a3d9966.cc4d4585a2708e7c.js} +1 -1
  48. package/apps/pwa/out/_next/static/chunks/4067-bf9aa60547972937.js +1 -0
  49. package/apps/pwa/out/_next/static/chunks/4116.a84a92a2492c080e.js +1 -0
  50. package/apps/pwa/out/_next/static/chunks/4176.e5729c93c29151eb.js +104 -0
  51. package/apps/pwa/out/_next/static/chunks/4227-e6c84686bc8946ca.js +1 -0
  52. package/apps/pwa/out/_next/static/chunks/{6740.43de73fc427c9fe2.js → 4286.b70c4520306817e8.js} +1 -1
  53. package/apps/pwa/out/_next/static/chunks/4304.e9b2512834a9e23e.js +23 -0
  54. package/apps/pwa/out/_next/static/chunks/4327.b9e08a71c0009348.js +1 -0
  55. package/apps/pwa/out/_next/static/chunks/{8548.036c344973968847.js → 4615.8525eb0add35eba6.js} +1 -1
  56. package/apps/pwa/out/_next/static/chunks/4946.bd106eafd668f248.js +148 -0
  57. package/apps/pwa/out/_next/static/chunks/{3411-f87314c6c66ebc73.js → 5085-bce4904931767ca6.js} +1 -1
  58. package/apps/pwa/out/_next/static/chunks/5125.2eb9968b83767193.js +93 -0
  59. package/apps/pwa/out/_next/static/chunks/5128-75b733fd74a9a1eb.js +1 -0
  60. package/apps/pwa/out/_next/static/chunks/{3110.0a7065f25c841818.js → 528.38ce20ef8aa251ff.js} +16 -16
  61. package/apps/pwa/out/_next/static/chunks/5489f3fe.4bb1458b09f6dead.js +122 -0
  62. package/apps/pwa/out/_next/static/chunks/{1644.35dd25240ae24e4b.js → 552.b7d061ad91eeac51.js} +2 -2
  63. package/apps/pwa/out/_next/static/chunks/5560-2a4648f6a30f16e7.js +1 -0
  64. package/apps/pwa/out/_next/static/chunks/{3837.722e053fb9f321ad.js → 5711.957b095705c12560.js} +1 -1
  65. package/apps/pwa/out/_next/static/chunks/{2124.ed5bf480cea7f85b.js → 575.d929793a53f27c4b.js} +1 -1
  66. package/apps/pwa/out/_next/static/chunks/5772-e29e14f8ff127122.js +1 -0
  67. package/apps/pwa/out/_next/static/chunks/5887.5b2f5b44ce0f7e9a.js +1 -0
  68. package/apps/pwa/out/_next/static/chunks/5899-4c112a2d908cf97f.js +1 -0
  69. package/apps/pwa/out/_next/static/chunks/{7562.948255cbc3e79d33.js → 599.c39c571b6733f2a2.js} +2 -2
  70. package/apps/pwa/out/_next/static/chunks/6041.1b65efb796ebc2a5.js +79 -0
  71. package/apps/pwa/out/_next/static/chunks/6057-765c0a26028c86b2.js +1 -0
  72. package/apps/pwa/out/_next/static/chunks/6142.f289e0d039f453a6.js +1 -0
  73. package/apps/pwa/out/_next/static/chunks/6199-6bcd61d2a3910e04.js +1 -0
  74. package/apps/pwa/out/_next/static/chunks/6236.cdf7293e710a9b2d.js +1 -0
  75. package/apps/pwa/out/_next/static/chunks/6387-237e079dac9a3ae6.js +1 -0
  76. package/apps/pwa/out/_next/static/chunks/6448-b6d272d074276e14.js +1 -0
  77. package/apps/pwa/out/_next/static/chunks/6466-92e65a48490b68a9.js +1 -0
  78. package/apps/pwa/out/_next/static/chunks/6566.926a1d1b7c911442.js +1 -0
  79. package/apps/pwa/out/_next/static/chunks/6580-cdc0e4a634ce4708.js +1 -0
  80. package/apps/pwa/out/_next/static/chunks/6659-b242dc31b20b3f29.js +1 -0
  81. package/apps/pwa/out/_next/static/chunks/6690.c5d9b321b1f79384.js +1 -0
  82. package/apps/pwa/out/_next/static/chunks/671-e9b6ad0c771c5514.js +1 -0
  83. package/apps/pwa/out/_next/static/chunks/6862.bcbf89dd0f4496b3.js +27 -0
  84. package/apps/pwa/out/_next/static/chunks/6912-7b375ee48732c767.js +1 -0
  85. package/apps/pwa/out/_next/static/chunks/{5446.edf141cff9ef647d.js → 6925.562d532110879886.js} +1 -1
  86. package/apps/pwa/out/_next/static/chunks/{7005.1623d2aea78eb85f.js → 6943.c6b24124853a47b2.js} +1 -1
  87. package/apps/pwa/out/_next/static/chunks/727.7deb87749b0a343a.js +1 -0
  88. package/apps/pwa/out/_next/static/chunks/{8368.014caa8de2f5af34.js → 7481.39f7a4654907bf6e.js} +1 -1
  89. package/apps/pwa/out/_next/static/chunks/7545.b1aa42cd15503319.js +1 -0
  90. package/apps/pwa/out/_next/static/chunks/7551-416d298c2dc4a9ab.js +1 -0
  91. package/apps/pwa/out/_next/static/chunks/{2554.3b5e200f5f5cfcd6.js → 771.c3cdb6c1f7f47c02.js} +16 -16
  92. package/apps/pwa/out/_next/static/chunks/7784.1f0ac4a16d190cf4.js +1 -0
  93. package/apps/pwa/out/_next/static/chunks/7870-309de463786ac1fc.js +1 -0
  94. package/apps/pwa/out/_next/static/chunks/7888-e29b151bb6a3bb8b.js +1 -0
  95. package/apps/pwa/out/_next/static/chunks/{3121.779fafe3e44612c5.js → 7891.03f910124a737985.js} +1 -1
  96. package/apps/pwa/out/_next/static/chunks/7905-6ba78d9234608f79.js +1 -0
  97. package/apps/pwa/out/_next/static/chunks/8037.e254fd797aa224d1.js +1 -0
  98. package/apps/pwa/out/_next/static/chunks/8207.f527886b7c464529.js +1 -0
  99. package/apps/pwa/out/_next/static/chunks/856.50bda61439d465e6.js +62 -0
  100. package/apps/pwa/out/_next/static/chunks/{9a8cb466.cc9fc9e6e46038aa.js → 873d6c12.09bd499f57171543.js} +1 -1
  101. package/apps/pwa/out/_next/static/chunks/{7431.3051e9b8a4372d2d.js → 8904.7d51af2dc033965c.js} +2 -2
  102. package/apps/pwa/out/_next/static/chunks/9031-92e9b487edb681ee.js +1 -0
  103. package/apps/pwa/out/_next/static/chunks/9060.5410d9f6a95f6287.js +90 -0
  104. package/apps/pwa/out/_next/static/chunks/914.8abefd48d579547b.js +94 -0
  105. package/apps/pwa/out/_next/static/chunks/9187-c87a2207d4ac5d46.js +1 -0
  106. package/apps/pwa/out/_next/static/chunks/{1895-60ed0e341c658bd4.js → 9250-072df22eaadaa6b5.js} +1 -1
  107. package/apps/pwa/out/_next/static/chunks/9289.3e92f278821e18e0.js +1 -0
  108. package/apps/pwa/out/_next/static/chunks/9319.7816d3cc741cd34f.js +1 -0
  109. package/apps/pwa/out/_next/static/chunks/9327-e016bb9f1674d24f.js +1 -0
  110. package/apps/pwa/out/_next/static/chunks/9365.3de48bf75193ff9a.js +77 -0
  111. package/apps/pwa/out/_next/static/chunks/9383.5b5e9aa56b5fea97.js +1 -0
  112. package/apps/pwa/out/_next/static/chunks/9387-cb929573ef436f39.js +1 -0
  113. package/apps/pwa/out/_next/static/chunks/9489.c27becacc3283dec.js +1 -0
  114. package/apps/pwa/out/_next/static/chunks/{2547.dd27303624cb4da8.js → 9514.131c52cc75fe6439.js} +1 -1
  115. package/apps/pwa/out/_next/static/chunks/9536.28962663c7734376.js +1 -0
  116. package/apps/pwa/out/_next/static/chunks/9686-12286f5bbf15a5a0.js +1 -0
  117. package/apps/pwa/out/_next/static/chunks/9776.289d40cc5a4c342a.js +1 -0
  118. package/apps/pwa/out/_next/static/chunks/9789.60f723d18097ec30.js +1 -0
  119. package/apps/pwa/out/_next/static/chunks/989.f0c17523c5e61f65.js +1 -0
  120. package/apps/pwa/out/_next/static/chunks/9972-1df393aa8d4f7d52.js +1 -0
  121. package/apps/pwa/out/_next/static/chunks/9f31e478.fefcbcd3c388ebc5.js +1 -0
  122. package/apps/pwa/out/_next/static/chunks/app/_not-found/page-96750aba7430959f.js +1 -0
  123. package/apps/pwa/out/_next/static/chunks/app/approvals/page-4105e5bbbb043024.js +1 -0
  124. package/apps/pwa/out/_next/static/chunks/app/autopilot/page-5d4fa75c2acb113e.js +1 -0
  125. package/apps/pwa/out/_next/static/chunks/app/board/page-a79a9bdb3b2142bf.js +1 -0
  126. package/apps/pwa/out/_next/static/chunks/app/botlab/page-f1c2047484992a35.js +1 -0
  127. package/apps/pwa/out/_next/static/chunks/app/bots/page-15ffc49b2d8c70e2.js +1 -0
  128. package/apps/pwa/out/_next/static/chunks/app/ceo/page-67d53a3fc8734135.js +1 -0
  129. package/apps/pwa/out/_next/static/chunks/app/chat/page-e30c8dc696491336.js +1 -0
  130. package/apps/pwa/out/_next/static/chunks/app/consult/page-2136e04fa77696e2.js +1 -0
  131. package/apps/pwa/out/_next/static/chunks/app/control/page-fecd2814790c2e12.js +1 -0
  132. package/apps/pwa/out/_next/static/chunks/app/decisions/page-280aa4a98fc5bb44.js +1 -0
  133. package/apps/pwa/out/_next/static/chunks/app/design-check/page-c14e96b65fb4b883.js +1 -0
  134. package/apps/pwa/out/_next/static/chunks/app/editor/page-187dac74825ed6bf.js +1 -0
  135. package/apps/pwa/out/_next/static/chunks/app/exec/page-6bc7246ea8c92448.js +1 -0
  136. package/apps/pwa/out/_next/static/chunks/app/field/{page-4fb31eb476dcbad3.js → page-083747f1d4518f61.js} +1 -1
  137. package/apps/pwa/out/_next/static/chunks/app/healthz/route-96750aba7430959f.js +1 -0
  138. package/apps/pwa/out/_next/static/chunks/app/inside/page-15ca95a16ec96e1f.js +1 -0
  139. package/apps/pwa/out/_next/static/chunks/app/intake/page-a8ac031b3810eb64.js +1 -0
  140. package/apps/pwa/out/_next/static/chunks/app/layout-8835f93110494cda.js +1 -0
  141. package/apps/pwa/out/_next/static/chunks/app/live/page-e2de2e59111c9aad.js +1 -0
  142. package/apps/pwa/out/_next/static/chunks/app/live-run/page-f2b2e4bf6e981450.js +1 -0
  143. package/apps/pwa/out/_next/static/chunks/app/loops/page-5b92b7f75df20948.js +1 -0
  144. package/apps/pwa/out/_next/static/chunks/app/market/page-468eddf2b1a84ecb.js +1 -0
  145. package/apps/pwa/out/_next/static/chunks/app/missions/[id]/page-2af16e62c12f22df.js +1 -0
  146. package/apps/pwa/out/_next/static/chunks/app/morning/page-18b40867a77a5793.js +1 -0
  147. package/apps/pwa/out/_next/static/chunks/app/not-found-fe934f2979f5a4a2.js +1 -0
  148. package/apps/pwa/out/_next/static/chunks/app/observatory/page-3eec435537357170.js +1 -0
  149. package/apps/pwa/out/_next/static/chunks/app/ops/checklist/page-ff88cbfd2aa99fc8.js +1 -0
  150. package/apps/pwa/out/_next/static/chunks/app/ops/release/page-a5b39fb780c70ab5.js +1 -0
  151. package/apps/pwa/out/_next/static/chunks/app/ops/seats/page-ae465dde1d1b3933.js +1 -0
  152. package/apps/pwa/out/_next/static/chunks/app/outputs/page-e7abc34a48a6f71e.js +1 -0
  153. package/apps/pwa/out/_next/static/chunks/app/page-cab9674fde9ead26.js +1 -0
  154. package/apps/pwa/out/_next/static/chunks/app/reflection/page-1da49bc8712284d0.js +1 -0
  155. package/apps/pwa/out/_next/static/chunks/app/scheduler/page-5e8aa657551ac912.js +1 -0
  156. package/apps/pwa/out/_next/static/chunks/app/sessions/page-fcc36f36c6dc1fe2.js +1 -0
  157. package/apps/pwa/out/_next/static/chunks/app/settings/devices/page-d22db22f2a7296ca.js +1 -0
  158. package/apps/pwa/out/_next/static/chunks/app/settings/page-d12dc7b1773878f0.js +1 -0
  159. package/apps/pwa/out/_next/static/chunks/app/setup/done/page-99debec9ea7fbec0.js +1 -0
  160. package/apps/pwa/out/_next/static/chunks/app/setup/layout-96750aba7430959f.js +1 -0
  161. package/apps/pwa/out/_next/static/chunks/app/setup/page-2a088a78bad7e924.js +1 -0
  162. package/apps/pwa/out/_next/static/chunks/app/share/page-2e8ed57db7e69993.js +1 -0
  163. package/apps/pwa/out/_next/static/chunks/app/showroom/page-4b3a16213c2ae8fe.js +1 -0
  164. package/apps/pwa/out/_next/static/chunks/app/tasks/page-f098747ddf38c98b.js +1 -0
  165. package/apps/pwa/out/_next/static/chunks/app/term/page-c15958835534404b.js +1 -0
  166. package/apps/pwa/out/_next/static/chunks/app/today/page-68279e3c843c1fd7.js +1 -0
  167. package/apps/pwa/out/_next/static/chunks/app/trace/page-a34a74453367a39d.js +1 -0
  168. package/apps/pwa/out/_next/static/chunks/app/vault/page-8767a7db2155a5bd.js +1 -0
  169. package/apps/pwa/out/_next/static/chunks/app/workflows/chat-ui/page-bd5976683460d7f2.js +1 -0
  170. package/apps/pwa/out/_next/static/chunks/app/workflows/page-b7364835e7f2ef54.js +1 -0
  171. package/apps/pwa/out/_next/static/chunks/app/workspace/page-311af16b3ee0ffca.js +1 -0
  172. package/apps/pwa/out/_next/static/chunks/app/worktrees/page-fb670757274ae990.js +1 -0
  173. package/apps/pwa/out/_next/static/chunks/{5014f970-22bef0b5210f7d60.js → ccae1c4b-0cf414f5eff1b10d.js} +1 -1
  174. package/apps/pwa/out/_next/static/chunks/{4fa33ebd.21c1bd5b294496e6.js → ceba0382.650712b56b85b582.js} +1 -1
  175. package/apps/pwa/out/_next/static/chunks/da5ecc5c-b005ad8cac737d57.js +1 -0
  176. package/apps/pwa/out/_next/static/chunks/f9a61e4d.1fc2c1dbdd49fe46.js +1 -0
  177. package/apps/pwa/out/_next/static/chunks/framework-6d497cbf1eef04c6.js +1 -0
  178. package/apps/pwa/out/_next/static/chunks/main-app-012f5edec932f337.js +1 -0
  179. package/apps/pwa/out/_next/static/chunks/main-da5aeb809edc94a2.js +1 -0
  180. package/apps/pwa/out/_next/static/chunks/pages/_app-5ee319af6f749dfe.js +1 -0
  181. package/apps/pwa/out/_next/static/chunks/pages/_error-4bc84653a718d6c6.js +1 -0
  182. package/apps/pwa/out/_next/static/chunks/webpack-8a96cf6775c73d6e.js +1 -0
  183. package/apps/pwa/out/_next/static/{L04y73dlwKeTW-GetaTF3 → uC-N0emedeNOFuaBQFv-I}/_buildManifest.js +1 -1
  184. package/apps/pwa/out/approvals/index.html +1 -1
  185. package/apps/pwa/out/approvals/index.txt +22 -22
  186. package/apps/pwa/out/autopilot/index.html +1 -1
  187. package/apps/pwa/out/autopilot/index.txt +22 -22
  188. package/apps/pwa/out/board/index.html +1 -1
  189. package/apps/pwa/out/board/index.txt +22 -22
  190. package/apps/pwa/out/botlab/index.html +1 -1
  191. package/apps/pwa/out/botlab/index.txt +21 -21
  192. package/apps/pwa/out/bots/index.html +1 -1
  193. package/apps/pwa/out/bots/index.txt +21 -21
  194. package/apps/pwa/out/ceo/index.html +1 -1
  195. package/apps/pwa/out/ceo/index.txt +22 -22
  196. package/apps/pwa/out/chat/index.html +1 -1
  197. package/apps/pwa/out/chat/index.txt +21 -21
  198. package/apps/pwa/out/consult/index.html +1 -1
  199. package/apps/pwa/out/consult/index.txt +22 -22
  200. package/apps/pwa/out/control/index.html +1 -1
  201. package/apps/pwa/out/control/index.txt +22 -22
  202. package/apps/pwa/out/decisions/index.html +1 -1
  203. package/apps/pwa/out/decisions/index.txt +21 -21
  204. package/apps/pwa/out/design-check/index.html +1 -1
  205. package/apps/pwa/out/design-check/index.txt +22 -22
  206. package/apps/pwa/out/editor/index.html +1 -1
  207. package/apps/pwa/out/editor/index.txt +22 -22
  208. package/apps/pwa/out/exec/index.html +1 -1
  209. package/apps/pwa/out/exec/index.txt +22 -22
  210. package/apps/pwa/out/field/index.html +1 -1
  211. package/apps/pwa/out/field/index.txt +22 -22
  212. package/apps/pwa/out/healthz +1 -1
  213. package/apps/pwa/out/index.html +1 -1
  214. package/apps/pwa/out/index.txt +21 -21
  215. package/apps/pwa/out/inside/index.html +1 -1
  216. package/apps/pwa/out/inside/index.txt +21 -21
  217. package/apps/pwa/out/intake/index.html +1 -1
  218. package/apps/pwa/out/intake/index.txt +22 -22
  219. package/apps/pwa/out/live/index.html +1 -1
  220. package/apps/pwa/out/live/index.txt +22 -22
  221. package/apps/pwa/out/live-run/index.html +1 -1
  222. package/apps/pwa/out/live-run/index.txt +22 -22
  223. package/apps/pwa/out/loops/index.html +1 -1
  224. package/apps/pwa/out/loops/index.txt +21 -21
  225. package/apps/pwa/out/market/index.html +1 -1
  226. package/apps/pwa/out/market/index.txt +21 -21
  227. package/apps/pwa/out/missions/placeholder/index.html +1 -1
  228. package/apps/pwa/out/missions/placeholder/index.txt +21 -21
  229. package/apps/pwa/out/morning/index.html +1 -1
  230. package/apps/pwa/out/morning/index.txt +22 -22
  231. package/apps/pwa/out/observatory/index.html +1 -1
  232. package/apps/pwa/out/observatory/index.txt +22 -22
  233. package/apps/pwa/out/ops/checklist/index.html +1 -1
  234. package/apps/pwa/out/ops/checklist/index.txt +21 -21
  235. package/apps/pwa/out/ops/release/index.html +1 -1
  236. package/apps/pwa/out/ops/release/index.txt +21 -21
  237. package/apps/pwa/out/ops/seats/index.html +1 -1
  238. package/apps/pwa/out/ops/seats/index.txt +21 -21
  239. package/apps/pwa/out/outputs/index.html +1 -1
  240. package/apps/pwa/out/outputs/index.txt +21 -21
  241. package/apps/pwa/out/reflection/index.html +1 -1
  242. package/apps/pwa/out/reflection/index.txt +22 -22
  243. package/apps/pwa/out/scheduler/index.html +1 -1
  244. package/apps/pwa/out/scheduler/index.txt +22 -22
  245. package/apps/pwa/out/sessions/index.html +1 -1
  246. package/apps/pwa/out/sessions/index.txt +21 -21
  247. package/apps/pwa/out/settings/devices/index.html +1 -1
  248. package/apps/pwa/out/settings/devices/index.txt +22 -22
  249. package/apps/pwa/out/settings/index.html +1 -1
  250. package/apps/pwa/out/settings/index.txt +22 -22
  251. package/apps/pwa/out/setup/done/index.html +1 -1
  252. package/apps/pwa/out/setup/done/index.txt +22 -22
  253. package/apps/pwa/out/setup/index.html +1 -1
  254. package/apps/pwa/out/setup/index.txt +22 -22
  255. package/apps/pwa/out/share/index.html +1 -1
  256. package/apps/pwa/out/share/index.txt +22 -22
  257. package/apps/pwa/out/showroom/index.html +1 -1
  258. package/apps/pwa/out/showroom/index.txt +21 -21
  259. package/apps/pwa/out/tasks/index.html +1 -1
  260. package/apps/pwa/out/tasks/index.txt +22 -22
  261. package/apps/pwa/out/term/index.html +1 -1
  262. package/apps/pwa/out/term/index.txt +22 -22
  263. package/apps/pwa/out/today/index.html +1 -1
  264. package/apps/pwa/out/today/index.txt +22 -22
  265. package/apps/pwa/out/trace/index.html +1 -1
  266. package/apps/pwa/out/trace/index.txt +22 -22
  267. package/apps/pwa/out/vault/index.html +1 -1
  268. package/apps/pwa/out/vault/index.txt +22 -22
  269. package/apps/pwa/out/workflows/chat-ui/index.html +1 -1
  270. package/apps/pwa/out/workflows/chat-ui/index.txt +22 -22
  271. package/apps/pwa/out/workflows/index.html +1 -1
  272. package/apps/pwa/out/workflows/index.txt +22 -22
  273. package/apps/pwa/out/workspace/index.html +1 -1
  274. package/apps/pwa/out/workspace/index.txt +22 -22
  275. package/apps/pwa/out/worktrees/index.html +1 -1
  276. package/apps/pwa/out/worktrees/index.txt +22 -22
  277. package/bin/elanous.mjs +3 -2
  278. package/catalog/providers/opengateway.yaml +25 -0
  279. package/docs/goal-context/01-goal-authoring-checks.md +8 -0
  280. package/docs/goal-context/03-verification-menu.md +24 -0
  281. package/docs/goal-context/04-mock-scenarios.md +100 -0
  282. package/docs/goal-context/05-authoring-lessons.jsonl +47 -0
  283. package/docs/goal-context/README.md +7 -0
  284. package/graphs/catalog/catalog.yaml +1 -1
  285. package/graphs/default-loop.yaml +63 -4
  286. package/graphs/document-loop.yaml +51 -3
  287. package/graphs/implement-loop.yaml +77 -4
  288. package/graphs/journey/ta-journey.yaml +11 -1
  289. package/graphs/journey/units/author-dialogue/author-dialogue.yaml +42 -0
  290. package/graphs/journey/units/author-dialogue/observe.ts +96 -0
  291. package/graphs/journey/units/author-dialogue/recipes.yaml +10 -0
  292. package/graphs/operate-loop.yaml +51 -3
  293. package/graphs/release/recipes.yaml +6 -0
  294. package/graphs/release/release-loop.yaml +17 -4
  295. package/graphs/research-loop.yaml +137 -3
  296. package/graphs/test-diet/test-diet.yaml +3 -0
  297. package/graphs/wizard/recipes.yaml +44 -0
  298. package/graphs/wizard/wizard-loop.yaml +44 -0
  299. package/graphs/work/research-report.yaml +2 -0
  300. package/package.json +1 -1
  301. package/scripts/ci-typecheck-changed.ts +139 -5
  302. package/scripts/coord-role-pack.ts +19 -6
  303. package/scripts/first10-gate.ts +416 -0
  304. package/scripts/fleet/wsl-node-setup.sh +432 -0
  305. package/scripts/hq/standby-snapshot.ts +17 -12
  306. package/scripts/release-loop/docs-land-node.ts +21 -5
  307. package/scripts/release-loop/docs-node.ts +204 -8
  308. package/scripts/release-loop/gate-baseline-receipt.ts +155 -0
  309. package/scripts/release-loop/gate-node.ts +427 -72
  310. package/scripts/release-loop/gate-partial.ts +65 -11
  311. package/scripts/release-loop/gate-radius-live.ts +177 -0
  312. package/scripts/release-loop/gate-radius-shadow.ts +1 -1
  313. package/scripts/release-loop/node-verdict.ts +14 -1
  314. package/scripts/release-loop/npm-publish-node.ts +66 -12
  315. package/scripts/release-loop/probe-pod-host-dirs-live.ts +5 -0
  316. package/scripts/release-loop/pwa-remote.ts +166 -0
  317. package/scripts/release-loop/pwa-scenarios-node.ts +19 -3
  318. package/scripts/release-loop/resume-cap.ts +14 -34
  319. package/scripts/release-loop/resume-release.ts +78 -15
  320. package/scripts/release-loop/traffic-node.ts +59 -0
  321. package/scripts/release-loop/traffic-transition.ts +159 -0
  322. package/scripts/release-loop/unattended-release.ts +2 -0
  323. package/scripts/rhythm/daily.ts +137 -3
  324. package/scripts/test-diet/lib.ts +6 -1
  325. package/scripts/test-diet/node.ts +194 -13
  326. package/scripts/ux-sim.ts +92 -0
  327. package/skills/README.md +1 -0
  328. package/src/acp/core-turn-bridge.ts +48 -6
  329. package/src/agent/delegate-hint.ts +16 -0
  330. package/src/agent/runner.ts +82 -2
  331. package/src/agent/self-ambient-cache.ts +8 -0
  332. package/src/agent/task-notification.ts +56 -10
  333. package/src/agent/types.ts +4 -0
  334. package/src/agent-substrate/acp-reviewer.ts +39 -4
  335. package/src/agent-substrate/pr-reviewer.ts +72 -3
  336. package/src/agent-substrate/review-intent.ts +29 -2
  337. package/src/agent-substrate/review-observation.ts +3 -0
  338. package/src/agent-substrate/self-review-cli.ts +229 -28
  339. package/src/autopilot/mission-codebase-gate.ts +141 -12
  340. package/src/autopilot/pr-manager.ts +240 -41
  341. package/src/boot/daemon-tools/self-implement.ts +1 -0
  342. package/src/budget/run-usage-rollup.ts +1 -0
  343. package/src/budget/usage-outcomes.ts +8 -4
  344. package/src/capture/tui-self-report.ts +102 -0
  345. package/src/chat/goal-continue-verdict.ts +41 -0
  346. package/src/chat/index.ts +30 -6
  347. package/src/chat/internal-turn-origin.ts +1 -0
  348. package/src/chat/paste-fold.ts +86 -0
  349. package/src/chat/pickers/modal-runtime.ts +10 -27
  350. package/src/chat/tool-render/block.ts +32 -0
  351. package/src/chat/tool-render/dispatch.ts +2 -20
  352. package/src/chat/tool-render/result-text.ts +98 -0
  353. package/src/chat/turn-typeahead.ts +70 -7
  354. package/src/cli/agent-cli.ts +13 -2
  355. package/src/cli/config-audit.ts +119 -0
  356. package/src/cli/doctor-cli.ts +26 -1
  357. package/src/cli/guardian-cli.ts +10 -0
  358. package/src/cli/herdr-cli.ts +34 -0
  359. package/src/cli/light-entry-route.ts +50 -7
  360. package/src/cli/log-event-names.ts +2 -0
  361. package/src/cli/make-cli.ts +247 -11
  362. package/src/cli/msg-cli.ts +117 -3
  363. package/src/cli/pod-cli.ts +77 -3
  364. package/src/cli/pr-cli.ts +34 -18
  365. package/src/cli/pr-land-base-read.ts +11 -2
  366. package/src/cli/pr-land-heavy-remote.ts +6 -3
  367. package/src/cli/pr-land-overlap-evidence.ts +23 -4
  368. package/src/cli/pr-land-pod-shadow-job.ts +3 -0
  369. package/src/cli/pr-land-recovery.ts +117 -1
  370. package/src/cli/pty-takeover-cli.ts +8 -7
  371. package/src/cli/release-checklist-read-cli.ts +79 -0
  372. package/src/cli/release-cli.ts +92 -106
  373. package/src/cli/release-single-flight.ts +1 -1
  374. package/src/cli/remote-resolve.ts +1 -1
  375. package/src/cli/root-tui-entry.ts +48 -0
  376. package/src/cli/sim-cli.ts +22 -0
  377. package/src/cli/tasks-card-show.ts +162 -0
  378. package/src/cli/tasks-cli.ts +1065 -338
  379. package/src/cli/tasks-read-cli.ts +197 -0
  380. package/src/cli/usage-cli.ts +13 -11
  381. package/src/clipboard/history.ts +179 -13
  382. package/src/config.ts +8 -1
  383. package/src/core-turn/run-core-turn.ts +4 -2
  384. package/src/core-turn/run-goal-loop.ts +73 -16
  385. package/src/core-turn/types.ts +6 -1
  386. package/src/dashboard/chat/acp-chat.ts +8 -0
  387. package/src/dashboard/context/keys.ts +8 -31
  388. package/src/dashboard/index.ts +280 -59
  389. package/src/dashboard/input/agent-wake.ts +7 -1
  390. package/src/dashboard/input/chat-main-plain-turn-runtime.ts +146 -3
  391. package/src/dashboard/input/chat-main-slash-command.ts +4 -2
  392. package/src/dashboard/input/goal-continue.ts +210 -0
  393. package/src/dashboard/input/goal-interim.ts +2 -0
  394. package/src/dashboard/input/internal-turn.ts +2 -8
  395. package/src/dashboard/input/seat-autowake.ts +9 -7
  396. package/src/dashboard/input/turn-autoheal.ts +52 -0
  397. package/src/dashboard/render/theme-resolver.ts +33 -4
  398. package/src/dashboard/seat-boot-preamble.ts +132 -5
  399. package/src/dashboard/slash-runtime/chat-persona.ts +65 -8
  400. package/src/dashboard/slash-runtime/dashboard-handlers.ts +3 -2
  401. package/src/dashboard/slash-runtime/model-choices.ts +15 -0
  402. package/src/dashboard/stale-install-check.ts +3 -99
  403. package/src/debug/batch-queue.ts +119 -0
  404. package/src/debug/tui-log-tag.ts +67 -0
  405. package/src/display/agent-surface.ts +7 -0
  406. package/src/domains/schedule-registry.ts +16 -2
  407. package/src/domains/standalone-log-sink.ts +15 -2
  408. package/src/esc-abort-gate.ts +69 -0
  409. package/src/git-fs/idle-refresh.ts +76 -0
  410. package/src/git-fs/index.ts +18 -7
  411. package/src/git-fs/worktree.ts +137 -5
  412. package/src/graph-kinds/registry.ts +2 -2
  413. package/src/graph-runner/graph-cli.ts +18 -0
  414. package/src/graph-runner/runner.ts +173 -21
  415. package/src/graph-wizard/generate.ts +108 -4
  416. package/src/graph-wizard/steps.ts +15 -0
  417. package/src/grok/credential.ts +10 -3
  418. package/src/grounding/proactive-ground.ts +86 -0
  419. package/src/harness/control-inbox.ts +49 -1
  420. package/src/harness/harness-cli-command.ts +163 -35
  421. package/src/harness/harness-incidents.ts +85 -1
  422. package/src/harness/launch-utterance-ledger.ts +208 -0
  423. package/src/harness/pod-control-send.ts +33 -5
  424. package/src/harness/self-send-remote.ts +69 -0
  425. package/src/harness/self-send-routing-guard.ts +6 -0
  426. package/src/harness/self-send-target.ts +4 -3
  427. package/src/impl-discipline/detector.ts +16 -4
  428. package/src/impl-discipline/system-prompt.ts +11 -0
  429. package/src/impl-discipline/types.ts +2 -2
  430. package/src/index.ts +822 -154
  431. package/src/input-core/context-key-runtime.ts +21 -0
  432. package/src/intake-plane/already-built-hint.ts +4 -2
  433. package/src/intake-plane/requirement-funnel.ts +29 -1
  434. package/src/light-cli.ts +32 -11
  435. package/src/llm/opengateway-models.ts +11 -0
  436. package/src/llm/provider-credentials.ts +14 -0
  437. package/src/llm/provider-detect.ts +8 -1
  438. package/src/llm/runtime-model-family.ts +2 -1
  439. package/src/llm-wellformed.ts +70 -0
  440. package/src/llm.ts +247 -59
  441. package/src/loops/msg-wake.ts +35 -39
  442. package/src/loops/orchestrator/inbox.ts +59 -11
  443. package/src/loops/orchestrator/knowhow-pack.ts +364 -0
  444. package/src/loops/orchestrator/tick.ts +5 -1
  445. package/src/maturity/feature-maturity.ts +1 -1
  446. package/src/model-tier/llm-tier-map.ts +15 -1
  447. package/src/models/prompts.ts +17 -2
  448. package/src/msg/msg-post-office.ts +116 -0
  449. package/src/mss/logging/log-store.ts +79 -22
  450. package/src/native-tool-catalog.ts +15 -1
  451. package/src/nexus/api/decisions-route.ts +38 -18
  452. package/src/nexus/api/graph-wizard-api.ts +20 -2
  453. package/src/nexus/api/loop-resources.ts +13 -1
  454. package/src/nexus/boot/register-mcp-clients.ts +263 -38
  455. package/src/nexus/onboarding/first-boot-wizard.ts +56 -8
  456. package/src/oauth/codex.ts +7 -0
  457. package/src/onboarding/first-run.ts +37 -6
  458. package/src/onboarding/web-first.ts +43 -11
  459. package/src/ops/overview-collect.ts +30 -9
  460. package/src/ops/overview.ts +22 -9
  461. package/src/persona/loader.ts +11 -0
  462. package/src/persona/types.ts +8 -0
  463. package/src/pr-tool/census.ts +261 -27
  464. package/src/prompt-library/session-guidance.ts +14 -0
  465. package/src/provider-summary.ts +8 -0
  466. package/src/pty-shell/herdr-agent-report.ts +118 -9
  467. package/src/pty-shell/herdr-prompt.ts +266 -0
  468. package/src/pty-shell/pty-control-ipc.ts +151 -8
  469. package/src/pty-shell/pty-manifest.ts +7 -0
  470. package/src/pty-shell/pty-special-keys.ts +42 -2
  471. package/src/pty-shell/stale-install-check.ts +99 -0
  472. package/src/pty-shell/tui-run-state.ts +14 -2
  473. package/src/release-loop/auto-start.ts +20 -2
  474. package/src/release-loop/checklist.ts +100 -4
  475. package/src/release-loop/landed-but-yellow.ts +129 -5
  476. package/src/release-loop/light-rc.ts +1 -0
  477. package/src/release-loop/rehearsal.ts +37 -21
  478. package/src/repl/index.ts +192 -17
  479. package/src/repl/ops-msg-bridge.ts +32 -0
  480. package/src/seat-loop/knowhow-lint.ts +1 -1
  481. package/src/self-dev/ask-launch-flow.ts +44 -5
  482. package/src/self-dev/cli-help-text.ts +17 -0
  483. package/src/self-dev/decompose-proposal.ts +172 -20
  484. package/src/self-dev/decompose.ts +61 -0
  485. package/src/self-dev/dev-cli.ts +48 -12
  486. package/src/self-dev/dev-pipeline.ts +8 -2
  487. package/src/self-dev/draft-residue.ts +37 -1
  488. package/src/self-dev/draft-sweep.ts +137 -11
  489. package/src/self-dev/draft-triage-rules.ts +138 -0
  490. package/src/self-dev/fleet-reduce.ts +3 -2
  491. package/src/self-dev/glm-credential-guard.ts +77 -0
  492. package/src/self-dev/graph-front-nodes.ts +112 -0
  493. package/src/self-dev/graph-journey-nodes.ts +2 -0
  494. package/src/self-dev/graph-journey-route.ts +12 -2
  495. package/src/self-dev/harness-run-cli.ts +3 -15
  496. package/src/self-dev/orchestrate-cli-text.ts +10 -0
  497. package/src/self-dev/orchestrate-cli.ts +68 -3
  498. package/src/self-dev/orchestrate.ts +116 -17
  499. package/src/self-dev/review-provider-fallback.ts +35 -1
  500. package/src/self-dev/run-supervisor.ts +55 -2
  501. package/src/self-dev/run-types.ts +1 -1
  502. package/src/self-dev/self-orchestrate-runtime.ts +1 -11
  503. package/src/self-dev/shard-aggregate.ts +42 -5
  504. package/src/self-dev/shard-run.ts +8 -1
  505. package/src/self-health/autoheal.ts +153 -0
  506. package/src/self-health/signatures.ts +6 -0
  507. package/src/self-implement/blocked-draft-policy.ts +20 -0
  508. package/src/self-implement/classify-shadow.ts +3 -7
  509. package/src/self-implement/device-first.ts +116 -0
  510. package/src/self-implement/doctor-visit.ts +257 -2
  511. package/src/self-implement/evidence-command-budget.ts +80 -0
  512. package/src/self-implement/gate-baseline.ts +56 -17
  513. package/src/self-implement/gate-cli.ts +1 -0
  514. package/src/self-implement/gate-remote.ts +31 -20
  515. package/src/self-implement/goal-author-cli.ts +1 -0
  516. package/src/self-implement/goal-author-decompose.ts +534 -45
  517. package/src/self-implement/goal-author.ts +282 -7
  518. package/src/self-implement/goal-elaborate.ts +449 -0
  519. package/src/self-implement/goal-refine.ts +273 -0
  520. package/src/self-implement/graph-overlay-yaml.ts +14 -3
  521. package/src/self-implement/graph-variant.ts +40 -6
  522. package/src/self-implement/headless-elanous-driver.ts +19 -3
  523. package/src/self-implement/off-diff-evidence.ts +58 -6
  524. package/src/self-implement/orchestrator.ts +370 -62
  525. package/src/self-implement/pod-warm-pool-profile.ts +1 -0
  526. package/src/self-implement/pwa-import-graph.ts +1 -1
  527. package/src/self-implement/rework-budget-judgment.ts +5 -8
  528. package/src/self-implement/rework-policy.ts +30 -0
  529. package/src/self-implement/run-ledger.ts +108 -0
  530. package/src/self-implement/run-stop.ts +10 -1
  531. package/src/self-implement/run-ttl.ts +38 -24
  532. package/src/self-implement/running-runs.ts +29 -1
  533. package/src/self-implement/scope-adjacency.ts +115 -0
  534. package/src/self-implement/seams.ts +187 -28
  535. package/src/self-implement/stop-autoheal.ts +87 -1
  536. package/src/self-implement/wiring-check.ts +358 -0
  537. package/src/session-runtime/index.ts +1 -1
  538. package/src/setup/llm-env-detect.ts +5 -0
  539. package/src/shell-env-bootstrap.ts +11 -4
  540. package/src/skills/runner.ts +4 -2
  541. package/src/skills/tools/agent.ts +408 -40
  542. package/src/skills/tools/msg-ask.ts +100 -0
  543. package/src/skills/tools/ops-ledger.ts +2 -1
  544. package/src/skills/tools/schedule-wakeup.ts +23 -4
  545. package/src/skills/tools/shell.ts +61 -6
  546. package/src/skills/tools/terminal-modal-inject.ts +1 -2
  547. package/src/skills/tools/terminal-modal.ts +10 -8
  548. package/src/skills/url-router.ts +41 -1
  549. package/src/smart-wizard/run.ts +66 -0
  550. package/src/status/bar.ts +34 -6
  551. package/src/status/status-provider-info.ts +37 -6
  552. package/src/steward/hold-hygiene.ts +24 -6
  553. package/src/steward/rejudge-tick.ts +10 -2
  554. package/src/steward/ta-repair-event-collect.ts +17 -6
  555. package/src/steward/triage-budget.ts +194 -0
  556. package/src/steward/triage.ts +20 -3
  557. package/src/task-agent/actions.ts +72 -2
  558. package/src/task-agent/green-sweep.ts +4 -0
  559. package/src/task-agent/land-queue.ts +21 -8
  560. package/src/task-agent/live-moves.ts +182 -10
  561. package/src/task-agent/mission.ts +30 -0
  562. package/src/task-agent/parent-host.ts +123 -3
  563. package/src/task-agent/rejudge-on-head.ts +15 -0
  564. package/src/task-agent/repair-cycle.ts +138 -32
  565. package/src/task-agent/repair-next-move.ts +31 -3
  566. package/src/task-agent/repair-outcomes.ts +29 -0
  567. package/src/task-agent/repair-worker.ts +14 -4
  568. package/src/task-agent/shadow.ts +48 -4
  569. package/src/task-agent/task-card-prefix.ts +2 -0
  570. package/src/task-agent/task-hand.ts +525 -57
  571. package/src/task-agent/task-parent-role-llm.ts +36 -0
  572. package/src/task-agent/tier-split.ts +196 -0
  573. package/src/task-agent/work-order-build.ts +2 -0
  574. package/src/task-agent/work-order.ts +3 -2
  575. package/src/task-orchestrator/generator-prompt.ts +60 -11
  576. package/src/task-orchestrator/surfaces/pod-account-broker.ts +42 -0
  577. package/src/task-orchestrator/surfaces/pod-child-providers.ts +1 -1
  578. package/src/task-orchestrator/surfaces/pod-child-reuse.ts +146 -0
  579. package/src/task-orchestrator/surfaces/pod-command-job.ts +130 -11
  580. package/src/task-orchestrator/surfaces/pod-failure-reason.ts +215 -3
  581. package/src/task-orchestrator/surfaces/pod-image-source.ts +89 -1
  582. package/src/task-orchestrator/surfaces/pod-launch-history.ts +133 -0
  583. package/src/task-orchestrator/surfaces/pod-lease.ts +17 -8
  584. package/src/task-orchestrator/surfaces/pod-manifest-test-normalize.ts +19 -2
  585. package/src/task-orchestrator/surfaces/pod-pool.ts +76 -4
  586. package/src/task-orchestrator/surfaces/pod-provenance.ts +82 -0
  587. package/src/task-orchestrator/surfaces/pod-repair-commit.ts +18 -3
  588. package/src/task-orchestrator/surfaces/pod-si-warm-entry.ts +16 -0
  589. package/src/task-orchestrator/surfaces/pod-si-warm-host.ts +224 -0
  590. package/src/task-orchestrator/surfaces/pod-si-warm-protocol.ts +201 -0
  591. package/src/task-orchestrator/surfaces/pod-si-warm-provider.ts +444 -0
  592. package/src/task-orchestrator/surfaces/pod-si-warm-runner.ts +387 -0
  593. package/src/task-orchestrator/surfaces/pod-si-warm-transport.ts +157 -0
  594. package/src/task-orchestrator/surfaces/pod-source-receive.ts +18 -0
  595. package/src/task-orchestrator/surfaces/pod-warm-provenance.ts +81 -0
  596. package/src/task-orchestrator/surfaces/pod-warm-worker-pod.ts +6 -2
  597. package/src/task-orchestrator/surfaces/pod-warm-worker-protocol.ts +7 -0
  598. package/src/task-orchestrator/surfaces/pod-warm-worker-provider.ts +521 -40
  599. package/src/task-orchestrator/surfaces/pod-warm-worker-runtime.ts +3 -0
  600. package/src/task-orchestrator/surfaces/self-implement-pod.ts +759 -50
  601. package/src/task-orchestrator/surfaces/self-implement.ts +65 -2
  602. package/src/tool-runtime/index.ts +15 -2
  603. package/src/tool-runtime/mcp-proxy-bootstrap.ts +29 -0
  604. package/src/tool-runtime/ops-ledger-runtimes.ts +10 -2
  605. package/src/tty-foreground.ts +155 -0
  606. package/src/tui/README.md +2 -0
  607. package/src/tui/chat/background-job-status.ts +54 -0
  608. package/src/tui/chat/goal-interim.ts +173 -0
  609. package/src/tui/chat/log-view.ts +267 -0
  610. package/src/tui/chat/self-health-status.ts +232 -0
  611. package/src/tui/entry.ts +695 -0
  612. package/src/tui/input/composer.ts +151 -0
  613. package/src/tui/seat-mail-boot.ts +59 -0
  614. package/src/tui/slash/compact-command.ts +7 -0
  615. package/src/tui/slash/compact.ts +94 -0
  616. package/src/tui/slash/new-session.ts +35 -0
  617. package/src/tui/slash/resume.ts +75 -0
  618. package/src/tui-client/local-chat-turn.ts +282 -0
  619. package/src/tui-client/local-harness-command.ts +63 -0
  620. package/src/tui-client/local-provider-command.ts +184 -0
  621. package/src/tui-client/next-dashboard-runtime.ts +8 -0
  622. package/src/tui-client/next-loop-command.ts +70 -0
  623. package/src/tui-client/next-wakeup.ts +191 -0
  624. package/src/tui.ts +37 -0
  625. package/src/ui/modal-adapter.ts +2 -2
  626. package/src/user-config.ts +4 -2
  627. package/src/ux-sim/classic-tui-seat-scenarios.ts +516 -0
  628. package/src/ux-sim/cli-config-audit-device.ts +121 -0
  629. package/src/ux-sim/dashboard-event-loop-stall-monitor-device.ts +238 -0
  630. package/src/ux-sim/event-monkey.ts +379 -0
  631. package/src/ux-sim/fake-bin.ts +87 -7
  632. package/src/ux-sim/fake-herdr.ts +238 -0
  633. package/src/ux-sim/fake-llm.ts +111 -6
  634. package/src/ux-sim/fault-glm-no-credential.ts +116 -0
  635. package/src/ux-sim/fault-nextmove-dispatch.ts +367 -0
  636. package/src/ux-sim/fault-pod-codex-503.ts +211 -0
  637. package/src/ux-sim/fault-scope-escape-lift.ts +216 -0
  638. package/src/ux-sim/fault-tui-400-autoheal.ts +297 -0
  639. package/src/ux-sim/goal-device.ts +619 -0
  640. package/src/ux-sim/in-process-cli.ts +22 -5
  641. package/src/ux-sim/mock-authoring-first-run-child.ts +35 -0
  642. package/src/ux-sim/mock-authoring-first-run.ts +97 -0
  643. package/src/ux-sim/mock-seat-pty-frame-child.ts +29 -0
  644. package/src/ux-sim/mock-seat-pty-frame.ts +297 -0
  645. package/src/ux-sim/mock-seat-pty-sequence-child.ts +21 -0
  646. package/src/ux-sim/mock-seat-pty-sequence.ts +206 -0
  647. package/src/ux-sim/next-tui-seat-scenarios.ts +631 -0
  648. package/src/ux-sim/onboarding-first-run-device.ts +269 -0
  649. package/src/ux-sim/pty-key-modifiers-device.ts +85 -0
  650. package/src/ux-sim/subagent-tools-device.ts +81 -0
  651. package/src/ux-sim/task-orchestrator-surfaces-self-implement-pod-device.ts +250 -0
  652. package/src/ux-sim/tty-foreground-steal-child.ts +21 -0
  653. package/src/version/packed-revision.json +1 -1
  654. package/apps/pwa/out/_next/static/chunks/1162.c69abda138c7ce43.js +0 -79
  655. package/apps/pwa/out/_next/static/chunks/1449-1fede62af84c3e43.js +0 -1
  656. package/apps/pwa/out/_next/static/chunks/1598-13fc845935e816df.js +0 -1
  657. package/apps/pwa/out/_next/static/chunks/1639.62c5e16fa20d242f.js +0 -94
  658. package/apps/pwa/out/_next/static/chunks/1661-adb8b2babc9aaf8c.js +0 -1
  659. package/apps/pwa/out/_next/static/chunks/2147.107c0fc6146fb15a.js +0 -23
  660. package/apps/pwa/out/_next/static/chunks/2202-ef1c9b000c3074fc.js +0 -1
  661. package/apps/pwa/out/_next/static/chunks/2247.1e326638ee43e672.js +0 -115
  662. package/apps/pwa/out/_next/static/chunks/2268.56e1e3d58180abae.js +0 -8
  663. package/apps/pwa/out/_next/static/chunks/2469-606819c812414021.js +0 -1
  664. package/apps/pwa/out/_next/static/chunks/2593.e53c1620c0bb3599.js +0 -1
  665. package/apps/pwa/out/_next/static/chunks/2690.e96671114222676a.js +0 -1
  666. package/apps/pwa/out/_next/static/chunks/2898-79ee1a5cc0cd9d13.js +0 -1
  667. package/apps/pwa/out/_next/static/chunks/298.26099a9f65e5c8ff.js +0 -1
  668. package/apps/pwa/out/_next/static/chunks/2987-30cf9c2eb7b8bdd5.js +0 -1
  669. package/apps/pwa/out/_next/static/chunks/2992.51fc2a7295bd8139.js +0 -1
  670. package/apps/pwa/out/_next/static/chunks/3001-5a52788c813b6113.js +0 -1
  671. package/apps/pwa/out/_next/static/chunks/3014-291245fba9df7b5b.js +0 -1
  672. package/apps/pwa/out/_next/static/chunks/3068.ee78201f0251a18d.js +0 -1
  673. package/apps/pwa/out/_next/static/chunks/3083.cd399a17e9365f78.js +0 -1
  674. package/apps/pwa/out/_next/static/chunks/3117-e1c474683fd1f824.js +0 -1
  675. package/apps/pwa/out/_next/static/chunks/3251-2c17bd5a91f8de2e.js +0 -1
  676. package/apps/pwa/out/_next/static/chunks/326.3fb32322bb2ddf6d.js +0 -1
  677. package/apps/pwa/out/_next/static/chunks/3421-7ff7fbaa156985a7.js +0 -1
  678. package/apps/pwa/out/_next/static/chunks/381.f55dc63ea87735e6.js +0 -1
  679. package/apps/pwa/out/_next/static/chunks/4129-ab0a6189f1778633.js +0 -1
  680. package/apps/pwa/out/_next/static/chunks/4361.93d14ba594b3a035.js +0 -104
  681. package/apps/pwa/out/_next/static/chunks/4364.7a7eb19cceb67d2f.js +0 -286
  682. package/apps/pwa/out/_next/static/chunks/4406.d71f506f7c3ee9d3.js +0 -149
  683. package/apps/pwa/out/_next/static/chunks/4461.2ad1514180ae7e29.js +0 -148
  684. package/apps/pwa/out/_next/static/chunks/4479.bd309cbe0e3842ee.js +0 -64
  685. package/apps/pwa/out/_next/static/chunks/4522-05966f777d66d13b.js +0 -1
  686. package/apps/pwa/out/_next/static/chunks/4543-9a3e9812e845de65.js +0 -1
  687. package/apps/pwa/out/_next/static/chunks/4557.f8f1d84a0d90d590.js +0 -74
  688. package/apps/pwa/out/_next/static/chunks/4589-79b11542179ef58c.js +0 -1
  689. package/apps/pwa/out/_next/static/chunks/4633-9f8f9f88ffbb8f5c.js +0 -1
  690. package/apps/pwa/out/_next/static/chunks/4831.23af4d10c0697b5e.js +0 -1
  691. package/apps/pwa/out/_next/static/chunks/4983.5951b85724f61f2a.js +0 -1
  692. package/apps/pwa/out/_next/static/chunks/5028-f0722e6114c313e7.js +0 -1
  693. package/apps/pwa/out/_next/static/chunks/5249.96a848656b582a93.js +0 -1
  694. package/apps/pwa/out/_next/static/chunks/5311.16e0ffbfa5468b80.js +0 -62
  695. package/apps/pwa/out/_next/static/chunks/5489.ec2dd1b5272a19dc.js +0 -24
  696. package/apps/pwa/out/_next/static/chunks/559.df87695df637920c.js +0 -1
  697. package/apps/pwa/out/_next/static/chunks/5618-5c88f2f70178c4ad.js +0 -1
  698. package/apps/pwa/out/_next/static/chunks/5764.05487bf0b73ddb6b.js +0 -1
  699. package/apps/pwa/out/_next/static/chunks/5930.e678826c3f831aab.js +0 -1
  700. package/apps/pwa/out/_next/static/chunks/5dfb57f7.f2e3305326202474.js +0 -1
  701. package/apps/pwa/out/_next/static/chunks/6053-d893974de92e6198.js +0 -1
  702. package/apps/pwa/out/_next/static/chunks/6200-cefd6f33f59d765e.js +0 -1
  703. package/apps/pwa/out/_next/static/chunks/6314-edeba650ae686ac9.js +0 -1
  704. package/apps/pwa/out/_next/static/chunks/6316-bc9a9b74d7842d79.js +0 -1
  705. package/apps/pwa/out/_next/static/chunks/6476-13b9779b73528008.js +0 -1
  706. package/apps/pwa/out/_next/static/chunks/666-04db3ac4c8e3c66f.js +0 -1
  707. package/apps/pwa/out/_next/static/chunks/670.682e55106ef915a6.js +0 -77
  708. package/apps/pwa/out/_next/static/chunks/6816.b7ba9d0a1a4a46a7.js +0 -1
  709. package/apps/pwa/out/_next/static/chunks/690-fbbcc777f189af37.js +0 -1
  710. package/apps/pwa/out/_next/static/chunks/6989.0d3d4020e5cb3df6.js +0 -90
  711. package/apps/pwa/out/_next/static/chunks/7193-cf355cca5ba6c5d5.js +0 -1
  712. package/apps/pwa/out/_next/static/chunks/7217-d17393fe7af78fa6.js +0 -1
  713. package/apps/pwa/out/_next/static/chunks/7232.24edbd938a69c8d0.js +0 -1
  714. package/apps/pwa/out/_next/static/chunks/7295cd1e.b4b557908888eeee.js +0 -1
  715. package/apps/pwa/out/_next/static/chunks/7323.adb02de21991883c.js +0 -1
  716. package/apps/pwa/out/_next/static/chunks/7386.5d8e7e42e818dfb6.js +0 -287
  717. package/apps/pwa/out/_next/static/chunks/7448.478958ffbbba0ac0.js +0 -1
  718. package/apps/pwa/out/_next/static/chunks/7537.ba2208c5c656b8a3.js +0 -1
  719. package/apps/pwa/out/_next/static/chunks/7596-962ae6db6cfc9c83.js +0 -1
  720. package/apps/pwa/out/_next/static/chunks/7671.cff51beac212a2ba.js +0 -1
  721. package/apps/pwa/out/_next/static/chunks/7883.3916734ee16d3e58.js +0 -27
  722. package/apps/pwa/out/_next/static/chunks/7952.b192c31b6a0e00cc.js +0 -1
  723. package/apps/pwa/out/_next/static/chunks/801.5b24e81eded22d1b.js +0 -1
  724. package/apps/pwa/out/_next/static/chunks/8176.8c9a8613f5a01ac1.js +0 -36
  725. package/apps/pwa/out/_next/static/chunks/819e78a6.fa3dd7f7da19bf61.js +0 -1
  726. package/apps/pwa/out/_next/static/chunks/8220-78978450c3183d8d.js +0 -1
  727. package/apps/pwa/out/_next/static/chunks/8221-eb60b5bc692a3361.js +0 -1
  728. package/apps/pwa/out/_next/static/chunks/826.e9a26064f474949e.js +0 -1
  729. package/apps/pwa/out/_next/static/chunks/8459-a351487a4480f584.js +0 -1
  730. package/apps/pwa/out/_next/static/chunks/8482-75823d513a4ce151.js +0 -1
  731. package/apps/pwa/out/_next/static/chunks/8488.8da515248cda3f3a.js +0 -1
  732. package/apps/pwa/out/_next/static/chunks/8584.388a1779d9b203af.js +0 -1
  733. package/apps/pwa/out/_next/static/chunks/8637.a55e098e61ffefb8.js +0 -1
  734. package/apps/pwa/out/_next/static/chunks/9207-8e6a12db30373f32.js +0 -1
  735. package/apps/pwa/out/_next/static/chunks/9263-00ae932c62696a86.js +0 -1
  736. package/apps/pwa/out/_next/static/chunks/9318.caafc3a130e8769c.js +0 -1
  737. package/apps/pwa/out/_next/static/chunks/932.da3fb55951882562.js +0 -93
  738. package/apps/pwa/out/_next/static/chunks/9433.002f8426ac75b6b7.js +0 -1
  739. package/apps/pwa/out/_next/static/chunks/9464.dd631a5a14b1d660.js +0 -24
  740. package/apps/pwa/out/_next/static/chunks/9739.8d5f36ac67a3b236.js +0 -1
  741. package/apps/pwa/out/_next/static/chunks/9743.beeabb9d5f86abe4.js +0 -1
  742. package/apps/pwa/out/_next/static/chunks/9843-a23d3f32dc43f715.js +0 -1
  743. package/apps/pwa/out/_next/static/chunks/994-28211077c7c587d5.js +0 -1
  744. package/apps/pwa/out/_next/static/chunks/app/_not-found/page-3b4c947f174e33d8.js +0 -1
  745. package/apps/pwa/out/_next/static/chunks/app/approvals/page-369d5ce99483f859.js +0 -1
  746. package/apps/pwa/out/_next/static/chunks/app/autopilot/page-63c0ed0eb26e5fce.js +0 -1
  747. package/apps/pwa/out/_next/static/chunks/app/board/page-62802c6003bc85cc.js +0 -1
  748. package/apps/pwa/out/_next/static/chunks/app/botlab/page-ecb41560d4e77be9.js +0 -1
  749. package/apps/pwa/out/_next/static/chunks/app/bots/page-7b65ad8130c93e95.js +0 -1
  750. package/apps/pwa/out/_next/static/chunks/app/ceo/page-8755477c15a9060c.js +0 -1
  751. package/apps/pwa/out/_next/static/chunks/app/chat/page-5725447dd972c471.js +0 -1
  752. package/apps/pwa/out/_next/static/chunks/app/consult/page-b979de0591a69375.js +0 -1
  753. package/apps/pwa/out/_next/static/chunks/app/control/page-6d0796bf4633751a.js +0 -1
  754. package/apps/pwa/out/_next/static/chunks/app/decisions/page-59c31dc0394e67b4.js +0 -1
  755. package/apps/pwa/out/_next/static/chunks/app/design-check/page-12dfc95f6cc5c718.js +0 -1
  756. package/apps/pwa/out/_next/static/chunks/app/editor/page-25788244e66aa4dd.js +0 -1
  757. package/apps/pwa/out/_next/static/chunks/app/exec/page-a2555dc705466322.js +0 -1
  758. package/apps/pwa/out/_next/static/chunks/app/healthz/route-3b4c947f174e33d8.js +0 -1
  759. package/apps/pwa/out/_next/static/chunks/app/inside/page-578729adbeaa40cb.js +0 -1
  760. package/apps/pwa/out/_next/static/chunks/app/intake/page-a1d20fffbec35205.js +0 -1
  761. package/apps/pwa/out/_next/static/chunks/app/layout-4a558f94516b8004.js +0 -1
  762. package/apps/pwa/out/_next/static/chunks/app/live/page-9e3834705b86145e.js +0 -1
  763. package/apps/pwa/out/_next/static/chunks/app/live-run/page-d7bff0f0905a662c.js +0 -1
  764. package/apps/pwa/out/_next/static/chunks/app/loops/page-cb1c5fe746ea4014.js +0 -1
  765. package/apps/pwa/out/_next/static/chunks/app/market/page-9ee320507356582a.js +0 -1
  766. package/apps/pwa/out/_next/static/chunks/app/missions/[id]/page-66fd183b74835886.js +0 -1
  767. package/apps/pwa/out/_next/static/chunks/app/morning/page-3272a064a01a9927.js +0 -1
  768. package/apps/pwa/out/_next/static/chunks/app/not-found-f281b7a7f6ef2529.js +0 -1
  769. package/apps/pwa/out/_next/static/chunks/app/observatory/page-d45a65f8b7124fcd.js +0 -1
  770. package/apps/pwa/out/_next/static/chunks/app/ops/checklist/page-e9c1fe684dd19a66.js +0 -1
  771. package/apps/pwa/out/_next/static/chunks/app/ops/release/page-b8322932fc6e34de.js +0 -1
  772. package/apps/pwa/out/_next/static/chunks/app/ops/seats/page-82c66d9af2290575.js +0 -1
  773. package/apps/pwa/out/_next/static/chunks/app/outputs/page-63c6752009c97b05.js +0 -1
  774. package/apps/pwa/out/_next/static/chunks/app/page-bb33d42ebc358aec.js +0 -1
  775. package/apps/pwa/out/_next/static/chunks/app/reflection/page-7e4c9379197d7214.js +0 -1
  776. package/apps/pwa/out/_next/static/chunks/app/scheduler/page-38bf1e9a7001732b.js +0 -1
  777. package/apps/pwa/out/_next/static/chunks/app/sessions/page-2e5b752012389d56.js +0 -1
  778. package/apps/pwa/out/_next/static/chunks/app/settings/devices/page-398c0faa173203f7.js +0 -1
  779. package/apps/pwa/out/_next/static/chunks/app/settings/page-002f53a965b6445c.js +0 -1
  780. package/apps/pwa/out/_next/static/chunks/app/setup/done/page-7f75997f61a26269.js +0 -1
  781. package/apps/pwa/out/_next/static/chunks/app/setup/layout-3b4c947f174e33d8.js +0 -1
  782. package/apps/pwa/out/_next/static/chunks/app/setup/page-05631753294f23fb.js +0 -1
  783. package/apps/pwa/out/_next/static/chunks/app/share/page-edd700fd2cc3d7f8.js +0 -1
  784. package/apps/pwa/out/_next/static/chunks/app/showroom/page-105f83ecb4594365.js +0 -1
  785. package/apps/pwa/out/_next/static/chunks/app/tasks/page-5823e87d2017f19c.js +0 -1
  786. package/apps/pwa/out/_next/static/chunks/app/term/page-df3445b207ceceab.js +0 -1
  787. package/apps/pwa/out/_next/static/chunks/app/today/page-b51ca09566c03de7.js +0 -1
  788. package/apps/pwa/out/_next/static/chunks/app/trace/page-8aacd5ded5dbac60.js +0 -1
  789. package/apps/pwa/out/_next/static/chunks/app/vault/page-bae3365a0b3c6a8e.js +0 -1
  790. package/apps/pwa/out/_next/static/chunks/app/workflows/chat-ui/page-9ed52b48ff1aa7fd.js +0 -1
  791. package/apps/pwa/out/_next/static/chunks/app/workflows/page-b6f8cad35fe00946.js +0 -1
  792. package/apps/pwa/out/_next/static/chunks/app/workspace/page-6d25ceda500d2457.js +0 -1
  793. package/apps/pwa/out/_next/static/chunks/app/worktrees/page-b6401a5f2c962fe8.js +0 -1
  794. package/apps/pwa/out/_next/static/chunks/ebf6cf5e.0d2f887b040e80fb.js +0 -122
  795. package/apps/pwa/out/_next/static/chunks/f09ec7d7-d29abe23edcbb193.js +0 -1
  796. package/apps/pwa/out/_next/static/chunks/framework-9322cb8a56ac081c.js +0 -1
  797. package/apps/pwa/out/_next/static/chunks/main-2fbab294e49a1561.js +0 -1
  798. package/apps/pwa/out/_next/static/chunks/main-app-f36729f56621a8f3.js +0 -1
  799. package/apps/pwa/out/_next/static/chunks/pages/_app-2a62e450b47c6114.js +0 -1
  800. package/apps/pwa/out/_next/static/chunks/pages/_error-5e17f7b445f34d43.js +0 -1
  801. package/apps/pwa/out/_next/static/chunks/webpack-b4263e2190ea7adf.js +0 -1
  802. /package/apps/pwa/out/_next/static/{L04y73dlwKeTW-GetaTF3 → uC-N0emedeNOFuaBQFv-I}/_ssgManifest.js +0 -0
@@ -0,0 +1,100 @@
1
+ # 재사용 검증 무대 카탈로그
2
+
3
+ S: 골 저작기와 Pod 자식은 HQ의 private `seat-state` 파일을 읽지 못한다. C: 검증 메뉴가 개념만 제시하면 실제 수용선을 쓸 때 사건 무대와 실행 경계가 다시 발명된다. Q: 어떤 재사용 무대를 고르고 무엇을 채워야 하나? A: 아래 공통 템플릿과 MS-01~05를 저장소 정본으로 둔다. 각 무대는 특정 입력·환경에서 증명하는 범위만 보장하며, 빠진 명령이나 정리는 해당 골에서 채운다.
4
+
5
+ 이 카탈로그는 `docs/goal-context/03-verification-menu.md`의 검증 방법을 구체적인 무대와 연결한다. 초기 원본은 `~/elanous-hq/seat-state/OP/MOCK-SCENARIO-CATALOG.md`이며, 이 저장소 파일이 착지하면 저장소 쪽이 정본이다.
6
+
7
+ ## 표준 템플릿
8
+
9
+ 한 시나리오마다 다음 필드를 채운다. 자리표시자는 실행 전에 실제 값으로 바꾼다.
10
+
11
+ ```text
12
+ ### MS-<번호> <짧은 이름>
13
+ - 증명하는 동작: <무엇이 일어나야 하나 — 한 문장>
14
+ - 언제 쓰나: <운영에서 드물거나 기다려야 하는 사건 · 어떤 칸 꼴에>
15
+ - 우주: test(--test) | Docker 격리(node-b 이미지 pin) | ux-sim | 임시 git 저장소 | 격리 HOME
16
+ - 무대 세우기(명령 · 연산자 없는 줄 여러 개): ...
17
+ - 실행(생산 진입점을 지나는 명령): ...
18
+ - 판정(무엇을 보면 통과): rc · 출력 문구 · 원장 행 · 파일 해시 불변 …
19
+ - 치우기: ...
20
+ - 함정: <운영 우주 오염 · 비밀값 · push 금지 …>
21
+ - 출처: <green-e4 파일 · 칸 · 자리 · 날짜>
22
+ ```
23
+
24
+ 원본 카탈로그에서 제공하지 않은 값은 `원본에 미기재`로 표시했다. 실행 계획은 이 빈칸을 해당 골의 다섯 줄 검증 계획으로 구체화한다.
25
+ 아래 명령은 재사용 계획의 템플릿이다. 골에서 실제 값을 채워 실행 결과를 남기기 전에는 동작 검증 증거로 인용하지 않는다.
26
+
27
+ ## 검증 무대
28
+
29
+ ### <a id="ms-01"></a> MS-01 시험 판 무대(체크리스트 fixture)
30
+
31
+ - **증명하는 동작:** 칸·카드를 읽는 생산 CLI가 실제 체크리스트 행으로 동작한다.
32
+ - **언제 쓰나:** test 우주 체크리스트가 비어 있어 운영 칸이 있어야 보이는 기능을 시험할 때.
33
+ - **우주:** test (`--test`).
34
+ - **무대 세우기:** `bun bin/elanous.mjs --test release checklist add <시험칸> "<제목>" --version 9.9.9 --owner <자리>`
35
+ - **실행:** 대상 기능의 생산 CLI를 `--test`로 실행한다(예: `tasks work-order build`).
36
+ - **판정:** 종료 코드 0과 목표가 요구한 정규화 필드를 확인한다. `unknownFields`를 다루는 목표일 때만 그 보존도 판정한다.
37
+ - **치우기:** 원본 미기재. 시험 인스턴스를 재사용하지 않는지 계획에 적는다.
38
+ - **함정:** 운영 원장을 복사하지 않는다. `config sync-test`를 쓸 때 비밀값 제거를 확인한다.
39
+ - **출처:** `~/elanous-hq/seat-state/MK/green-e4/ENTRANCE-WORK-ORDER-BUILD.md`.
40
+
41
+ ### <a id="ms-02"></a> MS-02 실패 런 무대(release resume)
42
+
43
+ - **증명하는 동작:** 실패한 발행/예행 런에서 resume이 실행 가능한 계획을 내고 저장된 런 원장은 불변이다.
44
+ - **언제 쓰나:** 실제 발행 실패를 기다려야 하는 복구 경로를 시험할 때.
45
+ - **우주:** test 및 push하지 않는 로컬 시험 가지.
46
+ - **무대 세우기:** 저장소의 격리 임시 clone에서 시험 판 `9.9.9`를 만든다; `release/9.9.9` 로컬 가지는 `origin/main`에서 만든다; 저장 런 JSON은 gate 실패·attempt 0·저장 commit이 가지 조상인 상태로 둔다. 현재 작업 저장소에는 이 가지를 만들지 않는다.
47
+ - **실행:** `bun bin/elanous.mjs --test release resume --dry-run <실패 런 경로>`
48
+ - **판정:** 종료 코드 0, 계획 출력, 런 JSON 해시가 전후 동일, attempt 파일 없음.
49
+ - **치우기:** 임시 시험 판·로컬 가지·런 JSON만 제거한다. 실제 발행 기록은 건드리지 않는다.
50
+ - **함정:** 원본은 `--dry-run` 경계와 push 금지를 요구한다. 실패 상태를 운영에 만들지 않는다.
51
+ - **출처:** `~/elanous-hq/seat-state/MK/green-e4/RELEASE-RECOVER-ONE-STEP.md`.
52
+
53
+ ### <a id="ms-03"></a> MS-03 격리 self-implement 한 바퀴
54
+
55
+ - **증명하는 동작:** `runSelfImplement` 생산 진입점이 실제 기능을 부르고 원장에 남긴다.
56
+ - **언제 쓰나:** 함수 단위 시험을 넘어 격리된 self-implement 한 실행에서 호출과 기록을 확인할 때.
57
+ - **우주:** 격리 HOME 및 test.
58
+ - **무대 세우기:** 원본에 미기재. 골에 격리 HOME·test 설정과 Pod가 열 수 있는 저장소 내 시험 경로를 명시한다. 이를 제시할 수 없으면 이 장면을 재사용하지 말고 새 무대를 제안한다.
59
+ - **실행:** 원본에 미기재. `runSelfImplement`를 부르는 실제 생산 진입점과 한 바퀴 명령, 저장소 내 계약 시험 경로를 골에서 특정한다. HQ 증거 파일만으로 완료를 판정하지 않는다.
60
+ - **판정:** 원본 표본은 round 0 호출 1/0 및 `K-TC-777` 산출 크기 0보다 큼을 기록했다. 새 골은 필요한 원장 행과 출력 조건을 구체화한다.
61
+ - **치우기:** 원본에 미기재. 격리 HOME만 제거하고 운영 HOME은 사용하지 않는다.
62
+ - **함정:** 함수 직접 호출이나 합성 결과만으로 생산 경로 연결을 주장하지 않는다.
63
+ - **출처:** `~/elanous-hq/seat-state/TC/green-e4/TA-KNOWHOW-PACK.md`.
64
+
65
+ ### <a id="ms-04"></a> MS-04 실제 git ⊕ 생산 PrManager
66
+
67
+ - **증명하는 동작:** 실제 git 상태에 의존하는 PR 재사용·회수 동작을 확인한다.
68
+ - **언제 쓰나:** 가지·원격·커밋 상태가 결과를 가르는 생산 PR 관리 경로를 시험할 때.
69
+ - **우주:** 임시 git 저장소에서 실제 git을 실행하고, GitHub API 경계는 CmdRunner stub으로 둔다.
70
+ - **무대 세우기:** 임시 bare 저장소·seed·clone을 사용한다. 구체 명령은 원본에 미기재. 골에 Pod가 열 수 있는 저장소 내 시험 경로를 명시하고, 그런 경로가 없으면 새 무대를 제안한다.
71
+ - **실행:** 생산 `PrManager` 경로를 부르는 시험 명령은 원본에 미기재. 골에서 명령과 계약 시험 파일을 특정한다.
72
+ - **판정:** 원본 카탈로그는 실제 git 시험 8개 통과를 보고하지만, 원본 시험 경로가 저장소에서 확인되기 전에는 재사용 증거로 세지 않는다. 새 실행 결과에는 GitHub 경계가 stub임을 명시한다.
73
+ - **치우기:** 임시 저장소를 제거한다.
74
+ - **함정:** 운영 GitHub를 호출하지 않는다.
75
+ - **출처:** `~/elanous-hq/seat-state/OPC/green-e4/PR-SAME-CELL-REUSE.md`.
76
+
77
+ ### <a id="ms-05"></a> MS-05 생산 호출부 확인(배선)
78
+
79
+ - **증명하는 동작:** 착지한 함수가 시험 코드 밖의 생산 경로에서 호출된다.
80
+ - **언제 쓰나:** helper·패키지·생산 호출부 연결을 수용선으로 삼을 때.
81
+ - **우주:** 검증 대상 PR 커밋(`HEAD`)의 생산 소스 검사. 런타임 동작 자체는 별도의 해당 우주에서 검증한다.
82
+ - **무대 세우기:** 대상 함수 이름과 production source 범위를 정한다.
83
+ - **실행:** PR 검증 대상 커밋을 checkout한 저장소 루트에서 골에 정한 생산 소스 범위로 실행한다. 예: `git grep -n -F '<함수이름>(' HEAD -- <생산-소스-경로>`
84
+ - **판정:** 검색은 후보를 찾는 단계다. 생산 소스의 파일·행을 열어 함수 선언·주석이 아닌 실제 호출 문장임을 확인하고 근거로 남긴다. 이 grep의 0건만으로 미배선을 판정하지 않는다. 별칭·재수출·줄바꿈 호출을 포함해 심볼 참조나 AST/수동 검색으로 범위를 확인한 뒤에도 호출부가 없을 때 미배선으로 기록한다.
85
+ - **치우기:** 파일 변경 없음.
86
+ - **함정:** `HEAD`가 검증할 PR 커밋인지, 검색 경로가 그 기능의 전체 생산 소스 범위인지 먼저 확인한다. 테스트만 제외하는 등 경로 필터는 골에 적는다. 별칭·재수출·줄바꿈 호출은 단순 grep이 놓칠 수 있으므로 결과 0건을 완전성으로 보지 않는다. 소스 확인은 호출부 존재만 증명하고 런타임 실행·결과를 증명하지 않으므로 해당 시험도 추가로 고른다.
87
+ - **출처:** `~/elanous-hq/seat-state/MK/green-e4/ALREADY-BUILT-HINT.md`; `~/elanous-hq/seat-state/TC/green-e4/REVIEW-FINDING-PATH-HEAD-CHECK.md`; `~/elanous-hq/seat-state/TC/green-e4/CLAUDE-FAILOVER.md`. E4 과업에서 미측정·미완료면 별도 E4 절차에 따라 FU 제목 파일을 만든다. 이는 MS-05의 pass 판정이 아니다.
88
+
89
+ ## <a id="catalog-gaps"></a> 현재 카탈로그 빈칸
90
+
91
+ 기존 MS가 방법의 증거 경계와 맞지 않으면 억지로 연결하지 않고 새 무대 제안으로 잇는다. 이 절은 실행 증거가 아니라 빈칸 표시다.
92
+
93
+ | 방법 | 아직 없는 표준 무대 |
94
+ |---|---|
95
+ | ux-sim 시뮬레이션 | 실제 함수·렌더 경계를 재사용 입력으로 실행하는 구체 시나리오 |
96
+ | <a id="cli-sim-run-gap"></a>CLI `sim run` mock 시나리오 | 명시한 mock 입력을 허용된 실제 경로에 통과시켜 기대 결과를 판정하는 별도 CLI 무대 |
97
+ | Docker 격리 | Pod 실패 봉투를 고정된 node-b 이미지와 checkout에서 재현 |
98
+ | 열차 사이드 gate | 같은 PR head의 통합·원격 gate 결과를 확인하는 대기열/receipt 장면 |
99
+ | 운영 실물 | 운영 데이터·실제 사건을 입력으로 하는 대상별 기록; 공통 fixture는 만들지 않음 |
100
+ | 로그 관측 | 지정 인스턴스에서 이벤트를 조회하고 실제 로그 필드·시간 창·상관 키를 확인하는 장면 |
@@ -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"}
@@ -74,8 +74,15 @@ RESULT: 51 pass, 0 fail, 390 expect() calls; Ran 51 tests across 2 files.
74
74
  | 파일 | 무엇 | 원본(전문) |
75
75
  |---|---|---|
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
+ | [`03-verification-menu.md`](03-verification-menu.md) | 수용선의 주장에 맞춰 검증 방법을 고르는 안내 메뉴 | 해당 방법의 정본 매뉴얼 링크는 메뉴 안에 둔다 |
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` |
77
80
  | [`refactoring.md`](../refactoring.md) | 리팩터링·seam·큰 파일 쪼개기 골은 냄새 → seam → 패턴 순서를 따르고, 이론상 깔끔함만으로 패턴을 도입하지 않는다 | [`refactoring.md`](../refactoring.md) |
78
81
 
82
+ `05-authoring-lessons.jsonl`은 원본의 2026-10-21T13:26:03+0900까지를 보존한 스냅샷입니다. 원본과 행별 JSON 객체를 대조하면 `evidence`의 절대경로를 `~`로 이식한 13개 행 외에는 동일합니다. 후속 원본 행은 자동 동기화되지 않습니다. 이 파일에 링크를 붙인 것과 골 저작기가 JSONL을 읽어 사용하는 것은 별개입니다. 후자의 배선과 입력 비용은 AUTHORING-LESSONS-LOOP에서 검증합니다.
83
+
84
+ 골의 수용선을 쓸 때는 [`03-verification-menu.md`](03-verification-menu.md)에서 주장에 맞는 검증 방법을 고른다. 이는 안내이며 골 발사를 막는 관문이 아니다.
85
+
79
86
  ## Cross-ref
80
87
  [[CONCEPT-self-implement-closed-loop-map-2026-08-08]](폐루프 전도 · §7a 가 이 두 계층의 근거) ·
81
88
  [[MANUAL-goal-authoring-method-2026-08-03]](저작 «절차» canonical) · **PR #5730**
@@ -21,7 +21,7 @@ catalog_id: elanous-node-catalog
21
21
  version: 1
22
22
 
23
23
  kinds:
24
- existing: [agent, gate, git, judge, observe, hitl, prompt, subgraph]
24
+ existing: [agent, gate, git, judge, observe, hitl, prompt, subgraph, classify]
25
25
  proposed: {}
26
26
 
27
27
  roles:
@@ -12,7 +12,8 @@
12
12
  # ═══════════════════════════════════════════════════════════════════════════════
13
13
  graph_id: default-loop
14
14
  version: 3
15
- entry_node: author
15
+ journey_stages: [entry, author, dispatch, run, land, recover, end]
16
+ entry_node: intake
16
17
  terminal_nodes: [landed, stopped]
17
18
  runner_inputs: [ask_text, worktree, branch, ask, context, prior]
18
19
 
@@ -198,7 +199,45 @@ nodes:
198
199
  tools: gh-pr-create # 중단 산출물을 draft PR 로 «보존»한다
199
200
  outputs: [draft_pr, reason]
200
201
 
202
+ # Common journey units sit beside the default loop's existing author/build/recovery nodes.
203
+ - { node_id: intake, kind: observe, recipe: harness-entrance, journey_stage: entry, max_visits: 1 }
204
+ - { node_id: queue, kind: gate, recipe: harness-queue, journey_stage: entry, max_visits: 1 }
205
+ - { node_id: launch-gate, kind: gate, recipe: pre-launch-gate, journey_stage: entry, max_visits: 1 }
206
+ - node_id: entry-unit
207
+ kind: subgraph
208
+ recipe: none
209
+ journey_stage: entry
210
+ max_visits: 1
211
+ call: entry@1
212
+ budget: { inner_steps: 4 }
213
+ contract: { inputs: [ask, context, prior], tools: read-only, outputs: [result, evidence] }
214
+ - { node_id: dispatch, kind: judge, recipe: harness-substrate-select, journey_stage: dispatch, max_visits: 2 }
215
+ - { node_id: pool-admit, kind: gate, recipe: pod-pool-admission, journey_stage: dispatch, max_visits: 4 }
216
+ - node_id: dispatch-pod-unit
217
+ kind: subgraph
218
+ recipe: none
219
+ journey_stage: dispatch
220
+ max_visits: 4
221
+ call: dispatch-pod@1
222
+ budget: { inner_steps: 4 }
223
+ contract: { inputs: [ask, context, prior], tools: read-only, outputs: [result, evidence] }
224
+ - { node_id: freeze-check, kind: gate, recipe: landing-freeze-admission, journey_stage: land, max_visits: 4 }
225
+ - { node_id: hold, kind: hitl, recipe: frozen-merge-queue, journey_stage: land, max_visits: 4 }
226
+ - { node_id: cleanup, kind: git, recipe: post-merge-cleanup, journey_stage: land, max_visits: 1 }
227
+ - { node_id: result-parse, kind: observe, recipe: pod-failure-reason, journey_stage: recover, max_visits: 4 }
228
+ - { node_id: salvage, kind: git, recipe: salvage-branch, journey_stage: recover, max_visits: 4 }
229
+ - { node_id: next-move, kind: judge, recipe: task-agent-judge, journey_stage: recover, max_visits: 4 }
230
+ - { node_id: ready, kind: gate, recipe: none, journey_stage: land, max_visits: 1 }
231
+ - { node_id: pr-head-checkout, kind: gate, recipe: none, journey_stage: land, max_visits: 1 }
232
+
201
233
  edges:
234
+ - { from: intake, on: outcome, map: { queued: queue, direct: launch-gate, ok: launch-gate, fail: stopped } }
235
+ - { from: queue, on: outcome, map: { launched: launch-gate, waiting: stopped, refused: stopped, ok: launch-gate, fail: stopped } }
236
+ - { from: launch-gate, on: outcome, map: { pass: entry-unit, refuse: stopped, ok: entry-unit, fail: stopped } }
237
+ - { from: entry-unit, on: outcome, map: { done: dispatch, rework: author, needs-human: stopped, failed: stopped } }
238
+ - { from: dispatch, on: outcome, map: { local: author, pod: pool-admit, fresh: author, pr-source: pool-admit, ok: author, fail: stopped } }
239
+ - { from: pool-admit, on: outcome, map: { admitted: dispatch-pod-unit, refused: stopped, ok: dispatch-pod-unit, fail: stopped } }
240
+ - { from: dispatch-pod-unit, on: outcome, map: { done: author, rework: author, needs-human: stopped, failed: result-parse } }
202
241
  - from: author
203
242
  on: outcome
204
243
  map:
@@ -304,18 +343,38 @@ edges:
304
343
  - from: open-pr
305
344
  on: outcome
306
345
  map:
307
- opened: merge
346
+ opened: freeze-check
308
347
  declined: stopped
309
348
 
310
349
  - from: merge
311
350
  on: outcome
312
351
  map:
313
- merged: landed
352
+ merged: cleanup
314
353
  land-refused: recover
354
+ draft: ready
355
+ head-branch: pr-head-checkout
356
+ not-ancestor: main-sync
357
+ review-missing: review
358
+ other: next-move
315
359
  ok: stopped
316
360
  blocked: stopped
317
361
  fail: stopped
318
362
 
363
+ # recover@1 의 출구는 «다음 걸음»이다 — 전부 stopped 로 접으면 재진입이 사라져
364
+ # land-refused 한 걸음이 수렴하지 못한다(관측: pod-child-failed · 수렴 못 함).
365
+ # done = 거절 사유가 이미 풀렸다 → 착지 마무리(cleanup)
366
+ # rework = 같은 착지 단계를 «한 번» 다시 밟는다(wait-retry · request-review)
367
+ # needs-human · failed = 사람/판정에게 넘긴다
319
368
  - from: recover
320
369
  on: outcome
321
- map: { done: stopped, rework: stopped, needs-human: stopped, failed: stopped }
370
+ map: { done: cleanup, rework: merge, needs-human: stopped, failed: stopped }
371
+
372
+ - { from: freeze-check, on: outcome, map: { open: merge, frozen: hold, taken: stopped, ok: merge, fail: stopped } }
373
+ - { from: hold, to: freeze-check }
374
+ - { from: cleanup, to: landed }
375
+ - { from: result-parse, to: salvage }
376
+ - { from: salvage, to: heal }
377
+ - { from: heal, on: pod_result, map: { failed: next-move } }
378
+ - { from: ready, to: next-move }
379
+ - { from: pr-head-checkout, to: next-move }
380
+ - { from: next-move, on: outcome, map: { narrow-relaunch: dispatch, salvage-relaunch: dispatch, alternative: dispatch, wait-retry: dispatch, decision-card: stopped, wait: stopped, ok: stopped, fail: stopped } }
@@ -1,6 +1,7 @@
1
1
  graph_id: document-loop
2
2
  version: 1
3
- entry_node: document-draft
3
+ journey_stages: [entry, author, dispatch, run, land, recover, end]
4
+ entry_node: intake
4
5
  terminal_nodes: [landed, document-blocked, needs-human]
5
6
  runner_inputs: [goal, worktree, branch, review-intent, head-sha, base-branch, ask, context, prior]
6
7
  docs_only_gate_skip: true
@@ -117,7 +118,45 @@ nodes:
117
118
  - { node_id: landed, kind: gate, recipe: none, max_visits: 1 }
118
119
  - { node_id: needs-human, kind: gate, recipe: none, max_visits: 1 }
119
120
 
121
+ - { node_id: intake, kind: observe, recipe: harness-entrance, journey_stage: entry, max_visits: 1 }
122
+ - { node_id: queue, kind: gate, recipe: harness-queue, journey_stage: entry, max_visits: 1 }
123
+ - { node_id: launch-gate, kind: gate, recipe: pre-launch-gate, journey_stage: entry, max_visits: 1 }
124
+ - node_id: entry-unit
125
+ kind: subgraph
126
+ recipe: none
127
+ journey_stage: entry
128
+ max_visits: 1
129
+ call: entry@1
130
+ budget: { inner_steps: 4 }
131
+ contract: { inputs: [ask, context, prior], tools: read-only, outputs: [result, evidence] }
132
+ - { node_id: dispatch, kind: judge, recipe: harness-substrate-select, journey_stage: dispatch, max_visits: 2 }
133
+ - { node_id: pool-admit, kind: gate, recipe: pod-pool-admission, journey_stage: dispatch, max_visits: 4 }
134
+ - node_id: dispatch-pod-unit
135
+ kind: subgraph
136
+ recipe: none
137
+ journey_stage: dispatch
138
+ max_visits: 4
139
+ call: dispatch-pod@1
140
+ budget: { inner_steps: 4 }
141
+ contract: { inputs: [ask, context, prior], tools: read-only, outputs: [result, evidence] }
142
+ - { node_id: freeze-check, kind: gate, recipe: landing-freeze-admission, journey_stage: land, max_visits: 4 }
143
+ - { node_id: hold, kind: hitl, recipe: frozen-merge-queue, journey_stage: land, max_visits: 4 }
144
+ - { node_id: cleanup, kind: git, recipe: post-merge-cleanup, journey_stage: land, max_visits: 1 }
145
+ - { node_id: result-parse, kind: observe, recipe: pod-failure-reason, journey_stage: recover, max_visits: 4 }
146
+ - { node_id: salvage, kind: git, recipe: salvage-branch, journey_stage: recover, max_visits: 4 }
147
+ - { node_id: heal, kind: judge, recipe: heal-intake, journey_stage: recover, max_visits: 4 }
148
+ - { node_id: next-move, kind: judge, recipe: task-agent-judge, journey_stage: recover, max_visits: 4 }
149
+ - { node_id: ready, kind: gate, recipe: none, journey_stage: land, max_visits: 1 }
150
+ - { node_id: pr-head-checkout, kind: gate, recipe: none, journey_stage: land, max_visits: 1 }
151
+
120
152
  edges:
153
+ - { from: intake, on: outcome, map: { queued: queue, direct: launch-gate, ok: launch-gate, fail: needs-human } }
154
+ - { from: queue, on: outcome, map: { launched: launch-gate, waiting: needs-human, refused: needs-human, ok: launch-gate, fail: needs-human } }
155
+ - { from: launch-gate, on: outcome, map: { pass: entry-unit, refuse: needs-human, ok: entry-unit, fail: needs-human } }
156
+ - { from: entry-unit, on: outcome, map: { done: dispatch, rework: document-draft, needs-human: needs-human, failed: needs-human } }
157
+ - { from: dispatch, on: outcome, map: { local: document-draft, pod: pool-admit, fresh: document-draft, pr-source: pool-admit, ok: document-draft, fail: needs-human } }
158
+ - { from: pool-admit, on: outcome, map: { admitted: dispatch-pod-unit, refused: needs-human, ok: dispatch-pod-unit, fail: needs-human } }
159
+ - { from: dispatch-pod-unit, on: outcome, map: { done: document-draft, rework: document-draft, needs-human: needs-human, failed: result-parse } }
121
160
  - from: document-draft
122
161
  on: changed-files
123
162
  map:
@@ -156,11 +195,20 @@ edges:
156
195
  fail: document-rework
157
196
 
158
197
  - from: open-pr
159
- to: merge
198
+ to: freeze-check
199
+ - { from: freeze-check, on: outcome, map: { open: merge, frozen: hold, taken: needs-human, ok: merge, fail: needs-human } }
200
+ - { from: hold, to: freeze-check }
160
201
 
161
202
  - from: merge
162
203
  on: outcome
163
- map: { merged: landed, land-refused: recover, ok: needs-human, fail: needs-human }
204
+ map: { merged: cleanup, land-refused: recover, draft: ready, head-branch: pr-head-checkout, not-ancestor: main-sync, review-missing: document-review, other: next-move, ok: needs-human, fail: needs-human }
205
+ - { from: cleanup, to: landed }
206
+ - { from: result-parse, to: salvage }
207
+ - { from: salvage, to: heal }
208
+ - { from: heal, to: next-move }
209
+ - { from: ready, to: next-move }
210
+ - { from: pr-head-checkout, to: next-move }
211
+ - { from: next-move, on: outcome, map: { narrow-relaunch: dispatch, salvage-relaunch: dispatch, alternative: dispatch, wait-retry: dispatch, decision-card: needs-human, wait: needs-human, ok: needs-human, fail: needs-human } }
164
212
 
165
213
  - from: recover
166
214
  on: outcome
@@ -46,7 +46,7 @@ version: 1
46
46
  # ⛔ 여정 노드(intake … stopped)의 id 는 원장·라이브 그래프 화면의 조인 키다 — 바꾸지 마라.
47
47
  # 🔀 분기는 «데이터»다(`on:` 상태 키 ⊕ `map:` 값→노드) — 기본 = 풀세트, 환경(substrate·freeze·queue)이 일부를 건너뛴다.
48
48
  entry_node: intake
49
- terminal_nodes: [cleanup, stopped]
49
+ terminal_nodes: [cleanup, stopped, needs-human, decision-card]
50
50
 
51
51
  # Runner-provided inputs are declared here so contract-flow can distinguish them from undeclared gaps.
52
52
  runner_inputs: [ask_text, goal, worktree, branch, review-intent, head-sha, base-branch]
@@ -419,6 +419,60 @@ nodes:
419
419
  tools: none
420
420
  outputs: []
421
421
 
422
+ # GRAPH-AUTHOR-FAIL-EDGE (0.2.35 첫 조각 · 선언 ⊕ 관측 · 동작 무변경):
423
+ # author 의 결과가 «길»이 된다 — 코드에 이미 있던 자동 재저작 한 번(ask-launch-flow.ts retryableNoTargetPaths)과
424
+ # NOT-GROUNDED 범위 카드 거절(launch-preflight.ts)을 그래프가 이름으로 안다. 관측 = graph-front-nodes.ts observeFrontNodeExit.
425
+ - node_id: re-ground
426
+ group: author
427
+ journey_stage: author
428
+ kind: judge
429
+ recipe: ask-auto-reauthor # ask-launch-flow.ts — 대상 경로 후보 검색 → 한 번 더 저작
430
+ max_visits: 1 # ⛔ 두 번째 not-grounded 는 여기로 «안» 온다 — needs-human
431
+ terminal_stages: []
432
+ contract:
433
+ inputs: [ask_text, blockers]
434
+ tools: read-only
435
+ outputs: [target_path_candidates]
436
+
437
+ - node_id: needs-human
438
+ group: end
439
+ journey_stage: end
440
+ kind: hitl
441
+ recipe: launch-preflight-blocked # ask-launch-flow.ts resolveBlockedInteractively — 근거 카드(막힘 이름·사유) 동반
442
+ max_visits: 1
443
+ terminal_stages: []
444
+ contract:
445
+ inputs: [blockers]
446
+ tools: none
447
+ outputs: [evidence_card]
448
+
449
+ # next-move 의 wait 가 «조용히» stopped 로 가지 않게 — task-agent 의 결정 카드 경로(judge.ts 'decision-card')로 모은다.
450
+ - node_id: decision-card
451
+ group: recover
452
+ journey_stage: recover
453
+ kind: hitl
454
+ recipe: task-agent-decision-card # src/task-agent/judge.ts move 'decision-card' → 결정 카드 발신
455
+ max_visits: 1
456
+ terminal_stages: []
457
+ contract:
458
+ inputs: [next_action]
459
+ tools: none
460
+ outputs: [decision_card]
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
+
422
476
  # LAND-REFUSAL-EDGES: destinations only; recovery execution is a later slice.
423
477
  - node_id: ready
424
478
  group: land
@@ -478,8 +532,17 @@ edges:
478
532
  fresh: author
479
533
  pr-source: pool-admit # 같은 PR 수리: author·plan·decompose를 건너뛰고 Pod rework
480
534
 
535
+ # GRAPH-AUTHOR-FAIL-EDGE — 결과 값은 observeFrontNodeExit 가 그 자리(ask-launch-flow.ts)에서 낸다.
481
536
  - from: author
482
- to: plan
537
+ on: outcome
538
+ map:
539
+ ok: plan
540
+ re-authored: plan # 자동 재저작 뒤 발사 가능
541
+ not-grounded: re-ground # 대상 경로 0 · NOT-GROUNDED 범위 카드 — 두 번째면 re-ground 예산(1) 소진 → needs-human
542
+ fail: needs-human # 저작기가 던졌다
543
+
544
+ - from: re-ground
545
+ to: author
483
546
 
484
547
  - from: plan
485
548
  to: decompose
@@ -536,8 +599,8 @@ edges:
536
599
  salvage-relaunch: dispatch
537
600
  alternative: dispatch
538
601
  wait-retry: dispatch
539
- decision-card: stopped
540
- wait: stopped
602
+ decision-card: decision-card
603
+ wait: decision-card # GRAPH-AUTHOR-FAIL-EDGE ③ — 조용한 stopped 0
541
604
 
542
605
  - from: implement
543
606
  to: gate
@@ -616,5 +679,15 @@ edges:
616
679
  public-export-leak: next-move
617
680
  other: next-move
618
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
+
619
692
  - from: merge
620
693
  to: cleanup
@@ -18,6 +18,15 @@ nodes:
18
18
  max_visits: 1
19
19
  budget: { inner_steps: 10 }
20
20
  contract: { inputs: [ask, context, prior], tools: harness-say, outputs: [result, evidence] }
21
+ # 저작 ↔ 구현 대화 고리(RFC-progressive-goal-elaboration §7) — 첫 왕복 = E1 착수 구체화(goal-elaborated) ·
22
+ # refine 되돌이 = E3 첫 라운드 → author(goal-refined · 골 v2 · 런당 1회) — 한 번 되돌아도 author·implement·judge ×2 + done = 7 걸음 ≤ inner_steps.
23
+ - node_id: author-dialogue
24
+ kind: subgraph
25
+ recipe: none
26
+ call: author-dialogue@1
27
+ max_visits: 1
28
+ budget: { inner_steps: 20 }
29
+ contract: { inputs: [ask, context, prior], tools: harness-say, outputs: [result, evidence] }
21
30
  - node_id: dispatch-pod
22
31
  kind: subgraph
23
32
  recipe: none
@@ -73,7 +82,8 @@ nodes:
73
82
  - { node_id: rework, kind: gate, recipe: none, max_visits: 1 }
74
83
  edges:
75
84
  - { from: entry, on: outcome, map: { done: author, rework: rework, needs-human: needs-human, failed: failed } }
76
- - { from: author, on: outcome, map: { done: dispatch-pod, rework: rework, needs-human: needs-human, failed: failed } }
85
+ - { from: author, on: outcome, map: { done: author-dialogue, rework: rework, needs-human: needs-human, failed: failed } }
86
+ - { from: author-dialogue, on: outcome, map: { done: dispatch-pod, needs-human: needs-human, failed: failed } }
77
87
  - { from: dispatch-pod, on: outcome, map: { done: pr, rework: rework, needs-human: needs-human, failed: failed } }
78
88
  - { from: pr, on: outcome, map: { done: harvest, rework: rework, needs-human: needs-human, failed: failed } }
79
89
  - { from: harvest, on: outcome, map: { done: land, rework: rework, needs-human: needs-human, failed: failed } }