{"slug":"architecture/002-shared-workbench-sole-composed-output","title":"ADR-002: SharedWorkbench is the Sole Composed Output","section":"architecture","sectionLabel":"Architecture","status":"unclassified","type":"document","path":"architecture/002-shared-workbench-sole-composed-output.mdx","bytes":1153,"description":null,"updated":null,"source":"integratewise/Integratewise-docs-wiki","content":"\n**Status:** Accepted  \n**Date:** 2026-07-21  \n**Deciders:** Nirmal (Founder)\n\n---\n\n## Context\n\nMultiple downstream consumers (web app, twin runtime, capability fabric) need a unified view of workspace state. Without a single output type, each consumer would define its own shape, leading to type drift and inconsistent data.\n\n## Decision\n\n`SharedWorkbench` (defined in `contracts/shared-workbench/v1.ts`) is the **sole output type** of the Projection Engine. Every downstream consumer imports this contract. No consumer may define its own workbench shape.\n\n## Consequences\n\n- **Positive:** Type-safe contracts across the entire stack. Consumers know exactly what data is available.\n- **Negative:** Adding fields to SharedWorkbench requires version bump. Consumers may receive fields they don't use.\n- **Mitigation:** Optional fields (`user?`, `metadata?`). Versioned contract with changelog.\n\n## Evidence\n\n- `contracts/shared-workbench/v1.ts` — frozen contract\n- `contracts/shared-workbench/schema.json` — JSON Schema validation\n- `contracts/shared-workbench/CHANGELOG.md` — version history\n"}