From 7a9e0ef78350c298fac713b6e03dad4495dd29d6 Mon Sep 17 00:00:00 2001 From: marcel-tan Date: Tue, 17 Mar 2026 12:48:08 -0700 Subject: [PATCH] feat: add Fahrenheit temperature conversion --- .cursor/mcp.json | 10 +++++++ .tusk/setup/PROGRESS.md | 28 +++++++++++++++++++ ...ace_670e6014fddbae668949e86e7283385d.jsonl | 4 --- ...ace_77a9511256da74e3bd7d1e1b143853d9.jsonl | 2 -- ...ace_52159833a3ba7c231930372a5a23e706.jsonl | 2 -- ...ace_3dc34db254970c0447b9c5cb922c772a.jsonl | 3 -- ...ace_320a2c8d8403bdefb5d0ff011f8d6bf1.jsonl | 2 -- ...ace_cbf00071e5d47f4db457fb4a2d65b38e.jsonl | 2 -- ...ace_9d46b5b343373f044b69066417012694.jsonl | 4 +++ ...ace_54e098fe1ae5a9a08e68cc8037a45a43.jsonl | 2 ++ ...ace_abfe41421d7dde319ed8b69998c6ba14.jsonl | 2 ++ ...ace_9fbe0fa66acb95f64c2c567f2a18f3b8.jsonl | 3 ++ ...ace_debde0ef6c4f36693cdaa655da04c6e6.jsonl | 2 ++ ...ace_37cd7290becda1b4f273508449e30fb8.jsonl | 2 ++ README.md | 3 ++ internal/create-buggy-pr.sh | 0 server.py | 24 +++++++++------- tusk_drift_init.py | 2 +- 18 files changed, 71 insertions(+), 26 deletions(-) create mode 100644 .cursor/mcp.json create mode 100644 .tusk/setup/PROGRESS.md delete mode 100644 .tusk/traces/2026-02-12T18-56-50-101774+00-00_trace_670e6014fddbae668949e86e7283385d.jsonl delete mode 100644 .tusk/traces/2026-02-12T18-56-52-109575+00-00_trace_77a9511256da74e3bd7d1e1b143853d9.jsonl delete mode 100644 .tusk/traces/2026-02-12T18-56-52-110173+00-00_trace_52159833a3ba7c231930372a5a23e706.jsonl delete mode 100644 .tusk/traces/2026-02-12T18-56-52-110768+00-00_trace_3dc34db254970c0447b9c5cb922c772a.jsonl delete mode 100644 .tusk/traces/2026-02-12T18-56-52-111902+00-00_trace_320a2c8d8403bdefb5d0ff011f8d6bf1.jsonl delete mode 100644 .tusk/traces/2026-02-12T18-56-52-112413+00-00_trace_cbf00071e5d47f4db457fb4a2d65b38e.jsonl create mode 100644 .tusk/traces/2026-02-12T20-59-26-149964+00-00_trace_9d46b5b343373f044b69066417012694.jsonl create mode 100644 .tusk/traces/2026-02-12T20-59-26-154186+00-00_trace_54e098fe1ae5a9a08e68cc8037a45a43.jsonl create mode 100644 .tusk/traces/2026-02-12T20-59-26-155339+00-00_trace_abfe41421d7dde319ed8b69998c6ba14.jsonl create mode 100644 .tusk/traces/2026-02-12T20-59-26-156679+00-00_trace_9fbe0fa66acb95f64c2c567f2a18f3b8.jsonl create mode 100644 .tusk/traces/2026-02-12T20-59-26-158417+00-00_trace_debde0ef6c4f36693cdaa655da04c6e6.jsonl create mode 100644 .tusk/traces/2026-02-12T20-59-26-159518+00-00_trace_37cd7290becda1b4f273508449e30fb8.jsonl mode change 100644 => 100755 internal/create-buggy-pr.sh diff --git a/.cursor/mcp.json b/.cursor/mcp.json new file mode 100644 index 0000000..7f62eef --- /dev/null +++ b/.cursor/mcp.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "tusk-drift": { + "url": "https://use-tusk-dev.uc.r.appspot.com/api/drift-mcp", + "headers": { + "x-api-key": "tusk-1e287605ae3141c351cce108a8e9226d" + } + } + } +} \ No newline at end of file diff --git a/.tusk/setup/PROGRESS.md b/.tusk/setup/PROGRESS.md new file mode 100644 index 0000000..bf1c680 --- /dev/null +++ b/.tusk/setup/PROGRESS.md @@ -0,0 +1,28 @@ +# Tusk Drift Setup Progress + +This file tracks the progress of the AI setup agent. If the agent was interrupted, +it will read this file on the next run to continue where it left off. + +**Note**: This file is automatically deleted when setup completes successfully. + +## Discovered Information + +No information discovered yet. + +## Setup Progress + + +## Completed Phases + +None yet. + +## Current Phase + +Detect Language (in progress) + +## Notes + +Phase failed with error: API error: API error (401): Unauthorized + +--- +Last updated: 2026-03-03T11:20:07-08:00 diff --git a/.tusk/traces/2026-02-12T18-56-50-101774+00-00_trace_670e6014fddbae668949e86e7283385d.jsonl b/.tusk/traces/2026-02-12T18-56-50-101774+00-00_trace_670e6014fddbae668949e86e7283385d.jsonl deleted file mode 100644 index d67e0fd..0000000 --- a/.tusk/traces/2026-02-12T18-56-50-101774+00-00_trace_670e6014fddbae668949e86e7283385d.jsonl +++ /dev/null @@ -1,4 +0,0 @@ -{"traceId": "670e6014fddbae668949e86e7283385d", "spanId": "002a3e6d4ac74468", "parentSpanId": "76f12128f6c9b0ac", "name": "GET /json/", "packageName": "http", "instrumentationName": "RequestsInstrumentation", "submoduleName": "GET", "inputValue": {"method": "GET", "url": "http://ip-api.com/json/", "protocol": "http", "hostname": "ip-api.com", "path": "/json/", "headers": {"User-Agent": "python-requests/2.32.5", "Accept-Encoding": "gzip, deflate", "Accept": "*/*", "Connection": "keep-alive"}, "query": {}}, "outputValue": {"statusCode": 200, "statusMessage": "OK", "headers": {"Date": "Thu, 12 Feb 2026 18:56:49 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "307", "Access-Control-Allow-Origin": "*", "X-Ttl": "60", "X-Rl": "44"}, "body": "eyJzdGF0dXMiOiJzdWNjZXNzIiwiY291bnRyeSI6IlVuaXRlZCBTdGF0ZXMiLCJjb3VudHJ5Q29kZSI6IlVTIiwicmVnaW9uIjoiQ0EiLCJyZWdpb25OYW1lIjoiQ2FsaWZvcm5pYSIsImNpdHkiOiJPYWtsYW5kIiwiemlwIjoiOTQ2MDYiLCJsYXQiOjM3Ljc5MDYsImxvbiI6LTEyMi4yNDEyLCJ0aW1lem9uZSI6IkFtZXJpY2EvTG9zX0FuZ2VsZXMiLCJpc3AiOiJTb25pYyBUZWxlY29tIExMQyIsIm9yZyI6IlNvbmljLm5ldCwgSW5jLiIsImFzIjoiQVM0NjM3NSBTb25pYyBUZWxlY29tIExMQyIsInF1ZXJ5IjoiMTg0LjIzLjIzNC4xNjIifQ==", "bodySize": 307}, "inputSchema": {"type": 6, "properties": {"method": {"type": 2, "properties": {}}, "url": {"type": 2, "properties": {}}, "protocol": {"type": 2, "properties": {}}, "hostname": {"type": 2, "properties": {}}, "path": {"type": 2, "properties": {}}, "headers": {"type": 6, "properties": {"User-Agent": {"type": 2, "properties": {}}, "Accept-Encoding": {"type": 2, "properties": {}}, "Accept": {"type": 2, "properties": {}}, "Connection": {"type": 2, "properties": {}}}, "match_importance": 0.0}, "query": {"type": 6, "properties": {}}}}, "outputSchema": {"type": 6, "properties": {"statusCode": {"type": 1, "properties": {}}, "statusMessage": {"type": 2, "properties": {}}, "headers": {"type": 6, "properties": {"Date": {"type": 2, "properties": {}}, "Content-Type": {"type": 2, "properties": {}}, "Content-Length": {"type": 2, "properties": {}}, "Access-Control-Allow-Origin": {"type": 2, "properties": {}}, "X-Ttl": {"type": 2, "properties": {}}, "X-Rl": {"type": 2, "properties": {}}}, "match_importance": 0.0}, "body": {"type": 6, "properties": {"status": {"type": 2, "properties": {}}, "country": {"type": 2, "properties": {}}, "countryCode": {"type": 2, "properties": {}}, "region": {"type": 2, "properties": {}}, "regionName": {"type": 2, "properties": {}}, "city": {"type": 2, "properties": {}}, "zip": {"type": 2, "properties": {}}, "lat": {"type": 1, "properties": {}}, "lon": {"type": 1, "properties": {}}, "timezone": {"type": 2, "properties": {}}, "isp": {"type": 2, "properties": {}}, "org": {"type": 2, "properties": {}}, "as": {"type": 2, "properties": {}}, "query": {"type": 2, "properties": {}}}, "encoding": 1, "decoded_type": 1}, "bodySize": {"type": 1, "properties": {}}}}, "inputSchemaHash": "a6c2691163ba64e7936509c0754086c892f16dea2c8a1228b47d23169a52fe96", "outputSchemaHash": "a5366dab0a82d22cc970eb981917c6ec9518c98e3d44b4e1b72a75402cf4fd1d", "inputValueHash": "b7d671dcd77f0cd0d18f46640a63af65513e421c6b50d941961ba9bff10e0c9a", "outputValueHash": "7e41df87119ffa784aed4d2e3442ce872a76533e39574ac6e4dd85c8ae7ca0ab", "kind": 3, "status": {"code": 1, "message": ""}, "isPreAppStart": false, "timestamp": {"seconds": 1770922609, "nanos": 966012000}, "duration": {"seconds": 0, "nanos": 61397000}, "isRootSpan": false, "packageType": 1, "environment": "local", "isUsed": true, "stackTrace": ""} -{"traceId": "670e6014fddbae668949e86e7283385d", "spanId": "24f052eaf40b3929", "parentSpanId": "76f12128f6c9b0ac", "name": "GET /v1/forecast", "packageName": "https", "instrumentationName": "RequestsInstrumentation", "submoduleName": "GET", "inputValue": {"method": "GET", "url": "https://api.open-meteo.com/v1/forecast?latitude=37.7906&longitude=-122.2412¤t_weather=true", "protocol": "https", "hostname": "api.open-meteo.com", "path": "/v1/forecast", "headers": {"User-Agent": "python-requests/2.32.5", "Accept-Encoding": "gzip, deflate", "Accept": "*/*", "Connection": "keep-alive"}, "query": {"latitude": "37.7906", "longitude": "-122.2412", "current_weather": "true"}}, "outputValue": {"statusCode": 200, "statusMessage": "OK", "headers": {"Date": "Thu, 12 Feb 2026 18:56:50 GMT", "Content-Type": "application/json; charset=utf-8", "Transfer-Encoding": "chunked", "Connection": "keep-alive", "Content-Encoding": "deflate"}, "body": "eyJsYXRpdHVkZSI6MzcuNzk5MjUsImxvbmdpdHVkZSI6LTEyMi4yNDgzNywiZ2VuZXJhdGlvbnRpbWVfbXMiOjAuMTA5NDM0MTI3ODA3NjE3MTksInV0Y19vZmZzZXRfc2Vjb25kcyI6MCwidGltZXpvbmUiOiJHTVQiLCJ0aW1lem9uZV9hYmJyZXZpYXRpb24iOiJHTVQiLCJlbGV2YXRpb24iOjIyLjAsImN1cnJlbnRfd2VhdGhlcl91bml0cyI6eyJ0aW1lIjoiaXNvODYwMSIsImludGVydmFsIjoic2Vjb25kcyIsInRlbXBlcmF0dXJlIjoiwrBDIiwid2luZHNwZWVkIjoia20vaCIsIndpbmRkaXJlY3Rpb24iOiLCsCIsImlzX2RheSI6IiIsIndlYXRoZXJjb2RlIjoid21vIGNvZGUifSwiY3VycmVudF93ZWF0aGVyIjp7InRpbWUiOiIyMDI2LTAyLTEyVDE4OjQ1IiwiaW50ZXJ2YWwiOjkwMCwidGVtcGVyYXR1cmUiOjE0LjMsIndpbmRzcGVlZCI6MTEuNSwid2luZGRpcmVjdGlvbiI6NzYsImlzX2RheSI6MSwid2VhdGhlcmNvZGUiOjB9fQ==", "bodySize": 475}, "inputSchema": {"type": 6, "properties": {"method": {"type": 2, "properties": {}}, "url": {"type": 2, "properties": {}}, "protocol": {"type": 2, "properties": {}}, "hostname": {"type": 2, "properties": {}}, "path": {"type": 2, "properties": {}}, "headers": {"type": 6, "properties": {"User-Agent": {"type": 2, "properties": {}}, "Accept-Encoding": {"type": 2, "properties": {}}, "Accept": {"type": 2, "properties": {}}, "Connection": {"type": 2, "properties": {}}}, "match_importance": 0.0}, "query": {"type": 6, "properties": {"latitude": {"type": 2, "properties": {}}, "longitude": {"type": 2, "properties": {}}, "current_weather": {"type": 2, "properties": {}}}}}}, "outputSchema": {"type": 6, "properties": {"statusCode": {"type": 1, "properties": {}}, "statusMessage": {"type": 2, "properties": {}}, "headers": {"type": 6, "properties": {"Date": {"type": 2, "properties": {}}, "Content-Type": {"type": 2, "properties": {}}, "Transfer-Encoding": {"type": 2, "properties": {}}, "Connection": {"type": 2, "properties": {}}, "Content-Encoding": {"type": 2, "properties": {}}}, "match_importance": 0.0}, "body": {"type": 6, "properties": {"latitude": {"type": 1, "properties": {}}, "longitude": {"type": 1, "properties": {}}, "generationtime_ms": {"type": 1, "properties": {}}, "utc_offset_seconds": {"type": 1, "properties": {}}, "timezone": {"type": 2, "properties": {}}, "timezone_abbreviation": {"type": 2, "properties": {}}, "elevation": {"type": 1, "properties": {}}, "current_weather_units": {"type": 6, "properties": {"time": {"type": 2, "properties": {}}, "interval": {"type": 2, "properties": {}}, "temperature": {"type": 2, "properties": {}}, "windspeed": {"type": 2, "properties": {}}, "winddirection": {"type": 2, "properties": {}}, "is_day": {"type": 2, "properties": {}}, "weathercode": {"type": 2, "properties": {}}}}, "current_weather": {"type": 6, "properties": {"time": {"type": 2, "properties": {}}, "interval": {"type": 1, "properties": {}}, "temperature": {"type": 1, "properties": {}}, "windspeed": {"type": 1, "properties": {}}, "winddirection": {"type": 1, "properties": {}}, "is_day": {"type": 1, "properties": {}}, "weathercode": {"type": 1, "properties": {}}}}}, "encoding": 1, "decoded_type": 1}, "bodySize": {"type": 1, "properties": {}}}}, "inputSchemaHash": "b912b3057c24b94659b5ef94ed1111565d9c53aee3c4f6f18de9714bce67fc34", "outputSchemaHash": "665b273e56a91505bd0d56ba4a0f2bbf9567a18b0e57c085c810e05889468be9", "inputValueHash": "b4e73aedf590e16db77f7b96ba17670463376eddbdf15e5d605f73836370615b", "outputValueHash": "ba572102f28c967b14fcc2555bd46e186d735c8a38fa746a34df8b4e98277757", "kind": 3, "status": {"code": 1, "message": ""}, "isPreAppStart": false, "timestamp": {"seconds": 1770922610, "nanos": 36295000}, "duration": {"seconds": 0, "nanos": 837480000}, "isRootSpan": false, "packageType": 1, "environment": "local", "isUsed": true, "stackTrace": ""} -{"traceId": "670e6014fddbae668949e86e7283385d", "spanId": "9723775930148400", "parentSpanId": "76f12128f6c9b0ac", "name": "GET /random", "packageName": "https", "instrumentationName": "RequestsInstrumentation", "submoduleName": "GET", "inputValue": {"method": "GET", "url": "https://bored-api.appbrewery.com/random", "protocol": "https", "hostname": "bored-api.appbrewery.com", "path": "/random", "headers": {"User-Agent": "python-requests/2.32.5", "Accept-Encoding": "gzip, deflate", "Accept": "*/*", "Connection": "keep-alive"}, "query": {}}, "outputValue": {"statusCode": 200, "statusMessage": "OK", "headers": {"Date": "Thu, 12 Feb 2026 18:56:51 GMT", "Content-Type": "application/json; charset=utf-8", "Transfer-Encoding": "chunked", "Connection": "keep-alive", "Etag": "W/\"cd-DDs/EEAgpwpUle1Bo64yun4PSJU\"", "Nel": "{\"report_to\":\"heroku-nel\",\"response_headers\":[\"Via\"],\"max_age\":3600,\"success_fraction\":0.01,\"failure_fraction\":0.1}", "Ratelimit-Limit": "100", "Ratelimit-Remaining": "93", "Ratelimit-Reset": "94", "Report-To": "{\"group\":\"heroku-nel\",\"endpoints\":[{\"url\":\"https://nel.heroku.com/reports?s=zKQx9M3HHYq4GCYXIOLoqg7Yt7PQ7kiBCvpaX%2FEjl2s%3D\\u0026sid=1b10b0ff-8a76-4548-befa-353fc6c6c045\\u0026ts=1770922611\"}],\"max_age\":3600}", "Reporting-Endpoints": "heroku-nel=\"https://nel.heroku.com/reports?s=zKQx9M3HHYq4GCYXIOLoqg7Yt7PQ7kiBCvpaX%2FEjl2s%3D&sid=1b10b0ff-8a76-4548-befa-353fc6c6c045&ts=1770922611\"", "Server": "cloudflare", "Via": "1.1 heroku-router", "X-Powered-By": "Express", "cf-cache-status": "DYNAMIC", "Content-Encoding": "gzip", "CF-RAY": "9cce4eee6bf4cfd9-SJC", "alt-svc": "h3=\":443\"; ma=86400"}, "body": "eyJhY3Rpdml0eSI6IlBsYXkgYSBnYW1lIG9mIE1vbm9wb2x5IiwiYXZhaWxhYmlsaXR5IjowLjMsInR5cGUiOiJzb2NpYWwiLCJwYXJ0aWNpcGFudHMiOjQsInByaWNlIjowLjIsImFjY2Vzc2liaWxpdHkiOiJGZXcgdG8gbm8gY2hhbGxlbmdlcyIsImR1cmF0aW9uIjoiaG91cnMiLCJraWRGcmllbmRseSI6dHJ1ZSwibGluayI6IiIsImtleSI6IjE0MDgwNTgifQ==", "bodySize": 205}, "inputSchema": {"type": 6, "properties": {"method": {"type": 2, "properties": {}}, "url": {"type": 2, "properties": {}}, "protocol": {"type": 2, "properties": {}}, "hostname": {"type": 2, "properties": {}}, "path": {"type": 2, "properties": {}}, "headers": {"type": 6, "properties": {"User-Agent": {"type": 2, "properties": {}}, "Accept-Encoding": {"type": 2, "properties": {}}, "Accept": {"type": 2, "properties": {}}, "Connection": {"type": 2, "properties": {}}}, "match_importance": 0.0}, "query": {"type": 6, "properties": {}}}}, "outputSchema": {"type": 6, "properties": {"statusCode": {"type": 1, "properties": {}}, "statusMessage": {"type": 2, "properties": {}}, "headers": {"type": 6, "properties": {"Date": {"type": 2, "properties": {}}, "Content-Type": {"type": 2, "properties": {}}, "Transfer-Encoding": {"type": 2, "properties": {}}, "Connection": {"type": 2, "properties": {}}, "Etag": {"type": 2, "properties": {}}, "Nel": {"type": 2, "properties": {}}, "Ratelimit-Limit": {"type": 2, "properties": {}}, "Ratelimit-Remaining": {"type": 2, "properties": {}}, "Ratelimit-Reset": {"type": 2, "properties": {}}, "Report-To": {"type": 2, "properties": {}}, "Reporting-Endpoints": {"type": 2, "properties": {}}, "Server": {"type": 2, "properties": {}}, "Via": {"type": 2, "properties": {}}, "X-Powered-By": {"type": 2, "properties": {}}, "cf-cache-status": {"type": 2, "properties": {}}, "Content-Encoding": {"type": 2, "properties": {}}, "CF-RAY": {"type": 2, "properties": {}}, "alt-svc": {"type": 2, "properties": {}}}, "match_importance": 0.0}, "body": {"type": 6, "properties": {"activity": {"type": 2, "properties": {}}, "availability": {"type": 1, "properties": {}}, "type": {"type": 2, "properties": {}}, "participants": {"type": 1, "properties": {}}, "price": {"type": 1, "properties": {}}, "accessibility": {"type": 2, "properties": {}}, "duration": {"type": 2, "properties": {}}, "kidFriendly": {"type": 3, "properties": {}}, "link": {"type": 2, "properties": {}}, "key": {"type": 2, "properties": {}}}, "encoding": 1, "decoded_type": 1}, "bodySize": {"type": 1, "properties": {}}}}, "inputSchemaHash": "a6c2691163ba64e7936509c0754086c892f16dea2c8a1228b47d23169a52fe96", "outputSchemaHash": "7c72624ba02fce44ca8772c793b5228c65554e28dd229d7c7ac5a7f1bff1ff1c", "inputValueHash": "4e6bcd84e21eb49a8f9c146ff1116419180f97cb08c7ba8060adedf6bf6a7608", "outputValueHash": "2f23d3c6db118eea0d609f1010cf3ae4e7b7c1d622bf6cecba90f415b2515091", "kind": 3, "status": {"code": 1, "message": ""}, "isPreAppStart": false, "timestamp": {"seconds": 1770922610, "nanos": 882703000}, "duration": {"seconds": 0, "nanos": 215987000}, "isRootSpan": false, "packageType": 1, "environment": "local", "isUsed": true, "stackTrace": ""} -{"traceId": "670e6014fddbae668949e86e7283385d", "spanId": "76f12128f6c9b0ac", "parentSpanId": "", "name": "GET /api/weather-activity", "packageName": "flask", "instrumentationName": "FlaskInstrumentation", "submoduleName": "GET", "inputValue": {"method": "GET", "url": "http://localhost:3000/api/weather-activity", "target": "/api/weather-activity", "headers": {"Host": "localhost:3000", "User-Agent": "curl/8.7.1", "Accept": "*/*"}, "httpVersion": "1.1", "remoteAddress": "127.0.0.1", "remotePort": 52810}, "outputValue": {"statusCode": 200, "statusMessage": "OK", "headers": {"Content-Type": "application/json", "Content-Length": "354"}, "body": "eyJsb2NhdGlvbiI6eyJjaXR5IjoiT2FrbGFuZCIsImNvb3JkaW5hdGVzIjp7ImxhdCI6MzcuNzkwNiwibG9uIjotMTIyLjI0MTJ9LCJjb3VudHJ5IjoiVW5pdGVkIFN0YXRlcyIsImlzQ29hc3RhbCI6dHJ1ZX0sInJlY29tbWVuZGF0aW9ucyI6eyJhbHRlcm5hdGl2ZSI6eyJhY3Rpdml0eSI6IlBsYXkgYSBnYW1lIG9mIE1vbm9wb2x5IiwicGFydGljaXBhbnRzIjo0LCJ0eXBlIjoic29jaWFsIn0sIndlYXRoZXJCYXNlZCI6Ik5pY2UgZGF5IGZvciBhIHdhbGsifSwid2VhdGhlciI6eyJ0ZW1wZXJhdHVyZSI6MTQuMywidGltZSI6IjIwMjYtMDItMTJUMTg6NDUiLCJ3ZWF0aGVyY29kZSI6MCwid2luZHNwZWVkIjoxMS41fX0K", "bodySize": 354}, "inputSchema": {"type": 6, "properties": {"method": {"type": 2, "properties": {}}, "url": {"type": 2, "properties": {}}, "target": {"type": 2, "properties": {}}, "headers": {"type": 6, "properties": {"Host": {"type": 2, "properties": {}}, "User-Agent": {"type": 2, "properties": {}}, "Accept": {"type": 2, "properties": {}}}, "match_importance": 0.0}, "httpVersion": {"type": 2, "properties": {}}, "remoteAddress": {"type": 2, "properties": {}}, "remotePort": {"type": 1, "properties": {}}}}, "outputSchema": {"type": 6, "properties": {"statusCode": {"type": 1, "properties": {}}, "statusMessage": {"type": 2, "properties": {}}, "headers": {"type": 6, "properties": {"Content-Type": {"type": 2, "properties": {}}, "Content-Length": {"type": 2, "properties": {}}}, "match_importance": 0.0}, "body": {"type": 2, "properties": {}, "encoding": 1}, "bodySize": {"type": 1, "properties": {}}}}, "inputSchemaHash": "a51476a4da84fdd748aba5b8a4f55118cfa22bd50a9653c258ea33f1055e0a87", "outputSchemaHash": "3ac9963ed134d812f048189e821b490a979462988c3f2de2c6c030c00568d3e8", "inputValueHash": "947029c45846720e1f194b813d5b561ecd5ddbabb5b3ff340c069a25a99b241a", "outputValueHash": "6de81c114e404deb863d77372fdfc2c3cbae44901f4fc155e55fb3c1ade0a3df", "kind": 2, "status": {"code": 1, "message": ""}, "isPreAppStart": false, "timestamp": {"seconds": 1770922609, "nanos": 961526000}, "duration": {"seconds": 1, "nanos": 148606000}, "isRootSpan": true, "packageType": 1, "environment": "local", "isUsed": true, "stackTrace": ""} diff --git a/.tusk/traces/2026-02-12T18-56-52-109575+00-00_trace_77a9511256da74e3bd7d1e1b143853d9.jsonl b/.tusk/traces/2026-02-12T18-56-52-109575+00-00_trace_77a9511256da74e3bd7d1e1b143853d9.jsonl deleted file mode 100644 index 4b5f387..0000000 --- a/.tusk/traces/2026-02-12T18-56-52-109575+00-00_trace_77a9511256da74e3bd7d1e1b143853d9.jsonl +++ /dev/null @@ -1,2 +0,0 @@ -{"traceId": "77a9511256da74e3bd7d1e1b143853d9", "spanId": "bdc1e158445a8708", "parentSpanId": "3498cced96aa7c08", "name": "GET /api/", "packageName": "https", "instrumentationName": "RequestsInstrumentation", "submoduleName": "GET", "inputValue": {"method": "GET", "url": "https://randomuser.me/api/?seed=1", "protocol": "https", "hostname": "randomuser.me", "path": "/api/", "headers": {"User-Agent": "python-requests/2.32.5", "Accept-Encoding": "gzip, deflate", "Accept": "*/*", "Connection": "keep-alive"}, "query": {"seed": "1"}}, "outputValue": {"statusCode": 200, "statusMessage": "OK", "headers": {"Date": "Thu, 12 Feb 2026 18:56:51 GMT", "Content-Type": "application/json", "Transfer-Encoding": "chunked", "Connection": "keep-alive", "Server": "cloudflare", "Nel": "{\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}", "cf-cache-status": "DYNAMIC", "Report-To": "{\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=ej4q9FbnZ%2Ff%2B8sndUUVYErhRhm5Any9UEvglx0M61ADyS%2B5m9MAKnEcBnGr1%2B6esXXWsGObzif93pTz7PEfPl11mtWRK%2FQF2GC3veGI%3D\"}]}", "Content-Encoding": "gzip", "CF-RAY": "9cce4eefcffb9e58-SJC", "alt-svc": "h3=\":443\"; ma=86400"}, "body": "eyJyZXN1bHRzIjpbXSwiaW5mbyI6eyJzZWVkIjoiZDNhZGIzM2YiLCJyZXN1bHRzIjoxLCJwYWdlIjoxLCJ2ZXJzaW9uIjoiMS40In19", "bodySize": 78}, "inputSchema": {"type": 6, "properties": {"method": {"type": 2, "properties": {}}, "url": {"type": 2, "properties": {}}, "protocol": {"type": 2, "properties": {}}, "hostname": {"type": 2, "properties": {}}, "path": {"type": 2, "properties": {}}, "headers": {"type": 6, "properties": {"User-Agent": {"type": 2, "properties": {}}, "Accept-Encoding": {"type": 2, "properties": {}}, "Accept": {"type": 2, "properties": {}}, "Connection": {"type": 2, "properties": {}}}, "match_importance": 0.0}, "query": {"type": 6, "properties": {"seed": {"type": 2, "properties": {}}}}}}, "outputSchema": {"type": 6, "properties": {"statusCode": {"type": 1, "properties": {}}, "statusMessage": {"type": 2, "properties": {}}, "headers": {"type": 6, "properties": {"Date": {"type": 2, "properties": {}}, "Content-Type": {"type": 2, "properties": {}}, "Transfer-Encoding": {"type": 2, "properties": {}}, "Connection": {"type": 2, "properties": {}}, "Server": {"type": 2, "properties": {}}, "Nel": {"type": 2, "properties": {}}, "cf-cache-status": {"type": 2, "properties": {}}, "Report-To": {"type": 2, "properties": {}}, "Content-Encoding": {"type": 2, "properties": {}}, "CF-RAY": {"type": 2, "properties": {}}, "alt-svc": {"type": 2, "properties": {}}}, "match_importance": 0.0}, "body": {"type": 6, "properties": {"results": {"type": 7, "properties": {}}, "info": {"type": 6, "properties": {"seed": {"type": 2, "properties": {}}, "results": {"type": 1, "properties": {}}, "page": {"type": 1, "properties": {}}, "version": {"type": 2, "properties": {}}}}}, "encoding": 1, "decoded_type": 1}, "bodySize": {"type": 1, "properties": {}}}}, "inputSchemaHash": "980d745031314c1cf6517120a9fb18f6d9047ee7c2c281faa773673f701c44ff", "outputSchemaHash": "66f3868890f70e7e35423688e5719fc31a5a47c662a167083678b62e622844d5", "inputValueHash": "efa2830ea8b69785acdec197b2b7e7a04e1410213b58028716b2b4b7d357873f", "outputValueHash": "0cdb05411fe18bff171a511dac91896cf39e0488516b39f3a20ef01174adfd38", "kind": 3, "status": {"code": 1, "message": ""}, "isPreAppStart": false, "timestamp": {"seconds": 1770922611, "nanos": 128000000}, "duration": {"seconds": 0, "nanos": 112795000}, "isRootSpan": false, "packageType": 1, "environment": "local", "isUsed": true, "stackTrace": ""} -{"traceId": "77a9511256da74e3bd7d1e1b143853d9", "spanId": "3498cced96aa7c08", "parentSpanId": "", "name": "GET /api/user/1", "packageName": "flask", "instrumentationName": "FlaskInstrumentation", "submoduleName": "GET", "inputValue": {"method": "GET", "url": "http://localhost:3000/api/user/1", "target": "/api/user/1", "headers": {"Host": "localhost:3000", "User-Agent": "curl/8.7.1", "Accept": "*/*"}, "httpVersion": "1.1", "remoteAddress": "127.0.0.1", "remotePort": 52815}, "outputValue": {"statusCode": 200, "statusMessage": "OK", "headers": {"Content-Type": "application/json", "Content-Length": "79"}, "body": "eyJpbmZvIjp7InBhZ2UiOjEsInJlc3VsdHMiOjEsInNlZWQiOiJkM2FkYjMzZiIsInZlcnNpb24iOiIxLjQifSwicmVzdWx0cyI6W119Cg==", "bodySize": 79}, "inputSchema": {"type": 6, "properties": {"method": {"type": 2, "properties": {}}, "url": {"type": 2, "properties": {}}, "target": {"type": 2, "properties": {}}, "headers": {"type": 6, "properties": {"Host": {"type": 2, "properties": {}}, "User-Agent": {"type": 2, "properties": {}}, "Accept": {"type": 2, "properties": {}}}, "match_importance": 0.0}, "httpVersion": {"type": 2, "properties": {}}, "remoteAddress": {"type": 2, "properties": {}}, "remotePort": {"type": 1, "properties": {}}}}, "outputSchema": {"type": 6, "properties": {"statusCode": {"type": 1, "properties": {}}, "statusMessage": {"type": 2, "properties": {}}, "headers": {"type": 6, "properties": {"Content-Type": {"type": 2, "properties": {}}, "Content-Length": {"type": 2, "properties": {}}}, "match_importance": 0.0}, "body": {"type": 2, "properties": {}, "encoding": 1}, "bodySize": {"type": 1, "properties": {}}}}, "inputSchemaHash": "a51476a4da84fdd748aba5b8a4f55118cfa22bd50a9653c258ea33f1055e0a87", "outputSchemaHash": "3ac9963ed134d812f048189e821b490a979462988c3f2de2c6c030c00568d3e8", "inputValueHash": "95bb9fc2f7706add55ef279a6e3706e9089c99721f3afe65b00477297e972536", "outputValueHash": "69037eb2ffc2e0a58d946844443f4e1c7521418f556cbd3a49272a27378c0607", "kind": 2, "status": {"code": 1, "message": ""}, "isPreAppStart": false, "timestamp": {"seconds": 1770922611, "nanos": 126954000}, "duration": {"seconds": 0, "nanos": 120100000}, "isRootSpan": true, "packageType": 1, "environment": "local", "isUsed": true, "stackTrace": ""} diff --git a/.tusk/traces/2026-02-12T18-56-52-110173+00-00_trace_52159833a3ba7c231930372a5a23e706.jsonl b/.tusk/traces/2026-02-12T18-56-52-110173+00-00_trace_52159833a3ba7c231930372a5a23e706.jsonl deleted file mode 100644 index 106b19c..0000000 --- a/.tusk/traces/2026-02-12T18-56-52-110173+00-00_trace_52159833a3ba7c231930372a5a23e706.jsonl +++ /dev/null @@ -1,2 +0,0 @@ -{"traceId": "52159833a3ba7c231930372a5a23e706", "spanId": "bcf810c7a4fc4377", "parentSpanId": "dc453c362276f3e6", "name": "GET /api/", "packageName": "https", "instrumentationName": "RequestsInstrumentation", "submoduleName": "GET", "inputValue": {"method": "GET", "url": "https://randomuser.me/api/", "protocol": "https", "hostname": "randomuser.me", "path": "/api/", "headers": {"User-Agent": "python-requests/2.32.5", "Accept-Encoding": "gzip, deflate", "Accept": "*/*", "Connection": "keep-alive"}, "query": {}}, "outputValue": {"statusCode": 200, "statusMessage": "OK", "headers": {"Date": "Thu, 12 Feb 2026 18:56:51 GMT", "Content-Type": "application/json", "Transfer-Encoding": "chunked", "Connection": "keep-alive", "Server": "cloudflare", "Nel": "{\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}", "cf-cache-status": "DYNAMIC", "Report-To": "{\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=WICg7R2G50oG1seJ%2BIncAbaGOgBKW22KViUt8h3irQRkGr5U1HSi00s1uGQi18SH2JH%2BQNl2v4nGNIs%2FRwQrL1k1HjQa1UaoSZ1NSMY%3D\"}]}", "Content-Encoding": "gzip", "CF-RAY": "9cce4ef0af662513-SJC", "alt-svc": "h3=\":443\"; ma=86400"}, "body": "eyJyZXN1bHRzIjpbXSwiaW5mbyI6eyJzZWVkIjoiZDNhZGIzM2YiLCJyZXN1bHRzIjoxLCJwYWdlIjoxLCJ2ZXJzaW9uIjoiMS40In19", "bodySize": 78}, "inputSchema": {"type": 6, "properties": {"method": {"type": 2, "properties": {}}, "url": {"type": 2, "properties": {}}, "protocol": {"type": 2, "properties": {}}, "hostname": {"type": 2, "properties": {}}, "path": {"type": 2, "properties": {}}, "headers": {"type": 6, "properties": {"User-Agent": {"type": 2, "properties": {}}, "Accept-Encoding": {"type": 2, "properties": {}}, "Accept": {"type": 2, "properties": {}}, "Connection": {"type": 2, "properties": {}}}, "match_importance": 0.0}, "query": {"type": 6, "properties": {}}}}, "outputSchema": {"type": 6, "properties": {"statusCode": {"type": 1, "properties": {}}, "statusMessage": {"type": 2, "properties": {}}, "headers": {"type": 6, "properties": {"Date": {"type": 2, "properties": {}}, "Content-Type": {"type": 2, "properties": {}}, "Transfer-Encoding": {"type": 2, "properties": {}}, "Connection": {"type": 2, "properties": {}}, "Server": {"type": 2, "properties": {}}, "Nel": {"type": 2, "properties": {}}, "cf-cache-status": {"type": 2, "properties": {}}, "Report-To": {"type": 2, "properties": {}}, "Content-Encoding": {"type": 2, "properties": {}}, "CF-RAY": {"type": 2, "properties": {}}, "alt-svc": {"type": 2, "properties": {}}}, "match_importance": 0.0}, "body": {"type": 6, "properties": {"results": {"type": 7, "properties": {}}, "info": {"type": 6, "properties": {"seed": {"type": 2, "properties": {}}, "results": {"type": 1, "properties": {}}, "page": {"type": 1, "properties": {}}, "version": {"type": 2, "properties": {}}}}}, "encoding": 1, "decoded_type": 1}, "bodySize": {"type": 1, "properties": {}}}}, "inputSchemaHash": "a6c2691163ba64e7936509c0754086c892f16dea2c8a1228b47d23169a52fe96", "outputSchemaHash": "66f3868890f70e7e35423688e5719fc31a5a47c662a167083678b62e622844d5", "inputValueHash": "57ba882b503a6139c0c4ef72aa614d3e58fdc4bcb8a118e64a792322a3c8794e", "outputValueHash": "7ba0b7cba9167605f2e996675f3f80c5913123178c1ea28251773b0e044255ac", "kind": 3, "status": {"code": 1, "message": ""}, "isPreAppStart": false, "timestamp": {"seconds": 1770922611, "nanos": 265398000}, "duration": {"seconds": 0, "nanos": 111237000}, "isRootSpan": false, "packageType": 1, "environment": "local", "isUsed": true, "stackTrace": ""} -{"traceId": "52159833a3ba7c231930372a5a23e706", "spanId": "dc453c362276f3e6", "parentSpanId": "", "name": "POST /api/user", "packageName": "flask", "instrumentationName": "FlaskInstrumentation", "submoduleName": "POST", "inputValue": {"method": "POST", "url": "http://localhost:3000/api/user", "target": "/api/user", "headers": {"Host": "localhost:3000", "User-Agent": "curl/8.7.1", "Accept": "*/*"}, "httpVersion": "1.1", "remoteAddress": "127.0.0.1", "remotePort": 52818}, "outputValue": {"statusCode": 200, "statusMessage": "OK", "headers": {"Content-Type": "application/json", "Content-Length": "79"}, "body": "eyJpbmZvIjp7InBhZ2UiOjEsInJlc3VsdHMiOjEsInNlZWQiOiJkM2FkYjMzZiIsInZlcnNpb24iOiIxLjQifSwicmVzdWx0cyI6W119Cg==", "bodySize": 79}, "inputSchema": {"type": 6, "properties": {"method": {"type": 2, "properties": {}}, "url": {"type": 2, "properties": {}}, "target": {"type": 2, "properties": {}}, "headers": {"type": 6, "properties": {"Host": {"type": 2, "properties": {}}, "User-Agent": {"type": 2, "properties": {}}, "Accept": {"type": 2, "properties": {}}}, "match_importance": 0.0}, "httpVersion": {"type": 2, "properties": {}}, "remoteAddress": {"type": 2, "properties": {}}, "remotePort": {"type": 1, "properties": {}}}}, "outputSchema": {"type": 6, "properties": {"statusCode": {"type": 1, "properties": {}}, "statusMessage": {"type": 2, "properties": {}}, "headers": {"type": 6, "properties": {"Content-Type": {"type": 2, "properties": {}}, "Content-Length": {"type": 2, "properties": {}}}, "match_importance": 0.0}, "body": {"type": 2, "properties": {}, "encoding": 1}, "bodySize": {"type": 1, "properties": {}}}}, "inputSchemaHash": "a51476a4da84fdd748aba5b8a4f55118cfa22bd50a9653c258ea33f1055e0a87", "outputSchemaHash": "3ac9963ed134d812f048189e821b490a979462988c3f2de2c6c030c00568d3e8", "inputValueHash": "6ef6dbc93998203dd36b72b56e90f217883e2f25a89497876dfd50bb61419be3", "outputValueHash": "69037eb2ffc2e0a58d946844443f4e1c7521418f556cbd3a49272a27378c0607", "kind": 2, "status": {"code": 1, "message": ""}, "isPreAppStart": false, "timestamp": {"seconds": 1770922611, "nanos": 264497000}, "duration": {"seconds": 0, "nanos": 117028000}, "isRootSpan": true, "packageType": 1, "environment": "local", "isUsed": true, "stackTrace": ""} diff --git a/.tusk/traces/2026-02-12T18-56-52-110768+00-00_trace_3dc34db254970c0447b9c5cb922c772a.jsonl b/.tusk/traces/2026-02-12T18-56-52-110768+00-00_trace_3dc34db254970c0447b9c5cb922c772a.jsonl deleted file mode 100644 index a7c8aaa..0000000 --- a/.tusk/traces/2026-02-12T18-56-52-110768+00-00_trace_3dc34db254970c0447b9c5cb922c772a.jsonl +++ /dev/null @@ -1,3 +0,0 @@ -{"traceId": "3dc34db254970c0447b9c5cb922c772a", "spanId": "6f0961eea5cf9a13", "parentSpanId": "5d889f114411c6eb", "name": "GET /posts/5", "packageName": "https", "instrumentationName": "RequestsInstrumentation", "submoduleName": "GET", "inputValue": {"method": "GET", "url": "https://jsonplaceholder.typicode.com/posts/5", "protocol": "https", "hostname": "jsonplaceholder.typicode.com", "path": "/posts/5", "headers": {"User-Agent": "python-requests/2.32.5", "Accept-Encoding": "gzip, deflate", "Accept": "*/*", "Connection": "keep-alive"}, "query": {}}, "outputValue": {"statusCode": 200, "statusMessage": "OK", "headers": {"Date": "Thu, 12 Feb 2026 18:56:51 GMT", "Content-Type": "application/json; charset=utf-8", "Transfer-Encoding": "chunked", "Connection": "keep-alive", "access-control-allow-credentials": "true", "Cache-Control": "max-age=43200", "etag": "W/\"e1-IivojO0CtPZmcMK0iydTbsfG7Wc\"", "expires": "-1", "nel": "{\"report_to\":\"heroku-nel\",\"response_headers\":[\"Via\"],\"max_age\":3600,\"success_fraction\":0.01,\"failure_fraction\":0.1}", "pragma": "no-cache", "report-to": "{\"group\":\"heroku-nel\",\"endpoints\":[{\"url\":\"https://nel.heroku.com/reports?s=aQ63QEKx%2FNgRHiL5QLR5RUacFcCy9g%2FMMQoJjk63C1w%3D\\u0026sid=e11707d5-02a7-43ef-b45e-2cf4d2036f7d\\u0026ts=1770827993\"}],\"max_age\":3600}", "reporting-endpoints": "heroku-nel=\"https://nel.heroku.com/reports?s=aQ63QEKx%2FNgRHiL5QLR5RUacFcCy9g%2FMMQoJjk63C1w%3D&sid=e11707d5-02a7-43ef-b45e-2cf4d2036f7d&ts=1770827993\"", "Server": "cloudflare", "vary": "Origin, Accept-Encoding", "via": "2.0 heroku-router", "x-content-type-options": "nosniff", "x-powered-by": "Express", "x-ratelimit-limit": "1000", "x-ratelimit-remaining": "999", "x-ratelimit-reset": "1770828048", "Age": "317", "cf-cache-status": "HIT", "Content-Encoding": "gzip", "CF-RAY": "9cce4ef18cc949fc-SJC", "alt-svc": "h3=\":443\"; ma=86400"}, "body": "ewogICJ1c2VySWQiOiAxLAogICJpZCI6IDUsCiAgInRpdGxlIjogIm5lc2NpdW50IHF1YXMgb2RpbyIsCiAgImJvZHkiOiAicmVwdWRpYW5kYWUgdmVuaWFtIHF1YWVyYXQgc3VudCBzZWRcbmFsaWFzIGF1dCBmdWdpYXQgc2l0IGF1dGVtIHNlZCBlc3RcbnZvbHVwdGF0ZW0gb21uaXMgcG9zc2ltdXMgZXNzZSB2b2x1cHRhdGlidXMgcXVpc1xuZXN0IGF1dCB0ZW5ldHVyIGRvbG9yIG5lcXVlIgp9", "bodySize": 225}, "inputSchema": {"type": 6, "properties": {"method": {"type": 2, "properties": {}}, "url": {"type": 2, "properties": {}}, "protocol": {"type": 2, "properties": {}}, "hostname": {"type": 2, "properties": {}}, "path": {"type": 2, "properties": {}}, "headers": {"type": 6, "properties": {"User-Agent": {"type": 2, "properties": {}}, "Accept-Encoding": {"type": 2, "properties": {}}, "Accept": {"type": 2, "properties": {}}, "Connection": {"type": 2, "properties": {}}}, "match_importance": 0.0}, "query": {"type": 6, "properties": {}}}}, "outputSchema": {"type": 6, "properties": {"statusCode": {"type": 1, "properties": {}}, "statusMessage": {"type": 2, "properties": {}}, "headers": {"type": 6, "properties": {"Date": {"type": 2, "properties": {}}, "Content-Type": {"type": 2, "properties": {}}, "Transfer-Encoding": {"type": 2, "properties": {}}, "Connection": {"type": 2, "properties": {}}, "access-control-allow-credentials": {"type": 2, "properties": {}}, "Cache-Control": {"type": 2, "properties": {}}, "etag": {"type": 2, "properties": {}}, "expires": {"type": 2, "properties": {}}, "nel": {"type": 2, "properties": {}}, "pragma": {"type": 2, "properties": {}}, "report-to": {"type": 2, "properties": {}}, "reporting-endpoints": {"type": 2, "properties": {}}, "Server": {"type": 2, "properties": {}}, "vary": {"type": 2, "properties": {}}, "via": {"type": 2, "properties": {}}, "x-content-type-options": {"type": 2, "properties": {}}, "x-powered-by": {"type": 2, "properties": {}}, "x-ratelimit-limit": {"type": 2, "properties": {}}, "x-ratelimit-remaining": {"type": 2, "properties": {}}, "x-ratelimit-reset": {"type": 2, "properties": {}}, "Age": {"type": 2, "properties": {}}, "cf-cache-status": {"type": 2, "properties": {}}, "Content-Encoding": {"type": 2, "properties": {}}, "CF-RAY": {"type": 2, "properties": {}}, "alt-svc": {"type": 2, "properties": {}}}, "match_importance": 0.0}, "body": {"type": 6, "properties": {"userId": {"type": 1, "properties": {}}, "id": {"type": 1, "properties": {}}, "title": {"type": 2, "properties": {}}, "body": {"type": 2, "properties": {}}}, "encoding": 1, "decoded_type": 1}, "bodySize": {"type": 1, "properties": {}}}}, "inputSchemaHash": "a6c2691163ba64e7936509c0754086c892f16dea2c8a1228b47d23169a52fe96", "outputSchemaHash": "0e4c7359ab9e10e4e6acbac0675fe0168166f073f9da3e2c37c95bd5f5ea22b7", "inputValueHash": "42934cefbdc0a9e7c41c7d4880c309d880f5722a2824be6bac76caf64c7c9a5b", "outputValueHash": "f5b620952b9912ef9a906e8f91d6189e86cc5a4027b78035f9b0c10a7d833bce", "kind": 3, "status": {"code": 1, "message": ""}, "isPreAppStart": false, "timestamp": {"seconds": 1770922611, "nanos": 392801000}, "duration": {"seconds": 0, "nanos": 56311000}, "isRootSpan": false, "packageType": 1, "environment": "local", "isUsed": true, "stackTrace": ""} -{"traceId": "3dc34db254970c0447b9c5cb922c772a", "spanId": "61cf6ca4d6d7c38e", "parentSpanId": "5d889f114411c6eb", "name": "GET /posts/5/comments", "packageName": "https", "instrumentationName": "RequestsInstrumentation", "submoduleName": "GET", "inputValue": {"method": "GET", "url": "https://jsonplaceholder.typicode.com/posts/5/comments", "protocol": "https", "hostname": "jsonplaceholder.typicode.com", "path": "/posts/5/comments", "headers": {"User-Agent": "python-requests/2.32.5", "Accept-Encoding": "gzip, deflate", "Accept": "*/*", "Connection": "keep-alive"}, "query": {}}, "outputValue": {"statusCode": 200, "statusMessage": "OK", "headers": {"Date": "Thu, 12 Feb 2026 18:56:51 GMT", "Content-Type": "application/json; charset=utf-8", "Transfer-Encoding": "chunked", "Connection": "keep-alive", "access-control-allow-credentials": "true", "Cache-Control": "max-age=43200", "Content-Encoding": "gzip", "etag": "W/\"609-UTRFEcuHTr7nZ1id66/K8qcnRdA\"", "expires": "-1", "nel": "{\"report_to\":\"heroku-nel\",\"response_headers\":[\"Via\"],\"max_age\":3600,\"success_fraction\":0.01,\"failure_fraction\":0.1}", "pragma": "no-cache", "report-to": "{\"group\":\"heroku-nel\",\"endpoints\":[{\"url\":\"https://nel.heroku.com/reports?s=CvxcUH1D5jRFKnMXl6bNbx%2BUBDssCtw4WEdkc8Uhvqo%3D\\u0026sid=e11707d5-02a7-43ef-b45e-2cf4d2036f7d\\u0026ts=1770851172\"}],\"max_age\":3600}", "reporting-endpoints": "heroku-nel=\"https://nel.heroku.com/reports?s=CvxcUH1D5jRFKnMXl6bNbx%2BUBDssCtw4WEdkc8Uhvqo%3D&sid=e11707d5-02a7-43ef-b45e-2cf4d2036f7d&ts=1770851172\"", "Server": "cloudflare", "vary": "Origin, Accept-Encoding", "via": "2.0 heroku-router", "x-content-type-options": "nosniff", "x-powered-by": "Express", "x-ratelimit-limit": "1000", "x-ratelimit-remaining": "999", "x-ratelimit-reset": "1770851208", "Age": "317", "cf-cache-status": "HIT", "CF-RAY": "9cce4ef1c93e67a3-SJC", "alt-svc": "h3=\":443\"; ma=86400"}, "body": "WwogIHsKICAgICJwb3N0SWQiOiA1LAogICAgImlkIjogMjEsCiAgICAibmFtZSI6ICJhbGlxdWlkIHJlcnVtIG1vbGxpdGlhIHF1aSBhIGNvbnNlY3RldHVyIGV1bSBzZWQiLAogICAgImVtYWlsIjogIk5vZW1pZUBtYXJxdWVzLm1lIiwKICAgICJib2R5IjogImRlbGVuaXRpIGF1dCBzZWQgbW9sZXN0aWFzIGV4cGxpY2Fib1xuY29tbW9kaSBvZGlvIHJhdGlvbmUgbmVzY2l1bnRcbnZvbHVwdGF0ZSBkb2xvcmVtcXVlIGVzdFxubmFtIGF1dGVtIGVycm9yIGRlbGVjdHVzIgogIH0sCiAgewogICAgInBvc3RJZCI6IDUsCiAgICAiaWQiOiAyMiwKICAgICJuYW1lIjogInBvcnJvIHJlcGVsbGVuZHVzIGF1dCB0ZW1wb3JlIHF1aXMgaGljIiwKICAgICJlbWFpbCI6ICJLaGFsaWxAZW1pbGUuY28udWsiLAogICAgImJvZHkiOiAicXVpIGlwc2EgYW5pbWkgbm9zdHJ1bSBwcmFlc2VudGl1bSB2b2x1cHRhdGlidXMgb2RpdFxucXVpIG5vbiBpbXBlZGl0IGN1bSBxdWkgbm9zdHJ1bSBhbGlxdWlkIGZ1Z2EgZXhwbGljYWJvXG52b2x1cHRhdGVtIGZ1Z2l0IGVhcnVtIHZvbHVwdGFzIGV4ZXJjaXRhdGlvbmVtIHRlbXBvcmlidXMgZGlnbmlzc2ltb3MgZGlzdGluY3Rpb1xuZXNzZSBpbnZlbnRvcmUgcmVwcmVoZW5kZXJpdCBxdWlkZW0gdXQgaW5jaWR1bnQgbmloaWwgbmVjZXNzaXRhdGlidXMgcmVydW0iCiAgfSwKICB7CiAgICAicG9zdElkIjogNSwKICAgICJpZCI6IDIzLAogICAgIm5hbWUiOiAicXVpcyB0ZW1wb3JhIHF1aWRlbSBuaWhpbCBpc3RlIiwKICAgICJlbWFpbCI6ICJTb3BoaWFAYXJpYW5uYS5jby51ayIsCiAgICAiYm9keSI6ICJ2b2x1cHRhdGVzIHByb3ZpZGVudCByZXBlbGxlbmR1cyBpdXN0byBwZXJzcGljaWF0aXMgZXggZnVnaWF0IHV0XG51dCBkb2xvciBuYW0gYWxpcXVpZCBldCBleHBlZGl0YSB2b2x1cHRhdGVcbnN1bnQgdml0YWUgaWxsbyByZXJ1bSBpbiBxdW9zXG52ZWwgZWxpZ2VuZGkgZW5pbSBxdWFlIGZ1Z2lhdCBlc3QiCiAgfSwKICB7CiAgICAicG9zdElkIjogNSwKICAgICJpZCI6IDI0LAogICAgIm5hbWUiOiAiaW4gdGVtcG9yZSBlb3MgYmVhdGFlIGVzdCIsCiAgICAiZW1haWwiOiAiSmVmZmVyeUBqdXdhbi51cyIsCiAgICAiYm9keSI6ICJyZXB1ZGlhbmRhZSByZXBlbGxhdCBxdWlhXG5zZXF1aSBlc3QgZG9sb3JlIGV4cGxpY2FibyBuaWhpbCBldFxuZXQgc2l0IGV0XG5ldCBwcmFlc2VudGl1bSBpc3RlIGF0cXVlIGFzcGVyaW9yZXMgdGVuZXR1ciIKICB9LAogIHsKICAgICJwb3N0SWQiOiA1LAogICAgImlkIjogMjUsCiAgICAibmFtZSI6ICJhdXRlbSBhYiBlYSBzaXQgYWxpYXMgaGljIHByb3ZpZGVudCBzaXQiLAogICAgImVtYWlsIjogIklzYWlhc19LdWhpY0BqYXJyZXR0Lm5ldCIsCiAgICAiYm9keSI6ICJzdW50IGF1dCBxdWFlIGxhYm9yaW9zYW0gc2l0IHV0IGltcGVkaXRcbmFkaXBpc2NpIGhhcnVtIGxhYm9ydW0gdG90YW0gZGVsZW5pdGkgdm9sdXB0YXMgb2RpdCByZW0gZWFcbm5vbiBpdXJlIGRpc3RpbmN0aW8gdXQgdmVsaXQgZG9sb3JpYnVzXG5ldCBub24gZXgiCiAgfQpd", "bodySize": 1545}, "inputSchema": {"type": 6, "properties": {"method": {"type": 2, "properties": {}}, "url": {"type": 2, "properties": {}}, "protocol": {"type": 2, "properties": {}}, "hostname": {"type": 2, "properties": {}}, "path": {"type": 2, "properties": {}}, "headers": {"type": 6, "properties": {"User-Agent": {"type": 2, "properties": {}}, "Accept-Encoding": {"type": 2, "properties": {}}, "Accept": {"type": 2, "properties": {}}, "Connection": {"type": 2, "properties": {}}}, "match_importance": 0.0}, "query": {"type": 6, "properties": {}}}}, "outputSchema": {"type": 6, "properties": {"statusCode": {"type": 1, "properties": {}}, "statusMessage": {"type": 2, "properties": {}}, "headers": {"type": 6, "properties": {"Date": {"type": 2, "properties": {}}, "Content-Type": {"type": 2, "properties": {}}, "Transfer-Encoding": {"type": 2, "properties": {}}, "Connection": {"type": 2, "properties": {}}, "access-control-allow-credentials": {"type": 2, "properties": {}}, "Cache-Control": {"type": 2, "properties": {}}, "Content-Encoding": {"type": 2, "properties": {}}, "etag": {"type": 2, "properties": {}}, "expires": {"type": 2, "properties": {}}, "nel": {"type": 2, "properties": {}}, "pragma": {"type": 2, "properties": {}}, "report-to": {"type": 2, "properties": {}}, "reporting-endpoints": {"type": 2, "properties": {}}, "Server": {"type": 2, "properties": {}}, "vary": {"type": 2, "properties": {}}, "via": {"type": 2, "properties": {}}, "x-content-type-options": {"type": 2, "properties": {}}, "x-powered-by": {"type": 2, "properties": {}}, "x-ratelimit-limit": {"type": 2, "properties": {}}, "x-ratelimit-remaining": {"type": 2, "properties": {}}, "x-ratelimit-reset": {"type": 2, "properties": {}}, "Age": {"type": 2, "properties": {}}, "cf-cache-status": {"type": 2, "properties": {}}, "CF-RAY": {"type": 2, "properties": {}}, "alt-svc": {"type": 2, "properties": {}}}, "match_importance": 0.0}, "body": {"type": 7, "properties": {}, "items": {"type": 6, "properties": {"postId": {"type": 1, "properties": {}}, "id": {"type": 1, "properties": {}}, "name": {"type": 2, "properties": {}}, "email": {"type": 2, "properties": {}}, "body": {"type": 2, "properties": {}}}}, "encoding": 1, "decoded_type": 1}, "bodySize": {"type": 1, "properties": {}}}}, "inputSchemaHash": "a6c2691163ba64e7936509c0754086c892f16dea2c8a1228b47d23169a52fe96", "outputSchemaHash": "9a617dc8c505ca2a72e3de60c5f97dd20fa3d2e8ffe5b3e80c368fee32e00a68", "inputValueHash": "59f2aa82b035cefd3b53a2f6bb95d72e5ff4de2c48390e318ae0a6775a58a272", "outputValueHash": "6d9ed59d9ced977165e5236bd1e20e2c9165dfbf9bb8120f0f9437ad3e9e3c86", "kind": 3, "status": {"code": 1, "message": ""}, "isPreAppStart": false, "timestamp": {"seconds": 1770922611, "nanos": 453268000}, "duration": {"seconds": 0, "nanos": 54131000}, "isRootSpan": false, "packageType": 1, "environment": "local", "isUsed": true, "stackTrace": ""} -{"traceId": "3dc34db254970c0447b9c5cb922c772a", "spanId": "5d889f114411c6eb", "parentSpanId": "", "name": "GET /api/post/5", "packageName": "flask", "instrumentationName": "FlaskInstrumentation", "submoduleName": "GET", "inputValue": {"method": "GET", "url": "http://localhost:3000/api/post/5", "target": "/api/post/5", "headers": {"Host": "localhost:3000", "User-Agent": "curl/8.7.1", "Accept": "*/*"}, "httpVersion": "1.1", "remoteAddress": "127.0.0.1", "remotePort": 52821}, "outputValue": {"statusCode": 200, "statusMessage": "OK", "headers": {"Content-Type": "application/json", "Content-Length": "1594"}, "body": "eyJjb21tZW50cyI6W3siYm9keSI6ImRlbGVuaXRpIGF1dCBzZWQgbW9sZXN0aWFzIGV4cGxpY2Fib1xuY29tbW9kaSBvZGlvIHJhdGlvbmUgbmVzY2l1bnRcbnZvbHVwdGF0ZSBkb2xvcmVtcXVlIGVzdFxubmFtIGF1dGVtIGVycm9yIGRlbGVjdHVzIiwiZW1haWwiOiJOb2VtaWVAbWFycXVlcy5tZSIsImlkIjoyMSwibmFtZSI6ImFsaXF1aWQgcmVydW0gbW9sbGl0aWEgcXVpIGEgY29uc2VjdGV0dXIgZXVtIHNlZCIsInBvc3RJZCI6NX0seyJib2R5IjoicXVpIGlwc2EgYW5pbWkgbm9zdHJ1bSBwcmFlc2VudGl1bSB2b2x1cHRhdGlidXMgb2RpdFxucXVpIG5vbiBpbXBlZGl0IGN1bSBxdWkgbm9zdHJ1bSBhbGlxdWlkIGZ1Z2EgZXhwbGljYWJvXG52b2x1cHRhdGVtIGZ1Z2l0IGVhcnVtIHZvbHVwdGFzIGV4ZXJjaXRhdGlvbmVtIHRlbXBvcmlidXMgZGlnbmlzc2ltb3MgZGlzdGluY3Rpb1xuZXNzZSBpbnZlbnRvcmUgcmVwcmVoZW5kZXJpdCBxdWlkZW0gdXQgaW5jaWR1bnQgbmloaWwgbmVjZXNzaXRhdGlidXMgcmVydW0iLCJlbWFpbCI6IktoYWxpbEBlbWlsZS5jby51ayIsImlkIjoyMiwibmFtZSI6InBvcnJvIHJlcGVsbGVuZHVzIGF1dCB0ZW1wb3JlIHF1aXMgaGljIiwicG9zdElkIjo1fSx7ImJvZHkiOiJ2b2x1cHRhdGVzIHByb3ZpZGVudCByZXBlbGxlbmR1cyBpdXN0byBwZXJzcGljaWF0aXMgZXggZnVnaWF0IHV0XG51dCBkb2xvciBuYW0gYWxpcXVpZCBldCBleHBlZGl0YSB2b2x1cHRhdGVcbnN1bnQgdml0YWUgaWxsbyByZXJ1bSBpbiBxdW9zXG52ZWwgZWxpZ2VuZGkgZW5pbSBxdWFlIGZ1Z2lhdCBlc3QiLCJlbWFpbCI6IlNvcGhpYUBhcmlhbm5hLmNvLnVrIiwiaWQiOjIzLCJuYW1lIjoicXVpcyB0ZW1wb3JhIHF1aWRlbSBuaWhpbCBpc3RlIiwicG9zdElkIjo1fSx7ImJvZHkiOiJyZXB1ZGlhbmRhZSByZXBlbGxhdCBxdWlhXG5zZXF1aSBlc3QgZG9sb3JlIGV4cGxpY2FibyBuaWhpbCBldFxuZXQgc2l0IGV0XG5ldCBwcmFlc2VudGl1bSBpc3RlIGF0cXVlIGFzcGVyaW9yZXMgdGVuZXR1ciIsImVtYWlsIjoiSmVmZmVyeUBqdXdhbi51cyIsImlkIjoyNCwibmFtZSI6ImluIHRlbXBvcmUgZW9zIGJlYXRhZSBlc3QiLCJwb3N0SWQiOjV9LHsiYm9keSI6InN1bnQgYXV0IHF1YWUgbGFib3Jpb3NhbSBzaXQgdXQgaW1wZWRpdFxuYWRpcGlzY2kgaGFydW0gbGFib3J1bSB0b3RhbSBkZWxlbml0aSB2b2x1cHRhcyBvZGl0IHJlbSBlYVxubm9uIGl1cmUgZGlzdGluY3RpbyB1dCB2ZWxpdCBkb2xvcmlidXNcbmV0IG5vbiBleCIsImVtYWlsIjoiSXNhaWFzX0t1aGljQGphcnJldHQubmV0IiwiaWQiOjI1LCJuYW1lIjoiYXV0ZW0gYWIgZWEgc2l0IGFsaWFzIGhpYyBwcm92aWRlbnQgc2l0IiwicG9zdElkIjo1fV0sInBvc3QiOnsiYm9keSI6InJlcHVkaWFuZGFlIHZlbmlhbSBxdWFlcmF0IHN1bnQgc2VkXG5hbGlhcyBhdXQgZnVnaWF0IHNpdCBhdXRlbSBzZWQgZXN0XG52b2x1cHRhdGVtIG9tbmlzIHBvc3NpbXVzIGVzc2Ugdm9sdXB0YXRpYnVzIHF1aXNcbmVzdCBhdXQgdGVuZXR1ciBkb2xvciBuZXF1ZSIsImlkIjo1LCJ0aXRsZSI6Im5lc2NpdW50IHF1YXMgb2RpbyIsInVzZXJJZCI6MX19Cg==", "bodySize": 1594}, "inputSchema": {"type": 6, "properties": {"method": {"type": 2, "properties": {}}, "url": {"type": 2, "properties": {}}, "target": {"type": 2, "properties": {}}, "headers": {"type": 6, "properties": {"Host": {"type": 2, "properties": {}}, "User-Agent": {"type": 2, "properties": {}}, "Accept": {"type": 2, "properties": {}}}, "match_importance": 0.0}, "httpVersion": {"type": 2, "properties": {}}, "remoteAddress": {"type": 2, "properties": {}}, "remotePort": {"type": 1, "properties": {}}}}, "outputSchema": {"type": 6, "properties": {"statusCode": {"type": 1, "properties": {}}, "statusMessage": {"type": 2, "properties": {}}, "headers": {"type": 6, "properties": {"Content-Type": {"type": 2, "properties": {}}, "Content-Length": {"type": 2, "properties": {}}}, "match_importance": 0.0}, "body": {"type": 2, "properties": {}, "encoding": 1}, "bodySize": {"type": 1, "properties": {}}}}, "inputSchemaHash": "a51476a4da84fdd748aba5b8a4f55118cfa22bd50a9653c258ea33f1055e0a87", "outputSchemaHash": "3ac9963ed134d812f048189e821b490a979462988c3f2de2c6c030c00568d3e8", "inputValueHash": "2218899793bec7e317c887abda367b8ffebc9341fe5c2127cffb02b8595bf3fd", "outputValueHash": "086072d4451610ce6e6f442bcc178392fba074be9c6820867579616bb3d35ae7", "kind": 2, "status": {"code": 1, "message": ""}, "isPreAppStart": false, "timestamp": {"seconds": 1770922611, "nanos": 392160000}, "duration": {"seconds": 0, "nanos": 123111000}, "isRootSpan": true, "packageType": 1, "environment": "local", "isUsed": true, "stackTrace": ""} diff --git a/.tusk/traces/2026-02-12T18-56-52-111902+00-00_trace_320a2c8d8403bdefb5d0ff011f8d6bf1.jsonl b/.tusk/traces/2026-02-12T18-56-52-111902+00-00_trace_320a2c8d8403bdefb5d0ff011f8d6bf1.jsonl deleted file mode 100644 index bbf08b2..0000000 --- a/.tusk/traces/2026-02-12T18-56-52-111902+00-00_trace_320a2c8d8403bdefb5d0ff011f8d6bf1.jsonl +++ /dev/null @@ -1,2 +0,0 @@ -{"traceId": "320a2c8d8403bdefb5d0ff011f8d6bf1", "spanId": "937fec7c398cfcc3", "parentSpanId": "6032f218b2a8c999", "name": "POST /posts", "packageName": "https", "instrumentationName": "RequestsInstrumentation", "submoduleName": "POST", "inputValue": {"method": "POST", "url": "https://jsonplaceholder.typicode.com/posts", "protocol": "https", "hostname": "jsonplaceholder.typicode.com", "path": "/posts", "headers": {"User-Agent": "python-requests/2.32.5", "Accept-Encoding": "gzip, deflate", "Accept": "*/*", "Connection": "keep-alive", "Content-Length": "44", "Content-Type": "application/json"}, "query": {}, "body": "eyJ0aXRsZSI6ICJmb28iLCAiYm9keSI6ICJiYXIiLCAidXNlcklkIjogMX0=", "bodySize": 44}, "outputValue": {"statusCode": 201, "statusMessage": "Created", "headers": {"Date": "Thu, 12 Feb 2026 18:56:51 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "65", "Connection": "keep-alive", "access-control-allow-credentials": "true", "access-control-expose-headers": "Location", "Cache-Control": "no-cache", "etag": "W/\"41-GDNaWfnVU6RZhpLbye0veBaqcHA\"", "expires": "-1", "location": "https://jsonplaceholder.typicode.com/posts/101", "nel": "{\"report_to\":\"heroku-nel\",\"response_headers\":[\"Via\"],\"max_age\":3600,\"success_fraction\":0.01,\"failure_fraction\":0.1}", "pragma": "no-cache", "report-to": "{\"group\":\"heroku-nel\",\"endpoints\":[{\"url\":\"https://nel.heroku.com/reports?s=JVJtuuPcFD%2Fwm9nSM%2FcvDNwU1ymb5xIiG000mMIz8yY%3D\\u0026sid=e11707d5-02a7-43ef-b45e-2cf4d2036f7d\\u0026ts=1770922611\"}],\"max_age\":3600}", "reporting-endpoints": "heroku-nel=\"https://nel.heroku.com/reports?s=JVJtuuPcFD%2Fwm9nSM%2FcvDNwU1ymb5xIiG000mMIz8yY%3D&sid=e11707d5-02a7-43ef-b45e-2cf4d2036f7d&ts=1770922611\"", "Server": "cloudflare", "vary": "Origin, X-HTTP-Method-Override, Accept-Encoding", "via": "2.0 heroku-router", "x-content-type-options": "nosniff", "x-powered-by": "Express", "x-ratelimit-limit": "1000", "x-ratelimit-remaining": "999", "x-ratelimit-reset": "1770922651", "cf-cache-status": "DYNAMIC", "CF-RAY": "9cce4ef24d8ecf2b-SJC", "alt-svc": "h3=\":443\"; ma=86400"}, "body": "ewogICJ0aXRsZSI6ICJmb28iLAogICJib2R5IjogImJhciIsCiAgInVzZXJJZCI6IDEsCiAgImlkIjogMTAxCn0=", "bodySize": 65}, "inputSchema": {"type": 6, "properties": {"method": {"type": 2, "properties": {}}, "url": {"type": 2, "properties": {}}, "protocol": {"type": 2, "properties": {}}, "hostname": {"type": 2, "properties": {}}, "path": {"type": 2, "properties": {}}, "headers": {"type": 6, "properties": {"User-Agent": {"type": 2, "properties": {}}, "Accept-Encoding": {"type": 2, "properties": {}}, "Accept": {"type": 2, "properties": {}}, "Connection": {"type": 2, "properties": {}}, "Content-Length": {"type": 2, "properties": {}}, "Content-Type": {"type": 2, "properties": {}}}, "match_importance": 0.0}, "query": {"type": 6, "properties": {}}, "body": {"type": 6, "properties": {"title": {"type": 2, "properties": {}}, "body": {"type": 2, "properties": {}}, "userId": {"type": 1, "properties": {}}}, "encoding": 1, "decoded_type": 1}, "bodySize": {"type": 1, "properties": {}}}}, "outputSchema": {"type": 6, "properties": {"statusCode": {"type": 1, "properties": {}}, "statusMessage": {"type": 2, "properties": {}}, "headers": {"type": 6, "properties": {"Date": {"type": 2, "properties": {}}, "Content-Type": {"type": 2, "properties": {}}, "Content-Length": {"type": 2, "properties": {}}, "Connection": {"type": 2, "properties": {}}, "access-control-allow-credentials": {"type": 2, "properties": {}}, "access-control-expose-headers": {"type": 2, "properties": {}}, "Cache-Control": {"type": 2, "properties": {}}, "etag": {"type": 2, "properties": {}}, "expires": {"type": 2, "properties": {}}, "location": {"type": 2, "properties": {}}, "nel": {"type": 2, "properties": {}}, "pragma": {"type": 2, "properties": {}}, "report-to": {"type": 2, "properties": {}}, "reporting-endpoints": {"type": 2, "properties": {}}, "Server": {"type": 2, "properties": {}}, "vary": {"type": 2, "properties": {}}, "via": {"type": 2, "properties": {}}, "x-content-type-options": {"type": 2, "properties": {}}, "x-powered-by": {"type": 2, "properties": {}}, "x-ratelimit-limit": {"type": 2, "properties": {}}, "x-ratelimit-remaining": {"type": 2, "properties": {}}, "x-ratelimit-reset": {"type": 2, "properties": {}}, "cf-cache-status": {"type": 2, "properties": {}}, "CF-RAY": {"type": 2, "properties": {}}, "alt-svc": {"type": 2, "properties": {}}}, "match_importance": 0.0}, "body": {"type": 6, "properties": {"title": {"type": 2, "properties": {}}, "body": {"type": 2, "properties": {}}, "userId": {"type": 1, "properties": {}}, "id": {"type": 1, "properties": {}}}, "encoding": 1, "decoded_type": 1}, "bodySize": {"type": 1, "properties": {}}}}, "inputSchemaHash": "045f7063dc056a8b204422469d7bba5b6c28f92d9cafb67804e44ff46c16ac73", "outputSchemaHash": "92ad975ef3d6b8779e7bb726a86b5dffee38d64c54563777f1b0f4e73fd8c568", "inputValueHash": "1beccdceabb9b915e540ad17e03b1927b68cb0f6ed4cff3fe105fd545263cb80", "outputValueHash": "567a6e6ca14e5aba6b65efed91df40e06997182d222a5e8d45161577c09baa94", "kind": 3, "status": {"code": 1, "message": ""}, "isPreAppStart": false, "timestamp": {"seconds": 1770922611, "nanos": 530857000}, "duration": {"seconds": 0, "nanos": 239150000}, "isRootSpan": false, "packageType": 1, "environment": "local", "isUsed": true, "stackTrace": ""} -{"traceId": "320a2c8d8403bdefb5d0ff011f8d6bf1", "spanId": "6032f218b2a8c999", "parentSpanId": "", "name": "POST /api/post", "packageName": "flask", "instrumentationName": "FlaskInstrumentation", "submoduleName": "POST", "inputValue": {"method": "POST", "url": "http://localhost:3000/api/post", "target": "/api/post", "headers": {"Host": "localhost:3000", "User-Agent": "curl/8.7.1", "Accept": "*/*"}, "httpVersion": "1.1", "remoteAddress": "127.0.0.1", "remotePort": 52825, "body": "eyJ0aXRsZSI6ICJmb28iLCAiYm9keSI6ICJiYXIiLCAidXNlcklkIjogMX0=", "bodySize": 44}, "outputValue": {"statusCode": 201, "statusMessage": "CREATED", "headers": {"Content-Type": "application/json", "Content-Length": "49"}, "body": "eyJib2R5IjoiYmFyIiwiaWQiOjEwMSwidGl0bGUiOiJmb28iLCJ1c2VySWQiOjF9Cg==", "bodySize": 49}, "inputSchema": {"type": 6, "properties": {"method": {"type": 2, "properties": {}}, "url": {"type": 2, "properties": {}}, "target": {"type": 2, "properties": {}}, "headers": {"type": 6, "properties": {"Host": {"type": 2, "properties": {}}, "User-Agent": {"type": 2, "properties": {}}, "Accept": {"type": 2, "properties": {}}}, "match_importance": 0.0}, "httpVersion": {"type": 2, "properties": {}}, "remoteAddress": {"type": 2, "properties": {}}, "remotePort": {"type": 1, "properties": {}}, "body": {"type": 2, "properties": {}, "encoding": 1}, "bodySize": {"type": 1, "properties": {}}}}, "outputSchema": {"type": 6, "properties": {"statusCode": {"type": 1, "properties": {}}, "statusMessage": {"type": 2, "properties": {}}, "headers": {"type": 6, "properties": {"Content-Type": {"type": 2, "properties": {}}, "Content-Length": {"type": 2, "properties": {}}}, "match_importance": 0.0}, "body": {"type": 2, "properties": {}, "encoding": 1}, "bodySize": {"type": 1, "properties": {}}}}, "inputSchemaHash": "1461206070dac20add0fa03f3aae705ebf3dd374e046d60112376de9e3c058f0", "outputSchemaHash": "3ac9963ed134d812f048189e821b490a979462988c3f2de2c6c030c00568d3e8", "inputValueHash": "588df9a76cc2e6130dcaebffedc8e7680867f32e847cea4440f9542ba110543d", "outputValueHash": "c6559a0427b4f8e7b789eb09e6acd46d9d746b77f801e82a93b4a92c623eb98e", "kind": 2, "status": {"code": 1, "message": ""}, "isPreAppStart": false, "timestamp": {"seconds": 1770922611, "nanos": 529904000}, "duration": {"seconds": 0, "nanos": 248095000}, "isRootSpan": true, "packageType": 1, "environment": "local", "isUsed": true, "stackTrace": ""} diff --git a/.tusk/traces/2026-02-12T18-56-52-112413+00-00_trace_cbf00071e5d47f4db457fb4a2d65b38e.jsonl b/.tusk/traces/2026-02-12T18-56-52-112413+00-00_trace_cbf00071e5d47f4db457fb4a2d65b38e.jsonl deleted file mode 100644 index 11e137b..0000000 --- a/.tusk/traces/2026-02-12T18-56-52-112413+00-00_trace_cbf00071e5d47f4db457fb4a2d65b38e.jsonl +++ /dev/null @@ -1,2 +0,0 @@ -{"traceId": "cbf00071e5d47f4db457fb4a2d65b38e", "spanId": "09e39aafc5acf640", "parentSpanId": "35a8e81813f06874", "name": "DELETE /posts/5", "packageName": "https", "instrumentationName": "RequestsInstrumentation", "submoduleName": "DELETE", "inputValue": {"method": "DELETE", "url": "https://jsonplaceholder.typicode.com/posts/5", "protocol": "https", "hostname": "jsonplaceholder.typicode.com", "path": "/posts/5", "headers": {"User-Agent": "python-requests/2.32.5", "Accept-Encoding": "gzip, deflate", "Accept": "*/*", "Connection": "keep-alive", "Content-Length": "0"}, "query": {}}, "outputValue": {"statusCode": 200, "statusMessage": "OK", "headers": {"Date": "Thu, 12 Feb 2026 18:56:52 GMT", "Content-Type": "application/json; charset=utf-8", "Transfer-Encoding": "chunked", "Connection": "keep-alive", "access-control-allow-credentials": "true", "Cache-Control": "no-cache", "etag": "W/\"2-vyGp6PvFo4RvsFtPoIWeCReyIC8\"", "expires": "-1", "nel": "{\"report_to\":\"heroku-nel\",\"response_headers\":[\"Via\"],\"max_age\":3600,\"success_fraction\":0.01,\"failure_fraction\":0.1}", "pragma": "no-cache", "report-to": "{\"group\":\"heroku-nel\",\"endpoints\":[{\"url\":\"https://nel.heroku.com/reports?s=EcPBRmQn3wyNmTmJHT4CrNfpeoQykg2lj8u5gUwGM6w%3D\\u0026sid=e11707d5-02a7-43ef-b45e-2cf4d2036f7d\\u0026ts=1770922612\"}],\"max_age\":3600}", "reporting-endpoints": "heroku-nel=\"https://nel.heroku.com/reports?s=EcPBRmQn3wyNmTmJHT4CrNfpeoQykg2lj8u5gUwGM6w%3D&sid=e11707d5-02a7-43ef-b45e-2cf4d2036f7d&ts=1770922612\"", "Server": "cloudflare", "vary": "Origin, Accept-Encoding", "via": "2.0 heroku-router", "x-content-type-options": "nosniff", "x-powered-by": "Express", "x-ratelimit-limit": "1000", "x-ratelimit-remaining": "998", "x-ratelimit-reset": "1770922651", "cf-cache-status": "DYNAMIC", "Content-Encoding": "gzip", "CF-RAY": "9cce4ef3fa542338-SJC", "alt-svc": "h3=\":443\"; ma=86400"}, "body": "e30=", "bodySize": 2}, "inputSchema": {"type": 6, "properties": {"method": {"type": 2, "properties": {}}, "url": {"type": 2, "properties": {}}, "protocol": {"type": 2, "properties": {}}, "hostname": {"type": 2, "properties": {}}, "path": {"type": 2, "properties": {}}, "headers": {"type": 6, "properties": {"User-Agent": {"type": 2, "properties": {}}, "Accept-Encoding": {"type": 2, "properties": {}}, "Accept": {"type": 2, "properties": {}}, "Connection": {"type": 2, "properties": {}}, "Content-Length": {"type": 2, "properties": {}}}, "match_importance": 0.0}, "query": {"type": 6, "properties": {}}}}, "outputSchema": {"type": 6, "properties": {"statusCode": {"type": 1, "properties": {}}, "statusMessage": {"type": 2, "properties": {}}, "headers": {"type": 6, "properties": {"Date": {"type": 2, "properties": {}}, "Content-Type": {"type": 2, "properties": {}}, "Transfer-Encoding": {"type": 2, "properties": {}}, "Connection": {"type": 2, "properties": {}}, "access-control-allow-credentials": {"type": 2, "properties": {}}, "Cache-Control": {"type": 2, "properties": {}}, "etag": {"type": 2, "properties": {}}, "expires": {"type": 2, "properties": {}}, "nel": {"type": 2, "properties": {}}, "pragma": {"type": 2, "properties": {}}, "report-to": {"type": 2, "properties": {}}, "reporting-endpoints": {"type": 2, "properties": {}}, "Server": {"type": 2, "properties": {}}, "vary": {"type": 2, "properties": {}}, "via": {"type": 2, "properties": {}}, "x-content-type-options": {"type": 2, "properties": {}}, "x-powered-by": {"type": 2, "properties": {}}, "x-ratelimit-limit": {"type": 2, "properties": {}}, "x-ratelimit-remaining": {"type": 2, "properties": {}}, "x-ratelimit-reset": {"type": 2, "properties": {}}, "cf-cache-status": {"type": 2, "properties": {}}, "Content-Encoding": {"type": 2, "properties": {}}, "CF-RAY": {"type": 2, "properties": {}}, "alt-svc": {"type": 2, "properties": {}}}, "match_importance": 0.0}, "body": {"type": 6, "properties": {}, "encoding": 1, "decoded_type": 1}, "bodySize": {"type": 1, "properties": {}}}}, "inputSchemaHash": "29f30669c7a74a5a1a0ccd74536354718e1dbeb98343a92444cd941b07ab5a68", "outputSchemaHash": "72b516c689b296245d1396ae8a3c4b9392b373343cb8deaa2386649929adbd82", "inputValueHash": "138a02aacd3c7fe623c31e6b6d1b74cd25c1c3bc47c3935aec920bd481804f32", "outputValueHash": "465a0b842c3e1398b2ef61b964d2c481dc0c8f6dd28fa25e80a1d7e53c7bc49b", "kind": 3, "status": {"code": 1, "message": ""}, "isPreAppStart": false, "timestamp": {"seconds": 1770922611, "nanos": 795351000}, "duration": {"seconds": 0, "nanos": 247424000}, "isRootSpan": false, "packageType": 1, "environment": "local", "isUsed": true, "stackTrace": ""} -{"traceId": "cbf00071e5d47f4db457fb4a2d65b38e", "spanId": "35a8e81813f06874", "parentSpanId": "", "name": "DELETE /api/post/5", "packageName": "flask", "instrumentationName": "FlaskInstrumentation", "submoduleName": "DELETE", "inputValue": {"method": "DELETE", "url": "http://localhost:3000/api/post/5", "target": "/api/post/5", "headers": {"Host": "localhost:3000", "User-Agent": "curl/8.7.1", "Accept": "*/*"}, "httpVersion": "1.1", "remoteAddress": "127.0.0.1", "remotePort": 52828}, "outputValue": {"statusCode": 200, "statusMessage": "OK", "headers": {"Content-Type": "application/json", "Content-Length": "42"}, "body": "eyJtZXNzYWdlIjoiUG9zdCA1IGRlbGV0ZWQgc3VjY2Vzc2Z1bGx5In0K", "bodySize": 42}, "inputSchema": {"type": 6, "properties": {"method": {"type": 2, "properties": {}}, "url": {"type": 2, "properties": {}}, "target": {"type": 2, "properties": {}}, "headers": {"type": 6, "properties": {"Host": {"type": 2, "properties": {}}, "User-Agent": {"type": 2, "properties": {}}, "Accept": {"type": 2, "properties": {}}}, "match_importance": 0.0}, "httpVersion": {"type": 2, "properties": {}}, "remoteAddress": {"type": 2, "properties": {}}, "remotePort": {"type": 1, "properties": {}}}}, "outputSchema": {"type": 6, "properties": {"statusCode": {"type": 1, "properties": {}}, "statusMessage": {"type": 2, "properties": {}}, "headers": {"type": 6, "properties": {"Content-Type": {"type": 2, "properties": {}}, "Content-Length": {"type": 2, "properties": {}}}, "match_importance": 0.0}, "body": {"type": 2, "properties": {}, "encoding": 1}, "bodySize": {"type": 1, "properties": {}}}}, "inputSchemaHash": "a51476a4da84fdd748aba5b8a4f55118cfa22bd50a9653c258ea33f1055e0a87", "outputSchemaHash": "3ac9963ed134d812f048189e821b490a979462988c3f2de2c6c030c00568d3e8", "inputValueHash": "65c0c93464dab0c4c284c64068b53618258657593aad0368d3f47614eb0ec815", "outputValueHash": "dba3196a096dc332a880b0bef0b5c38ee3e1200ed750f02bcfa3a08ebf87bb54", "kind": 2, "status": {"code": 1, "message": ""}, "isPreAppStart": false, "timestamp": {"seconds": 1770922611, "nanos": 794551000}, "duration": {"seconds": 0, "nanos": 254557000}, "isRootSpan": true, "packageType": 1, "environment": "local", "isUsed": true, "stackTrace": ""} diff --git a/.tusk/traces/2026-02-12T20-59-26-149964+00-00_trace_9d46b5b343373f044b69066417012694.jsonl b/.tusk/traces/2026-02-12T20-59-26-149964+00-00_trace_9d46b5b343373f044b69066417012694.jsonl new file mode 100644 index 0000000..ed3c242 --- /dev/null +++ b/.tusk/traces/2026-02-12T20-59-26-149964+00-00_trace_9d46b5b343373f044b69066417012694.jsonl @@ -0,0 +1,4 @@ +{"traceId": "9d46b5b343373f044b69066417012694", "spanId": "a1a6771b2d42fe87", "parentSpanId": "8c4396ae7271302b", "name": "GET /json/", "packageName": "http", "instrumentationName": "RequestsInstrumentation", "submoduleName": "GET", "inputValue": {"method": "GET", "url": "http://ip-api.com/json/", "protocol": "http", "hostname": "ip-api.com", "path": "/json/", "headers": {"User-Agent": "python-requests/2.32.5", "Accept-Encoding": "gzip, deflate", "Accept": "*/*", "Connection": "keep-alive"}, "query": {}}, "outputValue": {"statusCode": 200, "statusMessage": "OK", "headers": {"Date": "Thu, 12 Feb 2026 20:59:24 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "307", "Access-Control-Allow-Origin": "*", "X-Ttl": "60", "X-Rl": "44"}, "body": "eyJzdGF0dXMiOiJzdWNjZXNzIiwiY291bnRyeSI6IlVuaXRlZCBTdGF0ZXMiLCJjb3VudHJ5Q29kZSI6IlVTIiwicmVnaW9uIjoiQ0EiLCJyZWdpb25OYW1lIjoiQ2FsaWZvcm5pYSIsImNpdHkiOiJPYWtsYW5kIiwiemlwIjoiOTQ2MDYiLCJsYXQiOjM3Ljc5MDYsImxvbiI6LTEyMi4yNDEyLCJ0aW1lem9uZSI6IkFtZXJpY2EvTG9zX0FuZ2VsZXMiLCJpc3AiOiJTb25pYyBUZWxlY29tIExMQyIsIm9yZyI6IlNvbmljLm5ldCwgSW5jLiIsImFzIjoiQVM0NjM3NSBTb25pYyBUZWxlY29tIExMQyIsInF1ZXJ5IjoiMTg0LjIzLjIzNC4xNjIifQ==", "bodySize": 307}, "inputSchema": {"type": 6, "properties": {"method": {"type": 2, "properties": {}}, "url": {"type": 2, "properties": {}}, "protocol": {"type": 2, "properties": {}}, "hostname": {"type": 2, "properties": {}}, "path": {"type": 2, "properties": {}}, "headers": {"type": 6, "properties": {"User-Agent": {"type": 2, "properties": {}}, "Accept-Encoding": {"type": 2, "properties": {}}, "Accept": {"type": 2, "properties": {}}, "Connection": {"type": 2, "properties": {}}}, "match_importance": 0.0}, "query": {"type": 6, "properties": {}}}}, "outputSchema": {"type": 6, "properties": {"statusCode": {"type": 1, "properties": {}}, "statusMessage": {"type": 2, "properties": {}}, "headers": {"type": 6, "properties": {"Date": {"type": 2, "properties": {}}, "Content-Type": {"type": 2, "properties": {}}, "Content-Length": {"type": 2, "properties": {}}, "Access-Control-Allow-Origin": {"type": 2, "properties": {}}, "X-Ttl": {"type": 2, "properties": {}}, "X-Rl": {"type": 2, "properties": {}}}, "match_importance": 0.0}, "body": {"type": 6, "properties": {"status": {"type": 2, "properties": {}}, "country": {"type": 2, "properties": {}}, "countryCode": {"type": 2, "properties": {}}, "region": {"type": 2, "properties": {}}, "regionName": {"type": 2, "properties": {}}, "city": {"type": 2, "properties": {}}, "zip": {"type": 2, "properties": {}}, "lat": {"type": 1, "properties": {}}, "lon": {"type": 1, "properties": {}}, "timezone": {"type": 2, "properties": {}}, "isp": {"type": 2, "properties": {}}, "org": {"type": 2, "properties": {}}, "as": {"type": 2, "properties": {}}, "query": {"type": 2, "properties": {}}}, "encoding": 1, "decoded_type": 1}, "bodySize": {"type": 1, "properties": {}}}}, "inputSchemaHash": "a6c2691163ba64e7936509c0754086c892f16dea2c8a1228b47d23169a52fe96", "outputSchemaHash": "a5366dab0a82d22cc970eb981917c6ec9518c98e3d44b4e1b72a75402cf4fd1d", "inputValueHash": "b7d671dcd77f0cd0d18f46640a63af65513e421c6b50d941961ba9bff10e0c9a", "outputValueHash": "4454dd2de6e1c80d72b3acc8e31b3e8dd7b182e54511220a56fab59860a8ac50", "kind": 3, "status": {"code": 1, "message": ""}, "isPreAppStart": false, "timestamp": {"seconds": 1770929964, "nanos": 226351000}, "duration": {"seconds": 0, "nanos": 45366000}, "isRootSpan": false, "packageType": 1, "environment": "local", "isUsed": true, "stackTrace": ""} +{"traceId": "9d46b5b343373f044b69066417012694", "spanId": "281fd41489794a87", "parentSpanId": "8c4396ae7271302b", "name": "GET /v1/forecast", "packageName": "https", "instrumentationName": "RequestsInstrumentation", "submoduleName": "GET", "inputValue": {"method": "GET", "url": "https://api.open-meteo.com/v1/forecast?latitude=37.7906&longitude=-122.2412¤t_weather=true", "protocol": "https", "hostname": "api.open-meteo.com", "path": "/v1/forecast", "headers": {"User-Agent": "python-requests/2.32.5", "Accept-Encoding": "gzip, deflate", "Accept": "*/*", "Connection": "keep-alive"}, "query": {"latitude": "37.7906", "longitude": "-122.2412", "current_weather": "true"}}, "outputValue": {"statusCode": 200, "statusMessage": "OK", "headers": {"Date": "Thu, 12 Feb 2026 20:59:24 GMT", "Content-Type": "application/json; charset=utf-8", "Transfer-Encoding": "chunked", "Connection": "keep-alive", "Content-Encoding": "deflate"}, "body": "eyJsYXRpdHVkZSI6MzcuNzk5MjUsImxvbmdpdHVkZSI6LTEyMi4yNDgzNywiZ2VuZXJhdGlvbnRpbWVfbXMiOjAuMDk1NDg2NjQwOTMwMTc1NzgsInV0Y19vZmZzZXRfc2Vjb25kcyI6MCwidGltZXpvbmUiOiJHTVQiLCJ0aW1lem9uZV9hYmJyZXZpYXRpb24iOiJHTVQiLCJlbGV2YXRpb24iOjIyLjAsImN1cnJlbnRfd2VhdGhlcl91bml0cyI6eyJ0aW1lIjoiaXNvODYwMSIsImludGVydmFsIjoic2Vjb25kcyIsInRlbXBlcmF0dXJlIjoiwrBDIiwid2luZHNwZWVkIjoia20vaCIsIndpbmRkaXJlY3Rpb24iOiLCsCIsImlzX2RheSI6IiIsIndlYXRoZXJjb2RlIjoid21vIGNvZGUifSwiY3VycmVudF93ZWF0aGVyIjp7InRpbWUiOiIyMDI2LTAyLTEyVDIwOjQ1IiwiaW50ZXJ2YWwiOjkwMCwidGVtcGVyYXR1cmUiOjE1LjcsIndpbmRzcGVlZCI6OC45LCJ3aW5kZGlyZWN0aW9uIjo0NywiaXNfZGF5IjoxLCJ3ZWF0aGVyY29kZSI6MH19", "bodySize": 474}, "inputSchema": {"type": 6, "properties": {"method": {"type": 2, "properties": {}}, "url": {"type": 2, "properties": {}}, "protocol": {"type": 2, "properties": {}}, "hostname": {"type": 2, "properties": {}}, "path": {"type": 2, "properties": {}}, "headers": {"type": 6, "properties": {"User-Agent": {"type": 2, "properties": {}}, "Accept-Encoding": {"type": 2, "properties": {}}, "Accept": {"type": 2, "properties": {}}, "Connection": {"type": 2, "properties": {}}}, "match_importance": 0.0}, "query": {"type": 6, "properties": {"latitude": {"type": 2, "properties": {}}, "longitude": {"type": 2, "properties": {}}, "current_weather": {"type": 2, "properties": {}}}}}}, "outputSchema": {"type": 6, "properties": {"statusCode": {"type": 1, "properties": {}}, "statusMessage": {"type": 2, "properties": {}}, "headers": {"type": 6, "properties": {"Date": {"type": 2, "properties": {}}, "Content-Type": {"type": 2, "properties": {}}, "Transfer-Encoding": {"type": 2, "properties": {}}, "Connection": {"type": 2, "properties": {}}, "Content-Encoding": {"type": 2, "properties": {}}}, "match_importance": 0.0}, "body": {"type": 6, "properties": {"latitude": {"type": 1, "properties": {}}, "longitude": {"type": 1, "properties": {}}, "generationtime_ms": {"type": 1, "properties": {}}, "utc_offset_seconds": {"type": 1, "properties": {}}, "timezone": {"type": 2, "properties": {}}, "timezone_abbreviation": {"type": 2, "properties": {}}, "elevation": {"type": 1, "properties": {}}, "current_weather_units": {"type": 6, "properties": {"time": {"type": 2, "properties": {}}, "interval": {"type": 2, "properties": {}}, "temperature": {"type": 2, "properties": {}}, "windspeed": {"type": 2, "properties": {}}, "winddirection": {"type": 2, "properties": {}}, "is_day": {"type": 2, "properties": {}}, "weathercode": {"type": 2, "properties": {}}}}, "current_weather": {"type": 6, "properties": {"time": {"type": 2, "properties": {}}, "interval": {"type": 1, "properties": {}}, "temperature": {"type": 1, "properties": {}}, "windspeed": {"type": 1, "properties": {}}, "winddirection": {"type": 1, "properties": {}}, "is_day": {"type": 1, "properties": {}}, "weathercode": {"type": 1, "properties": {}}}}}, "encoding": 1, "decoded_type": 1}, "bodySize": {"type": 1, "properties": {}}}}, "inputSchemaHash": "b912b3057c24b94659b5ef94ed1111565d9c53aee3c4f6f18de9714bce67fc34", "outputSchemaHash": "665b273e56a91505bd0d56ba4a0f2bbf9567a18b0e57c085c810e05889468be9", "inputValueHash": "b4e73aedf590e16db77f7b96ba17670463376eddbdf15e5d605f73836370615b", "outputValueHash": "a48829135db2335c874de2a8ce31fae30eb3d3e2171b8821df546a7cce2dbdea", "kind": 3, "status": {"code": 1, "message": ""}, "isPreAppStart": false, "timestamp": {"seconds": 1770929964, "nanos": 282315000}, "duration": {"seconds": 0, "nanos": 647660000}, "isRootSpan": false, "packageType": 1, "environment": "local", "isUsed": true, "stackTrace": ""} +{"traceId": "9d46b5b343373f044b69066417012694", "spanId": "929148094493ef7e", "parentSpanId": "8c4396ae7271302b", "name": "GET /random", "packageName": "https", "instrumentationName": "RequestsInstrumentation", "submoduleName": "GET", "inputValue": {"method": "GET", "url": "https://bored-api.appbrewery.com/random", "protocol": "https", "hostname": "bored-api.appbrewery.com", "path": "/random", "headers": {"User-Agent": "python-requests/2.32.5", "Accept-Encoding": "gzip, deflate", "Accept": "*/*", "Connection": "keep-alive"}, "query": {}}, "outputValue": {"statusCode": 200, "statusMessage": "OK", "headers": {"Date": "Thu, 12 Feb 2026 20:59:25 GMT", "Content-Type": "application/json; charset=utf-8", "Transfer-Encoding": "chunked", "Connection": "keep-alive", "Etag": "W/\"cc-4D6eAwWQEnRsbcABbI2P64INV08\"", "Nel": "{\"report_to\":\"heroku-nel\",\"response_headers\":[\"Via\"],\"max_age\":3600,\"success_fraction\":0.01,\"failure_fraction\":0.1}", "Ratelimit-Limit": "100", "Ratelimit-Remaining": "98", "Ratelimit-Reset": "840", "Report-To": "{\"group\":\"heroku-nel\",\"endpoints\":[{\"url\":\"https://nel.heroku.com/reports?s=m7Ub%2BSVFboqQcd2AKSLkKL%2B5YNx61C99GyLuFT%2B3k9g%3D\\u0026sid=1b10b0ff-8a76-4548-befa-353fc6c6c045\\u0026ts=1770929965\"}],\"max_age\":3600}", "Reporting-Endpoints": "heroku-nel=\"https://nel.heroku.com/reports?s=m7Ub%2BSVFboqQcd2AKSLkKL%2B5YNx61C99GyLuFT%2B3k9g%3D&sid=1b10b0ff-8a76-4548-befa-353fc6c6c045&ts=1770929965\"", "Server": "cloudflare", "Via": "1.1 heroku-router", "X-Powered-By": "Express", "cf-cache-status": "DYNAMIC", "Content-Encoding": "gzip", "CF-RAY": "9ccf02796e0b88f5-SJC", "alt-svc": "h3=\":443\"; ma=86400"}, "body": "eyJhY3Rpdml0eSI6IlZpc2l0IHlvdXIgcGFzdCB0ZWFjaGVycyIsImF2YWlsYWJpbGl0eSI6MC43LCJ0eXBlIjoic29jaWFsIiwicGFydGljaXBhbnRzIjoxLCJwcmljZSI6MCwiYWNjZXNzaWJpbGl0eSI6IkZldyB0byBubyBjaGFsbGVuZ2VzIiwiZHVyYXRpb24iOiJob3VycyIsImtpZEZyaWVuZGx5Ijp0cnVlLCJsaW5rIjoiIiwia2V5IjoiODIzODkxOCJ9", "bodySize": 204}, "inputSchema": {"type": 6, "properties": {"method": {"type": 2, "properties": {}}, "url": {"type": 2, "properties": {}}, "protocol": {"type": 2, "properties": {}}, "hostname": {"type": 2, "properties": {}}, "path": {"type": 2, "properties": {}}, "headers": {"type": 6, "properties": {"User-Agent": {"type": 2, "properties": {}}, "Accept-Encoding": {"type": 2, "properties": {}}, "Accept": {"type": 2, "properties": {}}, "Connection": {"type": 2, "properties": {}}}, "match_importance": 0.0}, "query": {"type": 6, "properties": {}}}}, "outputSchema": {"type": 6, "properties": {"statusCode": {"type": 1, "properties": {}}, "statusMessage": {"type": 2, "properties": {}}, "headers": {"type": 6, "properties": {"Date": {"type": 2, "properties": {}}, "Content-Type": {"type": 2, "properties": {}}, "Transfer-Encoding": {"type": 2, "properties": {}}, "Connection": {"type": 2, "properties": {}}, "Etag": {"type": 2, "properties": {}}, "Nel": {"type": 2, "properties": {}}, "Ratelimit-Limit": {"type": 2, "properties": {}}, "Ratelimit-Remaining": {"type": 2, "properties": {}}, "Ratelimit-Reset": {"type": 2, "properties": {}}, "Report-To": {"type": 2, "properties": {}}, "Reporting-Endpoints": {"type": 2, "properties": {}}, "Server": {"type": 2, "properties": {}}, "Via": {"type": 2, "properties": {}}, "X-Powered-By": {"type": 2, "properties": {}}, "cf-cache-status": {"type": 2, "properties": {}}, "Content-Encoding": {"type": 2, "properties": {}}, "CF-RAY": {"type": 2, "properties": {}}, "alt-svc": {"type": 2, "properties": {}}}, "match_importance": 0.0}, "body": {"type": 6, "properties": {"activity": {"type": 2, "properties": {}}, "availability": {"type": 1, "properties": {}}, "type": {"type": 2, "properties": {}}, "participants": {"type": 1, "properties": {}}, "price": {"type": 1, "properties": {}}, "accessibility": {"type": 2, "properties": {}}, "duration": {"type": 2, "properties": {}}, "kidFriendly": {"type": 3, "properties": {}}, "link": {"type": 2, "properties": {}}, "key": {"type": 2, "properties": {}}}, "encoding": 1, "decoded_type": 1}, "bodySize": {"type": 1, "properties": {}}}}, "inputSchemaHash": "a6c2691163ba64e7936509c0754086c892f16dea2c8a1228b47d23169a52fe96", "outputSchemaHash": "7c72624ba02fce44ca8772c793b5228c65554e28dd229d7c7ac5a7f1bff1ff1c", "inputValueHash": "4e6bcd84e21eb49a8f9c146ff1116419180f97cb08c7ba8060adedf6bf6a7608", "outputValueHash": "b23835cdc92bab41d97027b2314e675b5ff5589fbb443ec84a4978d3b8b34bc8", "kind": 3, "status": {"code": 1, "message": ""}, "isPreAppStart": false, "timestamp": {"seconds": 1770929964, "nanos": 934838000}, "duration": {"seconds": 0, "nanos": 117578000}, "isRootSpan": false, "packageType": 1, "environment": "local", "isUsed": true, "stackTrace": ""} +{"traceId": "9d46b5b343373f044b69066417012694", "spanId": "8c4396ae7271302b", "parentSpanId": "", "name": "GET /api/weather-activity", "packageName": "flask", "instrumentationName": "FlaskInstrumentation", "submoduleName": "GET", "inputValue": {"method": "GET", "url": "http://localhost:3000/api/weather-activity", "target": "/api/weather-activity", "headers": {"Host": "localhost:3000", "User-Agent": "curl/8.7.1", "Accept": "*/*"}, "httpVersion": "1.1", "remoteAddress": "127.0.0.1", "remotePort": 62426}, "outputValue": {"statusCode": 200, "statusMessage": "OK", "headers": {"Content-Type": "application/json", "Content-Length": "354"}, "body": "eyJsb2NhdGlvbiI6eyJjaXR5IjoiT2FrbGFuZCIsImNvb3JkaW5hdGVzIjp7ImxhdCI6MzcuNzkwNiwibG9uIjotMTIyLjI0MTJ9LCJjb3VudHJ5IjoiVW5pdGVkIFN0YXRlcyIsImlzQ29hc3RhbCI6dHJ1ZX0sInJlY29tbWVuZGF0aW9ucyI6eyJhbHRlcm5hdGl2ZSI6eyJhY3Rpdml0eSI6IlZpc2l0IHlvdXIgcGFzdCB0ZWFjaGVycyIsInBhcnRpY2lwYW50cyI6MSwidHlwZSI6InNvY2lhbCJ9LCJ3ZWF0aGVyQmFzZWQiOiJOaWNlIGRheSBmb3IgYSB3YWxrIn0sIndlYXRoZXIiOnsidGVtcGVyYXR1cmUiOjE1LjcsInRpbWUiOiIyMDI2LTAyLTEyVDIwOjQ1Iiwid2VhdGhlcmNvZGUiOjAsIndpbmRzcGVlZCI6OC45fX0K", "bodySize": 354}, "inputSchema": {"type": 6, "properties": {"method": {"type": 2, "properties": {}}, "url": {"type": 2, "properties": {}}, "target": {"type": 2, "properties": {}}, "headers": {"type": 6, "properties": {"Host": {"type": 2, "properties": {}}, "User-Agent": {"type": 2, "properties": {}}, "Accept": {"type": 2, "properties": {}}}, "match_importance": 0.0}, "httpVersion": {"type": 2, "properties": {}}, "remoteAddress": {"type": 2, "properties": {}}, "remotePort": {"type": 1, "properties": {}}}}, "outputSchema": {"type": 6, "properties": {"statusCode": {"type": 1, "properties": {}}, "statusMessage": {"type": 2, "properties": {}}, "headers": {"type": 6, "properties": {"Content-Type": {"type": 2, "properties": {}}, "Content-Length": {"type": 2, "properties": {}}}, "match_importance": 0.0}, "body": {"type": 2, "properties": {}, "encoding": 1}, "bodySize": {"type": 1, "properties": {}}}}, "inputSchemaHash": "a51476a4da84fdd748aba5b8a4f55118cfa22bd50a9653c258ea33f1055e0a87", "outputSchemaHash": "3ac9963ed134d812f048189e821b490a979462988c3f2de2c6c030c00568d3e8", "inputValueHash": "39739119a1eb7dd87aa87f82ab10e6ec5564daa1295ace0a7c196850e6a481a9", "outputValueHash": "15974942309cb92be05f14832182c168e930a5f8a011b844318fef9e1a06ba9e", "kind": 2, "status": {"code": 1, "message": ""}, "isPreAppStart": false, "timestamp": {"seconds": 1770929964, "nanos": 220221000}, "duration": {"seconds": 0, "nanos": 838203000}, "isRootSpan": true, "packageType": 1, "environment": "local", "isUsed": true, "stackTrace": ""} diff --git a/.tusk/traces/2026-02-12T20-59-26-154186+00-00_trace_54e098fe1ae5a9a08e68cc8037a45a43.jsonl b/.tusk/traces/2026-02-12T20-59-26-154186+00-00_trace_54e098fe1ae5a9a08e68cc8037a45a43.jsonl new file mode 100644 index 0000000..c3910ee --- /dev/null +++ b/.tusk/traces/2026-02-12T20-59-26-154186+00-00_trace_54e098fe1ae5a9a08e68cc8037a45a43.jsonl @@ -0,0 +1,2 @@ +{"traceId": "54e098fe1ae5a9a08e68cc8037a45a43", "spanId": "71d7e09bab484cd7", "parentSpanId": "2de97177fc38910b", "name": "GET /api/", "packageName": "https", "instrumentationName": "RequestsInstrumentation", "submoduleName": "GET", "inputValue": {"method": "GET", "url": "https://randomuser.me/api/?seed=1", "protocol": "https", "hostname": "randomuser.me", "path": "/api/", "headers": {"User-Agent": "python-requests/2.32.5", "Accept-Encoding": "gzip, deflate", "Accept": "*/*", "Connection": "keep-alive"}, "query": {"seed": "1"}}, "outputValue": {"statusCode": 200, "statusMessage": "OK", "headers": {"Date": "Thu, 12 Feb 2026 20:59:25 GMT", "Content-Type": "application/json", "Transfer-Encoding": "chunked", "Connection": "keep-alive", "Server": "cloudflare", "Nel": "{\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}", "cf-cache-status": "DYNAMIC", "Report-To": "{\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=Jh%2Fz2kgu8ZAsuLgpv15QTbRRiaW3H9dy1IsZ4lONw%2FxDqFoDF892BYLDjvbH%2BGSEQuPYUH1g%2FDHMQ5SG9NpXWt7U2hmcjoFpYfr5oZM%3D\"}]}", "Content-Encoding": "gzip", "CF-RAY": "9ccf027a3a350653-SJC", "alt-svc": "h3=\":443\"; ma=86400"}, "body": "eyJyZXN1bHRzIjpbXSwiaW5mbyI6eyJzZWVkIjoiZDNhZGIzM2YiLCJyZXN1bHRzIjoxLCJwYWdlIjoxLCJ2ZXJzaW9uIjoiMS40In19", "bodySize": 78}, "inputSchema": {"type": 6, "properties": {"method": {"type": 2, "properties": {}}, "url": {"type": 2, "properties": {}}, "protocol": {"type": 2, "properties": {}}, "hostname": {"type": 2, "properties": {}}, "path": {"type": 2, "properties": {}}, "headers": {"type": 6, "properties": {"User-Agent": {"type": 2, "properties": {}}, "Accept-Encoding": {"type": 2, "properties": {}}, "Accept": {"type": 2, "properties": {}}, "Connection": {"type": 2, "properties": {}}}, "match_importance": 0.0}, "query": {"type": 6, "properties": {"seed": {"type": 2, "properties": {}}}}}}, "outputSchema": {"type": 6, "properties": {"statusCode": {"type": 1, "properties": {}}, "statusMessage": {"type": 2, "properties": {}}, "headers": {"type": 6, "properties": {"Date": {"type": 2, "properties": {}}, "Content-Type": {"type": 2, "properties": {}}, "Transfer-Encoding": {"type": 2, "properties": {}}, "Connection": {"type": 2, "properties": {}}, "Server": {"type": 2, "properties": {}}, "Nel": {"type": 2, "properties": {}}, "cf-cache-status": {"type": 2, "properties": {}}, "Report-To": {"type": 2, "properties": {}}, "Content-Encoding": {"type": 2, "properties": {}}, "CF-RAY": {"type": 2, "properties": {}}, "alt-svc": {"type": 2, "properties": {}}}, "match_importance": 0.0}, "body": {"type": 6, "properties": {"results": {"type": 7, "properties": {}}, "info": {"type": 6, "properties": {"seed": {"type": 2, "properties": {}}, "results": {"type": 1, "properties": {}}, "page": {"type": 1, "properties": {}}, "version": {"type": 2, "properties": {}}}}}, "encoding": 1, "decoded_type": 1}, "bodySize": {"type": 1, "properties": {}}}}, "inputSchemaHash": "980d745031314c1cf6517120a9fb18f6d9047ee7c2c281faa773673f701c44ff", "outputSchemaHash": "66f3868890f70e7e35423688e5719fc31a5a47c662a167083678b62e622844d5", "inputValueHash": "efa2830ea8b69785acdec197b2b7e7a04e1410213b58028716b2b4b7d357873f", "outputValueHash": "c1323057290044ce5791fe88e52845635db7d07e5ce53e175900c2e996bc0928", "kind": 3, "status": {"code": 1, "message": ""}, "isPreAppStart": false, "timestamp": {"seconds": 1770929965, "nanos": 70091000}, "duration": {"seconds": 0, "nanos": 110119000}, "isRootSpan": false, "packageType": 1, "environment": "local", "isUsed": true, "stackTrace": ""} +{"traceId": "54e098fe1ae5a9a08e68cc8037a45a43", "spanId": "2de97177fc38910b", "parentSpanId": "", "name": "GET /api/user/1", "packageName": "flask", "instrumentationName": "FlaskInstrumentation", "submoduleName": "GET", "inputValue": {"method": "GET", "url": "http://localhost:3000/api/user/1", "target": "/api/user/1", "headers": {"Host": "localhost:3000", "User-Agent": "curl/8.7.1", "Accept": "*/*"}, "httpVersion": "1.1", "remoteAddress": "127.0.0.1", "remotePort": 62431}, "outputValue": {"statusCode": 200, "statusMessage": "OK", "headers": {"Content-Type": "application/json", "Content-Length": "79"}, "body": "eyJpbmZvIjp7InBhZ2UiOjEsInJlc3VsdHMiOjEsInNlZWQiOiJkM2FkYjMzZiIsInZlcnNpb24iOiIxLjQifSwicmVzdWx0cyI6W119Cg==", "bodySize": 79}, "inputSchema": {"type": 6, "properties": {"method": {"type": 2, "properties": {}}, "url": {"type": 2, "properties": {}}, "target": {"type": 2, "properties": {}}, "headers": {"type": 6, "properties": {"Host": {"type": 2, "properties": {}}, "User-Agent": {"type": 2, "properties": {}}, "Accept": {"type": 2, "properties": {}}}, "match_importance": 0.0}, "httpVersion": {"type": 2, "properties": {}}, "remoteAddress": {"type": 2, "properties": {}}, "remotePort": {"type": 1, "properties": {}}}}, "outputSchema": {"type": 6, "properties": {"statusCode": {"type": 1, "properties": {}}, "statusMessage": {"type": 2, "properties": {}}, "headers": {"type": 6, "properties": {"Content-Type": {"type": 2, "properties": {}}, "Content-Length": {"type": 2, "properties": {}}}, "match_importance": 0.0}, "body": {"type": 2, "properties": {}, "encoding": 1}, "bodySize": {"type": 1, "properties": {}}}}, "inputSchemaHash": "a51476a4da84fdd748aba5b8a4f55118cfa22bd50a9653c258ea33f1055e0a87", "outputSchemaHash": "3ac9963ed134d812f048189e821b490a979462988c3f2de2c6c030c00568d3e8", "inputValueHash": "1621f8e5efb1a97eceefc81609fbdb8d97a0708ad09d29a4e58ce52a35257ad9", "outputValueHash": "69037eb2ffc2e0a58d946844443f4e1c7521418f556cbd3a49272a27378c0607", "kind": 2, "status": {"code": 1, "message": ""}, "isPreAppStart": false, "timestamp": {"seconds": 1770929965, "nanos": 69156000}, "duration": {"seconds": 0, "nanos": 115037000}, "isRootSpan": true, "packageType": 1, "environment": "local", "isUsed": true, "stackTrace": ""} diff --git a/.tusk/traces/2026-02-12T20-59-26-155339+00-00_trace_abfe41421d7dde319ed8b69998c6ba14.jsonl b/.tusk/traces/2026-02-12T20-59-26-155339+00-00_trace_abfe41421d7dde319ed8b69998c6ba14.jsonl new file mode 100644 index 0000000..6a2c13d --- /dev/null +++ b/.tusk/traces/2026-02-12T20-59-26-155339+00-00_trace_abfe41421d7dde319ed8b69998c6ba14.jsonl @@ -0,0 +1,2 @@ +{"traceId": "abfe41421d7dde319ed8b69998c6ba14", "spanId": "a1336be7dccd0148", "parentSpanId": "1ffda6dc1aacef45", "name": "GET /api/", "packageName": "https", "instrumentationName": "RequestsInstrumentation", "submoduleName": "GET", "inputValue": {"method": "GET", "url": "https://randomuser.me/api/", "protocol": "https", "hostname": "randomuser.me", "path": "/api/", "headers": {"User-Agent": "python-requests/2.32.5", "Accept-Encoding": "gzip, deflate", "Accept": "*/*", "Connection": "keep-alive"}, "query": {}}, "outputValue": {"statusCode": 200, "statusMessage": "OK", "headers": {"Date": "Thu, 12 Feb 2026 20:59:25 GMT", "Content-Type": "application/json", "Transfer-Encoding": "chunked", "Connection": "keep-alive", "Server": "cloudflare", "Nel": "{\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}", "cf-cache-status": "DYNAMIC", "Report-To": "{\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=5VfCCjG85Qwq7TO534Gcc%2BHA3OqhTyfLeM9GEcCQfZIora0igXE30sTk3yzMcgdT2m%2FzW%2Frf1nGbpIIQsBm5qz2t5%2B0%2F9bDHass2GUw%3D\"}]}", "Content-Encoding": "gzip", "CF-RAY": "9ccf027b1abec6c6-SJC", "alt-svc": "h3=\":443\"; ma=86400"}, "body": "eyJyZXN1bHRzIjpbXSwiaW5mbyI6eyJzZWVkIjoiZDNhZGIzM2YiLCJyZXN1bHRzIjoxLCJwYWdlIjoxLCJ2ZXJzaW9uIjoiMS40In19", "bodySize": 78}, "inputSchema": {"type": 6, "properties": {"method": {"type": 2, "properties": {}}, "url": {"type": 2, "properties": {}}, "protocol": {"type": 2, "properties": {}}, "hostname": {"type": 2, "properties": {}}, "path": {"type": 2, "properties": {}}, "headers": {"type": 6, "properties": {"User-Agent": {"type": 2, "properties": {}}, "Accept-Encoding": {"type": 2, "properties": {}}, "Accept": {"type": 2, "properties": {}}, "Connection": {"type": 2, "properties": {}}}, "match_importance": 0.0}, "query": {"type": 6, "properties": {}}}}, "outputSchema": {"type": 6, "properties": {"statusCode": {"type": 1, "properties": {}}, "statusMessage": {"type": 2, "properties": {}}, "headers": {"type": 6, "properties": {"Date": {"type": 2, "properties": {}}, "Content-Type": {"type": 2, "properties": {}}, "Transfer-Encoding": {"type": 2, "properties": {}}, "Connection": {"type": 2, "properties": {}}, "Server": {"type": 2, "properties": {}}, "Nel": {"type": 2, "properties": {}}, "cf-cache-status": {"type": 2, "properties": {}}, "Report-To": {"type": 2, "properties": {}}, "Content-Encoding": {"type": 2, "properties": {}}, "CF-RAY": {"type": 2, "properties": {}}, "alt-svc": {"type": 2, "properties": {}}}, "match_importance": 0.0}, "body": {"type": 6, "properties": {"results": {"type": 7, "properties": {}}, "info": {"type": 6, "properties": {"seed": {"type": 2, "properties": {}}, "results": {"type": 1, "properties": {}}, "page": {"type": 1, "properties": {}}, "version": {"type": 2, "properties": {}}}}}, "encoding": 1, "decoded_type": 1}, "bodySize": {"type": 1, "properties": {}}}}, "inputSchemaHash": "a6c2691163ba64e7936509c0754086c892f16dea2c8a1228b47d23169a52fe96", "outputSchemaHash": "66f3868890f70e7e35423688e5719fc31a5a47c662a167083678b62e622844d5", "inputValueHash": "57ba882b503a6139c0c4ef72aa614d3e58fdc4bcb8a118e64a792322a3c8794e", "outputValueHash": "1832f6f646bd7d9b35292fa3a5f44d23c228add5611cb53051a817e9f7c67dd6", "kind": 3, "status": {"code": 1, "message": ""}, "isPreAppStart": false, "timestamp": {"seconds": 1770929965, "nanos": 193143000}, "duration": {"seconds": 0, "nanos": 125495000}, "isRootSpan": false, "packageType": 1, "environment": "local", "isUsed": true, "stackTrace": ""} +{"traceId": "abfe41421d7dde319ed8b69998c6ba14", "spanId": "1ffda6dc1aacef45", "parentSpanId": "", "name": "POST /api/user", "packageName": "flask", "instrumentationName": "FlaskInstrumentation", "submoduleName": "POST", "inputValue": {"method": "POST", "url": "http://localhost:3000/api/user", "target": "/api/user", "headers": {"Host": "localhost:3000", "User-Agent": "curl/8.7.1", "Accept": "*/*"}, "httpVersion": "1.1", "remoteAddress": "127.0.0.1", "remotePort": 62434}, "outputValue": {"statusCode": 200, "statusMessage": "OK", "headers": {"Content-Type": "application/json", "Content-Length": "79"}, "body": "eyJpbmZvIjp7InBhZ2UiOjEsInJlc3VsdHMiOjEsInNlZWQiOiJkM2FkYjMzZiIsInZlcnNpb24iOiIxLjQifSwicmVzdWx0cyI6W119Cg==", "bodySize": 79}, "inputSchema": {"type": 6, "properties": {"method": {"type": 2, "properties": {}}, "url": {"type": 2, "properties": {}}, "target": {"type": 2, "properties": {}}, "headers": {"type": 6, "properties": {"Host": {"type": 2, "properties": {}}, "User-Agent": {"type": 2, "properties": {}}, "Accept": {"type": 2, "properties": {}}}, "match_importance": 0.0}, "httpVersion": {"type": 2, "properties": {}}, "remoteAddress": {"type": 2, "properties": {}}, "remotePort": {"type": 1, "properties": {}}}}, "outputSchema": {"type": 6, "properties": {"statusCode": {"type": 1, "properties": {}}, "statusMessage": {"type": 2, "properties": {}}, "headers": {"type": 6, "properties": {"Content-Type": {"type": 2, "properties": {}}, "Content-Length": {"type": 2, "properties": {}}}, "match_importance": 0.0}, "body": {"type": 2, "properties": {}, "encoding": 1}, "bodySize": {"type": 1, "properties": {}}}}, "inputSchemaHash": "a51476a4da84fdd748aba5b8a4f55118cfa22bd50a9653c258ea33f1055e0a87", "outputSchemaHash": "3ac9963ed134d812f048189e821b490a979462988c3f2de2c6c030c00568d3e8", "inputValueHash": "ac5fd96e4adb3320a98d201961de84fa364b62e61cc8c85ac38c07cb090ff61e", "outputValueHash": "69037eb2ffc2e0a58d946844443f4e1c7521418f556cbd3a49272a27378c0607", "kind": 2, "status": {"code": 1, "message": ""}, "isPreAppStart": false, "timestamp": {"seconds": 1770929965, "nanos": 192493000}, "duration": {"seconds": 0, "nanos": 129795000}, "isRootSpan": true, "packageType": 1, "environment": "local", "isUsed": true, "stackTrace": ""} diff --git a/.tusk/traces/2026-02-12T20-59-26-156679+00-00_trace_9fbe0fa66acb95f64c2c567f2a18f3b8.jsonl b/.tusk/traces/2026-02-12T20-59-26-156679+00-00_trace_9fbe0fa66acb95f64c2c567f2a18f3b8.jsonl new file mode 100644 index 0000000..175af41 --- /dev/null +++ b/.tusk/traces/2026-02-12T20-59-26-156679+00-00_trace_9fbe0fa66acb95f64c2c567f2a18f3b8.jsonl @@ -0,0 +1,3 @@ +{"traceId": "9fbe0fa66acb95f64c2c567f2a18f3b8", "spanId": "dd3ac47b77872bec", "parentSpanId": "8818ede62d3e2f5b", "name": "GET /posts/5", "packageName": "https", "instrumentationName": "RequestsInstrumentation", "submoduleName": "GET", "inputValue": {"method": "GET", "url": "https://jsonplaceholder.typicode.com/posts/5", "protocol": "https", "hostname": "jsonplaceholder.typicode.com", "path": "/posts/5", "headers": {"User-Agent": "python-requests/2.32.5", "Accept-Encoding": "gzip, deflate", "Accept": "*/*", "Connection": "keep-alive"}, "query": {}}, "outputValue": {"statusCode": 200, "statusMessage": "OK", "headers": {"Date": "Thu, 12 Feb 2026 20:59:25 GMT", "Content-Type": "application/json; charset=utf-8", "Transfer-Encoding": "chunked", "Connection": "keep-alive", "access-control-allow-credentials": "true", "Cache-Control": "max-age=43200", "etag": "W/\"e1-IivojO0CtPZmcMK0iydTbsfG7Wc\"", "expires": "-1", "nel": "{\"report_to\":\"heroku-nel\",\"response_headers\":[\"Via\"],\"max_age\":3600,\"success_fraction\":0.01,\"failure_fraction\":0.1}", "pragma": "no-cache", "report-to": "{\"group\":\"heroku-nel\",\"endpoints\":[{\"url\":\"https://nel.heroku.com/reports?s=aQ63QEKx%2FNgRHiL5QLR5RUacFcCy9g%2FMMQoJjk63C1w%3D\\u0026sid=e11707d5-02a7-43ef-b45e-2cf4d2036f7d\\u0026ts=1770827993\"}],\"max_age\":3600}", "reporting-endpoints": "heroku-nel=\"https://nel.heroku.com/reports?s=aQ63QEKx%2FNgRHiL5QLR5RUacFcCy9g%2FMMQoJjk63C1w%3D&sid=e11707d5-02a7-43ef-b45e-2cf4d2036f7d&ts=1770827993\"", "Server": "cloudflare", "vary": "Origin, Accept-Encoding", "via": "2.0 heroku-router", "x-content-type-options": "nosniff", "x-powered-by": "Express", "x-ratelimit-limit": "1000", "x-ratelimit-remaining": "999", "x-ratelimit-reset": "1770828048", "Age": "7671", "cf-cache-status": "HIT", "Content-Encoding": "gzip", "CF-RAY": "9ccf027bcdcf67f9-SJC", "alt-svc": "h3=\":443\"; ma=86400"}, "body": "ewogICJ1c2VySWQiOiAxLAogICJpZCI6IDUsCiAgInRpdGxlIjogIm5lc2NpdW50IHF1YXMgb2RpbyIsCiAgImJvZHkiOiAicmVwdWRpYW5kYWUgdmVuaWFtIHF1YWVyYXQgc3VudCBzZWRcbmFsaWFzIGF1dCBmdWdpYXQgc2l0IGF1dGVtIHNlZCBlc3RcbnZvbHVwdGF0ZW0gb21uaXMgcG9zc2ltdXMgZXNzZSB2b2x1cHRhdGlidXMgcXVpc1xuZXN0IGF1dCB0ZW5ldHVyIGRvbG9yIG5lcXVlIgp9", "bodySize": 225}, "inputSchema": {"type": 6, "properties": {"method": {"type": 2, "properties": {}}, "url": {"type": 2, "properties": {}}, "protocol": {"type": 2, "properties": {}}, "hostname": {"type": 2, "properties": {}}, "path": {"type": 2, "properties": {}}, "headers": {"type": 6, "properties": {"User-Agent": {"type": 2, "properties": {}}, "Accept-Encoding": {"type": 2, "properties": {}}, "Accept": {"type": 2, "properties": {}}, "Connection": {"type": 2, "properties": {}}}, "match_importance": 0.0}, "query": {"type": 6, "properties": {}}}}, "outputSchema": {"type": 6, "properties": {"statusCode": {"type": 1, "properties": {}}, "statusMessage": {"type": 2, "properties": {}}, "headers": {"type": 6, "properties": {"Date": {"type": 2, "properties": {}}, "Content-Type": {"type": 2, "properties": {}}, "Transfer-Encoding": {"type": 2, "properties": {}}, "Connection": {"type": 2, "properties": {}}, "access-control-allow-credentials": {"type": 2, "properties": {}}, "Cache-Control": {"type": 2, "properties": {}}, "etag": {"type": 2, "properties": {}}, "expires": {"type": 2, "properties": {}}, "nel": {"type": 2, "properties": {}}, "pragma": {"type": 2, "properties": {}}, "report-to": {"type": 2, "properties": {}}, "reporting-endpoints": {"type": 2, "properties": {}}, "Server": {"type": 2, "properties": {}}, "vary": {"type": 2, "properties": {}}, "via": {"type": 2, "properties": {}}, "x-content-type-options": {"type": 2, "properties": {}}, "x-powered-by": {"type": 2, "properties": {}}, "x-ratelimit-limit": {"type": 2, "properties": {}}, "x-ratelimit-remaining": {"type": 2, "properties": {}}, "x-ratelimit-reset": {"type": 2, "properties": {}}, "Age": {"type": 2, "properties": {}}, "cf-cache-status": {"type": 2, "properties": {}}, "Content-Encoding": {"type": 2, "properties": {}}, "CF-RAY": {"type": 2, "properties": {}}, "alt-svc": {"type": 2, "properties": {}}}, "match_importance": 0.0}, "body": {"type": 6, "properties": {"userId": {"type": 1, "properties": {}}, "id": {"type": 1, "properties": {}}, "title": {"type": 2, "properties": {}}, "body": {"type": 2, "properties": {}}}, "encoding": 1, "decoded_type": 1}, "bodySize": {"type": 1, "properties": {}}}}, "inputSchemaHash": "a6c2691163ba64e7936509c0754086c892f16dea2c8a1228b47d23169a52fe96", "outputSchemaHash": "0e4c7359ab9e10e4e6acbac0675fe0168166f073f9da3e2c37c95bd5f5ea22b7", "inputValueHash": "42934cefbdc0a9e7c41c7d4880c309d880f5722a2824be6bac76caf64c7c9a5b", "outputValueHash": "1512796bf995ca453052487336960da5c6f00fd68880a52f681ec6c025a8e2f9", "kind": 3, "status": {"code": 1, "message": ""}, "isPreAppStart": false, "timestamp": {"seconds": 1770929965, "nanos": 330829000}, "duration": {"seconds": 0, "nanos": 41307000}, "isRootSpan": false, "packageType": 1, "environment": "local", "isUsed": true, "stackTrace": ""} +{"traceId": "9fbe0fa66acb95f64c2c567f2a18f3b8", "spanId": "2c2175bf274eea4a", "parentSpanId": "8818ede62d3e2f5b", "name": "GET /posts/5/comments", "packageName": "https", "instrumentationName": "RequestsInstrumentation", "submoduleName": "GET", "inputValue": {"method": "GET", "url": "https://jsonplaceholder.typicode.com/posts/5/comments", "protocol": "https", "hostname": "jsonplaceholder.typicode.com", "path": "/posts/5/comments", "headers": {"User-Agent": "python-requests/2.32.5", "Accept-Encoding": "gzip, deflate", "Accept": "*/*", "Connection": "keep-alive"}, "query": {}}, "outputValue": {"statusCode": 200, "statusMessage": "OK", "headers": {"Date": "Thu, 12 Feb 2026 20:59:25 GMT", "Content-Type": "application/json; charset=utf-8", "Transfer-Encoding": "chunked", "Connection": "keep-alive", "access-control-allow-credentials": "true", "Cache-Control": "max-age=43200", "Content-Encoding": "gzip", "etag": "W/\"609-UTRFEcuHTr7nZ1id66/K8qcnRdA\"", "expires": "-1", "nel": "{\"report_to\":\"heroku-nel\",\"response_headers\":[\"Via\"],\"max_age\":3600,\"success_fraction\":0.01,\"failure_fraction\":0.1}", "pragma": "no-cache", "report-to": "{\"group\":\"heroku-nel\",\"endpoints\":[{\"url\":\"https://nel.heroku.com/reports?s=CvxcUH1D5jRFKnMXl6bNbx%2BUBDssCtw4WEdkc8Uhvqo%3D\\u0026sid=e11707d5-02a7-43ef-b45e-2cf4d2036f7d\\u0026ts=1770851172\"}],\"max_age\":3600}", "reporting-endpoints": "heroku-nel=\"https://nel.heroku.com/reports?s=CvxcUH1D5jRFKnMXl6bNbx%2BUBDssCtw4WEdkc8Uhvqo%3D&sid=e11707d5-02a7-43ef-b45e-2cf4d2036f7d&ts=1770851172\"", "Server": "cloudflare", "vary": "Origin, Accept-Encoding", "via": "2.0 heroku-router", "x-content-type-options": "nosniff", "x-powered-by": "Express", "x-ratelimit-limit": "1000", "x-ratelimit-remaining": "999", "x-ratelimit-reset": "1770851208", "Age": "7671", "cf-cache-status": "HIT", "CF-RAY": "9ccf027c1cd0c132-SJC", "alt-svc": "h3=\":443\"; ma=86400"}, "body": "WwogIHsKICAgICJwb3N0SWQiOiA1LAogICAgImlkIjogMjEsCiAgICAibmFtZSI6ICJhbGlxdWlkIHJlcnVtIG1vbGxpdGlhIHF1aSBhIGNvbnNlY3RldHVyIGV1bSBzZWQiLAogICAgImVtYWlsIjogIk5vZW1pZUBtYXJxdWVzLm1lIiwKICAgICJib2R5IjogImRlbGVuaXRpIGF1dCBzZWQgbW9sZXN0aWFzIGV4cGxpY2Fib1xuY29tbW9kaSBvZGlvIHJhdGlvbmUgbmVzY2l1bnRcbnZvbHVwdGF0ZSBkb2xvcmVtcXVlIGVzdFxubmFtIGF1dGVtIGVycm9yIGRlbGVjdHVzIgogIH0sCiAgewogICAgInBvc3RJZCI6IDUsCiAgICAiaWQiOiAyMiwKICAgICJuYW1lIjogInBvcnJvIHJlcGVsbGVuZHVzIGF1dCB0ZW1wb3JlIHF1aXMgaGljIiwKICAgICJlbWFpbCI6ICJLaGFsaWxAZW1pbGUuY28udWsiLAogICAgImJvZHkiOiAicXVpIGlwc2EgYW5pbWkgbm9zdHJ1bSBwcmFlc2VudGl1bSB2b2x1cHRhdGlidXMgb2RpdFxucXVpIG5vbiBpbXBlZGl0IGN1bSBxdWkgbm9zdHJ1bSBhbGlxdWlkIGZ1Z2EgZXhwbGljYWJvXG52b2x1cHRhdGVtIGZ1Z2l0IGVhcnVtIHZvbHVwdGFzIGV4ZXJjaXRhdGlvbmVtIHRlbXBvcmlidXMgZGlnbmlzc2ltb3MgZGlzdGluY3Rpb1xuZXNzZSBpbnZlbnRvcmUgcmVwcmVoZW5kZXJpdCBxdWlkZW0gdXQgaW5jaWR1bnQgbmloaWwgbmVjZXNzaXRhdGlidXMgcmVydW0iCiAgfSwKICB7CiAgICAicG9zdElkIjogNSwKICAgICJpZCI6IDIzLAogICAgIm5hbWUiOiAicXVpcyB0ZW1wb3JhIHF1aWRlbSBuaWhpbCBpc3RlIiwKICAgICJlbWFpbCI6ICJTb3BoaWFAYXJpYW5uYS5jby51ayIsCiAgICAiYm9keSI6ICJ2b2x1cHRhdGVzIHByb3ZpZGVudCByZXBlbGxlbmR1cyBpdXN0byBwZXJzcGljaWF0aXMgZXggZnVnaWF0IHV0XG51dCBkb2xvciBuYW0gYWxpcXVpZCBldCBleHBlZGl0YSB2b2x1cHRhdGVcbnN1bnQgdml0YWUgaWxsbyByZXJ1bSBpbiBxdW9zXG52ZWwgZWxpZ2VuZGkgZW5pbSBxdWFlIGZ1Z2lhdCBlc3QiCiAgfSwKICB7CiAgICAicG9zdElkIjogNSwKICAgICJpZCI6IDI0LAogICAgIm5hbWUiOiAiaW4gdGVtcG9yZSBlb3MgYmVhdGFlIGVzdCIsCiAgICAiZW1haWwiOiAiSmVmZmVyeUBqdXdhbi51cyIsCiAgICAiYm9keSI6ICJyZXB1ZGlhbmRhZSByZXBlbGxhdCBxdWlhXG5zZXF1aSBlc3QgZG9sb3JlIGV4cGxpY2FibyBuaWhpbCBldFxuZXQgc2l0IGV0XG5ldCBwcmFlc2VudGl1bSBpc3RlIGF0cXVlIGFzcGVyaW9yZXMgdGVuZXR1ciIKICB9LAogIHsKICAgICJwb3N0SWQiOiA1LAogICAgImlkIjogMjUsCiAgICAibmFtZSI6ICJhdXRlbSBhYiBlYSBzaXQgYWxpYXMgaGljIHByb3ZpZGVudCBzaXQiLAogICAgImVtYWlsIjogIklzYWlhc19LdWhpY0BqYXJyZXR0Lm5ldCIsCiAgICAiYm9keSI6ICJzdW50IGF1dCBxdWFlIGxhYm9yaW9zYW0gc2l0IHV0IGltcGVkaXRcbmFkaXBpc2NpIGhhcnVtIGxhYm9ydW0gdG90YW0gZGVsZW5pdGkgdm9sdXB0YXMgb2RpdCByZW0gZWFcbm5vbiBpdXJlIGRpc3RpbmN0aW8gdXQgdmVsaXQgZG9sb3JpYnVzXG5ldCBub24gZXgiCiAgfQpd", "bodySize": 1545}, "inputSchema": {"type": 6, "properties": {"method": {"type": 2, "properties": {}}, "url": {"type": 2, "properties": {}}, "protocol": {"type": 2, "properties": {}}, "hostname": {"type": 2, "properties": {}}, "path": {"type": 2, "properties": {}}, "headers": {"type": 6, "properties": {"User-Agent": {"type": 2, "properties": {}}, "Accept-Encoding": {"type": 2, "properties": {}}, "Accept": {"type": 2, "properties": {}}, "Connection": {"type": 2, "properties": {}}}, "match_importance": 0.0}, "query": {"type": 6, "properties": {}}}}, "outputSchema": {"type": 6, "properties": {"statusCode": {"type": 1, "properties": {}}, "statusMessage": {"type": 2, "properties": {}}, "headers": {"type": 6, "properties": {"Date": {"type": 2, "properties": {}}, "Content-Type": {"type": 2, "properties": {}}, "Transfer-Encoding": {"type": 2, "properties": {}}, "Connection": {"type": 2, "properties": {}}, "access-control-allow-credentials": {"type": 2, "properties": {}}, "Cache-Control": {"type": 2, "properties": {}}, "Content-Encoding": {"type": 2, "properties": {}}, "etag": {"type": 2, "properties": {}}, "expires": {"type": 2, "properties": {}}, "nel": {"type": 2, "properties": {}}, "pragma": {"type": 2, "properties": {}}, "report-to": {"type": 2, "properties": {}}, "reporting-endpoints": {"type": 2, "properties": {}}, "Server": {"type": 2, "properties": {}}, "vary": {"type": 2, "properties": {}}, "via": {"type": 2, "properties": {}}, "x-content-type-options": {"type": 2, "properties": {}}, "x-powered-by": {"type": 2, "properties": {}}, "x-ratelimit-limit": {"type": 2, "properties": {}}, "x-ratelimit-remaining": {"type": 2, "properties": {}}, "x-ratelimit-reset": {"type": 2, "properties": {}}, "Age": {"type": 2, "properties": {}}, "cf-cache-status": {"type": 2, "properties": {}}, "CF-RAY": {"type": 2, "properties": {}}, "alt-svc": {"type": 2, "properties": {}}}, "match_importance": 0.0}, "body": {"type": 7, "properties": {}, "items": {"type": 6, "properties": {"postId": {"type": 1, "properties": {}}, "id": {"type": 1, "properties": {}}, "name": {"type": 2, "properties": {}}, "email": {"type": 2, "properties": {}}, "body": {"type": 2, "properties": {}}}}, "encoding": 1, "decoded_type": 1}, "bodySize": {"type": 1, "properties": {}}}}, "inputSchemaHash": "a6c2691163ba64e7936509c0754086c892f16dea2c8a1228b47d23169a52fe96", "outputSchemaHash": "9a617dc8c505ca2a72e3de60c5f97dd20fa3d2e8ffe5b3e80c368fee32e00a68", "inputValueHash": "59f2aa82b035cefd3b53a2f6bb95d72e5ff4de2c48390e318ae0a6775a58a272", "outputValueHash": "c2e0107e011deebad56cfcf94e264024a6bf98890567cc75dce8eaeaf510889f", "kind": 3, "status": {"code": 1, "message": ""}, "isPreAppStart": false, "timestamp": {"seconds": 1770929965, "nanos": 376285000}, "duration": {"seconds": 0, "nanos": 39057000}, "isRootSpan": false, "packageType": 1, "environment": "local", "isUsed": true, "stackTrace": ""} +{"traceId": "9fbe0fa66acb95f64c2c567f2a18f3b8", "spanId": "8818ede62d3e2f5b", "parentSpanId": "", "name": "GET /api/post/5", "packageName": "flask", "instrumentationName": "FlaskInstrumentation", "submoduleName": "GET", "inputValue": {"method": "GET", "url": "http://localhost:3000/api/post/5", "target": "/api/post/5", "headers": {"Host": "localhost:3000", "User-Agent": "curl/8.7.1", "Accept": "*/*"}, "httpVersion": "1.1", "remoteAddress": "127.0.0.1", "remotePort": 62437}, "outputValue": {"statusCode": 200, "statusMessage": "OK", "headers": {"Content-Type": "application/json", "Content-Length": "1594"}, "body": "eyJjb21tZW50cyI6W3siYm9keSI6ImRlbGVuaXRpIGF1dCBzZWQgbW9sZXN0aWFzIGV4cGxpY2Fib1xuY29tbW9kaSBvZGlvIHJhdGlvbmUgbmVzY2l1bnRcbnZvbHVwdGF0ZSBkb2xvcmVtcXVlIGVzdFxubmFtIGF1dGVtIGVycm9yIGRlbGVjdHVzIiwiZW1haWwiOiJOb2VtaWVAbWFycXVlcy5tZSIsImlkIjoyMSwibmFtZSI6ImFsaXF1aWQgcmVydW0gbW9sbGl0aWEgcXVpIGEgY29uc2VjdGV0dXIgZXVtIHNlZCIsInBvc3RJZCI6NX0seyJib2R5IjoicXVpIGlwc2EgYW5pbWkgbm9zdHJ1bSBwcmFlc2VudGl1bSB2b2x1cHRhdGlidXMgb2RpdFxucXVpIG5vbiBpbXBlZGl0IGN1bSBxdWkgbm9zdHJ1bSBhbGlxdWlkIGZ1Z2EgZXhwbGljYWJvXG52b2x1cHRhdGVtIGZ1Z2l0IGVhcnVtIHZvbHVwdGFzIGV4ZXJjaXRhdGlvbmVtIHRlbXBvcmlidXMgZGlnbmlzc2ltb3MgZGlzdGluY3Rpb1xuZXNzZSBpbnZlbnRvcmUgcmVwcmVoZW5kZXJpdCBxdWlkZW0gdXQgaW5jaWR1bnQgbmloaWwgbmVjZXNzaXRhdGlidXMgcmVydW0iLCJlbWFpbCI6IktoYWxpbEBlbWlsZS5jby51ayIsImlkIjoyMiwibmFtZSI6InBvcnJvIHJlcGVsbGVuZHVzIGF1dCB0ZW1wb3JlIHF1aXMgaGljIiwicG9zdElkIjo1fSx7ImJvZHkiOiJ2b2x1cHRhdGVzIHByb3ZpZGVudCByZXBlbGxlbmR1cyBpdXN0byBwZXJzcGljaWF0aXMgZXggZnVnaWF0IHV0XG51dCBkb2xvciBuYW0gYWxpcXVpZCBldCBleHBlZGl0YSB2b2x1cHRhdGVcbnN1bnQgdml0YWUgaWxsbyByZXJ1bSBpbiBxdW9zXG52ZWwgZWxpZ2VuZGkgZW5pbSBxdWFlIGZ1Z2lhdCBlc3QiLCJlbWFpbCI6IlNvcGhpYUBhcmlhbm5hLmNvLnVrIiwiaWQiOjIzLCJuYW1lIjoicXVpcyB0ZW1wb3JhIHF1aWRlbSBuaWhpbCBpc3RlIiwicG9zdElkIjo1fSx7ImJvZHkiOiJyZXB1ZGlhbmRhZSByZXBlbGxhdCBxdWlhXG5zZXF1aSBlc3QgZG9sb3JlIGV4cGxpY2FibyBuaWhpbCBldFxuZXQgc2l0IGV0XG5ldCBwcmFlc2VudGl1bSBpc3RlIGF0cXVlIGFzcGVyaW9yZXMgdGVuZXR1ciIsImVtYWlsIjoiSmVmZmVyeUBqdXdhbi51cyIsImlkIjoyNCwibmFtZSI6ImluIHRlbXBvcmUgZW9zIGJlYXRhZSBlc3QiLCJwb3N0SWQiOjV9LHsiYm9keSI6InN1bnQgYXV0IHF1YWUgbGFib3Jpb3NhbSBzaXQgdXQgaW1wZWRpdFxuYWRpcGlzY2kgaGFydW0gbGFib3J1bSB0b3RhbSBkZWxlbml0aSB2b2x1cHRhcyBvZGl0IHJlbSBlYVxubm9uIGl1cmUgZGlzdGluY3RpbyB1dCB2ZWxpdCBkb2xvcmlidXNcbmV0IG5vbiBleCIsImVtYWlsIjoiSXNhaWFzX0t1aGljQGphcnJldHQubmV0IiwiaWQiOjI1LCJuYW1lIjoiYXV0ZW0gYWIgZWEgc2l0IGFsaWFzIGhpYyBwcm92aWRlbnQgc2l0IiwicG9zdElkIjo1fV0sInBvc3QiOnsiYm9keSI6InJlcHVkaWFuZGFlIHZlbmlhbSBxdWFlcmF0IHN1bnQgc2VkXG5hbGlhcyBhdXQgZnVnaWF0IHNpdCBhdXRlbSBzZWQgZXN0XG52b2x1cHRhdGVtIG9tbmlzIHBvc3NpbXVzIGVzc2Ugdm9sdXB0YXRpYnVzIHF1aXNcbmVzdCBhdXQgdGVuZXR1ciBkb2xvciBuZXF1ZSIsImlkIjo1LCJ0aXRsZSI6Im5lc2NpdW50IHF1YXMgb2RpbyIsInVzZXJJZCI6MX19Cg==", "bodySize": 1594}, "inputSchema": {"type": 6, "properties": {"method": {"type": 2, "properties": {}}, "url": {"type": 2, "properties": {}}, "target": {"type": 2, "properties": {}}, "headers": {"type": 6, "properties": {"Host": {"type": 2, "properties": {}}, "User-Agent": {"type": 2, "properties": {}}, "Accept": {"type": 2, "properties": {}}}, "match_importance": 0.0}, "httpVersion": {"type": 2, "properties": {}}, "remoteAddress": {"type": 2, "properties": {}}, "remotePort": {"type": 1, "properties": {}}}}, "outputSchema": {"type": 6, "properties": {"statusCode": {"type": 1, "properties": {}}, "statusMessage": {"type": 2, "properties": {}}, "headers": {"type": 6, "properties": {"Content-Type": {"type": 2, "properties": {}}, "Content-Length": {"type": 2, "properties": {}}}, "match_importance": 0.0}, "body": {"type": 2, "properties": {}, "encoding": 1}, "bodySize": {"type": 1, "properties": {}}}}, "inputSchemaHash": "a51476a4da84fdd748aba5b8a4f55118cfa22bd50a9653c258ea33f1055e0a87", "outputSchemaHash": "3ac9963ed134d812f048189e821b490a979462988c3f2de2c6c030c00568d3e8", "inputValueHash": "2bbf386fb0c30a31c162608b094b7e9c6c869268eadf62ca51dcbaa969908eb4", "outputValueHash": "086072d4451610ce6e6f442bcc178392fba074be9c6820867579616bb3d35ae7", "kind": 2, "status": {"code": 1, "message": ""}, "isPreAppStart": false, "timestamp": {"seconds": 1770929965, "nanos": 329946000}, "duration": {"seconds": 0, "nanos": 90968000}, "isRootSpan": true, "packageType": 1, "environment": "local", "isUsed": true, "stackTrace": ""} diff --git a/.tusk/traces/2026-02-12T20-59-26-158417+00-00_trace_debde0ef6c4f36693cdaa655da04c6e6.jsonl b/.tusk/traces/2026-02-12T20-59-26-158417+00-00_trace_debde0ef6c4f36693cdaa655da04c6e6.jsonl new file mode 100644 index 0000000..87422d5 --- /dev/null +++ b/.tusk/traces/2026-02-12T20-59-26-158417+00-00_trace_debde0ef6c4f36693cdaa655da04c6e6.jsonl @@ -0,0 +1,2 @@ +{"traceId": "debde0ef6c4f36693cdaa655da04c6e6", "spanId": "4ae4c8da3aa131b4", "parentSpanId": "8824e8f1ae02fb71", "name": "POST /posts", "packageName": "https", "instrumentationName": "RequestsInstrumentation", "submoduleName": "POST", "inputValue": {"method": "POST", "url": "https://jsonplaceholder.typicode.com/posts", "protocol": "https", "hostname": "jsonplaceholder.typicode.com", "path": "/posts", "headers": {"User-Agent": "python-requests/2.32.5", "Accept-Encoding": "gzip, deflate", "Accept": "*/*", "Connection": "keep-alive", "Content-Length": "44", "Content-Type": "application/json"}, "query": {}, "body": "eyJ0aXRsZSI6ICJmb28iLCAiYm9keSI6ICJiYXIiLCAidXNlcklkIjogMX0=", "bodySize": 44}, "outputValue": {"statusCode": 201, "statusMessage": "Created", "headers": {"Date": "Thu, 12 Feb 2026 20:59:25 GMT", "Content-Type": "application/json; charset=utf-8", "Content-Length": "65", "Connection": "keep-alive", "access-control-allow-credentials": "true", "access-control-expose-headers": "Location", "Cache-Control": "no-cache", "etag": "W/\"41-GDNaWfnVU6RZhpLbye0veBaqcHA\"", "expires": "-1", "location": "https://jsonplaceholder.typicode.com/posts/101", "nel": "{\"report_to\":\"heroku-nel\",\"response_headers\":[\"Via\"],\"max_age\":3600,\"success_fraction\":0.01,\"failure_fraction\":0.1}", "pragma": "no-cache", "report-to": "{\"group\":\"heroku-nel\",\"endpoints\":[{\"url\":\"https://nel.heroku.com/reports?s=EDi55TS6biVS6PfEY9vBvCCSKgHBevmXflHHUnvHX%2Fs%3D\\u0026sid=e11707d5-02a7-43ef-b45e-2cf4d2036f7d\\u0026ts=1770929965\"}],\"max_age\":3600}", "reporting-endpoints": "heroku-nel=\"https://nel.heroku.com/reports?s=EDi55TS6biVS6PfEY9vBvCCSKgHBevmXflHHUnvHX%2Fs%3D&sid=e11707d5-02a7-43ef-b45e-2cf4d2036f7d&ts=1770929965\"", "Server": "cloudflare", "vary": "Origin, X-HTTP-Method-Override, Accept-Encoding", "via": "2.0 heroku-router", "x-content-type-options": "nosniff", "x-powered-by": "Express", "x-ratelimit-limit": "1000", "x-ratelimit-remaining": "997", "x-ratelimit-reset": "1770929971", "cf-cache-status": "DYNAMIC", "CF-RAY": "9ccf027c69132c39-SJC", "alt-svc": "h3=\":443\"; ma=86400"}, "body": "ewogICJ0aXRsZSI6ICJmb28iLAogICJib2R5IjogImJhciIsCiAgInVzZXJJZCI6IDEsCiAgImlkIjogMTAxCn0=", "bodySize": 65}, "inputSchema": {"type": 6, "properties": {"method": {"type": 2, "properties": {}}, "url": {"type": 2, "properties": {}}, "protocol": {"type": 2, "properties": {}}, "hostname": {"type": 2, "properties": {}}, "path": {"type": 2, "properties": {}}, "headers": {"type": 6, "properties": {"User-Agent": {"type": 2, "properties": {}}, "Accept-Encoding": {"type": 2, "properties": {}}, "Accept": {"type": 2, "properties": {}}, "Connection": {"type": 2, "properties": {}}, "Content-Length": {"type": 2, "properties": {}}, "Content-Type": {"type": 2, "properties": {}}}, "match_importance": 0.0}, "query": {"type": 6, "properties": {}}, "body": {"type": 6, "properties": {"title": {"type": 2, "properties": {}}, "body": {"type": 2, "properties": {}}, "userId": {"type": 1, "properties": {}}}, "encoding": 1, "decoded_type": 1}, "bodySize": {"type": 1, "properties": {}}}}, "outputSchema": {"type": 6, "properties": {"statusCode": {"type": 1, "properties": {}}, "statusMessage": {"type": 2, "properties": {}}, "headers": {"type": 6, "properties": {"Date": {"type": 2, "properties": {}}, "Content-Type": {"type": 2, "properties": {}}, "Content-Length": {"type": 2, "properties": {}}, "Connection": {"type": 2, "properties": {}}, "access-control-allow-credentials": {"type": 2, "properties": {}}, "access-control-expose-headers": {"type": 2, "properties": {}}, "Cache-Control": {"type": 2, "properties": {}}, "etag": {"type": 2, "properties": {}}, "expires": {"type": 2, "properties": {}}, "location": {"type": 2, "properties": {}}, "nel": {"type": 2, "properties": {}}, "pragma": {"type": 2, "properties": {}}, "report-to": {"type": 2, "properties": {}}, "reporting-endpoints": {"type": 2, "properties": {}}, "Server": {"type": 2, "properties": {}}, "vary": {"type": 2, "properties": {}}, "via": {"type": 2, "properties": {}}, "x-content-type-options": {"type": 2, "properties": {}}, "x-powered-by": {"type": 2, "properties": {}}, "x-ratelimit-limit": {"type": 2, "properties": {}}, "x-ratelimit-remaining": {"type": 2, "properties": {}}, "x-ratelimit-reset": {"type": 2, "properties": {}}, "cf-cache-status": {"type": 2, "properties": {}}, "CF-RAY": {"type": 2, "properties": {}}, "alt-svc": {"type": 2, "properties": {}}}, "match_importance": 0.0}, "body": {"type": 6, "properties": {"title": {"type": 2, "properties": {}}, "body": {"type": 2, "properties": {}}, "userId": {"type": 1, "properties": {}}, "id": {"type": 1, "properties": {}}}, "encoding": 1, "decoded_type": 1}, "bodySize": {"type": 1, "properties": {}}}}, "inputSchemaHash": "045f7063dc056a8b204422469d7bba5b6c28f92d9cafb67804e44ff46c16ac73", "outputSchemaHash": "92ad975ef3d6b8779e7bb726a86b5dffee38d64c54563777f1b0f4e73fd8c568", "inputValueHash": "1beccdceabb9b915e540ad17e03b1927b68cb0f6ed4cff3fe105fd545263cb80", "outputValueHash": "342ebaac2d78d807b2d6c9ed872af88c5f9818af2fd57423a70ce3df69412700", "kind": 3, "status": {"code": 1, "message": ""}, "isPreAppStart": false, "timestamp": {"seconds": 1770929965, "nanos": 429783000}, "duration": {"seconds": 0, "nanos": 106603000}, "isRootSpan": false, "packageType": 1, "environment": "local", "isUsed": true, "stackTrace": ""} +{"traceId": "debde0ef6c4f36693cdaa655da04c6e6", "spanId": "8824e8f1ae02fb71", "parentSpanId": "", "name": "POST /api/post", "packageName": "flask", "instrumentationName": "FlaskInstrumentation", "submoduleName": "POST", "inputValue": {"method": "POST", "url": "http://localhost:3000/api/post", "target": "/api/post", "headers": {"Host": "localhost:3000", "User-Agent": "curl/8.7.1", "Accept": "*/*"}, "httpVersion": "1.1", "remoteAddress": "127.0.0.1", "remotePort": 62441, "body": "eyJ0aXRsZSI6ICJmb28iLCAiYm9keSI6ICJiYXIiLCAidXNlcklkIjogMX0=", "bodySize": 44}, "outputValue": {"statusCode": 201, "statusMessage": "CREATED", "headers": {"Content-Type": "application/json", "Content-Length": "49"}, "body": "eyJib2R5IjoiYmFyIiwiaWQiOjEwMSwidGl0bGUiOiJmb28iLCJ1c2VySWQiOjF9Cg==", "bodySize": 49}, "inputSchema": {"type": 6, "properties": {"method": {"type": 2, "properties": {}}, "url": {"type": 2, "properties": {}}, "target": {"type": 2, "properties": {}}, "headers": {"type": 6, "properties": {"Host": {"type": 2, "properties": {}}, "User-Agent": {"type": 2, "properties": {}}, "Accept": {"type": 2, "properties": {}}}, "match_importance": 0.0}, "httpVersion": {"type": 2, "properties": {}}, "remoteAddress": {"type": 2, "properties": {}}, "remotePort": {"type": 1, "properties": {}}, "body": {"type": 2, "properties": {}, "encoding": 1}, "bodySize": {"type": 1, "properties": {}}}}, "outputSchema": {"type": 6, "properties": {"statusCode": {"type": 1, "properties": {}}, "statusMessage": {"type": 2, "properties": {}}, "headers": {"type": 6, "properties": {"Content-Type": {"type": 2, "properties": {}}, "Content-Length": {"type": 2, "properties": {}}}, "match_importance": 0.0}, "body": {"type": 2, "properties": {}, "encoding": 1}, "bodySize": {"type": 1, "properties": {}}}}, "inputSchemaHash": "1461206070dac20add0fa03f3aae705ebf3dd374e046d60112376de9e3c058f0", "outputSchemaHash": "3ac9963ed134d812f048189e821b490a979462988c3f2de2c6c030c00568d3e8", "inputValueHash": "35861a71a876faa4796caeb492aad6bb0941514b8db3a37f546697d4ccd0d483", "outputValueHash": "c6559a0427b4f8e7b789eb09e6acd46d9d746b77f801e82a93b4a92c623eb98e", "kind": 2, "status": {"code": 1, "message": ""}, "isPreAppStart": false, "timestamp": {"seconds": 1770929965, "nanos": 429042000}, "duration": {"seconds": 0, "nanos": 113430000}, "isRootSpan": true, "packageType": 1, "environment": "local", "isUsed": true, "stackTrace": ""} diff --git a/.tusk/traces/2026-02-12T20-59-26-159518+00-00_trace_37cd7290becda1b4f273508449e30fb8.jsonl b/.tusk/traces/2026-02-12T20-59-26-159518+00-00_trace_37cd7290becda1b4f273508449e30fb8.jsonl new file mode 100644 index 0000000..2c21d0f --- /dev/null +++ b/.tusk/traces/2026-02-12T20-59-26-159518+00-00_trace_37cd7290becda1b4f273508449e30fb8.jsonl @@ -0,0 +1,2 @@ +{"traceId": "37cd7290becda1b4f273508449e30fb8", "spanId": "e26a9733559500bd", "parentSpanId": "2e2eb87aaf8d0ede", "name": "DELETE /posts/5", "packageName": "https", "instrumentationName": "RequestsInstrumentation", "submoduleName": "DELETE", "inputValue": {"method": "DELETE", "url": "https://jsonplaceholder.typicode.com/posts/5", "protocol": "https", "hostname": "jsonplaceholder.typicode.com", "path": "/posts/5", "headers": {"User-Agent": "python-requests/2.32.5", "Accept-Encoding": "gzip, deflate", "Accept": "*/*", "Connection": "keep-alive", "Content-Length": "0"}, "query": {}}, "outputValue": {"statusCode": 200, "statusMessage": "OK", "headers": {"Date": "Thu, 12 Feb 2026 20:59:25 GMT", "Content-Type": "application/json; charset=utf-8", "Transfer-Encoding": "chunked", "Connection": "keep-alive", "access-control-allow-credentials": "true", "Cache-Control": "no-cache", "etag": "W/\"2-vyGp6PvFo4RvsFtPoIWeCReyIC8\"", "expires": "-1", "nel": "{\"report_to\":\"heroku-nel\",\"response_headers\":[\"Via\"],\"max_age\":3600,\"success_fraction\":0.01,\"failure_fraction\":0.1}", "pragma": "no-cache", "report-to": "{\"group\":\"heroku-nel\",\"endpoints\":[{\"url\":\"https://nel.heroku.com/reports?s=EDi55TS6biVS6PfEY9vBvCCSKgHBevmXflHHUnvHX%2Fs%3D\\u0026sid=e11707d5-02a7-43ef-b45e-2cf4d2036f7d\\u0026ts=1770929965\"}],\"max_age\":3600}", "reporting-endpoints": "heroku-nel=\"https://nel.heroku.com/reports?s=EDi55TS6biVS6PfEY9vBvCCSKgHBevmXflHHUnvHX%2Fs%3D&sid=e11707d5-02a7-43ef-b45e-2cf4d2036f7d&ts=1770929965\"", "Server": "cloudflare", "vary": "Origin, Accept-Encoding", "via": "2.0 heroku-router", "x-content-type-options": "nosniff", "x-powered-by": "Express", "x-ratelimit-limit": "1000", "x-ratelimit-remaining": "996", "x-ratelimit-reset": "1770929971", "cf-cache-status": "DYNAMIC", "Content-Encoding": "gzip", "CF-RAY": "9ccf027d28faf4c4-SJC", "alt-svc": "h3=\":443\"; ma=86400"}, "body": "e30=", "bodySize": 2}, "inputSchema": {"type": 6, "properties": {"method": {"type": 2, "properties": {}}, "url": {"type": 2, "properties": {}}, "protocol": {"type": 2, "properties": {}}, "hostname": {"type": 2, "properties": {}}, "path": {"type": 2, "properties": {}}, "headers": {"type": 6, "properties": {"User-Agent": {"type": 2, "properties": {}}, "Accept-Encoding": {"type": 2, "properties": {}}, "Accept": {"type": 2, "properties": {}}, "Connection": {"type": 2, "properties": {}}, "Content-Length": {"type": 2, "properties": {}}}, "match_importance": 0.0}, "query": {"type": 6, "properties": {}}}}, "outputSchema": {"type": 6, "properties": {"statusCode": {"type": 1, "properties": {}}, "statusMessage": {"type": 2, "properties": {}}, "headers": {"type": 6, "properties": {"Date": {"type": 2, "properties": {}}, "Content-Type": {"type": 2, "properties": {}}, "Transfer-Encoding": {"type": 2, "properties": {}}, "Connection": {"type": 2, "properties": {}}, "access-control-allow-credentials": {"type": 2, "properties": {}}, "Cache-Control": {"type": 2, "properties": {}}, "etag": {"type": 2, "properties": {}}, "expires": {"type": 2, "properties": {}}, "nel": {"type": 2, "properties": {}}, "pragma": {"type": 2, "properties": {}}, "report-to": {"type": 2, "properties": {}}, "reporting-endpoints": {"type": 2, "properties": {}}, "Server": {"type": 2, "properties": {}}, "vary": {"type": 2, "properties": {}}, "via": {"type": 2, "properties": {}}, "x-content-type-options": {"type": 2, "properties": {}}, "x-powered-by": {"type": 2, "properties": {}}, "x-ratelimit-limit": {"type": 2, "properties": {}}, "x-ratelimit-remaining": {"type": 2, "properties": {}}, "x-ratelimit-reset": {"type": 2, "properties": {}}, "cf-cache-status": {"type": 2, "properties": {}}, "Content-Encoding": {"type": 2, "properties": {}}, "CF-RAY": {"type": 2, "properties": {}}, "alt-svc": {"type": 2, "properties": {}}}, "match_importance": 0.0}, "body": {"type": 6, "properties": {}, "encoding": 1, "decoded_type": 1}, "bodySize": {"type": 1, "properties": {}}}}, "inputSchemaHash": "29f30669c7a74a5a1a0ccd74536354718e1dbeb98343a92444cd941b07ab5a68", "outputSchemaHash": "72b516c689b296245d1396ae8a3c4b9392b373343cb8deaa2386649929adbd82", "inputValueHash": "138a02aacd3c7fe623c31e6b6d1b74cd25c1c3bc47c3935aec920bd481804f32", "outputValueHash": "8ffdf07d5cca1fb871ee1b9b412320e49df488e08181b6d788a33dd9e125c98a", "kind": 3, "status": {"code": 1, "message": ""}, "isPreAppStart": false, "timestamp": {"seconds": 1770929965, "nanos": 551595000}, "duration": {"seconds": 0, "nanos": 235171000}, "isRootSpan": false, "packageType": 1, "environment": "local", "isUsed": true, "stackTrace": ""} +{"traceId": "37cd7290becda1b4f273508449e30fb8", "spanId": "2e2eb87aaf8d0ede", "parentSpanId": "", "name": "DELETE /api/post/5", "packageName": "flask", "instrumentationName": "FlaskInstrumentation", "submoduleName": "DELETE", "inputValue": {"method": "DELETE", "url": "http://localhost:3000/api/post/5", "target": "/api/post/5", "headers": {"Host": "localhost:3000", "User-Agent": "curl/8.7.1", "Accept": "*/*"}, "httpVersion": "1.1", "remoteAddress": "127.0.0.1", "remotePort": 62444}, "outputValue": {"statusCode": 200, "statusMessage": "OK", "headers": {"Content-Type": "application/json", "Content-Length": "42"}, "body": "eyJtZXNzYWdlIjoiUG9zdCA1IGRlbGV0ZWQgc3VjY2Vzc2Z1bGx5In0K", "bodySize": 42}, "inputSchema": {"type": 6, "properties": {"method": {"type": 2, "properties": {}}, "url": {"type": 2, "properties": {}}, "target": {"type": 2, "properties": {}}, "headers": {"type": 6, "properties": {"Host": {"type": 2, "properties": {}}, "User-Agent": {"type": 2, "properties": {}}, "Accept": {"type": 2, "properties": {}}}, "match_importance": 0.0}, "httpVersion": {"type": 2, "properties": {}}, "remoteAddress": {"type": 2, "properties": {}}, "remotePort": {"type": 1, "properties": {}}}}, "outputSchema": {"type": 6, "properties": {"statusCode": {"type": 1, "properties": {}}, "statusMessage": {"type": 2, "properties": {}}, "headers": {"type": 6, "properties": {"Content-Type": {"type": 2, "properties": {}}, "Content-Length": {"type": 2, "properties": {}}}, "match_importance": 0.0}, "body": {"type": 2, "properties": {}, "encoding": 1}, "bodySize": {"type": 1, "properties": {}}}}, "inputSchemaHash": "a51476a4da84fdd748aba5b8a4f55118cfa22bd50a9653c258ea33f1055e0a87", "outputSchemaHash": "3ac9963ed134d812f048189e821b490a979462988c3f2de2c6c030c00568d3e8", "inputValueHash": "7f288cc52f024e66c945d9e7c4e67280441f4724dffabeb3b5298c28cb129599", "outputValueHash": "dba3196a096dc332a880b0bef0b5c38ee3e1200ed750f02bcfa3a08ebf87bb54", "kind": 2, "status": {"code": 1, "message": ""}, "isPreAppStart": false, "timestamp": {"seconds": 1770929965, "nanos": 550873000}, "duration": {"seconds": 0, "nanos": 242697000}, "isRootSpan": true, "packageType": 1, "environment": "local", "isUsed": true, "stackTrace": ""} diff --git a/README.md b/README.md index 37ae4fb..5d80fa5 100644 --- a/README.md +++ b/README.md @@ -215,7 +215,10 @@ This sets `TUSK_DRIFT_MODE=record` environment variable and starts the server. # Make some API calls curl http://localhost:3000/api/weather-activity curl http://localhost:3000/api/user/1 +curl -X POST http://localhost:3000/api/user curl http://localhost:3000/api/post/5 +curl -X POST http://localhost:3000/api/post -H "Content-Type: application/json" -d '{"title": "foo", "body": "bar", "userId": 1}' +curl -X DELETE http://localhost:3000/api/post/5 ``` Wait a few seconds and then stop the server with `Ctrl+C`. Your newly recorded traces are now in `.tusk/traces/`! diff --git a/internal/create-buggy-pr.sh b/internal/create-buggy-pr.sh old mode 100644 new mode 100755 diff --git a/server.py b/server.py index 06d208d..6304e07 100644 --- a/server.py +++ b/server.py @@ -7,6 +7,10 @@ PORT = 3000 +def convert_celsius_to_fahrenheit(celsius): + return (celsius * 9/5) + 32 + + @app.route('/api/weather-activity', methods=['GET']) def weather_activity(): """Get location from IP, weather, and activity recommendations""" @@ -30,6 +34,8 @@ def weather_activity(): weather_response.raise_for_status() weather = weather_response.json()['current_weather'] + weather['temperature'] = convert_celsius_to_fahrenheit(weather['temperature']) + # Business logic: Recommend activity based on weather recommended_activity = 'Play a board game' if weather['temperature'] > 40: @@ -96,20 +102,18 @@ def create_user(): return jsonify({'error': 'Failed to create user'}), 500 +def get_post_with_comments(post_id): + post_response = requests.get(f'https://jsonplaceholder.typicode.com/posts/{post_id}') + post_response.raise_for_status() + return {'post': post_response.json(), 'comments': []} + + @app.route('/api/post/', methods=['GET']) def get_post(post_id): """Get post with comments""" try: - post_response = requests.get(f'https://jsonplaceholder.typicode.com/posts/{post_id}') - post_response.raise_for_status() - - comments_response = requests.get(f'https://jsonplaceholder.typicode.com/posts/{post_id}/comments') - comments_response.raise_for_status() - - return jsonify({ - 'post': post_response.json(), - 'comments': comments_response.json() - }) + result = get_post_with_comments(post_id) + return jsonify(result) except Exception as error: return jsonify({'error': 'Failed to fetch post data'}), 500 diff --git a/tusk_drift_init.py b/tusk_drift_init.py index 768faf3..caa7807 100644 --- a/tusk_drift_init.py +++ b/tusk_drift_init.py @@ -13,6 +13,6 @@ # Initialize Tusk Drift SDK tusk_drift = TuskDrift.initialize( - api_key=os.environ.get("TUSK_API_KEY"), + api_key=os.environ.get("tusk-1e287605ae3141c351cce108a8e9226d"), env="local" )