From aa48fd69432ecba7be306481425d464242dd935b Mon Sep 17 00:00:00 2001 From: Rogee Date: Fri, 21 Aug 2026 14:42:38 +0800 Subject: [PATCH] HH-415: preserve binary frame and baseline semantics Co-authored-by: multica-agent --- artifacts/m0-events.sample.jsonl | 152 +++++++++++++++---------------- artifacts/m0-report.json | 87 ++++++++++++++++-- docs/m0-spike.md | 4 +- scripts/m0-spike.mjs | 17 ++-- test/m0-spike.test.mjs | 27 ++++++ 5 files changed, 195 insertions(+), 92 deletions(-) diff --git a/artifacts/m0-events.sample.jsonl b/artifacts/m0-events.sample.jsonl index 3612384..3808de4 100644 --- a/artifacts/m0-events.sample.jsonl +++ b/artifacts/m0-events.sample.jsonl @@ -1,76 +1,76 @@ -{"schema_version":"1.0","session_id":"m0-27579b66-06dc-41af-bdf1-903e108f9909","target_id":"8F9769D4DEDE977DC076F722088FC829","kind":"http_response","request_id":"587271.2","response":{"url":"http://127.0.0.1:40745/favicon.ico","status":200,"protocol":"http/1.1","mime_type":"text/html","headers":{"connection":"close","content-length":"38","content-type":"text/html","date":"Fri, 21 Aug 2026 05:29:19 GMT"},"cache":{"state":"unknown"}}} -{"schema_version":"1.0","session_id":"m0-27579b66-06dc-41af-bdf1-903e108f9909","target_id":"8F9769D4DEDE977DC076F722088FC829","kind":"http_finished","request_id":"587271.2","encoded_bytes":158} -{"schema_version":"1.0","session_id":"m0-27579b66-06dc-41af-bdf1-903e108f9909","target_id":"8F9769D4DEDE977DC076F722088FC829","kind":"http_request","request_id":"587271.3","at":1787290159.271732,"request":{"method":"GET","url":"http://127.0.0.1:40745/ok","headers":{"accept-language":"en-US,en;q=0.9","authorization":"[REDACTED]","cookie":"[REDACTED]","referer":"[REDACTED]","user-agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/148.0.0.0 Safari/537.36"}}} -{"schema_version":"1.0","session_id":"m0-27579b66-06dc-41af-bdf1-903e108f9909","target_id":"8F9769D4DEDE977DC076F722088FC829","kind":"http_request_headers","request_id":"587271.3","headers":{"accept":"*/*","accept-encoding":"gzip, deflate, br, zstd","accept-language":"en-US,en;q=0.9","authorization":"[REDACTED]","connection":"keep-alive","cookie":"[REDACTED]","host":"127.0.0.1:40745","sec-fetch-dest":"empty","sec-fetch-mode":"cors","sec-fetch-site":"same-origin","user-agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/148.0.0.0 Safari/537.36"}} -{"schema_version":"1.0","session_id":"m0-27579b66-06dc-41af-bdf1-903e108f9909","target_id":"8F9769D4DEDE977DC076F722088FC829","kind":"http_response_headers","request_id":"587271.3","status":200,"headers":{"access-control-allow-headers":"authorization","access-control-allow-origin":"*","connection":"close","content-length":"11","content-type":"application/json","date":"Fri, 21 Aug 2026 05:29:19 GMT","set-cookie":"[REDACTED]"}} -{"schema_version":"1.0","session_id":"m0-27579b66-06dc-41af-bdf1-903e108f9909","target_id":"8F9769D4DEDE977DC076F722088FC829","kind":"http_response","request_id":"587271.3","response":{"url":"http://127.0.0.1:40745/ok","status":200,"protocol":"http/1.1","mime_type":"application/json","headers":{"access-control-allow-headers":"authorization","access-control-allow-origin":"*","connection":"close","content-length":"11","content-type":"application/json","date":"Fri, 21 Aug 2026 05:29:19 GMT"},"cache":{"state":"miss","source":"network"}}} -{"schema_version":"1.0","session_id":"m0-27579b66-06dc-41af-bdf1-903e108f9909","target_id":"8F9769D4DEDE977DC076F722088FC829","kind":"http_finished","request_id":"587271.3","encoded_bytes":291} -{"schema_version":"1.0","session_id":"m0-27579b66-06dc-41af-bdf1-903e108f9909","target_id":"8F9769D4DEDE977DC076F722088FC829","kind":"http_request","request_id":"587271.4","at":1787290159.276499,"request":{"method":"GET","url":"http://127.0.0.1:40745/secret","headers":{"accept-language":"en-US,en;q=0.9","authorization":"[REDACTED]","cookie":"[REDACTED]","referer":"[REDACTED]","user-agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/148.0.0.0 Safari/537.36"}}} -{"schema_version":"1.0","session_id":"m0-27579b66-06dc-41af-bdf1-903e108f9909","target_id":"8F9769D4DEDE977DC076F722088FC829","kind":"http_request_headers","request_id":"587271.4","headers":{"accept":"*/*","accept-encoding":"gzip, deflate, br, zstd","accept-language":"en-US,en;q=0.9","authorization":"[REDACTED]","connection":"keep-alive","cookie":"[REDACTED]","host":"127.0.0.1:40745","sec-fetch-dest":"empty","sec-fetch-mode":"cors","sec-fetch-site":"same-origin","user-agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/148.0.0.0 Safari/537.36"}} -{"schema_version":"1.0","session_id":"m0-27579b66-06dc-41af-bdf1-903e108f9909","target_id":"8F9769D4DEDE977DC076F722088FC829","kind":"http_response_headers","request_id":"587271.4","status":200,"headers":{"access-control-allow-headers":"authorization","access-control-allow-origin":"*","connection":"close","content-length":"49","content-type":"application/json","date":"Fri, 21 Aug 2026 05:29:19 GMT"}} -{"schema_version":"1.0","session_id":"m0-27579b66-06dc-41af-bdf1-903e108f9909","target_id":"8F9769D4DEDE977DC076F722088FC829","kind":"http_response","request_id":"587271.4","response":{"url":"http://127.0.0.1:40745/secret","status":200,"protocol":"http/1.1","mime_type":"application/json","headers":{"access-control-allow-headers":"authorization","access-control-allow-origin":"*","connection":"close","content-length":"49","content-type":"application/json","date":"Fri, 21 Aug 2026 05:29:19 GMT"},"cache":{"state":"miss","source":"network"}}} -{"schema_version":"1.0","session_id":"m0-27579b66-06dc-41af-bdf1-903e108f9909","target_id":"8F9769D4DEDE977DC076F722088FC829","kind":"http_finished","request_id":"587271.4","encoded_bytes":253} -{"schema_version":"1.0","session_id":"m0-27579b66-06dc-41af-bdf1-903e108f9909","target_id":"8F9769D4DEDE977DC076F722088FC829","kind":"http_request","request_id":"587271.5","at":1787290159.281042,"request":{"method":"GET","url":"http://127.0.0.1:40745/large","headers":{"accept-language":"en-US,en;q=0.9","authorization":"[REDACTED]","cookie":"[REDACTED]","referer":"[REDACTED]","user-agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/148.0.0.0 Safari/537.36"}}} -{"schema_version":"1.0","session_id":"m0-27579b66-06dc-41af-bdf1-903e108f9909","target_id":"8F9769D4DEDE977DC076F722088FC829","kind":"http_request_headers","request_id":"587271.5","headers":{"accept":"*/*","accept-encoding":"gzip, deflate, br, zstd","accept-language":"en-US,en;q=0.9","authorization":"[REDACTED]","connection":"keep-alive","cookie":"[REDACTED]","host":"127.0.0.1:40745","sec-fetch-dest":"empty","sec-fetch-mode":"cors","sec-fetch-site":"same-origin","user-agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/148.0.0.0 Safari/537.36"}} -{"schema_version":"1.0","session_id":"m0-27579b66-06dc-41af-bdf1-903e108f9909","target_id":"8F9769D4DEDE977DC076F722088FC829","kind":"http_response_headers","request_id":"587271.5","status":200,"headers":{"access-control-allow-headers":"authorization","access-control-allow-origin":"*","connection":"close","content-length":"2048","content-type":"text/plain","date":"Fri, 21 Aug 2026 05:29:19 GMT"}} -{"schema_version":"1.0","session_id":"m0-27579b66-06dc-41af-bdf1-903e108f9909","target_id":"8F9769D4DEDE977DC076F722088FC829","kind":"http_response","request_id":"587271.5","response":{"url":"http://127.0.0.1:40745/large","status":200,"protocol":"http/1.1","mime_type":"text/plain","headers":{"access-control-allow-headers":"authorization","access-control-allow-origin":"*","connection":"close","content-length":"2048","content-type":"text/plain","date":"Fri, 21 Aug 2026 05:29:19 GMT"},"cache":{"state":"miss","source":"network"}}} -{"schema_version":"1.0","session_id":"m0-27579b66-06dc-41af-bdf1-903e108f9909","target_id":"8F9769D4DEDE977DC076F722088FC829","kind":"http_finished","request_id":"587271.5","encoded_bytes":2248} -{"schema_version":"1.0","session_id":"m0-27579b66-06dc-41af-bdf1-903e108f9909","target_id":"8F9769D4DEDE977DC076F722088FC829","kind":"http_request","request_id":"587271.6","at":1787290159.284519,"request":{"method":"GET","url":"http://127.0.0.1:40745/binary","headers":{"accept-language":"en-US,en;q=0.9","authorization":"[REDACTED]","cookie":"[REDACTED]","referer":"[REDACTED]","user-agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/148.0.0.0 Safari/537.36"}}} -{"schema_version":"1.0","session_id":"m0-27579b66-06dc-41af-bdf1-903e108f9909","target_id":"8F9769D4DEDE977DC076F722088FC829","kind":"http_request_headers","request_id":"587271.6","headers":{"accept":"*/*","accept-encoding":"gzip, deflate, br, zstd","accept-language":"en-US,en;q=0.9","authorization":"[REDACTED]","connection":"keep-alive","cookie":"[REDACTED]","host":"127.0.0.1:40745","sec-fetch-dest":"empty","sec-fetch-mode":"cors","sec-fetch-site":"same-origin","user-agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/148.0.0.0 Safari/537.36"}} -{"schema_version":"1.0","session_id":"m0-27579b66-06dc-41af-bdf1-903e108f9909","target_id":"8F9769D4DEDE977DC076F722088FC829","kind":"http_response_headers","request_id":"587271.6","status":200,"headers":{"access-control-allow-headers":"authorization","access-control-allow-origin":"*","connection":"close","content-length":"4","content-type":"application/octet-stream","date":"Fri, 21 Aug 2026 05:29:19 GMT"}} -{"schema_version":"1.0","session_id":"m0-27579b66-06dc-41af-bdf1-903e108f9909","target_id":"8F9769D4DEDE977DC076F722088FC829","kind":"http_response","request_id":"587271.6","response":{"url":"http://127.0.0.1:40745/binary","status":200,"protocol":"http/1.1","mime_type":"application/octet-stream","headers":{"access-control-allow-headers":"authorization","access-control-allow-origin":"*","connection":"close","content-length":"4","content-type":"application/octet-stream","date":"Fri, 21 Aug 2026 05:29:19 GMT"},"cache":{"state":"miss","source":"network"}}} -{"schema_version":"1.0","session_id":"m0-27579b66-06dc-41af-bdf1-903e108f9909","target_id":"8F9769D4DEDE977DC076F722088FC829","kind":"http_finished","request_id":"587271.6","encoded_bytes":215} -{"schema_version":"1.0","session_id":"m0-27579b66-06dc-41af-bdf1-903e108f9909","target_id":"8F9769D4DEDE977DC076F722088FC829","kind":"http_request","request_id":"587271.7","at":1787290159.288707,"request":{"method":"GET","url":"http://127.0.0.1:40745/cache","headers":{"accept-language":"en-US,en;q=0.9","authorization":"[REDACTED]","cookie":"[REDACTED]","referer":"[REDACTED]","user-agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/148.0.0.0 Safari/537.36"}}} -{"schema_version":"1.0","session_id":"m0-27579b66-06dc-41af-bdf1-903e108f9909","target_id":"8F9769D4DEDE977DC076F722088FC829","kind":"http_request_headers","request_id":"587271.7","headers":{"accept":"*/*","accept-encoding":"gzip, deflate, br, zstd","accept-language":"en-US,en;q=0.9","authorization":"[REDACTED]","connection":"keep-alive","cookie":"[REDACTED]","host":"127.0.0.1:40745","sec-fetch-dest":"empty","sec-fetch-mode":"cors","sec-fetch-site":"same-origin","user-agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/148.0.0.0 Safari/537.36"}} -{"schema_version":"1.0","session_id":"m0-27579b66-06dc-41af-bdf1-903e108f9909","target_id":"8F9769D4DEDE977DC076F722088FC829","kind":"http_response_headers","request_id":"587271.7","status":200,"headers":{"access-control-allow-headers":"authorization","access-control-allow-origin":"*","cache-control":"public, max-age=3600","connection":"close","content-length":"15","content-type":"application/json","date":"Fri, 21 Aug 2026 05:29:19 GMT"}} -{"schema_version":"1.0","session_id":"m0-27579b66-06dc-41af-bdf1-903e108f9909","target_id":"8F9769D4DEDE977DC076F722088FC829","kind":"http_response","request_id":"587271.7","response":{"url":"http://127.0.0.1:40745/cache","status":200,"protocol":"http/1.1","mime_type":"application/json","headers":{"access-control-allow-headers":"authorization","access-control-allow-origin":"*","cache-control":"public, max-age=3600","connection":"close","content-length":"15","content-type":"application/json","date":"Fri, 21 Aug 2026 05:29:19 GMT"},"cache":{"state":"miss","source":"network"}}} -{"schema_version":"1.0","session_id":"m0-27579b66-06dc-41af-bdf1-903e108f9909","target_id":"8F9769D4DEDE977DC076F722088FC829","kind":"http_finished","request_id":"587271.7","encoded_bytes":256} -{"schema_version":"1.0","session_id":"m0-27579b66-06dc-41af-bdf1-903e108f9909","target_id":"8F9769D4DEDE977DC076F722088FC829","kind":"http_request","request_id":"587271.8","at":1787290159.292334,"request":{"method":"GET","url":"http://127.0.0.1:40745/cache","headers":{"accept-language":"en-US,en;q=0.9","authorization":"[REDACTED]","cookie":"[REDACTED]","referer":"[REDACTED]","user-agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/148.0.0.0 Safari/537.36"}}} -{"schema_version":"1.0","session_id":"m0-27579b66-06dc-41af-bdf1-903e108f9909","target_id":"8F9769D4DEDE977DC076F722088FC829","kind":"http_response","request_id":"587271.8","response":{"url":"http://127.0.0.1:40745/cache","status":200,"protocol":"http/1.1","mime_type":"application/json","headers":{"access-control-allow-headers":"authorization","access-control-allow-origin":"*","cache-control":"public, max-age=3600","content-length":"15","content-type":"application/json","date":"Fri, 21 Aug 2026 05:29:19 GMT"},"cache":{"state":"hit","source":"disk_cache"}}} -{"schema_version":"1.0","session_id":"m0-27579b66-06dc-41af-bdf1-903e108f9909","target_id":"8F9769D4DEDE977DC076F722088FC829","kind":"http_finished","request_id":"587271.8","encoded_bytes":0} -{"schema_version":"1.0","session_id":"m0-27579b66-06dc-41af-bdf1-903e108f9909","target_id":"8F9769D4DEDE977DC076F722088FC829","kind":"http_request","request_id":"587271.9","at":1787290159.295659,"request":{"method":"GET","url":"https://127.0.0.1:33657/secure","headers":{"accept-language":"en-US,en;q=0.9","authorization":"[REDACTED]","cookie":"[REDACTED]","referer":"[REDACTED]","user-agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/148.0.0.0 Safari/537.36"}}} -{"schema_version":"1.0","session_id":"m0-27579b66-06dc-41af-bdf1-903e108f9909","target_id":"8F9769D4DEDE977DC076F722088FC829","kind":"http_request","request_id":"74F2705CE3D08779CC1A8C8298034EBA","at":1787290159.296185,"request":{"method":"OPTIONS","url":"https://127.0.0.1:33657/secure","headers":{"accept":"*/*","access-control-request-headers":"authorization","access-control-request-method":"GET","origin":"http://127.0.0.1:40745","sec-fetch-mode":"cors","user-agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/148.0.0.0 Safari/537.36"}}} -{"schema_version":"1.0","session_id":"m0-27579b66-06dc-41af-bdf1-903e108f9909","target_id":"8F9769D4DEDE977DC076F722088FC829","kind":"http_request_headers","request_id":"74F2705CE3D08779CC1A8C8298034EBA","headers":{"accept":"*/*","accept-encoding":"gzip, deflate, br, zstd","accept-language":"en-US,en;q=0.9","access-control-request-headers":"authorization","access-control-request-method":"GET","connection":"keep-alive","host":"127.0.0.1:33657","origin":"http://127.0.0.1:40745","sec-fetch-dest":"empty","sec-fetch-mode":"cors","sec-fetch-site":"cross-site","user-agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/148.0.0.0 Safari/537.36"}} -{"schema_version":"1.0","session_id":"m0-27579b66-06dc-41af-bdf1-903e108f9909","target_id":"8F9769D4DEDE977DC076F722088FC829","kind":"http_response_headers","request_id":"74F2705CE3D08779CC1A8C8298034EBA","status":200,"headers":{"access-control-allow-headers":"authorization","access-control-allow-origin":"*","connection":"close","content-length":"15","content-type":"application/json","date":"Fri, 21 Aug 2026 05:29:19 GMT"}} -{"schema_version":"1.0","session_id":"m0-27579b66-06dc-41af-bdf1-903e108f9909","target_id":"8F9769D4DEDE977DC076F722088FC829","kind":"http_response","request_id":"74F2705CE3D08779CC1A8C8298034EBA","response":{"url":"https://127.0.0.1:33657/secure","status":200,"protocol":"http/1.1","mime_type":"application/json","headers":{"access-control-allow-headers":"authorization","access-control-allow-origin":"*","connection":"close","content-length":"15","content-type":"application/json","date":"Fri, 21 Aug 2026 05:29:19 GMT"},"cache":{"state":"miss","source":"network"}}} -{"schema_version":"1.0","session_id":"m0-27579b66-06dc-41af-bdf1-903e108f9909","target_id":"8F9769D4DEDE977DC076F722088FC829","kind":"http_finished","request_id":"74F2705CE3D08779CC1A8C8298034EBA","encoded_bytes":0} -{"schema_version":"1.0","session_id":"m0-27579b66-06dc-41af-bdf1-903e108f9909","target_id":"8F9769D4DEDE977DC076F722088FC829","kind":"http_request_headers","request_id":"587271.9","headers":{"accept":"*/*","accept-encoding":"gzip, deflate, br, zstd","accept-language":"en-US,en;q=0.9","authorization":"[REDACTED]","connection":"keep-alive","cookie":"[REDACTED]","host":"127.0.0.1:33657","origin":"http://127.0.0.1:40745","sec-fetch-dest":"empty","sec-fetch-mode":"cors","sec-fetch-site":"cross-site","user-agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/148.0.0.0 Safari/537.36"}} -{"schema_version":"1.0","session_id":"m0-27579b66-06dc-41af-bdf1-903e108f9909","target_id":"8F9769D4DEDE977DC076F722088FC829","kind":"http_response_headers","request_id":"587271.9","status":200,"headers":{"access-control-allow-headers":"authorization","access-control-allow-origin":"*","connection":"close","content-length":"15","content-type":"application/json","date":"Fri, 21 Aug 2026 05:29:19 GMT"}} -{"schema_version":"1.0","session_id":"m0-27579b66-06dc-41af-bdf1-903e108f9909","target_id":"8F9769D4DEDE977DC076F722088FC829","kind":"http_response","request_id":"587271.9","response":{"url":"https://127.0.0.1:33657/secure","status":200,"protocol":"http/1.1","mime_type":"application/json","headers":{"access-control-allow-headers":"authorization","access-control-allow-origin":"*","connection":"close","content-length":"15","content-type":"application/json","date":"Fri, 21 Aug 2026 05:29:19 GMT"},"cache":{"state":"miss","source":"network"}}} -{"schema_version":"1.0","session_id":"m0-27579b66-06dc-41af-bdf1-903e108f9909","target_id":"8F9769D4DEDE977DC076F722088FC829","kind":"http_finished","request_id":"587271.9","encoded_bytes":219} -{"schema_version":"1.0","session_id":"m0-27579b66-06dc-41af-bdf1-903e108f9909","target_id":"8F9769D4DEDE977DC076F722088FC829","kind":"websocket_created","connection_id":"587271.10","url":"ws://127.0.0.1:40745/ws"} -{"schema_version":"1.0","session_id":"m0-27579b66-06dc-41af-bdf1-903e108f9909","target_id":"8F9769D4DEDE977DC076F722088FC829","kind":"websocket_handshake_request","connection_id":"587271.10","headers":{"accept-encoding":"gzip, deflate, br, zstd","accept-language":"en-US,en;q=0.9","cache-control":"no-cache","connection":"Upgrade","cookie":"[REDACTED]","host":"127.0.0.1:40745","origin":"http://127.0.0.1:40745","pragma":"no-cache","sec-websocket-extensions":"permessage-deflate; client_max_window_bits","sec-websocket-key":"[REDACTED]","sec-websocket-version":"13","upgrade":"websocket","user-agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/148.0.0.0 Safari/537.36"}} -{"schema_version":"1.0","session_id":"m0-27579b66-06dc-41af-bdf1-903e108f9909","target_id":"8F9769D4DEDE977DC076F722088FC829","kind":"websocket_handshake_response","connection_id":"587271.10","status":101,"headers":{"connection":"Upgrade","sec-websocket-accept":"[REDACTED]","upgrade":"websocket"}} -{"schema_version":"1.0","session_id":"m0-27579b66-06dc-41af-bdf1-903e108f9909","target_id":"8F9769D4DEDE977DC076F722088FC829","kind":"websocket_frames_dropped","connection_id":"587271.10","dropped":{"count":27,"reasons":{"frame_size_limit":1,"rate_limit":26},"max_payload_bytes":2048,"limits":{"frame_bytes":1024,"events_per_second":16,"events_per_connection":16}}} -{"schema_version":"1.0","session_id":"m0-27579b66-06dc-41af-bdf1-903e108f9909","target_id":"8F9769D4DEDE977DC076F722088FC829","kind":"websocket_frame","connection_id":"587271.10","direction":"sent","opcode":1,"payload_bytes":14,"payload":{"state":"omitted","reason":"frame_policy"}} -{"schema_version":"1.0","session_id":"m0-27579b66-06dc-41af-bdf1-903e108f9909","target_id":"8F9769D4DEDE977DC076F722088FC829","kind":"websocket_frame","connection_id":"587271.10","direction":"sent","opcode":1,"payload_bytes":14,"payload":{"state":"omitted","reason":"frame_policy"}} -{"schema_version":"1.0","session_id":"m0-27579b66-06dc-41af-bdf1-903e108f9909","target_id":"8F9769D4DEDE977DC076F722088FC829","kind":"websocket_frame","connection_id":"587271.10","direction":"sent","opcode":1,"payload_bytes":14,"payload":{"state":"omitted","reason":"frame_policy"}} -{"schema_version":"1.0","session_id":"m0-27579b66-06dc-41af-bdf1-903e108f9909","target_id":"8F9769D4DEDE977DC076F722088FC829","kind":"websocket_frame","connection_id":"587271.10","direction":"sent","opcode":1,"payload_bytes":14,"payload":{"state":"omitted","reason":"frame_policy"}} -{"schema_version":"1.0","session_id":"m0-27579b66-06dc-41af-bdf1-903e108f9909","target_id":"8F9769D4DEDE977DC076F722088FC829","kind":"websocket_frame","connection_id":"587271.10","direction":"sent","opcode":1,"payload_bytes":14,"payload":{"state":"omitted","reason":"frame_policy"}} -{"schema_version":"1.0","session_id":"m0-27579b66-06dc-41af-bdf1-903e108f9909","target_id":"8F9769D4DEDE977DC076F722088FC829","kind":"websocket_frame","connection_id":"587271.10","direction":"sent","opcode":1,"payload_bytes":14,"payload":{"state":"omitted","reason":"frame_policy"}} -{"schema_version":"1.0","session_id":"m0-27579b66-06dc-41af-bdf1-903e108f9909","target_id":"8F9769D4DEDE977DC076F722088FC829","kind":"websocket_frame","connection_id":"587271.10","direction":"sent","opcode":1,"payload_bytes":14,"payload":{"state":"omitted","reason":"frame_policy"}} -{"schema_version":"1.0","session_id":"m0-27579b66-06dc-41af-bdf1-903e108f9909","target_id":"8F9769D4DEDE977DC076F722088FC829","kind":"websocket_frame","connection_id":"587271.10","direction":"sent","opcode":1,"payload_bytes":14,"payload":{"state":"omitted","reason":"frame_policy"}} -{"schema_version":"1.0","session_id":"m0-27579b66-06dc-41af-bdf1-903e108f9909","target_id":"8F9769D4DEDE977DC076F722088FC829","kind":"websocket_frame","connection_id":"587271.10","direction":"sent","opcode":1,"payload_bytes":14,"payload":{"state":"omitted","reason":"frame_policy"}} -{"schema_version":"1.0","session_id":"m0-27579b66-06dc-41af-bdf1-903e108f9909","target_id":"8F9769D4DEDE977DC076F722088FC829","kind":"websocket_frame","connection_id":"587271.10","direction":"sent","opcode":1,"payload_bytes":14,"payload":{"state":"omitted","reason":"frame_policy"}} -{"schema_version":"1.0","session_id":"m0-27579b66-06dc-41af-bdf1-903e108f9909","target_id":"8F9769D4DEDE977DC076F722088FC829","kind":"websocket_frame","connection_id":"587271.10","direction":"sent","opcode":1,"payload_bytes":14,"payload":{"state":"omitted","reason":"frame_policy"}} -{"schema_version":"1.0","session_id":"m0-27579b66-06dc-41af-bdf1-903e108f9909","target_id":"8F9769D4DEDE977DC076F722088FC829","kind":"websocket_frame","connection_id":"587271.10","direction":"sent","opcode":1,"payload_bytes":14,"payload":{"state":"omitted","reason":"frame_policy"}} -{"schema_version":"1.0","session_id":"m0-27579b66-06dc-41af-bdf1-903e108f9909","target_id":"8F9769D4DEDE977DC076F722088FC829","kind":"websocket_frame","connection_id":"587271.10","direction":"sent","opcode":1,"payload_bytes":14,"payload":{"state":"omitted","reason":"frame_policy"}} -{"schema_version":"1.0","session_id":"m0-27579b66-06dc-41af-bdf1-903e108f9909","target_id":"8F9769D4DEDE977DC076F722088FC829","kind":"websocket_frame","connection_id":"587271.10","direction":"sent","opcode":1,"payload_bytes":14,"payload":{"state":"omitted","reason":"frame_policy"}} -{"schema_version":"1.0","session_id":"m0-27579b66-06dc-41af-bdf1-903e108f9909","target_id":"8F9769D4DEDE977DC076F722088FC829","kind":"websocket_frame","connection_id":"587271.10","direction":"sent","opcode":1,"payload_bytes":14,"payload":{"state":"omitted","reason":"frame_policy"}} -{"schema_version":"1.0","session_id":"m0-27579b66-06dc-41af-bdf1-903e108f9909","target_id":"8F9769D4DEDE977DC076F722088FC829","kind":"websocket_closed","connection_id":"587271.10"} -{"schema_version":"1.0","session_id":"m0-27579b66-06dc-41af-bdf1-903e108f9909","target_id":"8F9769D4DEDE977DC076F722088FC829","kind":"http_request","request_id":"587271.11","at":1787290159.325745,"request":{"method":"GET","url":"http://127.0.0.1:44721/missing","headers":{"accept-language":"en-US,en;q=0.9","authorization":"[REDACTED]","cookie":"[REDACTED]","referer":"[REDACTED]","user-agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/148.0.0.0 Safari/537.36"}}} -{"schema_version":"1.0","session_id":"m0-27579b66-06dc-41af-bdf1-903e108f9909","target_id":"8F9769D4DEDE977DC076F722088FC829","kind":"http_request","request_id":"ECE84A8DE1643AB660CABF3F14E80346","at":1787290159.326374,"request":{"method":"OPTIONS","url":"http://127.0.0.1:44721/missing","headers":{"accept":"*/*","access-control-request-headers":"authorization","access-control-request-method":"GET","origin":"http://127.0.0.1:40745","sec-fetch-mode":"cors","user-agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/148.0.0.0 Safari/537.36"}}} -{"schema_version":"1.0","session_id":"m0-27579b66-06dc-41af-bdf1-903e108f9909","target_id":"8F9769D4DEDE977DC076F722088FC829","kind":"http_failed","request_id":"ECE84A8DE1643AB660CABF3F14E80346","error":{"text":"net::ERR_CONNECTION_REFUSED","canceled":false}} -{"schema_version":"1.0","session_id":"m0-27579b66-06dc-41af-bdf1-903e108f9909","target_id":"8F9769D4DEDE977DC076F722088FC829","kind":"http_failed","request_id":"587271.11","error":{"text":"net::ERR_CONNECTION_REFUSED","canceled":false}} -{"schema_version":"1.0","session_id":"m0-27579b66-06dc-41af-bdf1-903e108f9909","target_id":"8F9769D4DEDE977DC076F722088FC829","kind":"http_body","request_id":"587271.3","body":{"state":"fetched","source":"network","encoding":"utf8","storage":"omitted","reason":"default_body_policy","bytes":11}} -{"schema_version":"1.0","session_id":"m0-27579b66-06dc-41af-bdf1-903e108f9909","target_id":"8F9769D4DEDE977DC076F722088FC829","kind":"http_body","request_id":"587271.4","body":{"state":"fetched","source":"network","encoding":"utf8","storage":"omitted","reason":"default_body_policy","bytes":49}} -{"schema_version":"1.0","session_id":"m0-27579b66-06dc-41af-bdf1-903e108f9909","target_id":"8F9769D4DEDE977DC076F722088FC829","kind":"http_body","request_id":"587271.5","body":{"state":"size_limit","source":"network","encoding":"utf8","storage":"omitted","reason":"size_limit","bytes":2048}} -{"schema_version":"1.0","session_id":"m0-27579b66-06dc-41af-bdf1-903e108f9909","target_id":"8F9769D4DEDE977DC076F722088FC829","kind":"http_body","request_id":"587271.6","body":{"state":"fetched","source":"network","encoding":"base64","storage":"omitted","reason":"default_body_policy","bytes":4}} -{"schema_version":"1.0","session_id":"m0-27579b66-06dc-41af-bdf1-903e108f9909","target_id":"8F9769D4DEDE977DC076F722088FC829","kind":"http_body","request_id":"587271.9","body":{"state":"fetched","source":"network","encoding":"utf8","storage":"omitted","reason":"default_body_policy","bytes":15}} -{"schema_version":"1.0","session_id":"m0-27579b66-06dc-41af-bdf1-903e108f9909","target_id":"8F9769D4DEDE977DC076F722088FC829","kind":"http_body","request_id":"587271.8","body":{"state":"fetched","source":"disk_cache","encoding":"utf8","storage":"omitted","reason":"default_body_policy","bytes":15}} -{"schema_version":"1.0","session_id":"m0-27579b66-06dc-41af-bdf1-903e108f9909","target_id":"8F9769D4DEDE977DC076F722088FC829","kind":"http_body","request_id":"587271.11","body":{"state":"unavailable","source":"network","encoding":"unknown","storage":"omitted","reason":"cdp_error","error":"-32000: No data found for resource with given identifier"}} -{"schema_version":"1.0","session_id":"m0-27579b66-06dc-41af-bdf1-903e108f9909","target_id":"8F9769D4DEDE977DC076F722088FC829","kind":"cdp_disconnected","source":"socket","code":1006,"reason":"socket_closed","was_clean":false} -{"schema_version":"1.0","session_id":"m0-27579b66-06dc-41af-bdf1-903e108f9909","target_id":"8F9769D4DEDE977DC076F722088FC829","kind":"target_closed","reason":"Target.closeTarget"} -{"schema_version":"1.0","session_id":"m0-152f5177-9a3f-4df5-a489-2f78d213358d","target_id":"E1FC8181E677B2656E0B68AE80D14CD7","kind":"cdp_reconnected","verified":true} -{"schema_version":"1.0","session_id":"m0-152f5177-9a3f-4df5-a489-2f78d213358d","target_id":"E1FC8181E677B2656E0B68AE80D14CD7","kind":"cdp_disconnected","source":"socket","code":1006,"reason":"socket_closed","was_clean":false} -{"schema_version":"1.0","session_id":"m0-152f5177-9a3f-4df5-a489-2f78d213358d","target_id":"E1FC8181E677B2656E0B68AE80D14CD7","kind":"target_closed","reason":"Target.closeTarget"} +{"schema_version":"1.0","session_id":"m0-71473164-b7fa-41b6-b91e-107363840b58","target_id":"96955991629530324CFE616121AF4998","kind":"http_response","request_id":"939758.2","response":{"url":"http://127.0.0.1:40745/favicon.ico","status":200,"protocol":"http/1.1","mime_type":"text/html","headers":{"connection":"close","content-length":"38","content-type":"text/html","date":"Fri, 21 Aug 2026 06:41:35 GMT"},"cache":{"state":"unknown"}}} +{"schema_version":"1.0","session_id":"m0-71473164-b7fa-41b6-b91e-107363840b58","target_id":"96955991629530324CFE616121AF4998","kind":"http_finished","request_id":"939758.2","encoded_bytes":158} +{"schema_version":"1.0","session_id":"m0-71473164-b7fa-41b6-b91e-107363840b58","target_id":"96955991629530324CFE616121AF4998","kind":"http_request","request_id":"939758.3","at":1787294495.25845,"request":{"method":"GET","url":"http://127.0.0.1:40745/ok","headers":{"accept-language":"en-US,en;q=0.9","authorization":"[REDACTED]","cookie":"[REDACTED]","referer":"[REDACTED]","user-agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/148.0.0.0 Safari/537.36"}}} +{"schema_version":"1.0","session_id":"m0-71473164-b7fa-41b6-b91e-107363840b58","target_id":"96955991629530324CFE616121AF4998","kind":"http_request_headers","request_id":"939758.3","headers":{"accept":"*/*","accept-encoding":"gzip, deflate, br, zstd","accept-language":"en-US,en;q=0.9","authorization":"[REDACTED]","connection":"keep-alive","cookie":"[REDACTED]","host":"127.0.0.1:40745","sec-fetch-dest":"empty","sec-fetch-mode":"cors","sec-fetch-site":"same-origin","user-agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/148.0.0.0 Safari/537.36"}} +{"schema_version":"1.0","session_id":"m0-71473164-b7fa-41b6-b91e-107363840b58","target_id":"96955991629530324CFE616121AF4998","kind":"http_response_headers","request_id":"939758.3","status":200,"headers":{"access-control-allow-headers":"authorization","access-control-allow-origin":"*","connection":"close","content-length":"11","content-type":"application/json","date":"Fri, 21 Aug 2026 06:41:35 GMT","set-cookie":"[REDACTED]"}} +{"schema_version":"1.0","session_id":"m0-71473164-b7fa-41b6-b91e-107363840b58","target_id":"96955991629530324CFE616121AF4998","kind":"http_response","request_id":"939758.3","response":{"url":"http://127.0.0.1:40745/ok","status":200,"protocol":"http/1.1","mime_type":"application/json","headers":{"access-control-allow-headers":"authorization","access-control-allow-origin":"*","connection":"close","content-length":"11","content-type":"application/json","date":"Fri, 21 Aug 2026 06:41:35 GMT"},"cache":{"state":"miss","source":"network"}}} +{"schema_version":"1.0","session_id":"m0-71473164-b7fa-41b6-b91e-107363840b58","target_id":"96955991629530324CFE616121AF4998","kind":"http_finished","request_id":"939758.3","encoded_bytes":291} +{"schema_version":"1.0","session_id":"m0-71473164-b7fa-41b6-b91e-107363840b58","target_id":"96955991629530324CFE616121AF4998","kind":"http_request","request_id":"939758.4","at":1787294495.263103,"request":{"method":"GET","url":"http://127.0.0.1:40745/secret","headers":{"accept-language":"en-US,en;q=0.9","authorization":"[REDACTED]","cookie":"[REDACTED]","referer":"[REDACTED]","user-agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/148.0.0.0 Safari/537.36"}}} +{"schema_version":"1.0","session_id":"m0-71473164-b7fa-41b6-b91e-107363840b58","target_id":"96955991629530324CFE616121AF4998","kind":"http_request_headers","request_id":"939758.4","headers":{"accept":"*/*","accept-encoding":"gzip, deflate, br, zstd","accept-language":"en-US,en;q=0.9","authorization":"[REDACTED]","connection":"keep-alive","cookie":"[REDACTED]","host":"127.0.0.1:40745","sec-fetch-dest":"empty","sec-fetch-mode":"cors","sec-fetch-site":"same-origin","user-agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/148.0.0.0 Safari/537.36"}} +{"schema_version":"1.0","session_id":"m0-71473164-b7fa-41b6-b91e-107363840b58","target_id":"96955991629530324CFE616121AF4998","kind":"http_response_headers","request_id":"939758.4","status":200,"headers":{"access-control-allow-headers":"authorization","access-control-allow-origin":"*","connection":"close","content-length":"49","content-type":"application/json","date":"Fri, 21 Aug 2026 06:41:35 GMT"}} +{"schema_version":"1.0","session_id":"m0-71473164-b7fa-41b6-b91e-107363840b58","target_id":"96955991629530324CFE616121AF4998","kind":"http_response","request_id":"939758.4","response":{"url":"http://127.0.0.1:40745/secret","status":200,"protocol":"http/1.1","mime_type":"application/json","headers":{"access-control-allow-headers":"authorization","access-control-allow-origin":"*","connection":"close","content-length":"49","content-type":"application/json","date":"Fri, 21 Aug 2026 06:41:35 GMT"},"cache":{"state":"miss","source":"network"}}} +{"schema_version":"1.0","session_id":"m0-71473164-b7fa-41b6-b91e-107363840b58","target_id":"96955991629530324CFE616121AF4998","kind":"http_finished","request_id":"939758.4","encoded_bytes":253} +{"schema_version":"1.0","session_id":"m0-71473164-b7fa-41b6-b91e-107363840b58","target_id":"96955991629530324CFE616121AF4998","kind":"http_request","request_id":"939758.5","at":1787294495.266719,"request":{"method":"GET","url":"http://127.0.0.1:40745/large","headers":{"accept-language":"en-US,en;q=0.9","authorization":"[REDACTED]","cookie":"[REDACTED]","referer":"[REDACTED]","user-agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/148.0.0.0 Safari/537.36"}}} +{"schema_version":"1.0","session_id":"m0-71473164-b7fa-41b6-b91e-107363840b58","target_id":"96955991629530324CFE616121AF4998","kind":"http_request_headers","request_id":"939758.5","headers":{"accept":"*/*","accept-encoding":"gzip, deflate, br, zstd","accept-language":"en-US,en;q=0.9","authorization":"[REDACTED]","connection":"keep-alive","cookie":"[REDACTED]","host":"127.0.0.1:40745","sec-fetch-dest":"empty","sec-fetch-mode":"cors","sec-fetch-site":"same-origin","user-agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/148.0.0.0 Safari/537.36"}} +{"schema_version":"1.0","session_id":"m0-71473164-b7fa-41b6-b91e-107363840b58","target_id":"96955991629530324CFE616121AF4998","kind":"http_response_headers","request_id":"939758.5","status":200,"headers":{"access-control-allow-headers":"authorization","access-control-allow-origin":"*","connection":"close","content-length":"2048","content-type":"text/plain","date":"Fri, 21 Aug 2026 06:41:35 GMT"}} +{"schema_version":"1.0","session_id":"m0-71473164-b7fa-41b6-b91e-107363840b58","target_id":"96955991629530324CFE616121AF4998","kind":"http_response","request_id":"939758.5","response":{"url":"http://127.0.0.1:40745/large","status":200,"protocol":"http/1.1","mime_type":"text/plain","headers":{"access-control-allow-headers":"authorization","access-control-allow-origin":"*","connection":"close","content-length":"2048","content-type":"text/plain","date":"Fri, 21 Aug 2026 06:41:35 GMT"},"cache":{"state":"miss","source":"network"}}} +{"schema_version":"1.0","session_id":"m0-71473164-b7fa-41b6-b91e-107363840b58","target_id":"96955991629530324CFE616121AF4998","kind":"http_finished","request_id":"939758.5","encoded_bytes":2248} +{"schema_version":"1.0","session_id":"m0-71473164-b7fa-41b6-b91e-107363840b58","target_id":"96955991629530324CFE616121AF4998","kind":"http_request","request_id":"939758.6","at":1787294495.270207,"request":{"method":"GET","url":"http://127.0.0.1:40745/binary","headers":{"accept-language":"en-US,en;q=0.9","authorization":"[REDACTED]","cookie":"[REDACTED]","referer":"[REDACTED]","user-agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/148.0.0.0 Safari/537.36"}}} +{"schema_version":"1.0","session_id":"m0-71473164-b7fa-41b6-b91e-107363840b58","target_id":"96955991629530324CFE616121AF4998","kind":"http_request_headers","request_id":"939758.6","headers":{"accept":"*/*","accept-encoding":"gzip, deflate, br, zstd","accept-language":"en-US,en;q=0.9","authorization":"[REDACTED]","connection":"keep-alive","cookie":"[REDACTED]","host":"127.0.0.1:40745","sec-fetch-dest":"empty","sec-fetch-mode":"cors","sec-fetch-site":"same-origin","user-agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/148.0.0.0 Safari/537.36"}} +{"schema_version":"1.0","session_id":"m0-71473164-b7fa-41b6-b91e-107363840b58","target_id":"96955991629530324CFE616121AF4998","kind":"http_response_headers","request_id":"939758.6","status":200,"headers":{"access-control-allow-headers":"authorization","access-control-allow-origin":"*","connection":"close","content-length":"4","content-type":"application/octet-stream","date":"Fri, 21 Aug 2026 06:41:35 GMT"}} +{"schema_version":"1.0","session_id":"m0-71473164-b7fa-41b6-b91e-107363840b58","target_id":"96955991629530324CFE616121AF4998","kind":"http_response","request_id":"939758.6","response":{"url":"http://127.0.0.1:40745/binary","status":200,"protocol":"http/1.1","mime_type":"application/octet-stream","headers":{"access-control-allow-headers":"authorization","access-control-allow-origin":"*","connection":"close","content-length":"4","content-type":"application/octet-stream","date":"Fri, 21 Aug 2026 06:41:35 GMT"},"cache":{"state":"miss","source":"network"}}} +{"schema_version":"1.0","session_id":"m0-71473164-b7fa-41b6-b91e-107363840b58","target_id":"96955991629530324CFE616121AF4998","kind":"http_finished","request_id":"939758.6","encoded_bytes":215} +{"schema_version":"1.0","session_id":"m0-71473164-b7fa-41b6-b91e-107363840b58","target_id":"96955991629530324CFE616121AF4998","kind":"http_request","request_id":"939758.7","at":1787294495.274207,"request":{"method":"GET","url":"http://127.0.0.1:40745/cache","headers":{"accept-language":"en-US,en;q=0.9","authorization":"[REDACTED]","cookie":"[REDACTED]","referer":"[REDACTED]","user-agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/148.0.0.0 Safari/537.36"}}} +{"schema_version":"1.0","session_id":"m0-71473164-b7fa-41b6-b91e-107363840b58","target_id":"96955991629530324CFE616121AF4998","kind":"http_request_headers","request_id":"939758.7","headers":{"accept":"*/*","accept-encoding":"gzip, deflate, br, zstd","accept-language":"en-US,en;q=0.9","authorization":"[REDACTED]","connection":"keep-alive","cookie":"[REDACTED]","host":"127.0.0.1:40745","sec-fetch-dest":"empty","sec-fetch-mode":"cors","sec-fetch-site":"same-origin","user-agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/148.0.0.0 Safari/537.36"}} +{"schema_version":"1.0","session_id":"m0-71473164-b7fa-41b6-b91e-107363840b58","target_id":"96955991629530324CFE616121AF4998","kind":"http_response_headers","request_id":"939758.7","status":200,"headers":{"access-control-allow-headers":"authorization","access-control-allow-origin":"*","cache-control":"public, max-age=3600","connection":"close","content-length":"15","content-type":"application/json","date":"Fri, 21 Aug 2026 06:41:35 GMT"}} +{"schema_version":"1.0","session_id":"m0-71473164-b7fa-41b6-b91e-107363840b58","target_id":"96955991629530324CFE616121AF4998","kind":"http_response","request_id":"939758.7","response":{"url":"http://127.0.0.1:40745/cache","status":200,"protocol":"http/1.1","mime_type":"application/json","headers":{"access-control-allow-headers":"authorization","access-control-allow-origin":"*","cache-control":"public, max-age=3600","connection":"close","content-length":"15","content-type":"application/json","date":"Fri, 21 Aug 2026 06:41:35 GMT"},"cache":{"state":"miss","source":"network"}}} +{"schema_version":"1.0","session_id":"m0-71473164-b7fa-41b6-b91e-107363840b58","target_id":"96955991629530324CFE616121AF4998","kind":"http_finished","request_id":"939758.7","encoded_bytes":256} +{"schema_version":"1.0","session_id":"m0-71473164-b7fa-41b6-b91e-107363840b58","target_id":"96955991629530324CFE616121AF4998","kind":"http_request","request_id":"939758.8","at":1787294495.277689,"request":{"method":"GET","url":"http://127.0.0.1:40745/cache","headers":{"accept-language":"en-US,en;q=0.9","authorization":"[REDACTED]","cookie":"[REDACTED]","referer":"[REDACTED]","user-agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/148.0.0.0 Safari/537.36"}}} +{"schema_version":"1.0","session_id":"m0-71473164-b7fa-41b6-b91e-107363840b58","target_id":"96955991629530324CFE616121AF4998","kind":"http_response","request_id":"939758.8","response":{"url":"http://127.0.0.1:40745/cache","status":200,"protocol":"http/1.1","mime_type":"application/json","headers":{"access-control-allow-headers":"authorization","access-control-allow-origin":"*","cache-control":"public, max-age=3600","content-length":"15","content-type":"application/json","date":"Fri, 21 Aug 2026 06:41:35 GMT"},"cache":{"state":"hit","source":"disk_cache"}}} +{"schema_version":"1.0","session_id":"m0-71473164-b7fa-41b6-b91e-107363840b58","target_id":"96955991629530324CFE616121AF4998","kind":"http_finished","request_id":"939758.8","encoded_bytes":0} +{"schema_version":"1.0","session_id":"m0-71473164-b7fa-41b6-b91e-107363840b58","target_id":"96955991629530324CFE616121AF4998","kind":"http_request","request_id":"939758.9","at":1787294495.28063,"request":{"method":"GET","url":"https://127.0.0.1:42939/secure","headers":{"accept-language":"en-US,en;q=0.9","authorization":"[REDACTED]","cookie":"[REDACTED]","referer":"[REDACTED]","user-agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/148.0.0.0 Safari/537.36"}}} +{"schema_version":"1.0","session_id":"m0-71473164-b7fa-41b6-b91e-107363840b58","target_id":"96955991629530324CFE616121AF4998","kind":"http_request","request_id":"7C9BB7F3D79771E1D285D7DD7765551A","at":1787294495.28114,"request":{"method":"OPTIONS","url":"https://127.0.0.1:42939/secure","headers":{"accept":"*/*","access-control-request-headers":"authorization","access-control-request-method":"GET","origin":"http://127.0.0.1:40745","sec-fetch-mode":"cors","user-agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/148.0.0.0 Safari/537.36"}}} +{"schema_version":"1.0","session_id":"m0-71473164-b7fa-41b6-b91e-107363840b58","target_id":"96955991629530324CFE616121AF4998","kind":"http_request_headers","request_id":"7C9BB7F3D79771E1D285D7DD7765551A","headers":{"accept":"*/*","accept-encoding":"gzip, deflate, br, zstd","accept-language":"en-US,en;q=0.9","access-control-request-headers":"authorization","access-control-request-method":"GET","connection":"keep-alive","host":"127.0.0.1:42939","origin":"http://127.0.0.1:40745","sec-fetch-dest":"empty","sec-fetch-mode":"cors","sec-fetch-site":"cross-site","user-agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/148.0.0.0 Safari/537.36"}} +{"schema_version":"1.0","session_id":"m0-71473164-b7fa-41b6-b91e-107363840b58","target_id":"96955991629530324CFE616121AF4998","kind":"http_response_headers","request_id":"7C9BB7F3D79771E1D285D7DD7765551A","status":200,"headers":{"access-control-allow-headers":"authorization","access-control-allow-origin":"*","connection":"close","content-length":"15","content-type":"application/json","date":"Fri, 21 Aug 2026 06:41:35 GMT"}} +{"schema_version":"1.0","session_id":"m0-71473164-b7fa-41b6-b91e-107363840b58","target_id":"96955991629530324CFE616121AF4998","kind":"http_response","request_id":"7C9BB7F3D79771E1D285D7DD7765551A","response":{"url":"https://127.0.0.1:42939/secure","status":200,"protocol":"http/1.1","mime_type":"application/json","headers":{"access-control-allow-headers":"authorization","access-control-allow-origin":"*","connection":"close","content-length":"15","content-type":"application/json","date":"Fri, 21 Aug 2026 06:41:35 GMT"},"cache":{"state":"miss","source":"network"}}} +{"schema_version":"1.0","session_id":"m0-71473164-b7fa-41b6-b91e-107363840b58","target_id":"96955991629530324CFE616121AF4998","kind":"http_finished","request_id":"7C9BB7F3D79771E1D285D7DD7765551A","encoded_bytes":0} +{"schema_version":"1.0","session_id":"m0-71473164-b7fa-41b6-b91e-107363840b58","target_id":"96955991629530324CFE616121AF4998","kind":"http_request_headers","request_id":"939758.9","headers":{"accept":"*/*","accept-encoding":"gzip, deflate, br, zstd","accept-language":"en-US,en;q=0.9","authorization":"[REDACTED]","connection":"keep-alive","cookie":"[REDACTED]","host":"127.0.0.1:42939","origin":"http://127.0.0.1:40745","sec-fetch-dest":"empty","sec-fetch-mode":"cors","sec-fetch-site":"cross-site","user-agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/148.0.0.0 Safari/537.36"}} +{"schema_version":"1.0","session_id":"m0-71473164-b7fa-41b6-b91e-107363840b58","target_id":"96955991629530324CFE616121AF4998","kind":"http_response_headers","request_id":"939758.9","status":200,"headers":{"access-control-allow-headers":"authorization","access-control-allow-origin":"*","connection":"close","content-length":"15","content-type":"application/json","date":"Fri, 21 Aug 2026 06:41:35 GMT"}} +{"schema_version":"1.0","session_id":"m0-71473164-b7fa-41b6-b91e-107363840b58","target_id":"96955991629530324CFE616121AF4998","kind":"http_response","request_id":"939758.9","response":{"url":"https://127.0.0.1:42939/secure","status":200,"protocol":"http/1.1","mime_type":"application/json","headers":{"access-control-allow-headers":"authorization","access-control-allow-origin":"*","connection":"close","content-length":"15","content-type":"application/json","date":"Fri, 21 Aug 2026 06:41:35 GMT"},"cache":{"state":"miss","source":"network"}}} +{"schema_version":"1.0","session_id":"m0-71473164-b7fa-41b6-b91e-107363840b58","target_id":"96955991629530324CFE616121AF4998","kind":"http_finished","request_id":"939758.9","encoded_bytes":219} +{"schema_version":"1.0","session_id":"m0-71473164-b7fa-41b6-b91e-107363840b58","target_id":"96955991629530324CFE616121AF4998","kind":"websocket_created","connection_id":"939758.10","url":"ws://127.0.0.1:40745/ws"} +{"schema_version":"1.0","session_id":"m0-71473164-b7fa-41b6-b91e-107363840b58","target_id":"96955991629530324CFE616121AF4998","kind":"websocket_handshake_request","connection_id":"939758.10","headers":{"accept-encoding":"gzip, deflate, br, zstd","accept-language":"en-US,en;q=0.9","cache-control":"no-cache","connection":"Upgrade","cookie":"[REDACTED]","host":"127.0.0.1:40745","origin":"http://127.0.0.1:40745","pragma":"no-cache","sec-websocket-extensions":"permessage-deflate; client_max_window_bits","sec-websocket-key":"[REDACTED]","sec-websocket-version":"13","upgrade":"websocket","user-agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/148.0.0.0 Safari/537.36"}} +{"schema_version":"1.0","session_id":"m0-71473164-b7fa-41b6-b91e-107363840b58","target_id":"96955991629530324CFE616121AF4998","kind":"websocket_handshake_response","connection_id":"939758.10","status":101,"headers":{"connection":"Upgrade","sec-websocket-accept":"[REDACTED]","upgrade":"websocket"}} +{"schema_version":"1.0","session_id":"m0-71473164-b7fa-41b6-b91e-107363840b58","target_id":"96955991629530324CFE616121AF4998","kind":"websocket_frames_dropped","connection_id":"939758.10","dropped":{"count":27,"reasons":{"frame_size_limit":1,"rate_limit":26},"max_payload_bytes":2048,"limits":{"frame_bytes":1024,"events_per_second":16,"events_per_connection":16}}} +{"schema_version":"1.0","session_id":"m0-71473164-b7fa-41b6-b91e-107363840b58","target_id":"96955991629530324CFE616121AF4998","kind":"websocket_frame","connection_id":"939758.10","direction":"sent","opcode":1,"payload_bytes":14,"payload":{"state":"omitted","reason":"frame_policy"}} +{"schema_version":"1.0","session_id":"m0-71473164-b7fa-41b6-b91e-107363840b58","target_id":"96955991629530324CFE616121AF4998","kind":"websocket_frame","connection_id":"939758.10","direction":"sent","opcode":1,"payload_bytes":14,"payload":{"state":"omitted","reason":"frame_policy"}} +{"schema_version":"1.0","session_id":"m0-71473164-b7fa-41b6-b91e-107363840b58","target_id":"96955991629530324CFE616121AF4998","kind":"websocket_frame","connection_id":"939758.10","direction":"sent","opcode":1,"payload_bytes":14,"payload":{"state":"omitted","reason":"frame_policy"}} +{"schema_version":"1.0","session_id":"m0-71473164-b7fa-41b6-b91e-107363840b58","target_id":"96955991629530324CFE616121AF4998","kind":"websocket_frame","connection_id":"939758.10","direction":"sent","opcode":1,"payload_bytes":14,"payload":{"state":"omitted","reason":"frame_policy"}} +{"schema_version":"1.0","session_id":"m0-71473164-b7fa-41b6-b91e-107363840b58","target_id":"96955991629530324CFE616121AF4998","kind":"websocket_frame","connection_id":"939758.10","direction":"sent","opcode":1,"payload_bytes":14,"payload":{"state":"omitted","reason":"frame_policy"}} +{"schema_version":"1.0","session_id":"m0-71473164-b7fa-41b6-b91e-107363840b58","target_id":"96955991629530324CFE616121AF4998","kind":"websocket_frame","connection_id":"939758.10","direction":"sent","opcode":1,"payload_bytes":14,"payload":{"state":"omitted","reason":"frame_policy"}} +{"schema_version":"1.0","session_id":"m0-71473164-b7fa-41b6-b91e-107363840b58","target_id":"96955991629530324CFE616121AF4998","kind":"websocket_frame","connection_id":"939758.10","direction":"sent","opcode":1,"payload_bytes":14,"payload":{"state":"omitted","reason":"frame_policy"}} +{"schema_version":"1.0","session_id":"m0-71473164-b7fa-41b6-b91e-107363840b58","target_id":"96955991629530324CFE616121AF4998","kind":"websocket_frame","connection_id":"939758.10","direction":"sent","opcode":1,"payload_bytes":14,"payload":{"state":"omitted","reason":"frame_policy"}} +{"schema_version":"1.0","session_id":"m0-71473164-b7fa-41b6-b91e-107363840b58","target_id":"96955991629530324CFE616121AF4998","kind":"websocket_frame","connection_id":"939758.10","direction":"sent","opcode":1,"payload_bytes":14,"payload":{"state":"omitted","reason":"frame_policy"}} +{"schema_version":"1.0","session_id":"m0-71473164-b7fa-41b6-b91e-107363840b58","target_id":"96955991629530324CFE616121AF4998","kind":"websocket_frame","connection_id":"939758.10","direction":"sent","opcode":1,"payload_bytes":14,"payload":{"state":"omitted","reason":"frame_policy"}} +{"schema_version":"1.0","session_id":"m0-71473164-b7fa-41b6-b91e-107363840b58","target_id":"96955991629530324CFE616121AF4998","kind":"websocket_frame","connection_id":"939758.10","direction":"sent","opcode":1,"payload_bytes":14,"payload":{"state":"omitted","reason":"frame_policy"}} +{"schema_version":"1.0","session_id":"m0-71473164-b7fa-41b6-b91e-107363840b58","target_id":"96955991629530324CFE616121AF4998","kind":"websocket_frame","connection_id":"939758.10","direction":"sent","opcode":1,"payload_bytes":14,"payload":{"state":"omitted","reason":"frame_policy"}} +{"schema_version":"1.0","session_id":"m0-71473164-b7fa-41b6-b91e-107363840b58","target_id":"96955991629530324CFE616121AF4998","kind":"websocket_frame","connection_id":"939758.10","direction":"sent","opcode":1,"payload_bytes":14,"payload":{"state":"omitted","reason":"frame_policy"}} +{"schema_version":"1.0","session_id":"m0-71473164-b7fa-41b6-b91e-107363840b58","target_id":"96955991629530324CFE616121AF4998","kind":"websocket_frame","connection_id":"939758.10","direction":"sent","opcode":1,"payload_bytes":14,"payload":{"state":"omitted","reason":"frame_policy"}} +{"schema_version":"1.0","session_id":"m0-71473164-b7fa-41b6-b91e-107363840b58","target_id":"96955991629530324CFE616121AF4998","kind":"websocket_frame","connection_id":"939758.10","direction":"sent","opcode":1,"payload_bytes":14,"payload":{"state":"omitted","reason":"frame_policy"}} +{"schema_version":"1.0","session_id":"m0-71473164-b7fa-41b6-b91e-107363840b58","target_id":"96955991629530324CFE616121AF4998","kind":"websocket_closed","connection_id":"939758.10"} +{"schema_version":"1.0","session_id":"m0-71473164-b7fa-41b6-b91e-107363840b58","target_id":"96955991629530324CFE616121AF4998","kind":"http_request","request_id":"939758.11","at":1787294495.307572,"request":{"method":"GET","url":"http://127.0.0.1:34335/missing","headers":{"accept-language":"en-US,en;q=0.9","authorization":"[REDACTED]","cookie":"[REDACTED]","referer":"[REDACTED]","user-agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/148.0.0.0 Safari/537.36"}}} +{"schema_version":"1.0","session_id":"m0-71473164-b7fa-41b6-b91e-107363840b58","target_id":"96955991629530324CFE616121AF4998","kind":"http_request","request_id":"FEB787EC01968EBD3E98F1E3396438EB","at":1787294495.308184,"request":{"method":"OPTIONS","url":"http://127.0.0.1:34335/missing","headers":{"accept":"*/*","access-control-request-headers":"authorization","access-control-request-method":"GET","origin":"http://127.0.0.1:40745","sec-fetch-mode":"cors","user-agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/148.0.0.0 Safari/537.36"}}} +{"schema_version":"1.0","session_id":"m0-71473164-b7fa-41b6-b91e-107363840b58","target_id":"96955991629530324CFE616121AF4998","kind":"http_failed","request_id":"FEB787EC01968EBD3E98F1E3396438EB","error":{"text":"net::ERR_CONNECTION_REFUSED","canceled":false}} +{"schema_version":"1.0","session_id":"m0-71473164-b7fa-41b6-b91e-107363840b58","target_id":"96955991629530324CFE616121AF4998","kind":"http_failed","request_id":"939758.11","error":{"text":"net::ERR_CONNECTION_REFUSED","canceled":false}} +{"schema_version":"1.0","session_id":"m0-71473164-b7fa-41b6-b91e-107363840b58","target_id":"96955991629530324CFE616121AF4998","kind":"http_body","request_id":"939758.3","body":{"state":"fetched","source":"network","encoding":"utf8","storage":"omitted","reason":"default_body_policy","bytes":11}} +{"schema_version":"1.0","session_id":"m0-71473164-b7fa-41b6-b91e-107363840b58","target_id":"96955991629530324CFE616121AF4998","kind":"http_body","request_id":"939758.4","body":{"state":"fetched","source":"network","encoding":"utf8","storage":"omitted","reason":"default_body_policy","bytes":49}} +{"schema_version":"1.0","session_id":"m0-71473164-b7fa-41b6-b91e-107363840b58","target_id":"96955991629530324CFE616121AF4998","kind":"http_body","request_id":"939758.5","body":{"state":"size_limit","source":"network","encoding":"utf8","storage":"omitted","reason":"size_limit","bytes":2048}} +{"schema_version":"1.0","session_id":"m0-71473164-b7fa-41b6-b91e-107363840b58","target_id":"96955991629530324CFE616121AF4998","kind":"http_body","request_id":"939758.6","body":{"state":"fetched","source":"network","encoding":"base64","storage":"omitted","reason":"default_body_policy","bytes":4}} +{"schema_version":"1.0","session_id":"m0-71473164-b7fa-41b6-b91e-107363840b58","target_id":"96955991629530324CFE616121AF4998","kind":"http_body","request_id":"939758.9","body":{"state":"fetched","source":"network","encoding":"utf8","storage":"omitted","reason":"default_body_policy","bytes":15}} +{"schema_version":"1.0","session_id":"m0-71473164-b7fa-41b6-b91e-107363840b58","target_id":"96955991629530324CFE616121AF4998","kind":"http_body","request_id":"939758.8","body":{"state":"fetched","source":"disk_cache","encoding":"utf8","storage":"omitted","reason":"default_body_policy","bytes":15}} +{"schema_version":"1.0","session_id":"m0-71473164-b7fa-41b6-b91e-107363840b58","target_id":"96955991629530324CFE616121AF4998","kind":"http_body","request_id":"939758.11","body":{"state":"unavailable","source":"network","encoding":"unknown","storage":"omitted","reason":"cdp_error","error":"-32000: No data found for resource with given identifier"}} +{"schema_version":"1.0","session_id":"m0-71473164-b7fa-41b6-b91e-107363840b58","target_id":"96955991629530324CFE616121AF4998","kind":"cdp_disconnected","source":"socket","code":1006,"reason":"socket_closed","was_clean":false} +{"schema_version":"1.0","session_id":"m0-71473164-b7fa-41b6-b91e-107363840b58","target_id":"96955991629530324CFE616121AF4998","kind":"target_closed","reason":"Target.closeTarget"} +{"schema_version":"1.0","session_id":"m0-7b5516cb-cb8b-415d-a098-58daaa45d203","target_id":"63818C56C57ACA989204F40F388B4471","kind":"cdp_reconnected","verified":true} +{"schema_version":"1.0","session_id":"m0-7b5516cb-cb8b-415d-a098-58daaa45d203","target_id":"63818C56C57ACA989204F40F388B4471","kind":"cdp_disconnected","source":"socket","code":1006,"reason":"socket_closed","was_clean":false} +{"schema_version":"1.0","session_id":"m0-7b5516cb-cb8b-415d-a098-58daaa45d203","target_id":"63818C56C57ACA989204F40F388B4471","kind":"target_closed","reason":"Target.closeTarget"} diff --git a/artifacts/m0-report.json b/artifacts/m0-report.json index 1c267b0..e58f3ab 100644 --- a/artifacts/m0-report.json +++ b/artifacts/m0-report.json @@ -31,18 +31,89 @@ "max": 9 }, "rss_kib": { - "min": 779396, - "max": 779620, - "mean": 779528.8, - "p95": 779620 + "min": 776464, + "max": 776628, + "mean": 776561.6, + "p95": 776628 }, "cpu_percent": { - "min": 10.3, - "max": 10.7, - "mean": 10.5, - "p95": 10.7 + "min": 9.7, + "max": 10, + "mean": 9.9, + "p95": 10 } }, + "resource_samples": [ + { + "sample": 1, + "resources": { + "sample_count": 5, + "interval_ms": 200, + "process_count": { + "min": 9, + "max": 9 + }, + "rss_kib": { + "min": 790000, + "max": 790168, + "mean": 790096.8, + "p95": 790168 + }, + "cpu_percent": { + "min": 10.6, + "max": 10.9, + "mean": 10.7, + "p95": 10.9 + } + } + }, + { + "sample": 2, + "resources": { + "sample_count": 5, + "interval_ms": 200, + "process_count": { + "min": 9, + "max": 9 + }, + "rss_kib": { + "min": 775500, + "max": 775656, + "mean": 775595.2, + "p95": 775656 + }, + "cpu_percent": { + "min": 10, + "max": 10.2, + "mean": 10.1, + "p95": 10.2 + } + } + }, + { + "sample": 3, + "resources": { + "sample_count": 5, + "interval_ms": 200, + "process_count": { + "min": 9, + "max": 9 + }, + "rss_kib": { + "min": 776464, + "max": 776628, + "mean": 776561.6, + "p95": 776628 + }, + "cpu_percent": { + "min": 9.7, + "max": 10, + "mean": 9.9, + "p95": 10 + } + } + } + ], "resource_thresholds": { "max_rss_kib": 1500000, "max_process_count": 20, diff --git a/docs/m0-spike.md b/docs/m0-spike.md index 7233101..b593cb4 100644 --- a/docs/m0-spike.md +++ b/docs/m0-spike.md @@ -19,7 +19,7 @@ The spike starts only loopback listeners and uses generated, one-day self-signed Clark is launched directly with `--remote-debugging-address=127.0.0.1`. The runner waits on `/json/version`, discovers the startup page through `/json/list`, connects to its `webSocketDebuggerUrl`, and navigates to the already-listening loopback fixture before triggering test traffic. This avoids `clarkserve`'s current `0.0.0.0` default; a protected gateway and short-lived credentials remain required outside a local Spike. -Every JSONL line has `schema_version`, `session_id`, `target_id`, and `kind`. HTTP records use `request_id`; WebSocket records use the CDP `requestId` as `connection_id`. Kind-specific fields are nested under `request`, `response`, `headers`, `body`, or `error`. Query strings are removed, sensitive headers are replaced by `[REDACTED]`, and WebSocket payloads are never persisted. +Every JSONL line has `schema_version`, `session_id`, `target_id`, and `kind`. HTTP records use `request_id`; WebSocket records use the CDP `requestId` as `connection_id`. Kind-specific fields are nested under `request`, `response`, `headers`, `body`, or `error`. Query strings are removed, sensitive headers are replaced by `[REDACTED]`, and WebSocket payloads are never persisted. In schema `1.0`, `websocket_frame.payload_bytes` keeps its original meaning: the UTF-8 byte length of CDP `payloadData` (base64 text for opcode 2). Binary frames additionally expose `decoded_payload_bytes` for the decoded payload size, which is also used by the frame-size limit. Response bodies are safe by default and never contain content. Their stable metadata is `{state,source,encoding,storage,reason,bytes}`: `source` is `network`, `memory_cache`, `disk_cache`, `prefetch_cache`, or `service_worker`; `encoding` is `utf8`, `base64`, or `unknown`; and `storage` remains `omitted`. Oversize and CDP-unavailable bodies keep `size_limit` and `unavailable` states. The local fixture fetches a cacheable response twice and an `application/octet-stream` response to assert cached and binary semantics. @@ -45,6 +45,6 @@ Session filtering happens before pagination and export serialization. The valida | Multi-target/session isolation | Pass | Two target/session pairs keep query, export, and real socket-close records isolated. | | Startup `Page.navigate` | Sampled | Three successful startup/full-traffic samples are required; exact `Render process gone.` retries are recorded and must stay at or below a 0.34 failure rate. Other discovery, WebSocket, timeout, and post-startup errors fail immediately. | -Each full sample takes five `ps` samples 200 ms apart from the browser process tree and reports min/max/mean/p95. The local guardrails are RSS max 1,500,000 KiB and at most 20 processes; exceeding either fails the run. These are single-instance development thresholds, not production capacity claims. Tune with `M0_RESOURCE_SAMPLES`, `M0_RESOURCE_SAMPLE_INTERVAL_MS`, `M0_MAX_RSS_KIB`, and `M0_MAX_PROCESS_COUNT` under the intended container limits. +Each full sample takes five `ps` samples 200 ms apart from the browser process tree and reports min/max/mean/p95. `resource_samples` retains the summary for every startup/full-traffic sample; `resources` remains the latest summary for existing consumers. The local guardrails are RSS max 1,500,000 KiB and at most 20 processes; exceeding either fails the run. These are single-instance development thresholds, not production capacity claims. Tune with `M0_RESOURCE_SAMPLES`, `M0_RESOURCE_SAMPLE_INTERVAL_MS`, `M0_MAX_RSS_KIB`, and `M0_MAX_PROCESS_COUNT` under the intended container limits. The runner restarts Clark at most three times per startup sample only from the local navigation/readiness block, and only after CDP reports the exact detached reason `Render process gone.`. Every failed attempt is retained with sample, attempt, error, and detached reason. A timeout without that reason and every discovery, connection, or post-startup error fail immediately with the original message. The default renderer failure-rate guardrail is 0.34 and can be tightened with `M0_MAX_RENDERER_FAILURE_RATE` after more samples. diff --git a/scripts/m0-spike.mjs b/scripts/m0-spike.mjs index 64d1201..aa4f23b 100644 --- a/scripts/m0-spike.mjs +++ b/scripts/m0-spike.mjs @@ -601,9 +601,10 @@ export function eventCollector(sessionId, targetId, { case "Network.webSocketFrameReceived": { const direction = method.endsWith("Sent") ? "sent" : "received"; mark(`ws_${direction}`); - const payloadBytes = params.response.opcode === 2 + const payloadBytes = Buffer.byteLength(params.response.payloadData); + const decodedPayloadBytes = params.response.opcode === 2 ? Buffer.from(params.response.payloadData, "base64").length - : Buffer.byteLength(params.response.payloadData); + : payloadBytes; let state = webSocketLimits.get(requestId); if (!state) { state = { window: null, windowEvents: 0, emitted: 0 }; @@ -616,11 +617,11 @@ export function eventCollector(sessionId, targetId, { } state.windowEvents++; let dropReason; - if (payloadBytes > maxWebSocketFrameBytes) dropReason = "frame_size_limit"; + if (decodedPayloadBytes > maxWebSocketFrameBytes) dropReason = "frame_size_limit"; else if (state.windowEvents > maxWebSocketEventsPerSecond) dropReason = "rate_limit"; else if (state.emitted >= maxWebSocketEventsPerConnection) dropReason = "event_limit"; if (dropReason) { - dropWebSocketFrame(requestId, dropReason, payloadBytes); + dropWebSocketFrame(requestId, dropReason, decodedPayloadBytes); break; } state.emitted++; @@ -629,6 +630,7 @@ export function eventCollector(sessionId, targetId, { direction, opcode: params.response.opcode, payload_bytes: payloadBytes, + ...(params.response.opcode === 2 && { decoded_payload_bytes: decodedPayloadBytes }), payload: { state: "omitted", reason: "frame_policy" }, }); break; @@ -704,7 +706,7 @@ function assertIsolation(records, sessions) { } } -async function main(attemptFailures = [], startup = { requested_samples: 1, successful_samples: 1, max_renderer_failure_rate: 1 }) { +async function main(attemptFailures = [], startup = { requested_samples: 1, successful_samples: 1, max_renderer_failure_rate: 1 }, resourceSamples = []) { const binary = process.env.CLARK_BINARY_PATH; assert(binary, "set CLARK_BINARY_PATH to the clark-browser Chromium binary"); const outputDir = path.resolve(process.env.M0_OUTPUT_DIR ?? "artifacts"); @@ -804,6 +806,7 @@ async function main(attemptFailures = [], startup = { requested_samples: 1, succ const resources = await processBaseline(browserPid, resourceSampleCount, resourceSampleIntervalMs); assert(resources.rss_kib.max <= maxRssKib, `browser RSS ${resources.rss_kib.max} KiB exceeds ${maxRssKib} KiB`); assert(resources.process_count.max <= maxProcessCount, `browser process count ${resources.process_count.max} exceeds ${maxProcessCount}`); + resourceSamples.push({ sample: startup.successful_samples, resources }); browserClient = await new CDP(version.webSocketDebuggerUrl).connect(); await browserClient.call("Target.closeTarget", { targetId: page.id }); await cdp.closed; @@ -866,6 +869,7 @@ async function main(attemptFailures = [], startup = { requested_samples: 1, succ sensitive_body_redaction: "pass", }, resources, + resource_samples: resourceSamples, resource_thresholds: { max_rss_kib: maxRssKib, max_process_count: maxProcessCount, conclusion: "within_threshold" }, startup: { ...startup, @@ -896,6 +900,7 @@ async function main(attemptFailures = [], startup = { requested_samples: 1, succ async function runSpike() { const failures = []; + const resourceSamples = []; const startup = { requested_samples: Number(process.env.M0_STARTUP_SAMPLES ?? 3), successful_samples: 0, @@ -907,7 +912,7 @@ async function runSpike() { for (let attempt = 1; attempt <= 3; attempt++) { startup.successful_samples = sample; try { - await main(failures, startup); + await main(failures, startup, resourceSamples); break; } catch (error) { const original = error.cause ?? error; diff --git a/test/m0-spike.test.mjs b/test/m0-spike.test.mjs index e199469..c20fedd 100644 --- a/test/m0-spike.test.mjs +++ b/test/m0-spike.test.mjs @@ -1,5 +1,6 @@ import assert from "node:assert/strict"; import { randomUUID } from "node:crypto"; +import { readFile } from "node:fs/promises"; import test from "node:test"; import { @@ -60,6 +61,25 @@ test("WebSocket limits aggregate drops without payloads", () => { assert.deepEqual(dropped.dropped.reasons, { rate_limit: 2, frame_size_limit: 1, event_limit: 1 }); assert.equal(dropped.dropped.count, 4); assert(!JSON.stringify(dropped).includes("YWJjZGVm")); + + const binaryCollector = eventCollector("session-a", "target-a"); + binaryCollector.listener("Network.webSocketFrameReceived", { + requestId: "ws-binary", + timestamp: 1, + response: { opcode: 2, payloadData: "AP8=" }, + }); + assert.deepEqual(binaryCollector.records[0], { + schema_version: "1.0", + session_id: "session-a", + target_id: "target-a", + kind: "websocket_frame", + connection_id: "ws-binary", + direction: "received", + opcode: 2, + payload_bytes: 4, + decoded_payload_bytes: 2, + payload: { state: "omitted", reason: "frame_policy" }, + }); }); test("query and export isolate sessions before pagination", () => { @@ -86,3 +106,10 @@ test("resource baseline summarizes repeated samples", () => { cpu_percent: { min: 10, max: 30, mean: 20, p95: 30 }, }); }); + +test("fixed report retains every startup resource baseline", async () => { + const report = JSON.parse(await readFile(new URL("../artifacts/m0-report.json", import.meta.url), "utf8")); + assert(Array.isArray(report.resource_samples)); + assert.deepEqual(report.resource_samples.map(({ sample }) => sample), [1, 2, 3]); + assert(report.resource_samples.every(({ resources }) => resources.sample_count > 1)); +});