Compare commits

..
Author SHA1 Message Date
jarvis-at-skic 9e6514de51 docs: add Corp pilot onboarding guide
Build and publish Corp v1 Board portal / build (pull_request) Successful in 36s
2026-08-27 21:53:44 +00:00
jarvis-at-skic 1226329a7a docs: record final shared SSO rollout refs
Build and publish Corp v1 Board portal / build (push) Successful in 35s
Record final central and adopted UI/UX refs after login-routing correction.
2026-08-27 13:58:57 -07:00
jarvis-at-skic c2ece9ec45 docs: record final shared SSO rollout refs
Build and publish Corp v1 Board portal / build (pull_request) Successful in 36s
2026-08-27 20:57:52 +00:00
jarvis-at-skic e1f7d2ca54 docs: record project categories and shared SSO policy
Build and publish Corp v1 Board portal / build (push) Successful in 37s
Board-approved governance records for dedicated project categories and secret-safe shared SSO login.
2026-08-27 13:54:17 -07:00
jarvis-at-skic d1bb6f8b18 docs: govern shared Corp v1 SSO login
Build and publish Corp v1 Board portal / build (pull_request) Successful in 35s
2026-08-27 20:53:22 +00:00
jarvis-at-skic 2dc80c16e2 docs: record dedicated project Discord categories
Build and publish Corp v1 Board portal / build (pull_request) Successful in 35s
2026-08-27 20:18:06 +00:00
jarvis-at-skic 0a993fae46 Merge pull request 'docs: establish Corp v1 Guild architecture' (#16) from feat/corp-v1-guild into main
Build and publish Corp v1 Board portal / build (push) Successful in 35s
Merge PR #16: establish Corp v1 Guild architecture
2026-08-27 11:20:04 -07:00
jarvis-at-skic 6c9b399043 docs: establish Corp v1 Guild architecture
Build and publish Corp v1 Board portal / build (pull_request) Successful in 34s
2026-08-27 18:19:03 +00:00
jarvis-at-skic fdc366c7dc docs: record E-Shop Harbor and GitOps state
Build and publish Corp v1 Board portal / build (push) Successful in 34s
2026-08-27 03:18:49 -07:00
jarvis-at-skic 96661df5ec docs: record E-Shop Harbor and GitOps state
Build and publish Corp v1 Board portal / build (pull_request) Successful in 35s
2026-08-27 10:16:44 +00:00
jarvis-at-skic 14d14bfe92 docs: complete E-Shop v1 governance records
Build and publish Corp v1 Board portal / build (push) Successful in 35s
Merge exact-head-green E-Shop v1 governance records
2026-08-26 15:01:16 -07:00
jarvis-at-skic 04a26df574 docs: record integrated E-Shop application CI
Build and publish Corp v1 Board portal / build (pull_request) Successful in 42s
2026-08-26 22:00:10 +00:00
jarvis-at-skic 6285ed0c6e docs: complete E-Shop v1 governance records
Build and publish Corp v1 Board portal / build (pull_request) Successful in 34s
2026-08-26 21:58:26 +00:00
jarvis-at-skic 756254e506 docs: record E-Shop v1 kickoff approval
Build and publish Corp v1 Board portal / build (push) Successful in 34s
Merge approved kickoff decision before provisioning.
2026-08-26 14:16:27 -07:00
jarvis-at-skic fbb01699cb docs: record E-Shop v1 kickoff approval
Build and publish Corp v1 Board portal / build (pull_request) Successful in 34s
2026-08-26 21:12:18 +00:00
jarvis-at-skic afd843fd8c docs: model owned home-lab services as Corp v1 containers
Build and publish Corp v1 Board portal / build (push) Successful in 34s
Merge PR #12: keep only Discord and LLM provider external; classify Lego-maintained home-lab services as internal containers.
2026-08-26 00:53:50 -07:00
jarvis-at-skic a7951c6130 docs: align Corp v1 boundary with owned home-lab containers
Build and publish Corp v1 Board portal / build (pull_request) Successful in 36s
2026-08-26 07:52:47 +00:00
jarvis-at-skic 73acbd57b3 docs: add real Corp v1 architecture and skill context
Build and publish Corp v1 Board portal / build (push) Successful in 36s
Merge PR #11: publish real service architecture, system context, operating model naming, and skills overview.
2026-08-25 13:13:09 -07:00
34 changed files with 808 additions and 167 deletions
+22 -18
View File
@@ -1,7 +1,7 @@
---
id: context
title: "Context"
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."
description: "See the Corp v1 home-lab system boundary, its human actors, and its only external systems: the LLM provider and Discord."
---
import Drawio from '@theme/Drawio';
@@ -9,32 +9,36 @@ import contextDiagram from '!!raw-loader!./diagrams/context.drawio';
# Context
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.
The target system is the **Corp v1 managed delivery platform in Lego's home lab**. The boundary follows operational responsibility: services and managed service slices that Lego deploys, configures, versions, upgrades, secures, or restores are inside the Corp v1 system boundary.
<Drawio content={contextDiagram} title="Corp v1 system context with human actors and external systems" toolbar="zoom layers lightbox" responsive maxHeight={760} />
<Drawio content={contextDiagram} title="Corp v1 home-lab system context" toolbar="zoom layers lightbox" responsive maxHeight={760} />
## Human actors
| Actor | Relationship to the target system |
| Actor | Relationship to Corp v1 |
|---|---|
| **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. |
| **Corp v1 Board members** | Govern the portfolio and approve project lifecycle, membership, the global operating model, and central channel-reference changes. |
| **Project leads and contributors** | 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 future Corp v1 projects after explicit Board approval and onboarding. |
| **Solution users and reviewers** | Provide needs, usability feedback, acceptance observations, and evidence about the products delivered through Corp v1. |
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.
Human authority remains outside automation. Hermes, CI, deployments, inferred intent, and silence never substitute for an approval reserved to a listed person.
## External systems around the target
## External systems
| System | How Corp v1 uses it |
Corp v1 currently has only two external software systems:
| External system | Relationship to Corp v1 |
|---|---|
| **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. |
| **LLM Provider** | Supplies model inference to Hermes Agent. The currently used providers are ICA or GPT Codex. Model execution is consumed as an external capability; Corp v1 does not deploy or maintain the provider platform. |
| **Communication Service — Discord** | Carries Board governance and project conversations. Corp v1 configures and maintains its channel structure, permissions, guidance, and pins, while Discord operates the communication platform itself. |
## Target-system boundary
## Inside the 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.
Hermes Agent and the home-lab services it depends on are internal containers in this architecture: Gitea, Actions runners, Penpot, the Board portal, Pages, Harbor, Argo CD, the access and identity stack, MicroK8s, and the hosted workloads. Their Corp v1 configuration is not modeled as an external dependency because Lego is responsible for its lifecycle and operational 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.
The [Container Overview](/architecture-high-level/overview/) shows those internal containers and their delivery relationships. The [Operating Model](/architecture-high-level/operating-model/) separately explains Board authority, channel sessions, skills, approvals, and handoffs.
## Product boundary
A project product delivered through Corp v1 remains its own product boundary. Corp v1 operates the delivery platform and governs the lifecycle, while every project must maintain its own product context, requirements, architecture, data, security, UI/UX, and release decisions.
@@ -1,34 +1,41 @@
<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">
<diagram id="corp-v1-home-lab-containers-v2" name="CORP V1 — HOME-LAB CONTAINERS">
<mxGraphModel dx="2080" dy="1100" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="2080" pageHeight="1100" 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="title" value="CORP V1 — HOME-LAB CONTAINER OVERVIEW" 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="Two external services · internally deployed and maintained delivery containers" 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 teams · solution users" 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="140" width="240" height="160" as="geometry"/></mxCell>
<mxCell id="discord" value="EXTERNAL · DISCORD · communication service" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#FFF7ED;strokeColor=#C2410C;strokeWidth=2;fontColor=#102A43;fontSize=14;fontStyle=1;spacing=12;" vertex="1" parent="1"><mxGeometry x="360" y="140" width="240" height="160" as="geometry"/></mxCell>
<mxCell id="hermes" value="INTERNAL · HERMES AGENT · tools · sessions · verification" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#EFF6FF;strokeColor=#2563EB;strokeWidth=3;fontColor=#102A43;fontSize=14;fontStyle=1;spacing=12;" vertex="1" parent="1"><mxGeometry x="640" y="140" width="240" height="160" as="geometry"/></mxCell>
<mxCell id="llm" value="EXTERNAL · LLM PROVIDER · ICA OR GPT CODEX" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#FFF7ED;strokeColor=#C2410C;strokeWidth=2;fontColor=#102A43;fontSize=14;fontStyle=1;spacing=12;" vertex="1" parent="1"><mxGeometry x="920" y="140" 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="e3" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;strokeColor=#475569;strokeWidth=3;endArrow=block;endFill=1;" edge="1" parent="1" source="hermes" target="llm"><mxGeometry relative="1" as="geometry"/></mxCell>
<mxCell id="tools-arrow" value="TOOLS" style="shape=singleArrow;direction=south;whiteSpace=wrap;html=1;fillColor=#2563EB;strokeColor=#2563EB;fontColor=#FFFFFF;fontSize=11;fontStyle=1;" vertex="1" parent="1"><mxGeometry x="720" y="340" width="80" height="80" as="geometry"/></mxCell>
<mxCell id="internal-label" value="INTERNAL CONTAINERS · DEPLOYED AND MAINTAINED BY LEGO" 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="420" width="1920" height="40" as="geometry"/></mxCell>
<mxCell id="penpot" value="PENPOT · UI/UX service · sources · reviews · handoff" 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="80" y="500" width="240" height="160" as="geometry"/></mxCell>
<mxCell id="skills" value="SKILLS &amp; SESSIONS · governed runtime configuration" 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="360" y="500" 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="640" y="500" width="240" height="160" as="geometry"/></mxCell>
<mxCell id="actions" value="GITEA ACTIONS RUNNERS · exact-head build and 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="920" y="500" width="240" height="160" as="geometry"/></mxCell>
<mxCell id="portal" value="BOARD PORTAL · Docusaurus application · registries · architecture" 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="500" width="240" height="160" as="geometry"/></mxCell>
<mxCell id="pages" value="LEGO CLOUD PAGES · protected documentation 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="1480" y="500" width="240" height="160" as="geometry"/></mxCell>
<mxCell id="access" value="ACCESS EDGE · Cloudflare config · Keycloak · OAuth · Nginx" 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="1760" y="500" width="240" height="160" 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>
<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="portal"><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="portal" target="pages"><mxGeometry relative="1" as="geometry"/></mxCell>
<mxCell id="e7" 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="image-arrow" value="IMAGE" style="shape=singleArrow;direction=south;whiteSpace=wrap;html=1;fillColor=#2563EB;strokeColor=#2563EB;fontColor=#FFFFFF;fontSize=11;fontStyle=1;" vertex="1" parent="1"><mxGeometry x="1000" y="700" width="80" height="80" as="geometry"/></mxCell>
<mxCell id="runtime-arrow" value="ROUTE" style="shape=singleArrow;direction=north;whiteSpace=wrap;html=1;fillColor=#2563EB;strokeColor=#2563EB;fontColor=#FFFFFF;fontSize=11;fontStyle=1;" vertex="1" parent="1"><mxGeometry x="1840" y="700" width="80" height="80" as="geometry"/></mxCell>
<mxCell id="harbor" value="HARBOR · registry · immutable images · retention" 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="820" width="240" height="160" as="geometry"/></mxCell>
<mxCell id="argocd" value="ARGO CD · GitOps desired state · sync · health" 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="820" width="240" height="160" as="geometry"/></mxCell>
<mxCell id="microk8s" value="GONDOR MICROK8S · 3-node runtime · namespaces · workloads" 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="1480" y="820" width="240" height="160" as="geometry"/></mxCell>
<mxCell id="workloads" value="PROJECT WORKLOADS · Services · routes · releases · readback" 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="1760" y="820" width="240" height="160" as="geometry"/></mxCell>
<mxCell id="e8" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;strokeColor=#475569;strokeWidth=3;endArrow=block;endFill=1;" edge="1" parent="1" source="harbor" target="argocd"><mxGeometry relative="1" as="geometry"/></mxCell>
<mxCell id="e9" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;strokeColor=#475569;strokeWidth=3;endArrow=block;endFill=1;" edge="1" parent="1" source="argocd" target="microk8s"><mxGeometry relative="1" as="geometry"/></mxCell>
<mxCell id="e10" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;strokeColor=#475569;strokeWidth=3;endArrow=block;endFill=1;" edge="1" parent="1" source="microk8s" target="workloads"><mxGeometry relative="1" as="geometry"/></mxCell>
<mxCell id="evidence" value="OWNERSHIP = CONFIGURE · VERSION · DEPLOY · UPGRADE · SECURE · RESTORE · VERIFY" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#E6FFFA;strokeColor=#0F766E;strokeWidth=2;fontColor=#102A43;fontSize=16;fontStyle=1;align=center;" vertex="1" parent="1"><mxGeometry x="80" y="1020" width="1920" height="40" as="geometry"/></mxCell>
</root>
</mxGraphModel>
</diagram>
@@ -1,62 +1,76 @@
<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-channels-v2" name="CORP V1 — PROJECT CHANNELS">
<mxfile host="app.diagrams.net" modified="2026-08-27T00:00:00.000Z" agent="Hermes Agent" version="26.0.16" type="device">
<diagram id="corp-v1-project-channels-v3" name="CORP V1 — BOARD, GUILD &amp; PROJECT CHANNELS">
<mxGraphModel dx="1500" dy="1240" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1500" pageHeight="1240" math="0" shadow="0" adaptiveColors="auto">
<root>
<mxCell id="0"/>
<mxCell id="1" parent="0"/>
<mxCell id="title" value="CORP V1 — BOARD &amp; PROJECT CHANNELS" 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="1240" height="40" as="geometry"/>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="title" value="CORP V1 — BOARD, GUILD &amp; PROJECT CHANNELS" 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="1240" height="40" as="geometry" />
</mxCell>
<mxCell id="subtitle" value="Governance channel · 7 project sessions · one skilled agent" 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="1240" height="40" as="geometry"/>
<mxCell id="subtitle" value="2 central workspaces · 7 project sessions · one skilled agent" 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="1240" height="40" as="geometry" />
</mxCell>
<mxCell id="board" value="CORP-V1-BOARD · PORTFOLIO GOVERNANCE · projects · members · skills · evidence" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#E6FFFA;strokeColor=#0F766E;strokeWidth=3;fontColor=#102A43;fontSize=16;fontStyle=1;spacing=16;align=center;" vertex="1" parent="1">
<mxGeometry x="80" y="130" width="1240" height="160" as="geometry"/>
<mxCell id="board" value="CORP-V1-BOARD · PORTFOLIO GOVERNANCE · approvals · lifecycle · authority" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#E6FFFA;strokeColor=#0F766E;strokeWidth=3;fontColor=#102A43;fontSize=16;fontStyle=1;spacing=16;align=center;" vertex="1" parent="1">
<mxGeometry x="80" y="130" width="600" height="160" as="geometry" />
</mxCell>
<mxCell id="guild" value="CORP-V1-GUILD · IMPROVEMENT · skills · references · portal · rollout" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#FFF7ED;strokeColor=#C2410C;strokeWidth=3;fontColor=#102A43;fontSize=16;fontStyle=1;spacing=16;align=center;" vertex="1" parent="1">
<mxGeometry x="720" y="130" width="600" height="160" as="geometry" />
</mxCell>
<mxCell id="approval-band" value="BOARD APPROVES THE PROJECT BOUNDARY · PROJECT CHANNELS OWN DELIVERY DECISIONS" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#0F766E;strokeColor=#0F766E;fontColor=#FFFFFF;fontSize=13;fontStyle=1;align=center;verticalAlign=middle;" vertex="1" parent="1">
<mxGeometry x="400" y="310" width="600" height="40" as="geometry"/>
<mxGeometry x="400" y="310" width="600" height="40" as="geometry" />
</mxCell>
<mxCell id="project-zone-label" value="ONE APPROVED PROJECT · SEVEN ORDERED CHANNEL SESSIONS" 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="410" width="1240" height="40" as="geometry"/>
<mxGeometry x="80" y="410" width="1240" height="40" as="geometry" />
</mxCell>
<mxCell id="general" value="1 · GENERAL · onboarding · questions · coordination · 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="80" y="490" width="280" height="160" as="geometry"/>
<mxGeometry x="80" y="490" width="280" height="160" as="geometry" />
</mxCell>
<mxCell id="scope" value="2 · SCOPE · value · Epics · Features · acceptance · approval" 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="400" y="490" width="280" height="160" as="geometry"/>
<mxGeometry x="400" y="490" width="280" height="160" as="geometry" />
</mxCell>
<mxCell id="architecture" value="3 · ARCHITECTURE · requirements · ADRs · interfaces · Tasks" 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="720" y="490" width="280" height="160" as="geometry"/>
<mxGeometry x="720" y="490" width="280" height="160" as="geometry" />
</mxCell>
<mxCell id="uiux" value="4 · UI/UX · journeys · information architecture · Penpot · handoff" 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="1040" y="490" width="280" height="160" as="geometry"/>
<mxGeometry x="1040" y="490" width="280" height="160" as="geometry" />
</mxCell>
<mxCell id="kanban" value="5 · KANBAN · Board · Focus · dependencies · human Task admission" 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="730" width="280" height="160" as="geometry"/>
<mxGeometry x="1040" y="730" width="280" height="160" as="geometry" />
</mxCell>
<mxCell id="delivery" value="6 · DELIVERY · implementation · branches · PRs · reviews · CI" 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="730" width="280" height="160" as="geometry"/>
<mxGeometry x="720" y="730" width="280" height="160" as="geometry" />
</mxCell>
<mxCell id="releases" value="7 · RELEASES · readiness · versions · deploy · rollback · outcomes" 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="730" width="280" height="160" as="geometry"/>
<mxGeometry x="400" y="730" width="280" height="160" as="geometry" />
</mxCell>
<mxCell id="e-general-scope" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;strokeColor=#475569;strokeWidth=3;endArrow=block;endFill=1;" edge="1" parent="1" source="general" target="scope">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="e-scope-architecture" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;strokeColor=#475569;strokeWidth=3;endArrow=block;endFill=1;" edge="1" parent="1" source="scope" target="architecture">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="e-architecture-uiux" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;strokeColor=#475569;strokeWidth=3;endArrow=block;endFill=1;" edge="1" parent="1" source="architecture" target="uiux">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="e-uiux-kanban" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;strokeColor=#475569;strokeWidth=3;endArrow=block;endFill=1;" edge="1" parent="1" source="uiux" target="kanban">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="e-kanban-delivery" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;strokeColor=#475569;strokeWidth=3;endArrow=block;endFill=1;" edge="1" parent="1" source="kanban" target="delivery">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="e-delivery-releases" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;strokeColor=#475569;strokeWidth=3;endArrow=block;endFill=1;" edge="1" parent="1" source="delivery" target="releases">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="e-general-scope" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;strokeColor=#475569;strokeWidth=3;endArrow=block;endFill=1;" edge="1" parent="1" source="general" target="scope"><mxGeometry relative="1" as="geometry"/></mxCell>
<mxCell id="e-scope-architecture" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;strokeColor=#475569;strokeWidth=3;endArrow=block;endFill=1;" edge="1" parent="1" source="scope" target="architecture"><mxGeometry relative="1" as="geometry"/></mxCell>
<mxCell id="e-architecture-uiux" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;strokeColor=#475569;strokeWidth=3;endArrow=block;endFill=1;" edge="1" parent="1" source="architecture" target="uiux"><mxGeometry relative="1" as="geometry"/></mxCell>
<mxCell id="e-uiux-kanban" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;strokeColor=#475569;strokeWidth=3;endArrow=block;endFill=1;" edge="1" parent="1" source="uiux" target="kanban"><mxGeometry relative="1" as="geometry"/></mxCell>
<mxCell id="e-kanban-delivery" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;strokeColor=#475569;strokeWidth=3;endArrow=block;endFill=1;" edge="1" parent="1" source="kanban" target="delivery"><mxGeometry relative="1" as="geometry"/></mxCell>
<mxCell id="e-delivery-releases" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;strokeColor=#475569;strokeWidth=3;endArrow=block;endFill=1;" edge="1" parent="1" source="delivery" target="releases"><mxGeometry relative="1" as="geometry"/></mxCell>
<mxCell id="agent" value="ONE HERMES AGENT · shared identity and governance" 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="1030" width="400" height="120" as="geometry"/>
<mxGeometry x="80" y="1030" width="400" height="120" as="geometry" />
</mxCell>
<mxCell id="sessions" value="MULTIPLE FOCUSED SESSIONS · concern · history · approvals" 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="520" y="1030" width="400" height="120" as="geometry"/>
<mxGeometry x="520" y="1030" width="400" height="120" as="geometry" />
</mxCell>
<mxCell id="skills" value="SPECIALISED PROJECT SKILLS · 7 channel + 7 engineering" 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="960" y="1030" width="400" height="120" as="geometry"/>
<mxGeometry x="960" y="1030" width="400" height="120" as="geometry" />
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>
</mxfile>
@@ -1,23 +1,21 @@
<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">
<diagram id="corp-v1-home-lab-context-v3" name="CORP V1 — HOME-LAB 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 — 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="title" value="CORP V1 — HOME-LAB 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="Owned home-lab platform · human authority · only two external systems" 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="future" value="SPONSORS &amp; SOLUTION 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>
<mxCell id="target" value="TARGET SYSTEM · CORP V1 MANAGED HOME-LAB DELIVERY PLATFORM" 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="MODEL INFERENCE · HUMAN COMMUNICATION" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#C2410C;strokeColor=#C2410C;fontColor=#FFFFFF;fontSize=14;fontStyle=1;align=center;" vertex="1" parent="1"><mxGeometry x="480" y="620" width="480" height="40" as="geometry"/></mxCell>
<mxCell id="systems-label" value="EXTERNAL SYSTEMS · ONLY TWO" 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="COMMUNICATION SERVICE · DISCORD" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#FFF7ED;strokeColor=#C2410C;strokeWidth=2;fontColor=#102A43;fontSize=16;fontStyle=1;spacing=16;" vertex="1" parent="1"><mxGeometry x="280" y="780" width="400" height="120" as="geometry"/></mxCell>
<mxCell id="llm" value="LLM PROVIDER · ICA OR GPT CODEX" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#FFF7ED;strokeColor=#C2410C;strokeWidth=2;fontColor=#102A43;fontSize=16;fontStyle=1;spacing=16;" vertex="1" parent="1"><mxGeometry x="760" y="780" width="400" height="120" as="geometry"/></mxCell>
</root>
</mxGraphModel>
</diagram>
@@ -2,21 +2,45 @@
<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>
<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 · CORP-V1--MAIN · CORP-V1--GUILD · 7 CHANNEL REFERENCES" 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>
</mxfile>
@@ -1,7 +1,7 @@
---
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."
description: "Follow Corp v1 from Board governance and Guild improvement through project delivery and verified evidence."
---
import Drawio from '@theme/Drawio';
@@ -16,14 +16,15 @@ Corp v1 is an SDLC operating-model pilot: **one AI agent works across multiple f
## 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.
2. **`corp-v1-guild` improves the operating system.** RootAtSkic and Hermes identify recurring cross-channel friction, inventory affected skills and repositories, route decisions to their owners, and verify coordinated rollout without replacing Board or project authority.
3. **General establishes the project workspace.** It handles onboarding, shared coordination, questions, and broadcasts verified outcomes.
4. **Scope decides what creates value.** Ideas become Epics and Features; a human project member approves an exact Feature for solution work.
5. **Architecture decides how the system should work.** Requirements, ADRs, interfaces, constraints, and implementation Tasks become durable project evidence.
6. **UI/UX makes the frontend experience implementable.** User journeys, information architecture, accessibility, Penpot designs, prototypes, and handoff evidence bridge Architecture and execution.
7. **Kanban controls admission and flow.** A human project member admits an exact Task to Focus before Delivery may execute it.
8. **Delivery produces a reviewed candidate.** Work proceeds through branches, pull requests, exact-head validation, and reviewable implementation evidence.
9. **Releases control deployment and outcomes.** Immutable artifacts, risk, rollback, deployment, acceptance, and post-release evidence are assessed explicitly.
10. **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
@@ -1,7 +1,7 @@
---
id: overview-channels
title: "Overview Channels"
description: "Understand the Corp v1 Board channel, seven project workspaces, session boundaries, skills, and SDLC handoffs."
description: "Understand the Corp v1 Board and Guild channels, seven project workspaces, session boundaries, skills, and SDLC handoffs."
---
import Drawio from '@theme/Drawio';
@@ -9,9 +9,15 @@ import channelsDiagram from '!!raw-loader!./diagrams/channels.drawio';
# Overview Channels
Corp v1 uses **one portfolio-governance channel** and **seven purpose-specific channels per project**. These are operating boundaries for one AI agent and the human team—not separate delivery teams.
Corp v1 uses **two central portfolio workspaces** and **seven purpose-specific channels per project**. The central Board and Guild channels serve different purposes; neither is an eighth project channel. All channels are operating boundaries for one AI agent and the human team—not separate delivery teams.
<Drawio content={channelsDiagram} title="Corp v1 Board and project channel operating model" toolbar="zoom layers lightbox" responsive maxHeight={820} />
<Drawio content={channelsDiagram} title="Corp v1 Board, Guild, and project channel operating model" toolbar="zoom layers lightbox" responsive maxHeight={820} />
## Improvement coordination: `corp-v1-guild`
`corp-v1-guild` is the shared improvement workspace for RootAtSkic and Hermes. It correlates recurring friction across Corp v1 channels, skills, reference skills, repositories, and this portal; inventories the affected owners; and coordinates a verified rollout.
The Guild does not grant approval that belongs to the Board or a project channel. It routes product, architecture, design, flow, implementation, and release decisions back to their owning project workspace. Its authoritative operating skill is [`corp-v1--guild`](https://gitea.lego-cloud.eu/home-v1-skills-code-agent/corp-v1--guild).
## Portfolio governance: `corp-v1-board`
@@ -20,6 +20,7 @@ The central sources live in [`home-v1-skills-code-agent`](https://gitea.lego-clo
| 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--guild`](https://gitea.lego-cloud.eu/home-v1-skills-code-agent/corp-v1--guild) | Cross-channel improvement intake, impact inventory, ownership routing, coordinated rollout, and convergence verification. |
| [`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. |
@@ -38,6 +39,8 @@ Every project owns fourteen adopted repositories in `corp-v1-<code>-skills-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.
`corp-v1--guild` remains central because it coordinates improvements across projects. It is not copied as a fifteenth project skill and does not replace any mapped project channel skill.
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
+38 -31
View File
@@ -1,50 +1,57 @@
---
id: overview
title: "Overview"
description: "See the real Corp v1 service architecture: people and Discord, Hermes Agent, Gitea, CI, Pages, Harbor, Argo CD, and Gondor MicroK8s."
title: "Container Overview"
description: "See the internal containers Lego deploys and maintains for Corp v1, from Hermes and Gitea through Pages, Harbor, Argo CD, identity, ingress, and MicroK8s."
---
import Drawio from '@theme/Drawio';
import architectureDiagram from '!!raw-loader!./diagrams/architecture-overview.drawio';
# Overview
# Container Overview
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.
This view treats the **Corp v1 managed home-lab platform** as the software system. A container here is an independently operated service or managed service slice for which Lego owns configuration, versioning, deployment, upgrades, access, backup or recovery, and operational verification.
<Drawio content={architectureDiagram} title="Corp v1 deployed service architecture" toolbar="zoom layers lightbox" responsive maxHeight={820} />
<Drawio content={architectureDiagram} title="Corp v1 internal container architecture" toolbar="zoom layers lightbox" responsive maxHeight={860} />
## Services in the current setup
## Internal containers
| Service | Current role in Corp v1 |
| Container | Corp v1 responsibility |
|---|---|
| **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. |
| **Hermes Agent** | Agent runtime, connected tools, model-provider integration, focused sessions, skill loading, execution, and evidence verification. |
| **Corp v1 Board portal** | Docusaurus source, registries, architecture, decisions, build, publication, navigation, and deployed-content readback. |
| **Gitea** | Service operation plus Corp organizations, teams, repositories, branches, pull requests, variables, permissions, skills, documentation, application source, and GitOps state. |
| **Gitea Actions runners** | Runner operation, workflow versions, exact-head validation, documentation builds, image publication, and delivery evidence. |
| **Penpot** | Service deployment and the project design workspaces, editable design sources, review state, accessibility evidence, and handoff. |
| **LEGO Cloud Pages** | Pages workload, route structure, publication behavior, OAuth-protected access, and content readback. |
| **Harbor** | Registry service, projects, repositories, robot integration, immutable application images, retention, and availability. |
| **Argo CD** | Service lifecycle, AppProjects, Applications, repository access, desired-state reconciliation, health, and sync evidence. |
| **Identity and access** | Keycloak, OAuth proxy configuration, protected routes, clients, policies, and sign-in behavior. |
| **Ingress edge** | Cloudflare configuration, Osgiliath Nginx, ACME, Kubernetes ingress, routing, certificates, and public endpoints. |
| **Gondor v1 MicroK8s** | Three-node runtime, namespaces, workloads, Services, Ingress, storage integration, readiness, image identity, and runtime readback. |
| **Project workloads** | Approved application Deployments, Services, routes, configuration, release candidates, rollback state, and observable behavior. |
## Documentation delivery path
## External connections
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.
Only two software systems cross the Corp v1 boundary:
## Application delivery path
- **Discord** supplies the communication service. Corp v1 owns the managed channel configuration represented in its operating model.
- **ICA or GPT Codex** supplies LLM inference to Hermes Agent.
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.
## Documentation path
Penpot evidence enters this flow through reviewed links and project documentation; it does not replace versioned requirements, ADRs, code, or release evidence.
`Hermes → Gitea → Gitea Actions → Board portal build → LEGO Cloud Pages → identity/ingress → deployed readback`
## Boundaries of truth
A documentation delivery claim requires successful exact-commit CI and distinctive content from the deployed Pages service path.
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.
## Application path
`Hermes → Gitea → Gitea Actions → Harbor → GitOps state → Argo CD → MicroK8s workload → ingress → runtime readback`
Argo CD also reads desired state from Gitea. A repository or image alone is not a deployed product; the runtime image identity, readiness, route, and user-visible behavior must be verified.
## Related views
- [Context](/architecture-high-level/context/) defines the home-lab boundary, human actors, and two external systems.
- [Operating Model](/architecture-high-level/operating-model/) explains governance and the delivery lifecycle.
- [Overview Skills](/architecture-high-level/overview-skills/) explains the instructions Hermes loads to operate these containers safely.
- [Overview Repositories](/architecture-high-level/overview-repositories/) explains the versioned project and skill sources.
+4
View File
@@ -8,6 +8,10 @@ sidebar_position: 2
| Date | Decision | Scope | Owner | Record |
|---|---|---|---|---|
| 2026-08-27 | Authorize secret-safe use of the Bitwarden-injected shared Corp v1 SSO identity for approved system tasks | Corp v1 governance and all project channels | RootAtSkic | [Shared Corp v1 system SSO credentials](/governance/decisions/shared-system-sso-credentials/) |
| 2026-08-27 | Separate each project's lifecycle channels into one dedicated Discord category | Corp v1 governance, AeroSim, Maze Next Gen, E-Shop v1 | RootAtSkic | [Dedicated Discord category per project](/governance/decisions/project-discord-category-separation/) |
| 2026-08-27 | Establish the Corp v1 Guild improvement workspace, skill, Gitea source, and portal architecture representation | Corp v1 governance and operating-model improvement | RootAtSkic | [Corp v1 Guild establishment](/governance/decisions/corp-v1-guild-establishment/) |
| 2026-08-26 | Authorize E-Shop v1 kickoff, toothbrush-commerce MVP, and bounded bootstrap autonomy | E-Shop v1 | RootAtSkic | [E-Shop v1 kickoff and bootstrap autonomy](/governance/decisions/eshopv1-kickoff-bootstrap-autonomy/) |
| 2026-08-25 | Add Piotras to the Corp v1 Board and every active project | Corp v1 governance, AeroSim, Maze Next Gen | RootAtSkic | [Piotras Board and all-project membership](/governance/decisions/piotras-board-all-project-membership/) |
| 2026-08-20 | Add Jenny to the Corp v1 Board and every active project | Corp v1 governance, AeroSim, Maze Next Gen | RootAtSkic | [Jenny Board and all-project membership](/governance/decisions/jenny-board-all-project-membership/) |
| 2026-08-17 | Add Linas to the Corp v1 Board and AeroSim | Corp v1 governance and AeroSim | RootAtSkic | [Linas Board and AeroSim membership](/governance/decisions/linas-board-aerosim-membership/) |
@@ -0,0 +1,41 @@
---
title: Corp v1 Guild Establishment
---
# Corp v1 Guild Establishment
## Decision
On 2026-08-27, RootAtSkic (`discord:1518725627845283888`) established `corp-v1-guild` as the central improvement workspace shared with Hermes.
The approved implementation includes:
- Discord channel `corp-v1-guild` (`1542596418215092264`) under the `corp-v1` category;
- central operating skill `corp-v1--guild`;
- private Gitea source repository [`home-v1-skills-code-agent/corp-v1--guild`](https://gitea.lego-cloud.eu/home-v1-skills-code-agent/corp-v1--guild) on default branch `test`;
- runtime installation of the published skill;
- Guild guidance linked and pinned in the channel;
- Corp v1 portal architecture updates that distinguish Guild improvement coordination from Board governance and the seven project delivery channels.
## Evidence
The approving instruction is Discord message `1542596833266761748` in channel `1542596418215092264`. RootAtSkic requested a skill similar in durability to `corp-v1--main`, defined the channel's purpose as improvements across channels, their skills, and reference skills, and required both portal architecture and Gitea publication.
## Authority boundary
The Guild coordinates improvement discovery, impact inventory, ownership routing, implementation, rollout, and verification. It does not replace:
- the Corp v1 Board for project lifecycle, membership, `corp-v1--main`, or central channel-reference approvals;
- project Scope, Architecture, UI/UX, Kanban, Delivery, or Releases decisions;
- preserved project-local authorization overrides;
- repository validation, review, exact-head CI, deployed readback, or destructive-action safeguards.
The Guild is a central portfolio workspace, not an eighth project channel and not an additional project-adopted skill.
## Consequences
1. Cross-cutting improvement work has one durable intake and coordination surface.
2. Every material improvement records exact evidence, affected surfaces, owner, required approvals, rollout boundary, and verification.
3. Central reference changes still follow Board approval and deliberate semantic adoption into every affected project copy.
4. Portal architecture and channel guidance must remain synchronized with the Guild operating contract.
5. No scheduler job is created for `corp-v1-guild`; project automation retains its separately recorded authority and is not changed by this decision.
@@ -0,0 +1,73 @@
---
title: "E-Shop v1 kickoff and bootstrap autonomy"
description: "Record the approved E-Shop v1 kickoff, MVP scope, and bounded General-channel bootstrap authority."
---
# E-Shop v1 kickoff and bootstrap autonomy — 2026-08-26
## Decision
Begin provisioning **E-Shop v1**, code `eshopv1`, as a restricted Corp v1 project with RootAtSkic as sponsor and accountable lead and Hermes (`jarvis-at-skic`) as the initial technical member.
Approval was explicit from Board member RootAtSkic (`discord:1518725627845283888`) in Discord message `1542278257833939087` on 2026-08-26 after review of the complete proposal.
## MVP outcome
Deliver a functional toothbrush e-commerce website with:
- twelve sourced AliExpress toothbrush products;
- locally stored product images with source attribution rather than hotlinking;
- EUR retail prices calculated from captured AliExpress item prices using `source price × 1.50`, rounded to cents;
- product listing and gallery;
- shopping cart;
- PayPal Sandbox checkout through a server-side credential boundary;
- order confirmation;
- responsive and accessibility checks;
- private source and documentation repositories, CI/CD, home-lab deployment, and deployed readback.
Live PayPal payments, purchases, spending, vendor-account changes, legal/commercial go-live, and any secret value remain separately gated.
## Authorized resources
- Exactly seven same-project Discord channels under `corp-v1`: General, Scope, Architecture, UI/UX, Kanban, Delivery, and Releases.
- Private project organization `corp-v1-eshopv1`.
- Private skills organization `corp-v1-eshopv1-skills-code-agent`.
- Application repository `corp-v1-eshopv1` and documentation repository `corp-v1-eshopv1-documentation`.
- Seven adopted engineering skills and seven adopted channel skills, all suffixed `--eshopv1`.
- Project and skills organization teams for RootAtSkic and `jarvis-at-skic`.
- One 30-minute bootstrap job delivered only to `corp-v1-eshopv1-general`.
## Project-local authorization
```yaml
override_id: ESHOPV1-BOOTSTRAP-AUTONOMY-20260826
authorization_evidence: discord-message-1542278257833939087
project: eshopv1
delegator: discord-user-1518725627845283888-root-at-skic
delegate: hermes-agent-operating-eshopv1
cadence: every-30-minutes
channel_boundary:
- corp-v1-eshopv1-general
- corp-v1-eshopv1-scope
- corp-v1-eshopv1-architecture
- corp-v1-eshopv1-ui-ux
- corp-v1-eshopv1-kanban
- corp-v1-eshopv1-delivery
- corp-v1-eshopv1-releases
scope:
- create and maintain project scope, architecture, UI/UX, Kanban, delivery, and release artifacts
- create branches, commits, pushes, pull requests, and review evidence
- merge eligible exact-head-green project changes
- build, publish, deploy, and verify the approved Sandbox MVP
- keep the seven-channel lifecycle moving through project-adopted skills
stop_condition: first-human-authored-message-in-any-project-channel
preserve_on_reference_adoption: true
```
Before every mutation, the job must scan only the seven project channels and distinguish human authors from Hermes, bots, and webhooks. The first human-authored project-channel message ends bootstrap autonomy. The run must make no further autonomous mutation, cite the stopping message, report in General, and pause or remove the job.
The delegation does not authorize secret-value access or disclosure, spending, purchases, production-payment enablement, vendor-account changes, legal/commercial commitments, unrelated infrastructure changes, or destructive/irreversible operations.
## Current state
Approved. Provisioning and independently verified completion evidence will be appended as resources become available.
@@ -0,0 +1,47 @@
---
title: Dedicated Discord category per project
---
# Dedicated Discord category per project — 2026-08-27
## Context
All Corp v1 lifecycle channels previously shared the guild-level `corp-v1` category. As the pilot expanded across AeroSim, Maze Next Gen, and E-Shop v1, that flat topology made each project's working boundary harder to scan and increased the risk of mixing project-local channels with Board governance.
## Decision
RootAtSkic (`discord:1518725627845283888`) approved one dedicated top-level Discord category per Corp v1 project in Board message `1542625777495965836`.
- Reserve `corp-v1` (`1537070242335821924`) for Board and shared governance channels.
- Name each project category `corp-v1-<code>`.
- Keep exactly seven lifecycle channels inside each project category in this order: General, Scope, Architecture, UI/UX, Kanban, Delivery, Releases.
- Preserve existing channel IDs, history, topics, pins, webhooks, permission overwrites, and delivery targets during migration.
- Apply the same topology to future kickoffs and delete only an empty project category during an approved sunset.
## Implementation
The central [`corp-v1--main`](https://gitea.lego-cloud.eu/home-v1-skills-code-agent/corp-v1--main) skill was updated to version `4.3.0` and merged through PR [8](https://gitea.lego-cloud.eu/home-v1-skills-code-agent/corp-v1--main/pulls/8) at `785e57d6381f60a0caacefdedec791aa3b1fe2fd`.
Three categories were created with the existing approved permission-overwrite model:
| Project | Category | Discord ID |
|---|---|---|
| AeroSim | `corp-v1-aerosim` | `1542627633123299359` |
| Maze Next Gen | `corp-v1-mazeng` | `1542627645441839174` |
| E-Shop v1 | `corp-v1-eshopv1` | `1542627655189270719` |
The 21 existing lifecycle channels were moved by immutable channel ID. No project channel was recreated.
## Verification
A fresh full-guild readback confirmed:
- every project category exists as a category and retains nine permission overwrites;
- all seven exact channels for each project have the expected `parent_id` and lifecycle order;
- all 21 channel IDs are unchanged and each channel retains nine permission overwrites;
- the guild-level `corp-v1` category now contains only `corp-v1-board` and `corp-v1-guild`;
- Hermes can still read recent history in every moved lifecycle channel.
## Consequences
Project navigation and the governance boundary are now explicit without losing history or changing channel-targeted integrations. Project records must include the dedicated category ID, and future provisioning must reject lifecycle channels placed directly under the governance category.
@@ -0,0 +1,40 @@
---
title: Shared Corp v1 system SSO credentials
---
# Shared Corp v1 system SSO credentials — 2026-08-27
## Context
Hermes sometimes needs to authenticate to Corp v1 systems being built or operated in order to perform an explicitly authorized task. Asking project members to retransmit credentials through Discord or storing them in project artifacts would create avoidable exposure.
## Decision
RootAtSkic (`discord:1518725627845283888`) approved use of the shared Bitwarden-injected Corp v1 SSO identity in Board message `1542636538305712199`.
Skills and records may contain only these runtime secret names:
- `HL_V1_SSO_EMAIL`
- `HL_V1_SSO_PASSWORD`
Credential values, Bitwarden object identifiers, and account metadata must not be copied into Discord, skills, repositories, prompts, command lines, URLs, files, screenshots, logs, CI output, or reports.
## Operating rules
- SSO secret availability is a capability, not authorization. Every login must serve an explicitly authorized project task and verified destination origin.
- Hermes checks only whether both runtime variables are present and uses them through a trusted login form or provider-supported secure runtime interface.
- Missing injection is reported by secret name only; no local fallback secret is created and no human is asked to paste a value into chat.
- Login does not authorize account recovery, MFA or credential changes, permission changes, billing, spending, destructive operations, or unrelated system/data access.
- Reports contain only the target system, authorized purpose, login result, and non-sensitive verification evidence.
## Implementation and verification
The central `corp-v1--main` skill was updated to version `4.4.0` and merged through PR [9](https://gitea.lego-cloud.eu/home-v1-skills-code-agent/corp-v1--main/pulls/9) at `b11b0e521dab6b7a920337feed37c5a849d507bd`.
The same secret-safe login section was published central-first to all seven `corp-v1-channel-*` reference skills, then semantically adopted into all 21 project channel skills across AeroSim, Maze Next Gen, and E-Shop v1. Every project-local authorization override was hash-checked before and after adoption, project bindings and supporting files were preserved, and every pushed default ref and `SKILL.md` marker was read back. All 21 installed Hermes runtime packages were refreshed from the resulting project repositories. The exact repository, branch, commit, and override coverage is recorded in the [shared SSO skill rollout ledger](/governance/sso-skill-rollout/).
Runtime preflight confirmed both secret names are currently injected. No credential value was read into a report, persisted, or committed.
## Consequences
Every Corp v1 channel now follows one login path and one non-disclosure policy. Authentication can support authorized delivery work without turning credential availability into broader system authority.
+8
View File
@@ -23,6 +23,14 @@ Obtain explicit Board approval. Record the approving Board member, decision evid
Maintain current status, decisions, risks, milestones, and material scope changes. Project teams retain authority within their approved project boundaries; Board approval is still required for kickoff/closure and changes to `corp-v1--main`.
### Discord topology
The guild-level `corp-v1` category is reserved for Board and shared governance channels. Every project uses one dedicated top-level category named `corp-v1-<code>` containing exactly seven lifecycle channels in this order: General, Scope, Architecture, UI/UX, Kanban, Delivery, Releases. Existing channels are moved by immutable ID so history, pins, permission overwrites, webhooks, and delivery targets remain intact.
### System login
For an explicitly authorized Corp v1 system task, Hermes may use the Bitwarden-injected runtime secrets named `HL_V1_SSO_EMAIL` and `HL_V1_SSO_PASSWORD`. Secret availability does not authorize unrelated access or account administration. Values and Bitwarden object metadata must never be printed, persisted, committed, posted, logged, placed in command lines or URLs, or requested through chat. Missing injection is reported by secret name only.
### Project-channel skill changes
A proposed change to a central project-channel reference skill (`corp-v1-channel-*`) must be presented to the Board before publication. After explicit Board approval and central publication, ask every affected project channel to review and synchronize its project-adopted channel skill (`corp-v1-channel-*--<code>`). Synchronization must preserve project-specific decisions, report conflicts for Board review, update runtime copies, and verify attached channel jobs.
+50
View File
@@ -0,0 +1,50 @@
---
title: Shared SSO skill rollout
---
# Shared SSO skill rollout — 2026-08-27
This ledger records the Board-approved secret-name-only login guidance published under Discord message `1542636538305712199`. All repositories were updated central-first, pushed to their actual default branches, and read back at the exact resulting commit. Project-local authorization override blocks were hash-compared before and after each adoption.
| Scope | Skill repository | Branch | Published commit | Preserved override blocks |
|---|---|---|---|---:|
| Central reference | [corp-v1-channel-general](https://gitea.lego-cloud.eu/home-v1-skills-code-agent/corp-v1-channel-general) | `test` | `a5e79c24dd4ec1fa0d1a3258ecc184d9808daa62` | 0 |
| Central reference | [corp-v1-channel-scope](https://gitea.lego-cloud.eu/home-v1-skills-code-agent/corp-v1-channel-scope) | `test` | `4554b78e20377863af55be3dca78cf22f1e98b75` | 0 |
| Central reference | [corp-v1-channel-architecture](https://gitea.lego-cloud.eu/home-v1-skills-code-agent/corp-v1-channel-architecture) | `test` | `c7620c804a0de210f35fc829a38a53e44d40bfd8` | 0 |
| Central reference | [corp-v1-channel-ui-ux](https://gitea.lego-cloud.eu/home-v1-skills-code-agent/corp-v1-channel-ui-ux) | `test` | `16faefef2af8f82ee4645a187057af74beae3260` | 0 |
| Central reference | [corp-v1-channel-kanban](https://gitea.lego-cloud.eu/home-v1-skills-code-agent/corp-v1-channel-kanban) | `test` | `87a50a926a7256201ce1771aad7764898f24ff60` | 0 |
| Central reference | [corp-v1-channel-delivery](https://gitea.lego-cloud.eu/home-v1-skills-code-agent/corp-v1-channel-delivery) | `test` | `20cb78ce0942b35fe6528399c22764fbfb4cf06a` | 0 |
| Central reference | [corp-v1-channel-releases](https://gitea.lego-cloud.eu/home-v1-skills-code-agent/corp-v1-channel-releases) | `test` | `94d147880f6c957967d6612cbd846f9a2f2f6c00` | 0 |
| aerosim | [corp-v1-channel-general--aerosim](https://gitea.lego-cloud.eu/corp-v1-aerosim-skills-code-agent/corp-v1-channel-general--aerosim) | `test` | `e50dc8878ebe74b6c58601204508e4723bb7803d` | 0 |
| aerosim | [corp-v1-channel-scope--aerosim](https://gitea.lego-cloud.eu/corp-v1-aerosim-skills-code-agent/corp-v1-channel-scope--aerosim) | `test` | `0b6cee38a12803b4a7ceefe824e6a510ea35fec3` | 1 |
| aerosim | [corp-v1-channel-architecture--aerosim](https://gitea.lego-cloud.eu/corp-v1-aerosim-skills-code-agent/corp-v1-channel-architecture--aerosim) | `test` | `c2c379ea6875d1b2c91cd6d02da588b8cf06bcb6` | 1 |
| aerosim | [corp-v1-channel-ui-ux--aerosim](https://gitea.lego-cloud.eu/corp-v1-aerosim-skills-code-agent/corp-v1-channel-ui-ux--aerosim) | `test` | `26d786b310e86c87d70542a680367c768474d28e` | 1 |
| aerosim | [corp-v1-channel-kanban--aerosim](https://gitea.lego-cloud.eu/corp-v1-aerosim-skills-code-agent/corp-v1-channel-kanban--aerosim) | `test` | `e75f81d559996e9cab97092bf94db33a324830d1` | 0 |
| aerosim | [corp-v1-channel-delivery--aerosim](https://gitea.lego-cloud.eu/corp-v1-aerosim-skills-code-agent/corp-v1-channel-delivery--aerosim) | `test` | `af697f5d1ef708c66db3ab62fd1fa9094b7735a2` | 0 |
| aerosim | [corp-v1-channel-releases--aerosim](https://gitea.lego-cloud.eu/corp-v1-aerosim-skills-code-agent/corp-v1-channel-releases--aerosim) | `test` | `e85df7e82daa004bf0dc5a8db9ea09a99507583b` | 0 |
| mazeng | [corp-v1-channel-general--mazeng](https://gitea.lego-cloud.eu/corp-v1-mazeng-skills-code-agent/corp-v1-channel-general--mazeng) | `test` | `12579704b8afad3af41b55b540ad21132e2ac299` | 1 |
| mazeng | [corp-v1-channel-scope--mazeng](https://gitea.lego-cloud.eu/corp-v1-mazeng-skills-code-agent/corp-v1-channel-scope--mazeng) | `test` | `51ee9f4722a6ba5f9bbd13384ae8674690e070f9` | 1 |
| mazeng | [corp-v1-channel-architecture--mazeng](https://gitea.lego-cloud.eu/corp-v1-mazeng-skills-code-agent/corp-v1-channel-architecture--mazeng) | `test` | `4c80704a0bd065accba49d523f6a83f51f8c1d2c` | 1 |
| mazeng | [corp-v1-channel-ui-ux--mazeng](https://gitea.lego-cloud.eu/corp-v1-mazeng-skills-code-agent/corp-v1-channel-ui-ux--mazeng) | `test` | `547aabf245cd032dd82f95f3273c27753adbbd00` | 2 |
| mazeng | [corp-v1-channel-kanban--mazeng](https://gitea.lego-cloud.eu/corp-v1-mazeng-skills-code-agent/corp-v1-channel-kanban--mazeng) | `test` | `a1dcadca90ccf18da54d415c87b47b77773730b9` | 1 |
| mazeng | [corp-v1-channel-delivery--mazeng](https://gitea.lego-cloud.eu/corp-v1-mazeng-skills-code-agent/corp-v1-channel-delivery--mazeng) | `test` | `190de977a647446510375aff1bf3192beb41f444` | 1 |
| mazeng | [corp-v1-channel-releases--mazeng](https://gitea.lego-cloud.eu/corp-v1-mazeng-skills-code-agent/corp-v1-channel-releases--mazeng) | `test` | `eddc0f9d788c28134775a70e02606a0ded326933` | 1 |
| eshopv1 | [corp-v1-channel-general--eshopv1](https://gitea.lego-cloud.eu/corp-v1-eshopv1-skills-code-agent/corp-v1-channel-general--eshopv1) | `test` | `e2d6b628dbdd409cb3901384419ae69db8de256b` | 1 |
| eshopv1 | [corp-v1-channel-scope--eshopv1](https://gitea.lego-cloud.eu/corp-v1-eshopv1-skills-code-agent/corp-v1-channel-scope--eshopv1) | `test` | `0b185c233a10d004a47f80b5d408cab582bbe058` | 1 |
| eshopv1 | [corp-v1-channel-architecture--eshopv1](https://gitea.lego-cloud.eu/corp-v1-eshopv1-skills-code-agent/corp-v1-channel-architecture--eshopv1) | `test` | `9fcab760c09263b4432bf8a4a8028a22e4ca5532` | 1 |
| eshopv1 | [corp-v1-channel-ui-ux--eshopv1](https://gitea.lego-cloud.eu/corp-v1-eshopv1-skills-code-agent/corp-v1-channel-ui-ux--eshopv1) | `test` | `42e3f4bea7f526020f9abd66fd453104c4879935` | 1 |
| eshopv1 | [corp-v1-channel-kanban--eshopv1](https://gitea.lego-cloud.eu/corp-v1-eshopv1-skills-code-agent/corp-v1-channel-kanban--eshopv1) | `test` | `4c96798bfe678c97c8f820000a424fbd50a74e53` | 1 |
| eshopv1 | [corp-v1-channel-delivery--eshopv1](https://gitea.lego-cloud.eu/corp-v1-eshopv1-skills-code-agent/corp-v1-channel-delivery--eshopv1) | `test` | `5562b81fb3e8ad6fbc0d02039d58deaf64adbf53` | 1 |
| eshopv1 | [corp-v1-channel-releases--eshopv1](https://gitea.lego-cloud.eu/corp-v1-eshopv1-skills-code-agent/corp-v1-channel-releases--eshopv1) | `test` | `77dbd2841337bd24b642b08329bcc338d2cb44f6` | 1 |
## Coverage
- Seven central `corp-v1-channel-*` reference skills.
- Seven AeroSim channel-skill adoptions.
- Seven Maze Next Gen channel-skill adoptions.
- Seven E-Shop v1 channel-skill adoptions.
- Twenty-one installed Hermes runtime packages refreshed from the resulting project repositories.
The UI/UX source and three UI/UX adoptions include a follow-up correction that routes Penpot login through this shared SSO policy before reporting an authentication blocker; the table records those final commits.
Only the names `HL_V1_SSO_EMAIL` and `HL_V1_SSO_PASSWORD` are recorded. No value or Bitwarden object identifier is stored in this ledger.
+4 -4
View File
@@ -8,9 +8,9 @@ sidebar_position: 2
| Field | Value |
|---|---|
| Status | Active |
| Governance roles | AeroSim and Maze Next Gen technical member and executing code agent |
| Teams | [AeroSim Team](/teams/aerosim/); [Maze Next Gen Team](/teams/mazeng/) |
| Projects | [AeroSim](/projects/aerosim/); [Maze Next Gen](/projects/mazeng/) |
| Governance roles | AeroSim, Maze Next Gen, and E-Shop v1 technical member and executing code agent |
| Teams | [AeroSim Team](/teams/aerosim/); [Maze Next Gen Team](/teams/mazeng/); [E-Shop v1 Team](/teams/eshopv1/) |
| Projects | [AeroSim](/projects/aerosim/); [Maze Next Gen](/projects/mazeng/); [E-Shop v1](/projects/eshopv1/) |
| Gitea | `jarvis-at-skic` — verified |
The executing Hermes identity has verified membership in both AeroSim and both Maze Next Gen Gitea organization teams and verified read/post access across all six AeroSim Discord channels as bot `1526860732917088266`; the required pinned General guidance remains verified.
The executing Hermes identity has verified membership in both AeroSim, Maze Next Gen, and E-Shop v1 Gitea organization teams. It also has verified read/history/post/pin behavior across all seven E-Shop v1 Discord channels as bot `1526860732917088266`.
+4 -4
View File
@@ -8,10 +8,10 @@ sidebar_position: 1
| Field | Value |
|---|---|
| Status | Active |
| Governance roles | AeroSim and Maze Next Gen sponsor and accountable lead |
| Teams | [AeroSim Team](/teams/aerosim/); [Maze Next Gen Team](/teams/mazeng/) |
| Projects | [AeroSim](/projects/aerosim/); [Maze Next Gen](/projects/mazeng/) |
| Governance roles | AeroSim, Maze Next Gen, and E-Shop v1 sponsor and accountable lead |
| Teams | [AeroSim Team](/teams/aerosim/); [Maze Next Gen Team](/teams/mazeng/); [E-Shop v1 Team](/teams/eshopv1/) |
| Projects | [AeroSim](/projects/aerosim/); [Maze Next Gen](/projects/mazeng/); [E-Shop v1](/projects/eshopv1/) |
| Discord | RootAtSkic — `1518725627845283888`, verified |
| Gitea | `root-at-skic` — verified in both AeroSim teams and both Maze Next Gen teams |
| Gitea | `root-at-skic` — verified in both AeroSim, Maze Next Gen, and E-Shop v1 organization teams |
The Gitea identity was resolved by exact authenticated user search rather than inferred.
+1 -1
View File
@@ -21,4 +21,4 @@ This repository is the authoritative governance workspace for starting, governin
## Operating principle
Every project has a named sponsor, accountable lead, team, explicit status, Board-approved kickoff decision, and—when closed—a Board-approved closure record with retained artifacts and lessons learned.
Every project has a named sponsor, accountable lead, team, explicit status, Board-approved kickoff decision, and—when closed—a Board-approved closure record with retained artifacts and lessons learned. Board and shared governance channels remain in `corp-v1`; each project's seven lifecycle channels live in one dedicated `corp-v1-<code>` category.
+3 -2
View File
@@ -54,16 +54,17 @@ A playable MVP covering a light trainer, commercial airliner, and fighter-style
## Discord
Exactly six same-project channels exist under category `corp-v1` (`1537070242335821924`):
Exactly seven same-project channels exist in dedicated category `corp-v1-aerosim` (`1542627633123299359`), in lifecycle order:
- `corp-v1-aerosim-general` — `1537227679374508132`
- `corp-v1-aerosim-scope` — `1537544173366943886`
- `corp-v1-aerosim-architecture` — `1537227680590733383`
- `corp-v1-aerosim-ui-ux` — `1541722108072169562`
- `corp-v1-aerosim-kanban` — `1537548579856580739`
- `corp-v1-aerosim-delivery` — `1537227683191197807`
- `corp-v1-aerosim-releases` — `1537388451501056081`
Hermes bot `1526860732917088266` successfully read and posted project guidance. The general introduction is pinned as message `1537227685657444484`; Scope purpose guidance is message `1537544176621715506`; Kanban purpose guidance is message `1537548582003933326`; Releases purpose guidance is message `1537388452658815077`. Effective access is verified for RootAtSkic (`1518725627845283888`), Panther Skeleton (`476287310627864587`), MartynasP (`773109855497093191`), and Eduard (`364383883778850827`) across all six project channels.
Hermes bot `1526860732917088266` successfully read and posted project guidance. The general introduction is pinned as message `1537227685657444484`; Scope purpose guidance is message `1537544176621715506`; Kanban purpose guidance is message `1537548582003933326`; Releases purpose guidance is message `1537388452658815077`. Effective read access was reverified across all seven project channels after the category migration; channel IDs and permission overwrites are unchanged.
Six staggered recurring synchronization jobs are active. Every job runs each hour, monitors only the other five AeroSim channels, loads its mapped adopted channel skill, proactively performs useful safe work within that channel's purpose, and records durable work in project documentation:
+99
View File
@@ -0,0 +1,99 @@
---
title: E-Shop v1
sidebar_position: 3
---
# E-Shop v1
| Field | Value |
|---|---|
| Code | `eshopv1` |
| Status | Active — application deployment gated |
| Started | 2026-08-26 |
| Sponsor and accountable lead | RootAtSkic |
| Technical member | `jarvis-at-skic` / Hermes code agent |
| Team | [E-Shop v1 Team](/teams/eshopv1/) |
## Purpose and initial deliverable
Deliver a functional toothbrush storefront with an evidence-backed AliExpress catalog, local attributed product imagery, prices calculated at 150% of observed source prices, product galleries, cart, PayPal Sandbox checkout, and order confirmation.
The verified launch catalog contains nine defensible saleable products. AliExpress validation controls blocked three additional records; no product or price was invented. Production PayPal activation, spending, purchasing, and vendor-account changes remain outside bootstrap authority.
## Approval and bounded autonomy
RootAtSkic (`discord:1518725627845283888`) approved kickoff and override `ESHOPV1-BOOTSTRAP-AUTONOMY-20260826` in Board message `1542278257833939087` on 2026-08-26. The [durable decision](/governance/decisions/eshopv1-kickoff-bootstrap-autonomy/) permits one 30-minute General-channel job until the first human-authored message in any E-Shop v1 channel. The job must stop before further mutation and pause itself when that condition occurs.
## Resources
- Project organization: [corp-v1-eshopv1](https://gitea.lego-cloud.eu/corp-v1-eshopv1) — private
- Skills organization: [corp-v1-eshopv1-skills-code-agent](https://gitea.lego-cloud.eu/corp-v1-eshopv1-skills-code-agent) — private
- [Application repository](https://gitea.lego-cloud.eu/corp-v1-eshopv1/corp-v1-eshopv1) — `test` `3be141af869220620672b04681d335fb2803f425`
- [Documentation repository](https://gitea.lego-cloud.eu/corp-v1-eshopv1/corp-v1-eshopv1-documentation) — `test` `4d7a24fafb1fb9e9afc5b406407a1c8c670513be`
- [Published documentation](https://pages.apps.lego-cloud.eu/corp-v1-eshopv1/corp-v1-eshopv1-documentation/)
- Global diagram source: [drawio-main](https://gitea.lego-cloud.eu/home-v1-skills-code-agent/drawio-main); no project copy exists.
## Discord lifecycle
Exactly seven ordered channels exist in dedicated category `corp-v1-eshopv1` (`1542627655189270719`); Hermes read access was reverified after migration, and channel IDs and permission overwrites are unchanged:
1. `corp-v1-eshopv1-general` — `1542281868269985912`
2. `corp-v1-eshopv1-scope` — `1542281871642198207`
3. `corp-v1-eshopv1-architecture` — `1542281874842583061`
4. `corp-v1-eshopv1-ui-ux` — `1542281878953005158`
5. `corp-v1-eshopv1-kanban` — `1542281882400723096`
6. `corp-v1-eshopv1-delivery` — `1542281895071719466`
7. `corp-v1-eshopv1-releases` — `1542281898913439886`
General introduction: `1542281930706391192`. Harbor secret request: `1542282741041729566`; it requests direct Gitea entry and never requests or exposes the value.
## Adopted project skills
All repositories are private, use default branch `test`, retain complete source provenance, and are assigned to the skills team.
| Adopted skill | Central source SHA | Adopted SHA |
|---|---|---|
| [development-branching-strategy--eshopv1](https://gitea.lego-cloud.eu/corp-v1-eshopv1-skills-code-agent/development-branching-strategy--eshopv1) | `636aba2b9e0957705fc874f07b310a4be9916f1c` | `6255c8811ca5bbf2607c4c36980a0347c3a5ee67` |
| [development-gitops-argo-cd--eshopv1](https://gitea.lego-cloud.eu/corp-v1-eshopv1-skills-code-agent/development-gitops-argo-cd--eshopv1) | `510b2bb590118362804d6036cbbf37db72dc21d0` | `add186a9910a915aee20124855440aa9dfdb4f9f` |
| [development-monorepo-pnpm--eshopv1](https://gitea.lego-cloud.eu/corp-v1-eshopv1-skills-code-agent/development-monorepo-pnpm--eshopv1) | `ff69bcca2fb3b673297230710a74c70410fd1996` | `489570b877af6b89f995a02646b161ddf79f85dd` |
| [development-scripts--eshopv1](https://gitea.lego-cloud.eu/corp-v1-eshopv1-skills-code-agent/development-scripts--eshopv1) | `5960d5e74713e6b95a403962f479b2b97cb76286` | `69c364ea595b0b1a35738847cca2d03f8cd14d56` |
| [devsecops-ci-cd-gitea--eshopv1](https://gitea.lego-cloud.eu/corp-v1-eshopv1-skills-code-agent/devsecops-ci-cd-gitea--eshopv1) | `8f46c3faa5ba074b8a48971b87365e0d3e2a4c40` | `5b66f8a0084743ce079da667e3c97b07febc6a20` |
| [documentation-docusaurus--eshopv1](https://gitea.lego-cloud.eu/corp-v1-eshopv1-skills-code-agent/documentation-docusaurus--eshopv1) | `f810f8c92005e5d55b08700b67fd34a37be435bc` | `c2f8d50d4ffd97c854f0cb06fadfa664c9947861` |
| [template-engine-copier--eshopv1](https://gitea.lego-cloud.eu/corp-v1-eshopv1-skills-code-agent/template-engine-copier--eshopv1) | `97991021fff9e1f73202a82d29eea496ea0eb7aa` | `6a38a58997eb278736648b163d4f3f89015acf16` |
| [corp-v1-channel-general--eshopv1](https://gitea.lego-cloud.eu/corp-v1-eshopv1-skills-code-agent/corp-v1-channel-general--eshopv1) | `7137f18319b9716468485b68b99b4297a721c94f` | `e307890e65bf48280c0b798559c4925581ff1505` |
| [corp-v1-channel-scope--eshopv1](https://gitea.lego-cloud.eu/corp-v1-eshopv1-skills-code-agent/corp-v1-channel-scope--eshopv1) | `729e7ff936ed99f7d1ee203defc02f3f1ce64085` | `8df61e824d6e28b53a26a63802d9c7ae45393896` |
| [corp-v1-channel-architecture--eshopv1](https://gitea.lego-cloud.eu/corp-v1-eshopv1-skills-code-agent/corp-v1-channel-architecture--eshopv1) | `f9bef3bee6a59c74803e3aef5b26fdc61894f0ee` | `9c1cd5b238ebe53ed46d40985f70d57077a3c7f0` |
| [corp-v1-channel-ui-ux--eshopv1](https://gitea.lego-cloud.eu/corp-v1-eshopv1-skills-code-agent/corp-v1-channel-ui-ux--eshopv1) | `2039d7e3f7ac3ec14064ead52c8a53ac233f519c` | `55d79260f8fdc72c547f4de928bb7effa5ca9c34` |
| [corp-v1-channel-kanban--eshopv1](https://gitea.lego-cloud.eu/corp-v1-eshopv1-skills-code-agent/corp-v1-channel-kanban--eshopv1) | `73d8af5f18463ed55b510f1cc8a66e2f882b5552` | `fff4ace0c184c750e1e4d7ed0e7a806b78f8a075` |
| [corp-v1-channel-delivery--eshopv1](https://gitea.lego-cloud.eu/corp-v1-eshopv1-skills-code-agent/corp-v1-channel-delivery--eshopv1) | `b629921b6f58c0f36de7d1f39a13ba14c25baab2` | `456297285484f4bfe2c43ba64e67e17af4edd89e` |
| [corp-v1-channel-releases--eshopv1](https://gitea.lego-cloud.eu/corp-v1-eshopv1-skills-code-agent/corp-v1-channel-releases--eshopv1) | `12891cf409378777eac72fbde9541b3c117e82aa` | `f2d2bfb78044dbc3cedc8bc998412e19234c78aa` |
## Access, automation, and Harbor
`e-shop-v1-team` exists independently in both organizations, includes all repositories, grants per-unit write access, and contains verified users `root-at-skic` and `jarvis-at-skic`.
Scheduler job `d6505c6ac0da` is the single approved 30-minute General job. It uses frozen high-watermarks, scans only the seven E-Shop channels, attaches all fourteen adopted skills, delivers only to General, and pauses on the first human message. RootAtSkic explicitly renewed foreground continuation and requested that the job be returned to service in Board message `1542470702525980672` on 2026-08-27.
Verified organization variables:
- `HL_V1_HARBOR_ADDRESS=harbor-v1.apps.lego-cloud.eu`
- `HL_V1_HARBOR_ROBOT_GITEA_ACTIONS_V1_USERNAME=robot$gondor-v1+gitea-actions-v1`
`HL_V1_HARBOR_ROBOT_GITEA_ACTIONS_V1_SECRET` presence: **verified by name** after RootAtSkic's confirmation in message `1542462573750784022`. Its value was never requested or accessed. A governed publication retry reached Harbor but registry authentication returned `unauthorized`; therefore the configured credential must be corrected or reconciled with the configured robot username before publication can succeed.
## Verification
- Application PR 1 reviewed head `ca4ed6e27c565a2775e82c8471e5a355536af6c6`; exact-head Actions task `1415`: success; merged default head `7fd6b88fc01e3834862fecfa063931d65ed0b786`; integrated task `1418`: success.
- Application PR 4 reviewed head `b2b28d9b82f12af822b705453b64e585b65bcd0f`; exact-head tasks `1446` and `1447`: success. It added a durable Argo CD AppProject/Application bootstrap, ingress, resource bounds, immutable Harbor image pin, and fail-closed optional PayPal secret references. Merged default head: `3be141af869220620672b04681d335fb2803f425`.
- Integrated artifact task `1448` failed at Harbor authentication with `unauthorized`; no image, chart, Argo Application, or deployed storefront is claimed.
- Documentation PR 1 reviewed head `d65c41749cfe99b8b58e317da3f87dd83b1a94eb`; merged default head `4d7a24fafb1fb9e9afc5b406407a1c8c670513be`; integrated task `1417`: success.
- Authorized Pages body readback found the E-Shop v1 and Bootstrap MVP markers.
- Local application validation passed lint, type checks, seven tests, production build, runtime rendering, and fail-closed PayPal behavior.
- Catalog validation passed for nine sourced products and zero fixtures.
## Outstanding gates
1. A member must correct or reconcile the existing Harbor organization secret directly in Gitea so it authenticates as the configured robot user; the value must never be sent to Hermes or Discord.
2. Publish the application image, apply the merged Argo CD bootstrap, and wait for `Synced` / `Healthy` convergence.
3. Verify the deployed storefront and inject PayPal Sandbox credentials through the approved secret path for an end-to-end Sandbox create/capture test.
4. Production payment go-live requires a separate explicit decision.
+1
View File
@@ -10,6 +10,7 @@ sidebar_position: 1
|---|---|---|---|---|---|---|
| [AeroSim](/projects/aerosim/) | Active — Harbor gated | RootAtSkic | RootAtSkic | [AeroSim Team](/teams/aerosim/) | 2026-08-12 | — |
| [Maze Next Gen](/projects/mazeng/) | Active — Harbor gated | RootAtSkic | RootAtSkic | [Maze Next Gen Team](/teams/mazeng/) | 2026-08-17 | — |
| [E-Shop v1](/projects/eshopv1/) | Active — application deployment gated | RootAtSkic | RootAtSkic | [E-Shop v1 Team](/teams/eshopv1/) | 2026-08-26 | — |
## Required project record
+3 -2
View File
@@ -37,16 +37,17 @@ RootAtSkic (`discord:1518725627845283888`) explicitly approved the updated six-c
## Discord
Exactly six channels exist under category `corp-v1` (`1537070242335821924`):
Exactly seven channels exist in dedicated category `corp-v1-mazeng` (`1542627645441839174`), in lifecycle order:
- `corp-v1-mazeng-general` — `1539019955738116096`; purpose `1539019957923483728`; pinned skills `1539021508326981683`
- `corp-v1-mazeng-scope` — `1539019959135633580`; purpose `1539019961329000479`; pinned skills `1539021514379370546`
- `corp-v1-mazeng-architecture` — `1539019963568758835`; purpose `1539019966857355416`; pinned skills `1539021520230162540`
- `corp-v1-mazeng-ui-ux` — `1541722112841089074`
- `corp-v1-mazeng-kanban` — `1539019969323466883`; purpose `1539019971655372911`; pinned skills `1539021525657849896`
- `corp-v1-mazeng-delivery` — `1539019973043683358`; purpose `1539019975203885068`; pinned skills `1539021530317463572`
- `corp-v1-mazeng-releases` — `1539019976977948694`; purpose `1539019979590991963`; pinned skills `1539021536621756458`
General introduction `1539019982682325132` and all six skill-guidance messages are pinned. Hermes read/post/pin operations succeeded in all channels. Harbor request message: `1539020766203617390`.
General introduction `1539019982682325132` and the recorded skill-guidance messages are pinned. Hermes read access was reverified across all seven channels after the category migration; channel IDs and permission overwrites are unchanged. Harbor request message: `1539020766203617390`.
## Synchronization jobs
+1 -1
View File
@@ -33,4 +33,4 @@ Deliver the AeroSim browser flight-simulation platform, its documentation, and t
## Communication
Exactly six AeroSim channels exist under the `corp-v1` category: `general`, `scope`, `architecture`, `kanban`, `delivery`, and `releases`. RootAtSkic, Panther Skeleton, MartynasP, Eduard, and Hermes have verified effective access. Guidance messages, the pinned general introduction, and six isolated same-project hourly synchronization jobs are verified.
Exactly seven AeroSim channels exist in dedicated category `corp-v1-aerosim` (`1542627633123299359`): `general`, `scope`, `architecture`, `ui-ux`, `kanban`, `delivery`, and `releases`. Channel IDs, permission overwrites, and history were preserved during migration; Hermes read access and lifecycle order were reverified. Existing purpose guidance, the pinned general introduction, and project automation records remain attached to the unchanged channel IDs.
+29
View File
@@ -0,0 +1,29 @@
---
title: E-Shop v1 Team
sidebar_position: 3
---
# E-Shop v1 Team
| Field | Value |
|---|---|
| Status | Active |
| Lead | RootAtSkic |
| Members | RootAtSkic; `jarvis-at-skic` / Hermes code agent |
| Assigned project | [E-Shop v1](/projects/eshopv1/) |
## Mandate
Deliver the governed E-Shop v1 toothbrush-commerce MVP, its source-evidence catalog, PayPal Sandbox boundary, documentation, CI, deployment assets, and release evidence.
## Gitea access
`e-shop-v1-team` exists independently in `corp-v1-eshopv1` and `corp-v1-eshopv1-skills-code-agent`. Both teams include all repositories, grant per-unit write access, and contain verified users `root-at-skic` and `jarvis-at-skic`.
## Communication and autonomy
Seven exact E-Shop v1 lifecycle channels exist in dedicated category `corp-v1-eshopv1` (`1542627655189270719`), with immutable channel IDs and permission overwrites preserved. Hermes read access and order were reverified after migration. One project-specific 30-minute General job is authorized under `ESHOPV1-BOOTSTRAP-AUTONOMY-20260826`; its authority ends at the first human-authored project-channel message.
## Remaining gates
Harbor image publication waits for organization secret name `HL_V1_HARBOR_ROBOT_GITEA_ACTIONS_V1_SECRET`, entered directly in Gitea. PayPal remains Sandbox-only and requires environment-injected credentials for an end-to-end capture test. Neither secret value may be sent to Hermes or Discord.
+1
View File
@@ -10,5 +10,6 @@ sidebar_position: 1
|---|---|---|---:|---:|
| [AeroSim Team](/teams/aerosim/) | Active | RootAtSkic | 8 | 1 |
| [Maze Next Gen Team](/teams/mazeng/) | Active | RootAtSkic | 4 | 1 |
| [E-Shop v1 Team](/teams/eshopv1/) | Active | RootAtSkic | 2 | 1 |
A team record defines its mandate, lead, members, responsibilities, communication channels, and assigned projects.
+1 -1
View File
@@ -22,7 +22,7 @@ Deliver the Maze Next Gen multi-cloud inventory and visualization platform, docu
## Communication
Six exact Maze channels, purpose messages, pinned guidance, and six isolated staggered hourly synchronization jobs are verified.
Seven exact Maze channels exist in dedicated category `corp-v1-mazeng` (`1542627645441839174`) in lifecycle order. Channel IDs, permission overwrites, history, purpose messages, and pinned guidance remain attached to the moved channels; Hermes read access was reverified after migration.
## Remaining gate
+23
View File
@@ -0,0 +1,23 @@
---
title: "Ways of Working"
description: "Use the shared operating practices for participating safely and effectively in the Corp v1 pilot."
slug: /
sidebar_position: 1
---
# Ways of Working
Corp v1 is a governed AI-assisted delivery pilot. People set outcomes, authority, and constraints; Hermes helps turn those decisions into traceable designs, code, documentation, releases, and operated evidence.
Use this area to understand how to join the pilot, where work belongs, how decisions become delivery, and which evidence is required before something is called complete.
## Start here
1. Read [Onboarding](./onboarding) before contributing.
2. Find your project in the [project registry](/projects/).
3. Confirm your responsibilities in the [team](/teams/) and [member](/members/) registries.
4. Follow the [project lifecycle](/governance/project-lifecycle/) and the authority recorded for your project.
## Core principle
Keep conversation, decisions, implementation, deployment, and runtime proof connected—but do not treat them as the same thing. An approved idea is not implemented work; a merged change is not a deployed change; a healthy runtime is not release or product acceptance.
+117
View File
@@ -0,0 +1,117 @@
---
title: "Onboarding"
description: "Join the Corp v1 pilot with the right access, context, channel routing, authority, security practices, and evidence expectations."
sidebar_position: 1
---
# Onboarding
Use this page when joining the Corp v1 pilot or entering a project for the first time. You should finish with the right access, a clear role, and enough context to contribute without bypassing project governance.
## What the pilot is
Corp v1 tests whether one AI agent can support several focused project workstreams while people retain explicit authority and durable oversight. The pilot currently includes:
- [AeroSim](/projects/aerosim/)
- [Maze Next Gen](/projects/mazeng/)
- [E-Shop v1](/projects/eshopv1/)
The [Board](/board/) governs project kickoff, closure, and changes to the main Corp v1 operating model. Each project has its own sponsor, team, approved scope, repositories, documentation, Discord category, and preserved authority decisions.
## Your first 20 minutes
1. **Confirm your identity and role.** Check the [member registry](/members/) and your [team record](/teams/). If either is wrong, raise it before taking ownership of work.
2. **Open the project record.** Read its purpose, initial deliverable, current status, resources, and outstanding gates in the [project registry](/projects/).
3. **Open the project documentation.** It is the durable source for scope, architecture, design, Kanban state, ways of working, engineering guidance, and release evidence.
4. **Verify Discord access.** Every project has one dedicated `corp-v1-<code>` category with seven lifecycle channels. Confirm that you can see the channels needed for your role and read their pinned guidance.
5. **Verify Gitea access.** Confirm access to the project and skills organizations through the appropriate teams. Do not request direct repository access when team membership is the intended route.
6. **Choose one current outcome.** Start from an existing Epic, Feature, task, issue, design package, or release gate. Do not create parallel records because an item is difficult to find.
## Use the seven channels correctly
Work moves through this shared lifecycle:
```text
General → Scope → Architecture → UI/UX → Kanban → Delivery → Releases
```
| Channel | Use it for |
|---|---|
| **General** | Project-wide direction, coordination, questions, outcomes, and cross-channel issues |
| **Scope** | Ideas, Epics, Features, value, acceptance outcomes, and product decisions |
| **Architecture** | Solution design, interfaces, constraints, risks, and implementation task definitions |
| **UI/UX** | User journeys, Penpot designs, responsive behavior, accessibility, and implementation handoff |
| **Kanban** | Flow visibility, task admission, sequencing, dependencies, and blockers |
| **Delivery** | Implementation, tests, reviews, CI, build health, and delivery evidence |
| **Releases** | Version readiness, changelogs, deployment approval, rollout, rollback, and runtime verification |
Post in the channel that owns the decision or artifact. Cross-link evidence instead of copying whole conversations between channels. Keep one project’s information inside that project’s seven-channel boundary unless a Board-level concern requires escalation.
## Understand authority
- **Board authority** covers project kickoff, project closure, and changes to `corp-v1--main`.
- **Project-team authority** covers decisions inside the project’s approved boundary.
- **Hermes authority** is project-specific. It may range from preparing proposals to full delegated delivery and merge authority. Use the preserved project record and channel skill; never infer authority from activity, silence, CI success, or an agent statement.
- **Explicit gates remain explicit.** A decision must identify the item, actor, conditions, and evidence. Delegation changes who may decide; it does not remove security, quality, traceability, or validation gates.
When authority is unclear, stop at a reversible proposal and ask in the owning channel.
## Know what “done” means
Keep these states separate:
1. **Approved** — an authorized person or delegate accepted the exact scope or decision.
2. **Implemented** — source changes exist and passed the required local/review checks.
3. **Merged** — the reviewed change is integrated into the repository’s default branch.
4. **Deployed / runtime verified** — the intended immutable revision is running and has passed live readback or acceptance checks.
5. **Released / accepted** — the project’s release authority approved the version and required outcomes.
Always state the highest level actually proven and link the evidence. Do not use “live” as a shortcut for release approval or product maturity.
## Security and credentials
- Never paste passwords, tokens, API keys, connection strings, secret values, or Bitwarden object metadata into Discord, issues, repositories, prompts, screenshots, or documentation.
- Use the approved SSO and secret-injection paths. A credential being available does not authorize unrelated access, account administration, spending, or destructive work.
- Record secret **names and readiness only** when governance requires it.
- Report suspected exposure immediately in the owning project and follow the approved rotation path.
- Treat private project repositories, project-channel history, and customer or operational data as project-bound information.
## How to make a useful contribution
A useful contribution is small enough to review and complete, but durable enough to help the next person:
- start from a stable item or create a clearly marked proposal;
- cite the source message, decision, requirement, design, issue, or runtime observation;
- work in the owning channel and canonical repository;
- preserve project naming, branch, testing, and documentation conventions;
- run the required validation and match CI to the exact commit;
- read back remote and deployed state before claiming completion;
- report the outcome, evidence, remaining gates, owner, and next action concisely.
If a task crosses channels, finish the source-owned result and hand off one clear requested action with evidence and unresolved risks.
## Where truth lives
| Information | Authoritative location |
|---|---|
| Portfolio governance, Board decisions, teams, and project registry | This Corp v1 portal |
| Product scope and project delivery records | Project documentation repository and deployed documentation |
| Source, reviews, commits, CI, and releases | Project Gitea repositories |
| Discussion, approvals, coordination, and handoffs | Exact project Discord channels and message IDs |
| Deployment and runtime state | GitOps source, Argo CD, workload state, and live acceptance evidence |
| Editable interface design | Project-owned Penpot files linked from project records |
No single status message replaces these sources. Reconcile them when they disagree.
## Onboarding complete
You are ready to contribute when you can answer:
- Which project and outcome am I supporting?
- What is my role and decision authority?
- Which channel owns my next action?
- Where is the canonical record?
- What evidence is required before I call it complete?
- Which security or release gates still apply?
If any answer is missing, ask in the project’s **General** channel and link the record you already checked.
+4 -1
View File
@@ -39,6 +39,7 @@ const config: Config = {
['@docusaurus/plugin-content-docs', {...docsCommon, id: 'projects', path: 'docs/projects', routeBasePath: 'projects', sidebarPath: './sidebars/projects.ts'}],
['@docusaurus/plugin-content-docs', {...docsCommon, id: 'teams', path: 'docs/teams', routeBasePath: 'teams', sidebarPath: './sidebars/teams.ts'}],
['@docusaurus/plugin-content-docs', {...docsCommon, id: 'members', path: 'docs/members', routeBasePath: 'members', sidebarPath: './sidebars/members.ts'}],
['@docusaurus/plugin-content-docs', {...docsCommon, id: 'ways-of-working', path: 'docs/ways-of-working', routeBasePath: 'ways-of-working', sidebarPath: './sidebars/ways-of-working.ts'}],
['@docusaurus/plugin-content-docs', {...docsCommon, id: 'board', path: 'docs/board', routeBasePath: 'board', sidebarPath: './sidebars/board.ts'}],
['@docusaurus/plugin-content-docs', {...docsCommon, id: 'governance', path: 'docs/governance', routeBasePath: 'governance', sidebarPath: './sidebars/governance.ts'}],
],
@@ -49,7 +50,7 @@ const config: Config = {
indexDocs: true,
indexBlog: false,
indexPages: true,
docsRouteBasePath: ['/', 'architecture-high-level', 'projects', 'teams', 'members', 'board', 'governance'],
docsRouteBasePath: ['/', 'architecture-high-level', 'projects', 'teams', 'members', 'ways-of-working', 'board', 'governance'],
language: ['en'],
highlightSearchTermsOnTargetPage: true,
explicitSearchResultPath: true,
@@ -63,6 +64,7 @@ const config: Config = {
title: 'CORP V1 / BOARD',
items: [
{type: 'docSidebar', sidebarId: 'projectsSidebar', docsPluginId: 'projects', label: 'Projects', position: 'left'},
{type: 'docSidebar', sidebarId: 'waysOfWorkingSidebar', docsPluginId: 'ways-of-working', label: 'Ways of Working', position: 'left'},
{type: 'docSidebar', sidebarId: 'teamsSidebar', docsPluginId: 'teams', label: 'Teams', position: 'left'},
{type: 'docSidebar', sidebarId: 'membersSidebar', docsPluginId: 'members', label: 'Members', position: 'left'},
{type: 'docSidebar', sidebarId: 'boardSidebar', docsPluginId: 'board', label: 'Board', position: 'left'},
@@ -76,6 +78,7 @@ const config: Config = {
links: [{title: 'Registry', items: [
{label: 'Architecture', to: '/architecture-high-level/context/'},
{label: 'Projects', to: '/projects/'},
{label: 'Ways of Working', to: '/ways-of-working/'},
{label: 'Teams', to: '/teams/'},
{label: 'Members', to: '/members/'},
{label: 'Board', to: '/board/'},
+32 -9
View File
@@ -21,17 +21,30 @@ for (const section of ['projects', 'teams', 'members', 'board', 'governance']) {
assert.match(config, new RegExp(`sidebarId:\\s*'${section}Sidebar'`), `${section} navbar item does not target its dedicated sidebar`);
assert.ok(existsSync(join(root, `sidebars/${section}.ts`)), `${section} sidebar file is missing`);
}
assert.match(config, /id:\s*'ways-of-working'/, 'Ways of Working docs plugin is missing');
assert.match(config, /sidebarId:\s*'waysOfWorkingSidebar'/, 'Ways of Working navbar item does not target its dedicated sidebar');
assert.ok(existsSync(join(root, 'sidebars/ways-of-working.ts')), 'Ways of Working sidebar file is missing');
assert.ok(existsSync(join(root, 'docs/ways-of-working/index.md')), 'Ways of Working entry page is missing');
assert.ok(existsSync(join(root, 'docs/ways-of-working/onboarding.md')), 'Onboarding page is missing');
assert.match(config, /id:\s*'architecture-high-level'/, 'Architecture High Level docs plugin is missing');
assert.match(config, /sidebarId:\s*'architectureHighLevelSidebar'/, 'Architecture High Level navbar item does not target its dedicated sidebar');
assert.match(config, /label:\s*'Architecture'/, 'Architecture navbar label is missing');
assert.doesNotMatch(config, /label:\s*'Architecture High Level'/, 'legacy Architecture High Level menu label must not remain');
assert.ok(existsSync(join(root, 'sidebars/architecture-high-level.ts')), 'Architecture High Level sidebar file is missing');
const expectedLeftNavLabels = ['Projects', 'Teams', 'Members', 'Board', 'Governance', 'Architecture'];
const expectedLeftNavLabels = ['Projects', 'Ways of Working', 'Teams', 'Members', 'Board', 'Governance', 'Architecture'];
const leftNavLabels = [...config.matchAll(/\{type:\s*'docSidebar',[^\n]+label:\s*'([^']+)',\s*position:\s*'left'\}/g)]
.map((match) => match[1]);
assert.deepEqual(leftNavLabels, expectedLeftNavLabels, 'Architecture must be the final left-side menu item');
const waysOfWorkingSidebar = read('sidebars/ways-of-working.ts');
assert.match(waysOfWorkingSidebar, /link:\s*\{type:\s*'doc',\s*id:\s*'index'\}/, 'Ways of Working must link to its entry page');
assert.match(waysOfWorkingSidebar, /items:\s*\[\{type:\s*'doc',\s*id:\s*'onboarding',\s*label:\s*'Onboarding'\}\]/, 'Onboarding must be the first child page');
const onboarding = read('docs/ways-of-working/onboarding.md');
for (const term of ['Your first 20 minutes', 'Use the seven channels correctly', 'Understand authority', 'Know what “done” means', 'Security and credentials', 'Onboarding complete']) {
assert.ok(onboarding.includes(term), `Onboarding is missing: ${term}`);
}
assert.match(config, /baseUrl:\s*'\/corp-v1\/portal\/'/, 'Pages base URL must follow the renamed repository');
assert.match(config, /projectName:\s*'portal'/, 'Docusaurus project name must be portal');
assert.doesNotMatch(config, /sterring-commitee/, 'legacy repository name must not remain in Docusaurus config');
@@ -68,7 +81,7 @@ assert.match(config, /indexPages:\s*true/, 'custom pages must be indexed');
const searchRoutesMatch = config.match(/docsRouteBasePath:\s*\[([^\]]+)\]/);
assert.ok(searchRoutesMatch, 'search route configuration is missing');
const searchRoutes = searchRoutesMatch[1];
for (const route of ['/', 'architecture-high-level', 'projects', 'teams', 'members', 'board', 'governance']) {
for (const route of ['/', 'architecture-high-level', 'projects', 'teams', 'members', 'ways-of-working', 'board', 'governance']) {
assert.ok(searchRoutes.includes(`'${route}'`), `search does not include route base ${route}`);
}
@@ -78,7 +91,7 @@ const expectedArchitectureSidebar = `import type {SidebarsConfig} from '@docusau
const sidebars: SidebarsConfig = {
architectureHighLevelSidebar: [
{type: 'doc', id: 'context', label: 'Context'},
{type: 'doc', id: 'overview', label: 'Overview'},
{type: 'doc', id: 'overview', label: 'Container 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'},
@@ -103,12 +116,22 @@ const architecturePages = {
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', 'Hermes Agent', 'MicroK8s', 'Penpot', 'Argo CD', 'Harbor']) {
for (const term of ['seven channel skills', 'seven engineering skills', 'Gitea Actions', 'scheduler jobs', 'corp-v1-board', 'corp-v1-guild', 'corp-v1--guild', '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}`);
}
assert.match(architecturePages.channels, /two central portfolio workspaces/i, 'channels overview must distinguish Board and Guild as central workspaces');
assert.match(architecturePages.channels, /neither is an eighth project channel/i, 'Guild must not be classified as an eighth project channel');
assert.match(architecturePages.skills, /not copied as a fifteenth project skill/i, 'Guild must remain central rather than project-adopted');
assert.doesNotMatch(architecturePages.channels, /one portfolio-governance channel/i, 'superseded single-central-workspace wording must not remain');
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 ['only two external software systems', 'LLM Provider', 'ICA or GPT Codex', 'Communication Service — Discord']) {
assert.ok(architecturePages.context.includes(term), `system context is missing boundary rule: ${term}`);
}
for (const term of ['Gitea Actions runners', 'Penpot', 'LEGO Cloud Pages', 'Harbor', 'Argo CD', 'Identity and access', 'Ingress edge', 'Gondor v1 MicroK8s']) {
assert.ok(architecturePages.overview.includes(term), `container overview is missing internal container: ${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}`);
}
@@ -116,11 +139,11 @@ 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 — 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'],
'context.drawio': ['CORP V1 — HOME-LAB SYSTEM CONTEXT', 'HUMAN ACTORS', 'TARGET SYSTEM', 'EXTERNAL SYSTEMS · ONLY TWO', 'DISCORD', 'ICA OR GPT CODEX'],
'architecture-overview.drawio': ['CORP V1 — HOME-LAB CONTAINER OVERVIEW', 'EXTERNAL · DISCORD', 'EXTERNAL · LLM PROVIDER', 'INTERNAL CONTAINERS', 'GITEA ACTIONS RUNNERS', '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'],
'channels.drawio': ['CORP V1 — BOARD, GUILD &amp; PROJECT CHANNELS', 'CORP-V1-BOARD', 'CORP-V1-GUILD', 'GENERAL', 'ARCHITECTURE', 'UI/UX', 'RELEASES', 'MULTIPLE FOCUSED SESSIONS'],
'skills.drawio': ['CORP V1 — SKILLS MODEL', 'CENTRAL SOURCES', 'CORP-V1--GUILD', '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}`);
@@ -135,7 +158,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', 'operating model', 'overview channels', 'overview skills', 'overview repositories']) {
for (const term of ['projects registry', 'teams registry', 'members registry', 'board members', 'project lifecycle', 'corp v1 board', 'ways of working', 'your first 20 minutes', 'onboarding complete', 'container overview', 'operating model', 'overview channels', 'overview skills', 'overview repositories']) {
assert.ok(search.includes(term), `search index is missing: ${term}`);
}
}
+1 -1
View File
@@ -3,7 +3,7 @@ import type {SidebarsConfig} from '@docusaurus/plugin-content-docs';
const sidebars: SidebarsConfig = {
architectureHighLevelSidebar: [
{type: 'doc', id: 'context', label: 'Context'},
{type: 'doc', id: 'overview', label: 'Overview'},
{type: 'doc', id: 'overview', label: 'Container 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'},
+1
View File
@@ -4,6 +4,7 @@ const sidebars: SidebarsConfig = {
governanceSidebar: [
{type: 'doc', id: 'project-lifecycle', label: 'Project Lifecycle'},
{type: 'doc', id: 'decisions', label: 'Decision Log'},
{type: 'doc', id: 'decisions/corp-v1-guild-establishment', label: 'Corp v1 Guild Establishment'},
{type: 'doc', id: 'decisions/corp-v1-board-migration', label: 'Corp v1 Board Migration'},
],
};
+15
View File
@@ -0,0 +1,15 @@
import type {SidebarsConfig} from '@docusaurus/plugin-content-docs';
const sidebars: SidebarsConfig = {
waysOfWorkingSidebar: [
{
type: 'category',
label: 'Ways of Working',
link: {type: 'doc', id: 'index'},
collapsed: false,
items: [{type: 'doc', id: 'onboarding', label: 'Onboarding'}],
},
],
};
export default sidebars;