{"slug":"business/FOUR_BUTTONS","title":"IntegrateWise — The Four Buttons (OODA Grammar)","section":"business","sectionLabel":"Business","status":"unclassified","type":"document","path":"business/FOUR_BUTTONS.mdx","bytes":9969,"description":null,"updated":null,"source":"integratewise/Integratewise-docs-wiki","content":"\n**Status**: FROZEN\n**Date**: July 17, 2026\n\n---\n\n# The Four Buttons\n\nThe four buttons are the explicit OODA control grammar for truth capture, Twin reasoning, delegation, and governed execution. They complement ordinary Workbench interactions such as navigating modules, editing records, and logging activity.\n\n```text\n┌─────────────────────────────────────────────────────────────┐\n│                                                             │\n│   ┌──────────────┐  ┌──────────────┐                       │\n│   │  Store in    │  │  Ask Your    │                       │\n│   │  Spine       │  │  Twin        │                       │\n│   │  (Observe)   │  │  (Orient)    │                       │\n│   └──────────────┘  └──────────────┘                       │\n│                                                             │\n│   ┌──────────────┐  ┌──────────────┐                       │\n│   │  Assign Your │  │  Approve     │                       │\n│   │  Twin        │  │  Twin's      │                       │\n│   │  (Decide)    │  │  Action      │                       │\n│   └──────────────┘  └──────────────┘                       │\n│                                                             │\n└─────────────────────────────────────────────────────────────┘\n```\n\n---\n\n# Button Definitions\n\n## Store in Spine (Observe)\n\n**User captures truth.**\n\n```text\nUser: \"This account is at risk. Stakeholder changed. Budget cut.\"\nUser clicks: [Store in Spine]\nWorkbench: Submits the observation through the governed Pipeline. Spine records its entity link, timeline event, and provenance.\nTwin: Observes the resulting Spine change; it does not write directly.\n```\n\n**What it does:**\n\n- Submits the observation to the governed Pipeline\n- Records it in Spine as a TimelineEvent with entity links and provenance\n- Feeds the resulting canonical change into Twin observation\n- The Twin does not write truth directly\n\n**When to use:**\n\n- Capturing a meeting outcome\n- Recording a risk or decision\n- Logging an operational observation\n- Documenting a stakeholder change\n\n---\n\n## Ask your Twin (Orient)\n\n**User asks Twin to understand the work.**\n\n```text\nUser: \"What's the risk on this account?\"\nUser clicks: [Ask your Twin]\nTwin: Analyzes Spine context. Surfaces evidence.\n```\n\n**What it does:**\n\n- Escalates the Twin from passive observation into Orient reasoning\n- Reads the current Workbench surface, current entity, related entities, and OODA state\n- Reads grounded Spine context, pipeline state/freshness, evidence, connected-system context, and organizational memory\n- Produces an evidence-backed recommendation; it never decides for the user\n\n**When to use:**\n\n- \"What should I do next?\"\n- \"What are the risks here?\"\n- \"What did I miss in this meeting?\"\n- \"What's the status of this project?\"\n\n---\n\n## Assign your Twin (Decide)\n\n**User delegates intent to Twin.**\n\n```text\nUser: \"Draft an email to the customer about the renewal.\"\nUser clicks: [Assign your Twin]\nTwin: Drafts email. Waits for approval.\n```\n\n**What it does:**\n\n- Twin receives intent + context\n- Twin executes draft/proposal/analysis\n- Twin presents output for approval\n- Twin does NOT execute until approved\n\n**When to use:**\n\n- \"Draft a follow-up email\"\n- \"Prepare a QBR deck\"\n- \"Create a risk report\"\n- \"Update the pipeline forecast\"\n\n---\n\n## Approve Twin's Action (Act)\n\n**User authorizes execution.**\n\n```text\nTwin: \"Email drafted. Ready to send.\"\nUser clicks: [Approve Twin's Action]\nTwin: Sends email. Logs outcome. Updates Spine.\n```\n\n**What it does:**\n\n- Governance validates the approval\n- Pipeline invokes the authorized capability against the connected system\n- Outcome is recorded and reconciled back through Spine\n- OODA loop completes\n\n**When to use:**\n\n- Approving an email draft\n- Approving a workflow automation\n- Approving a pipeline update\n- Approving a report submission\n\n---\n\n# The OODA Loop in Action\n\n```text\nUser opens Account\n        ↓\nTwin observes:\n• Renewal in 18 days\n• Two unresolved tickets\n• Stakeholder changed\n• Health declining\n        ↓\nTwin surfaces:\n\"Three risks detected.\" [Review] [Ignore]\n        ↓\nUser clicks [Review]\n        ↓\nTwin shows: Risk details, evidence, recommended actions\n        ↓\nUser decides:\n├── [Store in Spine] → Save observation\n├── [Ask your Twin] → Ask for analysis\n├── [Assign your Twin] → Delegate action\n└── [Approve Twin's Action] → Execute\n```\n\n---\n\n# Button Placement\n\n## In Every Module\n\nEvery module view shows the four buttons contextually:\n\n```\n┌─────────────────────────────────────────────────────────────┐\n│ Account: FinanceFlow Solutions                              │\n├─────────────────────────────────────────────────────────────┤\n│                                                             │\n│ [Store in Spine] [Ask your Twin] [Assign your Twin]        │\n│                                                             │\n│ ── Timeline ──                                              │\n│ • 2026-07-15: Stakeholder changed (Source: Salesforce)     │\n│ • 2026-07-10: Health score dropped to 42                   │\n│ • 2026-07-05: QBR scheduled                                │\n│                                                             │\n│ ── Twin Observations ──                                     │\n│ • Renewal in 18 days — HIGH RISK                          │\n│ • 2 unresolved P1 tickets                                 │\n│ • Champion silent for 12 days                             │\n│                                                             │\n│ [Approve Twin's Action] (when Twin proposes)               │\n│                                                             │\n└─────────────────────────────────────────────────────────────┘\n```\n\n## In a Contextual Twin Proposal Card\n\nWhen Twin proposes an action:\n\n```\n┌─────────────────────────────────────────────────────────────┐\n│ Twin Proposal                                               │\n├─────────────────────────────────────────────────────────────┤\n│                                                             │\n│ \"Draft intervention email for FinanceFlow renewal\"         │\n│                                                             │\n│ Evidence:                                                   │\n│ • Renewal in 18 days                                       │\n│ • Health score: 42 (down from 76)                         │\n│ • Champion silent 12 days                                  │\n│ • 2 P1 tickets unresolved                                 │\n│                                                             │\n│ Draft:                                                      │\n│ \"Hi [Champion], I noticed some challenges...\"              │\n│                                                             │\n│ [Edit] [Assign your Twin] [Approve Twin's Action] [Ignore]│\n│                                                             │\n└─────────────────────────────────────────────────────────────┘\n```\n\n---\n\n# The Rule\n\n```text\nThe Twin NEVER acts without approval.\n\nThe user ALWAYS has control.\n\nThe four buttons are the only way to interact.\n\nNo chat required.\nNo prompt required.\nNo context explaining required.\n```\n\n---\n\n# Pipeline Participation\n\nThe Twin participates only at **THINK**:\n\n```text\nLOAD → NORMALIZE → STORE → THINK (Twin) → APPROVE → ACT → REPEAT\n                         ↑                 ↑\n                    Store in Spine    Approve Twin's Action\n                    Ask your Twin     Assign your Twin\n```\n\n---\n\n# Implementation\n\n## packages/workbench-config/\n\n```typescript\ninterface RoleConfig {\n  // ... existing fields\n  buttons: {\n    storeInSpine: ButtonConfig; // Always visible\n    askYourTwin: ButtonConfig; // Always visible\n    assignYourTwin: ButtonConfig; // Context-dependent\n    approveTwinAction: ButtonConfig; // When Twin proposes\n  };\n}\n```\n\n## apps/web/\n\n```typescript\n// Every module view includes the four buttons\nfunction ModuleView({ module, entity }: ModuleViewProps) {\n  return (\n    <div>\n      <EntityHeader entity={entity} />\n      <FourButtons\n        onStoreInSpine={() => storeObservation(entity)}\n        onAskYourTwin={() => twinAnalyze(entity)}\n        onAssignYourTwin={() => twinDraft(entity)}\n        onApproveTwinAction={() => twinExecute(entity)}\n      />\n      <ModuleContent />\n      <TwinObservations entity={entity} />\n    </div>\n  );\n}\n```\n"}