{
  "name": "langfuse-observability — 2 hooks",
  "slug": "source-hooks-647e660a9172627d3146b06a",
  "type": "hooks",
  "category": "developer-tools",
  "example": false,
  "evidence_state": "pinned_source_listing",
  "stamp": "Pinned source listing — machine-checked",
  "summary": "Pinned source declarations and file hashes were listed.",
  "outcome": "Listed 2 hook declarations. Ran 72 git commands; each one's exit status and output hash is in commands.json. Scope: acquisition and static inspection.",
  "rule_results": [
    "The retained source tree matches its acquisition manifest.",
    "Declared hook names (listing.json): Stop; SessionEnd"
  ],
  "task": "What declarations and files are present in this pinned source?",
  "setup": "Git blob acquisition followed by static source inspection.",
  "limitations": "Scope: acquisition and static inspection. Command results: commands.json.",
  "source_url": "https://github.com/langfuse/claude-observability-plugin.git",
  "documentation_url": "https://github.com/langfuse/claude-observability-plugin.git",
  "commit": "b5211009698fdfe79c6bbe90d6901ad255ea65d3",
  "tree_sha256": "d300cf54b59ca62982e4e14af7e60c29f5f4a715fc6c04abab027e1d7a93a7f1",
  "file_sha256": {
    ".claude-plugin/marketplace.json": "7abe034db80259296837c66799f956e60da42e59f80fe6987d2876c90bd30af0",
    ".claude-plugin/plugin.json": "12cf944dcf37aab4c21b0e235f2e5ccd6a867e8e3a36a783eb59c6465f870a9d",
    ".github/workflows/ci.yml": "5f7b561df2932d82e8f6b193f1ff20724f2ba3f01033ac4bda6fa361bccc909b",
    ".github/workflows/release.yml": "3ead51b795d1488a983fa09b67a7eeabf5f03f20fde640d8a5887336176eb5c8",
    ".github/workflows/zizmor.yml": "cd5f6717265c44f56526f9e185b17ff53787c3d51e810c713d7a245d2c89c641",
    ".gitignore": "32dae3052f331ee34d628ef535709b301259a45df7c7522c4d35dcf49873f00b",
    "LICENSE": "c516c4e125d1c11a13637602a8e0b88c1453b07b209277b4db1fe3e3e3c380fa",
    "README.md": "e83e4c8950aacc707ac89917a13062699615070c3f042a7b6e1517a8f7805dc2",
    "hooks/hooks.json": "2160981011baab8b42fd5cb6ed1bafbb6cd5927e3b9d6fd4b7f187a11795c2e8",
    "hooks/langfuse_hook.py": "154da1e6c2cca4a5e215a9ca987135f89abe22f74f58cd97365561526e0f4a89",
    "pyproject.toml": "6e30a734682c7f681cc98a43bbc8ebd92152120e2abc57a81c388b232853ad7a",
    "tests/conftest.py": "050c8a0dc0b43ebe19f974bb8890f61514f7eadb5a22324c0798052366b6a4c6",
    "tests/fixtures/transcripts/async_agent_completed/transcript/subagents/agent-agent-complete.jsonl": "f574c5b6005704637dd206fbafa23a741dbf37c83dc4381791f81fa1eeef36fc",
    "tests/fixtures/transcripts/async_agent_completed/transcript/subagents/agent-agent-complete.meta.json": "6e5fee50ee5a775f03a4cafeb3b9b3d90dfa587fc7f99bfd776535761eed457b",
    "tests/fixtures/transcripts/async_agent_completed/transcript.jsonl": "fea7de2133128d6797f88b951a324c4b02eb8e44777bc6fa770277407effd44b",
    "tests/fixtures/transcripts/async_agent_deferred/transcript/subagents/agent-agent-deferred.jsonl": "7f6ed25c6e2e60228949af8f1e290525228a64bc7673850caa75ed61153c2501",
    "tests/fixtures/transcripts/async_agent_deferred/transcript/subagents/agent-agent-deferred.meta.json": "8f35456a076e50578f27961d799a6fcfb86e77d502af38de3e98bf36a555f018",
    "tests/fixtures/transcripts/async_agent_deferred/transcript.jsonl": "f39c01d2f1f09b04a00764fe9631b78fb8cd4d088de588a938ca3280327dc964",
    "tests/fixtures/transcripts/human_wait_question/transcript.jsonl": "2d7203c5079d6be269a11c36d4b2a44f903ae09562fc8942f7ea3331f8327a10",
    "tests/fixtures/transcripts/nested_subagents/transcript/subagents/agent-inner-agent.jsonl": "d282af06eccd5542ea040de70211ab312199e07c6533f4f473a0159face4057b",
    "tests/fixtures/transcripts/nested_subagents/transcript/subagents/agent-inner-agent.meta.json": "f83341e5c0ca5e8fe821526a7b0b9a1f897bb21d3d41bca6b43ae3ca77a0de06",
    "tests/fixtures/transcripts/nested_subagents/transcript/subagents/agent-outer-agent.jsonl": "9ffa507def665ff6addeba6d94760feea2142847aaa06c70b4513360bc421568",
    "tests/fixtures/transcripts/nested_subagents/transcript/subagents/agent-outer-agent.meta.json": "9c1c78810e812e66b9f7c80d2ffbc3e20b333ee710651167d35cd1cbaa10ddd0",
    "tests/fixtures/transcripts/nested_subagents/transcript.jsonl": "67c99bd94ea32d7a59a3e938406ab78a65f66295e3a8ce7aa609f41e95aa99f7",
    "tests/fixtures/transcripts/observation_levels/transcript.jsonl": "e21427b315c1661c5b48146265983aca57bedd3b69defca3f5714e826318533b",
    "tests/fixtures/transcripts/simple_turn/transcript.jsonl": "35cda9e9c77034081a99c5f69747573f7476ba2a099c84e1f743b3dd2d71c7e4",
    "tests/fixtures/transcripts/task_notification_task_id_fallback/transcript/subagents/agent-task-fallback.jsonl": "324dbdb102f82706e204143e5e2b153778ebf7556a51dc7d9d46440cefeeaee9",
    "tests/fixtures/transcripts/task_notification_task_id_fallback/transcript/subagents/agent-task-fallback.meta.json": "cdcb0c4b2526b1f4a531ef70030527d8e4188af5ca78647dccbf8b8adc9b1bdc",
    "tests/fixtures/transcripts/task_notification_task_id_fallback/transcript.jsonl": "6056de50e8e1d0086d86bf6dd299a43302a65cbad2a18f6e63ab36394abc551b",
    "tests/fixtures/transcripts/tool_turn/transcript.jsonl": "a9b8c97179e37c1e119ecc5011df52547e4f76b1d0221bfca395c6852e84ed5a",
    "tests/fixtures/transcripts/workflow_subagents/transcript/subagents/workflows/wf_test001/agent-r1.jsonl": "606be7b30dca9ca785b4ed292642062ae9fe68d356e3ad717872c5f1da553809",
    "tests/fixtures/transcripts/workflow_subagents/transcript/subagents/workflows/wf_test001/agent-r1.meta.json": "9e282bb0224d052eee9a4788b298ec9107f647bd8eca89a3af2f9780c69492a8",
    "tests/fixtures/transcripts/workflow_subagents/transcript/subagents/workflows/wf_test001/agent-r2.jsonl": "a13869f55d3792b7c68ad09758f5dd3dad3bffc2a33db1644161d8b0d83952f3",
    "tests/fixtures/transcripts/workflow_subagents/transcript/subagents/workflows/wf_test001/agent-r2.meta.json": "9e282bb0224d052eee9a4788b298ec9107f647bd8eca89a3af2f9780c69492a8",
    "tests/fixtures/transcripts/workflow_subagents/transcript/subagents/workflows/wf_test001/journal.jsonl": "ad4bbe6588bb16ea05b565e6453ff9bee0cd4b6e15117fc0000ca7ebcea71d6c",
    "tests/fixtures/transcripts/workflow_subagents/transcript.jsonl": "74f47b0662987f683121944eb8aff5ccd223771df91218c25a97a3c05d54da9e",
    "tests/integration/test_deterministic_trace_ids.py": "964a58fbaf9082a81549e61280f0fe700e94a688de00fe75243114005723d8b1",
    "tests/integration/test_emit_new_turns_from_transcript.py": "ebf18fefe16d957833d2a5253e3dbd30b707617cb9947f7ec303d4bb11ed0293",
    "tests/integration/test_emit_turn_observations.py": "b8896e709d6f3e47b011808c2a6554930242d1ab3c18005c37b9984b8488e43a",
    "tests/integration/test_forked_session_history.py": "fde5e618a13098c49b0243f45cf8166d43c22a4f3cab59992dd0ef966affd82d",
    "tests/integration/test_generation_history.py": "aa14cb74953618e625aad8d699aee0323b94757598b6b4c52cbfc60bd4f3df15",
    "tests/integration/test_observation_levels.py": "4368f5ae98bdb11cec8025b93c9b627a297d1c27498ca6cf5249f744e894a307",
    "tests/integration/test_parent_trace_attachment.py": "4eeba18e049e21b5cca06d80baa70a826d5b5fa938e406803714918f3921b245",
    "tests/integration/test_state_lock_contention.py": "c87bc554b6d2950f6f5957cd245ae76a62eec0903f702fd2b32567979f4b85c1",
    "tests/integration/test_workflow_subagent_emission.py": "472ab19d75f6e51685a52986b58c106ad36b5e84b91dece6edaf77aa54428aa3",
    "tests/unit/test_async_agent_deferral.py": "370f20e2673e1cdd2e121f23d8dcd742a7ee7d3ed657a6707ff4a44ba3243680",
    "tests/unit/test_config_precedence.py": "da2966c222aa1abf8959bb651d9879cc554dc56ea110f7964639c577e8d4a9f1",
    "tests/unit/test_config_visibility.py": "aae5e29174f02cdb981cb27bf86f4406826e42badcde7234504e990e4d478677",
    "tests/unit/test_emission_gate.py": "9062d178d29637faf9ffee0a66dbe8fc730c2fb4fd0dc441cc578b973d87019f",
    "tests/unit/test_hook_payload.py": "9959fa76e9cfd41a04adfbf5d604b78c8a95126cb882c510f79d6c6ad924b7ff",
    "tests/unit/test_image_capture.py": "20106bc0856a317ef8a2f864fe37642ce42f6ed171714a13b744777e3568b371",
    "tests/unit/test_import_failure.py": "ee0c4a147e023b20269d5bebdc62bba609b26d9ef18df5d581850fdaeedee44c",
    "tests/unit/test_langfuse_payload_builders.py": "695f38219a0855c8931f3491720b5f9dd18acedb5cd6cb987f2cc3328447f513",
    "tests/unit/test_operator_tags.py": "51121c12d377c78a3b8d35f64f9904a4d8cffb6d7a647d818d2bdc5ff5beef0a",
    "tests/unit/test_parent_trace_context.py": "a456fd55f8de09eb0c892e3e4c3616151fa60c79b9c8a8b03470d2d779ad1ebe",
    "tests/unit/test_remote_parent.py": "35877557b87d124971021d5a886257c4ed4518d8f9a4498260c4fab913d6a6de",
    "tests/unit/test_skill_tags.py": "4b010f5e5a3f22c859c40a5f4b5f4209b88d6b2a25a5d9bf4615133dfd64ac9a",
    "tests/unit/test_state_dir.py": "8fad4aed12164ac2d4db04f20fe9a22173b00800a44fe1618030e8882a88370f",
    "tests/unit/test_subagent_discovery.py": "b77f72c9bb4e70a23c57abae8070c79fbd91c879ffee99c7a7e121ef7978fc12",
    "tests/unit/test_subagent_observations.py": "d651d98d1088aad5a86bee907545acdefc22d77df3144815e0af8438d2d7c68a",
    "tests/unit/test_task_notifications.py": "f6df2222f6f366e50619bdc13405c6ce8ec1f4cb9b6660c28825525d6503b1b4",
    "tests/unit/test_thinking_capture.py": "dedb35ce84ca8e159a86edc1532f1a571107a17eeb40f3aa39887463fc58cd43",
    "tests/unit/test_timestamps.py": "518ae63b34bd935c9ad2c71baead5215035e69cb23e21c26fbe4a2a0703bac04",
    "tests/unit/test_trace_id_derivation.py": "3332320da35d6dd9ae3770b175c5fd3135fae40734cdadea21c1164a64ee3c20",
    "tests/unit/test_transcript_reader.py": "bb6632907fc46eccb277b2feb0a6e44d5b41abd05573cfceab2f015ddf480f3d",
    "tests/unit/test_turn_assembly.py": "b432e6eb0e604e5a8595680a8ab37eec10ed7bac788d94c3dff8ccc01f6dff08",
    "uv.lock": "8345a8b586c341e2872b0c61009c7f0d56759fb6001b875ae5d7b2aad00a4b30"
  },
  "lockfiles": [
    "LOCK.json"
  ],
  "utc_date": "2026-10-19T03:15:41Z",
  "source_date": "2026-10-16",
  "discovered_date": "2026-10-16",
  "retested_date": "2026-10-19",
  "reviewed_date": "2026-10-19",
  "published_date": "2026-10-19",
  "modified_date": "2026-10-19",
  "reviewer": "machine pipeline",
  "harness_version": "toolwitness harness at commit c05bfef14b02637a45bbcd2667a9427df3733235",
  "claude_code_version": "Not applicable: static source inspection (commands.json).",
  "model_id": "Not applicable: static source inspection (commands.json).",
  "scanner_version": "Not applicable: static source inspection.",
  "rulepack_version": "Not applicable: static source inspection.",
  "agents": [],
  "disclaimer": "This record lists declarations and file hashes from a pinned source tree. Git command results from acquisition and static inspection are retained in commands.json. Scope: acquisition and static inspection. It is not a security or quality verdict. Changed bytes are outside this record.",
  "commands": [
    "Ran 72 git commands; each one's exit status and output hash is in commands.json. Scope: acquisition and static inspection."
  ],
  "prompt_list": [
    "Not applicable: static source inspection (commands.json)."
  ],
  "history": [
    "2026-10-19T03:15:41Z: pinned source inspection"
  ],
  "application": {
    "name": "langfuse-observability — 2 hooks",
    "softwareVersion": "b5211009698fdfe79c6bbe90d6901ad255ea65d3",
    "applicationCategory": "DeveloperApplication",
    "operatingSystem": "Not exercised"
  },
  "artifacts": {
    "transcript": "Ran 72 git commands; each one's exit status and output hash is in commands.json. Scope: acquisition and static inspection.",
    "sinkhole_log": "Not applicable: static source inspection (commands.json).",
    "canary_log": "Not applicable: static source inspection (commands.json).",
    "scanner_output": "Not applicable: static source inspection (commands.json).",
    "normalized_text": "{\n  \"listing\": {\n    \"skills\": [],\n    \"hooks\": [\n      {\n        \"path\": \"hooks/hooks.json\",\n        \"sha256\": \"2160981011baab8b42fd5cb6ed1bafbb6cd5927e3b9d6fd4b7f187a11795c2e8\",\n        \"event\": \"Stop\",\n        \"matcher\": null,\n        \"declaration\": {\n          \"type\": \"command\",\n          \"command\": \"if command -v uv >/dev/null 2>&1; then exec uv run --quiet --script \\\"${CLAUDE_PLUGIN_ROOT}\\\"/hooks/langfuse_hook.py; else exec python3 \\\"${CLAUDE_PLUGIN_ROOT}\\\"/hooks/langfuse_hook.py; fi\"\n        },\n        \"executed\": false\n      },\n      {\n        \"path\": \"hooks/hooks.json\",\n        \"sha256\": \"2160981011baab8b42fd5cb6ed1bafbb6cd5927e3b9d6fd4b7f187a11795c2e8\",\n        \"event\": \"SessionEnd\",\n        \"matcher\": null,\n        \"declaration\": {\n          \"type\": \"command\",\n          \"command\": \"if command -v uv >/dev/null 2>&1; then exec uv run --quiet --script \\\"${CLAUDE_PLUGIN_ROOT}\\\"/hooks/langfuse_hook.py; else exec python3 \\\"${CLAUDE_PLUGIN_ROOT}\\\"/hooks/langfuse_hook.py; fi\"\n        },\n        \"executed\": false\n      }\n    ],\n    \"executions\": []\n  }\n}"
  },
  "review_input": {
    "identity_artifact": "identity.json",
    "evidence_sha256": {
      "LOCK.json": "d2418ae577ded6964765072a8dcc084af3fe23b29598eb23bb1573ff58eec46b",
      "commands.json": "5afe50ff5f4577348222bf1437d88cf925173f212539a363d08fa3c12b90a1cb",
      "complete.json": "91b504b43905fdc009504d516c45eea831f39a1995b9e7d69987c9756c936d6f",
      "identity.json": "d79410c2f1dc717762b05678c18b345af98096e18bd54c1cfb341556b2ce7af8",
      "listing.json": "cd4ee56547995fe9463efb53b5372718d6417da10ef89175a5d86d49c919f6a3",
      "selection.json": "41766fd4a9c6175d70545cb5ea218f02b12fe89c6528308986313c43799abc62"
    },
    "claims": [
      {
        "id": "acquired",
        "field": "summary",
        "text": "Pinned source declarations and file hashes were listed.",
        "sources": [
          "LOCK.json",
          "listing.json",
          "commands.json"
        ]
      },
      {
        "id": "listed",
        "field": "outcome",
        "text": "Listed 2 hook declarations. Ran 72 git commands; each one's exit status and output hash is in commands.json. Scope: acquisition and static inspection.",
        "sources": [
          "LOCK.json",
          "listing.json",
          "commands.json"
        ]
      },
      {
        "id": "tree",
        "field": "rule_results.0",
        "text": "The retained source tree matches its acquisition manifest.",
        "sources": [
          "LOCK.json",
          "listing.json",
          "commands.json"
        ]
      },
      {
        "id": "declared",
        "field": "rule_results.1",
        "text": "Declared hook names (listing.json): Stop; SessionEnd",
        "sources": [
          "LOCK.json",
          "listing.json",
          "commands.json"
        ]
      }
    ]
  },
  "review": {
    "kind": "machine-checked",
    "date": "2026-10-19",
    "reviewed_sha256": "aa5b84b156bd5aac983a7c068bc1673e321130b9a62a045571ce54e98e64d31b",
    "gates": "949f2226dc930ef177265a3927294dd9a88581e1e0e054c3f0c5f38dd6cd3bbb",
    "codex": "3ce3e916af4ebb79efbd2e5dde607b4889625a9abb4cdccc78249fe47801bd2c",
    "grok": "50f9a9360a9f03490bf14be34ad1b772d3d56409f984565183ea72005dd2a320",
    "summary": "Deterministic gates passed; every claim rebuilt from evidence with a reviewed template; Grok reported no standing refutation."
  }
}
