9. CLI & GraphQL Reference

9.2 Project Board & GraphQL Sync CLI

chinwag board push | pull | status

Complete reference for chinwag board init, push, sync, and scoreboard, plus the GitHub Projects v2 and Linear GraphQL synchronization schemas.

9.2 Project Board & GraphQL Sync CLI

chinwag board push | pull | status

chinwag board synchronizes your local .chinwag/state.crdb task graph and Executable Tickets (<org>/chinwag-tasks.git in the Chinwag Encrypted Artifact Store) with GitHub Projects v2 and Linear in under 200ms at 0 Cr (100% Free) · with zero inbound webhooks (INV-ZERO-WEBHOOKS-01).


100% Webhook-Free Executable Tickets & Cryptographic "Proof-of-Green" Board Gate (INV-CF-ARTIFACTS-EXECUTABLE-TICKETS-01 & INV-NO-FAKE-DONE-01)

  1. Zero Inbound Webhooks / Zero Webhook Secrets (INV-ZERO-WEBHOOKS-01):<org>/chinwag-tasks.git in the Chinwag Encrypted Artifact Store is mutated synchronously via K1 + K2-signed Chinwag Mesh RPCs and Git Smart HTTP (art_v1_ tokens), and synced with Linear / GitHub Projects client-side via the developer's existing local MCP (@linear/mcp-server, @modelcontextprotocol/server-github, or gh CLI) or in-runner via chinwag-ci OIDC.
  2. 1:1 Live Ticket Capsules (refs/chinwag/tasks/<ISSUE-ID>/capsule): Every Linear Issue (ENG-402) and GitHub Project Item (#142) is backed by <org>/chinwag-tasks.git in the Chinwag Encrypted Artifact Store.
  3. 0s Synchronous Cold-Start Hydration on chinwag start <ISSUE-ID> (Todo / In Progress): When chinwag start ENG-402 runs, The Chinwag Encrypted Artifact Store synchronously spawns a zero-copy repo.fork() sandbox (<org>/<project>--task-ENG-402.git), queries .codegraph for affected symbols, attaches matching .chinwag/regressions/* Tombstone cassettes, and pre-warms refs/chinwag/tasks/ENG-402/shadow-kv.
  4. Synchronous Cryptographic "Proof-of-Green" Board Gate (INV-NO-FAKE-DONE-01 · Automatic 200ms Snap-Back on Fake Done): Moving a Linear or GitHub Projects card to In Review or Done requires a K1 + K2-signed TaskCompletionProofV1 at refs/chinwag/tasks/ENG-402/proof proving chinwag-ci green (exit_code == 0) on head_worktree_oid, 0 Tombstone regression failures, and Reflex-1 / Vision-3 Visual Geometry pass (or human K1 hardware passkey override). Unverified Done transitions are synchronously rejected at the Git ref + local MCP layer and automatically snap the Linear / GitHub card back to "In Progress" within 200ms while posting a .cwcard.png diagnostic receipt.
  5. Zero-Rate-Limit, Firewall-Proof Git-Native Board Sync (<1ms): Query the entire Linear/GitHub sprint board in <1ms via git fetch or repo.files on <org>/chinwag-tasks.git with zero GraphQL rate limits and full offline / Rung-5 resilience.

Command Reference

# 1A. Initialize a 100% private GitHub Projects v2 board & install .chinwag/templates/* (0 Cr, public: false default)
chinwag board init --github --org acme-corp --private-repo acme-corp/platform --live

# 1B. Initialize an opt-in Dual-Repo Public Velocity Showcase board (--public-board + H_board redaction gate)
chinwag board init --github --org emunlabs --private-repo emunlabs/chinwag-private --public-repo emunlabs/chinwag --public-board --live

# 1C. Initialize a Linear team workspace with the Chinwag template pack (0 Cr)
chinwag board init --linear --team ENG --live

# 2. Push a signed state transition to GitHub Projects v2 or Linear in <200ms (0 Cr)
chinwag board push --task TASK-204 --status "In Verification" --chips-provisional 18

# 3. Reconcile bidirectional board state with <org>/chinwag-tasks (0 Cr)
chinwag board sync --bidirectional

# 4. Render the terminal MO-GRPO Chips (◈) & 7-Day Code Survival (SURV) scoreboard (0 Cr)
chinwag board scoreboard --window 14d --format table

# 5. Run the card-move-driven cross-surface orchestrator (0 Cr)
chinwag board sync-loop --repo . --interval-ms 1000

Auto-Provisioned Templates, Native Immutable Timestamps & Insights

  • Local Schema & Issue Template Pack: chinwag board init writes .chinwag/templates/github-project-v2-schema.json, .chinwag/templates/linear-template.json, and .github/ISSUE_TEMPLATE/01..04.yml, and (when --live is passed) provisions the 5 canonical Status columns (01→05), two turnkey views (01 · Kanban Execution Board in BOARD_LAYOUT / Linear board and 02 · Velocity & DORA Ledger in TABLE_LAYOUT / Linear list), and all 7 custom fields (Δ Speedup vs. DORA, DORA Baseline, Chinwag Cycle Time, Net Hours Saved, Execution Mode, Active Seats, Cryptographic Receipt) via GraphQL:
{
  "schema": "chinwag.linear.template.v1",
  "default_view_layout": "BOARD_LAYOUT",
  "views": [
    {
      "name": "01 · Kanban Execution Board",
      "layout": "board",
      "group_by": "workflow_state"
    },
    {
      "name": "02 · Velocity & DORA Ledger",
      "layout": "list",
      "group_by": "label"
    }
  ]
}
  • Native Immutable Created, Updated & Closed Timestamp Fields: Automatically enables GitHub Projects v2's native immutable Created (CREATED), Updated (UPDATED), and Closed (CLOSED) system timestamp fields plus Sub-issues progress (SUB_ISSUES_PROGRESS), providing third-party verifiable cycle-time timestamps (Created at t_claim → Closed at t_ship) that cannot be backdated or spoofed.
  • Executive Insights & Board Workflows: Configures GitHub Projects Insights and Linear Insights over numeric SUM(Net Hours Saved) and Δ Speedup vs. DORA / Execution Mode, while pairing native board Workflows with chinwag board sync-loop and chinwag-ci surface-gate (Pillar 12).
  • A.509 Confidential Seat Pinning: Confidential seats locked to private repositories (e.g., @PATENT) are bound via their A.509 Agent PKIX passport strictly to --private-repo (exit 78 if targeted at --public-repo).

GitHub Projects v2 GraphQL Mutation Schema

When chinwag board push updates a task's status, lease holder, or MO-GRPO ◈ Chip score, it executes a batched GraphQL v4 mutation against https://api.github.com/graphql using your fine-grained project token:

mutation ChinwagSyncProjectV2Item(
  $projectId: ID!
  $itemId: ID!
  $statusFieldId: ID!
  $statusOptionId: String!
  $seatFieldId: ID!
  $seatInstance: String!
  $chipsFieldId: ID!
  $chipsValue: Float!
  $survivalFieldId: ID!
  $survivalPercent: Float!
) {
  updateStatus: updateProjectV2ItemFieldValue(
    input: {
      projectId: $projectId
      itemId: $itemId
      fieldId: $statusFieldId
      value: { singleSelectOptionId: $statusOptionId }
    }
  ) {
    projectV2Item { id updatedAt }
  }
  updateOwnerSeat: updateProjectV2ItemFieldValue(
    input: {
      projectId: $projectId
      itemId: $itemId
      fieldId: $seatFieldId
      value: { text: $seatInstance }
    }
  ) {
    projectV2Item { id }
  }
  updateChips: updateProjectV2ItemFieldValue(
    input: {
      projectId: $projectId
      itemId: $itemId
      fieldId: $chipsFieldId
      value: { number: $chipsValue }
    }
  ) {
    projectV2Item { id }
  }
  updateSurvival: updateProjectV2ItemFieldValue(
    input: {
      projectId: $projectId
      itemId: $itemId
      fieldId: $survivalFieldId
      value: { number: $survivalPercent }
    }
  ) {
    projectV2Item { id }
  }
}

Linear GraphQL Synchronization Schema

For teams on Linear, chinwag board push maps task states and attaches a structured, signature-verified attachment metadata block via issueUpdate:

mutation ChinwagSyncLinearIssue(
  $issueId: String!
  $stateId: String!
  $attachmentUrl: String!
  $subtitle: String!
) {
  issueUpdate(
    id: $issueId
    input: { stateId: $stateId }
  ) {
    success
    issue { id identifier updatedAt }
  }
  attachmentLinkURL(
    issueId: $issueId
    url: $attachmentUrl
    title: "Chinwag Signed Verification Receipt (✓ed25519)"
    subtitle: $subtitle
  ) {
    success
  }
}

Next Steps