You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Fix 5 root causes from failed tlaplus-ts Symphony run:
1. Dependency enforcement: blocked_by populated from Gitea dependency
API, Todo blocker rule prevents dispatch until all blockers terminal
2. Branch-per-issue: SYMPHONY_* env vars passed to hooks for
issue-specific branches (symphony/issue-${NUMBER})
3. Issue context in hooks: after_create generates CLAUDE.md with
issue title/description for agent guidance
4. Per-state concurrency: configurable limits prevent overloading
5. Reconciliation: refresh blocker states before each dispatch cycle
Additionally integrate Gitea Robot API for PageRank-aware dispatch:
- Add pagerank_score field to Issue model
- Fetch PageRank from /api/v1/robot/ready endpoint (single call)
- Merge scores into candidates with graceful fallback
- Sort dispatch candidates by PageRank desc, then priority, then age
All 128 unit + 29 integration tests pass.
Refs #671
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@@ -350,7 +367,11 @@ WORKFLOW.md is watched for changes (via `file-watch` feature, enabled by default
350
367
351
368
**Git clone fails in after_create hook** -- Plain HTTPS URLs prompt for credentials in non-interactive shell contexts. Use token-embedded URLs: `git clone https://user:${TOKEN}@host/org/repo.git .`
352
369
353
-
**Liquid templates appearing literally in hooks** -- Hook scripts are plain shell commands run via `sh -lc`. They are NOT Liquid-rendered. Do not use `{{ }}` template syntax in hook values. Only the prompt body (below the YAML front matter) supports Liquid.
370
+
**Liquid templates appearing literally in hooks** -- Hook scripts are plain shell commands run via `sh -lc`. They are NOT Liquid-rendered. Do not use `{{ }}` template syntax in hook values. Only the prompt body (below the YAML front matter) supports Liquid. Use `$SYMPHONY_ISSUE_NUMBER` and other `SYMPHONY_*` environment variables instead.
371
+
372
+
**Merge conflicts between agent workspaces** -- If multiple agents push to the same branch, use per-issue branches via `$SYMPHONY_ISSUE_NUMBER` in your `before_run` and `after_run` hooks. See the hook environment variables section above.
373
+
374
+
**Dependency enforcement not working with Gitea** -- Symphony fetches dependencies from the Gitea API (`/api/v1/repos/.../issues/{n}/dependencies`) and uses them to block dispatch. Ensure dependencies are created via the Gitea web UI or API. Issues in "Todo" state with non-terminal blockers will not be dispatched until their blockers are closed.
after_create: "git clone https://terraphim:${GITEA_TOKEN}@git.terraphim.cloud/terraphim/tlaplus-ts.git . && cat > CLAUDE.md << 'CLAUDEEOF'\n# CLAUDE.md - Agent Instructions\n\n## Commit Discipline\n- Make atomic commits with descriptive messages referencing the issue\n- Format: feat(module): description (Refs #N)\n- Run tests before committing: npx vitest run\n- Run build before committing: npm run build\n- Run lint before committing: npm run lint\n\n## Testing\n- Never use mocks in tests\n- Write comprehensive tests using vitest\n- Ensure all existing tests still pass\n\n## Code Standards\n- TypeScript strict mode\n- ESM modules\n- Use British English in documentation\nCLAUDEEOF"
0 commit comments