{
  "manifest": {
    "schema": "ruflo-witness/v1",
    "issuedAt": "2026-05-12T14:43:24.488Z",
    "gitCommit": "3975ab512c79b86def0222bf6a1c405599417d6b",
    "branch": "release/3.7.0-alpha.27",
    "os": "macos",
    "releases": {
      "ruflo": "3.7.0-alpha.27",
      "claude-flow": "3.7.0-alpha.27",
      "@claude-flow/cli": "3.7.0-alpha.27",
      "@claude-flow/memory": "3.0.0-alpha.15"
    },
    "summary": {
      "totalFixes": 113,
      "verified": 113,
      "missing": 0
    },
    "fixes": [
      {
        "id": "F1",
        "desc": "hooks_metrics persistence",
        "file": "v3/@claude-flow/cli/dist/src/mcp-tools/hooks-tools.js",
        "sha256": "93f4d2f94710eed90e0bcc9b8823e91f1a4b894221fae1972c1f6745d90b622d",
        "marker": "getIntelligenceStatsFromMemory",
        "markerVerified": true
      },
      {
        "id": "F2",
        "desc": "worker-dispatch honesty",
        "file": "v3/@claude-flow/cli/dist/src/mcp-tools/hooks-tools.js",
        "sha256": "93f4d2f94710eed90e0bcc9b8823e91f1a4b894221fae1972c1f6745d90b622d",
        "marker": "'no-daemon'",
        "markerVerified": true
      },
      {
        "id": "F3",
        "desc": "hive-mind consensus schema + persistence",
        "file": "v3/@claude-flow/cli/dist/src/mcp-tools/hive-mind-tools.js",
        "sha256": "8482312f5b447ae6008d13b0873945f026bf540e559195cf961b948a94520678",
        "marker": "consensusStrategy",
        "markerVerified": true
      },
      {
        "id": "F4",
        "desc": "agentdb_pattern-store memory-store fallback",
        "file": "v3/@claude-flow/cli/dist/src/mcp-tools/agentdb-tools.js",
        "sha256": "666141cf59c2e75c9f65fe50eff85076a96d820bddceaba79c0b67a4469b3bb5",
        "marker": "memory-store-fallback",
        "markerVerified": true
      },
      {
        "id": "F5",
        "desc": "embeddings_status structured ruvectorStatus",
        "file": "v3/@claude-flow/cli/dist/src/mcp-tools/embeddings-tools.js",
        "sha256": "48032e13d70927a6448d75e04f8f055b0268aaada8bef3e6926bf3acafd493fd",
        "marker": "ruvectorStatus",
        "markerVerified": true
      },
      {
        "id": "F6",
        "desc": "session_list dual-shape handling",
        "file": "v3/@claude-flow/cli/dist/src/mcp-tools/session-tools.js",
        "sha256": "159365d8f876d52b94a3c1420e9ac3e6da442a4d0fa0bcd6de292b6282113cee",
        "marker": "s.sessionId || s.id",
        "markerVerified": true
      },
      {
        "id": "F7",
        "desc": "coordination_orchestrate honest stub",
        "file": "v3/@claude-flow/cli/dist/src/mcp-tools/coordination-tools.js",
        "sha256": "ae4b5e05735741b01cbc6c9e4af3953a02b4ebf78faf78fe06f9130420f4f301",
        "marker": "executor: 'none'",
        "markerVerified": true
      },
      {
        "id": "F8",
        "desc": "performance_metrics real measurements",
        "file": "v3/@claude-flow/cli/dist/src/mcp-tools/performance-tools.js",
        "sha256": "8151d83f6b1abe7a9139db5c9d884c42c1b3faf986dc712c0fbd43a22af39f51",
        "marker": "process.hrtime.bigint",
        "markerVerified": true
      },
      {
        "id": "F9",
        "desc": "F9 router probe + actionable error",
        "file": "v3/@claude-flow/cli/dist/src/memory/memory-bridge.js",
        "sha256": "12ca47650a812c66fb5efbbc3b6cdf527ca74ee787f27c9556514492de9d07cd",
        "marker": "IntentRouter",
        "markerVerified": true
      },
      {
        "id": "F10",
        "desc": "intelligence_attention real patterns",
        "file": "v3/@claude-flow/cli/dist/src/mcp-tools/hooks-tools.js",
        "sha256": "93f4d2f94710eed90e0bcc9b8823e91f1a4b894221fae1972c1f6745d90b622d",
        "marker": "real-flash-attention+memory",
        "markerVerified": true
      },
      {
        "id": "F11",
        "desc": "neural_predict classifier head",
        "file": "v3/@claude-flow/cli/dist/src/mcp-tools/neural-tools.js",
        "sha256": "acb66c459f9eb3a34686567b5d4f9bd834b4e874e9a1229256baebfd15c4ea5c",
        "marker": "knn-cosine+softmax",
        "markerVerified": true
      },
      {
        "id": "F12",
        "desc": "config_list union with source labels",
        "file": "v3/@claude-flow/cli/dist/src/mcp-tools/config-tools.js",
        "sha256": "0c68ebca896806de2aa052ef44a0de13e9df3becef44721857c7c99567403d80",
        "marker": "merged.set",
        "markerVerified": true
      },
      {
        "id": "#1697",
        "desc": "rvf-wasm overrides",
        "file": "package.json",
        "sha256": "f054233b90811bb2caa19c186a4b850e09b1d65912972f18982a920b73780b3b",
        "marker": "@ruvector/rvf-wasm",
        "markerVerified": true
      },
      {
        "id": "#1698",
        "desc": "HNSW init fix in CLI command",
        "file": "v3/@claude-flow/cli/dist/src/commands/embeddings.js",
        "sha256": "2cb57b6fb38bb4722eebd169f4b6056f1b6f69ba0adde9978bcd9e03f83d43ab",
        "marker": "getHNSWIndex",
        "markerVerified": true
      },
      {
        "id": "#1691",
        "desc": "Windows daemon fork()",
        "file": "v3/@claude-flow/cli/dist/src/commands/daemon.js",
        "sha256": "6b600ec62ef9a3898fd3c606c23034a10a005c0330d0dac43b29f6d2abc2ec8e",
        "marker": "fork(cliPath",
        "markerVerified": true
      },
      {
        "id": "#1721",
        "desc": "postinstall copies all dist/src/* siblings",
        "file": "v3/@claude-flow/cli/package.json",
        "sha256": "9d8b24743c09a6f60371150207edd60a05ce393a67137c69d62e27b1d3e16c75",
        "marker": "postinstall.cjs",
        "markerVerified": true
      },
      {
        "id": "ADR-094",
        "desc": "transformers loader try-prefer-fallback",
        "file": "v3/@claude-flow/embeddings/dist/transformers-loader.js",
        "sha256": "1d2225e7422f8a2d47d39100324d5e4ac2d29c55e8e72b02f5e4a7a113d45be2",
        "marker": "@huggingface/transformers",
        "markerVerified": true
      },
      {
        "id": "G1",
        "desc": "agent_execute wires Anthropic Messages API",
        "file": "v3/@claude-flow/cli/dist/src/mcp-tools/agent-execute-core.js",
        "sha256": "2bc49c38b14d43a0329bf5d84913528851ef1c48ab32b8c8c1c40f83c062fc7f",
        "marker": "callAnthropicMessages",
        "markerVerified": true
      },
      {
        "id": "G3",
        "desc": "workflow runtime task/wait/condition",
        "file": "v3/@claude-flow/cli/dist/src/mcp-tools/workflow-tools.js",
        "sha256": "442839dca2d6177f2567dccaf1f48306c304cbca0659c477501604289f7ad5a6",
        "marker": "executeAgentTask",
        "markerVerified": true
      },
      {
        "id": "G4",
        "desc": "WASM agent prompt routes to Anthropic",
        "file": "v3/@claude-flow/cli/dist/src/ruvector/agent-wasm.js",
        "sha256": "12fce07f6458aff5db210b0ba50104fa9b2dd52c85b5e9071b48c2899451c631",
        "marker": "isEchoStub",
        "markerVerified": true
      },
      {
        "id": "G6",
        "desc": "auto-memory content-hash dedup",
        "file": "v3/@claude-flow/cli/.claude/helpers/intelligence.cjs",
        "sha256": "84a6159b384b8118f0beaa1089c417cab6d1116cd77d3882a607715ef7679ea8",
        "marker": "deduplicateByContent",
        "markerVerified": true
      },
      {
        "id": "G7-gnn",
        "desc": "gnnService activated",
        "file": "v3/@claude-flow/cli/dist/src/memory/memory-bridge.js",
        "sha256": "12ca47650a812c66fb5efbbc3b6cdf527ca74ee787f27c9556514492de9d07cd",
        "marker": "GNNService",
        "markerVerified": true
      },
      {
        "id": "G7-rvf",
        "desc": "rvfOptimizer activated",
        "file": "v3/@claude-flow/cli/dist/src/memory/memory-bridge.js",
        "sha256": "12ca47650a812c66fb5efbbc3b6cdf527ca74ee787f27c9556514492de9d07cd",
        "marker": "RVFOptimizer",
        "markerVerified": true
      },
      {
        "id": "G7-mut",
        "desc": "mutationGuard activated",
        "file": "v3/@claude-flow/cli/dist/src/memory/memory-bridge.js",
        "sha256": "12ca47650a812c66fb5efbbc3b6cdf527ca74ee787f27c9556514492de9d07cd",
        "marker": "MutationGuard",
        "markerVerified": true
      },
      {
        "id": "G7-att",
        "desc": "attestationLog activated with sqlite db",
        "file": "v3/@claude-flow/cli/dist/src/memory/memory-bridge.js",
        "sha256": "12ca47650a812c66fb5efbbc3b6cdf527ca74ee787f27c9556514492de9d07cd",
        "marker": "attestation.db",
        "markerVerified": true
      },
      {
        "id": "G7-gvb",
        "desc": "GuardedVectorBackend wraps mutationGuard+log",
        "file": "v3/@claude-flow/cli/dist/src/memory/memory-bridge.js",
        "sha256": "12ca47650a812c66fb5efbbc3b6cdf527ca74ee787f27c9556514492de9d07cd",
        "marker": "GuardedVectorBackend",
        "markerVerified": true
      },
      {
        "id": "G2",
        "desc": "federation real Ed25519 signing/verification",
        "file": "v3/@claude-flow/plugin-agent-federation/dist/plugin.js",
        "sha256": "9f751aaee838a85e7b2371bbd73dccb5cb89c6b7751496b18d33d8b8a559de19",
        "marker": "@noble/ed25519",
        "markerVerified": true
      },
      {
        "id": "CAP-MCP-agent-tools",
        "desc": "MCP tools (8): agent_execute, agent_health, agent_list, …",
        "file": "v3/@claude-flow/cli/dist/src/mcp-tools/agent-tools.js",
        "sha256": "a182a61809b5480e9eb4139ed8fa3b8e471201d338be4e086578b4e2e325302a",
        "marker": "agent_execute",
        "markerVerified": true
      },
      {
        "id": "CAP-MCP-agentdb-tools",
        "desc": "MCP tools (15): agentdb_batch, agentdb_causal-edge, agentdb_consolidate, …",
        "file": "v3/@claude-flow/cli/dist/src/mcp-tools/agentdb-tools.js",
        "sha256": "666141cf59c2e75c9f65fe50eff85076a96d820bddceaba79c0b67a4469b3bb5",
        "marker": "agentdb_batch",
        "markerVerified": true
      },
      {
        "id": "CAP-MCP-analyze-tools",
        "desc": "MCP tools (6): analyze_diff, analyze_diff-classify, analyze_diff-reviewers, …",
        "file": "v3/@claude-flow/cli/dist/src/mcp-tools/analyze-tools.js",
        "sha256": "d665ca78dcb753e7803d37a331ae363ba5e4fea0c90e828171d264a425a638da",
        "marker": "analyze_diff",
        "markerVerified": true
      },
      {
        "id": "CAP-MCP-autopilot-tools",
        "desc": "MCP tools (10): autopilot_config, autopilot_disable, autopilot_enable, …",
        "file": "v3/@claude-flow/cli/dist/src/mcp-tools/autopilot-tools.js",
        "sha256": "1f1dcf3c7660b9ab66df49bacfdf2c7f5a883554d98b416a2780d5226e643df2",
        "marker": "autopilot_config",
        "markerVerified": true
      },
      {
        "id": "CAP-MCP-browser-tools",
        "desc": "MCP tools (23): browser_back, browser_check, browser_click, …",
        "file": "v3/@claude-flow/cli/dist/src/mcp-tools/browser-tools.js",
        "sha256": "5ea5f63c99ee22bccb6fbd4d872e44f47ec7f0ad14ceed4f18014b95f94f75f7",
        "marker": "browser_back",
        "markerVerified": true
      },
      {
        "id": "CAP-MCP-claims-tools",
        "desc": "MCP tools (12): claims_accept-handoff, claims_board, claims_claim, …",
        "file": "v3/@claude-flow/cli/dist/src/mcp-tools/claims-tools.js",
        "sha256": "89908d601a21e1a0dca0bd611af61b1d2150010f6015216849122775e6940808",
        "marker": "claims_accept-handoff",
        "markerVerified": true
      },
      {
        "id": "CAP-MCP-config-tools",
        "desc": "MCP tools (6): config_export, config_get, config_import, …",
        "file": "v3/@claude-flow/cli/dist/src/mcp-tools/config-tools.js",
        "sha256": "0c68ebca896806de2aa052ef44a0de13e9df3becef44721857c7c99567403d80",
        "marker": "config_export",
        "markerVerified": true
      },
      {
        "id": "CAP-MCP-coordination-tools",
        "desc": "MCP tools (7): coordination_consensus, coordination_load_balance, coordination_metrics, …",
        "file": "v3/@claude-flow/cli/dist/src/mcp-tools/coordination-tools.js",
        "sha256": "ae4b5e05735741b01cbc6c9e4af3953a02b4ebf78faf78fe06f9130420f4f301",
        "marker": "coordination_consensus",
        "markerVerified": true
      },
      {
        "id": "CAP-MCP-daa-tools",
        "desc": "MCP tools (8): daa_agent_adapt, daa_agent_create, daa_cognitive_pattern, …",
        "file": "v3/@claude-flow/cli/dist/src/mcp-tools/daa-tools.js",
        "sha256": "2beb8ec07d784cf7f1a61b4cd2090a8e65934893c2a31a3afcd406774d2a8537",
        "marker": "daa_agent_adapt",
        "markerVerified": true
      },
      {
        "id": "CAP-MCP-embeddings-tools",
        "desc": "MCP tools (10): embeddings_compare, embeddings_generate, embeddings_hyperbolic, …",
        "file": "v3/@claude-flow/cli/dist/src/mcp-tools/embeddings-tools.js",
        "sha256": "48032e13d70927a6448d75e04f8f055b0268aaada8bef3e6926bf3acafd493fd",
        "marker": "embeddings_compare",
        "markerVerified": true
      },
      {
        "id": "CAP-MCP-github-tools",
        "desc": "MCP tools (5): github_issue_track, github_metrics, github_pr_manage, …",
        "file": "v3/@claude-flow/cli/dist/src/mcp-tools/github-tools.js",
        "sha256": "951b66082ba309505eaf4e3588104681f5581ec5e0c8d6daf6a7befac596db37",
        "marker": "github_issue_track",
        "markerVerified": true
      },
      {
        "id": "CAP-MCP-guidance-tools",
        "desc": "MCP tools (5): guidance_capabilities, guidance_discover, guidance_quickref, …",
        "file": "v3/@claude-flow/cli/dist/src/mcp-tools/guidance-tools.js",
        "sha256": "856f7b0439a4dfdafab88589faf5cbe42c8fbd4004532fe507ec3e3e42af9e12",
        "marker": "guidance_capabilities",
        "markerVerified": true
      },
      {
        "id": "CAP-MCP-hive-mind-tools",
        "desc": "MCP tools (9): hive-mind_broadcast, hive-mind_consensus, hive-mind_init, …",
        "file": "v3/@claude-flow/cli/dist/src/mcp-tools/hive-mind-tools.js",
        "sha256": "8482312f5b447ae6008d13b0873945f026bf540e559195cf961b948a94520678",
        "marker": "hive-mind_broadcast",
        "markerVerified": true
      },
      {
        "id": "CAP-MCP-hooks-tools",
        "desc": "MCP tools (62): build-agents, explain, hooks_build-agents, …",
        "file": "v3/@claude-flow/cli/dist/src/mcp-tools/hooks-tools.js",
        "sha256": "93f4d2f94710eed90e0bcc9b8823e91f1a4b894221fae1972c1f6745d90b622d",
        "marker": "build-agents",
        "markerVerified": true
      },
      {
        "id": "CAP-MCP-memory-tools",
        "desc": "MCP tools (10): memory_bridge_status, memory_delete, memory_import_claude, …",
        "file": "v3/@claude-flow/cli/dist/src/mcp-tools/memory-tools.js",
        "sha256": "37d929df892035fe94a48cd43a074c9c773e9dc031ab56d9dd33cdbf21a87e39",
        "marker": "memory_bridge_status",
        "markerVerified": true
      },
      {
        "id": "CAP-MCP-neural-tools",
        "desc": "MCP tools (6): neural_compress, neural_optimize, neural_patterns, …",
        "file": "v3/@claude-flow/cli/dist/src/mcp-tools/neural-tools.js",
        "sha256": "acb66c459f9eb3a34686567b5d4f9bd834b4e874e9a1229256baebfd15c4ea5c",
        "marker": "neural_compress",
        "markerVerified": true
      },
      {
        "id": "CAP-MCP-performance-tools",
        "desc": "MCP tools (6): performance_benchmark, performance_bottleneck, performance_metrics, …",
        "file": "v3/@claude-flow/cli/dist/src/mcp-tools/performance-tools.js",
        "sha256": "8151d83f6b1abe7a9139db5c9d884c42c1b3faf986dc712c0fbd43a22af39f51",
        "marker": "performance_benchmark",
        "markerVerified": true
      },
      {
        "id": "CAP-MCP-progress-tools",
        "desc": "MCP tools (4): progress_check, progress_summary, progress_sync, …",
        "file": "v3/@claude-flow/cli/dist/src/mcp-tools/progress-tools.js",
        "sha256": "be81711252828e4b2deee94205d0ca45c27a96f8adfd619a342973d94974de88",
        "marker": "progress_check",
        "markerVerified": true
      },
      {
        "id": "CAP-MCP-ruvllm-tools",
        "desc": "MCP tools (10): ruvllm_chat_format, ruvllm_generate_config, ruvllm_hnsw_add, …",
        "file": "v3/@claude-flow/cli/dist/src/mcp-tools/ruvllm-tools.js",
        "sha256": "b6780d8693d5e1c743717d589783dc33581b45900a8d8bf282a27923e0460981",
        "marker": "ruvllm_chat_format",
        "markerVerified": true
      },
      {
        "id": "CAP-MCP-security-tools",
        "desc": "MCP tools (6): aidefence_analyze, aidefence_has_pii, aidefence_is_safe, …",
        "file": "v3/@claude-flow/cli/dist/src/mcp-tools/security-tools.js",
        "sha256": "c3888c82da9a1c3e60494b412ba0fbc605bfc6840ab77c466a2bf5854a9d84aa",
        "marker": "aidefence_analyze",
        "markerVerified": true
      },
      {
        "id": "CAP-MCP-session-tools",
        "desc": "MCP tools (5): session_delete, session_info, session_list, …",
        "file": "v3/@claude-flow/cli/dist/src/mcp-tools/session-tools.js",
        "sha256": "159365d8f876d52b94a3c1420e9ac3e6da442a4d0fa0bcd6de292b6282113cee",
        "marker": "session_delete",
        "markerVerified": true
      },
      {
        "id": "CAP-MCP-swarm-tools",
        "desc": "MCP tools (9): agents, coordinator, persistence, …",
        "file": "v3/@claude-flow/cli/dist/src/mcp-tools/swarm-tools.js",
        "sha256": "bdc3e2586e6041674dc7504993024078e7bcd9a18505d5b82110deb0e6e06503",
        "marker": "agents",
        "markerVerified": true
      },
      {
        "id": "CAP-MCP-system-tools",
        "desc": "MCP tools (15): config, database, disk, …",
        "file": "v3/@claude-flow/cli/dist/src/mcp-tools/system-tools.js",
        "sha256": "57484b98e9f15965d77032b8c322b987ac457122c8a647c2752a79b35254f972",
        "marker": "config",
        "markerVerified": true
      },
      {
        "id": "CAP-MCP-task-tools",
        "desc": "MCP tools (7): task_assign, task_cancel, task_complete, …",
        "file": "v3/@claude-flow/cli/dist/src/mcp-tools/task-tools.js",
        "sha256": "abb42c265fc282ec3b70ec63304bd2c5b0ae28a9604b912dc09a546e1867d9f4",
        "marker": "task_assign",
        "markerVerified": true
      },
      {
        "id": "CAP-MCP-terminal-tools",
        "desc": "MCP tools (5): terminal_close, terminal_create, terminal_execute, …",
        "file": "v3/@claude-flow/cli/dist/src/mcp-tools/terminal-tools.js",
        "sha256": "215225f067a826f72354973cafcecdcb52ec46c6e981918811e3d711f04553e4",
        "marker": "terminal_close",
        "markerVerified": true
      },
      {
        "id": "CAP-MCP-transfer-tools",
        "desc": "MCP tools (11): transfer_detect-pii, transfer_ipfs-resolve, transfer_plugin-featured, …",
        "file": "v3/@claude-flow/cli/dist/src/mcp-tools/transfer-tools.js",
        "sha256": "8a15f0da3ed12eb20ac47041ed21d082dec78914d690a62a8de1f72d8bec6414",
        "marker": "transfer_detect-pii",
        "markerVerified": true
      },
      {
        "id": "CAP-MCP-wasm-agent-tools",
        "desc": "MCP tools (10): wasm_agent_create, wasm_agent_export, wasm_agent_files, …",
        "file": "v3/@claude-flow/cli/dist/src/mcp-tools/wasm-agent-tools.js",
        "sha256": "d768a24ffa888f5e11e49a3b856721c618b124f36a03965a997fc50b8892e001",
        "marker": "wasm_agent_create",
        "markerVerified": true
      },
      {
        "id": "CAP-MCP-workflow-tools",
        "desc": "MCP tools (10): workflow_cancel, workflow_create, workflow_delete, …",
        "file": "v3/@claude-flow/cli/dist/src/mcp-tools/workflow-tools.js",
        "sha256": "442839dca2d6177f2567dccaf1f48306c304cbca0659c477501604289f7ad5a6",
        "marker": "workflow_cancel",
        "markerVerified": true
      },
      {
        "id": "#1795",
        "desc": "umbrella package missing cli-core dep (ERR_MODULE_NOT_FOUND)",
        "file": "package.json",
        "sha256": "f054233b90811bb2caa19c186a4b850e09b1d65912972f18982a920b73780b3b",
        "marker": "@claude-flow/cli-core",
        "markerVerified": true
      },
      {
        "id": "#1780",
        "desc": "hive-mind --mcp-config variadic prompt slurp (ENAMETOOLONG)",
        "file": "v3/@claude-flow/cli/dist/src/commands/hive-mind.js",
        "sha256": "1d54f3c7589b4e54df60846e29fbe64867f48df5467fc5f44b8bb2fb4b437ad7",
        "marker": "--mcp-config=",
        "markerVerified": true
      },
      {
        "id": "#1791.6",
        "desc": "memory init idempotent when DB exists",
        "file": "v3/@claude-flow/cli/dist/src/memory/memory-initializer.js",
        "sha256": "303808b8731937090f104d076495fbe1be43f7cc09d732c4c11f7073e5068653",
        "marker": "alreadyExists",
        "markerVerified": true
      },
      {
        "id": "#1791.7",
        "desc": "doctor walk-up .git fallback",
        "file": "v3/@claude-flow/cli/dist/src/commands/doctor.js",
        "sha256": "3f2860d1e24860dd17c395b11eb01509bacb22c549585935f7f7404686abc679",
        "marker": "is-inside-work-tree",
        "markerVerified": true
      },
      {
        "id": "#1791.2",
        "desc": "lazy-command pre-load for short flag scoping (also closes #1651)",
        "file": "v3/@claude-flow/cli/dist/src/parser.js",
        "sha256": "381b884d3902a998be261637c13ac4c890e07b165b16437b4eb064c2daaa0381",
        "marker": "isLazyOnly",
        "markerVerified": true
      },
      {
        "id": "#1791.5",
        "desc": "doctor --fix help text clarification",
        "file": "v3/@claude-flow/cli/dist/src/commands/doctor.js",
        "sha256": "3f2860d1e24860dd17c395b11eb01509bacb22c549585935f7f7404686abc679",
        "marker": "Print suggested fix commands",
        "markerVerified": true
      },
      {
        "id": "#1791.4",
        "desc": "subcommand --help renders leaf, not parent",
        "file": "v3/@claude-flow/cli/dist/src/index.js",
        "sha256": "ed6a9e9af820c26e8e40905797617628df8ea396493870779a0bc934abcfa10c",
        "marker": "commandPathOrName",
        "markerVerified": true
      },
      {
        "id": "#1791.1",
        "desc": "hive-mind task re-routed to task_create MCP tool",
        "file": "v3/@claude-flow/cli/dist/src/commands/hive-mind.js",
        "sha256": "1d54f3c7589b4e54df60846e29fbe64867f48df5467fc5f44b8bb2fb4b437ad7",
        "marker": "task_create",
        "markerVerified": true
      },
      {
        "id": "#1791.8",
        "desc": "content-hash dedupe in memory_import_claude --allProjects",
        "file": "v3/@claude-flow/cli/dist/src/mcp-tools/memory-tools.js",
        "sha256": "37d929df892035fe94a48cd43a074c9c773e9dc031ab56d9dd33cdbf21a87e39",
        "marker": "duplicatesSkipped",
        "markerVerified": true
      },
      {
        "id": "#1799",
        "desc": "orphan-swarm reconcile on swarm-state.json load (PID + TTL)",
        "file": "v3/@claude-flow/cli/dist/src/mcp-tools/swarm-tools.js",
        "sha256": "bdc3e2586e6041674dc7504993024078e7bcd9a18505d5b82110deb0e6e06503",
        "marker": "reconcileOrphanSwarms",
        "markerVerified": true
      },
      {
        "id": "#1798",
        "desc": "doctor surfaces config collision (legacy JSON + v3 YAML)",
        "file": "v3/@claude-flow/cli/dist/src/commands/doctor.js",
        "sha256": "3f2860d1e24860dd17c395b11eb01509bacb22c549585935f7f7404686abc679",
        "marker": "Config collision",
        "markerVerified": true
      },
      {
        "id": "#1810",
        "desc": "WASM gallery default Sonnet bumped 20250514 → 4-6",
        "file": "v3/@claude-flow/cli/dist/src/ruvector/agent-wasm.js",
        "sha256": "12fce07f6458aff5db210b0ba50104fa9b2dd52c85b5e9071b48c2899451c631",
        "marker": "claude-sonnet-4-6",
        "markerVerified": true
      },
      {
        "id": "#1807",
        "desc": "aidefence load: retry plain import + actionable error",
        "file": "v3/@claude-flow/cli/dist/src/mcp-tools/security-tools.js",
        "sha256": "c3888c82da9a1c3e60494b412ba0fbc605bfc6840ab77c466a2bf5854a9d84aa",
        "marker": "resolver path",
        "markerVerified": true
      },
      {
        "id": "#1686",
        "desc": "NaN-safe coercion in hooks metrics + pretrain (safeNum)",
        "file": "v3/@claude-flow/cli/dist/src/commands/hooks.js",
        "sha256": "91a793c34e0c9bac00923fefde2ec458ef5fc8d0ff73cb2ebd35d55e9e938f3f",
        "marker": "safeNum",
        "markerVerified": true
      },
      {
        "id": "#1670",
        "desc": "RuFlo Co-Authored-By trailer made opt-in",
        "file": "v3/@claude-flow/cli/dist/src/init/settings-generator.js",
        "sha256": "bba78d719e47c4cd3d56bb08112fde37624432711c02baf9b356bfd480bd837e",
        "marker": "options.attribution === true",
        "markerVerified": true
      },
      {
        "id": "#1622",
        "desc": "memory stats shows embedding provider + HNSW status",
        "file": "v3/@claude-flow/cli/dist/src/commands/memory.js",
        "sha256": "7f04b21f168c7e00b13bdb7e0811fa83140db66ea2c3b0cf396abba6af3941f5",
        "marker": "Semantic Search",
        "markerVerified": true
      },
      {
        "id": "#1574",
        "desc": "github-project-management skill: Security Considerations section",
        "file": ".claude/skills/github-project-management/SKILL.md",
        "sha256": "b03341fd433d1523e74b4f407337fefc4b319186bff02620cff89b0193d5b286",
        "marker": "Security Considerations (read first)",
        "markerVerified": true
      },
      {
        "id": "#1608",
        "desc": "bcrypt → bcryptjs (drops 6 HIGH tar CVEs)",
        "file": "v3/@claude-flow/security/dist/password-hasher.js",
        "sha256": "96b46dd1849fcae990c955dc81703aca8269b2a5d2c69f18003ba9b15bc3f1cf",
        "marker": "bcryptjs",
        "markerVerified": true
      },
      {
        "id": "#1609",
        "desc": "vitest bumped to ^4.0.16 (drops 4 moderate esbuild CVEs)",
        "file": "v3/@claude-flow/aidefence/package.json",
        "sha256": "0a9d315b4c1c74b2f86befd070c73a5651d9d1fcdd0b81c38aa2663976952483",
        "marker": "\"vitest\": \"^4.0.16\"",
        "markerVerified": true
      },
      {
        "id": "#1779",
        "desc": "init detect-and-skip when ruflo MCP already registered",
        "file": "v3/@claude-flow/cli/dist/src/init/executor.js",
        "sha256": "0c90b9b2bc582e8c872a016de085ca6faa8d837ea43f7bb15ada01d6b67a33d4",
        "marker": "detectExistingRufloMCP",
        "markerVerified": true
      },
      {
        "id": "#1463",
        "desc": "statusline detects Python test_*.py / spec_*.py",
        "file": ".claude/helpers/statusline.cjs",
        "sha256": "2e1ec6702dc5dd64c563292414c93c49257ccd26ad1f74589bb3ddb4c1c0938f",
        "marker": "startsWith('test_')",
        "markerVerified": true
      },
      {
        "id": "#1825",
        "desc": "hotfix: workspace: protocol leak in cli optionalDependencies",
        "file": "v3/@claude-flow/cli/package.json",
        "sha256": "9d8b24743c09a6f60371150207edd60a05ce393a67137c69d62e27b1d3e16c75",
        "marker": "\"@claude-flow/memory\": \"^3.0.0-alpha.14\"",
        "markerVerified": true
      },
      {
        "id": "#1834",
        "desc": "skill listing budget bumped + duplicates pruned",
        "file": ".claude/settings.json",
        "sha256": "ba278b1f9ccf8e170e4cef3748a6bcb4efc0850b7ec66d34690fec328fdabeb1",
        "marker": "skillListingBudgetFraction",
        "markerVerified": true
      },
      {
        "id": "#1867",
        "desc": "Node 26 install: better-sqlite3 dynamic import + optionalDependencies",
        "file": "v3/@claude-flow/memory/dist/sqlite-backend.js",
        "sha256": "95b39424f3d27658d5f39ac8142c40fad7d10aeb0c439bc924d44ae95e8e74b3",
        "marker": "(await import('better-sqlite3')).default",
        "markerVerified": true
      },
      {
        "id": "#1859",
        "desc": "CLI flag/positional priority swap — named flags win over stray positionals (14 sites in hooks.ts)",
        "file": "v3/@claude-flow/cli/dist/src/commands/hooks.js",
        "sha256": "91a793c34e0c9bac00923fefde2ec458ef5fc8d0ff73cb2ebd35d55e9e938f3f",
        "marker": "ctx.flags.file || ctx.args[0]",
        "markerVerified": true
      },
      {
        "id": "ADR-101-C",
        "desc": "Federation policy-engine wires claim-event + agent-handoff message types into CLAIMS_FOR_MESSAGE_TYPE (unblocked Build V3 after 3+ days of failures)",
        "file": "v3/@claude-flow/plugin-agent-federation/dist/application/policy-engine.js",
        "sha256": "0da86e495a605f2d2942934059ec73b394195f584fcbd52720a5520a724e58b1",
        "marker": "'agent-handoff': ['federation:write', 'federation:spawn']",
        "markerVerified": true
      },
      {
        "id": "#1874-mcp",
        "desc": "MCP server returns spec-compliant YYYY-MM-DD string for protocolVersion (was {major,minor,patch} object — Claude Code Zod rejected it)",
        "file": "v3/@claude-flow/mcp/dist/server.js",
        "sha256": "a3d7975956309d5257cca3203e75f558eec2e8653067977c0ecbb32016d792ee",
        "marker": "protocolVersion = '2025-11-25'",
        "markerVerified": true
      },
      {
        "id": "#1874-shared",
        "desc": "Shared MCP server returns spec-compliant YYYY-MM-DD string for protocolVersion (companion to #1874-mcp)",
        "file": "v3/@claude-flow/shared/dist/mcp/server.js",
        "sha256": "eb93091a71f7459142eee3b9803e9e435110b5fdc5ac0c7d5ee05c79fc5928d7",
        "marker": "protocolVersion = '2024-11-05'",
        "markerVerified": true
      },
      {
        "id": "ADR-097-Phase2a",
        "desc": "Federation peer state machine entity layer — FederationNode gains state field + suspend/evict/reactivate; canTransition gates all mutations; EVICTED is terminal under breaker flow",
        "file": "v3/@claude-flow/plugin-agent-federation/dist/domain/entities/federation-node.js",
        "sha256": "bc347b915de91d4bae4ec3b47ce331013fc25eb1eb60bce62516a41e282f0d10",
        "marker": "FederationNodeState.ACTIVE",
        "markerVerified": true
      },
      {
        "id": "ADR-097-Phase2b",
        "desc": "Federation breaker service — pure evaluatePolicy + stateful FederationBreakerService with bounded per-peer telemetry buffer; coordinator sendMessage gates on !peer.isActive with PEER_SUSPENDED/PEER_EVICTED constant errors (anti-oracle)",
        "file": "v3/@claude-flow/plugin-agent-federation/dist/application/federation-breaker-service.js",
        "sha256": "51baf85565e937622aeb3f688a056bde1049e48bbff2cc24b487d22ffc029af3",
        "marker": "FAILURE_RATIO_EXCEEDED",
        "markerVerified": true
      },
      {
        "id": "ADR-097-Phase2b-coordinator",
        "desc": "Coordinator outbound short-circuit on !peer.isActive (companion to ADR-097-Phase2b) — refuses sends to SUSPENDED/EVICTED peers before session lookup, no remaining-budget echo",
        "file": "v3/@claude-flow/plugin-agent-federation/dist/application/federation-coordinator.js",
        "sha256": "4ec03c4b422ce30e3a3f4aeb816b6254d43fc2bc4ad3c8c8f64baab8a0eeab7c",
        "marker": "PEER_EVICTED",
        "markerVerified": true
      },
      {
        "id": "ADR-097-Phase4-mcp",
        "desc": "Federation Phase 4 operator surface: 3 new MCP tools (federation_breaker_status, federation_evict, federation_reactivate) for inspecting and operating the per-peer circuit breaker",
        "file": "v3/@claude-flow/plugin-agent-federation/dist/mcp-tools.js",
        "sha256": "b7dfcea86fa063b9ad60dfc2fe30f31a4db3683c9ec6bef67958334b5c16f38d",
        "marker": "federation_breaker_status",
        "markerVerified": true
      },
      {
        "id": "ADR-097-Phase4-doctor",
        "desc": "ruflo doctor health-check: checkFederationBreaker probes plugin loadability + asserts FederationNodeState export presence (catches version-skew regressions where users have an older pre-Phase-2 federation plugin installed)",
        "file": "v3/@claude-flow/cli/dist/src/commands/doctor.js",
        "sha256": "3f2860d1e24860dd17c395b11eb01509bacb22c549585935f7f7404686abc679",
        "marker": "checkFederationBreaker",
        "markerVerified": true
      },
      {
        "id": "ADR-097-Phase3-upstream",
        "desc": "Federation Phase 3 upstream — coordinator.reportSpend() with SpendReporter interface + breaker fan-out + federation_report_spend MCP tool. Closes ADR-097 100% end-to-end. Event shape matches cost-tracker consumer contract verbatim (peerId, taskId, tokensUsed, usdSpent, ts, success).",
        "file": "v3/@claude-flow/plugin-agent-federation/dist/application/spend-reporter.js",
        "sha256": "3639ce837a940df28f5734056cbed029da18d8176f4065d9eb06a380f87bc0b8",
        "marker": "InMemorySpendReporter",
        "markerVerified": true
      },
      {
        "id": "ADR-104-transport",
        "desc": "Federation plugin wires real wire transport via agentic-flow/transport/loader (loadQuicTransport). plugin.ts loads transport in initialize(), binds optional listener on config.port, closes on shutdown. sendToNode now does real ws send to peer endpoint resolved via discovery.getPeer. Validated mac↔ruvultra over tailscale (150ms real send).",
        "file": "v3/@claude-flow/plugin-agent-federation/dist/plugin.js",
        "sha256": "9f751aaee838a85e7b2371bbd73dccb5cb89c6b7751496b18d33d8b8a559de19",
        "marker": "agentic-flow/transport/loader",
        "markerVerified": true
      },
      {
        "id": "ADR-109-inbound-dispatch",
        "desc": "Federation plugin subscribes to transport.onMessage (added in agentic-flow@2.0.12-fix.3) and dispatches inbound envelopes through inbound-dispatcher.ts. Security gates: PEER_UNKNOWN, PEER_SUSPENDED, PEER_EVICTED, MISSING_METADATA. Validated mac→ruvultra: 3/3 envelopes delivered, dispatcher fired, audit recorded 3 rejections.",
        "file": "v3/@claude-flow/plugin-agent-federation/dist/application/inbound-dispatcher.js",
        "sha256": "3fd86ae2f4c65a983db43569e34d28851c5377d8acd9f4aae666cf3ae09db542",
        "marker": "FEDERATION_INBOUND_EVENT_PREFIX",
        "markerVerified": true
      },
      {
        "id": "ADR-110-memory-spend-reporter",
        "desc": "Federation MemorySpendReporter — production SpendReporter that satisfies the cost-tracker consumer contract (namespace=federation-spend, key=fed-spend-<peerId>-<ts>, default TTL 7d). Storage-agnostic via injected MemoryStore interface; integrators wire ruflo memory MCP/CLI/direct.",
        "file": "v3/@claude-flow/plugin-agent-federation/dist/application/spend-reporter.js",
        "sha256": "3639ce837a940df28f5734056cbed029da18d8176f4065d9eb06a380f87bc0b8",
        "marker": "MemorySpendReporter",
        "markerVerified": true
      },
      {
        "id": "ADR-109-sig-verify",
        "desc": "Inbound dispatcher Ed25519 signature verification — closes the trust gap where sourceNodeId in metadata was a self-claim. canonicalizeEnvelopeForVerify produces deterministic signing bytes. Outbound side signs in plugin.ts sendToNode; receiver verifies against discovery's published peer.publicKey. Reject INVALID_SIGNATURE if missing or bad. Validated alpha.11.",
        "file": "v3/@claude-flow/plugin-agent-federation/dist/application/inbound-dispatcher.js",
        "sha256": "3fd86ae2f4c65a983db43569e34d28851c5377d8acd9f4aae666cf3ae09db542",
        "marker": "INVALID_SIGNATURE",
        "markerVerified": true
      },
      {
        "id": "ADR-104-compression",
        "desc": "WebSocket transport enables permessage-deflate (threshold 256B, zlib level 3, no-context-takeover both sides). Bytes-on-wire savings without latency cost — verified mac↔ruvultra at 10KB payload, p50=0ms, p95=1ms (same as 2KB baseline).",
        "file": "v3/@claude-flow/plugin-agent-federation/dist/plugin.js",
        "sha256": "9f751aaee838a85e7b2371bbd73dccb5cb89c6b7751496b18d33d8b8a559de19",
        "marker": "Ed25519 sig verify",
        "markerVerified": true
      },
      {
        "id": "ADR-107-tls-pinning",
        "desc": "agentic-flow loader supports wss:// + sha256 cert pinning (fail-closed) + CA validation. Federation plugin passes config.tls through to loadQuicTransport. Closes ADR-107 cross-tailnet TLS gap. agentic-flow@2.0.12-fix.6.",
        "file": "v3/@claude-flow/plugin-agent-federation/dist/plugin.js",
        "sha256": "9f751aaee838a85e7b2371bbd73dccb5cb89c6b7751496b18d33d8b8a559de19",
        "marker": "loadQuicTransport",
        "markerVerified": true
      },
      {
        "id": "ADR-104-stream-mux",
        "desc": "Stream multiplexing — AgentMessage.streamId, per-(address,streamId) receive queue, scoped+catch-all onMessage handlers. Cross-OS validated mac→ruvultra: 5 rpc + 3 event interleaved on wire, server's per-stream handlers received exactly 5 + 3 in correct order, catch-all saw all 8. agentic-flow@2.0.12-fix.8.",
        "file": "v3/@claude-flow/plugin-agent-federation/dist/plugin.js",
        "sha256": "9f751aaee838a85e7b2371bbd73dccb5cb89c6b7751496b18d33d8b8a559de19",
        "marker": "loadQuicTransport",
        "markerVerified": true
      },
      {
        "id": "#1883",
        "desc": "memory_import_claude resolves project memory dir via multi-candidate hash (POSIX, WSL `/mnt/<d>/`-translated, leading-dash-stripped, space-replaced) + accepts explicit projectPath override; fixes WSL→Windows-host import returning imported=0",
        "file": "v3/@claude-flow/cli/dist/src/mcp-tools/memory-tools.js",
        "sha256": "37d929df892035fe94a48cd43a074c9c773e9dc031ab56d9dd33cdbf21a87e39",
        "marker": "function resolveProjectMemoryDir",
        "markerVerified": true
      },
      {
        "id": "#1884",
        "desc": "memory_import_claude sanitizes constructed keys via sanitizeMemoryKey before storeEntry, ensuring memory_delete can later remove them; closes the write-path/read-path validation asymmetry that stranded keys with shell-metacharacter section titles",
        "file": "v3/@claude-flow/cli/dist/src/mcp-tools/memory-tools.js",
        "sha256": "37d929df892035fe94a48cd43a074c9c773e9dc031ab56d9dd33cdbf21a87e39",
        "marker": "function sanitizeMemoryKey",
        "markerVerified": true
      },
      {
        "id": "ADR-111",
        "desc": "Federation WG mesh layer (Phases 1-6) — opt-in WireGuard control plane that propagates federation breaker state to packet-layer reachability. readSafePeerWgFields validator closes peer-content injection vector found during security audit.",
        "file": "v3/@claude-flow/plugin-agent-federation/dist/domain/services/wg-mesh-service.js",
        "sha256": "b0945eb4b4b91c4f63c5bc78fa5c90f09e5031f04fb344543eee6b6b3118cc47",
        "marker": "readSafePeerWgFields",
        "markerVerified": true
      },
      {
        "id": "ADR-112",
        "desc": "MCP tool discoverability audit — every tool description must include 'Use when ... is wrong because ...' guidance so Claude picks Ruflo over native Bash/Read/Write/Task correctly. CI guard at scripts/audit-tool-descriptions.mjs gates against regressions via monotone-decreasing baseline at verification/mcp-tool-baseline.json. 285/285 tools have guidance (was 6/285 before this work).",
        "file": "scripts/audit-tool-descriptions.mjs",
        "sha256": "78db63bc21ccb548872dc53a8f2b115bcb321a401365fb055ff2f434d3213e72",
        "marker": "MIN_DESCRIPTION_LENGTH",
        "markerVerified": true
      },
      {
        "id": "#1892",
        "desc": "Statusline version no longer hardcoded to V3.5/V3.6 — reads from installed @claude-flow/cli package.json at runtime via resolveBannerVersion() so UI matches `ruflo doctor` output.",
        "file": "v3/@claude-flow/cli/.claude/helpers/statusline.js",
        "sha256": "393ecd3800f6cea1687e92afc383a6c3050dd4fb6774f2e28123f602bef807af",
        "marker": "resolveBannerVersion",
        "markerVerified": true
      },
      {
        "id": "#1889",
        "desc": "agentdb_pattern-search now has a symmetric memory-store-fallback path (tiered: semantic → substring). Previously pattern-store wrote to memory-store-fallback while pattern-search only queried ReasoningBank (always empty), so writes were silently lost. New CI smoke at plugins/ruflo-core/scripts/test-mcp-roundtrips.mjs catches the paired-tool-round-trip regression class.",
        "file": "v3/@claude-flow/cli/dist/src/mcp-tools/agentdb-tools.js",
        "sha256": "666141cf59c2e75c9f65fe50eff85076a96d820bddceaba79c0b67a4469b3bb5",
        "marker": "controller: 'memory-store-fallback'",
        "markerVerified": true
      },
      {
        "id": "#1906",
        "desc": "agent_execute model aliases (haiku/sonnet/opus/inherit) map to current Claude 4.x ids (claude-haiku-4-5-20251001 / claude-sonnet-4-6 / claude-opus-4-7) — previously stuck on claude-3-*-latest which the Anthropic API 404s. DEFAULT_ANTHROPIC_MODEL = claude-sonnet-4-6. Unit test __tests__/agent-execute-models.test.ts asserts no alias resolves to a claude-3.x id.",
        "file": "v3/@claude-flow/cli/dist/src/mcp-tools/agent-execute-core.js",
        "sha256": "2bc49c38b14d43a0329bf5d84913528851ef1c48ab32b8c8c1c40f83c062fc7f",
        "marker": "claude-sonnet-4-6",
        "markerVerified": true
      },
      {
        "id": "#1914",
        "desc": "daemon start no longer SIGTERMs daemons belonging to OTHER workspaces (ADR-014 per-workspace scope). Forked daemon argv is stamped with `--workspace <root>` (kept last) and killStaleDaemons{Posix,Windows} filter on it via daemonCommandLineBelongsToWorkspace — exact trailing match, never a path-prefix match, so `/a/proj` start can't reap `/a/proj-other`'s daemon. Pre-#1914 daemons (no stamp) are left for `daemon stop` (PID file). Unit guard __tests__/daemon-workspace-scope.test.ts.",
        "file": "v3/@claude-flow/cli/dist/src/commands/daemon.js",
        "sha256": "6b600ec62ef9a3898fd3c606c23034a10a005c0330d0dac43b29f6d2abc2ec8e",
        "marker": "daemonCommandLineBelongsToWorkspace",
        "markerVerified": true
      },
      {
        "id": "#1916",
        "desc": "agent_logs MCP tool registered (the `ruflo agent logs <id>` CLI subcommand called a tool that didn't exist → `MCP tool not found: agent_logs`). Also agent_status/agent_list/agent_logs now resolve hive-mind-spawned workers via loadAllAgents() — hive-mind_spawn writes to `.claude-flow/agents.json`, a different file from `.claude-flow/agents/store.json`, so `agent status <hive-worker-id>` returned `not_found`. (Task-execution dispatch for hive workers — #1916 items 3/4 — is a tracked follow-up.) Unit guard __tests__/agent-logs-hive-resolution.test.ts.",
        "file": "v3/@claude-flow/cli/dist/src/mcp-tools/agent-tools.js",
        "sha256": "a182a61809b5480e9eb4139ed8fa3b8e471201d338be4e086578b4e2e325302a",
        "marker": "loadAllAgents",
        "markerVerified": true
      },
      {
        "id": "#1916-guard",
        "desc": "CLI↔MCP tool coverage CI guard (scripts/audit-cli-mcp-tools.mjs) — fails if any `ruflo <cmd>` subcommand callMCPTool()s a name not registered in src/mcp-tools/*.ts. Monotone-decreasing baseline at verification/cli-mcp-tool-baseline.json — now at 0 (was 20). Wired into v3-ci.yml `tool-descriptions-audit` job (already in witness-verify needs[]).",
        "file": "scripts/audit-cli-mcp-tools.mjs",
        "sha256": "39cff77e40a0891b80e07bf0356bc5344f84579f67c383ea5b6cab2115b43b73",
        "marker": "cli-mcp-tool-baseline.json",
        "markerVerified": true
      },
      {
        "id": "#1916-cli-tools",
        "desc": "Registered the 16 MCP tools that CLI subcommands referenced but that were never wired into the registry (the `MCP tool not found` class surfaced by #1916-guard): task_retry, workflow_stop, workflow_validate, session_current/export/import, memory_detailed-stats/cleanup/compress/export/import, hive-mind_optimize-memory, hooks_teammate-idle, hooks_task-completed, mcp_start, mcp_stop — plus renamed the coverage tools `hooks/coverage-*` → `hooks_coverage-*` (now match the CLI's underscore calls) and pointed `swarm stop` at `swarm_shutdown`. cli-mcp-tool-baseline.json is now 0.",
        "file": "v3/@claude-flow/cli/dist/src/mcp-tools/workflow-tools.js",
        "sha256": "442839dca2d6177f2567dccaf1f48306c304cbca0659c477501604289f7ad5a6",
        "marker": "workflow_validate",
        "markerVerified": true
      },
      {
        "id": "#1902-#1903-guard",
        "desc": "Plugin package.json install-safety CI guard (scripts/audit-plugin-packages.mjs) — fails CI on (A) an unpublished @claude-flow/* hard dep / non-optional peer (#1903 ruvector-upstream class), (B) a bare-stable peer range that can't resolve a 3.x prerelease publish (#1902), (C) a main/module/exports path not covered by `files`, (D) post-build, a main/module/exports path that doesn't exist on disk (#1904). Wired into v3-ci.yml as `plugin-package-audit` (builds plugins first so check D is live) and added to witness-verify needs[].",
        "file": "scripts/audit-plugin-packages.mjs",
        "sha256": "a4daac5d4732d9030890e937a78963346f30f3002303429a0d0aa95ac8d5f73a",
        "marker": "KNOWN_PUBLISHED",
        "markerVerified": true
      },
      {
        "id": "#1904",
        "desc": "plugin-gastown-bridge — package.json `exports` advertised ./dist/index.mjs (+ ./formula, ./convoy subpaths) that the build never emitted, so those import specifiers 404'd in the published tarball. Fix: tsup.config.ts builds the formula/convoy entries (previously commented out), and package.json exports/main/module point at the actually-emitted .js/.cjs filenames. Validated by the plugin-package-audit CI guard (check D).",
        "file": "v3/plugins/gastown-bridge/tsup.config.ts",
        "sha256": "e8bcf68635d45764e46be0c80647781134f8f437b395b949a95e56cce717a9e3",
        "marker": "formula: 'src/formula/index.ts'",
        "markerVerified": true
      },
      {
        "id": "#1921",
        "desc": "Plugin hooks no longer do a bare `npx <pkg>@alpha hooks …` on every PreToolUse/PostToolUse/Stop fire — they invoke scripts/ruflo-hook.sh, which prefers a locally-installed `ruflo`/`claude-flow` binary, falls back to `npx --prefer-offline`, and ALWAYS exits 0 so a CLI/install crash (e.g. arborist `Invalid Version` on npm 10.8.x) never surfaces a hook error in Claude Code or wastes a cold-cache reinstall per turn. CI guard: scripts/audit-hook-commands.mjs (fails on bare-npx-without-prefer-offline / non-guarded CLI invocation) wired into v3-ci.yml `hook-command-audit` + added to witness-verify needs[].",
        "file": "scripts/audit-hook-commands.mjs",
        "sha256": "6f2702c59f1cb2438533ee4e7b2648dc2c2076334c60e5ca4dc30db5a0c99c5b",
        "marker": "NONFATAL_RE",
        "markerVerified": true
      },
      {
        "id": "#1921-shim",
        "desc": "scripts/ruflo-hook.sh — resilient invoker shipped in each plugin (.claude-plugin/, plugin/, plugins/ruflo-core/): prefers a local `ruflo`/`claude-flow` binary, else `npx --prefer-offline --yes ruflo@alpha`, always `exit 0`. stdin (hook event JSON) passes through unchanged. Companion to #1921.",
        "file": "plugins/ruflo-core/scripts/ruflo-hook.sh",
        "sha256": "08d576ea4938dbb7ac6c5072b2463ddf3299802801cf1d0110a1244ebe0868ea",
        "marker": "npx --prefer-offline --yes ruflo@alpha hooks",
        "markerVerified": true
      },
      {
        "id": "#1862",
        "desc": "ruflo-core PostToolUse hooks call documented CLI flags (-c/-s/-e, -f/-s) instead of bogus --format true. (#1921 moved the invocation behind scripts/ruflo-hook.sh — the documented-flag form is preserved.)",
        "file": "plugins/ruflo-core/hooks/hooks.json",
        "sha256": "3c99ed6c845a3ff44d4e012081307a4d2af3aaf8a1025dcdb125bff1eab2a661",
        "marker": "post-edit -f \\\"$FILE\\\" -s true",
        "markerVerified": true
      },
      {
        "id": "#1927",
        "desc": "ruflo-cost-tracker track.mjs encodeProjectPath now replaces Windows path separators (`\\`) and the drive colon (`:`), not just `/`, so `D:\\project\\Foo` encodes to `D--project-Foo` (matching Claude Code's ~/.claude/projects/<encoded-cwd>/ scheme) instead of being passed through unchanged on Windows. Behavioral CI guard: smoke.sh step 29b runs track.mjs with a Windows-style TRACK_CWD and asserts the 'looked under' path is encoded. (Also fixed smoke.sh step 8 — ADR-0001 is Accepted, not Proposed.)",
        "file": "plugins/ruflo-cost-tracker/scripts/track.mjs",
        "sha256": "acb8640bffaf15c5af37df30748f55af72c1acaaab084f68cafb3bf4da253be1",
        "marker": "#1927: Claude Code encodes",
        "markerVerified": true
      }
    ]
  },
  "integrity": {
    "manifestHashAlgo": "sha256",
    "manifestHash": "50f0f64221c9c1b2dd87a0c0c00326a788ab9714e1ad54a5e460f41f043e6a43",
    "signatureAlgo": "ed25519",
    "publicKey": "97de589f86725e38d088ce04346d179dd0bfc681fdbc65d6c8bd43e1af4b3c09",
    "signature": "ed39c195e5a99ac1852f3d2ca47837bd7d0a0cbf12bdbb28eca3b129a3591b4765ab50e156f260ebe91de3aea28cdea0a0a8cac506148669ae29473e10066604",
    "seedDerivation": "sha256(gitCommit + ':ruflo-witness/v1')"
  }
}