Skip to content

Commit 687c2da

Browse files
Prepare testnet release hardening and GitHub repo docs
1 parent d615c08 commit 687c2da

161 files changed

Lines changed: 27396 additions & 1309 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/README.md

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
# GitHub Configuration
2+
3+
This directory contains the repository-wide GitHub configuration for Aethelred.
4+
5+
## What Lives Here
6+
7+
- `workflows/`: CI, security, release, deployment, SDK, docs, and launch gates
8+
- `ISSUE_TEMPLATE/`: issue intake templates for bugs and feature requests
9+
- `PULL_REQUEST_TEMPLATE.md`: pull request checklist and contributor expectations
10+
- `branch-protection/`: required check definitions used to keep launch branches honest
11+
- `dependabot.yml`: dependency update policy
12+
13+
## Operating Rules
14+
15+
- Treat workflow changes as production-affecting changes.
16+
- Keep required gates aligned with `docs/operations/GATE_INVENTORY.md`.
17+
- Do not merge workflow or branch-protection changes without corresponding evidence.
18+
- Release and launch changes must follow `docs/operations/FREEZE_POLICY.md`.
19+
20+
## Maintainers
21+
22+
Primary owners for this directory are Release Engineering, Security, and Core Protocol.
23+
24+
## Related Docs
25+
26+
- `docs/operations/GATE_INVENTORY.md`
27+
- `docs/operations/FREEZE_POLICY.md`
28+
- `docs/VALIDATOR_RUNBOOK.md`

.github/workflows/dapps-ci.yml

Lines changed: 63 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,62 @@ jobs:
118118
- name: Build
119119
run: npm run build
120120

121+
# ---------------------------------------------------------------------------
122+
# Shiora
123+
# ---------------------------------------------------------------------------
124+
shiora:
125+
name: Shiora
126+
runs-on: ubuntu-latest
127+
defaults:
128+
run:
129+
working-directory: dApps/shiora
130+
steps:
131+
- uses: actions/checkout@v4
132+
- uses: actions/setup-node@v4
133+
with:
134+
node-version: "20"
135+
cache: "npm"
136+
cache-dependency-path: dApps/shiora/package-lock.json
137+
- name: Install dependencies
138+
run: npm ci --no-fund
139+
- name: Lint
140+
run: npm run lint
141+
- name: Type-check
142+
run: npm run type-check
143+
- name: Format check
144+
run: npm run format:check
145+
- name: Run tests with coverage
146+
run: npm run test -- --coverage --ci
147+
- name: Build
148+
run: npm run build
149+
150+
# ---------------------------------------------------------------------------
151+
# TerraQura
152+
# ---------------------------------------------------------------------------
153+
terraqura:
154+
name: TerraQura
155+
runs-on: ubuntu-latest
156+
defaults:
157+
run:
158+
working-directory: dApps/terraqura
159+
steps:
160+
- uses: actions/checkout@v4
161+
- uses: actions/setup-node@v4
162+
with:
163+
node-version: "20"
164+
- name: Install pnpm
165+
run: corepack enable && corepack prepare pnpm@9 --activate
166+
- name: Install dependencies
167+
run: pnpm install --frozen-lockfile
168+
- name: Lint
169+
run: pnpm lint
170+
- name: Type-check
171+
run: pnpm typecheck
172+
- name: Run tests
173+
run: pnpm test
174+
- name: Build
175+
run: pnpm build
176+
121177
# ---------------------------------------------------------------------------
122178
# Required gate — all dApps must pass before merge
123179
# ---------------------------------------------------------------------------
@@ -129,19 +185,25 @@ jobs:
129185
- zeroid-frontend
130186
- cruzible
131187
- noblepay
188+
- shiora
189+
- terraqura
132190
if: always()
133191
steps:
134192
- name: Check all jobs passed
135193
run: |
136194
if [[ "${{ needs.zeroid-backend.result }}" != "success" ]] ||
137195
[[ "${{ needs.zeroid-frontend.result }}" != "success" ]] ||
138196
[[ "${{ needs.cruzible.result }}" != "success" ]] ||
139-
[[ "${{ needs.noblepay.result }}" != "success" ]]; then
197+
[[ "${{ needs.noblepay.result }}" != "success" ]] ||
198+
[[ "${{ needs.shiora.result }}" != "success" ]] ||
199+
[[ "${{ needs.terraqura.result }}" != "success" ]]; then
140200
echo "One or more dApps CI jobs failed:"
141201
echo " zeroid-backend: ${{ needs.zeroid-backend.result }}"
142202
echo " zeroid-frontend: ${{ needs.zeroid-frontend.result }}"
143203
echo " cruzible: ${{ needs.cruzible.result }}"
144204
echo " noblepay: ${{ needs.noblepay.result }}"
205+
echo " shiora: ${{ needs.shiora.result }}"
206+
echo " terraqura: ${{ needs.terraqura.result }}"
145207
exit 1
146208
fi
147209
echo "All dApps CI gates passed."

.github/workflows/developer-tools-ci.yml

Lines changed: 31 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -4,32 +4,32 @@ on:
44
pull_request:
55
paths:
66
- "tools/cli/**"
7-
- "tools/vscode-extension/**"
8-
- "tools/dashboard/**"
9-
- "tools/apps/fastapi-verifier/**"
10-
- "tools/apps/nextjs-verifier/**"
11-
- "tools/deploy/docker/docker-compose.local-testnet.yml"
12-
- "tools/deploy/docker/Dockerfile.fastapi-verifier"
13-
- "tools/deploy/docker/Dockerfile.nextjs-api"
14-
- "tools/deploy/docker/Dockerfile.dashboard-devtools"
15-
- "tools/deploy/docker/mock-rpc-server.py"
16-
- "tools/scripts/devtools-cli-smoke.sh"
7+
- "tools/tools/vscode-extension/**"
8+
- "frontend/dashboard/**"
9+
- "integrations/apps/fastapi-verifier/**"
10+
- "integrations/apps/nextjs-verifier/**"
11+
- "integrations/deploy/docker/docker-compose.local-testnet.yml"
12+
- "integrations/deploy/docker/Dockerfile.fastapi-verifier"
13+
- "integrations/deploy/docker/Dockerfile.nextjs-api"
14+
- "integrations/deploy/docker/Dockerfile.dashboard-devtools"
15+
- "integrations/deploy/docker/mock-rpc-server.py"
16+
- "scripts/devtools-cli-smoke.sh"
1717
- "sdk/typescript/**"
1818
- ".github/workflows/developer-tools-ci.yml"
1919
push:
2020
branches: ["main", "master"]
2121
paths:
2222
- "tools/cli/**"
23-
- "tools/vscode-extension/**"
24-
- "tools/dashboard/**"
25-
- "tools/apps/fastapi-verifier/**"
26-
- "tools/apps/nextjs-verifier/**"
27-
- "tools/deploy/docker/docker-compose.local-testnet.yml"
28-
- "tools/deploy/docker/Dockerfile.fastapi-verifier"
29-
- "tools/deploy/docker/Dockerfile.nextjs-api"
30-
- "tools/deploy/docker/Dockerfile.dashboard-devtools"
31-
- "tools/deploy/docker/mock-rpc-server.py"
32-
- "tools/scripts/devtools-cli-smoke.sh"
23+
- "tools/tools/vscode-extension/**"
24+
- "frontend/dashboard/**"
25+
- "integrations/apps/fastapi-verifier/**"
26+
- "integrations/apps/nextjs-verifier/**"
27+
- "integrations/deploy/docker/docker-compose.local-testnet.yml"
28+
- "integrations/deploy/docker/Dockerfile.fastapi-verifier"
29+
- "integrations/deploy/docker/Dockerfile.nextjs-api"
30+
- "integrations/deploy/docker/Dockerfile.dashboard-devtools"
31+
- "integrations/deploy/docker/mock-rpc-server.py"
32+
- "scripts/devtools-cli-smoke.sh"
3333
- "sdk/typescript/**"
3434
- ".github/workflows/developer-tools-ci.yml"
3535

@@ -51,7 +51,7 @@ jobs:
5151
node-version: 20
5252

5353
- name: Build local TypeScript SDK for file: deps
54-
if: ${{ matrix.cli_dir == 'cli/aethel' || matrix.cli_dir == 'cli/seal-verifier' }}
54+
if: ${{ matrix.cli_dir == 'tools/cli/aethel' || matrix.cli_dir == 'tools/cli/seal-verifier' }}
5555
run: |
5656
cd sdk/typescript
5757
npm install
@@ -108,12 +108,12 @@ jobs:
108108

109109
- name: Install dashboard dependencies
110110
run: |
111-
cd tools/dashboard
111+
cd frontend/dashboard
112112
npm install
113113
114114
- name: Build dashboard
115115
run: |
116-
cd tools/dashboard
116+
cd frontend/dashboard
117117
npm run build
118118
119119
local-testnet-compose-validate:
@@ -122,7 +122,7 @@ jobs:
122122
- uses: actions/checkout@v4
123123
- name: Validate local testnet compose config
124124
run: |
125-
docker compose -f tools/deploy/docker/docker-compose.local-testnet.yml config >/tmp/local-testnet-compose.yaml
125+
docker compose -f integrations/deploy/docker/docker-compose.local-testnet.yml config >/tmp/local-testnet-compose.yaml
126126
test -s /tmp/local-testnet-compose.yaml
127127
128128
local-testnet-cli-smoke:
@@ -142,35 +142,35 @@ jobs:
142142
143143
- name: Install and build aethel CLI
144144
run: |
145-
cd cli/aethel
145+
cd tools/cli/aethel
146146
npm install
147147
npm run build
148148
149149
- name: Install and build seal-verifier CLI
150150
run: |
151-
cd cli/seal-verifier
151+
cd tools/cli/seal-verifier
152152
npm install
153153
npm run build
154154
155155
- name: Start mock local devtools stack
156156
run: |
157-
docker compose -f tools/deploy/docker/docker-compose.local-testnet.yml --profile mock up -d --build
157+
docker compose -f integrations/deploy/docker/docker-compose.local-testnet.yml --profile mock up -d --build
158158
159159
- name: Run CLI smoke checks
160160
run: |
161-
./tools/scripts/devtools-cli-smoke.sh
161+
./scripts/devtools-cli-smoke.sh
162162
163163
- name: Dump compose status
164164
if: always()
165165
run: |
166-
docker compose -f tools/deploy/docker/docker-compose.local-testnet.yml --profile mock ps
166+
docker compose -f integrations/deploy/docker/docker-compose.local-testnet.yml --profile mock ps
167167
168168
- name: Dump compose logs on failure
169169
if: failure()
170170
run: |
171-
docker compose -f tools/deploy/docker/docker-compose.local-testnet.yml --profile mock logs --no-color --tail=200
171+
docker compose -f integrations/deploy/docker/docker-compose.local-testnet.yml --profile mock logs --no-color --tail=200
172172
173173
- name: Stop mock local devtools stack
174174
if: always()
175175
run: |
176-
docker compose -f tools/deploy/docker/docker-compose.local-testnet.yml --profile mock down -v
176+
docker compose -f integrations/deploy/docker/docker-compose.local-testnet.yml --profile mock down -v

.github/workflows/docs-hygiene.yml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,3 +18,11 @@ jobs:
1818
echo 'Found local workstation path references in docs.' >&2
1919
exit 1
2020
fi
21+
- name: Check docs for internal hostnames
22+
run: |
23+
set -euo pipefail
24+
internal_hosts='\.internal[:/\s"'\'']'
25+
if rg -n "$internal_hosts" -g '*.md' .; then
26+
echo 'Found internal hostname references in docs. Use <placeholder-host> instead.' >&2
27+
exit 1
28+
fi

.github/workflows/e2e-tests.yml

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,16 +26,13 @@ jobs:
2626
- name: Build validator binary
2727
run: go build -o build/aethelredd ./cmd/aethelredd/
2828

29-
- name: Run E2E test suite
30-
run: go test -v -tags=e2e -timeout 20m ./tests/e2e/...
31-
3229
- name: Run E2E keeper tests
3330
run: go test -v -tags=e2e -timeout 20m -run TestEndToEnd ./x/pouw/keeper/...
3431

3532
- name: Run loadtest in node mode against mock RPC
3633
run: |
3734
go run ./cmd/aethelred-loadtest --mode node \
38-
--rpc-url http://127.0.0.1:26657 \
35+
--rpc-endpoint http://127.0.0.1:26657 \
3936
--duration 30s \
4037
--concurrency 4 2>&1 || echo "::warning::Loadtest node-mode skipped (no RPC available)"
4138
@@ -44,7 +41,7 @@ jobs:
4441
uses: actions/upload-artifact@v4
4542
with:
4643
name: e2e-results
47-
path: tests/e2e/artifacts/
44+
path: test-results/
4845

4946
e2e-docker-smoke:
5047
name: Docker Compose Smoke Test

0 commit comments

Comments
 (0)