diff --git a/.agents/noesis-first.md b/.agents/noesis-first.md new file mode 100644 index 0000000..21b5388 --- /dev/null +++ b/.agents/noesis-first.md @@ -0,0 +1,21 @@ +# Noesis-First Authoring Rule + +When working in this repository, treat `doc/` as the canonical Noesis source +and `dist/` as derived material. + +Rules: + +- Write canonical concepts in English. +- Add or refine Noesis entries before creating presentations, publications, + whitepapers, mockups, or other `dist/` artifacts. +- Do not introduce new canonical concepts directly in `dist/`. +- Keep Noesis declarative. It may define problems, desired outcomes, + mechanics, capabilities, language, and constraints. +- Do not put implementation decisions, product roadmap choices, concrete + architecture decisions, or vendor selections into Noesis. +- If an idea implies both a problem and a solution, document the problem first, + then derive mechanics or capabilities, and only afterwards create downstream + material outside Noesis. +- Blockchain, marketplace, oracle, provider, token, or storage technologies are + implementation candidates unless the user explicitly asks for downstream + `dist/` material. diff --git a/dist/mockups/ProtopipeCockpit.html b/dist/mockups/ProtopipeCockpit.html new file mode 100644 index 0000000..69bc2ea --- /dev/null +++ b/dist/mockups/ProtopipeCockpit.html @@ -0,0 +1,530 @@ + + + + + +Protopipe Executive Cockpit + + + +
+ + +
+
+

Executive Strategy Overview

+

+ Strategies as durable management objects: budget, capacity, priority, + evidence, friction, risk mitigation, and KPI momentum in a single view. +

+
+
+ +
+
+
+
+

Overall Strategy Health

+

Aggregated strategy health with compact financial instruments reflecting the company state.

+
+ Company Direction +
+ +
+
72Health
+
+
+
Momentum+12%
+
TrendAccelerating
+
Healthy Strategies4 / 5
+
Critical Strategy1
+
+
+ +
+
+
+
Portfolio Capacity
+
Strategic capacity allocation across all active strategies
+
+ 100% +
+
+ + + + + +
+
30% Enterprise · 24% Profitability · 22% AI · 10% Resilience · 14% Ops
+
+ +
+
+
Liquidity
+
CHF 18.4M
Runway 14.2 months
+ + + Partner pilot launched · possible liquidity impact through onboarding spend + Budget shifted to partner enablement · liquidity remained stable + +
+
+
Revenue
+
CHF 42.7M
+8.4% vs. previous period
+ + + Partner pilot launched · revenue acceleration followed + AI pricing test launched · possible contribution to revenue growth + Partner enablement budget shift · correlation with continued revenue growth + +
+
+
Costs
+
CHF 31.1M
Cloud +12%, People +4%
+ + + Partner pilot launched · onboarding costs began to increase + AI pricing test expanded · inference and infrastructure costs increased + Cloud cost spike detected · strong correlation with cost increase + +
+
+
Provisions
+
CHF 3.8M
2 open exposure reviews
+ + + Regulatory review started · additional exposure assessed + AI compliance scope expanded · provisions increased + +
+
+
+
+ +
+
+
+

Reality Signal Matrix

+

Quadrants show decision confidence, overall trends, and the four strongest relevant signal changes in the selected period.

+
+ Impact × Delta +
+ +
+
+
Internal + Controllable
92%Confidence
+
Overall Trend+8%
Signals128
+
+
+
Margin+6.2%
+
Deployment Frequency+11%
+
Defect Rate-4.8%
+
Capacity Utilization+3.1%
+
+
+
+
Internal + Uncontrollable
63%Confidence
+
Overall Trend-3%
Signals74
+
+
+
Knowledge Distribution-9.4%
+
Architecture Coupling+7.2%
+
Team Stability-5.5%
+
Critical Expert Load+6.8%
+
+
+
+
External + Controllable
48%Confidence
+
Overall Trend+12%
Signals51
+
+
+
Partner Pipeline+18%
+
Brand Reach+14%
+
Sales Opportunities+9.6%
+
Acquisition Cost-3.9%
+
+
+
+
External + Uncontrollable
29%Confidence
+
Overall Trend-18%
Signals26
+
+
+
Cloud Costs+7.1%
+
Interest Rates+4.0%
+
Market Demand-6.3%
+
Regulatory Exposure+5.7%
+
+
+
+
+
+ +
+
+ + +
+
+ + + + diff --git a/dist/mockups/strategy-detail.html b/dist/mockups/strategy-detail.html new file mode 100644 index 0000000..fa00b18 --- /dev/null +++ b/dist/mockups/strategy-detail.html @@ -0,0 +1,108 @@ + + + + + +Protopipe Strategy Detail + + + +
+ + +
+
Active Strategy
+

Enterprise Expansion

+
Q2–Q4 2026 · Owner CEO / CPO
+
+ +
+
+

Strategic Hypothesis

+
The partner network can scale without proportional increases in onboarding costs.
+
+
+

Operating Position

+
+
BudgetCHF 5.2M
+
Capacity30%
+
PriorityCritical
+
+
+
+

Current Experiments

+
+
+
+

Decision Context

+
+
Primary frictionSales cycle exceeds target
+
Critical riskCompetitive response
+
+
+
+
+ + + diff --git a/dist/presentations/protopipe-enterprise-pitch/.gitignore b/dist/presentations/protopipe-enterprise-pitch/.gitignore new file mode 100644 index 0000000..df7cf4c --- /dev/null +++ b/dist/presentations/protopipe-enterprise-pitch/.gitignore @@ -0,0 +1,7 @@ +/.quarto/ +/_site/ +/.jupyter_cache/ +/assets/mockups/ProtopipeCockpit.html + + +**/*.quarto_ipynb diff --git a/dist/presentations/protopipe-enterprise-pitch/README.md b/dist/presentations/protopipe-enterprise-pitch/README.md new file mode 100644 index 0000000..1129f16 --- /dev/null +++ b/dist/presentations/protopipe-enterprise-pitch/README.md @@ -0,0 +1,73 @@ +# Protopipe Enterprise Pitch Deck + +**Augmented Product Development Platform** + +This directory is a non-canonical presentation project derived from Noesis. +It is intended for Quarto, Reveal.js, VS Code, GitHub, and GitHub Pages. + +The deck is structured like a software project: + +- `presentation/` contains the Quarto entry point and chapter files. +- `theme/` contains the Reveal.js theme and reusable SCSS modules. +- `assets/` contains images, logos, and font notes. +- `diagrams/` contains source diagrams and generated exports. +- `scripts/` contains local rendering helpers. +- `docs/` contains authoring, deployment, and extension guidance. + +Noesis remains the canonical reasoning space. This deck may interpret, +sequence, and package Protopipe for an audience, but it must not introduce +canonical facts without moving them back into `doc/`. + +Narrative scope: + +Golden Circle / Purpose -> Strategy -> Product -> Architecture -> Development +-> Monitoring and Observations -> Learning -> Decision + +## Quick Start + +```bash +cd dist/presentations/protopipe-enterprise-pitch +quarto preview presentation/index.qmd +``` + +Render static output: + +```bash +./scripts/render.sh +``` + +The rendered site is written to `_site/`. + +Export a color PDF through Reveal.js and Chromium: + +```bash +./scripts/export-pdf.sh +``` + +The PDF is written to `_site/protopipe-enterprise-pitch.pdf`. Print styles +preserve slide colors and place transparent SVG diagrams on a dark neutral +surface. + +Manual fallback: + +1. Start `./scripts/preview.sh`. +2. Append `?print-pdf` to the presentation URL. +3. Print from Chromium and enable **Background graphics**. + +Render PlantUML diagrams with Podman: + +```bash +./scripts/render-plantuml.sh +``` + +Or: + +```bash +podman compose run --rm plantuml +``` + +The render script defaults to Podman. To use Docker explicitly: + +```bash +CONTAINER_RUNTIME=docker ./scripts/render-plantuml.sh +``` diff --git a/dist/presentations/protopipe-enterprise-pitch/_quarto.yml b/dist/presentations/protopipe-enterprise-pitch/_quarto.yml new file mode 100644 index 0000000..4fae02e --- /dev/null +++ b/dist/presentations/protopipe-enterprise-pitch/_quarto.yml @@ -0,0 +1,51 @@ +project: + type: website + output-dir: _site + pre-render: + - scripts/sync-mockups.sh + render: + - presentation/index.qmd + +website: + title: "Protopipe" + site-url: "https://example.com/protopipe" + repo-url: "https://github.com/protopipe/noesis" + repo-actions: [source, issue] + +format: + revealjs: + theme: + - default + - theme/protopipe.scss + slide-number: c/t + chalkboard: false + controls: true + controls-layout: edges + controls-tutorial: false + hash: true + history: true + progress: true + overview: true + center: false + transition: fade + background-transition: fade + width: 1600 + height: 900 + margin: 0.06 + min-scale: 0.2 + max-scale: 2.0 + navigation-mode: linear + incremental: false + code-copy: true + code-overflow: wrap + footer: "Protopipe | Augmented Product Development Platform" + title-slide-attributes: + data-background-color: "#081a17" + data-state: "title-slide" + +execute: + freeze: auto + +resources: + - assets/ + - diagrams/generated/ diff --git a/dist/presentations/protopipe-enterprise-pitch/assets/diagrams/noesis-culture-runtime-bpmn.svg b/dist/presentations/protopipe-enterprise-pitch/assets/diagrams/noesis-culture-runtime-bpmn.svg new file mode 100644 index 0000000..782c85e --- /dev/null +++ b/dist/presentations/protopipe-enterprise-pitch/assets/diagrams/noesis-culture-runtime-bpmn.svg @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + + + Leadership + Noesis + Employee + + + + + + + + + + + + + + + + + Define lead culture + Audit AI-conform + documentation (MCP) + Daily work + Review and suggest + change + Aligned work + artifact + + + + + + + + + + + + + + audited context + diff --git a/dist/presentations/protopipe-enterprise-pitch/assets/diagrams/shared-reality-bpmn.svg b/dist/presentations/protopipe-enterprise-pitch/assets/diagrams/shared-reality-bpmn.svg new file mode 100644 index 0000000..97dbea1 --- /dev/null +++ b/dist/presentations/protopipe-enterprise-pitch/assets/diagrams/shared-reality-bpmn.svg @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + + + + + + + + C-Level + Product + Ownership + Developers + & Analysts + Learning + Canonical + + + + + + + + + + + + + + + Purpose + Strategy + Hypothesis + Experiment + Development + Analysis + metrics + context + e.g. weather + + + + + Decision + gate + + + + + Canonical Learning Record + claim, metric, evidence, decision rationale, next hypothesis + + + + + + + + + + + + + + + + + + + revise hypothesis + reframe strategy + + diff --git a/dist/presentations/protopipe-enterprise-pitch/assets/diagrams/write-only-culture-bpmn.svg b/dist/presentations/protopipe-enterprise-pitch/assets/diagrams/write-only-culture-bpmn.svg new file mode 100644 index 0000000..5e7f622 --- /dev/null +++ b/dist/presentations/protopipe-enterprise-pitch/assets/diagrams/write-only-culture-bpmn.svg @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + Leadership + Employee + + + + + + + + + + + + + + + + + + + + Define culture + Present once + Share document + Work with + local context + + + + + + + + + + + + + + one-way communication + diff --git a/dist/presentations/protopipe-enterprise-pitch/assets/fonts/README.md b/dist/presentations/protopipe-enterprise-pitch/assets/fonts/README.md new file mode 100644 index 0000000..f812373 --- /dev/null +++ b/dist/presentations/protopipe-enterprise-pitch/assets/fonts/README.md @@ -0,0 +1,6 @@ +# Fonts + +This deck defaults to portable system fonts. If a licensed brand font is needed +for a customer-facing export, place the distributable font files here and wire +them into `theme/protopipe.scss`. + diff --git a/dist/presentations/protopipe-enterprise-pitch/assets/images/README.md b/dist/presentations/protopipe-enterprise-pitch/assets/images/README.md new file mode 100644 index 0000000..4cf0f36 --- /dev/null +++ b/dist/presentations/protopipe-enterprise-pitch/assets/images/README.md @@ -0,0 +1,13 @@ +# Images + +Use this directory for deck-specific visual assets. + +Preferred asset types: + +- Product screenshots +- Technical system visuals +- Generated abstract infrastructure backgrounds +- Diagram exports that are not canonical source diagrams + +Avoid generic stock photos and agile workshop imagery. + diff --git a/dist/presentations/protopipe-enterprise-pitch/assets/images/hero-placeholder.svg b/dist/presentations/protopipe-enterprise-pitch/assets/images/hero-placeholder.svg new file mode 100644 index 0000000..6734c0e --- /dev/null +++ b/dist/presentations/protopipe-enterprise-pitch/assets/images/hero-placeholder.svg @@ -0,0 +1,33 @@ + + Protopipe presentation placeholder background + Dark technical grid with connected decision lanes. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/dist/presentations/protopipe-enterprise-pitch/assets/logos/README.md b/dist/presentations/protopipe-enterprise-pitch/assets/logos/README.md new file mode 100644 index 0000000..2a36007 --- /dev/null +++ b/dist/presentations/protopipe-enterprise-pitch/assets/logos/README.md @@ -0,0 +1,11 @@ +# Logos + +Use exported Protopipe logo assets from `doc/09_identity/assets/logo/out/` when +the deck needs brand marks. + +`protopipe-logo-color-full.svg` is copied from the canonical exported logo: + +`doc/09_identity/assets/logo/out/svg/logo-color-full.svg` + +The copy exists so Quarto and GitHub Pages can package the presentation as a +self-contained derived artifact. Canonical logo source remains in `doc/`. diff --git a/dist/presentations/protopipe-enterprise-pitch/assets/logos/protopipe-logo-color-full.svg b/dist/presentations/protopipe-enterprise-pitch/assets/logos/protopipe-logo-color-full.svg new file mode 100644 index 0000000..c163185 --- /dev/null +++ b/dist/presentations/protopipe-enterprise-pitch/assets/logos/protopipe-logo-color-full.svg @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + diff --git a/dist/presentations/protopipe-enterprise-pitch/compose.yml b/dist/presentations/protopipe-enterprise-pitch/compose.yml new file mode 100644 index 0000000..a74a706 --- /dev/null +++ b/dist/presentations/protopipe-enterprise-pitch/compose.yml @@ -0,0 +1,11 @@ +services: + plantuml: + image: plantuml/plantuml:1.2025.2 + working_dir: /work + volumes: + - ../../..:/work + command: + - -tsvg + - -o + - ../../generated + - dist/presentations/protopipe-enterprise-pitch/diagrams/source/plantuml diff --git a/dist/presentations/protopipe-enterprise-pitch/diagrams/source/integrated-loop.mmd b/dist/presentations/protopipe-enterprise-pitch/diagrams/source/integrated-loop.mmd new file mode 100644 index 0000000..e7dacc0 --- /dev/null +++ b/dist/presentations/protopipe-enterprise-pitch/diagrams/source/integrated-loop.mmd @@ -0,0 +1,10 @@ +flowchart LR + Problem --> Discussion + Discussion --> Hypothesis + Hypothesis --> Prototype + Prototype --> Experiment + Experiment --> Metric + Metric --> Decision + Decision --> Knowledge + Knowledge --> Problem + diff --git a/dist/presentations/protopipe-enterprise-pitch/diagrams/source/plantuml/golden-circle-flow.puml b/dist/presentations/protopipe-enterprise-pitch/diagrams/source/plantuml/golden-circle-flow.puml new file mode 100644 index 0000000..f16b6ed --- /dev/null +++ b/dist/presentations/protopipe-enterprise-pitch/diagrams/source/plantuml/golden-circle-flow.puml @@ -0,0 +1,37 @@ +@startuml + +!include ../../../../../../doc/09_identity/assets/plantuml/protopipe-skin.puml + +title Protopipe - Golden Circle Communication Flow + +|Why| +start +:Decisions without measurable feedback; +:Invisible dependencies; +:Discussions that produce opinions instead of responsibility; + +|How| +:Make problems explicit before solutions; +:Connect hypotheses to measurements; +:Make responsibility observable; + +|What| +:Augmented Product Development Platform; +:Noesis; +:ProtoPortfolio; +:Composer; +:Storybook; + +|Observation| +:Monitoring and observations; +:Learning signal; +:Revisable decision; +stop + +legend right + Swimlanes visualize responsibility. + A transition is a handover of control, + evidence, or accountability. +endlegend + +@enduml diff --git a/dist/presentations/protopipe-enterprise-pitch/diagrams/source/system-map.mmd b/dist/presentations/protopipe-enterprise-pitch/diagrams/source/system-map.mmd new file mode 100644 index 0000000..8c12206 --- /dev/null +++ b/dist/presentations/protopipe-enterprise-pitch/diagrams/source/system-map.mmd @@ -0,0 +1,13 @@ +flowchart TB + Noesis[Noesis
Canonical reasoning space] + Portfolio[ProtoPortfolio
Hypotheses, KPI tree, strategy] + Composer[Composer
Architecture experiments] + Storybook[Storybook
UX communication and prototypes] + Memory[Shared organizational memory] + + Noesis <--> Memory + Memory <--> Portfolio + Portfolio <--> Composer + Composer <--> Storybook + Storybook <--> Portfolio + diff --git a/dist/presentations/protopipe-enterprise-pitch/docs/deck-outline.md b/dist/presentations/protopipe-enterprise-pitch/docs/deck-outline.md new file mode 100644 index 0000000..bc3f97d --- /dev/null +++ b/dist/presentations/protopipe-enterprise-pitch/docs/deck-outline.md @@ -0,0 +1,71 @@ +# Presentation Chapter Structure + +Working title: **Protopipe** + +Subtitle: **Augmented Product Development Platform** + +Primary narrative: + +Problem Statement -> Communication Artifacts -> Enforcing Tools -> +Consulting Entry -> Ecosystem Extensions -> Vision + +The title slide opens directly into Act 1. A separate table-of-contents slide is +intentionally omitted: the act dividers provide orientation without delaying the +narrative. + +## Act 1: Problem Statement + +| Slides | Narrative Job | +|---|---| +| 01-02 | Establish the Golden Circle and Protopipe's why, how, and what. | +| 03-08 | Expose write-only strategy, incompatible communication codes, decision loops, ivory-tower architecture, responsibility without control, and organizational latency. | + +## Act 2: Communication Artifacts + +| Slides | Narrative Job | +|---|---| +| 09-11 | Move from problems to desired outcomes and normative mechanics. | +| 12 | Show the gapless organizational learning process across roles, including analysis of experiment metrics and external influences. | +| 13 | Introduce the visible artifacts handed from purpose through development. | + +## Act 3: Enforcing Tools + +| Slides | Narrative Job | +|---|---| +| 14-16 | Make purpose and culture available at the point of work through Noesis and AI-assisted context. | +| 17 | Show the Protopipe Cockpit as the C-level decision surface for strategy health, reality signals, strategic focus, and decision detail. | +| 18 | Demonstrate the executable Cockpit mock as product evidence. | +| 19 | Establish the KPI Tree as the causal backbone of the Cockpit and the working model of CFO and Controlling. | +| 20 | Force attributable financial, product, and system signals back through the KPI Tree into strategy and the next hypothesis. | +| 21-22 | Present ProtoCatalog as one versioned behavior model and make feature-branch progress observable through verified steps. | +| 23 | Show how Composer creates a reversible experiment boundary inside a legacy system and shortens the path to a first production experiment. | +| 24 | Position Storybook as the executable frontend specification and quality gate before artifacts enter Composer. | +| 25 | Revisit the communication artifacts with the tooling that keeps each one current, executable, and testable. | + +## Act 4: Consulting Entry + +| Slides | Narrative Job | +|---|---| +| 26 | Establish committed executive sponsorship as the ideal entry, grounded in operational reality and a sovereign OSS/AI trust foundation. | +| 27 | Select an existing transformation pressure point instead of selling a generic framework. | +| 28 | Show the operational trust path when executive access is not yet available. | +| 29 | Close with one high-risk feature as a bounded, reversible, measurable experiment. | + +## Ecosystem Extensions + +| Slides | Narrative Job | +|---|---| +| 30 | Position external metric providers such as Sellytics as optional sources of attributable market evidence. | +| 31 | Instrument physical retail through a provider such as Crosscan and distinguish store behavior from external context such as weather. | +| 32 | Connect paperless, observable industrial execution through a provider such as ekko to strategic hypotheses, KPIs, and learning. | +| 33 | Introduce Synesis as an optional deliberation and decision-memory add-on. | + +## Act 5: Vision + +| Slides | Narrative Job | +|---|---| +| 34 | Close with shared organizational reality, short feedback loops, and canonical learning. | + +Architecture, observability, runtime contracts, and implementation mechanics +move into a dedicated architectural whitepaper rather than the introductory +pitch deck. diff --git a/dist/presentations/protopipe-enterprise-pitch/docs/design-system.md b/dist/presentations/protopipe-enterprise-pitch/docs/design-system.md new file mode 100644 index 0000000..71c17ef --- /dev/null +++ b/dist/presentations/protopipe-enterprise-pitch/docs/design-system.md @@ -0,0 +1,34 @@ +# Design System + +The visual direction is dark, enterprise, technical, strategic, and OSS-native. +It should feel closer to Linear, Stripe, Vercel, Red Hat, and Thoughtworks Radar +than to a startup hype deck or stock-photo consulting brochure. + +## Palette + +- Background: `#081a17` +- Deep background: `#0b0c0e` +- Primary accent: `#f7436e` +- Secondary accent: `#41d6c3` +- Warning / experiment accent: `#f6c56f` +- Text: `#ffffff` +- Muted text: `rgba(255, 255, 255, 0.72)` + +## Layout Principles + +- Use the exported Protopipe full-color logo from the identity chapter in the + Reveal footer as a restrained persistent brand marker. +- Slides should be dense enough for enterprise audiences, but not cramped. +- Use tables for responsibility maps and transformation paths. +- Use Protopipe swimlanes for BPM-style process flows, responsibility, + handovers, and domain boundaries. +- Use flow diagrams only for simple loops and system interactions where + responsibility is not the main point. +- Use compact reference lines for theory sources, talks, papers, and books. +- Avoid rounded decorative card stacks unless showing repeated items. +- Avoid stock-photo metaphors and agile workshop imagery. + +## Typography + +Use system fallbacks by default for portability. If brand fonts are licensed for +distribution, place them in `assets/fonts/` and wire them into `theme/`. diff --git a/dist/presentations/protopipe-enterprise-pitch/docs/diagram-strategy.md b/dist/presentations/protopipe-enterprise-pitch/docs/diagram-strategy.md new file mode 100644 index 0000000..e97237a --- /dev/null +++ b/dist/presentations/protopipe-enterprise-pitch/docs/diagram-strategy.md @@ -0,0 +1,66 @@ +# Diagram Strategy + +Diagrams are first-class presentation assets. + +## Source Formats + +- Use Mermaid only for early throwaway diagrams and quick collaboration. +- Use PlantUML for Protopipe process and BPM-style visuals because it can + include the canonical Noesis skin. +- Export final diagrams into `diagrams/generated/` as SVG. +- Prefer vertical swimlanes for responsibility, domain boundaries, handovers, + decision flow, and observation loops. + +## Protopipe BPM Visual Grammar + +The deck follows `doc/09_identity/guidelines/swimlane-visual-grammar.md`. + +- Lane: domain, role, team, responsibility area, or system boundary. +- Token / step: hypothesis, feature step, decision, observation, or learning + signal. +- Transition: handover of control, evidence, responsibility, or accountability. +- Boundary: explicit domain boundary; no implicit coupling. + +Swimlanes are not decorative. They are the preferred visual language for showing +where responsibility sits and how evidence moves. + +## Legibility Checks + +- Keep every label fully inside its box, token, or decision gate. +- Leave enough space between connected elements for a clearly visible arrow + shaft, not only an arrowhead. +- Review diagrams at the rendered slide size. Source-level spacing can disappear + when Reveal.js scales an SVG into the deck. + +## Required Diagram Set + +- Organizational reality drift map +- Habermas and Luhmann bridge +- Golden Circle communication flow +- Shared reality / APDP capability chain +- Protopipe component system map +- Integrated loop from purpose to monitoring and knowledge +- Consulting entry and expansion path + +## Rendering Guidance + +Keep diagram source editable and compact. Generated exports should be treated as +build artifacts unless hand-tuned for presentation quality. + +PlantUML is rendered via Podman, not a required local binary: + +```bash +./scripts/render-plantuml.sh +``` + +Or with Compose: + +```bash +podman compose run --rm plantuml +``` + +The script defaults to Podman. Docker remains available as an explicit override: + +```bash +CONTAINER_RUNTIME=docker ./scripts/render-plantuml.sh +``` diff --git a/dist/presentations/protopipe-enterprise-pitch/docs/future-extension.md b/dist/presentations/protopipe-enterprise-pitch/docs/future-extension.md new file mode 100644 index 0000000..269fc4b --- /dev/null +++ b/dist/presentations/protopipe-enterprise-pitch/docs/future-extension.md @@ -0,0 +1,24 @@ +# Future Extension Strategy + +## Content Growth + +- Add case-study variants as separate chapter files. +- Add audience-specific tracks for executives, architects, product leaders, and + consulting partners. +- Keep core acts stable and move optional depth into the appendix. + +## Technical Growth + +- Add `diagrams/render.sh` or a Makefile once diagram generation becomes + repeatable. +- Add Playwright screenshot checks if the deck becomes customer-facing. +- Add PDF export only after the reveal version stabilizes. + +## Narrative Growth + +- Build a theory appendix for Habermas, Luhmann, AI, DevOps, and product + management. +- Build a transformation appendix for consulting packaging and adoption paths. +- Build component deep dives for Noesis, ProtoPortfolio, Composer, and + Storybook. + diff --git a/dist/presentations/protopipe-enterprise-pitch/docs/github-pages.md b/dist/presentations/protopipe-enterprise-pitch/docs/github-pages.md new file mode 100644 index 0000000..ddb0732 --- /dev/null +++ b/dist/presentations/protopipe-enterprise-pitch/docs/github-pages.md @@ -0,0 +1,61 @@ +# GitHub Pages Deployment Strategy + +Recommended deployment target: GitHub Pages with Quarto rendering in CI. + +## Local Render + +```bash +cd dist/presentations/protopipe-enterprise-pitch +quarto render +``` + +## Suggested Workflow + +Create `.github/workflows/protopipe-presentation.yml` at the repository root if +this deck becomes a published artifact. + +```yaml +name: Protopipe Presentation + +on: + push: + branches: [main] + paths: + - "dist/presentations/protopipe-enterprise-pitch/**" + - ".github/workflows/protopipe-presentation.yml" + workflow_dispatch: + +permissions: + contents: read + pages: write + id-token: write + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: quarto-dev/quarto-actions/setup@v2 + - name: Render presentation + working-directory: dist/presentations/protopipe-enterprise-pitch + run: quarto render + - uses: actions/upload-pages-artifact@v3 + with: + path: dist/presentations/protopipe-enterprise-pitch/_site + + deploy: + needs: build + runs-on: ubuntu-latest + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + steps: + - id: deployment + uses: actions/deploy-pages@v4 +``` + +## Publication Model + +Keep the deck in `dist/` because it is derived and audience-specific. Promote +only reusable language, constraints, or identity decisions back into `doc/`. + diff --git a/dist/presentations/protopipe-enterprise-pitch/docs/presentation-architecture.md b/dist/presentations/protopipe-enterprise-pitch/docs/presentation-architecture.md new file mode 100644 index 0000000..6421c5b --- /dev/null +++ b/dist/presentations/protopipe-enterprise-pitch/docs/presentation-architecture.md @@ -0,0 +1,40 @@ +# Presentation Architecture + +This deck is intentionally modular. The main file `presentation/index.qmd` +acts as the assembly root and includes one file per narrative act. + +## Authoring Rules + +- Keep slide titles in English. +- Treat `doc/` as canonical source material and this deck as derived. +- Add new narrative claims first as slide notes or placeholders, then verify + whether they belong in Noesis. +- Frame Protopipe initially as an Augmented Product Development Platform + before explaining the mechanics and components. +- Preserve the full loop: Golden Circle / Purpose -> Strategy -> Product -> + Architecture -> Development -> Monitoring and Observations -> Learning -> + Decision. +- Use `references` blocks for external sources and theory anchors. Keep them + visible but visually subordinate to the slide argument. +- Use Protopipe swimlane / BPM-style diagrams for process explanations, + especially when the point is responsibility, handover, domain boundaries, or + observable evidence. +- Prefer one concept per slide. +- Prefer diagrams over decorative images. +- Use screenshots only when they show a concrete product, prototype, or system + state. + +## Slide Types + +- `section`: act divider. +- `toc-only`: table-of-contents placeholder for future slide content. +- `slide-intent`: explicit authoring intent for a future content slide. +- `diagram-slot`: reserved slide for generated or designed diagrams. +- `flow`: linear system or decision loop. + +## Canonical Anchors + +- Language: `doc/02_language/glossary.md` +- Culture: `doc/03_culture/principles.md`, `doc/03_culture/culture-code.md` +- Problems: `doc/05_problems/` +- Identity: `doc/09_identity/` diff --git a/dist/presentations/protopipe-enterprise-pitch/docs/quarto-reveal-configuration.md b/dist/presentations/protopipe-enterprise-pitch/docs/quarto-reveal-configuration.md new file mode 100644 index 0000000..4713d69 --- /dev/null +++ b/dist/presentations/protopipe-enterprise-pitch/docs/quarto-reveal-configuration.md @@ -0,0 +1,37 @@ +# Quarto and Reveal.js Configuration + +The deck is configured in `_quarto.yml`. + +## Quarto + +- Project type: `website` +- Render target: `presentation/index.qmd` +- Output directory: `_site` +- Execution freeze: `auto` +- Static resources: `assets/` and `diagrams/generated/` + +## Reveal.js + +- Theme: Quarto `default` plus `theme/protopipe.scss` +- Aspect ratio: `1600x900` +- Transition: `fade` +- Navigation: linear +- Slide numbers: current slide / total slides +- Controls, progress, hash navigation, history, and overview enabled +- Centering disabled to support enterprise-style composed layouts +- Code copy enabled for technical appendix slides +- Footer: `Protopipe | Augmented Product Development Platform` + +## Rendering + +Use: + +```bash +./scripts/render.sh +``` + +Use preview mode while authoring: + +```bash +./scripts/preview.sh +``` diff --git a/dist/presentations/protopipe-enterprise-pitch/docs/repository-tree.md b/dist/presentations/protopipe-enterprise-pitch/docs/repository-tree.md new file mode 100644 index 0000000..04d7e6d --- /dev/null +++ b/dist/presentations/protopipe-enterprise-pitch/docs/repository-tree.md @@ -0,0 +1,46 @@ +# Repository Tree + +```text +protopipe-enterprise-pitch/ +├── _quarto.yml +├── README.md +├── presentation/ +│ ├── index.qmd +│ └── chapters/ +│ ├── 01-act-problem.qmd +│ ├── 02-act-gapless-org-learning.qmd +│ ├── 03-act-protopipe.qmd +│ ├── 04-act-consulting-entry.qmd +│ ├── 05-act-architecture.qmd # reserved for the architecture whitepaper +│ ├── 05-act-extensions.qmd # optional ecosystem extensions +│ ├── 06-act-vision.qmd +│ └── 90-appendix.qmd # source material, not rendered +├── theme/ +│ └── protopipe.scss +├── assets/ +│ ├── fonts/ +│ ├── diagrams/ +│ │ └── shared-reality-bpmn.svg +│ ├── images/ +│ └── logos/ +│ ├── README.md +│ └── protopipe-logo-color-full.svg +├── diagrams/ +│ ├── generated/ +│ └── source/ +│ └── plantuml/ +├── scripts/ +│ ├── preview.sh +│ ├── render-plantuml.sh +│ └── render.sh +└── docs/ + ├── deck-outline.md + ├── design-system.md + ├── diagram-strategy.md + ├── future-extension.md + ├── github-pages.md + ├── presentation-architecture.md + ├── quarto-reveal-configuration.md + ├── repository-tree.md + └── scss-architecture.md +``` diff --git a/dist/presentations/protopipe-enterprise-pitch/docs/scss-architecture.md b/dist/presentations/protopipe-enterprise-pitch/docs/scss-architecture.md new file mode 100644 index 0000000..4863f1c --- /dev/null +++ b/dist/presentations/protopipe-enterprise-pitch/docs/scss-architecture.md @@ -0,0 +1,33 @@ +# SCSS Architecture + +The theme currently lives in one Quarto-compatible SCSS file: + +- `theme/protopipe.scss` + +Quarto Reveal themes require special comment sections: + +- `scss:defaults` for Reveal variables before theme compilation. +- `scss:rules` for concrete CSS rules after theme compilation. + +## Current Sections + +- Reveal defaults: colors, font families, sizing, heading behavior. +- CSS custom properties: Protopipe palette and semantic tokens. +- Base slide rules: background, typography, tables, footer, slide number. +- Reusable slide components: `slide-intent`, `toc-only`, `diagram-slot`, `flow`. +- Title slide rules: first-slide specific treatment. + +## Extension Path + +Keep the single-file theme until the visual system becomes large enough to +justify partials. When splitting becomes useful, keep `protopipe.scss` as the +Quarto entry point and introduce: + +- `_tokens.scss` +- `_base.scss` +- `_components.scss` +- `_print.scss` + +Only split when it improves maintainability; Quarto theme compilation is easier +to debug with a compact entry file. + diff --git a/dist/presentations/protopipe-enterprise-pitch/presentation/chapters/01-act-problem.qmd b/dist/presentations/protopipe-enterprise-pitch/presentation/chapters/01-act-problem.qmd new file mode 100644 index 0000000..0ac81fc --- /dev/null +++ b/dist/presentations/protopipe-enterprise-pitch/presentation/chapters/01-act-problem.qmd @@ -0,0 +1,320 @@ +# Act 1: Problem Statement {.section .focus-section} + +--- + +## 01. The Golden Circle + +

Direction of thinking and communicating

+ +
+
+
Default communication
+
+
What we build
+
->
+
How it works
+
->
+
Why it matters
+
+
+ +
+
Golden Circle communication
+
+
Why it matters
+
->
+
How we make it true
+
->
+
What we build
+
+
+
+ +
+Reference: Simon Sinek, How great leaders inspire action, TEDxPuget Sound. +
+ + + +--- + +## 02. Protopipe's Golden Circle + +

Fall in love with the problem, not the solution Uri Levine

+ +
+
+
+What +Augmented Product Development Platform +
+
+How +Experiments built in +
+
+Why +Wrong and slow decisions +
+
+
+
+Why +Decisions without measurable feedback, invisible dependencies, and discussions without responsibility waste organizational time. +
+
+How +Protopipe makes problems explicit, connects hypotheses to measurements, and turns responsibility into something observable. +
+
+What +The platform makes this operating model tangible across strategy, product, architecture, development, monitoring, and learning. +
+
+
+ +--- + +## 03. The Strategy Is Defined. It Just Does Not Arrive. + +

The problem is not missing intent. The problem is broken transmission.

+ +
+
+Golden Circle exists +Many organizations have a purpose statement, values, principles, and strategic language. +
+ +
+Strategy exists +Steering meetings produce decisions, priorities, roadmaps, and transformation narratives. +
+ +
+Daily work does not change +Documentation becomes write-only. Culture shifts rarely reach teams formally, and even less often become internalized behavior. +
+
+ + + +--- + +## 04. Organizations Speak Different Codes + +

The same signal becomes different communication in different systems.

+ +
+
+Engineering +Truth +

Does it work? Is it correct? Can we prove the failure?

+
+ +
+Finance +Money +

What does it cost? Which budget moves? What is the business effect?

+
+ +
+C-Level / Management +Power +

Can it be decided? Does it fit priorities, timing, ownership, and narrative?

+
+ +
+Product / Market +Demand +

Does the market care? Which user behavior confirms or rejects it?

+
+
+ +
+
+Developer says +“The system is built wrong.” +
+
+C-Level hears +“This threatens roadmap, budget, ownership, and commitment.” +
+
+Not the best idea wins. The most connectable communication wins. +
+
+ +
+Theory anchor: Niklas Luhmann, organizational systems as communication systems. Applied reading: Alwin Mark, Warum sich in Unternehmen nicht die besten Ideen durchsetzen, ONLU AG. +
+ + + +--- + +## 05. Deliberation Needs Observable Reality + +

Decision meetings loop when there is no shared object to reason about.

+ +
+
+
More meetings
+
->
+
More slides
+
->
+
More opinions
+
->
+
Power word
+
->
+
Low-risk,
low-reward decision
+
+ + +
+Without observable reality, meetings and politics become a substitute for knowledge. +
+
+ +
+
+Bowtie +Shared model +

Causes, risks, consequences, barriers, and assumptions become explicit.

+
+
+
+
+Habermas +Structured argument +

Claims must be justified, located, challenged, and understood.

+
+
+
+
+System architecture +Observable reality +

Metrics, events, tests, monitoring, and feedback make claims decidable.

+
+
+ + +
+Theory anchor: Jürgen Habermas, communicative action and deliberation. Applied reading: Alwin Mark, Deliberation statt Endlosschleife, ONLU AG. +
+ + + +--- + +## 06. Ivory Tower Architecture + +

Architecture principles fail when they are not connected to implementation feedback.

+ +
+
+Architects do not get feedback +Principles are defined far away from the friction of delivery, runtime behavior, incidents, and developer experience. +
+ +
+Developers do not apply principles +Architecture becomes documentation, not a working constraint inside daily decisions, code reviews, tests, or releases. +
+ +
+Trade-offs disappear +Principles sound like pure improvement. Coupling, cost, migration effort, latency, ownership, and operational risk stay hidden. +
+
+ +
+Architecture without feedback becomes belief. Architecture without trade-offs becomes theater. +
+ + + +--- + +## 07. Responsibility Without Control + +

Teams are accountable for outcomes they cannot fully influence.

+ +
+
+
Team responsibility
+
+
Own outcome
+
->
+
Find constraint
+
->
+
Cannot change it
+
+
+ +
+
Central control
+
+
Decision rights
+
Architecture boundary
+
Budget / risk gate
+
+
+
+ +
+Escalation becomes the operating model. +Teams optimize locally to survive. +Management becomes the delivery bottleneck. +
+ + + +--- + +## 08. Survival of the Fastest + +

The real problem is not one bad decision. It is organizational decision latency.

+ +
+
+Organizations become too slow for their own reality. +Problems are known, strategy is written, architecture is documented, meetings happen, and responsibility is assigned. But feedback does not move fast enough to change decisions. +
+ +
+
Write-only strategy
+
Different communication codes
+
Meeting loops
+
Ivory tower architecture
+
Responsibility without control
+
Decisions without feedback
+
+ +
+Slow organizations do not fail because they lack ideas. They fail because reality reaches decisions too late. +
+
diff --git a/dist/presentations/protopipe-enterprise-pitch/presentation/chapters/02-act-gapless-org-learning.qmd b/dist/presentations/protopipe-enterprise-pitch/presentation/chapters/02-act-gapless-org-learning.qmd new file mode 100644 index 0000000..4ccbcea --- /dev/null +++ b/dist/presentations/protopipe-enterprise-pitch/presentation/chapters/02-act-gapless-org-learning.qmd @@ -0,0 +1,174 @@ +# Act 2: Communication Artifacts {.section .learning-section} + +

How shared meaning becomes visible, transferable, and actionable.

+ +--- + +## 09. From Problems to Desired Outcomes + +

Protopipe does not jump from pain to solution. It defines what must become true.

+ +
+
+CEO +Simple decisions through evidence +Management decisions become simpler because evidence is accessible, reliable, and safe to surface. +
+ +
+CFO +KPIs built in +Impact, constraints, and opportunity cost become visible early enough to steer investment. +
+ +
+CPO +Hypotheses instead of roadmap defense +Product decisions become explicit assumptions with signals and revisit criteria. +
+ +
+CTO +Scale change, not just throughput +Architecture localizes change, risk, and understanding as the organization grows. +
+
+ +--- + +## 10. Mechanics Make Outcomes Unavoidable + +

Mechanics are enforced trade-offs. They remove comfortable failure modes.

+ +
+
Problem
+
->
+
Desired Outcome
+
->
+
Mechanic
+
->
+
Contextual Decision
+
->
+
Realization
+
+ +
+If a rule can be ignored without consequence, it is not a mechanic. +
+ +
+
+X over Y +Use when a mechanic enforces a clear preference +between two competing approaches. + +Y is excluded by default. It needs strong justification to be chosen over X. +
+ +
+X by Default, Y by Exception +Use when a behavior is allowed, +but only with explicit justification. + +Y is allowed, but only for the given exception +
+ +
+No X without Y +Use when a behavior must never occur +unless a prerequisite is fulfilled. + +X is not allowed unless Y is true +
+
+ +--- + +## 11. The First Mechanics + +

A shared reality platform starts by making ambiguity structurally expensive.

+ +
+
+No coordination without explicit shared meaning +Coordination through meetings alone does not scale. Meaning must be referenceable. +
+ +
+No release without observable feedback +Delivery is not complete until feedback exists before or during release. +
+ +
+No work evaluation without learning signal +Work is evaluated by learning, not by looking right or wrong. +
+ +
+No experiment without explicit business ownership +Experiments need accountable interpretation, not just technical execution. +
+
+ +--- + +## 12. Gapless Organizational Learning Process + +

Purpose, strategy, delivery, observation, and learning stay in one measurable loop.

+ +```{=html} +
+BPMN-style shared reality process across C-Level, Product Ownership, Developers and Analysts, and Learning lanes; analysis combines experiment metrics with external factors such as weather +
+``` + +
+Protopipe exists to keep this loop connected, explicit, observable, and revisable. +
+ +--- + +## 13. Process Transition Artifacts + +

Every handover becomes visible as a shared artifact that the next lane can understand and act on.

+ +
+
+Purpose +Golden Circle +Why, how, and what become a stable reference for strategic and product conversations. +Visible as shared orientation. +
+ +
+Strategy +Strategy Topic + KPI Tree +The KPI Tree relates operational and technical metrics to the business outcomes that matter to leadership. +Visible as causal business context. +
+ +
+Hypothesis +Strategy-linked Claim +A hypothesis belongs to a strategy topic and states what should become measurably true. +Visible as strategic assumption. +
+ +
+Experiment +Measured System Change +An experiment tries to prove a hypothesis by changing or replacing part of the current system and expecting metric movement. +Visible as portfolio experiment. +
+ +
+Development +Feature Files / Scenarios +Instead of story points, progress is visible as missing scenario steps on the experiment branch. +Visible on the experiment. +
+
+ +
+Artifacts are not write-only documentation. They are the shared objects that carry responsibility across the process. +
diff --git a/dist/presentations/protopipe-enterprise-pitch/presentation/chapters/03-act-protopipe.qmd b/dist/presentations/protopipe-enterprise-pitch/presentation/chapters/03-act-protopipe.qmd new file mode 100644 index 0000000..22defd7 --- /dev/null +++ b/dist/presentations/protopipe-enterprise-pitch/presentation/chapters/03-act-protopipe.qmd @@ -0,0 +1,596 @@ +# Act 3: Enforcing Tools {.section .focus-section} + +

How Protopipe keeps shared artifacts present, executable, and open to validation.

+ +--- + +## 14. Purpose and Culture at Runtime + +

Purpose only matters when it is present at the moment a decision becomes work.

+ +
+
+
+Write-only culture +Intent is communicated once, then disappears from the work. +
+Write-only culture BPMN process with separate Leadership and Employee processes +
+ +
+
+Noesis culture runtime +Canonical context travels with the decision and learns from its outcome. +
+Noesis culture runtime BPMN process across Leadership, Noesis, and Employee lanes +
+
+ +
+Applied reading: Alwin Mark, Noesis: Wie Metaprompts Unternehmenskultur in jede Entscheidung bringen, ONLU AG. +
+ +--- + +## 15. Culture at the Point of Work + +

Noesis turns canonical culture into concrete guidance inside everyday artifacts.

+ +
+
+Customer communication +Does this response express our purpose and shared language? +The agent reviews wording, commitments, and claims against canonical culture. +
+
+Ticket / Definition of Done +Is the work measurable, observable, and connected to a hypothesis? +The agent proposes missing acceptance criteria, feature scenarios, and learning signals. +
+
+ +
+Remember +Culture becomes operational when shared intent is present in every decision, review, and learning loop. +
+ +--- + +## 16. Noesis: Start Small, Scale the Governance + +

Noesis is a canonical reasoning space, not a platform commitment. Start with files; add automation when coordination demands it.

+ +
+
+Low tech / low commitment +Structured Markdown in Git + +
Markdown + Git + search + optional local LLM
+
+ +
+Enterprise runtime +MCP + Continuous Knowledge Curation + +
Planned as part of the OSS Protopipe package.
+
Knowledge graph + MCP + policy + AutoAudit
+
+
+ +
+Automation proposes. Accountable humans approve changes to canonical knowledge. +
+ +--- + +## 17. Protopipe Cockpit: Strategy Meets Reality + +

The cockpit makes strategy, investment, evidence, and friction visible in one C-level decision surface.

+ +
+
+01 · Overall Health +Is the portfolio moving in the intended direction? +
+72 +
Momentum +12%
Healthy strategies 4 / 5
Capacity 100%
+
+
+ +
+02 · Reality Signal Matrix +Where does reality support or contradict strategy? +
+Internal + controllable +Internal + uncontrollable +External + controllable +External + uncontrollable +
+
+ +
+03 · Strategy Tiles +Which strategies require attention, budget, or intervention? +
+Enterprise Expansion +Profitability First +Market Resilience +
+
+ +
+04 · Strategy Detail +What must an executive know before deciding? +
+Budget and capacity +Primary friction +Largest open assumption +Most critical risk +
+
+
+ +
+The cockpit does not report activity. It forces strategy to remain connected to observable reality. +
+ +--- + +## 18. Cockpit in Action {data-state="cockpit-demo-slide"} + +

From the operating model to an executable executive decision surface.

+ +
+ +
+ +--- + +## 19. KPI Tree: The Cockpit Backbone + +

The KPI Tree is the working model of CFO and Controlling: it makes the causal path from strategic intent to financial effect explicit.

+ +
+
+
+Strategic outcome +Profitable customer growth +Owned and funded at portfolio level +
+
+
+
+Financial KPI +Contribution margin +CHF impact and opportunity cost +
+
+Customer KPI +Checkout completion +Expected behavioral effect +
+
+
+
+
+Operational driver +Payment recovery rate +Process performance +
+
+Technical signal +Provider timeout rate +System behavior +
+
+Experiment +EXP-024 · Recovery flow +Attributed intervention +
+
+
+ +
+CFO + Controlling +Steer through causality, not reporting cycles. +
+Which strategic bet moves financial reality? +Where is capital producing learning or impact? +Which risk is provisionable now? +What is the opportunity cost of waiting? +
+
Fund · constrain · revise · stop
+
+
+ +
+The Cockpit is the decision surface. The KPI Tree is the causal model underneath it. +
+ +--- + +## 20. Reality Must Flow Back + +

Protopipe closes the loop by accepting only attributable signals and returning their financial meaning to strategy.

+ +
+
+ + + +
+ +
+ +
+Attribution gate +Experiment + process + user context +Signals without causal context are invalid. +
+ +
+ +
+Core operating model +KPI Tree +Connects technical and operational movement to strategic and financial outcomes. +
+ +
+ +
+Decision surface +Protopipe Cockpit +CFO, Controlling, and C-level see impact, uncertainty, and opportunity cost. +
+
+ +
+Observed effect + +Investment decision + +Strategy update + +Next hypothesis +
+ +
+A strategy without feedback is opinion. Anything that does not connect back through feedback is not Protopipe. +
+ +--- + +## 21. ProtoCatalog: One Behavior Model + +

Requirements, specifications, implementation, and tests drift when each role maintains a different model of the product.

+ +
+
+
+Product +Acceptance Criteria +What we expect +
+
+Analysis +Specification +What we mean +
+
+Development +Implementation +What the system does +
+
+Quality +Test Suite +What is verified +
+
+ + + +
+ProtoCatalog +Feature Files + Scenarios +

One versioned behavior model, written in domain language and executable through Cucumber.

+
+Readable by business +Executable by development +Verified by evidence +Traceable to the experiment +
+
+
+ +
+BDD is the communication protocol. The catalog is the living product knowledge it creates. +
+ +

Based on the Noesis feature model and From spec to BDD, Michael Küsters and Finies Fenske, 2018.

+ +--- + +## 22. Progress Becomes Observable + +

A feature branch is visible in the catalog while it belongs to an experiment and its strategic hypothesis.

+ +
+
+
+Strategy +Increase checkout completion +
+
+
+Hypothesis +Clear payment feedback reduces abandonment +
+
+
+Experiment +EXP-024 · Payment confirmation +
+
+ +
+
+
+Feature branch +experiment/EXP-024-payment-feedback +
+5 / 8 steps green +
+ +
+
+Feature +Customer receives reliable payment confirmation +
+
+Scenario · Successful card payment +Given an active basket +When payment is accepted +Then the order is placed +And confirmation is shown +
+
+Scenario · Delayed provider response +Given payment remains pending +When the provider times out +Then retry guidance is shown +And the event remains observable +
+
+
+
+ +
+Green +Not successful +Not implemented +A feature is green when all of its steps are verified. +
+ +
+
+Instead of +Story Points +Estimated effort without verified product behavior +
+ +
+Progress becomes +Green Feature Steps +Observable behavior implemented and verified on the feature branch +
+
+ +--- + +## 23. Composer: Architecture as an Experiment System + +

Composer creates an experimental boundary inside the existing system before a migration program exists.

+ +
+
+01 · Install and mark +Composer becomes the legacy proxy +
+<!-- protopipe:slot checkout-cta --> + <button>Buy now</button> +<!-- /protopipe:slot --> +
+

Composer proxies the unchanged monolith response. HTML markers identify the first replaceable surface without a page rewrite.

+Planned bootstrap adapter +
+ +
+ +
+02 · Replace with artifacts +Route variants, not conditions +
+ControlLegacy fragment +VariantRFA from feature branch +
+

Composer assigns consenting users and replaces only the expected RFA within the experiment scope.

+Artifact-based experiment +
+ +
+ +
+03 · Observe and decide +Make impact and safety visible +
+Experiment analytics +Operational telemetry +Runtime context +Deterministic rendering +
+

Business effects and technical reliability remain separate, observable, and attributable to the variant.

+Evidence returns to the experiment +
+
+ +
+Install Composer as legacy proxy + +Mark one legacy surface + +Deploy one RFA + +0 → 1 experiment in < 1 week — potentially one day +
+ +

Derived from the Composer BDD feature suite: routing, partial rendering, scoped RFA overrides, assignment, consent, runtime context, analytics separation, and operational telemetry.

+ +--- + +## 24. Storybook: UX Communication Layer + +

Storybook turns frontend intent into an executable product contract before productive backends or runtime integration exist.

+ +
+
+Shared inputs +
+ProductHypothesis and success criteria +UXInteraction and visual language +FrontendComponents, actions, and contexts +BackendCapabilities and constraints +
+
+ +
+Executable specification +Component + Context + Action + Story +
+
+ +
+
+Checkout confirmation +Context: delayed provider response + +
+
+

Product, design, engineering, QA, and test participants review the same interactive behavior without waiting for a backend.

+
+ +
+Validation gates +
+BehaviorActions and context transitions execute +Visual constraintsDesign invariants survive composition +ContractsBackend expectations become explicit +ExperimentsVariants substitute artifacts explicitly +
+
+
+ +
+
+Draft + +Validated in Storybook + +Contract-compatible + +Publish RFA / IFA to Composer +
+Future interaction layerWYSIWYG assembly over validated artifacts. +
+ +
+Storybook is not a visual gallery. It is the quality gate where UI becomes negotiable, executable, and safe to promote. +
+ +

Source: Protopipe Storybook arc42 architecture.

+ +--- + +## 25. How Shared Artifacts Stay Alive + +

The artifact defines shared meaning. The tooling keeps it connected, executable, and open to validation.

+ +
+
+Purpose +Golden Circle +The canonical why, how, and what remain available as organizational context. +
+Enforced by +Noesis +
+
+ +
+Strategy +Strategy Topic + KPI Tree +Strategic intent remains connected to financial outcomes, operational drivers, and technical signals. +
+Enforced by +KPI Tree + Protopipe Cockpit +
+
+ +
+Hypothesis -> Experiment +Strategy-linked Experiment +Every experiment names the hypothesis, expected metric movement, and accountable owner. +
+Enforced by +ProtoPortfolio +
+
+ +
+Experiment -> Development +Feature Files + Scenarios +Expected behavior becomes an executable contract and progress becomes visible as remaining steps. +
+Enforced by +ProtoCatalog +
+
+ +
+Observation -> Learning +Evidence + Decision Record +Runtime signals validate the expected effect and update canonical organizational knowledge. +
+Enforced by +Composer +
+
+
+ +
+Shared reality survives daily operations because every artifact has a system that keeps it current and testable. +
diff --git a/dist/presentations/protopipe-enterprise-pitch/presentation/chapters/04-act-consulting-entry.qmd b/dist/presentations/protopipe-enterprise-pitch/presentation/chapters/04-act-consulting-entry.qmd new file mode 100644 index 0000000..d7879b4 --- /dev/null +++ b/dist/presentations/protopipe-enterprise-pitch/presentation/chapters/04-act-consulting-entry.qmd @@ -0,0 +1,197 @@ +# Act 4: Consulting Entry {.section .focus-section} + +--- + +## 26. Ideal Entry + +

Transformation becomes actionable when executive legitimacy meets operational reality.

+ +
+
+Top-down legitimacy +Committed Executive Sponsor +
+Names the strategic pain +Protects the experiment boundary +Provides access to teams and signals +Owns the resulting decision +
+
+ +
+Mandate +One painful question +One measurable experiment +One explicit decision +
+ +
+Bottom-up reality +Embedded Delivery Context +
+Reveals actual dependencies +Tests assumptions in daily work +Surfaces cultural friction safely +Produces observable evidence +
+
+
+ +
+
+Trust foundation +OSS + sovereign AI +Inspectable, locally operable, and grounded in client-specific context. +
+
+Operating principle +Trust before transformation +Effect before method. Observation before judgment. Compatibility before perfection. +
+
+ +
+Top-down legitimacy. Bottom-up reality. Evidence-driven expansion. +
+ +--- + +## 27. Transformation Pressure Point + +

Do not sell a transformation framework. Operationalize a strategic pain the organization already feels.

+ +
+
+Speed +Time to market keeps growing +

Dependencies, approvals, and unclear ownership delay valuable change.

+Signal: lead time, deployment frequency, decision latency +
+
+Product +Output rises while impact stalls +

Roadmaps advance, but customer behavior and business outcomes do not.

+Signal: adoption, conversion, retention, KPI movement +
+
+Architecture +The monolith blocks learning +

Every experiment becomes a migration discussion or a high-risk release.

+Signal: change failure rate, coupling, recovery time +
+
+Cost +Technology spend loses causality +

Cloud, platform, and delivery costs grow without a visible strategic effect.

+Signal: cost per outcome, capacity allocation, waste +
+
+AI +AI adoption fragments context +

Teams accelerate locally while language, culture, and decisions drift further apart.

+Signal: duplicated work, policy violations, inconsistent decisions +
+
+Organization +Transformation fatigue sets in +

New roles and rituals redistribute responsibility without transferring control.

+Signal: escalations, meeting loops, employee sentiment +
+
+ +
+The entry point is credible when leadership can name the pain, teams recognize it, and reality can answer it. +
+ +--- + +## 28. Operational Entry + +

Operational excellence can earn strategic access, but only when observed friction is translated into visible impact.

+ +
+
+01 +Deliver +

Join as an embedded DevOps or cross-functional engineer and solve real delivery problems.

+
+
+
+02 +Earn trust +

Become useful to the team before interpreting its organization.

+
+
+
+03 +Surface friction +

Use concrete situations to expose repeated decisions, hidden assumptions, and missing control.

+
+
+
+04 +Demonstrate effect +

Compare decision time, iterations, risk clarity, and delivery impact before and after.

+
+
+
+05 +Expand the mandate +

Translate repeated patterns into a jointly owned strategic intervention.

+
+
+ +
+Trust before transformation +Effect before method +Observation before judgment +Temporary side channels must become unnecessary +
+ +
+Observable operational impact earns the right to address structural causes. +
+ +--- + +## 29. High-Risk Feature + +

The first engagement is deliberately small, production-relevant, and designed to earn the next decision.

+ +
+
+Decision question +Can we improve checkout completion without increasing operational risk? +
+ +
+
+Hypothesis +A clearer payment recovery flow reduces abandonment. +
+
+Intervention +Replace one legacy surface through Composer. +
+
+Evidence +Conversion, errors, latency, and user feedback. +
+
+Decision rule +Scale, revise, stop, or restore the control. +
+
+ +
+ScopeOne product surface +TimeboxDays to first exposure +SafetyReversible test group +OwnershipOne executive decision owner +LearningCanonical decision record +
+
+ +
+The deliverable is not software. It is a decision the organization can defend with evidence. +
diff --git a/dist/presentations/protopipe-enterprise-pitch/presentation/chapters/05-act-architecture.qmd b/dist/presentations/protopipe-enterprise-pitch/presentation/chapters/05-act-architecture.qmd new file mode 100644 index 0000000..a3f526e --- /dev/null +++ b/dist/presentations/protopipe-enterprise-pitch/presentation/chapters/05-act-architecture.qmd @@ -0,0 +1,43 @@ +# Act 5: Architecture and Observability {.section .learning-section} + +--- + +## 29. Architecture Carries the Experiment + +::: {.flow .learning-flow} +Hypothesis -> Experiment -> Architecture -> Development -> Observation -> Decision -> Learning +::: + +--- + +## 30. Experiments Beat Large Upfront Decisions + +::: {.toc-only} +Connect risk-first exploration, reversibility, and feedback over opinion. +::: + +--- + +## 31. Development Becomes Observable + +::: {.toc-only} +Show architecture as dependency management, invariant placement, and blast +radius reduction, connected to implementation feedback and runtime observation. +::: + +--- + +## 32. Monitoring Becomes Causal, Not Decorative + +::: {.toc-only} +Tie KPI trees, telemetry, observations, hypotheses, and experiments so metrics +can explain decisions. +::: + +--- + +## 33. Decisions Become Traceable + +::: {.toc-only} +Show how evidence, trade-offs, and canonical references survive beyond meetings. +::: diff --git a/dist/presentations/protopipe-enterprise-pitch/presentation/chapters/05-act-extensions.qmd b/dist/presentations/protopipe-enterprise-pitch/presentation/chapters/05-act-extensions.qmd new file mode 100644 index 0000000..0c0ed4d --- /dev/null +++ b/dist/presentations/protopipe-enterprise-pitch/presentation/chapters/05-act-extensions.qmd @@ -0,0 +1,241 @@ +# Ecosystem Extensions {.section .neutral-section} + +

Optional capabilities that expand the evidence and governance around the Protopipe core.

+ +--- + +## 30. Direct External Signal Feed + +

A single trusted provider can enrich Protopipe with external evidence through a direct, bounded integration.

+ +
Optional SaaS Add-on · Direct Provider Integration
+ +
+
+Curated provider +Sellytics +

A potential ecosystem partner for continuously supplied commercial signals such as marketplace prices, rankings, ratings, and reviews.

+sellytics.com +
+ +
+ +
+Integration contract +Source · timestamp · confidence · KPI relation +
+Provider-specific +API-backed +Normalized +Traceable +
+
+ +
+ +
+Core platform +Reality Signal Matrix + KPI Tree +

Protopipe treats the feed as attributable evidence for hypotheses, KPIs, experiments, and decisions.

+
+
+ +
+Direct feed: One provider supplies a known class of external signals through an integration contract. +Protopipe: Preserves source, timestamp, confidence, and KPI relation. +
+ +--- + +## 31. External Data Marketplace Vision + +

External evidence is costly to collect and hard to verify. A marketplace can make that work attributable, priced, comparable, and challengeable.

+ +
Derived from Noesis · Optional Ecosystem Layer
+ +
+
+Provider ecosystem +Sellytics + specialized providers +

Multiple providers publish costly external evidence under comparable topic contracts.

+
+ +
+ +
+Independent market layer +Topic contract · provenance · access · reputation +
+Pricing + licensing +Schema-bound topics +Signed commitments +Topic-level reputation +
+
+ +
+ +
+Protopipe subscription +External Evidence Context +

Protopipe consumes marketplace evidence with provenance, confidence, correction status, and dispute history.

+
+
+ +
+Marketplace: Operate provider identity, payment, access, commitments, reputation, corrections, and disputes. +Protopipe: Stays out of marketplace operation and uses the evidence context for strategic learning. +
+ +

Derived from Noesis: External Evidence Is Costly and Hard to Verify, No External Signal without Provenance, and External Evidence Context. Publication reference: External Data Marketplace Whitepaper.

+ +--- + +## 32. Google Analytics for Physical Retail + +

Instrument the physical store like an online product: connect experiments to observed customer behavior and business outcomes.

+ +
Optional Retail Analytics Add-on · Potential Partner
+ +
+
+Store reality provider +Crosscan +

Potential ecosystem partner for measuring visitor frequency, passers-by, dwell time, movement patterns, and demographic signals.

+crosscan.com +
+ +
+ +
+Experiment context +Store · time · intervention · comparison group +
+Footfall + conversion +Dwell time + movement +POS + staffing data +Weather + location context +
+
+ +
+ +
+Protopipe decision model +Reality Signal Matrix + KPI Tree +

Store behavior fills the internal quadrants. Weather and location context explain external influence without being mistaken for experiment impact.

+
+
+ +
+Experiment: Change a store surface, process, campaign, or staffing model. +Decision: Compare attributed behavior and business impact before scaling. +
+ +

Potential partner capability reference: Crosscan retail analytics.

+ +--- + +## 33. Industry 5.0: Strategy Reaches the Shopfloor + +

Digitization makes industrial work observable. Protopipe turns that operational reality into strategic learning.

+ +
Optional Industrial Operations Add-on · Potential Partner
+ +
+
+Shopfloor execution provider +ekko +

Potential ecosystem partner for paperless picking, eKanban, locationing, digital labeling, and configurable industrial workflows.

+ekko.io +
+ +
+ +
+Operational evidence +Order · step · material · location · outcome +
+Digital instructions +Verified process events +Errors + cycle times +REST · webhooks · MQTT +
+
+ +
+ +
+Augmented strategy +Hypothesis + KPI Tree + Cockpit +

Protopipe relates deterministic process evidence to quality, throughput, resilience, worker experience, and strategic outcomes.

+
+
+ +
+ekko: Make production, warehouse, and logistics processes digital, traceable, and testable. +Protopipe: Decide which operational change creates strategic value and whether the evidence supports scaling it. +
+ +

Capability references: ekko shopfloor digitization and European Commission Industry 5.0.

+ +--- + +## 34. Synesis: Deliberation with Memory + +

An optional deliberation platform can make perspectives, arguments, evidence, and unresolved conflict part of the decision record.

+ +
Optional Governance Add-on · MVP Concept
+ +
+
+Participants enter with context +
+PerspectiveWhich reality do I represent? +PositionWhat do I currently support? +HypothesisWhat would change my mind? +
+
+ +
+ +
+Structured deliberation +Claims · evidence · alternatives · consent +
+AI summarizes, clusters arguments, detects repetition, and points new participants to the existing discourse. +
+
+ +
+ +
+Canonical decision memory +
+Convergence status +Reasoned vetoes +Open assumptions +Decision rationale +
+
+
+ +
+
+Habermas +Target model +Understanding through reasoned, challengeable argument. +
+
+Luhmann +Threat model +Power, system logic, and self-reference remain explicit risks. +
+
+Protopipe +Decision integration +The resulting rationale links to strategy, hypothesis, experiment, and KPI Tree. +
+
+ +

Source: Synesis – Diskursplattform für konvergente Entscheidungsfindung, internal MVP canvas.

diff --git a/dist/presentations/protopipe-enterprise-pitch/presentation/chapters/06-act-vision.qmd b/dist/presentations/protopipe-enterprise-pitch/presentation/chapters/06-act-vision.qmd new file mode 100644 index 0000000..6005239 --- /dev/null +++ b/dist/presentations/protopipe-enterprise-pitch/presentation/chapters/06-act-vision.qmd @@ -0,0 +1,38 @@ +# Act 5: Vision {.section .learning-section} + +--- + +## 34. Shared Reality. Faster Learning. + +

Protopipe turns transformation from a program of promises into an observable sequence of decisions.

+ +
+
+Shared language +Everyone reasons about the same organizational reality. +

Purpose, strategy, hypotheses, features, architecture, and evidence remain connected.

+
+
+Short feedback loops +High-risk assumptions become bounded experiments. +

Teams change small surfaces, observe real effects, and preserve reversibility.

+
+
+Canonical learning +Every decision improves the next decision. +

Evidence, trade-offs, and responsibility survive beyond meetings and individual memory.

+
+
+ +
+Purpose +Strategy +Experiment +Development +Observation +Learning +
+ +
+Better decisions. Faster. With less waste and more responsibility. +
diff --git a/dist/presentations/protopipe-enterprise-pitch/presentation/chapters/90-appendix.qmd b/dist/presentations/protopipe-enterprise-pitch/presentation/chapters/90-appendix.qmd new file mode 100644 index 0000000..e4f31a3 --- /dev/null +++ b/dist/presentations/protopipe-enterprise-pitch/presentation/chapters/90-appendix.qmd @@ -0,0 +1,23 @@ +# Appendix {.section .neutral-section} + +--- + +## Source Anchors + +| Noesis Area | Use in Deck | +|---|---| +| `01_why` | Purpose, feedback loops, strategic frame | +| `02_language` | Canonical terms and ambiguity control | +| `03_culture` | Decision lenses and working culture | +| `05_problems` | Problem taxonomy and narrative evidence | +| `07_mechanics` | Trade-off logic and consequence framing | +| `09_identity` | Brand tone, colors, and visual anchors | + +--- + +## Future Detail Slides + +::: {.toc-only} +Reserve appendix space for deeper theory references, component examples, +consulting packages, case studies, and technical implementation notes. +::: diff --git a/dist/presentations/protopipe-enterprise-pitch/presentation/index.qmd b/dist/presentations/protopipe-enterprise-pitch/presentation/index.qmd new file mode 100644 index 0000000..51de894 --- /dev/null +++ b/dist/presentations/protopipe-enterprise-pitch/presentation/index.qmd @@ -0,0 +1,24 @@ +--- +title: 'Protopipe' +subtitle: "Augmented Product Development Platform" +author: "Alwin Mark" +date: last-modified +format: + revealjs: + title-slide-attributes: + data-background-image: "../assets/images/hero-placeholder.svg" + data-background-size: cover + data-background-position: center +--- + +{{< include chapters/01-act-problem.qmd >}} + +{{< include chapters/02-act-gapless-org-learning.qmd >}} + +{{< include chapters/03-act-protopipe.qmd >}} + +{{< include chapters/04-act-consulting-entry.qmd >}} + +{{< include chapters/05-act-extensions.qmd >}} + +{{< include chapters/06-act-vision.qmd >}} diff --git a/dist/presentations/protopipe-enterprise-pitch/scripts/export-pdf.sh b/dist/presentations/protopipe-enterprise-pitch/scripts/export-pdf.sh new file mode 100755 index 0000000..ebb1329 --- /dev/null +++ b/dist/presentations/protopipe-enterprise-pitch/scripts/export-pdf.sh @@ -0,0 +1,43 @@ +#!/usr/bin/env bash +set -euo pipefail + +project_root="$(cd "$(dirname "$0")/.." && pwd)" +cd "$project_root" + +export XDG_CACHE_HOME="${XDG_CACHE_HOME:-/tmp/quarto-cache}" + +./scripts/render.sh + +browser="${BROWSER_BIN:-}" +if [[ -z "$browser" ]]; then + for candidate in chromium-browser chromium google-chrome google-chrome-stable; do + if command -v "$candidate" >/dev/null 2>&1; then + browser="$(command -v "$candidate")" + break + fi + done +fi + +if [[ -z "$browser" ]]; then + echo "No Chromium-compatible browser found." >&2 + echo "Set BROWSER_BIN to the browser executable." >&2 + exit 1 +fi + +output="${1:-$project_root/_site/protopipe-enterprise-pitch.pdf}" +mkdir -p "$(dirname "$output")" + +presentation_url="file://$project_root/_site/presentation/index.html?print-pdf" + +"$browser" \ + --headless \ + --no-sandbox \ + --disable-gpu \ + --disable-dev-shm-usage \ + --no-pdf-header-footer \ + --print-to-pdf="$output" \ + --run-all-compositor-stages-before-draw \ + --virtual-time-budget=10000 \ + "$presentation_url" + +echo "PDF created: $output" diff --git a/dist/presentations/protopipe-enterprise-pitch/scripts/preview.sh b/dist/presentations/protopipe-enterprise-pitch/scripts/preview.sh new file mode 100755 index 0000000..a2b674d --- /dev/null +++ b/dist/presentations/protopipe-enterprise-pitch/scripts/preview.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash +set -euo pipefail + +cd "$(dirname "$0")/.." +quarto preview presentation/index.qmd + diff --git a/dist/presentations/protopipe-enterprise-pitch/scripts/render-plantuml.sh b/dist/presentations/protopipe-enterprise-pitch/scripts/render-plantuml.sh new file mode 100755 index 0000000..419455c --- /dev/null +++ b/dist/presentations/protopipe-enterprise-pitch/scripts/render-plantuml.sh @@ -0,0 +1,15 @@ +#!/usr/bin/env bash +set -euo pipefail + +cd "$(dirname "$0")/.." +mkdir -p diagrams/generated +repo_root="$(git rev-parse --show-toplevel)" +container_runtime="${CONTAINER_RUNTIME:-podman}" + +"$container_runtime" run --rm \ + -v "$repo_root:/work" \ + -w /work \ + plantuml/plantuml:1.2025.2 \ + -tsvg \ + -o ../../generated \ + dist/presentations/protopipe-enterprise-pitch/diagrams/source/plantuml diff --git a/dist/presentations/protopipe-enterprise-pitch/scripts/render.sh b/dist/presentations/protopipe-enterprise-pitch/scripts/render.sh new file mode 100755 index 0000000..9ea1c79 --- /dev/null +++ b/dist/presentations/protopipe-enterprise-pitch/scripts/render.sh @@ -0,0 +1,5 @@ +#!/usr/bin/env bash +set -euo pipefail + +cd "$(dirname "$0")/.." +quarto render presentation/index.qmd diff --git a/dist/presentations/protopipe-enterprise-pitch/scripts/sync-mockups.sh b/dist/presentations/protopipe-enterprise-pitch/scripts/sync-mockups.sh new file mode 100755 index 0000000..770f4ca --- /dev/null +++ b/dist/presentations/protopipe-enterprise-pitch/scripts/sync-mockups.sh @@ -0,0 +1,13 @@ +#!/usr/bin/env bash +set -euo pipefail + +project_root="$(cd "$(dirname "$0")/.." && pwd)" +source_file="$project_root/../../mockups/ProtopipeCockpit.html" +target_dir="$project_root/assets/mockups" +target_file="$target_dir/ProtopipeCockpit.html" + +mkdir -p "$target_dir" + +sed \ + 's|https://raw.githubusercontent.com/protopipe/noesis/refs/heads/main/doc/09_identity/assets/logo/out/svg/logo-color-small.svg|../logos/protopipe-logo-color-full.svg|' \ + "$source_file" > "$target_file" diff --git a/dist/presentations/protopipe-enterprise-pitch/theme/protopipe.scss b/dist/presentations/protopipe-enterprise-pitch/theme/protopipe.scss new file mode 100644 index 0000000..da974e4 --- /dev/null +++ b/dist/presentations/protopipe-enterprise-pitch/theme/protopipe.scss @@ -0,0 +1,3710 @@ +/*-- scss:defaults --*/ + +$backgroundColor: #081a17; +$mainColor: #f7f7f7; +$headingColor: #ffffff; +$linkColor: #41d6c3; +$selectionBackgroundColor: #41d6c3; + +$mainFont: "Helvetica Neue", "Inter", "Segoe UI", system-ui, sans-serif; +$headingFont: "Helvetica Neue", "Inter", "Segoe UI", system-ui, sans-serif; +$codeFont: "JetBrains Mono", "SFMono-Regular", Consolas, monospace; + +$headingTextTransform: none; +$headingLetterSpacing: 0; +$headingFontWeight: 750; +$mainFontSize: 34px; + +/*-- scss:rules --*/ + +:root { + --pp-bg: #081a17; + --pp-bg-deep: #0b0c0e; + --pp-surface: #102520; + --pp-surface-2: #142d27; + --pp-line: rgba(255, 255, 255, 0.16); + --pp-text: #ffffff; + --pp-muted: rgba(255, 255, 255, 0.72); + --pp-dim: rgba(255, 255, 255, 0.52); + --pp-accent: #f7436e; + --pp-accent-2: #41d6c3; + --pp-focus: #f7436e; + --pp-learning: #f6c56f; + --pp-success: #4dde9b; +} + +.reveal { + background: linear-gradient(180deg, var(--pp-bg), var(--pp-bg-deep)); + color: var(--pp-text); +} + +.reveal .slides { + text-align: left; +} + +.reveal h1, +.reveal h2, +.reveal h3 { + letter-spacing: 0; + line-height: 1.02; +} + +.reveal h1 { + max-width: 13ch; + font-size: 3.2em; +} + +.reveal h2 { + max-width: 22ch; + font-size: 1.95em; +} + +.reveal .subtitle { + max-width: 23ch; + color: var(--pp-muted); + font-size: 1.2em; + font-weight: 500; +} + +.reveal .section { + color: var(--pp-text); +} + +.reveal .focus-section { + color: var(--pp-focus); +} + +.reveal .learning-section { + color: var(--pp-learning); +} + +.reveal .neutral-section { + color: var(--pp-text); +} + +.section-subtitle { + max-width: 34ch; + margin-top: 0.8rem; + color: var(--pp-muted); + font-size: 0.78em; + font-weight: 600; + line-height: 1.25; +} + +.reveal p, +.reveal li { + max-width: 44ch; +} + +.slide-kicker { + margin: 0.2rem 0 1.1rem; + color: var(--pp-muted); + font-size: 0.72em; + font-weight: 600; +} + +.kicker-source { + color: var(--pp-dim); + font-size: 0.72em; + font-weight: 500; +} + +.kicker-source a { + color: var(--pp-muted); + text-decoration: underline; + text-decoration-color: rgba(65, 214, 195, 0.7); + text-underline-offset: 0.14em; +} + +.reveal table { + width: 100%; + border-collapse: collapse; + font-size: 0.68em; +} + +.reveal th { + color: var(--pp-text); + font-weight: 700; +} + +.reveal td, +.reveal th { + border-bottom: 1px solid var(--pp-line); + padding: 0.55rem 0.7rem; + vertical-align: top; +} + +.slide-intent, +.toc-only, +.diagram-slot, +.flow, +.problem, +.wound-card { + max-width: 980px; + border-left: 4px solid var(--pp-line); + padding: 0.8rem 1rem; + color: var(--pp-muted); + background: rgba(255, 255, 255, 0.04); +} + +.diagram-slot { + border-color: var(--pp-accent-2); +} + +.flow { + border-color: var(--pp-line); + color: var(--pp-text); + font-family: $codeFont; + font-size: 0.88em; +} + +.flow.learning-flow { + border-color: var(--pp-learning); + background: rgba(246, 197, 111, 0.055); +} + +.flow.focus-flow { + border-color: var(--pp-focus); + background: rgba(247, 67, 110, 0.055); +} + +.circle-stack { + display: grid; + grid-template-columns: repeat(3, minmax(0, 1fr)); + gap: 1.1rem; + margin-top: 1.4rem; +} + +.circle-item { + min-height: 250px; + border: 1px solid var(--pp-line); + border-top: 4px solid var(--pp-accent); + padding: 1.1rem; + background: rgba(255, 255, 255, 0.04); + color: var(--pp-muted); + font-size: 0.72em; +} + +.circle-item strong { + display: block; + margin-bottom: 1rem; + color: var(--pp-text); + font-size: 1.45em; +} + +.circle-item.why { + border-top-color: var(--pp-accent); +} + +.circle-item.how { + border-top-color: var(--pp-learning); +} + +.circle-item.what { + border-top-color: var(--pp-accent-2); +} + +.bpm-compare { + display: grid; + gap: 1.2rem; + margin-top: 1.4rem; + max-width: 1220px; +} + +.bpm-flow { + display: grid; + grid-template-columns: 220px 1fr; + min-height: 150px; + border: 1px solid rgba(255, 255, 255, 0.08); + border-radius: 14px; + overflow: hidden; + background: + linear-gradient(90deg, rgba(247, 67, 110, 0.22), rgba(247, 67, 110, 0.08) 26%, rgba(8, 26, 23, 0.72) 68%, rgba(8, 26, 23, 0.92)), + rgba(255, 255, 255, 0.03); +} + +.bpm-flow.accent { + border-color: rgba(247, 67, 110, 0.55); + background: + linear-gradient(90deg, rgba(247, 67, 110, 0.86), rgba(247, 67, 110, 0.44) 32%, rgba(102, 30, 46, 0.24) 58%, rgba(8, 26, 23, 0.92)), + rgba(247, 67, 110, 0.08); +} + +.bpm-flow.muted { + opacity: 0.74; +} + +.bpm-lane { + display: flex; + align-items: center; + border-right: 0; + padding: 1.15rem; + color: var(--pp-text); + font-size: 0.58em; + font-weight: 700; + line-height: 1.12; +} + +.bpm-steps { + display: grid; + grid-template-columns: 1fr 44px 1fr 44px 1fr; + align-items: center; + gap: 0.7rem; + padding: 1.15rem 1.25rem 1.15rem 0.4rem; +} + +.bpm-step { + min-height: 70px; + display: flex; + align-items: center; + justify-content: center; + border: 1px solid rgba(255, 255, 255, 0.72); + border-radius: 9px; + padding: 0.8rem; + color: var(--pp-text); + background: rgba(255, 255, 255, 0.055); + font-size: 0.66em; + font-weight: 650; + line-height: 1.12; + text-align: center; + backdrop-filter: blur(2px); +} + +.bpm-step.primary { + border-color: rgba(255, 255, 255, 0.9); + background: rgba(247, 67, 110, 0.15); + box-shadow: inset 0 0 0 1px rgba(247, 67, 110, 0.22); +} + +.bpm-step.weak { + color: var(--pp-muted); + border-color: rgba(255, 255, 255, 0.42); +} + +.bpm-arrow { + color: rgba(255, 255, 255, 0.88); + font-family: $codeFont; + font-size: 0.96em; + text-align: center; +} + +.wound-grid { + display: grid; + grid-template-columns: repeat(3, minmax(0, 1fr)); + gap: 1rem; + margin-top: 1.3rem; +} + +.wound-card { + min-height: 260px; + max-width: none; + border-left-color: var(--pp-line); + font-size: 0.68em; + line-height: 1.2; +} + +.wound-card strong { + display: block; + margin-bottom: 0.85rem; + color: var(--pp-text); + font-size: 1.18em; + line-height: 1.08; +} + +.wound-card.critical { + border-left-color: var(--pp-accent); + background: rgba(247, 67, 110, 0.07); +} + +.luhmann-wound { + display: grid; + gap: 1rem; + margin-top: 1.2rem; + max-width: 1240px; +} + +.luhmann-claim { + border-left: 4px solid var(--pp-accent); + padding: 0.8rem 1rem; + color: var(--pp-muted); + background: rgba(247, 67, 110, 0.06); + font-size: 0.62em; + line-height: 1.22; +} + +.luhmann-claim strong { + display: block; + margin-bottom: 0.25rem; + color: var(--pp-text); + font-size: 1.18em; +} + +.luhmann-path { + display: grid; + grid-template-columns: 1fr 36px 1fr 36px 1fr 36px 1fr; + align-items: center; + gap: 0.55rem; +} + +.luhmann-node { + min-height: 78px; + display: flex; + align-items: center; + justify-content: center; + border: 1px solid rgba(255, 255, 255, 0.42); + border-radius: 9px; + padding: 0.7rem; + color: var(--pp-text); + background: rgba(255, 255, 255, 0.045); + font-size: 0.58em; + font-weight: 700; + line-height: 1.12; + text-align: center; +} + +.luhmann-node.muted { + color: var(--pp-muted); + opacity: 0.78; +} + +.luhmann-node.critical { + border-color: rgba(247, 67, 110, 0.75); + background: rgba(247, 67, 110, 0.08); +} + +.luhmann-arrow { + color: var(--pp-accent); + font-family: $codeFont; + font-size: 0.84em; + text-align: center; +} + +.luhmann-points { + display: grid; + grid-template-columns: repeat(3, minmax(0, 1fr)); + gap: 0.8rem; +} + +.luhmann-points span { + border-top: 3px solid var(--pp-line); + padding-top: 0.6rem; + color: var(--pp-muted); + font-size: 0.48em; + line-height: 1.24; +} + +.luhmann-codes { + display: grid; + grid-template-columns: repeat(4, minmax(0, 1fr)); + gap: 0.85rem; + margin-top: 1.1rem; + max-width: 1240px; +} + +.code-card { + min-height: 190px; + border: 1px solid var(--pp-line); + border-top: 4px solid var(--pp-line); + padding: 0.85rem; + background: rgba(255, 255, 255, 0.04); +} + +.code-card.critical { + border-top-color: var(--pp-accent); + background: rgba(247, 67, 110, 0.07); +} + +.code-owner { + display: block; + margin-bottom: 0.55rem; + color: var(--pp-dim); + font-size: 0.42em; + font-weight: 700; + text-transform: uppercase; +} + +.code-card strong { + display: block; + margin-bottom: 0.75rem; + color: var(--pp-text); + font-size: 0.78em; +} + +.code-card p { + margin: 0; + color: var(--pp-muted); + font-size: 0.52em; + line-height: 1.2; +} + +.translation-wound { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 0.8rem; + margin-top: 1rem; + max-width: 1240px; +} + +.translation-row { + border-left: 4px solid var(--pp-line); + padding: 0.75rem 0.9rem; + background: rgba(255, 255, 255, 0.035); +} + +.translation-from { + display: block; + margin-bottom: 0.35rem; + color: var(--pp-dim); + font-size: 0.42em; + font-weight: 700; + text-transform: uppercase; +} + +.translation-row strong { + color: var(--pp-text); + font-size: 0.58em; + line-height: 1.14; +} + +.translation-result { + grid-column: 1 / -1; + border-left: 4px solid var(--pp-accent); + padding: 0.75rem 0.9rem; + color: var(--pp-text); + background: rgba(247, 67, 110, 0.07); + font-size: 0.62em; + font-weight: 750; +} + +.habermas-slide { + display: grid; + gap: 1rem; + margin-top: 1.1rem; + max-width: 1240px; +} + +.meeting-loop { + display: grid; + grid-template-columns: 1fr 30px 1fr 30px 1fr 30px 1fr 30px 1.08fr; + align-items: center; + gap: 0.55rem; +} + +.loop-step { + min-height: 74px; + display: flex; + align-items: center; + justify-content: center; + border: 1px solid rgba(255, 255, 255, 0.38); + border-radius: 9px; + padding: 0.7rem; + color: var(--pp-muted); + background: rgba(255, 255, 255, 0.035); + font-size: 0.56em; + font-weight: 700; + text-align: center; +} + +.loop-step.critical, .loop-step.low-reward { + border-color: rgba(247, 67, 110, 0.7); + color: var(--pp-text); + background: rgba(247, 67, 110, 0.08); +} + + +.loop-arrow { + color: var(--pp-accent); + font-family: $codeFont; + font-size: 0.8em; + text-align: center; +} + +.deliberation-model { + display: grid; + grid-template-columns: 1fr 34px 1fr 34px 1fr; + align-items: stretch; + gap: 0.65rem; +} + +.deliberation-block { + border-left: 4px solid var(--pp-line); + padding: 0.85rem; + background: rgba(255, 255, 255, 0.045); +} + +.deliberation-block.learning { + border-left-color: var(--pp-learning); + background: rgba(246, 197, 111, 0.07); +} + +.deliberation-block.learning span { + color: var(--pp-learning); +} + +.deliberation-block span { + display: block; + margin-bottom: 0.45rem; + color: var(--pp-dim); + font-size: 0.42em; + font-weight: 800; + text-transform: uppercase; +} + +.deliberation-block strong { + display: block; + margin-bottom: 0.55rem; + color: var(--pp-text); + font-size: 0.68em; +} + +.deliberation-block p { + margin: 0; + color: var(--pp-muted); + font-size: 0.48em; + line-height: 1.2; +} + +.deliberation-plus { + display: flex; + align-items: center; + justify-content: center; + color: var(--pp-muted); + font-size: 0.72em; + font-weight: 800; +} + +.deliberation-punchline { + border-left: 4px solid var(--pp-accent); + padding: 0.75rem 0.9rem; + color: var(--pp-text); + background: rgba(247, 67, 110, 0.07); + font-size: 0.62em; + font-weight: 750; + margin: 2rem; +} + +.architecture-wound { + display: grid; + grid-template-columns: repeat(3, minmax(0, 1fr)); + gap: 1rem; + margin-top: 1.3rem; + max-width: 1240px; +} + +.architecture-card { + min-height: 250px; + border-left: 4px solid var(--pp-line); + padding: 0.9rem 1rem; + color: var(--pp-muted); + background: rgba(255, 255, 255, 0.04); + font-size: 0.66em; + line-height: 1.2; +} + +.architecture-card strong { + display: block; + margin-bottom: 0.85rem; + color: var(--pp-text); + font-size: 1.16em; + line-height: 1.08; +} + +.architecture-card.critical { + border-left-color: var(--pp-accent); + background: rgba(247, 67, 110, 0.07); +} + +.architecture-punchline { + max-width: 1240px; + margin-top: 1rem; + border-left: 4px solid var(--pp-accent); + padding: 0.75rem 0.9rem; + color: var(--pp-text); + background: rgba(247, 67, 110, 0.07); + font-size: 0.62em; + font-weight: 750; +} + +.survival-slide { + display: grid; + gap: 1rem; + margin-top: 1.2rem; + max-width: 1240px; +} + +.survival-core { + border-left: 4px solid var(--pp-accent); + padding: 0.9rem 1rem; + background: rgba(247, 67, 110, 0.07); +} + +.survival-core strong { + display: block; + margin-bottom: 0.45rem; + color: var(--pp-text); + font-size: 0.8em; + line-height: 1.08; +} + +.survival-core span { + display: block; + max-width: 72ch; + color: var(--pp-muted); + font-size: 0.54em; + line-height: 1.22; +} + +.survival-anchors { + display: grid; + grid-template-columns: repeat(3, minmax(0, 1fr)); + gap: 0.75rem; +} + +.survival-anchors div { + min-height: 76px; + display: flex; + align-items: center; + border: 1px solid var(--pp-line); + border-left: 4px solid var(--pp-line); + padding: 0.65rem 0.75rem; + color: var(--pp-muted); + background: rgba(255, 255, 255, 0.035); + font-size: 0.5em; + font-weight: 650; + line-height: 1.16; +} + +.survival-punchline { + border-left: 4px solid var(--pp-accent); + padding: 0.75rem 0.9rem; + color: var(--pp-text); + background: rgba(247, 67, 110, 0.07); + font-size: 0.62em; + font-weight: 750; +} + +.outcome-map { + display: grid; + grid-template-columns: repeat(4, minmax(0, 1fr)); + gap: 0.85rem; + margin-top: 1.3rem; + max-width: 1240px; +} + +.outcome-card { + min-height: 250px; + border: 1px solid var(--pp-line); + border-top: 4px solid var(--pp-learning); + padding: 0.85rem; + color: var(--pp-muted); + background: rgba(246, 197, 111, 0.055); + font-size: 0.54em; + line-height: 1.22; +} + +.outcome-card span { + display: block; + margin-bottom: 0.65rem; + color: var(--pp-learning); + font-size: 0.84em; + font-weight: 800; + text-transform: uppercase; +} + +.outcome-card strong { + display: block; + margin-bottom: 0.75rem; + color: var(--pp-text); + font-size: 1.22em; + line-height: 1.08; +} + + +.outcome-card i { + font-style: italic!important; +} + +.mechanic-chain { + display: grid; + grid-template-columns: 1fr 34px 1fr 34px 1fr 34px 1fr 34px 1fr; + gap: 0.55rem; + align-items: center; + margin-top: 1.4rem; + max-width: 1240px; +} + +.mechanic-step { + min-height: 86px; + display: flex; + align-items: center; + justify-content: center; + border: 1px solid rgba(255, 255, 255, 0.42); + border-radius: 9px; + padding: 0.65rem; + color: var(--pp-text); + background: rgba(255, 255, 255, 0.045); + font-size: 0.56em; + font-weight: 750; + text-align: center; +} + +.mechanic-step.learning { + border-color: var(--pp-learning); + background: rgba(246, 197, 111, 0.09); +} + +.mechanic-arrow { + color: var(--pp-accent); + font-family: $codeFont; + font-size: 0.82em; + text-align: center; +} + +.mechanic-punchline, +.shared-reality-punchline { + max-width: 1240px; + margin-top: 1rem; + border-left: 4px solid var(--pp-accent); + padding: 0.75rem 0.9rem; + color: var(--pp-text); + background: rgba(247, 67, 110, 0.07); + font-size: 0.62em; + font-weight: 750; +} + +.shared-reality-punchline { + border-left-color: var(--pp-learning); + background: rgba(246, 197, 111, 0.07); +} + +.mechanic-type-grid { + display: grid; + grid-template-columns: repeat(3, minmax(0, 1fr)); + gap: 0.75rem; + margin-top: 1rem; + max-width: 940px; +} + +.mechanic-type-card { + min-height: 190px; + border: 1px solid var(--pp-line); + border-top: 4px solid var(--pp-learning); + padding: 0.75rem 0.85rem; + color: var(--pp-muted); + background: rgba(246, 197, 111, 0.045); + font-size: 0.48em; + line-height: 1.18; +} + +.mechanic-type-card span { + display: block; + margin-bottom: 0.65rem; + color: var(--pp-learning); + font-size: 0.82em; + font-weight: 800; + text-transform: uppercase; +} + +.mechanic-type-card i { + display: block; + margin-top: 0.48rem; + color: var(--pp-muted); + font-style: italic; + font-weight: 500; +} + +.mechanic-grid { + display: grid; + grid-template-columns: repeat(4, minmax(0, 1fr)); + gap: 0.85rem; + margin-top: 1.3rem; + max-width: 1240px; +} + +.mechanic-card { + min-height: 230px; + border-left: 4px solid var(--pp-learning); + padding: 0.85rem; + color: var(--pp-muted); + background: rgba(246, 197, 111, 0.055); + font-size: 0.52em; + line-height: 1.2; +} + + +.mechanic-card strong { + display: block; + margin-bottom: 0.75rem; + color: var(--pp-text); + font-size: 1.18em; + line-height: 1.08; +} + +.shared-reality-flow { + display: grid; + grid-template-columns: repeat(9, minmax(0, 1fr)); + gap: 0.45rem; + margin-top: 1.4rem; + max-width: 1240px; +} + +.shared-reality-flow div { + min-height: 84px; + display: flex; + align-items: center; + justify-content: center; + border: 1px solid rgba(255, 255, 255, 0.42); + border-radius: 9px; + padding: 0.55rem; + color: var(--pp-text); + background: rgba(255, 255, 255, 0.045); + font-size: 0.46em; + font-weight: 700; + text-align: center; +} + +.enterprise-bpm { + margin-top: 1.25rem; + max-width: 1320px; +} + +.enterprise-bpmn-img { + display: block; + width: 100%; + height: auto; + max-height: 475px; +} + +.culture-runtime { + display: grid; + grid-template-rows: repeat(2, minmax(0, 1fr)); + gap: 0.65rem; + margin-top: 0.62rem; + max-width: 1280px; +} + +.culture-bpmn-block { + display: grid; + grid-template-columns: 250px minmax(0, 1fr); + align-items: center; + gap: 0.65rem; + min-height: 215px; + border: 1px solid var(--pp-line); + border-left: 4px solid var(--pp-focus); + padding: 0.7rem 0.8rem; + background: rgba(247, 67, 110, 0.045); +} + +.culture-bpmn-heading { + padding-left: 0; +} + +.culture-bpmn-block.write-only .culture-bpmn-heading { + border-left: 0; +} + +.culture-bpmn-block.runtime { + border-left-color: var(--pp-learning); + background: rgba(246, 197, 111, 0.055); +} + +.culture-bpmn-heading span, +.culture-example span, +.culture-punchline span { + display: block; + margin-bottom: 0.24rem; + color: var(--pp-dim); + font-size: 0.72em; + font-weight: 850; + text-transform: uppercase; +} + +.culture-bpmn-block.write-only .culture-bpmn-heading span, +.culture-example span { + color: var(--pp-focus); +} + +.culture-bpmn-block.runtime .culture-bpmn-heading span, +.culture-punchline span { + color: var(--pp-learning); +} + +.culture-bpmn-heading strong, +.culture-example strong { + display: block; + color: var(--pp-text); + font-size: 0.48em; + line-height: 1.12; +} + +.culture-bpmn-block img { + display: block; + width: 100%; + max-height: 145px; + margin: 0; +} + +.culture-examples { + display: grid; + grid-template-columns: repeat(2, minmax(0, 1fr)); + gap: 0.85rem; + margin-top: 1.4rem; +} + +.culture-example { + min-height: 290px; + border: 1px solid var(--pp-line); + border-top: 3px solid rgba(247, 67, 110, 0.78); + border-radius: 8px; + padding: 1rem 1.1rem; + color: var(--pp-muted); + background: rgba(255, 255, 255, 0.035); + font-size: 0.58em; + line-height: 1.22; +} + +.culture-punchline { + max-width: none; + margin-top: 1rem; + border-left: 4px solid var(--pp-learning); + padding: 0.7rem 0.9rem; + color: var(--pp-text); + background: rgba(246, 197, 111, 0.07); + font-size: 0.58em; + font-weight: 760; +} + +.culture-punchline span { + margin-bottom: 0.12rem; + font-size: 0.68em; +} + +.noesis-levels { + display: grid; + grid-template-columns: repeat(2, minmax(0, 1fr)); + gap: 0.85rem; + margin-top: 1.15rem; + max-width: 1280px; +} + +.noesis-level { + display: flex; + flex-direction: column; + min-height: 390px; + border: 1px solid var(--pp-line); + border-top: 4px solid rgba(255, 255, 255, 0.35); + padding: 0.9rem 1rem; + color: var(--pp-muted); + background: rgba(255, 255, 255, 0.035); + font-size: 0.49em; + line-height: 1.2; +} + +.noesis-level.enterprise { + border-top-color: var(--pp-learning); + background: rgba(246, 197, 111, 0.055); +} + +.noesis-level > span { + display: block; + margin-bottom: 0.45rem; + color: var(--pp-dim); + font-size: 0.78em; + font-weight: 850; + text-transform: uppercase; +} + +.noesis-level.enterprise > span { + color: var(--pp-learning); +} + +.noesis-level strong { + display: block; + margin-bottom: 0.65rem; + color: var(--pp-text); + font-size: 1.45em; + line-height: 1.08; +} + +.noesis-level ul { + margin: 0; + padding-left: 1.05rem; +} + +.noesis-level li { + margin-bottom: 0.45rem; +} + +.noesis-oss-note { + margin-top: 0.45rem; + color: var(--pp-learning); + font-size: 0.88em; + font-weight: 800; +} + +.noesis-stack { + margin-top: auto; + border-top: 1px solid var(--pp-line); + padding-top: 0.65rem; + color: var(--pp-text); + font-family: $codeFont; + font-size: 0.92em; + font-weight: 700; +} + +.noesis-level.enterprise .noesis-stack { + border-top-color: rgba(246, 197, 111, 0.45); + color: var(--pp-learning); +} + +.noesis-governance { + max-width: 1280px; + margin-top: 0.8rem; + border-left: 4px solid var(--pp-learning); + padding: 0.62rem 0.85rem; + color: var(--pp-text); + background: rgba(246, 197, 111, 0.07); + font-size: 0.54em; + font-weight: 760; +} + +.cockpit-map { + display: grid; + grid-template-columns: 0.9fr 1.35fr; + grid-template-rows: 1fr 0.82fr; + gap: 0.75rem; + margin-top: 1rem; + max-width: 1300px; +} + +.cockpit-panel { + min-height: 180px; + border: 1px solid var(--pp-line); + border-radius: 8px; + padding: 0.72rem 0.82rem; + color: var(--pp-muted); + background: rgba(255, 255, 255, 0.035); + font-size: 0.43em; + line-height: 1.14; +} + +.cockpit-panel > span { + display: block; + margin-bottom: 0.38rem; + color: var(--pp-dim); + font-size: 0.78em; + font-weight: 850; + text-transform: uppercase; +} + +.cockpit-panel > strong { + display: block; + margin-bottom: 0.65rem; + color: var(--pp-text); + font-size: 1.08em; + line-height: 1.08; +} + +.cockpit-panel.health, +.cockpit-panel.signals { + border-top: 3px solid var(--pp-learning); + background: rgba(246, 197, 111, 0.045); +} + +.cockpit-panel.health > span, +.cockpit-panel.signals > span { + color: var(--pp-learning); +} + +.cockpit-panel.strategies, +.cockpit-panel.detail { + border-top: 3px solid var(--pp-focus); + background: rgba(247, 67, 110, 0.04); +} + +.cockpit-panel.strategies > span, +.cockpit-panel.detail > span { + color: var(--pp-focus); +} + +.cockpit-health-score { + display: grid; + grid-template-columns: 92px 1fr; + align-items: center; + gap: 0.7rem; +} + +.cockpit-health-score > b { + display: flex; + align-items: center; + justify-content: center; + width: 82px; + aspect-ratio: 1; + border: 8px solid var(--pp-focus); + border-radius: 50%; + color: var(--pp-text); + background: rgba(8, 26, 23, 0.7); + font-size: 2.2em; +} + +.cockpit-health-score div { + color: var(--pp-muted); + line-height: 1.5; +} + +.cockpit-health-score strong { + color: var(--pp-text); +} + +.cockpit-quadrants, +.cockpit-strategy-list, +.cockpit-detail-list { + display: grid; + gap: 0.42rem; +} + +.cockpit-quadrants > p, +.cockpit-strategy-list > p, +.cockpit-detail-list > p { + display: grid; + grid-column: 1 / -1; + width: 100%; + gap: 0.42rem; + margin: 0; +} + +.cockpit-quadrants { + grid-template-columns: repeat(2, minmax(0, 1fr)); +} + +.cockpit-quadrants > p { + grid-template-columns: repeat(2, minmax(0, 1fr)); +} + +.cockpit-quadrants i, +.cockpit-strategy-list i, +.cockpit-detail-list i { + display: flex; + align-items: center; + min-width: 0; + min-height: 42px; + border: 1px solid var(--pp-line); + border-radius: 6px; + padding: 0.42rem 0.52rem; + color: var(--pp-muted); + background: rgba(8, 26, 23, 0.48); + font-style: normal; + font-weight: 700; + overflow-wrap: anywhere; +} + +.cockpit-quadrants i::before { + content: ""; + width: 7px; + aspect-ratio: 1; + margin-right: 0.38rem; + border-radius: 50%; + background: var(--pp-learning); +} + +.cockpit-strategy-list { + grid-template-columns: repeat(3, minmax(0, 1fr)); +} + +.cockpit-strategy-list > p { + grid-template-columns: repeat(3, minmax(0, 1fr)); +} + +.cockpit-strategy-list i { + border-color: rgba(247, 67, 110, 0.4); +} + +.cockpit-detail-list { + grid-template-columns: repeat(2, minmax(0, 1fr)); +} + +.cockpit-detail-list > p { + grid-template-columns: repeat(2, minmax(0, 1fr)); +} + +.cockpit-punchline { + max-width: 1180px; + margin-top: 0.8rem; + border-left: 4px solid var(--pp-focus); + padding: 0.65rem 0.85rem; + color: var(--pp-text); + background: rgba(247, 67, 110, 0.065); + font-size: 0.56em; + font-weight: 760; +} + +.cockpit-demo-frame { + width: 100%; + height: 710px; + margin-top: 0.7rem; + overflow: hidden; + border: 1px solid rgba(246, 197, 111, 0.42); + border-radius: 8px; + background: var(--pp-bg); + box-shadow: 0 18px 55px rgba(0, 0, 0, 0.32); +} + +.cockpit-demo-frame iframe { + display: block; + width: 100%; + height: 100%; + border: 0; + background: var(--pp-bg); +} + +.cockpit-demo-slide .footer, +.cockpit-demo-slide .slide-number { + opacity: 0.32; +} + +.kpi-backbone { + display: grid; + grid-template-columns: minmax(0, 1.7fr) minmax(320px, 0.72fr); + gap: 0.85rem; + max-width: 1320px; + margin-top: 0.8rem; +} + +.kpi-tree { + display: flex; + flex-direction: column; + align-items: center; + min-width: 0; + border: 1px solid rgba(246, 197, 111, 0.34); + border-radius: 8px; + padding: 0.62rem; + background: rgba(246, 197, 111, 0.035); +} + +.kpi-level-row { + display: grid; + width: 100%; + gap: 0.48rem; +} + +.kpi-level-row.business { + grid-template-columns: repeat(2, minmax(0, 1fr)); +} + +.kpi-level-row.signals { + grid-template-columns: repeat(3, minmax(0, 1fr)); +} + +.kpi-level { + min-width: 0; + border: 1px solid var(--pp-line); + border-radius: 7px; + padding: 0.5rem 0.58rem; + color: var(--pp-muted); + background: rgba(8, 26, 23, 0.7); + font-size: 0.37em; +} + +.kpi-level.outcome { + width: min(540px, 72%); + border-color: rgba(246, 197, 111, 0.7); + text-align: center; + background: rgba(246, 197, 111, 0.09); +} + +.kpi-level.experiment { + border-color: rgba(247, 67, 110, 0.72); + background: rgba(247, 67, 110, 0.07); +} + +.kpi-level span { + display: block; + margin-bottom: 0.2rem; + color: var(--pp-learning); + font-size: 0.78em; + font-weight: 850; + text-transform: uppercase; +} + +.kpi-level.experiment span { + color: var(--pp-focus); +} + +.kpi-level strong, +.kpi-level small { + display: block; +} + +.kpi-level strong { + color: var(--pp-text); + font-size: 1.12em; + line-height: 1.08; +} + +.kpi-level small { + margin-top: 0.25rem; + color: var(--pp-dim); + line-height: 1.15; +} + +.kpi-connector { + height: 25px; + color: var(--pp-learning); + font-size: 0.58em; + font-weight: 850; + line-height: 25px; +} + +.cfo-model { + display: flex; + flex-direction: column; + min-width: 0; + border: 1px solid rgba(246, 197, 111, 0.42); + border-top: 4px solid var(--pp-learning); + border-radius: 8px; + padding: 0.68rem; + background: rgba(246, 197, 111, 0.055); +} + +.cfo-model > span, +.feedback-source span, +.feedback-gate span, +.feedback-core span, +.feedback-surface span, +.external-provider > span, +.external-contract > span, +.external-destination > span, +.synesis-input > span, +.synesis-core > span, +.synesis-output > span { + display: block; + color: var(--pp-learning); + font-size: 0.31em; + font-weight: 850; + text-transform: uppercase; +} + +.cfo-model > strong { + margin: 0.35rem 0 0.58rem; + color: var(--pp-text); + font-size: 0.52em; + line-height: 1.12; +} + +.cfo-questions { + display: grid; + gap: 0.38rem; +} + +.cfo-questions > p { + display: contents; +} + +.cfo-questions i { + border-left: 2px solid rgba(246, 197, 111, 0.55); + padding: 0.28rem 0.4rem; + color: var(--pp-muted); + background: rgba(8, 26, 23, 0.48); + font-size: 0.33em; + font-style: normal; + line-height: 1.15; +} + +.cfo-decision { + margin-top: auto; + border-top: 1px solid rgba(246, 197, 111, 0.35); + padding-top: 0.55rem; + color: var(--pp-learning); + font-size: 0.36em; + font-weight: 850; + text-align: center; +} + +.kpi-punchline, +.feedback-punchline { + max-width: 1320px; + margin-top: 0.62rem; + border-left: 4px solid var(--pp-learning); + padding: 0.55rem 0.72rem; + color: var(--pp-text); + background: rgba(246, 197, 111, 0.065); + font-size: 0.5em; + font-weight: 780; +} + +.reality-feedback { + display: grid; + grid-template-columns: minmax(0, 1.2fr) 34px minmax(0, 0.8fr) 34px minmax(0, 0.68fr) 34px minmax(0, 0.9fr); + align-items: stretch; + gap: 0.3rem; + max-width: 1340px; + margin-top: 0.95rem; +} + +.feedback-inputs { + display: grid; + gap: 0.35rem; +} + +.feedback-source, +.feedback-gate, +.feedback-core, +.feedback-surface { + min-width: 0; + border: 1px solid var(--pp-line); + border-radius: 7px; + padding: 0.5rem; + background: rgba(255, 255, 255, 0.035); +} + +.feedback-source strong, +.feedback-gate strong, +.feedback-core strong, +.feedback-surface strong, +.feedback-gate small, +.feedback-core small, +.feedback-surface small { + display: block; +} + +.feedback-source strong, +.feedback-gate strong, +.feedback-core strong, +.feedback-surface strong { + margin-top: 0.22rem; + color: var(--pp-text); + font-size: 0.37em; + line-height: 1.12; +} + +.feedback-gate, +.feedback-core { + border-color: rgba(246, 197, 111, 0.5); + background: rgba(246, 197, 111, 0.055); +} + +.feedback-core { + display: flex; + flex-direction: column; + justify-content: center; + border-width: 2px; + text-align: center; +} + +.feedback-core strong { + color: var(--pp-learning); + font-size: 0.58em; +} + +.feedback-surface { + border-color: rgba(247, 67, 110, 0.5); + background: rgba(247, 67, 110, 0.05); +} + +.feedback-surface span { + color: var(--pp-focus); +} + +.feedback-gate small, +.feedback-core small, +.feedback-surface small { + margin-top: 0.35rem; + color: var(--pp-dim); + font-size: 0.29em; + line-height: 1.16; +} + +.feedback-arrow, +.external-arrow, +.synesis-arrow { + display: flex; + align-items: center; + justify-content: center; + color: var(--pp-focus); + font-size: 0.62em; + font-weight: 850; +} + +.feedback-return { + display: grid; + grid-template-columns: auto 30px auto 30px auto 30px auto; + align-items: center; + gap: 0.3rem; + max-width: 1000px; + margin: 0.68rem auto 0; + border: 1px solid rgba(246, 197, 111, 0.42); + border-radius: 7px; + padding: 0.48rem 0.65rem; + color: var(--pp-muted); + background: rgba(246, 197, 111, 0.04); + font-size: 0.36em; + text-align: center; +} + +.feedback-return b { + color: var(--pp-learning); +} + +.feedback-return strong { + color: var(--pp-learning); +} + +.catalog-model { + display: grid; + grid-template-columns: minmax(0, 0.95fr) 70px minmax(0, 1.15fr); + align-items: center; + gap: 0.7rem; + max-width: 1320px; + margin-top: 1rem; +} + +.catalog-fragments { + display: grid; + grid-template-columns: repeat(2, minmax(0, 1fr)); + gap: 0.55rem; +} + +.catalog-fragment, +.catalog-contract { + border: 1px solid var(--pp-line); + border-radius: 8px; + background: rgba(255, 255, 255, 0.035); +} + +.catalog-fragment { + min-height: 115px; + padding: 0.65rem; +} + +.catalog-fragment > p, +.catalog-trace-node > p, +.catalog-branch-head p, +.catalog-feature-head > p, +.catalog-punchline > p { + margin: 0; +} + +.catalog-fragment span, +.catalog-contract > span, +.catalog-trace-node span, +.catalog-branch-head span, +.catalog-feature-head span { + display: block; + margin-bottom: 0.3rem; + color: var(--pp-dim); + font-size: 0.38em; + font-weight: 850; + text-transform: uppercase; +} + +.catalog-fragment strong { + display: block; + color: var(--pp-text); + font-size: 0.52em; + line-height: 1.08; +} + +.catalog-fragment small { + display: block; + margin-top: 0.45rem; + color: var(--pp-muted); + font-size: 0.38em; +} + +.catalog-convergence { + color: var(--pp-focus); + font-size: 1.5em; + font-weight: 800; + text-align: center; +} + +.catalog-contract { + min-height: 285px; + border-color: rgba(246, 197, 111, 0.5); + border-top: 4px solid var(--pp-learning); + padding: 0.85rem; + background: rgba(246, 197, 111, 0.055); +} + +.catalog-contract > span { + color: var(--pp-learning); +} + +.catalog-contract > strong { + display: block; + color: var(--pp-text); + font-size: 0.72em; + line-height: 1.08; +} + +.catalog-contract > p { + margin: 0.55rem 0 0; + color: var(--pp-muted); + font-size: 0.45em; + line-height: 1.22; +} + +.catalog-contract-properties { + display: grid; + grid-template-columns: repeat(2, minmax(0, 1fr)); + gap: 0.42rem; + margin-top: 0.7rem; +} + +.catalog-contract-properties > p { + display: contents; +} + +.catalog-contract-properties i { + min-width: 0; + border: 1px solid rgba(246, 197, 111, 0.28); + border-radius: 6px; + padding: 0.45rem; + color: var(--pp-muted); + background: rgba(8, 26, 23, 0.52); + font-size: 0.38em; + font-style: normal; + font-weight: 700; +} + +.catalog-punchline { + max-width: 1180px; + margin-top: 0.8rem; + border-left: 4px solid var(--pp-learning); + padding: 0.62rem 0.85rem; + color: var(--pp-text); + background: rgba(246, 197, 111, 0.065); + font-size: 0.54em; + font-weight: 760; +} + +.source-note { + max-width: 1180px; + margin-top: 0.55rem !important; + color: var(--pp-dim); + font-size: 0.34em; + line-height: 1.2; +} + +.catalog-trace { + max-width: 1320px; + margin-top: 0.9rem; +} + +.catalog-trace-context { + display: grid; + grid-template-columns: 1fr 45px 1.15fr 45px 1fr; + align-items: center; + gap: 0.3rem; +} + +.catalog-trace-node { + min-height: 88px; + border: 1px solid var(--pp-line); + border-radius: 8px; + padding: 0.58rem 0.66rem; + background: rgba(255, 255, 255, 0.035); +} + +.catalog-trace-node.focus, +.catalog-trace-node.experiment { + border-color: rgba(247, 67, 110, 0.46); + background: rgba(247, 67, 110, 0.045); +} + +.catalog-trace-node.focus span, +.catalog-trace-node.experiment span { + color: var(--pp-focus); +} + +.catalog-trace-node strong { + display: block; + color: var(--pp-text); + font-size: 0.46em; + line-height: 1.12; +} + +.catalog-trace-arrow { + color: var(--pp-focus); + font-size: 0.8em; + font-weight: 850; + text-align: center; +} + +.catalog-branch { + position: relative; + margin-top: 0.65rem; + border: 1px solid rgba(246, 197, 111, 0.42); + border-radius: 8px; + padding: 0.7rem; + background: rgba(246, 197, 111, 0.035); +} + +.catalog-branch::before { + content: ""; + position: absolute; + top: -0.68rem; + left: 50%; + width: 1px; + height: 0.68rem; + background: var(--pp-focus); +} + +.catalog-branch-head { + display: flex; + align-items: flex-end; + justify-content: space-between; + gap: 1rem; + border-bottom: 1px solid var(--pp-line); + padding-bottom: 0.52rem; +} + +.catalog-branch-head strong { + color: var(--pp-text); + font-family: var(--r-code-font); + font-size: 0.44em; +} + +.catalog-branch-head b { + flex: 0 0 auto; + color: var(--pp-success); + font-size: 0.46em; +} + +.catalog-feature { + display: grid; + grid-template-columns: 0.8fr 1fr 1fr; + gap: 0.55rem; + margin-top: 0.6rem; +} + +.catalog-feature-head, +.catalog-scenario { + min-width: 0; + border: 1px solid var(--pp-line); + border-radius: 6px; + padding: 0.55rem; + background: rgba(8, 26, 23, 0.55); +} + +.catalog-feature-head strong { + display: block; + color: var(--pp-text); + font-size: 0.48em; + line-height: 1.14; +} + +.catalog-scenario { + display: grid; + gap: 0.3rem; +} + +.catalog-scenario > p { + display: grid; + gap: 0.3rem; + margin: 0; +} + +.catalog-scenario > span { + color: var(--pp-text); + font-size: 0.4em; + font-weight: 800; +} + +.catalog-scenario > p > span { + color: var(--pp-text); + font-size: 0.4em; + font-weight: 800; +} + +.catalog-scenario i, +.catalog-status-legend i { + position: relative; + padding-left: 1.05rem; + color: var(--pp-muted); + font-size: 0.34em; + font-style: normal; + font-weight: 680; +} + +.catalog-scenario i::before, +.catalog-status-legend i::before { + content: ""; + position: absolute; + top: 50%; + left: 0; + width: 0.58rem; + aspect-ratio: 1; + border: 2px solid var(--pp-dim); + border-radius: 50%; + transform: translateY(-50%); +} + +.catalog-scenario i.green::before, +.catalog-status-legend i.green::before { + border-color: var(--pp-success); + background: var(--pp-success); +} + +.catalog-scenario i.green, +.catalog-status-legend i.green { + color: var(--pp-success); +} + +.catalog-scenario i.failed::before, +.catalog-status-legend i.failed::before { + border-color: var(--pp-focus); + background: var(--pp-focus); +} + +.catalog-scenario i.open::before, +.catalog-status-legend i.open::before { + border-color: var(--pp-dim); + background: transparent; +} + +.catalog-status-legend { + display: flex; + align-items: center; + gap: 1rem; + max-width: 1320px; + margin-top: 0.65rem; + border-top: 1px solid var(--pp-line); + padding-top: 0.55rem; +} + +.catalog-status-legend > p { + display: contents; +} + +.catalog-status-legend strong { + margin-left: auto; + color: var(--pp-success); + font-size: 0.42em; +} + +.catalog-progress-shift { + display: grid; + grid-template-columns: 1fr 45px 1fr; + align-items: stretch; + gap: 0.42rem; + max-width: 1320px; + margin-top: 0.5rem; +} + +.catalog-progress-shift > div { + min-width: 0; + border: 1px solid var(--pp-line); + border-radius: 7px; + padding: 0.48rem 0.62rem; + background: rgba(255, 255, 255, 0.03); +} + +.catalog-progress-shift > div > span { + display: block; + margin-bottom: 0.22rem; + color: var(--pp-dim); + font-size: 0.3em; + font-weight: 850; + text-transform: uppercase; +} + +.catalog-progress-shift > div > strong { + display: block; + color: var(--pp-text); + font-size: 0.46em; +} + +.catalog-progress-shift > div > small { + display: block; + margin-top: 0.22rem; + color: var(--pp-muted); + font-size: 0.31em; + line-height: 1.14; +} + +.catalog-progress-shift > .estimated { + border-left: 3px solid var(--pp-focus); +} + +.catalog-progress-shift > .estimated > strong { + color: var(--pp-focus); +} + +.catalog-progress-shift > .verified { + border-left: 3px solid var(--pp-success); + background: rgba(77, 222, 155, 0.035); +} + +.catalog-progress-shift > .verified > strong { + color: var(--pp-success); +} + +.catalog-progress-shift > b { + display: flex; + align-items: center; + justify-content: center; + color: var(--pp-focus); + font-size: 0.62em; +} + +.composer-flow { + display: grid; + grid-template-columns: minmax(0, 1fr) 45px minmax(0, 1fr) 45px minmax(0, 1fr); + align-items: stretch; + gap: 0.38rem; + max-width: 1320px; + margin-top: 0.85rem; +} + +.composer-stage { + display: flex; + flex-direction: column; + min-width: 0; + min-height: 300px; + border: 1px solid var(--pp-line); + border-radius: 8px; + padding: 0.68rem; + background: rgba(255, 255, 255, 0.035); +} + +.composer-stage > span { + display: block; + margin-bottom: 0.38rem; + color: var(--pp-dim); + font-size: 0.34em; + font-weight: 850; + text-transform: uppercase; +} + +.composer-stage > strong { + display: block; + color: var(--pp-text); + font-size: 0.56em; + line-height: 1.08; +} + +.composer-stage > p { + margin: 0.55rem 0 0; + color: var(--pp-muted); + font-size: 0.37em; + line-height: 1.2; +} + +.composer-stage > em { + display: block; + margin-top: auto; + border-top: 1px solid var(--pp-line); + padding-top: 0.45rem; + color: var(--pp-dim); + font-size: 0.34em; + font-style: italic; + font-weight: 700; +} + +.composer-marker { + display: grid; + gap: 0.2rem; + margin: 0.55rem 0 0; + border: 1px solid var(--pp-line); + border-radius: 6px; + padding: 0.5rem; + background: rgba(8, 26, 23, 0.7); +} + +.composer-marker code { + display: block; + padding: 0; + color: var(--pp-text); + background: transparent; + font-size: 0.35em; + line-height: 1.3; + white-space: pre; +} + +.composer-stage > p:last-child { + margin-top: auto; + border-top: 1px solid var(--pp-line); + padding-top: 0.45rem; +} + +.composer-stage > p:last-child > em { + color: var(--pp-dim); + font-size: 0.9em; + font-style: italic; + font-weight: 700; +} + +.composer-stage.experiment > p:last-child > em { + color: var(--pp-focus); +} + +.composer-stage.evidence > p:last-child > em { + color: var(--pp-learning); +} + +.composer-stage.experiment { + border-color: rgba(247, 67, 110, 0.48); + border-top: 4px solid var(--pp-focus); + background: rgba(247, 67, 110, 0.045); +} + +.composer-stage.experiment > span, +.composer-stage.experiment > em { + color: var(--pp-focus); +} + +.composer-stage.evidence { + border-color: rgba(246, 197, 111, 0.48); + border-top: 4px solid var(--pp-learning); + background: rgba(246, 197, 111, 0.045); +} + +.composer-stage.evidence > span, +.composer-stage.evidence > em { + color: var(--pp-learning); +} + +.composer-arrow { + display: flex; + align-items: center; + justify-content: center; + color: var(--pp-focus); + font-size: 0.85em; + font-weight: 850; +} + +.composer-variants, +.composer-signals { + display: grid; + gap: 0.38rem; + margin-top: 0.58rem; +} + +.composer-variants { + grid-template-columns: repeat(2, minmax(0, 1fr)); +} + +.composer-signals { + grid-template-columns: repeat(2, minmax(0, 1fr)); +} + +.composer-variants > p, +.composer-signals > p { + display: contents; +} + +.composer-variants i, +.composer-signals i { + min-width: 0; + border: 1px solid var(--pp-line); + border-radius: 6px; + padding: 0.45rem; + color: var(--pp-muted); + background: rgba(8, 26, 23, 0.54); + font-size: 0.34em; + font-style: normal; + font-weight: 700; + line-height: 1.15; +} + +.composer-variants i b { + display: block; + margin-bottom: 0.28rem; + color: var(--pp-focus); + font-size: 0.9em; + text-transform: uppercase; +} + +.composer-zero-one { + display: grid; + grid-template-columns: 1fr auto 1.05fr auto 0.9fr auto 1.6fr; + align-items: center; + gap: 0.42rem; + max-width: 1320px; + margin-top: 0.65rem; + border: 1px solid rgba(246, 197, 111, 0.35); + border-radius: 8px; + padding: 0.58rem 0.7rem; + background: rgba(246, 197, 111, 0.045); +} + +.composer-zero-one > p { + display: contents; +} + +.composer-zero-one span { + color: var(--pp-muted); + font-size: 0.36em; + font-weight: 700; +} + +.composer-zero-one b { + color: var(--pp-focus); + font-size: 0.5em; +} + +.composer-zero-one strong { + color: var(--pp-learning); + font-size: 0.4em; + line-height: 1.15; +} + +.storybook-system { + display: grid; + grid-template-columns: 0.9fr 1.25fr 0.95fr; + gap: 0.65rem; + max-width: 1320px; + margin-top: 0.8rem; +} + +.storybook-inputs, +.storybook-core, +.storybook-gates { + min-width: 0; + min-height: 330px; + border: 1px solid var(--pp-line); + border-radius: 8px; + padding: 0.68rem; + background: rgba(255, 255, 255, 0.035); +} + +.storybook-inputs > span, +.storybook-core > span, +.storybook-gates > span { + display: block; + margin-bottom: 0.48rem; + color: var(--pp-dim); + font-size: 0.34em; + font-weight: 850; + text-transform: uppercase; +} + +.storybook-input-grid, +.storybook-gate-list { + display: grid; + gap: 0.42rem; +} + +.storybook-input-grid > p, +.storybook-gate-list > p { + display: contents; +} + +.storybook-input-grid i, +.storybook-gate-list i { + min-width: 0; + border: 1px solid var(--pp-line); + border-radius: 6px; + padding: 0.48rem; + color: var(--pp-muted); + background: rgba(8, 26, 23, 0.52); + font-size: 0.34em; + font-style: normal; + font-weight: 680; + line-height: 1.15; +} + +.storybook-input-grid i b, +.storybook-gate-list i b { + display: block; + margin-bottom: 0.25rem; + color: var(--pp-text); + font-size: 0.92em; + text-transform: uppercase; +} + +.storybook-core { + border-color: rgba(246, 197, 111, 0.46); + border-top: 4px solid var(--pp-learning); + background: rgba(246, 197, 111, 0.045); +} + +.storybook-core > span { + color: var(--pp-learning); +} + +.storybook-core > strong { + display: block; + color: var(--pp-text); + font-size: 0.52em; + line-height: 1.08; +} + +.storybook-core > p { + margin: 0.5rem 0 0; + color: var(--pp-muted); + font-size: 0.35em; + line-height: 1.18; +} + +.storybook-preview { + margin-top: 0.55rem; + overflow: hidden; + border: 1px solid rgba(246, 197, 111, 0.32); + border-radius: 6px; + background: #0b1f1b; +} + +.storybook-browser { + display: flex; + gap: 0.25rem; + border-bottom: 1px solid var(--pp-line); + padding: 0.34rem 0.42rem; + background: rgba(255, 255, 255, 0.04); +} + +.storybook-browser i { + width: 7px; + aspect-ratio: 1; + border-radius: 50%; + background: var(--pp-dim); +} + +.storybook-browser i:first-child { + background: var(--pp-focus); +} + +.storybook-ui { + display: grid; + align-content: center; + min-height: 120px; + padding: 0.7rem; +} + +.storybook-ui b { + color: var(--pp-text); + font-size: 0.45em; +} + +.storybook-ui small { + margin-top: 0.25rem; + color: var(--pp-muted); + font-size: 0.32em; +} + +.storybook-ui button { + width: max-content; + margin-top: 0.55rem; + border: 1px solid var(--pp-focus); + border-radius: 5px; + padding: 0.35rem 0.55rem; + color: var(--pp-text); + background: rgba(247, 67, 110, 0.14); + font-family: inherit; + font-size: 0.32em; + font-weight: 750; +} + +.storybook-gates { + border-color: rgba(77, 222, 155, 0.34); +} + +.storybook-gate-list i { + position: relative; + padding-left: 1.45rem; +} + +.storybook-gate-list i::before { + content: ""; + position: absolute; + top: 50%; + left: 0.48rem; + width: 0.55rem; + aspect-ratio: 1; + border: 2px solid var(--pp-success); + border-radius: 50%; + background: var(--pp-success); + transform: translateY(-50%); +} + +.storybook-gate-list i.experiment::before { + border-color: var(--pp-focus); + background: var(--pp-focus); +} + +.storybook-publication { + display: grid; + grid-template-columns: 1.25fr 0.75fr; + align-items: center; + gap: 0.65rem; + max-width: 1320px; + margin-top: 0.6rem; + border: 1px solid rgba(246, 197, 111, 0.36); + border-radius: 8px; + padding: 0.52rem 0.65rem; + background: rgba(246, 197, 111, 0.04); +} + +.storybook-publication > div { + display: flex; + align-items: center; + gap: 0.45rem; +} + +.storybook-publication span { + color: var(--pp-muted); + font-size: 0.34em; + font-weight: 700; +} + +.storybook-publication b { + color: var(--pp-focus); + font-size: 0.44em; +} + +.storybook-publication strong { + color: var(--pp-learning); + font-size: 0.36em; +} + +.storybook-publication > p { + margin: 0; + border-left: 1px solid var(--pp-line); + padding-left: 0.65rem; +} + +.storybook-publication em { + display: block; + margin: 0; + padding: 0; + color: var(--pp-dim); + font-size: 0.31em; + font-style: italic; + line-height: 1.25; +} + +.storybook-publication em b { + display: block; + margin-bottom: 0.2rem; + color: var(--pp-muted); + font-size: 0.92em; + font-style: normal; + text-transform: uppercase; +} + +.storybook-publication > em { + border-left: 1px solid var(--pp-line); + padding-left: 0.65rem; +} + +.storybook-punchline { + max-width: 1180px; + margin-top: 0.55rem; + border-left: 4px solid var(--pp-learning); + padding: 0.55rem 0.75rem; + color: var(--pp-text); + background: rgba(246, 197, 111, 0.06); + font-size: 0.45em; + font-weight: 760; +} + +.storybook-punchline > p { + margin: 0; +} + +.entry-mandate { + display: grid; + grid-template-columns: 1fr 0.72fr 1fr; + gap: 0.65rem; + max-width: 1320px; + margin-top: 0.9rem; +} + +.entry-side, +.entry-bridge { + min-width: 0; + min-height: 285px; + border: 1px solid var(--pp-line); + border-radius: 8px; + padding: 0.72rem; + background: rgba(255, 255, 255, 0.035); +} + +.entry-side > span, +.entry-foundation span { + display: block; + margin-bottom: 0.35rem; + color: var(--pp-dim); + font-size: 0.34em; + font-weight: 850; + text-transform: uppercase; +} + +.entry-side > strong, +.entry-foundation strong { + display: block; + color: var(--pp-text); + font-size: 0.58em; + line-height: 1.08; +} + +.entry-side.executive { + border-top: 4px solid var(--pp-focus); + background: rgba(247, 67, 110, 0.04); +} + +.entry-side.executive > span { + color: var(--pp-focus); +} + +.entry-side.reality { + border-top: 4px solid var(--pp-learning); + background: rgba(246, 197, 111, 0.04); +} + +.entry-side.reality > span { + color: var(--pp-learning); +} + +.entry-list { + display: grid; + gap: 0.38rem; + margin-top: 0.65rem; +} + +.entry-list > p { + display: contents; +} + +.entry-list i { + position: relative; + border-bottom: 1px solid var(--pp-line); + padding: 0.35rem 0 0.35rem 1rem; + color: var(--pp-muted); + font-size: 0.37em; + font-style: normal; + font-weight: 680; +} + +.entry-list i::before { + content: ""; + position: absolute; + top: 50%; + left: 0; + width: 0.5rem; + height: 2px; + background: var(--pp-focus); + transform: translateY(-50%); +} + +.entry-side.reality .entry-list i::before { + background: var(--pp-learning); +} + +.entry-bridge { + display: grid; + align-content: center; + justify-items: center; + gap: 0.48rem; + border-color: rgba(247, 67, 110, 0.38); + text-align: center; +} + +.entry-bridge > p { + display: contents; +} + +.entry-bridge b { + width: 90px; + border: 2px solid var(--pp-focus); + border-radius: 50%; + padding: 1.05rem 0.25rem; + color: var(--pp-text); + font-size: 0.42em; + text-transform: uppercase; +} + +.entry-bridge span { + width: 100%; + border: 1px solid var(--pp-line); + border-radius: 6px; + padding: 0.38rem; + color: var(--pp-muted); + background: rgba(8, 26, 23, 0.55); + font-size: 0.34em; + font-weight: 700; +} + +.entry-foundation { + display: grid; + grid-template-columns: repeat(2, minmax(0, 1fr)); + gap: 0.65rem; + max-width: 1320px; + margin-top: 0.62rem; +} + +.entry-foundation > div { + border: 1px solid var(--pp-line); + border-radius: 8px; + padding: 0.55rem 0.68rem; + background: rgba(255, 255, 255, 0.025); +} + +.entry-foundation small { + display: block; + margin-top: 0.28rem; + color: var(--pp-muted); + font-size: 0.33em; + line-height: 1.16; +} + +.entry-punchline, +.pressure-punchline, +.mandate-punchline, +.operational-punchline { + max-width: 1180px; + margin-top: 0.62rem; + border-left: 4px solid var(--pp-learning); + padding: 0.55rem 0.75rem; + color: var(--pp-text); + background: rgba(246, 197, 111, 0.06); + font-size: 0.48em; + font-weight: 760; +} + +.entry-punchline > p, +.pressure-punchline > p, +.mandate-punchline > p, +.operational-punchline > p { + margin: 0; +} + +.pressure-grid { + display: grid; + grid-template-columns: repeat(3, minmax(0, 1fr)); + gap: 0.55rem; + max-width: 1320px; + margin-top: 0.85rem; +} + +.pressure-card { + display: flex; + flex-direction: column; + min-width: 0; + min-height: 190px; + border: 1px solid var(--pp-line); + border-top: 3px solid var(--pp-focus); + border-radius: 8px; + padding: 0.62rem; + background: rgba(247, 67, 110, 0.035); +} + +.pressure-card > span, +.mandate-question > span, +.mandate-definition span, +.operational-step > span { + display: block; + margin-bottom: 0.3rem; + color: var(--pp-focus); + font-size: 0.32em; + font-weight: 850; + text-transform: uppercase; +} + +.pressure-card > strong { + color: var(--pp-text); + font-size: 0.47em; + line-height: 1.08; +} + +.pressure-card > p { + margin: 0.4rem 0 0; + color: var(--pp-muted); + font-size: 0.34em; + line-height: 1.18; +} + +.pressure-card > p:last-child { + margin-top: auto; + border-top: 1px solid var(--pp-line); + padding-top: 0.38rem; +} + +.pressure-card em { + color: var(--pp-dim); + font-size: 0.9em; + font-style: italic; +} + +.pressure-punchline, +.operational-punchline { + border-left-color: var(--pp-focus); + background: rgba(247, 67, 110, 0.06); +} + +.mandate-frame { + max-width: 1320px; + margin-top: 0.85rem; + border: 1px solid rgba(247, 67, 110, 0.4); + border-radius: 8px; + padding: 0.7rem; + background: rgba(247, 67, 110, 0.03); +} + +.mandate-question { + border-left: 4px solid var(--pp-focus); + padding: 0.2rem 0.65rem; +} + +.mandate-question > strong { + display: block; + color: var(--pp-text); + font-size: 0.64em; + line-height: 1.1; +} + +.mandate-definition { + display: grid; + grid-template-columns: repeat(4, minmax(0, 1fr)); + gap: 0.5rem; + margin-top: 0.68rem; +} + +.mandate-definition > div { + min-width: 0; + min-height: 150px; + border: 1px solid var(--pp-line); + border-radius: 6px; + padding: 0.55rem; + background: rgba(8, 26, 23, 0.56); +} + +.mandate-definition > div:nth-child(3) { + border-color: rgba(246, 197, 111, 0.42); +} + +.mandate-definition > div:nth-child(3) span { + color: var(--pp-learning); +} + +.mandate-definition strong { + display: block; + color: var(--pp-text); + font-size: 0.4em; + line-height: 1.16; +} + +.mandate-constraints { + display: grid; + grid-template-columns: repeat(5, minmax(0, 1fr)); + gap: 0.42rem; + margin-top: 0.58rem; +} + +.mandate-constraints > p { + display: contents; +} + +.mandate-constraints i { + min-width: 0; + border-top: 1px solid var(--pp-line); + padding: 0.42rem 0.2rem 0; + color: var(--pp-muted); + font-size: 0.32em; + font-style: normal; + line-height: 1.14; +} + +.mandate-constraints i b { + display: block; + margin-bottom: 0.22rem; + color: var(--pp-text); + text-transform: uppercase; +} + +.operational-entry { + display: grid; + grid-template-columns: 1fr 32px 1fr 32px 1fr 32px 1fr 32px 1fr; + align-items: stretch; + gap: 0.25rem; + max-width: 1320px; + margin-top: 0.9rem; +} + +.operational-step { + min-width: 0; + min-height: 260px; + border: 1px solid var(--pp-line); + border-radius: 8px; + padding: 0.58rem; + background: rgba(255, 255, 255, 0.03); +} + +.operational-step.focus { + border-top: 4px solid var(--pp-focus); + background: rgba(247, 67, 110, 0.04); +} + +.operational-step.learning { + border-top: 4px solid var(--pp-learning); + background: rgba(246, 197, 111, 0.04); +} + +.operational-step.learning > span { + color: var(--pp-learning); +} + +.operational-step > strong { + display: block; + color: var(--pp-text); + font-size: 0.48em; +} + +.operational-step > p { + margin: 0.45rem 0 0; + color: var(--pp-muted); + font-size: 0.33em; + line-height: 1.2; +} + +.operational-arrow { + display: flex; + align-items: center; + justify-content: center; + color: var(--pp-focus); + font-size: 0.62em; + font-weight: 850; +} + +.operational-principles { + display: grid; + grid-template-columns: repeat(4, minmax(0, 1fr)); + gap: 0.45rem; + max-width: 1320px; + margin-top: 0.58rem; +} + +.operational-principles > p { + display: contents; +} + +.operational-principles i { + border: 1px solid var(--pp-line); + border-radius: 6px; + padding: 0.42rem; + color: var(--pp-muted); + background: rgba(8, 26, 23, 0.5); + font-size: 0.34em; + font-style: italic; + font-weight: 700; + text-align: center; +} + +.extension-badge { + display: inline-block; + margin-top: 0.2rem; + border: 1px solid rgba(65, 214, 195, 0.55); + border-radius: 999px; + padding: 0.22rem 0.5rem; + color: var(--pp-accent); + background: rgba(65, 214, 195, 0.055); + font-size: 0.3em; + font-weight: 850; + text-transform: uppercase; +} + +.external-signals, +.synesis-model { + display: grid; + align-items: stretch; + gap: 0.55rem; + max-width: 1320px; + margin-top: 0.65rem; +} + +.external-signals { + grid-template-columns: minmax(0, 0.76fr) 45px minmax(0, 1.05fr) 45px minmax(0, 1fr); +} + +.external-provider, +.external-contract, +.external-destination, +.synesis-input, +.synesis-core, +.synesis-output { + min-width: 0; + min-height: 265px; + border: 1px solid var(--pp-line); + border-radius: 8px; + padding: 0.7rem; + background: rgba(255, 255, 255, 0.035); +} + +.external-provider { + border-top: 4px solid var(--pp-accent); +} + +.external-provider > span { + color: var(--pp-accent); +} + +.external-contract, +.external-destination { + border-top: 4px solid var(--pp-learning); + background: rgba(246, 197, 111, 0.04); +} + +.external-provider strong, +.external-contract strong, +.external-destination strong, +.synesis-input strong, +.synesis-core strong, +.synesis-output strong { + display: block; + margin-top: 0.42rem; + color: var(--pp-text); + font-size: 0.5em; + line-height: 1.1; +} + +.external-provider p, +.external-destination p { + margin: 0.55rem 0 0; + color: var(--pp-muted); + font-size: 0.34em; + line-height: 1.2; +} + +.external-provider a { + display: inline-block; + margin-top: 0.7rem; + color: var(--pp-accent); + font-size: 0.34em; +} + +.external-contract > div, +.synesis-input > div, +.synesis-output > div { + display: grid; + gap: 0.35rem; + margin-top: 0.65rem; +} + +.external-contract > div > p, +.synesis-input > div > p, +.synesis-output > div > p { + display: contents; +} + +.external-contract i, +.synesis-input i, +.synesis-output i { + border: 1px solid var(--pp-line); + border-radius: 5px; + padding: 0.34rem 0.42rem; + color: var(--pp-muted); + background: rgba(8, 26, 23, 0.48); + font-size: 0.32em; + font-style: normal; +} + +.extension-boundary { + display: flex; + gap: 0.6rem; + max-width: 1260px; + margin-top: 0.7rem; + border-left: 4px solid var(--pp-accent); + padding: 0.58rem 0.72rem; + color: var(--pp-muted); + background: rgba(65, 214, 195, 0.045); + font-size: 0.4em; +} + +.extension-boundary b { + color: var(--pp-text); +} + +.synesis-model { + grid-template-columns: minmax(0, 0.9fr) 45px minmax(0, 1.15fr) 45px minmax(0, 0.85fr); +} + +.synesis-input { + border-top: 4px solid var(--pp-accent); +} + +.synesis-input > span { + color: var(--pp-accent); +} + +.synesis-core { + border-top: 4px solid var(--pp-focus); + background: rgba(247, 67, 110, 0.045); +} + +.synesis-core > span { + color: var(--pp-focus); +} + +.synesis-output { + border-top: 4px solid var(--pp-learning); + background: rgba(246, 197, 111, 0.04); +} + +.synesis-ai { + margin-top: 0.72rem; + border-left: 3px solid var(--pp-focus); + padding: 0.46rem; + color: var(--pp-muted); + background: rgba(8, 26, 23, 0.52); + font-size: 0.33em; + line-height: 1.2; +} + +.synesis-integration { + display: grid; + grid-template-columns: repeat(3, minmax(0, 1fr)); + gap: 0.48rem; + max-width: 1320px; + margin-top: 0.62rem; +} + +.synesis-integration > div { + border: 1px solid var(--pp-line); + border-radius: 6px; + padding: 0.42rem 0.5rem; + background: rgba(255, 255, 255, 0.03); +} + +.synesis-integration > div.learning { + border-color: rgba(246, 197, 111, 0.48); + background: rgba(246, 197, 111, 0.04); +} + +.synesis-integration span, +.synesis-integration strong, +.synesis-integration small { + display: block; +} + +.synesis-integration span { + color: var(--pp-dim); + font-size: 0.28em; + font-weight: 850; + text-transform: uppercase; +} + +.synesis-integration > div.learning span { + color: var(--pp-learning); +} + +.synesis-integration strong { + margin-top: 0.16rem; + color: var(--pp-text); + font-size: 0.39em; +} + +.synesis-integration small { + margin-top: 0.2rem; + color: var(--pp-muted); + font-size: 0.28em; + line-height: 1.14; +} + +.vision-close { + display: grid; + grid-template-columns: repeat(3, minmax(0, 1fr)); + gap: 0.65rem; + max-width: 1320px; + margin-top: 1rem; +} + +.vision-pillar { + min-width: 0; + min-height: 260px; + border: 1px solid var(--pp-line); + border-top: 4px solid rgba(255, 255, 255, 0.24); + border-radius: 8px; + padding: 0.72rem; + background: rgba(255, 255, 255, 0.035); +} + +.vision-pillar.focus { + border-top-color: var(--pp-focus); + background: rgba(247, 67, 110, 0.04); +} + +.vision-pillar.learning { + border-top-color: var(--pp-learning); + background: rgba(246, 197, 111, 0.045); +} + +.vision-pillar > span { + display: block; + margin-bottom: 0.48rem; + color: var(--pp-dim); + font-size: 0.34em; + font-weight: 850; + text-transform: uppercase; +} + +.vision-pillar.focus > span { + color: var(--pp-focus); +} + +.vision-pillar.learning > span { + color: var(--pp-learning); +} + +.vision-pillar > strong { + display: block; + color: var(--pp-text); + font-size: 0.56em; + line-height: 1.12; +} + +.vision-pillar > p { + margin: 0.6rem 0 0; + color: var(--pp-muted); + font-size: 0.37em; + line-height: 1.2; +} + +.vision-loop { + display: flex; + align-items: center; + justify-content: center; + gap: 0.55rem; + max-width: 1320px; + margin-top: 0.7rem; + border: 1px solid rgba(246, 197, 111, 0.35); + border-radius: 8px; + padding: 0.58rem; + background: rgba(246, 197, 111, 0.04); +} + +.vision-loop > p { + display: contents; +} + +.vision-loop span { + color: var(--pp-muted); + font-size: 0.38em; + font-weight: 700; +} + +.vision-loop b { + color: var(--pp-focus); + font-size: 0.48em; +} + +.vision-loop strong { + color: var(--pp-learning); + font-size: 0.4em; +} + +.vision-statement { + max-width: 1180px; + margin-top: 0.7rem; + border-left: 4px solid var(--pp-learning); + padding: 0.65rem 0.85rem; + color: var(--pp-text); + background: rgba(246, 197, 111, 0.07); + font-size: 0.62em; + font-weight: 780; +} + +.vision-statement > p { + margin: 0; +} + +.artifact-flow { + display: grid; + grid-template-columns: repeat(5, minmax(0, 1fr)); + gap: 0.65rem; + margin-top: 1.2rem; + max-width: 1320px; +} + +.artifact-card { + min-height: 265px; + border: 1px solid var(--pp-line); + border-top: 4px solid rgba(255, 255, 255, 0.2); + border-radius: 8px; + padding: 0.72rem; + color: var(--pp-muted); + background: rgba(255, 255, 255, 0.035); + font-size: 0.46em; + line-height: 1.18; +} + +.artifact-card span { + display: block; + margin-bottom: 0.55rem; + color: var(--pp-dim); + font-size: 0.82em; + font-weight: 850; + text-transform: uppercase; +} + +.artifact-card.focus, +.artifact-card.experiment { + border-top-color: var(--pp-focus); + background: rgba(247, 67, 110, 0.045); +} + +.artifact-card.focus span, +.artifact-card.experiment span { + color: var(--pp-focus); +} + +.artifact-card.learning { + border-top-color: var(--pp-learning); + background: rgba(246, 197, 111, 0.055); +} + +.artifact-card.learning span { + color: var(--pp-learning); +} + +.artifact-card strong { + display: block; + margin-bottom: 0.7rem; + color: var(--pp-text); + font-size: 1.12em; + line-height: 1.08; +} + +.artifact-card em { + display: block; + margin-top: 0.7rem; + color: var(--pp-dim); + font-style: italic; + font-weight: 650; +} + +.artifact-flow.enforcement .artifact-card { + display: flex; + flex-direction: column; + min-height: 290px; +} + +.artifact-tool { + margin-top: auto; + border-top: 1px solid var(--pp-line); + padding-top: 0.65rem; + color: var(--pp-text); + font-size: 1.03em; + font-weight: 780; + line-height: 1.14; +} + +.artifact-tool b { + display: block; + margin-bottom: 0.3rem; + color: var(--pp-dim); + font-size: 0.72em; + font-weight: 850; + text-transform: uppercase; +} + +.artifact-card.focus .artifact-tool, +.artifact-card.experiment .artifact-tool { + border-top-color: rgba(247, 67, 110, 0.38); +} + +.artifact-card.focus .artifact-tool b, +.artifact-card.experiment .artifact-tool b { + color: var(--pp-focus); +} + +.artifact-card.learning .artifact-tool { + border-top-color: rgba(246, 197, 111, 0.45); +} + +.artifact-card.learning .artifact-tool b { + color: var(--pp-learning); +} + +.artifact-punchline { + max-width: 1180px; + margin-top: 0.9rem; + border-left: 4px solid var(--pp-accent); + padding: 0.7rem 0.9rem; + color: var(--pp-text); + background: rgba(247, 67, 110, 0.07); + font-size: 0.58em; + font-weight: 750; +} + +.artifact-punchline.learning { + border-left-color: var(--pp-learning); + background: rgba(246, 197, 111, 0.07); +} + +.responsibility-bpm { + display: grid; + gap: 0.9rem; + margin-top: 1.3rem; + max-width: 1240px; +} + +.responsibility-lane { + display: grid; + grid-template-columns: 210px 1fr; + min-height: 134px; + border: 1px solid rgba(255, 255, 255, 0.08); + border-radius: 14px; + overflow: hidden; + background: + linear-gradient(90deg, rgba(255, 255, 255, 0.08), rgba(255, 255, 255, 0.035) 28%, rgba(8, 26, 23, 0.82)), + rgba(255, 255, 255, 0.03); +} + +.responsibility-lane.control { + background: + linear-gradient(90deg, rgba(247, 67, 110, 0.7), rgba(247, 67, 110, 0.24) 32%, rgba(8, 26, 23, 0.86)), + rgba(247, 67, 110, 0.06); +} + +.responsibility-lane-label { + display: flex; + align-items: center; + padding: 1rem; + color: var(--pp-text); + font-size: 0.58em; + font-weight: 800; + line-height: 1.12; +} + +.responsibility-flow { + display: grid; + grid-template-columns: 1fr 40px 1fr 40px 1fr; + align-items: center; + gap: 0.6rem; + padding: 1rem 1.1rem 1rem 0.3rem; +} + +.responsibility-lane.control .responsibility-flow { + grid-template-columns: repeat(3, minmax(0, 1fr)); +} + +.responsibility-token { + min-height: 68px; + display: flex; + align-items: center; + justify-content: center; + border: 1px solid rgba(255, 255, 255, 0.66); + border-radius: 9px; + padding: 0.65rem; + color: var(--pp-text); + background: rgba(255, 255, 255, 0.055); + font-size: 0.58em; + font-weight: 700; + line-height: 1.12; + text-align: center; +} + +.responsibility-token.blocked { + border-color: rgba(247, 67, 110, 0.82); + background: rgba(247, 67, 110, 0.12); +} + +.responsibility-arrow { + color: var(--pp-accent); + font-family: $codeFont; + font-size: 0.82em; + text-align: center; +} + +.responsibility-effects { + display: grid; + grid-template-columns: repeat(3, minmax(0, 1fr)); + gap: 0.8rem; + margin-top: 1rem; + max-width: 1240px; +} + +.responsibility-effects span { + min-height: 82px; + display: flex; + align-items: center; + border: 1px solid var(--pp-line); + border-left: 4px solid var(--pp-accent); + padding: 0.65rem 0.75rem; + color: var(--pp-muted); + background: rgba(255, 255, 255, 0.035); + font-size: 0.5em; + line-height: 1.22; +} + +.problem-triad { + display: grid; + grid-template-columns: repeat(3, minmax(0, 1fr)); + gap: 1rem; + margin-top: 1.3rem; +} + +.problem { + min-height: 220px; + border-color: var(--pp-accent); + font-size: 0.72em; +} + +.problem strong { + display: block; + margin-bottom: 0.9rem; + color: var(--pp-text); + font-size: 1.12em; + line-height: 1.08; +} + +.golden-circle table { + margin-top: 1.2rem; + font-size: 0.62em; +} + +.golden-circle th { + color: var(--pp-accent); + text-transform: uppercase; +} + +.golden-visual { + display: grid; + grid-template-columns: minmax(460px, 0.86fr) 1fr; + align-items: center; + gap: 2rem; + margin-top: 1rem; +} + +.golden-rings { + position: relative; + width: min(560px, 42vw); + aspect-ratio: 1; + border-radius: 50%; + background: transparent; +} + +.golden-ring { + position: absolute; + inset: 0; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + border-radius: 50%; + border: 2px solid rgba(246, 197, 111, 0.74); + color: var(--pp-text); + text-align: center; +} + +.golden-ring.what { + inset: 0; + border-color: rgba(177, 117, 28, 0.68); + justify-content: flex-end; + padding-bottom: 0; +} + +.golden-ring.how { + inset: 18%; + border-color: rgba(245, 184, 74, 0.82); + justify-content: flex-end; + padding-bottom: 2rem; +} + +.golden-ring.why { + inset: 36%; + border-color: rgba(255, 224, 141, 0.95); + background: rgba(8, 26, 23, 0.72); + justify-content: center; + padding: 0.6rem; +} + +.ring-label { + display: block; + color: #ffe08d; + font-size: 0.5em; + font-weight: 800; + text-transform: uppercase; +} + +.ring-copy { + display: block; + max-width: 17ch; + margin-top: 0.25rem; + color: var(--pp-muted); + font-size: 0.34em; + font-weight: 650; + line-height: 1.14; +} + +.golden-ring.why .ring-copy { + max-width: 13ch; + color: var(--pp-text); + font-size: 0.3em; +} + +.golden-explainer { + display: grid; + gap: 0.85rem; +} + +.golden-note { + border-left: 4px solid rgba(246, 197, 111, 0.82); + padding: 0.75rem 0.95rem; + background: rgba(255, 255, 255, 0.04); + color: var(--pp-muted); + font-size: 0.58em; + line-height: 1.24; +} + +.golden-note strong { + display: block; + margin-bottom: 0.25rem; + color: #ffe08d; + font-size: 1.12em; + text-transform: uppercase; +} + +.references { + margin-top: 1.5rem; + max-width: 760px; + color: var(--pp-dim); + font-size: 0.46em; + line-height: 1.35; +} + +.references a { + color: var(--pp-muted); + text-decoration: underline; + text-decoration-color: rgba(65, 214, 195, 0.7); + text-underline-offset: 0.14em; +} + +@media (max-width: 900px) { + .problem-triad, + .wound-grid, + .luhmann-codes, + .luhmann-path, + .luhmann-points, + .translation-wound, + .meeting-loop, + .deliberation-model, + .architecture-wound, + .responsibility-bpm, + .responsibility-lane, + .responsibility-effects, + .survival-anchors, + .outcome-map, + .mechanic-chain, + .mechanic-type-grid, + .mechanic-grid, + .culture-examples, + .noesis-levels, + .cockpit-map, + .kpi-backbone, + .kpi-level-row, + .reality-feedback, + .feedback-return, + .catalog-model, + .catalog-trace-context, + .catalog-feature, + .catalog-progress-shift, + .composer-flow, + .composer-zero-one, + .storybook-system, + .storybook-publication, + .entry-mandate, + .entry-foundation, + .pressure-grid, + .mandate-definition, + .mandate-constraints, + .operational-entry, + .operational-principles, + .external-signals, + .synesis-model, + .synesis-integration, + .vision-close, + .artifact-flow, + .shared-reality-flow, + .circle-stack, + .golden-visual, + .bpm-flow, + .bpm-steps { + grid-template-columns: 1fr; + } + + .feedback-arrow, + .external-arrow, + .synesis-arrow { + transform: rotate(90deg); + } + + .golden-rings { + width: min(520px, 78vw); + } + + .problem, + .wound-card, + .architecture-card, + .outcome-card, + .mechanic-type-card, + .mechanic-card, + .culture-example, + .noesis-level, + .cockpit-panel, + .artifact-card, + .circle-item { + min-height: 0; + } + + .bpm-lane { + border-right: 0; + border-bottom: 1px solid var(--pp-line); + } + + .bpm-arrow { + transform: rotate(90deg); + } + + .responsibility-flow, + .responsibility-lane.control .responsibility-flow { + grid-template-columns: 1fr; + } + + .responsibility-arrow { + transform: rotate(90deg); + } + + .mechanic-arrow { + transform: rotate(90deg); + } + + .culture-bpmn-block { + grid-template-columns: 1fr; + } + + .cockpit-quadrants, + .cockpit-quadrants > p, + .cockpit-strategy-list, + .cockpit-strategy-list > p, + .cockpit-detail-list, + .cockpit-detail-list > p { + grid-template-columns: 1fr; + } + + .catalog-convergence { + transform: rotate(90deg); + } + + .catalog-progress-shift > b { + transform: rotate(90deg); + } + + .composer-arrow { + transform: rotate(90deg); + } + + .storybook-publication > div { + flex-wrap: wrap; + } + + .operational-arrow { + transform: rotate(90deg); + } + + .vision-loop { + align-items: flex-start; + flex-direction: column; + } + + .storybook-publication > p, + .storybook-publication > em { + border-left: 0; + border-top: 1px solid var(--pp-line); + padding-top: 0.5rem; + padding-left: 0; + } + + .catalog-status-legend { + align-items: flex-start; + flex-direction: column; + } + + .catalog-status-legend strong { + margin-left: 0; + } +} + +.reveal .footer { + color: var(--pp-dim); + font-size: 0.42em; + left: 1.2rem; + right: auto; + bottom: 0.5rem; + padding-left: 150px; + min-height: 30px; + line-height: 30px; + background-image: url("../../../../assets/logos/protopipe-logo-color-full.svg"); + background-repeat: no-repeat; + background-position: left center; + background-size: 126px auto; +} + +.reveal .slide-number { + color: var(--pp-muted); + bottom: 0.5rem; + right: 1.2rem; + font-size: 0.42em; +} + +.reveal::after { + content: "Alwin Mark | 2026-05-30"; + position: fixed; + right: 5.1rem; + bottom: 0.5rem; + z-index: 30; + color: var(--pp-dim); + font-size: 0.42em; + line-height: 30px; + pointer-events: none; +} + +.reveal pre code { + max-height: 560px; +} + +#title-slide { + position: relative; + text-align: left; +} + +#title-slide h1, +#title-slide .quarto-title-authors, +#title-slide .date { + display: none; +} + +#title-slide::before { + content: ""; + position: absolute; + top: 245px; + left: 70px; + display: block; + width: 520px; + height: 150px; + margin: 0; + background-image: url("../../../../assets/logos/protopipe-logo-color-full.svg"); + background-repeat: no-repeat; + background-size: contain; + background-position: left center; +} + +#title-slide .subtitle { + position: absolute; + top: 675px; + left: 70px; + max-width: 28ch; + margin: 0; + border-left: 4px solid var(--pp-learning); + padding-left: 0.65rem; + color: var(--pp-text); + font-size: 1em; + font-weight: 650; + line-height: 1.12; + text-align: left; +} + +#title-slide h1 { + color: var(--pp-text); +} diff --git a/dist/publications/external-data-marketplace-whitepaper.md b/dist/publications/external-data-marketplace-whitepaper.md new file mode 100644 index 0000000..486d9d5 --- /dev/null +++ b/dist/publications/external-data-marketplace-whitepaper.md @@ -0,0 +1,270 @@ +# External Data Marketplace Whitepaper + +Derived from Protopipe Noesis + +Status: draft +Date: 2026-07-07 + +## Executive Summary + +Protopipe needs external evidence to connect strategy work to market reality. Internal telemetry can explain what happened inside the organization. It cannot, by itself, explain competitor movement, marketplace pricing, product rankings, customer review dynamics, weather effects, supplier signals, local footfall, industrial sensor states, public events, or regulatory changes. + +The problem is not only access. External data is expensive to collect and often harder to verify. A provider may invest in scraping infrastructure, platform access, sensors, normalization, latency management, data cleaning, and domain expertise. A buyer still needs to know whether the data is scoped correctly, measured consistently, attributable, timely, corrected when wrong, and reliable for the specific topic in question. + +The marketplace vision is an ecosystem layer around Protopipe. It lets specialized providers publish schema-bound external evidence, sell access to it, build topic-specific reputation, and expose correction and dispute history. Protopipe remains the strategic learning platform. It consumes external evidence context and relates it to hypotheses, KPI trees, experiments, and decision records. + +This is not a claim that blockchain turns data into truth. Blockchain or similar verifiable infrastructure can prove integrity, provenance, timestamps, commitments, licensing, payment, and dispute outcomes. Truth remains domain-specific and must be evaluated through validation rules, reference sources, aggregation, corrections, expert review, and governance. + +## Noesis Basis + +This publication is downstream material. It derives from three Noesis entries: + +- `doc/05_problems/external-evidence-is-costly-and-hard-to-verify.md` +- `doc/07_mechanics/no-external-signal-without-provenance.md` +- `doc/08_capabilities/external-evidence-context.md` + +The canonical constraint is: + +> No external signal should enter strategic reasoning without provenance. + +For Protopipe, provenance includes source identity, observation time, collection time, scope, method, schema, confidence, verification status, correction history, dispute status, and relation to the relevant hypothesis, KPI, experiment, or decision record. + +## Problem + +External evidence has two cost structures. + +Collection cost includes access, instrumentation, platform limits, sensor deployment, normalization, coverage, cleaning, latency, and operational continuity. + +Verification cost includes provenance, schema clarity, source comparison, historical accuracy, correction handling, bias detection, dispute handling, and domain-specific validation. + +These costs are usually hidden once data appears inside a dashboard. A number in a KPI tree can look precise even when the underlying signal is ambiguous. A provider can be reliable in one topic and weak in another. A corrected data point can overwrite the earlier evidence state that shaped a prior decision. A technically valid hash can prove that a dataset did not change, but not that the dataset was true. + +## Marketplace Thesis + +The marketplace should make collection and verification explicit economic objects. + +Providers should be able to monetize costly external evidence. Buyers should be able to compare providers by topic, method, price, SLA, latency, dispute history, and reputation. Protopipe should be able to consume the evidence without absorbing the marketplace into its core. + +The marketplace handles: + +- provider identity and attestations +- topic definitions and schemas +- data commitments and timestamps +- access control and licensing +- pricing and settlement +- topic-level reputation +- correction events +- dispute history +- optional oracle aggregation + +Protopipe handles: + +- external evidence context +- KPI relation +- hypothesis relation +- experiment relation +- decision record relation +- confidence-aware strategic reasoning + +## Target Architecture + +| Layer | Responsibility | Notes | +|---|---|---| +| Provider Layer | Identify and attest data providers | Wallet, public key, organization identity, optional certification | +| Topic Layer | Define exactly what a signal means | Topic ID, schema, unit, market, region, time window, method, validation rules | +| Data Layer | Store and deliver raw data | API, database, object storage, IPFS, Arweave, or other off-chain storage | +| Commitment Layer | Prove integrity and timestamp | Hashes, Merkle roots, provider signatures, storage references | +| Access Layer | Meter and authorize use | API keys, capability tokens, license tokens, data tokens, proxy access | +| Reputation Layer | Track reliability by topic | Accuracy, latency, availability, corrections, disputes, slashing | +| Dispute Layer | Challenge and correct evidence | Evidence submission, arbitration, refunds, penalties, correction events | +| Protopipe Integration Layer | Convert data into decision evidence | External Evidence Context inside Reality Signal Matrix and KPI Tree | + +## Marketplace Mechanics + +### Topic Contracts + +Data must not be sold as vague categories such as "weather", "news", or "market data". Each sellable topic needs an explicit contract. + +Example topic fields: + +- topic ID +- data type +- unit +- market, venue, geography, asset, or physical location +- observation window +- collection method +- source class +- schema version +- quality flags +- validation rules +- allowed correction process + +For Sellytics-like Amazon market data, a topic could describe competitor price for a specific ASIN, marketplace, seller set, currency, availability rule, and observation window. + +### Provider Reputation by Topic + +Provider reputation must be topic-specific. A provider can be strong for Amazon marketplace data and irrelevant for weather data. + +Possible scoring model: + +```text +topic_reputation = + 0.30 * historical_accuracy ++ 0.20 * availability_sla ++ 0.15 * latency_sla ++ 0.15 * correction_quality ++ 0.10 * dispute_outcomes ++ 0.10 * source_diversity +- slashing_penalties +``` + +The score is not a truth score. It is a decision support signal that describes historical provider behavior in a defined topic domain. + +### Commitments and Integrity + +Raw datasets should normally stay off-chain. The marketplace stores commitments on-chain or in another verifiable ledger: + +- provider ID +- topic ID +- schema version +- observation timestamp +- publication timestamp +- dataset hash or Merkle root +- storage reference +- provider signature +- license terms +- price or subscription terms +- dispute window + +This proves that a provider committed to a specific dataset at a specific time. It does not prove that the dataset accurately described reality. + +### Access and Payment + +After payment, the buyer should not receive the provider's private key. The buyer receives a scoped access mechanism: + +- dataset-specific decryption key +- temporary API token +- capability token +- license token +- data token +- access through a verifying proxy + +Access should be auditable, revocable where possible, and tied to the license terms of the purchased topic or dataset. + +### Corrections and Disputes + +Corrections must be append-only. Old evidence should not disappear, because prior decisions may have depended on it. + +A dispute flow should define: + +- who can challenge a dataset +- dispute window +- required evidence +- arbitration path +- automatic checks versus expert review +- rating impact +- refund conditions +- provider penalty or slashing conditions +- correction publication rules + +### Oracle Aggregation + +Some topics may also expose aggregated values for smart contracts, for example a market price, weather measure, settlement result, or event outcome. + +Aggregation options include: + +- median +- weighted median +- VWAP +- multi-source consensus +- reputation-weighted calculation +- optimistic assertion with dispute window + +Oracle values are downstream products of the marketplace. They should not replace the richer evidence context that Protopipe needs for strategic learning. + +## Data Classes + +| Data class | Collection difficulty | Verification difficulty | Marketplace emphasis | +|---|---|---|---| +| Marketplace prices | Medium to high | Medium | Time window, seller set, availability, snapshot integrity | +| Product rankings | High | Medium to high | Search context, geography, personalization controls | +| Reviews and ratings | Medium | Medium | Source, time, moderation effects, correction history | +| Weather data | Medium | Low to medium | Station/source identity, local granularity, measurement method | +| News and events | High | High | Source ranking, evidence trail, delayed correction | +| Industrial sensor data | High | High | Sensor identity, calibration, hardware attestation, anomaly checks | +| Footfall and retail behavior | High | Medium | Sensor method, privacy constraints, aggregation quality | +| Financial market prices | Medium to high | Low to medium | Venue set, latency, liquidity, aggregation method | + +## Technology Landscape + +This section compares current technologies with the Protopipe marketplace vision. + +| Technology | Current strength | Gap against the vision | Fit | +|---|---|---|---| +| Sellytics | Amazon market data API for competitor prices, product details, rankings, ratings, and reviews | Provider-specific; does not by itself define a multi-provider reputation, dispute, and evidence market | Strong first provider candidate for commercial marketplace signals | +| Chainlink Data Streams | Low-latency off-chain market data with on-chain verification, pull-based access, report schemas, REST/WebSocket/SDKs | Primarily oracle/data-stream infrastructure; not a Protopipe evidence marketplace or decision context | Strong reference for verifiable data streams and on-chain report verification | +| Pyth Price Feeds | Real-time financial data from many first-party providers, verified on many blockchains, push and pull updates | Focused on financial market data, not arbitrary enterprise evidence topics | Strong reference for publisher networks and low-latency financial feeds | +| Ocean Protocol | Data NFTs and ERC20 datatokens as access mechanisms for data assets | Web3-native data asset model; does not solve Protopipe-specific evidence context by itself | Useful reference for licensing and tokenized access | +| UMA Optimistic Oracle | Optimistic assertion and dispute pattern for subjective or event-based data | Better for challengeable assertions than high-volume raw data marketplaces | Useful reference for dispute windows and arbitration mechanics | +| IPFS | Content-addressed, verifiable data addressing and transfer | Protocol, not a storage provider; does not handle payment, SLA, reputation, or truth | Useful for dataset references and content integrity | +| Lit Protocol | Chain-secured programmable runtime, conditional signing, encrypted secrets, custom oracles | Separate trust and operations model; enterprise governance must be evaluated | Useful for controlled access, scoped keys, and programmable verification | + +## Recommended Direction + +The first version should not start with a full token economy. + +Recommended sequence: + +1. Define the Protopipe External Evidence Contract. +2. Integrate one trusted provider such as Sellytics as a curated evidence source. +3. Require source, timestamp, scope, method, schema, confidence, and correction status for every imported external signal. +4. Add signed datasets and hashes before adding payment or staking. +5. Introduce topic-level provider reputation once multiple providers or repeated observations exist. +6. Add dispute and correction workflows before claiming marketplace trust. +7. Consider blockchain commitments, access tokens, or oracle aggregation only where multi-party trust boundaries justify them. + +## Example Evidence Contract + +```json +{ + "signalId": "external.amazon.de.price.asin.B0EXAMPLE.2026-07-07T10:00Z", + "providerId": "sellytics", + "topicId": "amazon.de.price.competitor.asin", + "schemaVersion": "1.0.0", + "observedAt": "2026-07-07T10:00:00Z", + "collectedAt": "2026-07-07T10:01:22Z", + "scope": { + "marketplace": "amazon.de", + "assetType": "asin", + "assetId": "B0EXAMPLE", + "currency": "EUR" + }, + "method": "observed_offer_price_snapshot", + "confidence": "provider-verified", + "verificationStatus": "not-disputed", + "integrity": { + "hash": "sha256:...", + "signature": "..." + }, + "correctionOf": null, + "kpiRelation": "competitor_price_delta" +} +``` + +## Critical Boundary + +The marketplace can make external evidence more accountable. It cannot remove the need for judgment. + +Integrity is not truth. Provenance is not accuracy. Reputation is not certainty. Access control is not compliance. Aggregation is not context. + +Protopipe should use the marketplace as an evidence supply layer, not as a substitute for accountable decision-making. + +## Sources + +- Sellytics: +- Chainlink Data Streams: +- Pyth Price Feeds: +- Ocean Protocol Datatokens: +- UMA Optimistic Oracle: +- IPFS Concepts: +- Lit Protocol: diff --git a/doc/05_problems/external-evidence-is-costly-and-hard-to-verify.md b/doc/05_problems/external-evidence-is-costly-and-hard-to-verify.md new file mode 100644 index 0000000..c4f6d0a --- /dev/null +++ b/doc/05_problems/external-evidence-is-costly-and-hard-to-verify.md @@ -0,0 +1,92 @@ +# External Evidence Is Costly and Hard to Verify + +## The Problem + +Protopipe needs external reality signals to reason about strategy, markets, +competition, customers, supply chains, and operational environments. + +Many of these signals are expensive to collect and even harder to verify. +They often originate outside the organization, outside the product system, +and outside the governance structures that normally make internal data +auditable. + +Examples include competitor prices, marketplace rankings, product reviews, +weather data, local footfall, industrial sensor readings, news events, +commodity prices, supplier signals, and regulatory updates. + +The organization may be able to buy or retrieve such data, but it often +cannot easily know whether the data is complete, timely, correctly scoped, +methodologically sound, or still trustworthy after corrections emerge. + +--- + +## Why This Happens + +External evidence has two separate cost structures. + +Collection cost comes from access, instrumentation, normalization, latency, +coverage, data cleaning, and ongoing operation. A provider may need platform +access, scraping infrastructure, sensors, data partnerships, domain expertise, +or continuous monitoring to produce the signal at all. + +Verification cost comes from provenance, schema clarity, source comparison, +historical accuracy, correction handling, bias detection, dispute handling, +and domain-specific validation. The more consequential a decision becomes, +the more important this second cost becomes. + +The difficulty is amplified because external data is often contextual. +A price depends on market, region, time, seller set, availability, campaign +state, and measurement method. A sensor value depends on calibration, +placement, hardware integrity, and local conditions. A news signal may only +become clearly true or false after later evidence appears. + +--- + +## Observable Symptoms + +- Teams use external data without knowing how it was collected. +- Metrics with similar names are treated as comparable even when their + measurement methods differ. +- Decisions cite external signals without preserving source, timestamp, + schema, or confidence. +- Providers are trusted globally although their reliability is topic-specific. +- Corrections overwrite earlier assumptions instead of becoming visible in + the decision history. +- Data purchases are evaluated by availability and price, but not by + verifiability or dispute history. +- Expensive external evidence becomes a one-off artifact instead of a reusable + signal with an accountable lifecycle. + +--- + +## Why This Blocks Fast Delivery and Learning + +Fast learning depends on feedback that can be trusted enough to act on and +challenged enough to improve. + +When external evidence is opaque, teams either overtrust it or ignore it. +Both outcomes slow learning. Overtrust creates false certainty and can push +strategy in the wrong direction. Undertrust forces teams to repeat collection +work, delay decisions, or fall back to internal data that cannot explain the +external reality the strategy depends on. + +Without provenance, schema discipline, correction history, and confidence +context, Protopipe cannot reliably connect external evidence to hypotheses, +experiments, KPI trees, and decision records. + +--- + +## Why This Is a Systemic Problem + +The problem recurs whenever strategic learning crosses organizational +boundaries. + +Internal systems can be instrumented and governed directly. External reality +cannot. The organization must rely on providers, markets, platforms, sensors, +or public sources whose incentives, methods, and failure modes differ from +its own. + +This makes external evidence structurally fragile. The issue is not a missing +integration or a single unreliable provider. The issue is that valuable +external data requires both collection and verification, and those two forms +of work are usually hidden from the decision context. diff --git a/doc/07_mechanics/no-external-signal-without-provenance.md b/doc/07_mechanics/no-external-signal-without-provenance.md new file mode 100644 index 0000000..e28fcee --- /dev/null +++ b/doc/07_mechanics/no-external-signal-without-provenance.md @@ -0,0 +1,126 @@ +# Mechanic: No External Signal without Provenance + +## Intent + +This mechanic prevents external evidence from entering strategic reasoning as +anonymous or context-free data. It exists because external signals are often +expensive to collect, hard to verify, and easy to overtrust once they appear +inside a dashboard or decision record. + +--- + +## Problems Addressed + +- External Evidence Is Costly and Hard to Verify + +--- + +## Desired Outcomes Supported + +- Strategy can be challenged with external reality. +- Decisions can explain which evidence was available at the time. +- External evidence can be reused without losing its collection and confidence + context. + +--- + +## Enforced Behavior + +This mechanic enforces that: + +- every external signal carries source, timestamp, scope, and measurement + context +- every external signal is distinguishable from internal telemetry +- every external signal preserves its confidence and verification status +- corrections and disputes are attached instead of silently replacing prior + evidence +- provider reliability is evaluated in relation to the specific signal domain + +If this behavior is not enforced, the mechanic is considered ineffective. + +--- + +## Structural Constraints + +- External data without provenance cannot be treated as decision evidence. +- A metric name alone is not enough to make two signals comparable. +- Provider trust cannot be assumed globally when reliability is topic-specific. +- Corrected external data must not erase the evidence state that shaped prior + decisions. + +Constraints are intentional. +They exist to prevent undesired behavior. + +--- + +## Mechanic Boundary + +This mechanic: + +- is responsible for making external evidence attributable, contextual, and + challengeable +- is responsible for preserving the difference between integrity, provenance, + confidence, and truth +- explicitly does not decide which provider, marketplace, oracle, database, or + blockchain technology should be used +- explicitly does not claim that external evidence becomes objectively true + because provenance exists + +--- + +## Reference Implementation (Protopipe) + +This section documents **Protopipe's own reference implementation** +of the mechanic. + +It exists to: +- demonstrate feasibility +- provide a working example +- support orientation within the Protopipe ecosystem +- enable "eat your own dogfood" validation + +The reference implementation: + +- is **not canonical** +- may evolve independently +- must not change the mechanic's intent +- must be removable without invalidating the mechanic + +Reference implementation overview: + +- Artifact(s): future Protopipe external evidence contract +- Scope: source identity, signal scope, timestamp, schema, confidence, + verification status, correction history, and KPI relation +- What it proves: external evidence can be connected to strategic learning + without pretending that integration equals truth + +If the reference implementation fails in practice, +the mechanic itself must be re-evaluated. + +--- + +## Failure Modes + +- External data is imported as a plain value without source or method. +- Provider reputation is treated as global instead of topic-specific. +- Corrections overwrite history. +- Confidence values become decorative and do not affect decision language. +- A technical integrity proof is mistaken for proof that the data is true. + +Failure modes must be observable. + +--- + +## Implementation Notes (Non-Canonical) + +Possible downstream realizations include curated provider integrations, +signed data feeds, audit trails, data marketplaces, oracle networks, +content-addressed storage, access-control systems, and dispute mechanisms. + +All content here is explicitly non-canonical. + +--- + +## Related Mechanics + +- None yet diff --git a/doc/08_capabilities/external-evidence-context.md b/doc/08_capabilities/external-evidence-context.md new file mode 100644 index 0000000..5f9fedc --- /dev/null +++ b/doc/08_capabilities/external-evidence-context.md @@ -0,0 +1,51 @@ +# External Evidence Context + +Protopipe must be able to preserve the context that makes external evidence +usable for strategic learning. + +This capability is solution-neutral. It does not prescribe a marketplace, +blockchain, provider network, oracle, storage system, or integration pattern. + +## Capability + +Protopipe must be able to represent external signals together with the +information needed to interpret, compare, challenge, and reuse them. + +External evidence context includes: + +- source identity +- collection timestamp +- observation timestamp +- scope and boundaries +- measurement method +- schema or metric definition +- confidence or verification status +- correction history +- dispute status +- relation to a hypothesis, KPI, experiment, or decision record + +## Why It Matters + +External evidence is valuable because it connects strategy to reality outside +the organization. It is risky because that reality is not directly governed by +the organization. + +Without this capability, external data becomes indistinguishable from internal +telemetry once it enters Protopipe. The platform would lose the ability to say +why a signal was trusted, how it was measured, whether it was later corrected, +and how strongly it should influence a decision. + +## Boundary + +This capability covers the reasoning context around external evidence. + +It does not cover: + +- selecting external providers +- operating a data marketplace +- deciding pricing or licensing models +- implementing payment, staking, slashing, or tokenization +- asserting that a signal is objectively true + +Those are downstream design and implementation decisions derived outside +Noesis. diff --git a/doc/09_identity/brand/brand-foundation.md b/doc/09_identity/brand/brand-foundation.md index c66f635..0406adc 100644 --- a/doc/09_identity/brand/brand-foundation.md +++ b/doc/09_identity/brand/brand-foundation.md @@ -23,11 +23,30 @@ Protopipe ist das Rückgrat moderner Unternehmensführung. Es verbindet strategi | Zweck | Farbe | Vorschau | |---------------|--------------|----------------------------------------| | **Primärfarbe** | `#f7436e` | ![#f7436e](https://placehold.co/15x15/f7436e/f7436e.png) | +| **Learning / Erfolg** | `#f6c56f` | ![#f6c56f](https://placehold.co/15x15/f6c56f/f6c56f.png) | | **Grundfläche** | `#081a17` | ![#081a17](https://placehold.co/15x15/081a17/081a17.png) | | **Dunkelgrau** | `#0b0c0e` | ![#0b0c0e](https://placehold.co/15x15/0b0c0e/0b0c0e.png) | | **Sektionen hell** | `#f7f7f7` | ![#f7f7f7](https://placehold.co/15x15/f7f7f7/f7f7f7.png) | | **Text / Weiß** | `#ffffff` | ![#ffffff](https://placehold.co/15x15/ffffff/ffffff.png) | +### Semantische Farbbedeutung + +Die Akzentfarben sind nicht austauschbare Dekoration. Sie tragen eine +wiederkehrende Bedeutung über Präsentationen, Diagramme und Produktoberflächen. + +| Farbe | Bedeutung | Typische Anwendung | +|---|---|---| +| **Protopipe Pink** (`#f7436e`) | Veränderung, Feedback, Spannung, Herausforderung und Problem | Probleme, Fokusthemen, Experimente, aktive Veränderung und kritische Rückkanäle | +| **Learning Gold** (`#f6c56f`) | Lernen, Evidenz, gewünschte Wirkung und sichtbarer Erfolg | Desired Outcomes, validierte Erkenntnisse, normative Mechanics, Learning Records und beobachtbare Realität | +| **Neutralfarben** | Kontext, Struktur und noch nicht bewertete Zustände | Purpose, Hypothesen, Entscheidungen, Prozessschritte, Grenzen und unterstützende Information | + +Pink markiert, **wo Realität herausgefordert oder verändert wird**. +Gold markiert, **was daraus gelernt, bestätigt oder als Wirkung sichtbar wird**. + +Gold darf nicht für beliebige Hervorhebungen verwendet werden. Pink darf nicht +jeden interaktiven Zustand dominieren. Die semantische Bedeutung geht vor +dekorativer Markenwirkung. + ## Typografie - **Polentical Neon Bold** – Für markante Headlines & Branding. - **Helvetica Neue Medium** – Für Lesbarkeit und UI-Elemente. @@ -54,4 +73,3 @@ Das ist keine Evolution von Jira. Es ist die Antwort auf seine Schwächen. --- Diese Foundation wird in den weiteren Design-, UI- und Guideline-Dokumenten präzisiert. - diff --git a/doc/09_identity/guidelines/swimlane-visual-grammar.md b/doc/09_identity/guidelines/swimlane-visual-grammar.md index f80db0b..8f1f68c 100644 --- a/doc/09_identity/guidelines/swimlane-visual-grammar.md +++ b/doc/09_identity/guidelines/swimlane-visual-grammar.md @@ -21,10 +21,21 @@ Diese Datei beschreibt die visuelle Grammatik der Swimlanes in Protopipe. Ziel i | Aspekt | Konvention | |----------------|--------------------------------------------------------------| | **Ausrichtung**| Vertikal bevorzugt für Klarheit bei Entscheidungen im Zeitverlauf | -| **Farben** | Lane-Grenzen dunkelgrau (#222), aktive Token leuchten in Rot (#f7436e) | +| **Farben** | Lane-Grenzen bleiben neutral. Probleme, Experimente und aktive Veränderung sind Pink (`#f7436e`). Learning, Evidenz und validierte Wirkung sind Gold (`#f6c56f`). | | **Typografie** | Helvetica für Labels, Polentical für aktive Elemente oder States | | **Icons** | Minimalistisch, Fokus auf Bedeutung (z. B. „?“, „✔“, „↻“) | +### Lesbarkeit von Elementen und Übergängen + +- Texte müssen vollständig innerhalb ihrer Boxen, Tokens und Decision Gates + bleiben. Bei Platzmangel werden Texte gekürzt, umgebrochen oder das Element + vergrößert. +- Übergangspfeile benötigen zwischen zwei Elementen einen klar sichtbaren + Schaft. Eine Pfeilspitze allein reicht nicht aus, um einen Handover eindeutig + zu zeigen. +- Abstände und Schriftgrößen werden in der tatsächlichen Ausgabegröße geprüft, + nicht nur in der editierbaren Diagrammquelle. + --- ## 🔁 Anwendungskontexte @@ -35,6 +46,12 @@ Diese Datei beschreibt die visuelle Grammatik der Swimlanes in Protopipe. Ziel i - Review-Dashboard mit Swimlane-Übersicht - Interaktive Prozessdarstellung +Farben beschreiben die Bedeutung eines Tokens, nicht seine bloße Aktivität: + +- Ein aktives Experiment bleibt pink. +- Das daraus gewonnene Learning wird golden. +- Unbewertete Prozessschritte und Entscheidungen bleiben neutral. + --- ## 📐 Designvorgaben (Sketch) @@ -63,4 +80,3 @@ Diese Datei beschreibt die visuelle Grammatik der Swimlanes in Protopipe. Ziel i Siehe auch: - [`ui-principles.md`](../ui/ui-principles.md) - [`brand-foundation.md`](../brand/brand-foundation.md) - diff --git a/doc/09_identity/ui/ui-principles.md b/doc/09_identity/ui/ui-principles.md index efd0030..9a4ffb7 100644 --- a/doc/09_identity/ui/ui-principles.md +++ b/doc/09_identity/ui/ui-principles.md @@ -21,6 +21,30 @@ Protopipe steht für **Transparenz**, **Kontrolle** und **Geschwindigkeit** – | **Emotionalität für Entscheider** | High-End-Wertigkeit durch Lichtführung, gezielte Schatten, markante Typografie und eine Farbkombination aus Tiefschwarz und Signalrot. | | **Konsequent responsive** | Mobile Design nicht als Ableitung, sondern gleichwertig. Touchflächen, vereinfachte Swimlane-Navigation, fokussierte KPIs. | | **Sofortiges Feedback** | Toolzustände, A/B-Auswertungen und Review-Status sind visuell nachvollziehbar. Jeder Klick hat eine direkte Auswirkung. | +| **Semantische Farbe** | Pink kennzeichnet Veränderung, Feedback, Probleme und Experimente. Gold kennzeichnet Lernen, Evidenz, gewünschte Wirkung und sichtbaren Erfolg. Neutrale Zustände bleiben neutral. | + +--- + +## 🎨 Semantische Farbanwendung + +Die kanonische Bedeutung der Farben ist in der +[Brand Foundation](../brand/brand-foundation.md#semantische-farbbedeutung) +definiert. UI-Oberflächen wenden sie wie folgt an: + +- **Pink (`#f7436e`)** für Probleme, Fokusthemen, Experimente, aktive + Veränderung und kritische Feedback-Pfade. +- **Gold (`#f6c56f`)** für Learning, Evidenz, Desired Outcomes, validierte + Wirkung und kanonische Erkenntnisse. +- **Neutralfarben** für Purpose, Hypothesen, Entscheidungen, normale + Prozessschritte und noch nicht bewertete Information. + +Farbe darf nie das einzige Bedeutungssignal sein. Labels, Symbole, Position +oder Form müssen die Semantik zusätzlich ausdrücken. Insbesondere bedeutet: + +- Pink nicht automatisch Fehler oder Alarm. +- Gold nicht automatisch technischer Erfolg oder fehlerfreier Zustand. +- Ein Experiment bleibt pink, auch wenn es erfolgreich abgeschlossen wurde. +- Das daraus entstandene Learning oder die validierte Wirkung wird golden. --- @@ -28,6 +52,7 @@ Protopipe steht für **Transparenz**, **Kontrolle** und **Geschwindigkeit** – - Swimlane = Domänengrenze + Verantwortung - Farbverlauf #de083d → #f7436e = Bewegung, Spannung, Übergang +- Gold #f6c56f = Lernen, Evidenz, Wirkung und sichtbarer Erfolg - Schwarz (#081a17) = Kontrolle, Tiefe, Fokus - Typografie = Polentical Neon Bold (Brand), Helvetica Neue (Lesbarkeit) @@ -56,4 +81,3 @@ Siehe auch: - [`08_design/brand/brand-foundation.md`](../brand/brand-foundation.md) - [`08_design/guidelines/swimlane-visual-grammar.md`](../guidelines/swimlane-visual-grammar.md) - diff --git a/tooling/prompting/roles/salespartner.md b/tooling/prompting/roles/salespartner.md new file mode 100644 index 0000000..2cd99e4 --- /dev/null +++ b/tooling/prompting/roles/salespartner.md @@ -0,0 +1,223 @@ +# Role: Sales Partner (Tech-Savvy Agency Owner, OSS-Oriented) + +--- + +## 1. Cognitive Frame (Non-Negotiable) + +This role thinks in: + +* Sales pipelines +* Customer Acquisition Cost (CAC) +* Lifetime Value (LTV) +* Deal size / deal velocity +* Competitive positioning +* Differentiation vs. standard IT service providers + +Relevant reference domains: + +* IT consulting (project business, retainers, follow-up projects) +* BPM / workflow systems (e.g., Camunda) +* Integration architectures (APIs, middleware) +* Pre-sales / solution selling +* Business process digitization +* OSS strategies in enterprise environments +* Tech trends (cloud, AI, platform models) + +Signal: + +* Topics that are sellable +* Problems that trigger budget +* Approaches that enable larger deals +* Differentiation from competitors + +Noise: + +* Pure technical elegance without market relevance +* Internal optimizations without customer visibility +* Solutions without a clear entry point in sales +* Visions without short-term monetization perspective + +Abstractions are accepted only if they resolve to: + +* How does this get me into a customer conversation? +* How does this turn into a deal? + +--- + +## 2. Emotional Baseline (Mandatory) + +Target state: + +* Controlled curiosity +* Business pragmatism +* Mild skepticism toward non-monetizable ideas + +Expected tone: + +* Clear +* Neutral +* Business-oriented +* Not overly technical + +Avoid: + +* Hype (AI, OSS, platforms without substance) +* Vision-first argumentation +* Implicit expectations without business case +* Moral arguments (e.g., “OSS is better”) + +Emotional guideline: + +> “I could bring this to a client — but only if it holds.” + +--- + +## 3. Lived Reality Anchors (Mandatory) + +* A promising client conversation ends with: “This sounds interesting, but we don’t have budget for it right now.” + +* A project is sold, but no follow-up engagement emerges because no structural value was made visible + +* The client has delivery problems, but cannot articulate them clearly enough to justify an offer + +* Competitors offer similar services more standardized or cheaper + +* A technical topic is internally exciting but cannot be translated into a proposal + +* The client asks for “agility” but actually means faster delivery without structure + +* Pre-sales drags because no clear entry point can be defined + +* Existing clients run stable, but without upsell potential + +--- + +## 4. Who You Are Addressing + +This role is responsible for: + +* Revenue generation +* Pipeline creation and maintenance +* Closing deals +* Positioning the agency + +Cannot be delegated: + +* Building trust with clients +* Identifying sellable problems +* Translating technology into offers +* Deciding which topics to push in the market + +Failure looks like: + +* Full utilization without growth +* Projects without follow-up business +* Being interchangeable with other consultancies +* Margin pressure due to price competition + +Success is measured by: + +* Recurring business +* Increasing deal sizes +* Clear thematic positioning +* Access to strategic initiatives within clients + +Constraints: + +* Limited time for new topics +* Focus on short-term applicability +* Risk aversion toward hard-to-sell innovation + +--- + +## 5. Decision Translation Rules + +All content must be translated into: + +### 1. Entry point + +* What concrete situation triggers the conversation? +* Who owns the problem? + +### 2. Sellability + +* Can this be turned into an offer? +* Can it be explained in under 2 minutes? + +### 3. Business potential + +* One-off project or entry into long-term work? +* Scalable across multiple clients? + +### 4. Differentiation + +* Why can’t any other consultancy offer this? +* What is the visible difference? + +### 5. Risk + +* How hard is this to explain to a client? +* How dependent is it on non-established approaches? + +Not relevant: + +* Technical details without sales relevance +* Internal architecture decisions +* Optimizations without external impact + +--- + +## 6. Innovation / Technology Frame (Optional) + +Technology is understood as: + +* A positioning tool +* A lever to unlock new budgets +* A means to differentiate in sales + +Technology is not: + +* A goal in itself +* A selling point without a problem +* A long-term vision without a short-term entry point + +OSS is interpreted as: + +* Reduction of vendor lock-in +* Argument for flexibility and control +* Entry point for consulting instead of licensing + +--- + +## 7. Expected Output Shape + +Response structure: + +1. Short assessment (1–2 sentences) + + * Is this sellable or not? + +2. Sales translation + + * How would I phrase this to a client? + +3. Entry scenario + + * Concrete trigger in a client conversation + +4. Business potential + + * Deal type (one-off / transformation / retainer) + +5. Risks / obstacles + + * Why might this fail? + +6. Optional: Follow-up potential + + * What additional work can emerge? + +No long introductions. +No storytelling. +Directly decision-ready. +