Design: Board as Bidirectional Context Layer

v0.4 addition · two data flows · five new commands

The Two Flows
Write Path — Agent → Board
synlynk board connect <url> → introspects board schema, writes .synlynk/config.json
synlynk start --issue <n> → sets Agent + Status=In Progress, creates worktree, injects context
synlynk pr → sets Status=In Review, suggests peer reviewer, opens PR
synlynk done → sets Status=Done, deletes worktree, archives devlog entry
Read Path — Board → Context

On every synlynk start or synlynk exec, Synlynk queries all registered boards for In Progress items and injects into .synlynk/context.md:

## Live WIP — other agents
# auto-injected by synlynk, do not edit

| Repo | Issue | Agent | Branch | Status |
|------|-------|-------|--------|--------|
| rxcc | #42 | Gemini | feat/gemini/ui-timeline | In Progress |
| rxcc | #38 | Codex | test/codex/auth-suite | In Review |
| rxcc | #45 | Claude | fix/claude/ocr-timeout | In Progress |

⚠ Do not push to these branches.
Config Schema
~/.synlynk/config.json (global)
{
  "github": {
    "token": "ghp_...",
    "agent_identity": "claude"
  },
  "registered_repos": [
    "Dialify/rxcc",
    "Dialify/synlynk"
  ]
}
.synlynk/config.json (per-repo)
{
  "board": {
    "project_id": "PVT_kwDO...",
    "fields": {
      "status_field_id": "PVTSSF_...",
      "agent_field_id": "PVTSSF_...",
      "status_options": { /* dynamically resolved */ },
      "agent_options": { /* dynamically resolved */ }
    },
    "review_rotation": {
      "claude": "gemini",
      "gemini": "codex",
      "codex": "claude"
    }
  }
}

Does this architecture look right? Respond in terminal.