- Python 54.1%
- Shell 45.9%
| .forgejo/workflows | ||
| api | ||
| ci | ||
| guides | ||
| orchestration | ||
| scripts | ||
| templates | ||
| .gitignore | ||
| .markdownlint-cli2.jsonc | ||
| .pre-commit-config.yaml | ||
| AGENTS.md | ||
| INDEX.md | ||
| README.md | ||
| RULES.md | ||
the-rules
Cross-repo hard rules + cross-cutting architecture ADRs for the L0GYKAL homeserver-config family. Submoduled at the-rules/ by the hub repo + every spoke (except bear — see ADR-0011 § Exclusions).
Layout
RULES.mdat the root — the canonical hard rules, carved 2026-06-10 fromhomeserver-config:AGENTS.md § Hard rules.- ADRs live in subfolders by concern (
ci/,orchestration/). One file per ADR, numberedNNNN-short-slug.md. INDEX.mdfor the canonical table with impact + 1-sentence summary per document.
The hub's internal ADRs (watcher, devcontainer, validator) remain in homeserver-config/docs/adr/; only documents binding cross-repo action live here.
The split test (from hub docs/adr/0013-the-rules-architecture-adr-repo-split.md § Scope):
Does following this rule require spoke action — a workflow file edit, an AGENTS.md amendment, an interface contract a spoke implements? If yes → this repo. If no (hub-internal subsystem only) →
homeserver-config/docs/adr/.
Documents
See INDEX.md for the full table with impact + summary per document.
| # | Subject | Path |
|---|---|---|
| RULES | Hard rules (carved from homeserver-config:AGENTS.md) |
RULES.md |
| 0011 | Spoke CI: manual-clone bridge, image-publish, runner-label split | ci/0011-...md |
| 0012 | runners-spoke: capacity-managed ephemeral runners | ci/0012-...md |
| 0020 | Spoke test standard — every spoke ships tests/test-spoke.sh |
ci/0020-...md |
| 0021 | Spoke permissions contract — every spoke ships permissions.yaml (wraps hub ADR-0017) |
ci/0021-...md |
Future ADRs (0022+) are born here directly. Numbering skips 0013–0019 (those numbers belong to hub-internal ADRs in homeserver-config/docs/adr/).
Subfolder organisation
ci/— CI infrastructure rules (runners, workflows, image publish).orchestration/— Agent / mission orchestration rules.
New rule + new concern → new subfolder. Update INDEX.md.
Consuming this repo
Add as a submodule once per consumer (hub or spoke):
git submodule add git@forge.tala.family:L0GYKAL/the-rules.git the-rules
git commit -m "chore: add the-rules submodule"
(SCP-style URL is required — URL-style breaks actions/checkout@v4's auto-rewrite per hub rule 20.)
After clone of a consumer:
git submodule update --init the-rules
Adopt a rule update:
git submodule update --remote --merge the-rules
git add the-rules
git commit -m "chore(the-rules): bump submodule to <short-sha>"
Each consumer pins its own SHA. The deliberate bump PR is the reviewable signal that an architecture rule changed downstream.
Citation form
In any consumer file (workflow, AGENTS.md, README), cite an ADR as:
the-rules/ci/0011-spoke-ci-manual-clone-image-publish-and-runner-split.md
The the-rules/ prefix matches the submodule path, so the citation resolves on disk in every consumer.
Numbering
Continues the homeserver-config ADR series (no gap, no reset). ADR-0011's number stays 0011 here. Future ADRs in EITHER repo (hub-internal or cross-cutting) pick the next free integer across BOTH repos.
Amendment workflow
- Open a PR against
the-rules:mainwith the amended ADR. - After merge, open follow-on
chore(the-rules): bump submodulePRs against hub + every consuming spoke that needs to adopt the change. Each consumer can adopt at its own pace; ADR-0011 § S9's audit script flags spokes more than a configured staleness threshold behindthe-rules:main.
Cross-refs
homeserver-config:docs/adr/0013-the-rules-architecture-adr-repo-split.md— establishes this repo + the split testhomeserver-config:AGENTS.md— hub hard-rules (apply when authoring here too)homeserver-config:docs/spokes.md— spoke roster + cross-coupling shapes