Compare commits

...
Author SHA1 Message Date
jarvis-at-skic 382a9cc670 docs: add real Corp v1 architecture and skill context
Build and publish Corp v1 Board portal / build (pull_request) Successful in 36s
2026-08-25 20:11:54 +00:00
jarvis-at-skic 661bcde0f2 docs: explain Corp v1 SDLC and rebuild diagrams
Build and publish Corp v1 Board portal / build (push) Successful in 35s
Merge PR #10: explain Corp v1 governance, channels, sessions, skills, handoffs, and verification; publish validated Draw.io diagrams.
2026-08-25 12:47:00 -07:00
10 changed files with 265 additions and 111 deletions
+24 -11
View File
@@ -1,7 +1,7 @@
---
id: context
title: "Context"
description: "See the governance channel, project sessions, repositories, and delivery platforms around the Corp v1 operating model."
description: "Identify the Corp v1 target system, the people who use or govern it, and the external collaboration, design, source, and delivery systems around it."
---
import Drawio from '@theme/Drawio';
@@ -9,19 +9,32 @@ import contextDiagram from '!!raw-loader!./diagrams/context.drawio';
# Context
Corp v1 is the **governed operating model for project delivery**. It is not an application runtime architecture. The Board supplies lifecycle authority and shared guardrails; project teams retain ownership of their scope, architecture, user experience, implementation, and release outcomes.
The target system on this page is the **Corp v1 Hermes delivery system**: one Hermes Agent operating through focused project sessions, specialised skills, tool integrations, and a durable evidence loop. It helps people govern and deliver projects; it does not replace human authority or become the application being built.
<Drawio content={contextDiagram} title="Corp v1 operating context" toolbar="zoom layers lightbox" responsive maxHeight={720} />
<Drawio content={contextDiagram} title="Corp v1 system context with human actors and external systems" toolbar="zoom layers lightbox" responsive maxHeight={760} />
## System boundary
## Human actors
The operating model joins four evidence-bearing environments:
| Actor | Relationship to the target system |
|---|---|
| **Corp v1 Board members** | Govern the portfolio. They approve project kickoff and closure, membership, the global operating model, and central `corp-v1-channel-*` reference changes. |
| **Project leads and contributors** | Use focused project channels to define value, approve solution work and Task admission, review architecture and UI/UX, implement changes, and accept releases. |
| **Prospective project sponsors and contributors** | May request or join a future Corp v1 project after Board approval, identity resolution, and explicit onboarding. They have no authority merely because they are interested. |
| **Solution users and reviewers** | Supply needs, feedback, usability evidence, and acceptance observations for a project solution. Their product input does not automatically grant Board or project decision rights. |
- **Discord** provides one `corp-v1-board` governance channel and seven focused channels per project.
- **Gitea** preserves decisions, documentation, application source, adopted skills, pull requests, and CI evidence.
- **Delivery platforms** publish documentation through LEGO Cloud Pages and applications through Harbor plus GitOps/Argo CD.
- **This Board portal** records project, team, member, repository, lifecycle, and verification state.
Hermes is an executing system participant, not a human approver. An agent message, CI result, silence, or inferred intent never substitutes for an approval reserved to a listed human actor.
One Hermes agent operates across multiple channel sessions. Project-adopted skills define each session's concern, approval rules, evidence requirements, and handoffs while preventing one project's decisions from silently changing another.
## External systems around the target
The model does not approve a project's target solution architecture. Each project must separately record its approved context, containers, requirements, decisions, UI/UX evidence, and implementation Tasks.
| System | How Corp v1 uses it |
|---|---|
| **Discord** | Carries Board governance and project channel sessions, human decisions, coordination, and handoff messages. |
| **Penpot** | Holds editable UI/UX design sources and review evidence before implementation. |
| **Gitea and Gitea Actions** | Preserve source, documentation, skills, decisions, pull requests, CI, and GitOps desired state. |
| **LEGO Cloud delivery platform** | Provides Pages, Harbor, Argo CD, the three-node Gondor v1 MicroK8s cluster, ingress, authentication, and deployed readback. |
## Target-system boundary
Inside the target system are Hermes Agent behavior, focused sessions, skill selection, tool execution, and evidence verification. Human decision rights remain outside that boundary. Discord, Penpot, Gitea, and the delivery platform are connected external systems with their own authority and state.
A project's product or service is also outside this boundary. Corp v1 can govern its lifecycle and operate its delivery path, but each project must maintain its own product context, requirements, architecture, UI/UX, security, data, and release decisions.
@@ -0,0 +1,35 @@
<mxfile host="app.diagrams.net" modified="2026-08-25T00:00:00.000Z" agent="Hermes Agent" version="26.0.16" type="device">
<diagram id="corp-v1-service-architecture-v1" name="CORP V1 — SERVICE ARCHITECTURE">
<mxGraphModel dx="2080" dy="920" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="2080" pageHeight="920" math="0" shadow="0" adaptiveColors="auto">
<root>
<mxCell id="0"/>
<mxCell id="1" parent="0"/>
<mxCell id="title" value="CORP V1 — SERVICE ARCHITECTURE" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;fontSize=24;fontStyle=1;fontColor=#102A43;" vertex="1" parent="1"><mxGeometry x="80" y="20" width="1920" height="40" as="geometry"/></mxCell>
<mxCell id="subtitle" value="Decisions → agent execution → source → CI → deployed evidence" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;fontSize=14;fontColor=#486581;" vertex="1" parent="1"><mxGeometry x="80" y="70" width="1920" height="40" as="geometry"/></mxCell>
<mxCell id="humans" value="HUMAN ACTORS · Board · project contributors · reviewers" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#E6FFFA;strokeColor=#0F766E;strokeWidth=2;fontColor=#102A43;fontSize=14;fontStyle=1;spacing=12;" vertex="1" parent="1"><mxGeometry x="80" y="180" width="240" height="160" as="geometry"/></mxCell>
<mxCell id="discord" value="DISCORD · Board governance · seven project channel sessions" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#E6FFFA;strokeColor=#0F766E;strokeWidth=2;fontColor=#102A43;fontSize=14;fontStyle=1;spacing=12;" vertex="1" parent="1"><mxGeometry x="360" y="180" width="240" height="160" as="geometry"/></mxCell>
<mxCell id="hermes" value="HERMES AGENT · sessions · skills · tools · verification" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#E6FFFA;strokeColor=#0F766E;strokeWidth=2;fontColor=#102A43;fontSize=14;fontStyle=1;spacing=12;" vertex="1" parent="1"><mxGeometry x="640" y="180" width="240" height="160" as="geometry"/></mxCell>
<mxCell id="gitea" value="GITEA · source · docs · skills · PRs · GitOps state" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#EFF6FF;strokeColor=#2563EB;strokeWidth=2;fontColor=#102A43;fontSize=14;fontStyle=1;spacing=12;" vertex="1" parent="1"><mxGeometry x="920" y="180" width="240" height="160" as="geometry"/></mxCell>
<mxCell id="actions" value="GITEA ACTIONS · exact-head validation · build · publication" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#EFF6FF;strokeColor=#2563EB;strokeWidth=2;fontColor=#102A43;fontSize=14;fontStyle=1;spacing=12;" vertex="1" parent="1"><mxGeometry x="1200" y="180" width="240" height="160" as="geometry"/></mxCell>
<mxCell id="pages" value="LEGO CLOUD PAGES · Board and project documentation" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#FAF5FF;strokeColor=#7E22CE;strokeWidth=2;fontColor=#102A43;fontSize=14;fontStyle=1;spacing=12;" vertex="1" parent="1"><mxGeometry x="1480" y="180" width="240" height="160" as="geometry"/></mxCell>
<mxCell id="access" value="ACCESS EDGE · Cloudflare · Keycloak · Nginx · oauth2-proxy" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#FAF5FF;strokeColor=#7E22CE;strokeWidth=2;fontColor=#102A43;fontSize=14;fontStyle=1;spacing=12;" vertex="1" parent="1"><mxGeometry x="1760" y="180" width="240" height="160" as="geometry"/></mxCell>
<mxCell id="penpot" value="PENPOT · journeys · prototypes · accessibility · design handoff" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#E6FFFA;strokeColor=#0F766E;strokeWidth=2;fontColor=#102A43;fontSize=14;fontStyle=1;spacing=12;" vertex="1" parent="1"><mxGeometry x="640" y="500" width="240" height="160" as="geometry"/></mxCell>
<mxCell id="harbor" value="HARBOR · immutable application images" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#FAF5FF;strokeColor=#7E22CE;strokeWidth=2;fontColor=#102A43;fontSize=14;fontStyle=1;spacing=12;" vertex="1" parent="1"><mxGeometry x="1200" y="500" width="240" height="160" as="geometry"/></mxCell>
<mxCell id="argocd" value="ARGO CD · reads GitOps state · reconciles desired state" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#FAF5FF;strokeColor=#7E22CE;strokeWidth=2;fontColor=#102A43;fontSize=14;fontStyle=1;spacing=12;" vertex="1" parent="1"><mxGeometry x="1480" y="500" width="240" height="160" as="geometry"/></mxCell>
<mxCell id="microk8s" value="GONDOR MICROK8S · 3 nodes · Pages and approved workloads" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#FAF5FF;strokeColor=#7E22CE;strokeWidth=2;fontColor=#102A43;fontSize=14;fontStyle=1;spacing=12;" vertex="1" parent="1"><mxGeometry x="1760" y="500" width="240" height="160" as="geometry"/></mxCell>
<mxCell id="e1" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;strokeColor=#475569;strokeWidth=3;endArrow=block;endFill=1;" edge="1" parent="1" source="humans" target="discord"><mxGeometry relative="1" as="geometry"/></mxCell>
<mxCell id="e2" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;strokeColor=#475569;strokeWidth=3;endArrow=block;endFill=1;" edge="1" parent="1" source="discord" target="hermes"><mxGeometry relative="1" as="geometry"/></mxCell>
<mxCell id="e3" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;strokeColor=#475569;strokeWidth=3;endArrow=block;endFill=1;" edge="1" parent="1" source="hermes" target="gitea"><mxGeometry relative="1" as="geometry"/></mxCell>
<mxCell id="e4" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;strokeColor=#475569;strokeWidth=3;endArrow=block;endFill=1;" edge="1" parent="1" source="gitea" target="actions"><mxGeometry relative="1" as="geometry"/></mxCell>
<mxCell id="e5" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;strokeColor=#475569;strokeWidth=3;endArrow=block;endFill=1;" edge="1" parent="1" source="actions" target="pages"><mxGeometry relative="1" as="geometry"/></mxCell>
<mxCell id="e6" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;strokeColor=#475569;strokeWidth=3;endArrow=block;endFill=1;" edge="1" parent="1" source="pages" target="access"><mxGeometry relative="1" as="geometry"/></mxCell>
<mxCell id="penpot-arrow" value="DESIGN" style="shape=singleArrow;direction=north;whiteSpace=wrap;html=1;fillColor=#0F766E;strokeColor=#0F766E;fontColor=#FFFFFF;fontSize=11;fontStyle=1;" vertex="1" parent="1"><mxGeometry x="720" y="380" width="80" height="80" as="geometry"/></mxCell>
<mxCell id="actions-arrow" value="IMAGE" style="shape=singleArrow;direction=south;whiteSpace=wrap;html=1;fillColor=#7E22CE;strokeColor=#7E22CE;fontColor=#FFFFFF;fontSize=11;fontStyle=1;" vertex="1" parent="1"><mxGeometry x="1280" y="380" width="80" height="80" as="geometry"/></mxCell>
<mxCell id="e9" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;strokeColor=#7E22CE;strokeWidth=3;endArrow=block;endFill=1;" edge="1" parent="1" source="harbor" target="argocd"><mxGeometry relative="1" as="geometry"/></mxCell>
<mxCell id="e10" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;strokeColor=#7E22CE;strokeWidth=3;endArrow=block;endFill=1;" edge="1" parent="1" source="argocd" target="microk8s"><mxGeometry relative="1" as="geometry"/></mxCell>
<mxCell id="runtime-arrow" value="RUNTIME" style="shape=singleArrow;direction=north;whiteSpace=wrap;html=1;fillColor=#7E22CE;strokeColor=#7E22CE;fontColor=#FFFFFF;fontSize=10;fontStyle=1;" vertex="1" parent="1"><mxGeometry x="1840" y="380" width="80" height="80" as="geometry"/></mxCell>
<mxCell id="evidence" value="DELIVERY CLAIM = EXACT-COMMIT CI + DEPLOYED PAGE OR RUNTIME READBACK" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#F8FAFC;strokeColor=#64748B;strokeWidth=2;fontColor=#102A43;fontSize=16;fontStyle=1;align=center;" vertex="1" parent="1"><mxGeometry x="360" y="780" width="1360" height="80" as="geometry"/></mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>
@@ -1,78 +1,24 @@
<mxfile host="app.diagrams.net" modified="2026-08-24T00:00:00.000Z" agent="Hermes Agent" version="26.0.16" type="device">
<diagram id="corp-v1-corp-v1-—-operating-context" name="CORP V1 — OPERATING CONTEXT">
<mxGraphModel dx="1500" dy="900" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1500" pageHeight="900" math="0" shadow="0">
<mxfile host="app.diagrams.net" modified="2026-08-25T00:00:00.000Z" agent="Hermes Agent" version="26.0.16" type="device">
<diagram id="corp-v1-system-context-v2" name="CORP V1 — SYSTEM CONTEXT">
<mxGraphModel dx="1440" dy="960" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1440" pageHeight="960" math="0" shadow="0" adaptiveColors="auto">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="title" value="CORP V1 — OPERATING CONTEXT" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;fontSize=24;fontStyle=1;fontColor=#102A43;" vertex="1" parent="1">
<mxGeometry x="80" y="20" width="1200" height="40" as="geometry" />
</mxCell>
<mxCell id="subtitle" value="Governed delivery: people, collaboration, source control, and runtime evidence" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;fontSize=14;fontColor=#486581;" vertex="1" parent="1">
<mxGeometry x="80" y="60" width="1300" height="40" as="geometry" />
</mxCell>
<mxCell id="board" value="Corp v1 Board Lifecycle authority and portfolio decisions" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#E6FFFA;strokeColor=#0F766E;strokeWidth=2;fontColor=#102A43;fontSize=14;spacing=12;" vertex="1" parent="1">
<mxGeometry x="80" y="320" width="280" height="120" as="geometry" />
</mxCell>
<mxCell id="model" value="Corp v1 operating model Governance portal + approved operating contract" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#EFF6FF;strokeColor=#2563EB;strokeWidth=2;fontColor=#102A43;fontSize=14;spacing=12;" vertex="1" parent="1">
<mxGeometry x="520" y="280" width="400" height="200" as="geometry" />
</mxCell>
<mxCell id="teams" value="Project teams Human owners and Hermes/code agents" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#FFF7ED;strokeColor=#C2410C;strokeWidth=2;fontColor=#102A43;fontSize=14;spacing=12;" vertex="1" parent="1">
<mxGeometry x="1080" y="120" width="320" height="120" as="geometry" />
</mxCell>
<mxCell id="collab" value="Discord operating channels One Board channel + seven project workspaces" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#FAF5FF;strokeColor=#7E22CE;strokeWidth=2;fontColor=#102A43;fontSize=14;spacing=12;" vertex="1" parent="1">
<mxGeometry x="1080" y="280" width="320" height="120" as="geometry" />
</mxCell>
<mxCell id="source" value="Gitea organizations and repositories Versioned source, decisions, skills, CI" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#F0FDF4;strokeColor=#15803D;strokeWidth=2;fontColor=#102A43;fontSize=14;spacing=12;" vertex="1" parent="1">
<mxGeometry x="1080" y="440" width="320" height="120" as="geometry" />
</mxCell>
<mxCell id="platform" value="Delivery platform Pages · Harbor · GitOps/Argo CD · runtimes" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#FFF1F2;strokeColor=#BE123C;strokeWidth=2;fontColor=#102A43;fontSize=14;spacing=12;" vertex="1" parent="1">
<mxGeometry x="1080" y="600" width="320" height="120" as="geometry" />
</mxCell>
<mxCell id="e0" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#0F766E;strokeWidth=2;endArrow=block;endFill=1;fontSize=12;fontColor=#334E68;labelBackgroundColor=#FFFFFF;" edge="1" parent="1" source="board" target="model">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="e1" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#2563EB;strokeWidth=2;endArrow=block;endFill=1;fontSize=12;fontColor=#334E68;labelBackgroundColor=#FFFFFF;" edge="1" parent="1" source="model" target="teams">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="1000" y="380" />
<mxPoint x="1000" y="180" />
<mxPoint x="1060" y="180" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="e2" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#2563EB;strokeWidth=2;endArrow=block;endFill=1;fontSize=12;fontColor=#334E68;labelBackgroundColor=#FFFFFF;" edge="1" parent="1" source="model" target="collab">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="1000" y="380" />
<mxPoint x="1060" y="380" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="e3" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#2563EB;strokeWidth=2;endArrow=block;endFill=1;fontSize=12;fontColor=#334E68;labelBackgroundColor=#FFFFFF;" edge="1" parent="1" source="model" target="source">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="1000" y="380" />
<mxPoint x="1000" y="500" />
<mxPoint x="1060" y="500" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="e4" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#15803D;strokeWidth=2;endArrow=block;endFill=1;fontSize=12;fontColor=#334E68;labelBackgroundColor=#FFFFFF;" edge="1" parent="1" source="source" target="platform">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="e5" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#BE123C;strokeWidth=2;endArrow=block;endFill=1;fontSize=12;fontColor=#334E68;labelBackgroundColor=#FFFFFF;" edge="1" parent="1" source="platform" target="model">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="1040" y="660" />
<mxPoint x="1000" y="660" />
<mxPoint x="1000" y="760" />
<mxPoint x="440" y="760" />
<mxPoint x="440" y="380" />
<mxPoint x="500" y="380" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="0"/>
<mxCell id="1" parent="0"/>
<mxCell id="title" value="CORP V1 — SYSTEM CONTEXT" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;fontSize=24;fontStyle=1;fontColor=#102A43;" vertex="1" parent="1"><mxGeometry x="80" y="20" width="1280" height="40" as="geometry"/></mxCell>
<mxCell id="subtitle" value="Target system, human authority, current integrations, and future participants" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;fontSize=14;fontColor=#486581;" vertex="1" parent="1"><mxGeometry x="80" y="70" width="1280" height="40" as="geometry"/></mxCell>
<mxCell id="actors-label" value="HUMAN ACTORS" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;fontSize=16;fontStyle=1;fontColor=#334E68;" vertex="1" parent="1"><mxGeometry x="80" y="120" width="1280" height="40" as="geometry"/></mxCell>
<mxCell id="board" value="BOARD MEMBERS · portfolio authority · lifecycle · global policy" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#E6FFFA;strokeColor=#0F766E;strokeWidth=2;fontColor=#102A43;fontSize=14;fontStyle=1;spacing=12;" vertex="1" parent="1"><mxGeometry x="80" y="180" width="400" height="120" as="geometry"/></mxCell>
<mxCell id="teams" value="PROJECT LEADS &amp; CONTRIBUTORS · decisions · design · delivery" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#E6FFFA;strokeColor=#0F766E;strokeWidth=2;fontColor=#102A43;fontSize=14;fontStyle=1;spacing=12;" vertex="1" parent="1"><mxGeometry x="520" y="180" width="400" height="120" as="geometry"/></mxCell>
<mxCell id="future" value="FUTURE SPONSORS &amp; USERS · requests · feedback · acceptance" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#E6FFFA;strokeColor=#0F766E;strokeWidth=2;fontColor=#102A43;fontSize=14;fontStyle=1;spacing=12;" vertex="1" parent="1"><mxGeometry x="960" y="180" width="400" height="120" as="geometry"/></mxCell>
<mxCell id="actor-relation" value="GOVERN · DIRECT · COLLABORATE · REVIEW" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#0F766E;strokeColor=#0F766E;fontColor=#FFFFFF;fontSize=14;fontStyle=1;align=center;" vertex="1" parent="1"><mxGeometry x="480" y="340" width="480" height="40" as="geometry"/></mxCell>
<mxCell id="target" value="TARGET SYSTEM · CORP V1 HERMES · agent · sessions · skills · evidence" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#EFF6FF;strokeColor=#2563EB;strokeWidth=3;fontColor=#102A43;fontSize=18;fontStyle=1;spacing=20;align=center;" vertex="1" parent="1"><mxGeometry x="320" y="420" width="800" height="160" as="geometry"/></mxCell>
<mxCell id="system-relation" value="COMMUNICATE · DESIGN · PERSIST · BUILD · DEPLOY · VERIFY" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#2563EB;strokeColor=#2563EB;fontColor=#FFFFFF;fontSize=14;fontStyle=1;align=center;" vertex="1" parent="1"><mxGeometry x="440" y="620" width="560" height="40" as="geometry"/></mxCell>
<mxCell id="systems-label" value="CONNECTED EXTERNAL SYSTEMS" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;fontSize=16;fontStyle=1;fontColor=#334E68;" vertex="1" parent="1"><mxGeometry x="80" y="700" width="1280" height="40" as="geometry"/></mxCell>
<mxCell id="discord" value="DISCORD · governance and project sessions" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#FAF5FF;strokeColor=#7E22CE;strokeWidth=2;fontColor=#102A43;fontSize=14;fontStyle=1;spacing=12;" vertex="1" parent="1"><mxGeometry x="80" y="780" width="280" height="120" as="geometry"/></mxCell>
<mxCell id="penpot" value="PENPOT · UI/UX sources and review" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#FAF5FF;strokeColor=#7E22CE;strokeWidth=2;fontColor=#102A43;fontSize=14;fontStyle=1;spacing=12;" vertex="1" parent="1"><mxGeometry x="400" y="780" width="280" height="120" as="geometry"/></mxCell>
<mxCell id="gitea" value="GITEA · source · skills · PRs · Actions · GitOps" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#FAF5FF;strokeColor=#7E22CE;strokeWidth=2;fontColor=#102A43;fontSize=14;fontStyle=1;spacing=12;" vertex="1" parent="1"><mxGeometry x="720" y="780" width="280" height="120" as="geometry"/></mxCell>
<mxCell id="platform" value="LEGO CLOUD · Pages · Harbor · Argo CD · MicroK8s · access" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#FAF5FF;strokeColor=#7E22CE;strokeWidth=2;fontColor=#102A43;fontSize=14;fontStyle=1;spacing=12;" vertex="1" parent="1"><mxGeometry x="1040" y="780" width="280" height="120" as="geometry"/></mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>
</mxfile>
@@ -1,10 +1,10 @@
<mxfile host="app.diagrams.net" modified="2026-08-25T00:00:00.000Z" agent="Hermes Agent" version="26.0.16" type="device">
<diagram id="corp-v1-project-operating-flow-v2" name="CORP V1 — PROJECT OPERATING FLOW">
<diagram id="corp-v1-operating-model-v3" name="CORP V1 — OPERATING MODEL FLOW">
<mxGraphModel dx="1500" dy="960" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1500" pageHeight="960" math="0" shadow="0" adaptiveColors="auto">
<root>
<mxCell id="0"/>
<mxCell id="1" parent="0"/>
<mxCell id="title" value="CORP V1 — PROJECT OPERATING FLOW" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;fontSize=24;fontStyle=1;fontColor=#102A43;" vertex="1" parent="1"><mxGeometry x="80" y="20" width="1360" height="40" as="geometry"/></mxCell>
<mxCell id="title" value="CORP V1 — OPERATING MODEL FLOW" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;fontSize=24;fontStyle=1;fontColor=#102A43;" vertex="1" parent="1"><mxGeometry x="80" y="20" width="1360" height="40" as="geometry"/></mxCell>
<mxCell id="subtitle" value="One agent · multiple channel sessions · explicit human gates · durable evidence" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;fontSize=14;fontColor=#486581;" vertex="1" parent="1"><mxGeometry x="80" y="70" width="1360" height="40" as="geometry"/></mxCell>
<mxCell id="board" value="1 · CORP-V1-BOARD · BOARD APPROVAL · purpose · lead · members" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#E6FFFA;strokeColor=#0F766E;strokeWidth=2;fontColor=#102A43;fontSize=14;fontStyle=1;spacing=12;" vertex="1" parent="1"><mxGeometry x="80" y="160" width="240" height="160" as="geometry"/></mxCell>
<mxCell id="general" value="2 · GENERAL · onboarding · coordination · questions · outcomes" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#E6FFFA;strokeColor=#0F766E;strokeWidth=2;fontColor=#102A43;fontSize=14;fontStyle=1;spacing=12;" vertex="1" parent="1"><mxGeometry x="360" y="160" width="240" height="160" as="geometry"/></mxCell>
@@ -0,0 +1,22 @@
<mxfile host="app.diagrams.net" modified="2026-08-25T00:00:00.000Z" agent="Hermes Agent" version="26.0.16" type="device">
<diagram id="corp-v1-skills-model-v1" name="CORP V1 — SKILLS MODEL">
<mxGraphModel dx="1840" dy="760" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1840" pageHeight="760" math="0" shadow="0" adaptiveColors="auto">
<root>
<mxCell id="0"/>
<mxCell id="1" parent="0"/>
<mxCell id="title" value="CORP V1 — SKILLS MODEL" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;fontSize=24;fontStyle=1;fontColor=#102A43;" vertex="1" parent="1"><mxGeometry x="80" y="20" width="1680" height="40" as="geometry"/></mxCell>
<mxCell id="subtitle" value="Central references → deliberate project adoption → focused execution" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;fontSize=14;fontColor=#486581;" vertex="1" parent="1"><mxGeometry x="80" y="70" width="1680" height="40" as="geometry"/></mxCell>
<mxCell id="central" value="CENTRAL SOURCES · governance · 7 channels · 7 engineering" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#E6FFFA;strokeColor=#0F766E;strokeWidth=2;fontColor=#102A43;fontSize=15;fontStyle=1;spacing=16;" vertex="1" parent="1"><mxGeometry x="80" y="180" width="360" height="200" as="geometry"/></mxCell>
<mxCell id="adoption" value="DELIBERATE ADOPTION · compare · preserve authority · record source SHA" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#EFF6FF;strokeColor=#2563EB;strokeWidth=2;fontColor=#102A43;fontSize=15;fontStyle=1;spacing=16;" vertex="1" parent="1"><mxGeometry x="520" y="180" width="360" height="200" as="geometry"/></mxCell>
<mxCell id="project" value="PROJECT COPIES · 14 repositories · suffix --code · local decisions" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#EFF6FF;strokeColor=#2563EB;strokeWidth=2;fontColor=#102A43;fontSize=15;fontStyle=1;spacing=16;" vertex="1" parent="1"><mxGeometry x="960" y="180" width="360" height="200" as="geometry"/></mxCell>
<mxCell id="session" value="FOCUSED SESSION · mapped channel skill + execution skills on demand" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#FAF5FF;strokeColor=#7E22CE;strokeWidth=2;fontColor=#102A43;fontSize=15;fontStyle=1;spacing=16;" vertex="1" parent="1"><mxGeometry x="1400" y="180" width="360" height="200" as="geometry"/></mxCell>
<mxCell id="e1" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;strokeColor=#475569;strokeWidth=3;endArrow=block;endFill=1;" edge="1" parent="1" source="central" target="adoption"><mxGeometry relative="1" as="geometry"/></mxCell>
<mxCell id="e2" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;strokeColor=#475569;strokeWidth=3;endArrow=block;endFill=1;" edge="1" parent="1" source="adoption" target="project"><mxGeometry relative="1" as="geometry"/></mxCell>
<mxCell id="e3" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;strokeColor=#475569;strokeWidth=3;endArrow=block;endFill=1;" edge="1" parent="1" source="project" target="session"><mxGeometry relative="1" as="geometry"/></mxCell>
<mxCell id="shared" value="SHARED GLOBAL · drawio-main · glossary · Discord · Gitea operations" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#F8FAFC;strokeColor=#64748B;strokeWidth=2;fontColor=#102A43;fontSize=14;fontStyle=1;spacing=14;" vertex="1" parent="1"><mxGeometry x="80" y="500" width="520" height="120" as="geometry"/></mxCell>
<mxCell id="engineering" value="ENGINEERING ON DEMAND · debugging · TDD · review · QA" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#F8FAFC;strokeColor=#64748B;strokeWidth=2;fontColor=#102A43;fontSize=14;fontStyle=1;spacing=14;" vertex="1" parent="1"><mxGeometry x="640" y="500" width="520" height="120" as="geometry"/></mxCell>
<mxCell id="runtime" value="RUNTIME ON DEMAND · Gondor · Argo CD · MicroK8s · readback" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#F8FAFC;strokeColor=#64748B;strokeWidth=2;fontColor=#102A43;fontSize=14;fontStyle=1;spacing=14;" vertex="1" parent="1"><mxGeometry x="1200" y="500" width="520" height="120" as="geometry"/></mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>
@@ -0,0 +1,36 @@
---
id: operating-model
title: "Operating Model"
description: "Follow the single-agent, multi-session Corp v1 pilot from Board governance through design, delivery, release, and verified evidence."
---
import Drawio from '@theme/Drawio';
import operatingModelDiagram from '!!raw-loader!./diagrams/operating-model.drawio';
# Operating Model
Corp v1 is an SDLC operating-model pilot: **one AI agent works across multiple focused Discord sessions, each governed by specialised project skills and explicit human decision rights**. Every approved project repeats the same flow while keeping its decisions, repositories, and delivery evidence isolated.
<Drawio content={operatingModelDiagram} title="Corp v1 governed project operating flow" toolbar="zoom layers lightbox" responsive maxHeight={820} />
## How the setup fits together
1. **`corp-v1-board` governs the portfolio.** Listed Board members approve project kickoffs, closures, membership changes, and changes to the global operating model.
2. **General establishes the project workspace.** It handles onboarding, shared coordination, questions, and broadcasts verified outcomes.
3. **Scope decides what creates value.** Ideas become Epics and Features; a human project member approves an exact Feature for solution work.
4. **Architecture decides how the system should work.** Requirements, ADRs, interfaces, constraints, and implementation Tasks become durable project evidence.
5. **UI/UX makes the frontend experience implementable.** User journeys, information architecture, accessibility, Penpot designs, prototypes, and handoff evidence bridge Architecture and execution.
6. **Kanban controls admission and flow.** A human project member admits an exact Task to Focus before Delivery may execute it.
7. **Delivery produces a reviewed candidate.** Work proceeds through branches, pull requests, exact-head validation, and reviewable implementation evidence.
8. **Releases control deployment and outcomes.** Immutable artifacts, risk, rollback, deployment, acceptance, and post-release evidence are assessed explicitly.
9. **Verification closes the evidence loop.** Hermes reads the deployed page or runtime back, updates project documentation and the Board portal, and reports remaining gates honestly.
## Why sessions and skills are separated
Each channel is a concern boundary with its own session. The same agent can coordinate the whole project, while the loaded project-adopted channel skill prevents responsibilities and approval rules from blurring together. The project uses seven channel skills to define the workspaces and seven engineering skills to provide reusable execution practices.
Project copies preserve project-specific authority, terminology, repository links, environment namespaces, and operating lessons. Central skill changes are compared and deliberately adopted; they never silently overwrite project decisions.
## Automation boundary
Corp v1 projects and channels do **not** use cronjobs or scheduler jobs under the current approved model. Work advances through explicit human decisions, Discord events, reviewed repository changes, exact-commit CI, and deployed readback.
@@ -0,0 +1,74 @@
---
id: overview-skills
title: "Overview Skills"
description: "Understand Corp v1 governance and channel skills, project-adopted copies, mandatory engineering skills, and useful shared Hermes skills."
---
import Drawio from '@theme/Drawio';
import skillsDiagram from '!!raw-loader!./diagrams/skills.drawio';
# Overview Skills
Skills are the operating instructions loaded by Hermes for a task. They are **versioned guidance**, not autonomous workers and not substitutes for human approval. Corp v1 combines a central governance layer, channel-specific references, deliberate project adoptions, and useful generic execution skills.
<Drawio content={skillsDiagram} title="Corp v1 central, adopted, and shared skill model" toolbar="zoom layers lightbox" responsive maxHeight={720} />
## Central `corp-v1-*` skills
The central sources live in [`home-v1-skills-code-agent`](https://gitea.lego-cloud.eu/home-v1-skills-code-agent):
| Skill | Purpose |
|---|---|
| [`corp-v1--main`](https://gitea.lego-cloud.eu/home-v1-skills-code-agent/corp-v1--main) | Board authority, project lifecycle, resource model, membership, adoption, publication, and verification rules. |
| [`corp-v1--glossary`](https://gitea.lego-cloud.eu/home-v1-skills-code-agent/corp-v1--glossary) | Shared terminology and rules for keeping canonical definitions in project documentation. |
| [`corp-v1-channel-general`](https://gitea.lego-cloud.eu/home-v1-skills-code-agent/corp-v1-channel-general) | Onboarding, coordination, questions, and outcome broadcasts. |
| [`corp-v1-channel-scope`](https://gitea.lego-cloud.eu/home-v1-skills-code-agent/corp-v1-channel-scope) | Ideas, Epics, Features, value, acceptance outcomes, and human solution approval. |
| [`corp-v1-channel-architecture`](https://gitea.lego-cloud.eu/home-v1-skills-code-agent/corp-v1-channel-architecture) | Requirements, ADRs, interfaces, constraints, system design, and implementation Tasks. |
| [`corp-v1-channel-ui-ux`](https://gitea.lego-cloud.eu/home-v1-skills-code-agent/corp-v1-channel-ui-ux) | Journeys, information architecture, Penpot, accessibility, prototypes, and implementation handoff. |
| [`corp-v1-channel-kanban`](https://gitea.lego-cloud.eu/home-v1-skills-code-agent/corp-v1-channel-kanban) | Board/Focus visibility, dependencies, flow, blockers, and explicit Task admission. |
| [`corp-v1-channel-delivery`](https://gitea.lego-cloud.eu/home-v1-skills-code-agent/corp-v1-channel-delivery) | Planning, implementation, reviews, exact-head CI, blockers, and delivery evidence. |
| [`corp-v1-channel-releases`](https://gitea.lego-cloud.eu/home-v1-skills-code-agent/corp-v1-channel-releases) | Readiness, versioning, deployment, rollback, acceptance, and post-release outcomes. |
## Project-adopted skills
Every project owns fourteen adopted repositories in `corp-v1-<code>-skills-code-agent`:
- seven channel skills named `corp-v1-channel-<channel>--<code>`;
- seven engineering skills named `<source-skill>--<code>`.
A project adoption records the central source branch and commit, then adds the project code, repository links, environment namespace, approved authority, and operating lessons. Central updates are compared and adopted semantically; they never silently overwrite project-specific decisions or authorization overrides.
At runtime, a focused channel session loads its mapped project channel skill plus only the engineering or global skills needed for the current work.
## Mandatory engineering skills
These generic sources become project-owned copies during kickoff:
| Source skill | Used for |
|---|---|
| [`development-branching-strategy`](https://gitea.lego-cloud.eu/home-v1-skills-code-agent/development-branching-strategy) | Branches, pull requests, integration, and release branching. |
| [`development-gitops-argo-cd`](https://gitea.lego-cloud.eu/home-v1-skills-code-agent/development-gitops-argo-cd) | GitOps repositories, environments, Argo CD applications, and reconciliation evidence. |
| [`development-monorepo-pnpm`](https://gitea.lego-cloud.eu/home-v1-skills-code-agent/development-monorepo-pnpm) | pnpm/TypeScript monorepo structure, applications, packages, and workspace validation. |
| [`development-scripts`](https://gitea.lego-cloud.eu/home-v1-skills-code-agent/development-scripts) | Taskfiles, `.scripts`, environment handling, logging, and Devbox. |
| [`devsecops-ci-cd-gitea`](https://gitea.lego-cloud.eu/home-v1-skills-code-agent/devsecops-ci-cd-gitea) | Gitea Actions, validation, Harbor publication, and delivery gates. |
| [`documentation-docusaurus`](https://gitea.lego-cloud.eu/home-v1-skills-code-agent/documentation-docusaurus) | Docusaurus structure, content quality, diagrams, build, and Pages publication. |
| [`template-engine-copier`](https://gitea.lego-cloud.eu/home-v1-skills-code-agent/template-engine-copier) | Copier/Jinja templates and reusable project scaffolding. |
## Useful shared generic skills
These are loaded globally when relevant; they are not additional mandatory project repositories:
| Skill | Useful when |
|---|---|
| [`drawio-main`](https://gitea.lego-cloud.eu/home-v1-skills-code-agent/drawio-main) | Creating and validating editable architecture diagrams with layout and connector quality gates. |
| [`home-v1-discord`](https://gitea.lego-cloud.eu/home-v1-skills-code-agent/home-v1-discord) | Discovering and operating Discord channels, permissions, messages, pins, and effective access. |
| `gitea-repository-operations` | Discovering, creating, changing, and independently reading back Gitea organizations, teams, repositories, PRs, and refs. |
| `systematic-debugging` | Investigating a defect from evidence and root cause before applying a fix. |
| `test-driven-development` | Building behavior through RED, GREEN, and refactoring. |
| `requesting-code-review` | Applying pre-commit security and quality gates and resolving findings. |
| `dogfood` | Performing evidence-backed exploratory QA of deployed web applications. |
| `gondor-v1-nodes` | Inspecting Argo CD, MicroK8s workloads, images, routes, and runtime evidence on Gondor v1. |
## Selection rule
The channel skill defines **why the work belongs here and which approvals and artifacts are required**. Engineering and generic skills define **how to execute the work safely**. If instructions conflict, explicit Corp v1 governance and preserved project authority win. No skill grants a human approval that has not actually been given.
+33 -19
View File
@@ -1,36 +1,50 @@
---
id: overview
title: "Overview"
description: "Follow the single-agent, multi-session Corp v1 pilot from Board governance through design, delivery, release, and verified evidence."
description: "See the real Corp v1 service architecture: people and Discord, Hermes Agent, Gitea, CI, Pages, Harbor, Argo CD, and Gondor MicroK8s."
---
import Drawio from '@theme/Drawio';
import overviewDiagram from '!!raw-loader!./diagrams/overview.drawio';
import architectureDiagram from '!!raw-loader!./diagrams/architecture-overview.drawio';
# Overview
Corp v1 is an SDLC operating-model pilot: **one AI agent works across multiple focused Discord sessions, each governed by specialised project skills and explicit human decision rights**. Every approved project repeats the same flow while keeping its decisions, repositories, and delivery evidence isolated.
This is the **deployed service architecture around Corp v1 today**. It is different from the [Operating Model](/architecture-high-level/operating-model/): the operating model explains how work moves; this page shows which services perform and preserve that work.
<Drawio content={overviewDiagram} title="Corp v1 governed project operating flow" toolbar="zoom layers lightbox" responsive maxHeight={820} />
<Drawio content={architectureDiagram} title="Corp v1 deployed service architecture" toolbar="zoom layers lightbox" responsive maxHeight={820} />
## How the setup fits together
## Services in the current setup
1. **`corp-v1-board` governs the portfolio.** Listed Board members approve project kickoffs, closures, membership changes, and changes to the global operating model.
2. **General establishes the project workspace.** It handles onboarding, shared coordination, questions, and broadcasts verified outcomes.
3. **Scope decides what creates value.** Ideas become Epics and Features; a human project member approves an exact Feature for solution work.
4. **Architecture decides how the system should work.** Requirements, ADRs, interfaces, constraints, and implementation Tasks become durable project evidence.
5. **UI/UX makes the frontend experience implementable.** User journeys, information architecture, accessibility, Penpot designs, prototypes, and handoff evidence bridge Architecture and execution.
6. **Kanban controls admission and flow.** A human project member admits an exact Task to Focus before Delivery may execute it.
7. **Delivery produces a reviewed candidate.** Work proceeds through branches, pull requests, exact-head validation, and reviewable implementation evidence.
8. **Releases control deployment and outcomes.** Immutable artifacts, risk, rollback, deployment, acceptance, and post-release evidence are assessed explicitly.
9. **Verification closes the evidence loop.** Hermes reads the deployed page or runtime back, updates project documentation and the Board portal, and reports remaining gates honestly.
| Service | Current role in Corp v1 |
|---|---|
| **Discord** | Human interaction surface: one `corp-v1-board` governance channel and seven focused sessions per project. |
| **Hermes Agent** | The executing AI agent. It loads channel and engineering skills, uses connected tools, changes repositories, observes CI and runtime state, and reports evidence. It is not placed inside the Kubernetes cluster in this model. |
| **Penpot** | Current UI/UX design workspace for journeys, information architecture, prototypes, accessibility review, and implementation handoff. |
| **Gitea** | Durable source and collaboration system for the Board portal, project documentation, application source, adopted skills, branches, pull requests, decisions, and GitOps repositories. |
| **Gitea Actions** | Self-hosted validation and publication. Exact-head runs are part of delivery evidence. |
| **LEGO Cloud Pages** | Publishes the Board and project Docusaurus portals through the `pages` workload. The current `0500-pages` Argo CD application is `Synced / Healthy`. |
| **Harbor** | Stores immutable application images. The current `0200-harbor` Argo CD application is `Synced / Healthy`. |
| **Argo CD** | Reconciles GitOps desired state into Gondor v1. The current AeroSim application is `Synced / Healthy`; a project is not shown as deployed merely because a repository exists. |
| **Gondor v1 MicroK8s** | Three-node Kubernetes runtime: Osgiliath plus two Minas Tirith workers. It currently hosts Pages and approved application workloads. |
| **Access edge** | Cloudflare and Osgiliath Nginx route public traffic. Pages uses `pages-oauth2-proxy`, with Keycloak providing the observed sign-in boundary. |
## Why sessions and skills are separated
## Documentation delivery path
Each channel is a concern boundary with its own session. The same agent can coordinate the whole project, while the loaded project-adopted channel skill prevents responsibilities and approval rules from blurring together. The project uses seven channel skills to define the workspaces and seven engineering skills to provide reusable execution practices.
1. Hermes or a human contributor changes an editable source in Gitea.
2. Gitea Actions validates the exact commit and builds Docusaurus.
3. The Pages publication workload serves the built route.
4. Protected readers pass through the access boundary.
5. Hermes verifies distinctive content through the authorized Pages service path before claiming completion.
Project copies preserve project-specific authority, terminology, repository links, environment namespaces, and operating lessons. Central skill changes are compared and deliberately adopted; they never silently overwrite project decisions.
## Application delivery path
## Automation boundary
1. Project source and GitOps desired state are reviewed in Gitea.
2. Gitea Actions validates the exact commit and publishes an immutable image to Harbor when credentials and policy gates are satisfied.
3. Argo CD reconciles approved desired state into the target MicroK8s namespace.
4. Runtime pod readiness, image identity, service route, and user-visible behavior are read back.
Corp v1 projects and channels do **not** use cronjobs or scheduler jobs under the current approved model. Work advances through explicit human decisions, Discord events, reviewed repository changes, exact-commit CI, and deployed readback.
Penpot evidence enters this flow through reviewed links and project documentation; it does not replace versioned requirements, ADRs, code, or release evidence.
## Boundaries of truth
Discord and agent sessions coordinate work, but they are not the only durable record. Approved decisions, current architecture, source, adopted skills, and delivery evidence are persisted in Gitea-backed documentation. CI success proves validation; deployed readback proves publication or runtime behavior. The two are required together when delivery is claimed.
+17 -5
View File
@@ -79,7 +79,9 @@ const sidebars: SidebarsConfig = {
architectureHighLevelSidebar: [
{type: 'doc', id: 'context', label: 'Context'},
{type: 'doc', id: 'overview', label: 'Overview'},
{type: 'doc', id: 'operating-model', label: 'Operating Model'},
{type: 'doc', id: 'overview-channels', label: 'Overview Channels'},
{type: 'doc', id: 'overview-skills', label: 'Overview Skills'},
{type: 'doc', id: 'overview-repositories', label: 'Overview Repositories'},
],
};
@@ -88,27 +90,37 @@ export default sidebars;`;
assert.equal(
architectureSidebar.trim(),
expectedArchitectureSidebar,
'Architecture High Level sidebar must contain exactly the four requested documents in order',
'Architecture High Level sidebar must contain exactly the six requested documents in order',
);
const architecturePages = {
context: read('docs/architecture-high-level/context.mdx'),
overview: read('docs/architecture-high-level/overview.mdx'),
operatingModel: read('docs/architecture-high-level/operating-model.mdx'),
channels: read('docs/architecture-high-level/overview-channels.mdx'),
skills: read('docs/architecture-high-level/overview-skills.mdx'),
repositories: read('docs/architecture-high-level/overview-repositories.mdx'),
};
for (const [name, page] of Object.entries(architecturePages)) {
assert.match(page, /!!raw-loader!\.\/diagrams\/.+\.drawio/, `${name} page must render an editable Draw.io source`);
}
for (const term of ['seven channel skills', 'seven engineering skills', 'Gitea Actions', 'scheduler jobs', 'corp-v1-board', 'UI/UX', 'one AI agent']) {
for (const term of ['seven channel skills', 'seven engineering skills', 'Gitea Actions', 'scheduler jobs', 'corp-v1-board', 'UI/UX', 'one AI agent', 'Hermes Agent', 'MicroK8s', 'Penpot', 'Argo CD', 'Harbor']) {
assert.ok(Object.values(architecturePages).some((page) => page.includes(term)), `architecture explanation is missing: ${term}`);
}
for (const term of ['Corp v1 Board members', 'Project leads and contributors', 'Prospective project sponsors and contributors', 'Solution users and reviewers']) {
assert.ok(architecturePages.context.includes(term), `system context is missing actor: ${term}`);
}
for (const term of ['corp-v1--main', 'corp-v1-channel-ui-ux', 'development-gitops-argo-cd', 'drawio-main', 'systematic-debugging', 'gondor-v1-nodes']) {
assert.ok(architecturePages.skills.includes(term), `skills overview is missing: ${term}`);
}
for (const [name, page] of Object.entries(architecturePages)) {
assert.doesNotMatch(page, /exactly six|six project channels|six channel skills|thirteen adopted skill/i, `${name} retains the superseded six-channel model`);
}
for (const [name, markers] of Object.entries({
'context.drawio': ['CORP V1 — OPERATING CONTEXT', 'Corp v1 Board', 'Gitea organizations and repositories', 'Delivery platform'],
'overview.drawio': ['CORP V1 — PROJECT OPERATING FLOW', 'CORP-V1-BOARD', 'BOARD APPROVAL', 'UI/UX', 'KANBAN / FOCUS', 'VERIFY &amp; RECORD'],
'context.drawio': ['CORP V1 — SYSTEM CONTEXT', 'HUMAN ACTORS', 'TARGET SYSTEM', 'CONNECTED EXTERNAL SYSTEMS'],
'architecture-overview.drawio': ['CORP V1 — SERVICE ARCHITECTURE', 'HERMES AGENT', 'GITEA ACTIONS', 'HARBOR', 'ARGO CD', 'GONDOR MICROK8S'],
'operating-model.drawio': ['CORP V1 — OPERATING MODEL FLOW', 'CORP-V1-BOARD', 'BOARD APPROVAL', 'UI/UX', 'KANBAN / FOCUS', 'VERIFY &amp; RECORD'],
'channels.drawio': ['CORP V1 — BOARD &amp; PROJECT CHANNELS', 'CORP-V1-BOARD', 'GENERAL', 'ARCHITECTURE', 'UI/UX', 'RELEASES', 'MULTIPLE FOCUSED SESSIONS'],
'skills.drawio': ['CORP V1 — SKILLS MODEL', 'CENTRAL SOURCES', 'DELIBERATE ADOPTION', 'PROJECT COPIES', 'FOCUSED SESSION'],
'repositories.drawio': ['CORP V1 — ORGANIZATIONS, REPOSITORIES &amp; DELIVERY', 'PROJECT ORGANIZATION', 'SKILLS ORGANIZATION', '7 adopted channel-skill repos', 'GITEA ACTIONS'],
})) {
const diagram = read(`docs/architecture-high-level/diagrams/${name}`);
@@ -123,7 +135,7 @@ if (existsSync(join(root, 'build'))) {
const filename = readdirSync(join(root, 'build')).find((name) => /^search-index(?:-[a-f0-9]+)?\.json$/.test(name));
assert.ok(filename, 'production search index is missing');
const search = readFileSync(join(root, 'build', filename), 'utf8').toLowerCase();
for (const term of ['projects registry', 'teams registry', 'members registry', 'board members', 'project lifecycle', 'corp v1 board', 'overview channels', 'overview repositories']) {
for (const term of ['projects registry', 'teams registry', 'members registry', 'board members', 'project lifecycle', 'corp v1 board', 'operating model', 'overview channels', 'overview skills', 'overview repositories']) {
assert.ok(search.includes(term), `search index is missing: ${term}`);
}
}
+2
View File
@@ -4,7 +4,9 @@ const sidebars: SidebarsConfig = {
architectureHighLevelSidebar: [
{type: 'doc', id: 'context', label: 'Context'},
{type: 'doc', id: 'overview', label: 'Overview'},
{type: 'doc', id: 'operating-model', label: 'Operating Model'},
{type: 'doc', id: 'overview-channels', label: 'Overview Channels'},
{type: 'doc', id: 'overview-skills', label: 'Overview Skills'},
{type: 'doc', id: 'overview-repositories', label: 'Overview Repositories'},
],
};