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