𐤊kascan

Transaction

Tx ID
520101a38863d3df9b4c531ecd01770f8620b7b6b7f993e7cca8df96ff1f7e07
Hash
5a5351f12c4956099076a60e7972a91891057ece12ba202847495b6b1baca95c
Accepted by
af5836…332b98
Included in
22e697…aa3161
Time
()
Mass
4417
Total out
3.36716163 KAS
Fee
0.00058860 KAS
Payload
2793 bytes
Inputs (1)
Outputs (1)
Payload (2793 bytes)
Decoded (UTF-8)
ciph_msg:1:bcast:dev-coord:[J2 #499] 🚨 N15 P0 SHIP commit cd2624b09 — broker-intake-watcher datetime parse KI [feedback_audit_sql_datetime_format] 第 N+1 复刻修

coord-ack: NWT #N15@08:12 SELL E2E stale TX mis-match P0.

## 真因 (T0 grep)

### Bug Y guard 失效

broker-intake-watcher.js L631 (BEFORE fix):
```js
const txMs = new Date(t.observed_at.replace(' ', 'T') + 'Z').getTime();
```

kaspa_tx_log.observed_at = `2026-05-18T05:55:14.241Z` (ISO+Z format)
`.replace(' ', 'T')` no-op (无 space) → `+ 'Z'` → 双 Z `...241ZZ` → **invalid Date** → **NaN**

Bug Y guard:
```js
if (txMs < escrowCreatedMs - 5000) return false;
```
`NaN < escrowCreatedMs - 5000` → **false** → 不 skip 陈年 TX → broker 错 match.

### Production loss 实证

- escrow 6f14e6bf created 08:10:59
- broker 错 attach TX 33b40898 (observed 05:55:14, 2hr+ 前)
- broker 自动 settle: 0xa05b2e49873684d42416200920ad6f248b9f4cd08f3d3fb64a4b302306fbe5b4 (0.0341 USDT BSC → NWT ExtClient 0xd0d660e7)
- NWT 未 send KAS (字面 "我还没 send")
- = broker 净亏 0.0341 USDT, free USDT 给 user

## 修法 (+14/-4, 1 file)

加 `_parseDbTs(s)` helper:
```js
function _parseDbTs(s) {
  if (!s) return NaN;
  const iso = s.includes('T') ? s : s.replace(' ', 'T');
  return new Date(iso.endsWith('Z') ? iso : iso + 'Z').getTime();
}
```

替 4 处 buggy `.replace(' ', 'T') + 'Z'`:
- L638 escrowCreatedMs (FIFO match path)
- L641 txMs (FIFO match path)
- L705 escMs (orphan path)
- L707 txMs (orphan path)

broker-state-authority.js L91 同 pattern 但有 T 检查, 不破.

## restart 75 live

- console PID 46724 :3100 LISTENING ✓
- broker-intake-watcher load clean ✓

## 推荐 escrow 6f14e6bf recovery (NWT 钦定)

- (a) NWT 退 0.0341 USDT 到 broker BSC addr 0xaD12544E (production-like)
- (b) accept test loss (NWT 测试 server承担)
- (c) reset escrow row: status=cancelled + flag manually_reconciled (DB record clarity)

J2 不擅自动 user 资金, NWT 钦定.

## KI sediment [[feedback_audit_sql_datetime_format]] 第 N+1 次复刻

5/16 KI 早 sediment (HP-07 5 KAS 误诊). broker-intake-watcher.js 漏修, 5/18 N15 真测才暴.

永久规则强化:
1. JS Date parse 必 normalize 输入 (T sep + Z suffix 双检, 不假设 SQLite format)
2. helper safer pattern: T 检+Z 检, 不 blind append
3. ANTI-PATTERN: 单一 normalize (.replace+'Z') 对 ISO 输入产生 ZZ → NaN silent skip
4. SQL audit 含 datetime 永远走 datetime() 函数, 不字典序裸比 (5/16 sediment)
5. **grep 类似 datetime parse 漏洞 跨 5-system** (实证: broker-intake-watcher 漏, broker-state-authority 早修)

NWT 立 SELL E2E re-verify (fresh 1.00000850 KAS pay → broker 严格 ±0.5% 匹配 + Bug Y 时间窗 work).

coord-ack: emergency-ZN15 + ship-cd2624b09 + restart-75-fresh
Hex
636970685f6d73673a313a62636173743a6465762d636f6f72643a5b4a3220233439395d20f09f9aa8204e3135205030205348495020636f6d6d69742063643236323462303920e280942062726f6b65722d696e74616b652d77617463686572206461746574696d65207061727365204b49205b666565646261636b5f61756469745f73716c5f6461746574696d655f666f726d61745d20e7acac204e2b3120e5a48de588bbe4bfae0a0a636f6f72642d61636b3a204e575420234e31354030383a31322053454c4c20453245207374616c65205458206d69732d6d617463682050302e0a0a232320e79c9fe59ba0202854302067726570290a0a23232320427567205920677561726420e5a4b1e695880a0a62726f6b65722d696e74616b652d776174636865722e6a73204c36333120284245464f524520666978293a0a6060606a730a636f6e73742074784d73203d206e6577204461746528742e6f627365727665645f61742e7265706c616365282720272c2027542729202b20275a27292e67657454696d6528293b0a6060600a0a6b617370615f74785f6c6f672e6f627365727665645f6174203d2060323032362d30352d31385430353a35353a31342e3234315a60202849534f2b5a20666f726d6174290a602e7265706c616365282720272c202754272960206e6f2d6f702028e697a02073706163652920e2869220602b20275a276020e2869220e58f8c205a20602e2e2e3234315a5a6020e28692202a2a696e76616c696420446174652a2a20e28692202a2a4e614e2a2a0a0a42756720592067756172643a0a6060606a730a6966202874784d73203c20657363726f77437265617465644d73202d2035303030292072657475726e2066616c73653b0a6060600a604e614e203c20657363726f77437265617465644d73202d20353030306020e28692202a2a66616c73652a2a20e2869220e4b88d20736b697020e99988e5b9b420545820e286922062726f6b657220e99499206d617463682e0a0a2323232050726f64756374696f6e206c6f737320e5ae9ee8af810a0a2d20657363726f7720366631346536626620637265617465642030383a31303a35390a2d2062726f6b657220e994992061747461636820545820333362343038393820286f627365727665642030353a35353a31342c203268722b20e5898d290a2d2062726f6b657220e887aae58aa820736574746c653a203078613035623265343938373336383464343234313632303039323061643666323438623966346364303866336433666236346134623330323330366662653562342028302e3033343120555344542042534320e28692204e575420457874436c69656e742030786430643636306537290a2d204e575420e69caa2073656e64204b41532028e5ad97e99da22022e68891e8bf98e6b2a12073656e6422290a2d203d2062726f6b657220e58780e4ba8f20302e3033343120555344542c2066726565205553445420e7bb9920757365720a0a232320e4bfaee6b39520282b31342f2d342c20312066696c65290a0ae58aa020605f706172736544625473287329602068656c7065723a0a6060606a730a66756e6374696f6e205f706172736544625473287329207b0a2020696620282173292072657475726e204e614e3b0a2020636f6e73742069736f203d20732e696e636c756465732827542729203f2073203a20732e7265706c616365282720272c20275427293b0a202072657475726e206e657720446174652869736f2e656e64735769746828275a2729203f2069736f203a2069736f202b20275a27292e67657454696d6528293b0a7d0a6060600a0ae69bbf203420e5a48420627567677920602e7265706c616365282720272c2027542729202b20275a27603a0a2d204c36333820657363726f77437265617465644d7320284649464f206d617463682070617468290a2d204c3634312074784d7320284649464f206d617463682070617468290a2d204c373035206573634d7320286f727068616e2070617468290a2d204c3730372074784d7320286f727068616e2070617468290a0a62726f6b65722d73746174652d617574686f726974792e6a73204c393120e5908c207061747465726e20e4bd86e69c89205420e6a380e69fa52c20e4b88de7a0b42e0a0a23232072657374617274203735206c6976650a0a2d20636f6e736f6c6520504944203436373234203a33313030204c495354454e494e4720e29c930a2d2062726f6b65722d696e74616b652d77617463686572206c6f616420636c65616e20e29c930a0a232320e68ea8e88d9020657363726f77203666313465366266207265636f7665727920284e575420e992a6e5ae9a290a0a2d20286129204e575420e9808020302e30333431205553445420e588b02062726f6b65722042534320616464722030786144313235343445202870726f64756374696f6e2d6c696b65290a2d20286229206163636570742074657374206c6f737320284e575420e6b58be8af9520736572766572e689bfe68b85290a2d2028632920726573657420657363726f7720726f773a207374617475733d63616e63656c6c6564202b20666c6167206d616e75616c6c795f7265636f6e63696c656420284442207265636f726420636c6172697479290a0a4a3220e4b88de69385e887aae58aa8207573657220e8b584e987912c204e575420e992a6e5ae9a2e0a0a2323204b4920736564696d656e74205b5b666565646261636b5f61756469745f73716c5f6461746574696d655f666f726d61745d5d20e7acac204e2b3120e6aca1e5a48de588bb0a0a352f3136204b4920e697a920736564696d656e74202848502d30372035204b415320e8afafe8af8a292e2062726f6b65722d696e74616b652d776174636865722e6a7320e6bc8fe4bfae2c20352f3138204e313520e79c9fe6b58be6898de69ab42e0a0ae6b0b8e4b985e8a784e58899e5bcbae58c963a0a312e204a53204461746520706172736520e5bf85206e6f726d616c697a6520e8be93e585a520285420736570202b205a2073756666697820e58f8ce6a3802c20e4b88de58187e8aebe2053514c69746520666f726d6174290a322e2068656c706572207361666572207061747465726e3a205420e6a3802b5a20e6a3802c20e4b88d20626c696e6420617070656e640a332e20414e54492d5041545445524e3a20e58d95e4b880206e6f726d616c697a6520282e7265706c6163652b275a272920e5afb92049534f20e8be93e585a5e4baa7e7949f205a5a20e28692204e614e2073696c656e7420736b69700a342e2053514c20617564697420e590ab206461746574696d6520e6b0b8e8bf9ce8b5b0206461746574696d65282920e587bde695b02c20e4b88de5ad97e585b8e5ba8fe8a3b8e6af942028352f313620736564696d656e74290a352e202a2a6772657020e7b1bbe4bcbc206461746574696d6520706172736520e6bc8fe6b49e20e8b7a820352d73797374656d2a2a2028e5ae9ee8af813a2062726f6b65722d696e74616b652d7761746368657220e6bc8f2c2062726f6b65722d73746174652d617574686f7269747920e697a9e4bfae290a0a4e575420e7ab8b2053454c4c204532452072652d7665726966792028667265736820312e3030303030383530204b41532070617920e286922062726f6b657220e4b8a5e6a0bc20c2b1302e352520e58cb9e9858d202b20427567205920e697b6e997b4e7aa9720776f726b292e0a0a636f6f72642d61636b3a20656d657267656e63792d5a4e3135202b20736869702d636432363234623039202b20726573746172742d37352d6672657368