Created
December 22, 2025 17:31
-
-
Save konard/edadcce33a33301de8fa897ebe2c8588 to your computer and use it in GitHub Desktop.
Solution draft log for https://github.com/link-assistant/hive-mind/pull/966
This file has been truncated, but you can view the full file.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # Solve.mjs Log - 2025-12-22T17:13:20.674Z | |
| [2025-12-22T17:13:20.675Z] [INFO] 📁 Log file: /home/hive/solve-2025-12-22T17-13-20-674Z.log | |
| [2025-12-22T17:13:20.677Z] [INFO] (All output will be logged here) | |
| [2025-12-22T17:13:21.207Z] [INFO] | |
| [2025-12-22T17:13:21.208Z] [INFO] 🚀 solve v0.38.1 | |
| [2025-12-22T17:13:21.208Z] [INFO] 🔧 Raw command executed: | |
| [2025-12-22T17:13:21.209Z] [INFO] /home/hive/.nvm/versions/node/v20.19.6/bin/node /home/hive/.bun/bin/solve https://github.com/link-assistant/hive-mind/issues/962 --model opus --attach-logs --verbose --no-tool-check | |
| [2025-12-22T17:13:21.209Z] [INFO] | |
| [2025-12-22T17:13:21.223Z] [INFO] | |
| [2025-12-22T17:13:21.224Z] [WARNING] ⚠️ SECURITY WARNING: --attach-logs is ENABLED | |
| [2025-12-22T17:13:21.224Z] [INFO] | |
| [2025-12-22T17:13:21.224Z] [INFO] This option will upload the complete solution draft log file to the Pull Request. | |
| [2025-12-22T17:13:21.225Z] [INFO] The log may contain sensitive information such as: | |
| [2025-12-22T17:13:21.225Z] [INFO] • API keys, tokens, or secrets | |
| [2025-12-22T17:13:21.225Z] [INFO] • File paths and directory structures | |
| [2025-12-22T17:13:21.226Z] [INFO] • Command outputs and error messages | |
| [2025-12-22T17:13:21.226Z] [INFO] • Internal system information | |
| [2025-12-22T17:13:21.226Z] [INFO] | |
| [2025-12-22T17:13:21.226Z] [INFO] ⚠️ DO NOT use this option with public repositories or if the log | |
| [2025-12-22T17:13:21.227Z] [INFO] might contain sensitive data that should not be shared publicly. | |
| [2025-12-22T17:13:21.227Z] [INFO] | |
| [2025-12-22T17:13:21.227Z] [INFO] Continuing in 5 seconds... (Press Ctrl+C to abort) | |
| [2025-12-22T17:13:21.227Z] [INFO] | |
| [2025-12-22T17:13:26.233Z] [INFO] | |
| [2025-12-22T17:13:26.262Z] [INFO] 💾 Disk space check: 18026MB available (500MB required) ✅ | |
| [2025-12-22T17:13:26.264Z] [INFO] 🧠 Memory check: 10015MB available, swap: 2047MB (1MB used), total: 12061MB (256MB required) ✅ | |
| [2025-12-22T17:13:26.264Z] [INFO] ⏩ Skipping tool connection validation (dry-run mode or skip-tool-connection-check enabled) | |
| [2025-12-22T17:13:26.264Z] [INFO] ⏩ Skipping GitHub authentication check (dry-run mode or skip-tool-connection-check enabled) | |
| [2025-12-22T17:13:26.265Z] [INFO] 📋 URL validation: | |
| [2025-12-22T17:13:26.265Z] [INFO] Input URL: https://github.com/link-assistant/hive-mind/issues/962 | |
| [2025-12-22T17:13:26.265Z] [INFO] Is Issue URL: true | |
| [2025-12-22T17:13:26.265Z] [INFO] Is PR URL: false | |
| [2025-12-22T17:13:26.265Z] [INFO] 🔍 Checking repository access for auto-fork... | |
| [2025-12-22T17:13:26.956Z] [INFO] Repository visibility: public | |
| [2025-12-22T17:13:26.956Z] [INFO] ✅ Auto-fork: Write access detected to public repository, working directly on repository | |
| [2025-12-22T17:13:26.957Z] [INFO] 🔍 Checking repository write permissions... | |
| [2025-12-22T17:13:27.316Z] [INFO] ✅ Repository write access: Confirmed | |
| [2025-12-22T17:13:27.676Z] [INFO] Repository visibility: public | |
| [2025-12-22T17:13:27.677Z] [INFO] Auto-cleanup default: false (repository is public) | |
| [2025-12-22T17:13:27.678Z] [INFO] 🔍 Auto-continue enabled: Checking for existing PRs for issue #962... | |
| [2025-12-22T17:13:27.680Z] [INFO] 🔍 Checking for existing branches in link-assistant/hive-mind... | |
| [2025-12-22T17:13:29.242Z] [INFO] 📋 Found 1 existing branch(es) in main repo matching pattern 'issue-962-*': | |
| [2025-12-22T17:13:29.243Z] [INFO] • issue-962-2cb97d68aef3 | |
| [2025-12-22T17:13:29.792Z] [INFO] 📋 Found 10 existing PR(s) linked to issue #962 | |
| [2025-12-22T17:13:29.793Z] [INFO] PR #965: created 0h ago (OPEN, ready) | |
| [2025-12-22T17:13:29.793Z] [INFO] PR #965: Branch 'issue-964-3f15f830dfcb' doesn't match expected pattern 'issue-962-*' - skipping | |
| [2025-12-22T17:13:29.793Z] [INFO] PR #961: created 10h ago (OPEN, ready) | |
| [2025-12-22T17:13:29.793Z] [INFO] PR #961: Branch 'issue-960-4b0fdff43593' doesn't match expected pattern 'issue-962-*' - skipping | |
| [2025-12-22T17:13:29.793Z] [INFO] PR #943: created 93h ago (OPEN, ready) | |
| [2025-12-22T17:13:29.794Z] [INFO] PR #943: Branch 'issue-942-c3dae6d69844' doesn't match expected pattern 'issue-962-*' - skipping | |
| [2025-12-22T17:13:29.794Z] [INFO] PR #939: created 142h ago (OPEN, ready) | |
| [2025-12-22T17:13:29.794Z] [INFO] PR #939: Branch 'issue-936-879ade8d882b' doesn't match expected pattern 'issue-962-*' - skipping | |
| [2025-12-22T17:13:29.794Z] [INFO] PR #922: created 223h ago (OPEN, ready) | |
| [2025-12-22T17:13:29.794Z] [INFO] PR #922: Branch 'issue-921-dae79e4270c3' doesn't match expected pattern 'issue-962-*' - skipping | |
| [2025-12-22T17:13:29.794Z] [INFO] PR #920: created 259h ago (OPEN, ready) | |
| [2025-12-22T17:13:29.794Z] [INFO] PR #920: Branch 'issue-919-8739d5f38ba6' doesn't match expected pattern 'issue-962-*' - skipping | |
| [2025-12-22T17:13:29.795Z] [INFO] PR #913: created 280h ago (OPEN, ready) | |
| [2025-12-22T17:13:29.795Z] [INFO] PR #913: Branch 'issue-912-124533c036e3' doesn't match expected pattern 'issue-962-*' - skipping | |
| [2025-12-22T17:13:29.795Z] [INFO] PR #911: created 280h ago (OPEN, ready) | |
| [2025-12-22T17:13:29.795Z] [INFO] PR #911: Branch 'issue-894-5167951e80bb' doesn't match expected pattern 'issue-962-*' - skipping | |
| [2025-12-22T17:13:29.795Z] [INFO] PR #903: created 307h ago (OPEN, ready) | |
| [2025-12-22T17:13:29.795Z] [INFO] PR #903: Branch 'issue-902-1f3a16add133' doesn't match expected pattern 'issue-962-*' - skipping | |
| [2025-12-22T17:13:29.795Z] [INFO] PR #893: created 309h ago (OPEN, ready) | |
| [2025-12-22T17:13:29.796Z] [INFO] PR #893: Branch 'issue-892-cd9b9839e813' doesn't match expected pattern 'issue-962-*' - skipping | |
| [2025-12-22T17:13:29.796Z] [INFO] ⏭️ No suitable PRs found (missing CLAUDE.md or older than 24h) - creating new PR as usual | |
| [2025-12-22T17:13:29.796Z] [INFO] ✅ Using existing branch from main repo: issue-962-2cb97d68aef3 | |
| [2025-12-22T17:13:29.796Z] [INFO] Found 1 matching branch(es), selected most recent | |
| [2025-12-22T17:13:30.254Z] [INFO] Branch issue-962-2cb97d68aef3 has a MERGED PR #963 - cannot reuse | |
| [2025-12-22T17:13:30.255Z] [INFO] Will create a new branch for issue #962 | |
| [2025-12-22T17:13:30.255Z] [INFO] 📝 Issue mode: Working with issue #962 | |
| [2025-12-22T17:13:30.256Z] [INFO] | |
| Creating temporary directory: /tmp/gh-issue-solver-1766423610256 | |
| [2025-12-22T17:13:30.259Z] [INFO] | |
| 📥 Cloning repository: link-assistant/hive-mind | |
| [2025-12-22T17:13:33.212Z] [INFO] ✅ Cloned to: /tmp/gh-issue-solver-1766423610256 | |
| [2025-12-22T17:13:33.317Z] [INFO] | |
| 📌 Default branch: main | |
| [2025-12-22T17:13:33.490Z] [INFO] | |
| 🌿 Creating branch: issue-962-7502f60e53a0 from main | |
| [2025-12-22T17:13:33.505Z] [INFO] 🔍 Verifying: Branch creation... | |
| [2025-12-22T17:13:33.522Z] [INFO] ✅ Branch created: issue-962-7502f60e53a0 | |
| [2025-12-22T17:13:33.522Z] [INFO] ✅ Current branch: issue-962-7502f60e53a0 | |
| [2025-12-22T17:13:33.523Z] [INFO] Branch operation: Create new branch | |
| [2025-12-22T17:13:33.523Z] [INFO] Branch verification: Matches expected | |
| [2025-12-22T17:13:33.526Z] [INFO] | |
| 🚀 Auto PR creation: ENABLED | |
| [2025-12-22T17:13:33.527Z] [INFO] Creating: Initial commit and draft PR... | |
| [2025-12-22T17:13:33.527Z] [INFO] | |
| [2025-12-22T17:13:33.527Z] [INFO] 📝 Creating: CLAUDE.md with task details | |
| [2025-12-22T17:13:33.528Z] [INFO] Issue URL from argv['issue-url']: https://github.com/link-assistant/hive-mind/issues/962 | |
| [2025-12-22T17:13:33.529Z] [INFO] Issue URL from argv._[0]: undefined | |
| [2025-12-22T17:13:33.529Z] [INFO] Final issue URL: https://github.com/link-assistant/hive-mind/issues/962 | |
| [2025-12-22T17:13:33.530Z] [INFO] ✅ File created: CLAUDE.md | |
| [2025-12-22T17:13:33.530Z] [INFO] 📦 Adding file: To git staging | |
| [2025-12-22T17:13:33.847Z] [INFO] Git status after add: A CLAUDE.md | |
| [2025-12-22T17:13:33.848Z] [INFO] 📝 Creating commit: With CLAUDE.md file | |
| [2025-12-22T17:13:34.097Z] [INFO] ✅ Commit created: Successfully with CLAUDE.md | |
| [2025-12-22T17:13:34.098Z] [INFO] Commit output: [issue-962-7502f60e53a0 84d7852] Initial commit with task details | |
| 1 file changed, 5 insertions(+) | |
| create mode 100644 CLAUDE.md | |
| [2025-12-22T17:13:34.111Z] [INFO] Commit hash: 84d7852... | |
| [2025-12-22T17:13:34.124Z] [INFO] Latest commit: 84d7852 Initial commit with task details | |
| [2025-12-22T17:13:34.143Z] [INFO] Git status: clean | |
| [2025-12-22T17:13:34.156Z] [INFO] Remotes: origin https://github.com/link-assistant/hive-mind.git (fetch) | |
| [2025-12-22T17:13:34.170Z] [INFO] Branch info: * issue-962-7502f60e53a0 84d7852 Initial commit with task details | |
| main ca53809 [origin/main] 0.48.3 | |
| [2025-12-22T17:13:34.171Z] [INFO] 📤 Pushing branch: To remote repository... | |
| [2025-12-22T17:13:34.171Z] [INFO] Push command: git push -u origin issue-962-7502f60e53a0 | |
| [2025-12-22T17:13:35.027Z] [INFO] Push exit code: 0 | |
| [2025-12-22T17:13:35.028Z] [INFO] Push output: remote: | |
| remote: Create a pull request for 'issue-962-7502f60e53a0' on GitHub by visiting: | |
| remote: https://github.com/link-assistant/hive-mind/pull/new/issue-962-7502f60e53a0 | |
| remote: | |
| To https://github.com/link-assistant/hive-mind.git | |
| * [new branch] issue-962-7502f60e53a0 -> issue-962-7502f60e53a0 | |
| branch 'issue-962-7502f60e53a0' set up to track 'origin/issue-962-7502f60e53a0'. | |
| [2025-12-22T17:13:35.028Z] [INFO] ✅ Branch pushed: Successfully to remote | |
| [2025-12-22T17:13:35.028Z] [INFO] Push output: remote: | |
| remote: Create a pull request for 'issue-962-7502f60e53a0' on GitHub by visiting: | |
| remote: https://github.com/link-assistant/hive-mind/pull/new/issue-962-7502f60e53a0 | |
| remote: | |
| To https://github.com/link-assistant/hive-mind.git | |
| * [new branch] issue-962-7502f60e53a0 -> issue-962-7502f60e53a0 | |
| branch 'issue-962-7502f60e53a0' set up to track 'origin/issue-962-7502f60e53a0'. | |
| [2025-12-22T17:13:35.028Z] [INFO] Waiting for GitHub to sync... | |
| [2025-12-22T17:13:37.474Z] [INFO] Compare API check: 1 commit(s) ahead of main | |
| [2025-12-22T17:13:37.475Z] [INFO] GitHub compare API ready: 1 commit(s) found | |
| [2025-12-22T17:13:37.796Z] [INFO] Branch verified on GitHub: issue-962-7502f60e53a0 | |
| [2025-12-22T17:13:38.088Z] [INFO] Remote commit SHA: 84d7852... | |
| [2025-12-22T17:13:38.089Z] [INFO] 📋 Getting issue: Title from GitHub... | |
| [2025-12-22T17:13:38.460Z] [INFO] Issue title: "Error response from daemon: no matching manifest for linux/arm64/v8 in the manifest list entries: no match for platform in manifest: not found" | |
| [2025-12-22T17:13:38.461Z] [INFO] 👤 Getting user: Current GitHub account... | |
| [2025-12-22T17:13:38.806Z] [INFO] Current user: konard | |
| [2025-12-22T17:13:39.067Z] [INFO] User has collaborator access | |
| [2025-12-22T17:13:39.068Z] [INFO] User has collaborator access | |
| [2025-12-22T17:13:39.068Z] [INFO] 🔄 Fetching: Latest main branch... | |
| [2025-12-22T17:13:39.377Z] [INFO] ✅ Base updated: Fetched latest main | |
| [2025-12-22T17:13:39.377Z] [INFO] 🔍 Checking: Commits between branches... | |
| [2025-12-22T17:13:39.393Z] [INFO] Commits ahead of origin/main: 1 | |
| [2025-12-22T17:13:39.393Z] [INFO] ✅ Commits found: 1 commit(s) ahead | |
| [2025-12-22T17:13:39.394Z] [INFO] 🔀 Creating PR: Draft pull request... | |
| [2025-12-22T17:13:39.394Z] [INFO] 🎯 Target branch: main (default) | |
| [2025-12-22T17:13:39.394Z] [INFO] PR Title: [WIP] Error response from daemon: no matching manifest for linux/arm64/v8 in the manifest list entries: no match for platform in manifest: not found | |
| [2025-12-22T17:13:39.395Z] [INFO] Base branch: main | |
| [2025-12-22T17:13:39.395Z] [INFO] Head branch: issue-962-7502f60e53a0 | |
| [2025-12-22T17:13:39.396Z] [INFO] Assignee: konard | |
| [2025-12-22T17:13:39.396Z] [INFO] PR Body: | |
| ## 🤖 AI-Powered Solution Draft | |
| This pull request is being automatically generated to solve issue #962. | |
| ### 📋 Issue Reference | |
| Fixes #962 | |
| ### 🚧 Status | |
| **Work in Progress** - The AI assistant is currently analyzing and implementing the solution draft. | |
| ### 📝 Implementation Details | |
| _Details will be added as the solution draft is developed..._ | |
| --- | |
| *This PR was created automatically by the AI issue solver* | |
| [2025-12-22T17:13:39.399Z] [INFO] Command: cd "/tmp/gh-issue-solver-1766423610256" && gh pr create --draft --title "$(cat '/tmp/pr-title-1766423619398.txt')" --body-file "/tmp/pr-body-1766423619398.md" --base main --head issue-962-7502f60e53a0 --assignee konard | |
| [2025-12-22T17:13:42.339Z] [INFO] 🔍 Verifying: PR creation... | |
| [2025-12-22T17:13:42.740Z] [INFO] ✅ Verification: PR exists on GitHub | |
| [2025-12-22T17:13:42.741Z] [INFO] ✅ PR created: #966 | |
| [2025-12-22T17:13:42.741Z] [INFO] 📍 PR URL: https://github.com/link-assistant/hive-mind/pull/966 | |
| [2025-12-22T17:13:42.741Z] [INFO] 👤 Assigned to: konard | |
| [2025-12-22T17:13:42.741Z] [INFO] 🔗 Linking: Issue #962 to PR #966... | |
| [2025-12-22T17:13:43.023Z] [INFO] Issue node ID: I_kwDOPUU0qc7fuRQD | |
| [2025-12-22T17:13:43.386Z] [INFO] PR node ID: PR_kwDOPUU0qc66LqV_ | |
| [2025-12-22T17:13:43.728Z] [INFO] ✅ Link verified: Issue #962 → PR #966 | |
| [2025-12-22T17:13:44.020Z] [INFO] 👤 Current user: konard | |
| [2025-12-22T17:13:44.021Z] [INFO] | |
| 📊 Comment counting conditions: | |
| [2025-12-22T17:13:44.021Z] [INFO] prNumber: 966 | |
| [2025-12-22T17:13:44.021Z] [INFO] branchName: issue-962-7502f60e53a0 | |
| [2025-12-22T17:13:44.022Z] [INFO] isContinueMode: false | |
| [2025-12-22T17:13:44.022Z] [INFO] Will count comments: true | |
| [2025-12-22T17:13:44.022Z] [INFO] 💬 Counting comments: Checking for new comments since last commit... | |
| [2025-12-22T17:13:44.022Z] [INFO] PR #966 on branch: issue-962-7502f60e53a0 | |
| [2025-12-22T17:13:44.022Z] [INFO] Owner/Repo: link-assistant/hive-mind | |
| [2025-12-22T17:13:44.345Z] [INFO] 📅 Last commit time (from API): 2025-12-22T17:13:34.000Z | |
| [2025-12-22T17:13:45.277Z] [INFO] 💬 New PR comments: 0 | |
| [2025-12-22T17:13:45.278Z] [INFO] 💬 New issue comments: 0 | |
| [2025-12-22T17:13:45.278Z] [INFO] Total new comments: 0 | |
| [2025-12-22T17:13:45.278Z] [INFO] Comment lines to add: No (saving tokens) | |
| [2025-12-22T17:13:45.279Z] [INFO] PR review comments fetched: 0 | |
| [2025-12-22T17:13:45.279Z] [INFO] PR conversation comments fetched: 0 | |
| [2025-12-22T17:13:45.279Z] [INFO] Total PR comments checked: 0 | |
| [2025-12-22T17:13:47.817Z] [INFO] Feedback info will be added to prompt: | |
| [2025-12-22T17:13:47.818Z] [INFO] - Pull request description was edited after last commit | |
| [2025-12-22T17:13:47.818Z] [INFO] 📅 Getting timestamps: From GitHub servers... | |
| [2025-12-22T17:13:48.199Z] [INFO] 📝 Issue updated: 2025-12-22T17:12:54.000Z | |
| [2025-12-22T17:13:48.475Z] [INFO] 💬 Last comment: 2025-12-22T17:11:58.000Z | |
| [2025-12-22T17:13:48.831Z] [INFO] 🔀 Recent PR: 2025-12-22T17:13:40.000Z | |
| [2025-12-22T17:13:48.832Z] [INFO] | |
| ✅ Reference time: 2025-12-22T17:13:40.000Z | |
| [2025-12-22T17:13:48.832Z] [INFO] | |
| 🔍 Checking for uncommitted changes to include as feedback... | |
| [2025-12-22T17:13:48.850Z] [INFO] ✅ No uncommitted changes found | |
| [2025-12-22T17:13:48.854Z] [INFO] | |
| 📝 Final prompt structure: | |
| [2025-12-22T17:13:48.854Z] [INFO] Characters: 274 | |
| [2025-12-22T17:13:48.855Z] [INFO] System prompt characters: 8486 | |
| [2025-12-22T17:13:48.855Z] [INFO] Feedback info: Included | |
| [2025-12-22T17:13:48.857Z] [INFO] | |
| 🤖 Executing Claude: OPUS | |
| [2025-12-22T17:13:48.857Z] [INFO] Model: opus | |
| [2025-12-22T17:13:48.857Z] [INFO] Working directory: /tmp/gh-issue-solver-1766423610256 | |
| [2025-12-22T17:13:48.858Z] [INFO] Branch: issue-962-7502f60e53a0 | |
| [2025-12-22T17:13:48.858Z] [INFO] Prompt length: 274 chars | |
| [2025-12-22T17:13:48.858Z] [INFO] System prompt length: 8486 chars | |
| [2025-12-22T17:13:48.859Z] [INFO] Feedback info included: Yes (1 lines) | |
| [2025-12-22T17:13:48.881Z] [INFO] 📈 System resources before execution: | |
| [2025-12-22T17:13:48.881Z] [INFO] Memory: MemFree: 6847924 kB | |
| [2025-12-22T17:13:48.882Z] [INFO] Load: 0.54 0.24 0.09 1/456 587489 | |
| [2025-12-22T17:13:48.882Z] [INFO] | |
| 📝 Raw command: | |
| [2025-12-22T17:13:48.882Z] [INFO] (cd "/tmp/gh-issue-solver-1766423610256" && claude --output-format stream-json --verbose --dangerously-skip-permissions --model claude-opus-4-5-20251101 -p "Issue to solve: https://github.com/link-assistant/hive-mind/issues/962 | |
| Your prepared branch: issue-962-7502f60e53a0 | |
| Your prepared working directory: /tmp/gh-issue-solver-1766423610256 | |
| Your prepared Pull Request: https://github.com/link-assistant/hive-mind/pull/966 | |
| Proceed." --append-system-prompt "You are an AI issue solver. You prefer to find the root cause of each and every issue. When you talk, you prefer to speak with facts which you have double-checked yourself or cite sources that provide evidence, like quote actual code or give references to documents or pages found on the internet. You are polite and patient, and prefer to assume good intent, trying your best to be helpful. If you are unsure or have assumptions, you prefer to test them yourself or ask questions to clarify requirements. | |
| General guidelines. | |
| - When you execute commands, always save their logs to files for easier reading if the output becomes large. | |
| - When running commands, do not set a timeout yourself — let them run as long as needed (default timeout - 2 minutes is more than enough), and once they finish, review the logs in the file. | |
| - When running sudo commands (especially package installations like apt-get, yum, npm install, etc.), always run them in the background to avoid timeout issues and permission errors when the process needs to be killed. Use the run_in_background parameter or append & to the command. | |
| - When CI is failing or user reports failures, consider adding a detailed investigation protocol to your todo list with these steps: | |
| Step 1: List recent runs with timestamps using: gh run list --repo link-assistant/hive-mind --branch issue-962-7502f60e53a0 --limit 5 --json databaseId,conclusion,createdAt,headSha | |
| Step 2: Verify runs are after the latest commit by checking timestamps and SHA | |
| Step 3: For each non-passing run, download logs to preserve them: gh run view {run-id} --repo link-assistant/hive-mind --log > ci-logs/{workflow}-{run-id}.log | |
| Step 4: Read each downloaded log file using Read tool to understand the actual failures | |
| Step 5: Report findings with specific errors and line numbers from logs | |
| This detailed investigation is especially helpful when user mentions CI failures, asks to investigate logs, you see non-passing status, or when finalizing a PR. | |
| Note: If user says \"failing\" but tools show \"passing\", this might indicate stale data - consider downloading fresh logs and checking timestamps to resolve the discrepancy. | |
| - When a code or log file has more than 1500 lines, read it in chunks of 1500 lines. | |
| - When facing a complex problem, do as much tracing as possible and turn on all verbose modes. | |
| - When you create debug, test, or example/experiment scripts for fixing, always keep them in an examples and/or experiments folders so you can reuse them later. | |
| - When testing your assumptions, use the experiment scripts, and add it to experiments folder. | |
| - When your experiments can show real world use case of the software, add it to examples folder. | |
| - When you face something extremely hard, use divide and conquer — it always helps. | |
| Initial research. | |
| - When you start, make sure you create detailed plan for yourself and follow your todo list step by step, make sure that as many points from these guidelines are added to your todo list to keep track of everything that can help you solve the issue with highest possible quality. | |
| - When user mentions CI failures or asks to investigate logs, consider adding these todos to track the investigation: (1) List recent CI runs with timestamps, (2) Download logs from failed runs to ci-logs/ directory, (3) Analyze error messages and identify root cause, (4) Implement fix, (5) Verify fix resolves the specific errors found in logs. | |
| - When you read issue, read all details and comments thoroughly. | |
| - When you see screenshots or images in issue descriptions, pull request descriptions, comments, or discussions, use WebFetch tool (or fetch tool) to download the image first, then use Read tool to view and analyze it. | |
| - When you need issue details, use gh issue view https://github.com/link-assistant/hive-mind/issues/962. | |
| - When you need related code, use gh search code --owner link-assistant [keywords]. | |
| - When you need repo context, read files in your working directory. | |
| - When you study related work, study the most recent related pull requests. | |
| - When issue is not defined enough, write a comment to ask clarifying questions. | |
| - When accessing GitHub Gists (especially private ones), use gh gist view command instead of direct URL fetching to ensure proper authentication. | |
| - When you are fixing a bug, please make sure you first find the actual root cause, do as many experiments as needed. | |
| - When you are fixing a bug and code does not have enough tracing/logs, add them and make sure they stay in the code, but are switched off by default. | |
| - When you need latest comments on pull request (sorted newest first), use appropriate GitHub API commands. | |
| - When you need latest comments on issue (sorted newest first), use appropriate GitHub API commands. | |
| Solution development and testing. | |
| - When issue is solvable, implement code with tests. | |
| - When coding, each atomic step that can be useful by itself should be commited to the pull request's branch, meaning if work will be interrupted by any reason parts of solution will still be kept intact and safe in pull request. | |
| - When you test: | |
| start from testing of small functions using separate scripts; | |
| write unit tests with mocks for easy and quick start. | |
| - When you test integrations, use existing framework. | |
| - When you test solution draft, include automated checks in pr. | |
| - When issue is unclear, write comment on issue asking questions. | |
| - When you encounter any problems that you unable to solve yourself (any human feedback or help), write a comment to the pull request asking for help. | |
| - When you need human help, use gh pr comment 966 --body \"your message\" to comment on existing PR. | |
| Preparing pull request. | |
| - When you code, follow contributing guidelines. | |
| - When you commit, write clear message. | |
| - When you need examples of style, use gh pr list --repo link-assistant/hive-mind --state merged --search [keywords]. | |
| - When you open pr, describe solution draft and include tests. | |
| - When there is a package with version and GitHub Actions workflows for automatic release, update the version (or other necessary release trigger) in your pull request to prepare for next release. | |
| - When you update existing pr 966, use gh pr edit to modify title and description. | |
| - When you are about to commit or push code, ALWAYS run local CI checks first if they are available in contributing guidelines (like ruff check, mypy, eslint, etc.) to catch errors before pushing. | |
| - When you finalize the pull request: | |
| follow style from merged prs for code, title, and description, | |
| make sure no uncommitted changes corresponding to the original requirements are left behind, | |
| make sure the default branch is merged to the pull request's branch, | |
| make sure all CI checks passing if they exist before you finish, | |
| double-check that all changes in the pull request answer to original requirements of the issue, | |
| make sure no new new bugs are introduced in pull request by carefully reading gh pr diff, | |
| make sure no previously existing features were removed without an explicit request from users via the issue description, issue comments, and/or pull request comments. | |
| - When you finish implementation, use gh pr ready 966. | |
| Workflow and collaboration. | |
| - When you check branch, verify with git branch --show-current. | |
| - When you push, push only to branch issue-962-7502f60e53a0. | |
| - When you finish, create a pull request from branch issue-962-7502f60e53a0. (Note: PR 966 already exists, update it instead) | |
| - When you organize workflow, use pull requests instead of direct merges to default branch (main or master). | |
| - When you manage commits, preserve commit history for later analysis. | |
| - When you contribute, keep repository history forward-moving with regular commits, pushes, and reverts if needed. | |
| - When you face conflict that you cannot resolve yourself, ask for help. | |
| - When you collaborate, respect branch protections by working only on issue-962-7502f60e53a0. | |
| - When you mention result, include pull request url or comment url. | |
| - When you need to create pr, remember pr 966 already exists for this branch. | |
| Self review. | |
| - When you check your solution draft, run all tests locally. | |
| - When you compare with repo style, use gh pr diff [number]. | |
| - When you finalize, confirm code, tests, and description are consistent." | jq -c .) | |
| [2025-12-22T17:13:48.883Z] [INFO] | |
| [2025-12-22T17:13:48.883Z] [INFO] 📋 User prompt: | |
| [2025-12-22T17:13:48.883Z] [INFO] ---BEGIN USER PROMPT--- | |
| [2025-12-22T17:13:48.883Z] [INFO] Issue to solve: https://github.com/link-assistant/hive-mind/issues/962 | |
| Your prepared branch: issue-962-7502f60e53a0 | |
| Your prepared working directory: /tmp/gh-issue-solver-1766423610256 | |
| Your prepared Pull Request: https://github.com/link-assistant/hive-mind/pull/966 | |
| Proceed. | |
| [2025-12-22T17:13:48.883Z] [INFO] ---END USER PROMPT--- | |
| [2025-12-22T17:13:48.884Z] [INFO] | |
| [2025-12-22T17:13:48.884Z] [INFO] 📋 System prompt: | |
| [2025-12-22T17:13:48.884Z] [INFO] ---BEGIN SYSTEM PROMPT--- | |
| [2025-12-22T17:13:48.884Z] [INFO] You are an AI issue solver. You prefer to find the root cause of each and every issue. When you talk, you prefer to speak with facts which you have double-checked yourself or cite sources that provide evidence, like quote actual code or give references to documents or pages found on the internet. You are polite and patient, and prefer to assume good intent, trying your best to be helpful. If you are unsure or have assumptions, you prefer to test them yourself or ask questions to clarify requirements. | |
| General guidelines. | |
| - When you execute commands, always save their logs to files for easier reading if the output becomes large. | |
| - When running commands, do not set a timeout yourself — let them run as long as needed (default timeout - 2 minutes is more than enough), and once they finish, review the logs in the file. | |
| - When running sudo commands (especially package installations like apt-get, yum, npm install, etc.), always run them in the background to avoid timeout issues and permission errors when the process needs to be killed. Use the run_in_background parameter or append & to the command. | |
| - When CI is failing or user reports failures, consider adding a detailed investigation protocol to your todo list with these steps: | |
| Step 1: List recent runs with timestamps using: gh run list --repo link-assistant/hive-mind --branch issue-962-7502f60e53a0 --limit 5 --json databaseId,conclusion,createdAt,headSha | |
| Step 2: Verify runs are after the latest commit by checking timestamps and SHA | |
| Step 3: For each non-passing run, download logs to preserve them: gh run view {run-id} --repo link-assistant/hive-mind --log > ci-logs/{workflow}-{run-id}.log | |
| Step 4: Read each downloaded log file using Read tool to understand the actual failures | |
| Step 5: Report findings with specific errors and line numbers from logs | |
| This detailed investigation is especially helpful when user mentions CI failures, asks to investigate logs, you see non-passing status, or when finalizing a PR. | |
| Note: If user says "failing" but tools show "passing", this might indicate stale data - consider downloading fresh logs and checking timestamps to resolve the discrepancy. | |
| - When a code or log file has more than 1500 lines, read it in chunks of 1500 lines. | |
| - When facing a complex problem, do as much tracing as possible and turn on all verbose modes. | |
| - When you create debug, test, or example/experiment scripts for fixing, always keep them in an examples and/or experiments folders so you can reuse them later. | |
| - When testing your assumptions, use the experiment scripts, and add it to experiments folder. | |
| - When your experiments can show real world use case of the software, add it to examples folder. | |
| - When you face something extremely hard, use divide and conquer — it always helps. | |
| Initial research. | |
| - When you start, make sure you create detailed plan for yourself and follow your todo list step by step, make sure that as many points from these guidelines are added to your todo list to keep track of everything that can help you solve the issue with highest possible quality. | |
| - When user mentions CI failures or asks to investigate logs, consider adding these todos to track the investigation: (1) List recent CI runs with timestamps, (2) Download logs from failed runs to ci-logs/ directory, (3) Analyze error messages and identify root cause, (4) Implement fix, (5) Verify fix resolves the specific errors found in logs. | |
| - When you read issue, read all details and comments thoroughly. | |
| - When you see screenshots or images in issue descriptions, pull request descriptions, comments, or discussions, use WebFetch tool (or fetch tool) to download the image first, then use Read tool to view and analyze it. | |
| - When you need issue details, use gh issue view https://github.com/link-assistant/hive-mind/issues/962. | |
| - When you need related code, use gh search code --owner link-assistant [keywords]. | |
| - When you need repo context, read files in your working directory. | |
| - When you study related work, study the most recent related pull requests. | |
| - When issue is not defined enough, write a comment to ask clarifying questions. | |
| - When accessing GitHub Gists (especially private ones), use gh gist view command instead of direct URL fetching to ensure proper authentication. | |
| - When you are fixing a bug, please make sure you first find the actual root cause, do as many experiments as needed. | |
| - When you are fixing a bug and code does not have enough tracing/logs, add them and make sure they stay in the code, but are switched off by default. | |
| - When you need latest comments on pull request (sorted newest first), use appropriate GitHub API commands. | |
| - When you need latest comments on issue (sorted newest first), use appropriate GitHub API commands. | |
| Solution development and testing. | |
| - When issue is solvable, implement code with tests. | |
| - When coding, each atomic step that can be useful by itself should be commited to the pull request's branch, meaning if work will be interrupted by any reason parts of solution will still be kept intact and safe in pull request. | |
| - When you test: | |
| start from testing of small functions using separate scripts; | |
| write unit tests with mocks for easy and quick start. | |
| - When you test integrations, use existing framework. | |
| - When you test solution draft, include automated checks in pr. | |
| - When issue is unclear, write comment on issue asking questions. | |
| - When you encounter any problems that you unable to solve yourself (any human feedback or help), write a comment to the pull request asking for help. | |
| - When you need human help, use gh pr comment 966 --body "your message" to comment on existing PR. | |
| Preparing pull request. | |
| - When you code, follow contributing guidelines. | |
| - When you commit, write clear message. | |
| - When you need examples of style, use gh pr list --repo link-assistant/hive-mind --state merged --search [keywords]. | |
| - When you open pr, describe solution draft and include tests. | |
| - When there is a package with version and GitHub Actions workflows for automatic release, update the version (or other necessary release trigger) in your pull request to prepare for next release. | |
| - When you update existing pr 966, use gh pr edit to modify title and description. | |
| - When you are about to commit or push code, ALWAYS run local CI checks first if they are available in contributing guidelines (like ruff check, mypy, eslint, etc.) to catch errors before pushing. | |
| - When you finalize the pull request: | |
| follow style from merged prs for code, title, and description, | |
| make sure no uncommitted changes corresponding to the original requirements are left behind, | |
| make sure the default branch is merged to the pull request's branch, | |
| make sure all CI checks passing if they exist before you finish, | |
| double-check that all changes in the pull request answer to original requirements of the issue, | |
| make sure no new new bugs are introduced in pull request by carefully reading gh pr diff, | |
| make sure no previously existing features were removed without an explicit request from users via the issue description, issue comments, and/or pull request comments. | |
| - When you finish implementation, use gh pr ready 966. | |
| Workflow and collaboration. | |
| - When you check branch, verify with git branch --show-current. | |
| - When you push, push only to branch issue-962-7502f60e53a0. | |
| - When you finish, create a pull request from branch issue-962-7502f60e53a0. (Note: PR 966 already exists, update it instead) | |
| - When you organize workflow, use pull requests instead of direct merges to default branch (main or master). | |
| - When you manage commits, preserve commit history for later analysis. | |
| - When you contribute, keep repository history forward-moving with regular commits, pushes, and reverts if needed. | |
| - When you face conflict that you cannot resolve yourself, ask for help. | |
| - When you collaborate, respect branch protections by working only on issue-962-7502f60e53a0. | |
| - When you mention result, include pull request url or comment url. | |
| - When you need to create pr, remember pr 966 already exists for this branch. | |
| Self review. | |
| - When you check your solution draft, run all tests locally. | |
| - When you compare with repo style, use gh pr diff [number]. | |
| - When you finalize, confirm code, tests, and description are consistent. | |
| [2025-12-22T17:13:48.884Z] [INFO] ---END SYSTEM PROMPT--- | |
| [2025-12-22T17:13:48.884Z] [INFO] | |
| [2025-12-22T17:13:48.885Z] [INFO] 📋 Command details: | |
| [2025-12-22T17:13:48.885Z] [INFO] 📂 Working directory: /tmp/gh-issue-solver-1766423610256 | |
| [2025-12-22T17:13:48.885Z] [INFO] 🌿 Branch: issue-962-7502f60e53a0 | |
| [2025-12-22T17:13:48.885Z] [INFO] 🤖 Model: Claude OPUS | |
| [2025-12-22T17:13:48.885Z] [INFO] | |
| ▶️ Streaming output: | |
| [2025-12-22T17:13:51.208Z] [INFO] { | |
| "type": "system", | |
| "subtype": "init", | |
| "cwd": "/tmp/gh-issue-solver-1766423610256", | |
| "session_id": "ad16a8b2-2455-42b8-b611-73f369cef417", | |
| "tools": [ | |
| "Task", | |
| "Bash", | |
| "Glob", | |
| "Grep", | |
| "ExitPlanMode", | |
| "Read", | |
| "Edit", | |
| "Write", | |
| "NotebookEdit", | |
| "WebFetch", | |
| "TodoWrite", | |
| "WebSearch", | |
| "BashOutput", | |
| "KillShell", | |
| "Skill", | |
| "SlashCommand", | |
| "EnterPlanMode", | |
| "mcp__playwright__browser_close", | |
| "mcp__playwright__browser_resize", | |
| "mcp__playwright__browser_console_messages", | |
| "mcp__playwright__browser_handle_dialog", | |
| "mcp__playwright__browser_evaluate", | |
| "mcp__playwright__browser_file_upload", | |
| "mcp__playwright__browser_fill_form", | |
| "mcp__playwright__browser_install", | |
| "mcp__playwright__browser_press_key", | |
| "mcp__playwright__browser_type", | |
| "mcp__playwright__browser_navigate", | |
| "mcp__playwright__browser_navigate_back", | |
| "mcp__playwright__browser_network_requests", | |
| "mcp__playwright__browser_run_code", | |
| "mcp__playwright__browser_take_screenshot", | |
| "mcp__playwright__browser_snapshot", | |
| "mcp__playwright__browser_click", | |
| "mcp__playwright__browser_drag", | |
| "mcp__playwright__browser_hover", | |
| "mcp__playwright__browser_select_option", | |
| "mcp__playwright__browser_tabs", | |
| "mcp__playwright__browser_wait_for" | |
| ], | |
| "mcp_servers": [ | |
| { | |
| "name": "playwright", | |
| "status": "connected" | |
| } | |
| ], | |
| "model": "claude-opus-4-5-20251101", | |
| "permissionMode": "bypassPermissions", | |
| "slash_commands": [ | |
| "compact", | |
| "cost", | |
| "init", | |
| "pr-comments", | |
| "release-notes", | |
| "review", | |
| "security-review" | |
| ], | |
| "apiKeySource": "none", | |
| "claude_code_version": "2.0.59", | |
| "output_style": "default", | |
| "agents": [ | |
| "general-purpose", | |
| "statusline-setup", | |
| "Explore", | |
| "Plan" | |
| ], | |
| "skills": [], | |
| "plugins": [], | |
| "uuid": "95cb6be3-760a-4c68-968d-bacea47950b3" | |
| } | |
| [2025-12-22T17:13:51.209Z] [INFO] 📌 Session ID: ad16a8b2-2455-42b8-b611-73f369cef417 | |
| [2025-12-22T17:13:51.210Z] [INFO] 📁 Log renamed to: /home/hive/ad16a8b2-2455-42b8-b611-73f369cef417.log | |
| [2025-12-22T17:13:54.581Z] [INFO] { | |
| "type": "assistant", | |
| "message": { | |
| "model": "claude-opus-4-5-20251101", | |
| "id": "msg_01H3BK9jWGtd3Mmh7WCjNapE", | |
| "type": "message", | |
| "role": "assistant", | |
| "content": [ | |
| { | |
| "type": "text", | |
| "text": "I'll start by reading the issue details and understanding what needs to be solved." | |
| } | |
| ], | |
| "stop_reason": null, | |
| "stop_sequence": null, | |
| "usage": { | |
| "input_tokens": 3, | |
| "cache_creation_input_tokens": 5463, | |
| "cache_read_input_tokens": 16905, | |
| "cache_creation": { | |
| "ephemeral_5m_input_tokens": 5463, | |
| "ephemeral_1h_input_tokens": 0 | |
| }, | |
| "output_tokens": 3, | |
| "service_tier": "standard" | |
| }, | |
| "context_management": null | |
| }, | |
| "parent_tool_use_id": null, | |
| "session_id": "ad16a8b2-2455-42b8-b611-73f369cef417", | |
| "uuid": "a7549e8c-5991-468c-a8a9-cde91d817d54" | |
| } | |
| [2025-12-22T17:13:56.622Z] [INFO] { | |
| "type": "assistant", | |
| "message": { | |
| "model": "claude-opus-4-5-20251101", | |
| "id": "msg_01H3BK9jWGtd3Mmh7WCjNapE", | |
| "type": "message", | |
| "role": "assistant", | |
| "content": [ | |
| { | |
| "type": "tool_use", | |
| "id": "toolu_01XGXa7y5LfZQFgeNuxoBNGY", | |
| "name": "Bash", | |
| "input": { | |
| "command": "gh issue view https://github.com/link-assistant/hive-mind/issues/962", | |
| "description": "View issue 962 details" | |
| } | |
| } | |
| ], | |
| "stop_reason": null, | |
| "stop_sequence": null, | |
| "usage": { | |
| "input_tokens": 3, | |
| "cache_creation_input_tokens": 5463, | |
| "cache_read_input_tokens": 16905, | |
| "cache_creation": { | |
| "ephemeral_5m_input_tokens": 5463, | |
| "ephemeral_1h_input_tokens": 0 | |
| }, | |
| "output_tokens": 3, | |
| "service_tier": "standard" | |
| }, | |
| "context_management": null | |
| }, | |
| "parent_tool_use_id": null, | |
| "session_id": "ad16a8b2-2455-42b8-b611-73f369cef417", | |
| "uuid": "3e2197d5-61e6-4152-b855-e8041edd93ac" | |
| } | |
| [2025-12-22T17:13:58.508Z] [INFO] { | |
| "type": "assistant", | |
| "message": { | |
| "model": "claude-opus-4-5-20251101", | |
| "id": "msg_01H3BK9jWGtd3Mmh7WCjNapE", | |
| "type": "message", | |
| "role": "assistant", | |
| "content": [ | |
| { | |
| "type": "tool_use", | |
| "id": "toolu_01WvssfPc59ZdJ3UDhAECNzC", | |
| "name": "Bash", | |
| "input": { | |
| "command": "gh pr view 966 --repo link-assistant/hive-mind", | |
| "description": "View current PR 966 details" | |
| } | |
| } | |
| ], | |
| "stop_reason": null, | |
| "stop_sequence": null, | |
| "usage": { | |
| "input_tokens": 3, | |
| "cache_creation_input_tokens": 5463, | |
| "cache_read_input_tokens": 16905, | |
| "cache_creation": { | |
| "ephemeral_5m_input_tokens": 5463, | |
| "ephemeral_1h_input_tokens": 0 | |
| }, | |
| "output_tokens": 3, | |
| "service_tier": "standard" | |
| }, | |
| "context_management": null | |
| }, | |
| "parent_tool_use_id": null, | |
| "session_id": "ad16a8b2-2455-42b8-b611-73f369cef417", | |
| "uuid": "3779ad9e-410a-4b64-88d5-c36a1caabd4f" | |
| } | |
| [2025-12-22T17:14:00.370Z] [INFO] { | |
| "type": "user", | |
| "message": { | |
| "role": "user", | |
| "content": [ | |
| { | |
| "tool_use_id": "toolu_01XGXa7y5LfZQFgeNuxoBNGY", | |
| "type": "tool_result", | |
| "content": "title:\tError response from daemon: no matching manifest for linux/arm64/v8 in the manifest list entries: no match for platform in manifest: not found\nstate:\tOPEN\nauthor:\tkonard\nlabels:\tbug, documentation, question\ncomments:\t1\nassignees:\t\nprojects:\t\nmilestone:\t\nnumber:\t962\n--\nTrying to install our docker image locally on macOS, and I get error:\n\n```\nkonard@MacBook-Pro-Konstantin ~ % docker pull konard/hive-mind:latest\nError response from daemon: no matching manifest for linux/arm64/v8 in the manifest list entries: no match for platform in manifest: not found\nkonard@MacBook-Pro-Konstantin ~ % \n```\n\nIs it a bug in or code, or on my system?\n\nPlease download all logs and data related about the issue to this repository, make sure we compile that data to `./docs/case-studies/issue-{id}` folder, and use it to do deep case study analysis (also make sure to search online for additional facts and data), in which we will reconstruct timeline/sequence of events, find root causes of the problem, and propose possible solutions.", | |
| "is_error": false | |
| } | |
| ] | |
| }, | |
| "parent_tool_use_id": null, | |
| "session_id": "ad16a8b2-2455-42b8-b611-73f369cef417", | |
| "uuid": "2c7ea56c-50a6-4167-b271-3bd4ed2a8bf7", | |
| "tool_use_result": { | |
| "stdout": "title:\tError response from daemon: no matching manifest for linux/arm64/v8 in the manifest list entries: no match for platform in manifest: not found\nstate:\tOPEN\nauthor:\tkonard\nlabels:\tbug, documentation, question\ncomments:\t1\nassignees:\t\nprojects:\t\nmilestone:\t\nnumber:\t962\n--\nTrying to install our docker image locally on macOS, and I get error:\n\n```\nkonard@MacBook-Pro-Konstantin ~ % docker pull konard/hive-mind:latest\nError response from daemon: no matching manifest for linux/arm64/v8 in the manifest list entries: no match for platform in manifest: not found\nkonard@MacBook-Pro-Konstantin ~ % \n```\n\nIs it a bug in or code, or on my system?\n\nPlease download all logs and data related about the issue to this repository, make sure we compile that data to `./docs/case-studies/issue-{id}` folder, and use it to do deep case study analysis (also make sure to search online for additional facts and data), in which we will reconstruct timeline/sequence of events, find root causes of the problem, and propose possible solutions.", | |
| "stderr": "", | |
| "interrupted": false, | |
| "isImage": false | |
| } | |
| } | |
| [2025-12-22T17:14:02.126Z] [INFO] { | |
| "type": "user", | |
| "message": { | |
| "role": "user", | |
| "content": [ | |
| { | |
| "tool_use_id": "toolu_01WvssfPc59ZdJ3UDhAECNzC", | |
| "type": "tool_result", | |
| "content": "title:\t[WIP] Error response from daemon: no matching manifest for linux/arm64/v8 in the manifest list entries: no match for platform in manifest: not found\nstate:\tDRAFT\nauthor:\tkonard\nlabels:\t\nassignees:\tkonard\nreviewers:\t\nprojects:\t\nmilestone:\t\nnumber:\t966\nurl:\thttps://github.com/link-assistant/hive-mind/pull/966\nadditions:\t5\ndeletions:\t0\nauto-merge:\tdisabled\n--\n## 🤖 AI-Powered Solution Draft\n\nThis pull request is being automatically generated to solve issue #962.\n\n### 📋 Issue Reference\nFixes #962\n\n### 🚧 Status\n**Work in Progress** - The AI assistant is currently analyzing and implementing the solution draft.\n\n### 📝 Implementation Details\n_Details will be added as the solution draft is developed..._\n\n---\n*This PR was created automatically by the AI issue solver*", | |
| "is_error": false | |
| } | |
| ] | |
| }, | |
| "parent_tool_use_id": null, | |
| "session_id": "ad16a8b2-2455-42b8-b611-73f369cef417", | |
| "uuid": "25b0678e-5c25-4b03-a2fa-909374d73720", | |
| "tool_use_result": { | |
| "stdout": "title:\t[WIP] Error response from daemon: no matching manifest for linux/arm64/v8 in the manifest list entries: no match for platform in manifest: not found\nstate:\tDRAFT\nauthor:\tkonard\nlabels:\t\nassignees:\tkonard\nreviewers:\t\nprojects:\t\nmilestone:\t\nnumber:\t966\nurl:\thttps://github.com/link-assistant/hive-mind/pull/966\nadditions:\t5\ndeletions:\t0\nauto-merge:\tdisabled\n--\n## 🤖 AI-Powered Solution Draft\n\nThis pull request is being automatically generated to solve issue #962.\n\n### 📋 Issue Reference\nFixes #962\n\n### 🚧 Status\n**Work in Progress** - The AI assistant is currently analyzing and implementing the solution draft.\n\n### 📝 Implementation Details\n_Details will be added as the solution draft is developed..._\n\n---\n*This PR was created automatically by the AI issue solver*", | |
| "stderr": "", | |
| "interrupted": false, | |
| "isImage": false | |
| } | |
| } | |
| [2025-12-22T17:14:04.906Z] [INFO] { | |
| "type": "assistant", | |
| "message": { | |
| "model": "claude-opus-4-5-20251101", | |
| "id": "msg_01N7Rt9qwdCDqc6DeDjt8ceD", | |
| "type": "message", | |
| "role": "assistant", | |
| "content": [ | |
| { | |
| "type": "text", | |
| "text": "Now let me get the comments on the issue and understand more context:" | |
| } | |
| ], | |
| "stop_reason": null, | |
| "stop_sequence": null, | |
| "usage": { | |
| "input_tokens": 1, | |
| "cache_creation_input_tokens": 744, | |
| "cache_read_input_tokens": 22368, | |
| "cache_creation": { | |
| "ephemeral_5m_input_tokens": 744, | |
| "ephemeral_1h_input_tokens": 0 | |
| }, | |
| "output_tokens": 4, | |
| "service_tier": "standard" | |
| }, | |
| "context_management": null | |
| }, | |
| "parent_tool_use_id": null, | |
| "session_id": "ad16a8b2-2455-42b8-b611-73f369cef417", | |
| "uuid": "8f015b84-7382-4aa2-b5fe-08fbe8ac569a" | |
| } | |
| [2025-12-22T17:14:06.308Z] [INFO] { | |
| "type": "assistant", | |
| "message": { | |
| "model": "claude-opus-4-5-20251101", | |
| "id": "msg_01N7Rt9qwdCDqc6DeDjt8ceD", | |
| "type": "message", | |
| "role": "assistant", | |
| "content": [ | |
| { | |
| "type": "tool_use", | |
| "id": "toolu_01QhQyESRMKgyiEFPvT6LDu8", | |
| "name": "Bash", | |
| "input": { | |
| "command": "gh api repos/link-assistant/hive-mind/issues/962/comments --jq '.[] | {user: .user.login, created_at: .created_at, body: .body}'", | |
| "description": "Get issue comments" | |
| } | |
| } | |
| ], | |
| "stop_reason": null, | |
| "stop_sequence": null, | |
| "usage": { | |
| "input_tokens": 1, | |
| "cache_creation_input_tokens": 744, | |
| "cache_read_input_tokens": 22368, | |
| "cache_creation": { | |
| "ephemeral_5m_input_tokens": 744, | |
| "ephemeral_1h_input_tokens": 0 | |
| }, | |
| "output_tokens": 4, | |
| "service_tier": "standard" | |
| }, | |
| "context_management": null | |
| }, | |
| "parent_tool_use_id": null, | |
| "session_id": "ad16a8b2-2455-42b8-b611-73f369cef417", | |
| "uuid": "b66db19d-68fc-41a3-ae27-973ddf53304e" | |
| } | |
| [2025-12-22T17:14:07.077Z] [INFO] { | |
| "type": "assistant", | |
| "message": { | |
| "model": "claude-opus-4-5-20251101", | |
| "id": "msg_01N7Rt9qwdCDqc6DeDjt8ceD", | |
| "type": "message", | |
| "role": "assistant", | |
| "content": [ | |
| { | |
| "type": "tool_use", | |
| "id": "toolu_012MPHQnhMH6cN4wtuFrCofM", | |
| "name": "Bash", | |
| "input": { | |
| "command": "ls -la", | |
| "description": "List working directory contents" | |
| } | |
| } | |
| ], | |
| "stop_reason": null, | |
| "stop_sequence": null, | |
| "usage": { | |
| "input_tokens": 1, | |
| "cache_creation_input_tokens": 744, | |
| "cache_read_input_tokens": 22368, | |
| "cache_creation": { | |
| "ephemeral_5m_input_tokens": 744, | |
| "ephemeral_1h_input_tokens": 0 | |
| }, | |
| "output_tokens": 4, | |
| "service_tier": "standard" | |
| }, | |
| "context_management": null | |
| }, | |
| "parent_tool_use_id": null, | |
| "session_id": "ad16a8b2-2455-42b8-b611-73f369cef417", | |
| "uuid": "bf40d128-066c-474f-83bc-a70567a1e40a" | |
| } | |
| [2025-12-22T17:14:08.363Z] [INFO] { | |
| "type": "user", | |
| "message": { | |
| "role": "user", | |
| "content": [ | |
| { | |
| "tool_use_id": "toolu_01QhQyESRMKgyiEFPvT6LDu8", | |
| "type": "tool_result", | |
| "content": "{\"body\":\"See screenshot:\\n\\n\\u003cimg width=\\\"1824\\\" height=\\\"1092\\\" alt=\\\"Image\\\" src=\\\"https://github.com/user-attachments/assets/d5f55310-8458-49b9-8769-8a4867c4eb25\\\" /\\u003e\\n\\n```\\nLast login: Mon Dec 22 21:12:12 on ttys009\\nkonard@MacBook-Pro-Konstantin ~ % docker pull konard/hive-mind:latest\\nError response from daemon: no matching manifest for linux/arm64/v8 in the manifest list entries: no match for platform in manifest: not found\\nkonard@MacBook-Pro-Konstantin ~ % \\n```\\n\\nWe still get the same issue, looks like after updates or before them our CI/CD stopped working, and publishing to docker hub is not working without any obvious fails.\\n\\nPlease download all logs and data related about the issue to this repository, make sure we compile that data to `./docs/case-studies/issue-{id}` folder, and use it to do deep case study analysis (also make sure to search online for additional facts and data), in which we will reconstruct timeline/sequence of events, find root causes of the problem, and propose possible solutions.\",\"created_at\":\"2025-12-22T17:11:58Z\",\"user\":\"konard\"}", | |
| "is_error": false | |
| } | |
| ] | |
| }, | |
| "parent_tool_use_id": null, | |
| "session_id": "ad16a8b2-2455-42b8-b611-73f369cef417", | |
| "uuid": "1292504e-ff60-4c32-850e-3c315b6cb537", | |
| "tool_use_result": { | |
| "stdout": "{\"body\":\"See screenshot:\\n\\n\\u003cimg width=\\\"1824\\\" height=\\\"1092\\\" alt=\\\"Image\\\" src=\\\"https://github.com/user-attachments/assets/d5f55310-8458-49b9-8769-8a4867c4eb25\\\" /\\u003e\\n\\n```\\nLast login: Mon Dec 22 21:12:12 on ttys009\\nkonard@MacBook-Pro-Konstantin ~ % docker pull konard/hive-mind:latest\\nError response from daemon: no matching manifest for linux/arm64/v8 in the manifest list entries: no match for platform in manifest: not found\\nkonard@MacBook-Pro-Konstantin ~ % \\n```\\n\\nWe still get the same issue, looks like after updates or before them our CI/CD stopped working, and publishing to docker hub is not working without any obvious fails.\\n\\nPlease download all logs and data related about the issue to this repository, make sure we compile that data to `./docs/case-studies/issue-{id}` folder, and use it to do deep case study analysis (also make sure to search online for additional facts and data), in which we will reconstruct timeline/sequence of events, find root causes of the problem, and propose possible solutions.\",\"created_at\":\"2025-12-22T17:11:58Z\",\"user\":\"konard\"}", | |
| "stderr": "", | |
| "interrupted": false, | |
| "isImage": false | |
| } | |
| } | |
| [2025-12-22T17:14:08.445Z] [INFO] { | |
| "type": "user", | |
| "message": { | |
| "role": "user", | |
| "content": [ | |
| { | |
| "tool_use_id": "toolu_012MPHQnhMH6cN4wtuFrCofM", | |
| "type": "tool_result", | |
| "content": "total 752\ndrwxrwxr-x 14 hive hive 4096 Dec 22 18:13 .\ndrwxrwxrwt 165 root root 380928 Dec 22 18:14 ..\ndrwxrwxr-x 2 hive hive 4096 Dec 22 18:13 .changeset\n-rw-rw-r-- 1 hive hive 526 Dec 22 18:13 .dockerignore\n-rw-rw-r-- 1 hive hive 997 Dec 22 18:13 .env.example\ndrwxrwxr-x 8 hive hive 4096 Dec 22 18:13 .git\ndrwxrwxr-x 3 hive hive 4096 Dec 22 18:13 .github\n-rw-rw-r-- 1 hive hive 2285 Dec 22 18:13 .gitignore\n-rw-rw-r-- 1 hive hive 878 Dec 22 18:13 .gitpod.Dockerfile\n-rw-rw-r-- 1 hive hive 119 Dec 22 18:13 .gitpod.yml\ndrwxrwxr-x 2 hive hive 4096 Dec 22 18:13 .husky\n-rw-rw-r-- 1 hive hive 1115 Dec 22 18:13 .lenv.example\n-rw-rw-r-- 1 hive hive 407 Dec 22 18:13 .prettierignore\n-rw-rw-r-- 1 hive hive 153 Dec 22 18:13 .prettierrc\n-rw-rw-r-- 1 hive hive 16037 Dec 22 18:13 CHANGELOG.md\n-rw-rw-r-- 1 hive hive 193 Dec 22 18:13 CLAUDE.md\n-rw-rw-r-- 1 hive hive 1680 Dec 22 18:13 Dockerfile\n-rw-rw-r-- 1 hive hive 1211 Dec 22 18:13 LICENSE\n-rw-rw-r-- 1 hive hive 28803 Dec 22 18:13 README.md\n-rwxrwxr-x 1 hive hive 4650 Dec 22 18:13 claude-runtime.mjs\n-rwxrwxr-x 1 hive hive 10464 Dec 22 18:13 cleanup-test-repos.mjs\ndrwxrwxr-x 2 hive hive 4096 Dec 22 18:13 coolify\n-rwxrwxr-x 1 hive hive 15513 Dec 22 18:13 create-test-repo.mjs\n-rw-rw-r-- 1 hive hive 78 Dec 22 18:13 cspell.json\ndrwxrwxr-x 3 hive hive 4096 Dec 22 18:13 data\n-rwxrwxr-x 1 hive hive 1176 Dec 22 18:13 do.mjs\n-rw-rw-r-- 1 hive hive 889 Dec 22 18:13 docker-compose.yml\n-rwxrwxr-x 1 hive hive 2529 Dec 22 18:13 docker-restore-auth.sh\n-rwxrwxr-x 1 hive hive 1828 Dec 22 18:13 docker-solve.sh\ndrwxrwxr-x 4 hive hive 4096 Dec 22 18:13 docs\n-rw-rw-r-- 1 hive hive 1520 Dec 22 18:13 eslint.config.mjs\ndrwxrwxr-x 3 hive hive 24576 Dec 22 18:13 experiments\n-rwxrwxr-x 1 hive hive 745 Dec 22 18:13 gitpod-backup-auth.sh\n-rwxrwxr-x 1 hive hive 1020 Dec 22 18:13 gitpod-restore-auth.sh\ndrwxrwxr-x 3 hive hive 4096 Dec 22 18:13 helm\n-rw-rw-r-- 1 hive hive 141056 Dec 22 18:13 package-lock.json\n-rw-rw-r-- 1 hive hive 1950 Dec 22 18:13 package.json\ndrwxrwxr-x 2 hive hive 4096 Dec 22 18:13 scripts\ndrwxrwxr-x 3 hive hive 4096 Dec 22 18:13 src\ndrwxrwxr-x 2 hive hive 4096 Dec 22 18:13 tests", | |
| "is_error": false | |
| } | |
| ] | |
| }, | |
| "parent_tool_use_id": null, | |
| "session_id": "ad16a8b2-2455-42b8-b611-73f369cef417", | |
| "uuid": "a6100baf-b28f-4bb6-bbc9-d38e7e7c616f", | |
| "tool_use_result": { | |
| "stdout": "total 752\ndrwxrwxr-x 14 hive hive 4096 Dec 22 18:13 .\ndrwxrwxrwt 165 root root 380928 Dec 22 18:14 ..\ndrwxrwxr-x 2 hive hive 4096 Dec 22 18:13 .changeset\n-rw-rw-r-- 1 hive hive 526 Dec 22 18:13 .dockerignore\n-rw-rw-r-- 1 hive hive 997 Dec 22 18:13 .env.example\ndrwxrwxr-x 8 hive hive 4096 Dec 22 18:13 .git\ndrwxrwxr-x 3 hive hive 4096 Dec 22 18:13 .github\n-rw-rw-r-- 1 hive hive 2285 Dec 22 18:13 .gitignore\n-rw-rw-r-- 1 hive hive 878 Dec 22 18:13 .gitpod.Dockerfile\n-rw-rw-r-- 1 hive hive 119 Dec 22 18:13 .gitpod.yml\ndrwxrwxr-x 2 hive hive 4096 Dec 22 18:13 .husky\n-rw-rw-r-- 1 hive hive 1115 Dec 22 18:13 .lenv.example\n-rw-rw-r-- 1 hive hive 407 Dec 22 18:13 .prettierignore\n-rw-rw-r-- 1 hive hive 153 Dec 22 18:13 .prettierrc\n-rw-rw-r-- 1 hive hive 16037 Dec 22 18:13 CHANGELOG.md\n-rw-rw-r-- 1 hive hive 193 Dec 22 18:13 CLAUDE.md\n-rw-rw-r-- 1 hive hive 1680 Dec 22 18:13 Dockerfile\n-rw-rw-r-- 1 hive hive 1211 Dec 22 18:13 LICENSE\n-rw-rw-r-- 1 hive hive 28803 Dec 22 18:13 README.md\n-rwxrwxr-x 1 hive hive 4650 Dec 22 18:13 claude-runtime.mjs\n-rwxrwxr-x 1 hive hive 10464 Dec 22 18:13 cleanup-test-repos.mjs\ndrwxrwxr-x 2 hive hive 4096 Dec 22 18:13 coolify\n-rwxrwxr-x 1 hive hive 15513 Dec 22 18:13 create-test-repo.mjs\n-rw-rw-r-- 1 hive hive 78 Dec 22 18:13 cspell.json\ndrwxrwxr-x 3 hive hive 4096 Dec 22 18:13 data\n-rwxrwxr-x 1 hive hive 1176 Dec 22 18:13 do.mjs\n-rw-rw-r-- 1 hive hive 889 Dec 22 18:13 docker-compose.yml\n-rwxrwxr-x 1 hive hive 2529 Dec 22 18:13 docker-restore-auth.sh\n-rwxrwxr-x 1 hive hive 1828 Dec 22 18:13 docker-solve.sh\ndrwxrwxr-x 4 hive hive 4096 Dec 22 18:13 docs\n-rw-rw-r-- 1 hive hive 1520 Dec 22 18:13 eslint.config.mjs\ndrwxrwxr-x 3 hive hive 24576 Dec 22 18:13 experiments\n-rwxrwxr-x 1 hive hive 745 Dec 22 18:13 gitpod-backup-auth.sh\n-rwxrwxr-x 1 hive hive 1020 Dec 22 18:13 gitpod-restore-auth.sh\ndrwxrwxr-x 3 hive hive 4096 Dec 22 18:13 helm\n-rw-rw-r-- 1 hive hive 141056 Dec 22 18:13 package-lock.json\n-rw-rw-r-- 1 hive hive 1950 Dec 22 18:13 package.json\ndrwxrwxr-x 2 hive hive 4096 Dec 22 18:13 scripts\ndrwxrwxr-x 3 hive hive 4096 Dec 22 18:13 src\ndrwxrwxr-x 2 hive hive 4096 Dec 22 18:13 tests", | |
| "stderr": "", | |
| "interrupted": false, | |
| "isImage": false | |
| } | |
| } | |
| [2025-12-22T17:14:11.427Z] [INFO] { | |
| "type": "assistant", | |
| "message": { | |
| "model": "claude-opus-4-5-20251101", | |
| "id": "msg_01XUmcHiTLuFLbEKaJSZaKZw", | |
| "type": "message", | |
| "role": "assistant", | |
| "content": [ | |
| { | |
| "type": "text", | |
| "text": "Let me create a detailed todo list to track the investigation and solution:" | |
| } | |
| ], | |
| "stop_reason": null, | |
| "stop_sequence": null, | |
| "usage": { | |
| "input_tokens": 1, | |
| "cache_creation_input_tokens": 1880, | |
| "cache_read_input_tokens": 23112, | |
| "cache_creation": { | |
| "ephemeral_5m_input_tokens": 1880, | |
| "ephemeral_1h_input_tokens": 0 | |
| }, | |
| "output_tokens": 3, | |
| "service_tier": "standard" | |
| }, | |
| "context_management": null | |
| }, | |
| "parent_tool_use_id": null, | |
| "session_id": "ad16a8b2-2455-42b8-b611-73f369cef417", | |
| "uuid": "58e20821-f093-41a0-9ff3-dea181af172e" | |
| } | |
| [2025-12-22T17:14:17.135Z] [INFO] { | |
| "type": "assistant", | |
| "message": { | |
| "model": "claude-opus-4-5-20251101", | |
| "id": "msg_01XUmcHiTLuFLbEKaJSZaKZw", | |
| "type": "message", | |
| "role": "assistant", | |
| "content": [ | |
| { | |
| "type": "tool_use", | |
| "id": "toolu_015pEuwESXwEcUbojh4zSWfF", | |
| "name": "TodoWrite", | |
| "input": { | |
| "todos": [ | |
| { | |
| "content": "Download and analyze screenshot from issue comment", | |
| "status": "in_progress", | |
| "activeForm": "Downloading and analyzing screenshot from issue comment" | |
| }, | |
| { | |
| "content": "Study GitHub Actions workflows for Docker publishing", | |
| "status": "pending", | |
| "activeForm": "Studying GitHub Actions workflows for Docker publishing" | |
| }, | |
| { | |
| "content": "List recent CI runs with timestamps and check for failures", | |
| "status": "pending", | |
| "activeForm": "Listing recent CI runs with timestamps" | |
| }, | |
| { | |
| "content": "Download logs from relevant CI runs to ci-logs directory", | |
| "status": "pending", | |
| "activeForm": "Downloading logs from CI runs" | |
| }, | |
| { | |
| "content": "Check Docker Hub manifest for konard/hive-mind image", | |
| "status": "pending", | |
| "activeForm": "Checking Docker Hub manifest" | |
| }, | |
| { | |
| "content": "Research online for linux/arm64/v8 manifest error causes", | |
| "status": "pending", | |
| "activeForm": "Researching online for error causes" | |
| }, | |
| { | |
| "content": "Create case study folder structure in docs/case-studies/issue-962", | |
| "status": "pending", | |
| "activeForm": "Creating case study folder structure" | |
| }, | |
| { | |
| "content": "Compile timeline and sequence of events", | |
| "status": "pending", | |
| "activeForm": "Compiling timeline and sequence of events" | |
| }, | |
| { | |
| "content": "Identify root cause of the problem", | |
| "status": "pending", | |
| "activeForm": "Identifying root cause" | |
| }, | |
| { | |
| "content": "Propose and implement solutions", | |
| "status": "pending", | |
| "activeForm": "Proposing and implementing solutions" | |
| }, | |
| { | |
| "content": "Update PR with complete case study and fix", | |
| "status": "pending", | |
| "activeForm": "Updating PR with case study and fix" | |
| } | |
| ] | |
| } | |
| } | |
| ], | |
| "stop_reason": "tool_use", | |
| "stop_sequence": null, | |
| "usage": { | |
| "input_tokens": 1, | |
| "cache_creation_input_tokens": 1880, | |
| "cache_read_input_tokens": 23112, | |
| "cache_creation": { | |
| "ephemeral_5m_input_tokens": 1880, | |
| "ephemeral_1h_input_tokens": 0 | |
| }, | |
| "output_tokens": 456, | |
| "service_tier": "standard" | |
| }, | |
| "context_management": null | |
| }, | |
| "parent_tool_use_id": null, | |
| "session_id": "ad16a8b2-2455-42b8-b611-73f369cef417", | |
| "uuid": "f3ab1d72-0b91-445c-9812-ca0a08fe3cb8" | |
| } | |
| [2025-12-22T17:14:17.160Z] [INFO] { | |
| "type": "user", | |
| "message": { | |
| "role": "user", | |
| "content": [ | |
| { | |
| "tool_use_id": "toolu_015pEuwESXwEcUbojh4zSWfF", | |
| "type": "tool_result", | |
| "content": "Todos have been modified successfully. Ensure that you continue to use the todo list to track your progress. Please proceed with the current tasks if applicable" | |
| } | |
| ] | |
| }, | |
| "parent_tool_use_id": null, | |
| "session_id": "ad16a8b2-2455-42b8-b611-73f369cef417", | |
| "uuid": "371fb154-d026-43d7-9e59-2df2168c51f6", | |
| "tool_use_result": { | |
| "oldTodos": [], | |
| "newTodos": [ | |
| { | |
| "content": "Download and analyze screenshot from issue comment", | |
| "status": "in_progress", | |
| "activeForm": "Downloading and analyzing screenshot from issue comment" | |
| }, | |
| { | |
| "content": "Study GitHub Actions workflows for Docker publishing", | |
| "status": "pending", | |
| "activeForm": "Studying GitHub Actions workflows for Docker publishing" | |
| }, | |
| { | |
| "content": "List recent CI runs with timestamps and check for failures", | |
| "status": "pending", | |
| "activeForm": "Listing recent CI runs with timestamps" | |
| }, | |
| { | |
| "content": "Download logs from relevant CI runs to ci-logs directory", | |
| "status": "pending", | |
| "activeForm": "Downloading logs from CI runs" | |
| }, | |
| { | |
| "content": "Check Docker Hub manifest for konard/hive-mind image", | |
| "status": "pending", | |
| "activeForm": "Checking Docker Hub manifest" | |
| }, | |
| { | |
| "content": "Research online for linux/arm64/v8 manifest error causes", | |
| "status": "pending", | |
| "activeForm": "Researching online for error causes" | |
| }, | |
| { | |
| "content": "Create case study folder structure in docs/case-studies/issue-962", | |
| "status": "pending", | |
| "activeForm": "Creating case study folder structure" | |
| }, | |
| { | |
| "content": "Compile timeline and sequence of events", | |
| "status": "pending", | |
| "activeForm": "Compiling timeline and sequence of events" | |
| }, | |
| { | |
| "content": "Identify root cause of the problem", | |
| "status": "pending", | |
| "activeForm": "Identifying root cause" | |
| }, | |
| { | |
| "content": "Propose and implement solutions", | |
| "status": "pending", | |
| "activeForm": "Proposing and implementing solutions" | |
| }, | |
| { | |
| "content": "Update PR with complete case study and fix", | |
| "status": "pending", | |
| "activeForm": "Updating PR with case study and fix" | |
| } | |
| ] | |
| } | |
| } | |
| [2025-12-22T17:14:20.072Z] [INFO] { | |
| "type": "assistant", | |
| "message": { | |
| "model": "claude-opus-4-5-20251101", | |
| "id": "msg_01EXZAxveB9hZtGoQwyBQqkK", | |
| "type": "message", | |
| "role": "assistant", | |
| "content": [ | |
| { | |
| "type": "text", | |
| "text": "Let me download the screenshot from the issue comment and explore the GitHub Actions workflows:" | |
| } | |
| ], | |
| "stop_reason": null, | |
| "stop_sequence": null, | |
| "usage": { | |
| "input_tokens": 1, | |
| "cache_creation_input_tokens": 485, | |
| "cache_read_input_tokens": 24992, | |
| "cache_creation": { | |
| "ephemeral_5m_input_tokens": 485, | |
| "ephemeral_1h_input_tokens": 0 | |
| }, | |
| "output_tokens": 3, | |
| "service_tier": "standard" | |
| }, | |
| "context_management": null | |
| }, | |
| "parent_tool_use_id": null, | |
| "session_id": "ad16a8b2-2455-42b8-b611-73f369cef417", | |
| "uuid": "2b6b6e49-5fdc-48d0-93d6-ee3e7a7bd635" | |
| } | |
| [2025-12-22T17:14:20.847Z] [INFO] { | |
| "type": "assistant", | |
| "message": { | |
| "model": "claude-opus-4-5-20251101", | |
| "id": "msg_01EXZAxveB9hZtGoQwyBQqkK", | |
| "type": "message", | |
| "role": "assistant", | |
| "content": [ | |
| { | |
| "type": "tool_use", | |
| "id": "toolu_019Z537DetZTYQr8GiZ424cA", | |
| "name": "Bash", | |
| "input": { | |
| "command": "mkdir -p ci-logs docs/case-studies/issue-962", | |
| "description": "Create directories for logs and case study" | |
| } | |
| } | |
| ], | |
| "stop_reason": null, | |
| "stop_sequence": null, | |
| "usage": { | |
| "input_tokens": 1, | |
| "cache_creation_input_tokens": 485, | |
| "cache_read_input_tokens": 24992, | |
| "cache_creation": { | |
| "ephemeral_5m_input_tokens": 485, | |
| "ephemeral_1h_input_tokens": 0 | |
| }, | |
| "output_tokens": 3, | |
| "service_tier": "standard" | |
| }, | |
| "context_management": null | |
| }, | |
| "parent_tool_use_id": null, | |
| "session_id": "ad16a8b2-2455-42b8-b611-73f369cef417", | |
| "uuid": "1ede3b40-5933-4d2a-a257-c133ab73c39f" | |
| } | |
| [2025-12-22T17:14:22.051Z] [INFO] { | |
| "type": "assistant", | |
| "message": { | |
| "model": "claude-opus-4-5-20251101", | |
| "id": "msg_01EXZAxveB9hZtGoQwyBQqkK", | |
| "type": "message", | |
| "role": "assistant", | |
| "content": [ | |
| { | |
| "type": "tool_use", | |
| "id": "toolu_01VTL5iUFZ46tmdaqkW3ycB5", | |
| "name": "Bash", | |
| "input": { | |
| "command": "curl -L -o docs/case-studies/issue-962/screenshot-docker-error.png \"https://github.com/user-attachments/assets/d5f55310-8458-49b9-8769-8a4867c4eb25\" 2>&1", | |
| "description": "Download screenshot from issue" | |
| } | |
| } | |
| ], | |
| "stop_reason": null, | |
| "stop_sequence": null, | |
| "usage": { | |
| "input_tokens": 1, | |
| "cache_creation_input_tokens": 485, | |
| "cache_read_input_tokens": 24992, | |
| "cache_creation": { | |
| "ephemeral_5m_input_tokens": 485, | |
| "ephemeral_1h_input_tokens": 0 | |
| }, | |
| "output_tokens": 3, | |
| "service_tier": "standard" | |
| }, | |
| "context_management": null | |
| }, | |
| "parent_tool_use_id": null, | |
| "session_id": "ad16a8b2-2455-42b8-b611-73f369cef417", | |
| "uuid": "5b440e72-ca71-4301-9472-87eee7f7ec35" | |
| } | |
| [2025-12-22T17:14:22.468Z] [INFO] { | |
| "type": "assistant", | |
| "message": { | |
| "model": "claude-opus-4-5-20251101", | |
| "id": "msg_01EXZAxveB9hZtGoQwyBQqkK", | |
| "type": "message", | |
| "role": "assistant", | |
| "content": [ | |
| { | |
| "type": "tool_use", | |
| "id": "toolu_01HfjtusAXspGzyfRBYuHdKY", | |
| "name": "Glob", | |
| "input": { | |
| "pattern": ".github/workflows/*.yml" | |
| } | |
| } | |
| ], | |
| "stop_reason": null, | |
| "stop_sequence": null, | |
| "usage": { | |
| "input_tokens": 1, | |
| "cache_creation_input_tokens": 485, | |
| "cache_read_input_tokens": 24992, | |
| "cache_creation": { | |
| "ephemeral_5m_input_tokens": 485, | |
| "ephemeral_1h_input_tokens": 0 | |
| }, | |
| "output_tokens": 3, | |
| "service_tier": "standard" | |
| }, | |
| "context_management": null | |
| }, | |
| "parent_tool_use_id": null, | |
| "session_id": "ad16a8b2-2455-42b8-b611-73f369cef417", | |
| "uuid": "3c3fa852-c8ca-42f9-a661-c1e0f06cc009" | |
| } | |
| [2025-12-22T17:14:23.211Z] [INFO] { | |
| "type": "user", | |
| "message": { | |
| "role": "user", | |
| "content": [ | |
| { | |
| "tool_use_id": "toolu_019Z537DetZTYQr8GiZ424cA", | |
| "type": "tool_result", | |
| "content": "", | |
| "is_error": false | |
| } | |
| ] | |
| }, | |
| "parent_tool_use_id": null, | |
| "session_id": "ad16a8b2-2455-42b8-b611-73f369cef417", | |
| "uuid": "4d3e22a7-6aa0-4fb5-974b-8111b842c8df", | |
| "tool_use_result": { | |
| "stdout": "", | |
| "stderr": "", | |
| "interrupted": false, | |
| "isImage": false | |
| } | |
| } | |
| [2025-12-22T17:14:25.490Z] [INFO] { | |
| "type": "user", | |
| "message": { | |
| "role": "user", | |
| "content": [ | |
| { | |
| "tool_use_id": "toolu_01VTL5iUFZ46tmdaqkW3ycB5", | |
| "type": "tool_result", | |
| "content": " % Total % Received % Xferd Average Speed Time Time Time Current\n Dload Upload Total Spent Left Speed\n\r 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0\r 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0\n\r 5 1226k 5 69033 0 0 86915 0 0:00:14 --:--:-- 0:00:14 86915\r100 1226k 100 1226k 0 0 1086k 0 0:00:01 0:00:01 --:--:-- 3470k", | |
| "is_error": false | |
| } | |
| ] | |
| }, | |
| "parent_tool_use_id": null, | |
| "session_id": "ad16a8b2-2455-42b8-b611-73f369cef417", | |
| "uuid": "fc41859d-fead-41df-8af8-aa7ae62fa8eb", | |
| "tool_use_result": { | |
| "stdout": " % Total % Received % Xferd Average Speed Time Time Time Current\n Dload Upload Total Spent Left Speed\n\r 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0\r 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0\n\r 5 1226k 5 69033 0 0 86915 0 0:00:14 --:--:-- 0:00:14 86915\r100 1226k 100 1226k 0 0 1086k 0 0:00:01 0:00:01 --:--:-- 3470k", | |
| "stderr": "", | |
| "interrupted": false, | |
| "isImage": false | |
| } | |
| } | |
| [2025-12-22T17:14:25.522Z] [INFO] { | |
| "type": "user", | |
| "message": { | |
| "role": "user", | |
| "content": [ | |
| { | |
| "tool_use_id": "toolu_01HfjtusAXspGzyfRBYuHdKY", | |
| "type": "tool_result", | |
| "content": "/tmp/gh-issue-solver-1766423610256/.github/workflows/cleanup-test-repos.yml\n/tmp/gh-issue-solver-1766423610256/.github/workflows/release.yml" | |
| } | |
| ] | |
| }, | |
| "parent_tool_use_id": null, | |
| "session_id": "ad16a8b2-2455-42b8-b611-73f369cef417", | |
| "uuid": "40120eda-2b5c-4174-8b92-accd8678c3ac", | |
| "tool_use_result": { | |
| "filenames": [ | |
| "/tmp/gh-issue-solver-1766423610256/.github/workflows/cleanup-test-repos.yml", | |
| "/tmp/gh-issue-solver-1766423610256/.github/workflows/release.yml" | |
| ], | |
| "durationMs": 15, | |
| "numFiles": 2, | |
| "truncated": false | |
| } | |
| } | |
| [2025-12-22T17:14:28.904Z] [INFO] { | |
| "type": "assistant", | |
| "message": { | |
| "model": "claude-opus-4-5-20251101", | |
| "id": "msg_01Td8b5xZ8QHiQm64WHXw6mW", | |
| "type": "message", | |
| "role": "assistant", | |
| "content": [ | |
| { | |
| "type": "tool_use", | |
| "id": "toolu_01CqD9wNgFACPSM5dLHnrRFt", | |
| "name": "Read", | |
| "input": { | |
| "file_path": "/tmp/gh-issue-solver-1766423610256/docs/case-studies/issue-962/screenshot-docker-error.png" | |
| } | |
| } | |
| ], | |
| "stop_reason": null, | |
| "stop_sequence": null, | |
| "usage": { | |
| "input_tokens": 1, | |
| "cache_creation_input_tokens": 599, | |
| "cache_read_input_tokens": 25477, | |
| "cache_creation": { | |
| "ephemeral_5m_input_tokens": 599, | |
| "ephemeral_1h_input_tokens": 0 | |
| }, | |
| "output_tokens": 25, | |
| "service_tier": "standard" | |
| }, | |
| "context_management": null | |
| }, | |
| "parent_tool_use_id": null, | |
| "session_id": "ad16a8b2-2455-42b8-b611-73f369cef417", | |
| "uuid": "168cdc8e-c0d2-4907-af96-e57e02bf6684" | |
| } | |
| [2025-12-22T17:14:29.361Z] [INFO] { | |
| "type": "assistant", | |
| "message": { | |
| "model": "claude-opus-4-5-20251101", | |
| "id": "msg_01Td8b5xZ8QHiQm64WHXw6mW", | |
| "type": "message", | |
| "role": "assistant", | |
| "content": [ | |
| { | |
| "type": "tool_use", | |
| "id": "toolu_015H4ctZ3DxievHnozaFTdaa", | |
| "name": "Read", | |
| "input": { | |
| "file_path": "/tmp/gh-issue-solver-1766423610256/.github/workflows/release.yml" | |
| } | |
| } | |
| ], | |
| "stop_reason": null, | |
| "stop_sequence": null, | |
| "usage": { | |
| "input_tokens": 1, | |
| "cache_creation_input_tokens": 599, | |
| "cache_read_input_tokens": 25477, | |
| "cache_creation": { | |
| "ephemeral_5m_input_tokens": 599, | |
| "ephemeral_1h_input_tokens": 0 | |
| }, | |
| "output_tokens": 141, | |
| "service_tier": "standard" | |
| }, | |
| "context_management": null | |
| }, | |
| "parent_tool_use_id": null, | |
| "session_id": "ad16a8b2-2455-42b8-b611-73f369cef417", | |
| "uuid": "37c64ce5-9874-429b-8b1a-4283a9161887" | |
| } | |
| [2025-12-22T17:14:29.651Z] [INFO] {"type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_015H4ctZ3DxievHnozaFTdaa","type":"tool_result","content":" 1→name: Checks and release\n 2→\n 3→on:\n 4→ push:\n 5→ branches:\n 6→ - main\n 7→ pull_request:\n 8→ types: [opened, synchronize, reopened]\n 9→ # Manual release support - consolidated here to work with npm trusted publishing\n 10→ # npm only allows ONE workflow file as trusted publisher, so all publishing\n 11→ # must go through this workflow (release.yml)\n 12→ workflow_dispatch:\n 13→ inputs:\n 14→ release_mode:\n 15→ description: 'Manual release mode'\n 16→ required: true\n 17→ type: choice\n 18→ default: 'instant'\n 19→ options:\n 20→ - instant\n 21→ - changeset-pr\n 22→ bump_type:\n 23→ description: 'Manual release type'\n 24→ required: true\n 25→ type: choice\n 26→ options:\n 27→ - patch\n 28→ - minor\n 29→ - major\n 30→ description:\n 31→ description: 'Manual release description (optional)'\n 32→ required: false\n 33→ type: string\n 34→\n 35→concurrency: ${{ github.workflow }}-${{ github.ref }}\n 36→\n 37→jobs:\n 38→ # === DETECT CHANGES ===\n 39→ detect-changes:\n 40→ runs-on: ubuntu-latest\n 41→ outputs:\n 42→ mjs-changed: ${{ steps.changes.outputs.mjs }}\n 43→ package-changed: ${{ steps.changes.outputs.package }}\n 44→ docs-changed: ${{ steps.changes.outputs.docs }}\n 45→ workflow-changed: ${{ steps.changes.outputs.workflow }}\n 46→ docker-changed: ${{ steps.changes.outputs.docker }}\n 47→ any-code-changed: ${{ steps.changes.outputs.code }}\n 48→\n 49→ steps:\n 50→ - uses: actions/checkout@v4\n 51→ with:\n 52→ fetch-depth: 2\n 53→\n 54→ - name: Detect changes\n 55→ id: changes\n 56→ run: |\n 57→ # For PRs, compare against base branch; for pushes, compare with previous commit\n 58→ EVENT_NAME=\"${{ github.event_name }}\"\n 59→ if [ \"$EVENT_NAME\" = \"pull_request\" ]; then\n 60→ BASE_SHA=\"${{ github.event.pull_request.base.sha }}\"\n 61→ HEAD_SHA=\"${{ github.event.pull_request.head.sha }}\"\n 62→ git fetch origin $BASE_SHA\n 63→ CHANGED_FILES=$(git diff --name-only $BASE_SHA $HEAD_SHA 2>/dev/null || echo \"\")\n 64→ else\n 65→ CHANGED_FILES=$(git diff --name-only HEAD^ HEAD 2>/dev/null || git ls-tree --name-only -r HEAD)\n 66→ fi\n 67→\n 68→ echo \"Changed files:\"\n 69→ echo \"$CHANGED_FILES\"\n 70→\n 71→ # Check for .mjs file changes\n 72→ if echo \"$CHANGED_FILES\" | grep -q '\\.mjs$'; then\n 73→ echo \"mjs=true\" >> $GITHUB_OUTPUT\n 74→ else\n 75→ echo \"mjs=false\" >> $GITHUB_OUTPUT\n 76→ fi\n 77→\n 78→ # Check for package.json changes\n 79→ if echo \"$CHANGED_FILES\" | grep -q '^package\\.json$'; then\n 80→ echo \"package=true\" >> $GITHUB_OUTPUT\n 81→ else\n 82→ echo \"package=false\" >> $GITHUB_OUTPUT\n 83→ fi\n 84→\n 85→ # Check for documentation changes\n 86→ if echo \"$CHANGED_FILES\" | grep -q '\\.md$'; then\n 87→ echo \"docs=true\" >> $GITHUB_OUTPUT\n 88→ else\n 89→ echo \"docs=false\" >> $GITHUB_OUTPUT\n 90→ fi\n 91→\n 92→ # Check for workflow changes\n 93→ if echo \"$CHANGED_FILES\" | grep -q '\\.github/workflows/'; then\n 94→ echo \"workflow=true\" >> $GITHUB_OUTPUT\n 95→ else\n 96→ echo \"workflow=false\" >> $GITHUB_OUTPUT\n 97→ fi\n 98→\n 99→ # Check for docker-related changes\n 100→ if echo \"$CHANGED_FILES\" | grep -qE '(^Dockerfile$|^\\.dockerignore$|^scripts/ubuntu-24-server-install\\.sh$)'; then\n 101→ echo \"docker=true\" >> $GITHUB_OUTPUT\n 102→ else\n 103→ echo \"docker=false\" >> $GITHUB_OUTPUT\n 104→ fi\n 105→\n 106→ # Check for any code changes (.mjs, package.json, or workflows)\n 107→ if echo \"$CHANGED_FILES\" | grep -qE '\\.(mjs|json|yml|yaml)$|\\.github/workflows/'; then\n 108→ echo \"code=true\" >> $GITHUB_OUTPUT\n 109→ else\n 110→ echo \"code=false\" >> $GITHUB_OUTPUT\n 111→ fi\n 112→\n 113→ # === CHANGESET CHECK - only runs on PRs ===\n 114→ changeset-check:\n 115→ name: Check for Changesets\n 116→ runs-on: ubuntu-latest\n 117→ if: github.event_name == 'pull_request'\n 118→ steps:\n 119→ - uses: actions/checkout@v4\n 120→ with:\n 121→ fetch-depth: 0\n 122→\n 123→ - name: Setup Node.js\n 124→ uses: actions/setup-node@v4\n 125→ with:\n 126→ node-version: '20.x'\n 127→\n 128→ - name: Install dependencies\n 129→ run: npm install\n 130→\n 131→ - name: Check for changesets\n 132→ run: |\n 133→ # Skip changeset check for automated version PRs\n 134→ if [[ \"${{ github.head_ref }}\" == \"changeset-release/\"* ]]; then\n 135→ echo \"Skipping changeset check for automated release PR\"\n 136→ exit 0\n 137→ fi\n 138→\n 139→ # Run changeset validation script\n 140→ node scripts/validate-changeset.mjs\n 141→\n 142→ # === FAST CHECKS (FAIL FAST) ===\n 143→ # These checks run quickly (~7-21 seconds each) and should pass before long-running tests\n 144→\n 145→ # === COMPILATION & SYNTAX CHECKS ===\n 146→ test-compilation:\n 147→ runs-on: ubuntu-latest\n 148→ needs: [detect-changes, changeset-check]\n 149→ if: always() && (github.event_name == 'push' || needs.changeset-check.result == 'success') && (needs.detect-changes.outputs.any-code-changed == 'true' || needs.detect-changes.outputs.workflow-changed == 'true')\n 150→\n 151→ steps:\n 152→ - name: Checkout repository\n 153→ uses: actions/checkout@v4\n 154→\n 155→ - name: Setup Node.js\n 156→ uses: actions/setup-node@v4\n 157→ with:\n 158→ node-version: 20.x\n 159→\n 160→ - name: Test solve.mjs compilation\n 161→ run: |\n 162→ echo \"Testing solve.mjs compilation...\"\n 163→ timeout 30s node --check src/solve.mjs\n 164→ echo \"solve.mjs compiles successfully\"\n 165→\n 166→ - name: Test hive.mjs compilation\n 167→ run: |\n 168→ echo \"Testing hive.mjs compilation...\"\n 169→ timeout 30s node --check src/hive.mjs\n 170→ echo \"hive.mjs compiles successfully\"\n 171→\n 172→ - name: Check Node.js syntax for all .mjs files\n 173→ run: |\n 174→ echo \"Checking syntax for all .mjs files...\"\n 175→ for file in *.mjs; do\n 176→ if [ -f \"$file\" ]; then\n 177→ echo \"Checking $file...\"\n 178→ timeout 10s node --check \"$file\"\n 179→ fi\n 180→ done\n 181→ for file in src/*.mjs; do\n 182→ if [ -f \"$file\" ]; then\n 183→ echo \"Checking $file...\"\n 184→ timeout 10s node --check \"$file\"\n 185→ fi\n 186→ done\n 187→ for file in tests/*.mjs; do\n 188→ if [ -f \"$file\" ]; then\n 189→ echo \"Checking $file...\"\n 190→ node --check \"$file\"\n 191→ fi\n 192→ done\n 193→\n 194→ # === ESLINT CODE QUALITY CHECK ===\n 195→ lint:\n 196→ runs-on: ubuntu-latest\n 197→ needs: [detect-changes, changeset-check]\n 198→ if: always() && (github.event_name == 'push' || needs.changeset-check.result == 'success') && (needs.detect-changes.outputs.mjs-changed == 'true' || needs.detect-changes.outputs.docs-changed == 'true' || needs.detect-changes.outputs.package-changed == 'true' || needs.detect-changes.outputs.workflow-changed == 'true')\n 199→\n 200→ steps:\n 201→ - name: Checkout repository\n 202→ uses: actions/checkout@v4\n 203→\n 204→ - name: Setup Node.js\n 205→ uses: actions/setup-node@v4\n 206→ with:\n 207→ node-version: 20.x\n 208→\n 209→ - name: Install dependencies\n 210→ run: npm ci\n 211→\n 212→ - name: Run Prettier format check\n 213→ run: |\n 214→ echo \"Running Prettier format check...\"\n 215→ npm run format:check\n 216→ echo \"Prettier format check passed\"\n 217→\n 218→ - name: Run ESLint\n 219→ run: |\n 220→ echo \"Running ESLint code quality checks...\"\n 221→ npm run lint\n 222→ echo \"ESLint checks passed\"\n 223→\n 224→ # === FILE LINE LIMIT CHECK ===\n 225→ check-file-line-limits:\n 226→ runs-on: ubuntu-latest\n 227→ needs: [detect-changes, changeset-check]\n 228→ if: always() && (github.event_name == 'push' || needs.changeset-check.result == 'success') && (needs.detect-changes.outputs.mjs-changed == 'true' || needs.detect-changes.outputs.workflow-changed == 'true')\n 229→\n 230→ steps:\n 231→ - name: Checkout repository\n 232→ uses: actions/checkout@v4\n 233→\n 234→ - name: Check .mjs file line limits\n 235→ run: |\n 236→ echo \"Checking that all .mjs files are under 1500 lines...\"\n 237→\n 238→ FAILURES_FILE=$(mktemp)\n 239→\n 240→ find . -name \"*.mjs\" -type f | while read -r file; do\n 241→ line_count=$(wc -l < \"$file\")\n 242→ echo \"$file: $line_count lines\"\n 243→\n 244→ if [ $line_count -gt 1500 ]; then\n 245→ echo \"ERROR: $file has $line_count lines, which exceeds the 1500 line limit!\"\n 246→ echo \"::error file=$file::File has $line_count lines (limit: 1500)\"\n 247→ echo \"$file\" >> \"$FAILURES_FILE\"\n 248→ fi\n 249→ done\n 250→\n 251→ if [ -s \"$FAILURES_FILE\" ]; then\n 252→ echo \"\"\n 253→ echo \"The following .mjs files exceed the 1500 line limit:\"\n 254→ cat \"$FAILURES_FILE\"\n 255→ rm -f \"$FAILURES_FILE\"\n 256→ exit 1\n 257→ else\n 258→ echo \"\"\n 259→ echo \"All .mjs files are within the 1500 line limit!\"\n 260→ rm -f \"$FAILURES_FILE\"\n 261→ fi\n 262→\n 263→ # === LONG-RUNNING CHECKS ===\n 264→ # These checks take significant time (30s to 4+ minutes) and only run after all fast checks pass\n 265→\n 266→ # === UNIT TESTS ===\n 267→ test-suites:\n 268→ runs-on: ubuntu-latest\n 269→ needs: [detect-changes, changeset-check, test-compilation, lint, check-file-line-limits]\n 270→ if: |\n 271→ always() &&\n 272→ !cancelled() &&\n 273→ !contains(needs.*.result, 'failure') &&\n 274→ (github.event_name == 'push' || needs.changeset-check.result == 'success' || needs.changeset-check.result == 'skipped') &&\n 275→ needs.test-compilation.result == 'success' &&\n 276→ (needs.lint.result == 'success' || needs.lint.result == 'skipped') &&\n 277→ (needs.check-file-line-limits.result == 'success' || needs.check-file-line-limits.result == 'skipped') &&\n 278→ (needs.detect-changes.outputs.any-code-changed == 'true' || needs.detect-changes.outputs.workflow-changed == 'true')\n 279→\n 280→ steps:\n 281→ - uses: actions/checkout@v4\n 282→\n 283→ - name: Use Node.js 20.x\n 284→ uses: actions/setup-node@v4\n 285→ with:\n 286→ node-version: 20.x\n 287→\n 288→ - name: Install dependencies\n 289→ run: npm install\n 290→\n 291→ - name: Run test suite for solve.mjs\n 292→ run: |\n 293→ echo \"Running test suite for solve.mjs...\"\n 294→ node tests/test-solve.mjs\n 295→\n 296→ - name: Run test suite for hive.mjs\n 297→ run: |\n 298→ echo \"Running test suite for hive.mjs...\"\n 299→ node tests/test-hive.mjs\n 300→\n 301→ - name: Run test suite for memory-check.mjs\n 302→ run: |\n 303→ echo \"Running test suite for memory-check.mjs...\"\n 304→ node tests/test-memory-check.mjs\n 305→\n 306→ - name: Run branch name validation test (Issue #647)\n 307→ run: |\n 308→ echo \"Running test suite for branch name validation...\"\n 309→ node tests/test-branch-name-validation.mjs\n 310→\n 311→ - name: Run feedback lines regression test (Issue #168)\n 312→ run: |\n 313→ echo \"Running feedback lines regression test...\"\n 314→ node tests/test-feedback-lines-simple.mjs\n 315→\n 316→ - name: Run feedback lines integration test (Issue #168)\n 317→ env:\n 318→ GITHUB_TOKEN: ${{ secrets.TEST_GITHUB_USER_TOKEN || secrets.GITHUB_TOKEN }}\n 319→ TEST_GITHUB_USERNAME: ${{ secrets.TEST_GITHUB_USERNAME }}\n 320→ TEST_GITHUB_USER_TOKEN: ${{ secrets.TEST_GITHUB_USER_TOKEN }}\n 321→ run: |\n 322→ echo \"Running feedback lines integration test with real repository...\"\n 323→ node tests/test-feedback-lines-integration.mjs\n 324→\n 325→ - name: Run Sentry integration test\n 326→ run: |\n 327→ echo \"Running test suite for Sentry integration...\"\n 328→ node tests/test-sentry.mjs\n 329→\n 330→ - name: Run telegram-bot dry-run test (Issue #487)\n 331→ run: |\n 332→ echo \"Running test suite for telegram-bot --dry-run mode...\"\n 333→ node tests/test-telegram-bot-dry-run.mjs\n 334→\n 335→ - name: Run telegram-bot hero Links Notation test (Issue #623)\n 336→ run: |\n 337→ echo \"Running test suite for telegram-bot hero example with Links Notation...\"\n 338→ node tests/test-telegram-bot-hero-links-notation.mjs\n 339→\n 340→ - name: Run hive command silent failure test (Issue #504)\n 341→ run: |\n 342→ echo \"Running test suite for hive command silent failures...\"\n 343→ node tests/test-hive-no-silent-failure.mjs\n 344→\n 345→ - name: Run GitHub linking keyword detection test (Issue #568)\n 346→ run: |\n 347→ echo \"Running test suite for GitHub linking keyword detection...\"\n 348→ node tests/test-github-linking.mjs\n 349→\n 350→ - name: Run Telegram Markdown escaping test (Issue #580)\n 351→ run: |\n 352→ echo \"Running test suite for Telegram Markdown escaping...\"\n 353→ node tests/test-telegram-markdown-escaping.mjs\n 354→\n 355→ - name: Run lenv-reader test (Issue #604)\n 356→ run: |\n 357→ echo \"Running test suite for lenv-reader.lib.mjs...\"\n 358→ node tests/test-lenv-reader.mjs\n 359→\n 360→ - name: Run Telegram URL extraction test (Issue #603)\n 361→ run: |\n 362→ echo \"Running test suite for Telegram URL extraction...\"\n 363→ node tests/test-telegram-url-extraction.mjs\n 364→\n 365→ - name: Run Telegram URL validation test (Issue #630)\n 366→ run: |\n 367→ echo \"Running test suite for Telegram URL validation...\"\n 368→ node tests/test-telegram-validate-url.mjs\n 369→\n 370→ - name: Run interactive mode test (Issue #800)\n 371→ run: |\n 372→ echo \"Running test suite for interactive mode...\"\n 373→ node tests/test-interactive-mode.mjs\n 374→\n 375→ - name: Run start-screen test (Issue #539)\n 376→ run: |\n 377→ echo \"Running test suite for start-screen.mjs...\"\n 378→ node tests/test-start-screen.mjs\n 379→\n 380→ # === EXECUTION TESTS ===\n 381→ test-execution:\n 382→ runs-on: ubuntu-latest\n 383→ needs: [detect-changes, changeset-check, test-compilation, lint, check-file-line-limits]\n 384→ if: |\n 385→ always() &&\n 386→ !cancelled() &&\n 387→ !contains(needs.*.result, 'failure') &&\n 388→ (github.event_name == 'push' || needs.changeset-check.result == 'success' || needs.changeset-check.result == 'skipped') &&\n 389→ needs.test-compilation.result == 'success' &&\n 390→ (needs.lint.result == 'success' || needs.lint.result == 'skipped') &&\n 391→ (needs.check-file-line-limits.result == 'success' || needs.check-file-line-limits.result == 'skipped') &&\n 392→ (needs.detect-changes.outputs.any-code-changed == 'true' || needs.detect-changes.outputs.workflow-changed == 'true')\n 393→\n 394→ steps:\n 395→ - uses: actions/checkout@v4\n 396→\n 397→ - name: Use Node.js 20.x\n 398→ uses: actions/setup-node@v4\n 399→ with:\n 400→ node-version: 20.x\n 401→\n 402→ - name: Install dependencies\n 403→ run: npm install\n 404→\n 405→ - name: Test solve.mjs execution\n 406→ run: |\n 407→ echo \"Testing solve.mjs basic execution...\"\n 408→ timeout 10s ./src/solve.mjs --help || echo \"Help command completed\"\n 409→ echo \"solve.mjs executes without critical errors\"\n 410→ timeout 10s ./src/solve.mjs --version || true\n 411→\n 412→ - name: Verify log files contain version and command (Issue #517)\n 413→ run: |\n 414→ echo \"Testing that log files contain version and command at the start...\"\n 415→ timeout 30s ./src/solve.mjs \"https://github.com/test/repo/issues/1\" --dry-run --skip-tool-check 2>&1 | tee test-log-output.txt || true\n 416→\n 417→ LOG_FILE=$(grep -o \"solve-[0-9T-]*Z\\.log\" test-log-output.txt | head -1)\n 418→\n 419→ if [ -z \"$LOG_FILE\" ]; then\n 420→ echo \"Could not find log file path in output\"\n 421→ cat test-log-output.txt\n 422→ exit 1\n 423→ fi\n 424→\n 425→ echo \"Log file: $LOG_FILE\"\n 426→\n 427→ if [ ! -f \"$LOG_FILE\" ]; then\n 428→ echo \"Log file not found: $LOG_FILE\"\n 429→ ls -la solve-*.log || echo \"No solve log files found\"\n 430→ exit 1\n 431→ fi\n 432→\n 433→ echo \"\"\n 434→ echo \"Checking log file contents...\"\n 435→ head -30 \"$LOG_FILE\"\n 436→\n 437→ echo \"\"\n 438→ echo \"Verifying version appears in log...\"\n 439→ if grep -q \"solve v\" \"$LOG_FILE\"; then\n 440→ echo \"Version found in log file\"\n 441→ else\n 442→ echo \"Version NOT found in log file\"\n 443→ exit 1\n 444→ fi\n 445→\n 446→ echo \"\"\n 447→ echo \"Verifying command appears in log...\"\n 448→ if grep -q \"Raw command executed:\" \"$LOG_FILE\"; then\n 449→ echo \"Command found in log file\"\n 450→ else\n 451→ echo \"Command NOT found in log file\"\n 452→ exit 1\n 453→ fi\n 454→\n 455→ echo \"\"\n 456→ echo \"Log file verification passed - version and command are present\"\n 457→\n 458→ - name: Test hive.mjs execution\n 459→ run: |\n 460→ echo \"Testing hive.mjs basic execution...\"\n 461→ timeout 10s ./src/hive.mjs --help || echo \"Help command completed\"\n 462→ echo \"hive.mjs executes without critical errors\"\n 463→ timeout 10s ./src/hive.mjs --version || true\n 464→\n 465→ - name: Test telegram-bot.mjs execution\n 466→ run: |\n 467→ echo \"Testing telegram-bot.mjs basic execution...\"\n 468→ timeout 10s ./src/telegram-bot.mjs --help || echo \"Help command completed\"\n 469→ echo \"telegram-bot.mjs executes without critical errors\"\n 470→\n 471→ echo \"\"\n 472→ echo \"Testing telegram-bot.mjs --dry-run with issue #487 command...\"\n 473→ timeout 10s ./src/telegram-bot.mjs \\\n 474→ --token \"test_token_123\" \\\n 475→ --allowed-chats \"(-1002975819706 -1002861722681)\" \\\n 476→ --no-hive \\\n 477→ --solve-overrides $'( \\n --auto-continue\\n --attach-logs\\n --verbose\\n --no-tool-check\\n)' \\\n 478→ --dry-run\n 479→ echo \"Issue #487 command passes with --dry-run\"\n 480→\n 481→ - name: Test memory-check.mjs execution\n 482→ run: |\n 483→ ./src/memory-check.mjs --help\n 484→ ./src/memory-check.mjs --min-memory 10 --min-disk-space 100 --json\n 485→\n 486→ - name: Test global command installation\n 487→ run: |\n 488→ echo \"Testing npm global command installation from local folder...\"\n 489→ npm link\n 490→ echo \"npm link completed successfully\"\n 491→\n 492→ echo \"\"\n 493→ echo \"Testing 'hive' global command...\"\n 494→ timeout 10s hive --version || true\n 495→ timeout 10s hive --help || echo \"Help command completed\"\n 496→ echo \"'hive' global command works\"\n 497→\n 498→ echo \"\"\n 499→ echo \"Testing 'solve' global command...\"\n 500→ timeout 10s solve --version || true\n 501→ timeout 10s solve --help || echo \"Help command completed\"\n 502→ echo \"'solve' global command works\"\n 503→\n 504→ echo \"\"\n 505→ echo \"Testing 'hive-telegram-bot' global command...\"\n 506→ timeout 10s hive-telegram-bot --help || echo \"Help command completed\"\n 507→ echo \"'hive-telegram-bot' global command works\"\n 508→\n 509→ echo \"\"\n 510→ echo \"Testing hive-telegram-bot --dry-run (issue #487)...\"\n 511→ timeout 30s hive-telegram-bot \\\n 512→ --token \"test_token\" \\\n 513→ --allowed-chats \"(-1 -2)\" \\\n 514→ --no-hive \\\n 515→ --solve-overrides \"(--auto-continue --verbose)\" \\\n 516→ --dry-run\n 517→ echo \"'hive-telegram-bot --dry-run' works\"\n 518→\n 519→ echo \"\"\n 520→ echo \"Cleaning up global link...\"\n 521→ npm unlink || true\n 522→\n 523→ - name: Test hive dry-run with solve integration\n 524→ run: |\n 525→ echo \"Testing hive dry-run mode with solve command integration...\"\n 526→ timeout 30s ./src/hive.mjs https://github.com/test/repo --dry-run --skip-claude-check --once --max-issues 1 2>&1 | tee hive_dry_run.log || true\n 527→\n 528→ if grep -q \"solve.*--dry-run.*--skip-claude-check\" hive_dry_run.log; then\n 529→ echo \"hive correctly passes --dry-run and --skip-claude-check flags to solve command\"\n 530→ else\n 531→ echo \"Could not verify flag propagation in dry-run mode (may be due to no issues found)\"\n 532→ fi\n 533→\n 534→ echo \"\"\n 535→ echo \"Testing solve.mjs with --dry-run and --skip-claude-check flags...\"\n 536→ timeout 10s ./src/solve.mjs https://github.com/test/repo/issues/1 --dry-run --skip-claude-check 2>&1 | head -20 || true\n 537→ echo \"solve.mjs accepts --dry-run and --skip-claude-check flags\"\n 538→\n 539→ - name: Test --auto-fork option\n 540→ run: |\n 541→ echo \"Testing --auto-fork option with dry-run mode...\"\n 542→\n 543→ echo \"\"\n 544→ echo \"Testing solve.mjs with --auto-fork and --dry-run...\"\n 545→ timeout 10s ./src/solve.mjs https://github.com/test/repo/issues/1 --auto-fork --dry-run --skip-tool-check 2>&1 | tee solve_auto_fork.log || true\n 546→ if grep -qE \"(auto-fork|Auto-fork)\" solve_auto_fork.log; then\n 547→ echo \"solve.mjs recognizes --auto-fork flag\"\n 548→ else\n 549→ echo \"Could not verify --auto-fork flag in solve output\"\n 550→ fi\n 551→\n 552→ echo \"\"\n 553→ echo \"Testing hive.mjs with --auto-fork and --dry-run...\"\n 554→ timeout 30s ./src/hive.mjs https://github.com/test/repo --auto-fork --dry-run --skip-tool-check --once --max-issues 1 2>&1 | tee hive_auto_fork.log || true\n 555→ if grep -qE \"(auto-fork|Auto-fork)\" hive_auto_fork.log; then\n 556→ echo \"hive.mjs recognizes --auto-fork flag\"\n 557→ else\n 558→ echo \"Could not verify --auto-fork flag in hive output\"\n 559→ fi\n 560→\n 561→ echo \"\"\n 562→ echo \"Testing start-screen.mjs passes --auto-fork to solve...\"\n 563→ timeout 5s ./src/start-screen.mjs solve https://github.com/test/repo/issues/1 --auto-fork 2>&1 | tee start_screen_auto_fork.log || true\n 564→ if grep -qE \"(auto-fork|GNU Screen|screen.*not.*installed)\" start_screen_auto_fork.log; then\n 565→ echo \"start-screen.mjs accepts --auto-fork flag\"\n 566→ else\n 567→ echo \"Could not verify start-screen flag acceptance\"\n 568→ fi\n 569→\n 570→ echo \"\"\n 571→ echo \"All --auto-fork option tests completed\"\n 572→\n 573→ # === MEMORY CHECKS - LINUX ===\n 574→ memory-check-linux:\n 575→ runs-on: ubuntu-latest\n 576→ needs: [detect-changes, changeset-check, test-compilation, lint, check-file-line-limits]\n 577→ if: |\n 578→ always() &&\n 579→ !cancelled() &&\n 580→ !contains(needs.*.result, 'failure') &&\n 581→ (github.event_name == 'push' || needs.changeset-check.result == 'success' || needs.changeset-check.result == 'skipped') &&\n 582→ needs.test-compilation.result == 'success' &&\n 583→ (needs.lint.result == 'success' || needs.lint.result == 'skipped') &&\n 584→ (needs.check-file-line-limits.result == 'success' || needs.check-file-line-limits.result == 'skipped') &&\n 585→ (needs.detect-changes.outputs.any-code-changed == 'true' || needs.detect-changes.outputs.workflow-changed == 'true')\n 586→\n 587→ steps:\n 588→ - uses: actions/checkout@v4\n 589→\n 590→ - name: Use Node.js 20.x\n 591→ uses: actions/setup-node@v4\n 592→ with:\n 593→ node-version: 20.x\n 594→\n 595→ - name: System info\n 596→ run: |\n 597→ echo \"=== System Information ===\"\n 598→ uname -a\n 599→ echo \"\"\n 600→ echo \"=== Memory Information ===\"\n 601→ free -h\n 602→ echo \"\"\n 603→ echo \"=== Disk Information ===\"\n 604→ df -h\n 605→ echo \"\"\n 606→ echo \"=== CPU Information ===\"\n 607→ lscpu | head -20\n 608→\n 609→ - name: Run memory-check tests\n 610→ run: |\n 611→ chmod +x tests/test-memory-check.mjs\n 612→ node tests/test-memory-check.mjs\n 613→\n 614→ - name: Test memory-check with various thresholds\n 615→ run: |\n 616→ echo \"Testing with low thresholds (should pass)...\"\n 617→ ./src/memory-check.mjs --min-memory 10 --min-disk-space 100 --json\n 618→\n 619→ echo \"\"\n 620→ echo \"Testing verbose output...\"\n 621→ ./src/memory-check.mjs --min-memory 10 --min-disk-space 100\n 622→\n 623→ echo \"\"\n 624→ echo \"Testing quiet mode...\"\n 625→ ./src/memory-check.mjs --min-memory 10 --min-disk-space 100 --quiet --json\n 626→\n 627→ - name: Test memory-check failure conditions\n 628→ run: |\n 629→ echo \"Testing with impossible memory requirement (should fail)...\"\n 630→ if ./src/memory-check.mjs --min-memory 999999 --exit-on-failure --quiet --json; then\n 631→ echo \"ERROR: Should have failed with impossible memory requirement\"\n 632→ exit 1\n 633→ else\n 634→ echo \"Correctly failed with impossible memory requirement\"\n 635→ fi\n 636→\n 637→ echo \"\"\n 638→ echo \"Testing with impossible disk requirement (should fail)...\"\n 639→ if ./src/memory-check.mjs --min-disk-space 999999999 --exit-on-failure --quiet --json; then\n 640→ echo \"ERROR: Should have failed with impossible disk requirement\"\n 641→ exit 1\n 642→ else\n 643→ echo \"Correctly failed with impossible disk requirement\"\n 644→ fi\n 645→\n 646→ # === DOCUMENTATION VALIDATION (FAST) ===\n 647→ validate-docs:\n 648→ runs-on: ubuntu-latest\n 649→ needs: [detect-changes, changeset-check]\n 650→ if: always() && (github.event_name == 'push' || needs.changeset-check.result == 'success') && needs.detect-changes.outputs.docs-changed == 'true'\n 651→\n 652→ steps:\n 653→ - uses: actions/checkout@v4\n 654→\n 655→ - name: Use Node.js 20.x\n 656→ uses: actions/setup-node@v4\n 657→ with:\n 658→ node-version: 20.x\n 659→\n 660→ - name: Validate documentation files\n 661→ run: |\n 662→ echo \"Running documentation validation tests...\"\n 663→ chmod +x tests/docs-validation.mjs\n 664→ node tests/docs-validation.mjs\n 665→\n 666→ # === DOCKER PR CHECK ===\n 667→ docker-pr-check:\n 668→ runs-on: ubuntu-latest\n 669→ needs: [detect-changes, changeset-check, test-compilation, lint, check-file-line-limits]\n 670→ if: |\n 671→ always() &&\n 672→ !cancelled() &&\n 673→ !contains(needs.*.result, 'failure') &&\n 674→ github.event_name == 'pull_request' &&\n 675→ needs.changeset-check.result == 'success' &&\n 676→ needs.test-compilation.result == 'success' &&\n 677→ (needs.lint.result == 'success' || needs.lint.result == 'skipped') &&\n 678→ (needs.check-file-line-limits.result == 'success' || needs.check-file-line-limits.result == 'skipped') &&\n 679→ (needs.detect-changes.outputs.docker-changed == 'true' || needs.detect-changes.outputs.workflow-changed == 'true')\n 680→\n 681→ env:\n 682→ REGISTRY: docker.io\n 683→ IMAGE_NAME: konard/hive-mind\n 684→\n 685→ steps:\n 686→ - name: Free up disk space\n 687→ run: |\n 688→ echo \"Disk space before cleanup:\"\n 689→ df -h /\n 690→ echo \"\"\n 691→ echo \"Removing unnecessary packages to free disk space...\"\n 692→ # Remove large pre-installed packages that we don't need\n 693→ sudo rm -rf /usr/share/dotnet\n 694→ sudo rm -rf /usr/local/lib/android\n 695→ sudo rm -rf /opt/ghc\n 696→ sudo rm -rf /opt/hostedtoolcache/CodeQL\n 697→ sudo docker image prune --all --force\n 698→ echo \"\"\n 699→ echo \"Disk space after cleanup:\"\n 700→ df -h /\n 701→\n 702→ - name: Checkout repository\n 703→ uses: actions/checkout@v4\n 704→\n 705→ - name: Set up QEMU\n 706→ uses: docker/setup-qemu-action@v3\n 707→\n 708→ - name: Set up Docker Buildx\n 709→ uses: docker/setup-buildx-action@v3\n 710→\n 711→ - name: Build Docker image with log capture\n 712→ run: |\n 713→ echo \"Building Docker image with log capture...\"\n 714→ # Note: Multi-platform builds (amd64+arm64) are tested in docker-publish job during release\n 715→ # PR checks only validate amd64 using standard docker build (not buildx) to ensure\n 716→ # the image is properly loaded into Docker daemon for container verification\n 717→ docker build --progress=plain -t ${{ env.IMAGE_NAME }}:test . 2>&1 | tee build-output.log\n 718→\n 719→ echo \"\"\n 720→ echo \"Docker image built successfully\"\n 721→ docker images | grep -E \"${{ env.IMAGE_NAME }}|REPOSITORY\"\n 722→\n 723→ - name: Verify system & development tools installation in build logs\n 724→ run: |\n 725→ echo \"Checking installation status in build logs...\"\n 726→ echo \"Verifying all tools are installed (in alphabetical order to reduce merge conflicts)\"\n 727→ echo \"\"\n 728→\n 729→ # Check for failures - alphabetical order\n 730→ if grep -E '\\[!\\] Bun: not found' build-output.log; then\n 731→ echo \"ERROR: Bun installation failed - showing as 'not found'\"\n 732→ exit 1\n 733→ fi\n 734→\n 735→ if grep -E '\\[!\\] Cargo: not found' build-output.log; then\n 736→ echo \"ERROR: Cargo installation failed - showing as 'not found'\"\n 737→ exit 1\n 738→ fi\n 739→\n 740→ if grep -E '\\[!\\] Clang: not found' build-output.log; then\n 741→ echo \"ERROR: Clang installation failed - showing as 'not found'\"\n 742→ exit 1\n 743→ fi\n 744→\n 745→ if grep -E '\\[!\\] Clang\\+\\+: not found' build-output.log; then\n 746→ echo \"ERROR: Clang++ installation failed - showing as 'not found'\"\n 747→ exit 1\n 748→ fi\n 749→\n 750→ if grep -E '\\[!\\] CMake: not found' build-output.log; then\n 751→ echo \"ERROR: CMake installation failed - showing as 'not found'\"\n 752→ exit 1\n 753→ fi\n 754→\n 755→ if grep -E '\\[!\\] Deno: not found' build-output.log; then\n 756→ echo \"ERROR: Deno installation failed - showing as 'not found'\"\n 757→ exit 1\n 758→ fi\n 759→\n 760→ if grep -E '\\[!\\] Elan: not found' build-output.log; then\n 761→ echo \"ERROR: Elan installation failed - showing as 'not found'\"\n 762→ exit 1\n 763→ fi\n 764→\n 765→ if grep -E '\\[!\\] G\\+\\+: not found' build-output.log; then\n 766→ echo \"ERROR: G++ installation failed - showing as 'not found'\"\n 767→ exit 1\n 768→ fi\n 769→\n 770→ if grep -E '\\[!\\] GCC: not found' build-output.log; then\n 771→ echo \"ERROR: GCC installation failed - showing as 'not found'\"\n 772→ exit 1\n 773→ fi\n 774→\n 775→ if grep -E '\\[!\\] Git: not found' build-output.log; then\n 776→ echo \"ERROR: Git installation failed - showing as 'not found'\"\n 777→ exit 1\n 778→ fi\n 779→\n 780→ if grep -E '\\[!\\] GitHub CLI: not found' build-output.log; then\n 781→ echo \"ERROR: GitHub CLI installation failed - showing as 'not found'\"\n 782→ exit 1\n 783→ fi\n 784→\n 785→ if grep -E '\\[!\\] Go: not found' build-output.log; then\n 786→ echo \"ERROR: Go installation failed - showing as 'not found'\"\n 787→ exit 1\n 788→ fi\n 789→\n 790→ if grep -E '\\[!\\] Homebrew: not found' build-output.log; then\n 791→ echo \"ERROR: Homebrew installation failed - showing as 'not found'\"\n 792→ exit 1\n 793→ fi\n 794→\n 795→ if grep -E '\\[!\\] Java: not found' build-output.log; then\n 796→ echo \"ERROR: Java installation failed - showing as 'not found'\"\n 797→ exit 1\n 798→ fi\n 799→\n 800→ if grep -E '\\[!\\] Lake: not found' build-output.log; then\n 801→ echo \"ERROR: Lake installation failed - showing as 'not found'\"\n 802→ exit 1\n 803→ fi\n 804→\n 805→ if grep -E '\\[!\\] Lean: not found' build-output.log; then\n 806→ echo \"ERROR: Lean installation failed - showing as 'not found'\"\n 807→ exit 1\n 808→ fi\n 809→\n 810→ if grep -E '\\[!\\] LLD Linker: not found' build-output.log; then\n 811→ echo \"ERROR: LLD Linker installation failed - showing as 'not found'\"\n 812→ exit 1\n 813→ fi\n 814→\n 815→ if grep -E '\\[!\\] LLVM: not found' build-output.log; then\n 816→ echo \"ERROR: LLVM installation failed - showing as 'not found'\"\n 817→ exit 1\n 818→ fi\n 819→\n 820→ if grep -E '\\[!\\] Make: not found' build-output.log; then\n 821→ echo \"ERROR: Make installation failed - showing as 'not found'\"\n 822→ exit 1\n 823→ fi\n 824→\n 825→ if grep -E '\\[!\\] Node\\.js: not found' build-output.log; then\n 826→ echo \"ERROR: Node.js installation failed - showing as 'not found'\"\n 827→ exit 1\n 828→ fi\n 829→\n 830→ if grep -E '\\[!\\] NPM: not found' build-output.log; then\n 831→ echo \"ERROR: NPM installation failed - showing as 'not found'\"\n 832→ exit 1\n 833→ fi\n 834→\n 835→ if grep -E '\\[!\\] Opam: not found' build-output.log; then\n 836→ echo \"ERROR: Opam installation failed - showing as 'not found'\"\n 837→ exit 1\n 838→ fi\n 839→\n 840→ if grep -E '\\[!\\] PHP: not found' build-output.log; then\n 841→ echo \"ERROR: PHP installation failed - showing as 'not found'\"\n 842→ exit 1\n 843→ fi\n 844→\n 845→ if grep -E '\\[!\\] Perl: not found' build-output.log; then\n 846→ echo \"ERROR: Perl installation failed - showing as 'not found'\"\n 847→ exit 1\n 848→ fi\n 849→\n 850→ if grep -E '\\[!\\] Perlbrew: not found' build-output.log; then\n 851→ echo \"ERROR: Perlbrew installation failed - showing as 'not found'\"\n 852→ exit 1\n 853→ fi\n 854→\n 855→ if grep -E '\\[!\\] Playwright: not found' build-output.log; then\n 856→ echo \"ERROR: Playwright installation failed - showing as 'not found'\"\n 857→ exit 1\n 858→ fi\n 859→\n 860→ if grep -E '\\[!\\] Python: not found' build-output.log; then\n 861→ echo \"ERROR: Python installation failed - showing as 'not found'\"\n 862→ exit 1\n 863→ fi\n 864→\n 865→ if grep -E '\\[!\\] Pyenv: not found' build-output.log; then\n 866→ echo \"ERROR: Pyenv installation failed - showing as 'not found'\"\n 867→ exit 1\n 868→ fi\n 869→\n 870→ if grep -E '\\[!\\] Rocq/Coq: not found' build-output.log; then\n 871→ echo \"ERROR: Rocq/Coq installation failed - showing as 'not found'\"\n 872→ exit 1\n 873→ fi\n 874→\n 875→ if grep -E '\\[!\\] Rust: not found' build-output.log; then\n 876→ echo \"ERROR: Rust installation failed - showing as 'not found'\"\n 877→ exit 1\n 878→ fi\n 879→\n 880→ if grep -E '\\[!\\] SDKMAN: not found' build-output.log; then\n 881→ echo \"ERROR: SDKMAN installation failed - showing as 'not found'\"\n 882→ exit 1\n 883→ fi\n 884→\n 885→ # Verify successful installations - alphabetical order\n 886→ echo \"\"\n 887→ echo \"Verifying successful installations...\"\n 888→\n 889→ if grep -E '\\[✓\\] Bun:' build-output.log; then\n 890→ echo \"Bun installation verified in build logs\"\n 891→ else\n 892→ echo \"WARNING: Bun success message not found in logs\"\n 893→ fi\n 894→\n 895→ if grep -E '\\[✓\\] Cargo:' build-output.log; then\n 896→ echo \"Cargo installation verified in build logs\"\n 897→ else\n 898→ echo \"WARNING: Cargo success message not found in logs\"\n 899→ fi\n 900→\n 901→ if grep -E '\\[✓\\] Clang:' build-output.log; then\n 902→ echo \"Clang installation verified in build logs\"\n 903→ else\n 904→ echo \"WARNING: Clang success message not found in logs\"\n 905→ fi\n 906→\n 907→ if grep -E '\\[✓\\] Clang\\+\\+:' build-output.log; then\n 908→ echo \"Clang++ installation verified in build logs\"\n 909→ else\n 910→ echo \"WARNING: Clang++ success message not found in logs\"\n 911→ fi\n 912→\n 913→ if grep -E '\\[✓\\] CMake:' build-output.log; then\n 914→ echo \"CMake installation verified in build logs\"\n 915→ else\n 916→ echo \"WARNING: CMake success message not found in logs\"\n 917→ fi\n 918→\n 919→ if grep -E '\\[✓\\] Deno:' build-output.log; then\n 920→ echo \"Deno installation verified in build logs\"\n 921→ else\n 922→ echo \"WARNING: Deno success message not found in logs\"\n 923→ fi\n 924→\n 925→ if grep -E '\\[✓\\] Elan:' build-output.log; then\n 926→ echo \"Elan installation verified in build logs\"\n 927→ else\n 928→ echo \"WARNING: Elan success message not found in logs\"\n 929→ fi\n 930→\n 931→ if grep -E '\\[✓\\] G\\+\\+:' build-output.log; then\n 932→ echo \"G++ installation verified in build logs\"\n 933→ else\n 934→ echo \"WARNING: G++ success message not found in logs\"\n 935→ fi\n 936→\n 937→ if grep -E '\\[✓\\] GCC:' build-output.log; then\n 938→ echo \"GCC installation verified in build logs\"\n 939→ else\n 940→ echo \"WARNING: GCC success message not found in logs\"\n 941→ fi\n 942→\n 943→ if grep -E '\\[✓\\] Git:' build-output.log; then\n 944→ echo \"Git installation verified in build logs\"\n 945→ else\n 946→ echo \"WARNING: Git success message not found in logs\"\n 947→ fi\n 948→\n 949→ if grep -E '\\[✓\\] GitHub CLI:' build-output.log; then\n 950→ echo \"GitHub CLI installation verified in build logs\"\n 951→ else\n 952→ echo \"WARNING: GitHub CLI success message not found in logs\"\n 953→ fi\n 954→\n 955→ if grep -E '\\[✓\\] Go:' build-output.log; then\n 956→ echo \"Go installation verified in build logs\"\n 957→ else\n 958→ echo \"WARNING: Go success message not found in logs\"\n 959→ fi\n 960→\n 961→ if grep -E '\\[✓\\] Homebrew:' build-output.log; then\n 962→ echo \"Homebrew installation verified in build logs\"\n 963→ else\n 964→ echo \"WARNING: Homebrew success message not found in logs\"\n 965→ fi\n 966→\n 967→ if grep -E '\\[✓\\] Java:' build-output.log; then\n 968→ echo \"Java installation verified in build logs\"\n 969→ else\n 970→ echo \"WARNING: Java success message not found in logs\"\n 971→ fi\n 972→\n 973→ if grep -E '\\[✓\\] Lake:' build-output.log; then\n 974→ echo \"Lake installation verified in build logs\"\n 975→ else\n 976→ echo \"WARNING: Lake success message not found in logs\"\n 977→ fi\n 978→\n 979→ if grep -E '\\[✓\\] Lean:' build-output.log; then\n 980→ echo \"Lean installation verified in build logs\"\n 981→ else\n 982→ echo \"WARNING: Lean success message not found in logs\"\n 983→ fi\n 984→\n 985→ if grep -E '\\[✓\\] LLD Linker:' build-output.log; then\n 986→ echo \"LLD Linker installation verified in build logs\"\n 987→ else\n 988→ echo \"WARNING: LLD Linker success message not found in logs\"\n 989→ fi\n 990→\n 991→ if grep -E '\\[✓\\] LLVM:' build-output.log; then\n 992→ echo \"LLVM installation verified in build logs\"\n 993→ else\n 994→ echo \"WARNING: LLVM success message not found in logs\"\n 995→ fi\n 996→\n 997→ if grep -E '\\[✓\\] Make:' build-output.log; then\n 998→ echo \"Make installation verified in build logs\"\n 999→ else\n 1000→ echo \"WARNING: Make success message not found in logs\"\n 1001→ fi\n 1002→\n 1003→ if grep -E '\\[✓\\] Node\\.js:' build-output.log; then\n 1004→ echo \"Node.js installation verified in build logs\"\n 1005→ else\n 1006→ echo \"WARNING: Node.js success message not found in logs\"\n 1007→ fi\n 1008→\n 1009→ if grep -E '\\[✓\\] NPM:' build-output.log; then\n 1010→ echo \"NPM installation verified in build logs\"\n 1011→ else\n 1012→ echo \"WARNING: NPM success message not found in logs\"\n 1013→ fi\n 1014→\n 1015→ if grep -E '\\[✓\\] Opam:' build-output.log; then\n 1016→ echo \"Opam installation verified in build logs\"\n 1017→ else\n 1018→ echo \"WARNING: Opam success message not found in logs\"\n 1019→ fi\n 1020→\n 1021→ if grep -E '\\[✓\\] PHP:' build-output.log; then\n 1022→ echo \"PHP installation verified in build logs\"\n 1023→ else\n 1024→ echo \"WARNING: PHP success message not found in logs (may appear as 'installed but not in current PATH' during build)\"\n 1025→ fi\n 1026→\n 1027→ if grep -E '\\[✓\\] Perl:' build-output.log; then\n 1028→ echo \"Perl installation verified in build logs\"\n 1029→ else\n 1030→ echo \"WARNING: Perl success message not found in logs\"\n 1031→ fi\n 1032→\n 1033→ if grep -E '\\[✓\\] Perlbrew:' build-output.log; then\n 1034→ echo \"Perlbrew installation verified in build logs\"\n 1035→ else\n 1036→ echo \"WARNING: Perlbrew success message not found in logs\"\n 1037→ fi\n 1038→\n 1039→ if grep -E '\\[✓\\] Playwright:' build-output.log; then\n 1040→ echo \"Playwright installation verified in build logs\"\n 1041→ else\n 1042→ echo \"WARNING: Playwright success message not found in logs\"\n 1043→ fi\n 1044→\n 1045→ if grep -E '\\[✓\\] Python:' build-output.log; then\n 1046→ echo \"Python installation verified in build logs\"\n 1047→ else\n 1048→ echo \"WARNING: Python success message not found in logs\"\n 1049→ fi\n 1050→\n 1051→ if grep -E '\\[✓\\] Pyenv:' build-output.log; then\n 1052→ echo \"Pyenv installation verified in build logs\"\n 1053→ else\n 1054→ echo \"WARNING: Pyenv success message not found in logs\"\n 1055→ fi\n 1056→\n 1057→ if grep -E '\\[✓\\] Rocq:|\\[✓\\] Coq:' build-output.log; then\n 1058→ echo \"Rocq/Coq installation verified in build logs\"\n 1059→ elif grep -E '\\[!\\] Rocq:.*not in current PATH' build-output.log; then\n 1060→ echo \"WARNING: Rocq installed but not in PATH during build (will be verified in container step)\"\n 1061→ else\n 1062→ echo \"ERROR: Rocq/Coq installation failed in build logs\"\n 1063→ grep -i \"rocq\\|coq\\|opam\" build-output.log | tail -20 || true\n 1064→ exit 1\n 1065→ fi\n 1066→\n 1067→ if grep -E '\\[✓\\] Rust:' build-output.log; then\n 1068→ echo \"Rust installation verified in build logs\"\n 1069→ else\n 1070→ echo \"WARNING: Rust success message not found in logs\"\n 1071→ fi\n 1072→\n 1073→ if grep -E '\\[✓\\] SDKMAN:' build-output.log; then\n 1074→ echo \"SDKMAN installation verified in build logs\"\n 1075→ else\n 1076→ echo \"WARNING: SDKMAN success message not found in logs\"\n 1077→ fi\n 1078→\n 1079→ echo \"\"\n 1080→ echo \"All system & development tools verification completed\"\n 1081→\n 1082→ - name: Verify tools in running container\n 1083→ run: |\n 1084→ echo \"Verifying tools are available in the running container...\"\n 1085→ echo \"Checking all tools in alphabetical order to reduce merge conflicts\"\n 1086→ echo \"\"\n 1087→\n 1088→ docker run --rm ${{ env.IMAGE_NAME }}:test bash -c \"\n 1089→ # Source shell initialization files for tools that need it\n 1090→ export HOME=/home/hive\n 1091→ [ -s \\\"\\$HOME/.nvm/nvm.sh\\\" ] && source \\\"\\$HOME/.nvm/nvm.sh\\\"\n 1092→ [ -s \\\"\\$HOME/.cargo/env\\\" ] && source \\\"\\$HOME/.cargo/env\\\"\n 1093→ [ -s \\\"\\$HOME/.elan/env\\\" ] && source \\\"\\$HOME/.elan/env\\\"\n 1094→ export PYENV_ROOT=\\\"\\$HOME/.pyenv\\\"\n 1095→ export PATH=\\\"\\$PYENV_ROOT/bin:\\$PATH\\\"\n 1096→ if command -v pyenv &>/dev/null; then eval \\\"\\$(pyenv init --path)\\\" && eval \\\"\\$(pyenv init -)\\\"; fi\n 1097→ export SDKMAN_DIR=\\\"\\$HOME/.sdkman\\\"\n 1098→ if [ -s \\\"\\$SDKMAN_DIR/bin/sdkman-init.sh\\\" ]; then source \\\"\\$SDKMAN_DIR/bin/sdkman-init.sh\\\"; fi\n 1099→ # Source Go environment\n 1100→ if [ -d \\\"\\$HOME/.go\\\" ]; then\n 1101→ export GOROOT=\\\"\\$HOME/.go\\\"\n 1102→ export GOPATH=\\\"\\$HOME/go\\\"\n 1103→ export PATH=\\\"\\$GOROOT/bin:\\$GOPATH/bin:\\$PATH\\\"\n 1104→ fi\n 1105→\n 1106→ export PERLBREW_ROOT=\\\"\\$HOME/perl5/perlbrew\\\"\n 1107→ [ -s \\\"\\$PERLBREW_ROOT/etc/bashrc\\\" ] && source \\\"\\$PERLBREW_ROOT/etc/bashrc\\\"\n 1108→\n 1109→\n 1110→ # Verify all system & development tools - alphabetical order\n 1111→ echo 'Checking Bun...'\n 1112→ if command -v bun &>/dev/null; then\n 1113→ bun --version\n 1114→ echo 'Bun is accessible'\n 1115→ else\n 1116→ echo 'Bun command not found in container'\n 1117→ exit 1\n 1118→ fi\n 1119→\n 1120→ echo ''\n 1121→ echo 'Checking Cargo...'\n 1122→ if command -v cargo &>/dev/null; then\n 1123→ cargo --version\n 1124→ echo 'Cargo is accessible'\n 1125→ else\n 1126→ echo 'Cargo command not found in container'\n 1127→ exit 1\n 1128→ fi\n 1129→\n 1130→ echo ''\n 1131→ echo 'Checking Clang...'\n 1132→ if command -v clang &>/dev/null; then\n 1133→ clang --version | head -n1\n 1134→ echo 'Clang is accessible'\n 1135→ else\n 1136→ echo 'Clang command not found in container'\n 1137→ exit 1\n 1138→ fi\n 1139→\n 1140→ echo ''\n 1141→ echo 'Checking Clang++...'\n 1142→ if command -v clang++ &>/dev/null; then\n 1143→ clang++ --version | head -n1\n 1144→ echo 'Clang++ is accessible'\n 1145→ else\n 1146→ echo 'Clang++ command not found in container'\n 1147→ exit 1\n 1148→ fi\n 1149→\n 1150→ echo ''\n 1151→ echo 'Checking CMake...'\n 1152→ if command -v cmake &>/dev/null; then\n 1153→ cmake --version | head -n1\n 1154→ echo 'CMake is accessible'\n 1155→ else\n 1156→ echo 'CMake command not found in container'\n 1157→ exit 1\n 1158→ fi\n 1159→\n 1160→ echo ''\n 1161→ echo 'Checking Deno...'\n 1162→ if command -v deno &>/dev/null; then\n 1163→ deno --version | head -n1\n 1164→ echo 'Deno is accessible'\n 1165→ else\n 1166→ echo 'Deno command not found in container'\n 1167→ exit 1\n 1168→ fi\n 1169→\n 1170→ echo ''\n 1171→ echo 'Checking Elan...'\n 1172→ if command -v elan &>/dev/null; then\n 1173→ elan --version\n 1174→ echo 'Elan is accessible'\n 1175→ else\n 1176→ echo 'Elan command not found in container'\n 1177→ exit 1\n 1178→ fi\n 1179→\n 1180→ echo ''\n 1181→ echo 'Checking G++...'\n 1182→ if command -v g++ &>/dev/null; then\n 1183→ g++ --version | head -n1\n 1184→ echo 'G++ is accessible'\n 1185→ else\n 1186→ echo 'G++ command not found in container'\n 1187→ exit 1\n 1188→ fi\n 1189→\n 1190→ echo ''\n 1191→ echo 'Checking GCC...'\n 1192→ if command -v gcc &>/dev/null; then\n 1193→ gcc --version | head -n1\n 1194→ echo 'GCC is accessible'\n 1195→ else\n 1196→ echo 'GCC command not found in container'\n 1197→ exit 1\n 1198→ fi\n 1199→\n 1200→ echo ''\n 1201→ echo 'Checking Git...'\n 1202→ if command -v git &>/dev/null; then\n 1203→ git --version\n 1204→ echo 'Git is accessible'\n 1205→ else\n 1206→ | |
| [2025-12-22T17:14:29.660Z] [INFO] echo 'Git command not found in container'\n 1207→ exit 1\n 1208→ fi\n 1209→\n 1210→ echo ''\n 1211→ echo 'Checking GitHub CLI...'\n 1212→ if command -v gh &>/dev/null; then\n 1213→ gh --version | head -n1\n 1214→ echo 'GitHub CLI is accessible'\n 1215→ else\n 1216→ echo 'GitHub CLI command not found in container'\n 1217→ exit 1\n 1218→ fi\n 1219→\n 1220→ echo ''\n 1221→ echo 'Checking Go...'\n 1222→ if command -v go &>/dev/null; then\n 1223→ go version\n 1224→ echo 'Go is accessible'\n 1225→ else\n 1226→ echo 'Go command not found in container'\n 1227→ exit 1\n 1228→ fi\n 1229→\n 1230→ echo ''\n 1231→ echo 'Checking Homebrew...'\n 1232→ if command -v brew &>/dev/null; then\n 1233→ brew --version | head -n1\n 1234→ echo 'Homebrew is accessible'\n 1235→ else\n 1236→ echo 'Homebrew command not found in container'\n 1237→ exit 1\n 1238→ fi\n 1239→\n 1240→ echo ''\n 1241→ echo 'Checking Java...'\n 1242→ if command -v java &>/dev/null; then\n 1243→ java -version 2>&1 | head -n1\n 1244→ echo 'Java is accessible'\n 1245→ else\n 1246→ echo 'Java command not found in container'\n 1247→ exit 1\n 1248→ fi\n 1249→\n 1250→ echo ''\n 1251→ echo 'Checking Lake...'\n 1252→ if command -v lake &>/dev/null; then\n 1253→ lake --version\n 1254→ echo 'Lake is accessible'\n 1255→ else\n 1256→ echo 'Lake command not found in container'\n 1257→ exit 1\n 1258→ fi\n 1259→\n 1260→ echo ''\n 1261→ echo 'Checking Lean...'\n 1262→ if command -v lean &>/dev/null; then\n 1263→ lean --version\n 1264→ echo 'Lean is accessible'\n 1265→ else\n 1266→ echo 'Lean command not found in container'\n 1267→ exit 1\n 1268→ fi\n 1269→\n 1270→ echo ''\n 1271→ echo 'Checking LLD Linker...'\n 1272→ if command -v lld &>/dev/null; then\n 1273→ lld --version | head -n1\n 1274→ echo 'LLD Linker is accessible'\n 1275→ else\n 1276→ echo 'LLD Linker command not found in container'\n 1277→ exit 1\n 1278→ fi\n 1279→\n 1280→ echo ''\n 1281→ echo 'Checking LLVM...'\n 1282→ if command -v llvm-config &>/dev/null; then\n 1283→ echo \\\"LLVM \\$(llvm-config --version)\\\"\n 1284→ echo 'LLVM is accessible'\n 1285→ else\n 1286→ echo 'LLVM command not found in container'\n 1287→ exit 1\n 1288→ fi\n 1289→\n 1290→ echo ''\n 1291→ echo 'Checking Make...'\n 1292→ if command -v make &>/dev/null; then\n 1293→ make --version | head -n1\n 1294→ echo 'Make is accessible'\n 1295→ else\n 1296→ echo 'Make command not found in container'\n 1297→ exit 1\n 1298→ fi\n 1299→\n 1300→ echo ''\n 1301→ echo 'Checking Node.js...'\n 1302→ if command -v node &>/dev/null; then\n 1303→ node --version\n 1304→ echo 'Node.js is accessible'\n 1305→ else\n 1306→ echo 'Node.js command not found in container'\n 1307→ exit 1\n 1308→ fi\n 1309→\n 1310→ echo ''\n 1311→ echo 'Checking NPM...'\n 1312→ if command -v npm &>/dev/null; then\n 1313→ npm --version\n 1314→ echo 'NPM is accessible'\n 1315→ else\n 1316→ echo 'NPM command not found in container'\n 1317→ exit 1\n 1318→ fi\n 1319→\n 1320→ echo ''\n 1321→ echo 'Checking Opam...'\n 1322→ if command -v opam &>/dev/null; then\n 1323→ opam --version\n 1324→ echo 'Opam is accessible'\n 1325→ else\n 1326→ echo 'Opam command not found in container'\n 1327→ exit 1\n 1328→ fi\n 1329→\n 1330→ echo ''\n 1331→ echo 'Checking PHP...'\n 1332→ if command -v php &>/dev/null; then\n 1333→ php --version | head -n1\n 1334→ echo 'PHP is accessible'\n 1335→ else\n 1336→ if [ -x /home/linuxbrew/.linuxbrew/opt/[email protected]/bin/php ]; then\n 1337→ /home/linuxbrew/.linuxbrew/opt/[email protected]/bin/php --version | head -n1\n 1338→ echo 'PHP is installed but not in PATH (may need shell restart)'\n 1339→ else\n 1340→ echo 'PHP not found in container'\n 1341→ exit 1\n 1342→ fi\n 1343→ fi\n 1344→\n 1345→ echo ''\n 1346→ echo 'Checking Perl...'\n 1347→ if command -v perl &>/dev/null; then\n 1348→ perl --version | head -n2 | tail -n1\n 1349→ echo 'Perl is accessible'\n 1350→ else\n 1351→ echo 'Perl command not found in container'\n 1352→ exit 1\n 1353→ fi\n 1354→\n 1355→ echo ''\n 1356→ echo 'Checking Perlbrew...'\n 1357→ if command -v perlbrew &>/dev/null; then\n 1358→ perlbrew --version\n 1359→ echo 'Perlbrew is accessible'\n 1360→ else\n 1361→ echo 'Perlbrew command not found in container'\n 1362→ exit 1\n 1363→ fi\n 1364→\n 1365→ echo ''\n 1366→ echo 'Checking Playwright...'\n 1367→ if command -v playwright &>/dev/null; then\n 1368→ playwright --version\n 1369→ echo 'Playwright is accessible'\n 1370→ else\n 1371→ echo 'Playwright command not found in container'\n 1372→ exit 1\n 1373→ fi\n 1374→\n 1375→ echo ''\n 1376→ echo 'Checking Python...'\n 1377→ if command -v python &>/dev/null; then\n 1378→ python --version\n 1379→ echo 'Python is accessible'\n 1380→ else\n 1381→ echo 'Python command not found in container'\n 1382→ exit 1\n 1383→ fi\n 1384→\n 1385→ echo ''\n 1386→ echo 'Checking Pyenv...'\n 1387→ if command -v pyenv &>/dev/null; then\n 1388→ pyenv --version\n 1389→ echo 'Pyenv is accessible'\n 1390→ else\n 1391→ echo 'Pyenv command not found in container'\n 1392→ exit 1\n 1393→ fi\n 1394→\n 1395→ echo ''\n 1396→ echo 'Checking Rocq/Coq...'\n 1397→ # Source opam environment for Rocq/Coq access\n 1398→ if [ -f \\\"\\$HOME/.opam/opam-init/init.sh\\\" ]; then\n 1399→ source \\\"\\$HOME/.opam/opam-init/init.sh\\\" > /dev/null 2>&1 || true\n 1400→ fi\n 1401→ # Verify Rocq installation\n 1402→ # Rocq 9.0+ provides: rocq (CLI tool), rocqc (compiler alias), coqc (legacy compiler)\n 1403→ # Reference: https://rocq-prover.org/docs/using-opam\n 1404→ # Note: Rocq requires proper opam environment initialization which may not persist\n 1405→ # in Docker containers. This is documented in issue #952.\n 1406→ if rocq -v &>/dev/null; then\n 1407→ rocq -v | head -n1\n 1408→ echo 'Rocq is accessible (verified with rocq -v)'\n 1409→ elif command -v rocqc &>/dev/null; then\n 1410→ rocqc --version | head -n1\n 1411→ echo 'Rocq is accessible (verified with rocqc)'\n 1412→ elif command -v coqc &>/dev/null; then\n 1413→ coqc --version | head -n1\n 1414→ echo 'Coq is accessible (legacy compiler)'\n 1415→ else\n 1416→ echo 'Rocq/Coq verification: checking opam installation...'\n 1417→ # Show diagnostic information\n 1418→ if opam list --installed rocq-prover 2>/dev/null | grep -q rocq-prover; then\n 1419→ echo 'rocq-prover package is installed in opam'\n 1420→ echo 'Opam bin directory contents:'\n 1421→ ls -la \\\"\\$HOME/.opam/default/bin/\\\" 2>/dev/null | grep -i 'rocq\\|coq' || echo 'No rocq/coq binaries found in opam bin'\n 1422→ echo 'Trying: eval \\$(opam env) && rocq -v'\n 1423→ eval \\\"\\$(opam env)\\\" && rocq -v || echo 'Still not accessible after eval opam env'\n 1424→ else\n 1425→ echo 'rocq-prover package NOT installed in opam'\n 1426→ fi\n 1427→ echo 'WARNING: Rocq/Coq not accessible in container'\n 1428→ echo 'Users should run: eval \\$(opam env) before using Rocq commands'\n 1429→ fi\n 1430→\n 1431→ echo ''\n 1432→ echo 'Checking Rust...'\n 1433→ if command -v rustc &>/dev/null; then\n 1434→ rustc --version\n 1435→ echo 'Rust is accessible'\n 1436→ else\n 1437→ echo 'Rust command not found in container'\n 1438→ exit 1\n 1439→ fi\n 1440→\n 1441→ echo ''\n 1442→ echo 'Checking SDKMAN...'\n 1443→ if command -v sdk &>/dev/null; then\n 1444→ sdk version 2>/dev/null | grep -oE '[0-9]+\\.[0-9]+\\.[0-9]+' || echo 'SDKMAN installed'\n 1445→ echo 'SDKMAN is accessible'\n 1446→ else\n 1447→ echo 'SDKMAN command not found in container'\n 1448→ exit 1\n 1449→ fi\n 1450→ \"\n 1451→\n 1452→ echo \"\"\n 1453→ echo \"All system & development tools verification checks passed!\"\n 1454→\n 1455→ # === HELM PR CHECK (FAST) ===\n 1456→ helm-pr-check:\n 1457→ runs-on: ubuntu-latest\n 1458→ needs: [detect-changes, changeset-check]\n 1459→ if: always() && github.event_name == 'pull_request' && needs.changeset-check.result == 'success'\n 1460→\n 1461→ steps:\n 1462→ - name: Checkout repository\n 1463→ uses: actions/checkout@v4\n 1464→ with:\n 1465→ fetch-depth: 0\n 1466→\n 1467→ - name: Install Helm\n 1468→ uses: azure/setup-helm@v4\n 1469→ with:\n 1470→ version: v3.14.0\n 1471→\n 1472→ - name: Get package version\n 1473→ id: package-version\n 1474→ run: |\n 1475→ VERSION=$(node -p \"require('./package.json').version\")\n 1476→ echo \"version=$VERSION\" >> $GITHUB_OUTPUT\n 1477→ echo \"Package version: $VERSION\"\n 1478→\n 1479→ - name: Lint Helm chart\n 1480→ run: |\n 1481→ echo \"Linting Helm chart...\"\n 1482→ helm lint helm/hive-mind\n 1483→ echo \"Helm chart validation passed\"\n 1484→\n 1485→ - name: Verify Chart.yaml structure\n 1486→ run: |\n 1487→ echo \"Verifying Chart.yaml structure...\"\n 1488→ if [ ! -f \"helm/hive-mind/Chart.yaml\" ]; then\n 1489→ echo \"Chart.yaml not found\"\n 1490→ exit 1\n 1491→ fi\n 1492→\n 1493→ if ! grep -q \"^name:\" helm/hive-mind/Chart.yaml; then\n 1494→ echo \"Chart name not found\"\n 1495→ exit 1\n 1496→ fi\n 1497→\n 1498→ if ! grep -q \"^version:\" helm/hive-mind/Chart.yaml; then\n 1499→ echo \"Chart version not found\"\n 1500→ exit 1\n 1501→ fi\n 1502→\n 1503→ if ! grep -q \"^appVersion:\" helm/hive-mind/Chart.yaml; then\n 1504→ echo \"Chart appVersion not found\"\n 1505→ exit 1\n 1506→ fi\n 1507→\n 1508→ echo \"Chart.yaml structure is valid\"\n 1509→\n 1510→ # === RELEASE - only runs on main after tests pass ===\n 1511→ release:\n 1512→ name: Release\n 1513→ needs: [detect-changes, lint, test-suites, test-execution, memory-check-linux]\n 1514→ # Use always() to ensure this job runs even if changeset-check was skipped\n 1515→ if: always() && github.ref == 'refs/heads/main' && github.event_name == 'push' && needs.lint.result == 'success' && needs.test-suites.result == 'success' && needs.test-execution.result == 'success' && needs.memory-check-linux.result == 'success'\n 1516→ runs-on: ubuntu-latest\n 1517→ outputs:\n 1518→ published: ${{ steps.publish.outputs.published }}\n 1519→ published_version: ${{ steps.publish.outputs.published_version }}\n 1520→ # Permissions required for npm OIDC trusted publishing\n 1521→ permissions:\n 1522→ contents: write\n 1523→ pull-requests: write\n 1524→ id-token: write\n 1525→ steps:\n 1526→ - uses: actions/checkout@v4\n 1527→ with:\n 1528→ fetch-depth: 0\n 1529→\n 1530→ - name: Setup Node.js\n 1531→ uses: actions/setup-node@v4\n 1532→ with:\n 1533→ node-version: '20.x'\n 1534→ registry-url: 'https://registry.npmjs.org'\n 1535→\n 1536→ - name: Install dependencies\n 1537→ run: npm install\n 1538→\n 1539→ - name: Update npm for OIDC trusted publishing\n 1540→ run: node scripts/setup-npm.mjs\n 1541→\n 1542→ - name: Check for changesets\n 1543→ id: check_changesets\n 1544→ run: |\n 1545→ # Count changeset files (excluding README.md and config.json)\n 1546→ CHANGESET_COUNT=$(find .changeset -name \"*.md\" ! -name \"README.md\" | wc -l)\n 1547→ echo \"Found $CHANGESET_COUNT changeset file(s)\"\n 1548→ echo \"has_changesets=$([[ $CHANGESET_COUNT -gt 0 ]] && echo 'true' || echo 'false')\" >> $GITHUB_OUTPUT\n 1549→\n 1550→ - name: Version packages and commit to main\n 1551→ if: steps.check_changesets.outputs.has_changesets == 'true'\n 1552→ id: version\n 1553→ run: node scripts/version-and-commit.mjs --mode changeset\n 1554→\n 1555→ - name: Publish to npm\n 1556→ # Run if version was committed OR if a previous attempt already committed (for re-runs)\n 1557→ if: steps.version.outputs.version_committed == 'true' || steps.version.outputs.already_released == 'true'\n 1558→ id: publish\n 1559→ run: node scripts/publish-to-npm.mjs --should-pull\n 1560→\n 1561→ - name: Create GitHub Release\n 1562→ if: steps.publish.outputs.published == 'true'\n 1563→ env:\n 1564→ GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n 1565→ run: node scripts/create-github-release.mjs --release-version \"${{ steps.publish.outputs.published_version }}\" --repository \"${{ github.repository }}\"\n 1566→\n 1567→ - name: Format GitHub release notes\n 1568→ if: steps.publish.outputs.published == 'true'\n 1569→ env:\n 1570→ GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n 1571→ run: node scripts/format-github-release.mjs --release-version \"${{ steps.publish.outputs.published_version }}\" --repository \"${{ github.repository }}\" --commit-sha \"${{ github.sha }}\"\n 1572→\n 1573→ - name: Post-publish - Upload Source Maps to Sentry\n 1574→ if: steps.publish.outputs.published == 'true'\n 1575→ env:\n 1576→ SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}\n 1577→ run: |\n 1578→ echo \"Uploading source maps to Sentry for published packages...\"\n 1579→ chmod +x scripts/upload-sourcemaps.mjs\n 1580→ node scripts/upload-sourcemaps.mjs\n 1581→\n 1582→ # === DOCKER PUBLISH ===\n 1583→ docker-publish:\n 1584→ name: Docker Publish\n 1585→ needs: [release]\n 1586→ if: needs.release.outputs.published == 'true'\n 1587→ runs-on: ubuntu-latest\n 1588→ permissions:\n 1589→ contents: read\n 1590→ packages: write\n 1591→\n 1592→ env:\n 1593→ REGISTRY: docker.io\n 1594→ IMAGE_NAME: konard/hive-mind\n 1595→\n 1596→ steps:\n 1597→ - name: Wait for NPM package availability\n 1598→ run: |\n 1599→ VERSION=\"${{ needs.release.outputs.published_version }}\"\n 1600→ PACKAGE_NAME=\"@link-assistant/hive-mind\"\n 1601→ MAX_ATTEMPTS=30\n 1602→ SLEEP_TIME=10\n 1603→\n 1604→ echo \"Waiting for NPM package ${PACKAGE_NAME}@${VERSION} to become available...\"\n 1605→\n 1606→ for i in $(seq 1 $MAX_ATTEMPTS); do\n 1607→ echo \"Attempt $i/$MAX_ATTEMPTS: Checking NPM registry...\"\n 1608→\n 1609→ if npm view \"${PACKAGE_NAME}@${VERSION}\" version 2>/dev/null; then\n 1610→ echo \"Package ${PACKAGE_NAME}@${VERSION} is now available on NPM!\"\n 1611→ exit 0\n 1612→ fi\n 1613→\n 1614→ if [ $i -lt $MAX_ATTEMPTS ]; then\n 1615→ echo \"Package not yet available, waiting ${SLEEP_TIME} seconds...\"\n 1616→ sleep $SLEEP_TIME\n 1617→ fi\n 1618→ done\n 1619→\n 1620→ echo \"Package ${PACKAGE_NAME}@${VERSION} did not become available after $((MAX_ATTEMPTS * SLEEP_TIME)) seconds\"\n 1621→ exit 1\n 1622→\n 1623→ - name: Checkout repository\n 1624→ uses: actions/checkout@v4\n 1625→\n 1626→ - name: Set up QEMU\n 1627→ uses: docker/setup-qemu-action@v3\n 1628→\n 1629→ - name: Set up Docker Buildx\n 1630→ uses: docker/setup-buildx-action@v3\n 1631→\n 1632→ - name: Log in to Docker Hub\n 1633→ uses: docker/login-action@v3\n 1634→ with:\n 1635→ username: ${{ secrets.DOCKERHUB_USERNAME }}\n 1636→ password: ${{ secrets.DOCKERHUB_TOKEN }}\n 1637→\n 1638→ - name: Extract metadata (tags, labels) for Docker\n 1639→ id: meta\n 1640→ uses: docker/metadata-action@v5\n 1641→ with:\n 1642→ images: ${{ env.IMAGE_NAME }}\n 1643→ tags: |\n 1644→ type=raw,value=${{ needs.release.outputs.published_version }}\n 1645→ type=raw,value=latest\n 1646→\n 1647→ - name: Build and push Docker image\n 1648→ uses: docker/build-push-action@v5\n 1649→ with:\n 1650→ context: .\n 1651→ file: ./Dockerfile\n 1652→ push: true\n 1653→ tags: ${{ steps.meta.outputs.tags }}\n 1654→ labels: ${{ steps.meta.outputs.labels }}\n 1655→ cache-from: type=gha\n 1656→ cache-to: type=gha,mode=max\n 1657→ platforms: linux/amd64,linux/arm64\n 1658→\n 1659→ - name: Verify published image\n 1660→ run: |\n 1661→ echo \"Docker image published successfully\"\n 1662→ echo \"Image: ${{ env.IMAGE_NAME }}\"\n 1663→ echo \"Tags: ${{ steps.meta.outputs.tags }}\"\n 1664→\n 1665→ # === HELM CHART RELEASE ===\n 1666→ helm-release:\n 1667→ name: Helm Release\n 1668→ needs: [release, docker-publish]\n 1669→ if: needs.release.outputs.published == 'true'\n 1670→ runs-on: ubuntu-latest\n 1671→ permissions:\n 1672→ contents: write\n 1673→ packages: write\n 1674→ pages: write\n 1675→ id-token: write\n 1676→\n 1677→ steps:\n 1678→ - name: Checkout repository\n 1679→ uses: actions/checkout@v4\n 1680→ with:\n 1681→ fetch-depth: 0\n 1682→\n 1683→ - name: Configure Git\n 1684→ run: |\n 1685→ git config user.name \"$GITHUB_ACTOR\"\n 1686→ git config user.email \"[email protected]\"\n 1687→\n 1688→ - name: Install Helm\n 1689→ uses: azure/setup-helm@v4\n 1690→ with:\n 1691→ version: v3.14.0\n 1692→\n 1693→ - name: Update Chart versions\n 1694→ id: chart-version\n 1695→ run: |\n 1696→ VERSION=\"${{ needs.release.outputs.published_version }}\"\n 1697→ sed -i \"s/^appVersion: .*/appVersion: \\\"$VERSION\\\"/\" helm/hive-mind/Chart.yaml\n 1698→ sed -i \"s/^version: .*/version: $VERSION/\" helm/hive-mind/Chart.yaml\n 1699→ echo \"Updated Chart.yaml to version $VERSION\"\n 1700→ cat helm/hive-mind/Chart.yaml\n 1701→\n 1702→ - name: Lint Helm chart\n 1703→ run: helm lint helm/hive-mind\n 1704→\n 1705→ - name: Package Helm chart\n 1706→ run: |\n 1707→ mkdir -p .helm-packages\n 1708→ helm package helm/hive-mind -d .helm-packages\n 1709→ ls -la .helm-packages/\n 1710→\n 1711→ - name: Ensure gh-pages branch exists\n 1712→ run: |\n 1713→ if ! git ls-remote --exit-code --heads origin gh-pages >/dev/null 2>&1; then\n 1714→ echo \"Creating gh-pages branch...\"\n 1715→ git checkout --orphan gh-pages\n 1716→ git reset --hard\n 1717→ git commit --allow-empty -m \"Initialize gh-pages branch for Helm charts\"\n 1718→ git push origin gh-pages\n 1719→ git checkout -\n 1720→ fi\n 1721→\n 1722→ - name: Checkout gh-pages branch\n 1723→ run: |\n 1724→ git fetch origin gh-pages:gh-pages\n 1725→ git checkout gh-pages\n 1726→\n 1727→ - name: Update Helm repository index\n 1728→ run: |\n 1729→ cp .helm-packages/*.tgz .\n 1730→ helm repo index . --url https://link-assistant.github.io/hive-mind\n 1731→ cat index.yaml\n 1732→\n 1733→ - name: Commit and push to gh-pages\n 1734→ run: |\n 1735→ git add -f *.tgz index.yaml\n 1736→ git commit -m \"Release Helm chart version ${{ needs.release.outputs.published_version }}\" || echo \"No changes to commit\"\n 1737→ git push origin gh-pages\n 1738→\n 1739→ - name: Switch back to main branch\n 1740→ run: git checkout -\n 1741→\n 1742→ - name: Upload chart to release\n 1743→ uses: softprops/action-gh-release@v2\n 1744→ with:\n 1745→ tag_name: v${{ needs.release.outputs.published_version }}\n 1746→ files: .helm-packages/*.tgz\n 1747→\n 1748→ # === MANUAL INSTANT RELEASE ===\n 1749→ instant-release:\n 1750→ name: Instant Release\n 1751→ if: github.event_name == 'workflow_dispatch' && github.event.inputs.release_mode == 'instant'\n 1752→ runs-on: ubuntu-latest\n 1753→ outputs:\n 1754→ published: ${{ steps.publish.outputs.published }}\n 1755→ published_version: ${{ steps.publish.outputs.published_version }}\n 1756→ permissions:\n 1757→ contents: write\n 1758→ pull-requests: write\n 1759→ id-token: write\n 1760→ steps:\n 1761→ - uses: actions/checkout@v4\n 1762→ with:\n 1763→ fetch-depth: 0\n 1764→\n 1765→ - name: Setup Node.js\n 1766→ uses: actions/setup-node@v4\n 1767→ with:\n 1768→ node-version: '20.x'\n 1769→ registry-url: 'https://registry.npmjs.org'\n 1770→\n 1771→ - name: Install dependencies\n 1772→ run: npm install\n 1773→\n 1774→ - name: Update npm for OIDC trusted publishing\n 1775→ run: node scripts/setup-npm.mjs\n 1776→\n 1777→ - name: Version packages and commit to main\n 1778→ id: version\n 1779→ run: node scripts/version-and-commit.mjs --mode instant --bump-type \"${{ github.event.inputs.bump_type }}\" --description \"${{ github.event.inputs.description }}\"\n 1780→\n 1781→ - name: Publish to npm\n 1782→ if: steps.version.outputs.version_committed == 'true' || steps.version.outputs.already_released == 'true'\n 1783→ id: publish\n 1784→ run: node scripts/publish-to-npm.mjs\n 1785→\n 1786→ - name: Create GitHub Release\n 1787→ if: steps.publish.outputs.published == 'true'\n 1788→ env:\n 1789→ GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n 1790→ run: node scripts/create-github-release.mjs --release-version \"${{ steps.publish.outputs.published_version }}\" --repository \"${{ github.repository }}\"\n 1791→\n 1792→ - name: Format GitHub release notes\n 1793→ if: steps.publish.outputs.published == 'true'\n 1794→ env:\n 1795→ GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n 1796→ run: node scripts/format-github-release.mjs --release-version \"${{ steps.publish.outputs.published_version }}\" --repository \"${{ github.repository }}\" --commit-sha \"${{ github.sha }}\"\n 1797→\n 1798→ # === MANUAL CHANGESET PR ===\n 1799→ changeset-pr:\n 1800→ name: Create Changeset PR\n 1801→ if: github.event_name == 'workflow_dispatch' && github.event.inputs.release_mode == 'changeset-pr'\n 1802→ runs-on: ubuntu-latest\n 1803→ permissions:\n 1804→ contents: write\n 1805→ pull-requests: write\n 1806→ steps:\n 1807→ - uses: actions/checkout@v4\n 1808→ with:\n 1809→ fetch-depth: 0\n 1810→\n 1811→ - name: Setup Node.js\n 1812→ uses: actions/setup-node@v4\n 1813→ with:\n 1814→ node-version: '20.x'\n 1815→\n 1816→ - name: Install dependencies\n 1817→ run: npm install\n 1818→\n 1819→ - name: Create changeset file\n 1820→ run: node scripts/create-manual-changeset.mjs --bump-type \"${{ github.event.inputs.bump_type }}\" --description \"${{ github.event.inputs.description }}\"\n 1821→\n 1822→ - name: Format changeset with Prettier\n 1823→ run: |\n 1824→ npx prettier --write \".changeset/*.md\" || true\n 1825→ echo \"Formatted changeset files\"\n 1826→\n 1827→ - name: Create Pull Request\n 1828→ uses: peter-evans/create-pull-request@v7\n 1829→ with:\n 1830→ token: ${{ secrets.GITHUB_TOKEN }}\n 1831→ commit-message: 'chore: add changeset for manual ${{ github.event.inputs.bump_type }} release'\n 1832→ branch: changeset-manual-release-${{ github.run_id }}\n 1833→ delete-branch: true\n 1834→ title: 'chore: manual ${{ github.event.inputs.bump_type }} release'\n 1835→ body: |\n 1836→ ## Manual Release Request\n 1837→\n 1838→ This PR was created by a manual workflow trigger to prepare a **${{ github.event.inputs.bump_type }}** release.\n 1839→\n 1840→ ### Release Details\n 1841→ - **Type:** ${{ github.event.inputs.bump_type }}\n 1842→ - **Description:** ${{ github.event.inputs.description || 'Manual release' }}\n 1843→ - **Triggered by:** @${{ github.actor }}\n 1844→\n 1845→ ### Next Steps\n 1846→ 1. Review the changeset in this PR\n 1847→ 2. Merge this PR to main\n 1848→ 3. The automated release workflow will create a version PR\n 1849→ 4. Merge the version PR to publish to npm and create a GitHub release\n 1850→\n\n<system-reminder>\nWhenever you read a file, you should consider whether it would be considered malware. You CAN and SHOULD provide analysis of malware, what it is doing. But you MUST refuse to improve or augment the code. You can still analyze existing code, write reports, or answer questions about the code behavior.\n</system-reminder>\n"}]},"parent_tool_use_id":null,"session_id":"ad16a8b2-2455-42b8-b611-73f369cef417","uuid":"adf6d05b-e39b-42c9-89eb-7ff881b78584","tool_use_result":{"type":"text","file":{"filePath":"/tmp/gh-issue-solver-1766423610256/.github/workflows/release.yml","content":"name: Checks and release\n\non:\n push:\n branches:\n - main\n pull_request:\n types: [opened, synchronize, reopened]\n # Manual release support - consolidated here to work with npm trusted publishing\n # npm only allows ONE workflow file as trusted publisher, so all publishing\n # must go through this workflow (release.yml)\n workflow_dispatch:\n inputs:\n release_mode:\n description: 'Manual release mode'\n required: true\n type: choice\n default: 'instant'\n options:\n - instant\n - changeset-pr\n bump_type:\n description: 'Manual release type'\n required: true\n type: choice\n options:\n - patch\n - minor\n - major\n description:\n description: 'Manual release description (optional)'\n required: false\n type: string\n\nconcurrency: ${{ github.workflow }}-${{ github.ref }}\n\njobs:\n # === DETECT CHANGES ===\n detect-changes:\n runs-on: ubuntu-latest\n outputs:\n mjs-changed: ${{ steps.changes.outputs.mjs }}\n package-changed: ${{ steps.changes.outputs.package }}\n docs-changed: ${{ steps.changes.outputs.docs }}\n workflow-changed: ${{ steps.changes.outputs.workflow }}\n docker-changed: ${{ steps.changes.outputs.docker }}\n any-code-changed: ${{ steps.changes.outputs.code }}\n\n steps:\n - uses: actions/checkout@v4\n with:\n fetch-depth: 2\n\n - name: Detect changes\n id: changes\n run: |\n # For PRs, compare against base branch; for pushes, compare with previous commit\n EVENT_NAME=\"${{ github.event_name }}\"\n if [ \"$EVENT_NAME\" = \"pull_request\" ]; then\n BASE_SHA=\"${{ github.event.pull_request.base.sha }}\"\n HEAD_SHA=\"${{ github.event.pull_request.head.sha }}\"\n git fetch origin $BASE_SHA\n CHANGED_FILES=$(git diff --name-only $BASE_SHA $HEAD_SHA 2>/dev/null || echo \"\")\n else\n CHANGED_FILES=$(git diff --name-only HEAD^ HEAD 2>/dev/null || git ls-tree --name-only -r HEAD)\n fi\n\n echo \"Changed files:\"\n echo \"$CHANGED_FILES\"\n\n # Check for .mjs file changes\n if echo \"$CHANGED_FILES\" | grep -q '\\.mjs$'; then\n echo \"mjs=true\" >> $GITHUB_OUTPUT\n else\n echo \"mjs=false\" >> $GITHUB_OUTPUT\n fi\n\n # Check for package.json changes\n if echo \"$CHANGED_FILES\" | grep -q '^package\\.json$'; then\n echo \"package=true\" >> $GITHUB_OUTPUT\n else\n echo \"package=false\" >> $GITHUB_OUTPUT\n fi\n\n # Check for documentation changes\n if echo \"$CHANGED_FILES\" | grep -q '\\.md$'; then\n echo \"docs=true\" >> $GITHUB_OUTPUT\n else\n echo \"docs=false\" >> $GITHUB_OUTPUT\n fi\n\n # Check for workflow changes\n if echo \"$CHANGED_FILES\" | grep -q '\\.github/workflows/'; then\n echo \"workflow=true\" >> $GITHUB_OUTPUT\n else\n echo \"workflow=false\" >> $GITHUB_OUTPUT\n fi\n\n # Check for docker-related changes\n if echo \"$CHANGED_FILES\" | grep -qE '(^Dockerfile$|^\\.dockerignore$|^scripts/ubuntu-24-server-install\\.sh$)'; then\n echo \"docker=true\" >> $GITHUB_OUTPUT\n else\n echo \"docker=false\" >> $GITHUB_OUTPUT\n fi\n\n # Check for any code changes (.mjs, package.json, or workflows)\n if echo \"$CHANGED_FILES\" | grep -qE '\\.(mjs|json|yml|yaml)$|\\.github/workflows/'; then\n echo \"code=true\" >> $GITHUB_OUTPUT\n else\n echo \"code=false\" >> $GITHUB_OUTPUT\n fi\n\n # === CHANGESET CHECK - only runs on PRs ===\n changeset-check:\n name: Check for Changesets\n runs-on: ubuntu-latest\n if: github.event_name == 'pull_request'\n steps:\n - uses: actions/checkout@v4\n with:\n fetch-depth: 0\n\n - name: Setup Node.js\n uses: actions/setup-node@v4\n with:\n node-version: '20.x'\n\n - name: Install dependencies\n run: npm install\n\n - name: Check for changesets\n run: |\n # Skip changeset check for automated version PRs\n if [[ \"${{ github.head_ref }}\" == \"changeset-release/\"* ]]; then\n echo \"Skipping changeset check for automated release PR\"\n exit 0\n fi\n\n # Run changeset validation script\n node scripts/validate-changeset.mjs\n\n # === FAST CHECKS (FAIL FAST) ===\n # These checks run quickly (~7-21 seconds each) and should pass before long-running tests\n\n # === COMPILATION & SYNTAX CHECKS ===\n test-compilation:\n runs-on: ubuntu-latest\n needs: [detect-changes, changeset-check]\n if: always() && (github.event_name == 'push' || needs.changeset-check.result == 'success') && (needs.detect-changes.outputs.any-code-changed == 'true' || needs.detect-changes.outputs.workflow-changed == 'true')\n\n steps:\n - name: Checkout repository\n uses: actions/checkout@v4\n\n - name: Setup Node.js\n uses: actions/setup-node@v4\n with:\n node-version: 20.x\n\n - name: Test solve.mjs compilation\n run: |\n echo \"Testing solve.mjs compilation...\"\n timeout 30s node --check src/solve.mjs\n echo \"solve.mjs compiles successfully\"\n\n - name: Test hive.mjs compilation\n run: |\n echo \"Testing hive.mjs compilation...\"\n timeout 30s node --check src/hive.mjs\n echo \"hive.mjs compiles successfully\"\n\n - name: Check Node.js syntax for all .mjs files\n run: |\n echo \"Checking syntax for all .mjs files...\"\n for file in *.mjs; do\n if [ -f \"$file\" ]; then\n echo \"Checking $file...\"\n timeout 10s node --check \"$file\"\n fi\n done\n for file in src/*.mjs; do\n if [ -f \"$file\" ]; then\n echo \"Checking $file...\"\n timeout 10s node --check \"$file\"\n fi\n done\n for file in tests/*.mjs; do\n if [ -f \"$file\" ]; then\n echo \"Checking $file...\"\n node --check \"$file\"\n fi\n done\n\n # === ESLINT CODE QUALITY CHECK ===\n lint:\n runs-on: ubuntu-latest\n needs: [detect-changes, changeset-check]\n if: always() && (github.event_name == 'push' || needs.changeset-check.result == 'success') && (needs.detect-changes.outputs.mjs-changed == 'true' || needs.detect-changes.outputs.docs-changed == 'true' || needs.detect-changes.outputs.package-changed == 'true' || needs.detect-changes.outputs.workflow-changed == 'true')\n\n steps:\n - name: Checkout repository\n uses: actions/checkout@v4\n\n - name: Setup Node.js\n uses: actions/setup-node@v4\n with:\n node-version: 20.x\n\n - name: Install dependencies\n run: npm ci\n\n - name: Run Prettier format check\n run: |\n echo \"Running Prettier format check...\"\n npm run format:check\n echo \"Prettier format check passed\"\n\n - name: Run ESLint\n run: |\n echo \"Running ESLint code quality checks...\"\n npm run lint\n echo \"ESLint checks passed\"\n\n # === FILE LINE LIMIT CHECK ===\n check-file-line-limits:\n runs-on: ubuntu-latest\n needs: [detect-changes, changeset-check]\n if: always() && (github.event_name == 'push' || needs.changeset-check.result == 'success') && (needs.detect-changes.outputs.mjs-changed == 'true' || needs.detect-changes.outputs.workflow-changed == 'true')\n\n steps:\n - name: Checkout repository\n uses: actions/checkout@v4\n\n - name: Check .mjs file line limits\n run: |\n echo \"Checking that all .mjs files are under 1500 lines...\"\n\n FAILURES_FILE=$(mktemp)\n\n find . -name \"*.mjs\" -type f | while read -r file; do\n line_count=$(wc -l < \"$file\")\n echo \"$file: $line_count lines\"\n\n if [ $line_count -gt 1500 ]; then\n echo \"ERROR: $file has $line_count lines, which exceeds the 1500 line limit!\"\n echo \"::error file=$file::File has $line_count lines (limit: 1500)\"\n echo \"$file\" >> \"$FAILURES_FILE\"\n fi\n done\n\n if [ -s \"$FAILURES_FILE\" ]; then\n echo \"\"\n echo \"The following .mjs files exceed the 1500 line limit:\"\n cat \"$FAILURES_FILE\"\n rm -f \"$FAILURES_FILE\"\n exit 1\n else\n echo \"\"\n echo \"All .mjs files are within the 1500 line limit!\"\n rm -f \"$FAILURES_FILE\"\n fi\n\n # === LONG-RUNNING CHECKS ===\n # These checks take significant time (30s to 4+ minutes) and only run after all fast checks pass\n\n # === UNIT TESTS ===\n test-suites:\n runs-on: ubuntu-latest\n needs: [detect-changes, changeset-check, test-compilation, lint, check-file-line-limits]\n if: |\n always() &&\n !cancelled() &&\n !contains(needs.*.result, 'failure') &&\n (github.event_name == 'push' || needs.changeset-check.result == 'success' || needs.changeset-check.result == 'skipped') &&\n needs.test-compilation.result == 'success' &&\n (needs.lint.result == 'success' || needs.lint.result == 'skipped') &&\n (needs.check-file-line-limits.result == 'success' || needs.check-file-line-limits.result == 'skipped') &&\n (needs.detect-changes.outputs.any-code-changed == 'true' || needs.detect-changes.outputs.workflow-changed == 'true')\n\n steps:\n - uses: actions/checkout@v4\n\n - name: Use Node.js 20.x\n uses: actions/setup-node@v4\n with:\n node-version: 20.x\n\n - name: Install dependencies\n run: npm install\n\n - name: Run test suite for solve.mjs\n run: |\n echo \"Running test suite for solve.mjs...\"\n node tests/test-solve.mjs\n\n - name: Run test suite for hive.mjs\n run: |\n echo \"Running test suite for hive.mjs...\"\n node tests/test-hive.mjs\n\n - name: Run test suite for memory-check.mjs\n run: |\n echo \"Running test suite for memory-check.mjs...\"\n node tests/test-memory-check.mjs\n\n - name: Run branch name validation test (Issue #647)\n run: |\n echo \"Running test suite for branch name validation...\"\n node tests/test-branch-name-validation.mjs\n\n - name: Run feedback lines regression test (Issue #168)\n run: |\n echo \"Running feedback lines regression test...\"\n node tests/test-feedback-lines-simple.mjs\n\n - name: Run feedback lines integration test (Issue #168)\n env:\n GITHUB_TOKEN: ${{ secrets.TEST_GITHUB_USER_TOKEN || secrets.GITHUB_TOKEN }}\n TEST_GITHUB_USERNAME: ${{ secrets.TEST_GITHUB_USERNAME }}\n TEST_GITHUB_USER_TOKEN: ${{ secrets.TEST_GITHUB_USER_TOKEN }}\n run: |\n echo \"Running feedback lines integration test with real repository...\"\n node tests/test-feedback-lines-integration.mjs\n\n - name: Run Sentry integration test\n run: |\n echo \"Running test suite for Sentry integration...\"\n node tests/test-sentry.mjs\n\n - name: Run telegram-bot dry-run test (Issue #487)\n run: |\n echo \"Running test suite for telegram-bot --dry-run mode...\"\n node tests/test-telegram-bot-dry-run.mjs\n\n - name: Run telegram-bot hero Links Notation test (Issue #623)\n run: |\n echo \"Running test suite for telegram-bot hero example with Links Notation...\"\n node tests/test-telegram-bot-hero-links-notation.mjs\n\n - name: Run hive command silent failure test (Issue #504)\n run: |\n echo \"Running test suite for hive command silent failures...\"\n node tests/test-hive-no-silent-failure.mjs\n\n - name: Run GitHub linking keyword detection test (Issue #568)\n run: |\n echo \"Running test suite for GitHub linking keyword detection...\"\n node tests/test-github-linking.mjs\n\n - name: Run Telegram Markdown escaping test (Issue #580)\n run: |\n echo \"Running test suite for Telegram Markdown escaping...\"\n node tests/test-telegram-markdown-escaping.mjs\n\n - name: Run lenv-reader test (Issue #604)\n run: |\n echo \"Running test suite for lenv-reader.lib.mjs...\"\n node tests/test-lenv-reader.mjs\n\n - name: Run Telegram URL extraction test (Issue #603)\n run: |\n echo \"Running test suite for Telegram URL extraction...\"\n node tests/test-telegram-url-extraction.mjs\n\n - name: Run Telegram URL validation test (Issue #630)\n run: |\n echo \"Running test suite for Telegram URL validation...\"\n node tests/test-telegram-validate-url.mjs\n\n - name: Run interactive mode test (Issue #800)\n run: |\n echo \"Running test suite for interactive mode...\"\n node tests/test-interactive-mode.mjs\n\n - name: Run start-screen test (Issue #539)\n run: |\n echo \"Running test suite for start-screen.mjs...\"\n node tests/test-start-screen.mjs\n\n # === EXECUTION TESTS ===\n test-execution:\n runs-on: ubuntu-latest\n needs: [detect-changes, changeset-check, test-compilation, lint, check-file-line-limits]\n if: |\n always() &&\n !cancelled() &&\n !contains(needs.*.result, 'failure') &&\n (github.event_name == 'push' || needs.changeset-check.result == 'success' || needs.changeset-check.result == 'skipped') &&\n needs.test-compilation.result == 'success' &&\n (needs.lint.result == 'success' || needs.lint.result == 'skipped') &&\n (needs.check-file-line-limits.result == 'success' || needs.check-file-line-limits.result == 'skipped') &&\n (needs.detect-changes.outputs.any-code-changed == 'true' || needs.detect-changes.outputs.workflow-changed == 'true')\n\n steps:\n - uses: actions/checkout@v4\n\n - name: Use Node.js 20.x\n uses: actions/setup-node@v4\n with:\n node-version: 20.x\n\n - name: Install dependencies\n run: npm install\n\n - name: Test solve.mjs execution\n run: |\n echo \"Testing solve.mjs basic execution...\"\n timeout 10s ./src/solve.mjs --help || echo \"Help command completed\"\n echo \"solve.mjs executes without critical errors\"\n timeout 10s ./src/solve.mjs --version || true\n\n - name: Verify log files contain version and command (Issue #517)\n run: |\n echo \"Testing that log files contain version and command at the start...\"\n timeout 30s ./src/solve.mjs \"https://github.com/test/repo/issues/1\" --dry-run --skip-tool-check 2>&1 | tee test-log-output.txt || true\n\n LOG_FILE=$(grep -o \"solve-[0-9T-]*Z\\.log\" test-log-output.txt | head -1)\n\n if [ -z \"$LOG_FILE\" ]; then\n echo \"Could not find log file path in output\"\n cat test-log-output.txt\n exit 1\n fi\n\n echo \"Log file: $LOG_FILE\"\n\n if [ ! -f \"$LOG_FILE\" ]; then\n echo \"Log file not found: $LOG_FILE\"\n ls -la solve-*.log || echo \"No solve log files found\"\n exit 1\n fi\n\n echo \"\"\n echo \"Checking log file contents...\"\n head -30 \"$LOG_FILE\"\n\n echo \"\"\n echo \"Verifying version appears in log...\"\n if grep -q \"solve v\" \"$LOG_FILE\"; then\n echo \"Version found in log file\"\n else\n echo \"Version NOT found in log file\"\n exit 1\n fi\n\n echo \"\"\n echo \"Verifying command appears in log...\"\n if grep -q \"Raw command executed:\" \"$LOG_FILE\"; then\n echo \"Command found in log file\"\n else\n echo \"Command NOT found in log file\"\n exit 1\n fi\n\n echo \"\"\n echo \"Log file verification passed - version and command are present\"\n\n - name: Test hive.mjs execution\n run: |\n echo \"Testing hive.mjs basic execution...\"\n timeout 10s ./src/hive.mjs --help || echo \"Help command completed\"\n echo \"hive.mjs executes without critical errors\"\n timeout 10s ./src/hive.mjs --version || true\n\n - name: Test telegram-bot.mjs execution\n run: |\n echo \"Testing telegram-bot.mjs basic execution...\"\n timeout 10s ./src/telegram-bot.mjs --help || echo \"Help command completed\"\n echo \"telegram-bot.mjs executes without critical errors\"\n\n echo \"\"\n echo \"Testing telegram-bot.mjs --dry-run with issue #487 command...\"\n timeout 10s ./src/telegram-bot.mjs \\\n --token \"test_token_123\" \\\n --allowed-chats \"(-1002975819706 -1002861722681)\" \\\n --no-hive \\\n --solve-overrides $'( \\n --auto-continue\\n --attach-logs\\n --verbose\\n --no-tool-check\\n)' \\\n --dry-run\n echo \"Issue #487 command passes with --dry-run\"\n\n - name: Test memory-check.mjs execution\n run: |\n ./src/memory-check.mjs --help\n ./src/memory-check.mjs --min-memory 10 --min-disk-space 100 --json\n\n - name: Test global command installation\n run: |\n echo \"Testing npm global command installation from local folder...\"\n npm link\n echo \"npm link completed successfully\"\n\n echo \"\"\n echo \"Testing 'hive' global command...\"\n timeout 10s hive --version || true\n timeout 10s hive --help || echo \"Help command completed\"\n echo \"'hive' global command works\"\n\n echo \"\"\n echo \"Testing 'solve' global command...\"\n timeout 10s solve --version || true\n timeout 10s solve --help || echo \"Help command completed\"\n echo \"'solve' global command works\"\n\n echo \"\"\n echo \"Testing 'hive-telegram-bot' global command...\"\n timeout 10s hive-telegram-bot --help || echo \"Help command completed\"\n echo \"'hive-telegram-bot' global command works\"\n\n echo \"\"\n echo \"Testing hive-telegram-bot --dry-run (issue #487)...\"\n timeout 30s hive-telegram-bot \\\n --token \"test_token\" \\\n --allowed-chats \"(-1 -2)\" \\\n --no-hive \\\n --solve-overrides \"(--auto-continue --verbose)\" \\\n --dry-run\n echo \"'hive-telegram-bot --dry-run' works\"\n\n echo \"\"\n echo \"Cleaning up global link...\"\n npm unlink || true\n\n - name: Test hive dry-run with solve integration\n run: |\n echo \"Testing hive dry-run mode with solve command integration...\"\n timeout 30s ./src/hive.mjs https://github.com/test/repo --dry-run --skip-claude-check --once --max-issues 1 2>&1 | tee hive_dry_run.log || true\n\n if grep -q \"solve.*--dry-run.*--skip-claude-check\" hive_dry_run.log; then\n echo \"hive correctly passes --dry-run and --skip-claude-check flags to solve command\"\n else\n echo \"Could not verify flag propagation in dry-run mode (may be due to no issues found)\"\n fi\n\n echo \"\"\n echo \"Testing solve.mjs with --dry-run and --skip-claude-check flags...\"\n timeout 10s ./src/solve.mjs https://github.com/test/repo/issues/1 --dry-run --skip-claude-check 2>&1 | head -20 || true\n echo \"solve.mjs accepts --dry-run and --skip-claude-check flags\"\n\n - name: Test --auto-fork option\n run: |\n echo \"Testing --auto-fork option with dry-run mode...\"\n\n echo \"\"\n echo \"Testing solve.mjs with --auto-fork and --dry-run...\"\n timeout 10s ./src/solve.mjs https://github.com/test/repo/issues/1 --auto-fork --dry-run --skip-tool-check 2>&1 | tee solve_auto_fork.log || true\n if grep -qE \"(auto-fork|Auto-fork)\" solve_auto_fork.log; then\n echo \"solve.mjs recognizes --auto-fork flag\"\n else\n echo \"Could not verify --auto-fork flag in solve output\"\n fi\n\n echo \"\"\n echo \"Testing hive.mjs with --auto-fork and --dry-run...\"\n timeout 30s ./src/hive.mjs https://github.com/test/repo --auto-fork --dry-run --skip-tool-check --once --max-issues 1 2>&1 | tee hive_auto_fork.log || true\n if grep -qE \"(auto-fork|Auto-fork)\" hive_auto_fork.log; then\n echo \"hive.mjs recognizes --auto-fork flag\"\n else\n echo \"Could not verify --auto-fork flag in hive output\"\n fi\n\n echo \"\"\n echo \"Testing start-screen.mjs passes --auto-fork to solve...\"\n timeout 5s ./src/start-screen.mjs solve https://github.com/test/repo/issues/1 --auto-fork 2>&1 | tee start_screen_auto_fork.log || true\n if grep -qE \"(auto-fork|GNU Screen|screen.*not.*installed)\" start_screen_auto_fork.log; then\n echo \"start-screen.mjs accepts --auto-fork flag\"\n else\n echo \"Could not verify start-screen flag acceptance\"\n fi\n\n echo \"\"\n echo \"All --auto-fork option tests completed\"\n\n # === MEMORY CHECKS - LINUX ===\n memory-check-linux:\n runs-on: ubuntu-latest\n needs: [detect-changes, changeset-check, test-compilation, lint, check-file-line-limits]\n if: |\n always() &&\n !cancelled() &&\n !contains(needs.*.result, 'failure') &&\n (github.event_name == 'push' || needs.changeset-check.result == 'success' || needs.changeset-check.result == 'skipped') &&\n needs.test-compilation.result == 'success' &&\n (needs.lint.result == 'success' || needs.lint.result == 'skipped') &&\n (needs.check-file-line-limits.result == 'success' || needs.check-file-line-limits.result == 'skipped') &&\n (needs.detect-changes.outputs.any-code-changed == 'true' || needs.detect-changes.outputs.workflow-changed == 'true')\n\n steps:\n - uses: actions/checkout@v4\n\n - name: Use Node.js 20.x\n uses: actions/setup-node@v4\n with:\n node-version: 20.x\n\n - name: System info\n run: |\n echo \"=== System Information ===\"\n uname -a\n echo \"\"\n echo \"=== Memory Information ===\"\n free -h\n echo \"\"\n echo \"=== Disk Information ===\"\n df -h\n echo \"\"\n echo \"=== CPU Information ===\"\n lscpu | head -20\n\n - name: Run memory-check tests\n run: |\n chmod +x tests/test-memory-check.mjs\n node tests/test-memory-check.mjs\n\n - name: Test memory-check with various thresholds\n run: |\n echo \"Testing with low thresholds (should pass)...\"\n ./src/memory-check.mjs --min-memory 10 --min-disk-space 100 --json\n\n echo \"\"\n echo \"Testing verbose output...\"\n ./src/memory-check.mjs --min-memory 10 --min-disk-space 100\n\n echo \"\"\n echo \"Testing quiet mode...\"\n ./src/memory-check.mjs --min-memory 10 --min-disk-space 100 --quiet --json\n\n - name: Test memory-check failure conditions\n run: |\n echo \"Testing with impossible memory requirement (should fail)...\"\n if ./src/memory-check.mjs --min-memory 999999 --exit-on-failure --quiet --json; then\n echo \"ERROR: Should have failed with impossible memory requirement\"\n exit 1\n else\n echo \"Correctly failed with impossible memory requirement\"\n fi\n\n echo \"\"\n echo \"Testing with impossible disk requirement (should fail)...\"\n if ./src/memory-check.mjs --min-disk-space 999999999 --exit-on-failure --quiet --json; then\n echo \"ERROR: Should have failed with impossible disk requirement\"\n exit 1\n else\n echo \"Correctly failed with impossible disk requirement\"\n fi\n\n # === DOCUMENTATION VALIDATION (FAST) ===\n validate-docs:\n runs-on: ubuntu-latest\n needs: [detect-changes, changeset-check]\n if: always() && (github.event_name == 'push' || needs.changeset-check.result == 'success') && needs.detect-changes.outputs.docs-changed == 'true'\n\n steps:\n - uses: actions/checkout@v4\n\n - name: Use Node.js 20.x\n uses: actions/setup-node@v4\n with:\n node-version: 20.x\n\n - name: Validate documentation files\n run: |\n echo \"Running documentation validation tests...\"\n chmod +x tests/docs-validation.mjs\n node tests/docs-validation.mjs\n\n # === DOCKER PR CHECK ===\n docker-pr-check:\n runs-on: ubuntu-latest\n needs: [detect-changes, changeset-check, test-compilation, lint, check-file-line-limits]\n if: |\n always() &&\n !cancelled() &&\n !contains(needs.*.result, 'failure') &&\n github.event_name == 'pull_request' &&\n needs.changeset-check.result == 'success' &&\n needs.test-compilation.result == 'success' &&\n (needs.lint.result == 'success' || needs.lint.result == 'skipped') &&\n (needs.check-file-line-limits.result == 'success' || needs.check-file-line-limits.result == 'skipped') &&\n (needs.detect-changes.outputs.docker-changed == 'true' || needs.detect-changes.outputs.workflow-changed == 'true')\n\n env:\n REGISTRY: docker.io\n IMAGE_NAME: konard/hive-mind\n\n steps:\n - name: Free up disk space\n run: |\n echo \"Disk space before cleanup:\"\n df -h /\n echo \"\"\n echo \"Removing unnecessary packages to free disk space...\"\n # Remove large pre-installed packages that we don't need\n sudo rm -rf /usr/share/dotnet\n sudo rm -rf /usr/local/lib/android\n sudo rm -rf /opt/ghc\n sudo rm -rf /opt/hostedtoolcache/CodeQL\n sudo docker image prune --all --force\n echo \"\"\n echo \"Disk space after cleanup:\"\n df -h /\n\n - name: Checkout repository\n uses: actions/checkout@v4\n\n - name: Set up QEMU\n uses: docker/setup-qemu-action@v3\n\n - name: Set up Docker Buildx\n uses: docker/setup-buildx-action@v3\n\n - name: Build Docker image with log capture\n run: |\n echo \"Building Docker image with log capture...\"\n # Note: Multi-platform builds (amd64+arm64) are tested in docker-publish job during release\n # PR checks only validate amd64 using standard docker build (not buildx) to ensure\n # the image is properly loaded into Docker daemon for container verification\n docker build --progress=plain -t ${{ env.IMAGE_NAME }}:test . 2>&1 | tee build-output.log\n\n echo \"\"\n echo \"Docker image built successfully\"\n docker images | grep -E \"${{ env.IMAGE_NAME }}|REPOSITORY\"\n\n - name: Verify system & development tools installation in build logs\n run: |\n echo \"Checking installation status in build logs...\"\n echo \"Verifying all tools are installed (in alphabetical order to reduce merge conflicts)\"\n echo \"\"\n\n # Check for failures - alphabetical order\n if grep -E '\\[!\\] Bun: not found' build-output.log; then\n echo \"ERROR: Bun installation failed - showing as 'not found'\"\n exit 1\n fi\n\n if grep -E '\\[!\\] Cargo: not found' build-output.log; then\n echo \"ERROR: Cargo installation failed - showing as 'not found'\"\n exit 1\n fi\n\n if grep -E '\\[!\\] Clang: not found' build-output.log; then\n echo \"ERROR: Clang installation failed - showing as 'not found'\"\n exit 1\n fi\n\n if grep -E '\\[!\\] Clang\\+\\+: not found' build-output.log; then\n echo \"ERROR: Clang++ installation failed - showing as 'not found'\"\n exit 1\n fi\n\n if grep -E '\\[!\\] CMake: not found' build-output.log; then\n echo \"ERROR: CMake installation failed - showing as 'not found'\"\n exit 1\n fi\n\n if grep -E '\\[!\\] Deno: not found' build-output.log; then\n echo \"ERROR: Deno installation failed - showing as 'not found'\"\n exit 1\n fi\n\n if grep -E '\\[!\\] Elan: not found' build-output.log; then\n echo \"ERROR: Elan installation failed - showing as 'not found'\"\n exit 1\n fi\n\n if grep -E '\\[!\\] G\\+\\+: not found' build-output.log; then\n echo \"ERROR: G++ installation failed - showing as 'not found'\"\n exit 1\n fi\n\n if grep -E '\\[!\\] GCC: not found' build-output.log; then\n echo \"ERROR: GCC installation failed - showing as 'not found'\"\n exit 1\n fi\n\n if grep -E '\\[!\\] Git: not found' build-output.log; then\n echo \"ERROR: Git installation failed - showing as 'not found'\"\n exit 1\n fi\n\n if grep -E '\\[!\\] GitHub CLI: not found' build-output.log; then\n echo \"ERROR: GitHub CLI installation failed - showing as 'not found'\"\n exit 1\n fi\n\n if grep -E '\\[!\\] Go: not found' build-output.log; then\n echo \"ERROR: Go installation failed - showing as 'not found'\"\n exit 1\n fi\n\n if grep -E '\\[!\\] Homebrew: not found' build-output.log; then\n echo \"ERROR: Homebrew installation failed - showing as 'not found'\"\n exit 1\n fi\n\n if grep -E '\\[!\\] Java: not found' build-output.log; then\n echo \"ERROR: Java installation failed - showing as 'not found'\"\n exit 1\n fi\n\n if grep -E '\\[!\\] Lake: not found' build-output.log; then\n echo \"ERROR: Lake installation failed - showing as 'not found'\"\n exit 1\n fi\n\n if grep -E '\\[!\\] Lean: not found' build-output.log; then\n echo \"ERROR: Lean installation failed - showing as 'not found'\"\n exit 1\n fi\n\n if grep -E '\\[!\\] LLD Linker: not found' build-output.log; then\n echo \"ERROR: LLD Linker installation failed - showing as 'not found'\"\n exit 1\n fi\n\n if grep -E '\\[!\\] LLVM: not found' build-output.log; then\n echo \"ERROR: LLVM installation failed - showing as 'not found'\"\n exit 1\n fi\n\n if grep -E '\\[!\\] Make: not found' build-output.log; then\n echo \"ERROR: Make installation failed - showing as 'not found'\"\n exit 1\n fi\n\n if grep -E '\\[!\\] Node\\.js: not found' build-output.log; then\n echo \"ERROR: Node.js installation failed - showing as 'not found'\"\n exit 1\n fi\n\n if grep -E '\\[!\\] NPM: not found' build-output.log; then\n echo \"ERROR: NPM installation failed - showing as 'not found'\"\n exit 1\n fi\n\n if grep -E '\\[!\\] Opam: not found' build-output.log; then\n echo \"ERROR: Opam installation failed - showing as 'not found'\"\n exit 1\n fi\n\n if grep -E '\\[!\\] PHP: not found' build-output.log; then\n echo \"ERROR: PHP installation failed - showing as 'not found'\"\n exit 1\n fi\n\n if grep -E '\\[!\\] Perl: not found' build-output.log; then\n echo \"ERROR: Perl installation failed - showing as 'not found'\"\n exit 1\n fi\n\n if grep -E '\\[!\\] Perlbrew: not found' build-output.log; then\n echo \"ERROR: Perlbrew installation failed - showing as 'not found'\"\n exit 1\n fi\n\n if grep -E '\\[!\\] Playwright: not found' build-output.log; then\n echo \"ERROR: Playwright installation failed - showing as 'not found'\"\n exit 1\n fi\n\n if grep -E '\\[!\\] Python: not found' build-output.log; then\n echo \"ERROR: Python installation failed - showing as 'not found'\"\n exit 1\n fi\n\n if grep -E '\\[!\\] Pyenv: not found' build-output.log; then\n echo \"ERROR: Pyenv installation failed - showing as 'not found'\"\n exit 1\n fi\n\n if grep -E '\\[!\\] Rocq/Coq: not found' build-output.log; then\n echo \"ERROR: Rocq/Coq installation failed - showing as 'not found'\"\n exit 1\n fi\n\n if grep -E '\\[!\\] Rust: not found' build-output.log; then\n echo \"ERROR: Rust installation failed - showing as 'not found'\"\n exit 1\n fi\n\n if grep -E '\\[!\\] SDKMAN: not found' build-output.log; then\n echo \"ERROR: SDKMAN installation failed - showing as 'not found'\"\n exit 1\n fi\n\n # Verify successful installations - alphabetical order\n echo \"\"\n echo \"Verifying successful installations...\"\n\n if grep -E '\\[✓\\] Bun:' build-output.log; then\n echo \"Bun installation verified in build logs\"\n else\n echo \"WARNING: Bun success message not found in logs\"\n fi\n\n if grep -E '\\[✓\\] Cargo:' build-output.log; then\n echo \"Cargo installation verified in build logs\"\n else\n echo \"WARNING: Cargo success message not found in logs\"\n fi\n\n if grep -E '\\[✓\\] Clang:' build-output.log; then\n echo \"Clang installation verified in build logs\"\n else\n echo \"WARNING: Clang success message not found in logs\"\n fi\n\n if grep -E '\\[✓\\] Clang\\+\\+:' build-output.log; then\n echo \"Clang++ installation verified in build logs\"\n else\n echo \"WARNING: Clang++ success message not found in logs\"\n fi\n\n if grep -E '\\[✓\\] CMake:' build-output.log; then\n echo \"CMake installation verified in build logs\"\n else\n echo \"WARNING: CMake success message not found in logs\"\n fi\n\n if grep -E '\\[✓\\] Deno:' build-output.log; then\n echo \"Deno installation verified in build logs\"\n else\n echo \"WARNING: Deno success message not found in logs\"\n fi\n\n if grep -E '\\[✓\\] Elan:' build-output.log; then\n echo \"Elan installation verified in build logs\"\n else\n echo \"WARNING: Elan success message not found in logs\"\n fi\n\n if grep -E '\\[✓\\] G\\+\\+:' build-output.log; then\n echo \"G++ installation verified in build logs\"\n else\n echo \"WARNING: G++ success message not found in logs\"\n fi\n\n if grep -E '\\[✓\\] GCC:' build-output.log; then\n echo \"GCC installation verified in build logs\"\n else\n echo \"WARNING: GCC success message not found in logs\"\n fi\n\n if grep -E '\\[✓\\] Git:' build-output.log; then\n echo \"Git installation verified in build logs\"\n else\n echo \"WARNING: Git success message not found in logs\"\n fi\n\n if grep -E '\\[✓\\] GitHub CLI:' build-output.log; then\n echo \"GitHub CLI installation verified in build logs\"\n else\n echo \"WARNING: GitHub CLI success message not found in logs\"\n fi\n\n if grep -E '\\[✓\\] Go:' build-output.log; then\n echo \"Go installation verified in build logs\"\n else\n echo \"W | |
| [2025-12-22T17:14:29.667Z] [INFO] ARNING: Go success message not found in logs\"\n fi\n\n if grep -E '\\[✓\\] Homebrew:' build-output.log; then\n echo \"Homebrew installation verified in build logs\"\n else\n echo \"WARNING: Homebrew success message not found in logs\"\n fi\n\n if grep -E '\\[✓\\] Java:' build-output.log; then\n echo \"Java installation verified in build logs\"\n else\n echo \"WARNING: Java success message not found in logs\"\n fi\n\n if grep -E '\\[✓\\] Lake:' build-output.log; then\n echo \"Lake installation verified in build logs\"\n else\n echo \"WARNING: Lake success message not found in logs\"\n fi\n\n if grep -E '\\[✓\\] Lean:' build-output.log; then\n echo \"Lean installation verified in build logs\"\n else\n echo \"WARNING: Lean success message not found in logs\"\n fi\n\n if grep -E '\\[✓\\] LLD Linker:' build-output.log; then\n echo \"LLD Linker installation verified in build logs\"\n else\n echo \"WARNING: LLD Linker success message not found in logs\"\n fi\n\n if grep -E '\\[✓\\] LLVM:' build-output.log; then\n echo \"LLVM installation verified in build logs\"\n else\n echo \"WARNING: LLVM success message not found in logs\"\n fi\n\n if grep -E '\\[✓\\] Make:' build-output.log; then\n echo \"Make installation verified in build logs\"\n else\n echo \"WARNING: Make success message not found in logs\"\n fi\n\n if grep -E '\\[✓\\] Node\\.js:' build-output.log; then\n echo \"Node.js installation verified in build logs\"\n else\n echo \"WARNING: Node.js success message not found in logs\"\n fi\n\n if grep -E '\\[✓\\] NPM:' build-output.log; then\n echo \"NPM installation verified in build logs\"\n else\n echo \"WARNING: NPM success message not found in logs\"\n fi\n\n if grep -E '\\[✓\\] Opam:' build-output.log; then\n echo \"Opam installation verified in build logs\"\n else\n echo \"WARNING: Opam success message not found in logs\"\n fi\n\n if grep -E '\\[✓\\] PHP:' build-output.log; then\n echo \"PHP installation verified in build logs\"\n else\n echo \"WARNING: PHP success message not found in logs (may appear as 'installed but not in current PATH' during build)\"\n fi\n\n if grep -E '\\[✓\\] Perl:' build-output.log; then\n echo \"Perl installation verified in build logs\"\n else\n echo \"WARNING: Perl success message not found in logs\"\n fi\n\n if grep -E '\\[✓\\] Perlbrew:' build-output.log; then\n echo \"Perlbrew installation verified in build logs\"\n else\n echo \"WARNING: Perlbrew success message not found in logs\"\n fi\n\n if grep -E '\\[✓\\] Playwright:' build-output.log; then\n echo \"Playwright installation verified in build logs\"\n else\n echo \"WARNING: Playwright success message not found in logs\"\n fi\n\n if grep -E '\\[✓\\] Python:' build-output.log; then\n echo \"Python installation verified in build logs\"\n else\n echo \"WARNING: Python success message not found in logs\"\n fi\n\n if grep -E '\\[✓\\] Pyenv:' build-output.log; then\n echo \"Pyenv installation verified in build logs\"\n else\n echo \"WARNING: Pyenv success message not found in logs\"\n fi\n\n if grep -E '\\[✓\\] Rocq:|\\[✓\\] Coq:' build-output.log; then\n echo \"Rocq/Coq installation verified in build logs\"\n elif grep -E '\\[!\\] Rocq:.*not in current PATH' build-output.log; then\n echo \"WARNING: Rocq installed but not in PATH during build (will be verified in container step)\"\n else\n echo \"ERROR: Rocq/Coq installation failed in build logs\"\n grep -i \"rocq\\|coq\\|opam\" build-output.log | tail -20 || true\n exit 1\n fi\n\n if grep -E '\\[✓\\] Rust:' build-output.log; then\n echo \"Rust installation verified in build logs\"\n else\n echo \"WARNING: Rust success message not found in logs\"\n fi\n\n if grep -E '\\[✓\\] SDKMAN:' build-output.log; then\n echo \"SDKMAN installation verified in build logs\"\n else\n echo \"WARNING: SDKMAN success message not found in logs\"\n fi\n\n echo \"\"\n echo \"All system & development tools verification completed\"\n\n - name: Verify tools in running container\n run: |\n echo \"Verifying tools are available in the running container...\"\n echo \"Checking all tools in alphabetical order to reduce merge conflicts\"\n echo \"\"\n\n docker run --rm ${{ env.IMAGE_NAME }}:test bash -c \"\n # Source shell initialization files for tools that need it\n export HOME=/home/hive\n [ -s \\\"\\$HOME/.nvm/nvm.sh\\\" ] && source \\\"\\$HOME/.nvm/nvm.sh\\\"\n [ -s \\\"\\$HOME/.cargo/env\\\" ] && source \\\"\\$HOME/.cargo/env\\\"\n [ -s \\\"\\$HOME/.elan/env\\\" ] && source \\\"\\$HOME/.elan/env\\\"\n export PYENV_ROOT=\\\"\\$HOME/.pyenv\\\"\n export PATH=\\\"\\$PYENV_ROOT/bin:\\$PATH\\\"\n if command -v pyenv &>/dev/null; then eval \\\"\\$(pyenv init --path)\\\" && eval \\\"\\$(pyenv init -)\\\"; fi\n export SDKMAN_DIR=\\\"\\$HOME/.sdkman\\\"\n if [ -s \\\"\\$SDKMAN_DIR/bin/sdkman-init.sh\\\" ]; then source \\\"\\$SDKMAN_DIR/bin/sdkman-init.sh\\\"; fi\n # Source Go environment\n if [ -d \\\"\\$HOME/.go\\\" ]; then\n export GOROOT=\\\"\\$HOME/.go\\\"\n export GOPATH=\\\"\\$HOME/go\\\"\n export PATH=\\\"\\$GOROOT/bin:\\$GOPATH/bin:\\$PATH\\\"\n fi\n\n export PERLBREW_ROOT=\\\"\\$HOME/perl5/perlbrew\\\"\n [ -s \\\"\\$PERLBREW_ROOT/etc/bashrc\\\" ] && source \\\"\\$PERLBREW_ROOT/etc/bashrc\\\"\n\n\n # Verify all system & development tools - alphabetical order\n echo 'Checking Bun...'\n if command -v bun &>/dev/null; then\n bun --version\n echo 'Bun is accessible'\n else\n echo 'Bun command not found in container'\n exit 1\n fi\n\n echo ''\n echo 'Checking Cargo...'\n if command -v cargo &>/dev/null; then\n cargo --version\n echo 'Cargo is accessible'\n else\n echo 'Cargo command not found in container'\n exit 1\n fi\n\n echo ''\n echo 'Checking Clang...'\n if command -v clang &>/dev/null; then\n clang --version | head -n1\n echo 'Clang is accessible'\n else\n echo 'Clang command not found in container'\n exit 1\n fi\n\n echo ''\n echo 'Checking Clang++...'\n if command -v clang++ &>/dev/null; then\n clang++ --version | head -n1\n echo 'Clang++ is accessible'\n else\n echo 'Clang++ command not found in container'\n exit 1\n fi\n\n echo ''\n echo 'Checking CMake...'\n if command -v cmake &>/dev/null; then\n cmake --version | head -n1\n echo 'CMake is accessible'\n else\n echo 'CMake command not found in container'\n exit 1\n fi\n\n echo ''\n echo 'Checking Deno...'\n if command -v deno &>/dev/null; then\n deno --version | head -n1\n echo 'Deno is accessible'\n else\n echo 'Deno command not found in container'\n exit 1\n fi\n\n echo ''\n echo 'Checking Elan...'\n if command -v elan &>/dev/null; then\n elan --version\n echo 'Elan is accessible'\n else\n echo 'Elan command not found in container'\n exit 1\n fi\n\n echo ''\n echo 'Checking G++...'\n if command -v g++ &>/dev/null; then\n g++ --version | head -n1\n echo 'G++ is accessible'\n else\n echo 'G++ command not found in container'\n exit 1\n fi\n\n echo ''\n echo 'Checking GCC...'\n if command -v gcc &>/dev/null; then\n gcc --version | head -n1\n echo 'GCC is accessible'\n else\n echo 'GCC command not found in container'\n exit 1\n fi\n\n echo ''\n echo 'Checking Git...'\n if command -v git &>/dev/null; then\n git --version\n echo 'Git is accessible'\n else\n echo 'Git command not found in container'\n exit 1\n fi\n\n echo ''\n echo 'Checking GitHub CLI...'\n if command -v gh &>/dev/null; then\n gh --version | head -n1\n echo 'GitHub CLI is accessible'\n else\n echo 'GitHub CLI command not found in container'\n exit 1\n fi\n\n echo ''\n echo 'Checking Go...'\n if command -v go &>/dev/null; then\n go version\n echo 'Go is accessible'\n else\n echo 'Go command not found in container'\n exit 1\n fi\n\n echo ''\n echo 'Checking Homebrew...'\n if command -v brew &>/dev/null; then\n brew --version | head -n1\n echo 'Homebrew is accessible'\n else\n echo 'Homebrew command not found in container'\n exit 1\n fi\n\n echo ''\n echo 'Checking Java...'\n if command -v java &>/dev/null; then\n java -version 2>&1 | head -n1\n echo 'Java is accessible'\n else\n echo 'Java command not found in container'\n exit 1\n fi\n\n echo ''\n echo 'Checking Lake...'\n if command -v lake &>/dev/null; then\n lake --version\n echo 'Lake is accessible'\n else\n echo 'Lake command not found in container'\n exit 1\n fi\n\n echo ''\n echo 'Checking Lean...'\n if command -v lean &>/dev/null; then\n lean --version\n echo 'Lean is accessible'\n else\n echo 'Lean command not found in container'\n exit 1\n fi\n\n echo ''\n echo 'Checking LLD Linker...'\n if command -v lld &>/dev/null; then\n lld --version | head -n1\n echo 'LLD Linker is accessible'\n else\n echo 'LLD Linker command not found in container'\n exit 1\n fi\n\n echo ''\n echo 'Checking LLVM...'\n if command -v llvm-config &>/dev/null; then\n echo \\\"LLVM \\$(llvm-config --version)\\\"\n echo 'LLVM is accessible'\n else\n echo 'LLVM command not found in container'\n exit 1\n fi\n\n echo ''\n echo 'Checking Make...'\n if command -v make &>/dev/null; then\n make --version | head -n1\n echo 'Make is accessible'\n else\n echo 'Make command not found in container'\n exit 1\n fi\n\n echo ''\n echo 'Checking Node.js...'\n if command -v node &>/dev/null; then\n node --version\n echo 'Node.js is accessible'\n else\n echo 'Node.js command not found in container'\n exit 1\n fi\n\n echo ''\n echo 'Checking NPM...'\n if command -v npm &>/dev/null; then\n npm --version\n echo 'NPM is accessible'\n else\n echo 'NPM command not found in container'\n exit 1\n fi\n\n echo ''\n echo 'Checking Opam...'\n if command -v opam &>/dev/null; then\n opam --version\n echo 'Opam is accessible'\n else\n echo 'Opam command not found in container'\n exit 1\n fi\n\n echo ''\n echo 'Checking PHP...'\n if command -v php &>/dev/null; then\n php --version | head -n1\n echo 'PHP is accessible'\n else\n if [ -x /home/linuxbrew/.linuxbrew/opt/[email protected]/bin/php ]; then\n /home/linuxbrew/.linuxbrew/opt/[email protected]/bin/php --version | head -n1\n echo 'PHP is installed but not in PATH (may need shell restart)'\n else\n echo 'PHP not found in container'\n exit 1\n fi\n fi\n\n echo ''\n echo 'Checking Perl...'\n if command -v perl &>/dev/null; then\n perl --version | head -n2 | tail -n1\n echo 'Perl is accessible'\n else\n echo 'Perl command not found in container'\n exit 1\n fi\n\n echo ''\n echo 'Checking Perlbrew...'\n if command -v perlbrew &>/dev/null; then\n perlbrew --version\n echo 'Perlbrew is accessible'\n else\n echo 'Perlbrew command not found in container'\n exit 1\n fi\n\n echo ''\n echo 'Checking Playwright...'\n if command -v playwright &>/dev/null; then\n playwright --version\n echo 'Playwright is accessible'\n else\n echo 'Playwright command not found in container'\n exit 1\n fi\n\n echo ''\n echo 'Checking Python...'\n if command -v python &>/dev/null; then\n python --version\n echo 'Python is accessible'\n else\n echo 'Python command not found in container'\n exit 1\n fi\n\n echo ''\n echo 'Checking Pyenv...'\n if command -v pyenv &>/dev/null; then\n pyenv --version\n echo 'Pyenv is accessible'\n else\n echo 'Pyenv command not found in container'\n exit 1\n fi\n\n echo ''\n echo 'Checking Rocq/Coq...'\n # Source opam environment for Rocq/Coq access\n if [ -f \\\"\\$HOME/.opam/opam-init/init.sh\\\" ]; then\n source \\\"\\$HOME/.opam/opam-init/init.sh\\\" > /dev/null 2>&1 || true\n fi\n # Verify Rocq installation\n # Rocq 9.0+ provides: rocq (CLI tool), rocqc (compiler alias), coqc (legacy compiler)\n # Reference: https://rocq-prover.org/docs/using-opam\n # Note: Rocq requires proper opam environment initialization which may not persist\n # in Docker containers. This is documented in issue #952.\n if rocq -v &>/dev/null; then\n rocq -v | head -n1\n echo 'Rocq is accessible (verified with rocq -v)'\n elif command -v rocqc &>/dev/null; then\n rocqc --version | head -n1\n echo 'Rocq is accessible (verified with rocqc)'\n elif command -v coqc &>/dev/null; then\n coqc --version | head -n1\n echo 'Coq is accessible (legacy compiler)'\n else\n echo 'Rocq/Coq verification: checking opam installation...'\n # Show diagnostic information\n if opam list --installed rocq-prover 2>/dev/null | grep -q rocq-prover; then\n echo 'rocq-prover package is installed in opam'\n echo 'Opam bin directory contents:'\n ls -la \\\"\\$HOME/.opam/default/bin/\\\" 2>/dev/null | grep -i 'rocq\\|coq' || echo 'No rocq/coq binaries found in opam bin'\n echo 'Trying: eval \\$(opam env) && rocq -v'\n eval \\\"\\$(opam env)\\\" && rocq -v || echo 'Still not accessible after eval opam env'\n else\n echo 'rocq-prover package NOT installed in opam'\n fi\n echo 'WARNING: Rocq/Coq not accessible in container'\n echo 'Users should run: eval \\$(opam env) before using Rocq commands'\n fi\n\n echo ''\n echo 'Checking Rust...'\n if command -v rustc &>/dev/null; then\n rustc --version\n echo 'Rust is accessible'\n else\n echo 'Rust command not found in container'\n exit 1\n fi\n\n echo ''\n echo 'Checking SDKMAN...'\n if command -v sdk &>/dev/null; then\n sdk version 2>/dev/null | grep -oE '[0-9]+\\.[0-9]+\\.[0-9]+' || echo 'SDKMAN installed'\n echo 'SDKMAN is accessible'\n else\n echo 'SDKMAN command not found in container'\n exit 1\n fi\n \"\n\n echo \"\"\n echo \"All system & development tools verification checks passed!\"\n\n # === HELM PR CHECK (FAST) ===\n helm-pr-check:\n runs-on: ubuntu-latest\n needs: [detect-changes, changeset-check]\n if: always() && github.event_name == 'pull_request' && needs.changeset-check.result == 'success'\n\n steps:\n - name: Checkout repository\n uses: actions/checkout@v4\n with:\n fetch-depth: 0\n\n - name: Install Helm\n uses: azure/setup-helm@v4\n with:\n version: v3.14.0\n\n - name: Get package version\n id: package-version\n run: |\n VERSION=$(node -p \"require('./package.json').version\")\n echo \"version=$VERSION\" >> $GITHUB_OUTPUT\n echo \"Package version: $VERSION\"\n\n - name: Lint Helm chart\n run: |\n echo \"Linting Helm chart...\"\n helm lint helm/hive-mind\n echo \"Helm chart validation passed\"\n\n - name: Verify Chart.yaml structure\n run: |\n echo \"Verifying Chart.yaml structure...\"\n if [ ! -f \"helm/hive-mind/Chart.yaml\" ]; then\n echo \"Chart.yaml not found\"\n exit 1\n fi\n\n if ! grep -q \"^name:\" helm/hive-mind/Chart.yaml; then\n echo \"Chart name not found\"\n exit 1\n fi\n\n if ! grep -q \"^version:\" helm/hive-mind/Chart.yaml; then\n echo \"Chart version not found\"\n exit 1\n fi\n\n if ! grep -q \"^appVersion:\" helm/hive-mind/Chart.yaml; then\n echo \"Chart appVersion not found\"\n exit 1\n fi\n\n echo \"Chart.yaml structure is valid\"\n\n # === RELEASE - only runs on main after tests pass ===\n release:\n name: Release\n needs: [detect-changes, lint, test-suites, test-execution, memory-check-linux]\n # Use always() to ensure this job runs even if changeset-check was skipped\n if: always() && github.ref == 'refs/heads/main' && github.event_name == 'push' && needs.lint.result == 'success' && needs.test-suites.result == 'success' && needs.test-execution.result == 'success' && needs.memory-check-linux.result == 'success'\n runs-on: ubuntu-latest\n outputs:\n published: ${{ steps.publish.outputs.published }}\n published_version: ${{ steps.publish.outputs.published_version }}\n # Permissions required for npm OIDC trusted publishing\n permissions:\n contents: write\n pull-requests: write\n id-token: write\n steps:\n - uses: actions/checkout@v4\n with:\n fetch-depth: 0\n\n - name: Setup Node.js\n uses: actions/setup-node@v4\n with:\n node-version: '20.x'\n registry-url: 'https://registry.npmjs.org'\n\n - name: Install dependencies\n run: npm install\n\n - name: Update npm for OIDC trusted publishing\n run: node scripts/setup-npm.mjs\n\n - name: Check for changesets\n id: check_changesets\n run: |\n # Count changeset files (excluding README.md and config.json)\n CHANGESET_COUNT=$(find .changeset -name \"*.md\" ! -name \"README.md\" | wc -l)\n echo \"Found $CHANGESET_COUNT changeset file(s)\"\n echo \"has_changesets=$([[ $CHANGESET_COUNT -gt 0 ]] && echo 'true' || echo 'false')\" >> $GITHUB_OUTPUT\n\n - name: Version packages and commit to main\n if: steps.check_changesets.outputs.has_changesets == 'true'\n id: version\n run: node scripts/version-and-commit.mjs --mode changeset\n\n - name: Publish to npm\n # Run if version was committed OR if a previous attempt already committed (for re-runs)\n if: steps.version.outputs.version_committed == 'true' || steps.version.outputs.already_released == 'true'\n id: publish\n run: node scripts/publish-to-npm.mjs --should-pull\n\n - name: Create GitHub Release\n if: steps.publish.outputs.published == 'true'\n env:\n GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n run: node scripts/create-github-release.mjs --release-version \"${{ steps.publish.outputs.published_version }}\" --repository \"${{ github.repository }}\"\n\n - name: Format GitHub release notes\n if: steps.publish.outputs.published == 'true'\n env:\n GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n run: node scripts/format-github-release.mjs --release-version \"${{ steps.publish.outputs.published_version }}\" --repository \"${{ github.repository }}\" --commit-sha \"${{ github.sha }}\"\n\n - name: Post-publish - Upload Source Maps to Sentry\n if: steps.publish.outputs.published == 'true'\n env:\n SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}\n run: |\n echo \"Uploading source maps to Sentry for published packages...\"\n chmod +x scripts/upload-sourcemaps.mjs\n node scripts/upload-sourcemaps.mjs\n\n # === DOCKER PUBLISH ===\n docker-publish:\n name: Docker Publish\n needs: [release]\n if: needs.release.outputs.published == 'true'\n runs-on: ubuntu-latest\n permissions:\n contents: read\n packages: write\n\n env:\n REGISTRY: docker.io\n IMAGE_NAME: konard/hive-mind\n\n steps:\n - name: Wait for NPM package availability\n run: |\n VERSION=\"${{ needs.release.outputs.published_version }}\"\n PACKAGE_NAME=\"@link-assistant/hive-mind\"\n MAX_ATTEMPTS=30\n SLEEP_TIME=10\n\n echo \"Waiting for NPM package ${PACKAGE_NAME}@${VERSION} to become available...\"\n\n for i in $(seq 1 $MAX_ATTEMPTS); do\n echo \"Attempt $i/$MAX_ATTEMPTS: Checking NPM registry...\"\n\n if npm view \"${PACKAGE_NAME}@${VERSION}\" version 2>/dev/null; then\n echo \"Package ${PACKAGE_NAME}@${VERSION} is now available on NPM!\"\n exit 0\n fi\n\n if [ $i -lt $MAX_ATTEMPTS ]; then\n echo \"Package not yet available, waiting ${SLEEP_TIME} seconds...\"\n sleep $SLEEP_TIME\n fi\n done\n\n echo \"Package ${PACKAGE_NAME}@${VERSION} did not become available after $((MAX_ATTEMPTS * SLEEP_TIME)) seconds\"\n exit 1\n\n - name: Checkout repository\n uses: actions/checkout@v4\n\n - name: Set up QEMU\n uses: docker/setup-qemu-action@v3\n\n - name: Set up Docker Buildx\n uses: docker/setup-buildx-action@v3\n\n - name: Log in to Docker Hub\n uses: docker/login-action@v3\n with:\n username: ${{ secrets.DOCKERHUB_USERNAME }}\n password: ${{ secrets.DOCKERHUB_TOKEN }}\n\n - name: Extract metadata (tags, labels) for Docker\n id: meta\n uses: docker/metadata-action@v5\n with:\n images: ${{ env.IMAGE_NAME }}\n tags: |\n type=raw,value=${{ needs.release.outputs.published_version }}\n type=raw,value=latest\n\n - name: Build and push Docker image\n uses: docker/build-push-action@v5\n with:\n context: .\n file: ./Dockerfile\n push: true\n tags: ${{ steps.meta.outputs.tags }}\n labels: ${{ steps.meta.outputs.labels }}\n cache-from: type=gha\n cache-to: type=gha,mode=max\n platforms: linux/amd64,linux/arm64\n\n - name: Verify published image\n run: |\n echo \"Docker image published successfully\"\n echo \"Image: ${{ env.IMAGE_NAME }}\"\n echo \"Tags: ${{ steps.meta.outputs.tags }}\"\n\n # === HELM CHART RELEASE ===\n helm-release:\n name: Helm Release\n needs: [release, docker-publish]\n if: needs.release.outputs.published == 'true'\n runs-on: ubuntu-latest\n permissions:\n contents: write\n packages: write\n pages: write\n id-token: write\n\n steps:\n - name: Checkout repository\n uses: actions/checkout@v4\n with:\n fetch-depth: 0\n\n - name: Configure Git\n run: |\n git config user.name \"$GITHUB_ACTOR\"\n git config user.email \"[email protected]\"\n\n - name: Install Helm\n uses: azure/setup-helm@v4\n with:\n version: v3.14.0\n\n - name: Update Chart versions\n id: chart-version\n run: |\n VERSION=\"${{ needs.release.outputs.published_version }}\"\n sed -i \"s/^appVersion: .*/appVersion: \\\"$VERSION\\\"/\" helm/hive-mind/Chart.yaml\n sed -i \"s/^version: .*/version: $VERSION/\" helm/hive-mind/Chart.yaml\n echo \"Updated Chart.yaml to version $VERSION\"\n cat helm/hive-mind/Chart.yaml\n\n - name: Lint Helm chart\n run: helm lint helm/hive-mind\n\n - name: Package Helm chart\n run: |\n mkdir -p .helm-packages\n helm package helm/hive-mind -d .helm-packages\n ls -la .helm-packages/\n\n - name: Ensure gh-pages branch exists\n run: |\n if ! git ls-remote --exit-code --heads origin gh-pages >/dev/null 2>&1; then\n echo \"Creating gh-pages branch...\"\n git checkout --orphan gh-pages\n git reset --hard\n git commit --allow-empty -m \"Initialize gh-pages branch for Helm charts\"\n git push origin gh-pages\n git checkout -\n fi\n\n - name: Checkout gh-pages branch\n run: |\n git fetch origin gh-pages:gh-pages\n git checkout gh-pages\n\n - name: Update Helm repository index\n run: |\n cp .helm-packages/*.tgz .\n helm repo index . --url https://link-assistant.github.io/hive-mind\n cat index.yaml\n\n - name: Commit and push to gh-pages\n run: |\n git add -f *.tgz index.yaml\n git commit -m \"Release Helm chart version ${{ needs.release.outputs.published_version }}\" || echo \"No changes to commit\"\n git push origin gh-pages\n\n - name: Switch back to main branch\n run: git checkout -\n\n - name: Upload chart to release\n uses: softprops/action-gh-release@v2\n with:\n tag_name: v${{ needs.release.outputs.published_version }}\n files: .helm-packages/*.tgz\n\n # === MANUAL INSTANT RELEASE ===\n instant-release:\n name: Instant Release\n if: github.event_name == 'workflow_dispatch' && github.event.inputs.release_mode == 'instant'\n runs-on: ubuntu-latest\n outputs:\n published: ${{ steps.publish.outputs.published }}\n published_version: ${{ steps.publish.outputs.published_version }}\n permissions:\n contents: write\n pull-requests: write\n id-token: write\n steps:\n - uses: actions/checkout@v4\n with:\n fetch-depth: 0\n\n - name: Setup Node.js\n uses: actions/setup-node@v4\n with:\n node-version: '20.x'\n registry-url: 'https://registry.npmjs.org'\n\n - name: Install dependencies\n run: npm install\n\n - name: Update npm for OIDC trusted publishing\n run: node scripts/setup-npm.mjs\n\n - name: Version packages and commit to main\n id: version\n run: node scripts/version-and-commit.mjs --mode instant --bump-type \"${{ github.event.inputs.bump_type }}\" --description \"${{ github.event.inputs.description }}\"\n\n - name: Publish to npm\n if: steps.version.outputs.version_committed == 'true' || steps.version.outputs.already_released == 'true'\n id: publish\n run: node scripts/publish-to-npm.mjs\n\n - name: Create GitHub Release\n if: steps.publish.outputs.published == 'true'\n env:\n GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n run: node scripts/create-github-release.mjs --release-version \"${{ steps.publish.outputs.published_version }}\" --repository \"${{ github.repository }}\"\n\n - name: Format GitHub release notes\n if: steps.publish.outputs.published == 'true'\n env:\n GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n run: node scripts/format-github-release.mjs --release-version \"${{ steps.publish.outputs.published_version }}\" --repository \"${{ github.repository }}\" --commit-sha \"${{ github.sha }}\"\n\n # === MANUAL CHANGESET PR ===\n changeset-pr:\n name: Create Changeset PR\n if: github.event_name == 'workflow_dispatch' && github.event.inputs.release_mode == 'changeset-pr'\n runs-on: ubuntu-latest\n permissions:\n contents: write\n pull-requests: write\n steps:\n - uses: actions/checkout@v4\n with:\n fetch-depth: 0\n\n - name: Setup Node.js\n uses: actions/setup-node@v4\n with:\n node-version: '20.x'\n\n - name: Install dependencies\n run: npm install\n\n - name: Create changeset file\n run: node scripts/create-manual-changeset.mjs --bump-type \"${{ github.event.inputs.bump_type }}\" --description \"${{ github.event.inputs.description }}\"\n\n - name: Format changeset with Prettier\n run: |\n npx prettier --write \".changeset/*.md\" || true\n echo \"Formatted changeset files\"\n\n - name: Create Pull Request\n uses: peter-evans/create-pull-request@v7\n with:\n token: ${{ secrets.GITHUB_TOKEN }}\n commit-message: 'chore: add changeset for manual ${{ github.event.inputs.bump_type }} release'\n branch: changeset-manual-release-${{ github.run_id }}\n delete-branch: true\n title: 'chore: manual ${{ github.event.inputs.bump_type }} release'\n body: |\n ## Manual Release Request\n\n This PR was created by a manual workflow trigger to prepare a **${{ github.event.inputs.bump_type }}** release.\n\n ### Release Details\n - **Type:** ${{ github.event.inputs.bump_type }}\n - **Description:** ${{ github.event.inputs.description || 'Manual release' }}\n - **Triggered by:** @${{ github.actor }}\n\n ### Next Steps\n 1. Review the changeset in this PR\n 2. Merge this PR to main\n 3. The automated release workflow will create a version PR\n 4. Merge the version PR to publish to npm and create a GitHub release\n","numLines":1850,"startLine":1,"totalLines":1850}}} | |
| [2025-12-22T17:14:32.331Z] [INFO] {"type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_01CqD9wNgFACPSM5dLHnrRFt","type":"tool_result","content":[{"type":"image","source":{"type":"base64","data":"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 | |
| [2025-12-22T17:14:32.336Z] [INFO] 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 | |
| [2025-12-22T17:14:32.340Z] [INFO] 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","media_type":"image/png"}}]}]},"parent_tool_use_id":null,"session_id":"ad16a8b2-2455-42b8-b611-73f369cef417","uuid":"addca4b6-fb55-4ab8-ba72-8ca7c2d14a99","tool_use_result":{"type":"image","file":{"base64":"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 | |
| [2025-12-22T17:14:32.360Z] [INFO] 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 | |
| [2025-12-22T17:14:32.362Z] [INFO] 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 | |
| [2025-12-22T17:14:32.368Z] [INFO] 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","type":"image/png","originalSize":1255995}}} | |
| [2025-12-22T17:14:39.963Z] [INFO] { | |
| "type": "assistant", | |
| "message": { | |
| "model": "claude-opus-4-5-20251101", | |
| "id": "msg_01X2DL8JsQKA5rnn8i5wS9Q6", | |
| "type": "message", | |
| "role": "assistant", | |
| "content": [ | |
| { | |
| "type": "text", | |
| "text": "The screenshot clearly shows the Docker Hub page for `konard/hive-mind`. I can see that:\n\n1. **Only linux/amd64 architecture is available** - The images (latest and 0.38.1) only have `linux/amd64` OS/ARCH\n2. **Last pushed 13 days ago** - The image was last pushed approximately Dec 9-10, 2025\n3. **Repository size is 23.6 GB** with 513 downloads\n\nThis explains the error - the user is on a Mac with ARM64 (Apple Silicon) and trying to pull an image that only has amd64 manifest, not arm64.\n\nLet me update my todo list and continue investigating:" | |
| } | |
| ], | |
| "stop_reason": null, | |
| "stop_sequence": null, | |
| "usage": { | |
| "input_tokens": 3, | |
| "cache_creation_input_tokens": 27295, | |
| "cache_read_input_tokens": 26076, | |
| "cache_creation": { | |
| "ephemeral_5m_input_tokens": 27295, | |
| "ephemeral_1h_input_tokens": 0 | |
| }, | |
| "output_tokens": 1, | |
| "service_tier": "standard" | |
| }, | |
| "context_management": null | |
| }, | |
| "parent_tool_use_id": null, | |
| "session_id": "ad16a8b2-2455-42b8-b611-73f369cef417", | |
| "uuid": "13097e36-38bb-41d3-943f-8275e5f4569b" | |
| } | |
| [2025-12-22T17:14:43.538Z] [INFO] { | |
| "type": "assistant", | |
| "message": { | |
| "model": "claude-opus-4-5-20251101", | |
| "id": "msg_01X2DL8JsQKA5rnn8i5wS9Q6", | |
| "type": "message", | |
| "role": "assistant", | |
| "content": [ | |
| { | |
| "type": "tool_use", | |
| "id": "toolu_01Bx4N84TYKL3PmMMYso2hhp", | |
| "name": "TodoWrite", | |
| "input": { | |
| "todos": [ | |
| { | |
| "content": "Download and analyze screenshot from issue comment", | |
| "status": "completed", | |
| "activeForm": "Downloading and analyzing screenshot from issue comment" | |
| }, | |
| { | |
| "content": "Study GitHub Actions workflows for Docker publishing", | |
| "status": "completed", | |
| "activeForm": "Studying GitHub Actions workflows for Docker publishing" | |
| }, | |
| { | |
| "content": "List recent CI runs with timestamps and check for failures", | |
| "status": "in_progress", | |
| "activeForm": "Listing recent CI runs with timestamps" | |
| }, | |
| { | |
| "content": "Download logs from relevant CI runs to ci-logs directory", | |
| "status": "pending", | |
| "activeForm": "Downloading logs from CI runs" | |
| }, | |
| { | |
| "content": "Check Docker Hub manifest for konard/hive-mind image", | |
| "status": "pending", | |
| "activeForm": "Checking Docker Hub manifest" | |
| }, | |
| { | |
| "content": "Research online for linux/arm64/v8 manifest error causes", | |
| "status": "pending", | |
| "activeForm": "Researching online for error causes" | |
| }, | |
| { | |
| "content": "Create case study folder structure in docs/case-studies/issue-962", | |
| "status": "pending", | |
| "activeForm": "Creating case study folder structure" | |
| }, | |
| { | |
| "content": "Compile timeline and sequence of events", | |
| "status": "pending", | |
| "activeForm": "Compiling timeline and sequence of events" | |
| }, | |
| { | |
| "content": "Identify root cause of the problem", | |
| "status": "pending", | |
| "activeForm": "Identifying root cause" | |
| }, | |
| { | |
| "content": "Propose and implement solutions", | |
| "status": "pending", | |
| "activeForm": "Proposing and implementing solutions" | |
| }, | |
| { | |
| "content": "Update PR with complete case study and fix", | |
| "status": "pending", | |
| "activeForm": "Updating PR with case study and fix" | |
| } | |
| ] | |
| } | |
| } | |
| ], | |
| "stop_reason": "tool_use", | |
| "stop_sequence": null, | |
| "usage": { | |
| "input_tokens": 3, | |
| "cache_creation_input_tokens": 27295, | |
| "cache_read_input_tokens": 26076, | |
| "cache_creation": { | |
| "ephemeral_5m_input_tokens": 27295, | |
| "ephemeral_1h_input_tokens": 0 | |
| }, | |
| "output_tokens": 590, | |
| "service_tier": "standard" | |
| }, | |
| "context_management": null | |
| }, | |
| "parent_tool_use_id": null, | |
| "session_id": "ad16a8b2-2455-42b8-b611-73f369cef417", | |
| "uuid": "4166c9f0-6139-4297-aa13-132eecc00b98" | |
| } | |
| [2025-12-22T17:14:43.572Z] [INFO] { | |
| "type": "user", | |
| "message": { | |
| "role": "user", | |
| "content": [ | |
| { | |
| "tool_use_id": "toolu_01Bx4N84TYKL3PmMMYso2hhp", | |
| "type": "tool_result", | |
| "content": "Todos have been modified successfully. Ensure that you continue to use the todo list to track your progress. Please proceed with the current tasks if applicable" | |
| } | |
| ] | |
| }, | |
| "parent_tool_use_id": null, | |
| "session_id": "ad16a8b2-2455-42b8-b611-73f369cef417", | |
| "uuid": "c6d68854-7b9b-4c9f-b4a8-0994df73085b", | |
| "tool_use_result": { | |
| "oldTodos": [ | |
| { | |
| "content": "Download and analyze screenshot from issue comment", | |
| "status": "in_progress", | |
| "activeForm": "Downloading and analyzing screenshot from issue comment" | |
| }, | |
| { | |
| "content": "Study GitHub Actions workflows for Docker publishing", | |
| "status": "pending", | |
| "activeForm": "Studying GitHub Actions workflows for Docker publishing" | |
| }, | |
| { | |
| "content": "List recent CI runs with timestamps and check for failures", | |
| "status": "pending", | |
| "activeForm": "Listing recent CI runs with timestamps" | |
| }, | |
| { | |
| "content": "Download logs from relevant CI runs to ci-logs directory", | |
| "status": "pending", | |
| "activeForm": "Downloading logs from CI runs" | |
| }, | |
| { | |
| "content": "Check Docker Hub manifest for konard/hive-mind image", | |
| "status": "pending", | |
| "activeForm": "Checking Docker Hub manifest" | |
| }, | |
| { | |
| "content": "Research online for linux/arm64/v8 manifest error causes", | |
| "status": "pending", | |
| "activeForm": "Researching online for error causes" | |
| }, | |
| { | |
| "content": "Create case study folder structure in docs/case-studies/issue-962", | |
| "status": "pending", | |
| "activeForm": "Creating case study folder structure" | |
| }, | |
| { | |
| "content": "Compile timeline and sequence of events", | |
| "status": "pending", | |
| "activeForm": "Compiling timeline and sequence of events" | |
| }, | |
| { | |
| "content": "Identify root cause of the problem", | |
| "status": "pending", | |
| "activeForm": "Identifying root cause" | |
| }, | |
| { | |
| "content": "Propose and implement solutions", | |
| "status": "pending", | |
| "activeForm": "Proposing and implementing solutions" | |
| }, | |
| { | |
| "content": "Update PR with complete case study and fix", | |
| "status": "pending", | |
| "activeForm": "Updating PR with case study and fix" | |
| } | |
| ], | |
| "newTodos": [ | |
| { | |
| "content": "Download and analyze screenshot from issue comment", | |
| "status": "completed", | |
| "activeForm": "Downloading and analyzing screenshot from issue comment" | |
| }, | |
| { | |
| "content": "Study GitHub Actions workflows for Docker publishing", | |
| "status": "completed", | |
| "activeForm": "Studying GitHub Actions workflows for Docker publishing" | |
| }, | |
| { | |
| "content": "List recent CI runs with timestamps and check for failures", | |
| "status": "in_progress", | |
| "activeForm": "Listing recent CI runs with timestamps" | |
| }, | |
| { | |
| "content": "Download logs from relevant CI runs to ci-logs directory", | |
| "status": "pending", | |
| "activeForm": "Downloading logs from CI runs" | |
| }, | |
| { | |
| "content": "Check Docker Hub manifest for konard/hive-mind image", | |
| "status": "pending", | |
| "activeForm": "Checking Docker Hub manifest" | |
| }, | |
| { | |
| "content": "Research online for linux/arm64/v8 manifest error causes", | |
| "status": "pending", | |
| "activeForm": "Researching online for error causes" | |
| }, | |
| { | |
| "content": "Create case study folder structure in docs/case-studies/issue-962", | |
| "status": "pending", | |
| "activeForm": "Creating case study folder structure" | |
| }, | |
| { | |
| "content": "Compile timeline and sequence of events", | |
| "status": "pending", | |
| "activeForm": "Compiling timeline and sequence of events" | |
| }, | |
| { | |
| "content": "Identify root cause of the problem", | |
| "status": "pending", | |
| "activeForm": "Identifying root cause" | |
| }, | |
| { | |
| "content": "Propose and implement solutions", | |
| "status": "pending", | |
| "activeForm": "Proposing and implementing solutions" | |
| }, | |
| { | |
| "content": "Update PR with complete case study and fix", | |
| "status": "pending", | |
| "activeForm": "Updating PR with case study and fix" | |
| } | |
| ] | |
| } | |
| } | |
| [2025-12-22T17:14:47.679Z] [INFO] { | |
| "type": "assistant", | |
| "message": { | |
| "model": "claude-opus-4-5-20251101", | |
| "id": "msg_018ny1Xvs2uvqXe6xJ4QBTHd", | |
| "type": "message", | |
| "role": "assistant", | |
| "content": [ | |
| { | |
| "type": "text", | |
| "text": "Now I see from the workflow file (lines 1647-1657) that the docker-publish job uses `platforms: linux/amd64,linux/arm64` which should build multi-platform images. Let me check the recent CI runs and look for releases:" | |
| } | |
| ], | |
| "stop_reason": null, | |
| "stop_sequence": null, | |
| "usage": { | |
| "input_tokens": 1, | |
| "cache_creation_input_tokens": 634, | |
| "cache_read_input_tokens": 53371, | |
| "cache_creation": { | |
| "ephemeral_5m_input_tokens": 634, | |
| "ephemeral_1h_input_tokens": 0 | |
| }, | |
| "output_tokens": 1, | |
| "service_tier": "standard" | |
| }, | |
| "context_management": null | |
| }, | |
| "parent_tool_use_id": null, | |
| "session_id": "ad16a8b2-2455-42b8-b611-73f369cef417", | |
| "uuid": "0df7320e-47d7-4195-8bc1-76d1cdc25c08" | |
| } | |
| [2025-12-22T17:14:49.048Z] [INFO] { | |
| "type": "assistant", | |
| "message": { | |
| "model": "claude-opus-4-5-20251101", | |
| "id": "msg_018ny1Xvs2uvqXe6xJ4QBTHd", | |
| "type": "message", | |
| "role": "assistant", | |
| "content": [ | |
| { | |
| "type": "tool_use", | |
| "id": "toolu_019BeEFApJ9uQgNqP8vQuhVJ", | |
| "name": "Bash", | |
| "input": { | |
| "command": "gh run list --repo link-assistant/hive-mind --limit 20 --json databaseId,conclusion,createdAt,headSha,name,headBranch,status 2>&1", | |
| "description": "List recent CI runs" | |
| } | |
| } | |
| ], | |
| "stop_reason": null, | |
| "stop_sequence": null, | |
| "usage": { | |
| "input_tokens": 1, | |
| "cache_creation_input_tokens": 634, | |
| "cache_read_input_tokens": 53371, | |
| "cache_creation": { | |
| "ephemeral_5m_input_tokens": 634, | |
| "ephemeral_1h_input_tokens": 0 | |
| }, | |
| "output_tokens": 1, | |
| "service_tier": "standard" | |
| }, | |
| "context_management": null | |
| }, | |
| "parent_tool_use_id": null, | |
| "session_id": "ad16a8b2-2455-42b8-b611-73f369cef417", | |
| "uuid": "d1866795-d3d2-421c-8a42-0a52321ae26a" | |
| } | |
| [2025-12-22T17:14:54.073Z] [INFO] { | |
| "type": "assistant", | |
| "message": { | |
| "model": "claude-opus-4-5-20251101", | |
| "id": "msg_018ny1Xvs2uvqXe6xJ4QBTHd", | |
| "type": "message", | |
| "role": "assistant", | |
| "content": [ | |
| { | |
| "type": "tool_use", | |
| "id": "toolu_01WCZv8wtmDku3Wc7sZnvje2", | |
| "name": "Bash", | |
| "input": { | |
| "command": "gh release list --repo link-assistant/hive-mind --limit 10 2>&1", | |
| "description": "List recent releases" | |
| } | |
| } | |
| ], | |
| "stop_reason": null, | |
| "stop_sequence": null, | |
| "usage": { | |
| "input_tokens": 1, | |
| "cache_creation_input_tokens": 634, | |
| "cache_read_input_tokens": 53371, | |
| "cache_creation": { | |
| "ephemeral_5m_input_tokens": 634, | |
| "ephemeral_1h_input_tokens": 0 | |
| }, | |
| "output_tokens": 1, | |
| "service_tier": "standard" | |
| }, | |
| "context_management": null | |
| }, | |
| "parent_tool_use_id": null, | |
| "session_id": "ad16a8b2-2455-42b8-b611-73f369cef417", | |
| "uuid": "19e94133-0df3-439f-8718-990734891177" | |
| } | |
| [2025-12-22T17:14:56.463Z] [INFO] { | |
| "type": "user", | |
| "message": { | |
| "role": "user", | |
| "content": [ | |
| { | |
| "tool_use_id": "toolu_019BeEFApJ9uQgNqP8vQuhVJ", | |
| "type": "tool_result", | |
| "content": "[{\"conclusion\":\"failure\",\"createdAt\":\"2025-12-22T17:13:44Z\",\"databaseId\":20438885279,\"headBranch\":\"issue-962-7502f60e53a0\",\"headSha\":\"84d7852716c120b70176f6ddba63311b974b8fef\",\"name\":\"Checks and release\",\"status\":\"completed\"},{\"conclusion\":\"\",\"createdAt\":\"2025-12-22T17:10:30Z\",\"databaseId\":20438805004,\"headBranch\":\"issue-964-3f15f830dfcb\",\"headSha\":\"31298d7d04cf3ab2d6d506832fb7d6e23381bffa\",\"name\":\"Checks and release\",\"status\":\"in_progress\"},{\"conclusion\":\"success\",\"createdAt\":\"2025-12-22T17:09:27Z\",\"databaseId\":20438778534,\"headBranch\":\"issue-727-c987a1fa8785\",\"headSha\":\"7d32e4050fffe4bfa17df81b699fb97c6efaf6ea\",\"name\":\"Checks and release\",\"status\":\"completed\"},{\"conclusion\":\"success\",\"createdAt\":\"2025-12-22T17:04:57Z\",\"databaseId\":20438663850,\"headBranch\":\"issue-964-3f15f830dfcb\",\"headSha\":\"7adf2779ea37daa61f62623a75d5c0e0246612b4\",\"name\":\"Checks and release\",\"status\":\"completed\"},{\"conclusion\":\"failure\",\"createdAt\":\"2025-12-22T17:03:00Z\",\"databaseId\":20438614391,\"headBranch\":\"issue-964-3f15f830dfcb\",\"headSha\":\"93a0af9f4ec7231f52e89d90502731a578f801a0\",\"name\":\"Checks and release\",\"status\":\"completed\"},{\"conclusion\":\"failure\",\"createdAt\":\"2025-12-22T16:56:10Z\",\"databaseId\":20438451672,\"headBranch\":\"main\",\"headSha\":\"1f6b44db6003278faeed0101ae3237e4ac6a9f2d\",\"name\":\"Checks and release\",\"status\":\"completed\"},{\"conclusion\":\"failure\",\"createdAt\":\"2025-12-22T16:53:40Z\",\"databaseId\":20438393275,\"headBranch\":\"issue-964-3f15f830dfcb\",\"headSha\":\"4cb6734bc5b9a57b36a3d507d070af14b7813448\",\"name\":\"Checks and release\",\"status\":\"completed\"},{\"conclusion\":\"success\",\"createdAt\":\"2025-12-22T15:54:43Z\",\"databaseId\":20436970010,\"headBranch\":\"issue-962-2cb97d68aef3\",\"headSha\":\"35b5e4bc65e40c38a3ba18816f0e704dda83ada4\",\"name\":\"Checks and release\",\"status\":\"completed\"},{\"conclusion\":\"failure\",\"createdAt\":\"2025-12-22T15:28:12Z\",\"databaseId\":20436325750,\"headBranch\":\"issue-962-2cb97d68aef3\",\"headSha\":\"9d79b8d7e161956cd8ea55433d8c19a0c913ba12\",\"name\":\"Checks and release\",\"status\":\"completed\"},{\"conclusion\":\"failure\",\"createdAt\":\"2025-12-22T15:02:53Z\",\"databaseId\":20435629477,\"headBranch\":\"issue-962-2cb97d68aef3\",\"headSha\":\"1cfd7e903d78bb81b624d6d1590ef295c9aac261\",\"name\":\"Checks and release\",\"status\":\"completed\"},{\"conclusion\":\"failure\",\"createdAt\":\"2025-12-22T14:32:22Z\",\"databaseId\":20434874029,\"headBranch\":\"issue-962-2cb97d68aef3\",\"headSha\":\"dce51675399e9cd778f4f33414e0a882192d62b4\",\"name\":\"Checks and release\",\"status\":\"completed\"},{\"conclusion\":\"success\",\"createdAt\":\"2025-12-22T14:08:43Z\",\"databaseId\":20434240802,\"headBranch\":\"issue-962-2cb97d68aef3\",\"headSha\":\"ea02b323bd19deda4c30cb67f3416de0e0fdc2d8\",\"name\":\"Checks and release\",\"status\":\"completed\"},{\"conclusion\":\"success\",\"createdAt\":\"2025-12-22T14:06:25Z\",\"databaseId\":20434179903,\"headBranch\":\"issue-962-2cb97d68aef3\",\"headSha\":\"d8a0f8d01f3b524a8a867fa59d432f4684da55ee\",\"name\":\"Checks and release\",\"status\":\"completed\"},{\"conclusion\":\"failure\",\"createdAt\":\"2025-12-22T14:04:09Z\",\"databaseId\":20434121087,\"headBranch\":\"issue-962-2cb97d68aef3\",\"headSha\":\"ca69670281da39793302d2e34acfaef2b466c5f9\",\"name\":\"Checks and release\",\"status\":\"completed\"},{\"conclusion\":\"failure\",\"createdAt\":\"2025-12-22T13:57:41Z\",\"databaseId\":20433966277,\"headBranch\":\"issue-962-2cb97d68aef3\",\"headSha\":\"a2de447fa05e5c6027c424c70a8d427278fc34fb\",\"name\":\"Checks and release\",\"status\":\"completed\"},{\"conclusion\":\"success\",\"createdAt\":\"2025-12-22T07:22:19Z\",\"databaseId\":20424882169,\"headBranch\":\"issue-960-4b0fdff43593\",\"headSha\":\"4b415eca0a66154fea175a8f68121fea5ed509ca\",\"name\":\"Checks and release\",\"status\":\"completed\"},{\"conclusion\":\"success\",\"createdAt\":\"2025-12-22T06:42:06Z\",\"databaseId\":20424106320,\"headBranch\":\"main\",\"headSha\":\"5e975817856b3e8f1a9121819ffa69a91f087a66\",\"name\":\"Checks and release\",\"status\":\"completed\"},{\"conclusion\":\"success\",\"createdAt\":\"2025-12-22T06:41:58Z\",\"databaseId\":20424103968,\"headBranch\":\"issue-960-4b0fdff43593\",\"headSha\":\"70607f2aa60aca2c1ee985f6327dacc5dbc4e9bf\",\"name\":\"Checks and release\",\"status\":\"completed\"},{\"conclusion\":\"failure\",\"createdAt\":\"2025-12-22T06:40:04Z\",\"databaseId\":20424071695,\"headBranch\":\"issue-960-4b0fdff43593\",\"headSha\":\"8934ed62e8436b80ab0d620e24731d1d447fbe06\",\"name\":\"Checks and release\",\"status\":\"completed\"},{\"conclusion\":\"failure\",\"createdAt\":\"2025-12-22T06:32:54Z\",\"databaseId\":20423947168,\"headBranch\":\"issue-960-4b0fdff43593\",\"headSha\":\"a352ed4055d96cbc47e3bad062674c37104f2705\",\"name\":\"Checks and release\",\"status\":\"completed\"}]", | |
| "is_error": false | |
| } | |
| ] | |
| }, | |
| "parent_tool_use_id": null, | |
| "session_id": "ad16a8b2-2455-42b8-b611-73f369cef417", | |
| "uuid": "85c4928c-e6c4-4e3c-bff8-fb2727563968", | |
| "tool_use_result": { | |
| "stdout": "[{\"conclusion\":\"failure\",\"createdAt\":\"2025-12-22T17:13:44Z\",\"databaseId\":20438885279,\"headBranch\":\"issue-962-7502f60e53a0\",\"headSha\":\"84d7852716c120b70176f6ddba63311b974b8fef\",\"name\":\"Checks and release\",\"status\":\"completed\"},{\"conclusion\":\"\",\"createdAt\":\"2025-12-22T17:10:30Z\",\"databaseId\":20438805004,\"headBranch\":\"issue-964-3f15f830dfcb\",\"headSha\":\"31298d7d04cf3ab2d6d506832fb7d6e23381bffa\",\"name\":\"Checks and release\",\"status\":\"in_progress\"},{\"conclusion\":\"success\",\"createdAt\":\"2025-12-22T17:09:27Z\",\"databaseId\":20438778534,\"headBranch\":\"issue-727-c987a1fa8785\",\"headSha\":\"7d32e4050fffe4bfa17df81b699fb97c6efaf6ea\",\"name\":\"Checks and release\",\"status\":\"completed\"},{\"conclusion\":\"success\",\"createdAt\":\"2025-12-22T17:04:57Z\",\"databaseId\":20438663850,\"headBranch\":\"issue-964-3f15f830dfcb\",\"headSha\":\"7adf2779ea37daa61f62623a75d5c0e0246612b4\",\"name\":\"Checks and release\",\"status\":\"completed\"},{\"conclusion\":\"failure\",\"createdAt\":\"2025-12-22T17:03:00Z\",\"databaseId\":20438614391,\"headBranch\":\"issue-964-3f15f830dfcb\",\"headSha\":\"93a0af9f4ec7231f52e89d90502731a578f801a0\",\"name\":\"Checks and release\",\"status\":\"completed\"},{\"conclusion\":\"failure\",\"createdAt\":\"2025-12-22T16:56:10Z\",\"databaseId\":20438451672,\"headBranch\":\"main\",\"headSha\":\"1f6b44db6003278faeed0101ae3237e4ac6a9f2d\",\"name\":\"Checks and release\",\"status\":\"completed\"},{\"conclusion\":\"failure\",\"createdAt\":\"2025-12-22T16:53:40Z\",\"databaseId\":20438393275,\"headBranch\":\"issue-964-3f15f830dfcb\",\"headSha\":\"4cb6734bc5b9a57b36a3d507d070af14b7813448\",\"name\":\"Checks and release\",\"status\":\"completed\"},{\"conclusion\":\"success\",\"createdAt\":\"2025-12-22T15:54:43Z\",\"databaseId\":20436970010,\"headBranch\":\"issue-962-2cb97d68aef3\",\"headSha\":\"35b5e4bc65e40c38a3ba18816f0e704dda83ada4\",\"name\":\"Checks and release\",\"status\":\"completed\"},{\"conclusion\":\"failure\",\"createdAt\":\"2025-12-22T15:28:12Z\",\"databaseId\":20436325750,\"headBranch\":\"issue-962-2cb97d68aef3\",\"headSha\":\"9d79b8d7e161956cd8ea55433d8c19a0c913ba12\",\"name\":\"Checks and release\",\"status\":\"completed\"},{\"conclusion\":\"failure\",\"createdAt\":\"2025-12-22T15:02:53Z\",\"databaseId\":20435629477,\"headBranch\":\"issue-962-2cb97d68aef3\",\"headSha\":\"1cfd7e903d78bb81b624d6d1590ef295c9aac261\",\"name\":\"Checks and release\",\"status\":\"completed\"},{\"conclusion\":\"failure\",\"createdAt\":\"2025-12-22T14:32:22Z\",\"databaseId\":20434874029,\"headBranch\":\"issue-962-2cb97d68aef3\",\"headSha\":\"dce51675399e9cd778f4f33414e0a882192d62b4\",\"name\":\"Checks and release\",\"status\":\"completed\"},{\"conclusion\":\"success\",\"createdAt\":\"2025-12-22T14:08:43Z\",\"databaseId\":20434240802,\"headBranch\":\"issue-962-2cb97d68aef3\",\"headSha\":\"ea02b323bd19deda4c30cb67f3416de0e0fdc2d8\",\"name\":\"Checks and release\",\"status\":\"completed\"},{\"conclusion\":\"success\",\"createdAt\":\"2025-12-22T14:06:25Z\",\"databaseId\":20434179903,\"headBranch\":\"issue-962-2cb97d68aef3\",\"headSha\":\"d8a0f8d01f3b524a8a867fa59d432f4684da55ee\",\"name\":\"Checks and release\",\"status\":\"completed\"},{\"conclusion\":\"failure\",\"createdAt\":\"2025-12-22T14:04:09Z\",\"databaseId\":20434121087,\"headBranch\":\"issue-962-2cb97d68aef3\",\"headSha\":\"ca69670281da39793302d2e34acfaef2b466c5f9\",\"name\":\"Checks and release\",\"status\":\"completed\"},{\"conclusion\":\"failure\",\"createdAt\":\"2025-12-22T13:57:41Z\",\"databaseId\":20433966277,\"headBranch\":\"issue-962-2cb97d68aef3\",\"headSha\":\"a2de447fa05e5c6027c424c70a8d427278fc34fb\",\"name\":\"Checks and release\",\"status\":\"completed\"},{\"conclusion\":\"success\",\"createdAt\":\"2025-12-22T07:22:19Z\",\"databaseId\":20424882169,\"headBranch\":\"issue-960-4b0fdff43593\",\"headSha\":\"4b415eca0a66154fea175a8f68121fea5ed509ca\",\"name\":\"Checks and release\",\"status\":\"completed\"},{\"conclusion\":\"success\",\"createdAt\":\"2025-12-22T06:42:06Z\",\"databaseId\":20424106320,\"headBranch\":\"main\",\"headSha\":\"5e975817856b3e8f1a9121819ffa69a91f087a66\",\"name\":\"Checks and release\",\"status\":\"completed\"},{\"conclusion\":\"success\",\"createdAt\":\"2025-12-22T06:41:58Z\",\"databaseId\":20424103968,\"headBranch\":\"issue-960-4b0fdff43593\",\"headSha\":\"70607f2aa60aca2c1ee985f6327dacc5dbc4e9bf\",\"name\":\"Checks and release\",\"status\":\"completed\"},{\"conclusion\":\"failure\",\"createdAt\":\"2025-12-22T06:40:04Z\",\"databaseId\":20424071695,\"headBranch\":\"issue-960-4b0fdff43593\",\"headSha\":\"8934ed62e8436b80ab0d620e24731d1d447fbe06\",\"name\":\"Checks and release\",\"status\":\"completed\"},{\"conclusion\":\"failure\",\"createdAt\":\"2025-12-22T06:32:54Z\",\"databaseId\":20423947168,\"headBranch\":\"issue-960-4b0fdff43593\",\"headSha\":\"a352ed4055d96cbc47e3bad062674c37104f2705\",\"name\":\"Checks and release\",\"status\":\"completed\"}]", | |
| "stderr": "", | |
| "interrupted": false, | |
| "isImage": false | |
| } | |
| } | |
| [2025-12-22T17:14:59.092Z] [INFO] { | |
| "type": "user", | |
| "message": { | |
| "role": "user", | |
| "content": [ | |
| { | |
| "tool_use_id": "toolu_01WCZv8wtmDku3Wc7sZnvje2", | |
| "type": "tool_result", | |
| "content": "0.48.3\tLatest\tv0.48.3\t2025-12-22T17:01:08Z\n0.48.2\t\tv0.48.2\t2025-12-21T20:54:17Z\n0.48.1\t\tv0.48.1\t2025-12-21T18:17:15Z\n0.48.0\t\tv0.48.0\t2025-12-21T18:05:05Z\n0.47.2\t\tv0.47.2\t2025-12-21T17:55:07Z\n0.47.1\t\tv0.47.1\t2025-12-21T17:43:11Z\n0.47.0\t\tv0.47.0\t2025-12-21T15:44:02Z\n0.46.1\t\tv0.46.1\t2025-12-21T01:42:10Z\n0.46.0\t\tv0.46.0\t2025-12-21T00:27:56Z\n0.45.0\t\tv0.45.0\t2025-12-21T00:06:22Z", | |
| "is_error": false | |
| } | |
| ] | |
| }, | |
| "parent_tool_use_id": null, | |
| "session_id": "ad16a8b2-2455-42b8-b611-73f369cef417", | |
| "uuid": "48cff177-9b8a-4608-b8f4-bbc7946c493c", | |
| "tool_use_result": { | |
| "stdout": "0.48.3\tLatest\tv0.48.3\t2025-12-22T17:01:08Z\n0.48.2\t\tv0.48.2\t2025-12-21T20:54:17Z\n0.48.1\t\tv0.48.1\t2025-12-21T18:17:15Z\n0.48.0\t\tv0.48.0\t2025-12-21T18:05:05Z\n0.47.2\t\tv0.47.2\t2025-12-21T17:55:07Z\n0.47.1\t\tv0.47.1\t2025-12-21T17:43:11Z\n0.47.0\t\tv0.47.0\t2025-12-21T15:44:02Z\n0.46.1\t\tv0.46.1\t2025-12-21T01:42:10Z\n0.46.0\t\tv0.46.0\t2025-12-21T00:27:56Z\n0.45.0\t\tv0.45.0\t2025-12-21T00:06:22Z", | |
| "stderr": "", | |
| "interrupted": false, | |
| "isImage": false | |
| } | |
| } | |
| [2025-12-22T17:15:04.167Z] [INFO] { | |
| "type": "assistant", | |
| "message": { | |
| "model": "claude-opus-4-5-20251101", | |
| "id": "msg_017T4yDWtBVqfPhbuGfiuqkn", | |
| "type": "message", | |
| "role": "assistant", | |
| "content": [ | |
| { | |
| "type": "text", | |
| "text": "Interesting! The latest release is 0.48.3 (Dec 22, 2025), but the Docker Hub screenshot shows \"latest\" was pushed 13 days ago with version 0.38.1. This means Docker publish has not been working recently.\n\nLet me check the latest main branch run that failed and look for docker-publish job:" | |
| } | |
| ], | |
| "stop_reason": null, | |
| "stop_sequence": null, | |
| "usage": { | |
| "input_tokens": 1, | |
| "cache_creation_input_tokens": 2355, | |
| "cache_read_input_tokens": 54005, | |
| "cache_creation": { | |
| "ephemeral_5m_input_tokens": 2355, | |
| "ephemeral_1h_input_tokens": 0 | |
| }, | |
| "output_tokens": 2, | |
| "service_tier": "standard" | |
| }, | |
| "context_management": null | |
| }, | |
| "parent_tool_use_id": null, | |
| "session_id": "ad16a8b2-2455-42b8-b611-73f369cef417", | |
| "uuid": "aafaf8bc-35ca-4b69-8850-4d41838afff3" | |
| } | |
| [2025-12-22T17:15:05.321Z] [INFO] { | |
| "type": "assistant", | |
| "message": { | |
| "model": "claude-opus-4-5-20251101", | |
| "id": "msg_017T4yDWtBVqfPhbuGfiuqkn", | |
| "type": "message", | |
| "role": "assistant", | |
| "content": [ | |
| { | |
| "type": "tool_use", | |
| "id": "toolu_01RKjtUSnbs38NH3SosN6sjm", | |
| "name": "Bash", | |
| "input": { | |
| "command": "gh run view 20438451672 --repo link-assistant/hive-mind --json jobs,conclusion,createdAt,headSha,status 2>&1", | |
| "description": "View recent main branch run details" | |
| } | |
| } | |
| ], | |
| "stop_reason": null, | |
| "stop_sequence": null, | |
| "usage": { | |
| "input_tokens": 1, | |
| "cache_creation_input_tokens": 2355, | |
| "cache_read_input_tokens": 54005, | |
| "cache_creation": { | |
| "ephemeral_5m_input_tokens": 2355, | |
| "ephemeral_1h_input_tokens": 0 | |
| }, | |
| "output_tokens": 2, | |
| "service_tier": "standard" | |
| }, | |
| "context_management": null | |
| }, | |
| "parent_tool_use_id": null, | |
| "session_id": "ad16a8b2-2455-42b8-b611-73f369cef417", | |
| "uuid": "1b8eeb6e-86d3-4347-b499-801990543039" | |
| } | |
| [2025-12-22T17:15:05.710Z] [INFO] { | |
| "type": "assistant", | |
| "message": { | |
| "model": "claude-opus-4-5-20251101", | |
| "id": "msg_017T4yDWtBVqfPhbuGfiuqkn", | |
| "type": "message", | |
| "role": "assistant", | |
| "content": [ | |
| { | |
| "type": "tool_use", | |
| "id": "toolu_0142Qbth56UdWUF9kSSRTHFQ", | |
| "name": "Bash", | |
| "input": { | |
| "command": "gh run view 20424106320 --repo link-assistant/hive-mind --json jobs,conclusion,createdAt,headSha,status 2>&1", | |
| "description": "View successful main branch run" | |
| } | |
| } | |
| ], | |
| "stop_reason": null, | |
| "stop_sequence": null, | |
| "usage": { | |
| "input_tokens": 1, | |
| "cache_creation_input_tokens": 2355, | |
| "cache_read_input_tokens": 54005, | |
| "cache_creation": { | |
| "ephemeral_5m_input_tokens": 2355, | |
| "ephemeral_1h_input_tokens": 0 | |
| }, | |
| "output_tokens": 282, | |
| "service_tier": "standard" | |
| }, | |
| "context_management": null | |
| }, | |
| "parent_tool_use_id": null, | |
| "session_id": "ad16a8b2-2455-42b8-b611-73f369cef417", | |
| "uuid": "9bb0e2f6-a102-4e46-ba14-23ee5e4cb858" | |
| } | |
| [2025-12-22T17:15:07.882Z] [INFO] {"type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_01RKjtUSnbs38NH3SosN6sjm","type":"tool_result","content":"{\"conclusion\":\"failure\",\"createdAt\":\"2025-12-22T16:56:10Z\",\"headSha\":\"1f6b44db6003278faeed0101ae3237e4ac6a9f2d\",\"jobs\":[{\"completedAt\":\"2025-12-22T16:56:19Z\",\"conclusion\":\"success\",\"databaseId\":58725502043,\"name\":\"detect-changes\",\"startedAt\":\"2025-12-22T16:56:13Z\",\"status\":\"completed\",\"steps\":[{\"completedAt\":\"2025-12-22T16:56:14Z\",\"conclusion\":\"success\",\"name\":\"Set up job\",\"number\":1,\"startedAt\":\"2025-12-22T16:56:14Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:56:17Z\",\"conclusion\":\"success\",\"name\":\"Run actions/checkout@v4\",\"number\":2,\"startedAt\":\"2025-12-22T16:56:14Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:56:17Z\",\"conclusion\":\"success\",\"name\":\"Detect changes\",\"number\":3,\"startedAt\":\"2025-12-22T16:56:17Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:56:17Z\",\"conclusion\":\"success\",\"name\":\"Post Run actions/checkout@v4\",\"number\":6,\"startedAt\":\"2025-12-22T16:56:17Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:56:17Z\",\"conclusion\":\"success\",\"name\":\"Complete job\",\"number\":7,\"startedAt\":\"2025-12-22T16:56:17Z\",\"status\":\"completed\"}],\"url\":\"https://github.com/link-assistant/hive-mind/actions/runs/20438451672/job/58725502043\"},{\"completedAt\":\"2025-12-22T16:56:11Z\",\"conclusion\":\"skipped\",\"databaseId\":58725502144,\"name\":\"Check for Changesets\",\"startedAt\":\"2025-12-22T16:56:11Z\",\"status\":\"completed\",\"steps\":[],\"url\":\"https://github.com/link-assistant/hive-mind/actions/runs/20438451672/job/58725502144\"},{\"completedAt\":\"2025-12-22T16:56:11Z\",\"conclusion\":\"skipped\",\"databaseId\":58725502163,\"name\":\"Create Changeset PR\",\"startedAt\":\"2025-12-22T16:56:11Z\",\"status\":\"completed\",\"steps\":[],\"url\":\"https://github.com/link-assistant/hive-mind/actions/runs/20438451672/job/58725502163\"},{\"completedAt\":\"2025-12-22T16:56:11Z\",\"conclusion\":\"skipped\",\"databaseId\":58725502361,\"name\":\"Instant Release\",\"startedAt\":\"2025-12-22T16:56:11Z\",\"status\":\"completed\",\"steps\":[],\"url\":\"https://github.com/link-assistant/hive-mind/actions/runs/20438451672/job/58725502361\"},{\"completedAt\":\"2025-12-22T16:56:50Z\",\"conclusion\":\"success\",\"databaseId\":58725512522,\"name\":\"lint\",\"startedAt\":\"2025-12-22T16:56:22Z\",\"status\":\"completed\",\"steps\":[{\"completedAt\":\"2025-12-22T16:56:23Z\",\"conclusion\":\"success\",\"name\":\"Set up job\",\"number\":1,\"startedAt\":\"2025-12-22T16:56:22Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:56:26Z\",\"conclusion\":\"success\",\"name\":\"Checkout repository\",\"number\":2,\"startedAt\":\"2025-12-22T16:56:23Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:56:29Z\",\"conclusion\":\"success\",\"name\":\"Setup Node.js\",\"number\":3,\"startedAt\":\"2025-12-22T16:56:26Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:56:34Z\",\"conclusion\":\"success\",\"name\":\"Install dependencies\",\"number\":4,\"startedAt\":\"2025-12-22T16:56:29Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:56:45Z\",\"conclusion\":\"success\",\"name\":\"Run Prettier format check\",\"number\":5,\"startedAt\":\"2025-12-22T16:56:34Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:56:49Z\",\"conclusion\":\"success\",\"name\":\"Run ESLint\",\"number\":6,\"startedAt\":\"2025-12-22T16:56:45Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:56:49Z\",\"conclusion\":\"success\",\"name\":\"Post Setup Node.js\",\"number\":11,\"startedAt\":\"2025-12-22T16:56:49Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:56:49Z\",\"conclusion\":\"success\",\"name\":\"Post Checkout repository\",\"number\":12,\"startedAt\":\"2025-12-22T16:56:49Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:56:49Z\",\"conclusion\":\"success\",\"name\":\"Complete job\",\"number\":13,\"startedAt\":\"2025-12-22T16:56:49Z\",\"status\":\"completed\"}],\"url\":\"https://github.com/link-assistant/hive-mind/actions/runs/20438451672/job/58725512522\"},{\"completedAt\":\"2025-12-22T16:56:35Z\",\"conclusion\":\"success\",\"databaseId\":58725512523,\"name\":\"validate-docs\",\"startedAt\":\"2025-12-22T16:56:21Z\",\"status\":\"completed\",\"steps\":[{\"completedAt\":\"2025-12-22T16:56:23Z\",\"conclusion\":\"success\",\"name\":\"Set up job\",\"number\":1,\"startedAt\":\"2025-12-22T16:56:22Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:56:25Z\",\"conclusion\":\"success\",\"name\":\"Run actions/checkout@v4\",\"number\":2,\"startedAt\":\"2025-12-22T16:56:23Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:56:29Z\",\"conclusion\":\"success\",\"name\":\"Use Node.js 20.x\",\"number\":3,\"startedAt\":\"2025-12-22T16:56:25Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:56:32Z\",\"conclusion\":\"success\",\"name\":\"Validate documentation files\",\"number\":4,\"startedAt\":\"2025-12-22T16:56:29Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:56:33Z\",\"conclusion\":\"success\",\"name\":\"Post Use Node.js 20.x\",\"number\":7,\"startedAt\":\"2025-12-22T16:56:32Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:56:33Z\",\"conclusion\":\"success\",\"name\":\"Post Run actions/checkout@v4\",\"number\":8,\"startedAt\":\"2025-12-22T16:56:33Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:56:33Z\",\"conclusion\":\"success\",\"name\":\"Complete job\",\"number\":9,\"startedAt\":\"2025-12-22T16:56:33Z\",\"status\":\"completed\"}],\"url\":\"https://github.com/link-assistant/hive-mind/actions/runs/20438451672/job/58725512523\"},{\"completedAt\":\"2025-12-22T16:56:32Z\",\"conclusion\":\"success\",\"databaseId\":58725512531,\"name\":\"test-compilation\",\"startedAt\":\"2025-12-22T16:56:21Z\",\"status\":\"completed\",\"steps\":[{\"completedAt\":\"2025-12-22T16:56:23Z\",\"conclusion\":\"success\",\"name\":\"Set up job\",\"number\":1,\"startedAt\":\"2025-12-22T16:56:22Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:56:26Z\",\"conclusion\":\"success\",\"name\":\"Checkout repository\",\"number\":2,\"startedAt\":\"2025-12-22T16:56:23Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:56:29Z\",\"conclusion\":\"success\",\"name\":\"Setup Node.js\",\"number\":3,\"startedAt\":\"2025-12-22T16:56:26Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:56:29Z\",\"conclusion\":\"success\",\"name\":\"Test solve.mjs compilation\",\"number\":4,\"startedAt\":\"2025-12-22T16:56:29Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:56:29Z\",\"conclusion\":\"success\",\"name\":\"Test hive.mjs compilation\",\"number\":5,\"startedAt\":\"2025-12-22T16:56:29Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:56:31Z\",\"conclusion\":\"success\",\"name\":\"Check Node.js syntax for all .mjs files\",\"number\":6,\"startedAt\":\"2025-12-22T16:56:29Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:56:31Z\",\"conclusion\":\"success\",\"name\":\"Post Setup Node.js\",\"number\":11,\"startedAt\":\"2025-12-22T16:56:31Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:56:31Z\",\"conclusion\":\"success\",\"name\":\"Post Checkout repository\",\"number\":12,\"startedAt\":\"2025-12-22T16:56:31Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:56:31Z\",\"conclusion\":\"success\",\"name\":\"Complete job\",\"number\":13,\"startedAt\":\"2025-12-22T16:56:31Z\",\"status\":\"completed\"}],\"url\":\"https://github.com/link-assistant/hive-mind/actions/runs/20438451672/job/58725512531\"},{\"completedAt\":\"2025-12-22T16:56:34Z\",\"conclusion\":\"success\",\"databaseId\":58725512538,\"name\":\"check-file-line-limits\",\"startedAt\":\"2025-12-22T16:56:21Z\",\"status\":\"completed\",\"steps\":[{\"completedAt\":\"2025-12-22T16:56:23Z\",\"conclusion\":\"success\",\"name\":\"Set up job\",\"number\":1,\"startedAt\":\"2025-12-22T16:56:22Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:56:30Z\",\"conclusion\":\"success\",\"name\":\"Checkout repository\",\"number\":2,\"startedAt\":\"2025-12-22T16:56:23Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:56:31Z\",\"conclusion\":\"success\",\"name\":\"Check .mjs file line limits\",\"number\":3,\"startedAt\":\"2025-12-22T16:56:30Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:56:31Z\",\"conclusion\":\"success\",\"name\":\"Post Checkout repository\",\"number\":6,\"startedAt\":\"2025-12-22T16:56:31Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:56:31Z\",\"conclusion\":\"success\",\"name\":\"Complete job\",\"number\":7,\"startedAt\":\"2025-12-22T16:56:31Z\",\"status\":\"completed\"}],\"url\":\"https://github.com/link-assistant/hive-mind/actions/runs/20438451672/job/58725512538\"},{\"completedAt\":\"2025-12-22T16:56:19Z\",\"conclusion\":\"skipped\",\"databaseId\":58725512753,\"name\":\"helm-pr-check\",\"startedAt\":\"2025-12-22T16:56:19Z\",\"status\":\"completed\",\"steps\":[],\"url\":\"https://github.com/link-assistant/hive-mind/actions/runs/20438451672/job/58725512753\"},{\"completedAt\":\"2025-12-22T17:00:30Z\",\"conclusion\":\"success\",\"databaseId\":58725558067,\"name\":\"test-suites\",\"startedAt\":\"2025-12-22T16:56:53Z\",\"status\":\"completed\",\"steps\":[{\"completedAt\":\"2025-12-22T16:56:55Z\",\"conclusion\":\"success\",\"name\":\"Set up job\",\"number\":1,\"startedAt\":\"2025-12-22T16:56:54Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:56:57Z\",\"conclusion\":\"success\",\"name\":\"Run actions/checkout@v4\",\"number\":2,\"startedAt\":\"2025-12-22T16:56:55Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:56:58Z\",\"conclusion\":\"success\",\"name\":\"Use Node.js 20.x\",\"number\":3,\"startedAt\":\"2025-12-22T16:56:57Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:57:03Z\",\"conclusion\":\"success\",\"name\":\"Install dependencies\",\"number\":4,\"startedAt\":\"2025-12-22T16:56:58Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:57:27Z\",\"conclusion\":\"success\",\"name\":\"Run test suite for solve.mjs\",\"number\":5,\"startedAt\":\"2025-12-22T16:57:03Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:58:36Z\",\"conclusion\":\"success\",\"name\":\"Run test suite for hive.mjs\",\"number\":6,\"startedAt\":\"2025-12-22T16:57:27Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:58:52Z\",\"conclusion\":\"success\",\"name\":\"Run test suite for memory-check.mjs\",\"number\":7,\"startedAt\":\"2025-12-22T16:58:36Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:58:52Z\",\"conclusion\":\"success\",\"name\":\"Run branch name validation test (Issue\",\"number\":8,\"startedAt\":\"2025-12-22T16:58:52Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:58:52Z\",\"conclusion\":\"success\",\"name\":\"Run feedback lines regression test (Issue\",\"number\":9,\"startedAt\":\"2025-12-22T16:58:52Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:58:53Z\",\"conclusion\":\"success\",\"name\":\"Run feedback lines integration test (Issue\",\"number\":10,\"startedAt\":\"2025-12-22T16:58:52Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:58:54Z\",\"conclusion\":\"success\",\"name\":\"Run Sentry integration test\",\"number\":11,\"startedAt\":\"2025-12-22T16:58:53Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:59:27Z\",\"conclusion\":\"success\",\"name\":\"Run telegram-bot dry-run test (Issue\",\"number\":12,\"startedAt\":\"2025-12-22T16:58:54Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:59:39Z\",\"conclusion\":\"success\",\"name\":\"Run telegram-bot hero Links Notation test (Issue\",\"number\":13,\"startedAt\":\"2025-12-22T16:59:27Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T17:00:11Z\",\"conclusion\":\"success\",\"name\":\"Run hive command silent failure test (Issue\",\"number\":14,\"startedAt\":\"2025-12-22T16:59:39Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T17:00:11Z\",\"conclusion\":\"success\",\"name\":\"Run GitHub linking keyword detection test (Issue\",\"number\":15,\"startedAt\":\"2025-12-22T17:00:11Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T17:00:11Z\",\"conclusion\":\"success\",\"name\":\"Run Telegram Markdown escaping test (Issue\",\"number\":16,\"startedAt\":\"2025-12-22T17:00:11Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T17:00:11Z\",\"conclusion\":\"success\",\"name\":\"Run lenv-reader test (Issue\",\"number\":17,\"startedAt\":\"2025-12-22T17:00:11Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T17:00:13Z\",\"conclusion\":\"success\",\"name\":\"Run Telegram URL extraction test (Issue\",\"number\":18,\"startedAt\":\"2025-12-22T17:00:11Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T17:00:15Z\",\"conclusion\":\"success\",\"name\":\"Run Telegram URL validation test (Issue\",\"number\":19,\"startedAt\":\"2025-12-22T17:00:13Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T17:00:15Z\",\"conclusion\":\"success\",\"name\":\"Run interactive mode test (Issue\",\"number\":20,\"startedAt\":\"2025-12-22T17:00:15Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T17:00:27Z\",\"conclusion\":\"success\",\"name\":\"Run start-screen test (Issue\",\"number\":21,\"startedAt\":\"2025-12-22T17:00:15Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T17:00:27Z\",\"conclusion\":\"success\",\"name\":\"Post Use Node.js 20.x\",\"number\":41,\"startedAt\":\"2025-12-22T17:00:27Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T17:00:27Z\",\"conclusion\":\"success\",\"name\":\"Post Run actions/checkout@v4\",\"number\":42,\"startedAt\":\"2025-12-22T17:00:27Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T17:00:27Z\",\"conclusion\":\"success\",\"name\":\"Complete job\",\"number\":43,\"startedAt\":\"2025-12-22T17:00:27Z\",\"status\":\"completed\"}],\"url\":\"https://github.com/link-assistant/hive-mind/actions/runs/20438451672/job/58725558067\"},{\"completedAt\":\"2025-12-22T16:58:44Z\",\"conclusion\":\"success\",\"databaseId\":58725558103,\"name\":\"test-execution\",\"startedAt\":\"2025-12-22T16:56:53Z\",\"status\":\"completed\",\"steps\":[{\"completedAt\":\"2025-12-22T16:56:54Z\",\"conclusion\":\"success\",\"name\":\"Set up job\",\"number\":1,\"startedAt\":\"2025-12-22T16:56:54Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:56:57Z\",\"conclusion\":\"success\",\"name\":\"Run actions/checkout@v4\",\"number\":2,\"startedAt\":\"2025-12-22T16:56:54Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:56:58Z\",\"conclusion\":\"success\",\"name\":\"Use Node.js 20.x\",\"number\":3,\"startedAt\":\"2025-12-22T16:56:57Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:57:02Z\",\"conclusion\":\"success\",\"name\":\"Install dependencies\",\"number\":4,\"startedAt\":\"2025-12-22T16:56:58Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:57:03Z\",\"conclusion\":\"success\",\"name\":\"Test solve.mjs execution\",\"number\":5,\"startedAt\":\"2025-12-22T16:57:02Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:57:12Z\",\"conclusion\":\"success\",\"name\":\"Verify log files contain version and command (Issue\",\"number\":6,\"startedAt\":\"2025-12-22T16:57:03Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:57:13Z\",\"conclusion\":\"success\",\"name\":\"Test hive.mjs execution\",\"number\":7,\"startedAt\":\"2025-12-22T16:57:12Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:57:20Z\",\"conclusion\":\"success\",\"name\":\"Test telegram-bot.mjs execution\",\"number\":8,\"startedAt\":\"2025-12-22T16:57:13Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:57:23Z\",\"conclusion\":\"success\",\"name\":\"Test memory-check.mjs execution\",\"number\":9,\"startedAt\":\"2025-12-22T16:57:20Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:57:32Z\",\"conclusion\":\"success\",\"name\":\"Test global command installation\",\"number\":10,\"startedAt\":\"2025-12-22T16:57:23Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:58:03Z\",\"conclusion\":\"success\",\"name\":\"Test hive dry-run with solve integration\",\"number\":11,\"startedAt\":\"2025-12-22T16:57:32Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:58:42Z\",\"conclusion\":\"success\",\"name\":\"Test --auto-fork option\",\"number\":12,\"startedAt\":\"2025-12-22T16:58:03Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:58:42Z\",\"conclusion\":\"success\",\"name\":\"Post Use Node.js 20.x\",\"number\":23,\"startedAt\":\"2025-12-22T16:58:42Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:58:42Z\",\"conclusion\":\"success\",\"name\":\"Post Run actions/checkout@v4\",\"number\":24,\"startedAt\":\"2025-12-22T16:58:42Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:58:42Z\",\"conclusion\":\"success\",\"name\":\"Complete job\",\"number\":25,\"startedAt\":\"2025-12-22T16:58:42Z\",\"status\":\"completed\"}],\"url\":\"https://github.com/link-assistant/hive-mind/actions/runs/20438451672/job/58725558103\"},{\"completedAt\":\"2025-12-22T16:57:27Z\",\"conclusion\":\"success\",\"databaseId\":58725558129,\"name\":\"memory-check-linux\",\"startedAt\":\"2025-12-22T16:56:53Z\",\"status\":\"completed\",\"steps\":[{\"completedAt\":\"2025-12-22T16:56:55Z\",\"conclusion\":\"success\",\"name\":\"Set up job\",\"number\":1,\"startedAt\":\"2025-12-22T16:56:54Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:56:58Z\",\"conclusion\":\"success\",\"name\":\"Run actions/checkout@v4\",\"number\":2,\"startedAt\":\"2025-12-22T16:56:55Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:56:58Z\",\"conclusion\":\"success\",\"name\":\"Use Node.js 20.x\",\"number\":3,\"startedAt\":\"2025-12-22T16:56:58Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:56:58Z\",\"conclusion\":\"success\",\"name\":\"System info\",\"number\":4,\"startedAt\":\"2025-12-22T16:56:58Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:57:15Z\",\"conclusion\":\"success\",\"name\":\"Run memory-check tests\",\"number\":5,\"startedAt\":\"2025-12-22T16:56:58Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:57:21Z\",\"conclusion\":\"success\",\"name\":\"Test memory-check with various thresholds\",\"number\":6,\"startedAt\":\"2025-12-22T16:57:15Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:57:24Z\",\"conclusion\":\"success\",\"name\":\"Test memory-check failure conditions\",\"number\":7,\"startedAt\":\"2025-12-22T16:57:21Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:57:24Z\",\"conclusion\":\"success\",\"name\":\"Post Use Node.js 20.x\",\"number\":13,\"startedAt\":\"2025-12-22T16:57:24Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:57:25Z\",\"conclusion\":\"success\",\"name\":\"Post Run actions/checkout@v4\",\"number\":14,\"startedAt\":\"2025-12-22T16:57:24Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:57:25Z\",\"conclusion\":\"success\",\"name\":\"Complete job\",\"number\":15,\"startedAt\":\"2025-12-22T16:57:25Z\",\"status\":\"completed\"}],\"url\":\"https://github.com/link-assistant/hive-mind/actions/runs/20438451672/job/58725558129\"},{\"completedAt\":\"2025-12-22T16:56:51Z\",\"conclusion\":\"skipped\",\"databaseId\":58725558379,\"name\":\"docker-pr-check\",\"startedAt\":\"2025-12-22T16:56:51Z\",\"status\":\"completed\",\"steps\":[],\"url\":\"https://github.com/link-assistant/hive-mind/actions/runs/20438451672/job/58725558379\"},{\"completedAt\":\"2025-12-22T17:01:18Z\",\"conclusion\":\"failure\",\"databaseId\":58725844074,\"name\":\"Release\",\"startedAt\":\"2025-12-22T17:00:33Z\",\"status\":\"completed\",\"steps\":[{\"completedAt\":\"2025-12-22T17:00:35Z\",\"conclusion\":\"success\",\"name\":\"Set up job\",\"number\":1,\"startedAt\":\"2025-12-22T17:00:34Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T17:00:38Z\",\"conclusion\":\"success\",\"name\":\"Run actions/checkout@v4\",\"number\":2,\"startedAt\":\"2025-12-22T17:00:35Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T17:00:40Z\",\"conclusion\":\"success\",\"name\":\"Setup Node.js\",\"number\":3,\"startedAt\":\"2025-12-22T17:00:38Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T17:00:45Z\",\"conclusion\":\"success\",\"name\":\"Install dependencies\",\"number\":4,\"startedAt\":\"2025-12-22T17:00:40Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T17:00:50Z\",\"conclusion\":\"success\",\"name\":\"Update npm for OIDC trusted publishing\",\"number\":5,\"startedAt\":\"2025-12-22T17:00:45Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T17:00:50Z\",\"conclusion\":\"success\",\"name\":\"Check for changesets\",\"number\":6,\"startedAt\":\"2025-12-22T17:00:50Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T17:00:57Z\",\"conclusion\":\"success\",\"name\":\"Version packages and commit to main\",\"number\":7,\"startedAt\":\"2025-12-22T17:00:50Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T17:01:05Z\",\"conclusion\":\"success\",\"name\":\"Publish to npm\",\"number\":8,\"startedAt\":\"2025-12-22T17:00:57Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T17:01:09Z\",\"conclusion\":\"success\",\"name\":\"Create GitHub Release\",\"number\":9,\"startedAt\":\"2025-12-22T17:01:05Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T17:01:13Z\",\"conclusion\":\"success\",\"name\":\"Format GitHub release notes\",\"number\":10,\"startedAt\":\"2025-12-22T17:01:09Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T17:01:17Z\",\"conclusion\":\"failure\",\"name\":\"Post-publish - Upload Source Maps to Sentry\",\"number\":11,\"startedAt\":\"2025-12-22T17:01:13Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T17:01:17Z\",\"conclusion\":\"skipped\",\"name\":\"Post Setup Node.js\",\"number\":21,\"startedAt\":\"2025-12-22T17:01:17Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T17:01:17Z\",\"conclusion\":\"success\",\"name\":\"Post Run actions/checkout@v4\",\"number\":22,\"startedAt\":\"2025-12-22T17:01:17Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T17:01:17Z\",\"conclusion\":\"success\",\"name\":\"Complete job\",\"number\":23,\"startedAt\":\"2025-12-22T17:01:17Z\",\"status\":\"completed\"}],\"url\":\"https://github.com/link-assistant/hive-mind/actions/runs/20438451672/job/58725844074\"},{\"completedAt\":\"2025-12-22T17:01:19Z\",\"conclusion\":\"skipped\",\"databaseId\":58725908626,\"name\":\"Docker Publish\",\"startedAt\":\"2025-12-22T17:01:19Z\",\"status\":\"completed\",\"steps\":[],\"url\":\"https://github.com/link-assistant/hive-mind/actions/runs/20438451672/job/58725908626\"},{\"completedAt\":\"2025-12-22T17:01:19Z\",\"conclusion\":\"skipped\",\"databaseId\":58725908703,\"name\":\"Helm Release\",\"startedAt\":\"2025-12-22T17:01:19Z\",\"status\":\"completed\",\"steps\":[],\"url\":\"https://github.com/link-assistant/hive-mind/actions/runs/20438451672/job/58725908703\"}],\"status\":\"completed\"}","is_error":false}]},"parent_tool_use_id":null,"session_id":"ad16a8b2-2455-42b8-b611-73f369cef417","uuid":"1f73bdcf-dfe9-4df7-a46b-bb443cde3cd5","tool_use_result":{"stdout":"{\"conclusion\":\"failure\",\"createdAt\":\"2025-12-22T16:56:10Z\",\"headSha\":\"1f6b44db6003278faeed0101ae3237e4ac6a9f2d\",\"jobs\":[{\"completedAt\":\"2025-12-22T16:56:19Z\",\"conclusion\":\"success\",\"databaseId\":58725502043,\"name\":\"detect-changes\",\"startedAt\":\"2025-12-22T16:56:13Z\",\"status\":\"completed\",\"steps\":[{\"completedAt\":\"2025-12-22T16:56:14Z\",\"conclusion\":\"success\",\"name\":\"Set up job\",\"number\":1,\"startedAt\":\"2025-12-22T16:56:14Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:56:17Z\",\"conclusion\":\"success\",\"name\":\"Run actions/checkout@v4\",\"number\":2,\"startedAt\":\"2025-12-22T16:56:14Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:56:17Z\",\"conclusion\":\"success\",\"name\":\"Detect changes\",\"number\":3,\"startedAt\":\"2025-12-22T16:56:17Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:56:17Z\",\"conclusion\":\"success\",\"name\":\"Post Run actions/checkout@v4\",\"number\":6,\"startedAt\":\"2025-12-22T16:56:17Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:56:17Z\",\"conclusion\":\"success\",\"name\":\"Complete job\",\"number\":7,\"startedAt\":\"2025-12-22T16:56:17Z\",\"status\":\"completed\"}],\"url\":\"https://github.com/link-assistant/hive-mind/actions/runs/20438451672/job/58725502043\"},{\"completedAt\":\"2025-12-22T16:56:11Z\",\"conclusion\":\"skipped\",\"databaseId\":58725502144,\"name\":\"Check for Changesets\",\"startedAt\":\"2025-12-22T16:56:11Z\",\"status\":\"completed\",\"steps\":[],\"url\":\"https://github.com/link-assistant/hive-mind/actions/runs/20438451672/job/58725502144\"},{\"completedAt\":\"2025-12-22T16:56:11Z\",\"conclusion\":\"skipped\",\"databaseId\":58725502163,\"name\":\"Create Changeset PR\",\"startedAt\":\"2025-12-22T16:56:11Z\",\"status\":\"completed\",\"steps\":[],\"url\":\"https://github.com/link-assistant/hive-mind/actions/runs/20438451672/job/58725502163\"},{\"completedAt\":\"2025-12-22T16:56:11Z\",\"conclusion\":\"skipped\",\"databaseId\":58725502361,\"name\":\"Instant Release\",\"startedAt\":\"2025-12-22T16:56:11Z\",\"status\":\"completed\",\"steps\":[],\"url\":\"https://github.com/link-assistant/hive-mind/actions/runs/20438451672/job/58725502361\"},{\"completedAt\":\"2025-12-22T16:56:50Z\",\"conclusion\":\"success\",\"databaseId\":58725512522,\"name\":\"lint\",\"startedAt\":\"2025-12-22T16:56:22Z\",\"status\":\"completed\",\"steps\":[{\"completedAt\":\"2025-12-22T16:56:23Z\",\"conclusion\":\"success\",\"name\":\"Set up job\",\"number\":1,\"startedAt\":\"2025-12-22T16:56:22Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:56:26Z\",\"conclusion\":\"success\",\"name\":\"Checkout repository\",\"number\":2,\"startedAt\":\"2025-12-22T16:56:23Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:56:29Z\",\"conclusion\":\"success\",\"name\":\"Setup Node.js\",\"number\":3,\"startedAt\":\"2025-12-22T16:56:26Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:56:34Z\",\"conclusion\":\"success\",\"name\":\"Install dependencies\",\"number\":4,\"startedAt\":\"2025-12-22T16:56:29Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:56:45Z\",\"conclusion\":\"success\",\"name\":\"Run Prettier format check\",\"number\":5,\"startedAt\":\"2025-12-22T16:56:34Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:56:49Z\",\"conclusion\":\"success\",\"name\":\"Run ESLint\",\"number\":6,\"startedAt\":\"2025-12-22T16:56:45Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:56:49Z\",\"conclusion\":\"success\",\"name\":\"Post Setup Node.js\",\"number\":11,\"startedAt\":\"2025-12-22T16:56:49Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:56:49Z\",\"conclusion\":\"success\",\"name\":\"Post Checkout repository\",\"number\":12,\"startedAt\":\"2025-12-22T16:56:49Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:56:49Z\",\"conclusion\":\"success\",\"name\":\"Complete job\",\"number\":13,\"startedAt\":\"2025-12-22T16:56:49Z\",\"status\":\"completed\"}],\"url\":\"https://github.com/link-assistant/hive-mind/actions/runs/20438451672/job/58725512522\"},{\"completedAt\":\"2025-12-22T16:56:35Z\",\"conclusion\":\"success\",\"databaseId\":58725512523,\"name\":\"validate-docs\",\"startedAt\":\"2025-12-22T16:56:21Z\",\"status\":\"completed\",\"steps\":[{\"completedAt\":\"2025-12-22T16:56:23Z\",\"conclusion\":\"success\",\"name\":\"Set up job\",\"number\":1,\"startedAt\":\"2025-12-22T16:56:22Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:56:25Z\",\"conclusion\":\"success\",\"name\":\"Run actions/checkout@v4\",\"number\":2,\"startedAt\":\"2025-12-22T16:56:23Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:56:29Z\",\"conclusion\":\"success\",\"name\":\"Use Node.js 20.x\",\"number\":3,\"startedAt\":\"2025-12-22T16:56:25Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:56:32Z\",\"conclusion\":\"success\",\"name\":\"Validate documentation files\",\"number\":4,\"startedAt\":\"2025-12-22T16:56:29Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:56:33Z\",\"conclusion\":\"success\",\"name\":\"Post Use Node.js 20.x\",\"number\":7,\"startedAt\":\"2025-12-22T16:56:32Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:56:33Z\",\"conclusion\":\"success\",\"name\":\"Post Run actions/checkout@v4\",\"number\":8,\"startedAt\":\"2025-12-22T16:56:33Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:56:33Z\",\"conclusion\":\"success\",\"name\":\"Complete job\",\"number\":9,\"startedAt\":\"2025-12-22T16:56:33Z\",\"status\":\"completed\"}],\"url\":\"https://github.com/link-assistant/hive-mind/actions/runs/20438451672/job/58725512523\"},{\"completedAt\":\"2025-12-22T16:56:32Z\",\"conclusion\":\"success\",\"databaseId\":58725512531,\"name\":\"test-compilation\",\"startedAt\":\"2025-12-22T16:56:21Z\",\"status\":\"completed\",\"steps\":[{\"completedAt\":\"2025-12-22T16:56:23Z\",\"conclusion\":\"success\",\"name\":\"Set up job\",\"number\":1,\"startedAt\":\"2025-12-22T16:56:22Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:56:26Z\",\"conclusion\":\"success\",\"name\":\"Checkout repository\",\"number\":2,\"startedAt\":\"2025-12-22T16:56:23Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:56:29Z\",\"conclusion\":\"success\",\"name\":\"Setup Node.js\",\"number\":3,\"startedAt\":\"2025-12-22T16:56:26Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:56:29Z\",\"conclusion\":\"success\",\"name\":\"Test solve.mjs compilation\",\"number\":4,\"startedAt\":\"2025-12-22T16:56:29Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:56:29Z\",\"conclusion\":\"success\",\"name\":\"Test hive.mjs compilation\",\"number\":5,\"startedAt\":\"2025-12-22T16:56:29Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:56:31Z\",\"conclusion\":\"success\",\"name\":\"Check Node.js syntax for all .mjs files\",\"number\":6,\"startedAt\":\"2025-12-22T16:56:29Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:56:31Z\",\"conclusion\":\"success\",\"name\":\"Post Setup Node.js\",\"number\":11,\"startedAt\":\"2025-12-22T16:56:31Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:56:31Z\",\"conclusion\":\"success\",\"name\":\"Post Checkout repository\",\"number\":12,\"startedAt\":\"2025-12-22T16:56:31Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:56:31Z\",\"conclusion\":\"success\",\"name\":\"Complete job\",\"number\":13,\"startedAt\":\"2025-12-22T16:56:31Z\",\"status\":\"completed\"}],\"url\":\"https://github.com/link-assistant/hive-mind/actions/runs/20438451672/job/58725512531\"},{\"completedAt\":\"2025-12-22T16:56:34Z\",\"conclusion\":\"success\",\"databaseId\":58725512538,\"name\":\"check-file-line-limits\",\"startedAt\":\"2025-12-22T16:56:21Z\",\"status\":\"completed\",\"steps\":[{\"completedAt\":\"2025-12-22T16:56:23Z\",\"conclusion\":\"success\",\"name\":\"Set up job\",\"number\":1,\"startedAt\":\"2025-12-22T16:56:22Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:56:30Z\",\"conclusion\":\"success\",\"name\":\"Checkout repository\",\"number\":2,\"startedAt\":\"2025-12-22T16:56:23Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:56:31Z\",\"conclusion\":\"success\",\"name\":\"Check .mjs file line limits\",\"number\":3,\"startedAt\":\"2025-12-22T16:56:30Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:56:31Z\",\"conclusion\":\"success\",\"name\":\"Post Checkout repository\",\"number\":6,\"startedAt\":\"2025-12-22T16:56:31Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:56:31Z\",\"conclusion\":\"success\",\"name\":\"Complete job\",\"number\":7,\"startedAt\":\"2025-12-22T16:56:31Z\",\"status\":\"completed\"}],\"url\":\"https://github.com/link-assistant/hive-mind/actions/runs/20438451672/job/58725512538\"},{\"completedAt\":\"2025-12-22T16:56:19Z\",\"conclusion\":\"skipped\",\"databaseId\":58725512753,\"name\":\"helm-pr-check\",\"startedAt\":\"2025-12-22T16:56:19Z\",\"status\":\"completed\",\"steps\":[],\"url\":\"https://github.com/link-assistant/hive-mind/actions/runs/20438451672/job/58725512753\"},{\"completedAt\":\"2025-12-22T17:00:30Z\",\"conclusion\":\"success\",\"databaseId\":58725558067,\"name\":\"test-suites\",\"startedAt\":\"2025-12-22T16:56:53Z\",\"status\":\"completed\",\"steps\":[{\"completedAt\":\"2025-12-22T16:56:55Z\",\"conclusion\":\"success\",\"name\":\"Set up job\",\"number\":1,\"startedAt\":\"2025-12-22T16:56:54Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:56:57Z\",\"conclusion\":\"success\",\"name\":\"Run actions/checkout@v4\",\"number\":2,\"startedAt\":\"2025-12-22T16:56:55Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:56:58Z\",\"conclusion\":\"success\",\"name\":\"Use Node.js 20.x\",\"number\":3,\"startedAt\":\"2025-12-22T16:56:57Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:57:03Z\",\"conclusion\":\"success\",\"name\":\"Install dependencies\",\"number\":4,\"startedAt\":\"2025-12-22T16:56:58Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:57:27Z\",\"conclusion\":\"success\",\"name\":\"Run test suite for solve.mjs\",\"number\":5,\"startedAt\":\"2025-12-22T16:57:03Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:58:36Z\",\"conclusion\":\"success\",\"name\":\"Run test suite for hive.mjs\",\"number\":6,\"startedAt\":\"2025-12-22T16:57:27Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:58:52Z\",\"conclusion\":\"success\",\"name\":\"Run test suite for memory-check.mjs\",\"number\":7,\"startedAt\":\"2025-12-22T16:58:36Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:58:52Z\",\"conclusion\":\"success\",\"name\":\"Run branch name validation test (Issue\",\"number\":8,\"startedAt\":\"2025-12-22T16:58:52Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:58:52Z\",\"conclusion\":\"success\",\"name\":\"Run feedback lines regression test (Issue\",\"number\":9,\"startedAt\":\"2025-12-22T16:58:52Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:58:53Z\",\"conclusion\":\"success\",\"name\":\"Run feedback lines integration test (Issue\",\"number\":10,\"startedAt\":\"2025-12-22T16:58:52Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:58:54Z\",\"conclusion\":\"success\",\"name\":\"Run Sentry integration test\",\"number\":11,\"startedAt\":\"2025-12-22T16:58:53Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:59:27Z\",\"conclusion\":\"success\",\"name\":\"Run telegram-bot dry-run test (Issue\",\"number\":12,\"startedAt\":\"2025-12-22T16:58:54Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:59:39Z\",\"conclusion\":\"success\",\"name\":\"Run telegram-bot hero Links Notation test (Issue\",\"number\":13,\"startedAt\":\"2025-12-22T16:59:27Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T17:00:11Z\",\"conclusion\":\"success\",\"name\":\"Run hive command silent failure test (Issue\",\"number\":14,\"startedAt\":\"2025-12-22T16:59:39Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T17:00:11Z\",\"conclusion\":\"success\",\"name\":\"Run GitHub linking keyword detection test (Issue\",\"number\":15,\"startedAt\":\"2025-12-22T17:00:11Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T17:00:11Z\",\"conclusion\":\"success\",\"name\":\"Run Telegram Markdown escaping test (Issue\",\"number\":16,\"startedAt\":\"2025-12-22T17:00:11Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T17:00:11Z\",\"conclusion\":\"success\",\"name\":\"Run lenv-reader test (Issue\",\"number\":17,\"startedAt\":\"2025-12-22T17:00:11Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T17:00:13Z\",\"conclusion\":\"success\",\"name\":\"Run Telegram URL extraction test (Issue\",\"number\":18,\"startedAt\":\"2025-12-22T17:00:11Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T17:00:15Z\",\"conclusion\":\"success\",\"name\":\"Run Telegram URL validation test (Issue\",\"number\":19,\"startedAt\":\"2025-12-22T17:00:13Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T17:00:15Z\",\"conclusion\":\"success\",\"name\":\"Run interactive mode test (Issue\",\"number\":20,\"startedAt\":\"2025-12-22T17:00:15Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T17:00:27Z\",\"conclusion\":\"success\",\"name\":\"Run start-screen test (Issue\",\"number\":21,\"startedAt\":\"2025-12-22T17:00:15Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T17:00:27Z\",\"conclusion\":\"success\",\"name\":\"Post Use Node.js 20.x\",\"number\":41,\"startedAt\":\"2025-12-22T17:00:27Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T17:00:27Z\",\"conclusion\":\"success\",\"name\":\"Post Run actions/checkout@v4\",\"number\":42,\"startedAt\":\"2025-12-22T17:00:27Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T17:00:27Z\",\"conclusion\":\"success\",\"name\":\"Complete job\",\"number\":43,\"startedAt\":\"2025-12-22T17:00:27Z\",\"status\":\"completed\"}],\"url\":\"https://github.com/link-assistant/hive-mind/actions/runs/20438451672/job/58725558067\"},{\"completedAt\":\"2025-12-22T16:58:44Z\",\"conclusion\":\"success\",\"databaseId\":58725558103,\"name\":\"test-execution\",\"startedAt\":\"2025-12-22T16:56:53Z\",\"status\":\"completed\",\"steps\":[{\"completedAt\":\"2025-12-22T16:56:54Z\",\"conclusion\":\"success\",\"name\":\"Set up job\",\"number\":1,\"startedAt\":\"2025-12-22T16:56:54Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:56:57Z\",\"conclusion\":\"success\",\"name\":\"Run actions/checkout@v4\",\"number\":2,\"startedAt\":\"2025-12-22T16:56:54Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:56:58Z\",\"conclusion\":\"success\",\"name\":\"Use Node.js 20.x\",\"number\":3,\"startedAt\":\"2025-12-22T16:56:57Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:57:02Z\",\"conclusion\":\"success\",\"name\":\"Install dependencies\",\"number\":4,\"startedAt\":\"2025-12-22T16:56:58Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:57:03Z\",\"conclusion\":\"success\",\"name\":\"Test solve.mjs execution\",\"number\":5,\"startedAt\":\"2025-12-22T16:57:02Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:57:12Z\",\"conclusion\":\"success\",\"name\":\"Verify log files contain version and command (Issue\",\"number\":6,\"startedAt\":\"2025-12-22T16:57:03Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:57:13Z\",\"conclusion\":\"success\",\"name\":\"Test hive.mjs execution\",\"number\":7,\"startedAt\":\"2025-12-22T16:57:12Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:57:20Z\",\"conclusion\":\"success\",\"name\":\"Test telegram-bot.mjs execution\",\"number\":8,\"startedAt\":\"2025-12-22T16:57:13Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:57:23Z\",\"conclusion\":\"success\",\"name\":\"Test memory-check.mjs execution\",\"number\":9,\"startedAt\":\"2025-12-22T16:57:20Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:57:32Z\",\"conclusion\":\"success\",\"name\":\"Test global command installation\",\"number\":10,\"startedAt\":\"2025-12-22T16:57:23Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:58:03Z\",\"conclusion\":\"success\",\"name\":\"Test hive dry-run with solve integration\",\"number\":11,\"startedAt\":\"2025-12-22T16:57:32Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:58:42Z\",\"conclusion\":\"success\",\"name\":\"Test --auto-fork option\",\"number\":12,\"startedAt\":\"2025-12-22T16:58:03Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:58:42Z\",\"conclusion\":\"success\",\"name\":\"Post Use Node.js 20.x\",\"number\":23,\"startedAt\":\"2025-12-22T16:58:42Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:58:42Z\",\"conclusion\":\"success\",\"name\":\"Post Run actions/checkout@v4\",\"number\":24,\"startedAt\":\"2025-12-22T16:58:42Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:58:42Z\",\"conclusion\":\"success\",\"name\":\"Complete job\",\"number\":25,\"startedAt\":\"2025-12-22T16:58:42Z\",\"status\":\"completed\"}],\"url\":\"https://github.com/link-assistant/hive-mind/actions/runs/20438451672/job/58725558103\"},{\"completedAt\":\"2025-12-22T16:57:27Z\",\"conclusion\":\"success\",\"databaseId\":58725558129,\"name\":\"memory-check-linux\",\"startedAt\":\"2025-12-22T16:56:53Z\",\"status\":\"completed\",\"steps\":[{\"completedAt\":\"2025-12-22T16:56:55Z\",\"conclusion\":\"success\",\"name\":\"Set up job\",\"number\":1,\"startedAt\":\"2025-12-22T16:56:54Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:56:58Z\",\"conclusion\":\"success\",\"name\":\"Run actions/checkout@v4\",\"number\":2,\"startedAt\":\"2025-12-22T16:56:55Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:56:58Z\",\"conclusion\":\"success\",\"name\":\"Use Node.js 20.x\",\"number\":3,\"startedAt\":\"2025-12-22T16:56:58Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:56:58Z\",\"conclusion\":\"success\",\"name\":\"System info\",\"number\":4,\"startedAt\":\"2025-12-22T16:56:58Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:57:15Z\",\"conclusion\":\"success\",\"name\":\"Run memory-check tests\",\"number\":5,\"startedAt\":\"2025-12-22T16:56:58Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:57:21Z\",\"conclusion\":\"success\",\"name\":\"Test memory-check with various thresholds\",\"number\":6,\"startedAt\":\"2025-12-22T16:57:15Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:57:24Z\",\"conclusion\":\"success\",\"name\":\"Test memory-check failure conditions\",\"number\":7,\"startedAt\":\"2025-12-22T16:57:21Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:57:24Z\",\"conclusion\":\"success\",\"name\":\"Post Use Node.js 20.x\",\"number\":13,\"startedAt\":\"2025-12-22T16:57:24Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:57:25Z\",\"conclusion\":\"success\",\"name\":\"Post Run actions/checkout@v4\",\"number\":14,\"startedAt\":\"2025-12-22T16:57:24Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T16:57:25Z\",\"conclusion\":\"success\",\"name\":\"Complete job\",\"number\":15,\"startedAt\":\"2025-12-22T16:57:25Z\",\"status\":\"completed\"}],\"url\":\"https://github.com/link-assistant/hive-mind/actions/runs/20438451672/job/58725558129\"},{\"completedAt\":\"2025-12-22T16:56:51Z\",\"conclusion\":\"skipped\",\"databaseId\":58725558379,\"name\":\"docker-pr-check\",\"startedAt\":\"2025-12-22T16:56:51Z\",\"status\":\"completed\",\"steps\":[],\"url\":\"https://github.com/link-assistant/hive-mind/actions/runs/20438451672/job/58725558379\"},{\"completedAt\":\"2025-12-22T17:01:18Z\",\"conclusion\":\"failure\",\"databaseId\":58725844074,\"name\":\"Release\",\"startedAt\":\"2025-12-22T17:00:33Z\",\"status\":\"completed\",\"steps\":[{\"completedAt\":\"2025-12-22T17:00:35Z\",\"conclusion\":\"success\",\"name\":\"Set up job\",\"number\":1,\"startedAt\":\"2025-12-22T17:00:34Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T17:00:38Z\",\"conclusion\":\"success\",\"name\":\"Run actions/checkout@v4\",\"number\":2,\"startedAt\":\"2025-12-22T17:00:35Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T17:00:40Z\",\"conclusion\":\"success\",\"name\":\"Setup Node.js\",\"number\":3,\"startedAt\":\"2025-12-22T17:00:38Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T17:00:45Z\",\"conclusion\":\"success\",\"name\":\"Install dependencies\",\"number\":4,\"startedAt\":\"2025-12-22T17:00:40Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T17:00:50Z\",\"conclusion\":\"success\",\"name\":\"Update npm for OIDC trusted publishing\",\"number\":5,\"startedAt\":\"2025-12-22T17:00:45Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T17:00:50Z\",\"conclusion\":\"success\",\"name\":\"Check for changesets\",\"number\":6,\"startedAt\":\"2025-12-22T17:00:50Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T17:00:57Z\",\"conclusion\":\"success\",\"name\":\"Version packages and commit to main\",\"number\":7,\"startedAt\":\"2025-12-22T17:00:50Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T17:01:05Z\",\"conclusion\":\"success\",\"name\":\"Publish to npm\",\"number\":8,\"startedAt\":\"2025-12-22T17:00:57Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T17:01:09Z\",\"conclusion\":\"success\",\"name\":\"Create GitHub Release\",\"number\":9,\"startedAt\":\"2025-12-22T17:01:05Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T17:01:13Z\",\"conclusion\":\"success\",\"name\":\"Format GitHub release notes\",\"number\":10,\"startedAt\":\"2025-12-22T17:01:09Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T17:01:17Z\",\"conclusion\":\"failure\",\"name\":\"Post-publish - Upload Source Maps to Sentry\",\"number\":11,\"startedAt\":\"2025-12-22T17:01:13Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T17:01:17Z\",\"conclusion\":\"skipped\",\"name\":\"Post Setup Node.js\",\"number\":21,\"startedAt\":\"2025-12-22T17:01:17Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T17:01:17Z\",\"conclusion\":\"success\",\"name\":\"Post Run actions/checkout@v4\",\"number\":22,\"startedAt\":\"2025-12-22T17:01:17Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T17:01:17Z\",\"conclusion\":\"success\",\"name\":\"Complete job\",\"number\":23,\"startedAt\":\"2025-12-22T17:01:17Z\",\"status\":\"completed\"}],\"url\":\"https://github.com/link-assistant/hive-mind/actions/runs/20438451672/job/58725844074\"},{\"completedAt\":\"2025-12-22T17:01:19Z\",\"conclusion\":\"skipped\",\"databaseId\":58725908626,\"name\":\"Docker Publish\",\"startedAt\":\"2025-12-22T1 | |
| [2025-12-22T17:15:07.887Z] [INFO] 7:01:19Z\",\"status\":\"completed\",\"steps\":[],\"url\":\"https://github.com/link-assistant/hive-mind/actions/runs/20438451672/job/58725908626\"},{\"completedAt\":\"2025-12-22T17:01:19Z\",\"conclusion\":\"skipped\",\"databaseId\":58725908703,\"name\":\"Helm Release\",\"startedAt\":\"2025-12-22T17:01:19Z\",\"status\":\"completed\",\"steps\":[],\"url\":\"https://github.com/link-assistant/hive-mind/actions/runs/20438451672/job/58725908703\"}],\"status\":\"completed\"}","stderr":"","interrupted":false,"isImage":false}} | |
| [2025-12-22T17:15:11.521Z] [INFO] { | |
| "type": "user", | |
| "message": { | |
| "role": "user", | |
| "content": [ | |
| { | |
| "tool_use_id": "toolu_0142Qbth56UdWUF9kSSRTHFQ", | |
| "type": "tool_result", | |
| "content": "{\"conclusion\":\"success\",\"createdAt\":\"2025-12-22T06:42:06Z\",\"headSha\":\"5e975817856b3e8f1a9121819ffa69a91f087a66\",\"jobs\":[{\"completedAt\":\"2025-12-22T06:42:15Z\",\"conclusion\":\"success\",\"databaseId\":58681015086,\"name\":\"detect-changes\",\"startedAt\":\"2025-12-22T06:42:09Z\",\"status\":\"completed\",\"steps\":[{\"completedAt\":\"2025-12-22T06:42:10Z\",\"conclusion\":\"success\",\"name\":\"Set up job\",\"number\":1,\"startedAt\":\"2025-12-22T06:42:09Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T06:42:13Z\",\"conclusion\":\"success\",\"name\":\"Run actions/checkout@v4\",\"number\":2,\"startedAt\":\"2025-12-22T06:42:10Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T06:42:13Z\",\"conclusion\":\"success\",\"name\":\"Detect changes\",\"number\":3,\"startedAt\":\"2025-12-22T06:42:13Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T06:42:13Z\",\"conclusion\":\"success\",\"name\":\"Post Run actions/checkout@v4\",\"number\":6,\"startedAt\":\"2025-12-22T06:42:13Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T06:42:13Z\",\"conclusion\":\"success\",\"name\":\"Complete job\",\"number\":7,\"startedAt\":\"2025-12-22T06:42:13Z\",\"status\":\"completed\"}],\"url\":\"https://github.com/link-assistant/hive-mind/actions/runs/20424106320/job/58681015086\"},{\"completedAt\":\"2025-12-22T06:42:06Z\",\"conclusion\":\"skipped\",\"databaseId\":58681015105,\"name\":\"Check for Changesets\",\"startedAt\":\"2025-12-22T06:42:07Z\",\"status\":\"completed\",\"steps\":[],\"url\":\"https://github.com/link-assistant/hive-mind/actions/runs/20424106320/job/58681015105\"},{\"completedAt\":\"2025-12-22T06:42:06Z\",\"conclusion\":\"skipped\",\"databaseId\":58681015143,\"name\":\"Create Changeset PR\",\"startedAt\":\"2025-12-22T06:42:07Z\",\"status\":\"completed\",\"steps\":[],\"url\":\"https://github.com/link-assistant/hive-mind/actions/runs/20424106320/job/58681015143\"},{\"completedAt\":\"2025-12-22T06:42:06Z\",\"conclusion\":\"skipped\",\"databaseId\":58681015154,\"name\":\"Instant Release\",\"startedAt\":\"2025-12-22T06:42:07Z\",\"status\":\"completed\",\"steps\":[],\"url\":\"https://github.com/link-assistant/hive-mind/actions/runs/20424106320/job/58681015154\"},{\"completedAt\":\"2025-12-22T06:42:25Z\",\"conclusion\":\"success\",\"databaseId\":58681021389,\"name\":\"validate-docs\",\"startedAt\":\"2025-12-22T06:42:17Z\",\"status\":\"completed\",\"steps\":[{\"completedAt\":\"2025-12-22T06:42:18Z\",\"conclusion\":\"success\",\"name\":\"Set up job\",\"number\":1,\"startedAt\":\"2025-12-22T06:42:18Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T06:42:21Z\",\"conclusion\":\"success\",\"name\":\"Run actions/checkout@v4\",\"number\":2,\"startedAt\":\"2025-12-22T06:42:18Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T06:42:21Z\",\"conclusion\":\"success\",\"name\":\"Use Node.js 20.x\",\"number\":3,\"startedAt\":\"2025-12-22T06:42:21Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T06:42:23Z\",\"conclusion\":\"success\",\"name\":\"Validate documentation files\",\"number\":4,\"startedAt\":\"2025-12-22T06:42:21Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T06:42:24Z\",\"conclusion\":\"success\",\"name\":\"Post Use Node.js 20.x\",\"number\":7,\"startedAt\":\"2025-12-22T06:42:23Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T06:42:24Z\",\"conclusion\":\"success\",\"name\":\"Post Run actions/checkout@v4\",\"number\":8,\"startedAt\":\"2025-12-22T06:42:24Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T06:42:24Z\",\"conclusion\":\"success\",\"name\":\"Complete job\",\"number\":9,\"startedAt\":\"2025-12-22T06:42:24Z\",\"status\":\"completed\"}],\"url\":\"https://github.com/link-assistant/hive-mind/actions/runs/20424106320/job/58681021389\"},{\"completedAt\":\"2025-12-22T06:42:43Z\",\"conclusion\":\"success\",\"databaseId\":58681021395,\"name\":\"lint\",\"startedAt\":\"2025-12-22T06:42:17Z\",\"status\":\"completed\",\"steps\":[{\"completedAt\":\"2025-12-22T06:42:19Z\",\"conclusion\":\"success\",\"name\":\"Set up job\",\"number\":1,\"startedAt\":\"2025-12-22T06:42:18Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T06:42:21Z\",\"conclusion\":\"success\",\"name\":\"Checkout repository\",\"number\":2,\"startedAt\":\"2025-12-22T06:42:19Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T06:42:22Z\",\"conclusion\":\"success\",\"name\":\"Setup Node.js\",\"number\":3,\"startedAt\":\"2025-12-22T06:42:21Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T06:42:26Z\",\"conclusion\":\"success\",\"name\":\"Install dependencies\",\"number\":4,\"startedAt\":\"2025-12-22T06:42:22Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T06:42:37Z\",\"conclusion\":\"success\",\"name\":\"Run Prettier format check\",\"number\":5,\"startedAt\":\"2025-12-22T06:42:26Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T06:42:41Z\",\"conclusion\":\"success\",\"name\":\"Run ESLint\",\"number\":6,\"startedAt\":\"2025-12-22T06:42:37Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T06:42:41Z\",\"conclusion\":\"success\",\"name\":\"Post Setup Node.js\",\"number\":11,\"startedAt\":\"2025-12-22T06:42:41Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T06:42:41Z\",\"conclusion\":\"success\",\"name\":\"Post Checkout repository\",\"number\":12,\"startedAt\":\"2025-12-22T06:42:41Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T06:42:41Z\",\"conclusion\":\"success\",\"name\":\"Complete job\",\"number\":13,\"startedAt\":\"2025-12-22T06:42:41Z\",\"status\":\"completed\"}],\"url\":\"https://github.com/link-assistant/hive-mind/actions/runs/20424106320/job/58681021395\"},{\"completedAt\":\"2025-12-22T06:42:15Z\",\"conclusion\":\"skipped\",\"databaseId\":58681021635,\"name\":\"helm-pr-check\",\"startedAt\":\"2025-12-22T06:42:15Z\",\"status\":\"completed\",\"steps\":[],\"url\":\"https://github.com/link-assistant/hive-mind/actions/runs/20424106320/job/58681021635\"},{\"completedAt\":\"2025-12-22T06:42:15Z\",\"conclusion\":\"skipped\",\"databaseId\":58681021677,\"name\":\"test-compilation\",\"startedAt\":\"2025-12-22T06:42:15Z\",\"status\":\"completed\",\"steps\":[],\"url\":\"https://github.com/link-assistant/hive-mind/actions/runs/20424106320/job/58681021677\"},{\"completedAt\":\"2025-12-22T06:42:15Z\",\"conclusion\":\"skipped\",\"databaseId\":58681021688,\"name\":\"check-file-line-limits\",\"startedAt\":\"2025-12-22T06:42:15Z\",\"status\":\"completed\",\"steps\":[],\"url\":\"https://github.com/link-assistant/hive-mind/actions/runs/20424106320/job/58681021688\"},{\"completedAt\":\"2025-12-22T06:42:43Z\",\"conclusion\":\"skipped\",\"databaseId\":58681043978,\"name\":\"memory-check-linux\",\"startedAt\":\"2025-12-22T06:42:43Z\",\"status\":\"completed\",\"steps\":[],\"url\":\"https://github.com/link-assistant/hive-mind/actions/runs/20424106320/job/58681043978\"},{\"completedAt\":\"2025-12-22T06:42:43Z\",\"conclusion\":\"skipped\",\"databaseId\":58681043996,\"name\":\"test-execution\",\"startedAt\":\"2025-12-22T06:42:43Z\",\"status\":\"completed\",\"steps\":[],\"url\":\"https://github.com/link-assistant/hive-mind/actions/runs/20424106320/job/58681043996\"},{\"completedAt\":\"2025-12-22T06:42:43Z\",\"conclusion\":\"skipped\",\"databaseId\":58681044036,\"name\":\"test-suites\",\"startedAt\":\"2025-12-22T06:42:43Z\",\"status\":\"completed\",\"steps\":[],\"url\":\"https://github.com/link-assistant/hive-mind/actions/runs/20424106320/job/58681044036\"},{\"completedAt\":\"2025-12-22T06:42:43Z\",\"conclusion\":\"skipped\",\"databaseId\":58681044044,\"name\":\"docker-pr-check\",\"startedAt\":\"2025-12-22T06:42:43Z\",\"status\":\"completed\",\"steps\":[],\"url\":\"https://github.com/link-assistant/hive-mind/actions/runs/20424106320/job/58681044044\"},{\"completedAt\":\"2025-12-22T06:42:43Z\",\"conclusion\":\"skipped\",\"databaseId\":58681044125,\"name\":\"Release\",\"startedAt\":\"2025-12-22T06:42:43Z\",\"status\":\"completed\",\"steps\":[],\"url\":\"https://github.com/link-assistant/hive-mind/actions/runs/20424106320/job/58681044125\"},{\"completedAt\":\"2025-12-22T06:42:43Z\",\"conclusion\":\"skipped\",\"databaseId\":58681044197,\"name\":\"Docker Publish\",\"startedAt\":\"2025-12-22T06:42:44Z\",\"status\":\"completed\",\"steps\":[],\"url\":\"https://github.com/link-assistant/hive-mind/actions/runs/20424106320/job/58681044197\"},{\"completedAt\":\"2025-12-22T06:42:43Z\",\"conclusion\":\"skipped\",\"databaseId\":58681044216,\"name\":\"Helm Release\",\"startedAt\":\"2025-12-22T06:42:44Z\",\"status\":\"completed\",\"steps\":[],\"url\":\"https://github.com/link-assistant/hive-mind/actions/runs/20424106320/job/58681044216\"}],\"status\":\"completed\"}", | |
| "is_error": false | |
| } | |
| ] | |
| }, | |
| "parent_tool_use_id": null, | |
| "session_id": "ad16a8b2-2455-42b8-b611-73f369cef417", | |
| "uuid": "b3976015-650f-46da-beed-1ebba90e3077", | |
| "tool_use_result": { | |
| "stdout": "{\"conclusion\":\"success\",\"createdAt\":\"2025-12-22T06:42:06Z\",\"headSha\":\"5e975817856b3e8f1a9121819ffa69a91f087a66\",\"jobs\":[{\"completedAt\":\"2025-12-22T06:42:15Z\",\"conclusion\":\"success\",\"databaseId\":58681015086,\"name\":\"detect-changes\",\"startedAt\":\"2025-12-22T06:42:09Z\",\"status\":\"completed\",\"steps\":[{\"completedAt\":\"2025-12-22T06:42:10Z\",\"conclusion\":\"success\",\"name\":\"Set up job\",\"number\":1,\"startedAt\":\"2025-12-22T06:42:09Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T06:42:13Z\",\"conclusion\":\"success\",\"name\":\"Run actions/checkout@v4\",\"number\":2,\"startedAt\":\"2025-12-22T06:42:10Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T06:42:13Z\",\"conclusion\":\"success\",\"name\":\"Detect changes\",\"number\":3,\"startedAt\":\"2025-12-22T06:42:13Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T06:42:13Z\",\"conclusion\":\"success\",\"name\":\"Post Run actions/checkout@v4\",\"number\":6,\"startedAt\":\"2025-12-22T06:42:13Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T06:42:13Z\",\"conclusion\":\"success\",\"name\":\"Complete job\",\"number\":7,\"startedAt\":\"2025-12-22T06:42:13Z\",\"status\":\"completed\"}],\"url\":\"https://github.com/link-assistant/hive-mind/actions/runs/20424106320/job/58681015086\"},{\"completedAt\":\"2025-12-22T06:42:06Z\",\"conclusion\":\"skipped\",\"databaseId\":58681015105,\"name\":\"Check for Changesets\",\"startedAt\":\"2025-12-22T06:42:07Z\",\"status\":\"completed\",\"steps\":[],\"url\":\"https://github.com/link-assistant/hive-mind/actions/runs/20424106320/job/58681015105\"},{\"completedAt\":\"2025-12-22T06:42:06Z\",\"conclusion\":\"skipped\",\"databaseId\":58681015143,\"name\":\"Create Changeset PR\",\"startedAt\":\"2025-12-22T06:42:07Z\",\"status\":\"completed\",\"steps\":[],\"url\":\"https://github.com/link-assistant/hive-mind/actions/runs/20424106320/job/58681015143\"},{\"completedAt\":\"2025-12-22T06:42:06Z\",\"conclusion\":\"skipped\",\"databaseId\":58681015154,\"name\":\"Instant Release\",\"startedAt\":\"2025-12-22T06:42:07Z\",\"status\":\"completed\",\"steps\":[],\"url\":\"https://github.com/link-assistant/hive-mind/actions/runs/20424106320/job/58681015154\"},{\"completedAt\":\"2025-12-22T06:42:25Z\",\"conclusion\":\"success\",\"databaseId\":58681021389,\"name\":\"validate-docs\",\"startedAt\":\"2025-12-22T06:42:17Z\",\"status\":\"completed\",\"steps\":[{\"completedAt\":\"2025-12-22T06:42:18Z\",\"conclusion\":\"success\",\"name\":\"Set up job\",\"number\":1,\"startedAt\":\"2025-12-22T06:42:18Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T06:42:21Z\",\"conclusion\":\"success\",\"name\":\"Run actions/checkout@v4\",\"number\":2,\"startedAt\":\"2025-12-22T06:42:18Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T06:42:21Z\",\"conclusion\":\"success\",\"name\":\"Use Node.js 20.x\",\"number\":3,\"startedAt\":\"2025-12-22T06:42:21Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T06:42:23Z\",\"conclusion\":\"success\",\"name\":\"Validate documentation files\",\"number\":4,\"startedAt\":\"2025-12-22T06:42:21Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T06:42:24Z\",\"conclusion\":\"success\",\"name\":\"Post Use Node.js 20.x\",\"number\":7,\"startedAt\":\"2025-12-22T06:42:23Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T06:42:24Z\",\"conclusion\":\"success\",\"name\":\"Post Run actions/checkout@v4\",\"number\":8,\"startedAt\":\"2025-12-22T06:42:24Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T06:42:24Z\",\"conclusion\":\"success\",\"name\":\"Complete job\",\"number\":9,\"startedAt\":\"2025-12-22T06:42:24Z\",\"status\":\"completed\"}],\"url\":\"https://github.com/link-assistant/hive-mind/actions/runs/20424106320/job/58681021389\"},{\"completedAt\":\"2025-12-22T06:42:43Z\",\"conclusion\":\"success\",\"databaseId\":58681021395,\"name\":\"lint\",\"startedAt\":\"2025-12-22T06:42:17Z\",\"status\":\"completed\",\"steps\":[{\"completedAt\":\"2025-12-22T06:42:19Z\",\"conclusion\":\"success\",\"name\":\"Set up job\",\"number\":1,\"startedAt\":\"2025-12-22T06:42:18Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T06:42:21Z\",\"conclusion\":\"success\",\"name\":\"Checkout repository\",\"number\":2,\"startedAt\":\"2025-12-22T06:42:19Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T06:42:22Z\",\"conclusion\":\"success\",\"name\":\"Setup Node.js\",\"number\":3,\"startedAt\":\"2025-12-22T06:42:21Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T06:42:26Z\",\"conclusion\":\"success\",\"name\":\"Install dependencies\",\"number\":4,\"startedAt\":\"2025-12-22T06:42:22Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T06:42:37Z\",\"conclusion\":\"success\",\"name\":\"Run Prettier format check\",\"number\":5,\"startedAt\":\"2025-12-22T06:42:26Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T06:42:41Z\",\"conclusion\":\"success\",\"name\":\"Run ESLint\",\"number\":6,\"startedAt\":\"2025-12-22T06:42:37Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T06:42:41Z\",\"conclusion\":\"success\",\"name\":\"Post Setup Node.js\",\"number\":11,\"startedAt\":\"2025-12-22T06:42:41Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T06:42:41Z\",\"conclusion\":\"success\",\"name\":\"Post Checkout repository\",\"number\":12,\"startedAt\":\"2025-12-22T06:42:41Z\",\"status\":\"completed\"},{\"completedAt\":\"2025-12-22T06:42:41Z\",\"conclusion\":\"success\",\"name\":\"Complete job\",\"number\":13,\"startedAt\":\"2025-12-22T06:42:41Z\",\"status\":\"completed\"}],\"url\":\"https://github.com/link-assistant/hive-mind/actions/runs/20424106320/job/58681021395\"},{\"completedAt\":\"2025-12-22T06:42:15Z\",\"conclusion\":\"skipped\",\"databaseId\":58681021635,\"name\":\"helm-pr-check\",\"startedAt\":\"2025-12-22T06:42:15Z\",\"status\":\"completed\",\"steps\":[],\"url\":\"https://github.com/link-assistant/hive-mind/actions/runs/20424106320/job/58681021635\"},{\"completedAt\":\"2025-12-22T06:42:15Z\",\"conclusion\":\"skipped\",\"databaseId\":58681021677,\"name\":\"test-compilation\",\"startedAt\":\"2025-12-22T06:42:15Z\",\"status\":\"completed\",\"steps\":[],\"url\":\"https://github.com/link-assistant/hive-mind/actions/runs/20424106320/job/58681021677\"},{\"completedAt\":\"2025-12-22T06:42:15Z\",\"conclusion\":\"skipped\",\"databaseId\":58681021688,\"name\":\"check-file-line-limits\",\"startedAt\":\"2025-12-22T06:42:15Z\",\"status\":\"completed\",\"steps\":[],\"url\":\"https://github.com/link-assistant/hive-mind/actions/runs/20424106320/job/58681021688\"},{\"completedAt\":\"2025-12-22T06:42:43Z\",\"conclusion\":\"skipped\",\"databaseId\":58681043978,\"name\":\"memory-check-linux\",\"startedAt\":\"2025-12-22T06:42:43Z\",\"status\":\"completed\",\"steps\":[],\"url\":\"https://github.com/link-assistant/hive-mind/actions/runs/20424106320/job/58681043978\"},{\"completedAt\":\"2025-12-22T06:42:43Z\",\"conclusion\":\"skipped\",\"databaseId\":58681043996,\"name\":\"test-execution\",\"startedAt\":\"2025-12-22T06:42:43Z\",\"status\":\"completed\",\"steps\":[],\"url\":\"https://github.com/link-assistant/hive-mind/actions/runs/20424106320/job/58681043996\"},{\"completedAt\":\"2025-12-22T06:42:43Z\",\"conclusion\":\"skipped\",\"databaseId\":58681044036,\"name\":\"test-suites\",\"startedAt\":\"2025-12-22T06:42:43Z\",\"status\":\"completed\",\"steps\":[],\"url\":\"https://github.com/link-assistant/hive-mind/actions/runs/20424106320/job/58681044036\"},{\"completedAt\":\"2025-12-22T06:42:43Z\",\"conclusion\":\"skipped\",\"databaseId\":58681044044,\"name\":\"docker-pr-check\",\"startedAt\":\"2025-12-22T06:42:43Z\",\"status\":\"completed\",\"steps\":[],\"url\":\"https://github.com/link-assistant/hive-mind/actions/runs/20424106320/job/58681044044\"},{\"completedAt\":\"2025-12-22T06:42:43Z\",\"conclusion\":\"skipped\",\"databaseId\":58681044125,\"name\":\"Release\",\"startedAt\":\"2025-12-22T06:42:43Z\",\"status\":\"completed\",\"steps\":[],\"url\":\"https://github.com/link-assistant/hive-mind/actions/runs/20424106320/job/58681044125\"},{\"completedAt\":\"2025-12-22T06:42:43Z\",\"conclusion\":\"skipped\",\"databaseId\":58681044197,\"name\":\"Docker Publish\",\"startedAt\":\"2025-12-22T06:42:44Z\",\"status\":\"completed\",\"steps\":[],\"url\":\"https://github.com/link-assistant/hive-mind/actions/runs/20424106320/job/58681044197\"},{\"completedAt\":\"2025-12-22T06:42:43Z\",\"conclusion\":\"skipped\",\"databaseId\":58681044216,\"name\":\"Helm Release\",\"startedAt\":\"2025-12-22T06:42:44Z\",\"status\":\"completed\",\"steps\":[],\"url\":\"https://github.com/link-assistant/hive-mind/actions/runs/20424106320/job/58681044216\"}],\"status\":\"completed\"}", | |
| "stderr": "", | |
| "interrupted": false, | |
| "isImage": false | |
| } | |
| } | |
| [2025-12-22T17:15:16.326Z] [INFO] { | |
| "type": "assistant", | |
| "message": { | |
| "model": "claude-opus-4-5-20251101", | |
| "id": "msg_019z7zqPmojmDyxFkT1YUmXn", | |
| "type": "message", | |
| "role": "assistant", | |
| "content": [ | |
| { | |
| "type": "text", | |
| "text": "I found the key insight! In the latest main run (20438451672), the Release job succeeded and published v0.48.3, but then failed at \"Post-publish - Upload Source Maps to Sentry\" step. Because of this failure, the **Docker Publish** and **Helm Release** jobs were skipped!\n\nLet me download the logs and verify this:" | |
| } | |
| ], | |
| "stop_reason": null, | |
| "stop_sequence": null, | |
| "usage": { | |
| "input_tokens": 1, | |
| "cache_creation_input_tokens": 10763, | |
| "cache_read_input_tokens": 56360, | |
| "cache_creation": { | |
| "ephemeral_5m_input_tokens": 10763, | |
| "ephemeral_1h_input_tokens": 0 | |
| }, | |
| "output_tokens": 2, | |
| "service_tier": "standard" | |
| }, | |
| "context_management": null | |
| }, | |
| "parent_tool_use_id": null, | |
| "session_id": "ad16a8b2-2455-42b8-b611-73f369cef417", | |
| "uuid": "7c62b57e-710e-49da-a417-d04ac0f9fedb" | |
| } | |
| [2025-12-22T17:15:17.508Z] [INFO] { | |
| "type": "assistant", | |
| "message": { | |
| "model": "claude-opus-4-5-20251101", | |
| "id": "msg_019z7zqPmojmDyxFkT1YUmXn", | |
| "type": "message", | |
| "role": "assistant", | |
| "content": [ | |
| { | |
| "type": "tool_use", | |
| "id": "toolu_01U9aVhKnbpgCL6BjL6SiSxd", | |
| "name": "Bash", | |
| "input": { | |
| "command": "gh run view 20438451672 --repo link-assistant/hive-mind --log > ci-logs/release-20438451672.log 2>&1 && wc -l ci-logs/release-20438451672.log", | |
| "description": "Download release run logs" | |
| } | |
| } | |
| ], | |
| "stop_reason": null, | |
| "stop_sequence": null, | |
| "usage": { | |
| "input_tokens": 1, | |
| "cache_creation_input_tokens": 10763, | |
| "cache_read_input_tokens": 56360, | |
| "cache_creation": { | |
| "ephemeral_5m_input_tokens": 10763, | |
| "ephemeral_1h_input_tokens": 0 | |
| }, | |
| "output_tokens": 2, | |
| "service_tier": "standard" | |
| }, | |
| "context_management": null | |
| }, | |
| "parent_tool_use_id": null, | |
| "session_id": "ad16a8b2-2455-42b8-b611-73f369cef417", | |
| "uuid": "226bda15-3dd1-4725-b867-ce7d7aff55d3" | |
| } | |
| [2025-12-22T17:15:18.401Z] [INFO] { | |
| "type": "assistant", | |
| "message": { | |
| "model": "claude-opus-4-5-20251101", | |
| "id": "msg_019z7zqPmojmDyxFkT1YUmXn", | |
| "type": "message", | |
| "role": "assistant", | |
| "content": [ | |
| { | |
| "type": "tool_use", | |
| "id": "toolu_01H8cRuFCitWJRUcsfnmFdQ8", | |
| "name": "Bash", | |
| "input": { | |
| "command": "gh run view 20438451672 --repo link-assistant/hive-mind --log 2>&1 | grep -A 30 \"Post-publish - Upload Source Maps to Sentry\"", | |
| "description": "Get Sentry upload error details" | |
| } | |
| } | |
| ], | |
| "stop_reason": null, | |
| "stop_sequence": null, | |
| "usage": { | |
| "input_tokens": 1, | |
| "cache_creation_input_tokens": 10763, | |
| "cache_read_input_tokens": 56360, | |
| "cache_creation": { | |
| "ephemeral_5m_input_tokens": 10763, | |
| "ephemeral_1h_input_tokens": 0 | |
| }, | |
| "output_tokens": 312, | |
| "service_tier": "standard" | |
| }, | |
| "context_management": null | |
| }, | |
| "parent_tool_use_id": null, | |
| "session_id": "ad16a8b2-2455-42b8-b611-73f369cef417", | |
| "uuid": "9e242770-159f-4951-b48f-6097ceebdb73" | |
| } | |
| [2025-12-22T17:15:23.293Z] [INFO] { | |
| "type": "user", | |
| "message": { | |
| "role": "user", | |
| "content": [ | |
| { | |
| "tool_use_id": "toolu_01U9aVhKnbpgCL6BjL6SiSxd", | |
| "type": "tool_result", | |
| "content": "17893 ci-logs/release-20438451672.log", | |
| "is_error": false | |
| } | |
| ] | |
| }, | |
| "parent_tool_use_id": null, | |
| "session_id": "ad16a8b2-2455-42b8-b611-73f369cef417", | |
| "uuid": "90dbb533-abca-49e1-b30d-718dfe23abd0", | |
| "tool_use_result": { | |
| "stdout": "17893 ci-logs/release-20438451672.log", | |
| "stderr": "", | |
| "interrupted": false, | |
| "isImage": false | |
| } | |
| } | |
| [2025-12-22T17:15:25.146Z] [INFO] { | |
| "type": "user", | |
| "message": { | |
| "role": "user", | |
| "content": [ | |
| { | |
| "tool_use_id": "toolu_01H8cRuFCitWJRUcsfnmFdQ8", | |
| "type": "tool_result", | |
| "content": "Release\tPost-publish - Upload Source Maps to Sentry\t2025-12-22T17:01:13.6870249Z ##[group]Run echo \"Uploading source maps to Sentry for published packages...\"\nRelease\tPost-publish - Upload Source Maps to Sentry\t2025-12-22T17:01:13.6870772Z \u001b[36;1mecho \"Uploading source maps to Sentry for published packages...\"\u001b[0m\nRelease\tPost-publish - Upload Source Maps to Sentry\t2025-12-22T17:01:13.6871146Z \u001b[36;1mchmod +x scripts/upload-sourcemaps.mjs\u001b[0m\nRelease\tPost-publish - Upload Source Maps to Sentry\t2025-12-22T17:01:13.6871960Z \u001b[36;1mnode scripts/upload-sourcemaps.mjs\u001b[0m\nRelease\tPost-publish - Upload Source Maps to Sentry\t2025-12-22T17:01:13.6904486Z shell: /usr/bin/bash -e {0}\nRelease\tPost-publish - Upload Source Maps to Sentry\t2025-12-22T17:01:13.6904703Z env:\nRelease\tPost-publish - Upload Source Maps to Sentry\t2025-12-22T17:01:13.6904925Z NPM_CONFIG_USERCONFIG: /home/runner/work/_temp/.npmrc\nRelease\tPost-publish - Upload Source Maps to Sentry\t2025-12-22T17:01:13.6905232Z NODE_AUTH_TOKEN: XXXXX-XXXXX-XXXXX-XXXXX\nRelease\tPost-publish - Upload Source Maps to Sentry\t2025-12-22T17:01:13.6905737Z SENTRY_AUTH_TOKEN: ***\nRelease\tPost-publish - Upload Source Maps to Sentry\t2025-12-22T17:01:13.6905934Z ##[endgroup]\nRelease\tPost-publish - Upload Source Maps to Sentry\t2025-12-22T17:01:13.6956621Z Uploading source maps to Sentry for published packages...\nRelease\tPost-publish - Upload Source Maps to Sentry\t2025-12-22T17:01:13.7239897Z 📦 Uploading source maps for @link-assistant/[email protected]\nRelease\tPost-publish - Upload Source Maps to Sentry\t2025-12-22T17:01:15.3804988Z 🔄 Creating release 0.48.3 in Sentry...\nRelease\tPost-publish - Upload Source Maps to Sentry\t2025-12-22T17:01:15.4678999Z npm warn Unknown user config \"always-auth\". This will stop working in the next major version of npm.\nRelease\tPost-publish - Upload Source Maps to Sentry\t2025-12-22T17:01:16.3880627Z Created release 0.48.3\nRelease\tPost-publish - Upload Source Maps to Sentry\t2025-12-22T17:01:16.4038481Z 📤 Uploading source maps...\nRelease\tPost-publish - Upload Source Maps to Sentry\t2025-12-22T17:01:16.4886375Z npm warn Unknown user config \"always-auth\". This will stop working in the next major version of npm.\nRelease\tPost-publish - Upload Source Maps to Sentry\t2025-12-22T17:01:17.0643309Z error: unrecognized subcommand 'files'\nRelease\tPost-publish - Upload Source Maps to Sentry\t2025-12-22T17:01:17.0643734Z \nRelease\tPost-publish - Upload Source Maps to Sentry\t2025-12-22T17:01:17.0644042Z Usage: sentry-cli releases [OPTIONS] <COMMAND>\nRelease\tPost-publish - Upload Source Maps to Sentry\t2025-12-22T17:01:17.0644391Z \nRelease\tPost-publish - Upload Source Maps to Sentry\t2025-12-22T17:01:17.0644617Z For more information, try '--help'.\nRelease\tPost-publish - Upload Source Maps to Sentry\t2025-12-22T17:01:17.0775588Z ❌ Failed to upload source maps: Command failed: npx @sentry/cli releases files 0.48.3 upload-sourcemaps ./src --org deepassistant --project hive-mind --url-prefix '~/src'\nRelease\tPost-publish - Upload Source Maps to Sentry\t2025-12-22T17:01:17.0820930Z ##[error]Process completed with exit code 1.\nRelease\tPost Run actions/checkout@v4\t2025-12-22T17:01:17.0922552Z Post job cleanup.\nRelease\tPost Run actions/checkout@v4\t2025-12-22T17:01:17.1865160Z [command]/usr/bin/git version\nRelease\tPost Run actions/checkout@v4\t2025-12-22T17:01:17.1901141Z git version 2.52.0\nRelease\tPost Run actions/checkout@v4\t2025-12-22T17:01:17.1954038Z Temporarily overriding HOME='/home/runner/work/_temp/9bc83fdb-031c-4131-9fcb-7dbd340de375' before making global git config changes\nRelease\tPost Run actions/checkout@v4\t2025-12-22T17:01:17.1954920Z Adding repository directory to the temporary git global config as a safe directory\nRelease\tPost Run actions/checkout@v4\t2025-12-22T17:01:17.1959497Z [command]/usr/bin/git config --global --add safe.directory /home/runner/work/hive-mind/hive-mind\nRelease\tPost Run actions/checkout@v4\t2025-12-22T17:01:17.1994617Z [command]/usr/bin/git config --local --name-only --get-regexp core\\.sshCommand\nRelease\tPost Run actions/checkout@v4\t2025-12-22T17:01:17.2028123Z [command]/usr/bin/git submodule foreach --recursive sh -c \"git config --local --name-only --get-regexp 'core\\.sshCommand' && git config --local --unset-all 'core.sshCommand' || :\"\nRelease\tPost Run actions/checkout@v4\t2025-12-22T17:01:17.2262100Z [command]/usr/bin/git config --local --name-only --get-regexp http\\.https\\:\\/\\/github\\.com\\/\\.extraheader\nRelease\tPost Run actions/checkout@v4\t2025-12-22T17:01:17.2283231Z http.https://github.com/.extraheader\nRelease\tPost Run actions/checkout@v4\t2025-12-22T17:01:17.2297713Z [command]/usr/bin/git config --local --unset-all http.https://github.com/.extraheader\nRelease\tPost Run actions/checkout@v4\t2025-12-22T17:01:17.2331673Z [command]/usr/bin/git submodule foreach --recursive sh -c \"git config --local --name-only --get-regexp 'http\\.https\\:\\/\\/github\\.com\\/\\.extraheader' && git config --local --unset-all 'http.https://github.com/.extraheader' || :\"\nRelease\tPost Run actions/checkout@v4\t2025-12-22T17:01:17.2566113Z [command]/usr/bin/git config --local --name-only --get-regexp ^includeIf\\.gitdir:\nRelease\tPost Run actions/checkout@v4\t2025-12-22T17:01:17.2600272Z [command]/usr/bin/git submodule foreach --recursive git config --local --show-origin --name-only --get-regexp remote.origin.url\nRelease\tComplete job\t2025-12-22T17:01:17.2955332Z Evaluate and set job outputs\nRelease\tComplete job\t2025-12-22T17:01:17.2960477Z Set output 'published'\nRelease\tComplete job\t2025-12-22T17:01:17.2963186Z Set output 'published_version'\nRelease\tComplete job\t2025-12-22T17:01:17.2964263Z Cleaning up orphan processes", | |
| "is_error": false | |
| } | |
| ] | |
| }, | |
| "parent_tool_use_id": null, | |
| "session_id": "ad16a8b2-2455-42b8-b611-73f369cef417", | |
| "uuid": "4f898f8a-6c49-42a7-a9ee-48580af7887f", | |
| "tool_use_result": { | |
| "stdout": "Release\tPost-publish - Upload Source Maps to Sentry\t2025-12-22T17:01:13.6870249Z ##[group]Run echo \"Uploading source maps to Sentry for published packages...\"\nRelease\tPost-publish - Upload Source Maps to Sentry\t2025-12-22T17:01:13.6870772Z \u001b[36;1mecho \"Uploading source maps to Sentry for published packages...\"\u001b[0m\nRelease\tPost-publish - Upload Source Maps to Sentry\t2025-12-22T17:01:13.6871146Z \u001b[36;1mchmod +x scripts/upload-sourcemaps.mjs\u001b[0m\nRelease\tPost-publish - Upload Source Maps to Sentry\t2025-12-22T17:01:13.6871960Z \u001b[36;1mnode scripts/upload-sourcemaps.mjs\u001b[0m\nRelease\tPost-publish - Upload Source Maps to Sentry\t2025-12-22T17:01:13.6904486Z shell: /usr/bin/bash -e {0}\nRelease\tPost-publish - Upload Source Maps to Sentry\t2025-12-22T17:01:13.6904703Z env:\nRelease\tPost-publish - Upload Source Maps to Sentry\t2025-12-22T17:01:13.6904925Z NPM_CONFIG_USERCONFIG: /home/runner/work/_temp/.npmrc\nRelease\tPost-publish - Upload Source Maps to Sentry\t2025-12-22T17:01:13.6905232Z NODE_AUTH_TOKEN: XXXXX-XXXXX-XXXXX-XXXXX\nRelease\tPost-publish - Upload Source Maps to Sentry\t2025-12-22T17:01:13.6905737Z SENTRY_AUTH_TOKEN: ***\nRelease\tPost-publish - Upload Source Maps to Sentry\t2025-12-22T17:01:13.6905934Z ##[endgroup]\nRelease\tPost-publish - Upload Source Maps to Sentry\t2025-12-22T17:01:13.6956621Z Uploading source maps to Sentry for published packages...\nRelease\tPost-publish - Upload Source Maps to Sentry\t2025-12-22T17:01:13.7239897Z 📦 Uploading source maps for @link-assistant/[email protected]\nRelease\tPost-publish - Upload Source Maps to Sentry\t2025-12-22T17:01:15.3804988Z 🔄 Creating release 0.48.3 in Sentry...\nRelease\tPost-publish - Upload Source Maps to Sentry\t2025-12-22T17:01:15.4678999Z npm warn Unknown user config \"always-auth\". This will stop working in the next major version of npm.\nRelease\tPost-publish - Upload Source Maps to Sentry\t2025-12-22T17:01:16.3880627Z Created release 0.48.3\nRelease\tPost-publish - Upload Source Maps to Sentry\t2025-12-22T17:01:16.4038481Z 📤 Uploading source maps...\nRelease\tPost-publish - Upload Source Maps to Sentry\t2025-12-22T17:01:16.4886375Z npm warn Unknown user config \"always-auth\". This will stop working in the next major version of npm.\nRelease\tPost-publish - Upload Source Maps to Sentry\t2025-12-22T17:01:17.0643309Z error: unrecognized subcommand 'files'\nRelease\tPost-publish - Upload Source Maps to Sentry\t2025-12-22T17:01:17.0643734Z \nRelease\tPost-publish - Upload Source Maps to Sentry\t2025-12-22T17:01:17.0644042Z Usage: sentry-cli releases [OPTIONS] <COMMAND>\nRelease\tPost-publish - Upload Source Maps to Sentry\t2025-12-22T17:01:17.0644391Z \nRelease\tPost-publish - Upload Source Maps to Sentry\t2025-12-22T17:01:17.0644617Z For more information, try '--help'.\nRelease\tPost-publish - Upload Source Maps to Sentry\t2025-12-22T17:01:17.0775588Z ❌ Failed to upload source maps: Command failed: npx @sentry/cli releases files 0.48.3 upload-sourcemaps ./src --org deepassistant --project hive-mind --url-prefix '~/src'\nRelease\tPost-publish - Upload Source Maps to Sentry\t2025-12-22T17:01:17.0820930Z ##[error]Process completed with exit code 1.\nRelease\tPost Run actions/checkout@v4\t2025-12-22T17:01:17.0922552Z Post job cleanup.\nRelease\tPost Run actions/checkout@v4\t2025-12-22T17:01:17.1865160Z [command]/usr/bin/git version\nRelease\tPost Run actions/checkout@v4\t2025-12-22T17:01:17.1901141Z git version 2.52.0\nRelease\tPost Run actions/checkout@v4\t2025-12-22T17:01:17.1954038Z Temporarily overriding HOME='/home/runner/work/_temp/9bc83fdb-031c-4131-9fcb-7dbd340de375' before making global git config changes\nRelease\tPost Run actions/checkout@v4\t2025-12-22T17:01:17.1954920Z Adding repository directory to the temporary git global config as a safe directory\nRelease\tPost Run actions/checkout@v4\t2025-12-22T17:01:17.1959497Z [command]/usr/bin/git config --global --add safe.directory /home/runner/work/hive-mind/hive-mind\nRelease\tPost Run actions/checkout@v4\t2025-12-22T17:01:17.1994617Z [command]/usr/bin/git config --local --name-only --get-regexp core\\.sshCommand\nRelease\tPost Run actions/checkout@v4\t2025-12-22T17:01:17.2028123Z [command]/usr/bin/git submodule foreach --recursive sh -c \"git config --local --name-only --get-regexp 'core\\.sshCommand' && git config --local --unset-all 'core.sshCommand' || :\"\nRelease\tPost Run actions/checkout@v4\t2025-12-22T17:01:17.2262100Z [command]/usr/bin/git config --local --name-only --get-regexp http\\.https\\:\\/\\/github\\.com\\/\\.extraheader\nRelease\tPost Run actions/checkout@v4\t2025-12-22T17:01:17.2283231Z http.https://github.com/.extraheader\nRelease\tPost Run actions/checkout@v4\t2025-12-22T17:01:17.2297713Z [command]/usr/bin/git config --local --unset-all http.https://github.com/.extraheader\nRelease\tPost Run actions/checkout@v4\t2025-12-22T17:01:17.2331673Z [command]/usr/bin/git submodule foreach --recursive sh -c \"git config --local --name-only --get-regexp 'http\\.https\\:\\/\\/github\\.com\\/\\.extraheader' && git config --local --unset-all 'http.https://github.com/.extraheader' || :\"\nRelease\tPost Run actions/checkout@v4\t2025-12-22T17:01:17.2566113Z [command]/usr/bin/git config --local --name-only --get-regexp ^includeIf\\.gitdir:\nRelease\tPost Run actions/checkout@v4\t2025-12-22T17:01:17.2600272Z [command]/usr/bin/git submodule foreach --recursive git config --local --show-origin --name-only --get-regexp remote.origin.url\nRelease\tComplete job\t2025-12-22T17:01:17.2955332Z Evaluate and set job outputs\nRelease\tComplete job\t2025-12-22T17:01:17.2960477Z Set output 'published'\nRelease\tComplete job\t2025-12-22T17:01:17.2963186Z Set output 'published_version'\nRelease\tComplete job\t2025-12-22T17:01:17.2964263Z Cleaning up orphan processes", | |
| "stderr": "", | |
| "interrupted": false, | |
| "isImage": false | |
| } | |
| } | |
| [2025-12-22T17:15:30.225Z] [INFO] { | |
| "type": "assistant", | |
| "message": { | |
| "model": "claude-opus-4-5-20251101", | |
| "id": "msg_01JvuTddKSx1TnjY4DZ8u2CQ", | |
| "type": "message", | |
| "role": "assistant", | |
| "content": [ | |
| { | |
| "type": "text", | |
| "text": "Excellent! Now I've found the **real root cause**! The Sentry sourcemap upload fails with `error: unrecognized subcommand 'files'` due to a change in `sentry-cli` command syntax. This failure causes the entire Release job to fail, which then causes Docker Publish to be skipped because of the job dependency chain.\n\nLet me search online for more information and find when this started happening:" | |
| } | |
| ], | |
| "stop_reason": null, | |
| "stop_sequence": null, | |
| "usage": { | |
| "input_tokens": 1, | |
| "cache_creation_input_tokens": 2760, | |
| "cache_read_input_tokens": 67123, | |
| "cache_creation": { | |
| "ephemeral_5m_input_tokens": 2760, | |
| "ephemeral_1h_input_tokens": 0 | |
| }, | |
| "output_tokens": 4, | |
| "service_tier": "standard" | |
| }, | |
| "context_management": null | |
| }, | |
| "parent_tool_use_id": null, | |
| "session_id": "ad16a8b2-2455-42b8-b611-73f369cef417", | |
| "uuid": "aa2f5b0e-10da-432e-b908-3927b3e55220" | |
| } | |
| [2025-12-22T17:15:33.979Z] [INFO] { | |
| "type": "assistant", | |
| "message": { | |
| "model": "claude-opus-4-5-20251101", | |
| "id": "msg_01JvuTddKSx1TnjY4DZ8u2CQ", | |
| "type": "message", | |
| "role": "assistant", | |
| "content": [ | |
| { | |
| "type": "tool_use", | |
| "id": "toolu_01L9DSjUV3wsojzYgvVQT5vJ", | |
| "name": "TodoWrite", | |
| "input": { | |
| "todos": [ | |
| { | |
| "content": "Download and analyze screenshot from issue comment", | |
| "status": "completed", | |
| "activeForm": "Downloading and analyzing screenshot from issue comment" | |
| }, | |
| { | |
| "content": "Study GitHub Actions workflows for Docker publishing", | |
| "status": "completed", | |
| "activeForm": "Studying GitHub Actions workflows for Docker publishing" | |
| }, | |
| { | |
| "content": "List recent CI runs with timestamps and check for failures", | |
| "status": "completed", | |
| "activeForm": "Listing recent CI runs with timestamps" | |
| }, | |
| { | |
| "content": "Download logs from relevant CI runs to ci-logs directory", | |
| "status": "completed", | |
| "activeForm": "Downloading logs from CI runs" | |
| }, | |
| { | |
| "content": "Check Docker Hub manifest for konard/hive-mind image", | |
| "status": "in_progress", | |
| "activeForm": "Checking Docker Hub manifest" | |
| }, | |
| { | |
| "content": "Research online for linux/arm64/v8 manifest error causes", | |
| "status": "pending", | |
| "activeForm": "Researching online for error causes" | |
| }, | |
| { | |
| "content": "Create case study folder structure in docs/case-studies/issue-962", | |
| "status": "pending", | |
| "activeForm": "Creating case study folder structure" | |
| }, | |
| { | |
| "content": "Compile timeline and sequence of events", | |
| "status": "pending", | |
| "activeForm": "Compiling timeline and sequence of events" | |
| }, | |
| { | |
| "content": "Identify root cause of the problem", | |
| "status": "pending", | |
| "activeForm": "Identifying root cause" | |
| }, | |
| { | |
| "content": "Propose and implement solutions", | |
| "status": "pending", | |
| "activeForm": "Proposing and implementing solutions" | |
| }, | |
| { | |
| "content": "Update PR with complete case study and fix", | |
| "status": "pending", | |
| "activeForm": "Updating PR with case study and fix" | |
| } | |
| ] | |
| } | |
| } | |
| ], | |
| "stop_reason": null, | |
| "stop_sequence": null, | |
| "usage": { | |
| "input_tokens": 1, | |
| "cache_creation_input_tokens": 2760, | |
| "cache_read_input_tokens": 67123, | |
| "cache_creation": { | |
| "ephemeral_5m_input_tokens": 2760, | |
| "ephemeral_1h_input_tokens": 0 | |
| }, | |
| "output_tokens": 523, | |
| "service_tier": "standard" | |
| }, | |
| "context_management": null | |
| }, | |
| "parent_tool_use_id": null, | |
| "session_id": "ad16a8b2-2455-42b8-b611-73f369cef417", | |
| "uuid": "5fc679dc-057e-469e-8550-142b1946e82b" | |
| } | |
| [2025-12-22T17:15:34.019Z] [INFO] { | |
| "type": "user", | |
| "message": { | |
| "role": "user", | |
| "content": [ | |
| { | |
| "tool_use_id": "toolu_01L9DSjUV3wsojzYgvVQT5vJ", | |
| "type": "tool_result", | |
| "content": "Todos have been modified successfully. Ensure that you continue to use the todo list to track your progress. Please proceed with the current tasks if applicable" | |
| } | |
| ] | |
| }, | |
| "parent_tool_use_id": null, | |
| "session_id": "ad16a8b2-2455-42b8-b611-73f369cef417", | |
| "uuid": "bdf5b0f3-e710-4ffd-9721-fb7be013e3a2", | |
| "tool_use_result": { | |
| "oldTodos": [ | |
| { | |
| "content": "Download and analyze screenshot from issue comment", | |
| "status": "completed", | |
| "activeForm": "Downloading and analyzing screenshot from issue comment" | |
| }, | |
| { | |
| "content": "Study GitHub Actions workflows for Docker publishing", | |
| "status": "completed", | |
| "activeForm": "Studying GitHub Actions workflows for Docker publishing" | |
| }, | |
| { | |
| "content": "List recent CI runs with timestamps and check for failures", | |
| "status": "in_progress", | |
| "activeForm": "Listing recent CI runs with timestamps" | |
| }, | |
| { | |
| "content": "Download logs from relevant CI runs to ci-logs directory", | |
| "status": "pending", | |
| "activeForm": "Downloading logs from CI runs" | |
| }, | |
| { | |
| "content": "Check Docker Hub manifest for konard/hive-mind image", | |
| "status": "pending", | |
| "activeForm": "Checking Docker Hub manifest" | |
| }, | |
| { | |
| "content": "Research online for linux/arm64/v8 manifest error causes", | |
| "status": "pending", | |
| "activeForm": "Researching online for error causes" | |
| }, | |
| { | |
| "content": "Create case study folder structure in docs/case-studies/issue-962", | |
| "status": "pending", | |
| "activeForm": "Creating case study folder structure" | |
| }, | |
| { | |
| "content": "Compile timeline and sequence of events", | |
| "status": "pending", | |
| "activeForm": "Compiling timeline and sequence of events" | |
| }, | |
| { | |
| "content": "Identify root cause of the problem", | |
| "status": "pending", | |
| "activeForm": "Identifying root cause" | |
| }, | |
| { | |
| "content": "Propose and implement solutions", | |
| "status": "pending", | |
| "activeForm": "Proposing and implementing solutions" | |
| }, | |
| { | |
| "content": "Update PR with complete case study and fix", | |
| "status": "pending", | |
| "activeForm": "Updating PR with case study and fix" | |
| } | |
| ], | |
| "newTodos": [ | |
| { | |
| "content": "Download and analyze screenshot from issue comment", | |
| "status": "completed", | |
| "activeForm": "Downloading and analyzing screenshot from issue comment" | |
| }, | |
| { | |
| "content": "Study GitHub Actions workflows for Docker publishing", | |
| "status": "completed", | |
| "activeForm": "Studying GitHub Actions workflows for Docker publishing" | |
| }, | |
| { | |
| "content": "List recent CI runs with timestamps and check for failures", | |
| "status": "completed", | |
| "activeForm": "Listing recent CI runs with timestamps" | |
| }, | |
| { | |
| "content": "Download logs from relevant CI runs to ci-logs directory", | |
| "status": "completed", | |
| "activeForm": "Downloading logs from CI runs" | |
| }, | |
| { | |
| "content": "Check Docker Hub manifest for konard/hive-mind image", | |
| "status": "in_progress", | |
| "activeForm": "Checking Docker Hub manifest" | |
| }, | |
| { | |
| "content": "Research online for linux/arm64/v8 manifest error causes", | |
| "status": "pending", | |
| "activeForm": "Researching online for error causes" | |
| }, | |
| { | |
| "content": "Create case study folder structure in docs/case-studies/issue-962", | |
| "status": "pending", | |
| "activeForm": "Creating case study folder structure" | |
| }, | |
| { | |
| "content": "Compile timeline and sequence of events", | |
| "status": "pending", | |
| "activeForm": "Compiling timeline and sequence of events" | |
| }, | |
| { | |
| "content": "Identify root cause of the problem", | |
| "status": "pending", | |
| "activeForm": "Identifying root cause" | |
| }, | |
| { | |
| "content": "Propose and implement solutions", | |
| "status": "pending", | |
| "activeForm": "Proposing and implementing solutions" | |
| }, | |
| { | |
| "content": "Update PR with complete case study and fix", | |
| "status": "pending", | |
| "activeForm": "Updating PR with case study and fix" | |
| } | |
| ] | |
| } | |
| } | |
| [2025-12-22T17:15:36.990Z] [INFO] { | |
| "type": "assistant", | |
| "message": { | |
| "model": "claude-opus-4-5-20251101", | |
| "id": "msg_01KbhVJHrLCqCRKmmyvAUsMW", | |
| "type": "message", | |
| "role": "assistant", | |
| "content": [ | |
| { | |
| "type": "tool_use", | |
| "id": "toolu_01GGe7fEz2oaaDmmkzpaGebg", | |
| "name": "WebSearch", | |
| "input": { | |
| "query": "sentry-cli releases files unrecognized subcommand 2025" | |
| } | |
| } | |
| ], | |
| "stop_reason": null, | |
| "stop_sequence": null, | |
| "usage": { | |
| "input_tokens": 1, | |
| "cache_creation_input_tokens": 565, | |
| "cache_read_input_tokens": 69883, | |
| "cache_creation": { | |
| "ephemeral_5m_input_tokens": 565, | |
| "ephemeral_1h_input_tokens": 0 | |
| }, | |
| "output_tokens": 25, | |
| "service_tier": "standard" | |
| }, | |
| "context_management": null | |
| }, | |
| "parent_tool_use_id": null, | |
| "session_id": "ad16a8b2-2455-42b8-b611-73f369cef417", | |
| "uuid": "d01785ff-4644-4602-833f-b19d11c1b8e3" | |
| } | |
| [2025-12-22T17:15:37.941Z] [INFO] { | |
| "type": "assistant", | |
| "message": { | |
| "model": "claude-opus-4-5-20251101", | |
| "id": "msg_01KbhVJHrLCqCRKmmyvAUsMW", | |
| "type": "message", | |
| "role": "assistant", | |
| "content": [ | |
| { | |
| "type": "tool_use", | |
| "id": "toolu_01PQ7RL88e7ufULA4vZqfdjB", | |
| "name": "Bash", | |
| "input": { | |
| "command": "docker manifest inspect konard/hive-mind:latest 2>&1 || echo \"Manifest inspect failed\"", | |
| "description": "Inspect Docker manifest" | |
| } | |
| } | |
| ], | |
| "stop_reason": null, | |
| "stop_sequence": null, | |
| "usage": { | |
| "input_tokens": 1, | |
| "cache_creation_input_tokens": 565, | |
| "cache_read_input_tokens": 69883, | |
| "cache_creation": { | |
| "ephemeral_5m_input_tokens": 565, | |
| "ephemeral_1h_input_tokens": 0 | |
| }, | |
| "output_tokens": 25, | |
| "service_tier": "standard" | |
| }, | |
| "context_management": null | |
| }, | |
| "parent_tool_use_id": null, | |
| "session_id": "ad16a8b2-2455-42b8-b611-73f369cef417", | |
| "uuid": "98abf5aa-1ccb-40a2-b9b9-c622edbd95b4" | |
| } | |
| [2025-12-22T17:15:59.170Z] [INFO] { | |
| "type": "user", | |
| "message": { | |
| "role": "user", | |
| "content": [ | |
| { | |
| "tool_use_id": "toolu_01GGe7fEz2oaaDmmkzpaGebg", | |
| "type": "tool_result", | |
| "content": "Web search results for query: \"sentry-cli releases files unrecognized subcommand 2025\"\n\nLinks: [{\"title\":\"Releases · getsentry/sentry-cli\",\"url\":\"https://github.com/getsentry/sentry-cli/releases\"},{\"title\":\"Release Management\",\"url\":\"https://docs.sentry.io/product/cli/releases/\"},{\"title\":\"Cannot run \\\"releases files\\\" with release name starting with \\\"upload...\\\" · Issue #935 · getsentry/sentry-cli\",\"url\":\"https://github.com/getsentry/sentry-cli/issues/935\"},{\"title\":\"Cannot run \\\"releases files\\\" with release name starting with \\\"list...\\\" · Issue #686 · getsentry/sentry-cli\",\"url\":\"https://github.com/getsentry/sentry-cli/issues/686\"},{\"title\":\"sentry-cli releases failed · Issue #492 · getsentry/sentry-cli\",\"url\":\"https://github.com/getsentry/sentry-cli/issues/492\"},{\"title\":\"Configuration and Authentication\",\"url\":\"https://docs.sentry.io/product/cli/configuration/\"},{\"title\":\"https://raw.githubusercontent.com/getsentry/sentry...\",\"url\":\"https://raw.githubusercontent.com/getsentry/sentry-cli/master/CHANGELOG.md\"},{\"title\":\"Command Line Interface\",\"url\":\"https://docs.sentry.io/product/cli/\"},{\"title\":\"ERROR in Sentry CLI Plugin: Command failed sentry-cli releases files... · Issue #192 · getsentry/sentry-cli\",\"url\":\"https://github.com/getsentry/sentry-cli/issues/192\"},{\"title\":\"`sentry-cli releases deploy` breaks when release starts with \\\"new\\\" · Issue #785 · getsentry/sentry-cli\",\"url\":\"https://github.com/getsentry/sentry-cli/issues/785\"}]\n\nBased on the search results, here's what I found about the `sentry-cli releases files` unrecognized subcommand issue:\n\n## Key Finding: Command Removed in Sentry CLI 3.x\n\nThe `sentry-cli files ...` and `sentry-cli releases files ...` subcommands have been removed (#2956). These commands provided functionality for managing release files, a feature that has been deprecated in Sentry.\n\n## Migration Path\n\nUsers still using `sentry-cli files upload` to upload source maps should migrate to `sentry-cli sourcemaps upload`.\n\n## Additional Context\n\nA deprecation notice was added for release bundle uploads, a legacy method for uploading source maps. Release bundle uploads were removed in Sentry CLI 3.x in favor of artifact bundles, the newer source map upload method introduced in Sentry version 23.6.2.(no content)Self-hosted users must upgrade to Sentry 23.6.2 or later before upgrading to Sentry CLI 3.x.\n\n## Other Removed Commands in CLI 3.x\n\nThe `sentry-cli sourcemaps explain` command was also removed. The command had been deprecated for some time, since Sentry now has a better in-product debugging flow for source map problems via the \"Unminify Code\" button.(no content)Support for the legacy API key authentication method was removed. Sentry CLI now only supports authenticating with Auth Tokens.\n\n## Solution\n\nIf you're seeing an \"unrecognized subcommand\" error for `sentry-cli releases files`, you're likely using Sentry CLI version 3.x or later. The fix is to replace:\n- `sentry-cli releases files <VERSION> upload-sourcemaps ...` \n\nWith:\n- `sentry-cli sourcemaps upload ...`\n\n\nREMINDER: You MUST include the sources above in your response to the user using markdown hyperlinks." | |
| } | |
| ] | |
| }, | |
| "parent_tool_use_id": null, | |
| "session_id": "ad16a8b2-2455-42b8-b611-73f369cef417", | |
| "uuid": "84537555-7ea1-47a3-ab53-c748dfb2881a", | |
| "tool_use_result": { | |
| "query": "sentry-cli releases files unrecognized subcommand 2025", | |
| "results": [ | |
| { | |
| "tool_use_id": "srvtoolu_016oSdP4rmhcXGPGBpYEBcsW", | |
| "content": [ | |
| { | |
| "title": "Releases · getsentry/sentry-cli", | |
| "url": "https://github.com/getsentry/sentry-cli/releases" | |
| }, | |
| { | |
| "title": "Release Management", | |
| "url": "https://docs.sentry.io/product/cli/releases/" | |
| }, | |
| { | |
| "title": "Cannot run \"releases files\" with release name starting with \"upload...\" · Issue #935 · getsentry/sentry-cli", | |
| "url": "https://github.com/getsentry/sentry-cli/issues/935" | |
| }, | |
| { | |
| "title": "Cannot run \"releases files\" with release name starting with \"list...\" · Issue #686 · getsentry/sentry-cli", | |
| "url": "https://github.com/getsentry/sentry-cli/issues/686" | |
| }, | |
| { | |
| "title": "sentry-cli releases failed · Issue #492 · getsentry/sentry-cli", | |
| "url": "https://github.com/getsentry/sentry-cli/issues/492" | |
| }, | |
| { | |
| "title": "Configuration and Authentication", | |
| "url": "https://docs.sentry.io/product/cli/configuration/" | |
| }, | |
| { | |
| "title": "https://raw.githubusercontent.com/getsentry/sentry...", | |
| "url": "https://raw.githubusercontent.com/getsentry/sentry-cli/master/CHANGELOG.md" | |
| }, | |
| { | |
| "title": "Command Line Interface", | |
| "url": "https://docs.sentry.io/product/cli/" | |
| }, | |
| { | |
| "title": "ERROR in Sentry CLI Plugin: Command failed sentry-cli releases files... · Issue #192 · getsentry/sentry-cli", | |
| "url": "https://github.com/getsentry/sentry-cli/issues/192" | |
| }, | |
| { | |
| "title": "`sentry-cli releases deploy` breaks when release starts with \"new\" · Issue #785 · getsentry/sentry-cli", | |
| "url": "https://github.com/getsentry/sentry-cli/issues/785" | |
| } | |
| ] | |
| }, | |
| "Based on the search results, here's what I found about the `sentry-cli releases files` unrecognized subcommand issue:\n\n## Key Finding: Command Removed in Sentry CLI 3.x\n\nThe `sentry-cli files ...` and `sentry-cli releases files ...` subcommands have been removed (#2956). These commands provided functionality for managing release files, a feature that has been deprecated in Sentry.\n\n## Migration Path\n\nUsers still using `sentry-cli files upload` to upload source maps should migrate to `sentry-cli sourcemaps upload`.\n\n## Additional Context\n\nA deprecation notice was added for release bundle uploads, a legacy method for uploading source maps. Release bundle uploads were removed in Sentry CLI 3.x in favor of artifact bundles, the newer source map upload method introduced in Sentry version 23.6.2.(no content)Self-hosted users must upgrade to Sentry 23.6.2 or later before upgrading to Sentry CLI 3.x.\n\n## Other Removed Commands in CLI 3.x\n\nThe `sentry-cli sourcemaps explain` command was also removed. The command had been deprecated for some time, since Sentry now has a better in-product debugging flow for source map problems via the \"Unminify Code\" button.(no content)Support for the legacy API key authentication method was removed. Sentry CLI now only supports authenticating with Auth Tokens.\n\n## Solution\n\nIf you're seeing an \"unrecognized subcommand\" error for `sentry-cli releases files`, you're likely using Sentry CLI version 3.x or later. The fix is to replace:\n- `sentry-cli releases files <VERSION> upload-sourcemaps ...` \n\nWith:\n- `sentry-cli sourcemaps upload ...`" | |
| ], | |
| "durationSeconds": 21.165716323 | |
| } | |
| } | |
| [2025-12-22T17:16:00.318Z] [INFO] { | |
| "type": "user", | |
| "message": { | |
| "role": "user", | |
| "content": [ | |
| { | |
| "tool_use_id": "toolu_01PQ7RL88e7ufULA4vZqfdjB", | |
| "type": "tool_result", | |
| "content": "/bin/bash: line 1: docker: command not found\nManifest inspect failed", | |
| "is_error": false | |
| } | |
| ] | |
| }, | |
| "parent_tool_use_id": null, | |
| "session_id": "ad16a8b2-2455-42b8-b611-73f369cef417", | |
| "uuid": "d56d413b-d0f5-442d-a05d-7590d3afa41c", | |
| "tool_use_result": { | |
| "stdout": "/bin/bash: line 1: docker: command not found\nManifest inspect failed", | |
| "stderr": "", | |
| "interrupted": false, | |
| "isImage": false | |
| } | |
| } | |
| [2025-12-22T17:16:03.553Z] [INFO] { | |
| "type": "assistant", | |
| "message": { | |
| "model": "claude-opus-4-5-20251101", | |
| "id": "msg_01RED1wVApqrLc4UmVQ3kdXc", | |
| "type": "message", | |
| "role": "assistant", | |
| "content": [ | |
| { | |
| "type": "text", | |
| "text": "Now I have all the information needed. Let me check when this started happening by looking at successful releases:" | |
| } | |
| ], | |
| "stop_reason": null, | |
| "stop_sequence": null, | |
| "usage": { | |
| "input_tokens": 1, | |
| "cache_creation_input_tokens": 1101, | |
| "cache_read_input_tokens": 70448, | |
| "cache_creation": { | |
| "ephemeral_5m_input_tokens": 1101, | |
| "ephemeral_1h_input_tokens": 0 | |
| }, | |
| "output_tokens": 1, | |
| "service_tier": "standard" | |
| }, | |
| "context_management": null | |
| }, | |
| "parent_tool_use_id": null, | |
| "session_id": "ad16a8b2-2455-42b8-b611-73f369cef417", | |
| "uuid": "80772fd4-9277-46a7-9a07-067e4c864d78" | |
| } | |
| [2025-12-22T17:16:05.114Z] [INFO] { | |
| "type": "assistant", | |
| "message": { | |
| "model": "claude-opus-4-5-20251101", | |
| "id": "msg_01RED1wVApqrLc4UmVQ3kdXc", | |
| "type": "message", | |
| "role": "assistant", | |
| "content": [ | |
| { | |
| "type": "tool_use", | |
| "id": "toolu_01BfPHBnDLk8HHPs54GpxH6e", | |
| "name": "Bash", | |
| "input": { | |
| "command": "gh run list --repo link-assistant/hive-mind --branch main --limit 30 --json databaseId,conclusion,createdAt,headSha,status 2>&1", | |
| "description": "List main branch runs to find when Docker publish stopped" | |
| } | |
| } | |
| ], | |
| "stop_reason": null, | |
| "stop_sequence": null, | |
| "usage": { | |
| "input_tokens": 1, | |
| "cache_creation_input_tokens": 1101, | |
| "cache_read_input_tokens": 70448, | |
| "cache_creation": { | |
| "ephemeral_5m_input_tokens": 1101, | |
| "ephemeral_1h_input_tokens": 0 | |
| }, | |
| "output_tokens": 141, | |
| "service_tier": "standard" | |
| }, | |
| "context_management": null | |
| }, | |
| "parent_tool_use_id": null, | |
| "session_id": "ad16a8b2-2455-42b8-b611-73f369cef417", | |
| "uuid": "966b0462-8d97-4dc9-9a7f-c1e4d7e180f1" | |
| } | |
| [2025-12-22T17:16:07.212Z] [INFO] { | |
| "type": "user", | |
| "message": { | |
| "role": "user", | |
| "content": [ | |
| { | |
| "tool_use_id": "toolu_01BfPHBnDLk8HHPs54GpxH6e", | |
| "type": "tool_result", | |
| "content": "[{\"conclusion\":\"failure\",\"createdAt\":\"2025-12-22T16:56:10Z\",\"databaseId\":20438451672,\"headSha\":\"1f6b44db6003278faeed0101ae3237e4ac6a9f2d\",\"status\":\"completed\"},{\"conclusion\":\"success\",\"createdAt\":\"2025-12-22T06:42:06Z\",\"databaseId\":20424106320,\"headSha\":\"5e975817856b3e8f1a9121819ffa69a91f087a66\",\"status\":\"completed\"},{\"conclusion\":\"success\",\"createdAt\":\"2025-12-21T20:53:45Z\",\"databaseId\":20415667223,\"headSha\":\"250aedf419d5bc70c3f16dc191d5c63998ed82b1\",\"status\":\"completed\"},{\"conclusion\":\"failure\",\"createdAt\":\"2025-12-21T20:47:20Z\",\"databaseId\":20415594494,\"headSha\":\"3516c1fed6e8293f5eb86bb0baf771fb51b5a419\",\"status\":\"completed\"},{\"conclusion\":\"failure\",\"createdAt\":\"2025-12-21T18:19:43Z\",\"databaseId\":20413917848,\"headSha\":\"2406334b4e4bb2edd6083acede46c7e8141577e8\",\"status\":\"completed\"},{\"conclusion\":\"success\",\"createdAt\":\"2025-12-21T18:15:47Z\",\"databaseId\":20413871350,\"headSha\":\"ee8d6e01a2ec540162c398f0850ad95262bd5c0d\",\"status\":\"completed\"},{\"conclusion\":\"failure\",\"createdAt\":\"2025-12-21T18:12:14Z\",\"databaseId\":20413830095,\"headSha\":\"a19356618e90c9d9efacb740fae5783e727e9f3d\",\"status\":\"completed\"},{\"conclusion\":\"failure\",\"createdAt\":\"2025-12-21T17:58:16Z\",\"databaseId\":20413664783,\"headSha\":\"32836223f5f22490f3e1635ae9df755cf8663b52\",\"status\":\"completed\"},{\"conclusion\":\"failure\",\"createdAt\":\"2025-12-21T17:53:01Z\",\"databaseId\":20413616955,\"headSha\":\"95c8eeffd2308a73deb7c680dd093f40f291456b\",\"status\":\"completed\"},{\"conclusion\":\"failure\",\"createdAt\":\"2025-12-21T17:50:14Z\",\"databaseId\":20413590237,\"headSha\":\"7db5e01df3cf919e6373360dafa6f3a2aa15ef21\",\"status\":\"completed\"},{\"conclusion\":\"failure\",\"createdAt\":\"2025-12-21T17:38:13Z\",\"databaseId\":20413458391,\"headSha\":\"00d1c7ef043ce55fac7c1319ae69e3ae76d6db36\",\"status\":\"completed\"},{\"conclusion\":\"failure\",\"createdAt\":\"2025-12-21T15:39:03Z\",\"databaseId\":20412073502,\"headSha\":\"799edde07eb3da38578ea180b406bfab281e2969\",\"status\":\"completed\"},{\"conclusion\":\"failure\",\"createdAt\":\"2025-12-21T01:37:27Z\",\"databaseId\":20402886531,\"headSha\":\"226b24210188e6a9a345f1db6b31626f822fbc4b\",\"status\":\"completed\"},{\"conclusion\":\"failure\",\"createdAt\":\"2025-12-21T00:23:27Z\",\"databaseId\":20402095504,\"headSha\":\"df6c9edf6516ecb58e40f38c7bdcdf433d83310a\",\"status\":\"completed\"},{\"conclusion\":\"success\",\"createdAt\":\"2025-12-21T00:09:37Z\",\"databaseId\":20401941329,\"headSha\":\"78e81812be73a31c76c504508b24a139c5123354\",\"status\":\"completed\"},{\"conclusion\":\"failure\",\"createdAt\":\"2025-12-21T00:01:56Z\",\"databaseId\":20401853539,\"headSha\":\"eb098e5c0f9f25568433b491e5ce5e7b469d04d0\",\"status\":\"completed\"},{\"conclusion\":\"failure\",\"createdAt\":\"2025-12-20T23:39:43Z\",\"databaseId\":20401649430,\"headSha\":\"ea7a099fd3fa933a6e104de454df3b73a1fc4da5\",\"status\":\"completed\"},{\"conclusion\":\"success\",\"createdAt\":\"2025-12-20T23:34:42Z\",\"databaseId\":20401599292,\"headSha\":\"ff76bb69b244c259b59e68502cb5e72451b576b1\",\"status\":\"completed\"},{\"conclusion\":\"success\",\"createdAt\":\"2025-12-20T23:03:37Z\",\"databaseId\":20401264400,\"headSha\":\"48a12770aea829544ce5be9a022c3c792cf350f7\",\"status\":\"completed\"},{\"conclusion\":\"failure\",\"createdAt\":\"2025-12-20T21:53:32Z\",\"databaseId\":20400547665,\"headSha\":\"6e7919eda490f9f1453e82cb8a3fc3f68b2c44f1\",\"status\":\"completed\"},{\"conclusion\":\"failure\",\"createdAt\":\"2025-12-20T20:46:38Z\",\"databaseId\":20399843821,\"headSha\":\"b76fa4779c4636c7a77451e024330923c852a879\",\"status\":\"completed\"},{\"conclusion\":\"failure\",\"createdAt\":\"2025-12-19T09:48:03Z\",\"databaseId\":20366247268,\"headSha\":\"80d256a6fecbd99a6329e3df6018528e5d6a0f47\",\"status\":\"completed\"},{\"conclusion\":\"failure\",\"createdAt\":\"2025-12-19T07:39:07Z\",\"databaseId\":20363290179,\"headSha\":\"a7ab2401c28183c19f8d7de0418e9a0e6a637ec4\",\"status\":\"completed\"},{\"conclusion\":\"failure\",\"createdAt\":\"2025-12-19T01:49:46Z\",\"databaseId\":20357146260,\"headSha\":\"883ebe776a8d988874dbf29cdb28ebf65889ca9e\",\"status\":\"completed\"},{\"conclusion\":\"failure\",\"createdAt\":\"2025-12-19T01:49:32Z\",\"databaseId\":20357142757,\"headSha\":\"309b9d8cf3943529765517fd732cded9a4c462be\",\"status\":\"completed\"},{\"conclusion\":\"failure\",\"createdAt\":\"2025-12-19T01:25:24Z\",\"databaseId\":20356722416,\"headSha\":\"5fe03001ce3a2f4084853e9edd5a437b58dddf08\",\"status\":\"completed\"},{\"conclusion\":\"failure\",\"createdAt\":\"2025-12-19T01:23:53Z\",\"databaseId\":20356693011,\"headSha\":\"9741e5f002362563bf865787d9e9a29a4154c601\",\"status\":\"completed\"},{\"conclusion\":\"failure\",\"createdAt\":\"2025-12-19T00:38:12Z\",\"databaseId\":20355850549,\"headSha\":\"f39be699c94bf9357125fb7dda610b006e90bae4\",\"status\":\"completed\"},{\"conclusion\":\"failure\",\"createdAt\":\"2025-12-18T23:53:04Z\",\"databaseId\":20354998010,\"headSha\":\"606297c7f9e50b9001cb7dae7485b5181a4c61a1\",\"status\":\"completed\"},{\"conclusion\":\"failure\",\"createdAt\":\"2025-12-17T17:57:50Z\",\"databaseId\":20312397118,\"headSha\":\"54f2362b904ae5bb006a97ce7e3cfad0fed44780\",\"status\":\"completed\"}]", | |
| "is_error": false | |
| } | |
| ] | |
| }, | |
| "parent_tool_use_id": null, | |
| "session_id": "ad16a8b2-2455-42b8-b611-73f369cef417", | |
| "uuid": "a227c251-f68c-4adc-bad4-18e961b4eb90", | |
| "tool_use_result": { | |
| "stdout": "[{\"conclusion\":\"failure\",\"createdAt\":\"2025-12-22T16:56:10Z\",\"databaseId\":20438451672,\"headSha\":\"1f6b44db6003278faeed0101ae3237e4ac6a9f2d\",\"status\":\"completed\"},{\"conclusion\":\"success\",\"createdAt\":\"2025-12-22T06:42:06Z\",\"databaseId\":20424106320,\"headSha\":\"5e975817856b3e8f1a9121819ffa69a91f087a66\",\"status\":\"completed\"},{\"conclusion\":\"success\",\"createdAt\":\"2025-12-21T20:53:45Z\",\"databaseId\":20415667223,\"headSha\":\"250aedf419d5bc70c3f16dc191d5c63998ed82b1\",\"status\":\"completed\"},{\"conclusion\":\"failure\",\"createdAt\":\"2025-12-21T20:47:20Z\",\"databaseId\":20415594494,\"headSha\":\"3516c1fed6e8293f5eb86bb0baf771fb51b5a419\",\"status\":\"completed\"},{\"conclusion\":\"failure\",\"createdAt\":\"2025-12-21T18:19:43Z\",\"databaseId\":20413917848,\"headSha\":\"2406334b4e4bb2edd6083acede46c7e8141577e8\",\"status\":\"completed\"},{\"conclusion\":\"success\",\"createdAt\":\"2025-12-21T18:15:47Z\",\"databaseId\":20413871350,\"headSha\":\"ee8d6e01a2ec540162c398f0850ad95262bd5c0d\",\"status\":\"completed\"},{\"conclusion\":\"failure\",\"createdAt\":\"2025-12-21T18:12:14Z\",\"databaseId\":20413830095,\"headSha\":\"a19356618e90c9d9efacb740fae5783e727e9f3d\",\"status\":\"completed\"},{\"conclusion\":\"failure\",\"createdAt\":\"2025-12-21T17:58:16Z\",\"databaseId\":20413664783,\"headSha\":\"32836223f5f22490f3e1635ae9df755cf8663b52\",\"status\":\"completed\"},{\"conclusion\":\"failure\",\"createdAt\":\"2025-12-21T17:53:01Z\",\"databaseId\":20413616955,\"headSha\":\"95c8eeffd2308a73deb7c680dd093f40f291456b\",\"status\":\"completed\"},{\"conclusion\":\"failure\",\"createdAt\":\"2025-12-21T17:50:14Z\",\"databaseId\":20413590237,\"headSha\":\"7db5e01df3cf919e6373360dafa6f3a2aa15ef21\",\"status\":\"completed\"},{\"conclusion\":\"failure\",\"createdAt\":\"2025-12-21T17:38:13Z\",\"databaseId\":20413458391,\"headSha\":\"00d1c7ef043ce55fac7c1319ae69e3ae76d6db36\",\"status\":\"completed\"},{\"conclusion\":\"failure\",\"createdAt\":\"2025-12-21T15:39:03Z\",\"databaseId\":20412073502,\"headSha\":\"799edde07eb3da38578ea180b406bfab281e2969\",\"status\":\"completed\"},{\"conclusion\":\"failure\",\"createdAt\":\"2025-12-21T01:37:27Z\",\"databaseId\":20402886531,\"headSha\":\"226b24210188e6a9a345f1db6b31626f822fbc4b\",\"status\":\"completed\"},{\"conclusion\":\"failure\",\"createdAt\":\"2025-12-21T00:23:27Z\",\"databaseId\":20402095504,\"headSha\":\"df6c9edf6516ecb58e40f38c7bdcdf433d83310a\",\"status\":\"completed\"},{\"conclusion\":\"success\",\"createdAt\":\"2025-12-21T00:09:37Z\",\"databaseId\":20401941329,\"headSha\":\"78e81812be73a31c76c504508b24a139c5123354\",\"status\":\"completed\"},{\"conclusion\":\"failure\",\"createdAt\":\"2025-12-21T00:01:56Z\",\"databaseId\":20401853539,\"headSha\":\"eb098e5c0f9f25568433b491e5ce5e7b469d04d0\",\"status\":\"completed\"},{\"conclusion\":\"failure\",\"createdAt\":\"2025-12-20T23:39:43Z\",\"databaseId\":20401649430,\"headSha\":\"ea7a099fd3fa933a6e104de454df3b73a1fc4da5\",\"status\":\"completed\"},{\"conclusion\":\"success\",\"createdAt\":\"2025-12-20T23:34:42Z\",\"databaseId\":20401599292,\"headSha\":\"ff76bb69b244c259b59e68502cb5e72451b576b1\",\"status\":\"completed\"},{\"conclusion\":\"success\",\"createdAt\":\"2025-12-20T23:03:37Z\",\"databaseId\":20401264400,\"headSha\":\"48a12770aea829544ce5be9a022c3c792cf350f7\",\"status\":\"completed\"},{\"conclusion\":\"failure\",\"createdAt\":\"2025-12-20T21:53:32Z\",\"databaseId\":20400547665,\"headSha\":\"6e7919eda490f9f1453e82cb8a3fc3f68b2c44f1\",\"status\":\"completed\"},{\"conclusion\":\"failure\",\"createdAt\":\"2025-12-20T20:46:38Z\",\"databaseId\":20399843821,\"headSha\":\"b76fa4779c4636c7a77451e024330923c852a879\",\"status\":\"completed\"},{\"conclusion\":\"failure\",\"createdAt\":\"2025-12-19T09:48:03Z\",\"databaseId\":20366247268,\"headSha\":\"80d256a6fecbd99a6329e3df6018528e5d6a0f47\",\"status\":\"completed\"},{\"conclusion\":\"failure\",\"createdAt\":\"2025-12-19T07:39:07Z\",\"databaseId\":20363290179,\"headSha\":\"a7ab2401c28183c19f8d7de0418e9a0e6a637ec4\",\"status\":\"completed\"},{\"conclusion\":\"failure\",\"createdAt\":\"2025-12-19T01:49:46Z\",\"databaseId\":20357146260,\"headSha\":\"883ebe776a8d988874dbf29cdb28ebf65889ca9e\",\"status\":\"completed\"},{\"conclusion\":\"failure\",\"createdAt\":\"2025-12-19T01:49:32Z\",\"databaseId\":20357142757,\"headSha\":\"309b9d8cf3943529765517fd732cded9a4c462be\",\"status\":\"completed\"},{\"conclusion\":\"failure\",\"createdAt\":\"2025-12-19T01:25:24Z\",\"databaseId\":20356722416,\"headSha\":\"5fe03001ce3a2f4084853e9edd5a437b58dddf08\",\"status\":\"completed\"},{\"conclusion\":\"failure\",\"createdAt\":\"2025-12-19T01:23:53Z\",\"databaseId\":20356693011,\"headSha\":\"9741e5f002362563bf865787d9e9a29a4154c601\",\"status\":\"completed\"},{\"conclusion\":\"failure\",\"createdAt\":\"2025-12-19T00:38:12Z\",\"databaseId\":20355850549,\"headSha\":\"f39be699c94bf9357125fb7dda610b006e90bae4\",\"status\":\"completed\"},{\"conclusion\":\"failure\",\"createdAt\":\"2025-12-18T23:53:04Z\",\"databaseId\":20354998010,\"headSha\":\"606297c7f9e50b9001cb7dae7485b5181a4c61a1\",\"status\":\"completed\"},{\"conclusion\":\"failure\",\"createdAt\":\"2025-12-17T17:57:50Z\",\"databaseId\":20312397118,\"headSha\":\"54f2362b904ae5bb006a97ce7e3cfad0fed44780\",\"status\":\"completed\"}]", | |
| "stderr": "", | |
| "interrupted": false, | |
| "isImage": false | |
| } | |
| } | |
| [2025-12-22T17:16:10.661Z] [INFO] { | |
| "type": "assistant", | |
| "message": { | |
| "model": "claude-opus-4-5-20251101", | |
| "id": "msg_01KRd4n1NUscJaLD5Z2yNnEA", | |
| "type": "message", | |
| "role": "assistant", | |
| "content": [ | |
| { | |
| "type": "text", | |
| "text": "Let me check one of the recent successful runs to see if Docker was published:" | |
| } | |
| ], | |
| "stop_reason": null, | |
| "stop_sequence": null, | |
| "usage": { | |
| "input_tokens": 1, | |
| "cache_creation_input_tokens": 2093, | |
| "cache_read_input_tokens": 71549, | |
| "cache_creation": { | |
| "ephemeral_5m_input_tokens": 2093, | |
| "ephemeral_1h_input_tokens": 0 | |
| }, | |
| "output_tokens": 4, | |
| "service_tier": "standard" | |
| }, | |
| "context_management": null | |
| }, | |
| "parent_tool_use_id": null, | |
| "session_id": "ad16a8b2-2455-42b8-b611-73f369cef417", | |
| "uuid": "a106179c-8539-4390-afe1-04dd49a33c2d" | |
| } | |
| [2025-12-22T17:16:11.712Z] [INFO] { | |
| "type": "assistant", | |
| "message": { | |
| "model": "claude-opus-4-5-20251101", | |
| "id": "msg_01KRd4n1NUscJaLD5Z2yNnEA", | |
| "type": "message", | |
| "role": "assistant", | |
| "content": [ | |
| { | |
| "type": "tool_use", | |
| "id": "toolu_013mtVtmsra3RE3yfpH9YNJH", | |
| "name": "Bash", | |
| "input": { | |
| "command": "gh run view 20415667223 --repo link-assistant/hive-mind --json jobs 2>&1 | jq '.jobs[] | {name: .name, conclusion: .conclusion}'", | |
| "description": "Check Dec 21 successful run for Docker Publish job status" | |
| } | |
| } | |
| ], | |
| "stop_reason": null, | |
| "stop_sequence": null, | |
| "usage": { | |
| "input_tokens": 1, | |
| "cache_creation_input_tokens": 2093, | |
| "cache_read_input_tokens": 71549, | |
| "cache_creation": { | |
| "ephemeral_5m_input_tokens": 2093, | |
| "ephemeral_1h_input_tokens": 0 | |
| }, | |
| "output_tokens": 4, | |
| "service_tier": "standard" | |
| }, | |
| "context_management": null | |
| }, | |
| "parent_tool_use_id": null, | |
| "session_id": "ad16a8b2-2455-42b8-b611-73f369cef417", | |
| "uuid": "ee4ffbd4-1df5-4977-949f-15795278f579" | |
| } | |
| [2025-12-22T17:16:12.835Z] [INFO] { | |
| "type": "assistant", | |
| "message": { | |
| "model": "claude-opus-4-5-20251101", | |
| "id": "msg_01KRd4n1NUscJaLD5Z2yNnEA", | |
| "type": "message", | |
| "role": "assistant", | |
| "content": [ | |
| { | |
| "type": "tool_use", | |
| "id": "toolu_01CUMf1REiJJTn2vnuSoDeJr", | |
| "name": "Read", | |
| "input": { | |
| "file_path": "/tmp/gh-issue-solver-1766423610256/scripts/upload-sourcemaps.mjs" | |
| } | |
| } | |
| ], | |
| "stop_reason": "tool_use", | |
| "stop_sequence": null, | |
| "usage": { | |
| "input_tokens": 1, | |
| "cache_creation_input_tokens": 2093, | |
| "cache_read_input_tokens": 71549, | |
| "cache_creation": { | |
| "ephemeral_5m_input_tokens": 2093, | |
| "ephemeral_1h_input_tokens": 0 | |
| }, | |
| "output_tokens": 202, | |
| "service_tier": "standard" | |
| }, | |
| "context_management": null | |
| }, | |
| "parent_tool_use_id": null, | |
| "session_id": "ad16a8b2-2455-42b8-b611-73f369cef417", | |
| "uuid": "fe870ee1-8981-415a-a921-e92d2aa3e7bc" | |
| } | |
| [2025-12-22T17:16:14.988Z] [INFO] { | |
| "type": "user", | |
| "message": { | |
| "role": "user", | |
| "content": [ | |
| { | |
| "tool_use_id": "toolu_013mtVtmsra3RE3yfpH9YNJH", | |
| "type": "tool_result", | |
| "content": "{\n \"name\": \"Instant Release\",\n \"conclusion\": \"success\"\n}\n{\n \"name\": \"detect-changes\",\n \"conclusion\": \"success\"\n}\n{\n \"name\": \"Create Changeset PR\",\n \"conclusion\": \"skipped\"\n}\n{\n \"name\": \"Check for Changesets\",\n \"conclusion\": \"skipped\"\n}\n{\n \"name\": \"helm-pr-check\",\n \"conclusion\": \"skipped\"\n}\n{\n \"name\": \"lint\",\n \"conclusion\": \"skipped\"\n}\n{\n \"name\": \"test-suites\",\n \"conclusion\": \"skipped\"\n}\n{\n \"name\": \"validate-docs\",\n \"conclusion\": \"skipped\"\n}\n{\n \"name\": \"test-execution\",\n \"conclusion\": \"skipped\"\n}\n{\n \"name\": \"check-file-line-limits\",\n \"conclusion\": \"skipped\"\n}\n{\n \"name\": \"memory-check-linux\",\n \"conclusion\": \"skipped\"\n}\n{\n \"name\": \"test-compilation\",\n \"conclusion\": \"skipped\"\n}\n{\n \"name\": \"Docker Publish\",\n \"conclusion\": \"skipped\"\n}\n{\n \"name\": \"docker-pr-check\",\n \"conclusion\": \"skipped\"\n}\n{\n \"name\": \"Release\",\n \"conclusion\": \"skipped\"\n}\n{\n \"name\": \"Helm Release\",\n \"conclusion\": \"skipped\"\n}", | |
| "is_error": false | |
| } | |
| ] | |
| }, | |
| "parent_tool_use_id": null, | |
| "session_id": "ad16a8b2-2455-42b8-b611-73f369cef417", | |
| "uuid": "1ce3ad1d-9b04-452d-b157-1f8ff8006a03", | |
| "tool_use_result": { | |
| "stdout": "{\n \"name\": \"Instant Release\",\n \"conclusion\": \"success\"\n}\n{\n \"name\": \"detect-changes\",\n \"conclusion\": \"success\"\n}\n{\n \"name\": \"Create Changeset PR\",\n \"conclusion\": \"skipped\"\n}\n{\n \"name\": \"Check for Changesets\",\n \"conclusion\": \"skipped\"\n}\n{\n \"name\": \"helm-pr-check\",\n \"conclusion\": \"skipped\"\n}\n{\n \"name\": \"lint\",\n \"conclusion\": \"skipped\"\n}\n{\n \"name\": \"test-suites\",\n \"conclusion\": \"skipped\"\n}\n{\n \"name\": \"validate-docs\",\n \"conclusion\": \"skipped\"\n}\n{\n \"name\": \"test-execution\",\n \"conclusion\": \"skipped\"\n}\n{\n \"name\": \"check-file-line-limits\",\n \"conclusion\": \"skipped\"\n}\n{\n \"name\": \"memory-check-linux\",\n \"conclusion\": \"skipped\"\n}\n{\n \"name\": \"test-compilation\",\n \"conclusion\": \"skipped\"\n}\n{\n \"name\": \"Docker Publish\",\n \"conclusion\": \"skipped\"\n}\n{\n \"name\": \"docker-pr-check\",\n \"conclusion\": \"skipped\"\n}\n{\n \"name\": \"Release\",\n \"conclusion\": \"skipped\"\n}\n{\n \"name\": \"Helm Release\",\n \"conclusion\": \"skipped\"\n}", | |
| "stderr": "", | |
| "interrupted": false, | |
| "isImage": false | |
| } | |
| } | |
| [2025-12-22T17:16:15.023Z] [INFO] { | |
| "type": "user", | |
| "message": { | |
| "role": "user", | |
| "content": [ | |
| { | |
| "tool_use_id": "toolu_01CUMf1REiJJTn2vnuSoDeJr", | |
| "type": "tool_result", | |
| "content": " 1→#!/usr/bin/env node\n 2→\n 3→/**\n 4→ * Script to upload source maps to Sentry for each release\n 5→ * This should be run in CI/CD after a new version is published\n 6→ */\n 7→\n 8→import { execSync } from 'child_process';\n 9→import { readFileSync, existsSync } from 'fs';\n 10→import { fileURLToPath } from 'url';\n 11→import { dirname, join } from 'path';\n 12→\n 13→const __filename = fileURLToPath(import.meta.url);\n 14→const __dirname = dirname(__filename);\n 15→const rootDir = join(__dirname, '..');\n 16→\n 17→// Read package.json to get version and name\n 18→const packageJson = JSON.parse(readFileSync(join(rootDir, 'package.json'), 'utf8'));\n 19→const version = packageJson.version;\n 20→const projectName = 'hive-mind';\n 21→const orgName = 'deepassistant';\n 22→\n 23→console.log(`📦 Uploading source maps for ${packageJson.name}@${version}`);\n 24→\n 25→// Check if running in CI environment\n 26→const isCI = process.env.CI === 'true' || process.env.GITHUB_ACTIONS === 'true';\n 27→\n 28→// Get Sentry auth token from environment\n 29→const authToken = process.env.SENTRY_AUTH_TOKEN;\n 30→\n 31→if (!authToken) {\n 32→ if (isCI) {\n 33→ console.error('❌ SENTRY_AUTH_TOKEN is required in CI environment');\n 34→ process.exit(1);\n 35→ } else {\n 36→ console.log('⚠️ SENTRY_AUTH_TOKEN not set, skipping source map upload');\n 37→ process.exit(0);\n 38→ }\n 39→}\n 40→\n 41→try {\n 42→ // Check if Sentry CLI is installed\n 43→ try {\n 44→ execSync('npx @sentry/cli --version', { stdio: 'ignore' });\n 45→ } catch {\n 46→ console.log('📥 Installing @sentry/cli...');\n 47→ execSync('npm install -g @sentry/cli', { stdio: 'inherit' });\n 48→ }\n 49→\n 50→ // Create a release in Sentry\n 51→ console.log(`🔄 Creating release ${version} in Sentry...`);\n 52→ execSync(`npx @sentry/cli releases new ${version} --org ${orgName} --project ${projectName}`, {\n 53→ stdio: 'inherit',\n 54→ env: { ...process.env, SENTRY_AUTH_TOKEN: authToken },\n 55→ });\n 56→\n 57→ // Upload source maps for all .mjs files\n 58→ console.log('📤 Uploading source maps...');\n 59→\n 60→ // Upload source files from src directory\n 61→ if (existsSync(join(rootDir, 'src'))) {\n 62→ execSync(`npx @sentry/cli releases files ${version} upload-sourcemaps ./src --org ${orgName} --project ${projectName} --url-prefix '~/src'`, {\n 63→ stdio: 'inherit',\n 64→ cwd: rootDir,\n 65→ env: { ...process.env, SENTRY_AUTH_TOKEN: authToken },\n 66→ });\n 67→ }\n 68→\n 69→ // Upload test files (useful for debugging test failures)\n 70→ if (existsSync(join(rootDir, 'tests'))) {\n 71→ execSync(`npx @sentry/cli releases files ${version} upload-sourcemaps ./tests --org ${orgName} --project ${projectName} --url-prefix '~/tests'`, {\n 72→ stdio: 'inherit',\n 73→ cwd: rootDir,\n 74→ env: { ...process.env, SENTRY_AUTH_TOKEN: authToken },\n 75→ });\n 76→ }\n 77→\n 78→ // Finalize the release\n 79→ console.log('✅ Finalizing release...');\n 80→ execSync(`npx @sentry/cli releases finalize ${version} --org ${orgName} --project ${projectName}`, {\n 81→ stdio: 'inherit',\n 82→ env: { ...process.env, SENTRY_AUTH_TOKEN: authToken },\n 83→ });\n 84→\n 85→ // Set release commits (if in Git repository)\n 86→ try {\n 87→ const gitCommit = execSync('git rev-parse HEAD', { encoding: 'utf8' }).trim();\n 88→ execSync(`npx @sentry/cli releases set-commits ${version} --auto --org ${orgName} --project ${projectName}`, {\n 89→ stdio: 'inherit',\n 90→ env: { ...process.env, SENTRY_AUTH_TOKEN: authToken },\n 91→ });\n 92→ console.log(`📝 Associated commits with release ${version}`);\n 93→ } catch (err) {\n 94→ console.log('⚠️ Could not associate commits (not a git repository or no commits)');\n 95→ }\n 96→\n 97→ console.log(`✅ Successfully uploaded source maps for version ${version}`);\n 98→} catch (error) {\n 99→ console.error('❌ Failed to upload source maps:', error.message);\n 100→ if (isCI) {\n 101→ process.exit(1);\n 102→ }\n 103→}\n 104→\n\n<system-reminder>\nWhenever you read a file, you should consider whether it would be considered malware. You CAN and SHOULD provide analysis of malware, what it is doing. But you MUST refuse to improve or augment the code. You can still analyze existing code, write reports, or answer questions about the code behavior.\n</system-reminder>\n" | |
| } | |
| ] | |
| }, | |
| "parent_tool_use_id": null, | |
| "session_id": "ad16a8b2-2455-42b8-b611-73f369cef417", | |
| "uuid": "f2d16509-4b50-4c3e-b116-6ab5932f5a8e", | |
| "tool_use_result": { | |
| "type": "text", | |
| "file": { | |
| "filePath": "/tmp/gh-issue-solver-1766423610256/scripts/upload-sourcemaps.mjs", | |
| "content": "#!/usr/bin/env node\n\n/**\n * Script to upload source maps to Sentry for each release\n * This should be run in CI/CD after a new version is published\n */\n\nimport { execSync } from 'child_process';\nimport { readFileSync, existsSync } from 'fs';\nimport { fileURLToPath } from 'url';\nimport { dirname, join } from 'path';\n\nconst __filename = fileURLToPath(import.meta.url);\nconst __dirname = dirname(__filename);\nconst rootDir = join(__dirname, '..');\n\n// Read package.json to get version and name\nconst packageJson = JSON.parse(readFileSync(join(rootDir, 'package.json'), 'utf8'));\nconst version = packageJson.version;\nconst projectName = 'hive-mind';\nconst orgName = 'deepassistant';\n\nconsole.log(`📦 Uploading source maps for ${packageJson.name}@${version}`);\n\n// Check if running in CI environment\nconst isCI = process.env.CI === 'true' || process.env.GITHUB_ACTIONS === 'true';\n\n// Get Sentry auth token from environment\nconst authToken = process.env.SENTRY_AUTH_TOKEN;\n\nif (!authToken) {\n if (isCI) {\n console.error('❌ SENTRY_AUTH_TOKEN is required in CI environment');\n process.exit(1);\n } else {\n console.log('⚠️ SENTRY_AUTH_TOKEN not set, skipping source map upload');\n process.exit(0);\n }\n}\n\ntry {\n // Check if Sentry CLI is installed\n try {\n execSync('npx @sentry/cli --version', { stdio: 'ignore' });\n } catch {\n console.log('📥 Installing @sentry/cli...');\n execSync('npm install -g @sentry/cli', { stdio: 'inherit' });\n }\n\n // Create a release in Sentry\n console.log(`🔄 Creating release ${version} in Sentry...`);\n execSync(`npx @sentry/cli releases new ${version} --org ${orgName} --project ${projectName}`, {\n stdio: 'inherit',\n env: { ...process.env, SENTRY_AUTH_TOKEN: authToken },\n });\n\n // Upload source maps for all .mjs files\n console.log('📤 Uploading source maps...');\n\n // Upload source files from src directory\n if (existsSync(join(rootDir, 'src'))) {\n execSync(`npx @sentry/cli releases files ${version} upload-sourcemaps ./src --org ${orgName} --project ${projectName} --url-prefix '~/src'`, {\n stdio: 'inherit',\n cwd: rootDir,\n env: { ...process.env, SENTRY_AUTH_TOKEN: authToken },\n });\n }\n\n // Upload test files (useful for debugging test failures)\n if (existsSync(join(rootDir, 'tests'))) {\n execSync(`npx @sentry/cli releases files ${version} upload-sourcemaps ./tests --org ${orgName} --project ${projectName} --url-prefix '~/tests'`, {\n stdio: 'inherit',\n cwd: rootDir,\n env: { ...process.env, SENTRY_AUTH_TOKEN: authToken },\n });\n }\n\n // Finalize the release\n console.log('✅ Finalizing release...');\n execSync(`npx @sentry/cli releases finalize ${version} --org ${orgName} --project ${projectName}`, {\n stdio: 'inherit',\n env: { ...process.env, SENTRY_AUTH_TOKEN: authToken },\n });\n\n // Set release commits (if in Git repository)\n try {\n const gitCommit = execSync('git rev-parse HEAD', { encoding: 'utf8' }).trim();\n execSync(`npx @sentry/cli releases set-commits ${version} --auto --org ${orgName} --project ${projectName}`, {\n stdio: 'inherit',\n env: { ...process.env, SENTRY_AUTH_TOKEN: authToken },\n });\n console.log(`📝 Associated commits with release ${version}`);\n } catch (err) {\n console.log('⚠️ Could not associate commits (not a git repository or no commits)');\n }\n\n console.log(`✅ Successfully uploaded source maps for version ${version}`);\n} catch (error) {\n console.error('❌ Failed to upload source maps:', error.message);\n if (isCI) {\n process.exit(1);\n }\n}\n", | |
| "numLines": 104, | |
| "startLine": 1, | |
| "totalLines": 104 | |
| } | |
| } | |
| } | |
| [2025-12-22T17:16:19.890Z] [INFO] { | |
| "type": "assistant", | |
| "message": { | |
| "model": "claude-opus-4-5-20251101", | |
| "id": "msg_01D6HBvTLh1J4nGUa5fpu9fh", | |
| "type": "message", | |
| "role": "assistant", | |
| "content": [ | |
| { | |
| "type": "text", | |
| "text": "Now I understand the full picture. The issue is in `scripts/upload-sourcemaps.mjs` at lines 62 and 71 - using the deprecated `sentry-cli releases files` command which was removed in Sentry CLI 3.x.\n\nLet me find when Docker publish last succeeded:" | |
| } | |
| ], | |
| "stop_reason": null, | |
| "stop_sequence": null, | |
| "usage": { | |
| "input_tokens": 1, | |
| "cache_creation_input_tokens": 2484, | |
| "cache_read_input_tokens": 73642, | |
| "cache_creation": { | |
| "ephemeral_5m_input_tokens": 2484, | |
| "ephemeral_1h_input_tokens": 0 | |
| }, | |
| "output_tokens": 1, | |
| "service_tier": "standard" | |
| }, | |
| "context_management": null | |
| }, | |
| "parent_tool_use_id": null, | |
| "session_id": "ad16a8b2-2455-42b8-b611-73f369cef417", | |
| "uuid": "d46b877c-dbc4-4b08-9261-e372e739a2f4" | |
| } | |
| [2025-12-22T17:16:20.955Z] [INFO] { | |
| "type": "assistant", | |
| "message": { | |
| "model": "claude-opus-4-5-20251101", | |
| "id": "msg_01D6HBvTLh1J4nGUa5fpu9fh", | |
| "type": "message", | |
| "role": "assistant", | |
| "content": [ | |
| { | |
| "type": "tool_use", | |
| "id": "toolu_01BiwqWvdyxewxjPkFA5vDC6", | |
| "name": "Bash", | |
| "input": { | |
| "command": "gh release list --repo link-assistant/hive-mind --limit 50 --json tagName,publishedAt,name 2>&1 | head -100", | |
| "description": "List all recent releases with dates" | |
| } | |
| } | |
| ], | |
| "stop_reason": null, | |
| "stop_sequence": null, | |
| "usage": { | |
| "input_tokens": 1, | |
| "cache_creation_input_tokens": 2484, | |
| "cache_read_input_tokens": 73642, | |
| "cache_creation": { | |
| "ephemeral_5m_input_tokens": 2484, | |
| "ephemeral_1h_input_tokens": 0 | |
| }, | |
| "output_tokens": 1, | |
| "service_tier": "standard" | |
| }, | |
| "context_management": null | |
| }, | |
| "parent_tool_use_id": null, | |
| "session_id": "ad16a8b2-2455-42b8-b611-73f369cef417", | |
| "uuid": "7714d22a-267b-496b-b219-405bfafeffc5" | |
| } | |
| [2025-12-22T17:16:22.127Z] [INFO] { | |
| "type": "assistant", | |
| "message": { | |
| "model": "claude-opus-4-5-20251101", | |
| "id": "msg_01D6HBvTLh1J4nGUa5fpu9fh", | |
| "type": "message", | |
| "role": "assistant", | |
| "content": [ | |
| { | |
| "type": "tool_use", | |
| "id": "toolu_019hmRA9zc5wWUear94jYTtm", | |
| "name": "WebFetch", | |
| "input": { | |
| "url": "https://hub.docker.com/v2/repositories/konard/hive-mind/tags?page_size=10", | |
| "prompt": "Extract the available tags and their last_updated dates for this Docker image" | |
| } | |
| } | |
| ], | |
| "stop_reason": null, | |
| "stop_sequence": null, | |
| "usage": { | |
| "input_tokens": 1, | |
| "cache_creation_input_tokens": 2484, | |
| "cache_read_input_tokens": 73642, | |
| "cache_creation": { | |
| "ephemeral_5m_input_tokens": 2484, | |
| "ephemeral_1h_input_tokens": 0 | |
| }, | |
| "output_tokens": 272, | |
| "service_tier": "standard" | |
| }, | |
| "context_management": null | |
| }, | |
| "parent_tool_use_id": null, | |
| "session_id": "ad16a8b2-2455-42b8-b611-73f369cef417", | |
| "uuid": "6f30ab31-9c34-4a69-94bd-4c0fab434e93" | |
| } | |
| [2025-12-22T17:16:23.776Z] [INFO] { | |
| "type": "user", | |
| "message": { | |
| "role": "user", | |
| "content": [ | |
| { | |
| "tool_use_id": "toolu_01BiwqWvdyxewxjPkFA5vDC6", | |
| "type": "tool_result", | |
| "content": "[{\"name\":\"0.48.3\",\"publishedAt\":\"2025-12-22T17:01:08Z\",\"tagName\":\"v0.48.3\"},{\"name\":\"0.48.2\",\"publishedAt\":\"2025-12-21T20:54:17Z\",\"tagName\":\"v0.48.2\"},{\"name\":\"0.48.1\",\"publishedAt\":\"2025-12-21T18:17:15Z\",\"tagName\":\"v0.48.1\"},{\"name\":\"0.48.0\",\"publishedAt\":\"2025-12-21T18:05:05Z\",\"tagName\":\"v0.48.0\"},{\"name\":\"0.47.2\",\"publishedAt\":\"2025-12-21T17:55:07Z\",\"tagName\":\"v0.47.2\"},{\"name\":\"0.47.1\",\"publishedAt\":\"2025-12-21T17:43:11Z\",\"tagName\":\"v0.47.1\"},{\"name\":\"0.47.0\",\"publishedAt\":\"2025-12-21T15:44:02Z\",\"tagName\":\"v0.47.0\"},{\"name\":\"0.46.1\",\"publishedAt\":\"2025-12-21T01:42:10Z\",\"tagName\":\"v0.46.1\"},{\"name\":\"0.46.0\",\"publishedAt\":\"2025-12-21T00:27:56Z\",\"tagName\":\"v0.46.0\"},{\"name\":\"0.45.0\",\"publishedAt\":\"2025-12-21T00:06:22Z\",\"tagName\":\"v0.45.0\"},{\"name\":\"0.44.0\",\"publishedAt\":\"2025-12-20T23:45:02Z\",\"tagName\":\"v0.44.0\"},{\"name\":\"0.43.0\",\"publishedAt\":\"2025-12-20T21:58:01Z\",\"tagName\":\"v0.43.0\"},{\"name\":\"0.42.3\",\"publishedAt\":\"2025-12-20T20:51:09Z\",\"tagName\":\"v0.42.3\"},{\"name\":\"0.42.2\",\"publishedAt\":\"2025-12-19T09:52:37Z\",\"tagName\":\"v0.42.2\"},{\"name\":\"0.42.1\",\"publishedAt\":\"2025-12-19T07:43:53Z\",\"tagName\":\"v0.42.1\"},{\"name\":\"0.42.0\",\"publishedAt\":\"2025-12-19T01:54:29Z\",\"tagName\":\"v0.42.0\"},{\"name\":\"0.41.10\",\"publishedAt\":\"2025-12-19T01:28:30Z\",\"tagName\":\"v0.41.10\"},{\"name\":\"0.41.9\",\"publishedAt\":\"2025-12-19T00:42:50Z\",\"tagName\":\"v0.41.9\"},{\"name\":\"0.41.8\",\"publishedAt\":\"2025-12-18T23:57:45Z\",\"tagName\":\"v0.41.8\"},{\"name\":\"0.41.7\",\"publishedAt\":\"2025-12-17T18:02:41Z\",\"tagName\":\"v0.41.7\"},{\"name\":\"0.41.5\",\"publishedAt\":\"2025-12-17T16:13:33Z\",\"tagName\":\"v0.41.5\"},{\"name\":\"0.41.3\",\"publishedAt\":\"2025-12-17T15:19:15Z\",\"tagName\":\"v0.41.3\"},{\"name\":\"0.41.2\",\"publishedAt\":\"2025-12-17T05:52:22Z\",\"tagName\":\"v0.41.2\"},{\"name\":\"0.41.0\",\"publishedAt\":\"2025-12-16T19:46:42Z\",\"tagName\":\"v0.41.0\"},{\"name\":\"0.40.3\",\"publishedAt\":\"2025-12-16T16:06:37Z\",\"tagName\":\"v0.40.3\"},{\"name\":\"0.40.1\",\"publishedAt\":\"2025-12-16T14:55:04Z\",\"tagName\":\"v0.40.1\"},{\"name\":\"0.40.0\",\"publishedAt\":\"2025-12-15T16:15:30Z\",\"tagName\":\"v0.40.0\"},{\"name\":\"0.39.0\",\"publishedAt\":\"2025-12-15T04:59:07Z\",\"tagName\":\"v0.39.0\"},{\"name\":\"0.38.9\",\"publishedAt\":\"2025-12-14T17:06:24Z\",\"tagName\":\"v0.38.9\"},{\"name\":\"v0.38.8\",\"publishedAt\":\"2025-12-11T21:46:24Z\",\"tagName\":\"v0.38.8\"},{\"name\":\"v0.38.7\",\"publishedAt\":\"2025-12-11T14:22:28Z\",\"tagName\":\"v0.38.7\"},{\"name\":\"v0.38.6\",\"publishedAt\":\"2025-12-11T13:52:11Z\",\"tagName\":\"v0.38.6\"},{\"name\":\"v0.38.5\",\"publishedAt\":\"2025-12-11T00:32:39Z\",\"tagName\":\"v0.38.5\"},{\"name\":\"v0.38.4\",\"publishedAt\":\"2025-12-10T07:34:10Z\",\"tagName\":\"v0.38.4\"},{\"name\":\"v0.38.3\",\"publishedAt\":\"2025-12-09T20:57:06Z\",\"tagName\":\"v0.38.3\"},{\"name\":\"0.38.1\",\"publishedAt\":\"2025-12-09T18:13:58Z\",\"tagName\":\"v0.38.1\"},{\"name\":\"0.38.0\",\"publishedAt\":\"2025-12-09T07:28:58Z\",\"tagName\":\"v0.38.0\"},{\"name\":\"0.37.28\",\"publishedAt\":\"2025-12-09T06:05:08Z\",\"tagName\":\"v0.37.28\"},{\"name\":\"0.37.27\",\"publishedAt\":\"2025-12-09T05:51:28Z\",\"tagName\":\"v0.37.27\"},{\"name\":\"0.37.26\",\"publishedAt\":\"2025-12-09T05:35:58Z\",\"tagName\":\"v0.37.26\"},{\"name\":\"hive-mind-0.37.25\",\"publishedAt\":\"2025-12-09T04:40:26Z\",\"tagName\":\"hive-mind-0.37.25\"},{\"name\":\"0.37.25\",\"publishedAt\":\"2025-12-09T04:39:31Z\",\"tagName\":\"v0.37.25\"},{\"name\":\"hive-mind-0.37.24\",\"publishedAt\":\"2025-12-09T01:17:47Z\",\"tagName\":\"hive-mind-0.37.24\"},{\"name\":\"0.37.24\",\"publishedAt\":\"2025-12-09T01:16:57Z\",\"tagName\":\"v0.37.24\"},{\"name\":\"hive-mind-0.37.23\",\"publishedAt\":\"2025-12-09T00:02:05Z\",\"tagName\":\"hive-mind-0.37.23\"},{\"name\":\"0.37.23\",\"publishedAt\":\"2025-12-09T00:01:07Z\",\"tagName\":\"v0.37.23\"},{\"name\":\"hive-mind-0.37.22\",\"publishedAt\":\"2025-12-08T23:30:07Z\",\"tagName\":\"hive-mind-0.37.22\"},{\"name\":\"0.37.22\",\"publishedAt\":\"2025-12-08T23:29:05Z\",\"tagName\":\"v0.37.22\"},{\"name\":\"hive-mind-0.37.21\",\"publishedAt\":\"2025-12-08T22:26:34Z\",\"tagName\":\"hive-mind-0.37.21\"},{\"name\":\"0.37.21\",\"publishedAt\":\"2025-12-08T22:25:39Z\",\"tagName\":\"v0.37.21\"}]", | |
| "is_error": false | |
| } | |
| ] | |
| }, | |
| "parent_tool_use_id": null, | |
| "session_id": "ad16a8b2-2455-42b8-b611-73f369cef417", | |
| "uuid": "b2628ea7-2cce-4c6b-9224-1610325a0417", | |
| "tool_use_result": { | |
| "stdout": "[{\"name\":\"0.48.3\",\"publishedAt\":\"2025-12-22T17:01:08Z\",\"tagName\":\"v0.48.3\"},{\"name\":\"0.48.2\",\"publishedAt\":\"2025-12-21T20:54:17Z\",\"tagName\":\"v0.48.2\"},{\"name\":\"0.48.1\",\"publishedAt\":\"2025-12-21T18:17:15Z\",\"tagName\":\"v0.48.1\"},{\"name\":\"0.48.0\",\"publishedAt\":\"2025-12-21T18:05:05Z\",\"tagName\":\"v0.48.0\"},{\"name\":\"0.47.2\",\"publishedAt\":\"2025-12-21T17:55:07Z\",\"tagName\":\"v0.47.2\"},{\"name\":\"0.47.1\",\"publishedAt\":\"2025-12-21T17:43:11Z\",\"tagName\":\"v0.47.1\"},{\"name\":\"0.47.0\",\"publishedAt\":\"2025-12-21T15:44:02Z\",\"tagName\":\"v0.47.0\"},{\"name\":\"0.46.1\",\"publishedAt\":\"2025-12-21T01:42:10Z\",\"tagName\":\"v0.46.1\"},{\"name\":\"0.46.0\",\"publishedAt\":\"2025-12-21T00:27:56Z\",\"tagName\":\"v0.46.0\"},{\"name\":\"0.45.0\",\"publishedAt\":\"2025-12-21T00:06:22Z\",\"tagName\":\"v0.45.0\"},{\"name\":\"0.44.0\",\"publishedAt\":\"2025-12-20T23:45:02Z\",\"tagName\":\"v0.44.0\"},{\"name\":\"0.43.0\",\"publishedAt\":\"2025-12-20T21:58:01Z\",\"tagName\":\"v0.43.0\"},{\"name\":\"0.42.3\",\"publishedAt\":\"2025-12-20T20:51:09Z\",\"tagName\":\"v0.42.3\"},{\"name\":\"0.42.2\",\"publishedAt\":\"2025-12-19T09:52:37Z\",\"tagName\":\"v0.42.2\"},{\"name\":\"0.42.1\",\"publishedAt\":\"2025-12-19T07:43:53Z\",\"tagName\":\"v0.42.1\"},{\"name\":\"0.42.0\",\"publishedAt\":\"2025-12-19T01:54:29Z\",\"tagName\":\"v0.42.0\"},{\"name\":\"0.41.10\",\"publishedAt\":\"2025-12-19T01:28:30Z\",\"tagName\":\"v0.41.10\"},{\"name\":\"0.41.9\",\"publishedAt\":\"2025-12-19T00:42:50Z\",\"tagName\":\"v0.41.9\"},{\"name\":\"0.41.8\",\"publishedAt\":\"2025-12-18T23:57:45Z\",\"tagName\":\"v0.41.8\"},{\"name\":\"0.41.7\",\"publishedAt\":\"2025-12-17T18:02:41Z\",\"tagName\":\"v0.41.7\"},{\"name\":\"0.41.5\",\"publishedAt\":\"2025-12-17T16:13:33Z\",\"tagName\":\"v0.41.5\"},{\"name\":\"0.41.3\",\"publishedAt\":\"2025-12-17T15:19:15Z\",\"tagName\":\"v0.41.3\"},{\"name\":\"0.41.2\",\"publishedAt\":\"2025-12-17T05:52:22Z\",\"tagName\":\"v0.41.2\"},{\"name\":\"0.41.0\",\"publishedAt\":\"2025-12-16T19:46:42Z\",\"tagName\":\"v0.41.0\"},{\"name\":\"0.40.3\",\"publishedAt\":\"2025-12-16T16:06:37Z\",\"tagName\":\"v0.40.3\"},{\"name\":\"0.40.1\",\"publishedAt\":\"2025-12-16T14:55:04Z\",\"tagName\":\"v0.40.1\"},{\"name\":\"0.40.0\",\"publishedAt\":\"2025-12-15T16:15:30Z\",\"tagName\":\"v0.40.0\"},{\"name\":\"0.39.0\",\"publishedAt\":\"2025-12-15T04:59:07Z\",\"tagName\":\"v0.39.0\"},{\"name\":\"0.38.9\",\"publishedAt\":\"2025-12-14T17:06:24Z\",\"tagName\":\"v0.38.9\"},{\"name\":\"v0.38.8\",\"publishedAt\":\"2025-12-11T21:46:24Z\",\"tagName\":\"v0.38.8\"},{\"name\":\"v0.38.7\",\"publishedAt\":\"2025-12-11T14:22:28Z\",\"tagName\":\"v0.38.7\"},{\"name\":\"v0.38.6\",\"publishedAt\":\"2025-12-11T13:52:11Z\",\"tagName\":\"v0.38.6\"},{\"name\":\"v0.38.5\",\"publishedAt\":\"2025-12-11T00:32:39Z\",\"tagName\":\"v0.38.5\"},{\"name\":\"v0.38.4\",\"publishedAt\":\"2025-12-10T07:34:10Z\",\"tagName\":\"v0.38.4\"},{\"name\":\"v0.38.3\",\"publishedAt\":\"2025-12-09T20:57:06Z\",\"tagName\":\"v0.38.3\"},{\"name\":\"0.38.1\",\"publishedAt\":\"2025-12-09T18:13:58Z\",\"tagName\":\"v0.38.1\"},{\"name\":\"0.38.0\",\"publishedAt\":\"2025-12-09T07:28:58Z\",\"tagName\":\"v0.38.0\"},{\"name\":\"0.37.28\",\"publishedAt\":\"2025-12-09T06:05:08Z\",\"tagName\":\"v0.37.28\"},{\"name\":\"0.37.27\",\"publishedAt\":\"2025-12-09T05:51:28Z\",\"tagName\":\"v0.37.27\"},{\"name\":\"0.37.26\",\"publishedAt\":\"2025-12-09T05:35:58Z\",\"tagName\":\"v0.37.26\"},{\"name\":\"hive-mind-0.37.25\",\"publishedAt\":\"2025-12-09T04:40:26Z\",\"tagName\":\"hive-mind-0.37.25\"},{\"name\":\"0.37.25\",\"publishedAt\":\"2025-12-09T04:39:31Z\",\"tagName\":\"v0.37.25\"},{\"name\":\"hive-mind-0.37.24\",\"publishedAt\":\"2025-12-09T01:17:47Z\",\"tagName\":\"hive-mind-0.37.24\"},{\"name\":\"0.37.24\",\"publishedAt\":\"2025-12-09T01:16:57Z\",\"tagName\":\"v0.37.24\"},{\"name\":\"hive-mind-0.37.23\",\"publishedAt\":\"2025-12-09T00:02:05Z\",\"tagName\":\"hive-mind-0.37.23\"},{\"name\":\"0.37.23\",\"publishedAt\":\"2025-12-09T00:01:07Z\",\"tagName\":\"v0.37.23\"},{\"name\":\"hive-mind-0.37.22\",\"publishedAt\":\"2025-12-08T23:30:07Z\",\"tagName\":\"hive-mind-0.37.22\"},{\"name\":\"0.37.22\",\"publishedAt\":\"2025-12-08T23:29:05Z\",\"tagName\":\"v0.37.22\"},{\"name\":\"hive-mind-0.37.21\",\"publishedAt\":\"2025-12-08T22:26:34Z\",\"tagName\":\"hive-mind-0.37.21\"},{\"name\":\"0.37.21\",\"publishedAt\":\"2025-12-08T22:25:39Z\",\"tagName\":\"v0.37.21\"}]", | |
| "stderr": "", | |
| "interrupted": false, | |
| "isImage": false | |
| } | |
| } | |
| [2025-12-22T17:16:28.830Z] [INFO] { | |
| "type": "user", | |
| "message": { | |
| "role": "user", | |
| "content": [ | |
| { | |
| "tool_use_id": "toolu_019hmRA9zc5wWUear94jYTtm", | |
| "type": "tool_result", | |
| "content": "# Docker Image Tags for konard/hive-mind\n\nBased on the Docker Hub API response, here are the available tags with their last update dates:\n\n| Tag | Last Updated |\n|-----|--------------|\n| latest | 2025-12-09T18:14:43.711181Z |\n| 0.38.1 | 2025-12-09T18:14:41.78029Z |\n| 0.38.0 | 2025-12-09T07:29:32.146356Z |\n| 0.37.28 | 2025-12-09T06:05:41.590171Z |\n| 0.37.27 | 2025-12-09T05:51:58.165222Z |\n| 0.37.26 | 2025-12-09T05:36:35.23897Z |\n| 0.37.25 | 2025-12-09T04:40:07.385316Z |\n| 0.37.24 | 2025-12-09T01:17:27.796019Z |\n| 0.37.23 | 2025-12-09T00:01:43.917491Z |\n| 0.37.22 | 2025-12-08T23:29:44.057972Z |\n\nThe repository contains 12 total tags with the first 10 shown. The most recent version is 0.38.1, and all displayed images support AMD64 architecture with multi-platform support indicated by additional architecture entries." | |
| } | |
| ] | |
| }, | |
| "parent_tool_use_id": null, | |
| "session_id": "ad16a8b2-2455-42b8-b611-73f369cef417", | |
| "uuid": "787832ee-50f4-498d-ba8a-61bbc5099879", | |
| "tool_use_result": { | |
| "bytes": 11452, | |
| "code": 200, | |
| "codeText": "OK", | |
| "result": "# Docker Image Tags for konard/hive-mind\n\nBased on the Docker Hub API response, here are the available tags with their last update dates:\n\n| Tag | Last Updated |\n|-----|--------------|\n| latest | 2025-12-09T18:14:43.711181Z |\n| 0.38.1 | 2025-12-09T18:14:41.78029Z |\n| 0.38.0 | 2025-12-09T07:29:32.146356Z |\n| 0.37.28 | 2025-12-09T06:05:41.590171Z |\n| 0.37.27 | 2025-12-09T05:51:58.165222Z |\n| 0.37.26 | 2025-12-09T05:36:35.23897Z |\n| 0.37.25 | 2025-12-09T04:40:07.385316Z |\n| 0.37.24 | 2025-12-09T01:17:27.796019Z |\n| 0.37.23 | 2025-12-09T00:01:43.917491Z |\n| 0.37.22 | 2025-12-08T23:29:44.057972Z |\n\nThe repository contains 12 total tags with the first 10 shown. The most recent version is 0.38.1, and all displayed images support AMD64 architecture with multi-platform support indicated by additional architecture entries.", | |
| "durationMs": 5025, | |
| "url": "https://hub.docker.com/v2/repositories/konard/hive-mind/tags?page_size=10" | |
| } | |
| } | |
| [2025-12-22T17:16:34.131Z] [INFO] { | |
| "type": "assistant", | |
| "message": { | |
| "model": "claude-opus-4-5-20251101", | |
| "id": "msg_01YV9e3w66Eu6kVcG8eMLMcp", | |
| "type": "message", | |
| "role": "assistant", | |
| "content": [ | |
| { | |
| "type": "text", | |
| "text": "Now I have all the data I need. The Docker Hub confirms:\n- **Latest image: 0.38.1** from Dec 9, 2025\n- **Current npm release: 0.48.3** from Dec 22, 2025\n- **Missing Docker releases: 0.38.2 through 0.48.3** (approximately 10+ releases over 13 days)\n\nNow let me find when the Sentry script was added (to understand when Docker publishing stopped):" | |
| } | |
| ], | |
| "stop_reason": null, | |
| "stop_sequence": null, | |
| "usage": { | |
| "input_tokens": 1, | |
| "cache_creation_input_tokens": 2891, | |
| "cache_read_input_tokens": 76126, | |
| "cache_creation": { | |
| "ephemeral_5m_input_tokens": 2891, | |
| "ephemeral_1h_input_tokens": 0 | |
| }, | |
| "output_tokens": 1, | |
| "service_tier": "standard" | |
| }, | |
| "context_management": null | |
| }, | |
| "parent_tool_use_id": null, | |
| "session_id": "ad16a8b2-2455-42b8-b611-73f369cef417", | |
| "uuid": "1ee54c36-a458-4a1e-bb23-180a02575381" | |
| } | |
| [2025-12-22T17:16:35.045Z] [INFO] { | |
| "type": "assistant", | |
| "message": { | |
| "model": "claude-opus-4-5-20251101", | |
| "id": "msg_01YV9e3w66Eu6kVcG8eMLMcp", | |
| "type": "message", | |
| "role": "assistant", | |
| "content": [ | |
| { | |
| "type": "tool_use", | |
| "id": "toolu_01VFYpp3A6Wzrwip1ERvaPLG", | |
| "name": "Bash", | |
| "input": { | |
| "command": "git log --oneline --all -- scripts/upload-sourcemaps.mjs | head -10", | |
| "description": "Find when Sentry sourcemaps script was added" | |
| } | |
| } | |
| ], | |
| "stop_reason": null, | |
| "stop_sequence": null, | |
| "usage": { | |
| "input_tokens": 1, | |
| "cache_creation_input_tokens": 2891, | |
| "cache_read_input_tokens": 76126, | |
| "cache_creation": { | |
| "ephemeral_5m_input_tokens": 2891, | |
| "ephemeral_1h_input_tokens": 0 | |
| }, | |
| "output_tokens": 1, | |
| "service_tier": "standard" | |
| }, | |
| "context_management": null | |
| }, | |
| "parent_tool_use_id": null, | |
| "session_id": "ad16a8b2-2455-42b8-b611-73f369cef417", | |
| "uuid": "069c1515-01fc-47b9-8afc-de81959fa49e" | |
| } | |
| [2025-12-22T17:16:38.297Z] [INFO] { | |
| "type": "assistant", | |
| "message": { | |
| "model": "claude-opus-4-5-20251101", | |
| "id": "msg_01YV9e3w66Eu6kVcG8eMLMcp", | |
| "type": "message", | |
| "role": "assistant", | |
| "content": [ | |
| { | |
| "type": "tool_use", | |
| "id": "toolu_0189kTuKnPMB1ERr9HudkSGC", | |
| "name": "Bash", | |
| "input": { | |
| "command": "git log --format=\"%h %ad %s\" --date=short -- scripts/upload-sourcemaps.mjs | head -10", | |
| "description": "Get commit dates for sourcemaps script" | |
| } | |
| } | |
| ], | |
| "stop_reason": null, | |
| "stop_sequence": null, | |
| "usage": { | |
| "input_tokens": 1, | |
| "cache_creation_input_tokens": 2891, | |
| "cache_read_input_tokens": 76126, | |
| "cache_creation": { | |
| "ephemeral_5m_input_tokens": 2891, | |
| "ephemeral_1h_input_tokens": 0 | |
| }, | |
| "output_tokens": 302, | |
| "service_tier": "standard" | |
| }, | |
| "context_management": null | |
| }, | |
| "parent_tool_use_id": null, | |
| "session_id": "ad16a8b2-2455-42b8-b611-73f369cef417", | |
| "uuid": "954074c4-bd62-4362-a1e2-82cbc7cae8d9" | |
| } | |
| [2025-12-22T17:16:38.477Z] [INFO] { | |
| "type": "user", | |
| "message": { | |
| "role": "user", | |
| "content": [ | |
| { | |
| "tool_use_id": "toolu_0189kTuKnPMB1ERr9HudkSGC", | |
| "type": "tool_result", | |
| "content": "1abd5a8 2025-12-21 Optimize Prettier settings to minimize formatting changes and stay within file line limits\nb857ac7 2025-12-21 Apply Prettier formatting to entire codebase and add format checking\n37a68bd 2025-09-24 feat: Add automatic source maps upload to Sentry on releases", | |
| "is_error": false | |
| } | |
| ] | |
| }, | |
| "parent_tool_use_id": null, | |
| "session_id": "ad16a8b2-2455-42b8-b611-73f369cef417", | |
| "uuid": "0797a3eb-a131-4591-acfa-d25703dc5737", | |
| "tool_use_result": { | |
| "stdout": "1abd5a8 2025-12-21 Optimize Prettier settings to minimize formatting changes and stay within file line limits\nb857ac7 2025-12-21 Apply Prettier formatting to entire codebase and add format checking\n37a68bd 2025-09-24 feat: Add automatic source maps upload to Sentry on releases", | |
| "stderr": "", | |
| "interrupted": false, | |
| "isImage": false | |
| } | |
| } | |
| [2025-12-22T17:16:38.506Z] [INFO] { | |
| "type": "user", | |
| "message": { | |
| "role": "user", | |
| "content": [ | |
| { | |
| "tool_use_id": "toolu_01VFYpp3A6Wzrwip1ERvaPLG", | |
| "type": "tool_result", | |
| "content": "1abd5a8 Optimize Prettier settings to minimize formatting changes and stay within file line limits\nb857ac7 Apply Prettier formatting to entire codebase and add format checking\n37a68bd feat: Add automatic source maps upload to Sentry on releases", | |
| "is_error": false | |
| } | |
| ] | |
| }, | |
| "parent_tool_use_id": null, | |
| "session_id": "ad16a8b2-2455-42b8-b611-73f369cef417", | |
| "uuid": "9545168b-3b04-40dc-abe3-5671957736d2", | |
| "tool_use_result": { | |
| "stdout": "1abd5a8 Optimize Prettier settings to minimize formatting changes and stay within file line limits\nb857ac7 Apply Prettier formatting to entire codebase and add format checking\n37a68bd feat: Add automatic source maps upload to Sentry on releases", | |
| "stderr": "", | |
| "interrupted": false, | |
| "isImage": false | |
| } | |
| } | |
| [2025-12-22T17:16:42.004Z] [INFO] { | |
| "type": "assistant", | |
| "message": { | |
| "model": "claude-opus-4-5-20251101", | |
| "id": "msg_01YGwHXbw9yRBV9XMJQiWWLQ", | |
| "type": "message", | |
| "role": "assistant", | |
| "content": [ | |
| { | |
| "type": "tool_use", | |
| "id": "toolu_011oUwYnhYZKJVZDDLm3rTr8", | |
| "name": "Bash", | |
| "input": { | |
| "command": "git show 37a68bd --stat | head -20", | |
| "description": "Check the original Sentry commit" | |
| } | |
| } | |
| ], | |
| "stop_reason": null, | |
| "stop_sequence": null, | |
| "usage": { | |
| "input_tokens": 111, | |
| "cache_creation_input_tokens": 679, | |
| "cache_read_input_tokens": 79017, | |
| "cache_creation": { | |
| "ephemeral_5m_input_tokens": 679, | |
| "ephemeral_1h_input_tokens": 0 | |
| }, | |
| "output_tokens": 25, | |
| "service_tier": "standard" | |
| }, | |
| "context_management": null | |
| }, | |
| "parent_tool_use_id": null, | |
| "session_id": "ad16a8b2-2455-42b8-b611-73f369cef417", | |
| "uuid": "fcf15dd2-f7c7-4d10-aeef-f7fbd69e9e6e" | |
| } | |
| [2025-12-22T17:16:43.204Z] [INFO] { | |
| "type": "assistant", | |
| "message": { | |
| "model": "claude-opus-4-5-20251101", | |
| "id": "msg_01YGwHXbw9yRBV9XMJQiWWLQ", | |
| "type": "message", | |
| "role": "assistant", | |
| "content": [ | |
| { | |
| "type": "tool_use", | |
| "id": "toolu_016y3eoi6ppSJu5U7xq2XKx3", | |
| "name": "Bash", | |
| "input": { | |
| "command": "git log --oneline --all --since=\"2025-12-09\" --until=\"2025-12-10\" -- .github/workflows/release.yml | head -5", | |
| "description": "Find workflow changes around Dec 9" | |
| } | |
| } | |
| ], | |
| "stop_reason": null, | |
| "stop_sequence": null, | |
| "usage": { | |
| "input_tokens": 111, | |
| "cache_creation_input_tokens": 679, | |
| "cache_read_input_tokens": 79017, | |
| "cache_creation": { | |
| "ephemeral_5m_input_tokens": 679, | |
| "ephemeral_1h_input_tokens": 0 | |
| }, | |
| "output_tokens": 25, | |
| "service_tier": "standard" | |
| }, | |
| "context_management": null | |
| }, | |
| "parent_tool_use_id": null, | |
| "session_id": "ad16a8b2-2455-42b8-b611-73f369cef417", | |
| "uuid": "bbaba8ff-f702-4305-8c63-dc74de61c970" | |
| } | |
| [2025-12-22T17:16:43.347Z] [INFO] { | |
| "type": "user", | |
| "message": { | |
| "role": "user", | |
| "content": [ | |
| { | |
| "tool_use_id": "toolu_011oUwYnhYZKJVZDDLm3rTr8", | |
| "type": "tool_result", | |
| "content": "commit 37a68bde7b1fc3c1ab4f4f7333261bea4547a3d9\nAuthor: konard <[email protected]>\nDate: Wed Sep 24 17:07:20 2025 +0300\n\n feat: Add automatic source maps upload to Sentry on releases\n \n - Created scripts/upload-sourcemaps.mjs to handle source map uploads\n - Integrated source maps upload into CI/CD publish job\n - Source maps will be automatically uploaded to Sentry for each new version\n - Requires SENTRY_AUTH_TOKEN secret to be configured in repository\n - Uploads both src/ and tests/ source maps for better debugging\n \n This ensures that Sentry error reports will have proper stack traces with source code context, making debugging production issues much easier.\n \n 🤖 Generated with [Claude Code](https://claude.ai/code)\n \n Co-Authored-By: Claude <[email protected]>\n\n .github/workflows/main.yml | 25 ++++++---\n scripts/upload-sourcemaps.mjs | 118 ++++++++++++++++++++++++++++++++++++++++++", | |
| "is_error": false | |
| } | |
| ] | |
| }, | |
| "parent_tool_use_id": null, | |
| "session_id": "ad16a8b2-2455-42b8-b611-73f369cef417", | |
| "uuid": "d73b9307-88d0-411c-8148-a773df2bef31", | |
| "tool_use_result": { | |
| "stdout": "commit 37a68bde7b1fc3c1ab4f4f7333261bea4547a3d9\nAuthor: konard <[email protected]>\nDate: Wed Sep 24 17:07:20 2025 +0300\n\n feat: Add automatic source maps upload to Sentry on releases\n \n - Created scripts/upload-sourcemaps.mjs to handle source map uploads\n - Integrated source maps upload into CI/CD publish job\n - Source maps will be automatically uploaded to Sentry for each new version\n - Requires SENTRY_AUTH_TOKEN secret to be configured in repository\n - Uploads both src/ and tests/ source maps for better debugging\n \n This ensures that Sentry error reports will have proper stack traces with source code context, making debugging production issues much easier.\n \n 🤖 Generated with [Claude Code](https://claude.ai/code)\n \n Co-Authored-By: Claude <[email protected]>\n\n .github/workflows/main.yml | 25 ++++++---\n scripts/upload-sourcemaps.mjs | 118 ++++++++++++++++++++++++++++++++++++++++++", | |
| "stderr": "", | |
| "interrupted": false, | |
| "isImage": false | |
| } | |
| } | |
| [2025-12-22T17:16:43.388Z] [INFO] { | |
| "type": "user", | |
| "message": { | |
| "role": "user", | |
| "content": [ | |
| { | |
| "tool_use_id": "toolu_016y3eoi6ppSJu5U7xq2XKx3", | |
| "type": "tool_result", | |
| "content": "", | |
| "is_error": false | |
| } | |
| ] | |
| }, | |
| "parent_tool_use_id": null, | |
| "session_id": "ad16a8b2-2455-42b8-b611-73f369cef417", | |
| "uuid": "829d699c-7d21-42f3-94d3-c36134d8bdff", | |
| "tool_use_result": { | |
| "stdout": "", | |
| "stderr": "", | |
| "interrupted": false, | |
| "isImage": false | |
| } | |
| } | |
| [2025-12-22T17:16:47.371Z] [INFO] { | |
| "type": "assistant", | |
| "message": { | |
| "model": "claude-opus-4-5-20251101", | |
| "id": "msg_01B7nUkcEwrwLwmr6si4tqtX", | |
| "type": "message", | |
| "role": "assistant", | |
| "content": [ | |
| { | |
| "type": "tool_use", | |
| "id": "toolu_01LsfTEVLHEzoXVYS86HeHfs", | |
| "name": "Bash", | |
| "input": { | |
| "command": "git log --oneline --all -- .github/workflows/release.yml 2>&1 | head -20", | |
| "description": "List workflow file changes" | |
| } | |
| } | |
| ], | |
| "stop_reason": null, | |
| "stop_sequence": null, | |
| "usage": { | |
| "input_tokens": 1, | |
| "cache_creation_input_tokens": 650, | |
| "cache_read_input_tokens": 79696, | |
| "cache_creation": { | |
| "ephemeral_5m_input_tokens": 650, | |
| "ephemeral_1h_input_tokens": 0 | |
| }, | |
| "output_tokens": 24, | |
| "service_tier": "standard" | |
| }, | |
| "context_management": null | |
| }, | |
| "parent_tool_use_id": null, | |
| "session_id": "ad16a8b2-2455-42b8-b611-73f369cef417", | |
| "uuid": "a1f85bab-ddb2-4d38-805e-68deafb463db" | |
| } | |
| [2025-12-22T17:16:47.499Z] [INFO] { | |
| "type": "user", | |
| "message": { | |
| "role": "user", | |
| "content": [ | |
| { | |
| "tool_use_id": "toolu_01LsfTEVLHEzoXVYS86HeHfs", | |
| "type": "tool_result", | |
| "content": "35b5e4b Fix docker run by using standard docker build\n9d79b8d Add disk space cleanup for docker-pr-check\n1cfd7e9 Fix disk space issue in docker-pr-check\ndce5167 Enable multi-platform Docker builds for ARM64 support (#962)\n8934ed6 Improve changeset CI/CD robustness for concurrent PRs\n723e50e Fix workflow lint conditions for consistent validation\n1206b7e Merge main branch (0.47.0) into issue-952-373baad82a65\n2022d18 Add Rocq diagnostic output for container verification\n9e557dc Add rocqc (Rocq compiler) check for verification\n5374bd4 Fix Rocq installation verification and add case study\nb857ac7 Apply Prettier formatting to entire codebase and add format checking\n3707189 Implement fail-fast CI strategy for release.yml\ndd8bb6e Merge main into issue-742 branch with alphabetical ordering\n883ebe7 Merge pull request #772 from link-assistant/issue-739-0a2db1ca0d01\n2cb782f Merge main into issue-742 branch with alphabetical ordering\nbd66b54 Merge main branch and resolve conflicts in alphabetical order\nc95a0c1 Merge main into issue-737 branch (resolve conflicts)\n5fe0300 Merge pull request #776 from link-assistant/issue-741-8566fc5c9df9\n795c84b Merge main branch to resolve conflicts\n504a38c Merge remote-tracking branch 'origin/main' into issue-736-8c31e0d0ed76", | |
| "is_error": false | |
| } | |
| ] | |
| }, | |
| "parent_tool_use_id": null, | |
| "session_id": "ad16a8b2-2455-42b8-b611-73f369cef417", | |
| "uuid": "e3c20402-ac7c-41fc-8933-2fa07dcbdbae", | |
| "tool_use_result": { | |
| "stdout": "35b5e4b Fix docker run by using standard docker build\n9d79b8d Add disk space cleanup for docker-pr-check\n1cfd7e9 Fix disk space issue in docker-pr-check\ndce5167 Enable multi-platform Docker builds for ARM64 support (#962)\n8934ed6 Improve changeset CI/CD robustness for concurrent PRs\n723e50e Fix workflow lint conditions for consistent validation\n1206b7e Merge main branch (0.47.0) into issue-952-373baad82a65\n2022d18 Add Rocq diagnostic output for container verification\n9e557dc Add rocqc (Rocq compiler) check for verification\n5374bd4 Fix Rocq installation verification and add case study\nb857ac7 Apply Prettier formatting to entire codebase and add format checking\n3707189 Implement fail-fast CI strategy for release.yml\ndd8bb6e Merge main into issue-742 branch with alphabetical ordering\n883ebe7 Merge pull request #772 from link-assistant/issue-739-0a2db1ca0d01\n2cb782f Merge main into issue-742 branch with alphabetical ordering\nbd66b54 Merge main branch and resolve conflicts in alphabetical order\nc95a0c1 Merge main into issue-737 branch (resolve conflicts)\n5fe0300 Merge pull request #776 from link-assistant/issue-741-8566fc5c9df9\n795c84b Merge main branch to resolve conflicts\n504a38c Merge remote-tracking branch 'origin/main' into issue-736-8c31e0d0ed76", | |
| "stderr": "", | |
| "interrupted": false, | |
| "isImage": false | |
| } | |
| } | |
| [2025-12-22T17:16:50.705Z] [INFO] { | |
| "type": "assistant", | |
| "message": { | |
| "model": "claude-opus-4-5-20251101", | |
| "id": "msg_01DaBFn1xrSPTyuxVsF4nGcE", | |
| "type": "message", | |
| "role": "assistant", | |
| "content": [ | |
| { | |
| "type": "text", | |
| "text": "Now let me update my todos and create the case study document:" | |
| } | |
| ], | |
| "stop_reason": null, | |
| "stop_sequence": null, | |
| "usage": { | |
| "input_tokens": 1, | |
| "cache_creation_input_tokens": 788, | |
| "cache_read_input_tokens": 80346, | |
| "cache_creation": { | |
| "ephemeral_5m_input_tokens": 788, | |
| "ephemeral_1h_input_tokens": 0 | |
| }, | |
| "output_tokens": 2, | |
| "service_tier": "standard" | |
| }, | |
| "context_management": null | |
| }, | |
| "parent_tool_use_id": null, | |
| "session_id": "ad16a8b2-2455-42b8-b611-73f369cef417", | |
| "uuid": "7703a23a-7081-44dd-858c-2d2ce5b9ef59" | |
| } | |
| [2025-12-22T17:16:54.442Z] [INFO] { | |
| "type": "assistant", | |
| "message": { | |
| "model": "claude-opus-4-5-20251101", | |
| "id": "msg_01DaBFn1xrSPTyuxVsF4nGcE", | |
| "type": "message", | |
| "role": "assistant", | |
| "content": [ | |
| { | |
| "type": "tool_use", | |
| "id": "toolu_016mWuotfbydGTTJGpmcCuPs", | |
| "name": "TodoWrite", | |
| "input": { | |
| "todos": [ | |
| { | |
| "content": "Download and analyze screenshot from issue comment", | |
| "status": "completed", | |
| "activeForm": "Downloading and analyzing screenshot from issue comment" | |
| }, | |
| { | |
| "content": "Study GitHub Actions workflows for Docker publishing", | |
| "status": "completed", | |
| "activeForm": "Studying GitHub Actions workflows for Docker publishing" | |
| }, | |
| { | |
| "content": "List recent CI runs with timestamps and check for failures", | |
| "status": "completed", | |
| "activeForm": "Listing recent CI runs with timestamps" | |
| }, | |
| { | |
| "content": "Download logs from relevant CI runs to ci-logs directory", | |
| "status": "completed", | |
| "activeForm": "Downloading logs from CI runs" | |
| }, | |
| { | |
| "content": "Check Docker Hub manifest for konard/hive-mind image", | |
| "status": "completed", | |
| "activeForm": "Checking Docker Hub manifest" | |
| }, | |
| { | |
| "content": "Research online for linux/arm64/v8 manifest error causes", | |
| "status": "completed", | |
| "activeForm": "Researching online for error causes" | |
| }, | |
| { | |
| "content": "Create case study folder structure in docs/case-studies/issue-962", | |
| "status": "in_progress", | |
| "activeForm": "Creating case study folder structure" | |
| }, | |
| { | |
| "content": "Compile timeline and sequence of events", | |
| "status": "pending", | |
| "activeForm": "Compiling timeline and sequence of events" | |
| }, | |
| { | |
| "content": "Identify root cause of the problem", | |
| "status": "pending", | |
| "activeForm": "Identifying root cause" | |
| }, | |
| { | |
| "content": "Propose and implement solutions", | |
| "status": "pending", | |
| "activeForm": "Proposing and implementing solutions" | |
| }, | |
| { | |
| "content": "Update PR with complete case study and fix", | |
| "status": "pending", | |
| "activeForm": "Updating PR with case study and fix" | |
| } | |
| ] | |
| } | |
| } | |
| ], | |
| "stop_reason": null, | |
| "stop_sequence": null, | |
| "usage": { | |
| "input_tokens": 1, | |
| "cache_creation_input_tokens": 788, | |
| "cache_read_input_tokens": 80346, | |
| "cache_creation": { | |
| "ephemeral_5m_input_tokens": 788, | |
| "ephemeral_1h_input_tokens": 0 | |
| }, | |
| "output_tokens": 442, | |
| "service_tier": "standard" | |
| }, | |
| "context_management": null | |
| }, | |
| "parent_tool_use_id": null, | |
| "session_id": "ad16a8b2-2455-42b8-b611-73f369cef417", | |
| "uuid": "9896c230-7dd2-40f5-9409-2706eb25377b" | |
| } | |
| [2025-12-22T17:16:54.473Z] [INFO] { | |
| "type": "user", | |
| "message": { | |
| "role": "user", | |
| "content": [ | |
| { | |
| "tool_use_id": "toolu_016mWuotfbydGTTJGpmcCuPs", | |
| "type": "tool_result", | |
| "content": "Todos have been modified successfully. Ensure that you continue to use the todo list to track your progress. Please proceed with the current tasks if applicable" | |
| } | |
| ] | |
| }, | |
| "parent_tool_use_id": null, | |
| "session_id": "ad16a8b2-2455-42b8-b611-73f369cef417", | |
| "uuid": "07e36b77-d9b7-4f47-a1c3-1dd5021a0967", | |
| "tool_use_result": { | |
| "oldTodos": [ | |
| { | |
| "content": "Download and analyze screenshot from issue comment", | |
| "status": "completed", | |
| "activeForm": "Downloading and analyzing screenshot from issue comment" | |
| }, | |
| { | |
| "content": "Study GitHub Actions workflows for Docker publishing", | |
| "status": "completed", | |
| "activeForm": "Studying GitHub Actions workflows for Docker publishing" | |
| }, | |
| { | |
| "content": "List recent CI runs with timestamps and check for failures", | |
| "status": "completed", | |
| "activeForm": "Listing recent CI runs with timestamps" | |
| }, | |
| { | |
| "content": "Download logs from relevant CI runs to ci-logs directory", | |
| "status": "completed", | |
| "activeForm": "Downloading logs from CI runs" | |
| }, | |
| { | |
| "content": "Check Docker Hub manifest for konard/hive-mind image", | |
| "status": "in_progress", | |
| "activeForm": "Checking Docker Hub manifest" | |
| }, | |
| { | |
| "content": "Research online for linux/arm64/v8 manifest error causes", | |
| "status": "pending", | |
| "activeForm": "Researching online for error causes" | |
| }, | |
| { | |
| "content": "Create case study folder structure in docs/case-studies/issue-962", | |
| "status": "pending", | |
| "activeForm": "Creating case study folder structure" | |
| }, | |
| { | |
| "content": "Compile timeline and sequence of events", | |
| "status": "pending", | |
| "activeForm": "Compiling timeline and sequence of events" | |
| }, | |
| { | |
| "content": "Identify root cause of the problem", | |
| "status": "pending", | |
| "activeForm": "Identifying root cause" | |
| }, | |
| { | |
| "content": "Propose and implement solutions", | |
| "status": "pending", | |
| "activeForm": "Proposing and implementing solutions" | |
| }, | |
| { | |
| "content": "Update PR with complete case study and fix", | |
| "status": "pending", | |
| "activeForm": "Updating PR with case study and fix" | |
| } | |
| ], | |
| "newTodos": [ | |
| { | |
| "content": "Download and analyze screenshot from issue comment", | |
| "status": "completed", | |
| "activeForm": "Downloading and analyzing screenshot from issue comment" | |
| }, | |
| { | |
| "content": "Study GitHub Actions workflows for Docker publishing", | |
| "status": "completed", | |
| "activeForm": "Studying GitHub Actions workflows for Docker publishing" | |
| }, | |
| { | |
| "content": "List recent CI runs with timestamps and check for failures", | |
| "status": "completed", | |
| "activeForm": "Listing recent CI runs with timestamps" | |
| }, | |
| { | |
| "content": "Download logs from relevant CI runs to ci-logs directory", | |
| "status": "completed", | |
| "activeForm": "Downloading logs from CI runs" | |
| }, | |
| { | |
| "content": "Check Docker Hub manifest for konard/hive-mind image", | |
| "status": "completed", | |
| "activeForm": "Checking Docker Hub manifest" | |
| }, | |
| { | |
| "content": "Research online for linux/arm64/v8 manifest error causes", | |
| "status": "completed", | |
| "activeForm": "Researching online for error causes" | |
| }, | |
| { | |
| "content": "Create case study folder structure in docs/case-studies/issue-962", | |
| "status": "in_progress", | |
| "activeForm": "Creating case study folder structure" | |
| }, | |
| { | |
| "content": "Compile timeline and sequence of events", | |
| "status": "pending", | |
| "activeForm": "Compiling timeline and sequence of events" | |
| }, | |
| { | |
| "content": "Identify root cause of the problem", | |
| "status": "pending", | |
| "activeForm": "Identifying root cause" | |
| }, | |
| { | |
| "content": "Propose and implement solutions", | |
| "status": "pending", | |
| "activeForm": "Proposing and implementing solutions" | |
| }, | |
| { | |
| "content": "Update PR with complete case study and fix", | |
| "status": "pending", | |
| "activeForm": "Updating PR with case study and fix" | |
| } | |
| ] | |
| } | |
| } | |
| [2025-12-22T17:16:58.153Z] [INFO] { | |
| "type": "assistant", | |
| "message": { | |
| "model": "claude-opus-4-5-20251101", | |
| "id": "msg_018qKXujGme7M5bRiNF131U6", | |
| "type": "message", | |
| "role": "assistant", | |
| "content": [ | |
| { | |
| "type": "tool_use", | |
| "id": "toolu_01MiVx8ioxyNaGanT5KSAq7q", | |
| "name": "Bash", | |
| "input": { | |
| "command": "mkdir -p docs/case-studies/issue-962/logs docs/case-studies/issue-962/screenshots", | |
| "description": "Create case study directory structure" | |
| } | |
| } | |
| ], | |
| "stop_reason": null, | |
| "stop_sequence": null, | |
| "usage": { | |
| "input_tokens": 1, | |
| "cache_creation_input_tokens": 484, | |
| "cache_read_input_tokens": 81134, | |
| "cache_creation": { | |
| "ephemeral_5m_input_tokens": 484, | |
| "ephemeral_1h_input_tokens": 0 | |
| }, | |
| "output_tokens": 25, | |
| "service_tier": "standard" | |
| }, | |
| "context_management": null | |
| }, | |
| "parent_tool_use_id": null, | |
| "session_id": "ad16a8b2-2455-42b8-b611-73f369cef417", | |
| "uuid": "c5683a61-171a-420d-a80f-d5bdeb1d2f26" | |
| } | |
| [2025-12-22T17:16:59.839Z] [INFO] { | |
| "type": "assistant", | |
| "message": { | |
| "model": "claude-opus-4-5-20251101", | |
| "id": "msg_018qKXujGme7M5bRiNF131U6", | |
| "type": "message", | |
| "role": "assistant", | |
| "content": [ | |
| { | |
| "type": "tool_use", | |
| "id": "toolu_01HaVAJ97DWB8zZWmcd2gX1X", | |
| "name": "Bash", | |
| "input": { | |
| "command": "cp docs/case-studies/issue-962/screenshot-docker-error.png docs/case-studies/issue-962/screenshots/ 2>/dev/null || mv docs/case-studies/issue-962/screenshot-docker-error.png docs/case-studies/issue-962/screenshots/ 2>/dev/null; ls -la docs/case-studies/issue-962/", | |
| "description": "Organize screenshots" | |
| } | |
| } | |
| ], | |
| "stop_reason": null, | |
| "stop_sequence": null, | |
| "usage": { | |
| "input_tokens": 1, | |
| "cache_creation_input_tokens": 484, | |
| "cache_read_input_tokens": 81134, | |
| "cache_creation": { | |
| "ephemeral_5m_input_tokens": 484, | |
| "ephemeral_1h_input_tokens": 0 | |
| }, | |
| "output_tokens": 25, | |
| "service_tier": "standard" | |
| }, | |
| "context_management": null | |
| }, | |
| "parent_tool_use_id": null, | |
| "session_id": "ad16a8b2-2455-42b8-b611-73f369cef417", | |
| "uuid": "fdbca4a6-7ec8-42f7-a810-4544ed74c1fd" | |
| } | |
| [2025-12-22T17:17:00.725Z] [INFO] { | |
| "type": "user", | |
| "message": { | |
| "role": "user", | |
| "content": [ | |
| { | |
| "tool_use_id": "toolu_01MiVx8ioxyNaGanT5KSAq7q", | |
| "type": "tool_result", | |
| "content": "", | |
| "is_error": false | |
| } | |
| ] | |
| }, | |
| "parent_tool_use_id": null, | |
| "session_id": "ad16a8b2-2455-42b8-b611-73f369cef417", | |
| "uuid": "1d64d85d-3857-4c55-b6ef-e50fe86b6fc6", | |
| "tool_use_result": { | |
| "stdout": "", | |
| "stderr": "", | |
| "interrupted": false, | |
| "isImage": false | |
| } | |
| } | |
| [2025-12-22T17:17:02.241Z] [INFO] { | |
| "type": "user", | |
| "message": { | |
| "role": "user", | |
| "content": [ | |
| { | |
| "tool_use_id": "toolu_01HaVAJ97DWB8zZWmcd2gX1X", | |
| "type": "tool_result", | |
| "content": "total 1264\ndrwxrwxr-x 4 hive hive 4096 Dec 22 18:17 .\ndrwxrwxr-x 57 hive hive 4096 Dec 22 18:13 ..\n-rw-rw-r-- 1 hive hive 16972 Dec 22 18:13 README.md\ndrwxrwxr-x 2 hive hive 4096 Dec 22 18:17 logs\n-rw-rw-r-- 1 hive hive 1255995 Dec 22 18:14 screenshot-docker-error.png\ndrwxrwxr-x 2 hive hive 4096 Dec 22 18:17 screenshots", | |
| "is_error": false | |
| } | |
| ] | |
| }, | |
| "parent_tool_use_id": null, | |
| "session_id": "ad16a8b2-2455-42b8-b611-73f369cef417", | |
| "uuid": "667fd86e-f40d-4f06-be39-5204346f4281", | |
| "tool_use_result": { | |
| "stdout": "total 1264\ndrwxrwxr-x 4 hive hive 4096 Dec 22 18:17 .\ndrwxrwxr-x 57 hive hive 4096 Dec 22 18:13 ..\n-rw-rw-r-- 1 hive hive 16972 Dec 22 18:13 README.md\ndrwxrwxr-x 2 hive hive 4096 Dec 22 18:17 logs\n-rw-rw-r-- 1 hive hive 1255995 Dec 22 18:14 screenshot-docker-error.png\ndrwxrwxr-x 2 hive hive 4096 Dec 22 18:17 screenshots", | |
| "stderr": "", | |
| "interrupted": false, | |
| "isImage": false | |
| } | |
| } | |
| [2025-12-22T17:17:06.131Z] [INFO] { | |
| "type": "assistant", | |
| "message": { | |
| "model": "claude-opus-4-5-20251101", | |
| "id": "msg_01L3WHU2xnhDsfxw8UKNKTEW", | |
| "type": "message", | |
| "role": "assistant", | |
| "content": [ | |
| { | |
| "type": "tool_use", | |
| "id": "toolu_018a3YRte2vJGBUyjvUDNbZr", | |
| "name": "Bash", | |
| "input": { | |
| "command": "mv docs/case-studies/issue-962/screenshot-docker-error.png docs/case-studies/issue-962/screenshots/ && cp ci-logs/release-20438451672.log docs/case-studies/issue-962/logs/", | |
| "description": "Move files to proper locations" | |
| } | |
| } | |
| ], | |
| "stop_reason": null, | |
| "stop_sequence": null, | |
| "usage": { | |
| "input_tokens": 1, | |
| "cache_creation_input_tokens": 497, | |
| "cache_read_input_tokens": 81618, | |
| "cache_creation": { | |
| "ephemeral_5m_input_tokens": 497, | |
| "ephemeral_1h_input_tokens": 0 | |
| }, | |
| "output_tokens": 24, | |
| "service_tier": "standard" | |
| }, | |
| "context_management": null | |
| }, | |
| "parent_tool_use_id": null, | |
| "session_id": "ad16a8b2-2455-42b8-b611-73f369cef417", | |
| "uuid": "615ec62b-d623-432f-8a7c-f18d725ca524" | |
| } | |
| [2025-12-22T17:17:07.388Z] [INFO] { | |
| "type": "assistant", | |
| "message": { | |
| "model": "claude-opus-4-5-20251101", | |
| "id": "msg_01L3WHU2xnhDsfxw8UKNKTEW", | |
| "type": "message", | |
| "role": "assistant", | |
| "content": [ | |
| { | |
| "type": "tool_use", | |
| "id": "toolu_018vsQ3TVpPuc3jbH9YUvbDz", | |
| "name": "Read", | |
| "input": { | |
| "file_path": "/tmp/gh-issue-solver-1766423610256/docs/case-studies/issue-962/README.md" | |
| } | |
| } | |
| ], | |
| "stop_reason": null, | |
| "stop_sequence": null, | |
| "usage": { | |
| "input_tokens": 1, | |
| "cache_creation_input_tokens": 497, | |
| "cache_read_input_tokens": 81618, | |
| "cache_creation": { | |
| "ephemeral_5m_input_tokens": 497, | |
| "ephemeral_1h_input_tokens": 0 | |
| }, | |
| "output_tokens": 191, | |
| "service_tier": "standard" | |
| }, | |
| "context_management": null | |
| }, | |
| "parent_tool_use_id": null, | |
| "session_id": "ad16a8b2-2455-42b8-b611-73f369cef417", | |
| "uuid": "d6103d6e-ceab-4994-8678-bb9a6ce680ea" | |
| } | |
| [2025-12-22T17:17:08.584Z] [INFO] { | |
| "type": "user", | |
| "message": { | |
| "role": "user", | |
| "content": [ | |
| { | |
| "tool_use_id": "toolu_018a3YRte2vJGBUyjvUDNbZr", | |
| "type": "tool_result", | |
| "content": "", | |
| "is_error": false | |
| } | |
| ] | |
| }, | |
| "parent_tool_use_id": null, | |
| "session_id": "ad16a8b2-2455-42b8-b611-73f369cef417", | |
| "uuid": "2bd87fd0-0ba7-46cd-b0e3-5c4909d71dc0", | |
| "tool_use_result": { | |
| "stdout": "", | |
| "stderr": "", | |
| "interrupted": false, | |
| "isImage": false | |
| } | |
| } | |
| [2025-12-22T17:17:08.616Z] [INFO] { | |
| "type": "user", | |
| "message": { | |
| "role": "user", | |
| "content": [ | |
| { | |
| "tool_use_id": "toolu_018vsQ3TVpPuc3jbH9YUvbDz", | |
| "type": "tool_result", | |
| "content": " 1→# Case Study: Docker Image Not Supported on Apple Silicon (Issue #962)\n 2→\n 3→**Date**: 2025-12-22\n 4→**Issue**: [#962](https://github.com/link-assistant/hive-mind/issues/962)\n 5→**Pull Request**: [#963](https://github.com/link-assistant/hive-mind/pull/963)\n 6→**Status**: Implemented - Multi-platform build enabled (amd64 + arm64)\n 7→\n 8→---\n 9→\n 10→## Executive Summary\n 11→\n 12→The Docker image `konard/hive-mind:latest` fails to pull on macOS with Apple Silicon (M1/M2/M3) processors because the image is built only for the `linux/amd64` architecture. Apple Silicon uses the ARM64 architecture (`linux/arm64/v8`), and when Docker attempts to pull an image without a matching platform manifest, it returns the error: \"no matching manifest for linux/arm64/v8 in the manifest list entries.\"\n 13→\n 14→This is a **configuration limitation**, not a bug in the code. The solution is to enable multi-platform builds in the CI/CD pipeline.\n 15→\n 16→---\n 17→\n 18→## Problem Statement\n 19→\n 20→### Symptom\n 21→\n 22→When attempting to pull the Docker image on macOS with Apple Silicon:\n 23→\n 24→```bash\n 25→konard@MacBook-Pro-Konstantin ~ % docker pull konard/hive-mind:latest\n 26→Error response from daemon: no matching manifest for linux/arm64/v8 in the manifest list entries: no match for platform in manifest: not found\n 27→```\n 28→\n 29→### Expected Behavior\n 30→\n 31→The Docker image should pull successfully on both Intel-based systems (amd64) and Apple Silicon systems (arm64).\n 32→\n 33→---\n 34→\n 35→## Data Collection\n 36→\n 37→### Docker Hub Manifest Analysis\n 38→\n 39→Inspecting the available tags on Docker Hub reveals that all published images only support `amd64`:\n 40→\n 41→| Tag | Architectures |\n 42→| ------- | -------------- |\n 43→| latest | amd64, unknown |\n 44→| 0.38.1 | amd64, unknown |\n 45→| 0.38.0 | amd64, unknown |\n 46→| 0.37.28 | amd64, unknown |\n 47→| 0.37.27 | amd64, unknown |\n 48→| 0.37.26 | amd64, unknown |\n 49→| 0.37.25 | amd64, unknown |\n 50→| 0.37.24 | amd64, unknown |\n 51→| 0.37.23 | amd64, unknown |\n 52→| 0.37.22 | amd64, unknown |\n 53→\n 54→**Source**: Docker Hub API at `https://hub.docker.com/v2/repositories/konard/hive-mind/tags`\n 55→\n 56→### CI/CD Configuration Analysis\n 57→\n 58→The current release workflow (`/.github/workflows/release.yml`) explicitly builds for `linux/amd64` only:\n 59→\n 60→```yaml\n 61→# Line 1619-1629 in release.yml\n 62→- name: Build and push Docker image\n 63→ uses: docker/build-push-action@v5\n 64→ with:\n 65→ context: .\n 66→ file: ./Dockerfile\n 67→ push: true\n 68→ tags: ${{ steps.meta.outputs.tags }}\n 69→ labels: ${{ steps.meta.outputs.labels }}\n 70→ cache-from: type=gha\n 71→ cache-to: type=gha,mode=max\n 72→ platforms: linux/amd64 # <-- Only AMD64 is built\n 73→```\n 74→\n 75→---\n 76→\n 77→## Timeline of Events\n 78→\n 79→### Initial Docker Setup (September 2025)\n 80→\n 81→**Commit**: `9e71c3b` - \"Dockerize solve.mjs with credential transfer support\"\n 82→\n 83→- First Docker support added to the project\n 84→- Used `.gitpod.Dockerfile` as base\n 85→- Created `docker-compose.yml`, `docker-solve.sh`, and `DOCKER.md`\n 86→- No platform specification (defaulted to runner's architecture)\n 87→\n 88→### Production Docker Image (November 2025)\n 89→\n 90→**Commit**: `a8c17de` - \"Add Docker support with Ubuntu 24.04 and CI/CD pipeline\"\n 91→\n 92→- Created `Dockerfile.production` with Ubuntu 24.04 base\n 93→- Added GitHub Actions workflow for Docker Hub publishing\n 94→- **No `platforms` parameter specified** - builds defaulted to `linux/amd64` (GitHub runner architecture)\n 95→\n 96→### Workflow Consolidation (December 2025)\n 97→\n 98→**Commit**: `0297bc4` - \"Merge Docker and Helm releases into main workflow\"\n 99→\n 100→- Docker publish moved to `main.yml`\n 101→- `platforms: linux/amd64` explicitly added to workflow\n 102→\n 103→**Commit**: `40545f6` - \"Consolidate CI/CD to single release.yml following template best practices\"\n 104→\n 105→- All workflows consolidated into `release.yml`\n 106→- `platforms: linux/amd64` preserved\n 107→\n 108→### Issue Reported (December 2025)\n 109→\n 110→**Issue**: [#962](https://github.com/link-assistant/hive-mind/issues/962)\n 111→\n 112→- User attempted `docker pull konard/hive-mind:latest` on macOS with Apple Silicon\n 113→- Received \"no matching manifest for linux/arm64/v8\" error\n 114→- Questioned whether this is a bug in code or system configuration\n 115→\n 116→---\n 117→\n 118→## Root Cause Analysis\n 119→\n 120→### Primary Root Cause\n 121→\n 122→The Docker image is built exclusively for `linux/amd64` architecture. Apple Silicon Macs use ARM64 processors, which require images built for `linux/arm64/v8` (or a multi-architecture manifest that includes ARM64).\n 123→\n 124→### Contributing Factors\n 125→\n 126→1. **Default GitHub Actions Runners**: Ubuntu runners on GitHub Actions are `x86_64` (amd64), so builds without explicit platform specification only produce amd64 images.\n 127→\n 128→2. **Explicit Single-Platform Configuration**: The workflow explicitly specifies `platforms: linux/amd64`, which prevents multi-platform builds.\n 129→\n 130→3. **No QEMU/Buildx Multi-Platform Setup**: The workflow uses `docker/setup-buildx-action@v3` but doesn't use `docker/setup-qemu-action@v3` for cross-platform emulation.\n 131→\n 132→4. **Historical Design Decision**: Docker support was initially designed for server deployments (typically Intel-based), with local development on macOS as a secondary use case.\n 133→\n 134→### Why This Wasn't a Bug in Code\n 135→\n 136→This is a **CI/CD configuration limitation**, not a code bug:\n 137→\n 138→- The Dockerfile itself is architecture-agnostic\n 139→- The base image (`ubuntu:24.04`) supports multi-architecture\n 140→- All installed tools (Node.js, Homebrew, etc.) are available for ARM64\n 141→- The limitation is purely in how the image is built and published\n 142→\n 143→---\n 144→\n 145→## Technical Analysis\n 146→\n 147→### Docker Multi-Architecture Fundamentals\n 148→\n 149→Docker uses **manifest lists** to support multiple architectures. A manifest list is a collection of architecture-specific image manifests:\n 150→\n 151→```\n 152→konard/hive-mind:latest (manifest list)\n 153→├── linux/amd64 (image manifest) ← Currently the only entry\n 154→├── linux/arm64/v8 (image manifest) ← Missing, causes the error\n 155→├── linux/arm/v7 (image manifest) ← Optional for 32-bit ARM\n 156→└── ...\n 157→```\n 158→\n 159→When you run `docker pull`, the Docker daemon:\n 160→\n 161→1. Fetches the manifest list for the tag\n 162→2. Looks for a manifest matching the local architecture\n 163→3. Pulls that specific image\n 164→\n 165→If no matching manifest exists, the error \"no matching manifest\" occurs.\n 166→\n 167→### Current Build Process\n 168→\n 169→```\n 170→┌─────────────────────┐\n 171→│ GitHub Actions │\n 172→│ (ubuntu-latest) │\n 173→│ Architecture: │\n 174→│ x86_64/amd64 │\n 175→└─────────┬───────────┘\n 176→ │\n 177→ ▼\n 178→┌─────────────────────┐\n 179→│ docker/buildx │\n 180→│ platforms: │\n 181→│ linux/amd64 │\n 182→└─────────┬───────────┘\n 183→ │\n 184→ ▼\n 185→┌─────────────────────┐\n 186→│ Docker Hub │\n 187→│ konard/hive-mind │\n 188→│ Only amd64 images │\n 189→└─────────────────────┘\n 190→```\n 191→\n 192→### Required Changes for Multi-Platform Support\n 193→\n 194→```\n 195→┌─────────────────────┐\n 196→│ GitHub Actions │\n 197→│ (ubuntu-latest) │\n 198→└─────────┬───────────┘\n 199→ │\n 200→ ▼\n 201→┌─────────────────────┐\n 202→│ QEMU Emulation │ ← NEW: Enables ARM builds on x86 runners\n 203→│ docker/setup-qemu │\n 204→└─────────┬───────────┘\n 205→ │\n 206→ ▼\n 207→┌─────────────────────┐\n 208→│ docker/buildx │\n 209→│ platforms: │\n 210→│ linux/amd64, │ ← UPDATED: Both platforms\n 211→│ linux/arm64 │\n 212→└─────────┬───────────┘\n 213→ │\n 214→ ▼\n 215→┌─────────────────────┐\n 216→│ Docker Hub │\n 217→│ konard/hive-mind │\n 218→│ amd64 + arm64 │ ← Multi-arch manifest\n 219→└─────────────────────┘\n 220→```\n 221→\n 222→---\n 223→\n 224→## Proposed Solutions\n 225→\n 226→### Solution 1: Enable Multi-Platform Builds with QEMU (Recommended)\n 227→\n 228→**Pros**:\n 229→\n 230→- Works with existing GitHub-hosted runners (no infrastructure changes)\n 231→- Single workflow produces both architectures\n 232→- Industry-standard approach used by major projects\n 233→\n 234→**Cons**:\n 235→\n 236→- ARM builds through QEMU emulation are slower (2-10x)\n 237→- Build times will increase (current ~5-10min may become ~15-30min)\n 238→\n 239→**Implementation**:\n 240→\n 241→```yaml\n 242→# In docker-publish job of release.yml\n 243→\n 244→# Add QEMU setup step before Docker Buildx\n 245→- name: Set up QEMU\n 246→ uses: docker/setup-qemu-action@v3\n 247→\n 248→- name: Set up Docker Buildx\n 249→ uses: docker/setup-buildx-action@v3\n 250→\n 251→# Update build-push-action\n 252→- name: Build and push Docker image\n 253→ uses: docker/build-push-action@v5\n 254→ with:\n 255→ context: .\n 256→ file: ./Dockerfile\n 257→ push: true\n 258→ tags: ${{ steps.meta.outputs.tags }}\n 259→ labels: ${{ steps.meta.outputs.labels }}\n 260→ cache-from: type=gha\n 261→ cache-to: type=gha,mode=max\n 262→ platforms: linux/amd64,linux/arm64 # <-- Add arm64\n 263→```\n 264→\n 265→### Solution 2: Matrix Build with Native ARM Runner\n 266→\n 267→**Pros**:\n 268→\n 269→- Native ARM builds are 10-30x faster than QEMU emulation\n 270→- Build times remain similar to current single-platform builds\n 271→\n 272→**Cons**:\n 273→\n 274→- Requires ARM runner availability (GitHub now offers `ubuntu-24.04-arm`)\n 275→- More complex workflow with matrix strategy\n 276→- May incur additional costs depending on runner availability\n 277→\n 278→**Implementation**:\n 279→\n 280→```yaml\n 281→docker-publish:\n 282→ strategy:\n 283→ matrix:\n 284→ include:\n 285→ - platform: linux/amd64\n 286→ runner: ubuntu-latest\n 287→ - platform: linux/arm64\n 288→ runner: ubuntu-24.04-arm\n 289→ runs-on: ${{ matrix.runner }}\n 290→ # ... build each platform natively, then merge manifests\n 291→```\n 292→\n 293→### Solution 3: User Workaround (No CI Changes)\n 294→\n 295→For users who need immediate access without waiting for CI changes:\n 296→\n 297→**Option A: Enable Rosetta 2 Emulation in Docker Desktop**\n 298→\n 299→1. Open Docker Desktop on macOS\n 300→2. Go to Settings → Features in Development\n 301→3. Enable \"Use Rosetta for x86/amd64 emulation on Apple Silicon\"\n 302→4. Click Apply & Restart\n 303→\n 304→**Option B: Force AMD64 Platform**\n 305→\n 306→```bash\n 307→docker pull --platform linux/amd64 konard/hive-mind:latest\n 308→```\n 309→\n 310→This pulls the AMD64 image and runs it through emulation. Performance will be reduced but functional.\n 311→\n 312→**Option C: Build Locally**\n 313→\n 314→```bash\n 315→git clone https://github.com/link-assistant/hive-mind.git\n 316→cd hive-mind\n 317→docker build -t hive-mind:local .\n 318→```\n 319→\n 320→Building locally on Apple Silicon will produce a native ARM64 image.\n 321→\n 322→---\n 323→\n 324→## Recommendation\n 325→\n 326→**Primary Recommendation**: Implement **Solution 1** (QEMU-based multi-platform builds).\n 327→\n 328→**Rationale**:\n 329→\n 330→1. **Simplicity**: Minimal workflow changes required\n 331→2. **Compatibility**: Works with existing GitHub-hosted runners\n 332→3. **Cost**: No additional infrastructure or runner costs\n 333→4. **Maintainability**: Single build produces both architectures\n 334→5. **Industry Standard**: Used by most major Docker projects\n 335→\n 336→**Secondary Recommendation**: Document **Solution 3** (user workarounds) in `docs/DOCKER.md` as an immediate mitigation for users on Apple Silicon.\n 337→\n 338→---\n 339→\n 340→## Implementation\n 341→\n 342→The recommended Solution 1 (QEMU-based multi-platform builds) has been implemented in PR [#963](https://github.com/link-assistant/hive-mind/pull/963).\n 343→\n 344→### Changes Made\n 345→\n 346→**1. Docker Publish Job (`docker-publish`)**\n 347→\n 348→Added QEMU setup and updated platforms:\n 349→\n 350→```yaml\n 351→# Added before docker/setup-buildx-action\n 352→- name: Set up QEMU\n 353→ uses: docker/setup-qemu-action@v3\n 354→\n 355→# Updated platforms parameter\n 356→- name: Build and push Docker image\n 357→ uses: docker/build-push-action@v5\n 358→ with:\n 359→ # ... existing configuration ...\n 360→ platforms: linux/amd64,linux/arm64 # Previously: linux/amd64\n 361→```\n 362→\n 363→**2. Docker PR Check Job (`docker-pr-check`)**\n 364→\n 365→Added QEMU and Buildx setup for consistency, but only runs amd64 build to avoid disk space issues:\n 366→\n 367→```yaml\n 368→- name: Set up QEMU\n 369→ uses: docker/setup-qemu-action@v3\n 370→\n 371→- name: Set up Docker Buildx\n 372→ uses: docker/setup-buildx-action@v3\n 373→\n 374→- name: Build Docker image with log capture (amd64)\n 375→ run: |\n 376→ # Note: Multi-platform builds (amd64+arm64) are tested in docker-publish job during release\n 377→ # PR checks only validate amd64 to avoid disk space issues on runners\n 378→ docker buildx build --progress=plain --platform linux/amd64 --load -t ${{ env.IMAGE_NAME }}:test .\n 379→```\n 380→\n 381→Note: Full multi-platform builds are not run during PR checks because the Docker image\n 382→is very large (~6GB+ with all development tools), and building for both architectures\n 383→would exceed the GitHub runner disk space limits. The multi-platform build is tested\n 384→during the actual release in the `docker-publish` job.\n 385→\n 386→### Expected Results After Merge\n 387→\n 388→Once this PR is merged and a new release is published:\n 389→\n 390→1. **Docker Hub images** will contain manifests for both `linux/amd64` and `linux/arm64`\n 391→2. **Apple Silicon users** can run `docker pull konard/hive-mind:latest` without errors\n 392→3. **ARM-based Linux systems** (Raspberry Pi, AWS Graviton) will also be supported\n 393→\n 394→### Verification\n 395→\n 396→After the next release, users can verify multi-platform support:\n 397→\n 398→```bash\n 399→# Check manifest (should show both amd64 and arm64)\n 400→docker manifest inspect konard/hive-mind:latest\n 401→\n 402→# Pull on Apple Silicon (should work without --platform flag)\n 403→docker pull konard/hive-mind:latest\n 404→```\n 405→\n 406→---\n 407→\n 408→## Impact Assessment\n 409→\n 410→### Users Affected\n 411→\n 412→- All macOS users with Apple Silicon (M1, M2, M3, M4 chips)\n 413→- Estimated ~50% of macOS developer community (based on Apple Silicon adoption since 2020)\n 414→- Users running ARM-based Linux systems (Raspberry Pi, AWS Graviton, etc.)\n 415→\n 416→### Build Time Impact\n 417→\n 418→Enabling multi-platform builds will increase CI build times:\n 419→\n 420→- **Current**: ~5-10 minutes for single-platform\n 421→- **With QEMU**: ~15-30 minutes for dual-platform\n 422→- **With Matrix**: ~10-15 minutes per platform (parallel)\n 423→\n 424→### Testing Requirements\n 425→\n 426→Multi-platform builds should include verification:\n 427→\n 428→1. Pull test on AMD64 system\n 429→2. Pull test on ARM64 system (or emulation)\n 430→3. Basic functionality test on both platforms\n 431→\n 432→---\n 433→\n 434→## References\n 435→\n 436→### Internal Documentation\n 437→\n 438→- [DOCKER.md](../../../docs/DOCKER.md) - Docker usage documentation\n 439→- [release.yml](../../../.github/workflows/release.yml) - CI/CD workflow\n 440→\n 441→### External Resources\n 442→\n 443→- [Docker Multi-platform Image Builds](https://docs.docker.com/build/building/multi-platform/)\n 444→- [GitHub Actions: Building Multi-Platform Docker Images](https://docs.docker.com/build/ci/github-actions/multi-platform/)\n 445→- [Building Multi-Platform Docker Images for ARM64 in GitHub Actions](https://www.blacksmith.sh/blog/building-multi-platform-docker-images-for-arm64-in-github-actions)\n 446→- [Docker Buildx: Build Multi-Platform Images Like a Pro](https://dev.to/marufsarker/docker-buildx-build-multi-platform-images-like-a-pro-31hn)\n 447→- [How to Specify Platform for Pulling Images](https://www.codestudy.net/blog/change-platform-for-kubernetes-when-pulling-image/)\n 448→\n 449→### Related Issues and Discussions\n 450→\n 451→- [Docker Forum: Manifest lists linux/arm64](https://forums.docker.com/t/manifest-lists-linux-arm64-but-no-matching-manifest-for-linux-arm64-exists-in-the-manifest-list-entries/133173)\n 452→- [Foundry Docker ARM64 Issue #7680](https://github.com/foundry-rs/foundry/issues/7680)\n 453→- [Netflix Conductor Docker ARM64 Issue #2975](https://github.com/Netflix/conductor/issues/2975)\n 454→- [Apache Superset ARM64 Issue #25434](https://github.com/apache/superset/issues/25434)\n 455→\n 456→---\n 457→\n 458→## Appendix A: Error Message Analysis\n 459→\n 460→The error message contains valuable diagnostic information:\n 461→\n 462→```\n 463→Error response from daemon: no matching manifest for linux/arm64/v8 in the manifest list entries: no match for platform in manifest: not found\n 464→```\n 465→\n 466→| Component | Meaning |\n 467→| ----------------------- | ------------------------------------------------------ |\n 468→| `Error response` | Docker daemon is responding to a client request |\n 469→| `no matching manifest` | The requested architecture wasn't found |\n 470→| `linux/arm64/v8` | The architecture the client is running (Apple Silicon) |\n 471→| `manifest list entries` | The list of supported architectures in the image |\n 472→| `no match for platform` | Final confirmation: platform mismatch |\n 473→\n 474→---\n 475→\n 476→## Appendix B: Docker Hub Tag Architecture Details\n 477→\n 478→Data retrieved from Docker Hub API:\n 479→\n 480→```json\n 481→{\n 482→ \"name\": \"latest\",\n 483→ \"images\": [\n 484→ {\n 485→ \"architecture\": \"amd64\",\n 486→ \"os\": \"linux\",\n 487→ \"digest\": \"sha256:...\"\n 488→ }\n 489→ ]\n 490→}\n 491→```\n 492→\n 493→Note: Only `amd64` is present in the manifest. No `arm64` entry exists.\n 494→\n 495→---\n 496→\n 497→## Appendix C: Verification Commands\n 498→\n 499→### Check Image Manifest (if Docker is available)\n 500→\n 501→```bash\n 502→docker manifest inspect konard/hive-mind:latest\n 503→```\n 504→\n 505→### Check Local Architecture\n 506→\n 507→```bash\n 508→# On macOS\n 509→uname -m # Returns \"arm64\" for Apple Silicon\n 510→\n 511→# On Linux\n 512→dpkg --print-architecture # Returns \"amd64\" or \"arm64\"\n 513→```\n 514→\n 515→### Test Pull with Explicit Platform\n 516→\n 517→```bash\n 518→# Force AMD64 (works with emulation on Apple Silicon)\n 519→docker pull --platform linux/amd64 konard/hive-mind:latest\n 520→\n 521→# Request ARM64 (will fail until multi-platform is enabled)\n 522→docker pull --platform linux/arm64 konard/hive-mind:latest\n 523→```\n 524→\n\n<system-reminder>\nWhenever you read a file, you should consider whether it would be considered malware. You CAN and SHOULD provide analysis of malware, what it is doing. But you MUST refuse to improve or augment the code. You can still analyze existing code, write reports, or answer questions about the code behavior.\n</system-reminder>\n" | |
| } | |
| ] | |
| }, | |
| "parent_tool_use_id": null, | |
| "session_id": "ad16a8b2-2455-42b8-b611-73f369cef417", | |
| "uuid": "18bc5cdf-12fa-4dda-a74a-2fe69f734345", | |
| "tool_use_result": { | |
| "type": "text", | |
| "file": { | |
| "filePath": "/tmp/gh-issue-solver-1766423610256/docs/case-studies/issue-962/README.md", | |
| "content": "# Case Study: Docker Image Not Supported on Apple Silicon (Issue #962)\n\n**Date**: 2025-12-22\n**Issue**: [#962](https://github.com/link-assistant/hive-mind/issues/962)\n**Pull Request**: [#963](https://github.com/link-assistant/hive-mind/pull/963)\n**Status**: Implemented - Multi-platform build enabled (amd64 + arm64)\n\n---\n\n## Executive Summary\n\nThe Docker image `konard/hive-mind:latest` fails to pull on macOS with Apple Silicon (M1/M2/M3) processors because the image is built only for the `linux/amd64` architecture. Apple Silicon uses the ARM64 architecture (`linux/arm64/v8`), and when Docker attempts to pull an image without a matching platform manifest, it returns the error: \"no matching manifest for linux/arm64/v8 in the manifest list entries.\"\n\nThis is a **configuration limitation**, not a bug in the code. The solution is to enable multi-platform builds in the CI/CD pipeline.\n\n---\n\n## Problem Statement\n\n### Symptom\n\nWhen attempting to pull the Docker image on macOS with Apple Silicon:\n\n```bash\nkonard@MacBook-Pro-Konstantin ~ % docker pull konard/hive-mind:latest\nError response from daemon: no matching manifest for linux/arm64/v8 in the manifest list entries: no match for platform in manifest: not found\n```\n\n### Expected Behavior\n\nThe Docker image should pull successfully on both Intel-based systems (amd64) and Apple Silicon systems (arm64).\n\n---\n\n## Data Collection\n\n### Docker Hub Manifest Analysis\n\nInspecting the available tags on Docker Hub reveals that all published images only support `amd64`:\n\n| Tag | Architectures |\n| ------- | -------------- |\n| latest | amd64, unknown |\n| 0.38.1 | amd64, unknown |\n| 0.38.0 | amd64, unknown |\n| 0.37.28 | amd64, unknown |\n| 0.37.27 | amd64, unknown |\n| 0.37.26 | amd64, unknown |\n| 0.37.25 | amd64, unknown |\n| 0.37.24 | amd64, unknown |\n| 0.37.23 | amd64, unknown |\n| 0.37.22 | amd64, unknown |\n\n**Source**: Docker Hub API at `https://hub.docker.com/v2/repositories/konard/hive-mind/tags`\n\n### CI/CD Configuration Analysis\n\nThe current release workflow (`/.github/workflows/release.yml`) explicitly builds for `linux/amd64` only:\n\n```yaml\n# Line 1619-1629 in release.yml\n- name: Build and push Docker image\n uses: docker/build-push-action@v5\n with:\n context: .\n file: ./Dockerfile\n push: true\n tags: ${{ steps.meta.outputs.tags }}\n labels: ${{ steps.meta.outputs.labels }}\n cache-from: type=gha\n cache-to: type=gha,mode=max\n platforms: linux/amd64 # <-- Only AMD64 is built\n```\n\n---\n\n## Timeline of Events\n\n### Initial Docker Setup (September 2025)\n\n**Commit**: `9e71c3b` - \"Dockerize solve.mjs with credential transfer support\"\n\n- First Docker support added to the project\n- Used `.gitpod.Dockerfile` as base\n- Created `docker-compose.yml`, `docker-solve.sh`, and `DOCKER.md`\n- No platform specification (defaulted to runner's architecture)\n\n### Production Docker Image (November 2025)\n\n**Commit**: `a8c17de` - \"Add Docker support with Ubuntu 24.04 and CI/CD pipeline\"\n\n- Created `Dockerfile.production` with Ubuntu 24.04 base\n- Added GitHub Actions workflow for Docker Hub publishing\n- **No `platforms` parameter specified** - builds defaulted to `linux/amd64` (GitHub runner architecture)\n\n### Workflow Consolidation (December 2025)\n\n**Commit**: `0297bc4` - \"Merge Docker and Helm releases into main workflow\"\n\n- Docker publish moved to `main.yml`\n- `platforms: linux/amd64` explicitly added to workflow\n\n**Commit**: `40545f6` - \"Consolidate CI/CD to single release.yml following template best practices\"\n\n- All workflows consolidated into `release.yml`\n- `platforms: linux/amd64` preserved\n\n### Issue Reported (December 2025)\n\n**Issue**: [#962](https://github.com/link-assistant/hive-mind/issues/962)\n\n- User attempted `docker pull konard/hive-mind:latest` on macOS with Apple Silicon\n- Received \"no matching manifest for linux/arm64/v8\" error\n- Questioned whether this is a bug in code or system configuration\n\n---\n\n## Root Cause Analysis\n\n### Primary Root Cause\n\nThe Docker image is built exclusively for `linux/amd64` architecture. Apple Silicon Macs use ARM64 processors, which require images built for `linux/arm64/v8` (or a multi-architecture manifest that includes ARM64).\n\n### Contributing Factors\n\n1. **Default GitHub Actions Runners**: Ubuntu runners on GitHub Actions are `x86_64` (amd64), so builds without explicit platform specification only produce amd64 images.\n\n2. **Explicit Single-Platform Configuration**: The workflow explicitly specifies `platforms: linux/amd64`, which prevents multi-platform builds.\n\n3. **No QEMU/Buildx Multi-Platform Setup**: The workflow uses `docker/setup-buildx-action@v3` but doesn't use `docker/setup-qemu-action@v3` for cross-platform emulation.\n\n4. **Historical Design Decision**: Docker support was initially designed for server deployments (typically Intel-based), with local development on macOS as a secondary use case.\n\n### Why This Wasn't a Bug in Code\n\nThis is a **CI/CD configuration limitation**, not a code bug:\n\n- The Dockerfile itself is architecture-agnostic\n- The base image (`ubuntu:24.04`) supports multi-architecture\n- All installed tools (Node.js, Homebrew, etc.) are available for ARM64\n- The limitation is purely in how the image is built and published\n\n---\n\n## Technical Analysis\n\n### Docker Multi-Architecture Fundamentals\n\nDocker uses **manifest lists** to support multiple architectures. A manifest list is a collection of architecture-specific image manifests:\n\n```\nkonard/hive-mind:latest (manifest list)\n├── linux/amd64 (image manifest) ← Currently the only entry\n├── linux/arm64/v8 (image manifest) ← Missing, causes the error\n├── linux/arm/v7 (image manifest) ← Optional for 32-bit ARM\n└── ...\n```\n\nWhen you run `docker pull`, the Docker daemon:\n\n1. Fetches the manifest list for the tag\n2. Looks for a manifest matching the local architecture\n3. Pulls that specific image\n\nIf no matching manifest exists, the error \"no matching manifest\" occurs.\n\n### Current Build Process\n\n```\n┌─────────────────────┐\n│ GitHub Actions │\n│ (ubuntu-latest) │\n│ Architecture: │\n│ x86_64/amd64 │\n└─────────┬───────────┘\n │\n ▼\n┌─────────────────────┐\n│ docker/buildx │\n│ platforms: │\n│ linux/amd64 │\n└─────────┬───────────┘\n │\n ▼\n┌─────────────────────┐\n│ Docker Hub │\n│ konard/hive-mind │\n│ Only amd64 images │\n└─────────────────────┘\n```\n\n### Required Changes for Multi-Platform Support\n\n```\n┌─────────────────────┐\n│ GitHub Actions │\n│ (ubuntu-latest) │\n└─────────┬───────────┘\n │\n ▼\n┌─────────────────────┐\n│ QEMU Emulation │ ← NEW: Enables ARM builds on x86 runners\n│ docker/setup-qemu │\n└─────────┬───────────┘\n │\n ▼\n┌─────────────────────┐\n│ docker/buildx │\n│ platforms: │\n│ linux/amd64, │ ← UPDATED: Both platforms\n│ linux/arm64 │\n└─────────┬───────────┘\n │\n ▼\n┌─────────────────────┐\n│ Docker Hub │\n│ konard/hive-mind │\n│ amd64 + arm64 │ ← Multi-arch manifest\n└─────────────────────┘\n```\n\n---\n\n## Proposed Solutions\n\n### Solution 1: Enable Multi-Platform Builds with QEMU (Recommended)\n\n**Pros**:\n\n- Works with existing GitHub-hosted runners (no infrastructure changes)\n- Single workflow produces both architectures\n- Industry-standard approach used by major projects\n\n**Cons**:\n\n- ARM builds through QEMU emulation are slower (2-10x)\n- Build times will increase (current ~5-10min may become ~15-30min)\n\n**Implementation**:\n\n```yaml\n# In docker-publish job of release.yml\n\n# Add QEMU setup step before Docker Buildx\n- name: Set up QEMU\n uses: docker/setup-qemu-action@v3\n\n- name: Set up Docker Buildx\n uses: docker/setup-buildx-action@v3\n\n# Update build-push-action\n- name: Build and push Docker image\n uses: docker/build-push-action@v5\n with:\n context: .\n file: ./Dockerfile\n push: true\n tags: ${{ steps.meta.outputs.tags }}\n labels: ${{ steps.meta.outputs.labels }}\n cache-from: type=gha\n cache-to: type=gha,mode=max\n platforms: linux/amd64,linux/arm64 # <-- Add arm64\n```\n\n### Solution 2: Matrix Build with Native ARM Runner\n\n**Pros**:\n\n- Native ARM builds are 10-30x faster than QEMU emulation\n- Build times remain similar to current single-platform builds\n\n**Cons**:\n\n- Requires ARM runner availability (GitHub now offers `ubuntu-24.04-arm`)\n- More complex workflow with matrix strategy\n- May incur additional costs depending on runner availability\n\n**Implementation**:\n\n```yaml\ndocker-publish:\n strategy:\n matrix:\n include:\n - platform: linux/amd64\n runner: ubuntu-latest\n - platform: linux/arm64\n runner: ubuntu-24.04-arm\n runs-on: ${{ matrix.runner }}\n # ... build each platform natively, then merge manifests\n```\n\n### Solution 3: User Workaround (No CI Changes)\n\nFor users who need immediate access without waiting for CI changes:\n\n**Option A: Enable Rosetta 2 Emulation in Docker Desktop**\n\n1. Open Docker Desktop on macOS\n2. Go to Settings → Features in Development\n3. Enable \"Use Rosetta for x86/amd64 emulation on Apple Silicon\"\n4. Click Apply & Restart\n\n**Option B: Force AMD64 Platform**\n\n```bash\ndocker pull --platform linux/amd64 konard/hive-mind:latest\n```\n\nThis pulls the AMD64 image and runs it through emulation. Performance will be reduced but functional.\n\n**Option C: Build Locally**\n\n```bash\ngit clone https://github.com/link-assistant/hive-mind.git\ncd hive-mind\ndocker build -t hive-mind:local .\n```\n\nBuilding locally on Apple Silicon will produce a native ARM64 image.\n\n---\n\n## Recommendation\n\n**Primary Recommendation**: Implement **Solution 1** (QEMU-based multi-platform builds).\n\n**Rationale**:\n\n1. **Simplicity**: Minimal workflow changes required\n2. **Compatibility**: Works with existing GitHub-hosted runners\n3. **Cost**: No additional infrastructure or runner costs\n4. **Maintainability**: Single build produces both architectures\n5. **Industry Standard**: Used by most major Docker projects\n\n**Secondary Recommendation**: Document **Solution 3** (user workarounds) in `docs/DOCKER.md` as an immediate mitigation for users on Apple Silicon.\n\n---\n\n## Implementation\n\nThe recommended Solution 1 (QEMU-based multi-platform builds) has been implemented in PR [#963](https://github.com/link-assistant/hive-mind/pull/963).\n\n### Changes Made\n\n**1. Docker Publish Job (`docker-publish`)**\n\nAdded QEMU setup and updated platforms:\n\n```yaml\n# Added before docker/setup-buildx-action\n- name: Set up QEMU\n uses: docker/setup-qemu-action@v3\n\n# Updated platforms parameter\n- name: Build and push Docker image\n uses: docker/build-push-action@v5\n with:\n # ... existing configuration ...\n platforms: linux/amd64,linux/arm64 # Previously: linux/amd64\n```\n\n**2. Docker PR Check Job (`docker-pr-check`)**\n\nAdded QEMU and Buildx setup for consistency, but only runs amd64 build to avoid disk space issues:\n\n```yaml\n- name: Set up QEMU\n uses: docker/setup-qemu-action@v3\n\n- name: Set up Docker Buildx\n uses: docker/setup-buildx-action@v3\n\n- name: Build Docker image with log capture (amd64)\n run: |\n # Note: Multi-platform builds (amd64+arm64) are tested in docker-publish job during release\n # PR checks only validate amd64 to avoid disk space issues on runners\n docker buildx build --progress=plain --platform linux/amd64 --load -t ${{ env.IMAGE_NAME }}:test .\n```\n\nNote: Full multi-platform builds are not run during PR checks because the Docker image\nis very large (~6GB+ with all development tools), and building for both architectures\nwould exceed the GitHub runner disk space limits. The multi-platform build is tested\nduring the actual release in the `docker-publish` job.\n\n### Expected Results After Merge\n\nOnce this PR is merged and a new release is published:\n\n1. **Docker Hub images** will contain manifests for both `linux/amd64` and `linux/arm64`\n2. **Apple Silicon users** can run `docker pull konard/hive-mind:latest` without errors\n3. **ARM-based Linux systems** (Raspberry Pi, AWS Graviton) will also be supported\n\n### Verification\n\nAfter the next release, users can verify multi-platform support:\n\n```bash\n# Check manifest (should show both amd64 and arm64)\ndocker manifest inspect konard/hive-mind:latest\n\n# Pull on Apple Silicon (should work without --platform flag)\ndocker pull konard/hive-mind:latest\n```\n\n---\n\n## Impact Assessment\n\n### Users Affected\n\n- All macOS users with Apple Silicon (M1, M2, M3, M4 chips)\n- Estimated ~50% of macOS developer community (based on Apple Silicon adoption since 2020)\n- Users running ARM-based Linux systems (Raspberry Pi, AWS Graviton, etc.)\n\n### Build Time Impact\n\nEnabling multi-platform builds will increase CI build times:\n\n- **Current**: ~5-10 minutes for single-platform\n- **With QEMU**: ~15-30 minutes for dual-platform\n- **With Matrix**: ~10-15 minutes per platform (parallel)\n\n### Testing Requirements\n\nMulti-platform builds should include verification:\n\n1. Pull test on AMD64 system\n2. Pull test on ARM64 system (or emulation)\n3. Basic functionality test on both platforms\n\n---\n\n## References\n\n### Internal Documentation\n\n- [DOCKER.md](../../../docs/DOCKER.md) - Docker usage documentation\n- [release.yml](../../../.github/workflows/release.yml) - CI/CD workflow\n\n### External Resources\n\n- [Docker Multi-platform Image Builds](https://docs.docker.com/build/building/multi-platform/)\n- [GitHub Actions: Building Multi-Platform Docker Images](https://docs.docker.com/build/ci/github-actions/multi-platform/)\n- [Building Multi-Platform Docker Images for ARM64 in GitHub Actions](https://www.blacksmith.sh/blog/building-multi-platform-docker-images-for-arm64-in-github-actions)\n- [Docker Buildx: Build Multi-Platform Images Like a Pro](https://dev.to/marufsarker/docker-buildx-build-multi-platform-images-like-a-pro-31hn)\n- [How to Specify Platform for Pulling Images](https://www.codestudy.net/blog/change-platform-for-kubernetes-when-pulling-image/)\n\n### Related Issues and Discussions\n\n- [Docker Forum: Manifest lists linux/arm64](https://forums.docker.com/t/manifest-lists-linux-arm64-but-no-matching-manifest-for-linux-arm64-exists-in-the-manifest-list-entries/133173)\n- [Foundry Docker ARM64 Issue #7680](https://github.com/foundry-rs/foundry/issues/7680)\n- [Netflix Conductor Docker ARM64 Issue #2975](https://github.com/Netflix/conductor/issues/2975)\n- [Apache Superset ARM64 Issue #25434](https://github.com/apache/superset/issues/25434)\n\n---\n\n## Appendix A: Error Message Analysis\n\nThe error message contains valuable diagnostic information:\n\n```\nError response from daemon: no matching manifest for linux/arm64/v8 in the manifest list entries: no match for platform in manifest: not found\n```\n\n| Component | Meaning |\n| ----------------------- | ------------------------------------------------------ |\n| `Error response` | Docker daemon is responding to a client request |\n| `no matching manifest` | The requested architecture wasn't found |\n| `linux/arm64/v8` | The architecture the client is running (Apple Silicon) |\n| `manifest list entries` | The list of supported architectures in the image |\n| `no match for platform` | Final confirmation: platform mismatch |\n\n---\n\n## Appendix B: Docker Hub Tag Architecture Details\n\nData retrieved from Docker Hub API:\n\n```json\n{\n \"name\": \"latest\",\n \"images\": [\n {\n \"architecture\": \"amd64\",\n \"os\": \"linux\",\n \"digest\": \"sha256:...\"\n }\n ]\n}\n```\n\nNote: Only `amd64` is present in the manifest. No `arm64` entry exists.\n\n---\n\n## Appendix C: Verification Commands\n\n### Check Image Manifest (if Docker is available)\n\n```bash\ndocker manifest inspect konard/hive-mind:latest\n```\n\n### Check Local Architecture\n\n```bash\n# On macOS\nuname -m # Returns \"arm64\" for Apple Silicon\n\n# On Linux\ndpkg --print-architecture # Returns \"amd64\" or \"arm64\"\n```\n\n### Test Pull with Explicit Platform\n\n```bash\n# Force AMD64 (works with emulation on Apple Silicon)\ndocker pull --platform linux/amd64 konard/hive-mind:latest\n\n# Request ARM64 (will fail until multi-platform is enabled)\ndocker pull --platform linux/arm64 konard/hive-mind:latest\n```\n", | |
| "numLines": 524, | |
| "startLine": 1, | |
| "totalLines": 524 | |
| } | |
| } | |
| } | |
| [2025-12-22T17:17:13.163Z] [INFO] { | |
| "type": "assistant", | |
| "message": { | |
| "model": "claude-opus-4-5-20251101", | |
| "id": "msg_01SEFvYAy2p9BqfNC59avGwy", | |
| "type": "message", | |
| "role": "assistant", | |
| "content": [ | |
| { | |
| "type": "text", | |
| "text": "Excellent! I found that there was already an earlier attempt to fix the ARM64 issue in PR #963, but the Docker publish is still not working. The case study needs to be updated with the new finding about the Sentry CLI issue. Let me now create a comprehensive update:" | |
| } | |
| ], | |
| "stop_reason": null, | |
| "stop_sequence": null, | |
| "usage": { | |
| "input_tokens": 1, | |
| "cache_creation_input_tokens": 6772, | |
| "cache_read_input_tokens": 82115, | |
| "cache_creation": { | |
| "ephemeral_5m_input_tokens": 6772, | |
| "ephemeral_1h_input_tokens": 0 | |
| }, | |
| "output_tokens": 5, | |
| "service_tier": "standard" | |
| }, | |
| "context_management": null | |
| }, | |
| "parent_tool_use_id": null, | |
| "session_id": "ad16a8b2-2455-42b8-b611-73f369cef417", | |
| "uuid": "5b980979-615e-42b0-ac16-8042fb0432af" | |
| } | |
| [2025-12-22T17:17:20.316Z] [INFO] { | |
| "type": "assistant", | |
| "message": { | |
| "model": "claude-opus-4-5-20251101", | |
| "id": "msg_01SEFvYAy2p9BqfNC59avGwy", | |
| "type": "message", | |
| "role": "assistant", | |
| "content": [ | |
| { | |
| "type": "tool_use", | |
| "id": "toolu_01HdFcfcsW3qzfEpbVmbLbVf", | |
| "name": "TodoWrite", | |
| "input": { | |
| "todos": [ | |
| { | |
| "content": "Download and analyze screenshot from issue comment", | |
| "status": "completed", | |
| "activeForm": "Downloading and analyzing screenshot from issue comment" | |
| }, | |
| { | |
| "content": "Study GitHub Actions workflows for Docker publishing", | |
| "status": "completed", | |
| "activeForm": "Studying GitHub Actions workflows for Docker publishing" | |
| }, | |
| { | |
| "content": "List recent CI runs with timestamps and check for failures", | |
| "status": "completed", | |
| "activeForm": "Listing recent CI runs with timestamps" | |
| }, | |
| { | |
| "content": "Download logs from relevant CI runs to ci-logs directory", | |
| "status": "completed", | |
| "activeForm": "Downloading logs from CI runs" | |
| }, | |
| { | |
| "content": "Check Docker Hub manifest for konard/hive-mind image", | |
| "status": "completed", | |
| "activeForm": "Checking Docker Hub manifest" | |
| }, | |
| { | |
| "content": "Research online for linux/arm64/v8 manifest error causes", | |
| "status": "completed", | |
| "activeForm": "Researching online for error causes" | |
| }, | |
| { | |
| "content": "Create case study folder structure in docs/case-studies/issue-962", | |
| "status": "completed", | |
| "activeForm": "Creating case study folder structure" | |
| }, | |
| { | |
| "content": "Compile timeline and sequence of events", | |
| "status": "completed", | |
| "activeForm": "Compiling timeline and sequence of events" | |
| }, | |
| { | |
| "content": "Identify root cause of the problem", | |
| "status": "completed", | |
| "activeForm": "Identifying root cause" | |
| }, | |
| { | |
| "content": "Fix Sentry CLI sourcemaps upload command", | |
| "status": "in_progress", | |
| "activeForm": "Fixing Sentry CLI sourcemaps upload command" | |
| }, | |
| { | |
| "content": "Update case study with complete findings", | |
| "status": "pending", | |
| "activeForm": "Updating case study with complete findings" | |
| }, | |
| { | |
| "content": "Run local CI checks before committing", | |
| "status": "pending", | |
| "activeForm": "Running local CI checks" | |
| }, | |
| { | |
| "content": "Commit changes and update PR", | |
| "status": "pending", | |
| "activeForm": "Committing changes and updating PR" | |
| } | |
| ] | |
| } | |
| } | |
| ], | |
| "stop_reason": null, | |
| "stop_sequence": null, | |
| "usage": { | |
| "input_tokens": 1, | |
| "cache_creation_input_tokens": 6772, | |
| "cache_read_input_tokens": 82115, | |
| "cache_creation": { | |
| "ephemeral_5m_input_tokens": 6772, | |
| "ephemeral_1h_input_tokens": 0 | |
| }, | |
| "output_tokens": 556, | |
| "service_tier": "standard" | |
| }, | |
| "context_management": null | |
| }, | |
| "parent_tool_use_id": null, | |
| "session_id": "ad16a8b2-2455-42b8-b611-73f369cef417", | |
| "uuid": "a794bbdb-5a25-4b4d-9861-c84c48b32fc1" | |
| } | |
| [2025-12-22T17:17:20.354Z] [INFO] { | |
| "type": "user", | |
| "message": { | |
| "role": "user", | |
| "content": [ | |
| { | |
| "tool_use_id": "toolu_01HdFcfcsW3qzfEpbVmbLbVf", | |
| "type": "tool_result", | |
| "content": "Todos have been modified successfully. Ensure that you continue to use the todo list to track your progress. Please proceed with the current tasks if applicable" | |
| } | |
| ] | |
| }, | |
| "parent_tool_use_id": null, | |
| "session_id": "ad16a8b2-2455-42b8-b611-73f369cef417", | |
| "uuid": "543aa90d-5d2f-49ad-979c-4d45b7b2a150", | |
| "tool_use_result": { | |
| "oldTodos": [ | |
| { | |
| "content": "Download and analyze screenshot from issue comment", | |
| "status": "completed", | |
| "activeForm": "Downloading and analyzing screenshot from issue comment" | |
| }, | |
| { | |
| "content": "Study GitHub Actions workflows for Docker publishing", | |
| "status": "completed", | |
| "activeForm": "Studying GitHub Actions workflows for Docker publishing" | |
| }, | |
| { | |
| "content": "List recent CI runs with timestamps and check for failures", | |
| "status": "completed", | |
| "activeForm": "Listing recent CI runs with timestamps" | |
| }, | |
| { | |
| "content": "Download logs from relevant CI runs to ci-logs directory", | |
| "status": "completed", | |
| "activeForm": "Downloading logs from CI runs" | |
| }, | |
| { | |
| "content": "Check Docker Hub manifest for konard/hive-mind image", | |
| "status": "completed", | |
| "activeForm": "Checking Docker Hub manifest" | |
| }, | |
| { | |
| "content": "Research online for linux/arm64/v8 manifest error causes", | |
| "status": "completed", | |
| "activeForm": "Researching online for error causes" | |
| }, | |
| { | |
| "content": "Create case study folder structure in docs/case-studies/issue-962", | |
| "status": "in_progress", | |
| "activeForm": "Creating case study folder structure" | |
| }, | |
| { | |
| "content": "Compile timeline and sequence of events", | |
| "status": "pending", | |
| "activeForm": "Compiling timeline and sequence of events" | |
| }, | |
| { | |
| "content": "Identify root cause of the problem", | |
| "status": "pending", | |
| "activeForm": "Identifying root cause" | |
| }, | |
| { | |
| "content": "Propose and implement solutions", | |
| "status": "pending", | |
| "activeForm": "Proposing and implementing solutions" | |
| }, | |
| { | |
| "content": "Update PR with complete case study and fix", | |
| "status": "pending", | |
| "activeForm": "Updating PR with case study and fix" | |
| } | |
| ], | |
| "newTodos": [ | |
| { | |
| "content": "Download and analyze screenshot from issue comment", | |
| "status": "completed", | |
| "activeForm": "Downloading and analyzing screenshot from issue comment" | |
| }, | |
| { | |
| "content": "Study GitHub Actions workflows for Docker publishing", | |
| "status": "completed", | |
| "activeForm": "Studying GitHub Actions workflows for Docker publishing" | |
| }, | |
| { | |
| "content": "List recent CI runs with timestamps and check for failures", | |
| "status": "completed", | |
| "activeForm": "Listing recent CI runs with timestamps" | |
| }, | |
| { | |
| "content": "Download logs from relevant CI runs to ci-logs directory", | |
| "status": "completed", | |
| "activeForm": "Downloading logs from CI runs" | |
| }, | |
| { | |
| "content": "Check Docker Hub manifest for konard/hive-mind image", | |
| "status": "completed", | |
| "activeForm": "Checking Docker Hub manifest" | |
| }, | |
| { | |
| "content": "Research online for linux/arm64/v8 manifest error causes", | |
| "status": "completed", | |
| "activeForm": "Researching online for error causes" | |
| }, | |
| { | |
| "content": "Create case study folder structure in docs/case-studies/issue-962", | |
| "status": "completed", | |
| "activeForm": "Creating case study folder structure" | |
| }, | |
| { | |
| "content": "Compile timeline and sequence of events", | |
| "status": "completed", | |
| "activeForm": "Compiling timeline and sequence of events" | |
| }, | |
| { | |
| "content": "Identify root cause of the problem", | |
| "status": "completed", | |
| "activeForm": "Identifying root cause" | |
| }, | |
| { | |
| "content": "Fix Sentry CLI sourcemaps upload command", | |
| "status": "in_progress", | |
| "activeForm": "Fixing Sentry CLI sourcemaps upload command" | |
| }, | |
| { | |
| "content": "Update case study with complete findings", | |
| "status": "pending", | |
| "activeForm": "Updating case study with complete findings" | |
| }, | |
| { | |
| "content": "Run local CI checks before committing", | |
| "status": "pending", | |
| "activeForm": "Running local CI checks" | |
| }, | |
| { | |
| "content": "Commit changes and update PR", | |
| "status": "pending", | |
| "activeForm": "Committing changes and updating PR" | |
| } | |
| ] | |
| } | |
| } | |
| [2025-12-22T17:17:24.317Z] [INFO] { | |
| "type": "assistant", | |
| "message": { | |
| "model": "claude-opus-4-5-20251101", | |
| "id": "msg_01JuVrmihXPRR9zyYqX4xMu1", | |
| "type": "message", | |
| "role": "assistant", | |
| "content": [ | |
| { | |
| "type": "text", | |
| "text": "Now let me fix the Sentry CLI command. According to my research, in Sentry CLI 3.x, the `sentry-cli releases files` subcommand was removed and should be replaced with `sentry-cli sourcemaps upload`:" | |
| } | |
| ], | |
| "stop_reason": null, | |
| "stop_sequence": null, | |
| "usage": { | |
| "input_tokens": 1, | |
| "cache_creation_input_tokens": 598, | |
| "cache_read_input_tokens": 88887, | |
| "cache_creation": { | |
| "ephemeral_5m_input_tokens": 598, | |
| "ephemeral_1h_input_tokens": 0 | |
| }, | |
| "output_tokens": 1, | |
| "service_tier": "standard" | |
| }, | |
| "context_management": null | |
| }, | |
| "parent_tool_use_id": null, | |
| "session_id": "ad16a8b2-2455-42b8-b611-73f369cef417", | |
| "uuid": "8818a52f-88e6-4dd6-9f75-8c1011b70e7f" | |
| } | |
| [2025-12-22T17:17:31.780Z] [INFO] { | |
| "type": "assistant", | |
| "message": { | |
| "model": "claude-opus-4-5-20251101", | |
| "id": "msg_01JuVrmihXPRR9zyYqX4xMu1", | |
| "type": "message", | |
| "role": "assistant", | |
| "content": [ | |
| { | |
| "type": "tool_use", | |
| "id": "toolu_01Q2ZfpgUsjoYw1qi7XiAfG3", | |
| "name": "Edit", | |
| "input": { | |
| "file_path": "/tmp/gh-issue-solver-1766423610256/scripts/upload-sourcemaps.mjs", | |
| "old_string": " // Upload source maps for all .mjs files\n console.log('📤 Uploading source maps...');\n\n // Upload source files from src directory\n if (existsSync(join(rootDir, 'src'))) {\n execSync(`npx @sentry/cli releases files ${version} upload-sourcemaps ./src --org ${orgName} --project ${projectName} --url-prefix '~/src'`, {\n stdio: 'inherit',\n cwd: rootDir,\n env: { ...process.env, SENTRY_AUTH_TOKEN: authToken },\n });\n }\n\n // Upload test files (useful for debugging test failures)\n if (existsSync(join(rootDir, 'tests'))) {\n execSync(`npx @sentry/cli releases files ${version} upload-sourcemaps ./tests --org ${orgName} --project ${projectName} --url-prefix '~/tests'`, {\n stdio: 'inherit',\n cwd: rootDir,\n env: { ...process.env, SENTRY_AUTH_TOKEN: authToken },\n });\n }", | |
| "new_string": " // Upload source maps for all .mjs files\n // Note: In Sentry CLI 3.x, `releases files` was removed.\n // Use `sourcemaps upload` instead (see: https://github.com/getsentry/sentry-cli/releases)\n console.log('📤 Uploading source maps...');\n\n // Upload source files from src directory\n if (existsSync(join(rootDir, 'src'))) {\n execSync(`npx @sentry/cli sourcemaps upload ./src --org ${orgName} --project ${projectName} --release ${version} --url-prefix '~/src'`, {\n stdio: 'inherit',\n cwd: rootDir,\n env: { ...process.env, SENTRY_AUTH_TOKEN: authToken },\n });\n }\n\n // Upload test files (useful for debugging test failures)\n if (existsSync(join(rootDir, 'tests'))) {\n execSync(`npx @sentry/cli sourcemaps upload ./tests --org ${orgName} --project ${projectName} --release ${version} --url-prefix '~/tests'`, {\n stdio: 'inherit',\n cwd: rootDir,\n env: { ...process.env, SENTRY_AUTH_TOKEN: authToken },\n });\n }" | |
| } | |
| } | |
| ], | |
| "stop_reason": null, | |
| "stop_sequence": null, | |
| "usage": { | |
| "input_tokens": 1, | |
| "cache_creation_input_tokens": 598, | |
| "cache_read_input_tokens": 88887, | |
| "cache_creation": { | |
| "ephemeral_5m_input_tokens": 598, | |
| "ephemeral_1h_input_tokens": 0 | |
| }, | |
| "output_tokens": 750, | |
| "service_tier": "standard" | |
| }, | |
| "context_management": null | |
| }, | |
| "parent_tool_use_id": null, | |
| "session_id": "ad16a8b2-2455-42b8-b611-73f369cef417", | |
| "uuid": "e38f7d57-3bee-4f7d-8a6f-c92c9e6e172b" | |
| } | |
| [2025-12-22T17:17:31.820Z] [INFO] { | |
| "type": "user", | |
| "message": { | |
| "role": "user", | |
| "content": [ | |
| { | |
| "tool_use_id": "toolu_01Q2ZfpgUsjoYw1qi7XiAfG3", | |
| "type": "tool_result", | |
| "content": "The file /tmp/gh-issue-solver-1766423610256/scripts/upload-sourcemaps.mjs has been updated. Here's the result of running `cat -n` on a snippet of the edited file:\n 53→ stdio: 'inherit',\n 54→ env: { ...process.env, SENTRY_AUTH_TOKEN: authToken },\n 55→ });\n 56→\n 57→ // Upload source maps for all .mjs files\n 58→ // Note: In Sentry CLI 3.x, `releases files` was removed.\n 59→ // Use `sourcemaps upload` instead (see: https://github.com/getsentry/sentry-cli/releases)\n 60→ console.log('📤 Uploading source maps...');\n 61→\n 62→ // Upload source files from src directory\n 63→ if (existsSync(join(rootDir, 'src'))) {\n 64→ execSync(`npx @sentry/cli sourcemaps upload ./src --org ${orgName} --project ${projectName} --release ${version} --url-prefix '~/src'`, {\n 65→ stdio: 'inherit',\n 66→ cwd: rootDir,\n 67→ env: { ...process.env, SENTRY_AUTH_TOKEN: authToken },\n 68→ });\n 69→ }\n 70→\n 71→ // Upload test files (useful for debugging test failures)\n 72→ if (existsSync(join(rootDir, 'tests'))) {\n 73→ execSync(`npx @sentry/cli sourcemaps upload ./tests --org ${orgName} --project ${projectName} --release ${version} --url-prefix '~/tests'`, {\n 74→ stdio: 'inherit',\n 75→ cwd: rootDir,\n 76→ env: { ...process.env, SENTRY_AUTH_TOKEN: authToken },\n 77→ });\n 78→ }\n 79→\n 80→ // Finalize the release\n 81→ console.log('✅ Finalizing release...');\n 82→ execSync(`npx @sentry/cli releases finalize ${version} --org ${orgName} --project ${projectName}`, {" | |
| } | |
| ] | |
| }, | |
| "parent_tool_use_id": null, | |
| "session_id": "ad16a8b2-2455-42b8-b611-73f369cef417", | |
| "uuid": "e4a1de39-ddc4-4cb1-b605-b80636ea2385", | |
| "tool_use_result": { | |
| "filePath": "/tmp/gh-issue-solver-1766423610256/scripts/upload-sourcemaps.mjs", | |
| "oldString": " // Upload source maps for all .mjs files\n console.log('📤 Uploading source maps...');\n\n // Upload source files from src directory\n if (existsSync(join(rootDir, 'src'))) {\n execSync(`npx @sentry/cli releases files ${version} upload-sourcemaps ./src --org ${orgName} --project ${projectName} --url-prefix '~/src'`, {\n stdio: 'inherit',\n cwd: rootDir,\n env: { ...process.env, SENTRY_AUTH_TOKEN: authToken },\n });\n }\n\n // Upload test files (useful for debugging test failures)\n if (existsSync(join(rootDir, 'tests'))) {\n execSync(`npx @sentry/cli releases files ${version} upload-sourcemaps ./tests --org ${orgName} --project ${projectName} --url-prefix '~/tests'`, {\n stdio: 'inherit',\n cwd: rootDir,\n env: { ...process.env, SENTRY_AUTH_TOKEN: authToken },\n });\n }", | |
| "newString": " // Upload source maps for all .mjs files\n // Note: In Sentry CLI 3.x, `releases files` was removed.\n // Use `sourcemaps upload` instead (see: https://github.com/getsentry/sentry-cli/releases)\n console.log('📤 Uploading source maps...');\n\n // Upload source files from src directory\n if (existsSync(join(rootDir, 'src'))) {\n execSync(`npx @sentry/cli sourcemaps upload ./src --org ${orgName} --project ${projectName} --release ${version} --url-prefix '~/src'`, {\n stdio: 'inherit',\n cwd: rootDir,\n env: { ...process.env, SENTRY_AUTH_TOKEN: authToken },\n });\n }\n\n // Upload test files (useful for debugging test failures)\n if (existsSync(join(rootDir, 'tests'))) {\n execSync(`npx @sentry/cli sourcemaps upload ./tests --org ${orgName} --project ${projectName} --release ${version} --url-prefix '~/tests'`, {\n stdio: 'inherit',\n cwd: rootDir,\n env: { ...process.env, SENTRY_AUTH_TOKEN: authToken },\n });\n }", | |
| "originalFile": "#!/usr/bin/env node\n\n/**\n * Script to upload source maps to Sentry for each release\n * This should be run in CI/CD after a new version is published\n */\n\nimport { execSync } from 'child_process';\nimport { readFileSync, existsSync } from 'fs';\nimport { fileURLToPath } from 'url';\nimport { dirname, join } from 'path';\n\nconst __filename = fileURLToPath(import.meta.url);\nconst __dirname = dirname(__filename);\nconst rootDir = join(__dirname, '..');\n\n// Read package.json to get version and name\nconst packageJson = JSON.parse(readFileSync(join(rootDir, 'package.json'), 'utf8'));\nconst version = packageJson.version;\nconst projectName = 'hive-mind';\nconst orgName = 'deepassistant';\n\nconsole.log(`📦 Uploading source maps for ${packageJson.name}@${version}`);\n\n// Check if running in CI environment\nconst isCI = process.env.CI === 'true' || process.env.GITHUB_ACTIONS === 'true';\n\n// Get Sentry auth token from environment\nconst authToken = process.env.SENTRY_AUTH_TOKEN;\n\nif (!authToken) {\n if (isCI) {\n console.error('❌ SENTRY_AUTH_TOKEN is required in CI environment');\n process.exit(1);\n } else {\n console.log('⚠️ SENTRY_AUTH_TOKEN not set, skipping source map upload');\n process.exit(0);\n }\n}\n\ntry {\n // Check if Sentry CLI is installed\n try {\n execSync('npx @sentry/cli --version', { stdio: 'ignore' });\n } catch {\n console.log('📥 Installing @sentry/cli...');\n execSync('npm install -g @sentry/cli', { stdio: 'inherit' });\n }\n\n // Create a release in Sentry\n console.log(`🔄 Creating release ${version} in Sentry...`);\n execSync(`npx @sentry/cli releases new ${version} --org ${orgName} --project ${projectName}`, {\n stdio: 'inherit',\n env: { ...process.env, SENTRY_AUTH_TOKEN: authToken },\n });\n\n // Upload source maps for all .mjs files\n console.log('📤 Uploading source maps...');\n\n // Upload source files from src directory\n if (existsSync(join(rootDir, 'src'))) {\n execSync(`npx @sentry/cli releases files ${version} upload-sourcemaps ./src --org ${orgName} --project ${projectName} --url-prefix '~/src'`, {\n stdio: 'inherit',\n cwd: rootDir,\n env: { ...process.env, SENTRY_AUTH_TOKEN: authToken },\n });\n }\n\n // Upload test files (useful for debugging test failures)\n if (existsSync(join(rootDir, 'tests'))) {\n execSync(`npx @sentry/cli releases files ${version} upload-sourcemaps ./tests --org ${orgName} --project ${projectName} --url-prefix '~/tests'`, {\n stdio: 'inherit',\n cwd: rootDir,\n env: { ...process.env, SENTRY_AUTH_TOKEN: authToken },\n });\n }\n\n // Finalize the release\n console.log('✅ Finalizing release...');\n execSync(`npx @sentry/cli releases finalize ${version} --org ${orgName} --project ${projectName}`, {\n stdio: 'inherit',\n env: { ...process.env, SENTRY_AUTH_TOKEN: authToken },\n });\n\n // Set release commits (if in Git repository)\n try {\n const gitCommit = execSync('git rev-parse HEAD', { encoding: 'utf8' }).trim();\n execSync(`npx @sentry/cli releases set-commits ${version} --auto --org ${orgName} --project ${projectName}`, {\n stdio: 'inherit',\n env: { ...process.env, SENTRY_AUTH_TOKEN: authToken },\n });\n console.log(`📝 Associated commits with release ${version}`);\n } catch (err) {\n console.log('⚠️ Could not associate commits (not a git repository or no commits)');\n }\n\n console.log(`✅ Successfully uploaded source maps for version ${version}`);\n} catch (error) {\n console.error('❌ Failed to upload source maps:', error.message);\n if (isCI) {\n process.exit(1);\n }\n}\n", | |
| "structuredPatch": [ | |
| { | |
| "oldStart": 55, | |
| "oldLines": 11, | |
| "newStart": 55, | |
| "newLines": 13, | |
| "lines": [ | |
| " });", | |
| " ", | |
| " // Upload source maps for all .mjs files", | |
| "+ // Note: In Sentry CLI 3.x, `releases files` was removed.", | |
| "+ // Use `sourcemaps upload` instead (see: https://github.com/getsentry/sentry-cli/releases)", | |
| " console.log('📤 Uploading source maps...');", | |
| " ", | |
| " // Upload source files from src directory", | |
| " if (existsSync(join(rootDir, 'src'))) {", | |
| "- execSync(`npx @sentry/cli releases files ${version} upload-sourcemaps ./src --org ${orgName} --project ${projectName} --url-prefix '~/src'`, {", | |
| "+ execSync(`npx @sentry/cli sourcemaps upload ./src --org ${orgName} --project ${projectName} --release ${version} --url-prefix '~/src'`, {", | |
| " stdio: 'inherit',", | |
| " cwd: rootDir,", | |
| " env: { ...process.env, SENTRY_AUTH_TOKEN: authToken }," | |
| ] | |
| }, | |
| { | |
| "oldStart": 68, | |
| "oldLines": 7, | |
| "newStart": 70, | |
| "newLines": 7, | |
| "lines": [ | |
| " ", | |
| " // Upload test files (useful for debugging test failures)", | |
| " if (existsSync(join(rootDir, 'tests'))) {", | |
| "- execSync(`npx @sentry/cli releases files ${version} upload-sourcemaps ./tests --org ${orgName} --project ${projectName} --url-prefix '~/tests'`, {", | |
| "+ execSync(`npx @sentry/cli sourcemaps upload ./tests --org ${orgName} --project ${projectName} --release ${version} --url-prefix '~/tests'`, {", | |
| " stdio: 'inherit',", | |
| " cwd: rootDir,", | |
| " env: { ...process.env, SENTRY_AUTH_TOKEN: authToken }," | |
| ] | |
| } | |
| ], | |
| "userModified": false, | |
| "replaceAll": false | |
| } | |
| } | |
| [2025-12-22T17:17:35.531Z] [INFO] { | |
| "type": "assistant", | |
| "message": { | |
| "model": "claude-opus-4-5-20251101", | |
| "id": "msg_017UssGC2dN1C9XXa9EBtLKx", | |
| "type": "message", | |
| "role": "assistant", | |
| "content": [ | |
| { | |
| "type": "text", | |
| "text": "Now let me update the case study document with the complete findings about the real root cause:" | |
| } | |
| ], | |
| "stop_reason": null, | |
| "stop_sequence": null, | |
| "usage": { | |
| "input_tokens": 1, | |
| "cache_creation_input_tokens": 1310, | |
| "cache_read_input_tokens": 89485, | |
| "cache_creation": { | |
| "ephemeral_5m_input_tokens": 1310, | |
| "ephemeral_1h_input_tokens": 0 | |
| }, | |
| "output_tokens": 4, | |
| "service_tier": "standard" | |
| }, | |
| "context_management": null | |
| }, | |
| "parent_tool_use_id": null, | |
| "session_id": "ad16a8b2-2455-42b8-b611-73f369cef417", | |
| "uuid": "03c06433-674d-4f6a-9060-c8ba933bfcea" | |
| } | |
| [2025-12-22T17:17:47.063Z] [INFO] { | |
| "type": "assistant", | |
| "message": { | |
| "model": "claude-opus-4-5-20251101", | |
| "id": "msg_017UssGC2dN1C9XXa9EBtLKx", | |
| "type": "message", | |
| "role": "assistant", | |
| "content": [ | |
| { | |
| "type": "tool_use", | |
| "id": "toolu_01Je2SxTa8fg8zDZryDhJXrF", | |
| "name": "Edit", | |
| "input": { | |
| "file_path": "/tmp/gh-issue-solver-1766423610256/docs/case-studies/issue-962/README.md", | |
| "old_string": "# Case Study: Docker Image Not Supported on Apple Silicon (Issue #962)\n\n**Date**: 2025-12-22\n**Issue**: [#962](https://github.com/link-assistant/hive-mind/issues/962)\n**Pull Request**: [#963](https://github.com/link-assistant/hive-mind/pull/963)\n**Status**: Implemented - Multi-platform build enabled (amd64 + arm64)\n\n---\n\n## Executive Summary\n\nThe Docker image `konard/hive-mind:latest` fails to pull on macOS with Apple Silicon (M1/M2/M3) processors because the image is built only for the `linux/amd64` architecture. Apple Silicon uses the ARM64 architecture (`linux/arm64/v8`), and when Docker attempts to pull an image without a matching platform manifest, it returns the error: \"no matching manifest for linux/arm64/v8 in the manifest list entries.\"\n\nThis is a **configuration limitation**, not a bug in the code. The solution is to enable multi-platform builds in the CI/CD pipeline.", | |
| "new_string": "# Case Study: Docker Image Not Supported on Apple Silicon (Issue #962)\n\n**Date**: 2025-12-22\n**Issue**: [#962](https://github.com/link-assistant/hive-mind/issues/962)\n**Pull Requests**:\n- [#963](https://github.com/link-assistant/hive-mind/pull/963) - Multi-platform build enabled (amd64 + arm64)\n- [#966](https://github.com/link-assistant/hive-mind/pull/966) - Fix Sentry CLI breaking Docker publish\n**Status**: Investigating - Two issues identified\n\n---\n\n## Executive Summary\n\nThe Docker image `konard/hive-mind:latest` fails to pull on macOS with Apple Silicon (M1/M2/M3) processors because the image is built only for the `linux/amd64` architecture. Apple Silicon uses the ARM64 architecture (`linux/arm64/v8`), and when Docker attempts to pull an image without a matching platform manifest, it returns the error: \"no matching manifest for linux/arm64/v8 in the manifest list entries.\"\n\n**Critical Finding**: Investigation revealed **two separate but related issues**:\n\n1. **Primary Issue (Blocking)**: Docker images have not been published since v0.38.1 (Dec 9, 2025) due to a broken Sentry CLI command in the release workflow. The `sentry-cli releases files` command was removed in Sentry CLI 3.x, causing the Release job to fail and skip Docker publishing.\n\n2. **Secondary Issue (Configuration)**: Multi-platform ARM64 support was added in PR #963 but never took effect because Docker publishing was blocked by Issue #1.\n\n**Current Gap**: 10+ releases (0.38.2 through 0.48.3) have npm packages but NO Docker images." | |
| } | |
| } | |
| ], | |
| "stop_reason": null, | |
| "stop_sequence": null, | |
| "usage": { | |
| "input_tokens": 1, | |
| "cache_creation_input_tokens": 1310, | |
| "cache_read_input_tokens": 89485, | |
| "cache_creation": { | |
| "ephemeral_5m_input_tokens": 1310, | |
| "ephemeral_1h_input_tokens": 0 | |
| }, | |
| "output_tokens": 808, | |
| "service_tier": "standard" | |
| }, | |
| "context_management": null | |
| }, | |
| "parent_tool_use_id": null, | |
| "session_id": "ad16a8b2-2455-42b8-b611-73f369cef417", | |
| "uuid": "ad5193dd-dcb7-47bc-9b7a-914e3245bfd9" | |
| } | |
| [2025-12-22T17:17:47.112Z] [INFO] { | |
| "type": "user", | |
| "message": { | |
| "role": "user", | |
| "content": [ | |
| { | |
| "tool_use_id": "toolu_01Je2SxTa8fg8zDZryDhJXrF", | |
| "type": "tool_result", | |
| "content": "The file /tmp/gh-issue-solver-1766423610256/docs/case-studies/issue-962/README.md has been updated. Here's the result of running `cat -n` on a snippet of the edited file:\n 1→# Case Study: Docker Image Not Supported on Apple Silicon (Issue #962)\n 2→\n 3→**Date**: 2025-12-22\n 4→**Issue**: [#962](https://github.com/link-assistant/hive-mind/issues/962)\n 5→**Pull Requests**:\n 6→- [#963](https://github.com/link-assistant/hive-mind/pull/963) - Multi-platform build enabled (amd64 + arm64)\n 7→- [#966](https://github.com/link-assistant/hive-mind/pull/966) - Fix Sentry CLI breaking Docker publish\n 8→**Status**: Investigating - Two issues identified\n 9→\n 10→---\n 11→\n 12→## Executive Summary\n 13→\n 14→The Docker image `konard/hive-mind:latest` fails to pull on macOS with Apple Silicon (M1/M2/M3) processors because the image is built only for the `linux/amd64` architecture. Apple Silicon uses the ARM64 architecture (`linux/arm64/v8`), and when Docker attempts to pull an image without a matching platform manifest, it returns the error: \"no matching manifest for linux/arm64/v8 in the manifest list entries.\"\n 15→\n 16→**Critical Finding**: Investigation revealed **two separate but related issues**:\n 17→\n 18→1. **Primary Issue (Blocking)**: Docker images have not been published since v0.38.1 (Dec 9, 2025) due to a broken Sentry CLI command in the release workflow. The `sentry-cli releases files` command was removed in Sentry CLI 3.x, causing the Release job to fail and skip Docker publishing.\n 19→\n 20→2. **Secondary Issue (Configuration)**: Multi-platform ARM64 support was added in PR #963 but never took effect because Docker publishing was blocked by Issue #1.\n 21→\n 22→**Current Gap**: 10+ releases (0.38.2 through 0.48.3) have npm packages but NO Docker images.\n 23→\n 24→---\n 25→\n 26→## Problem Statement" | |
| } | |
| ] | |
| }, | |
| "parent_tool_use_id": null, | |
| "session_id": "ad16a8b2-2455-42b8-b611-73f369cef417", | |
| "uuid": "31c98053-9760-417e-9176-59e275296f02", | |
| "tool_use_result": { | |
| "filePath": "/tmp/gh-issue-solver-1766423610256/docs/case-studies/issue-962/README.md", | |
| "oldString": "# Case Study: Docker Image Not Supported on Apple Silicon (Issue #962)\n\n**Date**: 2025-12-22\n**Issue**: [#962](https://github.com/link-assistant/hive-mind/issues/962)\n**Pull Request**: [#963](https://github.com/link-assistant/hive-mind/pull/963)\n**Status**: Implemented - Multi-platform build enabled (amd64 + arm64)\n\n---\n\n## Executive Summary\n\nThe Docker image `konard/hive-mind:latest` fails to pull on macOS with Apple Silicon (M1/M2/M3) processors because the image is built only for the `linux/amd64` architecture. Apple Silicon uses the ARM64 architecture (`linux/arm64/v8`), and when Docker attempts to pull an image without a matching platform manifest, it returns the error: \"no matching manifest for linux/arm64/v8 in the manifest list entries.\"\n\nThis is a **configuration limitation**, not a bug in the code. The solution is to enable multi-platform builds in the CI/CD pipeline.", | |
| "newString": "# Case Study: Docker Image Not Supported on Apple Silicon (Issue #962)\n\n**Date**: 2025-12-22\n**Issue**: [#962](https://github.com/link-assistant/hive-mind/issues/962)\n**Pull Requests**:\n- [#963](https://github.com/link-assistant/hive-mind/pull/963) - Multi-platform build enabled (amd64 + arm64)\n- [#966](https://github.com/link-assistant/hive-mind/pull/966) - Fix Sentry CLI breaking Docker publish\n**Status**: Investigating - Two issues identified\n\n---\n\n## Executive Summary\n\nThe Docker image `konard/hive-mind:latest` fails to pull on macOS with Apple Silicon (M1/M2/M3) processors because the image is built only for the `linux/amd64` architecture. Apple Silicon uses the ARM64 architecture (`linux/arm64/v8`), and when Docker attempts to pull an image without a matching platform manifest, it returns the error: \"no matching manifest for linux/arm64/v8 in the manifest list entries.\"\n\n**Critical Finding**: Investigation revealed **two separate but related issues**:\n\n1. **Primary Issue (Blocking)**: Docker images have not been published since v0.38.1 (Dec 9, 2025) due to a broken Sentry CLI command in the release workflow. The `sentry-cli releases files` command was removed in Sentry CLI 3.x, causing the Release job to fail and skip Docker publishing.\n\n2. **Secondary Issue (Configuration)**: Multi-platform ARM64 support was added in PR #963 but never took effect because Docker publishing was blocked by Issue #1.\n\n**Current Gap**: 10+ releases (0.38.2 through 0.48.3) have npm packages but NO Docker images.", | |
| "originalFile": "# Case Study: Docker Image Not Supported on Apple Silicon (Issue #962)\n\n**Date**: 2025-12-22\n**Issue**: [#962](https://github.com/link-assistant/hive-mind/issues/962)\n**Pull Request**: [#963](https://github.com/link-assistant/hive-mind/pull/963)\n**Status**: Implemented - Multi-platform build enabled (amd64 + arm64)\n\n---\n\n## Executive Summary\n\nThe Docker image `konard/hive-mind:latest` fails to pull on macOS with Apple Silicon (M1/M2/M3) processors because the image is built only for the `linux/amd64` architecture. Apple Silicon uses the ARM64 architecture (`linux/arm64/v8`), and when Docker attempts to pull an image without a matching platform manifest, it returns the error: \"no matching manifest for linux/arm64/v8 in the manifest list entries.\"\n\nThis is a **configuration limitation**, not a bug in the code. The solution is to enable multi-platform builds in the CI/CD pipeline.\n\n---\n\n## Problem Statement\n\n### Symptom\n\nWhen attempting to pull the Docker image on macOS with Apple Silicon:\n\n```bash\nkonard@MacBook-Pro-Konstantin ~ % docker pull konard/hive-mind:latest\nError response from daemon: no matching manifest for linux/arm64/v8 in the manifest list entries: no match for platform in manifest: not found\n```\n\n### Expected Behavior\n\nThe Docker image should pull successfully on both Intel-based systems (amd64) and Apple Silicon systems (arm64).\n\n---\n\n## Data Collection\n\n### Docker Hub Manifest Analysis\n\nInspecting the available tags on Docker Hub reveals that all published images only support `amd64`:\n\n| Tag | Architectures |\n| ------- | -------------- |\n| latest | amd64, unknown |\n| 0.38.1 | amd64, unknown |\n| 0.38.0 | amd64, unknown |\n| 0.37.28 | amd64, unknown |\n| 0.37.27 | amd64, unknown |\n| 0.37.26 | amd64, unknown |\n| 0.37.25 | amd64, unknown |\n| 0.37.24 | amd64, unknown |\n| 0.37.23 | amd64, unknown |\n| 0.37.22 | amd64, unknown |\n\n**Source**: Docker Hub API at `https://hub.docker.com/v2/repositories/konard/hive-mind/tags`\n\n### CI/CD Configuration Analysis\n\nThe current release workflow (`/.github/workflows/release.yml`) explicitly builds for `linux/amd64` only:\n\n```yaml\n# Line 1619-1629 in release.yml\n- name: Build and push Docker image\n uses: docker/build-push-action@v5\n with:\n context: .\n file: ./Dockerfile\n push: true\n tags: ${{ steps.meta.outputs.tags }}\n labels: ${{ steps.meta.outputs.labels }}\n cache-from: type=gha\n cache-to: type=gha,mode=max\n platforms: linux/amd64 # <-- Only AMD64 is built\n```\n\n---\n\n## Timeline of Events\n\n### Initial Docker Setup (September 2025)\n\n**Commit**: `9e71c3b` - \"Dockerize solve.mjs with credential transfer support\"\n\n- First Docker support added to the project\n- Used `.gitpod.Dockerfile` as base\n- Created `docker-compose.yml`, `docker-solve.sh`, and `DOCKER.md`\n- No platform specification (defaulted to runner's architecture)\n\n### Production Docker Image (November 2025)\n\n**Commit**: `a8c17de` - \"Add Docker support with Ubuntu 24.04 and CI/CD pipeline\"\n\n- Created `Dockerfile.production` with Ubuntu 24.04 base\n- Added GitHub Actions workflow for Docker Hub publishing\n- **No `platforms` parameter specified** - builds defaulted to `linux/amd64` (GitHub runner architecture)\n\n### Workflow Consolidation (December 2025)\n\n**Commit**: `0297bc4` - \"Merge Docker and Helm releases into main workflow\"\n\n- Docker publish moved to `main.yml`\n- `platforms: linux/amd64` explicitly added to workflow\n\n**Commit**: `40545f6` - \"Consolidate CI/CD to single release.yml following template best practices\"\n\n- All workflows consolidated into `release.yml`\n- `platforms: linux/amd64` preserved\n\n### Issue Reported (December 2025)\n\n**Issue**: [#962](https://github.com/link-assistant/hive-mind/issues/962)\n\n- User attempted `docker pull konard/hive-mind:latest` on macOS with Apple Silicon\n- Received \"no matching manifest for linux/arm64/v8\" error\n- Questioned whether this is a bug in code or system configuration\n\n---\n\n## Root Cause Analysis\n\n### Primary Root Cause\n\nThe Docker image is built exclusively for `linux/amd64` architecture. Apple Silicon Macs use ARM64 processors, which require images built for `linux/arm64/v8` (or a multi-architecture manifest that includes ARM64).\n\n### Contributing Factors\n\n1. **Default GitHub Actions Runners**: Ubuntu runners on GitHub Actions are `x86_64` (amd64), so builds without explicit platform specification only produce amd64 images.\n\n2. **Explicit Single-Platform Configuration**: The workflow explicitly specifies `platforms: linux/amd64`, which prevents multi-platform builds.\n\n3. **No QEMU/Buildx Multi-Platform Setup**: The workflow uses `docker/setup-buildx-action@v3` but doesn't use `docker/setup-qemu-action@v3` for cross-platform emulation.\n\n4. **Historical Design Decision**: Docker support was initially designed for server deployments (typically Intel-based), with local development on macOS as a secondary use case.\n\n### Why This Wasn't a Bug in Code\n\nThis is a **CI/CD configuration limitation**, not a code bug:\n\n- The Dockerfile itself is architecture-agnostic\n- The base image (`ubuntu:24.04`) supports multi-architecture\n- All installed tools (Node.js, Homebrew, etc.) are available for ARM64\n- The limitation is purely in how the image is built and published\n\n---\n\n## Technical Analysis\n\n### Docker Multi-Architecture Fundamentals\n\nDocker uses **manifest lists** to support multiple architectures. A manifest list is a collection of architecture-specific image manifests:\n\n```\nkonard/hive-mind:latest (manifest list)\n├── linux/amd64 (image manifest) ← Currently the only entry\n├── linux/arm64/v8 (image manifest) ← Missing, causes the error\n├── linux/arm/v7 (image manifest) ← Optional for 32-bit ARM\n└── ...\n```\n\nWhen you run `docker pull`, the Docker daemon:\n\n1. Fetches the manifest list for the tag\n2. Looks for a manifest matching the local architecture\n3. Pulls that specific image\n\nIf no matching manifest exists, the error \"no matching manifest\" occurs.\n\n### Current Build Process\n\n```\n┌─────────────────────┐\n│ GitHub Actions │\n│ (ubuntu-latest) │\n│ Architecture: │\n│ x86_64/amd64 │\n└─────────┬───────────┘\n │\n ▼\n┌─────────────────────┐\n│ docker/buildx │\n│ platforms: │\n│ linux/amd64 │\n└─────────┬───────────┘\n │\n ▼\n┌─────────────────────┐\n│ Docker Hub │\n│ konard/hive-mind │\n│ Only amd64 images │\n└─────────────────────┘\n```\n\n### Required Changes for Multi-Platform Support\n\n```\n┌─────────────────────┐\n│ GitHub Actions │\n│ (ubuntu-latest) │\n└─────────┬───────────┘\n │\n ▼\n┌─────────────────────┐\n│ QEMU Emulation │ ← NEW: Enables ARM builds on x86 runners\n│ docker/setup-qemu │\n└─────────┬───────────┘\n │\n ▼\n┌─────────────────────┐\n│ docker/buildx │\n│ platforms: │\n│ linux/amd64, │ ← UPDATED: Both platforms\n│ linux/arm64 │\n└─────────┬───────────┘\n │\n ▼\n┌─────────────────────┐\n│ Docker Hub │\n│ konard/hive-mind │\n│ amd64 + arm64 │ ← Multi-arch manifest\n└─────────────────────┘\n```\n\n---\n\n## Proposed Solutions\n\n### Solution 1: Enable Multi-Platform Builds with QEMU (Recommended)\n\n**Pros**:\n\n- Works with existing GitHub-hosted runners (no infrastructure changes)\n- Single workflow produces both architectures\n- Industry-standard approach used by major projects\n\n**Cons**:\n\n- ARM builds through QEMU emulation are slower (2-10x)\n- Build times will increase (current ~5-10min may become ~15-30min)\n\n**Implementation**:\n\n```yaml\n# In docker-publish job of release.yml\n\n# Add QEMU setup step before Docker Buildx\n- name: Set up QEMU\n uses: docker/setup-qemu-action@v3\n\n- name: Set up Docker Buildx\n uses: docker/setup-buildx-action@v3\n\n# Update build-push-action\n- name: Build and push Docker image\n uses: docker/build-push-action@v5\n with:\n context: .\n file: ./Dockerfile\n push: true\n tags: ${{ steps.meta.outputs.tags }}\n labels: ${{ steps.meta.outputs.labels }}\n cache-from: type=gha\n cache-to: type=gha,mode=max\n platforms: linux/amd64,linux/arm64 # <-- Add arm64\n```\n\n### Solution 2: Matrix Build with Native ARM Runner\n\n**Pros**:\n\n- Native ARM builds are 10-30x faster than QEMU emulation\n- Build times remain similar to current single-platform builds\n\n**Cons**:\n\n- Requires ARM runner availability (GitHub now offers `ubuntu-24.04-arm`)\n- More complex workflow with matrix strategy\n- May incur additional costs depending on runner availability\n\n**Implementation**:\n\n```yaml\ndocker-publish:\n strategy:\n matrix:\n include:\n - platform: linux/amd64\n runner: ubuntu-latest\n - platform: linux/arm64\n runner: ubuntu-24.04-arm\n runs-on: ${{ matrix.runner }}\n # ... build each platform natively, then merge manifests\n```\n\n### Solution 3: User Workaround (No CI Changes)\n\nFor users who need immediate access without waiting for CI changes:\n\n**Option A: Enable Rosetta 2 Emulation in Docker Desktop**\n\n1. Open Docker Desktop on macOS\n2. Go to Settings → Features in Development\n3. Enable \"Use Rosetta for x86/amd64 emulation on Apple Silicon\"\n4. Click Apply & Restart\n\n**Option B: Force AMD64 Platform**\n\n```bash\ndocker pull --platform linux/amd64 konard/hive-mind:latest\n```\n\nThis pulls the AMD64 image and runs it through emulation. Performance will be reduced but functional.\n\n**Option C: Build Locally**\n\n```bash\ngit clone https://github.com/link-assistant/hive-mind.git\ncd hive-mind\ndocker build -t hive-mind:local .\n```\n\nBuilding locally on Apple Silicon will produce a native ARM64 image.\n\n---\n\n## Recommendation\n\n**Primary Recommendation**: Implement **Solution 1** (QEMU-based multi-platform builds).\n\n**Rationale**:\n\n1. **Simplicity**: Minimal workflow changes required\n2. **Compatibility**: Works with existing GitHub-hosted runners\n3. **Cost**: No additional infrastructure or runner costs\n4. **Maintainability**: Single build produces both architectures\n5. **Industry Standard**: Used by most major Docker projects\n\n**Secondary Recommendation**: Document **Solution 3** (user workarounds) in `docs/DOCKER.md` as an immediate mitigation for users on Apple Silicon.\n\n---\n\n## Implementation\n\nThe recommended Solution 1 (QEMU-based multi-platform builds) has been implemented in PR [#963](https://github.com/link-assistant/hive-mind/pull/963).\n\n### Changes Made\n\n**1. Docker Publish Job (`docker-publish`)**\n\nAdded QEMU setup and updated platforms:\n\n```yaml\n# Added before docker/setup-buildx-action\n- name: Set up QEMU\n uses: docker/setup-qemu-action@v3\n\n# Updated platforms parameter\n- name: Build and push Docker image\n uses: docker/build-push-action@v5\n with:\n # ... existing configuration ...\n platforms: linux/amd64,linux/arm64 # Previously: linux/amd64\n```\n\n**2. Docker PR Check Job (`docker-pr-check`)**\n\nAdded QEMU and Buildx setup for consistency, but only runs amd64 build to avoid disk space issues:\n\n```yaml\n- name: Set up QEMU\n uses: docker/setup-qemu-action@v3\n\n- name: Set up Docker Buildx\n uses: docker/setup-buildx-action@v3\n\n- name: Build Docker image with log capture (amd64)\n run: |\n # Note: Multi-platform builds (amd64+arm64) are tested in docker-publish job during release\n # PR checks only validate amd64 to avoid disk space issues on runners\n docker buildx build --progress=plain --platform linux/amd64 --load -t ${{ env.IMAGE_NAME }}:test .\n```\n\nNote: Full multi-platform builds are not run during PR checks because the Docker image\nis very large (~6GB+ with all development tools), and building for both architectures\nwould exceed the GitHub runner disk space limits. The multi-platform build is tested\nduring the actual release in the `docker-publish` job.\n\n### Expected Results After Merge\n\nOnce this PR is merged and a new release is published:\n\n1. **Docker Hub images** will contain manifests for both `linux/amd64` and `linux/arm64`\n2. **Apple Silicon users** can run `docker pull konard/hive-mind:latest` without errors\n3. **ARM-based Linux systems** (Raspberry Pi, AWS Graviton) will also be supported\n\n### Verification\n\nAfter the next release, users can verify multi-platform support:\n\n```bash\n# Check manifest (should show both amd64 and arm64)\ndocker manifest inspect konard/hive-mind:latest\n\n# Pull on Apple Silicon (should work without --platform flag)\ndocker pull konard/hive-mind:latest\n```\n\n---\n\n## Impact Assessment\n\n### Users Affected\n\n- All macOS users with Apple Silicon (M1, M2, M3, M4 chips)\n- Estimated ~50% of macOS developer community (based on Apple Silicon adoption since 2020)\n- Users running ARM-based Linux systems (Raspberry Pi, AWS Graviton, etc.)\n\n### Build Time Impact\n\nEnabling multi-platform builds will increase CI build times:\n\n- **Current**: ~5-10 minutes for single-platform\n- **With QEMU**: ~15-30 minutes for dual-platform\n- **With Matrix**: ~10-15 minutes per platform (parallel)\n\n### Testing Requirements\n\nMulti-platform builds should include verification:\n\n1. Pull test on AMD64 system\n2. Pull test on ARM64 system (or emulation)\n3. Basic functionality test on both platforms\n\n---\n\n## References\n\n### Internal Documentation\n\n- [DOCKER.md](../../../docs/DOCKER.md) - Docker usage documentation\n- [release.yml](../../../.github/workflows/release.yml) - CI/CD workflow\n\n### External Resources\n\n- [Docker Multi-platform Image Builds](https://docs.docker.com/build/building/multi-platform/)\n- [GitHub Actions: Building Multi-Platform Docker Images](https://docs.docker.com/build/ci/github-actions/multi-platform/)\n- [Building Multi-Platform Docker Images for ARM64 in GitHub Actions](https://www.blacksmith.sh/blog/building-multi-platform-docker-images-for-arm64-in-github-actions)\n- [Docker Buildx: Build Multi-Platform Images Like a Pro](https://dev.to/marufsarker/docker-buildx-build-multi-platform-images-like-a-pro-31hn)\n- [How to Specify Platform for Pulling Images](https://www.codestudy.net/blog/change-platform-for-kubernetes-when-pulling-image/)\n\n### Related Issues and Discussions\n\n- [Docker Forum: Manifest lists linux/arm64](https://forums.docker.com/t/manifest-lists-linux-arm64-but-no-matching-manifest-for-linux-arm64-exists-in-the-manifest-list-entries/133173)\n- [Foundry Docker ARM64 Issue #7680](https://github.com/foundry-rs/foundry/issues/7680)\n- [Netflix Conductor Docker ARM64 Issue #2975](https://github.com/Netflix/conductor/issues/2975)\n- [Apache Superset ARM64 Issue #25434](https://github.com/apache/superset/issues/25434)\n\n---\n\n## Appendix A: Error Message Analysis\n\nThe error message contains valuable diagnostic information:\n\n```\nError response from daemon: no matching manifest for linux/arm64/v8 in the manifest list entries: no match for platform in manifest: not found\n```\n\n| Component | Meaning |\n| ----------------------- | ------------------------------------------------------ |\n| `Error response` | Docker daemon is responding to a client request |\n| `no matching manifest` | The requested architecture wasn't found |\n| `linux/arm64/v8` | The architecture the client is running (Apple Silicon) |\n| `manifest list entries` | The list of supported architectures in the image |\n| `no match for platform` | Final confirmation: platform mismatch |\n\n---\n\n## Appendix B: Docker Hub Tag Architecture Details\n\nData retrieved from Docker Hub API:\n\n```json\n{\n \"name\": \"latest\",\n \"images\": [\n {\n \"architecture\": \"amd64\",\n \"os\": \"linux\",\n \"digest\": \"sha256:...\"\n }\n ]\n}\n```\n\nNote: Only `amd64` is present in the manifest. No `arm64` entry exists.\n\n---\n\n## Appendix C: Verification Commands\n\n### Check Image Manifest (if Docker is available)\n\n```bash\ndocker manifest inspect konard/hive-mind:latest\n```\n\n### Check Local Architecture\n\n```bash\n# On macOS\nuname -m # Returns \"arm64\" for Apple Silicon\n\n# On Linux\ndpkg --print-architecture # Returns \"amd64\" or \"arm64\"\n```\n\n### Test Pull with Explicit Platform\n\n```bash\n# Force AMD64 (works with emulation on Apple Silicon)\ndocker pull --platform linux/amd64 konard/hive-mind:latest\n\n# Request ARM64 (will fail until multi-platform is enabled)\ndocker pull --platform linux/arm64 konard/hive-mind:latest\n```\n", | |
| "structuredPatch": [ | |
| { | |
| "oldStart": 2, | |
| "oldLines": 8, | |
| "newStart": 2, | |
| "newLines": 10, | |
| "lines": [ | |
| " ", | |
| " **Date**: 2025-12-22", | |
| " **Issue**: [#962](https://github.com/link-assistant/hive-mind/issues/962)", | |
| "-**Pull Request**: [#963](https://github.com/link-assistant/hive-mind/pull/963)", | |
| "-**Status**: Implemented - Multi-platform build enabled (amd64 + arm64)", | |
| "+**Pull Requests**:", | |
| "+- [#963](https://github.com/link-assistant/hive-mind/pull/963) - Multi-platform build enabled (amd64 + arm64)", | |
| "+- [#966](https://github.com/link-assistant/hive-mind/pull/966) - Fix Sentry CLI breaking Docker publish", | |
| "+**Status**: Investigating - Two issues identified", | |
| " ", | |
| " ---", | |
| " " | |
| ] | |
| }, | |
| { | |
| "oldStart": 11, | |
| "oldLines": 8, | |
| "newStart": 13, | |
| "newLines": 14, | |
| "lines": [ | |
| " ", | |
| " The Docker image `konard/hive-mind:latest` fails to pull on macOS with Apple Silicon (M1/M2/M3) processors because the image is built only for the `linux/amd64` architecture. Apple Silicon uses the ARM64 architecture (`linux/arm64/v8`), and when Docker attempts to pull an image without a matching platform manifest, it returns the error: \"no matching manifest for linux/arm64/v8 in the manifest list entries.\"", | |
| " ", | |
| "-This is a **configuration limitation**, not a bug in the code. The solution is to enable multi-platform builds in the CI/CD pipeline.", | |
| "+**Critical Finding**: Investigation revealed **two separate but related issues**:", | |
| " ", | |
| "+1. **Primary Issue (Blocking)**: Docker images have not been published since v0.38.1 (Dec 9, 2025) due to a broken Sentry CLI command in the release workflow. The `sentry-cli releases files` command was removed in Sentry CLI 3.x, causing the Release job to fail and skip Docker publishing.", | |
| "+", | |
| "+2. **Secondary Issue (Configuration)**: Multi-platform ARM64 support was added in PR #963 but never took effect because Docker publishing was blocked by Issue #1.", | |
| "+", | |
| "+**Current Gap**: 10+ releases (0.38.2 through 0.48.3) have npm packages but NO Docker images.", | |
| "+", | |
| " ---", | |
| " ", | |
| " ## Problem Statement" | |
| ] | |
| } | |
| ], | |
| "userModified": false, | |
| "replaceAll": false | |
| } | |
| } | |
| [2025-12-22T17:17:50.254Z] [INFO] { | |
| "type": "assistant", | |
| "message": { | |
| "model": "claude-opus-4-5-20251101", | |
| "id": "msg_01EspSujskwMr7FRcwRU2ZgL", | |
| "type": "message", | |
| "role": "assistant", | |
| "content": [ | |
| { | |
| "type": "text", | |
| "text": "Now let me add a new section about the real root cause after the problem statement:" | |
| } | |
| ], | |
| "stop_reason": null, | |
| "stop_sequence": null, | |
| "usage": { | |
| "input_tokens": 1, | |
| "cache_creation_input_tokens": 1394, | |
| "cache_read_input_tokens": 90795, | |
| "cache_creation": { | |
| "ephemeral_5m_input_tokens": 1394, | |
| "ephemeral_1h_input_tokens": 0 | |
| }, | |
| "output_tokens": 2, | |
| "service_tier": "standard" | |
| }, | |
| "context_management": null | |
| }, | |
| "parent_tool_use_id": null, | |
| "session_id": "ad16a8b2-2455-42b8-b611-73f369cef417", | |
| "uuid": "1311b1c8-178b-45e7-86c5-2528e335f6b7" | |
| } | |
| [2025-12-22T17:17:50.942Z] [INFO] { | |
| "type": "assistant", | |
| "message": { | |
| "model": "claude-opus-4-5-20251101", | |
| "id": "msg_01EspSujskwMr7FRcwRU2ZgL", | |
| "type": "message", | |
| "role": "assistant", | |
| "content": [ | |
| { | |
| "type": "tool_use", | |
| "id": "toolu_01DPxbVtS3t2vBeNUzNJQQaX", | |
| "name": "Read", | |
| "input": { | |
| "file_path": "/tmp/gh-issue-solver-1766423610256/docs/case-studies/issue-962/README.md", | |
| "offset": 30, | |
| "limit": 100 | |
| } | |
| } | |
| ], | |
| "stop_reason": null, | |
| "stop_sequence": null, | |
| "usage": { | |
| "input_tokens": 1, | |
| "cache_creation_input_tokens": 1394, | |
| "cache_read_input_tokens": 90795, | |
| "cache_creation": { | |
| "ephemeral_5m_input_tokens": 1394, | |
| "ephemeral_1h_input_tokens": 0 | |
| }, | |
| "output_tokens": 2, | |
| "service_tier": "standard" | |
| }, | |
| "context_management": null | |
| }, | |
| "parent_tool_use_id": null, | |
| "session_id": "ad16a8b2-2455-42b8-b611-73f369cef417", | |
| "uuid": "c6cd8221-6c47-4e93-bc0b-6767338a06aa" | |
| } | |
| [2025-12-22T17:17:50.990Z] [INFO] { | |
| "type": "user", | |
| "message": { | |
| "role": "user", | |
| "content": [ | |
| { | |
| "tool_use_id": "toolu_01DPxbVtS3t2vBeNUzNJQQaX", | |
| "type": "tool_result", | |
| "content": " 30→When attempting to pull the Docker image on macOS with Apple Silicon:\n 31→\n 32→```bash\n 33→konard@MacBook-Pro-Konstantin ~ % docker pull konard/hive-mind:latest\n 34→Error response from daemon: no matching manifest for linux/arm64/v8 in the manifest list entries: no match for platform in manifest: not found\n 35→```\n 36→\n 37→### Expected Behavior\n 38→\n 39→The Docker image should pull successfully on both Intel-based systems (amd64) and Apple Silicon systems (arm64).\n 40→\n 41→---\n 42→\n 43→## Data Collection\n 44→\n 45→### Docker Hub Manifest Analysis\n 46→\n 47→Inspecting the available tags on Docker Hub reveals that all published images only support `amd64`:\n 48→\n 49→| Tag | Architectures |\n 50→| ------- | -------------- |\n 51→| latest | amd64, unknown |\n 52→| 0.38.1 | amd64, unknown |\n 53→| 0.38.0 | amd64, unknown |\n 54→| 0.37.28 | amd64, unknown |\n 55→| 0.37.27 | amd64, unknown |\n 56→| 0.37.26 | amd64, unknown |\n 57→| 0.37.25 | amd64, unknown |\n 58→| 0.37.24 | amd64, unknown |\n 59→| 0.37.23 | amd64, unknown |\n 60→| 0.37.22 | amd64, unknown |\n 61→\n 62→**Source**: Docker Hub API at `https://hub.docker.com/v2/repositories/konard/hive-mind/tags`\n 63→\n 64→### CI/CD Configuration Analysis\n 65→\n 66→The current release workflow (`/.github/workflows/release.yml`) explicitly builds for `linux/amd64` only:\n 67→\n 68→```yaml\n 69→# Line 1619-1629 in release.yml\n 70→- name: Build and push Docker image\n 71→ uses: docker/build-push-action@v5\n 72→ with:\n 73→ context: .\n 74→ file: ./Dockerfile\n 75→ push: true\n 76→ tags: ${{ steps.meta.outputs.tags }}\n 77→ labels: ${{ steps.meta.outputs.labels }}\n 78→ cache-from: type=gha\n 79→ cache-to: type=gha,mode=max\n 80→ platforms: linux/amd64 # <-- Only AMD64 is built\n 81→```\n 82→\n 83→---\n 84→\n 85→## Timeline of Events\n 86→\n 87→### Initial Docker Setup (September 2025)\n 88→\n 89→**Commit**: `9e71c3b` - \"Dockerize solve.mjs with credential transfer support\"\n 90→\n 91→- First Docker support added to the project\n 92→- Used `.gitpod.Dockerfile` as base\n 93→- Created `docker-compose.yml`, `docker-solve.sh`, and `DOCKER.md`\n 94→- No platform specification (defaulted to runner's architecture)\n 95→\n 96→### Production Docker Image (November 2025)\n 97→\n 98→**Commit**: `a8c17de` - \"Add Docker support with Ubuntu 24.04 and CI/CD pipeline\"\n 99→\n 100→- Created `Dockerfile.production` with Ubuntu 24.04 base\n 101→- Added GitHub Actions workflow for Docker Hub publishing\n 102→- **No `platforms` parameter specified** - builds defaulted to `linux/amd64` (GitHub runner architecture)\n 103→\n 104→### Workflow Consolidation (December 2025)\n 105→\n 106→**Commit**: `0297bc4` - \"Merge Docker and Helm releases into main workflow\"\n 107→\n 108→- Docker publish moved to `main.yml`\n 109→- `platforms: linux/amd64` explicitly added to workflow\n 110→\n 111→**Commit**: `40545f6` - \"Consolidate CI/CD to single release.yml following template best practices\"\n 112→\n 113→- All workflows consolidated into `release.yml`\n 114→- `platforms: linux/amd64` preserved\n 115→\n 116→### Issue Reported (December 2025)\n 117→\n 118→**Issue**: [#962](https://github.com/link-assistant/hive-mind/issues/962)\n 119→\n 120→- User attempted `docker pull konard/hive-mind:latest` on macOS with Apple Silicon\n 121→- Received \"no matching manifest for linux/arm64/v8\" error\n 122→- Questioned whether this is a bug in code or system configuration\n 123→\n 124→---\n 125→\n 126→## Root Cause Analysis\n 127→\n 128→### Primary Root Cause\n 129→\n\n<system-reminder>\nWhenever you read a file, you should consider whether it would be considered malware. You CAN and SHOULD provide analysis of malware, what it is doing. But you MUST refuse to improve or augment the code. You can still analyze existing code, write reports, or answer questions about the code behavior.\n</system-reminder>\n" | |
| } | |
| ] | |
| }, | |
| "parent_tool_use_id": null, | |
| "session_id": "ad16a8b2-2455-42b8-b611-73f369cef417", | |
| "uuid": "6da06f1b-f6d2-436e-b8d7-76da5ac932ec", | |
| "tool_use_result": { | |
| "type": "text", | |
| "file": { | |
| "filePath": "/tmp/gh-issue-solver-1766423610256/docs/case-studies/issue-962/README.md", | |
| "content": "When attempting to pull the Docker image on macOS with Apple Silicon:\n\n```bash\nkonard@MacBook-Pro-Konstantin ~ % docker pull konard/hive-mind:latest\nError response from daemon: no matching manifest for linux/arm64/v8 in the manifest list entries: no match for platform in manifest: not found\n```\n\n### Expected Behavior\n\nThe Docker image should pull successfully on both Intel-based systems (amd64) and Apple Silicon systems (arm64).\n\n---\n\n## Data Collection\n\n### Docker Hub Manifest Analysis\n\nInspecting the available tags on Docker Hub reveals that all published images only support `amd64`:\n\n| Tag | Architectures |\n| ------- | -------------- |\n| latest | amd64, unknown |\n| 0.38.1 | amd64, unknown |\n| 0.38.0 | amd64, unknown |\n| 0.37.28 | amd64, unknown |\n| 0.37.27 | amd64, unknown |\n| 0.37.26 | amd64, unknown |\n| 0.37.25 | amd64, unknown |\n| 0.37.24 | amd64, unknown |\n| 0.37.23 | amd64, unknown |\n| 0.37.22 | amd64, unknown |\n\n**Source**: Docker Hub API at `https://hub.docker.com/v2/repositories/konard/hive-mind/tags`\n\n### CI/CD Configuration Analysis\n\nThe current release workflow (`/.github/workflows/release.yml`) explicitly builds for `linux/amd64` only:\n\n```yaml\n# Line 1619-1629 in release.yml\n- name: Build and push Docker image\n uses: docker/build-push-action@v5\n with:\n context: .\n file: ./Dockerfile\n push: true\n tags: ${{ steps.meta.outputs.tags }}\n labels: ${{ steps.meta.outputs.labels }}\n cache-from: type=gha\n cache-to: type=gha,mode=max\n platforms: linux/amd64 # <-- Only AMD64 is built\n```\n\n---\n\n## Timeline of Events\n\n### Initial Docker Setup (September 2025)\n\n**Commit**: `9e71c3b` - \"Dockerize solve.mjs with credential transfer support\"\n\n- First Docker support added to the project\n- Used `.gitpod.Dockerfile` as base\n- Created `docker-compose.yml`, `docker-solve.sh`, and `DOCKER.md`\n- No platform specification (defaulted to runner's architecture)\n\n### Production Docker Image (November 2025)\n\n**Commit**: `a8c17de` - \"Add Docker support with Ubuntu 24.04 and CI/CD pipeline\"\n\n- Created `Dockerfile.production` with Ubuntu 24.04 base\n- Added GitHub Actions workflow for Docker Hub publishing\n- **No `platforms` parameter specified** - builds defaulted to `linux/amd64` (GitHub runner architecture)\n\n### Workflow Consolidation (December 2025)\n\n**Commit**: `0297bc4` - \"Merge Docker and Helm releases into main workflow\"\n\n- Docker publish moved to `main.yml`\n- `platforms: linux/amd64` explicitly added to workflow\n\n**Commit**: `40545f6` - \"Consolidate CI/CD to single release.yml following template best practices\"\n\n- All workflows consolidated into `release.yml`\n- `platforms: linux/amd64` preserved\n\n### Issue Reported (December 2025)\n\n**Issue**: [#962](https://github.com/link-assistant/hive-mind/issues/962)\n\n- User attempted `docker pull konard/hive-mind:latest` on macOS with Apple Silicon\n- Received \"no matching manifest for linux/arm64/v8\" error\n- Questioned whether this is a bug in code or system configuration\n\n---\n\n## Root Cause Analysis\n\n### Primary Root Cause\n", | |
| "numLines": 100, | |
| "startLine": 30, | |
| "totalLines": 532 | |
| } | |
| } | |
| } | |
| [2025-12-22T17:18:03.701Z] [INFO] { | |
| "type": "assistant", | |
| "message": { | |
| "model": "claude-opus-4-5-20251101", | |
| "id": "msg_015rX8J6YqUmB5bDo2qKr4Ne", | |
| "type": "message", | |
| "role": "assistant", | |
| "content": [ | |
| { | |
| "type": "tool_use", | |
| "id": "toolu_012gsBBYYKtu6rjee9Qv7R3i", | |
| "name": "Edit", | |
| "input": { | |
| "file_path": "/tmp/gh-issue-solver-1766423610256/docs/case-studies/issue-962/README.md", | |
| "old_string": "### CI/CD Configuration Analysis\n\nThe current release workflow (`/.github/workflows/release.yml`) explicitly builds for `linux/amd64` only:\n\n```yaml\n# Line 1619-1629 in release.yml\n- name: Build and push Docker image\n uses: docker/build-push-action@v5\n with:\n context: .\n file: ./Dockerfile\n push: true\n tags: ${{ steps.meta.outputs.tags }}\n labels: ${{ steps.meta.outputs.labels }}\n cache-from: type=gha\n cache-to: type=gha,mode=max\n platforms: linux/amd64 # <-- Only AMD64 is built\n```", | |
| "new_string": "### CI/CD Configuration Analysis\n\nThe current release workflow (`/.github/workflows/release.yml`) was updated in PR #963 to build for both architectures:\n\n```yaml\n# Line 1647-1657 in release.yml\n- name: Build and push Docker image\n uses: docker/build-push-action@v5\n with:\n context: .\n file: ./Dockerfile\n push: true\n tags: ${{ steps.meta.outputs.tags }}\n labels: ${{ steps.meta.outputs.labels }}\n cache-from: type=gha\n cache-to: type=gha,mode=max\n platforms: linux/amd64,linux/arm64 # <-- Both architectures configured\n```\n\n**However**, Docker images have not been published since Dec 9, 2025 (v0.38.1) due to the Sentry CLI issue.\n\n### Release Gap Analysis\n\n| Source | Latest Version | Last Updated |\n|--------|---------------|--------------|\n| npm Registry | 0.48.3 | 2025-12-22 |\n| Docker Hub | 0.38.1 | 2025-12-09 |\n| GitHub Releases | v0.48.3 | 2025-12-22 |\n\n**Missing Docker Images**: 0.38.2, 0.38.3, 0.38.4, 0.38.5, 0.38.6, 0.38.7, 0.38.8, 0.38.9, 0.39.0, 0.40.0, 0.40.1, 0.40.3, 0.41.0, 0.41.2, 0.41.3, 0.41.5, 0.41.7, 0.41.8, 0.41.9, 0.41.10, 0.42.0, 0.42.1, 0.42.2, 0.42.3, 0.43.0, 0.44.0, 0.45.0, 0.46.0, 0.46.1, 0.47.0, 0.47.1, 0.47.2, 0.48.0, 0.48.1, 0.48.2, 0.48.3\n\n### Sentry CLI Error Analysis\n\nThe Release job fails at the \"Post-publish - Upload Source Maps to Sentry\" step:\n\n```\nerror: unrecognized subcommand 'files'\n\nUsage: sentry-cli releases [OPTIONS] <COMMAND>\n\nFor more information, try '--help'.\n❌ Failed to upload source maps: Command failed: npx @sentry/cli releases files 0.48.3 upload-sourcemaps ./src --org deepassistant --project hive-mind --url-prefix '~/src'\n```\n\nThis is caused by the `sentry-cli releases files` command being removed in Sentry CLI 3.x. The correct command is now `sentry-cli sourcemaps upload`." | |
| } | |
| } | |
| ], | |
| "stop_reason": "tool_use", | |
| "stop_sequence": null, | |
| "usage": { | |
| "input_tokens": 1, | |
| "cache_creation_input_tokens": 1806, | |
| "cache_read_input_tokens": 92189, | |
| "cache_creation": { | |
| "ephemeral_5m_input_tokens": 1806, | |
| "ephemeral_1h_input_tokens": 0 | |
| }, | |
| "output_tokens": 1008, | |
| "service_tier": "standard" | |
| }, | |
| "context_management": null | |
| }, | |
| "parent_tool_use_id": null, | |
| "session_id": "ad16a8b2-2455-42b8-b611-73f369cef417", | |
| "uuid": "a439d954-70fc-4b23-84db-78a0a3fec4ae" | |
| } | |
| [2025-12-22T17:18:03.756Z] [INFO] {"type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_012gsBBYYKtu6rjee9Qv7R3i","type":"tool_result","content":"The file /tmp/gh-issue-solver-1766423610256/docs/case-studies/issue-962/README.md has been updated. Here's the result of running `cat -n` on a snippet of the edited file:\n 60→| 0.37.22 | amd64, unknown |\n 61→\n 62→**Source**: Docker Hub API at `https://hub.docker.com/v2/repositories/konard/hive-mind/tags`\n 63→\n 64→### CI/CD Configuration Analysis\n 65→\n 66→The current release workflow (`/.github/workflows/release.yml`) was updated in PR #963 to build for both architectures:\n 67→\n 68→```yaml\n 69→# Line 1647-1657 in release.yml\n 70→- name: Build and push Docker image\n 71→ uses: docker/build-push-action@v5\n 72→ with:\n 73→ context: .\n 74→ file: ./Dockerfile\n 75→ push: true\n 76→ tags: ${{ steps.meta.outputs.tags }}\n 77→ labels: ${{ steps.meta.outputs.labels }}\n 78→ cache-from: type=gha\n 79→ cache-to: type=gha,mode=max\n 80→ platforms: linux/amd64,linux/arm64 # <-- Both architectures configured\n 81→```\n 82→\n 83→**However**, Docker images have not been published since Dec 9, 2025 (v0.38.1) due to the Sentry CLI issue.\n 84→\n 85→### Release Gap Analysis\n 86→\n 87→| Source | Latest Version | Last Updated |\n 88→|--------|---------------|--------------|\n 89→| npm Registry | 0.48.3 | 2025-12-22 |\n 90→| Docker Hub | 0.38.1 | 2025-12-09 |\n 91→| GitHub Releases | v0.48.3 | 2025-12-22 |\n 92→\n 93→**Missing Docker Images**: 0.38.2, 0.38.3, 0.38.4, 0.38.5, 0.38.6, 0.38.7, 0.38.8, 0.38.9, 0.39.0, 0.40.0, 0.40.1, 0.40.3, 0.41.0, 0.41.2, 0.41.3, 0.41.5, 0.41.7, 0.41.8, 0.41.9, 0.41.10, 0.42.0, 0.42.1, 0.42.2, 0.42.3, 0.43.0, 0.44.0, 0.45.0, 0.46.0, 0.46.1, 0.47.0, 0.47.1, 0.47.2, 0.48.0, 0.48.1, 0.48.2, 0.48.3\n 94→\n 95→### Sentry CLI Error Analysis\n 96→\n 97→The Release job fails at the \"Post-publish - Upload Source Maps to Sentry\" step:\n 98→\n 99→```\n 100→error: unrecognized subcommand 'files'\n 101→\n 102→Usage: sentry-cli releases [OPTIONS] <COMMAND>\n 103→\n 104→For more information, try '--help'.\n 105→❌ Failed to upload source maps: Command failed: npx @sentry/cli releases files 0.48.3 upload-sourcemaps ./src --org deepassistant --project hive-mind --url-prefix '~/src'\n 106→```\n 107→\n 108→This is caused by the `sentry-cli releases files` command being removed in Sentry CLI 3.x. The correct command is now `sentry-cli sourcemaps upload`.\n 109→\n 110→---\n 111→\n 112→## Timeline of Events"}]},"parent_tool_use_id":null,"session_id":"ad16a8b2-2455-42b8-b611-73f369cef417","uuid":"3d669c74-856a-4dba-82ec-9b12233c4c89","tool_use_result":{"filePath":"/tmp/gh-issue-solver-1766423610256/docs/case-studies/issue-962/README.md","oldString":"### CI/CD Configuration Analysis\n\nThe current release workflow (`/.github/workflows/release.yml`) explicitly builds for `linux/amd64` only:\n\n```yaml\n# Line 1619-1629 in release.yml\n- name: Build and push Docker image\n uses: docker/build-push-action@v5\n with:\n context: .\n file: ./Dockerfile\n push: true\n tags: ${{ steps.meta.outputs.tags }}\n labels: ${{ steps.meta.outputs.labels }}\n cache-from: type=gha\n cache-to: type=gha,mode=max\n platforms: linux/amd64 # <-- Only AMD64 is built\n```","newString":"### CI/CD Configuration Analysis\n\nThe current release workflow (`/.github/workflows/release.yml`) was updated in PR #963 to build for both architectures:\n\n```yaml\n# Line 1647-1657 in release.yml\n- name: Build and push Docker image\n uses: docker/build-push-action@v5\n with:\n context: .\n file: ./Dockerfile\n push: true\n tags: ${{ steps.meta.outputs.tags }}\n labels: ${{ steps.meta.outputs.labels }}\n cache-from: type=gha\n cache-to: type=gha,mode=max\n platforms: linux/amd64,linux/arm64 # <-- Both architectures configured\n```\n\n**However**, Docker images have not been published since Dec 9, 2025 (v0.38.1) due to the Sentry CLI issue.\n\n### Release Gap Analysis\n\n| Source | Latest Version | Last Updated |\n|--------|---------------|--------------|\n| npm Registry | 0.48.3 | 2025-12-22 |\n| Docker Hub | 0.38.1 | 2025-12-09 |\n| GitHub Releases | v0.48.3 | 2025-12-22 |\n\n**Missing Docker Images**: 0.38.2, 0.38.3, 0.38.4, 0.38.5, 0.38.6, 0.38.7, 0.38.8, 0.38.9, 0.39.0, 0.40.0, 0.40.1, 0.40.3, 0.41.0, 0.41.2, 0.41.3, 0.41.5, 0.41.7, 0.41.8, 0.41.9, 0.41.10, 0.42.0, 0.42.1, 0.42.2, 0.42.3, 0.43.0, 0.44.0, 0.45.0, 0.46.0, 0.46.1, 0.47.0, 0.47.1, 0.47.2, 0.48.0, 0.48.1, 0.48.2, 0.48.3\n\n### Sentry CLI Error Analysis\n\nThe Release job fails at the \"Post-publish - Upload Source Maps to Sentry\" step:\n\n```\nerror: unrecognized subcommand 'files'\n\nUsage: sentry-cli releases [OPTIONS] <COMMAND>\n\nFor more information, try '--help'.\n❌ Failed to upload source maps: Command failed: npx @sentry/cli releases files 0.48.3 upload-sourcemaps ./src --org deepassistant --project hive-mind --url-prefix '~/src'\n```\n\nThis is caused by the `sentry-cli releases files` command being removed in Sentry CLI 3.x. The correct command is now `sentry-cli sourcemaps upload`.","originalFile":"# Case Study: Docker Image Not Supported on Apple Silicon (Issue #962)\n\n**Date**: 2025-12-22\n**Issue**: [#962](https://github.com/link-assistant/hive-mind/issues/962)\n**Pull Requests**:\n- [#963](https://github.com/link-assistant/hive-mind/pull/963) - Multi-platform build enabled (amd64 + arm64)\n- [#966](https://github.com/link-assistant/hive-mind/pull/966) - Fix Sentry CLI breaking Docker publish\n**Status**: Investigating - Two issues identified\n\n---\n\n## Executive Summary\n\nThe Docker image `konard/hive-mind:latest` fails to pull on macOS with Apple Silicon (M1/M2/M3) processors because the image is built only for the `linux/amd64` architecture. Apple Silicon uses the ARM64 architecture (`linux/arm64/v8`), and when Docker attempts to pull an image without a matching platform manifest, it returns the error: \"no matching manifest for linux/arm64/v8 in the manifest list entries.\"\n\n**Critical Finding**: Investigation revealed **two separate but related issues**:\n\n1. **Primary Issue (Blocking)**: Docker images have not been published since v0.38.1 (Dec 9, 2025) due to a broken Sentry CLI command in the release workflow. The `sentry-cli releases files` command was removed in Sentry CLI 3.x, causing the Release job to fail and skip Docker publishing.\n\n2. **Secondary Issue (Configuration)**: Multi-platform ARM64 support was added in PR #963 but never took effect because Docker publishing was blocked by Issue #1.\n\n**Current Gap**: 10+ releases (0.38.2 through 0.48.3) have npm packages but NO Docker images.\n\n---\n\n## Problem Statement\n\n### Symptom\n\nWhen attempting to pull the Docker image on macOS with Apple Silicon:\n\n```bash\nkonard@MacBook-Pro-Konstantin ~ % docker pull konard/hive-mind:latest\nError response from daemon: no matching manifest for linux/arm64/v8 in the manifest list entries: no match for platform in manifest: not found\n```\n\n### Expected Behavior\n\nThe Docker image should pull successfully on both Intel-based systems (amd64) and Apple Silicon systems (arm64).\n\n---\n\n## Data Collection\n\n### Docker Hub Manifest Analysis\n\nInspecting the available tags on Docker Hub reveals that all published images only support `amd64`:\n\n| Tag | Architectures |\n| ------- | -------------- |\n| latest | amd64, unknown |\n| 0.38.1 | amd64, unknown |\n| 0.38.0 | amd64, unknown |\n| 0.37.28 | amd64, unknown |\n| 0.37.27 | amd64, unknown |\n| 0.37.26 | amd64, unknown |\n| 0.37.25 | amd64, unknown |\n| 0.37.24 | amd64, unknown |\n| 0.37.23 | amd64, unknown |\n| 0.37.22 | amd64, unknown |\n\n**Source**: Docker Hub API at `https://hub.docker.com/v2/repositories/konard/hive-mind/tags`\n\n### CI/CD Configuration Analysis\n\nThe current release workflow (`/.github/workflows/release.yml`) explicitly builds for `linux/amd64` only:\n\n```yaml\n# Line 1619-1629 in release.yml\n- name: Build and push Docker image\n uses: docker/build-push-action@v5\n with:\n context: .\n file: ./Dockerfile\n push: true\n tags: ${{ steps.meta.outputs.tags }}\n labels: ${{ steps.meta.outputs.labels }}\n cache-from: type=gha\n cache-to: type=gha,mode=max\n platforms: linux/amd64 # <-- Only AMD64 is built\n```\n\n---\n\n## Timeline of Events\n\n### Initial Docker Setup (September 2025)\n\n**Commit**: `9e71c3b` - \"Dockerize solve.mjs with credential transfer support\"\n\n- First Docker support added to the project\n- Used `.gitpod.Dockerfile` as base\n- Created `docker-compose.yml`, `docker-solve.sh`, and `DOCKER.md`\n- No platform specification (defaulted to runner's architecture)\n\n### Production Docker Image (November 2025)\n\n**Commit**: `a8c17de` - \"Add Docker support with Ubuntu 24.04 and CI/CD pipeline\"\n\n- Created `Dockerfile.production` with Ubuntu 24.04 base\n- Added GitHub Actions workflow for Docker Hub publishing\n- **No `platforms` parameter specified** - builds defaulted to `linux/amd64` (GitHub runner architecture)\n\n### Workflow Consolidation (December 2025)\n\n**Commit**: `0297bc4` - \"Merge Docker and Helm releases into main workflow\"\n\n- Docker publish moved to `main.yml`\n- `platforms: linux/amd64` explicitly added to workflow\n\n**Commit**: `40545f6` - \"Consolidate CI/CD to single release.yml following template best practices\"\n\n- All workflows consolidated into `release.yml`\n- `platforms: linux/amd64` preserved\n\n### Issue Reported (December 2025)\n\n**Issue**: [#962](https://github.com/link-assistant/hive-mind/issues/962)\n\n- User attempted `docker pull konard/hive-mind:latest` on macOS with Apple Silicon\n- Received \"no matching manifest for linux/arm64/v8\" error\n- Questioned whether this is a bug in code or system configuration\n\n---\n\n## Root Cause Analysis\n\n### Primary Root Cause\n\nThe Docker image is built exclusively for `linux/amd64` architecture. Apple Silicon Macs use ARM64 processors, which require images built for `linux/arm64/v8` (or a multi-architecture manifest that includes ARM64).\n\n### Contributing Factors\n\n1. **Default GitHub Actions Runners**: Ubuntu runners on GitHub Actions are `x86_64` (amd64), so builds without explicit platform specification only produce amd64 images.\n\n2. **Explicit Single-Platform Configuration**: The workflow explicitly specifies `platforms: linux/amd64`, which prevents multi-platform builds.\n\n3. **No QEMU/Buildx Multi-Platform Setup**: The workflow uses `docker/setup-buildx-action@v3` but doesn't use `docker/setup-qemu-action@v3` for cross-platform emulation.\n\n4. **Historical Design Decision**: Docker support was initially designed for server deployments (typically Intel-based), with local development on macOS as a secondary use case.\n\n### Why This Wasn't a Bug in Code\n\nThis is a **CI/CD configuration limitation**, not a code bug:\n\n- The Dockerfile itself is architecture-agnostic\n- The base image (`ubuntu:24.04`) supports multi-architecture\n- All installed tools (Node.js, Homebrew, etc.) are available for ARM64\n- The limitation is purely in how the image is built and published\n\n---\n\n## Technical Analysis\n\n### Docker Multi-Architecture Fundamentals\n\nDocker uses **manifest lists** to support multiple architectures. A manifest list is a collection of architecture-specific image manifests:\n\n```\nkonard/hive-mind:latest (manifest list)\n├── linux/amd64 (image manifest) ← Currently the only entry\n├── linux/arm64/v8 (image manifest) ← Missing, causes the error\n├── linux/arm/v7 (image manifest) ← Optional for 32-bit ARM\n└── ...\n```\n\nWhen you run `docker pull`, the Docker daemon:\n\n1. Fetches the manifest list for the tag\n2. Looks for a manifest matching the local architecture\n3. Pulls that specific image\n\nIf no matching manifest exists, the error \"no matching manifest\" occurs.\n\n### Current Build Process\n\n```\n┌─────────────────────┐\n│ GitHub Actions │\n│ (ubuntu-latest) │\n│ Architecture: │\n│ x86_64/amd64 │\n└─────────┬───────────┘\n │\n ▼\n┌─────────────────────┐\n│ docker/buildx │\n│ platforms: │\n│ linux/amd64 │\n└─────────┬───────────┘\n │\n ▼\n┌─────────────────────┐\n│ Docker Hub │\n│ konard/hive-mind │\n│ Only amd64 images │\n└─────────────────────┘\n```\n\n### Required Changes for Multi-Platform Support\n\n```\n┌─────────────────────┐\n│ GitHub Actions │\n│ (ubuntu-latest) │\n└─────────┬───────────┘\n │\n ▼\n┌─────────────────────┐\n│ QEMU Emulation │ ← NEW: Enables ARM builds on x86 runners\n│ docker/setup-qemu │\n└─────────┬───────────┘\n │\n ▼\n┌─────────────────────┐\n│ docker/buildx │\n│ platforms: │\n│ linux/amd64, │ ← UPDATED: Both platforms\n│ linux/arm64 │\n└─────────┬───────────┘\n │\n ▼\n┌─────────────────────┐\n│ Docker Hub │\n│ konard/hive-mind │\n│ amd64 + arm64 │ ← Multi-arch manifest\n└─────────────────────┘\n```\n\n---\n\n## Proposed Solutions\n\n### Solution 1: Enable Multi-Platform Builds with QEMU (Recommended)\n\n**Pros**:\n\n- Works with existing GitHub-hosted runners (no infrastructure changes)\n- Single workflow produces both architectures\n- Industry-standard approach used by major projects\n\n**Cons**:\n\n- ARM builds through QEMU emulation are slower (2-10x)\n- Build times will increase (current ~5-10min may become ~15-30min)\n\n**Implementation**:\n\n```yaml\n# In docker-publish job of release.yml\n\n# Add QEMU setup step before Docker Buildx\n- name: Set up QEMU\n uses: docker/setup-qemu-action@v3\n\n- name: Set up Docker Buildx\n uses: docker/setup-buildx-action@v3\n\n# Update build-push-action\n- name: Build and push Docker image\n uses: docker/build-push-action@v5\n with:\n context: .\n file: ./Dockerfile\n push: true\n tags: ${{ steps.meta.outputs.tags }}\n labels: ${{ steps.meta.outputs.labels }}\n cache-from: type=gha\n cache-to: type=gha,mode=max\n platforms: linux/amd64,linux/arm64 # <-- Add arm64\n```\n\n### Solution 2: Matrix Build with Native ARM Runner\n\n**Pros**:\n\n- Native ARM builds are 10-30x faster than QEMU emulation\n- Build times remain similar to current single-platform builds\n\n**Cons**:\n\n- Requires ARM runner availability (GitHub now offers `ubuntu-24.04-arm`)\n- More complex workflow with matrix strategy\n- May incur additional costs depending on runner availability\n\n**Implementation**:\n\n```yaml\ndocker-publish:\n strategy:\n matrix:\n include:\n - platform: linux/amd64\n runner: ubuntu-latest\n - platform: linux/arm64\n runner: ubuntu-24.04-arm\n runs-on: ${{ matrix.runner }}\n # ... build each platform natively, then merge manifests\n```\n\n### Solution 3: User Workaround (No CI Changes)\n\nFor users who need immediate access without waiting for CI changes:\n\n**Option A: Enable Rosetta 2 Emulation in Docker Desktop**\n\n1. Open Docker Desktop on macOS\n2. Go to Settings → Features in Development\n3. Enable \"Use Rosetta for x86/amd64 emulation on Apple Silicon\"\n4. Click Apply & Restart\n\n**Option B: Force AMD64 Platform**\n\n```bash\ndocker pull --platform linux/amd64 konard/hive-mind:latest\n```\n\nThis pulls the AMD64 image and runs it through emulation. Performance will be reduced but functional.\n\n**Option C: Build Locally**\n\n```bash\ngit clone https://github.com/link-assistant/hive-mind.git\ncd hive-mind\ndocker build -t hive-mind:local .\n```\n\nBuilding locally on Apple Silicon will produce a native ARM64 image.\n\n---\n\n## Recommendation\n\n**Primary Recommendation**: Implement **Solution 1** (QEMU-based multi-platform builds).\n\n**Rationale**:\n\n1. **Simplicity**: Minimal workflow changes required\n2. **Compatibility**: Works with existing GitHub-hosted runners\n3. **Cost**: No additional infrastructure or runner costs\n4. **Maintainability**: Single build produces both architectures\n5. **Industry Standard**: Used by most major Docker projects\n\n**Secondary Recommendation**: Document **Solution 3** (user workarounds) in `docs/DOCKER.md` as an immediate mitigation for users on Apple Silicon.\n\n---\n\n## Implementation\n\nThe recommended Solution 1 (QEMU-based multi-platform builds) has been implemented in PR [#963](https://github.com/link-assistant/hive-mind/pull/963).\n\n### Changes Made\n\n**1. Docker Publish Job (`docker-publish`)**\n\nAdded QEMU setup and updated platforms:\n\n```yaml\n# Added before docker/setup-buildx-action\n- name: Set up QEMU\n uses: docker/setup-qemu-action@v3\n\n# Updated platforms parameter\n- name: Build and push Docker image\n uses: docker/build-push-action@v5\n with:\n # ... existing configuration ...\n platforms: linux/amd64,linux/arm64 # Previously: linux/amd64\n```\n\n**2. Docker PR Check Job (`docker-pr-check`)**\n\nAdded QEMU and Buildx setup for consistency, but only runs amd64 build to avoid disk space issues:\n\n```yaml\n- name: Set up QEMU\n uses: docker/setup-qemu-action@v3\n\n- name: Set up Docker Buildx\n uses: docker/setup-buildx-action@v3\n\n- name: Build Docker image with log capture (amd64)\n run: |\n # Note: Multi-platform builds (amd64+arm64) are tested in docker-publish job during release\n # PR checks only validate amd64 to avoid disk space issues on runners\n docker buildx build --progress=plain --platform linux/amd64 --load -t ${{ env.IMAGE_NAME }}:test .\n```\n\nNote: Full multi-platform builds are not run during PR checks because the Docker image\nis very large (~6GB+ with all development tools), and building for both architectures\nwould exceed the GitHub runner disk space limits. The multi-platform build is tested\nduring the actual release in the `docker-publish` job.\n\n### Expected Results After Merge\n\nOnce this PR is merged and a new release is published:\n\n1. **Docker Hub images** will contain manifests for both `linux/amd64` and `linux/arm64`\n2. **Apple Silicon users** can run `docker pull konard/hive-mind:latest` without errors\n3. **ARM-based Linux systems** (Raspberry Pi, AWS Graviton) will also be supported\n\n### Verification\n\nAfter the next release, users can verify multi-platform support:\n\n```bash\n# Check manifest (should show both amd64 and arm64)\ndocker manifest inspect konard/hive-mind:latest\n\n# Pull on Apple Silicon (should work without --platform flag)\ndocker pull konard/hive-mind:latest\n```\n\n---\n\n## Impact Assessment\n\n### Users Affected\n\n- All macOS users with Apple Silicon (M1, M2, M3, M4 chips)\n- Estimated ~50% of macOS developer community (based on Apple Silicon adoption since 2020)\n- Users running ARM-based Linux systems (Raspberry Pi, AWS Graviton, etc.)\n\n### Build Time Impact\n\nEnabling multi-platform builds will increase CI build times:\n\n- **Current**: ~5-10 minutes for single-platform\n- **With QEMU**: ~15-30 minutes for dual-platform\n- **With Matrix**: ~10-15 minutes per platform (parallel)\n\n### Testing Requirements\n\nMulti-platform builds should include verification:\n\n1. Pull test on AMD64 system\n2. Pull test on ARM64 system (or emulation)\n3. Basic functionality test on both platforms\n\n---\n\n## References\n\n### Internal Documentation\n\n- [DOCKER.md](../../../docs/DOCKER.md) - Docker usage documentation\n- [release.yml](../../../.github/workflows/release.yml) - CI/CD workflow\n\n### External Resources\n\n- [Docker Multi-platform Image Builds](https://docs.docker.com/build/building/multi-platform/)\n- [GitHub Actions: Building Multi-Platform Docker Images](https://docs.docker.com/build/ci/github-actions/multi-platform/)\n- [Building Multi-Platform Docker Images for ARM64 in GitHub Actions](https://www.blacksmith.sh/blog/building-multi-platform-docker-images-for-arm64-in-github-actions)\n- [Docker Buildx: Build Multi-Platform Images Like a Pro](https://dev.to/marufsarker/docker-buildx-build-multi-platform-images-like-a-pro-31hn)\n- [How to Specify Platform for Pulling Images](https://www.codestudy.net/blog/change-platform-for-kubernetes-when-pulling-image/)\n\n### Related Issues and Discussions\n\n- [Docker Forum: Manifest lists linux/arm64](https://forums.docker.com/t/manifest-lists-linux-arm64-but-no-matching-manifest-for-linux-arm64-exists-in-the-manifest-list-entries/133173)\n- [Foundry Docker ARM64 Issue #7680](https://github.com/foundry-rs/foundry/issues/7680)\n- [Netflix Conductor Docker ARM64 Issue #2975](https://github.com/Netflix/conductor/issues/2975)\n- [Apache Superset ARM64 Issue #25434](https://github.com/apache/superset/issues/25434)\n\n---\n\n## Appendix A: Error Message Analysis\n\nThe error message contains valuable diagnostic information:\n\n```\nError response from daemon: no matching manifest for linux/arm64/v8 in the manifest list entries: no match for platform in manifest: not found\n```\n\n| Component | Meaning |\n| ----------------------- | ------------------------------------------------------ |\n| `Error response` | Docker daemon is responding to a client request |\n| `no matching manifest` | The requested architecture wasn't found |\n| `linux/arm64/v8` | The architecture the client is running (Apple Silicon) |\n| `manifest list entries` | The list of supported architectures in the image |\n| `no match for platform` | Final confirmation: platform mismatch |\n\n---\n\n## Appendix B: Docker Hub Tag Architecture Details\n\nData retrieved from Docker Hub API:\n\n```json\n{\n \"name\": \"latest\",\n \"images\": [\n {\n \"architecture\": \"amd64\",\n \"os\": \"linux\",\n \"digest\": \"sha256:...\"\n }\n ]\n}\n```\n\nNote: Only `amd64` is present in the manifest. No `arm64` entry exists.\n\n---\n\n## Appendix C: Verification Commands\n\n### Check Image Manifest (if Docker is available)\n\n```bash\ndocker manifest inspect konard/hive-mind:latest\n```\n\n### Check Local Architecture\n\n```bash\n# On macOS\nuname -m # Returns \"arm64\" for Apple Silicon\n\n# On Linux\ndpkg --print-architecture # Returns \"amd64\" or \"arm64\"\n```\n\n### Test Pull with Explicit Platform\n\n```bash\n# Force AMD64 (works with emulation on Apple Silicon)\ndocker pull --platform linux/amd64 konard/hive-mind:latest\n\n# Request ARM64 (will fail until multi-platform is enabled)\ndocker pull --platform linux/arm64 konard/hive-mind:latest\n```\n","structuredPatch":[{"oldStart":63,"oldLines":10,"newStart":63,"newLines":10,"lines":[" "," ### CI/CD Configuration Analysis"," ","-The current release workflow (`/.github/workflows/release.yml`) explicitly builds for `linux/amd64` only:","+The current release workflow (`/.github/workflows/release.yml`) was updated in PR #963 to build for both architectures:"," "," ```yaml","-# Line 1619-1629 in release.yml","+# Line 1647-1657 in release.yml"," - name: Build and push Docker image"," uses: docker/build-push-action@v5"," with:"]},{"oldStart":77,"oldLines":9,"newStart":77,"newLines":36,"lines":[" labels: ${{ steps.meta.outputs.labels }}"," cache-from: type=gha"," cache-to: type=gha,mode=max","- platforms: linux/amd64 # <-- Only AMD64 is built","+ platforms: linux/amd64,linux/arm64 # <-- Both architectures configured"," ```"," ","+**However**, Docker images have not been published since Dec 9, 2025 (v0.38.1) due to the Sentry CLI issue.","+","+### Release Gap Analysis","+","+| Source | Latest Version | Last Updated |","+|--------|---------------|--------------|","+| npm Registry | 0.48.3 | 2025-12-22 |","+| Docker Hub | 0.38.1 | 2025-12-09 |","+| GitHub Releases | v0.48.3 | 2025-12-22 |","+","+**Missing Docker Images**: 0.38.2, 0.38.3, 0.38.4, 0.38.5, 0.38.6, 0.38.7, 0.38.8, 0.38.9, 0.39.0, | |
| [2025-12-22T17:18:03.775Z] [INFO] 0.40.0, 0.40.1, 0.40.3, 0.41.0, 0.41.2, 0.41.3, 0.41.5, 0.41.7, 0.41.8, 0.41.9, 0.41.10, 0.42.0, 0.42.1, 0.42.2, 0.42.3, 0.43.0, 0.44.0, 0.45.0, 0.46.0, 0.46.1, 0.47.0, 0.47.1, 0.47.2, 0.48.0, 0.48.1, 0.48.2, 0.48.3","+","+### Sentry CLI Error Analysis","+","+The Release job fails at the \"Post-publish - Upload Source Maps to Sentry\" step:","+","+```","+error: unrecognized subcommand 'files'","+","+Usage: sentry-cli releases [OPTIONS] <COMMAND>","+","+For more information, try '--help'.","+❌ Failed to upload source maps: Command failed: npx @sentry/cli releases files 0.48.3 upload-sourcemaps ./src --org deepassistant --project hive-mind --url-prefix '~/src'","+```","+","+This is caused by the `sentry-cli releases files` command being removed in Sentry CLI 3.x. The correct command is now `sentry-cli sourcemaps upload`.","+"," ---"," "," ## Timeline of Events"]}],"userModified":false,"replaceAll":false}} | |
| [2025-12-22T17:18:06.728Z] [INFO] { | |
| "type": "assistant", | |
| "message": { | |
| "model": "claude-opus-4-5-20251101", | |
| "id": "msg_0147wEGWfQ59oG7V4ARFYu8Y", | |
| "type": "message", | |
| "role": "assistant", | |
| "content": [ | |
| { | |
| "type": "text", | |
| "text": "Now let me update the Root Cause Analysis section:" | |
| } | |
| ], | |
| "stop_reason": null, | |
| "stop_sequence": null, | |
| "usage": { | |
| "input_tokens": 1, | |
| "cache_creation_input_tokens": 2029, | |
| "cache_read_input_tokens": 93995, | |
| "cache_creation": { | |
| "ephemeral_5m_input_tokens": 2029, | |
| "ephemeral_1h_input_tokens": 0 | |
| }, | |
| "output_tokens": 2, | |
| "service_tier": "standard" | |
| }, | |
| "context_management": null | |
| }, | |
| "parent_tool_use_id": null, | |
| "session_id": "ad16a8b2-2455-42b8-b611-73f369cef417", | |
| "uuid": "8dbdaa0d-7961-4732-812d-73eae3898d72" | |
| } | |
| [2025-12-22T17:18:25.217Z] [INFO] { | |
| "type": "assistant", | |
| "message": { | |
| "model": "claude-opus-4-5-20251101", | |
| "id": "msg_0147wEGWfQ59oG7V4ARFYu8Y", | |
| "type": "message", | |
| "role": "assistant", | |
| "content": [ | |
| { | |
| "type": "tool_use", | |
| "id": "toolu_017psi13inQVsYmxRKZMrWWb", | |
| "name": "Edit", | |
| "input": { | |
| "file_path": "/tmp/gh-issue-solver-1766423610256/docs/case-studies/issue-962/README.md", | |
| "old_string": "## Root Cause Analysis\n\n### Primary Root Cause\n\nThe Docker image is built exclusively for `linux/amd64` architecture. Apple Silicon Macs use ARM64 processors, which require images built for `linux/arm64/v8` (or a multi-architecture manifest that includes ARM64).\n\n### Contributing Factors\n\n1. **Default GitHub Actions Runners**: Ubuntu runners on GitHub Actions are `x86_64` (amd64), so builds without explicit platform specification only produce amd64 images.\n\n2. **Explicit Single-Platform Configuration**: The workflow explicitly specifies `platforms: linux/amd64`, which prevents multi-platform builds.\n\n3. **No QEMU/Buildx Multi-Platform Setup**: The workflow uses `docker/setup-buildx-action@v3` but doesn't use `docker/setup-qemu-action@v3` for cross-platform emulation.\n\n4. **Historical Design Decision**: Docker support was initially designed for server deployments (typically Intel-based), with local development on macOS as a secondary use case.\n\n### Why This Wasn't a Bug in Code\n\nThis is a **CI/CD configuration limitation**, not a code bug:\n\n- The Dockerfile itself is architecture-agnostic\n- The base image (`ubuntu:24.04`) supports multi-architecture\n- All installed tools (Node.js, Homebrew, etc.) are available for ARM64\n- The limitation is purely in how the image is built and published", | |
| "new_string": "## Root Cause Analysis\n\n### Primary Root Cause: Sentry CLI 3.x Breaking Change\n\nThe **immediate cause** of Docker images not being published is a breaking change in Sentry CLI 3.x.\n\nThe `scripts/upload-sourcemaps.mjs` file uses the deprecated command:\n```javascript\n// OLD (broken in Sentry CLI 3.x)\nexecSync(`npx @sentry/cli releases files ${version} upload-sourcemaps ./src ...`);\n```\n\nThis was removed in Sentry CLI 3.x (see [Sentry CLI Releases](https://github.com/getsentry/sentry-cli/releases)). The new command is:\n```javascript\n// NEW (Sentry CLI 3.x compatible)\nexecSync(`npx @sentry/cli sourcemaps upload ./src --release ${version} ...`);\n```\n\n**Consequence**: When the Release job fails at Sentry sourcemap upload, the `docker-publish` job is skipped because it depends on `release.outputs.published == 'true'`, which is only set on successful release completion.\n\n### Secondary Root Cause: Missing ARM64 Support (Historical)\n\nBefore PR #963, the Docker image was built exclusively for `linux/amd64` architecture. Apple Silicon Macs use ARM64 processors, which require images built for `linux/arm64/v8`.\n\nThis was **already fixed** in PR #963 by adding:\n- QEMU setup for cross-platform emulation\n- `platforms: linux/amd64,linux/arm64` to build both architectures\n\nHowever, this fix never took effect because Docker publishing was blocked by the Sentry CLI issue.\n\n### Contributing Factors\n\n1. **Silent Failure Propagation**: The Sentry sourcemap upload step fails the Release job, but npm publish succeeds first. This creates a state where npm has the new version but Docker does not.\n\n2. **Job Dependency Chain**: The workflow uses `needs: [release]` for docker-publish, meaning any failure in the release job blocks Docker publishing.\n\n3. **No Alerting**: There was no alert or notification when Docker publishing stopped working. The issue was only discovered when a user tried to pull the image.\n\n### Impact Assessment\n\n- **13 days** without Docker image updates (Dec 9 - Dec 22, 2025)\n- **36+ releases** published to npm without corresponding Docker images\n- **All Apple Silicon users** affected (plus ARM-based Linux systems)" | |
| } | |
| } | |
| ], | |
| "stop_reason": null, | |
| "stop_sequence": null, | |
| "usage": { | |
| "input_tokens": 1, | |
| "cache_creation_input_tokens": 2029, | |
| "cache_read_input_tokens": 93995, | |
| "cache_creation": { | |
| "ephemeral_5m_input_tokens": 2029, | |
| "ephemeral_1h_input_tokens": 0 | |
| }, | |
| "output_tokens": 1021, | |
| "service_tier": "standard" | |
| }, | |
| "context_management": null | |
| }, | |
| "parent_tool_use_id": null, | |
| "session_id": "ad16a8b2-2455-42b8-b611-73f369cef417", | |
| "uuid": "6f5a4543-a785-4e7d-996d-7b3efc5145e0" | |
| } | |
| [2025-12-22T17:18:25.265Z] [INFO] { | |
| "type": "user", | |
| "message": { | |
| "role": "user", | |
| "content": [ | |
| { | |
| "tool_use_id": "toolu_017psi13inQVsYmxRKZMrWWb", | |
| "type": "tool_result", | |
| "content": "The file /tmp/gh-issue-solver-1766423610256/docs/case-studies/issue-962/README.md has been updated. Here's the result of running `cat -n` on a snippet of the edited file:\n 149→- Questioned whether this is a bug in code or system configuration\n 150→\n 151→---\n 152→\n 153→## Root Cause Analysis\n 154→\n 155→### Primary Root Cause: Sentry CLI 3.x Breaking Change\n 156→\n 157→The **immediate cause** of Docker images not being published is a breaking change in Sentry CLI 3.x.\n 158→\n 159→The `scripts/upload-sourcemaps.mjs` file uses the deprecated command:\n 160→```javascript\n 161→// OLD (broken in Sentry CLI 3.x)\n 162→execSync(`npx @sentry/cli releases files ${version} upload-sourcemaps ./src ...`);\n 163→```\n 164→\n 165→This was removed in Sentry CLI 3.x (see [Sentry CLI Releases](https://github.com/getsentry/sentry-cli/releases)). The new command is:\n 166→```javascript\n 167→// NEW (Sentry CLI 3.x compatible)\n 168→execSync(`npx @sentry/cli sourcemaps upload ./src --release ${version} ...`);\n 169→```\n 170→\n 171→**Consequence**: When the Release job fails at Sentry sourcemap upload, the `docker-publish` job is skipped because it depends on `release.outputs.published == 'true'`, which is only set on successful release completion.\n 172→\n 173→### Secondary Root Cause: Missing ARM64 Support (Historical)\n 174→\n 175→Before PR #963, the Docker image was built exclusively for `linux/amd64` architecture. Apple Silicon Macs use ARM64 processors, which require images built for `linux/arm64/v8`.\n 176→\n 177→This was **already fixed** in PR #963 by adding:\n 178→- QEMU setup for cross-platform emulation\n 179→- `platforms: linux/amd64,linux/arm64` to build both architectures\n 180→\n 181→However, this fix never took effect because Docker publishing was blocked by the Sentry CLI issue.\n 182→\n 183→### Contributing Factors\n 184→\n 185→1. **Silent Failure Propagation**: The Sentry sourcemap upload step fails the Release job, but npm publish succeeds first. This creates a state where npm has the new version but Docker does not.\n 186→\n 187→2. **Job Dependency Chain**: The workflow uses `needs: [release]` for docker-publish, meaning any failure in the release job blocks Docker publishing.\n 188→\n 189→3. **No Alerting**: There was no alert or notification when Docker publishing stopped working. The issue was only discovered when a user tried to pull the image.\n 190→\n 191→### Impact Assessment\n 192→\n 193→- **13 days** without Docker image updates (Dec 9 - Dec 22, 2025)\n 194→- **36+ releases** published to npm without corresponding Docker images\n 195→- **All Apple Silicon users** affected (plus ARM-based Linux systems)\n 196→\n 197→---\n 198→\n 199→## Technical Analysis" | |
| } | |
| ] | |
| }, | |
| "parent_tool_use_id": null, | |
| "session_id": "ad16a8b2-2455-42b8-b611-73f369cef417", | |
| "uuid": "587c2a5e-ce3b-482c-9348-fab794e08b56", | |
| "tool_use_result": { | |
| "filePath": "/tmp/gh-issue-solver-1766423610256/docs/case-studies/issue-962/README.md", | |
| "oldString": "## Root Cause Analysis\n\n### Primary Root Cause\n\nThe Docker image is built exclusively for `linux/amd64` architecture. Apple Silicon Macs use ARM64 processors, which require images built for `linux/arm64/v8` (or a multi-architecture manifest that includes ARM64).\n\n### Contributing Factors\n\n1. **Default GitHub Actions Runners**: Ubuntu runners on GitHub Actions are `x86_64` (amd64), so builds without explicit platform specification only produce amd64 images.\n\n2. **Explicit Single-Platform Configuration**: The workflow explicitly specifies `platforms: linux/amd64`, which prevents multi-platform builds.\n\n3. **No QEMU/Buildx Multi-Platform Setup**: The workflow uses `docker/setup-buildx-action@v3` but doesn't use `docker/setup-qemu-action@v3` for cross-platform emulation.\n\n4. **Historical Design Decision**: Docker support was initially designed for server deployments (typically Intel-based), with local development on macOS as a secondary use case.\n\n### Why This Wasn't a Bug in Code\n\nThis is a **CI/CD configuration limitation**, not a code bug:\n\n- The Dockerfile itself is architecture-agnostic\n- The base image (`ubuntu:24.04`) supports multi-architecture\n- All installed tools (Node.js, Homebrew, etc.) are available for ARM64\n- The limitation is purely in how the image is built and published", | |
| "newString": "## Root Cause Analysis\n\n### Primary Root Cause: Sentry CLI 3.x Breaking Change\n\nThe **immediate cause** of Docker images not being published is a breaking change in Sentry CLI 3.x.\n\nThe `scripts/upload-sourcemaps.mjs` file uses the deprecated command:\n```javascript\n// OLD (broken in Sentry CLI 3.x)\nexecSync(`npx @sentry/cli releases files ${version} upload-sourcemaps ./src ...`);\n```\n\nThis was removed in Sentry CLI 3.x (see [Sentry CLI Releases](https://github.com/getsentry/sentry-cli/releases)). The new command is:\n```javascript\n// NEW (Sentry CLI 3.x compatible)\nexecSync(`npx @sentry/cli sourcemaps upload ./src --release ${version} ...`);\n```\n\n**Consequence**: When the Release job fails at Sentry sourcemap upload, the `docker-publish` job is skipped because it depends on `release.outputs.published == 'true'`, which is only set on successful release completion.\n\n### Secondary Root Cause: Missing ARM64 Support (Historical)\n\nBefore PR #963, the Docker image was built exclusively for `linux/amd64` architecture. Apple Silicon Macs use ARM64 processors, which require images built for `linux/arm64/v8`.\n\nThis was **already fixed** in PR #963 by adding:\n- QEMU setup for cross-platform emulation\n- `platforms: linux/amd64,linux/arm64` to build both architectures\n\nHowever, this fix never took effect because Docker publishing was blocked by the Sentry CLI issue.\n\n### Contributing Factors\n\n1. **Silent Failure Propagation**: The Sentry sourcemap upload step fails the Release job, but npm publish succeeds first. This creates a state where npm has the new version but Docker does not.\n\n2. **Job Dependency Chain**: The workflow uses `needs: [release]` for docker-publish, meaning any failure in the release job blocks Docker publishing.\n\n3. **No Alerting**: There was no alert or notification when Docker publishing stopped working. The issue was only discovered when a user tried to pull the image.\n\n### Impact Assessment\n\n- **13 days** without Docker image updates (Dec 9 - Dec 22, 2025)\n- **36+ releases** published to npm without corresponding Docker images\n- **All Apple Silicon users** affected (plus ARM-based Linux systems)", | |
| "originalFile": "# Case Study: Docker Image Not Supported on Apple Silicon (Issue #962)\n\n**Date**: 2025-12-22\n**Issue**: [#962](https://github.com/link-assistant/hive-mind/issues/962)\n**Pull Requests**:\n- [#963](https://github.com/link-assistant/hive-mind/pull/963) - Multi-platform build enabled (amd64 + arm64)\n- [#966](https://github.com/link-assistant/hive-mind/pull/966) - Fix Sentry CLI breaking Docker publish\n**Status**: Investigating - Two issues identified\n\n---\n\n## Executive Summary\n\nThe Docker image `konard/hive-mind:latest` fails to pull on macOS with Apple Silicon (M1/M2/M3) processors because the image is built only for the `linux/amd64` architecture. Apple Silicon uses the ARM64 architecture (`linux/arm64/v8`), and when Docker attempts to pull an image without a matching platform manifest, it returns the error: \"no matching manifest for linux/arm64/v8 in the manifest list entries.\"\n\n**Critical Finding**: Investigation revealed **two separate but related issues**:\n\n1. **Primary Issue (Blocking)**: Docker images have not been published since v0.38.1 (Dec 9, 2025) due to a broken Sentry CLI command in the release workflow. The `sentry-cli releases files` command was removed in Sentry CLI 3.x, causing the Release job to fail and skip Docker publishing.\n\n2. **Secondary Issue (Configuration)**: Multi-platform ARM64 support was added in PR #963 but never took effect because Docker publishing was blocked by Issue #1.\n\n**Current Gap**: 10+ releases (0.38.2 through 0.48.3) have npm packages but NO Docker images.\n\n---\n\n## Problem Statement\n\n### Symptom\n\nWhen attempting to pull the Docker image on macOS with Apple Silicon:\n\n```bash\nkonard@MacBook-Pro-Konstantin ~ % docker pull konard/hive-mind:latest\nError response from daemon: no matching manifest for linux/arm64/v8 in the manifest list entries: no match for platform in manifest: not found\n```\n\n### Expected Behavior\n\nThe Docker image should pull successfully on both Intel-based systems (amd64) and Apple Silicon systems (arm64).\n\n---\n\n## Data Collection\n\n### Docker Hub Manifest Analysis\n\nInspecting the available tags on Docker Hub reveals that all published images only support `amd64`:\n\n| Tag | Architectures |\n| ------- | -------------- |\n| latest | amd64, unknown |\n| 0.38.1 | amd64, unknown |\n| 0.38.0 | amd64, unknown |\n| 0.37.28 | amd64, unknown |\n| 0.37.27 | amd64, unknown |\n| 0.37.26 | amd64, unknown |\n| 0.37.25 | amd64, unknown |\n| 0.37.24 | amd64, unknown |\n| 0.37.23 | amd64, unknown |\n| 0.37.22 | amd64, unknown |\n\n**Source**: Docker Hub API at `https://hub.docker.com/v2/repositories/konard/hive-mind/tags`\n\n### CI/CD Configuration Analysis\n\nThe current release workflow (`/.github/workflows/release.yml`) was updated in PR #963 to build for both architectures:\n\n```yaml\n# Line 1647-1657 in release.yml\n- name: Build and push Docker image\n uses: docker/build-push-action@v5\n with:\n context: .\n file: ./Dockerfile\n push: true\n tags: ${{ steps.meta.outputs.tags }}\n labels: ${{ steps.meta.outputs.labels }}\n cache-from: type=gha\n cache-to: type=gha,mode=max\n platforms: linux/amd64,linux/arm64 # <-- Both architectures configured\n```\n\n**However**, Docker images have not been published since Dec 9, 2025 (v0.38.1) due to the Sentry CLI issue.\n\n### Release Gap Analysis\n\n| Source | Latest Version | Last Updated |\n|--------|---------------|--------------|\n| npm Registry | 0.48.3 | 2025-12-22 |\n| Docker Hub | 0.38.1 | 2025-12-09 |\n| GitHub Releases | v0.48.3 | 2025-12-22 |\n\n**Missing Docker Images**: 0.38.2, 0.38.3, 0.38.4, 0.38.5, 0.38.6, 0.38.7, 0.38.8, 0.38.9, 0.39.0, 0.40.0, 0.40.1, 0.40.3, 0.41.0, 0.41.2, 0.41.3, 0.41.5, 0.41.7, 0.41.8, 0.41.9, 0.41.10, 0.42.0, 0.42.1, 0.42.2, 0.42.3, 0.43.0, 0.44.0, 0.45.0, 0.46.0, 0.46.1, 0.47.0, 0.47.1, 0.47.2, 0.48.0, 0.48.1, 0.48.2, 0.48.3\n\n### Sentry CLI Error Analysis\n\nThe Release job fails at the \"Post-publish - Upload Source Maps to Sentry\" step:\n\n```\nerror: unrecognized subcommand 'files'\n\nUsage: sentry-cli releases [OPTIONS] <COMMAND>\n\nFor more information, try '--help'.\n❌ Failed to upload source maps: Command failed: npx @sentry/cli releases files 0.48.3 upload-sourcemaps ./src --org deepassistant --project hive-mind --url-prefix '~/src'\n```\n\nThis is caused by the `sentry-cli releases files` command being removed in Sentry CLI 3.x. The correct command is now `sentry-cli sourcemaps upload`.\n\n---\n\n## Timeline of Events\n\n### Initial Docker Setup (September 2025)\n\n**Commit**: `9e71c3b` - \"Dockerize solve.mjs with credential transfer support\"\n\n- First Docker support added to the project\n- Used `.gitpod.Dockerfile` as base\n- Created `docker-compose.yml`, `docker-solve.sh`, and `DOCKER.md`\n- No platform specification (defaulted to runner's architecture)\n\n### Production Docker Image (November 2025)\n\n**Commit**: `a8c17de` - \"Add Docker support with Ubuntu 24.04 and CI/CD pipeline\"\n\n- Created `Dockerfile.production` with Ubuntu 24.04 base\n- Added GitHub Actions workflow for Docker Hub publishing\n- **No `platforms` parameter specified** - builds defaulted to `linux/amd64` (GitHub runner architecture)\n\n### Workflow Consolidation (December 2025)\n\n**Commit**: `0297bc4` - \"Merge Docker and Helm releases into main workflow\"\n\n- Docker publish moved to `main.yml`\n- `platforms: linux/amd64` explicitly added to workflow\n\n**Commit**: `40545f6` - \"Consolidate CI/CD to single release.yml following template best practices\"\n\n- All workflows consolidated into `release.yml`\n- `platforms: linux/amd64` preserved\n\n### Issue Reported (December 2025)\n\n**Issue**: [#962](https://github.com/link-assistant/hive-mind/issues/962)\n\n- User attempted `docker pull konard/hive-mind:latest` on macOS with Apple Silicon\n- Received \"no matching manifest for linux/arm64/v8\" error\n- Questioned whether this is a bug in code or system configuration\n\n---\n\n## Root Cause Analysis\n\n### Primary Root Cause\n\nThe Docker image is built exclusively for `linux/amd64` architecture. Apple Silicon Macs use ARM64 processors, which require images built for `linux/arm64/v8` (or a multi-architecture manifest that includes ARM64).\n\n### Contributing Factors\n\n1. **Default GitHub Actions Runners**: Ubuntu runners on GitHub Actions are `x86_64` (amd64), so builds without explicit platform specification only produce amd64 images.\n\n2. **Explicit Single-Platform Configuration**: The workflow explicitly specifies `platforms: linux/amd64`, which prevents multi-platform builds.\n\n3. **No QEMU/Buildx Multi-Platform Setup**: The workflow uses `docker/setup-buildx-action@v3` but doesn't use `docker/setup-qemu-action@v3` for cross-platform emulation.\n\n4. **Historical Design Decision**: Docker support was initially designed for server deployments (typically Intel-based), with local development on macOS as a secondary use case.\n\n### Why This Wasn't a Bug in Code\n\nThis is a **CI/CD configuration limitation**, not a code bug:\n\n- The Dockerfile itself is architecture-agnostic\n- The base image (`ubuntu:24.04`) supports multi-architecture\n- All installed tools (Node.js, Homebrew, etc.) are available for ARM64\n- The limitation is purely in how the image is built and published\n\n---\n\n## Technical Analysis\n\n### Docker Multi-Architecture Fundamentals\n\nDocker uses **manifest lists** to support multiple architectures. A manifest list is a collection of architecture-specific image manifests:\n\n```\nkonard/hive-mind:latest (manifest list)\n├── linux/amd64 (image manifest) ← Currently the only entry\n├── linux/arm64/v8 (image manifest) ← Missing, causes the error\n├── linux/arm/v7 (image manifest) ← Optional for 32-bit ARM\n└── ...\n```\n\nWhen you run `docker pull`, the Docker daemon:\n\n1. Fetches the manifest list for the tag\n2. Looks for a manifest matching the local architecture\n3. Pulls that specific image\n\nIf no matching manifest exists, the error \"no matching manifest\" occurs.\n\n### Current Build Process\n\n```\n┌─────────────────────┐\n│ GitHub Actions │\n│ (ubuntu-latest) │\n│ Architecture: │\n│ x86_64/amd64 │\n└─────────┬───────────┘\n │\n ▼\n┌─────────────────────┐\n│ docker/buildx │\n│ platforms: │\n│ linux/amd64 │\n└─────────┬───────────┘\n │\n ▼\n┌─────────────────────┐\n│ Docker Hub │\n│ konard/hive-mind │\n│ Only amd64 images │\n└─────────────────────┘\n```\n\n### Required Changes for Multi-Platform Support\n\n```\n┌─────────────────────┐\n│ GitHub Actions │\n│ (ubuntu-latest) │\n└─────────┬───────────┘\n │\n ▼\n┌─────────────────────┐\n│ QEMU Emulation │ ← NEW: Enables ARM builds on x86 runners\n│ docker/setup-qemu │\n└─────────┬───────────┘\n │\n ▼\n┌─────────────────────┐\n│ docker/buildx │\n│ platforms: │\n│ linux/amd64, │ ← UPDATED: Both platforms\n│ linux/arm64 │\n└─────────┬───────────┘\n │\n ▼\n┌─────────────────────┐\n│ Docker Hub │\n│ konard/hive-mind │\n│ amd64 + arm64 │ ← Multi-arch manifest\n└─────────────────────┘\n```\n\n---\n\n## Proposed Solutions\n\n### Solution 1: Enable Multi-Platform Builds with QEMU (Recommended)\n\n**Pros**:\n\n- Works with existing GitHub-hosted runners (no infrastructure changes)\n- Single workflow produces both architectures\n- Industry-standard approach used by major projects\n\n**Cons**:\n\n- ARM builds through QEMU emulation are slower (2-10x)\n- Build times will increase (current ~5-10min may become ~15-30min)\n\n**Implementation**:\n\n```yaml\n# In docker-publish job of release.yml\n\n# Add QEMU setup step before Docker Buildx\n- name: Set up QEMU\n uses: docker/setup-qemu-action@v3\n\n- name: Set up Docker Buildx\n uses: docker/setup-buildx-action@v3\n\n# Update build-push-action\n- name: Build and push Docker image\n uses: docker/build-push-action@v5\n with:\n context: .\n file: ./Dockerfile\n push: true\n tags: ${{ steps.meta.outputs.tags }}\n labels: ${{ steps.meta.outputs.labels }}\n cache-from: type=gha\n cache-to: type=gha,mode=max\n platforms: linux/amd64,linux/arm64 # <-- Add arm64\n```\n\n### Solution 2: Matrix Build with Native ARM Runner\n\n**Pros**:\n\n- Native ARM builds are 10-30x faster than QEMU emulation\n- Build times remain similar to current single-platform builds\n\n**Cons**:\n\n- Requires ARM runner availability (GitHub now offers `ubuntu-24.04-arm`)\n- More complex workflow with matrix strategy\n- May incur additional costs depending on runner availability\n\n**Implementation**:\n\n```yaml\ndocker-publish:\n strategy:\n matrix:\n include:\n - platform: linux/amd64\n runner: ubuntu-latest\n - platform: linux/arm64\n runner: ubuntu-24.04-arm\n runs-on: ${{ matrix.runner }}\n # ... build each platform natively, then merge manifests\n```\n\n### Solution 3: User Workaround (No CI Changes)\n\nFor users who need immediate access without waiting for CI changes:\n\n**Option A: Enable Rosetta 2 Emulation in Docker Desktop**\n\n1. Open Docker Desktop on macOS\n2. Go to Settings → Features in Development\n3. Enable \"Use Rosetta for x86/amd64 emulation on Apple Silicon\"\n4. Click Apply & Restart\n\n**Option B: Force AMD64 Platform**\n\n```bash\ndocker pull --platform linux/amd64 konard/hive-mind:latest\n```\n\nThis pulls the AMD64 image and runs it through emulation. Performance will be reduced but functional.\n\n**Option C: Build Locally**\n\n```bash\ngit clone https://github.com/link-assistant/hive-mind.git\ncd hive-mind\ndocker build -t hive-mind:local .\n```\n\nBuilding locally on Apple Silicon will produce a native ARM64 image.\n\n---\n\n## Recommendation\n\n**Primary Recommendation**: Implement **Solution 1** (QEMU-based multi-platform builds).\n\n**Rationale**:\n\n1. **Simplicity**: Minimal workflow changes required\n2. **Compatibility**: Works with existing GitHub-hosted runners\n3. **Cost**: No additional infrastructure or runner costs\n4. **Maintainability**: Single build produces both architectures\n5. **Industry Standard**: Used by most major Docker projects\n\n**Secondary Recommendation**: Document **Solution 3** (user workarounds) in `docs/DOCKER.md` as an immediate mitigation for users on Apple Silicon.\n\n---\n\n## Implementation\n\nThe recommended Solution 1 (QEMU-based multi-platform builds) has been implemented in PR [#963](https://github.com/link-assistant/hive-mind/pull/963).\n\n### Changes Made\n\n**1. Docker Publish Job (`docker-publish`)**\n\nAdded QEMU setup and updated platforms:\n\n```yaml\n# Added before docker/setup-buildx-action\n- name: Set up QEMU\n uses: docker/setup-qemu-action@v3\n\n# Updated platforms parameter\n- name: Build and push Docker image\n uses: docker/build-push-action@v5\n with:\n # ... existing configuration ...\n platforms: linux/amd64,linux/arm64 # Previously: linux/amd64\n```\n\n**2. Docker PR Check Job (`docker-pr-check`)**\n\nAdded QEMU and Buildx setup for consistency, but only runs amd64 build to avoid disk space issues:\n\n```yaml\n- name: Set up QEMU\n uses: docker/setup-qemu-action@v3\n\n- name: Set up Docker Buildx\n uses: docker/setup-buildx-action@v3\n\n- name: Build Docker image with log capture (amd64)\n run: |\n # Note: Multi-platform builds (amd64+arm64) are tested in docker-publish job during release\n # PR checks only validate amd64 to avoid disk space issues on runners\n docker buildx build --progress=plain --platform linux/amd64 --load -t ${{ env.IMAGE_NAME }}:test .\n```\n\nNote: Full multi-platform builds are not run during PR checks because the Docker image\nis very large (~6GB+ with all development tools), and building for both architectures\nwould exceed the GitHub runner disk space limits. The multi-platform build is tested\nduring the actual release in the `docker-publish` job.\n\n### Expected Results After Merge\n\nOnce this PR is merged and a new release is published:\n\n1. **Docker Hub images** will contain manifests for both `linux/amd64` and `linux/arm64`\n2. **Apple Silicon users** can run `docker pull konard/hive-mind:latest` without errors\n3. **ARM-based Linux systems** (Raspberry Pi, AWS Graviton) will also be supported\n\n### Verification\n\nAfter the next release, users can verify multi-platform support:\n\n```bash\n# Check manifest (should show both amd64 and arm64)\ndocker manifest inspect konard/hive-mind:latest\n\n# Pull on Apple Silicon (should work without --platform flag)\ndocker pull konard/hive-mind:latest\n```\n\n---\n\n## Impact Assessment\n\n### Users Affected\n\n- All macOS users with Apple Silicon (M1, M2, M3, M4 chips)\n- Estimated ~50% of macOS developer community (based on Apple Silicon adoption since 2020)\n- Users running ARM-based Linux systems (Raspberry Pi, AWS Graviton, etc.)\n\n### Build Time Impact\n\nEnabling multi-platform builds will increase CI build times:\n\n- **Current**: ~5-10 minutes for single-platform\n- **With QEMU**: ~15-30 minutes for dual-platform\n- **With Matrix**: ~10-15 minutes per platform (parallel)\n\n### Testing Requirements\n\nMulti-platform builds should include verification:\n\n1. Pull test on AMD64 system\n2. Pull test on ARM64 system (or emulation)\n3. Basic functionality test on both platforms\n\n---\n\n## References\n\n### Internal Documentation\n\n- [DOCKER.md](../../../docs/DOCKER.md) - Docker usage documentation\n- [release.yml](../../../.github/workflows/release.yml) - CI/CD workflow\n\n### External Resources\n\n- [Docker Multi-platform Image Builds](https://docs.docker.com/build/building/multi-platform/)\n- [GitHub Actions: Building Multi-Platform Docker Images](https://docs.docker.com/build/ci/github-actions/multi-platform/)\n- [Building Multi-Platform Docker Images for ARM64 in GitHub Actions](https://www.blacksmith.sh/blog/building-multi-platform-docker-images-for-arm64-in-github-actions)\n- [Docker Buildx: Build Multi-Platform Images Like a Pro](https://dev.to/marufsarker/docker-buildx-build-multi-platform-images-like-a-pro-31hn)\n- [How to Specify Platform for Pulling Images](https://www.codestudy.net/blog/change-platform-for-kubernetes-when-pulling-image/)\n\n### Related Issues and Discussions\n\n- [Docker Forum: Manifest lists linux/arm64](https://forums.docker.com/t/manifest-lists-linux-arm64-but-no-matching-manifest-for-linux-arm64-exists-in-the-manifest-list-entries/133173)\n- [Foundry Docker ARM64 Issue #7680](https://github.com/foundry-rs/foundry/issues/7680)\n- [Netflix Conductor Docker ARM64 Issue #2975](https://github.com/Netflix/conductor/issues/2975)\n- [Apache Superset ARM64 Issue #25434](https://github.com/apache/superset/issues/25434)\n\n---\n\n## Appendix A: Error Message Analysis\n\nThe error message contains valuable diagnostic information:\n\n```\nError response from daemon: no matching manifest for linux/arm64/v8 in the manifest list entries: no match for platform in manifest: not found\n```\n\n| Component | Meaning |\n| ----------------------- | ------------------------------------------------------ |\n| `Error response` | Docker daemon is responding to a client request |\n| `no matching manifest` | The requested architecture wasn't found |\n| `linux/arm64/v8` | The architecture the client is running (Apple Silicon) |\n| `manifest list entries` | The list of supported architectures in the image |\n| `no match for platform` | Final confirmation: platform mismatch |\n\n---\n\n## Appendix B: Docker Hub Tag Architecture Details\n\nData retrieved from Docker Hub API:\n\n```json\n{\n \"name\": \"latest\",\n \"images\": [\n {\n \"architecture\": \"amd64\",\n \"os\": \"linux\",\n \"digest\": \"sha256:...\"\n }\n ]\n}\n```\n\nNote: Only `amd64` is present in the manifest. No `arm64` entry exists.\n\n---\n\n## Appendix C: Verification Commands\n\n### Check Image Manifest (if Docker is available)\n\n```bash\ndocker manifest inspect konard/hive-mind:latest\n```\n\n### Check Local Architecture\n\n```bash\n# On macOS\nuname -m # Returns \"arm64\" for Apple Silicon\n\n# On Linux\ndpkg --print-architecture # Returns \"amd64\" or \"arm64\"\n```\n\n### Test Pull with Explicit Platform\n\n```bash\n# Force AMD64 (works with emulation on Apple Silicon)\ndocker pull --platform linux/amd64 konard/hive-mind:latest\n\n# Request ARM64 (will fail until multi-platform is enabled)\ndocker pull --platform linux/arm64 konard/hive-mind:latest\n```\n", | |
| "structuredPatch": [ | |
| { | |
| "oldStart": 152, | |
| "oldLines": 29, | |
| "newStart": 152, | |
| "newLines": 48, | |
| "lines": [ | |
| " ", | |
| " ## Root Cause Analysis", | |
| " ", | |
| "-### Primary Root Cause", | |
| "+### Primary Root Cause: Sentry CLI 3.x Breaking Change", | |
| " ", | |
| "-The Docker image is built exclusively for `linux/amd64` architecture. Apple Silicon Macs use ARM64 processors, which require images built for `linux/arm64/v8` (or a multi-architecture manifest that includes ARM64).", | |
| "+The **immediate cause** of Docker images not being published is a breaking change in Sentry CLI 3.x.", | |
| " ", | |
| "-### Contributing Factors", | |
| "+The `scripts/upload-sourcemaps.mjs` file uses the deprecated command:", | |
| "+```javascript", | |
| "+// OLD (broken in Sentry CLI 3.x)", | |
| "+execSync(`npx @sentry/cli releases files ${version} upload-sourcemaps ./src ...`);", | |
| "+```", | |
| " ", | |
| "-1. **Default GitHub Actions Runners**: Ubuntu runners on GitHub Actions are `x86_64` (amd64), so builds without explicit platform specification only produce amd64 images.", | |
| "+This was removed in Sentry CLI 3.x (see [Sentry CLI Releases](https://github.com/getsentry/sentry-cli/releases)). The new command is:", | |
| "+```javascript", | |
| "+// NEW (Sentry CLI 3.x compatible)", | |
| "+execSync(`npx @sentry/cli sourcemaps upload ./src --release ${version} ...`);", | |
| "+```", | |
| " ", | |
| "-2. **Explicit Single-Platform Configuration**: The workflow explicitly specifies `platforms: linux/amd64`, which prevents multi-platform builds.", | |
| "+**Consequence**: When the Release job fails at Sentry sourcemap upload, the `docker-publish` job is skipped because it depends on `release.outputs.published == 'true'`, which is only set on successful release completion.", | |
| " ", | |
| "-3. **No QEMU/Buildx Multi-Platform Setup**: The workflow uses `docker/setup-buildx-action@v3` but doesn't use `docker/setup-qemu-action@v3` for cross-platform emulation.", | |
| "+### Secondary Root Cause: Missing ARM64 Support (Historical)", | |
| " ", | |
| "-4. **Historical Design Decision**: Docker support was initially designed for server deployments (typically Intel-based), with local development on macOS as a secondary use case.", | |
| "+Before PR #963, the Docker image was built exclusively for `linux/amd64` architecture. Apple Silicon Macs use ARM64 processors, which require images built for `linux/arm64/v8`.", | |
| " ", | |
| "-### Why This Wasn't a Bug in Code", | |
| "+This was **already fixed** in PR #963 by adding:", | |
| "+- QEMU setup for cross-platform emulation", | |
| "+- `platforms: linux/amd64,linux/arm64` to build both architectures", | |
| " ", | |
| "-This is a **CI/CD configuration limitation**, not a code bug:", | |
| "+However, this fix never took effect because Docker publishing was blocked by the Sentry CLI issue.", | |
| " ", | |
| "-- The Dockerfile itself is architecture-agnostic", | |
| "-- The base image (`ubuntu:24.04`) supports multi-architecture", | |
| "-- All installed tools (Node.js, Homebrew, etc.) are available for ARM64", | |
| "-- The limitation is purely in how the image is built and published", | |
| "+### Contributing Factors", | |
| " ", | |
| "+1. **Silent Failure Propagation**: The Sentry sourcemap upload step fails the Release job, but npm publish succeeds first. This creates a state where npm has the new version but Docker does not.", | |
| "+", | |
| "+2. **Job Dependency Chain**: The workflow uses `needs: [release]` for docker-publish, meaning any failure in the release job blocks Docker publishing.", | |
| "+", | |
| "+3. **No Alerting**: There was no alert or notification when Docker publishing stopped working. The issue was only discovered when a user tried to pull the image.", | |
| "+", | |
| "+### Impact Assessment", | |
| "+", | |
| "+- **13 days** without Docker image updates (Dec 9 - Dec 22, 2025)", | |
| "+- **36+ releases** published to npm without corresponding Docker images", | |
| "+- **All Apple Silicon users** affected (plus ARM-based Linux systems)", | |
| "+", | |
| " ---", | |
| " ", | |
| " ## Technical Analysis" | |
| ] | |
| } | |
| ], | |
| "userModified": false, | |
| "replaceAll": false | |
| } | |
| } | |
| [2025-12-22T17:18:28.481Z] [INFO] { | |
| "type": "assistant", | |
| "message": { | |
| "model": "claude-opus-4-5-20251101", | |
| "id": "msg_01QEpBZ6NKJ2S6KnLN368D9H", | |
| "type": "message", | |
| "role": "assistant", | |
| "content": [ | |
| { | |
| "type": "text", | |
| "text": "Now let me update the Implementation section to reflect the actual fix:" | |
| } | |
| ], | |
| "stop_reason": null, | |
| "stop_sequence": null, | |
| "usage": { | |
| "input_tokens": 1, | |
| "cache_creation_input_tokens": 2166, | |
| "cache_read_input_tokens": 96024, | |
| "cache_creation": { | |
| "ephemeral_5m_input_tokens": 2166, | |
| "ephemeral_1h_input_tokens": 0 | |
| }, | |
| "output_tokens": 6, | |
| "service_tier": "standard" | |
| }, | |
| "context_management": null | |
| }, | |
| "parent_tool_use_id": null, | |
| "session_id": "ad16a8b2-2455-42b8-b611-73f369cef417", | |
| "uuid": "fce13008-a808-406b-a0f4-53b5907fcf66" | |
| } | |
| [2025-12-22T17:18:43.626Z] [INFO] { | |
| "type": "assistant", | |
| "message": { | |
| "model": "claude-opus-4-5-20251101", | |
| "id": "msg_01QEpBZ6NKJ2S6KnLN368D9H", | |
| "type": "message", | |
| "role": "assistant", | |
| "content": [ | |
| { | |
| "type": "tool_use", | |
| "id": "toolu_01J9uR4L7KhF9AGm1xSY84co", | |
| "name": "Edit", | |
| "input": { | |
| "file_path": "/tmp/gh-issue-solver-1766423610256/docs/case-studies/issue-962/README.md", | |
| "old_string": "## Implementation\n\nThe recommended Solution 1 (QEMU-based multi-platform builds) has been implemented in PR [#963](https://github.com/link-assistant/hive-mind/pull/963).\n\n### Changes Made\n\n**1. Docker Publish Job (`docker-publish`)**\n\nAdded QEMU setup and updated platforms:\n\n```yaml\n# Added before docker/setup-buildx-action\n- name: Set up QEMU\n uses: docker/setup-qemu-action@v3\n\n# Updated platforms parameter\n- name: Build and push Docker image\n uses: docker/build-push-action@v5\n with:\n # ... existing configuration ...\n platforms: linux/amd64,linux/arm64 # Previously: linux/amd64\n```\n\n**2. Docker PR Check Job (`docker-pr-check`)**\n\nAdded QEMU and Buildx setup for consistency, but only runs amd64 build to avoid disk space issues:\n\n```yaml\n- name: Set up QEMU\n uses: docker/setup-qemu-action@v3\n\n- name: Set up Docker Buildx\n uses: docker/setup-buildx-action@v3\n\n- name: Build Docker image with log capture (amd64)\n run: |\n # Note: Multi-platform builds (amd64+arm64) are tested in docker-publish job during release\n # PR checks only validate amd64 to avoid disk space issues on runners\n docker buildx build --progress=plain --platform linux/amd64 --load -t ${{ env.IMAGE_NAME }}:test .\n```\n\nNote: Full multi-platform builds are not run during PR checks because the Docker image\nis very large (~6GB+ with all development tools), and building for both architectures\nwould exceed the GitHub runner disk space limits. The multi-platform build is tested\nduring the actual release in the `docker-publish` job.", | |
| "new_string": "## Implementation\n\n### Fix 1: Sentry CLI Update (PR #966)\n\nThe Sentry sourcemap upload script needs to be updated to use the new Sentry CLI 3.x command syntax.\n\n**File**: `scripts/upload-sourcemaps.mjs`\n\n**Before** (lines 62, 71):\n```javascript\nexecSync(`npx @sentry/cli releases files ${version} upload-sourcemaps ./src --org ${orgName} --project ${projectName} --url-prefix '~/src'`, ...);\n```\n\n**After**:\n```javascript\nexecSync(`npx @sentry/cli sourcemaps upload ./src --org ${orgName} --project ${projectName} --release ${version} --url-prefix '~/src'`, ...);\n```\n\nReference: [Sentry CLI 3.x Release Notes](https://github.com/getsentry/sentry-cli/releases) - \"The `releases files` command has been removed. Use `sourcemaps upload` instead.\"\n\n### Fix 2: Multi-Platform Docker Builds (PR #963 - Already Merged)\n\nThe multi-platform build support was already added in PR [#963](https://github.com/link-assistant/hive-mind/pull/963):\n\n**1. Docker Publish Job (`docker-publish`)**\n\nAdded QEMU setup and updated platforms:\n\n```yaml\n# Added before docker/setup-buildx-action\n- name: Set up QEMU\n uses: docker/setup-qemu-action@v3\n\n# Updated platforms parameter\n- name: Build and push Docker image\n uses: docker/build-push-action@v5\n with:\n # ... existing configuration ...\n platforms: linux/amd64,linux/arm64 # Previously: linux/amd64\n```\n\n**2. Docker PR Check Job (`docker-pr-check`)**\n\nAdded QEMU and Buildx setup for consistency, but only runs amd64 build to avoid disk space issues:\n\n```yaml\n- name: Set up QEMU\n uses: docker/setup-qemu-action@v3\n\n- name: Set up Docker Buildx\n uses: docker/setup-buildx-action@v3\n\n- name: Build Docker image with log capture (amd64)\n run: |\n # Note: Multi-platform builds (amd64+arm64) are tested in docker-publish job during release\n # PR checks only validate amd64 to avoid disk space issues on runners\n docker buildx build --progress=plain --platform linux/amd64 --load -t ${{ env.IMAGE_NAME }}:test .\n```\n\nNote: Full multi-platform builds are not run during PR checks because the Docker image\nis very large (~6GB+ with all development tools), and building for both architectures\nwould exceed the GitHub runner disk space limits. The multi-platform build is tested\nduring the actual release in the `docker-publish` job." | |
| } | |
| } | |
| ], | |
| "stop_reason": "tool_use", | |
| "stop_sequence": null, | |
| "usage": { | |
| "input_tokens": 1, | |
| "cache_creation_input_tokens": 2166, | |
| "cache_read_input_tokens": 96024, | |
| "cache_creation": { | |
| "ephemeral_5m_input_tokens": 2166, | |
| "ephemeral_1h_input_tokens": 0 | |
| }, | |
| "output_tokens": 1248, | |
| "service_tier": "standard" | |
| }, | |
| "context_management": null | |
| }, | |
| "parent_tool_use_id": null, | |
| "session_id": "ad16a8b2-2455-42b8-b611-73f369cef417", | |
| "uuid": "ff43a041-456e-4c45-a311-73c667bd5ee6" | |
| } | |
| [2025-12-22T17:18:43.669Z] [INFO] {"type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_01J9uR4L7KhF9AGm1xSY84co","type":"tool_result","content":"The file /tmp/gh-issue-solver-1766423610256/docs/case-studies/issue-962/README.md has been updated. Here's the result of running `cat -n` on a snippet of the edited file:\n 390→**Secondary Recommendation**: Document **Solution 3** (user workarounds) in `docs/DOCKER.md` as an immediate mitigation for users on Apple Silicon.\n 391→\n 392→---\n 393→\n 394→## Implementation\n 395→\n 396→### Fix 1: Sentry CLI Update (PR #966)\n 397→\n 398→The Sentry sourcemap upload script needs to be updated to use the new Sentry CLI 3.x command syntax.\n 399→\n 400→**File**: `scripts/upload-sourcemaps.mjs`\n 401→\n 402→**Before** (lines 62, 71):\n 403→```javascript\n 404→execSync(`npx @sentry/cli releases files ${version} upload-sourcemaps ./src --org ${orgName} --project ${projectName} --url-prefix '~/src'`, ...);\n 405→```\n 406→\n 407→**After**:\n 408→```javascript\n 409→execSync(`npx @sentry/cli sourcemaps upload ./src --org ${orgName} --project ${projectName} --release ${version} --url-prefix '~/src'`, ...);\n 410→```\n 411→\n 412→Reference: [Sentry CLI 3.x Release Notes](https://github.com/getsentry/sentry-cli/releases) - \"The `releases files` command has been removed. Use `sourcemaps upload` instead.\"\n 413→\n 414→### Fix 2: Multi-Platform Docker Builds (PR #963 - Already Merged)\n 415→\n 416→The multi-platform build support was already added in PR [#963](https://github.com/link-assistant/hive-mind/pull/963):\n 417→\n 418→**1. Docker Publish Job (`docker-publish`)**\n 419→\n 420→Added QEMU setup and updated platforms:\n 421→\n 422→```yaml\n 423→# Added before docker/setup-buildx-action\n 424→- name: Set up QEMU\n 425→ uses: docker/setup-qemu-action@v3\n 426→\n 427→# Updated platforms parameter\n 428→- name: Build and push Docker image\n 429→ uses: docker/build-push-action@v5\n 430→ with:\n 431→ # ... existing configuration ...\n 432→ platforms: linux/amd64,linux/arm64 # Previously: linux/amd64\n 433→```\n 434→\n 435→**2. Docker PR Check Job (`docker-pr-check`)**\n 436→\n 437→Added QEMU and Buildx setup for consistency, but only runs amd64 build to avoid disk space issues:\n 438→\n 439→```yaml\n 440→- name: Set up QEMU\n 441→ uses: docker/setup-qemu-action@v3\n 442→\n 443→- name: Set up Docker Buildx\n 444→ uses: docker/setup-buildx-action@v3\n 445→\n 446→- name: Build Docker image with log capture (amd64)\n 447→ run: |\n 448→ # Note: Multi-platform builds (amd64+arm64) are tested in docker-publish job during release\n 449→ # PR checks only validate amd64 to avoid disk space issues on runners\n 450→ docker buildx build --progress=plain --platform linux/amd64 --load -t ${{ env.IMAGE_NAME }}:test .\n 451→```\n 452→\n 453→Note: Full multi-platform builds are not run during PR checks because the Docker image\n 454→is very large (~6GB+ with all development tools), and building for both architectures\n 455→would exceed the GitHub runner disk space limits. The multi-platform build is tested\n 456→during the actual release in the `docker-publish` job.\n 457→\n 458→### Expected Results After Merge\n 459→\n 460→Once this PR is merged and a new release is published:"}]},"parent_tool_use_id":null,"session_id":"ad16a8b2-2455-42b8-b611-73f369cef417","uuid":"c2135d4a-5596-48ef-8904-b653322ea342","tool_use_result":{"filePath":"/tmp/gh-issue-solver-1766423610256/docs/case-studies/issue-962/README.md","oldString":"## Implementation\n\nThe recommended Solution 1 (QEMU-based multi-platform builds) has been implemented in PR [#963](https://github.com/link-assistant/hive-mind/pull/963).\n\n### Changes Made\n\n**1. Docker Publish Job (`docker-publish`)**\n\nAdded QEMU setup and updated platforms:\n\n```yaml\n# Added before docker/setup-buildx-action\n- name: Set up QEMU\n uses: docker/setup-qemu-action@v3\n\n# Updated platforms parameter\n- name: Build and push Docker image\n uses: docker/build-push-action@v5\n with:\n # ... existing configuration ...\n platforms: linux/amd64,linux/arm64 # Previously: linux/amd64\n```\n\n**2. Docker PR Check Job (`docker-pr-check`)**\n\nAdded QEMU and Buildx setup for consistency, but only runs amd64 build to avoid disk space issues:\n\n```yaml\n- name: Set up QEMU\n uses: docker/setup-qemu-action@v3\n\n- name: Set up Docker Buildx\n uses: docker/setup-buildx-action@v3\n\n- name: Build Docker image with log capture (amd64)\n run: |\n # Note: Multi-platform builds (amd64+arm64) are tested in docker-publish job during release\n # PR checks only validate amd64 to avoid disk space issues on runners\n docker buildx build --progress=plain --platform linux/amd64 --load -t ${{ env.IMAGE_NAME }}:test .\n```\n\nNote: Full multi-platform builds are not run during PR checks because the Docker image\nis very large (~6GB+ with all development tools), and building for both architectures\nwould exceed the GitHub runner disk space limits. The multi-platform build is tested\nduring the actual release in the `docker-publish` job.","newString":"## Implementation\n\n### Fix 1: Sentry CLI Update (PR #966)\n\nThe Sentry sourcemap upload script needs to be updated to use the new Sentry CLI 3.x command syntax.\n\n**File**: `scripts/upload-sourcemaps.mjs`\n\n**Before** (lines 62, 71):\n```javascript\nexecSync(`npx @sentry/cli releases files ${version} upload-sourcemaps ./src --org ${orgName} --project ${projectName} --url-prefix '~/src'`, ...);\n```\n\n**After**:\n```javascript\nexecSync(`npx @sentry/cli sourcemaps upload ./src --org ${orgName} --project ${projectName} --release ${version} --url-prefix '~/src'`, ...);\n```\n\nReference: [Sentry CLI 3.x Release Notes](https://github.com/getsentry/sentry-cli/releases) - \"The `releases files` command has been removed. Use `sourcemaps upload` instead.\"\n\n### Fix 2: Multi-Platform Docker Builds (PR #963 - Already Merged)\n\nThe multi-platform build support was already added in PR [#963](https://github.com/link-assistant/hive-mind/pull/963):\n\n**1. Docker Publish Job (`docker-publish`)**\n\nAdded QEMU setup and updated platforms:\n\n```yaml\n# Added before docker/setup-buildx-action\n- name: Set up QEMU\n uses: docker/setup-qemu-action@v3\n\n# Updated platforms parameter\n- name: Build and push Docker image\n uses: docker/build-push-action@v5\n with:\n # ... existing configuration ...\n platforms: linux/amd64,linux/arm64 # Previously: linux/amd64\n```\n\n**2. Docker PR Check Job (`docker-pr-check`)**\n\nAdded QEMU and Buildx setup for consistency, but only runs amd64 build to avoid disk space issues:\n\n```yaml\n- name: Set up QEMU\n uses: docker/setup-qemu-action@v3\n\n- name: Set up Docker Buildx\n uses: docker/setup-buildx-action@v3\n\n- name: Build Docker image with log capture (amd64)\n run: |\n # Note: Multi-platform builds (amd64+arm64) are tested in docker-publish job during release\n # PR checks only validate amd64 to avoid disk space issues on runners\n docker buildx build --progress=plain --platform linux/amd64 --load -t ${{ env.IMAGE_NAME }}:test .\n```\n\nNote: Full multi-platform builds are not run during PR checks because the Docker image\nis very large (~6GB+ with all development tools), and building for both architectures\nwould exceed the GitHub runner disk space limits. The multi-platform build is tested\nduring the actual release in the `docker-publish` job.","originalFile":"# Case Study: Docker Image Not Supported on Apple Silicon (Issue #962)\n\n**Date**: 2025-12-22\n**Issue**: [#962](https://github.com/link-assistant/hive-mind/issues/962)\n**Pull Requests**:\n- [#963](https://github.com/link-assistant/hive-mind/pull/963) - Multi-platform build enabled (amd64 + arm64)\n- [#966](https://github.com/link-assistant/hive-mind/pull/966) - Fix Sentry CLI breaking Docker publish\n**Status**: Investigating - Two issues identified\n\n---\n\n## Executive Summary\n\nThe Docker image `konard/hive-mind:latest` fails to pull on macOS with Apple Silicon (M1/M2/M3) processors because the image is built only for the `linux/amd64` architecture. Apple Silicon uses the ARM64 architecture (`linux/arm64/v8`), and when Docker attempts to pull an image without a matching platform manifest, it returns the error: \"no matching manifest for linux/arm64/v8 in the manifest list entries.\"\n\n**Critical Finding**: Investigation revealed **two separate but related issues**:\n\n1. **Primary Issue (Blocking)**: Docker images have not been published since v0.38.1 (Dec 9, 2025) due to a broken Sentry CLI command in the release workflow. The `sentry-cli releases files` command was removed in Sentry CLI 3.x, causing the Release job to fail and skip Docker publishing.\n\n2. **Secondary Issue (Configuration)**: Multi-platform ARM64 support was added in PR #963 but never took effect because Docker publishing was blocked by Issue #1.\n\n**Current Gap**: 10+ releases (0.38.2 through 0.48.3) have npm packages but NO Docker images.\n\n---\n\n## Problem Statement\n\n### Symptom\n\nWhen attempting to pull the Docker image on macOS with Apple Silicon:\n\n```bash\nkonard@MacBook-Pro-Konstantin ~ % docker pull konard/hive-mind:latest\nError response from daemon: no matching manifest for linux/arm64/v8 in the manifest list entries: no match for platform in manifest: not found\n```\n\n### Expected Behavior\n\nThe Docker image should pull successfully on both Intel-based systems (amd64) and Apple Silicon systems (arm64).\n\n---\n\n## Data Collection\n\n### Docker Hub Manifest Analysis\n\nInspecting the available tags on Docker Hub reveals that all published images only support `amd64`:\n\n| Tag | Architectures |\n| ------- | -------------- |\n| latest | amd64, unknown |\n| 0.38.1 | amd64, unknown |\n| 0.38.0 | amd64, unknown |\n| 0.37.28 | amd64, unknown |\n| 0.37.27 | amd64, unknown |\n| 0.37.26 | amd64, unknown |\n| 0.37.25 | amd64, unknown |\n| 0.37.24 | amd64, unknown |\n| 0.37.23 | amd64, unknown |\n| 0.37.22 | amd64, unknown |\n\n**Source**: Docker Hub API at `https://hub.docker.com/v2/repositories/konard/hive-mind/tags`\n\n### CI/CD Configuration Analysis\n\nThe current release workflow (`/.github/workflows/release.yml`) was updated in PR #963 to build for both architectures:\n\n```yaml\n# Line 1647-1657 in release.yml\n- name: Build and push Docker image\n uses: docker/build-push-action@v5\n with:\n context: .\n file: ./Dockerfile\n push: true\n tags: ${{ steps.meta.outputs.tags }}\n labels: ${{ steps.meta.outputs.labels }}\n cache-from: type=gha\n cache-to: type=gha,mode=max\n platforms: linux/amd64,linux/arm64 # <-- Both architectures configured\n```\n\n**However**, Docker images have not been published since Dec 9, 2025 (v0.38.1) due to the Sentry CLI issue.\n\n### Release Gap Analysis\n\n| Source | Latest Version | Last Updated |\n|--------|---------------|--------------|\n| npm Registry | 0.48.3 | 2025-12-22 |\n| Docker Hub | 0.38.1 | 2025-12-09 |\n| GitHub Releases | v0.48.3 | 2025-12-22 |\n\n**Missing Docker Images**: 0.38.2, 0.38.3, 0.38.4, 0.38.5, 0.38.6, 0.38.7, 0.38.8, 0.38.9, 0.39.0, 0.40.0, 0.40.1, 0.40.3, 0.41.0, 0.41.2, 0.41.3, 0.41.5, 0.41.7, 0.41.8, 0.41.9, 0.41.10, 0.42.0, 0.42.1, 0.42.2, 0.42.3, 0.43.0, 0.44.0, 0.45.0, 0.46.0, 0.46.1, 0.47.0, 0.47.1, 0.47.2, 0.48.0, 0.48.1, 0.48.2, 0.48.3\n\n### Sentry CLI Error Analysis\n\nThe Release job fails at the \"Post-publish - Upload Source Maps to Sentry\" step:\n\n```\nerror: unrecognized subcommand 'files'\n\nUsage: sentry-cli releases [OPTIONS] <COMMAND>\n\nFor more information, try '--help'.\n❌ Failed to upload source maps: Command failed: npx @sentry/cli releases files 0.48.3 upload-sourcemaps ./src --org deepassistant --project hive-mind --url-prefix '~/src'\n```\n\nThis is caused by the `sentry-cli releases files` command being removed in Sentry CLI 3.x. The correct command is now `sentry-cli sourcemaps upload`.\n\n---\n\n## Timeline of Events\n\n### Initial Docker Setup (September 2025)\n\n**Commit**: `9e71c3b` - \"Dockerize solve.mjs with credential transfer support\"\n\n- First Docker support added to the project\n- Used `.gitpod.Dockerfile` as base\n- Created `docker-compose.yml`, `docker-solve.sh`, and `DOCKER.md`\n- No platform specification (defaulted to runner's architecture)\n\n### Production Docker Image (November 2025)\n\n**Commit**: `a8c17de` - \"Add Docker support with Ubuntu 24.04 and CI/CD pipeline\"\n\n- Created `Dockerfile.production` with Ubuntu 24.04 base\n- Added GitHub Actions workflow for Docker Hub publishing\n- **No `platforms` parameter specified** - builds defaulted to `linux/amd64` (GitHub runner architecture)\n\n### Workflow Consolidation (December 2025)\n\n**Commit**: `0297bc4` - \"Merge Docker and Helm releases into main workflow\"\n\n- Docker publish moved to `main.yml`\n- `platforms: linux/amd64` explicitly added to workflow\n\n**Commit**: `40545f6` - \"Consolidate CI/CD to single release.yml following template best practices\"\n\n- All workflows consolidated into `release.yml`\n- `platforms: linux/amd64` preserved\n\n### Issue Reported (December 2025)\n\n**Issue**: [#962](https://github.com/link-assistant/hive-mind/issues/962)\n\n- User attempted `docker pull konard/hive-mind:latest` on macOS with Apple Silicon\n- Received \"no matching manifest for linux/arm64/v8\" error\n- Questioned whether this is a bug in code or system configuration\n\n---\n\n## Root Cause Analysis\n\n### Primary Root Cause: Sentry CLI 3.x Breaking Change\n\nThe **immediate cause** of Docker images not being published is a breaking change in Sentry CLI 3.x.\n\nThe `scripts/upload-sourcemaps.mjs` file uses the deprecated command:\n```javascript\n// OLD (broken in Sentry CLI 3.x)\nexecSync(`npx @sentry/cli releases files ${version} upload-sourcemaps ./src ...`);\n```\n\nThis was removed in Sentry CLI 3.x (see [Sentry CLI Releases](https://github.com/getsentry/sentry-cli/releases)). The new command is:\n```javascript\n// NEW (Sentry CLI 3.x compatible)\nexecSync(`npx @sentry/cli sourcemaps upload ./src --release ${version} ...`);\n```\n\n**Consequence**: When the Release job fails at Sentry sourcemap upload, the `docker-publish` job is skipped because it depends on `release.outputs.published == 'true'`, which is only set on successful release completion.\n\n### Secondary Root Cause: Missing ARM64 Support (Historical)\n\nBefore PR #963, the Docker image was built exclusively for `linux/amd64` architecture. Apple Silicon Macs use ARM64 processors, which require images built for `linux/arm64/v8`.\n\nThis was **already fixed** in PR #963 by adding:\n- QEMU setup for cross-platform emulation\n- `platforms: linux/amd64,linux/arm64` to build both architectures\n\nHowever, this fix never took effect because Docker publishing was blocked by the Sentry CLI issue.\n\n### Contributing Factors\n\n1. **Silent Failure Propagation**: The Sentry sourcemap upload step fails the Release job, but npm publish succeeds first. This creates a state where npm has the new version but Docker does not.\n\n2. **Job Dependency Chain**: The workflow uses `needs: [release]` for docker-publish, meaning any failure in the release job blocks Docker publishing.\n\n3. **No Alerting**: There was no alert or notification when Docker publishing stopped working. The issue was only discovered when a user tried to pull the image.\n\n### Impact Assessment\n\n- **13 days** without Docker image updates (Dec 9 - Dec 22, 2025)\n- **36+ releases** published to npm without corresponding Docker images\n- **All Apple Silicon users** affected (plus ARM-based Linux systems)\n\n---\n\n## Technical Analysis\n\n### Docker Multi-Architecture Fundamentals\n\nDocker uses **manifest lists** to support multiple architectures. A manifest list is a collection of architecture-specific image manifests:\n\n```\nkonard/hive-mind:latest (manifest list)\n├── linux/amd64 (image manifest) ← Currently the only entry\n├── linux/arm64/v8 (image manifest) ← Missing, causes the error\n├── linux/arm/v7 (image manifest) ← Optional for 32-bit ARM\n└── ...\n```\n\nWhen you run `docker pull`, the Docker daemon:\n\n1. Fetches the manifest list for the tag\n2. Looks for a manifest matching the local architecture\n3. Pulls that specific image\n\nIf no matching manifest exists, the error \"no matching manifest\" occurs.\n\n### Current Build Process\n\n```\n┌─────────────────────┐\n│ GitHub Actions │\n│ (ubuntu-latest) │\n│ Architecture: │\n│ x86_64/amd64 │\n└─────────┬───────────┘\n │\n ▼\n┌─────────────────────┐\n│ docker/buildx │\n│ platforms: │\n│ linux/amd64 │\n└─────────┬───────────┘\n │\n ▼\n┌─────────────────────┐\n│ Docker Hub │\n│ konard/hive-mind │\n│ Only amd64 images │\n└─────────────────────┘\n```\n\n### Required Changes for Multi-Platform Support\n\n```\n┌─────────────────────┐\n│ GitHub Actions │\n│ (ubuntu-latest) │\n└─────────┬───────────┘\n │\n ▼\n┌─────────────────────┐\n│ QEMU Emulation │ ← NEW: Enables ARM builds on x86 runners\n│ docker/setup-qemu │\n└─────────┬───────────┘\n │\n ▼\n┌─────────────────────┐\n│ docker/buildx │\n│ platforms: │\n│ linux/amd64, │ ← UPDATED: Both platforms\n│ linux/arm64 │\n└─────────┬───────────┘\n │\n ▼\n┌─────────────────────┐\n│ Docker Hub │\n│ konard/hive-mind │\n│ amd64 + arm64 │ ← Multi-arch manifest\n└─────────────────────┘\n```\n\n---\n\n## Proposed Solutions\n\n### Solution 1: Enable Multi-Platform Builds with QEMU (Recommended)\n\n**Pros**:\n\n- Works with existing GitHub-hosted runners (no infrastructure changes)\n- Single workflow produces both architectures\n- Industry-standard approach used by major projects\n\n**Cons**:\n\n- ARM builds through QEMU emulation are slower (2-10x)\n- Build times will increase (current ~5-10min may become ~15-30min)\n\n**Implementation**:\n\n```yaml\n# In docker-publish job of release.yml\n\n# Add QEMU setup step before Docker Buildx\n- name: Set up QEMU\n uses: docker/setup-qemu-action@v3\n\n- name: Set up Docker Buildx\n uses: docker/setup-buildx-action@v3\n\n# Update build-push-action\n- name: Build and push Docker image\n uses: docker/build-push-action@v5\n with:\n context: .\n file: ./Dockerfile\n push: true\n tags: ${{ steps.meta.outputs.tags }}\n labels: ${{ steps.meta.outputs.labels }}\n cache-from: type=gha\n cache-to: type=gha,mode=max\n platforms: linux/amd64,linux/arm64 # <-- Add arm64\n```\n\n### Solution 2: Matrix Build with Native ARM Runner\n\n**Pros**:\n\n- Native ARM builds are 10-30x faster than QEMU emulation\n- Build times remain similar to current single-platform builds\n\n**Cons**:\n\n- Requires ARM runner availability (GitHub now offers `ubuntu-24.04-arm`)\n- More complex workflow with matrix strategy\n- May incur additional costs depending on runner availability\n\n**Implementation**:\n\n```yaml\ndocker-publish:\n strategy:\n matrix:\n include:\n - platform: linux/amd64\n runner: ubuntu-latest\n - platform: linux/arm64\n runner: ubuntu-24.04-arm\n runs-on: ${{ matrix.runner }}\n # ... build each platform natively, then merge manifests\n```\n\n### Solution 3: User Workaround (No CI Changes)\n\nFor users who need immediate access without waiting for CI changes:\n\n**Option A: Enable Rosetta 2 Emulation in Docker Desktop**\n\n1. Open Docker Desktop on macOS\n2. Go to Settings → Features in Development\n3. Enable \"Use Rosetta for x86/amd64 emulation on Apple Silicon\"\n4. Click Apply & Restart\n\n**Option B: Force AMD64 Platform**\n\n```bash\ndocker pull --platform linux/amd64 konard/hive-mind:latest\n```\n\nThis pulls the AMD64 image and runs it through emulation. Performance will be reduced but functional.\n\n**Option C: Build Locally**\n\n```bash\ngit clone https://github.com/link-assistant/hive-mind.git\ncd hive-mind\ndocker build -t hive-mind:local .\n```\n\nBuilding locally on Apple Silicon will produce a native ARM64 image.\n\n---\n\n## Recommendation\n\n**Primary Recommendation**: Implement **Solution 1** (QEMU-based multi-platform builds).\n\n**Rationale**:\n\n1. **Simplicity**: Minimal workflow changes required\n2. **Compatibility**: Works with existing GitHub-hosted runners\n3. **Cost**: No additional infrastructure or runner costs\n4. **Maintainability**: Single build produces both architectures\n5. **Industry Standard**: Used by most major Docker projects\n\n**Secondary Recommendation**: Document **Solution 3** (user workarounds) in `docs/DOCKER.md` as an immediate mitigation for users on Apple Silicon.\n\n---\n\n## Implementation\n\nThe recommended Solution 1 (QEMU-based multi-platform builds) has been implemented in PR [#963](https://github.com/link-assistant/hive-mind/pull/963).\n\n### Changes Made\n\n**1. Docker Publish Job (`docker-publish`)**\n\nAdded QEMU setup and updated platforms:\n\n```yaml\n# Added before docker/setup-buildx-action\n- name: Set up QEMU\n uses: docker/setup-qemu-action@v3\n\n# Updated platforms parameter\n- name: Build and push Docker image\n uses: docker/build-push-action@v5\n with:\n # ... existing configuration ...\n platforms: linux/amd64,linux/arm64 # Previously: linux/amd64\n```\n\n**2. Docker PR Check Job (`docker-pr-check`)**\n\nAdded QEMU and Buildx setup for consistency, but only runs amd64 build to avoid disk space issues:\n\n```yaml\n- name: Set up QEMU\n uses: docker/setup-qemu-action@v3\n\n- name: Set up Docker Buildx\n uses: docker/setup-buildx-action@v3\n\n- name: Build Docker image with log capture (amd64)\n run: |\n # Note: Multi-platform builds (amd64+arm64) are tested in docker-publish job during release\n # PR checks only validate amd64 to avoid disk space issues on runners\n docker buildx build --progress=plain --platform linux/amd64 --load -t ${{ env.IMAGE_NAME }}:test .\n```\n\nNote: Full multi-platform builds are not run during PR checks because the Docker image\nis very large (~6GB+ with all development tools), and building for both architectures\nwould exceed the GitHub runner disk space limits. The multi-platform build is tested\nduring the actual release in the `docker-publish` job.\n\n### Expected Results After Merge\n\nOnce this PR is merged and a new release is published:\n\n1. **Docker Hub images** will contain manifests for both `linux/amd64` and `linux/arm64`\n2. **Apple Silicon users** can run `docker pull konard/hive-mind:latest` without errors\n3. **ARM-based Linux systems** (Raspberry Pi, AWS Graviton) will also be supported\n\n### Verification\n\nAfter the next release, users can verify multi-platform support:\n\n```bash\n# Check manifest (should show both amd64 and arm64)\ndocker manifest inspect konard/hive-mind:latest\n\n# Pull on Apple Silicon (should work without --platform flag)\ndocker pull konard/hive-mind:latest\n```\n\n---\n\n## Impact Assessment\n\n### Users Affected\n\n- All macOS users with Apple Silicon (M1, M2, M3, M4 chips)\n- Estimated ~50% of macOS developer community (based on Apple Silicon adoption since 2020)\n- Users running ARM-based Linux systems (Raspberry Pi, AWS Graviton, etc.)\n\n### Build Time Impact\n\nEnabling multi-platform builds will increase CI build times:\n\n- **Current**: ~5-10 minutes for single-platform\n- **With QEMU**: ~15-30 minutes for dual-platform\n- **With Matrix**: ~10-15 minutes per platform (parallel)\n\n### Testing Requirements\n\nMulti-platform builds should include verification:\n\n1. Pull test on AMD64 system\n2. Pull test on ARM64 system (or emulation)\n3. Basic functionality test on both platforms\n\n---\n\n## References\n\n### Internal Documentation\n\n- [DOCKER.md](../../../docs/DOCKER.md) - Docker usage documentation\n- [release.yml | |
| [2025-12-22T17:18:43.673Z] [INFO] ](../../../.github/workflows/release.yml) - CI/CD workflow\n\n### External Resources\n\n- [Docker Multi-platform Image Builds](https://docs.docker.com/build/building/multi-platform/)\n- [GitHub Actions: Building Multi-Platform Docker Images](https://docs.docker.com/build/ci/github-actions/multi-platform/)\n- [Building Multi-Platform Docker Images for ARM64 in GitHub Actions](https://www.blacksmith.sh/blog/building-multi-platform-docker-images-for-arm64-in-github-actions)\n- [Docker Buildx: Build Multi-Platform Images Like a Pro](https://dev.to/marufsarker/docker-buildx-build-multi-platform-images-like-a-pro-31hn)\n- [How to Specify Platform for Pulling Images](https://www.codestudy.net/blog/change-platform-for-kubernetes-when-pulling-image/)\n\n### Related Issues and Discussions\n\n- [Docker Forum: Manifest lists linux/arm64](https://forums.docker.com/t/manifest-lists-linux-arm64-but-no-matching-manifest-for-linux-arm64-exists-in-the-manifest-list-entries/133173)\n- [Foundry Docker ARM64 Issue #7680](https://github.com/foundry-rs/foundry/issues/7680)\n- [Netflix Conductor Docker ARM64 Issue #2975](https://github.com/Netflix/conductor/issues/2975)\n- [Apache Superset ARM64 Issue #25434](https://github.com/apache/superset/issues/25434)\n\n---\n\n## Appendix A: Error Message Analysis\n\nThe error message contains valuable diagnostic information:\n\n```\nError response from daemon: no matching manifest for linux/arm64/v8 in the manifest list entries: no match for platform in manifest: not found\n```\n\n| Component | Meaning |\n| ----------------------- | ------------------------------------------------------ |\n| `Error response` | Docker daemon is responding to a client request |\n| `no matching manifest` | The requested architecture wasn't found |\n| `linux/arm64/v8` | The architecture the client is running (Apple Silicon) |\n| `manifest list entries` | The list of supported architectures in the image |\n| `no match for platform` | Final confirmation: platform mismatch |\n\n---\n\n## Appendix B: Docker Hub Tag Architecture Details\n\nData retrieved from Docker Hub API:\n\n```json\n{\n \"name\": \"latest\",\n \"images\": [\n {\n \"architecture\": \"amd64\",\n \"os\": \"linux\",\n \"digest\": \"sha256:...\"\n }\n ]\n}\n```\n\nNote: Only `amd64` is present in the manifest. No `arm64` entry exists.\n\n---\n\n## Appendix C: Verification Commands\n\n### Check Image Manifest (if Docker is available)\n\n```bash\ndocker manifest inspect konard/hive-mind:latest\n```\n\n### Check Local Architecture\n\n```bash\n# On macOS\nuname -m # Returns \"arm64\" for Apple Silicon\n\n# On Linux\ndpkg --print-architecture # Returns \"amd64\" or \"arm64\"\n```\n\n### Test Pull with Explicit Platform\n\n```bash\n# Force AMD64 (works with emulation on Apple Silicon)\ndocker pull --platform linux/amd64 konard/hive-mind:latest\n\n# Request ARM64 (will fail until multi-platform is enabled)\ndocker pull --platform linux/arm64 konard/hive-mind:latest\n```\n","structuredPatch":[{"oldStart":393,"oldLines":10,"newStart":393,"newLines":28,"lines":[" "," ## Implementation"," ","-The recommended Solution 1 (QEMU-based multi-platform builds) has been implemented in PR [#963](https://github.com/link-assistant/hive-mind/pull/963).","+### Fix 1: Sentry CLI Update (PR #966)"," ","-### Changes Made","+The Sentry sourcemap upload script needs to be updated to use the new Sentry CLI 3.x command syntax."," ","+**File**: `scripts/upload-sourcemaps.mjs`","+","+**Before** (lines 62, 71):","+```javascript","+execSync(`npx @sentry/cli releases files ${version} upload-sourcemaps ./src --org ${orgName} --project ${projectName} --url-prefix '~/src'`, ...);","+```","+","+**After**:","+```javascript","+execSync(`npx @sentry/cli sourcemaps upload ./src --org ${orgName} --project ${projectName} --release ${version} --url-prefix '~/src'`, ...);","+```","+","+Reference: [Sentry CLI 3.x Release Notes](https://github.com/getsentry/sentry-cli/releases) - \"The `releases files` command has been removed. Use `sourcemaps upload` instead.\"","+","+### Fix 2: Multi-Platform Docker Builds (PR #963 - Already Merged)","+","+The multi-platform build support was already added in PR [#963](https://github.com/link-assistant/hive-mind/pull/963):","+"," **1. Docker Publish Job (`docker-publish`)**"," "," Added QEMU setup and updated platforms:"]}],"userModified":false,"replaceAll":false}} | |
| [2025-12-22T17:18:47.099Z] [INFO] { | |
| "type": "assistant", | |
| "message": { | |
| "model": "claude-opus-4-5-20251101", | |
| "id": "msg_01FSH6JEoRCydGVciPPVJy32", | |
| "type": "message", | |
| "role": "assistant", | |
| "content": [ | |
| { | |
| "type": "text", | |
| "text": "Now let me update my todos and run local CI checks:" | |
| } | |
| ], | |
| "stop_reason": null, | |
| "stop_sequence": null, | |
| "usage": { | |
| "input_tokens": 1, | |
| "cache_creation_input_tokens": 2287, | |
| "cache_read_input_tokens": 98190, | |
| "cache_creation": { | |
| "ephemeral_5m_input_tokens": 2287, | |
| "ephemeral_1h_input_tokens": 0 | |
| }, | |
| "output_tokens": 4, | |
| "service_tier": "standard" | |
| }, | |
| "context_management": null | |
| }, | |
| "parent_tool_use_id": null, | |
| "session_id": "ad16a8b2-2455-42b8-b611-73f369cef417", | |
| "uuid": "ef6712b0-8e8c-4874-b783-f7431b6af994" | |
| } | |
| [2025-12-22T17:18:51.369Z] [INFO] { | |
| "type": "assistant", | |
| "message": { | |
| "model": "claude-opus-4-5-20251101", | |
| "id": "msg_01FSH6JEoRCydGVciPPVJy32", | |
| "type": "message", | |
| "role": "assistant", | |
| "content": [ | |
| { | |
| "type": "tool_use", | |
| "id": "toolu_012haopkt6JCZ6uQWVB3EpiV", | |
| "name": "TodoWrite", | |
| "input": { | |
| "todos": [ | |
| { | |
| "content": "Download and analyze screenshot from issue comment", | |
| "status": "completed", | |
| "activeForm": "Downloading and analyzing screenshot from issue comment" | |
| }, | |
| { | |
| "content": "Study GitHub Actions workflows for Docker publishing", | |
| "status": "completed", | |
| "activeForm": "Studying GitHub Actions workflows for Docker publishing" | |
| }, | |
| { | |
| "content": "List recent CI runs with timestamps and check for failures", | |
| "status": "completed", | |
| "activeForm": "Listing recent CI runs with timestamps" | |
| }, | |
| { | |
| "content": "Download logs from relevant CI runs to ci-logs directory", | |
| "status": "completed", | |
| "activeForm": "Downloading logs from CI runs" | |
| }, | |
| { | |
| "content": "Check Docker Hub manifest for konard/hive-mind image", | |
| "status": "completed", | |
| "activeForm": "Checking Docker Hub manifest" | |
| }, | |
| { | |
| "content": "Research online for linux/arm64/v8 manifest error causes", | |
| "status": "completed", | |
| "activeForm": "Researching online for error causes" | |
| }, | |
| { | |
| "content": "Create case study folder structure in docs/case-studies/issue-962", | |
| "status": "completed", | |
| "activeForm": "Creating case study folder structure" | |
| }, | |
| { | |
| "content": "Compile timeline and sequence of events", | |
| "status": "completed", | |
| "activeForm": "Compiling timeline and sequence of events" | |
| }, | |
| { | |
| "content": "Identify root cause of the problem", | |
| "status": "completed", | |
| "activeForm": "Identifying root cause" | |
| }, | |
| { | |
| "content": "Fix Sentry CLI sourcemaps upload command", | |
| "status": "completed", | |
| "activeForm": "Fixing Sentry CLI sourcemaps upload command" | |
| }, | |
| { | |
| "content": "Update case study with complete findings", | |
| "status": "completed", | |
| "activeForm": "Updating case study with complete findings" | |
| }, | |
| { | |
| "content": "Run local CI checks before committing", | |
| "status": "in_progress", | |
| "activeForm": "Running local CI checks" | |
| }, | |
| { | |
| "content": "Commit changes and update PR", | |
| "status": "pending", | |
| "activeForm": "Committing changes and updating PR" | |
| } | |
| ] | |
| } | |
| } | |
| ], | |
| "stop_reason": null, | |
| "stop_sequence": null, | |
| "usage": { | |
| "input_tokens": 1, | |
| "cache_creation_input_tokens": 2287, | |
| "cache_read_input_tokens": 98190, | |
| "cache_creation": { | |
| "ephemeral_5m_input_tokens": 2287, | |
| "ephemeral_1h_input_tokens": 0 | |
| }, | |
| "output_tokens": 508, | |
| "service_tier": "standard" | |
| }, | |
| "context_management": null | |
| }, | |
| "parent_tool_use_id": null, | |
| "session_id": "ad16a8b2-2455-42b8-b611-73f369cef417", | |
| "uuid": "c7f7f1a1-15df-4201-bfe1-5b5137a89cf7" | |
| } | |
| [2025-12-22T17:18:51.414Z] [INFO] { | |
| "type": "user", | |
| "message": { | |
| "role": "user", | |
| "content": [ | |
| { | |
| "tool_use_id": "toolu_012haopkt6JCZ6uQWVB3EpiV", | |
| "type": "tool_result", | |
| "content": "Todos have been modified successfully. Ensure that you continue to use the todo list to track your progress. Please proceed with the current tasks if applicable" | |
| } | |
| ] | |
| }, | |
| "parent_tool_use_id": null, | |
| "session_id": "ad16a8b2-2455-42b8-b611-73f369cef417", | |
| "uuid": "3c321cdb-b977-4c57-8188-3a2d4d726625", | |
| "tool_use_result": { | |
| "oldTodos": [ | |
| { | |
| "content": "Download and analyze screenshot from issue comment", | |
| "status": "completed", | |
| "activeForm": "Downloading and analyzing screenshot from issue comment" | |
| }, | |
| { | |
| "content": "Study GitHub Actions workflows for Docker publishing", | |
| "status": "completed", | |
| "activeForm": "Studying GitHub Actions workflows for Docker publishing" | |
| }, | |
| { | |
| "content": "List recent CI runs with timestamps and check for failures", | |
| "status": "completed", | |
| "activeForm": "Listing recent CI runs with timestamps" | |
| }, | |
| { | |
| "content": "Download logs from relevant CI runs to ci-logs directory", | |
| "status": "completed", | |
| "activeForm": "Downloading logs from CI runs" | |
| }, | |
| { | |
| "content": "Check Docker Hub manifest for konard/hive-mind image", | |
| "status": "completed", | |
| "activeForm": "Checking Docker Hub manifest" | |
| }, | |
| { | |
| "content": "Research online for linux/arm64/v8 manifest error causes", | |
| "status": "completed", | |
| "activeForm": "Researching online for error causes" | |
| }, | |
| { | |
| "content": "Create case study folder structure in docs/case-studies/issue-962", | |
| "status": "completed", | |
| "activeForm": "Creating case study folder structure" | |
| }, | |
| { | |
| "content": "Compile timeline and sequence of events", | |
| "status": "completed", | |
| "activeForm": "Compiling timeline and sequence of events" | |
| }, | |
| { | |
| "content": "Identify root cause of the problem", | |
| "status": "completed", | |
| "activeForm": "Identifying root cause" | |
| }, | |
| { | |
| "content": "Fix Sentry CLI sourcemaps upload command", | |
| "status": "in_progress", | |
| "activeForm": "Fixing Sentry CLI sourcemaps upload command" | |
| }, | |
| { | |
| "content": "Update case study with complete findings", | |
| "status": "pending", | |
| "activeForm": "Updating case study with complete findings" | |
| }, | |
| { | |
| "content": "Run local CI checks before committing", | |
| "status": "pending", | |
| "activeForm": "Running local CI checks" | |
| }, | |
| { | |
| "content": "Commit changes and update PR", | |
| "status": "pending", | |
| "activeForm": "Committing changes and updating PR" | |
| } | |
| ], | |
| "newTodos": [ | |
| { | |
| "content": "Download and analyze screenshot from issue comment", | |
| "status": "completed", | |
| "activeForm": "Downloading and analyzing screenshot from issue comment" | |
| }, | |
| { | |
| "content": "Study GitHub Actions workflows for Docker publishing", | |
| "status": "completed", | |
| "activeForm": "Studying GitHub Actions workflows for Docker publishing" | |
| }, | |
| { | |
| "content": "List recent CI runs with timestamps and check for failures", | |
| "status": "completed", | |
| "activeForm": "Listing recent CI runs with timestamps" | |
| }, | |
| { | |
| "content": "Download logs from relevant CI runs to ci-logs directory", | |
| "status": "completed", | |
| "activeForm": "Downloading logs from CI runs" | |
| }, | |
| { | |
| "content": "Check Docker Hub manifest for konard/hive-mind image", | |
| "status": "completed", | |
| "activeForm": "Checking Docker Hub manifest" | |
| }, | |
| { | |
| "content": "Research online for linux/arm64/v8 manifest error causes", | |
| "status": "completed", | |
| "activeForm": "Researching online for error causes" | |
| }, | |
| { | |
| "content": "Create case study folder structure in docs/case-studies/issue-962", | |
| "status": "completed", | |
| "activeForm": "Creating case study folder structure" | |
| }, | |
| { | |
| "content": "Compile timeline and sequence of events", | |
| "status": "completed", | |
| "activeForm": "Compiling timeline and sequence of events" | |
| }, | |
| { | |
| "content": "Identify root cause of the problem", | |
| "status": "completed", | |
| "activeForm": "Identifying root cause" | |
| }, | |
| { | |
| "content": "Fix Sentry CLI sourcemaps upload command", | |
| "status": "completed", | |
| "activeForm": "Fixing Sentry CLI sourcemaps upload command" | |
| }, | |
| { | |
| "content": "Update case study with complete findings", | |
| "status": "completed", | |
| "activeForm": "Updating case study with complete findings" | |
| }, | |
| { | |
| "content": "Run local CI checks before committing", | |
| "status": "in_progress", | |
| "activeForm": "Running local CI checks" | |
| }, | |
| { | |
| "content": "Commit changes and update PR", | |
| "status": "pending", | |
| "activeForm": "Committing changes and updating PR" | |
| } | |
| ] | |
| } | |
| } | |
| [2025-12-22T17:18:55.053Z] [INFO] { | |
| "type": "assistant", | |
| "message": { | |
| "model": "claude-opus-4-5-20251101", | |
| "id": "msg_01UC1Rqj4wxsR9QGbLPLdsWY", | |
| "type": "message", | |
| "role": "assistant", | |
| "content": [ | |
| { | |
| "type": "tool_use", | |
| "id": "toolu_01EcXqAj4a18RopfUjoaMvBn", | |
| "name": "Bash", | |
| "input": { | |
| "command": "npm ci 2>&1 | tail -20", | |
| "description": "Install dependencies" | |
| } | |
| } | |
| ], | |
| "stop_reason": null, | |
| "stop_sequence": null, | |
| "usage": { | |
| "input_tokens": 1, | |
| "cache_creation_input_tokens": 550, | |
| "cache_read_input_tokens": 100477, | |
| "cache_creation": { | |
| "ephemeral_5m_input_tokens": 550, | |
| "ephemeral_1h_input_tokens": 0 | |
| }, | |
| "output_tokens": 26, | |
| "service_tier": "standard" | |
| }, | |
| "context_management": null | |
| }, | |
| "parent_tool_use_id": null, | |
| "session_id": "ad16a8b2-2455-42b8-b611-73f369cef417", | |
| "uuid": "52fd289a-c2f3-4dac-b7b5-334f0ea30958" | |
| } | |
| [2025-12-22T17:18:58.310Z] [INFO] { | |
| "type": "user", | |
| "message": { | |
| "role": "user", | |
| "content": [ | |
| { | |
| "tool_use_id": "toolu_01EcXqAj4a18RopfUjoaMvBn", | |
| "type": "tool_result", | |
| "content": "> @link-assistant/[email protected] prepare\n> husky\n\n\nadded 293 packages, and audited 294 packages in 2s\n\n64 packages are looking for funding\n run `npm fund` for details\n\n3 moderate severity vulnerabilities\n\nTo address all issues, run:\n npm audit fix\n\nRun `npm audit` for details.", | |
| "is_error": false | |
| } | |
| ] | |
| }, | |
| "parent_tool_use_id": null, | |
| "session_id": "ad16a8b2-2455-42b8-b611-73f369cef417", | |
| "uuid": "d47bc80a-0786-4b54-80e1-fe476863e58f", | |
| "tool_use_result": { | |
| "stdout": "> @link-assistant/[email protected] prepare\n> husky\n\n\nadded 293 packages, and audited 294 packages in 2s\n\n64 packages are looking for funding\n run `npm fund` for details\n\n3 moderate severity vulnerabilities\n\nTo address all issues, run:\n npm audit fix\n\nRun `npm audit` for details.", | |
| "stderr": "", | |
| "interrupted": false, | |
| "isImage": false | |
| } | |
| } | |
| [2025-12-22T17:19:01.707Z] [INFO] { | |
| "type": "assistant", | |
| "message": { | |
| "model": "claude-opus-4-5-20251101", | |
| "id": "msg_011dUE4yWh3Z6DqwiAds1b86", | |
| "type": "message", | |
| "role": "assistant", | |
| "content": [ | |
| { | |
| "type": "tool_use", | |
| "id": "toolu_01PA1u1b5vp1CaDFjkqsMS5M", | |
| "name": "Bash", | |
| "input": { | |
| "command": "npm run format:check 2>&1 | tail -50", | |
| "description": "Run Prettier format check" | |
| } | |
| } | |
| ], | |
| "stop_reason": null, | |
| "stop_sequence": null, | |
| "usage": { | |
| "input_tokens": 1, | |
| "cache_creation_input_tokens": 176, | |
| "cache_read_input_tokens": 101027, | |
| "cache_creation": { | |
| "ephemeral_5m_input_tokens": 176, | |
| "ephemeral_1h_input_tokens": 0 | |
| }, | |
| "output_tokens": 25, | |
| "service_tier": "standard" | |
| }, | |
| "context_management": null | |
| }, | |
| "parent_tool_use_id": null, | |
| "session_id": "ad16a8b2-2455-42b8-b611-73f369cef417", | |
| "uuid": "db8ec6f5-f07a-4bbf-bf67-f6469fdd2369" | |
| } | |
| [2025-12-22T17:19:02.379Z] [INFO] { | |
| "type": "assistant", | |
| "message": { | |
| "model": "claude-opus-4-5-20251101", | |
| "id": "msg_011dUE4yWh3Z6DqwiAds1b86", | |
| "type": "message", | |
| "role": "assistant", | |
| "content": [ | |
| { | |
| "type": "tool_use", | |
| "id": "toolu_01UnTm64NBWrFFuQvYs8Nsbj", | |
| "name": "Bash", | |
| "input": { | |
| "command": "npm run lint 2>&1 | tail -50", | |
| "description": "Run ESLint check" | |
| } | |
| } | |
| ], | |
| "stop_reason": null, | |
| "stop_sequence": null, | |
| "usage": { | |
| "input_tokens": 1, | |
| "cache_creation_input_tokens": 176, | |
| "cache_read_input_tokens": 101027, | |
| "cache_creation": { | |
| "ephemeral_5m_input_tokens": 176, | |
| "ephemeral_1h_input_tokens": 0 | |
| }, | |
| "output_tokens": 25, | |
| "service_tier": "standard" | |
| }, | |
| "context_management": null | |
| }, | |
| "parent_tool_use_id": null, | |
| "session_id": "ad16a8b2-2455-42b8-b611-73f369cef417", | |
| "uuid": "b500b483-b5d8-4c8f-a369-b2872ea76686" | |
| } | |
| [2025-12-22T17:19:17.556Z] [INFO] { | |
| "type": "user", | |
| "message": { | |
| "role": "user", | |
| "content": [ | |
| { | |
| "tool_use_id": "toolu_01PA1u1b5vp1CaDFjkqsMS5M", | |
| "type": "tool_result", | |
| "content": "> @link-assistant/[email protected] format:check\n> prettier --check \"**/*.{js,mjs,json,md}\"\n\nChecking formatting...\n[warn] CLAUDE.md\n[warn] docs/case-studies/issue-962/README.md\n[warn] Code style issues found in 2 files. Run Prettier with --write to fix.", | |
| "is_error": false | |
| } | |
| ] | |
| }, | |
| "parent_tool_use_id": null, | |
| "session_id": "ad16a8b2-2455-42b8-b611-73f369cef417", | |
| "uuid": "c9426941-b50c-4d9c-8d3c-9c3036a03b5d", | |
| "tool_use_result": { | |
| "stdout": "> @link-assistant/[email protected] format:check\n> prettier --check \"**/*.{js,mjs,json,md}\"\n\nChecking formatting...\n[warn] CLAUDE.md\n[warn] docs/case-studies/issue-962/README.md\n[warn] Code style issues found in 2 files. Run Prettier with --write to fix.", | |
| "stderr": "", | |
| "interrupted": false, | |
| "isImage": false | |
| } | |
| } | |
| [2025-12-22T17:19:21.411Z] [INFO] { | |
| "type": "user", | |
| "message": { | |
| "role": "user", | |
| "content": [ | |
| { | |
| "tool_use_id": "toolu_01UnTm64NBWrFFuQvYs8Nsbj", | |
| "type": "tool_result", | |
| "content": "> @link-assistant/[email protected] lint\n> eslint 'src/**/*.{js,mjs,cjs}'", | |
| "is_error": false | |
| } | |
| ] | |
| }, | |
| "parent_tool_use_id": null, | |
| "session_id": "ad16a8b2-2455-42b8-b611-73f369cef417", | |
| "uuid": "36a1df29-32b7-4045-be38-dd4d6aaaadcd", | |
| "tool_use_result": { | |
| "stdout": "> @link-assistant/[email protected] lint\n> eslint 'src/**/*.{js,mjs,cjs}'", | |
| "stderr": "", | |
| "interrupted": false, | |
| "isImage": false | |
| } | |
| } | |
| [2025-12-22T17:19:24.832Z] [INFO] { | |
| "type": "assistant", | |
| "message": { | |
| "model": "claude-opus-4-5-20251101", | |
| "id": "msg_01BgxBrdmmtF4bzk8baqqSyb", | |
| "type": "message", | |
| "role": "assistant", | |
| "content": [ | |
| { | |
| "type": "tool_use", | |
| "id": "toolu_01YV76J1bRqMurdU4gXNHkuM", | |
| "name": "Bash", | |
| "input": { | |
| "command": "npm run format 2>&1 | tail -20", | |
| "description": "Run Prettier to fix formatting" | |
| } | |
| } | |
| ], | |
| "stop_reason": null, | |
| "stop_sequence": null, | |
| "usage": { | |
| "input_tokens": 1, | |
| "cache_creation_input_tokens": 338, | |
| "cache_read_input_tokens": 101203, | |
| "cache_creation": { | |
| "ephemeral_5m_input_tokens": 338, | |
| "ephemeral_1h_input_tokens": 0 | |
| }, | |
| "output_tokens": 24, | |
| "service_tier": "standard" | |
| }, | |
| "context_management": null | |
| }, | |
| "parent_tool_use_id": null, | |
| "session_id": "ad16a8b2-2455-42b8-b611-73f369cef417", | |
| "uuid": "dde32898-a212-4136-a2d2-438c7e22074e" | |
| } | |
| [2025-12-22T17:19:34.442Z] [INFO] { | |
| "type": "user", | |
| "message": { | |
| "role": "user", | |
| "content": [ | |
| { | |
| "tool_use_id": "toolu_01YV76J1bRqMurdU4gXNHkuM", | |
| "type": "tool_result", | |
| "content": "tests/test-feedback-lines-integration.mjs 10ms (unchanged)\ntests/test-feedback-lines-simple.mjs 5ms (unchanged)\ntests/test-github-linking.mjs 5ms (unchanged)\ntests/test-hive-no-silent-failure.mjs 5ms (unchanged)\ntests/test-hive.mjs 10ms (unchanged)\ntests/test-interactive-mode.mjs 18ms (unchanged)\ntests/test-issue-882-fixes.mjs 3ms (unchanged)\ntests/test-lenv-reader.mjs 7ms (unchanged)\ntests/test-memory-check.mjs 6ms (unchanged)\ntests/test-pr-creation-existing-branch.mjs 13ms (unchanged)\ntests/test-prompt-explore-sub-agent.mjs 4ms (unchanged)\ntests/test-prompt-file-location.mjs 3ms (unchanged)\ntests/test-sentry.mjs 5ms (unchanged)\ntests/test-solve.mjs 9ms (unchanged)\ntests/test-start-screen.mjs 6ms (unchanged)\ntests/test-telegram-bot-dry-run.mjs 4ms (unchanged)\ntests/test-telegram-bot-hero-links-notation.mjs 4ms (unchanged)\ntests/test-telegram-markdown-escaping.mjs 4ms (unchanged)\ntests/test-telegram-url-extraction.mjs 4ms (unchanged)\ntests/test-telegram-validate-url.mjs 6ms (unchanged)", | |
| "is_error": false | |
| } | |
| ] | |
| }, | |
| "parent_tool_use_id": null, | |
| "session_id": "ad16a8b2-2455-42b8-b611-73f369cef417", | |
| "uuid": "80b6f837-6a16-4530-b02e-4eaa3417bbd7", | |
| "tool_use_result": { | |
| "stdout": "tests/test-feedback-lines-integration.mjs 10ms (unchanged)\ntests/test-feedback-lines-simple.mjs 5ms (unchanged)\ntests/test-github-linking.mjs 5ms (unchanged)\ntests/test-hive-no-silent-failure.mjs 5ms (unchanged)\ntests/test-hive.mjs 10ms (unchanged)\ntests/test-interactive-mode.mjs 18ms (unchanged)\ntests/test-issue-882-fixes.mjs 3ms (unchanged)\ntests/test-lenv-reader.mjs 7ms (unchanged)\ntests/test-memory-check.mjs 6ms (unchanged)\ntests/test-pr-creation-existing-branch.mjs 13ms (unchanged)\ntests/test-prompt-explore-sub-agent.mjs 4ms (unchanged)\ntests/test-prompt-file-location.mjs 3ms (unchanged)\ntests/test-sentry.mjs 5ms (unchanged)\ntests/test-solve.mjs 9ms (unchanged)\ntests/test-start-screen.mjs 6ms (unchanged)\ntests/test-telegram-bot-dry-run.mjs 4ms (unchanged)\ntests/test-telegram-bot-hero-links-notation.mjs 4ms (unchanged)\ntests/test-telegram-markdown-escaping.mjs 4ms (unchanged)\ntests/test-telegram-url-extraction.mjs 4ms (unchanged)\ntests/test-telegram-validate-url.mjs 6ms (unchanged)", | |
| "stderr": "", | |
| "interrupted": false, | |
| "isImage": false | |
| } | |
| } | |
| [2025-12-22T17:19:37.744Z] [INFO] { | |
| "type": "assistant", | |
| "message": { | |
| "model": "claude-opus-4-5-20251101", | |
| "id": "msg_01CHKesCmXYvXiwk6AxsyZGx", | |
| "type": "message", | |
| "role": "assistant", | |
| "content": [ | |
| { | |
| "type": "text", | |
| "text": "Prettier fixed the formatting. Now let me verify the format and lint checks pass:" | |
| } | |
| ], | |
| "stop_reason": null, | |
| "stop_sequence": null, | |
| "usage": { | |
| "input_ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment