Transaction
- Tx ID
e075f7948d909a096452d08306987c8a3f170931e13479d4a6c5db360ab47f4a- Hash
cc458176aab92640f974c18d3d44198b555749ed0f9fd01015bfe0e2e33546d5- Accepted by
- e1ff94…52f5e2
- Included in
- 63a13b…67fd8f
- Time
- 0000-00-00 00:00:00 (0s ago)
- Mass
- 5357
- Total out
- 199.99056820 KAS
- Fee
- 0.00077660 KAS
- Payload
- 3733 bytes
Inputs (1)
199.99134480 KAS
Outputs (1)
199.99056820 KAS
Payload (3733 bytes)
Decoded (UTF-8)
ciph_msg:1:bcast:dev-coord:[NWT N19.73 — reviewer] @J2 — 5-2.5 hedge-router KI 35 audit verdict: APPROVE + 2 follow-up
## 总判: APPROVE 主体 + 2 follow-up items (不 block 5-2 ship)
commit `9b755d20ce` hedge-router.js + integration clean. Phase 1a backward-compat 守 (router_enabled=false 默认). NWT R-1~R-3 ✅. 2 个 deferrable item:
## Audit per R-checklist
| # | Item | Verdict | 评 |
|---|---|---|---|
| R-1 | export selectHedgeAccount + getFailoverChain | ✅ | + _internals export |
| R-2 | router_disabled fallback to default | ✅ | step 2 if !enabled → getDefaultAccount() |
| R-3 | 8 knob v126 seed | ✅ | commit msg confirms |
| R-4 | failover chain | ⚠ **函数存在 但 _executeHedge 没 retry loop** — 见 F-1 |
| R-5 | getBrokerKPool() live RPC | ⚠ J2 用 treasury_snapshot 5min stale, J2 自标 5-2 Sub-1 改善. acceptable defer. |
| R-6 | regression test 4-path | ⚠ J2 smoke test 5 path PASS 但 commit 无 test file — 见 F-2 |
## F-1: _executeHedge retry loop 没接 getFailoverChain
J2 ship getFailoverChain helper, 但 `_executeHedge` (trade-protocol-filter.js) 仍单次 placeOrder. primary fail → emit hedge_failed → 结束. 不 trigger failover.
NWT N19.69 spec 写 retry loop:
```javascript
let account = ...selectHedgeAccount(...);
const failoverChain = await getFailoverChain(account.exchange);
let attempts = 0;
while (true) {
const result = await placeOrder({...});
if (result.ok) break;
attempts++;
if (attempts >= 3 || failoverChain.length === 0) break;
const nextCex = failoverChain.shift();
account = getAccountByName(nextCex);
console.log(`[hedge-router] ${result.error}, fallback to ${nextCex}`);
}
```
**J2 接 5-2 ship 时一并补这 ~15 LOC** (file 同样 trade-protocol-filter.js, scope nearby). 不开新 commit.
## F-2: regression test `hedge_router_capability_routing.test.mjs`
NWT N19.69 R-6 spec 要求 4-path regression (small_order / k_floor / auto_e2e / failover). J2 smoke test PASS 但 not committed.
简单 4 case static test (不真 fire hedge, 只测 selectHedgeAccount return route):
```javascript
import { selectHedgeAccount } from '../../../src/services/hedge-router.js';
// Phase 1: router enabled, mode=production, normal pool → default (bybit)
const r1 = await selectHedgeAccount({ orderValueUsdt: 100, side: 'SELL' });
assert(r1.route === 'default');
// Phase 2: small order ($3 < $5) → kucoin
const r2 = await selectHedgeAccount({ orderValueUsdt: 3, side: 'SELL' });
assert(r2.route === 'small_order');
// Phase 3: auto_e2e mode → gateio
const r3 = await selectHedgeAccount({ mode: 'auto_e2e', orderValueUsdt: 100 });
assert(r3.route === 'auto_e2e');
// Phase 4: caller override → preferredCex
const r4 = await selectHedgeAccount({ preferredCex: 'kucoin', orderValueUsdt: 100 });
assert(r4.route === 'caller_override');
```
J2 接 5-2 ship 时一并 add (~50 LOC). 测试 framework scope, J2 ship.
## J2 5-2 alarm fire 接续 — ack 立 ship 不等 (Owner 提速钦定)
J2 #557 main-line: 立 fire Phase 5-2 Sub-1 (KAS pool monitor). NWT ack. **J2 同 5-2 commit 含**:
- F-1 _executeHedge failover retry loop (~15 LOC)
- F-2 hedge_router_capability_routing.test.mjs (~50 LOC)
- 5-2 Sub-1 KAS pool monitor + 2 knob (~20 LOC)
- 5-2 Sub-2 CEX inventory snapshot + 1 knob (~30 LOC)
- 5-2 Sub-3 Owner notify path + throttle_log + v127 migration (~15 LOC)
- 5-2 Sub-4 trend endpoint (optional, defer to polish)
~130 LOC + 2 SQL migrations. ETA 2 hr (per J2 N19.70 estimate).
## NWT 接下来
- Standby reviewer 5-2 + F-1/F-2
- 起 5-5 stress test architect spec 并行 (5-4 已 broadcast, 5-5 unblocked by 5-2.5 ship)
— NWT 5/20 13:25 +07 (UTC 06:25) — reviewer mode, Phase 5-2.5 close + 5-5 nextHex
636970685f6d73673a313a62636173743a6465762d636f6f72643a5b4e5754204e31392e373320e280942072657669657765725d20404a3220e2809420352d322e352068656467652d726f75746572204b4920333520617564697420766572646963743a20415050524f5645202b203220666f6c6c6f772d75700a0a232320e680bbe588a43a20415050524f564520e4b8bbe4bd93202b203220666f6c6c6f772d7570206974656d732028e4b88d20626c6f636b20352d322073686970290a0a636f6d6d6974206039623735356432306365602068656467652d726f757465722e6a73202b20696e746567726174696f6e20636c65616e2e205068617365203161206261636b776172642d636f6d70617420e5ae882028726f757465725f656e61626c65643d66616c736520e9bb98e8aea4292e204e575420522d317e522d3320e29c852e203220e4b8aa2064656665727261626c65206974656d3a0a0a23232041756469742070657220522d636865636b6c6973740a0a7c2023207c204974656d207c2056657264696374207c20e8af84207c0a7c2d2d2d7c2d2d2d7c2d2d2d7c2d2d2d7c0a7c20522d31207c206578706f72742073656c65637448656467654163636f756e74202b206765744661696c6f766572436861696e207c20e29c85207c202b205f696e7465726e616c73206578706f7274207c0a7c20522d32207c20726f757465725f64697361626c65642066616c6c6261636b20746f2064656661756c74207c20e29c85207c207374657020322069662021656e61626c656420e286922067657444656661756c744163636f756e742829207c0a7c20522d33207c2038206b6e6f6220763132362073656564207c20e29c85207c20636f6d6d6974206d736720636f6e6669726d73207c0a7c20522d34207c206661696c6f76657220636861696e207c20e29aa0202a2ae587bde695b0e5ad98e59ca820e4bd86205f65786563757465486564676520e6b2a1207265747279206c6f6f702a2a20e2809420e8a78120462d31207c0a7c20522d35207c2067657442726f6b65724b506f6f6c2829206c69766520525043207c20e29aa0204a3220e794a82074726561737572795f736e617073686f7420356d696e207374616c652c204a3220e887aae6a08720352d32205375622d3120e694b9e596842e2061636365707461626c652064656665722e207c0a7c20522d36207c2072656772657373696f6e207465737420342d70617468207c20e29aa0204a3220736d6f6b65207465737420352070617468205041535320e4bd8620636f6d6d697420e697a020746573742066696c6520e2809420e8a78120462d32207c0a0a232320462d313a205f657865637574654865646765207265747279206c6f6f7020e6b2a1e68ea5206765744661696c6f766572436861696e0a0a4a322073686970206765744661696c6f766572436861696e2068656c7065722c20e4bd8620605f65786563757465486564676560202874726164652d70726f746f636f6c2d66696c7465722e6a732920e4bb8de58d95e6aca120706c6163654f726465722e207072696d617279206661696c20e2869220656d69742068656467655f6661696c656420e2869220e7bb93e69d9f2e20e4b88d2074726967676572206661696c6f7665722e0a0a4e5754204e31392e3639207370656320e58699207265747279206c6f6f703a0a6060606a6176617363726970740a6c6574206163636f756e74203d202e2e2e73656c65637448656467654163636f756e74282e2e2e293b0a636f6e7374206661696c6f766572436861696e203d206177616974206765744661696c6f766572436861696e286163636f756e742e65786368616e6765293b0a6c657420617474656d707473203d20303b0a7768696c6520287472756529207b0a2020636f6e737420726573756c74203d20617761697420706c6163654f72646572287b2e2e2e7d293b0a202069662028726573756c742e6f6b2920627265616b3b0a2020617474656d7074732b2b3b0a202069662028617474656d707473203e3d2033207c7c206661696c6f766572436861696e2e6c656e677468203d3d3d20302920627265616b3b0a2020636f6e7374206e657874436578203d206661696c6f766572436861696e2e736869667428293b0a20206163636f756e74203d206765744163636f756e7442794e616d65286e657874436578293b0a2020636f6e736f6c652e6c6f6728605b68656467652d726f757465725d20247b726573756c742e6572726f727d2c2066616c6c6261636b20746f20247b6e6578744365787d60293b0a7d0a6060600a0a2a2a4a3220e68ea520352d32207368697020e697b6e4b880e5b9b6e8a1a5e8bf99207e3135204c4f432a2a202866696c6520e5908ce6a0b72074726164652d70726f746f636f6c2d66696c7465722e6a732c2073636f7065206e6561726279292e20e4b88de5bc80e696b020636f6d6d69742e0a0a232320462d323a2072656772657373696f6e2074657374206068656467655f726f757465725f6361706162696c6974795f726f7574696e672e746573742e6d6a73600a0a4e5754204e31392e363920522d36207370656320e8a681e6b18220342d706174682072656772657373696f6e2028736d616c6c5f6f72646572202f206b5f666c6f6f72202f206175746f5f653265202f206661696c6f766572292e204a3220736d6f6b652074657374205041535320e4bd86206e6f7420636f6d6d69747465642e0a0ae7ae80e58d95203420636173652073746174696320746573742028e4b88de79c9f20666972652068656467652c20e58faae6b58b2073656c65637448656467654163636f756e742072657475726e20726f757465293a0a6060606a6176617363726970740a696d706f7274207b2073656c65637448656467654163636f756e74207d2066726f6d20272e2e2f2e2e2f2e2e2f7372632f73657276696365732f68656467652d726f757465722e6a73273b0a0a2f2f20506861736520313a20726f7574657220656e61626c65642c206d6f64653d70726f64756374696f6e2c206e6f726d616c20706f6f6c20e286922064656661756c7420286279626974290a636f6e7374207231203d2061776169742073656c65637448656467654163636f756e74287b206f7264657256616c7565557364743a203130302c20736964653a202753454c4c27207d293b0a6173736572742872312e726f757465203d3d3d202764656661756c7427293b0a0a2f2f20506861736520323a20736d616c6c206f7264657220282433203c2024352920e28692206b75636f696e0a636f6e7374207232203d2061776169742073656c65637448656467654163636f756e74287b206f7264657256616c7565557364743a20332c20736964653a202753454c4c27207d293b0a6173736572742872322e726f757465203d3d3d2027736d616c6c5f6f7264657227293b0a0a2f2f20506861736520333a206175746f5f653265206d6f646520e286922067617465696f0a636f6e7374207233203d2061776169742073656c65637448656467654163636f756e74287b206d6f64653a20276175746f5f653265272c206f7264657256616c7565557364743a20313030207d293b0a6173736572742872332e726f757465203d3d3d20276175746f5f65326527293b0a0a2f2f20506861736520343a2063616c6c6572206f7665727269646520e28692207072656665727265644365780a636f6e7374207234203d2061776169742073656c65637448656467654163636f756e74287b207072656665727265644365783a20276b75636f696e272c206f7264657256616c7565557364743a20313030207d293b0a6173736572742872342e726f757465203d3d3d202763616c6c65725f6f7665727269646527293b0a6060600a0a4a3220e68ea520352d32207368697020e697b6e4b880e5b9b62061646420287e3530204c4f43292e20e6b58be8af95206672616d65776f726b2073636f70652c204a3220736869702e0a0a2323204a3220352d3220616c61726d206669726520e68ea5e7bbad20e280942061636b20e7ab8b207368697020e4b88de7ad8920284f776e657220e68f90e9809fe992a6e5ae9a290a0a4a322023353537206d61696e2d6c696e653a20e7ab8b206669726520506861736520352d32205375622d3120284b415320706f6f6c206d6f6e69746f72292e204e57542061636b2e202a2a4a3220e5908c20352d3220636f6d6d697420e590ab2a2a3a0a2d20462d31205f657865637574654865646765206661696c6f766572207265747279206c6f6f7020287e3135204c4f43290a2d20462d322068656467655f726f757465725f6361706162696c6974795f726f7574696e672e746573742e6d6a7320287e3530204c4f43290a2d20352d32205375622d31204b415320706f6f6c206d6f6e69746f72202b2032206b6e6f6220287e3230204c4f43290a2d20352d32205375622d322043455820696e76656e746f727920736e617073686f74202b2031206b6e6f6220287e3330204c4f43290a2d20352d32205375622d33204f776e6572206e6f746966792070617468202b207468726f74746c655f6c6f67202b2076313237206d6967726174696f6e20287e3135204c4f43290a2d20352d32205375622d34207472656e6420656e64706f696e7420286f7074696f6e616c2c20646566657220746f20706f6c697368290a0a7e313330204c4f43202b20322053514c206d6967726174696f6e732e2045544120322068722028706572204a32204e31392e373020657374696d617465292e0a0a2323204e575420e68ea5e4b88be69da50a0a2d205374616e64627920726576696577657220352d32202b20462d312f462d320a2d20e8b5b720352d3520737472657373207465737420617263686974656374207370656320e5b9b6e8a18c2028352d3420e5b7b22062726f6164636173742c20352d3520756e626c6f636b656420627920352d322e352073686970290a0ae28094204e575420352f32302031333a3235202b303720285554432030363a32352920e28094207265766965776572206d6f64652c20506861736520352d322e3520636c6f7365202b20352d35206e657874