elanous 0.2.34 → 0.2.36
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/apps/pwa/out/404/index.html +1 -1
- package/apps/pwa/out/404.html +1 -1
- package/apps/pwa/out/_next/static/chunks/{abb4b98b.163e0f56e84ae35d.js → 053a429e.9a63436527cc751c.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/109.f196abf3484bb97f.js +287 -0
- package/apps/pwa/out/_next/static/chunks/1201.afbfc5b1c5e5cbe4.js +1 -0
- package/apps/pwa/out/_next/static/chunks/1517.9275b89572098ff3.js +1 -0
- package/apps/pwa/out/_next/static/chunks/1574.ad11f8db8396ab45.js +1 -0
- package/apps/pwa/out/_next/static/chunks/1614.7a8c5c40aee0261f.js +1 -0
- package/apps/pwa/out/_next/static/chunks/1871-f1eb29d8dbb4065b.js +1 -0
- package/apps/pwa/out/_next/static/chunks/190.285c832bd9626f8c.js +64 -0
- package/apps/pwa/out/_next/static/chunks/2193.0ea24c4a7aa1d004.js +36 -0
- package/apps/pwa/out/_next/static/chunks/223-ad865c1e80491d78.js +1 -0
- package/apps/pwa/out/_next/static/chunks/2265-f0d90b6dbec05f81.js +1 -0
- package/apps/pwa/out/_next/static/chunks/2267.eb4a62a209f09ec4.js +149 -0
- package/apps/pwa/out/_next/static/chunks/2341-86cd06c0cf01aa33.js +1 -0
- package/apps/pwa/out/_next/static/chunks/2352.9abc42422bade876.js +1 -0
- package/apps/pwa/out/_next/static/chunks/2397-c1653a816061842d.js +1 -0
- package/apps/pwa/out/_next/static/chunks/2500.cbc1257b774aae52.js +1 -0
- package/apps/pwa/out/_next/static/chunks/{6086.913a69e6fa3e4a8b.js → 2683.c9773a0c589b031b.js} +4 -4
- package/apps/pwa/out/_next/static/chunks/2709.8e1889034255fc5f.js +24 -0
- package/apps/pwa/out/_next/static/chunks/{5576-82d3703636d5c4b9.js → 275-02ea4c2a33980422.js} +3 -3
- package/apps/pwa/out/_next/static/chunks/{ffdc3a04.b9c23c1b28dd4a96.js → 2812ca6a.3b9f4a7a08885744.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/284.ac77c0db55bfd3a8.js +1 -0
- package/apps/pwa/out/_next/static/chunks/2941.3c3546f96bc6efa7.js +1 -0
- package/apps/pwa/out/_next/static/chunks/2976.b000698a3c6512dc.js +24 -0
- package/apps/pwa/out/_next/static/chunks/{9550.d5f76828f972058c.js → 2986.45d7652e4f13557e.js} +2 -2
- package/apps/pwa/out/_next/static/chunks/3031-85328a92fcce4da6.js +1 -0
- package/apps/pwa/out/_next/static/chunks/{8817.61bb7ffbba502ecb.js → 3136.30aaaa5fa03662a3.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/{9131-fce7256c4180c4a5.js → 3148-98efd4869d660a87.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/{3498.cf2a15a8a9e5b926.js → 3155.2587a55196ecb394.js} +3 -3
- package/apps/pwa/out/_next/static/chunks/3277.785db1cf09f98601.js +1 -0
- package/apps/pwa/out/_next/static/chunks/3320-f9c77381f85a2c0a.js +1 -0
- package/apps/pwa/out/_next/static/chunks/{3103.84470c8445962f04.js → 3324.a09703033abcbd2f.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/3386-91049feabff9a94e.js +1 -0
- package/apps/pwa/out/_next/static/chunks/339.80afb7e8839372af.js +8 -0
- package/apps/pwa/out/_next/static/chunks/3410.7f9af5ab77cbe65f.js +115 -0
- package/apps/pwa/out/_next/static/chunks/{3819.163d4777f0a597f6.js → 3538.a445e50bb359d068.js} +2 -2
- package/apps/pwa/out/_next/static/chunks/3540c645.2595a6af01a97672.js +1 -0
- package/apps/pwa/out/_next/static/chunks/3621.581b2054cc14bee4.js +286 -0
- package/apps/pwa/out/_next/static/chunks/3676.8c28d16fd84ca843.js +1 -0
- package/apps/pwa/out/_next/static/chunks/{3414.172ad4ca2d9b08e8.js → 3727.7949ccaacaa71242.js} +2 -2
- package/apps/pwa/out/_next/static/chunks/375-b84540853523fe52.js +1 -0
- package/apps/pwa/out/_next/static/chunks/3757-180308bc61021b05.js +1 -0
- package/apps/pwa/out/_next/static/chunks/379.ee262e37586fe1ae.js +74 -0
- package/apps/pwa/out/_next/static/chunks/3840-5825d56d46976a92.js +1 -0
- package/apps/pwa/out/_next/static/chunks/3969-81054381eaec4c4c.js +1 -0
- package/apps/pwa/out/_next/static/chunks/{9b48c871.204d5d13e7809bd0.js → 3a3d9966.cc4d4585a2708e7c.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/4067-bf9aa60547972937.js +1 -0
- package/apps/pwa/out/_next/static/chunks/4116.a84a92a2492c080e.js +1 -0
- package/apps/pwa/out/_next/static/chunks/4176.e5729c93c29151eb.js +104 -0
- package/apps/pwa/out/_next/static/chunks/4227-e6c84686bc8946ca.js +1 -0
- package/apps/pwa/out/_next/static/chunks/{6740.43de73fc427c9fe2.js → 4286.b70c4520306817e8.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/4304.e9b2512834a9e23e.js +23 -0
- package/apps/pwa/out/_next/static/chunks/4327.b9e08a71c0009348.js +1 -0
- package/apps/pwa/out/_next/static/chunks/{8548.036c344973968847.js → 4615.8525eb0add35eba6.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/4946.bd106eafd668f248.js +148 -0
- package/apps/pwa/out/_next/static/chunks/{3411-f87314c6c66ebc73.js → 5085-bce4904931767ca6.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/5125.2eb9968b83767193.js +93 -0
- package/apps/pwa/out/_next/static/chunks/5128-75b733fd74a9a1eb.js +1 -0
- package/apps/pwa/out/_next/static/chunks/{3110.0a7065f25c841818.js → 528.38ce20ef8aa251ff.js} +16 -16
- package/apps/pwa/out/_next/static/chunks/5489f3fe.4bb1458b09f6dead.js +122 -0
- package/apps/pwa/out/_next/static/chunks/{1644.35dd25240ae24e4b.js → 552.b7d061ad91eeac51.js} +2 -2
- package/apps/pwa/out/_next/static/chunks/5560-2a4648f6a30f16e7.js +1 -0
- package/apps/pwa/out/_next/static/chunks/{3837.722e053fb9f321ad.js → 5711.957b095705c12560.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/{2124.ed5bf480cea7f85b.js → 575.d929793a53f27c4b.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/5772-e29e14f8ff127122.js +1 -0
- package/apps/pwa/out/_next/static/chunks/5887.5b2f5b44ce0f7e9a.js +1 -0
- package/apps/pwa/out/_next/static/chunks/5899-4c112a2d908cf97f.js +1 -0
- package/apps/pwa/out/_next/static/chunks/{7562.948255cbc3e79d33.js → 599.c39c571b6733f2a2.js} +2 -2
- package/apps/pwa/out/_next/static/chunks/6041.1b65efb796ebc2a5.js +79 -0
- package/apps/pwa/out/_next/static/chunks/6057-765c0a26028c86b2.js +1 -0
- package/apps/pwa/out/_next/static/chunks/6142.f289e0d039f453a6.js +1 -0
- package/apps/pwa/out/_next/static/chunks/6199-6bcd61d2a3910e04.js +1 -0
- package/apps/pwa/out/_next/static/chunks/6236.cdf7293e710a9b2d.js +1 -0
- package/apps/pwa/out/_next/static/chunks/6387-237e079dac9a3ae6.js +1 -0
- package/apps/pwa/out/_next/static/chunks/6448-b6d272d074276e14.js +1 -0
- package/apps/pwa/out/_next/static/chunks/6466-92e65a48490b68a9.js +1 -0
- package/apps/pwa/out/_next/static/chunks/6566.926a1d1b7c911442.js +1 -0
- package/apps/pwa/out/_next/static/chunks/6580-cdc0e4a634ce4708.js +1 -0
- package/apps/pwa/out/_next/static/chunks/6659-b242dc31b20b3f29.js +1 -0
- package/apps/pwa/out/_next/static/chunks/6690.c5d9b321b1f79384.js +1 -0
- package/apps/pwa/out/_next/static/chunks/671-e9b6ad0c771c5514.js +1 -0
- package/apps/pwa/out/_next/static/chunks/6862.bcbf89dd0f4496b3.js +27 -0
- package/apps/pwa/out/_next/static/chunks/6912-7b375ee48732c767.js +1 -0
- package/apps/pwa/out/_next/static/chunks/{5446.edf141cff9ef647d.js → 6925.562d532110879886.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/{7005.1623d2aea78eb85f.js → 6943.c6b24124853a47b2.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/727.7deb87749b0a343a.js +1 -0
- package/apps/pwa/out/_next/static/chunks/{8368.014caa8de2f5af34.js → 7481.39f7a4654907bf6e.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/7545.b1aa42cd15503319.js +1 -0
- package/apps/pwa/out/_next/static/chunks/7551-416d298c2dc4a9ab.js +1 -0
- package/apps/pwa/out/_next/static/chunks/{2554.3b5e200f5f5cfcd6.js → 771.c3cdb6c1f7f47c02.js} +16 -16
- package/apps/pwa/out/_next/static/chunks/7784.1f0ac4a16d190cf4.js +1 -0
- package/apps/pwa/out/_next/static/chunks/7870-309de463786ac1fc.js +1 -0
- package/apps/pwa/out/_next/static/chunks/7888-e29b151bb6a3bb8b.js +1 -0
- package/apps/pwa/out/_next/static/chunks/{3121.779fafe3e44612c5.js → 7891.03f910124a737985.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/7905-6ba78d9234608f79.js +1 -0
- package/apps/pwa/out/_next/static/chunks/8037.e254fd797aa224d1.js +1 -0
- package/apps/pwa/out/_next/static/chunks/8207.f527886b7c464529.js +1 -0
- package/apps/pwa/out/_next/static/chunks/856.50bda61439d465e6.js +62 -0
- package/apps/pwa/out/_next/static/chunks/{9a8cb466.cc9fc9e6e46038aa.js → 873d6c12.09bd499f57171543.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/{7431.3051e9b8a4372d2d.js → 8904.7d51af2dc033965c.js} +2 -2
- package/apps/pwa/out/_next/static/chunks/9031-92e9b487edb681ee.js +1 -0
- package/apps/pwa/out/_next/static/chunks/9060.5410d9f6a95f6287.js +90 -0
- package/apps/pwa/out/_next/static/chunks/914.8abefd48d579547b.js +94 -0
- package/apps/pwa/out/_next/static/chunks/9187-c87a2207d4ac5d46.js +1 -0
- package/apps/pwa/out/_next/static/chunks/{1895-60ed0e341c658bd4.js → 9250-072df22eaadaa6b5.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/9289.3e92f278821e18e0.js +1 -0
- package/apps/pwa/out/_next/static/chunks/9319.7816d3cc741cd34f.js +1 -0
- package/apps/pwa/out/_next/static/chunks/9327-e016bb9f1674d24f.js +1 -0
- package/apps/pwa/out/_next/static/chunks/9365.3de48bf75193ff9a.js +77 -0
- package/apps/pwa/out/_next/static/chunks/9383.5b5e9aa56b5fea97.js +1 -0
- package/apps/pwa/out/_next/static/chunks/9387-cb929573ef436f39.js +1 -0
- package/apps/pwa/out/_next/static/chunks/9489.c27becacc3283dec.js +1 -0
- package/apps/pwa/out/_next/static/chunks/{2547.dd27303624cb4da8.js → 9514.131c52cc75fe6439.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/9536.28962663c7734376.js +1 -0
- package/apps/pwa/out/_next/static/chunks/9686-12286f5bbf15a5a0.js +1 -0
- package/apps/pwa/out/_next/static/chunks/9776.289d40cc5a4c342a.js +1 -0
- package/apps/pwa/out/_next/static/chunks/9789.60f723d18097ec30.js +1 -0
- package/apps/pwa/out/_next/static/chunks/989.f0c17523c5e61f65.js +1 -0
- package/apps/pwa/out/_next/static/chunks/9972-1df393aa8d4f7d52.js +1 -0
- package/apps/pwa/out/_next/static/chunks/9f31e478.fefcbcd3c388ebc5.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/_not-found/page-96750aba7430959f.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/approvals/page-4105e5bbbb043024.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/autopilot/page-5d4fa75c2acb113e.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/board/page-a79a9bdb3b2142bf.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/botlab/page-f1c2047484992a35.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/bots/page-15ffc49b2d8c70e2.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/ceo/page-67d53a3fc8734135.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/chat/page-e30c8dc696491336.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/consult/page-2136e04fa77696e2.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/control/page-fecd2814790c2e12.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/decisions/page-280aa4a98fc5bb44.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/design-check/page-c14e96b65fb4b883.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/editor/page-187dac74825ed6bf.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/exec/page-6bc7246ea8c92448.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/field/{page-4fb31eb476dcbad3.js → page-083747f1d4518f61.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/app/healthz/route-96750aba7430959f.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/inside/page-15ca95a16ec96e1f.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/intake/page-a8ac031b3810eb64.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/layout-8835f93110494cda.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/live/page-e2de2e59111c9aad.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/live-run/page-f2b2e4bf6e981450.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/loops/page-5b92b7f75df20948.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/market/page-468eddf2b1a84ecb.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/missions/[id]/page-2af16e62c12f22df.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/morning/page-18b40867a77a5793.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/not-found-fe934f2979f5a4a2.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/observatory/page-3eec435537357170.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/ops/checklist/page-ff88cbfd2aa99fc8.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/ops/release/page-a5b39fb780c70ab5.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/ops/seats/page-ae465dde1d1b3933.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/outputs/page-e7abc34a48a6f71e.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/page-cab9674fde9ead26.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/reflection/page-1da49bc8712284d0.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/scheduler/page-5e8aa657551ac912.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/sessions/page-fcc36f36c6dc1fe2.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/settings/devices/page-d22db22f2a7296ca.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/settings/page-d12dc7b1773878f0.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/setup/done/page-99debec9ea7fbec0.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/setup/layout-96750aba7430959f.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/setup/page-2a088a78bad7e924.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/share/page-2e8ed57db7e69993.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/showroom/page-4b3a16213c2ae8fe.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/tasks/page-f098747ddf38c98b.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/term/page-c15958835534404b.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/today/page-68279e3c843c1fd7.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/trace/page-a34a74453367a39d.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/vault/page-8767a7db2155a5bd.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/workflows/chat-ui/page-bd5976683460d7f2.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/workflows/page-b7364835e7f2ef54.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/workspace/page-311af16b3ee0ffca.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/worktrees/page-fb670757274ae990.js +1 -0
- package/apps/pwa/out/_next/static/chunks/{5014f970-22bef0b5210f7d60.js → ccae1c4b-0cf414f5eff1b10d.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/{4fa33ebd.21c1bd5b294496e6.js → ceba0382.650712b56b85b582.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/da5ecc5c-b005ad8cac737d57.js +1 -0
- package/apps/pwa/out/_next/static/chunks/f9a61e4d.1fc2c1dbdd49fe46.js +1 -0
- package/apps/pwa/out/_next/static/chunks/framework-6d497cbf1eef04c6.js +1 -0
- package/apps/pwa/out/_next/static/chunks/main-app-012f5edec932f337.js +1 -0
- package/apps/pwa/out/_next/static/chunks/main-da5aeb809edc94a2.js +1 -0
- package/apps/pwa/out/_next/static/chunks/pages/_app-5ee319af6f749dfe.js +1 -0
- package/apps/pwa/out/_next/static/chunks/pages/_error-4bc84653a718d6c6.js +1 -0
- package/apps/pwa/out/_next/static/chunks/webpack-8a96cf6775c73d6e.js +1 -0
- package/apps/pwa/out/_next/static/{L04y73dlwKeTW-GetaTF3 → uC-N0emedeNOFuaBQFv-I}/_buildManifest.js +1 -1
- package/apps/pwa/out/approvals/index.html +1 -1
- package/apps/pwa/out/approvals/index.txt +22 -22
- package/apps/pwa/out/autopilot/index.html +1 -1
- package/apps/pwa/out/autopilot/index.txt +22 -22
- package/apps/pwa/out/board/index.html +1 -1
- package/apps/pwa/out/board/index.txt +22 -22
- package/apps/pwa/out/botlab/index.html +1 -1
- package/apps/pwa/out/botlab/index.txt +21 -21
- package/apps/pwa/out/bots/index.html +1 -1
- package/apps/pwa/out/bots/index.txt +21 -21
- package/apps/pwa/out/ceo/index.html +1 -1
- package/apps/pwa/out/ceo/index.txt +22 -22
- package/apps/pwa/out/chat/index.html +1 -1
- package/apps/pwa/out/chat/index.txt +21 -21
- package/apps/pwa/out/consult/index.html +1 -1
- package/apps/pwa/out/consult/index.txt +22 -22
- package/apps/pwa/out/control/index.html +1 -1
- package/apps/pwa/out/control/index.txt +22 -22
- package/apps/pwa/out/decisions/index.html +1 -1
- package/apps/pwa/out/decisions/index.txt +21 -21
- package/apps/pwa/out/design-check/index.html +1 -1
- package/apps/pwa/out/design-check/index.txt +22 -22
- package/apps/pwa/out/editor/index.html +1 -1
- package/apps/pwa/out/editor/index.txt +22 -22
- package/apps/pwa/out/exec/index.html +1 -1
- package/apps/pwa/out/exec/index.txt +22 -22
- package/apps/pwa/out/field/index.html +1 -1
- package/apps/pwa/out/field/index.txt +22 -22
- package/apps/pwa/out/healthz +1 -1
- package/apps/pwa/out/index.html +1 -1
- package/apps/pwa/out/index.txt +21 -21
- package/apps/pwa/out/inside/index.html +1 -1
- package/apps/pwa/out/inside/index.txt +21 -21
- package/apps/pwa/out/intake/index.html +1 -1
- package/apps/pwa/out/intake/index.txt +22 -22
- package/apps/pwa/out/live/index.html +1 -1
- package/apps/pwa/out/live/index.txt +22 -22
- package/apps/pwa/out/live-run/index.html +1 -1
- package/apps/pwa/out/live-run/index.txt +22 -22
- package/apps/pwa/out/loops/index.html +1 -1
- package/apps/pwa/out/loops/index.txt +21 -21
- package/apps/pwa/out/market/index.html +1 -1
- package/apps/pwa/out/market/index.txt +21 -21
- package/apps/pwa/out/missions/placeholder/index.html +1 -1
- package/apps/pwa/out/missions/placeholder/index.txt +21 -21
- package/apps/pwa/out/morning/index.html +1 -1
- package/apps/pwa/out/morning/index.txt +22 -22
- package/apps/pwa/out/observatory/index.html +1 -1
- package/apps/pwa/out/observatory/index.txt +22 -22
- package/apps/pwa/out/ops/checklist/index.html +1 -1
- package/apps/pwa/out/ops/checklist/index.txt +21 -21
- package/apps/pwa/out/ops/release/index.html +1 -1
- package/apps/pwa/out/ops/release/index.txt +21 -21
- package/apps/pwa/out/ops/seats/index.html +1 -1
- package/apps/pwa/out/ops/seats/index.txt +21 -21
- package/apps/pwa/out/outputs/index.html +1 -1
- package/apps/pwa/out/outputs/index.txt +21 -21
- package/apps/pwa/out/reflection/index.html +1 -1
- package/apps/pwa/out/reflection/index.txt +22 -22
- package/apps/pwa/out/scheduler/index.html +1 -1
- package/apps/pwa/out/scheduler/index.txt +22 -22
- package/apps/pwa/out/sessions/index.html +1 -1
- package/apps/pwa/out/sessions/index.txt +21 -21
- package/apps/pwa/out/settings/devices/index.html +1 -1
- package/apps/pwa/out/settings/devices/index.txt +22 -22
- package/apps/pwa/out/settings/index.html +1 -1
- package/apps/pwa/out/settings/index.txt +22 -22
- package/apps/pwa/out/setup/done/index.html +1 -1
- package/apps/pwa/out/setup/done/index.txt +22 -22
- package/apps/pwa/out/setup/index.html +1 -1
- package/apps/pwa/out/setup/index.txt +22 -22
- package/apps/pwa/out/share/index.html +1 -1
- package/apps/pwa/out/share/index.txt +22 -22
- package/apps/pwa/out/showroom/index.html +1 -1
- package/apps/pwa/out/showroom/index.txt +21 -21
- package/apps/pwa/out/tasks/index.html +1 -1
- package/apps/pwa/out/tasks/index.txt +22 -22
- package/apps/pwa/out/term/index.html +1 -1
- package/apps/pwa/out/term/index.txt +22 -22
- package/apps/pwa/out/today/index.html +1 -1
- package/apps/pwa/out/today/index.txt +22 -22
- package/apps/pwa/out/trace/index.html +1 -1
- package/apps/pwa/out/trace/index.txt +22 -22
- package/apps/pwa/out/vault/index.html +1 -1
- package/apps/pwa/out/vault/index.txt +22 -22
- package/apps/pwa/out/workflows/chat-ui/index.html +1 -1
- package/apps/pwa/out/workflows/chat-ui/index.txt +22 -22
- package/apps/pwa/out/workflows/index.html +1 -1
- package/apps/pwa/out/workflows/index.txt +22 -22
- package/apps/pwa/out/workspace/index.html +1 -1
- package/apps/pwa/out/workspace/index.txt +22 -22
- package/apps/pwa/out/worktrees/index.html +1 -1
- package/apps/pwa/out/worktrees/index.txt +22 -22
- package/bin/elanous.mjs +3 -2
- package/catalog/providers/opengateway.yaml +25 -0
- package/docs/goal-context/01-goal-authoring-checks.md +8 -0
- package/docs/goal-context/03-verification-menu.md +24 -0
- package/docs/goal-context/04-mock-scenarios.md +100 -0
- package/docs/goal-context/05-authoring-lessons.jsonl +47 -0
- package/docs/goal-context/README.md +7 -0
- package/graphs/catalog/catalog.yaml +1 -1
- package/graphs/default-loop.yaml +63 -4
- package/graphs/document-loop.yaml +51 -3
- package/graphs/implement-loop.yaml +77 -4
- package/graphs/journey/ta-journey.yaml +11 -1
- package/graphs/journey/units/author-dialogue/author-dialogue.yaml +42 -0
- package/graphs/journey/units/author-dialogue/observe.ts +96 -0
- package/graphs/journey/units/author-dialogue/recipes.yaml +10 -0
- package/graphs/operate-loop.yaml +51 -3
- package/graphs/release/recipes.yaml +6 -0
- package/graphs/release/release-loop.yaml +17 -4
- package/graphs/research-loop.yaml +137 -3
- package/graphs/test-diet/test-diet.yaml +3 -0
- package/graphs/wizard/recipes.yaml +44 -0
- package/graphs/wizard/wizard-loop.yaml +44 -0
- package/graphs/work/research-report.yaml +2 -0
- package/package.json +1 -1
- package/scripts/ci-typecheck-changed.ts +139 -5
- package/scripts/coord-role-pack.ts +19 -6
- package/scripts/first10-gate.ts +416 -0
- package/scripts/fleet/wsl-node-setup.sh +432 -0
- package/scripts/hq/standby-snapshot.ts +17 -12
- package/scripts/release-loop/docs-land-node.ts +21 -5
- package/scripts/release-loop/docs-node.ts +204 -8
- package/scripts/release-loop/gate-baseline-receipt.ts +155 -0
- package/scripts/release-loop/gate-node.ts +427 -72
- package/scripts/release-loop/gate-partial.ts +65 -11
- package/scripts/release-loop/gate-radius-live.ts +177 -0
- package/scripts/release-loop/gate-radius-shadow.ts +1 -1
- package/scripts/release-loop/node-verdict.ts +14 -1
- package/scripts/release-loop/npm-publish-node.ts +66 -12
- package/scripts/release-loop/probe-pod-host-dirs-live.ts +5 -0
- package/scripts/release-loop/pwa-remote.ts +166 -0
- package/scripts/release-loop/pwa-scenarios-node.ts +19 -3
- package/scripts/release-loop/resume-cap.ts +14 -34
- package/scripts/release-loop/resume-release.ts +78 -15
- package/scripts/release-loop/traffic-node.ts +59 -0
- package/scripts/release-loop/traffic-transition.ts +159 -0
- package/scripts/release-loop/unattended-release.ts +2 -0
- package/scripts/rhythm/daily.ts +137 -3
- package/scripts/test-diet/lib.ts +6 -1
- package/scripts/test-diet/node.ts +194 -13
- package/scripts/ux-sim.ts +92 -0
- package/skills/README.md +1 -0
- package/src/acp/core-turn-bridge.ts +48 -6
- package/src/agent/delegate-hint.ts +16 -0
- package/src/agent/runner.ts +82 -2
- package/src/agent/self-ambient-cache.ts +8 -0
- package/src/agent/task-notification.ts +56 -10
- package/src/agent/types.ts +4 -0
- package/src/agent-substrate/acp-reviewer.ts +39 -4
- package/src/agent-substrate/pr-reviewer.ts +72 -3
- 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 +229 -28
- package/src/autopilot/mission-codebase-gate.ts +141 -12
- package/src/autopilot/pr-manager.ts +240 -41
- package/src/boot/daemon-tools/self-implement.ts +1 -0
- package/src/budget/run-usage-rollup.ts +1 -0
- package/src/budget/usage-outcomes.ts +8 -4
- package/src/capture/tui-self-report.ts +102 -0
- package/src/chat/goal-continue-verdict.ts +41 -0
- package/src/chat/index.ts +30 -6
- package/src/chat/internal-turn-origin.ts +1 -0
- package/src/chat/paste-fold.ts +86 -0
- package/src/chat/pickers/modal-runtime.ts +10 -27
- 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/agent-cli.ts +13 -2
- package/src/cli/config-audit.ts +119 -0
- package/src/cli/doctor-cli.ts +26 -1
- package/src/cli/guardian-cli.ts +10 -0
- package/src/cli/herdr-cli.ts +34 -0
- package/src/cli/light-entry-route.ts +50 -7
- package/src/cli/log-event-names.ts +2 -0
- package/src/cli/make-cli.ts +247 -11
- package/src/cli/msg-cli.ts +117 -3
- package/src/cli/pod-cli.ts +77 -3
- package/src/cli/pr-cli.ts +34 -18
- 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-pod-shadow-job.ts +3 -0
- 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 +79 -0
- package/src/cli/release-cli.ts +92 -106
- package/src/cli/release-single-flight.ts +1 -1
- package/src/cli/remote-resolve.ts +1 -1
- package/src/cli/root-tui-entry.ts +48 -0
- package/src/cli/sim-cli.ts +22 -0
- package/src/cli/tasks-card-show.ts +162 -0
- package/src/cli/tasks-cli.ts +1065 -338
- package/src/cli/tasks-read-cli.ts +197 -0
- package/src/cli/usage-cli.ts +13 -11
- package/src/clipboard/history.ts +179 -13
- package/src/config.ts +8 -1
- package/src/core-turn/run-core-turn.ts +4 -2
- package/src/core-turn/run-goal-loop.ts +73 -16
- package/src/core-turn/types.ts +6 -1
- package/src/dashboard/chat/acp-chat.ts +8 -0
- package/src/dashboard/context/keys.ts +8 -31
- package/src/dashboard/index.ts +280 -59
- package/src/dashboard/input/agent-wake.ts +7 -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/render/theme-resolver.ts +33 -4
- 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 +3 -2
- package/src/dashboard/slash-runtime/model-choices.ts +15 -0
- package/src/dashboard/stale-install-check.ts +3 -99
- 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/domains/schedule-registry.ts +16 -2
- package/src/domains/standalone-log-sink.ts +15 -2
- package/src/esc-abort-gate.ts +69 -0
- package/src/git-fs/idle-refresh.ts +76 -0
- package/src/git-fs/index.ts +18 -7
- package/src/git-fs/worktree.ts +137 -5
- package/src/graph-kinds/registry.ts +2 -2
- package/src/graph-runner/graph-cli.ts +18 -0
- package/src/graph-runner/runner.ts +173 -21
- package/src/graph-wizard/generate.ts +108 -4
- package/src/graph-wizard/steps.ts +15 -0
- package/src/grok/credential.ts +10 -3
- package/src/grounding/proactive-ground.ts +86 -0
- package/src/harness/control-inbox.ts +49 -1
- package/src/harness/harness-cli-command.ts +163 -35
- package/src/harness/harness-incidents.ts +85 -1
- package/src/harness/launch-utterance-ledger.ts +208 -0
- package/src/harness/pod-control-send.ts +33 -5
- 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/impl-discipline/detector.ts +16 -4
- package/src/impl-discipline/system-prompt.ts +11 -0
- package/src/impl-discipline/types.ts +2 -2
- package/src/index.ts +822 -154
- package/src/input-core/context-key-runtime.ts +21 -0
- package/src/intake-plane/already-built-hint.ts +4 -2
- package/src/intake-plane/requirement-funnel.ts +29 -1
- package/src/light-cli.ts +32 -11
- package/src/llm/opengateway-models.ts +11 -0
- package/src/llm/provider-credentials.ts +14 -0
- package/src/llm/provider-detect.ts +8 -1
- package/src/llm/runtime-model-family.ts +2 -1
- package/src/llm-wellformed.ts +70 -0
- package/src/llm.ts +247 -59
- package/src/loops/msg-wake.ts +35 -39
- package/src/loops/orchestrator/inbox.ts +59 -11
- package/src/loops/orchestrator/knowhow-pack.ts +364 -0
- package/src/loops/orchestrator/tick.ts +5 -1
- package/src/maturity/feature-maturity.ts +1 -1
- package/src/model-tier/llm-tier-map.ts +15 -1
- package/src/models/prompts.ts +17 -2
- package/src/msg/msg-post-office.ts +116 -0
- package/src/mss/logging/log-store.ts +79 -22
- package/src/native-tool-catalog.ts +15 -1
- package/src/nexus/api/decisions-route.ts +38 -18
- package/src/nexus/api/graph-wizard-api.ts +20 -2
- package/src/nexus/api/loop-resources.ts +13 -1
- package/src/nexus/boot/register-mcp-clients.ts +263 -38
- package/src/nexus/onboarding/first-boot-wizard.ts +56 -8
- package/src/oauth/codex.ts +7 -0
- package/src/onboarding/first-run.ts +37 -6
- package/src/onboarding/web-first.ts +43 -11
- package/src/ops/overview-collect.ts +30 -9
- package/src/ops/overview.ts +22 -9
- package/src/persona/loader.ts +11 -0
- package/src/persona/types.ts +8 -0
- package/src/pr-tool/census.ts +261 -27
- package/src/prompt-library/session-guidance.ts +14 -0
- package/src/provider-summary.ts +8 -0
- package/src/pty-shell/herdr-agent-report.ts +118 -9
- package/src/pty-shell/herdr-prompt.ts +266 -0
- package/src/pty-shell/pty-control-ipc.ts +151 -8
- package/src/pty-shell/pty-manifest.ts +7 -0
- package/src/pty-shell/pty-special-keys.ts +42 -2
- package/src/pty-shell/stale-install-check.ts +99 -0
- package/src/pty-shell/tui-run-state.ts +14 -2
- package/src/release-loop/auto-start.ts +20 -2
- package/src/release-loop/checklist.ts +100 -4
- package/src/release-loop/landed-but-yellow.ts +129 -5
- package/src/release-loop/light-rc.ts +1 -0
- package/src/release-loop/rehearsal.ts +37 -21
- package/src/repl/index.ts +192 -17
- package/src/repl/ops-msg-bridge.ts +32 -0
- package/src/seat-loop/knowhow-lint.ts +1 -1
- package/src/self-dev/ask-launch-flow.ts +44 -5
- package/src/self-dev/cli-help-text.ts +17 -0
- package/src/self-dev/decompose-proposal.ts +172 -20
- package/src/self-dev/decompose.ts +61 -0
- package/src/self-dev/dev-cli.ts +48 -12
- package/src/self-dev/dev-pipeline.ts +8 -2
- package/src/self-dev/draft-residue.ts +37 -1
- package/src/self-dev/draft-sweep.ts +137 -11
- package/src/self-dev/draft-triage-rules.ts +138 -0
- package/src/self-dev/fleet-reduce.ts +3 -2
- package/src/self-dev/glm-credential-guard.ts +77 -0
- package/src/self-dev/graph-front-nodes.ts +112 -0
- package/src/self-dev/graph-journey-nodes.ts +2 -0
- package/src/self-dev/graph-journey-route.ts +12 -2
- package/src/self-dev/harness-run-cli.ts +3 -15
- package/src/self-dev/orchestrate-cli-text.ts +10 -0
- 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 +35 -1
- package/src/self-dev/run-supervisor.ts +55 -2
- package/src/self-dev/run-types.ts +1 -1
- package/src/self-dev/self-orchestrate-runtime.ts +1 -11
- package/src/self-dev/shard-aggregate.ts +42 -5
- package/src/self-dev/shard-run.ts +8 -1
- package/src/self-health/autoheal.ts +153 -0
- package/src/self-health/signatures.ts +6 -0
- package/src/self-implement/blocked-draft-policy.ts +20 -0
- package/src/self-implement/classify-shadow.ts +3 -7
- package/src/self-implement/device-first.ts +116 -0
- package/src/self-implement/doctor-visit.ts +257 -2
- package/src/self-implement/evidence-command-budget.ts +80 -0
- package/src/self-implement/gate-baseline.ts +56 -17
- package/src/self-implement/gate-cli.ts +1 -0
- package/src/self-implement/gate-remote.ts +31 -20
- package/src/self-implement/goal-author-cli.ts +1 -0
- package/src/self-implement/goal-author-decompose.ts +534 -45
- package/src/self-implement/goal-author.ts +282 -7
- package/src/self-implement/goal-elaborate.ts +449 -0
- package/src/self-implement/goal-refine.ts +273 -0
- package/src/self-implement/graph-overlay-yaml.ts +14 -3
- package/src/self-implement/graph-variant.ts +40 -6
- package/src/self-implement/headless-elanous-driver.ts +19 -3
- package/src/self-implement/off-diff-evidence.ts +58 -6
- package/src/self-implement/orchestrator.ts +370 -62
- 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/rework-budget-judgment.ts +5 -8
- package/src/self-implement/rework-policy.ts +30 -0
- package/src/self-implement/run-ledger.ts +108 -0
- package/src/self-implement/run-stop.ts +10 -1
- package/src/self-implement/run-ttl.ts +38 -24
- package/src/self-implement/running-runs.ts +29 -1
- package/src/self-implement/scope-adjacency.ts +115 -0
- package/src/self-implement/seams.ts +187 -28
- package/src/self-implement/stop-autoheal.ts +87 -1
- package/src/self-implement/wiring-check.ts +358 -0
- package/src/session-runtime/index.ts +1 -1
- package/src/setup/llm-env-detect.ts +5 -0
- package/src/shell-env-bootstrap.ts +11 -4
- package/src/skills/runner.ts +4 -2
- package/src/skills/tools/agent.ts +408 -40
- package/src/skills/tools/msg-ask.ts +100 -0
- package/src/skills/tools/ops-ledger.ts +2 -1
- 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/status-provider-info.ts +37 -6
- package/src/steward/hold-hygiene.ts +24 -6
- package/src/steward/rejudge-tick.ts +10 -2
- package/src/steward/ta-repair-event-collect.ts +17 -6
- package/src/steward/triage-budget.ts +194 -0
- package/src/steward/triage.ts +20 -3
- package/src/task-agent/actions.ts +72 -2
- package/src/task-agent/green-sweep.ts +4 -0
- package/src/task-agent/land-queue.ts +21 -8
- package/src/task-agent/live-moves.ts +182 -10
- package/src/task-agent/mission.ts +30 -0
- package/src/task-agent/parent-host.ts +123 -3
- package/src/task-agent/rejudge-on-head.ts +15 -0
- package/src/task-agent/repair-cycle.ts +138 -32
- package/src/task-agent/repair-next-move.ts +31 -3
- package/src/task-agent/repair-outcomes.ts +29 -0
- package/src/task-agent/repair-worker.ts +14 -4
- package/src/task-agent/shadow.ts +48 -4
- package/src/task-agent/task-card-prefix.ts +2 -0
- package/src/task-agent/task-hand.ts +525 -57
- package/src/task-agent/task-parent-role-llm.ts +36 -0
- package/src/task-agent/tier-split.ts +196 -0
- package/src/task-agent/work-order-build.ts +2 -0
- package/src/task-agent/work-order.ts +3 -2
- package/src/task-orchestrator/generator-prompt.ts +60 -11
- package/src/task-orchestrator/surfaces/pod-account-broker.ts +42 -0
- package/src/task-orchestrator/surfaces/pod-child-providers.ts +1 -1
- package/src/task-orchestrator/surfaces/pod-child-reuse.ts +146 -0
- package/src/task-orchestrator/surfaces/pod-command-job.ts +130 -11
- package/src/task-orchestrator/surfaces/pod-failure-reason.ts +215 -3
- package/src/task-orchestrator/surfaces/pod-image-source.ts +89 -1
- package/src/task-orchestrator/surfaces/pod-launch-history.ts +133 -0
- package/src/task-orchestrator/surfaces/pod-lease.ts +17 -8
- package/src/task-orchestrator/surfaces/pod-manifest-test-normalize.ts +19 -2
- package/src/task-orchestrator/surfaces/pod-pool.ts +76 -4
- package/src/task-orchestrator/surfaces/pod-provenance.ts +82 -0
- 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-source-receive.ts +18 -0
- package/src/task-orchestrator/surfaces/pod-warm-provenance.ts +81 -0
- package/src/task-orchestrator/surfaces/pod-warm-worker-pod.ts +6 -2
- package/src/task-orchestrator/surfaces/pod-warm-worker-protocol.ts +7 -0
- package/src/task-orchestrator/surfaces/pod-warm-worker-provider.ts +521 -40
- package/src/task-orchestrator/surfaces/pod-warm-worker-runtime.ts +3 -0
- package/src/task-orchestrator/surfaces/self-implement-pod.ts +759 -50
- package/src/task-orchestrator/surfaces/self-implement.ts +65 -2
- package/src/tool-runtime/index.ts +15 -2
- package/src/tool-runtime/mcp-proxy-bootstrap.ts +29 -0
- package/src/tool-runtime/ops-ledger-runtimes.ts +10 -2
- package/src/tty-foreground.ts +155 -0
- package/src/tui/README.md +2 -0
- package/src/tui/chat/background-job-status.ts +54 -0
- package/src/tui/chat/goal-interim.ts +173 -0
- package/src/tui/chat/log-view.ts +267 -0
- package/src/tui/chat/self-health-status.ts +232 -0
- package/src/tui/entry.ts +695 -0
- package/src/tui/input/composer.ts +151 -0
- package/src/tui/seat-mail-boot.ts +59 -0
- package/src/tui/slash/compact-command.ts +7 -0
- package/src/tui/slash/compact.ts +94 -0
- package/src/tui/slash/new-session.ts +35 -0
- package/src/tui/slash/resume.ts +75 -0
- package/src/tui-client/local-chat-turn.ts +282 -0
- package/src/tui-client/local-harness-command.ts +63 -0
- package/src/tui-client/local-provider-command.ts +184 -0
- 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 +4 -2
- package/src/ux-sim/classic-tui-seat-scenarios.ts +516 -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 +379 -0
- package/src/ux-sim/fake-bin.ts +87 -7
- package/src/ux-sim/fake-herdr.ts +238 -0
- package/src/ux-sim/fake-llm.ts +111 -6
- package/src/ux-sim/fault-glm-no-credential.ts +116 -0
- package/src/ux-sim/fault-nextmove-dispatch.ts +367 -0
- package/src/ux-sim/fault-pod-codex-503.ts +211 -0
- package/src/ux-sim/fault-scope-escape-lift.ts +216 -0
- 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 +631 -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/subagent-tools-device.ts +81 -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/1162.c69abda138c7ce43.js +0 -79
- package/apps/pwa/out/_next/static/chunks/1449-1fede62af84c3e43.js +0 -1
- package/apps/pwa/out/_next/static/chunks/1598-13fc845935e816df.js +0 -1
- package/apps/pwa/out/_next/static/chunks/1639.62c5e16fa20d242f.js +0 -94
- package/apps/pwa/out/_next/static/chunks/1661-adb8b2babc9aaf8c.js +0 -1
- package/apps/pwa/out/_next/static/chunks/2147.107c0fc6146fb15a.js +0 -23
- package/apps/pwa/out/_next/static/chunks/2202-ef1c9b000c3074fc.js +0 -1
- package/apps/pwa/out/_next/static/chunks/2247.1e326638ee43e672.js +0 -115
- package/apps/pwa/out/_next/static/chunks/2268.56e1e3d58180abae.js +0 -8
- package/apps/pwa/out/_next/static/chunks/2469-606819c812414021.js +0 -1
- package/apps/pwa/out/_next/static/chunks/2593.e53c1620c0bb3599.js +0 -1
- package/apps/pwa/out/_next/static/chunks/2690.e96671114222676a.js +0 -1
- package/apps/pwa/out/_next/static/chunks/2898-79ee1a5cc0cd9d13.js +0 -1
- package/apps/pwa/out/_next/static/chunks/298.26099a9f65e5c8ff.js +0 -1
- package/apps/pwa/out/_next/static/chunks/2987-30cf9c2eb7b8bdd5.js +0 -1
- package/apps/pwa/out/_next/static/chunks/2992.51fc2a7295bd8139.js +0 -1
- package/apps/pwa/out/_next/static/chunks/3001-5a52788c813b6113.js +0 -1
- package/apps/pwa/out/_next/static/chunks/3014-291245fba9df7b5b.js +0 -1
- package/apps/pwa/out/_next/static/chunks/3068.ee78201f0251a18d.js +0 -1
- package/apps/pwa/out/_next/static/chunks/3083.cd399a17e9365f78.js +0 -1
- package/apps/pwa/out/_next/static/chunks/3117-e1c474683fd1f824.js +0 -1
- package/apps/pwa/out/_next/static/chunks/3251-2c17bd5a91f8de2e.js +0 -1
- package/apps/pwa/out/_next/static/chunks/326.3fb32322bb2ddf6d.js +0 -1
- package/apps/pwa/out/_next/static/chunks/3421-7ff7fbaa156985a7.js +0 -1
- package/apps/pwa/out/_next/static/chunks/381.f55dc63ea87735e6.js +0 -1
- package/apps/pwa/out/_next/static/chunks/4129-ab0a6189f1778633.js +0 -1
- package/apps/pwa/out/_next/static/chunks/4361.93d14ba594b3a035.js +0 -104
- package/apps/pwa/out/_next/static/chunks/4364.7a7eb19cceb67d2f.js +0 -286
- package/apps/pwa/out/_next/static/chunks/4406.d71f506f7c3ee9d3.js +0 -149
- package/apps/pwa/out/_next/static/chunks/4461.2ad1514180ae7e29.js +0 -148
- package/apps/pwa/out/_next/static/chunks/4479.bd309cbe0e3842ee.js +0 -64
- package/apps/pwa/out/_next/static/chunks/4522-05966f777d66d13b.js +0 -1
- package/apps/pwa/out/_next/static/chunks/4543-9a3e9812e845de65.js +0 -1
- package/apps/pwa/out/_next/static/chunks/4557.f8f1d84a0d90d590.js +0 -74
- package/apps/pwa/out/_next/static/chunks/4589-79b11542179ef58c.js +0 -1
- package/apps/pwa/out/_next/static/chunks/4633-9f8f9f88ffbb8f5c.js +0 -1
- package/apps/pwa/out/_next/static/chunks/4831.23af4d10c0697b5e.js +0 -1
- package/apps/pwa/out/_next/static/chunks/4983.5951b85724f61f2a.js +0 -1
- package/apps/pwa/out/_next/static/chunks/5028-f0722e6114c313e7.js +0 -1
- package/apps/pwa/out/_next/static/chunks/5249.96a848656b582a93.js +0 -1
- package/apps/pwa/out/_next/static/chunks/5311.16e0ffbfa5468b80.js +0 -62
- package/apps/pwa/out/_next/static/chunks/5489.ec2dd1b5272a19dc.js +0 -24
- package/apps/pwa/out/_next/static/chunks/559.df87695df637920c.js +0 -1
- package/apps/pwa/out/_next/static/chunks/5618-5c88f2f70178c4ad.js +0 -1
- package/apps/pwa/out/_next/static/chunks/5764.05487bf0b73ddb6b.js +0 -1
- package/apps/pwa/out/_next/static/chunks/5930.e678826c3f831aab.js +0 -1
- package/apps/pwa/out/_next/static/chunks/5dfb57f7.f2e3305326202474.js +0 -1
- package/apps/pwa/out/_next/static/chunks/6053-d893974de92e6198.js +0 -1
- package/apps/pwa/out/_next/static/chunks/6200-cefd6f33f59d765e.js +0 -1
- package/apps/pwa/out/_next/static/chunks/6314-edeba650ae686ac9.js +0 -1
- package/apps/pwa/out/_next/static/chunks/6316-bc9a9b74d7842d79.js +0 -1
- package/apps/pwa/out/_next/static/chunks/6476-13b9779b73528008.js +0 -1
- package/apps/pwa/out/_next/static/chunks/666-04db3ac4c8e3c66f.js +0 -1
- package/apps/pwa/out/_next/static/chunks/670.682e55106ef915a6.js +0 -77
- package/apps/pwa/out/_next/static/chunks/6816.b7ba9d0a1a4a46a7.js +0 -1
- package/apps/pwa/out/_next/static/chunks/690-fbbcc777f189af37.js +0 -1
- package/apps/pwa/out/_next/static/chunks/6989.0d3d4020e5cb3df6.js +0 -90
- package/apps/pwa/out/_next/static/chunks/7193-cf355cca5ba6c5d5.js +0 -1
- package/apps/pwa/out/_next/static/chunks/7217-d17393fe7af78fa6.js +0 -1
- package/apps/pwa/out/_next/static/chunks/7232.24edbd938a69c8d0.js +0 -1
- package/apps/pwa/out/_next/static/chunks/7295cd1e.b4b557908888eeee.js +0 -1
- package/apps/pwa/out/_next/static/chunks/7323.adb02de21991883c.js +0 -1
- package/apps/pwa/out/_next/static/chunks/7386.5d8e7e42e818dfb6.js +0 -287
- package/apps/pwa/out/_next/static/chunks/7448.478958ffbbba0ac0.js +0 -1
- package/apps/pwa/out/_next/static/chunks/7537.ba2208c5c656b8a3.js +0 -1
- package/apps/pwa/out/_next/static/chunks/7596-962ae6db6cfc9c83.js +0 -1
- package/apps/pwa/out/_next/static/chunks/7671.cff51beac212a2ba.js +0 -1
- package/apps/pwa/out/_next/static/chunks/7883.3916734ee16d3e58.js +0 -27
- package/apps/pwa/out/_next/static/chunks/7952.b192c31b6a0e00cc.js +0 -1
- package/apps/pwa/out/_next/static/chunks/801.5b24e81eded22d1b.js +0 -1
- package/apps/pwa/out/_next/static/chunks/8176.8c9a8613f5a01ac1.js +0 -36
- package/apps/pwa/out/_next/static/chunks/819e78a6.fa3dd7f7da19bf61.js +0 -1
- package/apps/pwa/out/_next/static/chunks/8220-78978450c3183d8d.js +0 -1
- package/apps/pwa/out/_next/static/chunks/8221-eb60b5bc692a3361.js +0 -1
- package/apps/pwa/out/_next/static/chunks/826.e9a26064f474949e.js +0 -1
- package/apps/pwa/out/_next/static/chunks/8459-a351487a4480f584.js +0 -1
- package/apps/pwa/out/_next/static/chunks/8482-75823d513a4ce151.js +0 -1
- package/apps/pwa/out/_next/static/chunks/8488.8da515248cda3f3a.js +0 -1
- package/apps/pwa/out/_next/static/chunks/8584.388a1779d9b203af.js +0 -1
- package/apps/pwa/out/_next/static/chunks/8637.a55e098e61ffefb8.js +0 -1
- package/apps/pwa/out/_next/static/chunks/9207-8e6a12db30373f32.js +0 -1
- package/apps/pwa/out/_next/static/chunks/9263-00ae932c62696a86.js +0 -1
- package/apps/pwa/out/_next/static/chunks/9318.caafc3a130e8769c.js +0 -1
- package/apps/pwa/out/_next/static/chunks/932.da3fb55951882562.js +0 -93
- package/apps/pwa/out/_next/static/chunks/9433.002f8426ac75b6b7.js +0 -1
- package/apps/pwa/out/_next/static/chunks/9464.dd631a5a14b1d660.js +0 -24
- package/apps/pwa/out/_next/static/chunks/9739.8d5f36ac67a3b236.js +0 -1
- package/apps/pwa/out/_next/static/chunks/9743.beeabb9d5f86abe4.js +0 -1
- package/apps/pwa/out/_next/static/chunks/9843-a23d3f32dc43f715.js +0 -1
- package/apps/pwa/out/_next/static/chunks/994-28211077c7c587d5.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/_not-found/page-3b4c947f174e33d8.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/approvals/page-369d5ce99483f859.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/autopilot/page-63c0ed0eb26e5fce.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/board/page-62802c6003bc85cc.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/botlab/page-ecb41560d4e77be9.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/bots/page-7b65ad8130c93e95.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/ceo/page-8755477c15a9060c.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/chat/page-5725447dd972c471.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/consult/page-b979de0591a69375.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/control/page-6d0796bf4633751a.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/decisions/page-59c31dc0394e67b4.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/design-check/page-12dfc95f6cc5c718.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/editor/page-25788244e66aa4dd.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/exec/page-a2555dc705466322.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/healthz/route-3b4c947f174e33d8.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/inside/page-578729adbeaa40cb.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/intake/page-a1d20fffbec35205.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/layout-4a558f94516b8004.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/live/page-9e3834705b86145e.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/live-run/page-d7bff0f0905a662c.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/loops/page-cb1c5fe746ea4014.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/market/page-9ee320507356582a.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/missions/[id]/page-66fd183b74835886.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/morning/page-3272a064a01a9927.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/not-found-f281b7a7f6ef2529.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/observatory/page-d45a65f8b7124fcd.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/ops/checklist/page-e9c1fe684dd19a66.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/ops/release/page-b8322932fc6e34de.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/ops/seats/page-82c66d9af2290575.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/outputs/page-63c6752009c97b05.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/page-bb33d42ebc358aec.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/reflection/page-7e4c9379197d7214.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/scheduler/page-38bf1e9a7001732b.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/sessions/page-2e5b752012389d56.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/settings/devices/page-398c0faa173203f7.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/settings/page-002f53a965b6445c.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/setup/done/page-7f75997f61a26269.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/setup/layout-3b4c947f174e33d8.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/setup/page-05631753294f23fb.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/share/page-edd700fd2cc3d7f8.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/showroom/page-105f83ecb4594365.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/tasks/page-5823e87d2017f19c.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/term/page-df3445b207ceceab.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/today/page-b51ca09566c03de7.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/trace/page-8aacd5ded5dbac60.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/vault/page-bae3365a0b3c6a8e.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/workflows/chat-ui/page-9ed52b48ff1aa7fd.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/workflows/page-b6f8cad35fe00946.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/workspace/page-6d25ceda500d2457.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/worktrees/page-b6401a5f2c962fe8.js +0 -1
- package/apps/pwa/out/_next/static/chunks/ebf6cf5e.0d2f887b040e80fb.js +0 -122
- package/apps/pwa/out/_next/static/chunks/f09ec7d7-d29abe23edcbb193.js +0 -1
- package/apps/pwa/out/_next/static/chunks/framework-9322cb8a56ac081c.js +0 -1
- package/apps/pwa/out/_next/static/chunks/main-2fbab294e49a1561.js +0 -1
- package/apps/pwa/out/_next/static/chunks/main-app-f36729f56621a8f3.js +0 -1
- package/apps/pwa/out/_next/static/chunks/pages/_app-2a62e450b47c6114.js +0 -1
- package/apps/pwa/out/_next/static/chunks/pages/_error-5e17f7b445f34d43.js +0 -1
- package/apps/pwa/out/_next/static/chunks/webpack-b4263e2190ea7adf.js +0 -1
- /package/apps/pwa/out/_next/static/{L04y73dlwKeTW-GetaTF3 → uC-N0emedeNOFuaBQFv-I}/_ssgManifest.js +0 -0
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
# 재사용 검증 무대 카탈로그
|
|
2
|
+
|
|
3
|
+
S: 골 저작기와 Pod 자식은 HQ의 private `seat-state` 파일을 읽지 못한다. C: 검증 메뉴가 개념만 제시하면 실제 수용선을 쓸 때 사건 무대와 실행 경계가 다시 발명된다. Q: 어떤 재사용 무대를 고르고 무엇을 채워야 하나? A: 아래 공통 템플릿과 MS-01~05를 저장소 정본으로 둔다. 각 무대는 특정 입력·환경에서 증명하는 범위만 보장하며, 빠진 명령이나 정리는 해당 골에서 채운다.
|
|
4
|
+
|
|
5
|
+
이 카탈로그는 `docs/goal-context/03-verification-menu.md`의 검증 방법을 구체적인 무대와 연결한다. 초기 원본은 `~/elanous-hq/seat-state/OP/MOCK-SCENARIO-CATALOG.md`이며, 이 저장소 파일이 착지하면 저장소 쪽이 정본이다.
|
|
6
|
+
|
|
7
|
+
## 표준 템플릿
|
|
8
|
+
|
|
9
|
+
한 시나리오마다 다음 필드를 채운다. 자리표시자는 실행 전에 실제 값으로 바꾼다.
|
|
10
|
+
|
|
11
|
+
```text
|
|
12
|
+
### MS-<번호> <짧은 이름>
|
|
13
|
+
- 증명하는 동작: <무엇이 일어나야 하나 — 한 문장>
|
|
14
|
+
- 언제 쓰나: <운영에서 드물거나 기다려야 하는 사건 · 어떤 칸 꼴에>
|
|
15
|
+
- 우주: test(--test) | Docker 격리(node-b 이미지 pin) | ux-sim | 임시 git 저장소 | 격리 HOME
|
|
16
|
+
- 무대 세우기(명령 · 연산자 없는 줄 여러 개): ...
|
|
17
|
+
- 실행(생산 진입점을 지나는 명령): ...
|
|
18
|
+
- 판정(무엇을 보면 통과): rc · 출력 문구 · 원장 행 · 파일 해시 불변 …
|
|
19
|
+
- 치우기: ...
|
|
20
|
+
- 함정: <운영 우주 오염 · 비밀값 · push 금지 …>
|
|
21
|
+
- 출처: <green-e4 파일 · 칸 · 자리 · 날짜>
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
원본 카탈로그에서 제공하지 않은 값은 `원본에 미기재`로 표시했다. 실행 계획은 이 빈칸을 해당 골의 다섯 줄 검증 계획으로 구체화한다.
|
|
25
|
+
아래 명령은 재사용 계획의 템플릿이다. 골에서 실제 값을 채워 실행 결과를 남기기 전에는 동작 검증 증거로 인용하지 않는다.
|
|
26
|
+
|
|
27
|
+
## 검증 무대
|
|
28
|
+
|
|
29
|
+
### <a id="ms-01"></a> MS-01 시험 판 무대(체크리스트 fixture)
|
|
30
|
+
|
|
31
|
+
- **증명하는 동작:** 칸·카드를 읽는 생산 CLI가 실제 체크리스트 행으로 동작한다.
|
|
32
|
+
- **언제 쓰나:** test 우주 체크리스트가 비어 있어 운영 칸이 있어야 보이는 기능을 시험할 때.
|
|
33
|
+
- **우주:** test (`--test`).
|
|
34
|
+
- **무대 세우기:** `bun bin/elanous.mjs --test release checklist add <시험칸> "<제목>" --version 9.9.9 --owner <자리>`
|
|
35
|
+
- **실행:** 대상 기능의 생산 CLI를 `--test`로 실행한다(예: `tasks work-order build`).
|
|
36
|
+
- **판정:** 종료 코드 0과 목표가 요구한 정규화 필드를 확인한다. `unknownFields`를 다루는 목표일 때만 그 보존도 판정한다.
|
|
37
|
+
- **치우기:** 원본 미기재. 시험 인스턴스를 재사용하지 않는지 계획에 적는다.
|
|
38
|
+
- **함정:** 운영 원장을 복사하지 않는다. `config sync-test`를 쓸 때 비밀값 제거를 확인한다.
|
|
39
|
+
- **출처:** `~/elanous-hq/seat-state/MK/green-e4/ENTRANCE-WORK-ORDER-BUILD.md`.
|
|
40
|
+
|
|
41
|
+
### <a id="ms-02"></a> MS-02 실패 런 무대(release resume)
|
|
42
|
+
|
|
43
|
+
- **증명하는 동작:** 실패한 발행/예행 런에서 resume이 실행 가능한 계획을 내고 저장된 런 원장은 불변이다.
|
|
44
|
+
- **언제 쓰나:** 실제 발행 실패를 기다려야 하는 복구 경로를 시험할 때.
|
|
45
|
+
- **우주:** test 및 push하지 않는 로컬 시험 가지.
|
|
46
|
+
- **무대 세우기:** 저장소의 격리 임시 clone에서 시험 판 `9.9.9`를 만든다; `release/9.9.9` 로컬 가지는 `origin/main`에서 만든다; 저장 런 JSON은 gate 실패·attempt 0·저장 commit이 가지 조상인 상태로 둔다. 현재 작업 저장소에는 이 가지를 만들지 않는다.
|
|
47
|
+
- **실행:** `bun bin/elanous.mjs --test release resume --dry-run <실패 런 경로>`
|
|
48
|
+
- **판정:** 종료 코드 0, 계획 출력, 런 JSON 해시가 전후 동일, attempt 파일 없음.
|
|
49
|
+
- **치우기:** 임시 시험 판·로컬 가지·런 JSON만 제거한다. 실제 발행 기록은 건드리지 않는다.
|
|
50
|
+
- **함정:** 원본은 `--dry-run` 경계와 push 금지를 요구한다. 실패 상태를 운영에 만들지 않는다.
|
|
51
|
+
- **출처:** `~/elanous-hq/seat-state/MK/green-e4/RELEASE-RECOVER-ONE-STEP.md`.
|
|
52
|
+
|
|
53
|
+
### <a id="ms-03"></a> MS-03 격리 self-implement 한 바퀴
|
|
54
|
+
|
|
55
|
+
- **증명하는 동작:** `runSelfImplement` 생산 진입점이 실제 기능을 부르고 원장에 남긴다.
|
|
56
|
+
- **언제 쓰나:** 함수 단위 시험을 넘어 격리된 self-implement 한 실행에서 호출과 기록을 확인할 때.
|
|
57
|
+
- **우주:** 격리 HOME 및 test.
|
|
58
|
+
- **무대 세우기:** 원본에 미기재. 골에 격리 HOME·test 설정과 Pod가 열 수 있는 저장소 내 시험 경로를 명시한다. 이를 제시할 수 없으면 이 장면을 재사용하지 말고 새 무대를 제안한다.
|
|
59
|
+
- **실행:** 원본에 미기재. `runSelfImplement`를 부르는 실제 생산 진입점과 한 바퀴 명령, 저장소 내 계약 시험 경로를 골에서 특정한다. HQ 증거 파일만으로 완료를 판정하지 않는다.
|
|
60
|
+
- **판정:** 원본 표본은 round 0 호출 1/0 및 `K-TC-777` 산출 크기 0보다 큼을 기록했다. 새 골은 필요한 원장 행과 출력 조건을 구체화한다.
|
|
61
|
+
- **치우기:** 원본에 미기재. 격리 HOME만 제거하고 운영 HOME은 사용하지 않는다.
|
|
62
|
+
- **함정:** 함수 직접 호출이나 합성 결과만으로 생산 경로 연결을 주장하지 않는다.
|
|
63
|
+
- **출처:** `~/elanous-hq/seat-state/TC/green-e4/TA-KNOWHOW-PACK.md`.
|
|
64
|
+
|
|
65
|
+
### <a id="ms-04"></a> MS-04 실제 git ⊕ 생산 PrManager
|
|
66
|
+
|
|
67
|
+
- **증명하는 동작:** 실제 git 상태에 의존하는 PR 재사용·회수 동작을 확인한다.
|
|
68
|
+
- **언제 쓰나:** 가지·원격·커밋 상태가 결과를 가르는 생산 PR 관리 경로를 시험할 때.
|
|
69
|
+
- **우주:** 임시 git 저장소에서 실제 git을 실행하고, GitHub API 경계는 CmdRunner stub으로 둔다.
|
|
70
|
+
- **무대 세우기:** 임시 bare 저장소·seed·clone을 사용한다. 구체 명령은 원본에 미기재. 골에 Pod가 열 수 있는 저장소 내 시험 경로를 명시하고, 그런 경로가 없으면 새 무대를 제안한다.
|
|
71
|
+
- **실행:** 생산 `PrManager` 경로를 부르는 시험 명령은 원본에 미기재. 골에서 명령과 계약 시험 파일을 특정한다.
|
|
72
|
+
- **판정:** 원본 카탈로그는 실제 git 시험 8개 통과를 보고하지만, 원본 시험 경로가 저장소에서 확인되기 전에는 재사용 증거로 세지 않는다. 새 실행 결과에는 GitHub 경계가 stub임을 명시한다.
|
|
73
|
+
- **치우기:** 임시 저장소를 제거한다.
|
|
74
|
+
- **함정:** 운영 GitHub를 호출하지 않는다.
|
|
75
|
+
- **출처:** `~/elanous-hq/seat-state/OPC/green-e4/PR-SAME-CELL-REUSE.md`.
|
|
76
|
+
|
|
77
|
+
### <a id="ms-05"></a> MS-05 생산 호출부 확인(배선)
|
|
78
|
+
|
|
79
|
+
- **증명하는 동작:** 착지한 함수가 시험 코드 밖의 생산 경로에서 호출된다.
|
|
80
|
+
- **언제 쓰나:** helper·패키지·생산 호출부 연결을 수용선으로 삼을 때.
|
|
81
|
+
- **우주:** 검증 대상 PR 커밋(`HEAD`)의 생산 소스 검사. 런타임 동작 자체는 별도의 해당 우주에서 검증한다.
|
|
82
|
+
- **무대 세우기:** 대상 함수 이름과 production source 범위를 정한다.
|
|
83
|
+
- **실행:** PR 검증 대상 커밋을 checkout한 저장소 루트에서 골에 정한 생산 소스 범위로 실행한다. 예: `git grep -n -F '<함수이름>(' HEAD -- <생산-소스-경로>`
|
|
84
|
+
- **판정:** 검색은 후보를 찾는 단계다. 생산 소스의 파일·행을 열어 함수 선언·주석이 아닌 실제 호출 문장임을 확인하고 근거로 남긴다. 이 grep의 0건만으로 미배선을 판정하지 않는다. 별칭·재수출·줄바꿈 호출을 포함해 심볼 참조나 AST/수동 검색으로 범위를 확인한 뒤에도 호출부가 없을 때 미배선으로 기록한다.
|
|
85
|
+
- **치우기:** 파일 변경 없음.
|
|
86
|
+
- **함정:** `HEAD`가 검증할 PR 커밋인지, 검색 경로가 그 기능의 전체 생산 소스 범위인지 먼저 확인한다. 테스트만 제외하는 등 경로 필터는 골에 적는다. 별칭·재수출·줄바꿈 호출은 단순 grep이 놓칠 수 있으므로 결과 0건을 완전성으로 보지 않는다. 소스 확인은 호출부 존재만 증명하고 런타임 실행·결과를 증명하지 않으므로 해당 시험도 추가로 고른다.
|
|
87
|
+
- **출처:** `~/elanous-hq/seat-state/MK/green-e4/ALREADY-BUILT-HINT.md`; `~/elanous-hq/seat-state/TC/green-e4/REVIEW-FINDING-PATH-HEAD-CHECK.md`; `~/elanous-hq/seat-state/TC/green-e4/CLAUDE-FAILOVER.md`. E4 과업에서 미측정·미완료면 별도 E4 절차에 따라 FU 제목 파일을 만든다. 이는 MS-05의 pass 판정이 아니다.
|
|
88
|
+
|
|
89
|
+
## <a id="catalog-gaps"></a> 현재 카탈로그 빈칸
|
|
90
|
+
|
|
91
|
+
기존 MS가 방법의 증거 경계와 맞지 않으면 억지로 연결하지 않고 새 무대 제안으로 잇는다. 이 절은 실행 증거가 아니라 빈칸 표시다.
|
|
92
|
+
|
|
93
|
+
| 방법 | 아직 없는 표준 무대 |
|
|
94
|
+
|---|---|
|
|
95
|
+
| ux-sim 시뮬레이션 | 실제 함수·렌더 경계를 재사용 입력으로 실행하는 구체 시나리오 |
|
|
96
|
+
| <a id="cli-sim-run-gap"></a>CLI `sim run` mock 시나리오 | 명시한 mock 입력을 허용된 실제 경로에 통과시켜 기대 결과를 판정하는 별도 CLI 무대 |
|
|
97
|
+
| Docker 격리 | Pod 실패 봉투를 고정된 node-b 이미지와 checkout에서 재현 |
|
|
98
|
+
| 열차 사이드 gate | 같은 PR head의 통합·원격 gate 결과를 확인하는 대기열/receipt 장면 |
|
|
99
|
+
| 운영 실물 | 운영 데이터·실제 사건을 입력으로 하는 대상별 기록; 공통 fixture는 만들지 않음 |
|
|
100
|
+
| 로그 관측 | 지정 인스턴스에서 이벤트를 조회하고 실제 로그 필드·시간 창·상관 키를 확인하는 장면 |
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
{"ts":"2026-10-21T07:39:10+0900","by":"OP","source":"op","cell":"DOCTOR-VISIT-FU","class":"c-unbounded-goal","diag":"문면 «생산 호출·자동 visit·원장 실물을 완성한다» · 자동 채움 경계(merge sha·타입검사)","action":"RUN-DOCTOR-AUTO-60M 에 흡수 · 0.2.36","lesson":"끝이 없는 «완성한다» 대신 착지된 코드(#27620)를 읽고 빠진 생산자 한 곳만 골로","run":"","card":"ta-20261020-ab9943","launch":"","goalSha":"","paths":"","model":"","host":"node-c","evidence":"OP 06:2x","rule":"저작이 대상 파일의 생산 호출부·착지 PR 을 먼저 읽는다","ms":"","outcome":"pending"}
|
|
2
|
+
{"ts":"2026-10-21T07:39:10+0900","by":"OP","source":"op","cell":"MSG-TAG-REACT","class":"a-missing-predecessor","diag":"골이 «MSG-ENVELOPE2 위에» 전제 · 그 칸은 phantom 0.2.41 · msg-store 에 tags 0","action":"0.2.36 이동 · MSG-ENVELOPE2 를 0.2.36 으로 당겨 --predecessor","lesson":"문면의 «X 위에/선행 X» 는 실재(칸 판·코드 필드) 확인 뒤에만","run":"run-680b9b65","card":"ta-20261020-bd7099","launch":"","goalSha":"","paths":"","model":"","host":"node-b","evidence":"OP #23589","rule":"칸 add 때 문면 속 선행을 --predecessor 로 강제 · 없는 칸이면 거부","ms":"","outcome":"pending"}
|
|
3
|
+
{"ts":"2026-10-21T07:39:11+0900","by":"OP","source":"op","cell":"TUI-STEER-NOTIFY","class":"b-stale-path","diag":"문면 한 줄 «알림 같은 경계(RFC P4)» · 대상 = 옛 대시보드 src/dashboard/index.ts (기본 TUI 는 next)","action":"0.2.36 이동 · OPC 새 TUI 문면 retitle · 옛 골 런 harness stop","lesson":"대상 경로가 현행 생산 경로인지(--tui next 전환 뒤 src/tui/·src/repl/) 확인","run":"run-d4bf8660","card":"ta-20261020-b8ca24","launch":"","goalSha":"","paths":"","model":"","host":"node-b","evidence":"OP #23588 #23749","rule":"저작이 대상 경로의 «현행 진입점 도달성» 을 잰다","ms":"","outcome":"pending"}
|
|
4
|
+
{"ts":"2026-10-21T07:39:11+0900","by":"OP","source":"run-doctor","cell":"LAND-RECIPE-GRAPH","class":"g-umbrella-scope","diag":"착지 반장 전체(수집→묶음→재배치→판정→게이트→병합→정리) 한 골 · 73분 · 구현 뒤 10분 LLM 0 · gate 미시작","action":"harness stop · 첫 조각(land-plan.ts 계획 출력만) retitle · 재발사(Sol)","lesson":"단계가 3개 넘는 레시피는 첫 조각(관측 가능한 산출 하나)만 골로","run":"run-53bba27c","card":"ta-20261020-baa78b","launch":"","goalSha":"","paths":"","model":"","host":"node-b","evidence":"OPT #23762 MK #23783 OP #23789","rule":"저작이 «단계 수» 를 세어 >3 이면 첫 조각으로 자동 축소","ms":"","outcome":"pending"}
|
|
5
|
+
{"ts":"2026-10-21T07:39:11+0900","by":"OP","source":"op","cell":"GATE-ATTRIBUTION-CHECK","class":"e-format-trap","diag":"증거 명령 값의 «;» 로 goal-author 가 줄 전체 무시 → «완료 경계 누락» 거부(0.2.35 미초록 38칸 같은 꼴)","action":"28칸 일괄 retitle(명령 한 줄 ⊕ 증거 보충)","lesson":"증거 명령 = 연산자 없는 명령 하나 · 설명은 다음 줄","run":"","card":"","launch":"","goalSha":"","paths":"","model":"","host":"mbp","evidence":"TC #23398","rule":"CELL-DONE-EVIDENCE-ONE-VALIDATOR(검사기 하나 · 정규화 · 원인 문구)","ms":"","outcome":"pending"}
|
|
6
|
+
{"ts":"2026-10-21T07:39:11+0900","by":"OP","source":"op","cell":"OVERLAP-SIBLING-CTX","class":"e-format-trap","diag":"자리 ta-ready 힌트 «# 대상 경로: … · 설명문» 이 칸 제목 경로를 덮어써 «형제 (경로 아님)»","action":"MK 20·UX 15 힌트 경로만 남김","lesson":"힌트 줄엔 경로만 · 설명은 칸 제목에","run":"","card":"","launch":"","goalSha":"","paths":"","model":"","host":"mbp","evidence":"OPT #23608","rule":"디스패처가 칸 제목과 다른 힌트는 무시","ms":"","outcome":"pending"}
|
|
7
|
+
{"ts":"2026-10-21T07:39:11+0900","by":"OP","source":"autopsy","cell":"RUBRIC-V2-REVIEW-FU","class":"f-unaware-of-code","diag":"새 이미지에서도 goal-only-rework-exhausted · 첫 자식 PR 없이 soft-stop","action":"재발사금지 hold · 골 개정 대기","lesson":"(미판정) 재작업 소진 = 골이 이미 착지/불가능한 일을 요구했는지 먼저","run":"run-06b0e6d2","card":"ta-20261020-350383","launch":"","goalSha":"","paths":"","model":"","host":"node-b","evidence":"OPT #23509","rule":"","ms":"","outcome":"pending"}
|
|
8
|
+
{"ts":"2026-10-21T07:39:11+0900","by":"OP","source":"run-doctor","cell":"DRAFT-SWEEP-LINEAGE-HARVESTABLE-FU","class":"env-stale-image","diag":"수리 런이 옛 pin 부모(27f0be)로 typescript 누락 Error/8","action":"수리 재발사 대신 MK 손 수확 → #29739 착지","lesson":"실패가 옛 이미지 탓이면 골을 바꾸지 말고 열린 draft 를 수확","run":"run-5381da59","card":"","launch":"","goalSha":"","paths":"","model":"","host":"node-b","evidence":"MK #23395 OP #23397","rule":"incident 묶음에 Pod 이미지 sha 열 · pin 이전이면 «환경» 분류","ms":"","outcome":"pending"}
|
|
9
|
+
{"ts":"2026-10-21T07:39:11+0900","by":"OP","source":"green-factory","cell":"ALREADY-BUILT-HINT","class":"f-unaware-of-code","diag":"착지했으나 alreadyBuiltHints( 생산 호출부 0","action":"FU 칸 ALREADY-BUILT-HINT-FU 발사","lesson":"골의 완료 경계에 «생산 진입점에서 호출» 을 명시(MS-05)","run":"","card":"","launch":"","goalSha":"","paths":"","model":"","host":"mbp","evidence":"MK green-e4/ALREADY-BUILT-HINT.md","rule":"TRAIN-GREEN-LEG 첫 검사 = 새 export 생산 호출부 0 이면 미배선","ms":"MS-05","outcome":"pending"}
|
|
10
|
+
{"ts":"2026-10-21T07:39:11+0900","by":"OP","source":"green-factory","cell":"ORG-REG","class":"d-rigid-acceptance","diag":"감사 문서 1파일만 착지 · eln org 명령 없음 · 원 수용선은 운영 실물 요구","action":"원칸 재발사 제목 보강안(OPT)","lesson":"코드 칸은 «코드 대상 경로» 가 문서만 바꾸는 PR 로 닫히지 않게 · 수용선은 동작·방법·충실성","run":"","card":"","launch":"","goalSha":"","paths":"","model":"","host":"mbp","evidence":"OPT ORG-REG-RELAUNCH-TITLE.txt","rule":"","ms":"","outcome":"pending"}
|
|
11
|
+
{"ts":"2026-10-21T07:39:11+0900","by":"OP","source":"op","cell":"REVIEW-CAP-COUNT-BY-CONTENT","class":"e-format-trap","diag":"리뷰 상한을 파일명 정규식으로 셈 → -rN- 이름이면 못 세어 #29789 10 head 통과","action":"0.2.35 P0 칸 · UX 구현(내용 pr·headCommit 으로)","lesson":"규칙 집행은 문자열 꼴이 아니라 의미 필드로","run":"","card":"","launch":"","goalSha":"","paths":"","model":"","host":"mbp","evidence":"UX #23784","rule":"집행 코드 리뷰 체크: 꼴 의존 여부","ms":"","outcome":"pending"}
|
|
12
|
+
{"ts":"2026-10-21T07:40:22+0900","by":"UX","source":"autopsy","cell":"ARG-UI-UNITS","class":"a-missing-predecessor","diag":"same-cell PR appeared after run branch push and guard refused draft creation; two rework rounds repeated capture/production-path evidence without a narrower change","action":"inventory open same-cell and path-overlap PRs before launch; if the guard refuses after push, refresh inventory and retry from that state","lesson":"Goal authoring should require a same-cell PR inventory preflight and specify how to join or retry after a late same-cell guard refusal; completion evidence should show that no duplicate push was left stranded.","run":"","card":"","launch":"","goalSha":"","paths":"","model":"","host":"","evidence":"","rule":"","ms":"","outcome":"pending"}
|
|
13
|
+
{"ts":"2026-10-21T07:41:57+0900","by":"TC","source":"op","cell":"LAUNCH-UTTERANCE-LEDGER","class":"g-umbrella-scope","diag":"원문 기록과 저작·결과 연결을 한 PR에서 검증하려다 r3까지 모의 경계 must-fix가 지속됐다","action":"OP #23799에 따라 원문 start JSONL·조회만 #29792에 남기고 저작·결과 연결은 FU로 분리했다","lesson":"골을 원문 보존 첫 착지와 launchId 후속 연결로 나누고 각 수용선을 생산 입구에서 독립 검증한다","run":"","card":"","launch":"","goalSha":"","paths":"","model":"","host":"","evidence":"PR #29792 r3 head 5b19e5c345, OP #23799","rule":"","ms":"","outcome":"scope-split"}
|
|
14
|
+
{"ts":"2026-10-21T07:43:00+0900","by":"OPT","source":"autopsy","cell":"RUN-AUTOPSY-LOOP-FU-CONTRACT","class":"d-rigid-acceptance","diag":"생산 사고 runId CLI 원문·동시 tick 관측을 자식 완료 경계로 요구해 재작업 2라운드 동일 지적 후 사람 의존","action":"자식 워크트리 밖 생산 관측 요구를 완료 경계에서 분리","lesson":"저작 때 자식이 만들 수 있는 증거와 실운영 관측을 분리","run":"run-06c32701-bb62-490a-8e24-784f877849cd","card":"","launch":"","goalSha":"","paths":"","model":"","host":"node-b","evidence":"~/elanous-hq/seat-state/OP/autopsy/reports/run-06c32701-bb62-490a-8e24-784f877849cd.json","rule":"완료 조건이 자식 워크트리에서 만들 수 없는 생산 사고 관측을 요구하면 발사 전에 그 경계를 사람 의존으로 빼고 재작업 루프에 넣지 않는다.","ms":"","outcome":"pending"}
|
|
15
|
+
{"ts":"2026-10-21T07:43:00+0900","by":"OPT","source":"autopsy","cell":"DECOMPOSE-BOUNDARY-ONE-STEP","class":"d-rigid-acceptance","diag":"완료 경계·판정 시험·증거 원문 누락이 EXTEND 뒤에도 반복","action":"골의 시험 파일·증거 출처를 명시하도록 개정","lesson":"완료 경계에 실행 가능한 시험과 증거 출처를 지정","run":"run-08ba654b-2918-46ef-ade0-2f7c88a9b54d","card":"","launch":"","goalSha":"","paths":"","model":"","host":"node-b","evidence":"~/elanous-hq/seat-state/OP/autopsy/reports/run-08ba654b-2918-46ef-ade0-2f7c88a9b54d.json","rule":"완료 경계와 판정 시험·증거 원문이 없으면 실행 전에 골을 되돌리고, 재작업에서 같은 식별값이 반복되면 그 누락을 골 수정 항목으로 고정해 다시 배치하지 않는다.","ms":"","outcome":"pending"}
|
|
16
|
+
{"ts":"2026-10-21T07:43:00+0900","by":"OPT","source":"autopsy","cell":"TUI-FLICKER-DRAW-INTEGRATION","class":"d-rigid-acceptance","diag":"bun test src/dashboard/index.test.ts 실행 원문 누락이 2라운드 반복","action":"시험 출력 증거 확보 뒤 재작업 여부 판정","lesson":"완료 경계의 시험 명령에 실행 출력의 귀속까지 명시","run":"run-0b3c828e-f513-4e06-8afc-d898b733f91b","card":"","launch":"","goalSha":"","paths":"","model":"","host":"node-b","evidence":"~/elanous-hq/seat-state/OP/autopsy/reports/run-0b3c828e-f513-4e06-8afc-d898b733f91b.json","rule":"완료 경계가 비거나 테스트 실행 원문이 없으면 재작업으로 넘기지 말고, 발사 전에 거절하거나 그 출력을 런 증거로 자동 첨부한다.","ms":"","outcome":"pending"}
|
|
17
|
+
{"ts":"2026-10-21T07:43:00+0900","by":"OPT","source":"autopsy","cell":"EFFECTS-YOLO-PROFILE","class":"f-unaware-of-code","diag":"nodeRequiresHumanGate 호출 배선·시험 명령 누락, 호출 없는 import만 남음","action":"생산 호출부와 시험 실행 결과를 확인하도록 골 개정","lesson":"import 존재가 아니라 생산 호출 경로의 실행 증거를 수용선으로","run":"run-1afc4b8c-dcc7-49ec-8620-3b23fb5ac68b","card":"","launch":"","goalSha":"","paths":"","model":"","host":"node-b","evidence":"~/elanous-hq/seat-state/OP/autopsy/reports/run-1afc4b8c-dcc7-49ec-8620-3b23fb5ac68b.json","rule":"완료 경계와 요구 테스트 명령 원문이 없는 골은 발사 전에 거절하고, 직전 라운드와 같은 누락을 호출 없는 import로 덮은 diff는 재작업을 더 주기 전에 기각한다.","ms":"","outcome":"pending"}
|
|
18
|
+
{"ts":"2026-10-21T07:43:00+0900","by":"OPT","source":"autopsy","cell":"LOGS-RETENTION-46MIN","class":"e-format-trap","diag":"판정 신호 마커가 제목뿐이고 완료 경계 누락, 4라운드 동일 지적","action":"판정 신호: <문장> 필드와 완료 경계를 채워 재저작","lesson":"파서가 읽는 판정 신호: 줄을 제목과 구별해 작성","run":"run-1b093b97-8095-48d6-adcb-4b73914d2e5f","card":"","launch":"","goalSha":"","paths":"","model":"","host":"node-b","evidence":"~/elanous-hq/seat-state/OP/autopsy/reports/run-1b093b97-8095-48d6-adcb-4b73914d2e5f.json","rule":"판정 신호 마커나 완료 경계가 없으면 발사하지 말고, 같은 지적 심볼이 반복되면 추가 연장 없이 골을 고친 뒤에만 재발사하게 한다.","ms":"","outcome":"pending"}
|
|
19
|
+
{"ts":"2026-10-21T07:43:00+0900","by":"OPT","source":"autopsy","cell":"RUN-HELPER-FU","class":"d-rigid-acceptance","diag":"src/harness/helper-scan.ts 소스 must-fix에 문서 diff만 두 라운드","action":"소스 수정과 테스트 증거 없으면 문서만의 수용을 보류","lesson":"구현 칸 완료 경계에는 대상 소스 diff와 작동 시험을 함께","run":"run-4e42ef41-42d6-42ab-bc54-f7e1d78dc494","card":"","launch":"","goalSha":"","paths":"","model":"","host":"mbp","evidence":"~/elanous-hq/seat-state/OP/autopsy/reports/run-4e42ef41-42d6-42ab-bc54-f7e1d78dc494.json","rule":"소스 파일을 지목한 must-fix인데 diff가 문서뿐이면 같은 게이트로 다음 라운드를 열지 말고 그 자리에서 불수렴으로 끊는다.","ms":"","outcome":"pending"}
|
|
20
|
+
{"ts":"2026-10-21T07:43:00+0900","by":"OPT","source":"autopsy","cell":"TA-HARVEST-CLAIMED-LABEL","class":"f-unaware-of-code","diag":"큐 진입 라벨·생산 경로 근거가 3라운드 must-fix로 반복","action":"큐 진입 생산 호출 경로 판정 신호를 골에 접지","lesson":"라벨 생성 시점·생산 진입점과 확인할 원장 신호를 명시","run":"run-e53fd51b-6f29-4291-9103-3c41ff2eb1b1","card":"","launch":"","goalSha":"","paths":"","model":"","host":"node-b","evidence":"~/elanous-hq/seat-state/OP/autopsy/reports/run-e53fd51b-6f29-4291-9103-3c41ff2eb1b1.json","rule":"must-fix가 라운드 사이에 줄지 않으면 같은 문면을 재발사하지 말고, 큐 진입 라벨 부착의 생산 경로 판정 신호를 골에 다시 접지한 뒤에만 연다.","ms":"","outcome":"pending"}
|
|
21
|
+
{"ts":"2026-10-21T07:43:00+0900","by":"OPT","source":"autopsy","cell":"GATE-ISOLATE-FANOUT-CAP","class":"env-capacity","diag":"OOMKilled 16Gi 뒤 32Gi 재시도가 pod-pool-unfit으로 종료","action":"메모리 증액 전 단일 노드 수용 여부 검사","lesson":"골 수정 전 OOM 요청량과 풀이 받을 수 있는 한도를 분리 관측","run":"run-61160794-6763-47bf-9e24-a20102f70e0b","card":"","launch":"","goalSha":"","paths":"","model":"","host":"node-c","evidence":"~/elanous-hq/seat-state/OP/autopsy/reports/run-61160794-6763-47bf-9e24-a20102f70e0b.json","rule":"OOM으로 메모리 상한을 올리기 전에 단일 멤버 풀이 그 요청을 스케줄할 수 있는지 확인하고, 못 하면 재시도를 걸지 말고 풀 용량 부족으로 즉시 멈추게 한다.","ms":"","outcome":"pending"}
|
|
22
|
+
{"ts":"2026-10-21T07:43:00+0900","by":"OPT","source":"autopsy","cell":"RELEASE-LOOP-CONTRACT","class":"env-provider","diag":"account candidateCount=0으로 구현 노드 aborted 반복","action":"계정 후보 0은 재작업 대신 자격 고갈로 분류","lesson":"자격 고갈을 골 무진전으로 오인하지 말고 발사 전 후보를 관측","run":"run-6514bbd1-0302-44fa-ab9a-611679d67277","card":"","launch":"","goalSha":"","paths":"","model":"","host":"elangram-wsl","evidence":"~/elanous-hq/seat-state/OP/autopsy/reports/run-6514bbd1-0302-44fa-ab9a-611679d67277.json","rule":"계정 후보가 0이면 구현 라운드를 시작하지 말고 자격 고갈로 즉시 끝내, 무진전·골 개정으로 오인되지 않게 한다.","ms":"","outcome":"pending"}
|
|
23
|
+
{"ts":"2026-10-21T07:43:00+0900","by":"OPT","source":"autopsy","cell":"RESYNC-RELEASE-FLOCK","class":"env-provider","diag":"draft PR 생성 중 GitHub CLI 인증 부재, PR 없이 종료","action":"GH_TOKEN/gh 인증 확인을 Pod 시작 전 포함","lesson":"PR 생성 자격은 완료 시점이 아니라 발사 전 확인","run":"run-690aa720-428d-4088-aecd-bcc36913dc4f","card":"","launch":"","goalSha":"","paths":"","model":"","host":"node-b","evidence":"~/elanous-hq/seat-state/OP/autopsy/reports/run-690aa720-428d-4088-aecd-bcc36913dc4f.json","rule":"파드 골 런은 시작 전에 GitHub CLI 인증(GH_TOKEN)이 있는지 확인하고, 없으면 발사하지 않는다.","ms":"","outcome":"pending"}
|
|
24
|
+
{"ts":"2026-10-21T07:43:00+0900","by":"OPT","source":"autopsy","cell":"GIT-API-PROXY-MOCK","class":"other","diag":"comparison-base-unavailable 반복으로 게이트 재작업 무진전","action":"base ref·공통 조상 미확보를 구현 재작업과 분리","lesson":"게이트 비교 기준 ref·merge-base를 저작 품질과 별도 환경 신호로 확인","run":"run-f2e8432e-ceb5-44bf-afc1-bb3617dbc772","card":"","launch":"","goalSha":"","paths":"","model":"","host":"mbp","evidence":"~/elanous-hq/seat-state/OP/autopsy/reports/run-f2e8432e-ceb5-44bf-afc1-bb3617dbc772.json","rule":"비교 기준 커밋을 확보하지 못하면 구현 재작업을 반복하지 않고 게이트가 comparison-base-unavailable을 즉시 종료 사유로 고정하게 한다.","ms":"","outcome":"pending"}
|
|
25
|
+
{"ts":"2026-10-21T07:44:40+0900","by":"OPT","source":"autopsy","cell":"LAND-RECIPE-GRAPH","class":"g-umbrella-scope","diag":"기존 run-doctor #4와 동일 run: 73분 umbrella 무PR 뒤 OP 손중지 확정; SIGTERM 자체만으로 저작 원인을 단정하지 않음","action":"중복 진단 재신고 없이 첫 조각 계획 산출로 한정","lesson":"수집·묶음·배치·판정·게이트·병합 같은 다단계 레시피는 한 산출물 경계로 쪼갬","run":"run-53bba27c-0560-481c-99e6-b331122ce571","card":"","launch":"","goalSha":"","paths":"","model":"","host":"node-b","evidence":"~/elanous-hq/seat-state/OP/autopsy/reports/run-53bba27c-0560-481c-99e6-b331122ce571.json; OP #23811; 기존 원장 #4","rule":"","ms":"","outcome":"repeated"}
|
|
26
|
+
{"ts":"2026-10-21T07:44:40+0900","by":"OPT","source":"autopsy","cell":"ARG-UI-UNITS","class":"a-missing-predecessor","diag":"기존 UX #12와 동일 런: push 뒤 same-cell PR guard 거부 및 두 재작업 라운드의 증거 결손","action":"같은 셀 PR 인벤토리를 재확인하고 합류·재시도","lesson":"발사 전 동일 셀 PR 선행 상태 확인 및 늦은 guard 거부의 재시도 경로를 완료 경계에 명시","run":"run-6057dab7-9afd-49dc-b36a-73ae1ba0d521","card":"","launch":"","goalSha":"","paths":"","model":"","host":"node-b","evidence":"~/elanous-hq/seat-state/OP/autopsy/reports/run-6057dab7-9afd-49dc-b36a-73ae1ba0d521.json; 기존 원장 #12","rule":"","ms":"","outcome":"repeated"}
|
|
27
|
+
{"ts":"2026-10-21T07:53:04+0900","by":"OP","source":"op","cell":"RELEASE-HARD-REHEARSAL","class":"env-capacity","diag":"예행 체크아웃에 node_modules 없음 → Bun 이 캐시 typescript@7 해석 → public-export.ts TypeError · 검사기는 «no structured diagnostic» 일반 문구로 덮음","action":"TC 재현 → bun install --frozen-lockfile 후 재발사","lesson":"예행·발행 체크아웃은 시작 전 install 상태(node_modules·lock 일치)를 먼저 확인 · 크래시와 누출을 다른 문구로","run":"hard-810c80b8-1e77-4aba-abdb-c8af674cae91","card":"","launch":"","goalSha":"","paths":"","model":"","host":"mbp","evidence":"TC #23868","rule":"rehearsal 가 leak-check stderr 꼬리를 detail 에 싣고 install 사전검사","ms":"","outcome":"pending"}
|
|
28
|
+
{"ts":"2026-10-21T07:53:51+0900","by":"UX","source":"autopsy","cell":"TUI-MSG-SLASH","class":"d-rigid-acceptance","diag":"완료 경계가 비어 [GOAL_DONE_BOUNDARY_MISSING]; 3라운드 동안 격리 TUI 화면과 PR 본문 실물 실행 증거 결손이 반복됨","action":"목표 저작 시 생산 진입점·격리 화면 검증·증거 저장 위치·회귀 명령을 완료 경계에 함께 고정","lesson":"실물 화면/로그 요구를 말로 두지 말고, 재현 명령과 기대 화면 신호 및 PR에 붙일 원문을 완료 전에 명시한다","run":"run-1b69527d-d8a4-455d-87c0-fce8025af49d","card":"","launch":"","goalSha":"","paths":"src/dashboard/slash-runtime/dashboard-handlers.ts · TUI 화면/로그 검증 경로","model":"","host":"node-b","evidence":"node-b:~/.elanous/incidents/2026-10-21.jsonl#run-1b69527d-d8a4-455d-87c0-fce8025af49d","rule":"빈 완료 경계와 반복되는 실물 증거 결손은 재작업 전에 골 저작으로 되돌려 검증 가능한 신호를 정한다","ms":"","outcome":"repeated"}
|
|
29
|
+
{"ts":"2026-10-21T07:53:55+0900","by":"UX","source":"autopsy","cell":"ARG-UI-UNITS","class":"other","diag":"브랜치 push 뒤 같은 셀 PR이 나타나 draft PR 가드가 거부; existing lesson #12에 a-missing-predecessor로 기록됨","action":"기존 교훈을 보완해 발사 후 guard 거부도 최신 same-cell 인벤토리에서 합류 또는 재시도하게 한다","lesson":"같은 셀 PR 검사는 발사 전 한 번으로 끝나지 않는다: guard 거부 시 최신 PR 목록을 다시 읽고 선행 PR에 합류하거나 새 인벤토리로 재시도한다","run":"run-6057dab7-9afd-49dc-b36a-73ae1ba0d521","card":"","launch":"","goalSha":"","paths":"apps/pwa/src/components/editor/GraphCanvasEditor.tsx","model":"","host":"node-b","evidence":"node-b:~/.elanous/incidents/2026-10-21.jsonl#run-6057dab7-9afd-49dc-b36a-73ae1ba0d521","rule":"same-cell guard rejection after push must refresh PR inventory and preserve/attach the work instead of ending at an opaque no-PR failure","ms":"","outcome":"repeated"}
|
|
30
|
+
{"ts":"2026-10-21T07:53:59+0900","by":"UX","source":"autopsy","cell":"TA-HARVEST-CLAIMED-LABEL","class":"d-rigid-acceptance","diag":"큐 진입 라벨 부착과 생산 경로 증거 must-fix가 3라운드 동안 줄지 않음; 기존 교훈 #10은 f-unaware-of-code로 기록됨","action":"수용선을 생산 큐 진입 경로의 라벨 부착 시점과 같은 런의 검증 가능한 신호로 좁힌다","lesson":"구현 완료는 helper 존재가 아니라 큐 진입에서 라벨이 생성되는 생산 호출과 회귀 시험 원문으로 판정한다","run":"run-e53fd51b-6f29-4291-9103-3c41ff2eb1b1","card":"","launch":"","goalSha":"","paths":"src/github/pr-labels.ts · src/task-agent/land-queue.ts","model":"","host":"node-b","evidence":"node-b:~/.elanous/incidents/2026-10-21.jsonl#run-e53fd51b-6f29-4291-9103-3c41ff2eb1b1","rule":"같은 production-path must-fix가 줄지 않으면 추가 라운드 전 goal의 완료 경계·증거를 생산 큐 입구에 접지한다","ms":"","outcome":"repeated"}
|
|
31
|
+
{"ts":"2026-10-21T07:54:04+0900","by":"UX","source":"autopsy","cell":"MSG-ADDRESS-HANDBOOK","class":"other","diag":"draft PR creation failed with terminalClass=failed-no-pr, stage=error and unclassified; underlying create failure cause absent","action":"draft-PR 생성 단계에서 gh/git stderr와 종료 코드, 동파일 PR 인벤토리 결과를 런 증거로 남긴다","lesson":"PR 생성 실패는 stderr와 exit code를 보존하고 same-file OPEN PR 충돌을 구분하기 전 provider/환경 원인으로 단정하지 않는다","run":"run-d88e9fbe-90c6-49b1-82b4-483234c58e93","card":"","launch":"","goalSha":"","paths":"docs/handbook/LOOP-AGENTS.md","model":"","host":"node-b","evidence":"node-b:~/.elanous/incidents/2026-10-21.jsonl#run-d88e9fbe-90c6-49b1-82b4-483234c58e93 · stderr 없음","rule":"failed-no-pr without captured command stderr/exit code stays unclassified until same-file PR overlap is checked","ms":"","outcome":"repeated"}
|
|
32
|
+
{"ts":"2026-10-21T07:54:09+0900","by":"UX","source":"autopsy","cell":"GRAPH-VOCAB","class":"d-rigid-acceptance","diag":"명시된 판정 함수 시험과 완료 원문 대신 OPC 비교 원장·생산 실행·회귀시험 증거 결손이 두 라운드 반복됨","action":"이 골의 정적 함수/회귀시험 경계와 별도 운영 표본 요구를 분리하고, 지정 시험 출력의 저장 위치를 명시","lesson":"골이 관측 함수와 테스트만 요구하면 생산 런을 완료 조건에 추가하지 않는다; 요구한 각 시험 출력은 exact run/PR 근거로 보존한다","run":"run-f9d12d33-0880-45ad-876a-c4c7001bb29e","card":"","launch":"","goalSha":"","paths":"src/self-implement/graph-templates.ts · src/self-implement/graph-templates.test.ts","model":"","host":"node-b","evidence":"node-b:~/.elanous/incidents/2026-10-21.jsonl#run-f9d12d33-0880-45ad-876a-c4c7001bb29e · goal 문서: ASK-armF-graph-vocabulary-covers-orchestrator-stages-2026-09-10.md","rule":"완료 판정은 goal이 지정한 정적 함수 출력과 회귀시험으로 한정하고 범위 밖 운영 증거를 새 수용 조건으로 만들지 않는다","ms":"","outcome":"repeated"}
|
|
33
|
+
{"ts":"2026-10-21T08:05:41+0900","by":"OPT","source":"op","cell":"ORG-REG","class":"g-umbrella-scope","diag":"여섯 CLI 동작과 조직도·redirect를 한 제목에 묶어 첫 조각을 완주할 수 없음","action":"설치별 원장과 add·list만 남기고 rename·merge·split·retire·PWA를 FU로 분리","lesson":"레지스트리 우산은 격리 원장의 add→재읽기 list라는 관측 가능한 한 조각으로 저작","run":"","card":"","launch":"","goalSha":"","paths":"src/hq/seats.ts · src/user-config.ts · src/seat-address/seat-address.ts","model":"","host":"","evidence":"OP #24015 · seat-state/OPT/retitle/ORG-REG.txt","rule":"","ms":"MS-05,MS-06","outcome":"pending"}
|
|
34
|
+
{"ts":"2026-10-21T08:05:41+0900","by":"OPT","source":"op","cell":"FEATURE-SET-BRANCH","class":"d-rigid-acceptance","diag":"부검 insufficient-evidence ×2 · preview 성공 상수는 실제 PR target·게이트 base의 근거가 아님","action":"첫 조각의 단일 runId로 자식 argv·PR target·게이트 base 원문을 연결하고 수명/preview는 FU","lesson":"성공 스텁이 아니라 서로 다른 main·feat 무대에서 생산 base 전파를 확인하도록 수용선 작성","run":"","card":"","launch":"","goalSha":"","paths":"src/harness/harness-cli-command.ts · src/harness/harness-pod-dispatch.ts · src/cli/pr-cli.ts","model":"","host":"","evidence":"OP #24015 · seat-state/OPT/retitle/FEATURE-SET-BRANCH.txt","rule":"","ms":"MS-04,MS-05","outcome":"pending"}
|
|
35
|
+
{"ts":"2026-10-21T08:05:41+0900","by":"OPT","source":"op","cell":"SW-CLI-ACQUIRE","class":"d-rigid-acceptance","diag":"no-progress·insufficient-evidence ×2 · API-key-only를 구독으로 오인하고 플러그인 없는 부분 성공을 ok로 처리","action":"한 CLI 구독 검사 fail-closed만 첫 조각으로, 플러그인·두 CLI 통합은 FU","lesson":"API-key-only 거부와 생산 PTY 경로 증거·부분 완료 거부를 저작 때 명시하고 mock을 실 계정 검증으로 오인하지 않는다","run":"","card":"","launch":"","goalSha":"","paths":"src/agent-mission/tool-install.ts · src/agent-mission/claude-subscription.ts","model":"","host":"","evidence":"OP #24015 · seat-state/OPT/retitle/SW-CLI-ACQUIRE.txt","rule":"","ms":"MS-05,MS-06","outcome":"pending"}
|
|
36
|
+
{"ts":"2026-10-21T08:09:27+0900","by":"TC","source":"retro","cell":"GRAPH-VOCAB-LINT","class":"d-rigid-acceptance","diag":"PR #29807 리뷰가 OPC 동일 49입력 전후 TSV를 첫 코드 조각에 요구해 린트 배선·실물 1회 증거와 전수 분포 검증이 뒤섞임","action":"첫 PR은 린트 코드·집중 시험·test 우주 graph run 1회로, 동일 49입력 전후 TSV는 GRAPH-VOCAB-LINT-FU로 분리","lesson":"처음부터 실물 입구 1회와 전수 운영 표본은 별도 수용선으로 쓰고, 전수 입력 집합이 고정되지 않으면 그 값을 첫 PR의 gate로 요구하지 않는다","run":"","card":"","launch":"","goalSha":"","paths":"","model":"","host":"","evidence":"PR #29807 · OP #24016 · seat-state/TC/goals-next/GRAPH-VOCAB-LINT-FU.md","rule":"","ms":"","outcome":"fixed"}
|
|
37
|
+
{"ts":"2026-10-21T08:09:35+0900","by":"TC","source":"retro","cell":"LAUNCH-SINGLE-DOOR","class":"g-umbrella-scope","diag":"PR #29808이 1A 순수 판정에 env 모드·실제 발사 차단·요청 원장 쓰기까지 한꺼번에 담아 리뷰 경계가 커짐","action":"1A는 순수 판정·기존 관문 연결, 1B는 env·실제 발사, 1C는 요청 원장·소비로 분리","lesson":"발사 제어 골은 판정 로직, 실제 발사 효과, 원장 소비를 처음부터 세 조각으로 나눠 각 조각의 독립 수용 신호를 쓴다","run":"","card":"","launch":"","goalSha":"","paths":"","model":"","host":"","evidence":"PR #29808 · OP #24016 · seat-state/TC/goals-next/LAUNCH-SINGLE-DOOR-1B.md · 1C.md","rule":"","ms":"","outcome":"fixed"}
|
|
38
|
+
{"ts":"2026-10-21T08:17:14+0900","by":"?","source":"op","cell":"UX-EXT-RFC-FIRST","class":"env-provider","diag":"test universe did not isolate baseUrl; a fake key reached the real OpenAI endpoint and returned 401","action":"Stopped retrying with the fake key; use the seat installed eln default subscription provider for exactly one isolated test-universe call","lesson":"Before testing provider routing, verify test-universe baseUrl isolation. Never treat a fake key as a local mock; if one safe real call cannot be made, use a mock runTurn capture and label the PR evidence LLM boundary = mock.","run":"","card":"","launch":"","goalSha":"","paths":"","model":"","host":"","evidence":"OP mail #24041; debug log in old worktree 2026-10-21","rule":"","ms":"","outcome":"fixed"}
|
|
39
|
+
{"ts":"2026-10-21T08:55:27+0900","by":"OPC","source":"green-factory","cell":"GATE-ATTRIBUTION-CHECK","class":"f-unaware-of-code","diag":"비샤드 귀속 unknown1 시험만 골에 넣어 샤드 생산 경로의 passedTestEvidence.testCases 누락을 못 봄","action":"실제 Bun JUnit XML을 남기는 --shards 1 생산 gate로 다시 재어 introduced2/unknown0 편차를 찾고 FU 지정","lesson":"귀속 골은 direct와 shard 두 생산 경로가 같은 기준선 JUnit 양성 신호를 소비하는지 같이 요구한다","run":"","card":"","launch":"","goalSha":"","paths":"src/self-implement/gate-baseline.ts · src/self-dev/shard-aggregate.ts","model":"","host":"","evidence":"~/elanous-hq/seat-state/OPC/evidence/20261021/gate-attribution-shard1/summary.json","rule":"","ms":"MS-04","outcome":"pending"}
|
|
40
|
+
{"ts":"2026-10-21T08:57:06+0900","by":"OP","source":"run-doctor","cell":"RUN-AUTOPSY-LOOP","class":"e-format-trap","diag":"2라운드 PR0 soft-stop · 제목에 «원 칸 설명 원문:» 중복 ⊕ 신설 경로(run-autopsy-shadow.ts)가 본문에만 있고 1행 대상 경로와 다름 · 완료 경계가 LLM classify 경로까지 요구(첫 조각치고 큼)","action":"재발사금지 hold · TC 에 1행=신설 포함 실제 대상, LLM 경로는 후속으로 떼어 재저작","lesson":"retitle 때 원 칸 원문을 붙여 넣지 말고 1행 대상 경로와 신설 줄을 한 벌로 맞춘다 · 첫 조각은 LLM 경로 없이 결정론 분류만","run":"run-bff41b39","card":"","launch":"","goalSha":"","paths":"","model":"","host":"node-b","evidence":"OPT #24212","rule":"","ms":"","outcome":"pending"}
|
|
41
|
+
{"ts":"2026-10-21T08:57:06+0900","by":"OP","source":"run-doctor","cell":"RELEASE-TUI-SUBCHECK-HITL","class":"b-stale-path","diag":"2라운드 PR0 soft-stop · 증거 명령이 publish-node.test.ts 를 요구하나 1행 대상 경로에 없음 → 범위 밖 편집 강요 가능","action":"재발사금지 hold · OPC 에 대상 경로에 publish-node(.test).ts 추가 여부 판단 후 재저작","lesson":"증거 명령에 쓰는 시험 파일과 그 시험이 덮는 소스는 1행 대상 경로에 모두 넣는다","run":"run-38f894ca","card":"","launch":"","goalSha":"","paths":"","model":"","host":"node-b","evidence":"OPT #24212","rule":"","ms":"","outcome":"pending"}
|
|
42
|
+
{"ts":"2026-10-21T08:58:42+0900","by":"OPC","source":"green-factory","cell":"RELEASE-TUI-SUBCHECK-HITL","class":"b-stale-path","diag":"골 대상 경로에는 publish-node(.test).ts가 없는데 완료 증거 명령은 publish-node.test.ts를 필수로 요구해 2라운드 PR0 soft-stop","action":"기존 네 대상에 publish-node.ts와 publish-node.test.ts를 추가한 엄격 retitle 제목을 OP에 전달, 12:00 hold 유지","lesson":"골 1행 대상 경로가 완료 경계 증거 명령의 시험 파일과 실제 생산 호출부를 모두 포함하는지 발사 전에 대조한다","run":"","card":"","launch":"","goalSha":"","paths":"scripts/release-loop/publish-node.ts · scripts/release-loop/publish-node.test.ts","model":"","host":"","evidence":"~/elanous-hq/seat-state/OPC/fu/RELEASE-TUI-SUBCHECK-HITL-retitle.txt","rule":"","ms":"MS-04","outcome":"pending"}
|
|
43
|
+
{"ts":"2026-10-21T10:54:02+0900","by":"OP","source":"run-doctor","cell":"TA-REPAIR-EVENT-COLLECT-FU","class":"f-unaware-of-code","diag":"골이 이미 main 에 있는 boot wiring(nexus/index.ts:91·:1138·:3387)과 collector(steward/ta-repair-event-collect.ts:146)를 새로 만들라 해 자식이 40분+ 진도 0 · PR 0","action":"재저작: 남은 것만(수리 completedAt→수집 60초 운영 표본·fallback 상호작용) · 코드 근거 있는 부분은 green 처분 검토","lesson":"저작 전 대상 기능이 이미 있는지 rg 로 확인하고, 있으면 «현재 계약:» 줄에 경로:줄을 적어 남은 조각만 쓴다","run":"run-1e47f7b5","card":"","launch":"","goalSha":"","paths":"","model":"","host":"","evidence":"TC #24624","rule":"","ms":"","outcome":"pending"}
|
|
44
|
+
{"ts":"2026-10-21T12:19:43+0900","by":"OP","source":"run-doctor","cell":"SW-CLI-ACQUIRE","class":"b-stale-path","diag":"골이 대상 4파일만 적으면서 생산 PTY 호출 배선 증명을 요구 → 자식이 대상 밖 src/cli/pty-takeover-cli.ts 를 고쳐 1차 scope-escape · 2차도 같은 꼴","action":"다음 재저작 때 생산 진입 파일(pty-takeover-cli.ts)을 대상 경로에 넣거나 배선 증명을 수용선에서 뺀다","lesson":"«생산 진입점 배선 증명» 을 요구하면 그 진입점 파일을 1행 대상 경로에 반드시 넣는다","run":"run-c0c379f4","card":"","launch":"","goalSha":"","paths":"","model":"","host":"","evidence":"OPT #25039","rule":"","ms":"","outcome":"pending"}
|
|
45
|
+
{"ts":"2026-10-21T13:26:03+0900","by":"OP","source":"run-doctor","cell":"ORG-REG","class":"f-unaware-of-code","diag":"골 본문이 생산 CLI 등록·원장 신설을 요구했는데 대상 경로에 등록 파일이 없어 자식이 범위 밖 편집 → scope-escape 2회 PR 0","action":"등록 파일만 대상 경로에 추가 ⊕ 경계: 줄로 무관 모듈 금지(13:35 재저작)","lesson":"수용선에 생산 CLI·원장을 쓰면 그 등록 지점(index.ts·*-cli.ts·원장 파일)을 대상 경로 1행에 같이 적는다","run":"run-badf928b","card":"","launch":"","goalSha":"","paths":"src/index.ts · src/cli/org-cli.ts","model":"","host":"","evidence":"seat-state/OPT/SCOPE-ESCAPE-1021.md","rule":"저작 검사: 수용선의 eln <명령> 이 대상 경로의 어느 파일에도 등록되지 않으면 경고","ms":"","outcome":"pending"}
|
|
46
|
+
{"ts":"2026-10-21T13:26:03+0900","by":"OP","source":"run-doctor","cell":"POD-SHELF-ANY-REF","class":"f-unaware-of-code","diag":"골 본문이 생산 CLI 등록·원장 신설을 요구했는데 대상 경로에 등록 파일이 없어 자식이 범위 밖 편집 → scope-escape 2회 PR 0","action":"등록 파일만 대상 경로에 추가 ⊕ 경계: 줄로 무관 모듈 금지(13:35 재저작)","lesson":"수용선에 생산 CLI·원장을 쓰면 그 등록 지점(index.ts·*-cli.ts·원장 파일)을 대상 경로 1행에 같이 적는다","run":"run-b4037201","card":"","launch":"","goalSha":"","paths":"src/cli/pod-cli.ts","model":"","host":"","evidence":"seat-state/OPT/SCOPE-ESCAPE-1021.md","rule":"저작 검사: 수용선의 eln <명령> 이 대상 경로의 어느 파일에도 등록되지 않으면 경고","ms":"","outcome":"pending"}
|
|
47
|
+
{"ts":"2026-10-21T13:26:03+0900","by":"OP","source":"run-doctor","cell":"AUTHORING-LESSONS-LOOP","class":"f-unaware-of-code","diag":"골 본문이 생산 CLI 등록·원장 신설을 요구했는데 대상 경로에 등록 파일이 없어 자식이 범위 밖 편집 → scope-escape 2회 PR 0","action":"등록 파일만 대상 경로에 추가 ⊕ 경계: 줄로 무관 모듈 금지(13:35 재저작)","lesson":"수용선에 생산 CLI·원장을 쓰면 그 등록 지점(index.ts·*-cli.ts·원장 파일)을 대상 경로 1행에 같이 적는다","run":"run-0f090004","card":"","launch":"","goalSha":"","paths":"src/cli/lesson-cli.ts · docs/goal-context/05-authoring-lessons.jsonl","model":"","host":"","evidence":"seat-state/OPT/SCOPE-ESCAPE-1021.md","rule":"저작 검사: 수용선의 eln <명령> 이 대상 경로의 어느 파일에도 등록되지 않으면 경고","ms":"","outcome":"pending"}
|
|
@@ -74,8 +74,15 @@ RESULT: 51 pass, 0 fail, 390 expect() calls; Ran 51 tests across 2 files.
|
|
|
74
74
|
| 파일 | 무엇 | 원본(전문) |
|
|
75
75
|
|---|---|---|
|
|
76
76
|
| [`01-goal-authoring-checks.md`](01-goal-authoring-checks.md) | 골을 쓰기 «전»에 답하는 여섯 | [`CONCEPT-self-implement-closed-loop-map`](../CONCEPT-self-implement-closed-loop-map-2026-08-08.md) §8 |
|
|
77
|
+
| [`03-verification-menu.md`](03-verification-menu.md) | 수용선의 주장에 맞춰 검증 방법을 고르는 안내 메뉴 | 해당 방법의 정본 매뉴얼 링크는 메뉴 안에 둔다 |
|
|
78
|
+
| [`04-mock-scenarios.md`](04-mock-scenarios.md) | 표준 검증 무대 템플릿과 MS-01~05 재사용 예시 | initial source: `~/elanous-hq/seat-state/OP/MOCK-SCENARIO-CATALOG.md` |
|
|
79
|
+
| [`05-authoring-lessons.jsonl`](05-authoring-lessons.jsonl) | 부검·런 닥터·초록·OP의 분류별 저작 교훈 원장 스냅샷(사례별 적용 판단; 자동 저작 배선은 별도 작업) | `~/elanous-hq/seat-state/OP/lessons/authoring-lessons.jsonl` |
|
|
77
80
|
| [`refactoring.md`](../refactoring.md) | 리팩터링·seam·큰 파일 쪼개기 골은 냄새 → seam → 패턴 순서를 따르고, 이론상 깔끔함만으로 패턴을 도입하지 않는다 | [`refactoring.md`](../refactoring.md) |
|
|
78
81
|
|
|
82
|
+
`05-authoring-lessons.jsonl`은 원본의 2026-10-21T13:26:03+0900까지를 보존한 스냅샷입니다. 원본과 행별 JSON 객체를 대조하면 `evidence`의 절대경로를 `~`로 이식한 13개 행 외에는 동일합니다. 후속 원본 행은 자동 동기화되지 않습니다. 이 파일에 링크를 붙인 것과 골 저작기가 JSONL을 읽어 사용하는 것은 별개입니다. 후자의 배선과 입력 비용은 AUTHORING-LESSONS-LOOP에서 검증합니다.
|
|
83
|
+
|
|
84
|
+
골의 수용선을 쓸 때는 [`03-verification-menu.md`](03-verification-menu.md)에서 주장에 맞는 검증 방법을 고른다. 이는 안내이며 골 발사를 막는 관문이 아니다.
|
|
85
|
+
|
|
79
86
|
## Cross-ref
|
|
80
87
|
[[CONCEPT-self-implement-closed-loop-map-2026-08-08]](폐루프 전도 · §7a 가 이 두 계층의 근거) ·
|
|
81
88
|
[[MANUAL-goal-authoring-method-2026-08-03]](저작 «절차» canonical) · **PR #5730**
|
package/graphs/default-loop.yaml
CHANGED
|
@@ -12,7 +12,8 @@
|
|
|
12
12
|
# ═══════════════════════════════════════════════════════════════════════════════
|
|
13
13
|
graph_id: default-loop
|
|
14
14
|
version: 3
|
|
15
|
-
|
|
15
|
+
journey_stages: [entry, author, dispatch, run, land, recover, end]
|
|
16
|
+
entry_node: intake
|
|
16
17
|
terminal_nodes: [landed, stopped]
|
|
17
18
|
runner_inputs: [ask_text, worktree, branch, ask, context, prior]
|
|
18
19
|
|
|
@@ -198,7 +199,45 @@ nodes:
|
|
|
198
199
|
tools: gh-pr-create # 중단 산출물을 draft PR 로 «보존»한다
|
|
199
200
|
outputs: [draft_pr, reason]
|
|
200
201
|
|
|
202
|
+
# Common journey units sit beside the default loop's existing author/build/recovery nodes.
|
|
203
|
+
- { node_id: intake, kind: observe, recipe: harness-entrance, journey_stage: entry, max_visits: 1 }
|
|
204
|
+
- { node_id: queue, kind: gate, recipe: harness-queue, journey_stage: entry, max_visits: 1 }
|
|
205
|
+
- { node_id: launch-gate, kind: gate, recipe: pre-launch-gate, journey_stage: entry, max_visits: 1 }
|
|
206
|
+
- node_id: entry-unit
|
|
207
|
+
kind: subgraph
|
|
208
|
+
recipe: none
|
|
209
|
+
journey_stage: entry
|
|
210
|
+
max_visits: 1
|
|
211
|
+
call: entry@1
|
|
212
|
+
budget: { inner_steps: 4 }
|
|
213
|
+
contract: { inputs: [ask, context, prior], tools: read-only, outputs: [result, evidence] }
|
|
214
|
+
- { node_id: dispatch, kind: judge, recipe: harness-substrate-select, journey_stage: dispatch, max_visits: 2 }
|
|
215
|
+
- { node_id: pool-admit, kind: gate, recipe: pod-pool-admission, journey_stage: dispatch, max_visits: 4 }
|
|
216
|
+
- node_id: dispatch-pod-unit
|
|
217
|
+
kind: subgraph
|
|
218
|
+
recipe: none
|
|
219
|
+
journey_stage: dispatch
|
|
220
|
+
max_visits: 4
|
|
221
|
+
call: dispatch-pod@1
|
|
222
|
+
budget: { inner_steps: 4 }
|
|
223
|
+
contract: { inputs: [ask, context, prior], tools: read-only, outputs: [result, evidence] }
|
|
224
|
+
- { node_id: freeze-check, kind: gate, recipe: landing-freeze-admission, journey_stage: land, max_visits: 4 }
|
|
225
|
+
- { node_id: hold, kind: hitl, recipe: frozen-merge-queue, journey_stage: land, max_visits: 4 }
|
|
226
|
+
- { node_id: cleanup, kind: git, recipe: post-merge-cleanup, journey_stage: land, max_visits: 1 }
|
|
227
|
+
- { node_id: result-parse, kind: observe, recipe: pod-failure-reason, journey_stage: recover, max_visits: 4 }
|
|
228
|
+
- { node_id: salvage, kind: git, recipe: salvage-branch, journey_stage: recover, max_visits: 4 }
|
|
229
|
+
- { node_id: next-move, kind: judge, recipe: task-agent-judge, journey_stage: recover, max_visits: 4 }
|
|
230
|
+
- { node_id: ready, kind: gate, recipe: none, journey_stage: land, max_visits: 1 }
|
|
231
|
+
- { node_id: pr-head-checkout, kind: gate, recipe: none, journey_stage: land, max_visits: 1 }
|
|
232
|
+
|
|
201
233
|
edges:
|
|
234
|
+
- { from: intake, on: outcome, map: { queued: queue, direct: launch-gate, ok: launch-gate, fail: stopped } }
|
|
235
|
+
- { from: queue, on: outcome, map: { launched: launch-gate, waiting: stopped, refused: stopped, ok: launch-gate, fail: stopped } }
|
|
236
|
+
- { from: launch-gate, on: outcome, map: { pass: entry-unit, refuse: stopped, ok: entry-unit, fail: stopped } }
|
|
237
|
+
- { from: entry-unit, on: outcome, map: { done: dispatch, rework: author, needs-human: stopped, failed: stopped } }
|
|
238
|
+
- { from: dispatch, on: outcome, map: { local: author, pod: pool-admit, fresh: author, pr-source: pool-admit, ok: author, fail: stopped } }
|
|
239
|
+
- { from: pool-admit, on: outcome, map: { admitted: dispatch-pod-unit, refused: stopped, ok: dispatch-pod-unit, fail: stopped } }
|
|
240
|
+
- { from: dispatch-pod-unit, on: outcome, map: { done: author, rework: author, needs-human: stopped, failed: result-parse } }
|
|
202
241
|
- from: author
|
|
203
242
|
on: outcome
|
|
204
243
|
map:
|
|
@@ -304,18 +343,38 @@ edges:
|
|
|
304
343
|
- from: open-pr
|
|
305
344
|
on: outcome
|
|
306
345
|
map:
|
|
307
|
-
opened:
|
|
346
|
+
opened: freeze-check
|
|
308
347
|
declined: stopped
|
|
309
348
|
|
|
310
349
|
- from: merge
|
|
311
350
|
on: outcome
|
|
312
351
|
map:
|
|
313
|
-
merged:
|
|
352
|
+
merged: cleanup
|
|
314
353
|
land-refused: recover
|
|
354
|
+
draft: ready
|
|
355
|
+
head-branch: pr-head-checkout
|
|
356
|
+
not-ancestor: main-sync
|
|
357
|
+
review-missing: review
|
|
358
|
+
other: next-move
|
|
315
359
|
ok: stopped
|
|
316
360
|
blocked: stopped
|
|
317
361
|
fail: stopped
|
|
318
362
|
|
|
363
|
+
# recover@1 의 출구는 «다음 걸음»이다 — 전부 stopped 로 접으면 재진입이 사라져
|
|
364
|
+
# land-refused 한 걸음이 수렴하지 못한다(관측: pod-child-failed · 수렴 못 함).
|
|
365
|
+
# done = 거절 사유가 이미 풀렸다 → 착지 마무리(cleanup)
|
|
366
|
+
# rework = 같은 착지 단계를 «한 번» 다시 밟는다(wait-retry · request-review)
|
|
367
|
+
# needs-human · failed = 사람/판정에게 넘긴다
|
|
319
368
|
- from: recover
|
|
320
369
|
on: outcome
|
|
321
|
-
map: { done:
|
|
370
|
+
map: { done: cleanup, rework: merge, needs-human: stopped, failed: stopped }
|
|
371
|
+
|
|
372
|
+
- { from: freeze-check, on: outcome, map: { open: merge, frozen: hold, taken: stopped, ok: merge, fail: stopped } }
|
|
373
|
+
- { from: hold, to: freeze-check }
|
|
374
|
+
- { from: cleanup, to: landed }
|
|
375
|
+
- { from: result-parse, to: salvage }
|
|
376
|
+
- { from: salvage, to: heal }
|
|
377
|
+
- { from: heal, on: pod_result, map: { failed: next-move } }
|
|
378
|
+
- { from: ready, to: next-move }
|
|
379
|
+
- { from: pr-head-checkout, to: next-move }
|
|
380
|
+
- { from: next-move, on: outcome, map: { narrow-relaunch: dispatch, salvage-relaunch: dispatch, alternative: dispatch, wait-retry: dispatch, decision-card: stopped, wait: stopped, ok: stopped, fail: stopped } }
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
graph_id: document-loop
|
|
2
2
|
version: 1
|
|
3
|
-
|
|
3
|
+
journey_stages: [entry, author, dispatch, run, land, recover, end]
|
|
4
|
+
entry_node: intake
|
|
4
5
|
terminal_nodes: [landed, document-blocked, needs-human]
|
|
5
6
|
runner_inputs: [goal, worktree, branch, review-intent, head-sha, base-branch, ask, context, prior]
|
|
6
7
|
docs_only_gate_skip: true
|
|
@@ -117,7 +118,45 @@ nodes:
|
|
|
117
118
|
- { node_id: landed, kind: gate, recipe: none, max_visits: 1 }
|
|
118
119
|
- { node_id: needs-human, kind: gate, recipe: none, max_visits: 1 }
|
|
119
120
|
|
|
121
|
+
- { node_id: intake, kind: observe, recipe: harness-entrance, journey_stage: entry, max_visits: 1 }
|
|
122
|
+
- { node_id: queue, kind: gate, recipe: harness-queue, journey_stage: entry, max_visits: 1 }
|
|
123
|
+
- { node_id: launch-gate, kind: gate, recipe: pre-launch-gate, journey_stage: entry, max_visits: 1 }
|
|
124
|
+
- node_id: entry-unit
|
|
125
|
+
kind: subgraph
|
|
126
|
+
recipe: none
|
|
127
|
+
journey_stage: entry
|
|
128
|
+
max_visits: 1
|
|
129
|
+
call: entry@1
|
|
130
|
+
budget: { inner_steps: 4 }
|
|
131
|
+
contract: { inputs: [ask, context, prior], tools: read-only, outputs: [result, evidence] }
|
|
132
|
+
- { node_id: dispatch, kind: judge, recipe: harness-substrate-select, journey_stage: dispatch, max_visits: 2 }
|
|
133
|
+
- { node_id: pool-admit, kind: gate, recipe: pod-pool-admission, journey_stage: dispatch, max_visits: 4 }
|
|
134
|
+
- node_id: dispatch-pod-unit
|
|
135
|
+
kind: subgraph
|
|
136
|
+
recipe: none
|
|
137
|
+
journey_stage: dispatch
|
|
138
|
+
max_visits: 4
|
|
139
|
+
call: dispatch-pod@1
|
|
140
|
+
budget: { inner_steps: 4 }
|
|
141
|
+
contract: { inputs: [ask, context, prior], tools: read-only, outputs: [result, evidence] }
|
|
142
|
+
- { node_id: freeze-check, kind: gate, recipe: landing-freeze-admission, journey_stage: land, max_visits: 4 }
|
|
143
|
+
- { node_id: hold, kind: hitl, recipe: frozen-merge-queue, journey_stage: land, max_visits: 4 }
|
|
144
|
+
- { node_id: cleanup, kind: git, recipe: post-merge-cleanup, journey_stage: land, max_visits: 1 }
|
|
145
|
+
- { node_id: result-parse, kind: observe, recipe: pod-failure-reason, journey_stage: recover, max_visits: 4 }
|
|
146
|
+
- { node_id: salvage, kind: git, recipe: salvage-branch, journey_stage: recover, max_visits: 4 }
|
|
147
|
+
- { node_id: heal, kind: judge, recipe: heal-intake, journey_stage: recover, max_visits: 4 }
|
|
148
|
+
- { node_id: next-move, kind: judge, recipe: task-agent-judge, journey_stage: recover, max_visits: 4 }
|
|
149
|
+
- { node_id: ready, kind: gate, recipe: none, journey_stage: land, max_visits: 1 }
|
|
150
|
+
- { node_id: pr-head-checkout, kind: gate, recipe: none, journey_stage: land, max_visits: 1 }
|
|
151
|
+
|
|
120
152
|
edges:
|
|
153
|
+
- { from: intake, on: outcome, map: { queued: queue, direct: launch-gate, ok: launch-gate, fail: needs-human } }
|
|
154
|
+
- { from: queue, on: outcome, map: { launched: launch-gate, waiting: needs-human, refused: needs-human, ok: launch-gate, fail: needs-human } }
|
|
155
|
+
- { from: launch-gate, on: outcome, map: { pass: entry-unit, refuse: needs-human, ok: entry-unit, fail: needs-human } }
|
|
156
|
+
- { from: entry-unit, on: outcome, map: { done: dispatch, rework: document-draft, needs-human: needs-human, failed: needs-human } }
|
|
157
|
+
- { from: dispatch, on: outcome, map: { local: document-draft, pod: pool-admit, fresh: document-draft, pr-source: pool-admit, ok: document-draft, fail: needs-human } }
|
|
158
|
+
- { from: pool-admit, on: outcome, map: { admitted: dispatch-pod-unit, refused: needs-human, ok: dispatch-pod-unit, fail: needs-human } }
|
|
159
|
+
- { from: dispatch-pod-unit, on: outcome, map: { done: document-draft, rework: document-draft, needs-human: needs-human, failed: result-parse } }
|
|
121
160
|
- from: document-draft
|
|
122
161
|
on: changed-files
|
|
123
162
|
map:
|
|
@@ -156,11 +195,20 @@ edges:
|
|
|
156
195
|
fail: document-rework
|
|
157
196
|
|
|
158
197
|
- from: open-pr
|
|
159
|
-
to:
|
|
198
|
+
to: freeze-check
|
|
199
|
+
- { from: freeze-check, on: outcome, map: { open: merge, frozen: hold, taken: needs-human, ok: merge, fail: needs-human } }
|
|
200
|
+
- { from: hold, to: freeze-check }
|
|
160
201
|
|
|
161
202
|
- from: merge
|
|
162
203
|
on: outcome
|
|
163
|
-
map: { merged:
|
|
204
|
+
map: { merged: cleanup, land-refused: recover, draft: ready, head-branch: pr-head-checkout, not-ancestor: main-sync, review-missing: document-review, other: next-move, ok: needs-human, fail: needs-human }
|
|
205
|
+
- { from: cleanup, to: landed }
|
|
206
|
+
- { from: result-parse, to: salvage }
|
|
207
|
+
- { from: salvage, to: heal }
|
|
208
|
+
- { from: heal, to: next-move }
|
|
209
|
+
- { from: ready, to: next-move }
|
|
210
|
+
- { from: pr-head-checkout, to: next-move }
|
|
211
|
+
- { from: next-move, on: outcome, map: { narrow-relaunch: dispatch, salvage-relaunch: dispatch, alternative: dispatch, wait-retry: dispatch, decision-card: needs-human, wait: needs-human, ok: needs-human, fail: needs-human } }
|
|
164
212
|
|
|
165
213
|
- from: recover
|
|
166
214
|
on: outcome
|
|
@@ -46,7 +46,7 @@ version: 1
|
|
|
46
46
|
# ⛔ 여정 노드(intake … stopped)의 id 는 원장·라이브 그래프 화면의 조인 키다 — 바꾸지 마라.
|
|
47
47
|
# 🔀 분기는 «데이터»다(`on:` 상태 키 ⊕ `map:` 값→노드) — 기본 = 풀세트, 환경(substrate·freeze·queue)이 일부를 건너뛴다.
|
|
48
48
|
entry_node: intake
|
|
49
|
-
terminal_nodes: [cleanup, stopped]
|
|
49
|
+
terminal_nodes: [cleanup, stopped, needs-human, decision-card]
|
|
50
50
|
|
|
51
51
|
# Runner-provided inputs are declared here so contract-flow can distinguish them from undeclared gaps.
|
|
52
52
|
runner_inputs: [ask_text, goal, worktree, branch, review-intent, head-sha, base-branch]
|
|
@@ -419,6 +419,60 @@ nodes:
|
|
|
419
419
|
tools: none
|
|
420
420
|
outputs: []
|
|
421
421
|
|
|
422
|
+
# GRAPH-AUTHOR-FAIL-EDGE (0.2.35 첫 조각 · 선언 ⊕ 관측 · 동작 무변경):
|
|
423
|
+
# author 의 결과가 «길»이 된다 — 코드에 이미 있던 자동 재저작 한 번(ask-launch-flow.ts retryableNoTargetPaths)과
|
|
424
|
+
# NOT-GROUNDED 범위 카드 거절(launch-preflight.ts)을 그래프가 이름으로 안다. 관측 = graph-front-nodes.ts observeFrontNodeExit.
|
|
425
|
+
- node_id: re-ground
|
|
426
|
+
group: author
|
|
427
|
+
journey_stage: author
|
|
428
|
+
kind: judge
|
|
429
|
+
recipe: ask-auto-reauthor # ask-launch-flow.ts — 대상 경로 후보 검색 → 한 번 더 저작
|
|
430
|
+
max_visits: 1 # ⛔ 두 번째 not-grounded 는 여기로 «안» 온다 — needs-human
|
|
431
|
+
terminal_stages: []
|
|
432
|
+
contract:
|
|
433
|
+
inputs: [ask_text, blockers]
|
|
434
|
+
tools: read-only
|
|
435
|
+
outputs: [target_path_candidates]
|
|
436
|
+
|
|
437
|
+
- node_id: needs-human
|
|
438
|
+
group: end
|
|
439
|
+
journey_stage: end
|
|
440
|
+
kind: hitl
|
|
441
|
+
recipe: launch-preflight-blocked # ask-launch-flow.ts resolveBlockedInteractively — 근거 카드(막힘 이름·사유) 동반
|
|
442
|
+
max_visits: 1
|
|
443
|
+
terminal_stages: []
|
|
444
|
+
contract:
|
|
445
|
+
inputs: [blockers]
|
|
446
|
+
tools: none
|
|
447
|
+
outputs: [evidence_card]
|
|
448
|
+
|
|
449
|
+
# next-move 의 wait 가 «조용히» stopped 로 가지 않게 — task-agent 의 결정 카드 경로(judge.ts 'decision-card')로 모은다.
|
|
450
|
+
- node_id: decision-card
|
|
451
|
+
group: recover
|
|
452
|
+
journey_stage: recover
|
|
453
|
+
kind: hitl
|
|
454
|
+
recipe: task-agent-decision-card # src/task-agent/judge.ts move 'decision-card' → 결정 카드 발신
|
|
455
|
+
max_visits: 1
|
|
456
|
+
terminal_stages: []
|
|
457
|
+
contract:
|
|
458
|
+
inputs: [next_action]
|
|
459
|
+
tools: none
|
|
460
|
+
outputs: [decision_card]
|
|
461
|
+
|
|
462
|
+
# LAND-REFUSAL-EDGES 첫 조각 — 착지 거부 한 건을 recover@1(#29093 read-only 유닛)에 «근거째» 결속한다.
|
|
463
|
+
# pr land 가 거부 줄 원문·cardId·PR·head·planner 답을 merge→recover 간선 한 행에 남긴다(src/cli/pr-land-recovery.ts).
|
|
464
|
+
# ⛔ 실행은 아직 없다(execution=none) — 다음 동작은 기존 TA·열차 입장이 쥔다(LAND-REFUSAL-EXEC 후속).
|
|
465
|
+
- node_id: recover
|
|
466
|
+
group: recover
|
|
467
|
+
journey_stage: recover
|
|
468
|
+
kind: subgraph
|
|
469
|
+
recipe: none
|
|
470
|
+
max_visits: 1
|
|
471
|
+
call: recover@1
|
|
472
|
+
budget: { inner_steps: 4 }
|
|
473
|
+
terminal_stages: []
|
|
474
|
+
contract: { inputs: [ask, context, prior], tools: read-only, outputs: [result, evidence] }
|
|
475
|
+
|
|
422
476
|
# LAND-REFUSAL-EDGES: destinations only; recovery execution is a later slice.
|
|
423
477
|
- node_id: ready
|
|
424
478
|
group: land
|
|
@@ -478,8 +532,17 @@ edges:
|
|
|
478
532
|
fresh: author
|
|
479
533
|
pr-source: pool-admit # 같은 PR 수리: author·plan·decompose를 건너뛰고 Pod rework
|
|
480
534
|
|
|
535
|
+
# GRAPH-AUTHOR-FAIL-EDGE — 결과 값은 observeFrontNodeExit 가 그 자리(ask-launch-flow.ts)에서 낸다.
|
|
481
536
|
- from: author
|
|
482
|
-
|
|
537
|
+
on: outcome
|
|
538
|
+
map:
|
|
539
|
+
ok: plan
|
|
540
|
+
re-authored: plan # 자동 재저작 뒤 발사 가능
|
|
541
|
+
not-grounded: re-ground # 대상 경로 0 · NOT-GROUNDED 범위 카드 — 두 번째면 re-ground 예산(1) 소진 → needs-human
|
|
542
|
+
fail: needs-human # 저작기가 던졌다
|
|
543
|
+
|
|
544
|
+
- from: re-ground
|
|
545
|
+
to: author
|
|
483
546
|
|
|
484
547
|
- from: plan
|
|
485
548
|
to: decompose
|
|
@@ -536,8 +599,8 @@ edges:
|
|
|
536
599
|
salvage-relaunch: dispatch
|
|
537
600
|
alternative: dispatch
|
|
538
601
|
wait-retry: dispatch
|
|
539
|
-
decision-card:
|
|
540
|
-
wait: stopped
|
|
602
|
+
decision-card: decision-card
|
|
603
|
+
wait: decision-card # GRAPH-AUTHOR-FAIL-EDGE ③ — 조용한 stopped 0
|
|
541
604
|
|
|
542
605
|
- from: implement
|
|
543
606
|
to: gate
|
|
@@ -616,5 +679,15 @@ edges:
|
|
|
616
679
|
public-export-leak: next-move
|
|
617
680
|
other: next-move
|
|
618
681
|
|
|
682
|
+
# 거부 근거의 결속 간선 — 위 refusal map(목적지)과 «함께» 남는다. 목적지 계약은 그대로다.
|
|
683
|
+
- from: merge
|
|
684
|
+
on: recovery
|
|
685
|
+
map:
|
|
686
|
+
land-refused: recover
|
|
687
|
+
|
|
688
|
+
- from: recover
|
|
689
|
+
on: outcome
|
|
690
|
+
map: { done: next-move, rework: next-move, needs-human: decision-card, failed: decision-card }
|
|
691
|
+
|
|
619
692
|
- from: merge
|
|
620
693
|
to: cleanup
|
|
@@ -18,6 +18,15 @@ nodes:
|
|
|
18
18
|
max_visits: 1
|
|
19
19
|
budget: { inner_steps: 10 }
|
|
20
20
|
contract: { inputs: [ask, context, prior], tools: harness-say, outputs: [result, evidence] }
|
|
21
|
+
# 저작 ↔ 구현 대화 고리(RFC-progressive-goal-elaboration §7) — 첫 왕복 = E1 착수 구체화(goal-elaborated) ·
|
|
22
|
+
# refine 되돌이 = E3 첫 라운드 → author(goal-refined · 골 v2 · 런당 1회) — 한 번 되돌아도 author·implement·judge ×2 + done = 7 걸음 ≤ inner_steps.
|
|
23
|
+
- node_id: author-dialogue
|
|
24
|
+
kind: subgraph
|
|
25
|
+
recipe: none
|
|
26
|
+
call: author-dialogue@1
|
|
27
|
+
max_visits: 1
|
|
28
|
+
budget: { inner_steps: 20 }
|
|
29
|
+
contract: { inputs: [ask, context, prior], tools: harness-say, outputs: [result, evidence] }
|
|
21
30
|
- node_id: dispatch-pod
|
|
22
31
|
kind: subgraph
|
|
23
32
|
recipe: none
|
|
@@ -73,7 +82,8 @@ nodes:
|
|
|
73
82
|
- { node_id: rework, kind: gate, recipe: none, max_visits: 1 }
|
|
74
83
|
edges:
|
|
75
84
|
- { from: entry, on: outcome, map: { done: author, rework: rework, needs-human: needs-human, failed: failed } }
|
|
76
|
-
- { from: author, on: outcome, map: { done:
|
|
85
|
+
- { from: author, on: outcome, map: { done: author-dialogue, rework: rework, needs-human: needs-human, failed: failed } }
|
|
86
|
+
- { from: author-dialogue, on: outcome, map: { done: dispatch-pod, needs-human: needs-human, failed: failed } }
|
|
77
87
|
- { from: dispatch-pod, on: outcome, map: { done: pr, rework: rework, needs-human: needs-human, failed: failed } }
|
|
78
88
|
- { from: pr, on: outcome, map: { done: harvest, rework: rework, needs-human: needs-human, failed: failed } }
|
|
79
89
|
- { from: harvest, on: outcome, map: { done: land, rework: rework, needs-human: needs-human, failed: failed } }
|