Skip to content

Commit 6cb80ca

Browse files
chore(container-stack): convert cerro-torre/vordr/selur/rokur to submodules (#119)
## Summary - These 4 components were folded wholesale into `container-stack/` on 2026-02-13, even though `container-stack/README.adoc` always documented them as having their own upstream repos — that wasn't true until now. - Extracted each with full git-filter-repo history into its own standalone repo (`hyperpolymath/cerro-torre` #59 commits, `vordr` #47, `selur` #44 incl. `compose/`, `rokur` #14 — net-new, had no repo anywhere) and replaced the in-tree copy with a submodule at the same path. - `stapeln.toml`'s build manifest and the existing CI path filters keep working unmodified (same directory paths). ## Changes - `.gitmodules` added (`https://` URLs so CI checkout doesn't need a deploy key) - `setup.sh` now runs `git submodule update --init --recursive` - `publish-image.yml`: checkout now fetches submodules; path filters gained the bare submodule path (a submodule bump is a single gitlink change, which the existing `container-stack/<name>/**` glob alone won't catch) - `formal-verification.yml` removed here — it was cerro-torre-specific and has been re-added at the new `hyperpolymath/cerro-torre` repo root instead (hyperpolymath/cerrotorre#1) - `container-stack/README.adoc` updated to describe the submodule reality ## Not in scope `svalinn` is intentionally untouched — the in-tree copy and `hyperpolymath/svalinn` have genuinely diverged (different completion %, different files, not just staleness) and need reconciliation before either copy is touched. Flagged inline in the README; tracked separately. ## Test plan - [ ] CI green on this PR (publish-image.yml should still trigger correctly; formal-verification.yml is gone from here by design) - [ ] `./setup.sh` on a clean clone populates `container-stack/{cerro-torre,vordr,selur,rokur}/`
1 parent 9d48512 commit 6cb80ca

682 files changed

Lines changed: 40 additions & 131162 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/formal-verification.yml

Lines changed: 0 additions & 113 deletions
This file was deleted.

.github/workflows/publish-image.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,9 @@ on:
1414
branches: [main]
1515
paths:
1616
- 'container-stack/selur/**'
17+
- 'container-stack/selur'
1718
- 'container-stack/vordr/**'
19+
- 'container-stack/vordr'
1820
- '.github/workflows/publish-image.yml'
1921
workflow_dispatch: {}
2022
permissions:
@@ -36,6 +38,8 @@ jobs:
3638
steps:
3739
- name: Checkout
3840
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
41+
with:
42+
submodules: recursive
3943
- name: Set up Docker Buildx
4044
uses: docker/setup-buildx-action@d7f5e7f509e45cec5c76c4d5afdd7de93d0b3df5 # v4.1.0
4145
- name: Log in to GHCR

.gitmodules

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
[submodule "container-stack/vordr"]
2+
path = container-stack/vordr
3+
url = https://github.com/hyperpolymath/vordr.git
4+
[submodule "container-stack/selur"]
5+
path = container-stack/selur
6+
url = https://github.com/hyperpolymath/selur.git
7+
[submodule "container-stack/rokur"]
8+
path = container-stack/rokur
9+
url = https://github.com/hyperpolymath/rokur.git
10+
[submodule "container-stack/cerro-torre"]
11+
path = container-stack/cerro-torre
12+
url = https://github.com/hyperpolymath/cerro-torre.git

container-stack/README.adoc

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
// SPDX-License-Identifier: CC-BY-SA-4.0
22
= container-stack/
3-
Embedded snapshots of the upstream container components that stapeln designs, validates,
4-
and orchestrates.
3+
Git submodules pointing at the upstream container components that stapeln designs,
4+
validates, and orchestrates.
55

6-
Each subdirectory contains the source tree for one component of the hyperpolymath
6+
Each subdirectory is a submodule checkout of one component of the hyperpolymath
77
container stack. They exist here as context for stapeln's validation rules, security
88
inspector, and gap analysis — stapeln is the *design surface* for these components,
9-
not a fork of them.
9+
not a fork of them. Until 2026-07-03 these were full copies committed directly into
10+
this repo (a monorepo fold-in from 2026-02-13); they are now proper submodules against
11+
their own standalone repos, so there is one source of truth per component.
1012

1113
== Components
1214

@@ -18,7 +20,7 @@ not a fork of them.
1820
| Container builder — produces cryptographically signed, minimal Chainguard-based images. Upstream repo: `hyperpolymath/cerro-torre`.
1921

2022
| `svalinn/`
21-
| Edge gateway — handles routing, rate-limiting, ephemeral pinholes at the network boundary. Upstream repo: `hyperpolymath/svalinn`.
23+
| Edge gateway — handles routing, rate-limiting, ephemeral pinholes at the network boundary. Upstream repo: `hyperpolymath/svalinn`. *Not yet converted to a submodule* — this copy and the standalone repo have diverged (different completion state, different files) and need reconciliation before the switch; tracked separately, do not delete either copy in the meantime.
2224

2325
| `rokur/`
2426
| Stapeln GUI runtime — the Stapeln GUI component itself (Tauri/Dioxus shell). Upstream repo: `hyperpolymath/rokur`.
@@ -32,7 +34,10 @@ not a fork of them.
3234

3335
== Usage
3436

35-
These snapshots are used by stapeln's miniKanren security engine to derive attack-surface
36-
rules and by the Cisco View simulation mode to model realistic component behaviour.
37+
`git submodule update --init --recursive` (or `./setup.sh`, which now does this for you)
38+
populates these directories. They are used by stapeln's miniKanren security engine to
39+
derive attack-surface rules and by the Cisco View simulation mode to model realistic
40+
component behaviour.
3741

38-
For canonical sources, refer to the upstream repos listed above.
42+
For canonical sources — and to make any real change — go to the upstream repos listed
43+
above, not these submodule checkouts.

container-stack/cerro-torre

Submodule cerro-torre added at 5fab708

container-stack/cerro-torre/.claude/CLAUDE.md

Lines changed: 0 additions & 98 deletions
This file was deleted.

container-stack/cerro-torre/.editorconfig

Lines changed: 0 additions & 65 deletions
This file was deleted.

container-stack/cerro-torre/.github/workflows/hypatia-scan.yml

Lines changed: 0 additions & 15 deletions
This file was deleted.

0 commit comments

Comments
 (0)