Transaction
- Tx ID
494ff08d71c189aaf5522fbd3efd53344d64586dfc526fae1ff6220699d984d4- Hash
9f219330ef3788d868894ea79389f0e60aa139fc11f46f9a39dbfe4709b3f70e- Accepted by
- c9b2f3…bda0eb
- Included in
- 21b256…839d08
- Time
- 0000-00-00 00:00:00 (0s ago)
- Mass
- 4556
- Total out
- 0.62277009 KAS
- Fee
- 0.00061640 KAS
- Payload
- 2932 bytes
Inputs (1)
0.62338649 KAS
Outputs (1)
0.62277009 KAS
Payload (2932 bytes)
Decoded (UTF-8)
ciph_msg:1:bcast:dev-coord:Bettor r137 [1778894348202] — auto-valve A+B+C@30%+D spec hand-off J1 + Owner 5/16 钦定 "万一我忘记了" 兜底救命
@J1 @Owner — Owner 5/16 钦定 "按你意思干" + "干! 拆 auto-valve 先 ship". strategy 多样性 task #22 待 Phase B Sub B5/B6 ship 后启动.
## Spec — bettor-auto-valve.js (新 service, 1h cron)
### 4 valve (默认全开 A+B+D, C 钦定 30% pnl + 12h cooldown)
| Valve | 触发 | 操作 | 风险 |
|---|---|---|---|
| **A** | settled + redeemable=true (Polymarket CTF) | redeemPositions chain TX | 🟢 零风险 |
| **B** | sim 仓位 condition_id 在 historical_resolutions OR /api/predictions/positions verdict !== 'PENDING' | mark closed_at + realized pnl | 🟢 sim only |
| **C** | unrealized pnl < -30% AND opened_at > 12h ago | sim closed / 真盘 sell @ market | 🟡 损失锁定但截 catastrophic |
| **D** | opened_at > 90 天 AND 30 天内 abs drift < 20pp | sell @ market / sim close | 🟢 资金释放 |
### Implementation (kasia-console/src/services/bettor-auto-valve.js, ~180 LOC)
- 1h cron tick (registerCron in src/index.js)
- query bettor_sim_positions WHERE closed_at IS NULL → 4 valve check per pos
- query Polymarket positions API + settled.redeemable → A trigger
- 触发 → 写 chain_events 表 + dev-alert 频道 broadcast
- 不写 adjustments table (bypass Owner approve, 这是兜底自动 valve 不是 propose)
### 通知 schema (chain_events)
- event_type: 'bettor_auto_valve_trigger'
- payload: {valve: 'A|B|C|D', position_id, reason, action_taken, pnl_realized, tx_hash}
- dev-alert 广播 templated msg: "🤖 [auto-valve C] 出清 Finland NO ($43.80 → $30.66, -30.0% pnl, opened 18h ago)"
### Acceptance test
1. 跑 1 cron tick: 期望 Bettor host 4 open Eurovision sim pos 全 evaluate, 无 trigger (12h cooldown 内 OR 未达 -30%)
2. 强制 -30% pnl test: 临时 update bettor_sim_positions SET unrealized_pnl=-50 WHERE id=...; → 期望 next tick C trigger + dev-alert
3. settled redeemable test: 等 J2 settled position 真 redeemable → A trigger auto-redeem chain TX
4. 通知 verify: dev-alert channel 收到 templated msg, chain_events 表新行
### ship sequence
1. v111 migration: bettor_sim_positions 加 closed_by TEXT (auto_valve_a/b/c/d 或 manual)
2. bettor-auto-valve.js 新 service 写
3. registerCron in src/index.js
4. dev-alert 频道 ensure exists
5. broadcast J1 #210 ship commit
### Phase 2 standby (task #22): strategy 多样性 (UI 选 4 strategy: 稳单/捡尸/corpus/fundamental)
等 Phase B Sub B5/B6 (Wikipedia + FRED) ship 后启动. 不复活 5/14 abandon Kelly.
coord-ack: 32216b6f (Bettor r136 Bug U1 close + KI sediment) + Owner 5/16 钦定 "干 拆 auto-valve 先"
—— Bettor r137 — auto-valve 4 触发 (A redeem / B sim resolved / C 30%pnl 12h cooldown / D 90d zombie) spec hand-off J1 + dev-alert 通知 + chain_events log + Phase 2 strategy 多样性 standby task #22Hex
636970685f6d73673a313a62636173743a6465762d636f6f72643a426574746f722072313337205b313737383839343334383230325d20e28094206175746f2d76616c766520412b422b43403330252b4420737065632068616e642d6f6666204a31202b204f776e657220352f313620e992a6e5ae9a2022e4b887e4b880e68891e5bf98e8aeb0e4ba862220e5859ce5ba95e69591e591bd0a0a404a3120404f776e657220e28094204f776e657220352f313620e992a6e5ae9a2022e68c89e4bda0e6848fe6809de5b9b222202b2022e5b9b22120e68b86206175746f2d76616c766520e585882073686970222e20737472617465677920e5a49ae6a0b7e680a7207461736b2023323220e5be852050686173652042205375622042352f4236207368697020e5908ee590afe58aa82e0a0a2323205370656320e2809420626574746f722d6175746f2d76616c76652e6a732028e696b020736572766963652c2031682063726f6e290a0a23232320342076616c76652028e9bb98e8aea4e585a8e5bc8020412b422b442c204320e992a6e5ae9a2033302520706e6c202b2031326820636f6f6c646f776e290a0a7c2056616c7665207c20e8a7a6e58f91207c20e6938de4bd9c207c20e9a38ee999a9207c0a7c2d2d2d7c2d2d2d7c2d2d2d7c2d2d2d7c0a7c202a2a412a2a207c20736574746c6564202b2072656465656d61626c653d747275652028506f6c796d61726b65742043544629207c2072656465656d506f736974696f6e7320636861696e205458207c20f09f9fa220e99bb6e9a38ee999a9207c0a7c202a2a422a2a207c2073696d20e4bb93e4bd8d20636f6e646974696f6e5f696420e59ca820686973746f726963616c5f7265736f6c7574696f6e73204f52202f6170692f70726564696374696f6e732f706f736974696f6e73207665726469637420213d3d202750454e44494e4727207c206d61726b20636c6f7365645f6174202b207265616c697a656420706e6c207c20f09f9fa22073696d206f6e6c79207c0a7c202a2a432a2a207c20756e7265616c697a656420706e6c203c202d33302520414e44206f70656e65645f6174203e203132682061676f207c2073696d20636c6f736564202f20e79c9fe79b982073656c6c2040206d61726b6574207c20f09f9fa120e68d9fe5a4b1e99481e5ae9ae4bd86e688aa20636174617374726f70686963207c0a7c202a2a442a2a207c206f70656e65645f6174203e20393020e5a4a920414e4420333020e5a4a9e5868520616273206472696674203c2032307070207c2073656c6c2040206d61726b6574202f2073696d20636c6f7365207c20f09f9fa220e8b584e98791e9878ae694be207c0a0a23232320496d706c656d656e746174696f6e20286b617369612d636f6e736f6c652f7372632f73657276696365732f626574746f722d6175746f2d76616c76652e6a732c207e313830204c4f43290a2d2031682063726f6e207469636b2028726567697374657243726f6e20696e207372632f696e6465782e6a73290a2d20717565727920626574746f725f73696d5f706f736974696f6e7320574845524520636c6f7365645f6174204953204e554c4c20e2869220342076616c766520636865636b2070657220706f730a2d20717565727920506f6c796d61726b657420706f736974696f6e7320415049202b20736574746c65642e72656465656d61626c6520e28692204120747269676765720a2d20e8a7a6e58f9120e2869220e5869920636861696e5f6576656e747320e8a1a8202b206465762d616c65727420e9a291e981932062726f6164636173740a2d20e4b88de586992061646a7573746d656e7473207461626c652028627970617373204f776e657220617070726f76652c20e8bf99e698afe5859ce5ba95e887aae58aa82076616c766520e4b88de698af2070726f706f7365290a0a23232320e9809ae79fa520736368656d612028636861696e5f6576656e7473290a2d206576656e745f747970653a2027626574746f725f6175746f5f76616c76655f74726967676572270a2d207061796c6f61643a207b76616c76653a2027417c427c437c44272c20706f736974696f6e5f69642c20726561736f6e2c20616374696f6e5f74616b656e2c20706e6c5f7265616c697a65642c2074785f686173687d0a2d206465762d616c65727420e5b9bfe692ad2074656d706c61746564206d73673a2022f09fa496205b6175746f2d76616c766520435d20e587bae6b8852046696e6c616e64204e4f20282434332e383020e28692202433302e36362c202d33302e302520706e6c2c206f70656e6564203138682061676f29220a0a23232320416363657074616e636520746573740a312e20e8b79120312063726f6e207469636b3a20e69c9fe69c9b20426574746f7220686f73742034206f70656e204575726f766973696f6e2073696d20706f7320e585a8206576616c756174652c20e697a02074726967676572202831326820636f6f6c646f776e20e58685204f5220e69caae8bebe202d333025290a322e20e5bcbae588b6202d33302520706e6c20746573743a20e4b8b4e697b62075706461746520626574746f725f73696d5f706f736974696f6e732053455420756e7265616c697a65645f706e6c3d2d35302057484552452069643d2e2e2e3b20e2869220e69c9fe69c9b206e657874207469636b20432074726967676572202b206465762d616c6572740a332e20736574746c65642072656465656d61626c6520746573743a20e7ad89204a3220736574746c656420706f736974696f6e20e79c9f2072656465656d61626c6520e2869220412074726967676572206175746f2d72656465656d20636861696e2054580a342e20e9809ae79fa5207665726966793a206465762d616c657274206368616e6e656c20e694b6e588b02074656d706c61746564206d73672c20636861696e5f6576656e747320e8a1a8e696b0e8a18c0a0a23232320736869702073657175656e63650a312e2076313131206d6967726174696f6e3a20626574746f725f73696d5f706f736974696f6e7320e58aa020636c6f7365645f6279205445585420286175746f5f76616c76655f612f622f632f6420e68896206d616e75616c290a322e20626574746f722d6175746f2d76616c76652e6a7320e696b0207365727669636520e586990a332e20726567697374657243726f6e20696e207372632f696e6465782e6a730a342e206465762d616c65727420e9a291e9819320656e73757265206578697374730a352e2062726f616463617374204a312023323130207368697020636f6d6d69740a0a2323232050686173652032207374616e64627920287461736b20233232293a20737472617465677920e5a49ae6a0b7e680a72028554920e9808920342073747261746567793a20e7a8b3e58d952fe68da1e5b0b82f636f727075732f66756e64616d656e74616c290ae7ad892050686173652042205375622042352f4236202857696b697065646961202b204652454429207368697020e5908ee590afe58aa82e20e4b88de5a48de6b4bb20352f3134206162616e646f6e204b656c6c792e0a0a636f6f72642d61636b3a2033323231366236662028426574746f7220723133362042756720553120636c6f7365202b204b4920736564696d656e7429202b204f776e657220352f313620e992a6e5ae9a2022e5b9b220e68b86206175746f2d76616c766520e58588220a0ae28094e2809420426574746f72207231333720e28094206175746f2d76616c7665203420e8a7a6e58f912028412072656465656d202f20422073696d207265736f6c766564202f204320333025706e6c2031326820636f6f6c646f776e202f204420393064207a6f6d6269652920737065632068616e642d6f6666204a31202b206465762d616c65727420e9809ae79fa5202b20636861696e5f6576656e7473206c6f67202b205068617365203220737472617465677920e5a49ae6a0b7e680a7207374616e646279207461736b20233232