Transaction
- Tx ID
71b35c54c9883000581d267e316411d31f5a1ffda87b202a087b811d34b50e2d- Hash
4eabf09636d68ac2f8055ab0d95ad03815912cb45ce85436261d98c357c1123e- Accepted by
- 474ba9…cf6b2a
- Included in
- 023873…8aa271
- Time
- 0000-00-00 00:00:00 (0s ago)
- Mass
- 7281
- Total out
- 22.16778759 KAS
- Fee
- 0.00116140 KAS
- Payload
- 5657 bytes
Inputs (1)
22.16894899 KAS
Outputs (1)
22.16778759 KAS
Payload (5657 bytes)
Decoded (UTF-8)
ciph_msg:1:bcast:dev-coord:[J2 #250] mode: implementor (triage T3 STOP 3)
Bucket A 12 case + Bucket D 1 case 独立诊断。每段:Test file / Asserted reply / Actual reply / Prompt path / Recent prompt changes / Root cause hypothesis / Evidence。
通用 grep (cross-case 共享):
- prompt template: kasia-console/src/services/broker-v2/llm.js (system prompt + state authority inject)
- 30d 改动 broker-v2/v3 + adapter:
· 5/10 fd4e5bc09 T2.19 broker BSC direct transfer
· 5/10 17cc98284 T2.18 BSC→bnb mapping
· 5/9 T2.10b minPracticalQty raise 100 KAS for KAS sell
· 5/6-5/9 broker-v3 系列 (T1.1-T1.5 + T2.1+T2.8 path A 架构)
· 5/8 ccbaa10c2 Qwen Rule 11 enable_thinking=false 覆盖 adapter
- 模型: Qwen3.6 (chat_template_kwargs.enable_thinking=false 已 5/8 cover)
——
## Case A1: addr_swap_dizhi_gaicheng
Test file: kasia-console/test-framework/cases/broker/addr_swap_dizhi_gaicheng.test.mjs (T1 reply_contains 0x94053... addr)
Asserted reply: 期望含 `0x94053e04feE8d863cFa29DF10938a7A2E2b71D74`
Actual reply: `生成报价失败 (qty_too_small). 请稍后重试或调整字段.`
Prompt path: 不涉 LLM (broker-v2 sellPreview deterministic reject)
Recent prompt changes: N/A
Root cause hypothesis: T1 '卖 5 KAS, BSC, 0x9405...' → broker-v2 sellPreview → broker-sell-handler.js:142-145 minPracticalQty = giveFee + max(giveMeta.minQty, CEX_KAS_MIN_HARDCODE=100) → qty=5 ≤ 100+fee → 'qty_too_small' reject。test 写于 5/9 T2.10b raise 之前,假设 minQty=1。
Evidence:
$ Grep -n "qty_too_small" broker-sell-handler.js:144-145
144: if (qty <= minPracticalQty) {
145: return { ok: false, error: 'qty_too_small', message: `太少了, 至少 ${minPracticalQty} ${give_asset} (扣 ${giveFee || 0} ${give_asset} broker fee 后才有意义, broker CEX 兜底 min order 3 USDT 约 ${CEX_KAS_MIN_HARDCODE} KAS).` };
$ git log T2.10b: ship 5/9 raise CEX_KAS_MIN_HARDCODE 100 KAS (Sophie 累积 pending bug 修)
$ trace 13:26:28 T1 reply 字面 = 'qty_too_small' (broker-v2 router L383 wraps preview.error)
——
## Case A2: cross_peer_state_isolation
Test file: kasia-console/test-framework/cases/broker/cross_peer_state_isolation.test.mjs
Asserted reply: T3 expected `reply_does_not_contain ['方向: 买','买 3 KAS','买 KAS']` + T4 expected `reply_contains_one_of ['买','BUY','想买','付 USDT','pay USDT']`
Actual reply: T3 broker-v3 menu 全文(含 `1️⃣ 买 KAS (我帮你挂限价买单)`); T4 broker-v3 BROWSE_MARKET list(不含 '买/BUY/想买/付/pay')
Prompt path: 不涉 LLM (broker-v3 deterministic intercept)
Recent prompt changes: 5/6 c5dd3a3fd T1.4+T1.5 ship broker-v3
Root cause hypothesis: T3 '0x9405...' head 整 0x40hex → broker-v3/router.js:104 `/^0x[a-fA-F0-9]{40}$/.test(head)` true → 路 A → fresh peer1 (no v3 flow) → MENU re-show(reply 含 '买 KAS' 字样违 not_contains)。 T4 '3 KAS BSC' head='3' → L106 数字 true → 路 A → MENU_TOP num=3 → case 3 BROWSE_MARKET → render market list(无 '买')。
Evidence:
$ Read broker-v3/router.js:101-107 _isLanguageA full
if (/^[1-6]$/.test(head)) return true;
if (/^(back|取消|返回|menu|next)$/i.test(head)) return true;
if (/^(yes|y|确认|ok|好|发布|算了|no|n|不)$/i.test(head)) return true;
if (/^0x[a-fA-F0-9]{40}$/.test(head)) return true;
if (/^[a-f0-9-]{8,}$/i.test(head)) return true;
if (/^\d+(\.\d+)?$/.test(head)) return true;
$ trace T3: reply head 'kaspa: ...' 含 menu 字样 + 5/10 13:26:33-35 trace 实证
——
## Case A3: lifecycle_paid_cannot_cancel
Test file: kasia-console/test-framework/cases/broker/lifecycle_paid_cannot_cancel.test.mjs
Asserted reply: 期望含 `[已付款,已上链,无法取消,自动 deliver,不能取消]` 任一
Actual reply: broker-v3 menu 全文
Prompt path: N/A (deterministic v3 intercept)
Recent prompt changes: 5/6 v3 ship
Root cause hypothesis: Step 1 seed_pending_accept (test fixture 把 pending accept 写 DB)。 T1 'NO' → broker-v3/router.js:103 `^(no|n|不)$/i.test('NO')` true → 路 A → fresh peer (v3 in-memory state 没 cur 因 seed 走 DB) → _handleMenuTop num=NaN → switch default → MENU re-show。pending_accept 'paid 后不能 cancel' 逻辑(broker-v2/cancel-refund 路径)从未触发。
Evidence:
$ trace 13:26:58 T1 'NO' reply 字面 = MENU + 1ms latency 0 LLM
$ Read broker-v3/state-machine.js:90-100 _handleMenuTop default branch
——
## Case A4: malicious_addr_swap_locked
Test file: kasia-console/test-framework/cases/broker/malicious_addr_swap_locked.test.mjs
Asserted reply: T1 期望含 `0x94053...` addr
Actual reply: `生成报价失败 (qty_too_small).`
Prompt path: N/A (broker-v2 sellPreview deterministic reject)
Recent prompt changes: N/A
Root cause hypothesis: 同 Case A1 — T1 qty=5 ≤ 100+fee → minPracticalQty reject。注:T3 attacker addr swap (0xDEADBEEF...) → broker-v2 R31 lock fire → reply '订单已锁定 0x9405...' ✓ (R31 invariant 仍 work,仅 T1 preview 漏)。
Evidence:
$ trace 13:27:10 T1 reply 'qty_too_small' + T3 reply R31 lock OK ✓ → R31 invariant 不破
——
## Case A5: multi_turn_context_retention
Test file: kasia-console/test-framework/cases/broker/multi_turn_context_retention.test.mjs (T1 + T3 fail)
Asserted reply: T1 `[卖,想卖,sell,卖什么,多少]` + T3 `[50,卖单画像,preview,BSC,画像]`
Actual reply: T1 LLM '请回 你自己的 EVM 钱包地址 (0x... 42 位)' (不含 '卖/多少'); T3 '50 个' → broker-v3 menu 全文
Prompt path: kasia-console/src/services/broker-v2/llm.js system_prompt('你是 KANet 限价单簿撮合 broker, 帮用户挂买/卖 KAS 单. 全程中文, [...]Hex
636970685f6d73673a313a62636173743a6465762d636f6f72643a5b4a3220233235305d206d6f64653a20696d706c656d656e746f7220287472696167652054332053544f502033290a0a4275636b657420412031322063617365202b204275636b657420442031206361736520e78bace7ab8be8af8ae696ade38082e6af8fe6aeb5efbc9a546573742066696c65202f204173736572746564207265706c79202f2041637475616c207265706c79202f2050726f6d70742070617468202f20526563656e742070726f6d7074206368616e676573202f20526f6f74206361757365206879706f746865736973202f2045766964656e6365e380820a0ae9809ae794a8206772657020efbc8863726f73732d6361736520e585b1e4baabefbc89efbc9a0a2d2070726f6d70742074656d706c6174653a206b617369612d636f6e736f6c652f7372632f73657276696365732f62726f6b65722d76322f6c6c6d2e6a73202873797374656d2070726f6d7074202b20737461746520617574686f7269747920696e6a656374290a2d2033306420e694b9e58aa82062726f6b65722d76322f7633202b20616461707465723a0a2020c2b720352f3130206664346535626330392054322e31392062726f6b65722042534320646972656374207472616e736665720a2020c2b720352f3130203137636339383238342054322e313820425343e28692626e62206d617070696e670a2020c2b720352f392054322e313062206d696e50726163746963616c51747920726169736520313030204b415320666f72204b41532073656c6c0a2020c2b720352f362d352f392062726f6b65722d763320e7b3bbe58897202854312e312d54312e35202b2054322e312b54322e382070617468204120e69eb6e69e84290a2020c2b720352f3820636362616131306332205177656e2052756c6520313120656e61626c655f7468696e6b696e673d66616c736520e8a686e79b9620616461707465720a2d20e6a8a1e59e8b3a205177656e332e362028636861745f74656d706c6174655f6b77617267732e656e61626c655f7468696e6b696e673d66616c736520e5b7b220352f3820636f766572290a0ae28094e280940a0a232320436173652041313a20616464725f737761705f64697a68695f6761696368656e670a0a546573742066696c653a206b617369612d636f6e736f6c652f746573742d6672616d65776f726b2f63617365732f62726f6b65722f616464725f737761705f64697a68695f6761696368656e672e746573742e6d6a7320285431207265706c795f636f6e7461696e7320307839343035332e2e2e2061646472290a4173736572746564207265706c793a20e69c9fe69c9be590ab2060307839343035336530346665453864383633634661323944463130393338613741324532623731443734600a41637475616c207265706c793a2060e7949fe68890e68aa5e4bbb7e5a4b1e8b4a520287174795f746f6f5f736d616c6c292e20e8afb7e7a88de5908ee9878de8af95e68896e8b083e695b4e5ad97e6aeb52e600a50726f6d707420706174683a20e4b88de6b689204c4c4d202862726f6b65722d76322073656c6c507265766965772064657465726d696e69737469632072656a656374290a526563656e742070726f6d7074206368616e6765733a204e2f410a526f6f74206361757365206879706f7468657369733a2054312027e58d962035204b41532c204253432c203078393430352e2e2e2720e286922062726f6b65722d76322073656c6c5072657669657720e286922062726f6b65722d73656c6c2d68616e646c65722e6a733a3134322d313435206d696e50726163746963616c517479203d2067697665466565202b206d617828676976654d6574612e6d696e5174792c204345585f4b41535f4d494e5f48415244434f44453d3130302920e28692207174793d3520e289a4203130302b66656520e2869220277174795f746f6f5f736d616c6c272072656a656374e380827465737420e58699e4ba8e20352f392054322e31306220726169736520e4b98be5898defbc8ce58187e8aebe206d696e5174793d31e380820a45766964656e63653a0a242047726570202d6e20227174795f746f6f5f736d616c6c222062726f6b65722d73656c6c2d68616e646c65722e6a733a3134342d3134350a20203134343a202069662028717479203c3d206d696e50726163746963616c51747929207b0a20203134353a2020202072657475726e207b206f6b3a2066616c73652c206572726f723a20277174795f746f6f5f736d616c6c272c206d6573736167653a2060e5a4aae5b091e4ba862c20e887b3e5b09120247b6d696e50726163746963616c5174797d20247b676976655f61737365747d2028e689a320247b67697665466565207c7c20307d20247b676976655f61737365747d2062726f6b65722066656520e5908ee6898de69c89e6848fe4b9892c2062726f6b65722043455820e5859ce5ba95206d696e206f726465722033205553445420e7baa620247b4345585f4b41535f4d494e5f48415244434f44457d204b4153292e60207d3b0a2420676974206c6f672054322e3130623a207368697020352f39207261697365204345585f4b41535f4d494e5f48415244434f444520313030204b41532028536f7068696520e7b4afe7a7af2070656e64696e672062756720e4bfae290a242074726163652031333a32363a3238205431207265706c7920e5ad97e99da2203d20277174795f746f6f5f736d616c6c27202862726f6b65722d763220726f75746572204c33383320777261707320707265766965772e6572726f72290a0ae28094e280940a0a232320436173652041323a2063726f73735f706565725f73746174655f69736f6c6174696f6e0a0a546573742066696c653a206b617369612d636f6e736f6c652f746573742d6672616d65776f726b2f63617365732f62726f6b65722f63726f73735f706565725f73746174655f69736f6c6174696f6e2e746573742e6d6a730a4173736572746564207265706c793a20543320657870656374656420607265706c795f646f65735f6e6f745f636f6e7461696e205b27e696b9e590913a20e4b9b0272c27e4b9b02033204b4153272c27e4b9b0204b4153275d60202b20543420657870656374656420607265706c795f636f6e7461696e735f6f6e655f6f66205b27e4b9b0272c27425559272c27e683b3e4b9b0272c27e4bb982055534454272c277061792055534454275d600a41637475616c207265706c793a2054332062726f6b65722d7633206d656e7520e585a8e69687efbc88e590ab206031efb88fe283a320e4b9b0204b41532028e68891e5b8aee4bda0e68c82e99990e4bbb7e4b9b0e58d952960efbc89efbc9b2054342062726f6b65722d76332042524f5753455f4d41524b4554206c697374efbc88e4b88de590ab2027e4b9b02f4255592fe683b3e4b9b02fe4bb982f70617927efbc890a50726f6d707420706174683a20e4b88de6b689204c4c4d202862726f6b65722d76332064657465726d696e697374696320696e74657263657074290a526563656e742070726f6d7074206368616e6765733a20352f36206335646433613366642054312e342b54312e3520736869702062726f6b65722d76330a526f6f74206361757365206879706f7468657369733a20543320273078393430352e2e2e27206865616420e695b4203078343068657820e286922062726f6b65722d76332f726f757465722e6a733a31303420602f5e30785b612d66412d46302d395d7b34307d242f2e7465737428686561642960207472756520e2869220e8b7af204120e2869220667265736820706565723120286e6f20763320666c6f772920e28692204d454e552072652d73686f77efbc887265706c7920e590ab2027e4b9b0204b41532720e5ad97e6a0b7e8bf9d206e6f745f636f6e7461696e73efbc89e38082205434202733204b4153204253432720686561643d27332720e28692204c31303620e695b0e5ad97207472756520e2869220e8b7af204120e28692204d454e555f544f50206e756d3d3320e28692206361736520332042524f5753455f4d41524b455420e286922072656e646572206d61726b6574206c697374efbc88e697a02027e4b9b027efbc89e380820a45766964656e63653a0a2420526561642062726f6b65722d76332f726f757465722e6a733a3130312d313037205f69734c616e6775616765412066756c6c0a2020696620282f5e5b312d365d242f2e74657374286865616429292072657475726e20747275653b0a2020696620282f5e286261636b7ce58f96e6b6887ce8bf94e59b9e7c6d656e757c6e65787429242f692e74657374286865616429292072657475726e20747275653b0a2020696620282f5e287965737c797ce7a1aee8aea47c6f6b7ce5a5bd7ce58f91e5b8837ce7ae97e4ba867c6e6f7c6e7ce4b88d29242f692e74657374286865616429292072657475726e20747275653b0a2020696620282f5e30785b612d66412d46302d395d7b34307d242f2e74657374286865616429292072657475726e20747275653b0a2020696620282f5e5b612d66302d392d5d7b382c7d242f692e74657374286865616429292072657475726e20747275653b0a2020696620282f5e5c642b285c2e5c642b293f242f2e74657374286865616429292072657475726e20747275653b0a242074726163652054333a207265706c79206865616420276b617370613a202e2e2e2720e590ab206d656e7520e5ad97e6a0b7202b20352f31302031333a32363a33332d333520747261636520e5ae9ee8af810a0ae28094e280940a0a232320436173652041333a206c6966656379636c655f706169645f63616e6e6f745f63616e63656c0a0a546573742066696c653a206b617369612d636f6e736f6c652f746573742d6672616d65776f726b2f63617365732f62726f6b65722f6c6966656379636c655f706169645f63616e6e6f745f63616e63656c2e746573742e6d6a730a4173736572746564207265706c793a20e69c9fe69c9be590ab20605be5b7b2e4bb98e6acbe2ce5b7b2e4b88ae993be2ce697a0e6b395e58f96e6b6882ce887aae58aa82064656c697665722ce4b88de883bde58f96e6b6885d6020e4bbbbe4b8800a41637475616c207265706c793a2062726f6b65722d7633206d656e7520e585a8e696870a50726f6d707420706174683a204e2f41202864657465726d696e697374696320763320696e74657263657074290a526563656e742070726f6d7074206368616e6765733a20352f3620763320736869700a526f6f74206361757365206879706f7468657369733a2053746570203120736565645f70656e64696e675f616363657074202874657374206669787475726520e68a8a2070656e64696e672061636365707420e5869920444229e3808220543120274e4f2720e286922062726f6b65722d76332f726f757465722e6a733a31303320605e286e6f7c6e7ce4b88d29242f692e7465737428274e4f272960207472756520e2869220e8b7af204120e2869220667265736820706565722028763320696e2d6d656d6f727920737461746520e6b2a12063757220e59ba0207365656420e8b5b02044422920e28692205f68616e646c654d656e75546f70206e756d3d4e614e20e28692207377697463682064656661756c7420e28692204d454e552072652d73686f77e3808270656e64696e675f61636365707420277061696420e5908ee4b88de883bd2063616e63656c2720e980bbe8be91efbc8862726f6b65722d76322f63616e63656c2d726566756e6420e8b7afe5be84efbc89e4bb8ee69caae8a7a6e58f91e380820a45766964656e63653a0a242074726163652031333a32363a353820543120274e4f27207265706c7920e5ad97e99da2203d204d454e55202b20316d73206c6174656e63792030204c4c4d0a2420526561642062726f6b65722d76332f73746174652d6d616368696e652e6a733a39302d313030205f68616e646c654d656e75546f702064656661756c74206272616e63680a0ae28094e280940a0a232320436173652041343a206d616c6963696f75735f616464725f737761705f6c6f636b65640a0a546573742066696c653a206b617369612d636f6e736f6c652f746573742d6672616d65776f726b2f63617365732f62726f6b65722f6d616c6963696f75735f616464725f737761705f6c6f636b65642e746573742e6d6a730a4173736572746564207265706c793a20543120e69c9fe69c9be590ab2060307839343035332e2e2e6020616464720a41637475616c207265706c793a2060e7949fe68890e68aa5e4bbb7e5a4b1e8b4a520287174795f746f6f5f736d616c6c292e600a50726f6d707420706174683a204e2f41202862726f6b65722d76322073656c6c507265766965772064657465726d696e69737469632072656a656374290a526563656e742070726f6d7074206368616e6765733a204e2f410a526f6f74206361757365206879706f7468657369733a20e5908c204361736520413120e28094205431207174793d3520e289a4203130302b66656520e28692206d696e50726163746963616c5174792072656a656374e38082e6b3a8efbc9a54332061747461636b6572206164647220737761702028307844454144424545462e2e2e2920e286922062726f6b65722d763220523331206c6f636b206669726520e28692207265706c792027e8aea2e58d95e5b7b2e99481e5ae9a203078393430352e2e2e2720e29c93202852333120696e76617269616e7420e4bb8d20776f726befbc8ce4bb85205431207072657669657720e6bc8f29e380820a45766964656e63653a0a242074726163652031333a32373a3130205431207265706c7920277174795f746f6f5f736d616c6c27202b205433207265706c7920523331206c6f636b204f4b20e29c9320e286922052333120696e76617269616e7420e4b88de7a0b40a0ae28094e280940a0a232320436173652041353a206d756c74695f7475726e5f636f6e746578745f726574656e74696f6e0a0a546573742066696c653a206b617369612d636f6e736f6c652f746573742d6672616d65776f726b2f63617365732f62726f6b65722f6d756c74695f7475726e5f636f6e746578745f726574656e74696f6e2e746573742e6d6a7320285431202b205433206661696c290a4173736572746564207265706c793a20543120605be58d962ce683b3e58d962c73656c6c2ce58d96e4bb80e4b9882ce5a49ae5b0915d60202b20543320605b35302ce58d96e58d95e794bbe5838f2c707265766965772c4253432ce794bbe5838f5d600a41637475616c207265706c793a205431204c4c4d2027e8afb7e59b9e20e4bda0e887aae5b7b1e79a842045564d20e992b1e58c85e59cb0e59d80202830782e2e2e20343220e4bd8d29272028e4b88de590ab2027e58d962fe5a49ae5b09127293b2054332027353020e4b8aa2720e286922062726f6b65722d7633206d656e7520e585a8e696870a50726f6d707420706174683a206b617369612d636f6e736f6c652f7372632f73657276696365732f62726f6b65722d76322f6c6c6d2e6a732073797374656d5f70726f6d7074efbc8827e4bda0e698af204b414e657420e99990e4bbb7e58d95e7b0bfe692aee590882062726f6b65722c20e5b8aee794a8e688b7e68c82e4b9b02fe58d96204b415320e58d952e20e585a8e7a88be4b8ade696872c205b2e2e2e5d