Date: 2026-04-22 Auditor: Claude Opus 4.6 + Codex cross-check Scope: GitHub command surface, path consistency, heartbeat contract, pipeline wiring
The Constellation has 3 execution paths for GitHub work, 2 legacy artifacts, and 8 drift issues found by Codex analysis. Additionally, Hermes subagent routing sends all delegations to Step 3.5 Flash (MiniMax M2.7 is not wired into the delegation system). This document records all findings and tracks fixes.
| # | File | Role | Status |
|---|---|---|---|
| 1 | ~/.claude/commands/github-pr.md |
ClaudeCode command spec (loaded by /github-pr) |
Active — v6, plugin-optional |
| 2 | ~/.claude/commands/pr-followup.md |
ClaudeCode command spec (loaded by /pr-followup) |
Active — v2, plugin-optional |
| 3 | ~/claw/Beatless/pipelines/github-pr.md |
Detailed 12-phase pipeline reference | Active — v6, skills-based |
| 4 | ~/claw/Beatless/pipelines/auto-pr.sh |
Real submission runner (tmux + claude -p) | Active — production |
| 5 | ~/claw/Beatless/pipelines/github-pr-runner.sh |
Trial/test runner (tmux + claude -p, no submit) | Active — testing only |
| 6 | ~/claw/Beatless/pipelines/pr-followup/test-run.sh |
Follow-up runner (tmux + claude -p opus-4.7) | Active — production |
| 7 | ~/claw/Beatless/pipelines/github-hunt.md |
Deprecated discovery-only spec | DEPRECATED — remove |
| 8 | ~/.hermes/scripts/github-pr.py |
Hermes wake-gate (cron → issue check → claude -p) | Active — Hermes cron |
| 9 | ~/.hermes/scripts/github-response.py |
Hermes wake-gate (cron → notification check → claude -p) | Active — Hermes cron |
There are TWO parallel execution systems:
- Hermes cron →
github-pr.py/github-response.py(Python wake-gates, lightweight) - Heartbeat cron →
heartbeat-driver.sh→<pipeline>/test-run.sh(Bash tmux launcher, legacy)
These can conflict if both are active. The Hermes system is the v3 design; the heartbeat system is legacy v2.
Severity: HIGH — will cause failures on this machine Files affected:
scripts/heartbeat-driver.sh:13—SHARED_DIR="/home/<previous-local-user>/..."scripts/cron-driver.sh:7,12— usage comment +LOG_DIRscripts/harness/notify-user.sh:24—cd /home/<previous-local-user>/clawscripts/harness/gateway-supervisor.sh:3,4,5— LOG, GWLOG, CMD pathsscripts/openclaw/gateway-supervisor.sh:3,4,5— same as above (duplicate)
Fix: sed -i 's|/home/<previous-local-user>|/home/<your-user>|g' on all affected files.
Status: [x] FIXED 2026-04-22 — 25+ files, ~88 replacements across scripts/, agents/, docs/
Severity: MEDIUM — heartbeat expects <name>/test-run.sh, but github-pr uses auto-pr.sh
Detail: heartbeat-driver.sh:29 does local run_script="$PIPELINE_DIR/$name/test-run.sh" which expects:
pipelines/github-pr/test-run.sh— does NOT exist (actual file isauto-pr.shat pipeline root)pipelines/pr-followup/test-run.sh— EXISTS and workspipelines/blog-maintenance/test-run.sh— not checked
Fix: Either rename auto-pr.sh → pipelines/github-pr/test-run.sh or update heartbeat to use actual paths.
Status: [ ] WONTFIX — Legacy v2 heartbeat system archived. Hermes cron is the v3 execution path.
Severity: LOW — auto-pr.sh doesn't write .result file; heartbeat watches for *.result
Detail: pr-followup/test-run.sh correctly writes .result JSON. auto-pr.sh does not.
Fix: Add .result output to auto-pr.sh matching the pr-followup pattern.
Status: [x] FIXED 2026-04-22 — .result JSON block added to auto-pr.sh
Severity: HIGH — git rebase -i hangs in -p mode (no TTY)
Location: pipelines/github-pr.md:444
Fix: Replace with non-interactive squash: git reset --soft main && git commit
Status: [x] FIXED 2026-04-22 — replaced at pipelines/github-pr.md:444
Severity: LOW — cosmetic only
Location: pipelines/github-pr.md:546 — �� instead of —
Fix: Replace corrupted character.
Status: [x] FIXED 2026-04-22 — sed byte replacement at pipelines/github-pr.md:546
Severity: LOW — no functional impact but confusing
File: pipelines/github-hunt.md
Fix: Delete or move to archive/.
Status: [x] FIXED 2026-04-22 — deleted
Severity: LOW (for now) — only affects blog-maintenance pipeline (next stage)
Detail: ~/.hermes/config.yaml delegation block only defines Step as provider. MiniMax M2.7 is configured in model_aliases and .env but not in delegation. All delegate_task calls fall through to Step 3.5 Flash.
Evidence: Hermes spawned Methode (Step) and Kouka (MiniMax) — both reported as step-3.5-flash.
MiniMax API: Working (200 OK on messages endpoint). hermes doctor 404 is false alarm (checks /models which the Anthropic proxy doesn't expose).
Fix: Added minimax provider to config.yaml with OpenAI-compatible endpoint (https://api.minimaxi.com/v1). API returns 200, Hermes recognizes model. Per-cron model override not supported by Hermes CLI — blog-maintenance.py needs to call hermes chat --model minimax directly for MiniMax routing.
Status: [x] PROVIDER FIXED 2026-04-22 — blog per-job routing deferred to blog stage
Severity: LOW — README and state files have stale interval/log location references
Locations: README.md:23,114, pipelines/github-pr-state.json:4
Status: [ ] PENDING
| Standard | Location | Format | Status |
|---|---|---|---|
| PR Workflow (7-step) | skill pr-workflow (~/.claude/commands/pr-workflow.md) |
English, structured | Active |
| Quality Gate (8-item) | skill pr-quality-gate (~/.claude/commands/pr-quality-gate.md) |
English, scored 0-10 | Active |
| Scoring Rubric | ~/workspace/pr-stage/pr-scoring-rubric.md |
English, anchor tables | Active (backup) |
| Chinese sources | ~/claw/Beatless/standards/*.source.md, 贡献指南.md, mention.md |
Chinese, reference only | Archived |
| Plugin | Version | Type | Available in -p mode? |
|---|---|---|---|
| Codex | 1.0.4 | Agent subagent | Unreliable — try once, fallback |
| Gemini | 1.0.0 | Agent subagent | Unreliable — try once, fallback |
| GSD | 2.38.2 | Skill set | Yes (skills load normally) |
| Superpowers | 5.0.7 | Skill set | Yes |
| Planning-with-Files | 2.34.0 | Skill set | Yes |
| GitHub | MCP-based | MCP tools | Yes (gh CLI always works) |
Design principle: Every pipeline phase must work with Claude + Bash alone. Plugins are optional accelerators.
| # | Issue | Severity | Fix | Done? |
|---|---|---|---|---|
| 1 | Path drift () | HIGH | sed replace in 25+ files (~88 refs) | [x] FIXED 2026-04-22 |
| 2 | Heartbeat contract mismatch | MEDIUM | Legacy — Hermes cron is primary | [ ] WONTFIX (legacy v2) |
| 3 | Result file missing in auto-pr.sh | LOW | Add .result output | [x] FIXED 2026-04-22 |
| 4 | Interactive rebase | HIGH | Non-interactive squash | [x] FIXED 2026-04-22 |
| 5 | Text corruption | LOW | Fix �� → — |
[x] FIXED 2026-04-22 |
| 6 | Deprecated github-hunt.md | LOW | Delete | [x] FIXED 2026-04-22 |
| 7 | MiniMax routing | LOW | Provider added, API 200, OpenAI endpoint wired | [x] FIXED 2026-04-22 (blog per-job model override set in jobs.json) |
| 8 | Docs drift | LOW | README rewritten for v3 | [x] FIXED 2026-04-22 |
| # | Fix | Detail |
|---|---|---|
| 9 | Blog Maintenance MiniMax per-job | Set model/provider/base_url in jobs.json — runtime supports per-job override (scheduler.py:783) |
| 10 | github-response.py wake logic | Replaced updatedAt check with actual maintainer comment check via gh api |
| 11 | github-pr.py label coverage | Added "help wanted" and "bug" labels (was only "good first issue") |
| 12 | github-pr.py empty output | Structured status reporting: PIPELINE_ERROR on empty stdout, status JSON file, PR URL extraction |
| 13 | exp-status.md missing Agent | Added Agent to allowed-tools frontmatter |
| 14 | Git email | Changed global git email from to (GitHub verified primary) |
| 15 | MiniMax skill pack | Installed 7 MiniMax skills via hermes skills tap + install |
| 16 | Hermes skills cleanup | Disabled codex + opencode skills (claude-code only); skills.disabled in config.yaml |
| 17 | PR Pipeline interval | Shortened from 150m to 60m |
| 18 | V2 infrastructure archived | Moved agents, pipelines, scripts to archive/v2-deprecated/ |
| 19 | README rewrite | Reflects v3 architecture, marks Aoi/OpenRoom as planned next stages |