Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6170e09db6 | ||
|
|
fe473d9f83 |
@@ -22,14 +22,10 @@ jobs:
|
||||
version: 9.15.9
|
||||
- name: Install dependencies
|
||||
run: pnpm install --frozen-lockfile
|
||||
- name: Validate portal contracts
|
||||
run: pnpm verify:portal
|
||||
- name: Typecheck
|
||||
run: pnpm typecheck
|
||||
- name: Build site
|
||||
run: pnpm build
|
||||
- name: Validate built routes and search index
|
||||
run: pnpm verify:portal
|
||||
- name: Publish to LEGO Cloud Pages
|
||||
if: gitea.event_name == 'push' && gitea.ref == 'refs/heads/main'
|
||||
shell: bash
|
||||
|
||||
@@ -1,44 +0,0 @@
|
||||
---
|
||||
id: context
|
||||
title: "Context"
|
||||
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';
|
||||
import contextDiagram from '!!raw-loader!./diagrams/context.drawio';
|
||||
|
||||
# Context
|
||||
|
||||
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 home-lab system context" toolbar="zoom layers lightbox" responsive maxHeight={760} />
|
||||
|
||||
## Human actors
|
||||
|
||||
| Actor | Relationship to Corp v1 |
|
||||
|---|---|
|
||||
| **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. |
|
||||
|
||||
Human authority remains outside automation. Hermes, CI, deployments, inferred intent, and silence never substitute for an approval reserved to a listed person.
|
||||
|
||||
## External systems
|
||||
|
||||
Corp v1 currently has only two external software systems:
|
||||
|
||||
| External system | Relationship to Corp v1 |
|
||||
|---|---|
|
||||
| **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. |
|
||||
|
||||
## Inside the system boundary
|
||||
|
||||
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.
|
||||
|
||||
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,42 +0,0 @@
|
||||
<mxfile host="app.diagrams.net" modified="2026-08-25T00:00:00.000Z" agent="Hermes Agent" version="26.0.16" type="device">
|
||||
<diagram id="corp-v1-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 — 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="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 & 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="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>
|
||||
</mxfile>
|
||||
@@ -1,62 +0,0 @@
|
||||
<mxfile host="app.diagrams.net" modified="2026-08-25T00:00:00.000Z" agent="Hermes Agent" version="26.0.16" type="device">
|
||||
<diagram id="corp-v1-project-channels-v2" name="CORP V1 — 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 & 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>
|
||||
<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>
|
||||
<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"/>
|
||||
</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"/>
|
||||
</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"/>
|
||||
</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"/>
|
||||
</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"/>
|
||||
</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"/>
|
||||
</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"/>
|
||||
</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"/>
|
||||
</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"/>
|
||||
</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"/>
|
||||
</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"/>
|
||||
</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"/>
|
||||
</mxCell>
|
||||
</root>
|
||||
</mxGraphModel>
|
||||
</diagram>
|
||||
</mxfile>
|
||||
@@ -1,22 +0,0 @@
|
||||
<mxfile host="app.diagrams.net" modified="2026-08-25T00:00:00.000Z" agent="Hermes Agent" version="26.0.16" type="device">
|
||||
<diagram id="corp-v1-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 — 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 & 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="SPONSORS & 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 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>
|
||||
</mxfile>
|
||||
@@ -1,33 +0,0 @@
|
||||
<mxfile host="app.diagrams.net" modified="2026-08-25T00:00:00.000Z" agent="Hermes Agent" version="26.0.16" type="device">
|
||||
<diagram id="corp-v1-operating-model-v3" name="CORP V1 — OPERATING MODEL FLOW">
|
||||
<mxGraphModel dx="1500" dy="960" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1500" pageHeight="960" math="0" shadow="0" adaptiveColors="auto">
|
||||
<root>
|
||||
<mxCell id="0"/>
|
||||
<mxCell id="1" parent="0"/>
|
||||
<mxCell id="title" value="CORP V1 — OPERATING MODEL FLOW" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;fontSize=24;fontStyle=1;fontColor=#102A43;" vertex="1" parent="1"><mxGeometry x="80" y="20" width="1360" height="40" as="geometry"/></mxCell>
|
||||
<mxCell id="subtitle" value="One agent · multiple channel sessions · explicit human gates · durable evidence" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;fontSize=14;fontColor=#486581;" vertex="1" parent="1"><mxGeometry x="80" y="70" width="1360" height="40" as="geometry"/></mxCell>
|
||||
<mxCell id="board" value="1 · CORP-V1-BOARD · BOARD APPROVAL · purpose · lead · members" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#E6FFFA;strokeColor=#0F766E;strokeWidth=2;fontColor=#102A43;fontSize=14;fontStyle=1;spacing=12;" vertex="1" parent="1"><mxGeometry x="80" y="160" width="240" height="160" as="geometry"/></mxCell>
|
||||
<mxCell id="general" value="2 · GENERAL · onboarding · coordination · questions · outcomes" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#E6FFFA;strokeColor=#0F766E;strokeWidth=2;fontColor=#102A43;fontSize=14;fontStyle=1;spacing=12;" vertex="1" parent="1"><mxGeometry x="360" y="160" width="240" height="160" as="geometry"/></mxCell>
|
||||
<mxCell id="scope" value="3 · SCOPE · Ideas → Epics → Features · value · 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="640" y="160" width="240" height="160" as="geometry"/></mxCell>
|
||||
<mxCell id="architecture" value="4 · 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="920" y="160" width="240" height="160" as="geometry"/></mxCell>
|
||||
<mxCell id="uiux" value="5 · UI/UX · journeys · IA · Penpot · accessibility · 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="1200" y="160" width="240" height="160" as="geometry"/></mxCell>
|
||||
<mxCell id="kanban" value="6 · KANBAN / FOCUS · flow · blockers · 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="1200" y="480" width="240" height="160" as="geometry"/></mxCell>
|
||||
<mxCell id="delivery" value="7 · 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="920" y="480" width="240" height="160" as="geometry"/></mxCell>
|
||||
<mxCell id="releases" value="8 · RELEASES · candidate · readiness · 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="640" y="480" width="240" height="160" as="geometry"/></mxCell>
|
||||
<mxCell id="verify" value="9 · VERIFY & RECORD · runtime readback · docs · Board evidence" 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="480" 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="board" target="general"><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="general" target="scope"><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="scope" target="architecture"><mxGeometry relative="1" as="geometry"/></mxCell>
|
||||
<mxCell id="e4" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;strokeColor=#475569;strokeWidth=3;endArrow=block;endFill=1;" edge="1" parent="1" source="architecture" target="uiux"><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="uiux" target="kanban"><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="kanban" target="delivery"><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="delivery" target="releases"><mxGeometry relative="1" 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="releases" target="verify"><mxGeometry relative="1" as="geometry"/></mxCell>
|
||||
<mxCell id="e9" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;strokeColor=#0F766E;strokeWidth=2;dashed=1;endArrow=block;endFill=1;" edge="1" parent="1" source="verify" target="board">
|
||||
<mxGeometry relative="1" as="geometry"><Array as="points"><mxPoint x="340" y="560"/><mxPoint x="40" y="560"/><mxPoint x="40" y="240"/><mxPoint x="60" y="240"/></Array></mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="guidance" value="ONE AGENT · MULTIPLE SESSIONS · 14 PROJECT SKILLS · NO SCHEDULERS" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#F8FAFC;strokeColor=#64748B;strokeWidth=2;fontColor=#102A43;fontSize=16;fontStyle=1;spacing=16;align=center;" vertex="1" parent="1"><mxGeometry x="80" y="760" width="1360" height="120" as="geometry"/></mxCell>
|
||||
</root>
|
||||
</mxGraphModel>
|
||||
</diagram>
|
||||
</mxfile>
|
||||
@@ -1,79 +0,0 @@
|
||||
<mxfile host="app.diagrams.net" modified="2026-08-24T00:00:00.000Z" agent="Hermes Agent" version="26.0.16" type="device">
|
||||
<diagram id="corp-v1-repositories-delivery" name="CORP V1 — ORGANIZATIONS, REPOSITORIES & DELIVERY">
|
||||
<mxGraphModel dx="1500" dy="900" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="2000" pageHeight="900" math="0" shadow="0">
|
||||
<root>
|
||||
<mxCell id="0" />
|
||||
<mxCell id="1" parent="0" />
|
||||
<mxCell id="title" value="CORP V1 — ORGANIZATIONS, REPOSITORIES & DELIVERY" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;fontSize=24;fontStyle=1;fontColor=#102A43;" vertex="1" parent="1">
|
||||
<mxGeometry x="80" y="20" width="1200" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="subtitle" value="Project repositories + adopted agent guidance meet in reviewed delivery evidence" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;fontSize=14;fontColor=#486581;" vertex="1" parent="1">
|
||||
<mxGeometry x="80" y="60" width="1300" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="projectorg" value="corp-v1-&lt;code&gt; PROJECT ORGANIZATION" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#EFF6FF;strokeColor=#2563EB;strokeWidth=2;fontColor=#102A43;fontSize=14;spacing=12;" vertex="1" parent="1">
|
||||
<mxGeometry x="560" y="160" width="400" height="120" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="docs" value="corp-v1-&lt;code&gt;-documentation Docusaurus portal + editable Draw.io" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#2563EB;strokeWidth=2;fontColor=#102A43;fontSize=14;spacing=12;" vertex="1" parent="1">
|
||||
<mxGeometry x="560" y="320" width="400" height="120" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="app" value="corp-v1-&lt;code&gt; pnpm/TypeScript application monorepo" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#2563EB;strokeWidth=2;fontColor=#102A43;fontSize=14;spacing=12;" vertex="1" parent="1">
|
||||
<mxGeometry x="560" y="480" width="400" height="120" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="skillsorg" value="corp-v1-&lt;code&gt;-skills-code-agent SKILLS ORGANIZATION" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#FFFBEB;strokeColor=#A16207;strokeWidth=2;fontColor=#102A43;fontSize=14;spacing=12;" vertex="1" parent="1">
|
||||
<mxGeometry x="80" y="160" width="400" height="120" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="channelskills" value="7 adopted channel-skill repos · General through Releases · UI/UX included" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#A16207;strokeWidth=2;fontColor=#102A43;fontSize=14;spacing=12;" vertex="1" parent="1">
|
||||
<mxGeometry x="80" y="320" width="400" height="120" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="engskills" value="7 adopted eng-skill repos: branch · mono · scripts · CI · GitOps · docs · tpl" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#A16207;strokeWidth=2;fontColor=#102A43;fontSize=14;spacing=12;" vertex="1" parent="1">
|
||||
<mxGeometry x="80" y="480" width="400" height="120" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="ci" value="GITEA ACTIONS Exact-head validation and artifact publication" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#F0FDF4;strokeColor=#15803D;strokeWidth=2;fontColor=#102A43;fontSize=14;spacing=12;" vertex="1" parent="1">
|
||||
<mxGeometry x="1040" y="240" width="400" height="120" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="pages" value="LEGO CLOUD PAGES Published documentation" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#E6FFFA;strokeColor=#0F766E;strokeWidth=2;fontColor=#102A43;fontSize=14;spacing=12;" vertex="1" parent="1">
|
||||
<mxGeometry x="1040" y="440" width="400" height="120" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="runtime" value="HARBOR → GITOPS / ARGO CD → RUNTIME Immutable images; reconciled desired state" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#FFF1F2;strokeColor=#BE123C;strokeWidth=2;fontColor=#102A43;fontSize=14;spacing=12;" vertex="1" parent="1">
|
||||
<mxGeometry x="1520" y="440" width="400" height="120" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="e0" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#A16207;strokeWidth=2;endArrow=block;endFill=1;fontSize=12;fontColor=#334E68;labelBackgroundColor=#FFFFFF;" edge="1" parent="1" source="channelskills" target="docs">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="e1" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#A16207;strokeWidth=2;endArrow=block;endFill=1;fontSize=12;fontColor=#334E68;labelBackgroundColor=#FFFFFF;" edge="1" parent="1" source="engskills" target="app">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="e2" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#2563EB;strokeWidth=2;endArrow=block;endFill=1;fontSize=12;fontColor=#334E68;labelBackgroundColor=#FFFFFF;" edge="1" parent="1" source="docs" target="ci">
|
||||
<mxGeometry relative="1" as="geometry">
|
||||
<Array as="points">
|
||||
<mxPoint x="1000" y="380" />
|
||||
<mxPoint x="1020" y="380" />
|
||||
<mxPoint x="1020" y="300" />
|
||||
</Array>
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="e3" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#2563EB;strokeWidth=2;endArrow=block;endFill=1;fontSize=12;fontColor=#334E68;labelBackgroundColor=#FFFFFF;" edge="1" parent="1" source="app" target="ci">
|
||||
<mxGeometry relative="1" as="geometry">
|
||||
<Array as="points">
|
||||
<mxPoint x="1000" y="540" />
|
||||
<mxPoint x="1020" y="540" />
|
||||
<mxPoint x="1020" y="300" />
|
||||
</Array>
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="e4" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#15803D;strokeWidth=2;endArrow=block;endFill=1;fontSize=12;fontColor=#334E68;labelBackgroundColor=#FFFFFF;" edge="1" parent="1" source="ci" target="pages">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="e5" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#15803D;strokeWidth=2;endArrow=block;endFill=1;fontSize=12;fontColor=#334E68;labelBackgroundColor=#FFFFFF;" edge="1" parent="1" source="ci" target="runtime">
|
||||
<mxGeometry relative="1" as="geometry">
|
||||
<Array as="points">
|
||||
<mxPoint x="1240" y="400" />
|
||||
<mxPoint x="1720" y="400" />
|
||||
<mxPoint x="1720" y="420" />
|
||||
</Array>
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
</root>
|
||||
</mxGraphModel>
|
||||
</diagram>
|
||||
</mxfile>
|
||||
@@ -1,22 +0,0 @@
|
||||
<mxfile host="app.diagrams.net" modified="2026-08-25T00:00:00.000Z" agent="Hermes Agent" version="26.0.16" type="device">
|
||||
<diagram id="corp-v1-skills-model-v1" name="CORP V1 — SKILLS MODEL">
|
||||
<mxGraphModel dx="1840" dy="760" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1840" pageHeight="760" math="0" shadow="0" adaptiveColors="auto">
|
||||
<root>
|
||||
<mxCell id="0"/>
|
||||
<mxCell id="1" parent="0"/>
|
||||
<mxCell id="title" value="CORP V1 — SKILLS MODEL" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;fontSize=24;fontStyle=1;fontColor=#102A43;" vertex="1" parent="1"><mxGeometry x="80" y="20" width="1680" height="40" as="geometry"/></mxCell>
|
||||
<mxCell id="subtitle" value="Central references → deliberate project adoption → focused execution" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;fontSize=14;fontColor=#486581;" vertex="1" parent="1"><mxGeometry x="80" y="70" width="1680" height="40" as="geometry"/></mxCell>
|
||||
<mxCell id="central" value="CENTRAL SOURCES · governance · 7 channels · 7 engineering" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#E6FFFA;strokeColor=#0F766E;strokeWidth=2;fontColor=#102A43;fontSize=15;fontStyle=1;spacing=16;" vertex="1" parent="1"><mxGeometry x="80" y="180" width="360" height="200" as="geometry"/></mxCell>
|
||||
<mxCell id="adoption" value="DELIBERATE ADOPTION · compare · preserve authority · record source SHA" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#EFF6FF;strokeColor=#2563EB;strokeWidth=2;fontColor=#102A43;fontSize=15;fontStyle=1;spacing=16;" vertex="1" parent="1"><mxGeometry x="520" y="180" width="360" height="200" as="geometry"/></mxCell>
|
||||
<mxCell id="project" value="PROJECT COPIES · 14 repositories · suffix --code · local decisions" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#EFF6FF;strokeColor=#2563EB;strokeWidth=2;fontColor=#102A43;fontSize=15;fontStyle=1;spacing=16;" vertex="1" parent="1"><mxGeometry x="960" y="180" width="360" height="200" as="geometry"/></mxCell>
|
||||
<mxCell id="session" value="FOCUSED SESSION · mapped channel skill + execution skills on demand" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#FAF5FF;strokeColor=#7E22CE;strokeWidth=2;fontColor=#102A43;fontSize=15;fontStyle=1;spacing=16;" vertex="1" parent="1"><mxGeometry x="1400" y="180" width="360" height="200" as="geometry"/></mxCell>
|
||||
<mxCell id="e1" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;strokeColor=#475569;strokeWidth=3;endArrow=block;endFill=1;" edge="1" parent="1" source="central" target="adoption"><mxGeometry relative="1" as="geometry"/></mxCell>
|
||||
<mxCell id="e2" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;strokeColor=#475569;strokeWidth=3;endArrow=block;endFill=1;" edge="1" parent="1" source="adoption" target="project"><mxGeometry relative="1" as="geometry"/></mxCell>
|
||||
<mxCell id="e3" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;strokeColor=#475569;strokeWidth=3;endArrow=block;endFill=1;" edge="1" parent="1" source="project" target="session"><mxGeometry relative="1" as="geometry"/></mxCell>
|
||||
<mxCell id="shared" value="SHARED GLOBAL · drawio-main · glossary · Discord · Gitea operations" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#F8FAFC;strokeColor=#64748B;strokeWidth=2;fontColor=#102A43;fontSize=14;fontStyle=1;spacing=14;" vertex="1" parent="1"><mxGeometry x="80" y="500" width="520" height="120" as="geometry"/></mxCell>
|
||||
<mxCell id="engineering" value="ENGINEERING ON DEMAND · debugging · TDD · review · QA" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#F8FAFC;strokeColor=#64748B;strokeWidth=2;fontColor=#102A43;fontSize=14;fontStyle=1;spacing=14;" vertex="1" parent="1"><mxGeometry x="640" y="500" width="520" height="120" as="geometry"/></mxCell>
|
||||
<mxCell id="runtime" value="RUNTIME ON DEMAND · Gondor · Argo CD · MicroK8s · readback" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#F8FAFC;strokeColor=#64748B;strokeWidth=2;fontColor=#102A43;fontSize=14;fontStyle=1;spacing=14;" vertex="1" parent="1"><mxGeometry x="1200" y="500" width="520" height="120" as="geometry"/></mxCell>
|
||||
</root>
|
||||
</mxGraphModel>
|
||||
</diagram>
|
||||
</mxfile>
|
||||
@@ -1,36 +0,0 @@
|
||||
---
|
||||
id: operating-model
|
||||
title: "Operating Model"
|
||||
description: "Follow the single-agent, multi-session Corp v1 pilot from Board governance through design, delivery, release, and verified evidence."
|
||||
---
|
||||
|
||||
import Drawio from '@theme/Drawio';
|
||||
import operatingModelDiagram from '!!raw-loader!./diagrams/operating-model.drawio';
|
||||
|
||||
# Operating Model
|
||||
|
||||
Corp v1 is an SDLC operating-model pilot: **one AI agent works across multiple focused Discord sessions, each governed by specialised project skills and explicit human decision rights**. Every approved project repeats the same flow while keeping its decisions, repositories, and delivery evidence isolated.
|
||||
|
||||
<Drawio content={operatingModelDiagram} title="Corp v1 governed project operating flow" toolbar="zoom layers lightbox" responsive maxHeight={820} />
|
||||
|
||||
## How the setup fits together
|
||||
|
||||
1. **`corp-v1-board` governs the portfolio.** Listed Board members approve project kickoffs, closures, membership changes, and changes to the global operating model.
|
||||
2. **General establishes the project workspace.** It handles onboarding, shared coordination, questions, and broadcasts verified outcomes.
|
||||
3. **Scope decides what creates value.** Ideas become Epics and Features; a human project member approves an exact Feature for solution work.
|
||||
4. **Architecture decides how the system should work.** Requirements, ADRs, interfaces, constraints, and implementation Tasks become durable project evidence.
|
||||
5. **UI/UX makes the frontend experience implementable.** User journeys, information architecture, accessibility, Penpot designs, prototypes, and handoff evidence bridge Architecture and execution.
|
||||
6. **Kanban controls admission and flow.** A human project member admits an exact Task to Focus before Delivery may execute it.
|
||||
7. **Delivery produces a reviewed candidate.** Work proceeds through branches, pull requests, exact-head validation, and reviewable implementation evidence.
|
||||
8. **Releases control deployment and outcomes.** Immutable artifacts, risk, rollback, deployment, acceptance, and post-release evidence are assessed explicitly.
|
||||
9. **Verification closes the evidence loop.** Hermes reads the deployed page or runtime back, updates project documentation and the Board portal, and reports remaining gates honestly.
|
||||
|
||||
## Why sessions and skills are separated
|
||||
|
||||
Each channel is a concern boundary with its own session. The same agent can coordinate the whole project, while the loaded project-adopted channel skill prevents responsibilities and approval rules from blurring together. The project uses seven channel skills to define the workspaces and seven engineering skills to provide reusable execution practices.
|
||||
|
||||
Project copies preserve project-specific authority, terminology, repository links, environment namespaces, and operating lessons. Central skill changes are compared and deliberately adopted; they never silently overwrite project decisions.
|
||||
|
||||
## Automation boundary
|
||||
|
||||
Corp v1 projects and channels do **not** use cronjobs or scheduler jobs under the current approved model. Work advances through explicit human decisions, Discord events, reviewed repository changes, exact-commit CI, and deployed readback.
|
||||
@@ -1,56 +0,0 @@
|
||||
---
|
||||
id: overview-channels
|
||||
title: "Overview Channels"
|
||||
description: "Understand the Corp v1 Board channel, seven project workspaces, session boundaries, skills, and SDLC handoffs."
|
||||
---
|
||||
|
||||
import Drawio from '@theme/Drawio';
|
||||
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.
|
||||
|
||||
<Drawio content={channelsDiagram} title="Corp v1 Board and project channel operating model" toolbar="zoom layers lightbox" responsive maxHeight={820} />
|
||||
|
||||
## Portfolio governance: `corp-v1-board`
|
||||
|
||||
`corp-v1-board` exists once for the whole Corp v1 pilot. It is the authoritative Discord workspace for decisions that change the portfolio operating model:
|
||||
|
||||
- approve project kickoffs, closures, and membership changes;
|
||||
- approve changes to the global `corp-v1--main` governance skill;
|
||||
- approve central `corp-v1-channel-*` reference-skill changes;
|
||||
- resolve conflicts that cannot be decided inside one project;
|
||||
- review portfolio-level evidence and remaining gates.
|
||||
|
||||
A Board message is evidence only when approval is explicit and attributable to a listed Board member. The Board channel does **not** replace project Scope, Architecture, UI/UX, Delivery, or Releases decisions.
|
||||
|
||||
## Project workspaces
|
||||
|
||||
Every active project receives these seven channels in this exact order:
|
||||
|
||||
| Channel | Owns | Sends forward |
|
||||
|---|---|---|
|
||||
| **General** | Project announcements, questions, onboarding, shared coordination, and outcome broadcasts | Product intent and questions to Scope; cross-cutting needs to the owning channel |
|
||||
| **Scope** | Ideas, Epics, Features, value, acceptance outcomes, roadmap, and human approval for solution work | An exact approved Feature to Architecture |
|
||||
| **Architecture** | Requirements, ADRs, system design, interfaces, constraints, and implementation Tasks | Design intent to UI/UX and prepared technical work toward Kanban |
|
||||
| **UI/UX** | User journeys, information architecture, interaction and visual design, accessibility, Penpot sources, prototypes, and design handoff | Reviewed design evidence and implementation-ready UX decisions to Kanban and Delivery |
|
||||
| **Kanban** | Board and Focus visibility, dependencies, sequencing, blockers, and explicit human Task admission | An exact admitted Task to Delivery |
|
||||
| **Delivery** | Implementation planning, branches, pull requests, reviews, exact-head CI, and engineering blockers | A validated immutable candidate to Releases |
|
||||
| **Releases** | Readiness, version decisions, deployment, rollback, acceptance evidence, and post-release outcomes | Verified status and outcomes back to General and durable records |
|
||||
|
||||
## One agent, multiple sessions, specialised skills
|
||||
|
||||
The same Hermes agent operates across the pilot, but each Discord channel has its own focused session and mapped channel skill. This gives the pilot:
|
||||
|
||||
1. **Shared identity and governance** — one agent follows the same Board-approved operating model.
|
||||
2. **Focused context** — Scope discussion does not become Delivery execution, and one project's decisions do not silently become another project's decisions.
|
||||
3. **Specialised behavior** — the mapped `corp-v1-channel-<channel>--<code>` skill defines the channel's responsibilities, approvals, evidence, and handoffs.
|
||||
4. **Engineering depth on demand** — relevant project engineering skills are loaded alongside the channel skill for documentation, branching, monorepo work, CI/CD, GitOps, scripts, and templates.
|
||||
5. **Durable evidence** — decisions and current state are written to Discord, Gitea, project documentation, and the Board portal rather than existing only in an agent session.
|
||||
|
||||
## Handoff rule
|
||||
|
||||
A handoff is not “continue the conversation elsewhere.” It carries an exact governed artifact: an approved Feature, requirement set, ADR, Penpot design, admitted Task, reviewed commit, immutable release candidate, or deployed readback.
|
||||
|
||||
Green CI, a merge, an agent statement, or silence never substitutes for required human approval. Corp v1 currently uses no project cronjobs or scheduler jobs; coordination is human- or event-driven.
|
||||
@@ -1,37 +0,0 @@
|
||||
---
|
||||
id: overview-repositories
|
||||
title: "Overview Repositories"
|
||||
description: "See how each Corp v1 project separates application and documentation source from adopted skills and delivery evidence."
|
||||
---
|
||||
|
||||
import Drawio from '@theme/Drawio';
|
||||
import repositoriesDiagram from '!!raw-loader!./diagrams/repositories.drawio';
|
||||
|
||||
# Overview Repositories
|
||||
|
||||
Each project has two Gitea organization boundaries and sixteen required repositories: two project repositories plus fourteen adopted skill repositories.
|
||||
|
||||
<Drawio content={repositoriesDiagram} title="Corp v1 organizations, repositories, and delivery" toolbar="zoom layers lightbox" responsive maxHeight={720} />
|
||||
|
||||
## Project organization: `corp-v1-<code>`
|
||||
|
||||
| Repository | Purpose |
|
||||
|---|---|
|
||||
| `corp-v1-<code>-documentation` | Docusaurus project portal, governed records, and editable Draw.io architecture sources |
|
||||
| `corp-v1-<code>` | pnpm/TypeScript application monorepo with `applications/`, `packages/`, Docker, Helm, Taskfiles, and GitOps inputs |
|
||||
|
||||
A project team grants access to both repositories. Project-specific environment variables use `CORP_V1_<CODE>_*`.
|
||||
|
||||
## Skills organization: `corp-v1-<code>-skills-code-agent`
|
||||
|
||||
The corresponding skills team grants access to:
|
||||
|
||||
- seven adopted channel-skill repositories—General, Scope, Architecture, UI/UX, Kanban, Delivery, and Releases;
|
||||
- seven adopted engineering-skill repositories;
|
||||
- their complete supporting assets, scripts, templates, references, and preserved adoption history.
|
||||
|
||||
The global `drawio-main` and `corp-v1--glossary` remain shared references unless an explicit project decision adopts a local copy.
|
||||
|
||||
## Delivery evidence
|
||||
|
||||
Documentation commits are validated by Gitea Actions and published to LEGO Cloud Pages. Deployable application commits produce immutable Harbor images and update GitOps/Argo CD desired state. Completion requires exact-commit CI plus deployed page or runtime readback; a local build or accepted push alone is not delivery evidence.
|
||||
@@ -1,74 +0,0 @@
|
||||
---
|
||||
id: overview-skills
|
||||
title: "Overview Skills"
|
||||
description: "Understand Corp v1 governance and channel skills, project-adopted copies, mandatory engineering skills, and useful shared Hermes skills."
|
||||
---
|
||||
|
||||
import Drawio from '@theme/Drawio';
|
||||
import skillsDiagram from '!!raw-loader!./diagrams/skills.drawio';
|
||||
|
||||
# Overview Skills
|
||||
|
||||
Skills are the operating instructions loaded by Hermes for a task. They are **versioned guidance**, not autonomous workers and not substitutes for human approval. Corp v1 combines a central governance layer, channel-specific references, deliberate project adoptions, and useful generic execution skills.
|
||||
|
||||
<Drawio content={skillsDiagram} title="Corp v1 central, adopted, and shared skill model" toolbar="zoom layers lightbox" responsive maxHeight={720} />
|
||||
|
||||
## Central `corp-v1-*` skills
|
||||
|
||||
The central sources live in [`home-v1-skills-code-agent`](https://gitea.lego-cloud.eu/home-v1-skills-code-agent):
|
||||
|
||||
| Skill | Purpose |
|
||||
|---|---|
|
||||
| [`corp-v1--main`](https://gitea.lego-cloud.eu/home-v1-skills-code-agent/corp-v1--main) | Board authority, project lifecycle, resource model, membership, adoption, publication, and verification rules. |
|
||||
| [`corp-v1--glossary`](https://gitea.lego-cloud.eu/home-v1-skills-code-agent/corp-v1--glossary) | Shared terminology and rules for keeping canonical definitions in project documentation. |
|
||||
| [`corp-v1-channel-general`](https://gitea.lego-cloud.eu/home-v1-skills-code-agent/corp-v1-channel-general) | Onboarding, coordination, questions, and outcome broadcasts. |
|
||||
| [`corp-v1-channel-scope`](https://gitea.lego-cloud.eu/home-v1-skills-code-agent/corp-v1-channel-scope) | Ideas, Epics, Features, value, acceptance outcomes, and human solution approval. |
|
||||
| [`corp-v1-channel-architecture`](https://gitea.lego-cloud.eu/home-v1-skills-code-agent/corp-v1-channel-architecture) | Requirements, ADRs, interfaces, constraints, system design, and implementation Tasks. |
|
||||
| [`corp-v1-channel-ui-ux`](https://gitea.lego-cloud.eu/home-v1-skills-code-agent/corp-v1-channel-ui-ux) | Journeys, information architecture, Penpot, accessibility, prototypes, and implementation handoff. |
|
||||
| [`corp-v1-channel-kanban`](https://gitea.lego-cloud.eu/home-v1-skills-code-agent/corp-v1-channel-kanban) | Board/Focus visibility, dependencies, flow, blockers, and explicit Task admission. |
|
||||
| [`corp-v1-channel-delivery`](https://gitea.lego-cloud.eu/home-v1-skills-code-agent/corp-v1-channel-delivery) | Planning, implementation, reviews, exact-head CI, blockers, and delivery evidence. |
|
||||
| [`corp-v1-channel-releases`](https://gitea.lego-cloud.eu/home-v1-skills-code-agent/corp-v1-channel-releases) | Readiness, versioning, deployment, rollback, acceptance, and post-release outcomes. |
|
||||
|
||||
## Project-adopted skills
|
||||
|
||||
Every project owns fourteen adopted repositories in `corp-v1-<code>-skills-code-agent`:
|
||||
|
||||
- seven channel skills named `corp-v1-channel-<channel>--<code>`;
|
||||
- seven engineering skills named `<source-skill>--<code>`.
|
||||
|
||||
A project adoption records the central source branch and commit, then adds the project code, repository links, environment namespace, approved authority, and operating lessons. Central updates are compared and adopted semantically; they never silently overwrite project-specific decisions or authorization overrides.
|
||||
|
||||
At runtime, a focused channel session loads its mapped project channel skill plus only the engineering or global skills needed for the current work.
|
||||
|
||||
## Mandatory engineering skills
|
||||
|
||||
These generic sources become project-owned copies during kickoff:
|
||||
|
||||
| Source skill | Used for |
|
||||
|---|---|
|
||||
| [`development-branching-strategy`](https://gitea.lego-cloud.eu/home-v1-skills-code-agent/development-branching-strategy) | Branches, pull requests, integration, and release branching. |
|
||||
| [`development-gitops-argo-cd`](https://gitea.lego-cloud.eu/home-v1-skills-code-agent/development-gitops-argo-cd) | GitOps repositories, environments, Argo CD applications, and reconciliation evidence. |
|
||||
| [`development-monorepo-pnpm`](https://gitea.lego-cloud.eu/home-v1-skills-code-agent/development-monorepo-pnpm) | pnpm/TypeScript monorepo structure, applications, packages, and workspace validation. |
|
||||
| [`development-scripts`](https://gitea.lego-cloud.eu/home-v1-skills-code-agent/development-scripts) | Taskfiles, `.scripts`, environment handling, logging, and Devbox. |
|
||||
| [`devsecops-ci-cd-gitea`](https://gitea.lego-cloud.eu/home-v1-skills-code-agent/devsecops-ci-cd-gitea) | Gitea Actions, validation, Harbor publication, and delivery gates. |
|
||||
| [`documentation-docusaurus`](https://gitea.lego-cloud.eu/home-v1-skills-code-agent/documentation-docusaurus) | Docusaurus structure, content quality, diagrams, build, and Pages publication. |
|
||||
| [`template-engine-copier`](https://gitea.lego-cloud.eu/home-v1-skills-code-agent/template-engine-copier) | Copier/Jinja templates and reusable project scaffolding. |
|
||||
|
||||
## Useful shared generic skills
|
||||
|
||||
These are loaded globally when relevant; they are not additional mandatory project repositories:
|
||||
|
||||
| Skill | Useful when |
|
||||
|---|---|
|
||||
| [`drawio-main`](https://gitea.lego-cloud.eu/home-v1-skills-code-agent/drawio-main) | Creating and validating editable architecture diagrams with layout and connector quality gates. |
|
||||
| [`home-v1-discord`](https://gitea.lego-cloud.eu/home-v1-skills-code-agent/home-v1-discord) | Discovering and operating Discord channels, permissions, messages, pins, and effective access. |
|
||||
| `gitea-repository-operations` | Discovering, creating, changing, and independently reading back Gitea organizations, teams, repositories, PRs, and refs. |
|
||||
| `systematic-debugging` | Investigating a defect from evidence and root cause before applying a fix. |
|
||||
| `test-driven-development` | Building behavior through RED, GREEN, and refactoring. |
|
||||
| `requesting-code-review` | Applying pre-commit security and quality gates and resolving findings. |
|
||||
| `dogfood` | Performing evidence-backed exploratory QA of deployed web applications. |
|
||||
| `gondor-v1-nodes` | Inspecting Argo CD, MicroK8s workloads, images, routes, and runtime evidence on Gondor v1. |
|
||||
|
||||
## Selection rule
|
||||
|
||||
The channel skill defines **why the work belongs here and which approvals and artifacts are required**. Engineering and generic skills define **how to execute the work safely**. If instructions conflict, explicit Corp v1 governance and preserved project authority win. No skill grants a human approval that has not actually been given.
|
||||
@@ -1,57 +0,0 @@
|
||||
---
|
||||
id: overview
|
||||
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';
|
||||
|
||||
# Container Overview
|
||||
|
||||
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 internal container architecture" toolbar="zoom layers lightbox" responsive maxHeight={860} />
|
||||
|
||||
## Internal containers
|
||||
|
||||
| Container | Corp v1 responsibility |
|
||||
|---|---|
|
||||
| **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. |
|
||||
|
||||
## External connections
|
||||
|
||||
Only two software systems cross the Corp v1 boundary:
|
||||
|
||||
- **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.
|
||||
|
||||
## Documentation path
|
||||
|
||||
`Hermes → Gitea → Gitea Actions → Board portal build → LEGO Cloud Pages → identity/ingress → deployed readback`
|
||||
|
||||
A documentation delivery claim requires successful exact-commit CI and distinctive content from the deployed Pages service path.
|
||||
|
||||
## 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.
|
||||
+2
-3
@@ -7,7 +7,7 @@ sidebar_position: 1
|
||||
|
||||
# Board Members
|
||||
|
||||
The Corp v1 Board has exactly seven members:
|
||||
The Corp v1 Board has exactly six members:
|
||||
|
||||
| Discord member | Account | Board authority |
|
||||
|---|---|---|
|
||||
@@ -17,7 +17,6 @@ The Corp v1 Board has exactly seven members:
|
||||
| `<@364383883778850827>` | Eduard (`eduardanichess`) | Start/close projects; approve `corp-v1--main` changes |
|
||||
| `<@1483820991720329227>` | Linas (`linas_02251`) | Start/close projects; approve `corp-v1--main` changes |
|
||||
| `<@1540035254746882048>` | Jenny (`elprup16`) | Start/close projects; approve `corp-v1--main` changes |
|
||||
| `<@501954115690168321>` | Piotras (`piotras0262`) | Start/close projects; approve `corp-v1--main` changes |
|
||||
|
||||
Only these Board members may approve a project kickoff or project closure. Approval must be explicit and attributable to one of the Discord IDs above.
|
||||
|
||||
@@ -29,4 +28,4 @@ Only these Board members may approve changes to `corp-v1--main`. Other members a
|
||||
2. Obtain explicit Board approval before publishing the central reference change.
|
||||
3. Ask each affected project channel to review and synchronize its project-adopted channel skill (`corp-v1-channel-*--<code>`).
|
||||
4. Preserve project-specific decisions during synchronization and return conflicts to the Board instead of overwriting them.
|
||||
5. Verify the central commit, every project adoption commit, runtime skill copy, Discord access, and absence of Corp v1 synchronization schedulers before recording completion.
|
||||
5. Verify the central commit, every project adoption commit, runtime skill copy, and absence of Corp v1 scheduler jobs before recording completion.
|
||||
|
||||
@@ -8,10 +8,9 @@ sidebar_position: 2
|
||||
|
||||
| Date | Decision | Scope | Owner | Record |
|
||||
|---|---|---|---|---|
|
||||
| 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/) |
|
||||
| 2026-08-20 | Add Jenny to the Corp v1 Board and every active project | Corp v1 governance, AeroSim, and Maze Next Gen | RootAtSkic | [Jenny Board and project membership](/governance/decisions/jenny-board-and-project-membership/) |
|
||||
| 2026-08-17 | Authorize Maze Next Gen kickoff and begin provisioning | Maze Next Gen | RootAtSkic | [Maze Next Gen kickoff](/governance/decisions/mazeng-kickoff/) |
|
||||
| 2026-08-17 | Add Linas to the Corp v1 Board and AeroSim team | Corp v1 governance and AeroSim | RootAtSkic | [Linas Board and AeroSim membership](/governance/decisions/linas-board-and-aerosim-membership/) |
|
||||
| 2026-08-14 | Add Eduard to the Corp v1 Board and expand the AeroSim team | Corp v1 governance and AeroSim | RootAtSkic | [Board and AeroSim membership expansion](/governance/decisions/board-and-aerosim-membership-expansion/) |
|
||||
| 2026-08-14 | Establish the Corp v1 Board, main skill, portal, membership, and skill-change authority | Corp v1 governance | RootAtSkic | [Corp v1 Board migration](/governance/decisions/corp-v1-board-migration/) |
|
||||
| 2026-08-13 | Align managed projects to the six-channel Scope/Kanban lifecycle and hourly synchronization model | Corp v1 managed projects | RootAtSkic | [Managed-project six-channel alignment](/governance/decisions/managed-project-six-channel-alignment/) |
|
||||
|
||||
@@ -1,12 +0,0 @@
|
||||
---
|
||||
title: "Jenny Board and all-project membership"
|
||||
description: "Record the approved addition of Jenny to the Corp v1 Board and every active project."
|
||||
---
|
||||
|
||||
# Jenny Board and all-project membership
|
||||
|
||||
- **Approved by:** RootAtSkic (`<@1518725627845283888>`)
|
||||
- **Approval evidence:** Discord Board message `1540045796152709180`
|
||||
- **Date:** 2026-08-20
|
||||
|
||||
Jenny (`<@1540035254746882048>`, account `elprup16`) is a Corp v1 Board member and a human member of AeroSim and Maze Next Gen. Discord access is verified. Gitea team membership remains pending first login and a verified username; no identity was guessed.
|
||||
@@ -0,0 +1,36 @@
|
||||
---
|
||||
title: "Jenny Board and project membership"
|
||||
description: "Record the approved addition of Jenny to the Corp v1 Board and every active project."
|
||||
sidebar_position: 1
|
||||
---
|
||||
|
||||
# Jenny Board and project membership
|
||||
|
||||
- **Date:** 2026-08-20
|
||||
- **Status:** Discord access applied and verified; Gitea access pending first login
|
||||
- **Approved by:** RootAtSkic (`<@1518725627845283888>`)
|
||||
- **Approval evidence:** `corp-v1-board` channel `1537070875503886356`, message `1540045796152709180`
|
||||
- **Scope:** Corp v1 Board authority plus AeroSim and Maze Next Gen project membership for Jenny (`<@1540035254746882048>`)
|
||||
|
||||
## Decision
|
||||
|
||||
1. Add Jenny (`<@1540035254746882048>`, `elprup16`, display name Jenny) to the Corp v1 Board.
|
||||
2. Add Jenny to every active Corp v1 human project team: AeroSim and Maze Next Gen.
|
||||
3. Preserve RootAtSkic as sponsor and accountable lead for both projects.
|
||||
4. Defer Gitea organization-team access until Jenny signs in to Gitea at least once and her username is verified; do not guess an identity or add direct collaborators.
|
||||
5. Preserve every earlier governance decision as historical evidence.
|
||||
|
||||
## Applied and verified state
|
||||
|
||||
- Effective `VIEW_CHANNEL`, `SEND_MESSAGES`, and `READ_MESSAGE_HISTORY` permissions were verified in `corp-v1-board` and all twelve active-project channels.
|
||||
- Member-specific overwrites restore `VIEW_CHANNEL`; inherited guild permissions supply `SEND_MESSAGES` and `READ_MESSAGE_HISTORY`.
|
||||
- A fresh scheduler inventory found no Corp v1 project or channel jobs.
|
||||
- Gitea membership was intentionally not changed.
|
||||
|
||||
## Consequences
|
||||
|
||||
- Jenny may exercise Board authority attributable to immutable Discord ID `1540035254746882048`.
|
||||
- Jenny is a human team member of AeroSim and Maze Next Gen and may exercise each project's human approval gates.
|
||||
- The Corp v1 Board now has six members.
|
||||
- AeroSim now has six human members plus the Hermes code agent; Maze Next Gen now has two human members plus the Hermes code agent.
|
||||
- Repository access remains a visible follow-up: Jenny must first log in at `https://gitea.lego-cloud.eu/`.
|
||||
@@ -1,12 +0,0 @@
|
||||
---
|
||||
title: "Linas Board and AeroSim membership"
|
||||
description: "Record the approved addition of Linas to the Corp v1 Board and AeroSim."
|
||||
---
|
||||
|
||||
# Linas Board and AeroSim membership
|
||||
|
||||
- **Approved by:** RootAtSkic (`<@1518725627845283888>`)
|
||||
- **Approval evidence:** Discord Board message `1538808717301252116`
|
||||
- **Date:** 2026-08-17
|
||||
|
||||
Linas (`<@1483820991720329227>`, account `linas_02251`) is a Corp v1 Board member and an AeroSim human project member. Discord access is verified, and Gitea account `linas` is assigned to the AeroSim project and skills teams with login activation pending.
|
||||
@@ -0,0 +1,34 @@
|
||||
---
|
||||
title: "Linas Board and AeroSim membership"
|
||||
description: "Record the approved addition of Linas to the Corp v1 Board and AeroSim team."
|
||||
sidebar_position: 1
|
||||
---
|
||||
|
||||
# Linas Board and AeroSim membership
|
||||
|
||||
- **Date:** 2026-08-17
|
||||
- **Status:** Approved and applied; Gitea login activation pending
|
||||
- **Approved by:** RootAtSkic (`<@1518725627845283888>`)
|
||||
- **Approval evidence:** `corp-v1-board` channel `1537070875503886356`, message `1538808717301252116`
|
||||
- **Scope:** Corp v1 Board authority and AeroSim team membership for Linas (`<@1483820991720329227>`)
|
||||
|
||||
## Decision
|
||||
|
||||
1. Add Linas (`<@1483820991720329227>`, `linas_02251`, display name Linas) to the Corp v1 Board.
|
||||
2. Add Linas to the AeroSim human project team while preserving RootAtSkic as sponsor and accountable lead.
|
||||
3. Apply repository access through the existing organization teams rather than direct collaborators.
|
||||
4. Preserve every earlier governance decision as historical evidence; this dated record changes the current roster without rewriting the 2026-08-12 or 2026-08-14 decisions.
|
||||
|
||||
## Applied and verified state
|
||||
|
||||
- Effective `VIEW_CHANNEL`, `SEND_MESSAGES`, and `READ_MESSAGE_HISTORY` permissions were verified in `corp-v1-board` and all six AeroSim channels. Existing permissions already provided access, so no Discord permission mutation was made.
|
||||
- The Gitea mapping is unambiguous: `linas`, user ID `21`, full name Linas Ramanauskas.
|
||||
- `linas` is verified in `aerosim-maintainers` (team ID `23`), which covers both required repositories in `corp-v1-aerosim`.
|
||||
- `linas` is verified in `aerosim-skill-maintainers` (team ID `24`), which covers all thirteen adopted skill repositories in `corp-v1-aerosim-skills-code-agent`.
|
||||
- The membership update was announced in `corp-v1-aerosim-general` as message `1538811290925928505`.
|
||||
|
||||
## Caveat and consequences
|
||||
|
||||
- Linas may exercise the Board and AeroSim human approval gates attributable to immutable Discord ID `1483820991720329227`.
|
||||
- Gitea team access assignment is complete, but login activation remains pending: user ID `21` reports `active=false`.
|
||||
- The Corp v1 Board now has five members; the AeroSim registry has five human members plus the Hermes code agent.
|
||||
@@ -1,32 +0,0 @@
|
||||
---
|
||||
title: "Piotras Board and all-project membership"
|
||||
description: "Record the approved addition of Piotras to the Corp v1 Board, AeroSim, and Maze Next Gen."
|
||||
---
|
||||
|
||||
# Piotras Board and all-project membership
|
||||
|
||||
## Authority
|
||||
|
||||
- **Approved by:** RootAtSkic (`<@1518725627845283888>`)
|
||||
- **Approval evidence:** Discord Board message `1541770529600577577`
|
||||
- **Date:** 2026-08-25
|
||||
|
||||
## Decision
|
||||
|
||||
Add Piotras (`<@501954115690168321>`, account `piotras0262`) to:
|
||||
|
||||
- the Corp v1 Board;
|
||||
- the AeroSim human project team;
|
||||
- the Maze Next Gen human project team.
|
||||
|
||||
Piotras may exercise the human decision rights defined by Corp v1 and each project. Approval must remain explicit, exact in scope, and attributable to the immutable Discord identity.
|
||||
|
||||
## Access state
|
||||
|
||||
Effective `VIEW_CHANNEL`, `SEND_MESSAGES`, and `READ_MESSAGE_HISTORY` access is verified for `corp-v1-board` and all seven channels in both active projects. Existing idempotent permission overwrites already supplied access, so no Discord permission mutation was required.
|
||||
|
||||
No unambiguous Gitea account matches `piotras0262` or `piotras`. Membership in both AeroSim teams and both Maze Next Gen organization teams remains pending a verified username or account creation. Governance membership and Discord access are active; repository access must not be inferred or assigned to a guessed account.
|
||||
|
||||
## Access completion update — 2026-08-25
|
||||
|
||||
RootAtSkic verified that Gitea account `piotras` (user ID `85`, `piotras.cimmperman@ibm.com`) belongs to Piotras. The account was added through `aerosim-maintainers`, `aerosim-skill-maintainers`, and both `maze-next-gen-team` organization teams. Independent membership and repository-coverage reads verified write access across all repositories covered by those teams; the original pending state above is retained as the decision-time record.
|
||||
@@ -9,7 +9,7 @@ sidebar_position: 1
|
||||
|
||||
## Board authority
|
||||
|
||||
Only the four people listed in [Board Members](/board/) may approve a project kickoff, project closure, or a change to the global `corp-v1--main` governance skill. Approval must be explicit and attributable to a listed Discord ID. Agents and other members may prepare proposals and evidence but cannot approve these actions.
|
||||
Only the six people listed in [Board Members](/board/) may approve a project kickoff, project closure, or a change to the global `corp-v1--main` governance skill. Approval must be explicit and attributable to a listed Discord ID. Agents and other members may prepare proposals and evidence but cannot approve these actions.
|
||||
|
||||
## 1. Proposed
|
||||
|
||||
@@ -25,7 +25,7 @@ Maintain current status, decisions, risks, milestones, and material scope change
|
||||
|
||||
### 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.
|
||||
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 that no Corp v1 scheduler job exists.
|
||||
|
||||
## 4. Paused
|
||||
|
||||
|
||||
@@ -15,6 +15,5 @@ sidebar_position: 1
|
||||
| [Eduard](/members/eduard/) | Active | Board member; AeroSim member | AeroSim Team | 1 |
|
||||
| [Linas](/members/linas/) | Active | Board member; AeroSim member | AeroSim Team | 1 |
|
||||
| [Jenny](/members/jenny/) | Active | Board member; AeroSim and Maze Next Gen member | AeroSim Team; Maze Next Gen Team | 2 |
|
||||
| [Piotras](/members/piotras/) | Active | Board member; AeroSim and Maze Next Gen member | AeroSim Team; Maze Next Gen Team | 2 |
|
||||
|
||||
Only governance-relevant professional information belongs here. Do not store secrets, credentials, private contact details, or unnecessary personal data.
|
||||
|
||||
@@ -1,17 +1,19 @@
|
||||
---
|
||||
title: "Jenny"
|
||||
description: "Identify Jenny's Corp v1 Board and active-project responsibilities and current access state."
|
||||
description: "Identify Jenny's Corp v1 Board and active-project responsibilities and access state."
|
||||
sidebar_position: 7
|
||||
---
|
||||
|
||||
# Jenny
|
||||
|
||||
| Field | Value |
|
||||
|---|---|
|
||||
| Status | Active |
|
||||
| Discord | `<@1540035254746882048>` — `elprup16` / Jenny |
|
||||
| Governance roles | Corp v1 Board member; AeroSim and Maze Next Gen human team member |
|
||||
| Gitea | Pending first login and a verified username |
|
||||
| Teams | [AeroSim Team](/teams/aerosim/); [Maze Next Gen Team](/teams/mazeng/) |
|
||||
| Active projects | [AeroSim](/projects/aerosim/); [Maze Next Gen](/projects/mazeng/) |
|
||||
| Gitea | Pending first login and verified username |
|
||||
|
||||
Jenny has verified Discord access to the Board and active project channels. Repository access remains pending a verified Gitea account mapping; no identity was guessed.
|
||||
On 2026-08-20, effective `VIEW_CHANNEL`, `SEND_MESSAGES`, and `READ_MESSAGE_HISTORY` access was verified in `corp-v1-board` and all twelve active-project channels. Member-specific overwrites restore `VIEW_CHANNEL`; inherited guild permissions supply `SEND_MESSAGES` and `READ_MESSAGE_HISTORY`.
|
||||
|
||||
The membership change was approved by RootAtSkic (`discord:1518725627845283888`) in Board message `1540045796152709180` on 2026-08-20.
|
||||
Jenny must sign in to [Gitea](https://gitea.lego-cloud.eu/) at least once before organization-team access can be granted. No Gitea username was guessed and no repository or team membership was provisioned.
|
||||
|
||||
@@ -1,17 +1,20 @@
|
||||
---
|
||||
title: "Linas"
|
||||
description: "Identify Linas's Corp v1 Board and AeroSim responsibilities and verified access state."
|
||||
description: "Identify Linas's Corp v1 Board and AeroSim project responsibilities and verified access state."
|
||||
sidebar_position: 6
|
||||
---
|
||||
|
||||
# Linas
|
||||
|
||||
| Field | Value |
|
||||
|---|---|
|
||||
| Status | Active |
|
||||
| Full name | Linas Ramanauskas |
|
||||
| Discord | `<@1483820991720329227>` — `linas_02251` / Linas |
|
||||
| Governance roles | Corp v1 Board member; AeroSim human team member |
|
||||
| Gitea | `linas` — assigned; login activation pending |
|
||||
| Team | [AeroSim Team](/teams/aerosim/) |
|
||||
| Active projects | [AeroSim](/projects/aerosim/) |
|
||||
| Gitea | `linas` (user ID `21`) — verified in both AeroSim organization teams; account reports `active=false` |
|
||||
|
||||
Linas has verified Discord access to the Board and AeroSim channels and is assigned to both AeroSim Gitea organization teams.
|
||||
On 2026-08-17, effective `VIEW_CHANNEL`, `SEND_MESSAGES`, and `READ_MESSAGE_HISTORY` access was verified in `corp-v1-board` and all six AeroSim channels. Existing effective permissions were sufficient, so no Discord permission mutation was made.
|
||||
|
||||
The membership change was approved by RootAtSkic (`discord:1518725627845283888`) in Board message `1538808717301252116` on 2026-08-17.
|
||||
The unambiguous Gitea identity `linas` belongs to `aerosim-maintainers` (team ID `23`) and `aerosim-skill-maintainers` (team ID `24`). Those teams cover both required project repositories and all thirteen adopted skill repositories. Access assignment is complete, but Gitea login activation remains pending because the account reports `active=false`.
|
||||
@@ -1,19 +0,0 @@
|
||||
---
|
||||
title: "Piotras"
|
||||
description: "Identify Piotras's Corp v1 Board and active-project responsibilities and verified access state."
|
||||
---
|
||||
|
||||
# Piotras
|
||||
|
||||
| Field | Value |
|
||||
|---|---|
|
||||
| Status | Active |
|
||||
| Discord | `<@501954115690168321>` — `piotras0262` / Piotras |
|
||||
| Governance roles | Corp v1 Board member; AeroSim and Maze Next Gen human team member |
|
||||
| Gitea | Pending a verified username or account |
|
||||
|
||||
Piotras has verified effective `VIEW_CHANNEL`, `SEND_MESSAGES`, and `READ_MESSAGE_HISTORY` access to `corp-v1-board` and all seven channels in both active projects. Member-specific overwrites restore `VIEW_CHANNEL`; inherited guild permissions supply send and history access.
|
||||
|
||||
Piotras maps to verified Gitea account `piotras` (user ID `85`, `piotras.cimmperman@ibm.com`). On 2026-08-25, the account was added through the organization teams `aerosim-maintainers`, `aerosim-skill-maintainers`, and both `maze-next-gen-team` teams. Fresh membership reads verified write access through those teams across four AeroSim project repositories, fourteen AeroSim skill repositories, two Maze Next Gen project repositories, and fourteen Maze Next Gen skill repositories. No direct repository collaborator was added.
|
||||
|
||||
The membership change was approved by RootAtSkic (`discord:1518725627845283888`) in Board message `1541770529600577577` on 2026-08-25.
|
||||
@@ -11,7 +11,7 @@ sidebar_position: 1
|
||||
| Status | Active — lifecycle alignment reviewed |
|
||||
| Started | 2026-08-12 |
|
||||
| Sponsor and accountable lead | RootAtSkic |
|
||||
| Team members | RootAtSkic; Panther Skeleton; MartynasP; Eduard; Linas; Jenny; Piotras; `jarvis-at-skic` / Hermes code agent |
|
||||
| Team members | RootAtSkic; Panther Skeleton; MartynasP; Eduard; Linas; Jenny; `jarvis-at-skic` / Hermes code agent |
|
||||
| Team | [AeroSim Team](/teams/aerosim/) |
|
||||
|
||||
## Purpose
|
||||
@@ -63,18 +63,9 @@ Exactly six same-project channels exist under category `corp-v1` (`1537070242335
|
||||
- `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 access is verified for RootAtSkic (`1518725627845283888`), Panther Skeleton (`476287310627864587`), MartynasP (`773109855497093191`), Eduard (`364383883778850827`), Linas (`1483820991720329227`), and Jenny (`1540035254746882048`) across all six project channels. Jenny has effective `VIEW_CHANNEL`, `SEND_MESSAGES`, and `READ_MESSAGE_HISTORY`. The Jenny team update was announced in General as message `1540048209152573550`.
|
||||
|
||||
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:
|
||||
|
||||
- General: `6fc9c6a1328e`, `0 * * * *`, skill `corp-v1-channel-general--aerosim`, target `1537227679374508132`
|
||||
- Scope: `dd548489178e`, `10 * * * *`, skill `corp-v1-channel-scope--aerosim`, target `1537544173366943886`
|
||||
- Architecture: `c236b1e9642e`, `15 * * * *`, skill `corp-v1-channel-architecture--aerosim`, target `1537227680590733383`
|
||||
- Kanban: `73378876d226`, `20 * * * *`, skill `corp-v1-channel-kanban--aerosim`, target `1537548579856580739`
|
||||
- Delivery: `fdb061087f2f`, `30 * * * *`, skill `corp-v1-channel-delivery--aerosim`, target `1537227683191197807`
|
||||
- Releases: `9deaa76e0077`, `45 * * * *`, skill `corp-v1-channel-releases--aerosim`, target `1537388451501056081`
|
||||
|
||||
All six jobs are enabled, explicitly constrained to the complete six-channel AeroSim boundary, and restricted from cross-project inspection and approval-required, destructive, secret-bearing, or high-impact autonomous actions.
|
||||
The current Corp v1 operating model prohibits project cronjobs and scheduler jobs. A fresh scheduler inventory on 2026-08-20 found no job targeting an AeroSim channel.
|
||||
|
||||
## Adopted project skills
|
||||
|
||||
@@ -103,8 +94,8 @@ Each repository records the central source branch and commit in `ADOPTION.md`. A
|
||||
- Documentation lifecycle alignment commit `5f674525f6c8b5ce29fe2653350c6188fb97ea01` and Actions run `609`: successful.
|
||||
- Application tests: four passed across web, API, and shared flight core.
|
||||
- Application and documentation production builds: passed.
|
||||
- Project-team access across four current project-organization repositories: verified for `jarvis-at-skic`, `root-at-skic`, `martynas-pazusis`, and `piotras`; pending verified Gitea identities for Panther Skeleton, Eduard, and Jenny.
|
||||
- Skills-team organization membership covers all fourteen current project-skill repositories for `piotras`: verified.
|
||||
- Project-team access to both project repositories: verified for `jarvis-at-skic`, `root-at-skic`, `martynas-pazusis`, and `linas`; pending verified Gitea identities for Panther Skeleton and Eduard. Linas's assignment is complete through team ID `23`, but login activation remains pending because Gitea user ID `21` reports `active=false`.
|
||||
- Skills-team organization contains all thirteen adopted skill repositories on default branch `test`: verified.
|
||||
- Harbor organization variable names and secret name `HL_V1_HARBOR_ROBOT_GITEA_ACTIONS_V1_SECRET`: verified without reading secret values.
|
||||
- Product lifecycle, solution traceability, and release-readiness registries now exist in project documentation. No Epic or Feature was assigned human approval retrospectively.
|
||||
- Both application and documentation `test` branches currently have no branch-protection rule.
|
||||
@@ -113,4 +104,6 @@ Each repository records the central source branch and commit in `ADOPTION.md`. A
|
||||
|
||||
A human team member must approve the desired branch-protection policy for both project `test` branches before protection is configured. No protection was added autonomously because required approvals and merge semantics are a governance decision.
|
||||
|
||||
Panther Skeleton, Eduard, and Jenny must provide or create their Gitea usernames before they can be added to `aerosim-maintainers` and `aerosim-skill-maintainers`. Piotras is mapped to Gitea account `piotras` and has verified membership in both teams, covering four current project repositories and fourteen project-skill repositories. Their Discord project access is already verified.
|
||||
Panther Skeleton, Eduard, and Jenny must provide or create their Gitea usernames before they can be added to `aerosim-maintainers` and `aerosim-skill-maintainers`. Jenny must first sign in to Gitea at least once. Their Discord project access is already verified.
|
||||
|
||||
Linas is assigned to `aerosim-maintainers` (team ID `23`, covering both required project repositories) and `aerosim-skill-maintainers` (team ID `24`, covering all thirteen adopted skill repositories). The account owner or Gitea administrator must activate user ID `21`; until `active=false` is cleared, team assignment is complete but interactive login remains pending.
|
||||
|
||||
+5
-13
@@ -11,8 +11,7 @@ sidebar_position: 2
|
||||
| Status | Active — Harbor gated |
|
||||
| Started | 2026-08-17 |
|
||||
| Sponsor and accountable lead | RootAtSkic |
|
||||
| Initial technical member | `jarvis-at-skic` / Hermes code agent |
|
||||
| Human team members | RootAtSkic; Jenny; Piotras |
|
||||
| Team members | RootAtSkic; Jenny; `jarvis-at-skic` / Hermes code agent |
|
||||
| Team | [Maze Next Gen Team](/teams/mazeng/) |
|
||||
|
||||
## Purpose
|
||||
@@ -46,18 +45,11 @@ Exactly six channels exist under category `corp-v1` (`1537070242335821924`):
|
||||
- `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 all six skill-guidance messages are pinned. Hermes read/post/pin operations succeeded in all channels. Jenny (`1540035254746882048`) has verified effective view/send/history access across all six channels. The Jenny team update was announced in General as message `1540048213090771034`. Harbor request message: `1539020766203617390`.
|
||||
|
||||
## Synchronization jobs
|
||||
## Project automation
|
||||
|
||||
All six are enabled, hourly, staggered, exact-targeted, limited to the six Maze channels, and attach the mapped adopted skill:
|
||||
|
||||
- General: `f5465bc1b05d`, `0 * * * *`, skill `corp-v1-channel-general--mazeng`, target `1539019955738116096`
|
||||
- Scope: `ab278de9e046`, `10 * * * *`, skill `corp-v1-channel-scope--mazeng`, target `1539019959135633580`
|
||||
- Architecture: `9c9e0206f05b`, `15 * * * *`, skill `corp-v1-channel-architecture--mazeng`, target `1539019963568758835`
|
||||
- Kanban: `e8de02062193`, `20 * * * *`, skill `corp-v1-channel-kanban--mazeng`, target `1539019969323466883`
|
||||
- Delivery: `11f63507301a`, `30 * * * *`, skill `corp-v1-channel-delivery--mazeng`, target `1539019973043683358`
|
||||
- Releases: `f04ab31a499e`, `45 * * * *`, skill `corp-v1-channel-releases--mazeng`, target `1539019976977948694`
|
||||
The current Corp v1 operating model prohibits project cronjobs and scheduler jobs. A fresh scheduler inventory on 2026-08-20 found no job targeting a Maze Next Gen channel.
|
||||
|
||||
## Adopted project skills
|
||||
|
||||
@@ -79,7 +71,7 @@ Global diagram source: [`drawio-main`](https://gitea.lego-cloud.eu/home-v1-skill
|
||||
|
||||
## Access and Harbor
|
||||
|
||||
Team identifier `maze-next-gen-team` exists in both private organizations, includes all repositories, grants per-unit write access, and contains verified members `root-at-skic`, `jarvis-at-skic`, and `piotras`. Piotras's membership is verified across two project repositories and fourteen project-skill repositories. Jenny has verified Discord project access; her Gitea membership remains pending a verified account mapping.
|
||||
Team identifier `maze-next-gen-team` exists in both private organizations, includes all repositories, grants per-unit write access, and contains verified members `root-at-skic` and `jarvis-at-skic`. Thirty effective repository permission checks passed across fifteen repositories. Jenny's Gitea access remains pending until she signs in at least once and supplies a verified username.
|
||||
|
||||
Verified variables on `corp-v1-mazeng`:
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@ sidebar_position: 1
|
||||
|---|---|
|
||||
| Status | Active |
|
||||
| Lead | RootAtSkic |
|
||||
| Members | RootAtSkic; Panther Skeleton; MartynasP; Eduard; Linas; Jenny; Piotras; `jarvis-at-skic` / Hermes code agent |
|
||||
| Members | RootAtSkic; Panther Skeleton; MartynasP; Eduard; Linas; Jenny; `jarvis-at-skic` / Hermes code agent |
|
||||
| Assigned project | [AeroSim](/projects/aerosim/) |
|
||||
|
||||
## Mandate
|
||||
@@ -21,16 +21,17 @@ Deliver the AeroSim browser flight-simulation platform, its documentation, and t
|
||||
- Product and delivery coordination.
|
||||
- Flight-simulation architecture and shared flight model.
|
||||
- Application, API, CI/CD, GitOps, and documentation delivery.
|
||||
- Adoption and maintenance of the fourteen mandatory AeroSim project skills.
|
||||
- Adoption and maintenance of the thirteen mandatory AeroSim project skills.
|
||||
|
||||
## Gitea access
|
||||
|
||||
- `aerosim-maintainers` in `corp-v1-aerosim` covers four current project-organization repositories.
|
||||
- `aerosim-skill-maintainers` in `corp-v1-aerosim-skills-code-agent` covers all fourteen adopted skill repositories.
|
||||
- `jarvis-at-skic`, `root-at-skic`, `martynas-pazusis`, and `piotras` membership and effective repository assignments are verified in both teams.
|
||||
- Piotras maps to Gitea account `piotras` and has verified membership in `aerosim-maintainers` and `aerosim-skill-maintainers`, covering four current project repositories and fourteen project-skill repositories.
|
||||
- Panther Skeleton, Eduard, and Jenny have verified Discord identities and project access, but no matching Gitea accounts could be resolved. Their Gitea team access remains pending verified usernames or account creation.
|
||||
- `aerosim-maintainers` in `corp-v1-aerosim` covers both project repositories.
|
||||
- `aerosim-skill-maintainers` in `corp-v1-aerosim-skills-code-agent` covers all thirteen adopted skill repositories.
|
||||
- `jarvis-at-skic`, `root-at-skic`, `martynas-pazusis`, and `linas` membership and repository assignments are verified in both teams.
|
||||
- Linas maps unambiguously to Gitea user ID `21` (`linas`, Linas Ramanauskas). Access assignment is complete, but login activation remains pending because the account reports `active=false`.
|
||||
- Panther Skeleton and Eduard have verified Discord identities and channel access, but no matching Gitea accounts could be resolved on 2026-08-14. Their Gitea team access remains pending verified usernames or account creation.
|
||||
- Jenny has verified Discord access. Gitea access is pending until she signs in to Gitea at least once and supplies a verified username; no username was guessed and no direct collaborator was added.
|
||||
|
||||
## 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 six AeroSim channels exist under the `corp-v1` category: `general`, `scope`, `architecture`, `kanban`, `delivery`, and `releases`. RootAtSkic, Panther Skeleton, MartynasP, Eduard, Linas, Jenny, and Hermes have verified effective access. Jenny's effective `VIEW_CHANNEL`, `SEND_MESSAGES`, and `READ_MESSAGE_HISTORY` permissions were verified in all six channels. The membership update was announced in General as message `1540048209152573550`. Corp v1 project scheduler jobs are prohibited by the current operating model.
|
||||
|
||||
+2
-2
@@ -8,7 +8,7 @@ sidebar_position: 1
|
||||
|
||||
| Team | Status | Lead | Members | Active projects |
|
||||
|---|---|---|---:|---:|
|
||||
| [AeroSim Team](/teams/aerosim/) | Active | RootAtSkic | 8 | 1 |
|
||||
| [Maze Next Gen Team](/teams/mazeng/) | Active | RootAtSkic | 4 | 1 |
|
||||
| [AeroSim Team](/teams/aerosim/) | Active | RootAtSkic | 7 | 1 |
|
||||
| [Maze Next Gen Team](/teams/mazeng/) | Active | RootAtSkic | 3 | 1 |
|
||||
|
||||
A team record defines its mandate, lead, members, responsibilities, communication channels, and assigned projects.
|
||||
|
||||
@@ -9,7 +9,7 @@ sidebar_position: 2
|
||||
|---|---|
|
||||
| Status | Active |
|
||||
| Lead | RootAtSkic |
|
||||
| Members | RootAtSkic; Jenny; Piotras; `jarvis-at-skic` / Hermes code agent |
|
||||
| Members | RootAtSkic; Jenny; `jarvis-at-skic` / Hermes code agent |
|
||||
| Assigned project | [Maze Next Gen](/projects/mazeng/) |
|
||||
|
||||
## Mandate
|
||||
@@ -18,11 +18,11 @@ Deliver the Maze Next Gen multi-cloud inventory and visualization platform, docu
|
||||
|
||||
## Gitea access
|
||||
|
||||
`maze-next-gen-team` exists independently in `corp-v1-mazeng` and `corp-v1-mazeng-skills-code-agent`, includes all repositories, and contains `root-at-skic`, `jarvis-at-skic`, and `piotras`. Piotras's verified memberships cover two project repositories and fourteen project-skill repositories. Jenny has verified Discord access, but her Gitea team access remains pending a verified username or account creation; no identity was guessed.
|
||||
`maze-next-gen-team` exists independently in `corp-v1-mazeng` and `corp-v1-mazeng-skills-code-agent`, includes all repositories, and contains `root-at-skic` and `jarvis-at-skic`. Effective write access is verified for both existing Gitea members across two project and thirteen skill repositories. Jenny's repository access is pending until she signs in to Gitea at least once and supplies a verified username.
|
||||
|
||||
## Communication
|
||||
|
||||
Six exact Maze channels, purpose messages, pinned guidance, and six isolated staggered hourly synchronization jobs are verified.
|
||||
Six exact Maze channels and their purpose messages and pinned guidance are verified. Jenny has effective `VIEW_CHANNEL`, `SEND_MESSAGES`, and `READ_MESSAGE_HISTORY` access in all six. The membership update was announced in General as message `1540048213090771034`. Corp v1 project scheduler jobs are prohibited by the current operating model.
|
||||
|
||||
## Remaining gate
|
||||
|
||||
|
||||
@@ -34,8 +34,6 @@ const config: Config = {
|
||||
} satisfies Preset.Options,
|
||||
]],
|
||||
plugins: [
|
||||
['drawio', {lib: '/corp-v1/portal/drawio/viewer.min.js'}],
|
||||
['@docusaurus/plugin-content-docs', {...docsCommon, id: 'architecture-high-level', path: 'docs/architecture-high-level', routeBasePath: 'architecture-high-level', sidebarPath: './sidebars/architecture-high-level.ts'}],
|
||||
['@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'}],
|
||||
@@ -49,7 +47,7 @@ const config: Config = {
|
||||
indexDocs: true,
|
||||
indexBlog: false,
|
||||
indexPages: true,
|
||||
docsRouteBasePath: ['/', 'architecture-high-level', 'projects', 'teams', 'members', 'board', 'governance'],
|
||||
docsRouteBasePath: ['/', 'projects', 'teams', 'members', 'board', 'governance'],
|
||||
language: ['en'],
|
||||
highlightSearchTermsOnTargetPage: true,
|
||||
explicitSearchResultPath: true,
|
||||
@@ -67,14 +65,12 @@ const config: Config = {
|
||||
{type: 'docSidebar', sidebarId: 'membersSidebar', docsPluginId: 'members', label: 'Members', position: 'left'},
|
||||
{type: 'docSidebar', sidebarId: 'boardSidebar', docsPluginId: 'board', label: 'Board', position: 'left'},
|
||||
{type: 'docSidebar', sidebarId: 'governanceSidebar', docsPluginId: 'governance', label: 'Governance', position: 'left'},
|
||||
{type: 'docSidebar', sidebarId: 'architectureHighLevelSidebar', docsPluginId: 'architecture-high-level', label: 'Architecture', position: 'left'},
|
||||
{href: 'https://gitea.lego-cloud.eu/corp-v1/portal', label: 'Gitea ↗', position: 'right'},
|
||||
],
|
||||
},
|
||||
footer: {
|
||||
style: 'light',
|
||||
links: [{title: 'Registry', items: [
|
||||
{label: 'Architecture', to: '/architecture-high-level/context/'},
|
||||
{label: 'Projects', to: '/projects/'},
|
||||
{label: 'Teams', to: '/teams/'},
|
||||
{label: 'Members', to: '/members/'},
|
||||
|
||||
@@ -22,7 +22,6 @@
|
||||
"@easyops-cn/docusaurus-search-local": "^0.55.3",
|
||||
"@mdx-js/react": "^3.0.0",
|
||||
"clsx": "^2.0.0",
|
||||
"docusaurus-plugin-drawio": "^0.4.0",
|
||||
"prism-react-renderer": "^2.3.0",
|
||||
"react": "^19.0.0",
|
||||
"react-dom": "^19.0.0"
|
||||
@@ -32,8 +31,6 @@
|
||||
"@docusaurus/tsconfig": "3.10.2",
|
||||
"@docusaurus/types": "3.10.2",
|
||||
"@types/react": "^19.0.0",
|
||||
"fast-xml-parser": "^5.11.0",
|
||||
"raw-loader": "^4.0.2",
|
||||
"typescript": "~6.0.2"
|
||||
},
|
||||
"browserslist": {
|
||||
|
||||
Generated
+3
-137
@@ -26,9 +26,6 @@ importers:
|
||||
clsx:
|
||||
specifier: ^2.0.0
|
||||
version: 2.1.1
|
||||
docusaurus-plugin-drawio:
|
||||
specifier: ^0.4.0
|
||||
version: 0.4.0(webpack@5.109.2(@swc/core@1.15.47)(postcss@8.5.26))
|
||||
prism-react-renderer:
|
||||
specifier: ^2.3.0
|
||||
version: 2.4.1(react@19.2.8)
|
||||
@@ -51,12 +48,6 @@ importers:
|
||||
'@types/react':
|
||||
specifier: ^19.0.0
|
||||
version: 19.2.18
|
||||
fast-xml-parser:
|
||||
specifier: ^5.11.0
|
||||
version: 5.11.0
|
||||
raw-loader:
|
||||
specifier: ^4.0.2
|
||||
version: 4.0.2(webpack@5.109.2(@swc/core@1.15.47)(postcss@8.5.26))
|
||||
typescript:
|
||||
specifier: ~6.0.2
|
||||
version: 6.0.3
|
||||
@@ -1465,9 +1456,6 @@ packages:
|
||||
resolution: {integrity: sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==}
|
||||
engines: {node: '>= 16'}
|
||||
|
||||
'@nodable/entities@3.0.0':
|
||||
resolution: {integrity: sha512-8L9xFeTYKhm49xfIypoe2W5wV1m/3Z58kT+7kR9A8OyFxcPduI4VmxaUMQyKYrRjUoLLSXv6EKKID5Tvj9cUVw==}
|
||||
|
||||
'@node-rs/jieba-android-arm-eabi@1.10.4':
|
||||
resolution: {integrity: sha512-MhyvW5N3Fwcp385d0rxbCWH42kqDBatQTyP8XbnYbju2+0BO/eTeCCLYj7Agws4pwxn2LtdldXRSKavT7WdzNA==}
|
||||
engines: {node: '>= 10'}
|
||||
@@ -2237,9 +2225,6 @@ packages:
|
||||
resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
|
||||
engines: {node: '>= 8'}
|
||||
|
||||
anynum@1.0.1:
|
||||
resolution: {integrity: sha512-N6//FLET/tXYNM/F6ABca1oH6fWB+KlTt909Le28WMDBk8oaT4vY17DCrwg2MvmuqUKt3Ni4N5dGJ/EoBgcO6A==}
|
||||
|
||||
arg@5.0.2:
|
||||
resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==}
|
||||
|
||||
@@ -2836,9 +2821,6 @@ packages:
|
||||
resolution: {integrity: sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==}
|
||||
engines: {node: '>=6'}
|
||||
|
||||
docusaurus-plugin-drawio@0.4.0:
|
||||
resolution: {integrity: sha512-7y3cgtwdQ3evWY/phq/iGJectDlRzpRrKzbcBeT79o+w+OStU0noTcTOmVd/oTiylu2OJXhQWF9z+4CoxTgAtA==}
|
||||
|
||||
dom-converter@0.2.0:
|
||||
resolution: {integrity: sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==}
|
||||
|
||||
@@ -3064,13 +3046,6 @@ packages:
|
||||
fast-uri@3.1.5:
|
||||
resolution: {integrity: sha512-gHwA1O9LDIcKunMKhObS/HimwtehO1nPUECKAu5TpKgaO19fcWEl4bliWe1jWxVFvIXztJjjQ4L8XQ1EU9f7Jw==}
|
||||
|
||||
fast-xml-builder@1.3.1:
|
||||
resolution: {integrity: sha512-pIM/1n3ntFXKYrUZwW7QCK0gAW7XY+wzj1YMIV3tLDvPj/V+zTGJK5e3/4WJfwj0qWw2ElNXiTixda/R+3YSug==}
|
||||
|
||||
fast-xml-parser@5.11.0:
|
||||
resolution: {integrity: sha512-9IGxMqvqLOnqP+Egi1nqDHKv5k8aZ7r9n558enxcucmyVGEBNPAU+MOg/8jPIS7rO7sSq4gFm1/nHtiaubMruw==}
|
||||
hasBin: true
|
||||
|
||||
fastq@1.20.1:
|
||||
resolution: {integrity: sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==}
|
||||
|
||||
@@ -3542,9 +3517,6 @@ packages:
|
||||
is-typedarray@1.0.0:
|
||||
resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==}
|
||||
|
||||
is-unsafe@2.0.2:
|
||||
resolution: {integrity: sha512-HgbIHPBH0KHHCcjLfGsCvhtPTVxjaAZlXjwdz7/GQC40SjSe4sfQsar8J5VFo8JOSbarkpV0OLG95bbaNd9aAQ==}
|
||||
|
||||
is-wsl@2.2.0:
|
||||
resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==}
|
||||
engines: {node: '>=8'}
|
||||
@@ -4268,10 +4240,6 @@ packages:
|
||||
resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==}
|
||||
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
|
||||
|
||||
path-expression-matcher@1.6.2:
|
||||
resolution: {integrity: sha512-enSlaiat05iasnzmgNxRj8reFdj3puY2QpNgP1aPIaVfT6nn9ICuPoFlKHk8EN22HcwewshO+mN2DGbkCEOtqQ==}
|
||||
engines: {node: '>=14.0.0'}
|
||||
|
||||
path-is-inside@1.0.2:
|
||||
resolution: {integrity: sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==}
|
||||
|
||||
@@ -4782,12 +4750,6 @@ packages:
|
||||
resolution: {integrity: sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==}
|
||||
engines: {node: '>= 0.8'}
|
||||
|
||||
raw-loader@4.0.2:
|
||||
resolution: {integrity: sha512-ZnScIV3ag9A4wPX/ZayxL/jZH+euYb6FcUinPcgiQW0+UBtEv0O6Q3lGd3cqJ+GHH+rksEv3Pj99oxJ3u3VIKA==}
|
||||
engines: {node: '>= 10.13.0'}
|
||||
peerDependencies:
|
||||
webpack: ^4.0.0 || ^5.0.0
|
||||
|
||||
rc@1.2.8:
|
||||
resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==}
|
||||
hasBin: true
|
||||
@@ -5213,9 +5175,6 @@ packages:
|
||||
resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
|
||||
engines: {node: '>=8'}
|
||||
|
||||
strnum@2.4.2:
|
||||
resolution: {integrity: sha512-rDG3Ah4TV0k1hWvLSzkZtMmLN9+eS+h3knq4MP6A42Y3Yh5qGNnOUs1jJkoSr8FG5dsL28c7KgkIBzSEykqtuw==}
|
||||
|
||||
style-to-js@1.1.21:
|
||||
resolution: {integrity: sha512-RjQetxJrrUJLQPHbLku6U/ocGtzyjbJMP9lCNK7Ag0CNh690nSH8woqWH9u16nMjYBAok+i7JO1NP2pOy8IsPQ==}
|
||||
|
||||
@@ -5640,10 +5599,6 @@ packages:
|
||||
resolution: {integrity: sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g==}
|
||||
hasBin: true
|
||||
|
||||
xml-naming@0.3.0:
|
||||
resolution: {integrity: sha512-ghig2TBE/H11aOVgmahA3MhimvkBr6JIYknH/Dhdk10nXwdbIqBJsbfMxpvFPG8bAw77gN29aQWvKpmVoPlvPQ==}
|
||||
engines: {node: '>=16.0.0'}
|
||||
|
||||
yallist@3.1.1:
|
||||
resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==}
|
||||
|
||||
@@ -7053,9 +7008,9 @@ snapshots:
|
||||
browserslist: 4.28.8
|
||||
lightningcss: 1.33.0
|
||||
semver: 7.8.5
|
||||
swc-loader: 0.2.7(@swc/core@1.15.47)(webpack@5.109.2(@swc/core@1.15.47)(postcss@8.5.26))
|
||||
swc-loader: 0.2.7(@swc/core@1.15.47)(webpack@5.109.2(@swc/core@1.15.47)(@swc/html@1.15.47)(lightningcss@1.33.0)(postcss@8.5.26))
|
||||
tslib: 2.8.1
|
||||
webpack: 5.109.2(@swc/core@1.15.47)(@swc/html@1.15.47)(lightningcss@1.33.0)(postcss@8.5.26)
|
||||
webpack: 5.109.2(@swc/core@1.15.47)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.26))(html-minifier-terser@7.2.0)(postcss@8.5.26)
|
||||
transitivePeerDependencies:
|
||||
- '@minify-html/node'
|
||||
- '@swc/css'
|
||||
@@ -8140,8 +8095,6 @@ snapshots:
|
||||
|
||||
'@noble/hashes@1.4.0': {}
|
||||
|
||||
'@nodable/entities@3.0.0': {}
|
||||
|
||||
'@node-rs/jieba-android-arm-eabi@1.10.4':
|
||||
optional: true
|
||||
|
||||
@@ -8953,8 +8906,6 @@ snapshots:
|
||||
normalize-path: 3.0.0
|
||||
picomatch: 2.3.2
|
||||
|
||||
anynum@1.0.1: {}
|
||||
|
||||
arg@5.0.2: {}
|
||||
|
||||
argparse@2.0.1: {}
|
||||
@@ -9581,12 +9532,6 @@ snapshots:
|
||||
dependencies:
|
||||
'@leichtgewicht/ip-codec': 2.0.5
|
||||
|
||||
docusaurus-plugin-drawio@0.4.0(webpack@5.109.2(@swc/core@1.15.47)(postcss@8.5.26)):
|
||||
dependencies:
|
||||
raw-loader: 4.0.2(webpack@5.109.2(@swc/core@1.15.47)(postcss@8.5.26))
|
||||
transitivePeerDependencies:
|
||||
- webpack
|
||||
|
||||
dom-converter@0.2.0:
|
||||
dependencies:
|
||||
utila: 0.4.0
|
||||
@@ -9849,20 +9794,6 @@ snapshots:
|
||||
|
||||
fast-uri@3.1.5: {}
|
||||
|
||||
fast-xml-builder@1.3.1:
|
||||
dependencies:
|
||||
path-expression-matcher: 1.6.2
|
||||
xml-naming: 0.3.0
|
||||
|
||||
fast-xml-parser@5.11.0:
|
||||
dependencies:
|
||||
'@nodable/entities': 3.0.0
|
||||
fast-xml-builder: 1.3.1
|
||||
is-unsafe: 2.0.2
|
||||
path-expression-matcher: 1.6.2
|
||||
strnum: 2.4.2
|
||||
xml-naming: 0.3.0
|
||||
|
||||
fastq@1.20.1:
|
||||
dependencies:
|
||||
reusify: 1.1.0
|
||||
@@ -10389,8 +10320,6 @@ snapshots:
|
||||
|
||||
is-typedarray@1.0.0: {}
|
||||
|
||||
is-unsafe@2.0.2: {}
|
||||
|
||||
is-wsl@2.2.0:
|
||||
dependencies:
|
||||
is-docker: 2.2.1
|
||||
@@ -11146,19 +11075,6 @@ snapshots:
|
||||
|
||||
minimist@1.2.8: {}
|
||||
|
||||
minimizer-webpack-plugin@5.6.1(@swc/core@1.15.47)(@swc/html@1.15.47)(lightningcss@1.33.0)(postcss@8.5.26)(webpack@5.109.2(@swc/core@1.15.47)(postcss@8.5.26)):
|
||||
dependencies:
|
||||
'@jridgewell/trace-mapping': 0.3.31
|
||||
jest-worker: 27.5.1
|
||||
schema-utils: 4.3.3
|
||||
terser: 5.50.0
|
||||
webpack: 5.109.2(@swc/core@1.15.47)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.26))(html-minifier-terser@7.2.0)(postcss@8.5.26)
|
||||
optionalDependencies:
|
||||
'@swc/core': 1.15.47
|
||||
'@swc/html': 1.15.47
|
||||
lightningcss: 1.33.0
|
||||
postcss: 8.5.26
|
||||
|
||||
minimizer-webpack-plugin@5.6.1(@swc/core@1.15.47)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.26))(html-minifier-terser@7.2.0)(postcss@8.5.26)(webpack@5.109.2(@swc/core@1.15.47)(postcss@8.5.26)):
|
||||
dependencies:
|
||||
'@jridgewell/trace-mapping': 0.3.31
|
||||
@@ -11356,8 +11272,6 @@ snapshots:
|
||||
|
||||
path-exists@5.0.0: {}
|
||||
|
||||
path-expression-matcher@1.6.2: {}
|
||||
|
||||
path-is-inside@1.0.2: {}
|
||||
|
||||
path-key@3.1.1: {}
|
||||
@@ -11907,12 +11821,6 @@ snapshots:
|
||||
iconv-lite: 0.4.24
|
||||
unpipe: 1.0.0
|
||||
|
||||
raw-loader@4.0.2(webpack@5.109.2(@swc/core@1.15.47)(postcss@8.5.26)):
|
||||
dependencies:
|
||||
loader-utils: 2.0.4
|
||||
schema-utils: 3.3.0
|
||||
webpack: 5.109.2(@swc/core@1.15.47)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.26))(html-minifier-terser@7.2.0)(postcss@8.5.26)
|
||||
|
||||
rc@1.2.8:
|
||||
dependencies:
|
||||
deep-extend: 0.6.0
|
||||
@@ -12462,10 +12370,6 @@ snapshots:
|
||||
|
||||
strip-json-comments@3.1.1: {}
|
||||
|
||||
strnum@2.4.2:
|
||||
dependencies:
|
||||
anynum: 1.0.1
|
||||
|
||||
style-to-js@1.1.21:
|
||||
dependencies:
|
||||
style-to-object: 1.0.14
|
||||
@@ -12502,7 +12406,7 @@ snapshots:
|
||||
picocolors: 1.1.1
|
||||
sax: 1.6.1
|
||||
|
||||
swc-loader@0.2.7(@swc/core@1.15.47)(webpack@5.109.2(@swc/core@1.15.47)(postcss@8.5.26)):
|
||||
swc-loader@0.2.7(@swc/core@1.15.47)(webpack@5.109.2(@swc/core@1.15.47)(@swc/html@1.15.47)(lightningcss@1.33.0)(postcss@8.5.26)):
|
||||
dependencies:
|
||||
'@swc/core': 1.15.47
|
||||
'@swc/counter': 0.1.3
|
||||
@@ -12800,42 +12704,6 @@ snapshots:
|
||||
|
||||
webpack-sources@3.5.1: {}
|
||||
|
||||
webpack@5.109.2(@swc/core@1.15.47)(@swc/html@1.15.47)(lightningcss@1.33.0)(postcss@8.5.26):
|
||||
dependencies:
|
||||
'@types/estree': 1.0.9
|
||||
'@types/json-schema': 7.0.15
|
||||
'@webassemblyjs/ast': 1.14.1
|
||||
'@webassemblyjs/wasm-edit': 1.14.1
|
||||
'@webassemblyjs/wasm-parser': 1.14.1
|
||||
acorn: 8.18.0
|
||||
browserslist: 4.28.8
|
||||
chrome-trace-event: 1.0.4
|
||||
enhanced-resolve: 5.24.5
|
||||
es-module-lexer: 2.3.1
|
||||
eslint-scope: 5.1.1
|
||||
events: 3.3.0
|
||||
graceful-fs: 4.2.11
|
||||
mime-db: 1.54.0
|
||||
minimizer-webpack-plugin: 5.6.1(@swc/core@1.15.47)(@swc/html@1.15.47)(lightningcss@1.33.0)(postcss@8.5.26)(webpack@5.109.2(@swc/core@1.15.47)(postcss@8.5.26))
|
||||
neo-async: 2.6.2
|
||||
schema-utils: 4.3.3
|
||||
tapable: 2.3.3
|
||||
watchpack: 2.5.2
|
||||
webpack-sources: 3.5.1
|
||||
transitivePeerDependencies:
|
||||
- '@minify-html/node'
|
||||
- '@swc/core'
|
||||
- '@swc/css'
|
||||
- '@swc/html'
|
||||
- clean-css
|
||||
- cssnano
|
||||
- csso
|
||||
- esbuild
|
||||
- html-minifier-terser
|
||||
- lightningcss
|
||||
- postcss
|
||||
- uglify-js
|
||||
|
||||
webpack@5.109.2(@swc/core@1.15.47)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.26))(html-minifier-terser@7.2.0)(postcss@8.5.26):
|
||||
dependencies:
|
||||
'@types/estree': 1.0.9
|
||||
@@ -12933,8 +12801,6 @@ snapshots:
|
||||
dependencies:
|
||||
sax: 1.6.1
|
||||
|
||||
xml-naming@0.3.0: {}
|
||||
|
||||
yallist@3.1.1: {}
|
||||
|
||||
yocto-queue@1.2.2: {}
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
import assert from 'node:assert/strict';
|
||||
import {existsSync, readFileSync, readdirSync} from 'node:fs';
|
||||
import {join} from 'node:path';
|
||||
import {XMLValidator} from 'fast-xml-parser';
|
||||
|
||||
const root = process.cwd();
|
||||
const read = (path) => readFileSync(join(root, path), 'utf8');
|
||||
@@ -21,24 +20,13 @@ 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*'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 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');
|
||||
|
||||
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');
|
||||
assert.doesNotMatch(config, /Pilot Model|docs\/pilot|routeBasePath:\s*'pilot'/, 'legacy Pilot Model navigation must not remain');
|
||||
|
||||
const board = read('docs/board/index.md');
|
||||
for (const memberId of ['1518725627845283888', '476287310627864587', '773109855497093191', '364383883778850827']) {
|
||||
for (const memberId of ['1518725627845283888', '476287310627864587', '773109855497093191', '364383883778850827', '1483820991720329227', '1540035254746882048']) {
|
||||
assert.ok(board.includes(memberId), `board page is missing Discord member ${memberId}`);
|
||||
}
|
||||
assert.match(board, /Only these Board members may approve a project kickoff or project closure/i);
|
||||
@@ -57,91 +45,16 @@ for (const section of ['projects', 'teams', 'members']) {
|
||||
|
||||
assert.ok(packageJson.dependencies?.['@easyops-cn/docusaurus-search-local'], 'local search dependency is missing');
|
||||
assert.match(config, /@easyops-cn\/docusaurus-search-local/, 'local search theme is not configured');
|
||||
assert.ok(packageJson.dependencies?.['docusaurus-plugin-drawio'], 'Draw.io plugin dependency is missing');
|
||||
assert.ok(packageJson.devDependencies?.['raw-loader'], 'Draw.io raw-loader dependency is missing');
|
||||
assert.match(config, /\['drawio',\s*\{lib:\s*'\/corp-v1\/portal\/drawio\/viewer\.min\.js'\}\]/, 'Draw.io plugin must use the self-hosted viewer');
|
||||
assert.ok(existsSync(join(root, 'static/drawio/viewer.min.js')), 'self-hosted Draw.io viewer is missing');
|
||||
const drawioLicense = read('static/drawio/LICENSE');
|
||||
assert.match(drawioLicense, /MIT License/, 'vendored Draw.io viewer license is missing');
|
||||
assert.match(drawioLicense, /Copyright \(c\) 2022 xiguaxigua/, 'vendored Draw.io viewer copyright notice is missing');
|
||||
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']) {
|
||||
assert.ok(searchRoutes.includes(`'${route}'`), `search does not include route base ${route}`);
|
||||
}
|
||||
|
||||
const architectureSidebar = read('sidebars/architecture-high-level.ts');
|
||||
const expectedArchitectureSidebar = `import type {SidebarsConfig} from '@docusaurus/plugin-content-docs';
|
||||
|
||||
const sidebars: SidebarsConfig = {
|
||||
architectureHighLevelSidebar: [
|
||||
{type: 'doc', id: 'context', label: 'Context'},
|
||||
{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'},
|
||||
{type: 'doc', id: 'overview-repositories', label: 'Overview Repositories'},
|
||||
],
|
||||
};
|
||||
|
||||
export default sidebars;`;
|
||||
assert.equal(
|
||||
architectureSidebar.trim(),
|
||||
expectedArchitectureSidebar,
|
||||
'Architecture High Level sidebar must contain exactly the six requested documents in order',
|
||||
);
|
||||
const architecturePages = {
|
||||
context: read('docs/architecture-high-level/context.mdx'),
|
||||
overview: read('docs/architecture-high-level/overview.mdx'),
|
||||
operatingModel: read('docs/architecture-high-level/operating-model.mdx'),
|
||||
channels: read('docs/architecture-high-level/overview-channels.mdx'),
|
||||
skills: read('docs/architecture-high-level/overview-skills.mdx'),
|
||||
repositories: read('docs/architecture-high-level/overview-repositories.mdx'),
|
||||
};
|
||||
for (const [name, page] of Object.entries(architecturePages)) {
|
||||
assert.match(page, /!!raw-loader!\.\/diagrams\/.+\.drawio/, `${name} page must render an editable Draw.io source`);
|
||||
}
|
||||
for (const term of ['seven channel skills', 'seven engineering skills', 'Gitea Actions', 'scheduler jobs', 'corp-v1-board', 'UI/UX', 'one AI agent', 'Hermes Agent', 'MicroK8s', 'Penpot', 'Argo CD', 'Harbor']) {
|
||||
assert.ok(Object.values(architecturePages).some((page) => page.includes(term)), `architecture explanation is missing: ${term}`);
|
||||
}
|
||||
for (const term of ['Corp v1 Board members', 'Project leads and contributors', 'Prospective project sponsors and contributors', 'Solution users and reviewers']) {
|
||||
assert.ok(architecturePages.context.includes(term), `system context is missing actor: ${term}`);
|
||||
}
|
||||
for (const term of ['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}`);
|
||||
}
|
||||
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 — 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 & RECORD'],
|
||||
'channels.drawio': ['CORP V1 — BOARD & PROJECT CHANNELS', 'CORP-V1-BOARD', 'GENERAL', 'ARCHITECTURE', 'UI/UX', 'RELEASES', 'MULTIPLE FOCUSED SESSIONS'],
|
||||
'skills.drawio': ['CORP V1 — SKILLS MODEL', 'CENTRAL SOURCES', 'DELIBERATE ADOPTION', 'PROJECT COPIES', 'FOCUSED SESSION'],
|
||||
'repositories.drawio': ['CORP V1 — ORGANIZATIONS, REPOSITORIES & DELIVERY', 'PROJECT ORGANIZATION', 'SKILLS ORGANIZATION', '7 adopted channel-skill repos', 'GITEA ACTIONS'],
|
||||
})) {
|
||||
const diagram = read(`docs/architecture-high-level/diagrams/${name}`);
|
||||
const xmlResult = XMLValidator.validate(diagram);
|
||||
assert.equal(xmlResult, true, `${name} is malformed XML: ${JSON.stringify(xmlResult)}`);
|
||||
assert.match(diagram, /<mxfile[\s>]/, `${name} is not a Draw.io source file`);
|
||||
for (const marker of markers) assert.ok(diagram.includes(marker), `${name} is missing: ${marker}`);
|
||||
assert.doesNotMatch(diagram, /Six purpose-specific|6 channel skills|6 adopted channel-skill repos/i, `${name} retains the superseded six-channel model`);
|
||||
for (const route of ['/', 'projects', 'teams', 'members', 'board', 'governance']) {
|
||||
assert.ok(config.includes(`'${route}'`), `search does not include route base ${route}`);
|
||||
}
|
||||
|
||||
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', 'container overview', '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']) {
|
||||
assert.ok(search.includes(term), `search index is missing: ${term}`);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,14 +0,0 @@
|
||||
import type {SidebarsConfig} from '@docusaurus/plugin-content-docs';
|
||||
|
||||
const sidebars: SidebarsConfig = {
|
||||
architectureHighLevelSidebar: [
|
||||
{type: 'doc', id: 'context', label: 'Context'},
|
||||
{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'},
|
||||
{type: 'doc', id: 'overview-repositories', label: 'Overview Repositories'},
|
||||
],
|
||||
};
|
||||
|
||||
export default sidebars;
|
||||
@@ -1,21 +0,0 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2022 xiguaxigua
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
Vendored
-4168
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user