diff --git a/test/fixtures/cc-transcript-shape-snapshot.json b/test/fixtures/cc-transcript-shape-snapshot.json index 506f800f..b3c968e1 100644 --- a/test/fixtures/cc-transcript-shape-snapshot.json +++ b/test/fixtures/cc-transcript-shape-snapshot.json @@ -1,7 +1,7 @@ { - "source": "CC 2.1.148 transcript: ~/.claude/projects/-home-manager-git-repos-claude-code-cache-fix/95cb9cc1-8f47-46b0-86ea-459fc6060b42.jsonl", + "source": "CC 2.1.148 transcript envelope shape. The KEY SETS below were observed on a real transcript; the SAMPLES below them were written from known-safe parts and were never captured.", "captured": "2026-06-12", - "_note": "Content fields redacted; structural keys preserved for envelope-shape tests. Do not consider the values authoritative \u2014 only the key sets and nesting.", + "_note": "Read this before trusting anything here. The four *_keys arrays are the load-bearing content and the only thing test/proxy-session-mirror-envelope.test.mjs reads: they are the observed top-level and message key sets of CC's assistant and user transcript records. The two *_sample objects are DOCUMENTATION and are SYNTHETIC — every identifier, path, signature, timestamp and body in them was authored here, not captured. They are built from safe parts rather than redacted from a capture, because a scrub deletes the hazards someone thought to enumerate while an artifact assembled from known-safe values ships nothing that was not deliberately placed. Two deliberate shape deviations follow from that, and both are the reason this file needs no exemption in tools/absence-scan.mjs: (1) identifier fields carry readable synthetic tokens instead of UUID-shaped values, because a UUID-shaped value in a public fixture is indistinguishable from a live capture identifier by any scanner and by any reader; a real record's parentUuid/uuid/sessionId/promptId are 8-4-4-4-12 lowercase hex. (2) the assistant sample's thinking signature is a short placeholder; a real one is a base64 run of roughly 450 characters. Nothing in this file is authoritative about VALUES — only about key sets and nesting.", "assistant_record_top_level_keys": [ "cwd", "entrypoint", @@ -50,18 +50,18 @@ "role" ], "assistant_sample": { - "parentUuid": "b246b667-7465-4542-8fe2-cfc1fd9fc670", + "parentUuid": "synthetic-parent-uuid-0001", "isSidechain": false, "message": { "model": "claude-opus-4-7", - "id": "msg_012o8rYH8dKrXX374xroiJaX", + "id": "msg_synthetic0000000000001", "type": "message", "role": "assistant", "content": [ { "type": "thinking", - "thinking": " I'm starting the sweep by fetching comments from multiple issues in parallel and batching these calls to check various conditions efficiently.", - "signature": "EssCCmMIDhgCKkC2sPppL+7YL+crQO9Vpz+KFRfiHKEktuU98DdLMHUadrceuL8VGlXNsSm2RxxCSB0k9RSmWn1dl2fxuhumG6VFMg9jbGF1ZGUtb3B1cy00LTc4AEIIdGhpbmtpbmcSDBU66lkzvd7Kb3o6gBoMoDpFiv3jRwt5V2llIjAVq1jlF/4BfMHIQ79F8pxRdy/hTL006EiRvzQVCn53Oyj1mH3QgSqT5g1OLqNGa/cqlQGMHnmhp46rW6U6aL90CX+L/QVxfJyBiAqLidxmhZlEymHVQhypvfQDpJ2ZfyzbIkTpYmUqRf5JMsBZyc4rFf2tXyxLlbkCXE5vm/WWfUh2SMvwrlTWxHVhzYLvCeSMPTDpAR8Gmf37s/BAsUTrsJ1ZsuZFVtZuBd2YK21VLqrOaKeglLJD3wNMJITVNnAB2ywmypQj7xgB" + "thinking": "Synthetic thinking text. A real record carries the model's reasoning here; this sentence stands in for it so the block's shape is visible without reproducing anything that was actually thought.", + "signature": "synthetic-signature-placeholder-a-real-one-is-about-450-base64-characters" } ], "stop_reason": "tool_use", @@ -98,48 +98,48 @@ "speed": "standard" } }, - "requestId": "req_011CbkQdmQJS88YRQ3iU2QVx", + "requestId": "req_synthetic00000000000001", "type": "assistant", - "uuid": "6d978b0c-2967-453a-840b-f5d9805ece60", + "uuid": "synthetic-assistant-uuid-0002", "timestamp": "2026-06-05T16:13:08.165Z", "userType": "external", "entrypoint": "sdk-cli", - "cwd": "/home/manager/git_repos/claude-code-cache-fix", - "sessionId": "95cb9cc1-8f47-46b0-86ea-459fc6060b42", + "cwd": "/home/user/git_repos/claude-code-cache-fix", + "sessionId": "synthetic-session-uuid-0003", "version": "2.1.148", - "gitBranch": "docs/agents-md-slim-to-global" + "gitBranch": "example/branch-name" }, "user_sample": { - "parentUuid": "8e2d0575-91b8-4302-939e-148f1c900133", + "parentUuid": "synthetic-assistant-uuid-0002", "isSidechain": false, - "promptId": "a9b478dc-c89a-488e-9c72-e36be2dc69ab", + "promptId": "synthetic-prompt-uuid-0004", "type": "user", "message": { "role": "user", "content": [ { - "tool_use_id": "toolu_01JMCaPkGsBC4H2FYv7BUPR6", + "tool_use_id": "toolu_synthetic0000000001", "type": "tool_result", - "content": "[{\"author\":{\"login\":\"ThatDragonOverThere\"},\"authorAssociation\":\"NONE\",\"body\":\"Confirmed empirically: default effort is now \\\"high\\\" for BOTH Sonnet and Opus, not just Opus as the changelog implied.\\n\\nAny multi-agent setup that did not explicitly set effort level on each worker got silently upgraded to high effort across every session after the 2.1.117 update. For a 6-8 agent overnight pipeline, that is 6-8x the effort multiplier applied without any user action or notification.\\n\\nUsers need to explicitly set effort to medium (or their preferred level) on every agent window -- there is no way to set a global default. This is not documented anywhere visible.\",\"createdAt\":\"2026-04-23T15:59:03Z\",\"id\":\"IC_kwDON91aY88AAAABAKb9nw\",\"includesCreatedEdit\":false,\"isMinimized\":false,\"minimizedReason\":\"\",\"reactionGroups\":[],\"url\":\"https://github.com/anthropics/claude-code/issues/41930#issuecomment-4305911199\",\"viewerDidAuthor\":false},{\"author\":{\"login\":\"Faved\"},\"authorAssociation\":\"NONE\",\"body\":\"Confirmed, brand new seat on our team account as premium, didnt even have terminal or CC open. I had done earlier in the day with a different account and had used a --resume, i dont know if the was a phantom background runner or something. but i sat and watched my 5 hour session hit 100% within 22 mins.\\nI did find some claude processes running in activity montior, which disappeared once i hit 100% usage\",\"createdAt\":\"2026-04-23T22:15:04Z\",\"id\":\"IC_kwDON91aY88AAAABANB9cw\",\"includesCreatedEdit\":false,\"isMinimized\":false,\"minimizedReason\":\"\",\"reactionGroups\":[{\"content\":\"THUMBS_UP\",\"users\":{\"totalCount\":1}}],\"url\":\"https://github.com/anthropics/claude-code/issues/41930#issuecomment-4308630899\",\"viewerDidAuthor\":false},{\"author\":{\"login\":\"bcherny\"},\"authorAssociation\":\"COLLABORATOR\",\"body\":\"Hey all, we have root caused and fixed this. Detailed technical post-mortem here: https://www.anthropic.com/engineering/april-23-postmortem. If you see any more issues/weirdness, please don't hesitate to run `/feedback` + open an issue.\",\"createdAt\":\"2026-04-24T00:58:47Z\",\"id\":\"IC_kwDON91aY88AAAABAOAk-w\",\"includesCreatedEdit\":false,\"isMinimized\":false,\"minimizedReason\":\"\",\"reactionGroups\":[],\"url\":\"https://github.com/anthropics/claude-code/issues/41930#issuecomment-4309656827\",\"viewerDidAuthor\":false}]", + "content": "[{\"author\":{\"login\":\"synthetic-user-one\"},\"authorAssociation\":\"NONE\",\"body\":\"Synthetic issue comment. Stands in for a `gh issue view --comments` payload so the nesting is visible: a JSON array, serialized into the tool_result's content STRING rather than into blocks.\",\"createdAt\":\"2026-04-23T15:59:03Z\",\"id\":\"IC_synthetic000000000001\",\"includesCreatedEdit\":false,\"isMinimized\":false,\"minimizedReason\":\"\",\"reactionGroups\":[],\"url\":\"https://github.com/example/example/issues/1#issuecomment-1000000001\",\"viewerDidAuthor\":false},{\"author\":{\"login\":\"synthetic-user-two\"},\"authorAssociation\":\"NONE\",\"body\":\"Second synthetic comment, present so the array has more than one element and reactionGroups can be shown both empty and populated.\",\"createdAt\":\"2026-04-23T22:15:04Z\",\"id\":\"IC_synthetic000000000002\",\"includesCreatedEdit\":false,\"isMinimized\":false,\"minimizedReason\":\"\",\"reactionGroups\":[{\"content\":\"THUMBS_UP\",\"users\":{\"totalCount\":1}}],\"url\":\"https://github.com/example/example/issues/1#issuecomment-1000000002\",\"viewerDidAuthor\":false},{\"author\":{\"login\":\"synthetic-user-three\"},\"authorAssociation\":\"COLLABORATOR\",\"body\":\"Third synthetic comment, carrying a non-NONE authorAssociation so that field varies across the sample.\",\"createdAt\":\"2026-04-24T00:58:47Z\",\"id\":\"IC_synthetic000000000003\",\"includesCreatedEdit\":false,\"isMinimized\":false,\"minimizedReason\":\"\",\"reactionGroups\":[],\"url\":\"https://github.com/example/example/issues/1#issuecomment-1000000003\",\"viewerDidAuthor\":false}]", "is_error": false } ] }, - "uuid": "7df6752e-8f6b-428b-8f0d-ff951e9fd16a", + "uuid": "synthetic-user-uuid-0005", "timestamp": "2026-06-05T16:13:10.477Z", "toolUseResult": { - "stdout": "[{\"author\":{\"login\":\"ThatDragonOverThere\"},\"authorAssociation\":\"NONE\",\"body\":\"Confirmed empirically: default effort is now \\\"high\\\" for BOTH Sonnet and Opus, not just Opus as the changelog implied.\\n\\nAny multi-agent setup that did not explicitly set effort level on each worker got silently upgraded to high effort across every session after the 2.1.117 update. For a 6-8 agent overnight pipeline, that is 6-8x the effort multiplier applied without any user action or notification.\\n\\nUsers need to explicitly set effort to medium (or their preferred level) on every agent window -- there is no way to set a global default. This is not documented anywhere visible.\",\"createdAt\":\"2026-04-23T15:59:03Z\",\"id\":\"IC_kwDON91aY88AAAABAKb9nw\",\"includesCreatedEdit\":false,\"isMinimized\":false,\"minimizedReason\":\"\",\"reactionGroups\":[],\"url\":\"https://github.com/anthropics/claude-code/issues/41930#issuecomment-4305911199\",\"viewerDidAuthor\":false},{\"author\":{\"login\":\"Faved\"},\"authorAssociation\":\"NONE\",\"body\":\"Confirmed, brand new seat on our team account as premium, didnt even have terminal or CC open. I had done earlier in the day with a different account and had used a --resume, i dont know if the was a phantom background runner or something. but i sat and watched my 5 hour session hit 100% within 22 mins.\\nI did find some claude processes running in activity montior, which disappeared once i hit 100% usage\",\"createdAt\":\"2026-04-23T22:15:04Z\",\"id\":\"IC_kwDON91aY88AAAABANB9cw\",\"includesCreatedEdit\":false,\"isMinimized\":false,\"minimizedReason\":\"\",\"reactionGroups\":[{\"content\":\"THUMBS_UP\",\"users\":{\"totalCount\":1}}],\"url\":\"https://github.com/anthropics/claude-code/issues/41930#issuecomment-4308630899\",\"viewerDidAuthor\":false},{\"author\":{\"login\":\"bcherny\"},\"authorAssociation\":\"COLLABORATOR\",\"body\":\"Hey all, we have root caused and fixed this. Detailed technical post-mortem here: https://www.anthropic.com/engineering/april-23-postmortem. If you see any more issues/weirdness, please don't hesitate to run `/feedback` + open an issue.\",\"createdAt\":\"2026-04-24T00:58:47Z\",\"id\":\"IC_kwDON91aY88AAAABAOAk-w\",\"includesCreatedEdit\":false,\"isMinimized\":false,\"minimizedReason\":\"\",\"reactionGroups\":[],\"url\":\"https://github.com/anthropics/claude-code/issues/41930#issuecomment-4309656827\",\"viewerDidAuthor\":false}]", + "stdout": "[{\"author\":{\"login\":\"synthetic-user-one\"},\"authorAssociation\":\"NONE\",\"body\":\"Synthetic issue comment. Stands in for a `gh issue view --comments` payload so the nesting is visible: a JSON array, serialized into the tool_result's content STRING rather than into blocks.\",\"createdAt\":\"2026-04-23T15:59:03Z\",\"id\":\"IC_synthetic000000000001\",\"includesCreatedEdit\":false,\"isMinimized\":false,\"minimizedReason\":\"\",\"reactionGroups\":[],\"url\":\"https://github.com/example/example/issues/1#issuecomment-1000000001\",\"viewerDidAuthor\":false},{\"author\":{\"login\":\"synthetic-user-two\"},\"authorAssociation\":\"NONE\",\"body\":\"Second synthetic comment, present so the array has more than one element and reactionGroups can be shown both empty and populated.\",\"createdAt\":\"2026-04-23T22:15:04Z\",\"id\":\"IC_synthetic000000000002\",\"includesCreatedEdit\":false,\"isMinimized\":false,\"minimizedReason\":\"\",\"reactionGroups\":[{\"content\":\"THUMBS_UP\",\"users\":{\"totalCount\":1}}],\"url\":\"https://github.com/example/example/issues/1#issuecomment-1000000002\",\"viewerDidAuthor\":false},{\"author\":{\"login\":\"synthetic-user-three\"},\"authorAssociation\":\"COLLABORATOR\",\"body\":\"Third synthetic comment, carrying a non-NONE authorAssociation so that field varies across the sample.\",\"createdAt\":\"2026-04-24T00:58:47Z\",\"id\":\"IC_synthetic000000000003\",\"includesCreatedEdit\":false,\"isMinimized\":false,\"minimizedReason\":\"\",\"reactionGroups\":[],\"url\":\"https://github.com/example/example/issues/1#issuecomment-1000000003\",\"viewerDidAuthor\":false}]", "stderr": "", "interrupted": false, "isImage": false, "noOutputExpected": false }, - "sourceToolAssistantUUID": "8e2d0575-91b8-4302-939e-148f1c900133", + "sourceToolAssistantUUID": "synthetic-assistant-uuid-0002", "userType": "external", "entrypoint": "sdk-cli", - "cwd": "/home/manager/git_repos/claude-code-cache-fix", - "sessionId": "95cb9cc1-8f47-46b0-86ea-459fc6060b42", + "cwd": "/home/user/git_repos/claude-code-cache-fix", + "sessionId": "synthetic-session-uuid-0003", "version": "2.1.148", - "gitBranch": "docs/agents-md-slim-to-global" + "gitBranch": "example/branch-name" } }