From 71aab932e692c18b18a53940379a5272621fed5a Mon Sep 17 00:00:00 2001 From: maxvydrin Date: Fri, 10 Jul 2026 13:44:28 +0200 Subject: [PATCH] Add Studio Information Architecture (v3.8) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Foundation artifact: the Studio IA object map (UX mental model), rooted at Organization. Adds the mind-map export (.md, ASCII tree) plus the XMind source (.xmind). Companion to STUDIO_VISION.md and STUDIO_GLOSSARY.md. Draft — pending ratification. Signed-off-by: maxvydrin --- STUDIO_INFORMATION_ARCHITECTURE.md | 255 ++++++++++++++++++++++++++ STUDIO_INFORMATION_ARCHITECTURE.xmind | Bin 0 -> 10800 bytes 2 files changed, 255 insertions(+) create mode 100644 STUDIO_INFORMATION_ARCHITECTURE.md create mode 100644 STUDIO_INFORMATION_ARCHITECTURE.xmind diff --git a/STUDIO_INFORMATION_ARCHITECTURE.md b/STUDIO_INFORMATION_ARCHITECTURE.md new file mode 100644 index 0000000..7a84e0e --- /dev/null +++ b/STUDIO_INFORMATION_ARCHITECTURE.md @@ -0,0 +1,255 @@ +# Studio Information Architecture — v3.8 + +Mind-map export. Root / central node: **Organization**. + +> Cross-cutting layers (aspects, not containers): Collaboration · Governance-enforcement · Customization. These surface across the whole map — they are not places/nodes. + +``` +Organization +├─ Workspace +│ ├─ Project +│ │ ├─ Executive summary +│ │ ├─ Dashboards +│ │ ├─ Project Graph +│ │ │ ├─ Object Browser +│ │ │ │ └─ ⓘ Filter & inspect by type · status · owner · staleness — a filter over the graph, not a catalog; it doesn't duplicate it. Docs → Documents; Work Artifacts → Workflow runs. +│ │ │ ├─ Object detail +│ │ │ │ ├─ Attributes +│ │ │ │ ├─ History +│ │ │ │ ├─ Evidence +│ │ │ │ └─ Related objects +│ │ │ └─ Graph views +│ │ │ ├─ Dependencies and traceability +│ │ │ ├─ Staleness and risk view +│ │ │ └─ Timeline changes / History +│ │ ├─ Lifecycle Model +│ │ │ ├─ Actor +│ │ │ │ ├─ Humans +│ │ │ │ ├─ AI agents +│ │ │ │ ├─ External tools +│ │ │ │ ├─ External systems +│ │ │ │ └─ Automated pipelines +│ │ │ ├─ Stages +│ │ │ │ ├─ Plan +│ │ │ │ │ ├─ Intent +│ │ │ │ │ ├─ Vision +│ │ │ │ │ ├─ Discovery +│ │ │ │ │ ├─ Strategy +│ │ │ │ │ └─ Definition +│ │ │ │ ├─ Build +│ │ │ │ │ ├─ Design +│ │ │ │ │ ├─ Construction +│ │ │ │ │ ├─ Validation +│ │ │ │ │ └─ Release +│ │ │ │ └─ Operate +│ │ │ │ ├─ Operation +│ │ │ │ ├─ Support +│ │ │ │ ├─ Intelligence +│ │ │ │ ├─ Optimization +│ │ │ │ └─ Evolution +│ │ │ ├─ Activities +│ │ │ ├─ Input +│ │ │ ├─ Output +│ │ │ ├─ Quality gates +│ │ │ └─ Synchronisation checkpoints +│ │ ├─ Workflows +│ │ │ ├─ Flow Catalog +│ │ │ ├─ Visual workflow builder +│ │ │ ├─ Runs and history +│ │ │ ├─ Produced artifacts +│ │ │ │ ├─ Work Artifacts → PR · Test · Build · Release · Deployment (latest + gate status) +│ │ │ │ └─ Document Artifacts → land in ▸ Documents (e.g. PRD · register · report · release notes) +│ │ │ ├─ Approvals / exceptions / handoffs +│ │ │ └─ Validators and Policies +│ │ ├─ Recommendations & Actions +│ │ │ ├─ Detected gaps & risks +│ │ │ ├─ Recommendations / Next actions +│ │ │ ├─ Prepared actions +│ │ │ ├─ Action approval queue +│ │ │ ├─ Write-back +│ │ │ └─ Trust level +│ │ ├─ Documents +│ │ │ ├─ Competitive Intelligence +│ │ │ │ ├─ Competitive register +│ │ │ │ ├─ Comparison matrix +│ │ │ │ └─ Pricing benchmark +│ │ │ ├─ Strategy & Planning +│ │ │ │ ├─ Product strategy brief +│ │ │ │ ├─ Roadmap (Now / Next / Later) +│ │ │ │ ├─ One-pager / narrative +│ │ │ │ └─ Opportunity statement +│ │ │ ├─ Specs & Requirements +│ │ │ │ ├─ Problem statement +│ │ │ │ ├─ BRD +│ │ │ │ ├─ PRD +│ │ │ │ ├─ Feature spec +│ │ │ │ └─ Requirement +│ │ │ ├─ Metrics & Performance +│ │ │ │ ├─ Scorecard +│ │ │ │ └─ EPSVS scorecard +│ │ │ ├─ Launch & Release +│ │ │ │ ├─ Launch plan / GTM checklist +│ │ │ │ └─ Release notes +│ │ │ └─ Engineering & Ops +│ │ │ ├─ Design +│ │ │ ├─ ADR +│ │ │ ├─ Decision +│ │ │ ├─ Decomposition +│ │ │ ├─ Test plan / Validation report +│ │ │ ├─ Runbook +│ │ │ └─ Postmortem +│ │ ├─ Developer tools +│ │ │ ├─ CLI +│ │ │ ├─ IDE plugins +│ │ │ ├─ MCP servers +│ │ │ └─ Notifications / alerts +│ │ ├─ Quality Gates (applied) +│ │ │ ├─ Applied gates +│ │ │ └─ Gate status +│ │ └─ Access & Roles (project scope) +│ ├─ Teams and Roles +│ │ ├─ Teams +│ │ ├─ Role assignments (workspace scope · grants from Org catalog) +│ │ └─ Members & seat approvals +│ ├─ Shared assets +│ │ ├─ Guidelines +│ │ ├─ Templates +│ │ ├─ Processes +│ │ ├─ Workflow blueprints +│ │ └─ Shared artifacts +│ ├─ Settings +│ │ ├─ Model routing +│ │ ├─ Connectors (bound) +│ │ ├─ Localization +│ │ ├─ Guardrails & Quality gates +│ │ └─ Secrets & credentials (scoping · rotation) +│ ├─ Environments +│ │ └─ dev · staging · prod (scopes connectors & secrets) +│ └─ Audit log (workspace scope) +├─ Kits & Gears +│ ├─ Kit (package / anatomy) +│ │ ├─ Reference architecture +│ │ ├─ Ontology +│ │ ├─ Templates and examples +│ │ ├─ Sample data (seed graph) +│ │ ├─ Actions and validators +│ │ ├─ Rules and policies +│ │ ├─ Kit Workflows +│ │ ├─ Deployment patterns +│ │ └─ Gears building blocks +│ ├─ Function Kits +│ │ ├─ SDLC Kit (open-source base / default) +│ │ ├─ Product Management Kit +│ │ ├─ Architect Kit +│ │ ├─ Engineering Management Kit +│ │ ├─ DevOps Kit +│ │ ├─ QA Kit +│ │ ├─ Support Kit +│ │ ├─ HypoFinder Kit (research · domain) +│ │ ├─ M&A Kit (domain) +│ │ └─ Any other Kit (placeholder) +│ ├─ Gears +│ │ ├─ Identity +│ │ │ └─ IdP, SSO, tenant identity, user lifecycle +│ │ ├─ Authorization +│ │ │ └─ RBAC, ABAC, granular roles, delegated administration +│ │ ├─ Events +│ │ │ └─ event bus, schemas, routing, audit events +│ │ ├─ Serverless +│ │ │ └─ functions, workflows, safe runtime, connectors +│ │ ├─ GenAI +│ │ │ └─ model gateway, routing, prompts, evaluation +│ │ └─ Platform +│ │ └─ audit, billing, notifications, APIs, integrations +│ └─ Customization +├─ Integrations +│ ├─ ⓘ Studio connects per capability, not per vendor — so a multi-product vendor (GitHub, Jira…) appears in several categories by design; the graph spans tools cross-vendor. +│ ├─ Plan +│ │ ├─ Product & roadmapping +│ │ │ └─ Jira Product Discovery · Productboard · Aha! · Linear +│ │ ├─ Docs & knowledge +│ │ │ └─ Confluence · Notion · MS Office · Google Workspace +│ │ ├─ Design & whiteboarding +│ │ │ └─ Figma · Miro · FigJam +│ │ ├─ Customer feedback / VoC +│ │ │ └─ Canny · UserVoice · Productboard Insights · Dovetail +│ │ ├─ Market & competitive intelligence +│ │ │ └─ Similarweb · G2 · Crunchbase · Klue · Crayon +│ │ └─ User research & surveys +│ │ └─ Dovetail · UserTesting · Maze · Qualtrics +│ ├─ Build +│ │ ├─ Source control +│ │ │ └─ GitHub · GitLab · Bitbucket +│ │ ├─ IDE & coding agents +│ │ │ └─ VS Code · JetBrains · Cursor · Claude Code · Windsurf +│ │ ├─ Issue / work tracking +│ │ │ └─ Jira Software · Azure DevOps · Linear +│ │ ├─ CI/CD & build +│ │ │ └─ Jenkins · GitHub Actions · GitLab CI · Harness +│ │ ├─ Code quality +│ │ │ └─ SonarQube · CodeClimate · Codecov +│ │ ├─ Application security (SAST/DAST/SCA) +│ │ │ └─ Snyk · Semgrep · Checkmarx · Veracode · OWASP ZAP +│ │ ├─ Test management & QA automation +│ │ │ └─ TestRail · Xray · Zephyr · Playwright · Cypress · BrowserStack +│ │ ├─ API design & specs +│ │ │ └─ Postman · SwaggerHub / OpenAPI · Stoplight +│ │ ├─ Package & artifact registries +│ │ │ └─ Artifactory · Nexus · npm · PyPI +│ │ └─ Container registries +│ │ └─ Docker Hub · Amazon ECR · GHCR · Harbor +│ ├─ Operate +│ │ ├─ Cloud & infrastructure +│ │ │ └─ AWS · GCP · Azure · Kubernetes +│ │ ├─ Observability & monitoring +│ │ │ └─ Datadog · Grafana · Prometheus · New Relic · OpenTelemetry +│ │ ├─ Incident & on-call +│ │ │ └─ PagerDuty · Opsgenie · incident.io +│ │ ├─ Support & service desk +│ │ │ └─ Zendesk · Intercom · ServiceNow · Jira Service Mgmt +│ │ ├─ Product analytics +│ │ │ └─ Amplitude · Mixpanel · PostHog · Pendo (also Plan: value sizing) +│ │ ├─ Data warehouse & BI +│ │ │ └─ Snowflake · BigQuery · Databricks · Looker · Tableau · Power BI +│ │ ├─ Data pipelines / ELT / CDP +│ │ │ └─ Fivetran · Airbyte · dbt · Airflow · Kafka · Segment +│ │ ├─ Feature flags & experimentation +│ │ │ └─ LaunchDarkly · Split · Optimizely · Statsig +│ │ ├─ Infrastructure as Code +│ │ │ └─ Terraform · Pulumi · Ansible · CloudFormation +│ │ ├─ Cloud security & posture +│ │ │ └─ Wiz · Prisma Cloud · Aqua · Trivy +│ │ └─ FinOps / cloud cost +│ │ └─ Kubecost · CloudHealth · Vantage · AWS Cost Explorer +│ └─ Cross-cutting (spans all phases) +│ ├─ Communication / ChatOps +│ │ └─ Slack · MS Teams · Zoom +│ ├─ AI models & Agent SDKs +│ │ └─ model gateways · agent SDKs · Bedrock / Vertex +│ ├─ Identity & access (SSO/SCIM) +│ │ └─ Okta · Microsoft Entra ID · Auth0 · Google +│ ├─ Secrets management +│ │ └─ HashiCorp Vault · AWS/GCP Secrets Manager · Doppler +│ └─ Business & GTM (optional scope) +│ └─ Salesforce · HubSpot · Stripe +├─ Constructor Insight +│ ├─ Cross-vendor data (via Integrations connectors — bound at Workspace ▸ Settings) +│ ├─ Analytics (renders into Project ▸ Dashboards: delivery health · AI cost · product metrics) +│ └─ Benchmarking (cost / quality vs industry & peer baselines — scope: Workspace, opt-in Org roll-up) +├─ Governance +│ ├─ Org guardrails & policies +│ ├─ Access-control policy (org-wide: SSO-required · no-external-sharing · separation-of-duties) +│ ├─ Audit (org) +│ ├─ Deployment governance +│ └─ Data residency & region (Org policy · per-Workspace region) +└─ Account & Access + ├─ Users & Access + │ ├─ Users / People / identity + │ ├─ SSO / SCIM + │ ├─ Role definitions (org catalog) + │ └─ Access control (RBAC / ABAC) + └─ Billing & Account + ├─ Subscription plan + ├─ Billing account + └─ Usage / AI cost +``` diff --git a/STUDIO_INFORMATION_ARCHITECTURE.xmind b/STUDIO_INFORMATION_ARCHITECTURE.xmind new file mode 100644 index 0000000000000000000000000000000000000000..f6761c734a7d2e2a3729451d6f6d40761859bfbb GIT binary patch literal 10800 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%0AT0e$z5g;q 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