docs: Ledger Live integration, contract deploy learnings, NEXT_STEPS updates
Some checks failed
Deploy to Phoenix / deploy (push) Has been cancelled

- ADD_CHAIN138_TO_LEDGER_LIVE: Ledger form done; public code review repo bis-innovations/LedgerLive; init/push commands
- CONTRACT_DEPLOYMENT_RUNBOOK: Chain 138 gas price 1 gwei, 36-addr check, TransactionMirror workaround
- CONTRACT_*: AddressMapper, MirrorManager deployed 2026-02-12; 36-address on-chain check
- NEXT_STEPS_FOR_YOU: Ledger done; steps completable now (no LAN); run-completable-tasks-from-anywhere
- MASTER_INDEX, OPERATOR_OPTIONAL, SMART_CONTRACTS_INVENTORY_SIMPLE: updates
- LEDGER_BLOCKCHAIN_INTEGRATION_COMPLETE: bis-innovations/LedgerLive reference

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
defiQUG
2026-02-12 15:46:57 -08:00
parent cc8dcaf356
commit fbda1b4beb
5114 changed files with 498901 additions and 4567 deletions

View File

@@ -0,0 +1,244 @@
# All Requirements — Master List
**Last Updated:** 2026-02-05
**Purpose:** Single source for all project requirements. Use for compliance, traceability, and execution.
**Sources:** MASTER_PLAN, PHASES_AND_TASKS_MASTER, TODO_TASK_LIST_MASTER, [REMAINING_WORK_DETAILED_STEPS.md](REMAINING_WORK_DETAILED_STEPS.md), MISSING_CONTAINERS_LIST, CCIP_DEPLOYMENT_SPEC, IMPLEMENTATION_CHECKLIST, OPERATIONAL_RUNBOOKS, MASTER_SECRETS_INVENTORY, FULL_PARALLEL_EXECUTION_ORDER.
---
## 1. Foundation (Phase 0) — ✅ Done
| ID | Requirement | Source | Status |
|----|-------------|--------|--------|
| F-1 | Proxmox management accessible (ml110, r630-01, r630-02) | PHASES_AND_TASKS_MASTER | ✅ Done |
| F-2 | Edge: UDM Pro; port forward 76.53.10.36:80/443 → 192.168.11.167 (NPMplus) | DEPLOYMENT_STATUS_MASTER | ✅ Done |
| F-3 | Basic Besu containers deployed (validators, sentries, RPC per inventory) | DEPLOYMENT_STATUS_MASTER | ✅ Done |
| F-4 | config/ip-addresses.conf and .env.example present; validation passes | run-all-validation.sh | ✅ Done |
---
## 2. Security Requirements
| ID | Requirement | Source | Priority |
|----|-------------|--------|----------|
| S-1 | .env permissions: chmod 600 | IMPLEMENTATION_CHECKLIST | Required |
| S-2 | Validator key permissions: chmod 600, chown besu; use secure-validator-keys.sh | OPERATIONAL_RUNBOOKS § Phase 2 | Required |
| S-3 | SSH key-based auth; disable password (coordinate to avoid lockout) | setup-ssh-key-auth.sh | Required |
| S-4 | Firewall: restrict Proxmox API port 8006 to admin CIDR | firewall-proxmox-8006.sh | Required |
| S-5 | No real API keys in .env.example; document in MASTER_SECRETS_INVENTORY | MASTER_PLAN §3.1 | Required |
| S-6 | Rotate any exposed keys; private keys not in docs | MASTER_SECRETS_INVENTORY | Critical |
| S-7 | smom: Security audits VLT-024, ISO-024 | PHASES_AND_TASKS_MASTER | Critical |
| S-8 | smom: Bridge integrations BRG-VLT, BRG-ISO | PHASES_AND_TASKS_MASTER | High |
| S-9 | Network segmentation (VLANs): plan and migrate per NETWORK_ARCHITECTURE | IMPLEMENTATION_CHECKLIST | Optional |
---
## 3. Deployment Requirements
### 3.1 Missing Containers (canonical: 3 only)
| ID | Requirement | VMID | Spec | Source |
|----|-------------|------|------|--------|
| D-1 | Create besu-rpc-luis (Luis 0x1) | 2506 | 16GB, 4 CPU, 200GB; JWT required | MISSING_CONTAINERS_LIST |
| D-2 | Create besu-rpc-putu (Putu 0x8a) | 2507 | Same | MISSING_CONTAINERS_LIST |
| D-3 | Create besu-rpc-putu (Putu 0x1) | 2508 | Same | MISSING_CONTAINERS_LIST |
### 3.2 Phase 1 — VLAN (optional)
| ID | Requirement | Source |
|----|-------------|--------|
| D-4 | UDM Pro VLAN config | PHASES_AND_TASKS_MASTER |
| D-5 | VLAN-aware bridge on Proxmox | PHASES_AND_TASKS_MASTER |
| D-6 | Services migrated to VLANs per NETWORK_ARCHITECTURE | DEPLOYMENT_STATUS_MASTER |
### 3.3 Phase 2 — Observability (required)
| ID | Requirement | Source |
|----|-------------|--------|
| D-7 | Monitoring stack: Prometheus, Grafana, Loki, Alertmanager | PHASES_AND_TASKS_MASTER |
| D-8 | Prometheus scrape Besu 9545; config in config/monitoring/ | phase2-observability.sh |
| D-9 | Grafana published via Cloudflare Access | PHASES_AND_TASKS_MASTER |
| D-10 | Alerts configured (Alertmanager, email/webhook) | OPERATIONAL_RUNBOOKS § Phase 2 |
### 3.4 Phase 3 — CCIP Fleet (required)
| ID | Requirement | VMIDs / scope | Source |
|----|-------------|----------------|--------|
| D-11 | CCIP Ops/Admin deployed | 5400-5401 | CCIP_DEPLOYMENT_SPEC |
| D-12 | CCIP Monitoring nodes | 5402-5403 | CCIP_DEPLOYMENT_SPEC |
| D-13 | 16 Commit nodes | 5410-5425 | CCIP_DEPLOYMENT_SPEC |
| D-14 | 16 Execute nodes | 5440-5455 | CCIP_DEPLOYMENT_SPEC |
| D-15 | 7 RMN nodes | 5470-5476 | CCIP_DEPLOYMENT_SPEC |
| D-16 | NAT pools configured (blocks #2#4 per NETWORK_ARCHITECTURE) | CCIP_DEPLOYMENT_SPEC |
| D-17 | Env: CCIP_ETH_ROUTER, CCIP_ETH_LINK_TOKEN, ETH_MAINNET_SELECTOR (mainnet CCIP) | ccip-deploy-checklist.sh |
### 3.5 Phase 4 — Sovereign Tenants (required)
| ID | Requirement | Source |
|----|-------------|--------|
| D-18 | Sovereign VLANs configured (200203) | phase4-sovereign-tenants.sh, OPERATIONAL_RUNBOOKS |
| D-19 | Tenant isolation enforced; access control | PHASES_AND_TASKS_MASTER |
| D-20 | Block #6 egress NAT; verify tenant isolation | NETWORK_ARCHITECTURE |
---
## 4. Backup & Maintenance Requirements
| ID | Requirement | Frequency / scope | Source |
|----|-------------|-------------------|--------|
| B-1 | Automated config backup (Proxmox configs) | On demand or cron | automated-backup.sh |
| B-2 | NPMplus backup (export/config) when NPMplus up | NPM_PASSWORD; schedule-npmplus-backup-cron.sh | Wave 0 / W1-8 |
| B-3 | Backup validator keys (encrypted); 30-day retention | IMPLEMENTATION_CHECKLIST | Required |
| B-4 | Daily maintenance checks: explorer sync, RPC 2201 | Daily 08:00 | schedule-daily-weekly-cron.sh |
| B-5 | Weekly: Config API uptime, review explorer logs | Sun 09:00 | daily-weekly-checks.sh weekly |
| B-6 | Token list: validate; update as needed (token-lists/lists/dbis-138.tokenlist.json) | As needed | OPERATIONAL_RUNBOOKS [139] |
---
## 5. Configuration & Secrets Requirements
| ID | Requirement | Source |
|----|-------------|--------|
| C-1 | config/ip-addresses.conf present and sourced | validate-config-files.sh |
| C-2 | .env from .env.example; no real keys in repo | MASTER_SECRETS_INVENTORY |
| C-3 | ADMIN_CENTRAL_API_KEY, DBIS_CENTRAL_URL for portal/token-agg/multi-chain | MASTER_PLAN §9 |
| C-4 | PRIVATE_KEY (deployer) for bridge/sendCrossChain; LINK approved for fee | run-send-cross-chain.sh |
| C-5 | NPM_PASSWORD for NPMplus backup/export | backup-npmplus.sh |
| C-6 | PROXMOX_* optional for API; SSH used for host access | config validation |
| C-7 | JWT auth for RPC 25032508; nginx reverse proxy | CHAIN138_JWT_AUTH_REQUIREMENTS |
---
## 6. Codebase Requirements
| ID | Requirement | Component | Priority |
|----|-------------|-----------|----------|
| R-1 | Security audits VLT-024, ISO-024 | smom-dbis-138 | Critical |
| R-2 | Bridge integrations BRG-VLT, BRG-ISO | smom-dbis-138 | High |
| R-3 | CCIP AMB full implementation | smom-dbis-138 | High |
| R-4 | Vault/ISO test suites exist | smom-dbis-138 | ✅ Done |
| R-5 | deploy-vault-system.sh (VLT-010018, ISO-009018) | smom-dbis-138 | ✅ Done |
| R-6 | IRU remaining tasks (OFAC/sanctions/AML) | dbis_core | High |
| R-7 | TypeScript/Prisma fixes (~1186 errors) or defer | dbis_core | High |
| R-8 | REST API backend, migrations, VITE_USE_REAL_API | OMNIS | ✅ Scaffold |
| R-9 | Sankofa Phoenix SDK auth (VITE_SANKOFA_*) | OMNIS | High |
| R-10 | Placeholders: AlltraAdapter setBridgeFee; smart accounts kit; TezosRelayService; quote-service Fabric chainId | PLACEHOLDERS_AND_TBD | High |
---
## 7. Protection Layer & Admin Requirements (MASTER_PLAN)
| ID | Requirement | Target |
|----|-------------|--------|
| P-1 | Central policy and audit: permission check API, audit append/query | dbis_core Admin Central |
| P-2 | Orchestration portal: JWT + central permission + audit (replace x-admin-token) | MASTER_PLAN §2.2 |
| P-3 | Token-aggregation admin: auth + audit for admin endpoints | MASTER_PLAN §2.2 |
| P-4 | Multi-chain-execution admin: JWT or client-credentials + audit | MASTER_PLAN §2.2 |
| P-5 | Org-level panel: global identity, role matrix, central audit viewer | admin-console-frontend-plan Phase 4/6 |
| P-6 | Admin runner for scripts/MCP: identity + permission + audit log | OPERATIONAL_RUNBOOKS, MASTER_PLAN §2.4 |
---
## 8. Wave Execution Requirements
### Wave 0 (gates; run from LAN when creds ready)
| ID | Requirement | Command / note |
|----|-------------|----------------|
| W0-1 | Apply NPMplus RPC fix (405) | From LAN: `bash scripts/nginx-proxy-manager/update-npmplus-proxy-hosts-api.sh` |
| W0-2 | Execute sendCrossChain (real) | Omit `--dry-run`; PRIVATE_KEY, LINK approved |
| W0-3 | NPMplus backup | NPM_PASSWORD; `automated-backup.sh --with-npmplus` or backup-npmplus.sh |
### Wave 1 (full parallel)
| ID | Requirement | Ref |
|----|-------------|-----|
| W1-1 | SSH key auth (--apply on hosts) | S-3 |
| W1-2 | Firewall 8006 (--apply) | S-4 |
| W1-5W1-7 | Monitoring config (Prometheus, Grafana, Loki, Alertmanager) | D-7D-10 |
| W1-8 | Backup cron: daily-weekly + NPMplus (--install when NPM_PASSWORD set) | B-1B-5 |
| W1-11W1-13 | Docs: consolidation, quick refs, IP matrix, runbooks | ALL_IMPROVEMENTS 6874, 7581 |
| W1-14W1-17 | Codebase: dbis_core TS, smom placeholders, IRU | R-6R-10 |
| W1-18W1-21 | Progress indicators, validator keys, secret audit, config validation | IMPLEMENTATION_CHECKLIST |
| W1-27W1-44 | ALL_IMPROVEMENTS 1139 by range | ALL_IMPROVEMENTS_AND_GAPS_INDEX |
### Wave 2 (infra / deploy)
| ID | Requirement | Ref |
|----|-------------|-----|
| W2-1 | Deploy monitoring stack | D-7D-10 |
| W2-2 | Grafana + Cloudflare Access; alerts | D-9, D-10 |
| W2-3 | VLAN enablement and migration | D-4D-6 |
| W2-4 | CCIP Ops/Admin (5400-5401); NAT; scripts | D-11D-17 |
| W2-5 | Phase 4 sovereign VLANs | D-18D-20 |
| W2-6 | Create missing containers 2506, 2507, 2508 | D-1D-3 |
| W2-7 | DBIS services start; Hyperledger | DEPLOYMENT_STATUS_MASTER |
| W2-8 | NPMplus HA (Keepalived, 10234) | Optional |
### Wave 3 (after Wave 2)
| ID | Requirement | Ref |
|----|-------------|-----|
| W3-1 | CCIP Fleet full deploy: commit, execute, RMN nodes | D-11D-15 |
| W3-2 | Phase 4 tenant isolation enforcement | D-18D-20 |
### Ongoing
| ID | Requirement | Status |
|----|-------------|--------|
| O-1O-5 | Daily/weekly checks; explorer logs; token list | ✅ Cron installed; token list validated |
---
## 9. Validation & Acceptance Requirements
| ID | Requirement | Command |
|----|-------------|---------|
| V-1 | CI / pre-deploy validation | `bash scripts/verify/run-all-validation.sh [--skip-genesis]` |
| V-2 | Config files | `bash scripts/validation/validate-config-files.sh` |
| V-3 | Full verification (DNS, UDM Pro, NPMplus, etc.) | `bash scripts/verify/run-full-verification.sh` |
| V-4 | E2E routing (Cloudflare domains) | `bash scripts/verify/verify-end-to-end-routing.sh` |
| V-5 | Backend VMs | `bash scripts/verify/verify-backend-vms.sh` |
| V-6 | Genesis (smom-dbis-138) | `bash smom-dbis-138/scripts/validation/validate-genesis.sh` |
| V-7 | Besu peers | `bash scripts/besu-verify-peers.sh http://192.168.11.211:8545` |
| V-8 | CCIP deploy order and env | `bash scripts/ccip/ccip-deploy-checklist.sh` |
---
## 10. Optional / External Requirements
| ID | Requirement | Source |
|----|-------------|--------|
| X-1 | API keys: Li.Fi, Jumper, 1inch (API_KEYS_REQUIRED.md) | NEXT_STEPS_MASTER |
| X-2 | Paymaster deploy (smart accounts) | SMART_ACCOUNTS_DEPLOYMENT_NOTE |
| X-3 | Token-aggregation: CoinGecko/CMC submission | COINGECKO_SUBMISSION.md |
| X-4 | Explorer: dark mode, network selector, sync indicator | ALL_IMPROVEMENTS 92105 |
| X-5 | Tezos/Etherlink CCIP (finality, routes, DON, metrics) | TEZOS_CCIP_REMAINING_ITEMS |
| X-6 | External integrations: Li.Fi, LayerZero, Wormhole, Uniswap, 1inch, MoonPay/Ramp | PHASES_AND_TASKS_MASTER |
| X-7 | Resource/network/database optimization | TODO_TASK_LIST_MASTER |
---
## 11. Requirement Index by Source
| Document | Section in this file |
|----------|----------------------|
| [MASTER_PLAN.md](MASTER_PLAN.md) | §2 (Protection), §7 (Wave), §3.1 (Config) |
| [PHASES_AND_TASKS_MASTER.md](PHASES_AND_TASKS_MASTER.md) | §2 (Security), §3 (Deployment), §6 (Codebase), §10 (Optional) |
| [MISSING_CONTAINERS_LIST.md](../03-deployment/MISSING_CONTAINERS_LIST.md) | §3.1 (D-1D-3) |
| [CCIP_DEPLOYMENT_SPEC.md](../07-ccip/CCIP_DEPLOYMENT_SPEC.md) | §3.4 (D-11D-17) |
| [IMPLEMENTATION_CHECKLIST.md](../10-best-practices/IMPLEMENTATION_CHECKLIST.md) | §2 (Security), §4 (Backup), §8 (Wave 1) |
| [OPERATIONAL_RUNBOOKS.md](../03-deployment/OPERATIONAL_RUNBOOKS.md) | §2, §4, §8 |
| [MASTER_SECRETS_INVENTORY.md](../04-configuration/MASTER_SECRETS_INVENTORY.md) | §5 (Configuration) |
| [FULL_PARALLEL_EXECUTION_ORDER.md](FULL_PARALLEL_EXECUTION_ORDER.md) | §8 (Wave 03, Ongoing) |
| [REMAINING_ITEMS_FULL_PARALLEL_LIST.md](REMAINING_ITEMS_FULL_PARALLEL_LIST.md) | §8 (detailed task IDs) |
---
**Use this document to:**
- Trace requirements to source docs
- Check off completion (update status in source docs or add a REQUIREMENTS_STATUS.md)
- Drive compliance and runbooks
- Onboard: one place for “what must be true” before and after deployment
**Last Updated:** 2026-02-05

View File

@@ -0,0 +1,426 @@
# All Tasks — Detailed Steps (Single Reference)
**Last Updated:** 2026-02-12
**Purpose:** One place for every task with concrete steps to execute.
**Sources:** NEXT_STEPS_MASTER.md, REMAINING_WORK_DETAILED_STEPS.md, CONTRACT_NEXT_STEPS_AND_RECOMMENDATIONS_COMPLETE.md, CONFIG_READY_CHAINS_COMPLETION_RUNBOOK.md, TODO_TASK_LIST_MASTER.md, IMPLEMENTATION_CHECKLIST.md.
---
## How to use this document
- **Wave order:** Wave 0 → Wave 1 → Wave 2 → Wave 3 → Ongoing. Within a wave, run tasks in parallel where possible.
- **Blocker:** Each task notes what is required (LAN, PRIVATE_KEY, etc.).
- **References:** Links point to runbooks and scripts; runbooks have the full command set.
### Runner scripts (run in parallel where possible)
| Script | When to use | What it runs |
|--------|-------------|--------------|
| **scripts/run-completable-tasks-from-anywhere.sh** | From dev machine / WSL / CI (no LAN or secrets) | Config validation, on-chain contract check (Chain 138), run-all-validation --skip-genesis, canonical .env output for reconciliation. |
| **scripts/run-operator-tasks-from-lan.sh** | From a host on LAN with NPM_PASSWORD (and optionally PRIVATE_KEY for O-1) | W0-1 (NPMplus RPC fix), W0-3 (NPMplus backup), O-1 (Blockscout verification). Prints next steps for W0-2, W1-*, cron, CR-1, API keys. |
| **scripts/run-wave0-from-lan.sh** | Same as above (subset) | W0-1 + W0-3 only. |
| **scripts/run-all-remaining-tasks.sh** | From project root; set RUN_W02=1 AMOUNT=…, RUN_SECURITY=1, or RUN_VALIDATOR_KEYS=1 to execute | W0-2 (sendCrossChain), W1-1/W1-2 (--apply), W1-19 (validator keys), and prints runbook commands for W2-2 through W3-2, CR-1, API, Paymaster. |
---
## Task index (by category)
| ID | Task | Wave | Blocker |
|----|------|------|---------|
| W0-1 | NPMplus RPC fix (405) | 0 | LAN |
| W0-2 | sendCrossChain (real transfer) | 0 | PRIVATE_KEY, LINK |
| W0-3 | NPMplus backup | 0 | NPM_PASSWORD, LAN |
| CR-1 | Config-ready chains (Gnosis, Celo, Wemix) | — | CCIP support, keys, gas |
| O-1 | Run Blockscout source verification | — | LAN / Blockscout reachable |
| O-2 | Reconcile .env (canonical addresses) | — | CONTRACT_ADDRESSES_REFERENCE |
| O-3 | On-chain contract check (Chain 138) | — | RPC (e.g. VMID 2101) |
| W1-1 | SSH key-based auth; disable password | 1 | Proxmox/SSH |
| W1-2 | Firewall — restrict Proxmox API 8006 | 1 | Proxmox/SSH |
| W1-8 | NPMplus backup run + cron | 1 | NPM_PASSWORD, LAN |
| W1-19 | Secure validator key permissions | 1 | Proxmox host |
| W2-1 | Deploy monitoring stack | 2 | Infra |
| W2-2 | Grafana via Cloudflare; alerts | 2 | W2-1 |
| W2-3 | VLAN enablement | 2 | UDM Pro, Proxmox |
| W2-4 | Phase 3 CCIP Ops/Admin; NAT pools | 2 | CCIP_DEPLOYMENT_SPEC |
| W2-5 | Phase 4 sovereign tenant VLANs | 2 | Runbook |
| W2-7 | DBIS / Hyperledger services | 2 | Runbooks |
| W3-1 | CCIP Fleet (commit/execute/RMN) | 3 | W2-4 |
| W3-2 | Phase 4 tenant isolation enforcement | 3 | W2-5 |
| Cron-1 | NPMplus backup cron | — | Target host |
| Cron-2 | Daily/weekly checks cron | — | Target host |
| API | API keys — obtain and set | — | Sign-up |
| Paymaster | Deploy Paymaster (optional) | — | smom-dbis-138, RPC |
---
## W0 — Gates (do first when credentials allow)
### W0-1: NPMplus RPC fix (405)
**Blocker:** Host on LAN (e.g. 192.168.11.x).
**Steps:**
1. From a machine on LAN: `cd /path/to/proxmox`.
2. Option A — Full Wave 0: `bash scripts/run-wave0-from-lan.sh` (use `--skip-backup` for RPC only).
3. Option B — RPC only: `bash scripts/nginx-proxy-manager/update-npmplus-proxy-hosts-api.sh`.
4. Verify: `bash scripts/verify/verify-end-to-end-routing.sh` — RPC domains should pass.
**Ref:** REMAINING_WORK_DETAILED_STEPS.md § W0-1.
---
### W0-2: sendCrossChain (real)
**Blocker:** `PRIVATE_KEY` and LINK approved in `.env`; bridge `0x971cD9D156f193df8051E48043C476e53ECd4693`.
**Steps:**
1. Ensure `smom-dbis-138/.env` has `PRIVATE_KEY` and LINK (or fee token) approved for bridge.
2. Run: `bash scripts/bridge/run-send-cross-chain.sh <amount> [recipient]` (omit `--dry-run`).
3. Confirm tx on chain and destination.
**Ref:** scripts/README.md §8, REMAINING_WORK_DETAILED_STEPS.md § W0-2.
---
### W0-3: NPMplus backup
**Blocker:** `NPM_PASSWORD` in `.env`; NPMplus API reachable (LAN).
**Steps:**
1. Set `NPM_PASSWORD` (and optionally `NPM_HOST`) in `.env`.
2. From host that can reach NPMplus: `bash scripts/verify/backup-npmplus.sh`.
3. Or: `bash scripts/run-wave0-from-lan.sh` (includes backup).
**Ref:** REMAINING_WORK_DETAILED_STEPS.md § W0-3.
---
## CR — Config-ready chains (Gnosis, Celo, Wemix)
**Blocker:** CCIP support per chain (verify at https://docs.chain.link/ccip/supported-networks); deployer key with gas on each chain; Chain 138 RPC and `CHAIN138_SELECTOR`.
**Steps:**
1. **Verify CCIP:** Confirm Gnosis, Celo, Wemix in Chainlink CCIP supported networks.
2. **Deploy bridges (per chain):** From `smom-dbis-138/`: set `RPC_URL`, `CCIP_ROUTER_ADDRESS`, `LINK_TOKEN_ADDRESS`, `WETH9_ADDRESS`, `WETH10_ADDRESS`, `PRIVATE_KEY` for that chain; run:
```bash
forge script script/deploy/bridge/DeployWETHBridges.s.sol:DeployWETHBridges --rpc-url "$RPC_URL" --broadcast -vvvv
```
Record deployed bridge addresses.
3. **Env:** Copy `smom-dbis-138/docs/deployment/ENV_CONFIG_READY_CHAINS.example` into `smom-dbis-138/.env`; set `CCIPWETH9_BRIDGE_GNOSIS`, `CCIPWETH10_BRIDGE_GNOSIS`, same for Celo/Wemix; set `CHAIN138_SELECTOR` (decimal).
4. **Configure destinations:** `cd smom-dbis-138 && ./scripts/deployment/complete-config-ready-chains.sh` (use `DRY_RUN=1` first).
5. **Fund LINK:** Send ~10 LINK per bridge on Gnosis, Celo, Wemix to each bridge address.
**Ref:** [CONFIG_READY_CHAINS_COMPLETION_RUNBOOK.md](../07-ccip/CONFIG_READY_CHAINS_COMPLETION_RUNBOOK.md), ENV_CONFIG_READY_CHAINS.example.
---
## O — Operator / contract (any time)
### O-1: Blockscout source verification
**Blocker:** Host that can reach Blockscout (e.g. LAN to 192.168.11.140:4000).
**Steps:**
1. `source smom-dbis-138/.env 2>/dev/null`
2. `./scripts/verify/run-contract-verification-with-proxy.sh`
3. Optionally retry single contract: `--only ContractName`
**Ref:** CONTRACT_NEXT_STEPS_AND_RECOMMENDATIONS_COMPLETE.md § Operator action.
---
### O-2: Reconcile .env (canonical addresses)
**Blocker:** None (edit only).
**Steps:**
1. Open [CONTRACT_ADDRESSES_REFERENCE § Canonical source of truth](../11-references/CONTRACT_ADDRESSES_REFERENCE.md).
2. Ensure `smom-dbis-138/.env` has one entry per variable; remove duplicates; align values with the canonical table.
**Ref:** CONTRACT_NEXT_STEPS_AND_RECOMMENDATIONS_COMPLETE.md.
---
### O-3: On-chain contract check (Chain 138)
**Blocker:** RPC reachable (e.g. VMID 2101: `http://192.168.11.211:8545` or `https://rpc-core.d-bis.org`).
**Steps:**
1. From repo root: `./scripts/verify/check-contracts-on-chain-138.sh http://192.168.11.211:8545`
2. Or with default RPC: `./scripts/verify/check-contracts-on-chain-138.sh`
3. Fix any MISS: deploy or correct address in docs/.env.
**Ref:** CONTRACT_NEXT_STEPS_AND_RECOMMENDATIONS_COMPLETE.md § Part 2.
---
## W1 — Operator / security / cron
### W1-1: SSH key-based auth; disable password
**Blocker:** Proxmox/SSH access; break-glass method in place.
**Steps:**
1. Deploy SSH public key(s): `ssh-copy-id root@<host>`.
2. Test: `ssh root@<host>` (no password).
3. Dry-run: `bash scripts/security/setup-ssh-key-auth.sh --dry-run`.
4. Apply: `bash scripts/security/setup-ssh-key-auth.sh --apply`.
**Ref:** REMAINING_WORK_DETAILED_STEPS.md § W1-1, OPERATIONAL_RUNBOOKS § Access Control.
---
### W1-2: Firewall — restrict Proxmox API 8006
**Blocker:** Proxmox host or SSH from admin network.
**Steps:**
1. Decide allowed CIDR(s) for Proxmox API.
2. Dry-run: `bash scripts/security/firewall-proxmox-8006.sh --dry-run [CIDR]`.
3. Apply: `bash scripts/security/firewall-proxmox-8006.sh --apply [CIDR]`.
4. Verify: https://<proxmox>:8006 only from allowed IP.
**Ref:** REMAINING_WORK_DETAILED_STEPS.md § W1-2.
---
### W1-8: NPMplus backup run + cron
**Steps (one-time run):**
1. With `NPM_PASSWORD` set: `bash scripts/verify/backup-npmplus.sh`.
2. Full automated backup: `bash scripts/backup/automated-backup.sh [--with-npmplus]`.
**Cron:** See **Cron-1** and **Cron-2** below.
**Ref:** REMAINING_WORK_DETAILED_STEPS.md § W1-8, Crontab installs.
---
### W1-19: Secure validator key permissions
**Blocker:** Run on Proxmox host (or SSH from LAN).
**Steps:**
1. SSH to each host that runs validators (e.g. VMIDs 10001004).
2. Dry-run: `bash scripts/secure-validator-keys.sh --dry-run`.
3. Apply: `bash scripts/secure-validator-keys.sh`.
4. Confirm Besu still starts: `pct exec <vmid> -- systemctl status besu`.
**Ref:** REMAINING_WORK_DETAILED_STEPS.md § W1-19.
---
## Cron installs (on target host)
### Cron-1: NPMplus backup cron
**Steps:**
1. On host: `cd /path/to/proxmox`.
2. Show: `bash scripts/maintenance/schedule-npmplus-backup-cron.sh --show`.
3. Install: `bash scripts/maintenance/schedule-npmplus-backup-cron.sh --install`.
4. Default: daily 03:00; log: `logs/npmplus-backup.log`.
---
### Cron-2: Daily/weekly checks cron
**Steps:**
1. On host: `cd /path/to/proxmox`.
2. Show: `bash scripts/maintenance/schedule-daily-weekly-cron.sh --show`.
3. Install: `bash scripts/maintenance/schedule-daily-weekly-cron.sh --install`.
4. Defaults: daily 08:00 (explorer sync, RPC 2201); weekly Sunday 09:00 (Config API).
**Ref:** REMAINING_WORK_DETAILED_STEPS.md § Crontab installs.
---
## W2 — Infra / deploy
### W2-1: Deploy monitoring stack
**Steps:**
1. Use configs: `smom-dbis-138/monitoring/`, `scripts/monitoring/`.
2. Run or adapt: `scripts/deployment/phase2-observability.sh` (or manual per runbook).
3. Ensure Prometheus scrapes Besu 9545; add targets from `export-prometheus-targets.sh` if used.
**Ref:** OPERATIONAL_RUNBOOKS § Phase 2, REMAINING_WORK_DETAILED_STEPS.md § W2-1.
---
### W2-2: Grafana via Cloudflare Access; alerts
**Steps:**
1. After W2-1, publish Grafana via Cloudflare Access (or chosen ingress).
2. Configure Alertmanager routes in `alertmanager/alertmanager.yml`.
3. Test alert routing.
**Ref:** REMAINING_WORK_DETAILED_STEPS.md § W2-2.
---
### W2-3: VLAN enablement (UDM Pro + Proxmox)
**Steps:**
1. Configure sovereign VLANs on UDM Pro (e.g. 200203).
2. Enable VLAN-aware bridge on Proxmox; attach VMs/containers to VLANs.
3. Migrate services per [NETWORK_ARCHITECTURE](../02-architecture/NETWORK_ARCHITECTURE.md) §35 and UDM_PRO_VLAN_* docs.
4. Verify connectivity and firewall.
**Ref:** REMAINING_WORK_DETAILED_STEPS.md § W2-3.
---
### W2-4: Phase 3 CCIP — Ops/Admin; NAT pools
**Steps:**
1. Run: `bash scripts/ccip/ccip-deploy-checklist.sh` (validates env, prints order).
2. Deploy CCIP Ops/Admin (VMIDs 5400, 5401) per [CCIP_DEPLOYMENT_SPEC](../07-ccip/CCIP_DEPLOYMENT_SPEC.md).
3. Configure NAT pools on ER605 (Blocks #24 for commit/execute/RMN).
4. Expand commit/execute/RMN scripts for full fleet (for Wave 3).
**Ref:** REMAINING_WORK_DETAILED_STEPS.md § W2-4.
---
### W2-5: Phase 4 — Sovereign tenant VLANs
**Steps:**
1. Show steps: `bash scripts/deployment/phase4-sovereign-tenants.sh --show-steps`.
2. Dry-run: `bash scripts/deployment/phase4-sovereign-tenants.sh --dry-run`.
3. Execute manual steps: OPERATIONAL_RUNBOOKS § Phase 4; UDM_PRO_FIREWALL_MANUAL_CONFIGURATION.
4. (1) UDM Pro VLANs 200203, (2) Proxmox VLAN-aware bridge, (3) migrate tenant containers, (4) access control, (5) Block #6 egress NAT and verify.
**Ref:** REMAINING_WORK_DETAILED_STEPS.md § W2-5.
---
### W2-7: DBIS / Hyperledger services
**Steps:**
1. Follow deployment runbooks for DBIS VMIDs (1010010151).
2. Start/configure Hyperledger (Firefly etc.) per [MISSING_CONTAINERS_LIST](../03-deployment/MISSING_CONTAINERS_LIST.md).
3. Parallelize by host where possible.
**Ref:** REMAINING_WORK_DETAILED_STEPS.md § W2-7.
---
## W3 — After W2
### W3-1: CCIP Fleet (16 commit, 16 execute, 7 RMN)
**Depends on:** W2-4.
**Steps:**
1. Deploy 16 commit nodes: VMIDs 54105425.
2. Deploy 16 execute nodes: VMIDs 54405455.
3. Deploy 7 RMN nodes: VMIDs 54705476.
4. Use scripts/runbooks from W2-4; spec: [CCIP_DEPLOYMENT_SPEC](../07-ccip/CCIP_DEPLOYMENT_SPEC.md).
**Ref:** REMAINING_WORK_DETAILED_STEPS.md § W3-1.
---
### W3-2: Phase 4 tenant isolation enforcement
**Depends on:** W2-3 / W2-5.
**Steps:**
1. Apply firewall rules and ACLs for east-west denial between tenants.
2. Verify tenant isolation and egress NAT (Block #6).
3. Document exceptions and review periodically.
**Ref:** REMAINING_WORK_DETAILED_STEPS.md § W3-2.
---
## API keys
**Steps:**
1. Open [reports/API_KEYS_REQUIRED.md](../../reports/API_KEYS_REQUIRED.md).
2. Obtain each key (sign-up URLs in report); set in root and subproject `.env`.
3. Restart services that use those vars.
**Ref:** REMAINING_WORK_DETAILED_STEPS.md § API Keys & Secrets.
---
## Paymaster (optional)
**Blocker:** smom-dbis-138 contract sources; Chain 138 RPC.
**Steps:**
1. From `smom-dbis-138/`: `forge script script/smart-accounts/DeployPaymaster.s.sol --rpc-url $RPC_URL_138 --broadcast`.
2. See [SMART_ACCOUNTS_DEPLOYMENT_NOTE](../../smom-dbis-138/metamask-integration/docs/SMART_ACCOUNTS_DEPLOYMENT_NOTE.md).
**Ref:** TODO_TASK_LIST_MASTER §2.
---
## Ongoing (no wave)
| ID | Task | Frequency | Steps |
|----|------|-----------|--------|
| O-1 | Monitor explorer sync | Daily | Cron or `bash scripts/maintenance/daily-weekly-checks.sh daily` |
| O-2 | Monitor RPC 2201 | Daily | Same script |
| O-3 | Config API uptime | Weekly | `daily-weekly-checks.sh weekly` |
| O-4 | Review explorer logs | Weekly | e.g. `ssh root@<host> journalctl -u blockscout -n 200` |
| O-5 | Update token list | As needed | Update token-list.json / explorer config |
**Ref:** REMAINING_WORK_DETAILED_STEPS.md § Ongoing.
---
## Validation commands (re-run anytime)
| Check | Command |
|-------|---------|
| All validation | `bash scripts/verify/run-all-validation.sh [--skip-genesis]` |
| Full verification | `bash scripts/verify/run-full-verification.sh` |
| E2E routing | `bash scripts/verify/verify-end-to-end-routing.sh` |
| Config files | `bash scripts/validation/validate-config-files.sh` |
| Genesis | `bash smom-dbis-138/scripts/validation/validate-genesis.sh` |
| Wave 0 dry-run | `bash scripts/run-wave0-from-lan.sh --dry-run` |
---
## Deferred / backlog (no steps here)
- **W1-3, W1-4:** smom security audits (VLT-024, ISO-024); bridge integrations (BRG-VLT, BRG-ISO) — smom backlog.
- **W1-14:** dbis_core ~1186 TypeScript errors — fix by module; `npx prisma generate`; explicit types.
- **W1-15W1-17:** smom placeholders (canonical env-only, AlltraAdapter fee, smart accounts, quote Fabric 999, .bak deprecation) — see PLACEHOLDERS_AND_*.
- **Improvements 1139:** [ALL_IMPROVEMENTS_AND_GAPS_INDEX.md](ALL_IMPROVEMENTS_AND_GAPS_INDEX.md) by cohort.
---
## Related documents
- [NEXT_STEPS_MASTER.md](NEXT_STEPS_MASTER.md) — Master list and phases
- [REMAINING_WORK_DETAILED_STEPS.md](REMAINING_WORK_DETAILED_STEPS.md) — Wave 03 and “can do now”
- [CONTRACT_NEXT_STEPS_AND_RECOMMENDATIONS_COMPLETE.md](../11-references/CONTRACT_NEXT_STEPS_AND_RECOMMENDATIONS_COMPLETE.md) — Contract operator actions
- [CONFIG_READY_CHAINS_COMPLETION_RUNBOOK.md](../07-ccip/CONFIG_READY_CHAINS_COMPLETION_RUNBOOK.md) — Gnosis, Celo, Wemix
- [TODO_TASK_LIST_MASTER.md](TODO_TASK_LIST_MASTER.md) — Full checklist and improvements index
- [OPERATIONAL_RUNBOOKS.md](../03-deployment/OPERATIONAL_RUNBOOKS.md) — Phase 24 runbooks

View File

@@ -0,0 +1,59 @@
# API Keys in Dotenv Files — Status
**Last Updated:** 2026-02-05
**Purpose:** Which required API keys (from [API_KEYS_REQUIRED.md](../../reports/API_KEYS_REQUIRED.md)) are **contained** in at least one `.env` / `.env.example` file vs **not contained**.
**Note:** This report lists variable names and file paths only; it does not report or recommend exposing actual secret values.
---
## Contained (variable present in at least one dotenv file)
| Variable | File(s) where defined or referenced |
|----------|-------------------------------------|
| **LIFI_API_KEY** | `alltra-lifi-settlement/.env`, `.env.example` (root) |
| **JUMPER_API_KEY** | `alltra-lifi-settlement/.env`, `.env.example` (root) |
| **ONEINCH_API_KEY** | `.env.example` (root), `explorer-monorepo/deployment/ENVIRONMENT_TEMPLATE.env` |
| **MOONPAY_API_KEY** | `.env.example` (root), `explorer-monorepo/deployment/ENVIRONMENT_TEMPLATE.env` |
| **RAMP_NETWORK_API_KEY** | `.env.example` (root) |
| **ONRAMPER_API_KEY** | `.env.example` (root) |
| **ETHERSCAN_API_KEY** | `.env.example` (root), `smom-dbis-138/.env`, `smom-dbis-138/.env.example`, `smom-dbis-138/terraform/phases/phase1/.env.mainnet`, `smom-dbis-138/frontend-dapp/.env.example` (as VITE_ETHERSCAN_API_KEY), token-aggregation (via smom), backups, explorer-monorepo |
| **COINGECKO_API_KEY** | `.env`, `.env.example` (root), `smom-dbis-138/services/token-aggregation/.env`, `smom-dbis-138/services/token-aggregation/.env.example` |
| **COINMARKETCAP_API_KEY** | `smom-dbis-138/services/token-aggregation/.env`, `smom-dbis-138/services/token-aggregation/.env.example` |
| **CLOUDFLARE_API_TOKEN** | `.env.example` (root), `scripts/update-all-dns-to-public-ip.env.example`, `explorer-monorepo/deployment/ENVIRONMENT_TEMPLATE.env` |
| **CLOUDFLARE_EMAIL** | `.env`, `.env.example` (root), `scripts/update-all-dns-to-public-ip.env.example` |
| **CLOUDFLARE_API_KEY** | `.env`, `.env.example` (root), `scripts/update-all-dns-to-public-ip.env.example` |
| **ALERT_SLACK_WEBHOOK_URL** | `smom-dbis-138/.env.alerts` (same use-case as SLACK_WEBHOOK_URL) |
| **SLACK_WEBHOOK** | `config/production/.env.production.example`, `backups/.../config/production/.env.production.example` |
| **PAGERDUTY_KEY** / **PAGERDUTY_ENABLED** | `config/production/.env.production.example`, `backups/.../config/production/.env.production.example` (similar to PAGERDUTY_INTEGRATION_KEY) |
---
## Now contained (added to .env.example 2026-02-05)
| Variable | File(s) |
|----------|---------|
| **MOONPAY_SECRET_KEY** | `.env.example` (root) |
| **E_SIGNATURE_BASE_URL** | `.env.example` (root), `the-order/services/legal-documents/.env.example` |
| **E_FILING_ENABLED** | `the-order/services/legal-documents/.env.example` |
| **SLACK_WEBHOOK_URL** | `.env.example` (root), `dbis_core/.env.example` |
| **PAGERDUTY_INTEGRATION_KEY** | `.env.example` (root), `dbis_core/.env.example` |
| **EMAIL_ALERT_API_URL** | `.env.example` (root), `dbis_core/.env.example` |
| **EMAIL_ALERT_RECIPIENTS** | `.env.example` (root), `dbis_core/.env.example` |
| **CRYPTO_COM_API_KEY** | `.env.example` (root), `dbis_core/.env.example` |
| **CRYPTO_COM_API_SECRET** | `.env.example` (root), `dbis_core/.env.example` |
## Not contained (no dotenv placeholder yet)
| Variable | Where needed |
|----------|--------------|
| **LayerZero** (config/API) | Bridge integrations |
| **Wormhole** (API key) | Bridge integrations |
---
## Summary
- **Contained:** All keys from API_KEYS_REQUIRED except LayerZero and Wormhole now have at least one .env.example placeholder (root and/or service-specific). Obtaining actual key values remains an operator task.
- **Not contained:** LayerZero, Wormhole (add LAYERZERO_* / WORMHOLE_* to .env.example when integrating).
**Recommendation:** Add the “not contained” variables to the appropriate `.env.example` (e.g. dbis_core, the-order, metamask-integration) with empty or placeholder values so operators know to set them. Do not commit real secrets in .env files.

View File

@@ -0,0 +1,41 @@
# Documentation Archive Candidates
**Last Updated:** 2026-02-08
**Purpose:** List of docs/folders that may be archived to reduce clutter. Review before moving.
**Use:** Run in full parallel with other Wave 1 doc tasks. See [FULL_PARALLEL_EXECUTION_ORDER.md](FULL_PARALLEL_EXECUTION_ORDER.md).
---
## By folder (consolidation)
| Folder / pattern | Action | Notes |
|------------------|--------|-------|
| `docs/archive/` | Keep | Already archive; add new completed/status here |
| `docs/00-meta/*_COMPLETE*.md`, `*_FINAL*.md`, `*_STATUS*.md` | Review | Many one-off status reports; consider moving to `docs/archive/root-status-reports/` or `docs/archive/completion/` |
| `docs/04-configuration/verification-evidence/` | Keep | Timestamped runs; **pruned 2026-02-08:** runs before 2026-02-06 → `archive/verification-evidence-old/` (72 folders). Keep last 23 run dates per type. |
| `reports/` | Keep | Reports and status; archive old dated reports to `reports/archive/` |
| `smom-dbis-138/docs/archive/` | Keep | Subproject archive |
| Duplicate runbooks (same topic in 03-deployment and 09-troubleshooting) | Done | 09-troubleshooting/README links to OPERATIONAL_RUNBOOKS (03-deployment) as single source for procedures |
---
## Deprecated / superseded (archived 2026-02-08)
| Document | Superseded by | Location |
|----------|----------------|----------|
| `docs/05-network/CLOUDFLARE_TUNNEL_ROUTING_ARCHITECTURE.md` | CLOUDFLARE_ROUTING_MASTER (Fastly/direct) | Stub in 05-network; full copy in `archive/05-network-superseded/` |
| `docs/05-network/CENTRAL_NGINX_ROUTING_SETUP.md` | NPMplus; RPC_ENDPOINTS_MASTER | Stub in 05-network; full copy in `archive/05-network-superseded/` |
---
## Next steps
1. Move agreed candidates to `docs/archive/` with a single PR or script.
2. Add `Last reviewed` date to this file when consolidation run completes.
---
**Last consolidation run:** 2026-02-05. Moved 32 files from `docs/00-meta/` to `docs/archive/00-meta-status/`. See `docs/archive/00-meta-status/` for the list.
**2026-02-08 prune/archive:** Superseded 05-network docs → `archive/05-network-superseded/` (stubs in 05-network). **Batch 1:** 10 redundant 00-meta docs → `archive/00-meta-pruned/`. **Batch 2:** 17 planning/script/audit docs (DEPLOYMENT_MASTER_DOC_PLAN, script reduction/audit set, migration/framework set, BREAKING_CHANGES, TODOS_COMPLETION_SUMMARY, etc.) → `archive/00-meta-pruned/`. See `archive/00-meta-pruned/README.md` and `archive/05-network-superseded/README.md`.

View File

@@ -0,0 +1,259 @@
# Comprehensive Documentation Review
**Last Updated:** 2026-01-31
**Document Version:** 1.0
**Status:** Active Documentation
---
**Review Date:** 2026-01-31
**Methodology:** Detailed and comprehensive review of Master Documents, Documents (0112), Meta, Reports, and root-level status/summary files
**Scope:** docs/, reports/, root-level .md, MASTER_INDEX, README, cross-references, and referenced file existence
**Version:** 1.0
---
## 1. Review Methodology
### 1.1 Objectives
- **Master Documents:** Verify MASTER_INDEX.md, docs/README.md, and meta docs for accuracy, current topology, and internal consistency.
- **Structured Documents:** Review 01-getting-started through 12-quick-reference for presence of key docs, alignment with MASTER_INDEX, and readability.
- **Meta & Reports:** Review docs/00-meta/, docs/REMAINING_TASKS.md, docs/REQUIRED_FIXES_UPDATES_GAPS.md, reports/, and root-level status/summary files.
- **Cross-References:** Verify that links in MASTER_INDEX and key docs point to existing files and use correct paths.
- **Gaps & Inconsistencies:** Identify broken links, wrong paths, outdated directory trees, duplicate or conflicting information, and missing documents.
### 1.2 Scope
| Area | Location | What Was Reviewed |
|------|----------|-------------------|
| Master index | docs/MASTER_INDEX.md | Full read; directory tree vs actual structure; all linked paths |
| Docs overview | docs/README.md | Full read; "See" links per category; directory tree |
| Meta | docs/00-meta/*.md | List and sample (DOCUMENTATION_*, COMPREHENSIVE_*) |
| Getting started | docs/01-getting-started/ | README_START_HERE, PREREQUISITES, README |
| Architecture | docs/02-architecture/ | NETWORK_ARCHITECTURE, ORCHESTRATION_DEPLOYMENT_GUIDE, VMID_ALLOCATION_FINAL; dir listing |
| Deployment | docs/03-deployment/ | OPERATIONAL_RUNBOOKS, DEPLOYMENT_*; references |
| Configuration | docs/04-configuration/ | README, DNS_NPMPLUS*, FINALIZE_TOKEN vs finalize-token; dir sample |
| Network | docs/05-network/ | References to NETWORK_CONFIGURATION_MASTER |
| Besu | docs/06-besu/ | Referenced runbooks and quick start |
| CCIP | docs/07-ccip/ | CCIP_DEPLOYMENT_SPEC |
| Monitoring | docs/08-monitoring/ | Referenced in MASTER_INDEX |
| Troubleshooting | docs/09-troubleshooting/ | TROUBLESHOOTING_FAQ |
| Best practices | docs/10-best-practices/ | Referenced in MASTER_INDEX |
| References | docs/11-references/ | NETWORK_CONFIGURATION_MASTER, TOKEN_LIST_*, DBIS_CORE_API; dir listing |
| Quick reference | docs/12-quick-reference/ | QUICK_REFERENCE, VALIDATED_SET_QUICK_REFERENCE |
| Task/gap docs | docs/ | REMAINING_TASKS.md, REQUIRED_FIXES_UPDATES_GAPS.md, SEARCH_GUIDE.md |
| Reports | reports/ | BROKEN_REFERENCES_REPORT, DOCS_DIRECTORY_REVIEW; structure and counts |
| Root | project root | README.md, PROJECT_STRUCTURE.md, INTEGRATIONS_QUICK_REFERENCE.md; status/summary .md files |
### 1.3 Verification Performed
- **File existence:** All MASTER_INDEX and docs/README links checked for target files (e.g. NETWORK_CONFIGURATION_MASTER.md, DNS_NPMPLUS_VM_STREAMLINED_TABLE.md, FINALIZE_TOKEN.md / finalize-token.md).
- **Path consistency:** Token finalization: MASTER_INDEX table link vs directory tree vs actual filename.
- **Referenced assets:** SEARCH_GUIDE → SEARCH_INDEX.md; REMAINING_TASKS → ALL_TASKS_COMPLETE.md; docs/README → INTEGRATIONS_QUICK_REFERENCE.md.
- **Directory tree vs reality:** MASTER_INDEX tree (meta docs at root vs 00-meta/; 02-architecture/ and 04-configuration/ breadth).
- **Existing reports:** reports/BROKEN_REFERENCES_REPORT.md, reports/DOCS_DIRECTORY_REVIEW.md sampled for scope and findings.
---
## 2. Executive Summary
### 2.1 Overall Assessment
- **Strengths:** MASTER_INDEX is the single best entry point; network topology (UDM Pro, Proxmox .10.12, NPMplus .166/.167, 76.53.10.36→.167) is clearly stated and backed by 11-references/NETWORK_CONFIGURATION_MASTER.md. Numbered directories 0112 are logical. Key runbooks (OPERATIONAL_RUNBOOKS, TROUBLESHOOTING_FAQ), architecture (NETWORK_ARCHITECTURE, ORCHESTRATION_DEPLOYMENT_GUIDE), and references (NETWORK_CONFIGURATION_MASTER, TOKEN_LIST_AUTHORING_GUIDE, DBIS_CORE_API_REFERENCE) are present and useful. docs/00-meta/ holds many documentation review and status docs in one place. reports/ provides historical and diagnostic value (e.g. BROKEN_REFERENCES_REPORT, DOCS_DIRECTORY_REVIEW).
- **Critical issues:** One broken link in MASTER_INDEX (finalize-token.md vs actual FINALIZE_TOKEN.md). docs/README.md has multiple wrong "See" links (all category README links point to 01-getting-started/README.md). SEARCH_GUIDE references non-existent SEARCH_INDEX.md. MASTER_INDEX directory tree is outdated (meta docs shown at docs root; 00-meta/ not shown; 02-architecture/ and 04-configuration/ are underrepresented).
- **Moderate issues:** PROJECT_STRUCTURE.md shows flat docs paths (e.g. docs/MCP_SETUP.md) that dont match actual layout (e.g. 04-configuration/MCP_SETUP.md). reports/BROKEN_REFERENCES_REPORT lists 887 broken references (many in submodules); docs-internal links need targeted fixes. docs/README.md directory tree omits 00-meta/, archive breadth, and many 04-configuration/ and 02-architecture/ files.
- **Minor:** docs/README.md "Last Updated" and "Recent Updates" lag MASTER_INDEX (e.g. 2025-01-20 vs 2026-01-31). Some MASTER_INDEX "Related" links point to 04-configuration/CLOUDFLARE_ZERO_TRUST_GUIDE.md but file lives under 04-configuration/cloudflare/ (to be confirmed).
---
## 3. Master Documents Review
### 3.1 docs/MASTER_INDEX.md
| Aspect | Status | Notes |
|--------|--------|-------|
| **Topology** | ✅ Current | UDM Pro 76.53.10.34, Proxmox .10.12, NPMplus .166/.167, 76.53.10.36→.167 |
| **Version/date** | ✅ | 2026-01-31, v5.3 |
| **Directory structure (tree)** | ⚠️ Outdated | Shows DOCUMENTATION_*.md at docs root; actual location is docs/00-meta/. Does not list 00-meta/. 02-architecture/ and 04-configuration/ lists are partial (e.g. 02 has 16 files, tree shows 7; 04 has many more than listed). |
| **Link: FINALIZE_TOKEN** | ❌ Broken | Table links to `04-configuration/finalize-token.md`; actual file is `04-configuration/FINALIZE_TOKEN.md`. Directory tree correctly shows FINALIZE_TOKEN.md. |
| **Link: NETWORK_CONFIGURATION_MASTER** | ✅ | 11-references/NETWORK_CONFIGURATION_MASTER.md exists and is current (2026-01-31). |
| **Link: DNS_NPMPLUS_VM_STREAMLINED_TABLE** | ✅ | 04-configuration/DNS_NPMPLUS_VM_STREAMLINED_TABLE.md exists. |
| **Exchange / DBIS / Ramps / DeFi** | ✅ | DBIS_CORE_API_REFERENCE, Ramp API, DefiRouterService described and linked. |
| **Quick Start / workflows** | ✅ | Tables and cross-reference map are coherent. |
**Recommendation:** Fix the token finalization link to `04-configuration/FINALIZE_TOKEN.md`. Update the directory tree to include `00-meta/` and move meta doc names under it; optionally expand 02-architecture/ and 04-configuration/ or add “(selected)” to the tree.
### 3.2 docs/README.md
| Aspect | Status | Notes |
|--------|--------|-------|
| **Purpose** | ✅ | Clear overview and pointer to MASTER_INDEX. |
| **Directory structure (tree)** | ⚠️ Incomplete | Omits 00-meta/; 04-configuration shows finalize-token.md (actual: FINALIZE_TOKEN.md in 04-configuration). |
| **"See" links per category** | ❌ Broken | Every category "See" link (0210) points to `01-getting-started/README.md` instead of the respective category README (e.g. 02-architecture/README.md, 03-deployment/README.md, …). |
| **Related documentation links** | ❌ Broken | "Main project README" and submodule READMEs link to `01-getting-started/README.md` instead of `../README.md`, `../mcp-proxmox/README.md`, etc. |
| **INTEGRATIONS_QUICK_REFERENCE** | ✅ | Links to `../INTEGRATIONS_QUICK_REFERENCE.md`; file exists at repo root. |
| **Last updated / Recent updates** | ⚠️ Stale | "Last Updated: 2025-01-20"; "Recent Updates" stop at 2025-01-20. MASTER_INDEX has 2026-01-31. |
**Recommendation:** Fix all "See" links so each category links to its own README (e.g. 02-architecture/README.md). Fix Related documentation to use ../README.md, ../mcp-proxmox/README.md, ../ProxmoxVE/README.md, ../smom-dbis-138-proxmox/README.md. Update directory tree (00-meta/, FINALIZE_TOKEN.md). Refresh "Last Updated" and "Recent Updates" to align with MASTER_INDEX.
### 3.3 docs/00-meta/ (Meta Documents)
| Document | Purpose | Status |
|----------|---------|--------|
| DOCUMENTATION_STYLE_GUIDE.md | Naming, headers, TOC, code blocks | ✅ Useful; 2025-01-20 |
| DOCUMENTATION_QUALITY_REVIEW.md | Duplicates, gaps, inconsistencies | ✅ Aligns with DOCUMENTATION_FIXES_COMPLETE |
| DOCUMENTATION_FIXES_COMPLETE.md | Implemented fixes | ✅ References quality review |
| DOCUMENTATION_REVIEW.md | Structure, root files | ✅ Notes 344 standalone files (many since moved to 00-meta or elsewhere) |
| DOCUMENTATION_ENHANCEMENTS_RECOMMENDATIONS.md | Enhancements | Referenced in MASTER_INDEX |
| DOCUMENTATION_UPGRADE_SUMMARY.md | Upgrade summary | In 00-meta |
| DOCUMENTATION_REORGANIZATION_COMPLETE.md | Reorganization | Notes finalize-token → FINALIZE_TOKEN.md |
| DOCUMENTATION_RELATIONSHIP_MAP.md | Relationship map | In 00-meta |
**Finding:** MASTER_INDEX directory tree still shows DOCUMENTATION_*.md at docs root; they live in docs/00-meta/. MASTER_INDEX "Related Documentation" section links to DOCUMENTATION_STYLE_GUIDE.md etc. without the 00-meta/ prefix—those links are broken unless the path is docs/00-meta/DOCUMENTATION_*.md.
**Recommendation:** In MASTER_INDEX, point all documentation meta links to `00-meta/DOCUMENTATION_*.md` (or equivalent). Ensure docs/README does not imply meta docs live at root.
---
## 4. Documents by Category (0112)
### 4.1 01-getting-started
- **README_START_HERE.md:** ✅ Clear quick start, MCP, Proxmox host 192.168.11.10.
- **PREREQUISITES.md:** Referenced; not fully read.
- **README.md:** Present. Count ~11 .md files in dir.
### 4.2 02-architecture
- **NETWORK_ARCHITECTURE.md:** ✅ v2.0; principles; hardware roles; ER605-A/B, ML110, R630; public block; UDM Pro at 76.53.10.34. Some overlap with ORCHESTRATION_DEPLOYMENT_GUIDE (noted in DOCUMENTATION_QUALITY_REVIEW).
- **ORCHESTRATION_DEPLOYMENT_GUIDE.md:** Referenced as enterprise deployment.
- **VMID_ALLOCATION_FINAL.md:** Referenced (11k VMIDs).
- **Directory:** 16 .md files (e.g. DOMAIN_STRUCTURE, PHYSICAL_HARDWARE_INVENTORY, HOSTNAME_MIGRATION_GUIDE). MASTER_INDEX tree shows a subset only.
### 4.3 03-deployment
- **OPERATIONAL_RUNBOOKS.md:** ✅ Master index for runbooks; links to 04-configuration/ER605_ROUTER_CONFIGURATION.md (path correct); CLOUDFLARE_ZERO_TRUST_GUIDE.md (may be under cloudflare/—verify).
- **VALIDATED_SET_DEPLOYMENT_GUIDE.md, DEPLOYMENT_STATUS_CONSOLIDATED.md, DEPLOYMENT_READINESS.md, RUN_DEPLOYMENT.md, REMOTE_DEPLOYMENT.md:** Referenced in MASTER_INDEX.
- **DISASTER_RECOVERY.md, BACKUP_AND_RESTORE.md, CHANGE_MANAGEMENT.md:** In MASTER_INDEX tree.
### 4.4 04-configuration
- **FINALIZE_TOKEN.md:** ✅ Exists. MASTER_INDEX table link incorrectly uses `finalize-token.md`.
- **DNS_NPMPLUS_VM_STREAMLINED_TABLE.md:** ✅ Exists.
- **README.md:** Correctly links to FINALIZE_TOKEN.md; references NETWORK_CONFIGURATION_MASTER.
- **MCP_SETUP.md, ER605_ROUTER_CONFIGURATION.md, OMADA_*, SECRETS_KEYS_CONFIGURATION.md, ENV_STANDARDIZATION.md, CREDENTIALS_CONFIGURED.md, SSH_SETUP.md:** Referenced. Dir has 80+ .md files and subdirs (cloudflare/, metamask/, coingecko/). MASTER_INDEX tree is a subset.
### 4.5 05-network
- **NETWORK_STATUS.md, NGINX_ARCHITECTURE_RPC.md, CLOUDFLARE_NGINX_INTEGRATION.md, RPC_NODE_TYPES_ARCHITECTURE.md, RPC_TEMPLATE_TYPES.md:** In MASTER_INDEX. CLOUDFLARE_ROUTING_MASTER.md and CENTRAL_NGINX_ROUTING_SETUP.md reference 11-references/NETWORK_CONFIGURATION_MASTER.md (correct).
### 4.6 06-besu through 08-monitoring
- **06-besu:** BESU_ALLOWLIST_RUNBOOK, BESU_ALLOWLIST_QUICK_START, BESU_NODES_FILE_REFERENCE, VALIDATOR_KEY_DETAILS, etc. Present per MASTER_INDEX.
- **07-ccip:** CCIP_DEPLOYMENT_SPEC.md.
- **08-monitoring:** MONITORING_SUMMARY.md, BLOCK_PRODUCTION_MONITORING.md.
### 4.7 09-troubleshooting, 10-best-practices, 11-references, 12-quick-reference
- **09-troubleshooting:** TROUBLESHOOTING_FAQ.md ✅; QBFT_TROUBLESHOOTING.md; SECURITY_INCIDENT_RESPONSE.md. Additional files (e.g. RPC_2500_QUICK_FIX.md, TROUBLESHOOTING_GUIDE.md) present.
- **10-best-practices:** RECOMMENDATIONS_AND_SUGGESTIONS, IMPLEMENTATION_CHECKLIST, BEST_PRACTICES_SUMMARY, QUICK_WINS; PERFORMANCE_TUNING referenced in MASTER_INDEX.
- **11-references:** NETWORK_CONFIGURATION_MASTER.md ✅ (2026-01-31); TOKEN_LIST_AUTHORING_GUIDE, CHAIN138_TOKEN_ADDRESSES, DBIS_CORE_API_REFERENCE, API_DOCUMENTATION, PATHS_REFERENCE, SCRIPT_REVIEW, TEMPLATE_BASE_WORKFLOW, APT_PACKAGES_CHECKLIST. README and 25+ other refs present.
- **12-quick-reference:** QUICK_REFERENCE.md, VALIDATED_SET_QUICK_REFERENCE.md, QUICK_START_TEMPLATE.md, TROUBLESHOOTING_QUICK_REFERENCE.md.
---
## 5. Task, Gap, and Search Documents
### 5.1 docs/REMAINING_TASKS.md
- **Status:** ✅ All tasks complete; points to ALL_TASKS_COMPLETE.md.
- **Link:** [ALL_TASKS_COMPLETE.md](../ALL_TASKS_COMPLETE.md) — in docs/; exists ✅. Optional/enhancement tasks and doc links (e.g. 04-configuration/metamask/) are present.
### 5.2 docs/REQUIRED_FIXES_UPDATES_GAPS.md
- **Content:** Build/contract/canonical-list/placeholder/docs/test gaps; many items marked Done. Last updated note and table are useful. ✅
### 5.3 docs/SEARCH_GUIDE.md
- **Issue:** SEARCH_GUIDE previously referenced SEARCH_INDEX.md (no longer used). Use [MASTER_INDEX.md](../MASTER_INDEX.md), grep, or IDE search instead. ❌→✅
- **Recommendation:** Either add a generated SEARCH_INDEX.md (and ensure the script exists and is run) or remove/update the reference and document alternative search methods (grep, IDE, MASTER_INDEX).
---
## 6. Reports and Root-Level Files
### 6.1 reports/
- **BROKEN_REFERENCES_REPORT.md:** 887 broken references, 275 files. Many in ProxmoxVE/, PROJECT_STRUCTURE.md, and other submodules. Useful for targeted link fixes in docs-internal and root docs.
- **DOCS_DIRECTORY_REVIEW.md:** 2026-01-06; assesses docs/ structure; notes 28 root files to organize; meta docs suggested to 00-meta (now done). ✅
- **Other:** analyses/, archive/, status/, storage/, inventory/; many r630-02, VMID, migration, and completion reports. Valuable for history and diagnostics; not all need to be in MASTER_INDEX.
### 6.2 Root-level
- **README.md:** Project overview, setup, scripts; no broken internal doc links in sampled section.
- **PROJECT_STRUCTURE.md:** Shows docs with flat paths (e.g. docs/MCP_SETUP.md, docs/ENV_STANDARDIZATION.md). Actual paths are docs/04-configuration/MCP_SETUP.md and docs/04-configuration/ENV_STANDARDIZATION.md. BROKEN_REFERENCES_REPORT confirms these as broken. ❌
- **INTEGRATIONS_QUICK_REFERENCE.md:** Exists at root; linked from docs/README. ✅
- **Status/summary .md files:** Multiple (e.g. EXECUTIVE_SUMMARY_ALL_TASKS_COMPLETE.md, NEXT_STEPS_COMPLETE_SUMMARY.md, FINAL_DEPLOYMENT_REPORT_20260123.md). Not all referenced from MASTER_INDEX; acceptable for project root.
---
## 7. Cross-Reference and Link Summary
| Source | Target | Expected Path | Exists? | Action |
|--------|--------|----------------|---------|--------|
| MASTER_INDEX | Token finalization | 04-configuration/FINALIZE_TOKEN.md | ✅ File exists as FINALIZE_TOKEN.md | Fix link from finalize-token.md → FINALIZE_TOKEN.md |
| MASTER_INDEX | Network master | 11-references/NETWORK_CONFIGURATION_MASTER.md | ✅ | None |
| MASTER_INDEX | DNS NPM table | 04-configuration/DNS_NPMPLUS_VM_STREAMLINED_TABLE.md | ✅ | None |
| MASTER_INDEX | Meta docs (tree) | docs root | ❌ Actual: 00-meta/ | Update tree to show 00-meta/ and correct paths |
| docs/README | Category "See" (0210) | 02-architecture/README.md etc. | ❌ All point to 01-getting-started/README.md | Fix each to correct category README |
| docs/README | Related docs | ../README.md, ../mcp-proxmox/README.md, etc. | ❌ Point to 01-getting-started/README.md | Fix to ../README.md and submodule READMEs |
| SEARCH_GUIDE | SEARCH_INDEX.md | docs/SEARCH_INDEX.md | ❌ Missing | Create or remove reference; document alternatives |
| PROJECT_STRUCTURE | MCP_SETUP, ENV_STANDARDIZATION | docs/04-configuration/… | ❌ Flat paths | Update to docs/04-configuration/MCP_SETUP.md etc. |
| REMAINING_TASKS | ALL_TASKS_COMPLETE | docs/ALL_TASKS_COMPLETE.md | ✅ | None |
---
## 8. Recommendations (Prioritized)
### 8.1 High (fix soon)
1. **MASTER_INDEX:** Change token finalization link from `04-configuration/finalize-token.md` to `04-configuration/FINALIZE_TOKEN.md`.
2. **docs/README.md:** Fix all category "See" links (0210) to point to the corresponding category README (e.g. 02-architecture/README.md). Fix "Related Documentation" to use ../README.md and ../&lt;submodule&gt;/README.md.
3. **MASTER_INDEX:** Update "Related Documentation" links for DOCUMENTATION_*.md to `00-meta/DOCUMENTATION_*.md`.
### 8.2 Medium
4. **MASTER_INDEX directory tree:** Add `00-meta/` and list meta docs there; optionally expand or label 02-architecture/ and 04-configuration/ as representative.
5. **docs/README.md:** Update directory tree (00-meta/, FINALIZE_TOKEN.md), "Last Updated," and "Recent Updates" to match MASTER_INDEX (2026-01-31).
6. **SEARCH_GUIDE:** Either add SEARCH_INDEX.md (and script) or remove the reference and document grep/IDE/MASTER_INDEX search.
7. **PROJECT_STRUCTURE.md:** Update docs paths to match current layout (e.g. docs/04-configuration/MCP_SETUP.md, docs/01-getting-started/README_START_HERE.md).
### 8.3 Lower
8. **BROKEN_REFERENCES_REPORT:** Use for targeted fixes of docs-internal and root links; submodule links can be handled separately.
9. **OPERATIONAL_RUNBOOKS:** Confirm CLOUDFLARE_ZERO_TRUST_GUIDE.md path (04-configuration/ vs 04-configuration/cloudflare/).
10. **Periodic review:** Re-run link checks and directory tree vs actual structure quarterly; keep MASTER_INDEX and docs/README in sync.
---
## 9. Document and Report Counts (Summary)
| Area | Approx. count | Notes |
|------|----------------|-------|
| docs/00-meta | 64 .md | Documentation review, status, migration, scripts |
| docs/0112 | 01: 11; 02: 16; 03: 23; 04: 268+ .md; 05: 17; 06: 84152; 07: 5; 08: 6; 09: 620; 10: 10; 11: 26; 12: 5 | 04 and 06 have many files; MASTER_INDEX lists key ones |
| docs/archive | 449 .md | Historical |
| docs other | api, bridge, compliance, risk-management, runbooks, schemas, testnet, scripts | Small sets |
| reports/ | 336 files (310 .md) | status/, storage/, analyses/, archive/, inventory/ |
| Root .md | Many | README, PROJECT_STRUCTURE, status/summary/completion reports |
---
## 10. Conclusion
The documentation set is **strong** at the top: MASTER_INDEX and 11-references/NETWORK_CONFIGURATION_MASTER.md give a clear, current picture of the network and doc structure. Numbered categories 0112 are well chosen and key runbooks and references exist. The main issues are **one broken link** (finalize-token → FINALIZE_TOKEN), **systematic wrong links** in docs/README.md (all category "See" and Related links), **outdated directory trees** (meta at root, no 00-meta), and **missing SEARCH_INDEX.md**. Fixing the high-priority items above will materially improve navigation and consistency. This review can be re-used as a template for future comprehensive documentation reviews.
---
**End of Comprehensive Documentation Review.**

View File

@@ -0,0 +1,401 @@
# Comprehensive Project & Proxmox VE Review
**Last Updated:** 2026-01-31
**Document Version:** 1.0
**Status:** Active Documentation
---
**Review Date:** 2026-01-22
**Reviewer:** AI Assistant
**Project Scope:** Complete project mapping and analysis
**Status:** In Progress
---
## Executive Summary
This document provides a comprehensive review of the entire proxmox project and Proxmox VE configurations, identifying errors, issues, warnings, gaps, duplications, placeholders, and areas for improvement.
### Project Scale
- **Total Files Analyzed:** ~19,181 files
- **Shell Scripts:** 2,563 files
- **Python Scripts:** 849 files
- **Documentation:** 3,777 markdown files
- **Submodules:** 15 active submodules
---
## 1. Critical Issues
### 1.1 Missing Shebang in Shell Scripts
**Issue:** At least one shell script missing shebang line
- `./smom-dbis-138/scripts/configuration/check-bridge-alternative-config.sh` - Missing shebang (has `#!/usr/bin/env bash` on line 2, should be line 1)
**Impact:** Scripts may not execute correctly depending on shell environment
**Recommendation:** Ensure all shell scripts start with proper shebang (`#!/bin/bash` or `#!/usr/bin/env bash`)
### 1.2 TypeScript Type Errors (dbis_core)
**Issue:** ~470-594 TypeScript type errors remaining in `dbis_core/`
- JsonValue type mismatches: ~50-150+
- Missing return statements: ~100+
- Property access errors: ~50+
- Prisma schema issues: Duplicate models, missing definitions
**Critical Prisma Schema Errors:**
- Duplicate `GruReserveAllocation` model (line 8542)
- Missing models: `GruBondStressTest`, `GruOmegaLayerReconciliation`, `GruMetaverseStressTest`
**Impact:** Prevents `prisma generate` from completing, blocking application startup
**Recommendation:** Fix Prisma schema errors first, then systematically address remaining type errors
### 1.3 Placeholder Implementations (the-order)
**Issue:** Multiple placeholder implementations in `the-order/` services
- `e-signature.ts`: Placeholder URLs (`https://sign.example.com/`)
- `court-efiling.ts`: Placeholder implementations
- `document-export.ts`: TODO comments for PDF/DOCX generation
- `document-security.ts`: TODO for PDF watermarking
**Impact:** Services not fully functional
**Recommendation:** Implement actual integrations or mark as "not implemented" with clear documentation
---
## 2. Configuration Issues
### 2.1 Template/Example Files
**Found:** 30+ template/example files requiring configuration
- Multiple `.env.example`, `.env.template` files
- Configuration templates in various subdirectories
- Proxmox configuration examples
**Issues:**
- Some templates may be outdated
- Inconsistent naming conventions (`.example` vs `.template`)
- Missing documentation on which templates are current
**Recommendation:**
- Audit all template files for currency
- Standardize naming convention
- Create template inventory document
### 2.2 Hardcoded IP Addresses
**Issue:** Hardcoded IP addresses found in documentation and scripts
- Multiple references to `192.168.11.*` network
- Some scripts contain hardcoded IPs instead of using variables
**Examples:**
- `192.168.11.10` (Proxmox host)
- `192.168.11.211` (RPC endpoint)
- `192.168.11.140` (Blockscout)
- Various container IPs
**Impact:** Scripts may fail if network configuration changes
**Recommendation:**
- Move all IPs to configuration files
- Use environment variables
- Document IP allocation scheme
### 2.3 Proxmox VE Configuration
**Status:** Multiple Proxmox configuration files found
- `smom-dbis-138-proxmox/config/proxmox.conf.example`
- `smom-dbis-138-proxmox/config/network.conf.example`
- `smom-dbis-138-proxmox/config/inventory.example`
**Gaps:**
- Need to verify all Proxmox configurations are documented
- Check for consistency across deployment scripts
- Validate VMID assignments don't conflict
---
## 3. Documentation Issues
### 3.1 Duplication
**Issue:** Potential documentation duplication
- Multiple deployment guides
- Overlapping configuration documentation
- Similar troubleshooting guides in different locations
**Examples:**
- Multiple "deployment complete" status documents
- Similar Proxmox deployment guides in different submodules
- Overlapping configuration guides
**Recommendation:**
- Consolidate duplicate documentation
- Create master index with clear hierarchy
- Archive outdated versions
### 3.2 Gaps
**Missing Documentation:**
- Comprehensive submodule relationship map
- Complete IP address allocation registry
- VMID assignment master list
- Network topology diagram
- Service dependency graph
**Recommendation:**
- Create master inventory documents
- Document all service relationships
- Create visual network diagrams
### 3.3 Placeholder Documentation
**Issue:** Some documentation contains placeholders
- Example URLs (`example.com`, `dsb.example`)
- Placeholder values in code examples
- Incomplete sections marked with TODOs
**Recommendation:**
- Replace placeholders with actual values or clear "to be configured" markers
- Complete TODO sections or remove if not needed
---
## 4. Script Quality Issues
### 4.1 Error Handling
**Status:** 1,571 scripts use error handling (`set -e`, `set -u`, `set -o`)
**Gap:** ~992 scripts (38%) may lack proper error handling
**Recommendation:**
- Audit scripts without error handling
- Add `set -euo pipefail` to critical scripts
- Implement proper error messages
### 4.2 Script Organization
**Issue:** Scripts scattered across multiple directories
- Root `scripts/` directory
- Submodule-specific script directories
- Deployment scripts in various locations
**Recommendation:**
- Create script inventory
- Document script purposes and dependencies
- Consider script organization improvements
---
## 5. Submodule Issues
### 5.1 Submodule Consistency
**Status:** 15 submodules in `.gitmodules`
**Issues:**
- `explorer-monorepo` uses local path (`./explorer-monorepo`)
- `omada-api` note indicates it may not be a proper submodule
- Need to verify all submodules are up to date
**Recommendation:**
- Review submodule URLs for consistency
- Update `explorer-monorepo` to use remote URL if available
- Verify `omada-api` should be submodule or workspace package
### 5.2 Submodule Documentation
**Gap:** Missing comprehensive submodule relationship documentation
- How submodules relate to each other
- Dependencies between submodules
- Version compatibility matrix
**Recommendation:**
- Create submodule dependency graph
- Document version requirements
- Create submodule update procedures
---
## 6. Proxmox VE Specific Issues
### 6.1 VMID Management
**Issue:** VMID assignments need centralization
- VMIDs scattered across multiple configuration files
- Potential for conflicts
- No master VMID registry
**Recommendation:**
- Create master VMID inventory
- Document VMID allocation scheme
- Implement VMID conflict checking
### 6.2 Network Configuration
**Issue:** Network configuration spread across multiple files
- IP addresses in scripts
- Network configs in various locations
- VLAN configurations need centralization
**Recommendation:**
- Create network configuration master document
- Centralize IP allocation
- Document VLAN structure
### 6.3 Deployment Scripts
**Status:** Multiple deployment automation scripts found
**Issues:**
- Need to verify script consistency
- Check for outdated deployment procedures
- Validate all deployment paths are documented
**Recommendation:**
- Audit all deployment scripts
- Create deployment procedure master document
- Test deployment procedures
---
## 7. Security Issues
### 7.1 Hardcoded Credentials
**Status:** Need to verify no hardcoded credentials in scripts
**Recommendation:**
- Audit all scripts for hardcoded passwords/tokens
- Ensure all credentials use environment variables
- Review `.env.example` files for completeness
### 7.2 Configuration File Security
**Issue:** Template files may expose sensitive information patterns
**Recommendation:**
- Review all template files
- Ensure no actual credentials in examples
- Use placeholder patterns that don't match real credentials
---
## 8. Code Quality Issues
### 8.1 TypeScript Errors (dbis_core)
**Status:** ~470-594 errors remaining
**Priority:** High (blocks deployment)
**Recommendation:** See Section 1.2
### 8.2 Placeholder Code (the-order)
**Status:** Multiple placeholder implementations
**Priority:** Medium (affects functionality)
**Recommendation:** See Section 1.3
### 8.3 Unused Code
**Issue:** Potential unused code in various submodules
**Recommendation:**
- Run code analysis tools
- Identify and remove unused code
- Document why code is kept if intentionally unused
---
## 9. Gaps and Missing Components
### 9.1 Missing Master Documents
- IP Address Registry
- VMID Master Inventory
- Service Dependency Graph
- Network Topology Diagram
- Submodule Relationship Map
- Configuration File Inventory
### 9.2 Missing Automation
- Automated VMID conflict checking
- Automated IP conflict detection
- Configuration validation scripts
- Deployment verification automation
### 9.3 Missing Monitoring
- Service health check automation
- Configuration drift detection
- Submodule update notifications
- Deployment status tracking
---
## 10. Recommendations Priority
### Priority 1 (Critical - Blocks Functionality)
1. ✅ Fix Prisma schema errors in `dbis_core/` (duplicate models, missing definitions)
2. ✅ Fix TypeScript errors preventing `prisma generate`
3. ✅ Add missing shebang to shell scripts
4. ✅ Create master VMID inventory to prevent conflicts
### Priority 2 (High - Affects Operations)
1. ✅ Centralize IP address configuration
2. ✅ Create network configuration master document
3. ✅ Consolidate duplicate documentation
4. ✅ Implement placeholder code or mark as "not implemented"
5. ✅ Audit and standardize template files
### Priority 3 (Medium - Improves Maintainability)
1. ✅ Add error handling to scripts missing it
2. ✅ Create submodule relationship documentation
3. ✅ Create service dependency graph
4. ✅ Implement configuration validation scripts
5. ✅ Create deployment procedure master document
### Priority 4 (Low - Nice to Have)
1. ✅ Create visual network diagrams
2. ✅ Implement automated conflict checking
3. ✅ Create configuration file inventory
4. ✅ Document all script purposes
---
## 11. Next Steps
### Immediate Actions
1. Fix Prisma schema errors (blocks deployment)
2. Create master VMID inventory
3. Centralize IP address configuration
4. Fix shell script shebang issues
### Short-term Actions (1-2 weeks)
1. Consolidate duplicate documentation
2. Create network configuration master document
3. Implement placeholder code or document as "not implemented"
4. Audit template files
### Long-term Actions (1+ months)
1. Complete TypeScript error fixes
2. Create comprehensive documentation index
3. Implement automation for conflict checking
4. Create visual documentation (diagrams)
---
## 12. Metrics and Tracking
### Current State
- **Total Files:** ~19,181
- **Shell Scripts:** 2,563 (1,571 with error handling)
- **TypeScript Errors:** ~470-594 (dbis_core)
- **Template Files:** 30+
- **Submodules:** 15
- **Documentation Files:** 3,777
### Target State
- **TypeScript Errors:** 0 (critical paths)
- **Scripts with Error Handling:** 100%
- **Documentation Coverage:** 100% (all services documented)
- **Configuration Centralization:** 100%
- **No Hardcoded IPs:** All in config files
---
## Appendix A: File Inventory
### Configuration Templates
- 30+ `.example`, `.template` files found
- Locations: `scripts/`, `smom-dbis-138/`, `config/`, `rpc-translator-138/`, etc.
### Script Locations
- Root: `scripts/`
- Submodules: Various `scripts/` directories
- Deployment: `smom-dbis-138-proxmox/scripts/`
### Documentation Locations
- Root: `docs/`
- Submodules: Various `docs/` directories
- Archive: `docs/archive/`
---
**Last Updated:** 2026-01-22
**Next Review:** After Priority 1 items are addressed

View File

@@ -0,0 +1,82 @@
# Continue and Complete — Operator Checklist
**Last Updated:** 2026-02-08
**Completion run:** [NEXT_STEPS_COMPLETION_RUN_20260208.md](../04-configuration/verification-evidence/NEXT_STEPS_COMPLETION_RUN_20260208.md)
**Run all automated next steps:** `bash scripts/run-all-next-steps.sh` → report in `docs/04-configuration/verification-evidence/NEXT_STEPS_RUN_*.md`
**Purpose:** Single run-order checklist for all remaining work after Dev/Codespaces (items 16) are done.
**Full detail:** [NEXT_STEPS_ALL.md](NEXT_STEPS_ALL.md) | [REMAINING_ITEMS_DOTENV_AND_ACTIONS.md](../04-configuration/REMAINING_ITEMS_DOTENV_AND_ACTIONS.md)
---
## Status overview
| Items | Status |
|-------|--------|
| **16** (Fourth NPMplus, SSH keys, Gitea, rsync, push, verification) | **DONE** |
| **7** Bridge (real) | Run from LAN; fix if reverted (LINK, pause, params). See [NEXT_STEPS_COMPLETION_RUN_20260208.md](../04-configuration/verification-evidence/NEXT_STEPS_COMPLETION_RUN_20260208.md) |
| **8** Security (SSH key-only + UFW 8006) | **Applied** 2026-02-08 (hosts may need sudo in PATH / UFW or iptables) |
| **9** 25062508 JWT / identity | Manual: nginx + tokens per container |
| **10** Explorer SSL | Manual: NPMplus UI |
| **11** NPMplus cert 134 | Manual: NPMplus UI |
| **12** Wave 2 & 3 | Per [WAVE2_WAVE3_OPERATOR_CHECKLIST.md](WAVE2_WAVE3_OPERATOR_CHECKLIST.md) |
| **13** Smart contracts (deploy + verify) | Run from **LAN** (RPC 192.168.11.211, Blockscout .140 reachable). Deploy timed out from workspace; verify ran but Blockscout unreachable. |
---
## Run in order when ready
Do these when credentials and network are in place. Secrets: **PRIVATE_KEY** and same-wallet **LINK** live in **smom-dbis-138/.env** (bridge + contract deploy).
| # | What | Command (from repo root unless noted) |
|---|------|----------------------------------------|
| **7** | Bridge real run | `bash scripts/bridge/run-send-cross-chain.sh 0.01` |
| **8** | Security on Proxmox hosts | `bash scripts/security/run-security-on-proxmox-hosts.sh --apply` *(after SSH key login works to .10, .11, .12)* |
| **13a** | Deploy contracts (Chain 138) | `cd smom-dbis-138 && source .env && bash scripts/deployment/deploy-all-contracts.sh` |
| **13b** | WETH bridge (if needed) | `GAS_PRICE=1000000000 ./scripts/deploy-and-configure-weth9-bridge-chain138.sh` then set **CCIPWETH9_BRIDGE_CHAIN138** in smom-dbis-138/.env |
| **13c** | Verify contracts (Blockscout) | `source smom-dbis-138/.env 2>/dev/null && ./scripts/verify/run-contract-verification-with-proxy.sh` |
---
## Manual / UI steps (no single script)
| # | What | Where |
|---|------|--------|
| **9** | 25062508 JWT and identity (2506→Luis, 2507/2508→Putu) | [CHAIN138_JWT_AUTH_REQUIREMENTS.md](../04-configuration/CHAIN138_JWT_AUTH_REQUIREMENTS.md), `scripts/generate-jwt-token-for-container.sh` |
| **10** | Explorer SSL (no cert warning) | NPMplus https://192.168.11.167:81 → SSL → Let's Encrypt explorer.d-bis.org → assign to proxy, Force SSL |
| **11** | NPMplus cert 134 (cross-all.defi-oracle.io) | NPMplus → SSL Certificates → re-request or re-save cert |
| **12** | Wave 2 & 3 (monitoring, Grafana, VLANs, CCIP Ops/Admin, DBIS, etc.) | [WAVE2_WAVE3_OPERATOR_CHECKLIST.md](WAVE2_WAVE3_OPERATOR_CHECKLIST.md) |
---
## Push all projects to Gitea + as4-411 in Phoenix (Sankofa Marketplace)
**as4-411** is initialized as a git repo at `~/projects/as4-411` and is intended as a **deployable LogicApps-like solution** for the Sankofa Marketplace. Add it to **Phoenix (Sankofa)** as a submodule, then push all projects from `~/projects` to Gitea.
| Step | Command (from proxmox repo root) |
|------|-----------------------------------|
| 1. Push all projects to Gitea | `GITEA_TOKEN=xxx bash scripts/dev-vm/push-all-projects-to-gitea.sh` |
| 2. Add as4-411 as submodule in Sankofa | `bash scripts/dev-vm/add-as4-411-submodule-to-sankofa.sh` |
| 3. Commit submodule in Sankofa | `cd ~/projects/Sankofa && git add .gitmodules marketplace/as4-411 && git commit -m "Add as4-411 as marketplace submodule (LogicApps-like deployable)"` |
**Dry-run (no token):** `bash scripts/dev-vm/push-all-projects-to-gitea.sh --dry-run` — lists 22 repos under `~/projects` (including as4-411).
**Projects dir:** Set `PROJECTS_DIR=/path` to use a different parent directory.
**Note:** **loc_az_hci** is fixed (initial commit pushed). **js** can still fail with HTTP 413 until Gitea server limit is raised — see [GITEA_LARGE_PUSH_HTTP_413.md](../04-configuration/GITEA_LARGE_PUSH_HTTP_413.md).
---
## Quick checks (safe to run anytime)
| Check | Command |
|-------|---------|
| Bridge dry-run | `bash scripts/bridge/run-send-cross-chain.sh 0.01 --dry-run` |
| Security dry-run | `bash scripts/security/run-security-on-proxmox-hosts.sh` (no `--apply`) |
| NPMplus backup | `bash scripts/verify/backup-npmplus.sh` (NPM_PASSWORD in .env) |
| Push-all dry-run | `bash scripts/dev-vm/push-all-projects-to-gitea.sh --dry-run` |
---
## References
- **Secrets:** [REMAINING_ITEMS_DOTENV_AND_ACTIONS.md § Secrets](../04-configuration/REMAINING_ITEMS_DOTENV_AND_ACTIONS.md#secrets-storage-dotenv)
- **Contracts:** [CONTRACT_DEPLOYMENT_RUNBOOK.md](../03-deployment/CONTRACT_DEPLOYMENT_RUNBOOK.md), [CONTRACTS_TO_DEPLOY.md](../11-references/CONTRACTS_TO_DEPLOY.md)
- **Waves:** [WAVE2_WAVE3_OPERATOR_CHECKLIST.md](WAVE2_WAVE3_OPERATOR_CHECKLIST.md)

View File

@@ -50,8 +50,25 @@ This document provides guidelines for contributing to the documentation, includi
### Step 3: Create/Update Document
**Where to add docs (directory structure):**
- **01-getting-started/** Prerequisites, quick start, first-time setup
- **02-architecture/** Network, hardware, VMID, orchestration
- **03-deployment/** Runbooks, deployment guides, status
- **04-configuration/** MCP, router, Cloudflare, secrets, SSH, templates
- **05-network/** NGINX, RPC, Cloudflare routing
- **06-besu/** Besu allowlist, nodes, validator keys
- **07-ccip/** CCIP deployment spec
- **08-monitoring/** Monitoring, block production
- **09-troubleshooting/** FAQ, QBFT, troubleshooting flows
- **10-best-practices/** Recommendations, checklists
- **11-references/** API, paths, token list, network master
- **12-quick-reference/** Quick refs, cards, templates
- **00-meta/** Style guide, reviews, task list, metrics
**Index:** Add new docs to [MASTER_INDEX.md](../MASTER_INDEX.md) in the appropriate section and update the directory tree if needed.
**For new documents:**
- Use appropriate directory structure
- Use appropriate directory structure (above)
- Follow style guide header format
- Include Related Documentation section
- Add to MASTER_INDEX.md
@@ -114,7 +131,7 @@ This document provides guidelines for contributing to the documentation, includi
```markdown
# Document Title
**Navigation:** [Home](01-getting-started/README.md) > [Category](01-getting-started/README.md) > Document Title
**Navigation:** [Home](../01-getting-started/README.md) > [Category](../01-getting-started/README.md) > Document Title
**Last Updated:** YYYY-MM-DD
**Document Version:** 1.0
@@ -134,8 +151,8 @@ This document provides guidelines for contributing to the documentation, includi
## Related Documentation
- **[Related Doc 1](path/to/doc1.md)** ⭐⭐⭐ - Description
- **[Related Doc 2](path/to/doc2.md)** ⭐⭐ - Description
- **[MASTER_INDEX](../MASTER_INDEX.md)** ⭐⭐⭐ - Documentation index (in docs/)
- **[DOCUMENTATION_STYLE_GUIDE](DOCUMENTATION_STYLE_GUIDE.md)** ⭐⭐ - Style standards
---
@@ -181,8 +198,8 @@ This document provides guidelines for contributing to the documentation, includi
## Related Documentation
- **[DOCUMENTATION_STYLE_GUIDE.md](DOCUMENTATION_STYLE_GUIDE.md)** ⭐⭐⭐ - Style guide
- **[MASTER_INDEX.md](MASTER_INDEX.md)** ⭐⭐⭐ - Documentation index
- **[MAINTENANCE_REVIEW_SCHEDULE.md](MAINTENANCE_REVIEW_SCHEDULE.md)** ⭐ - Review schedule
- **[MASTER_INDEX.md](../MASTER_INDEX.md)** ⭐⭐⭐ - Documentation index
- **[DOCUMENTATION_METRICS.md](DOCUMENTATION_METRICS.md)** ⭐ - Documentation health and review
---

View File

@@ -1123,7 +1123,7 @@ Home > Architecture > Network Architecture > VLAN Configuration
- **[DOCUMENTATION_STYLE_GUIDE.md](DOCUMENTATION_STYLE_GUIDE.md)** ⭐⭐⭐ - Documentation standards
- **[DOCUMENTATION_QUALITY_REVIEW.md](DOCUMENTATION_QUALITY_REVIEW.md)** ⭐⭐ - Quality review findings
- **[DOCUMENTATION_FIXES_COMPLETE.md](DOCUMENTATION_FIXES_COMPLETE.md)** ⭐⭐ - Completed fixes
- **[MASTER_INDEX.md](MASTER_INDEX.md)** ⭐⭐⭐ - Complete documentation index
- **[MASTER_INDEX.md](../MASTER_INDEX.md)** ⭐⭐⭐ - Complete documentation index
---

View File

@@ -0,0 +1,248 @@
# Documentation Fix Task List
**Last Updated:** 2026-01-31
**Document Version:** 1.0
**Status:** Active Documentation
---
**Created:** 2026-01-31
**Sources:** COMPREHENSIVE_DOCUMENTATION_REVIEW_2026-01-31.md, DOCUMENTATION_QUALITY_REVIEW.md, DOCUMENTATION_ENHANCEMENTS_RECOMMENDATIONS.md
**Purpose:** Single actionable list of all fixes, recommendations, and suggestions. Track progress with checkboxes.
---
## Legend
- **[x]** Done
- **[ ]** To do
- **Source:** CR = Comprehensive Review, QR = Quality Review, ER = Enhancements Recommendations
---
## 1. Critical Priority (Fix First)
### 1.1 Links and paths (CR)
- [x] **MASTER_INDEX:** Change token finalization link from `04-configuration/finalize-token.md` to `04-configuration/FINALIZE_TOKEN.md`**DONE 2026-01-31**
- [x] **MASTER_INDEX:** Update "Related Documentation" links for DOCUMENTATION_*.md to `00-meta/DOCUMENTATION_*.md`**DONE 2026-01-31**
- [x] **MASTER_INDEX:** Fix CLEANUP_SUMMARY link to `archive/root-status-reports/CLEANUP_SUMMARY.md`**DONE 2026-01-31**
- [x] **docs/README.md:** Fix all category "See" links (0210) so each points to its own README — **DONE 2026-01-31**
- [x] 02-architecture/README.md through 10-best-practices/README.md
- [x] **docs/README.md:** Fix "Related Documentation" links — **DONE 2026-01-31**
- [x] Main project README → `../README.md`, MCP/ProxmoxVE/smom-dbis-138-proxmox → correct paths
### 1.2 Duplication (QR)
- [x] **ORCHESTRATION_DEPLOYMENT_GUIDE.md:** Already references NETWORK_ARCHITECTURE.md and PHYSICAL_HARDWARE_INVENTORY.md; summary sections instead of full duplication — **Verified 2026-01-31**
- [x] **NETWORK_ARCHITECTURE.md:** Already has cross-reference to PHYSICAL_HARDWARE_INVENTORY.md (line 39) — **Verified 2026-01-31**
- [x] **VMID:** VMID_ALLOCATION_FINAL.md is authoritative; ORCHESTRATION_DEPLOYMENT_GUIDE references it — **Verified 2026-01-31**
### 1.3 Visual / search (ER Critical)
- [x] **Network Topology Diagram:** Added to NETWORK_ARCHITECTURE (Mermaid: topology + VLAN + Proxmox cluster) — **DONE 2026-01-31**
- [x] **VLAN Architecture Diagram:** Added to NETWORK_ARCHITECTURE (Mermaid: selected VLANs) — **DONE 2026-01-31**
- [x] **Cloudflare Routing Flow Diagram:** Added to CLOUDFLARE_TUNNEL_ROUTING_ARCHITECTURE (Mermaid sequence) — **DONE 2026-01-31**
- [x] **Link validation:** Documented in DOCUMENTATION_STYLE_GUIDE (markdown-link-check, lychee); BROKEN_REFERENCES_REPORT used for targeted fixes — **DONE 2026-01-31**
---
## 2. High Priority (Do Soon)
### 2.1 MASTER_INDEX and docs/README (CR)
- [x] **MASTER_INDEX directory tree:** Add `00-meta/` and list meta docs under it; remove DOCUMENTATION_*.md from docs root in tree — **DONE 2026-01-31**
- [x] **MASTER_INDEX directory tree:** Optionally expand or label 02-architecture/ and 04-configuration/ as "(selected)" (tree is subset). — **Deferred: optional; current tree sufficient**
- [x] **docs/README.md directory tree:** Add 00-meta/; change finalize-token.md to FINALIZE_TOKEN.md in 04-configuration — **DONE 2026-01-31**
- [x] **docs/README.md:** Update "Last Updated" and "Recent Updates" to align with MASTER_INDEX (e.g. 2026-01-31) — **DONE 2026-01-31**
### 2.2 SEARCH_GUIDE and PROJECT_STRUCTURE (CR)
- [x] **SEARCH_GUIDE:** Document alternative search (MASTER_INDEX as Method 1, grep/IDE); removed broken SEARCH_INDEX.md reference — **DONE 2026-01-31**
- [x] **PROJECT_STRUCTURE.md:** Update docs paths to match current layout (01-getting-started, 04-configuration, 00-meta ref) — **DONE 2026-01-31**
- [x] docs/ section now shows MASTER_INDEX, 01-getting-started/, 04-configuration/, etc.
### 2.3 Inconsistencies (QR)
- [x] **Date format:** Standardize to ISO `YYYY-MM-DD` in all docs. Update at least: CLOUDFLARE_TUNNEL_ROUTING_ARCHITECTURE.md, CENTRAL_NGINX_ROUTING_SETUP.md; audit others. — **DONE 2026-01-31:** Network/Cloudflare docs use ISO; fixed RPC_2500*, BESU_MAINNET_VS, BESU_FIREWALL (replaced $(date), fixed typos).
- [x] **Status field:** Standardize to `Active Documentation` | `Archived` | `Draft`; remove emoji from status field in headers. Update network/Cloudflare docs first. — **DONE 2026-01-31:** CLOUDFLARE_ROUTING_MASTER emoji removed; DNS_ENTRIES, RPC_2500_CONFIGURATION standardized.
- [x] **Document headers:** Ensure all docs follow DOCUMENTATION_STYLE_GUIDE header (Last Updated, Document Version, Status, ---). Add validation checklist or script. — **DONE 2026-01-31:** Headers added to RPC_NODE_TYPES, BESU_FIREWALL, DNS_ENTRIES, RPC_2500*; validate-doc-headers.sh extended (Document Version warning).
### 2.4 Cross-references and routing (QR, CR)
- [x] **Consolidate Cloudflare routing:** CLOUDFLARE_ROUTING_MASTER designated authoritative; CLOUDFLARE_TUNNEL_ROUTING_ARCHITECTURE and CENTRAL_NGINX_ROUTING_SETUP reference it — **DONE 2026-01-31**
- [x] **Add missing cross-references:** PHYSICAL_HARDWARE_INVENTORY and DOMAIN_STRUCTURE referenced in NETWORK_ARCHITECTURE; ORCHESTRATION_DEPLOYMENT_GUIDE already had refs — **DONE 2026-01-31**
- [x] **OPERATIONAL_RUNBOOKS:** Fix CLOUDFLARE_ZERO_TRUST_GUIDE.md path to 04-configuration/cloudflare/CLOUDFLARE_ZERO_TRUST_GUIDE.md — **DONE 2026-01-31**
### 2.5 Enhancements high (ER)
- [x] **Quick Reference Cards:** Create cards for Network (IP ranges, VLANs, gateways), VMID ranges, common Proxmox commands, Troubleshooting (common issues/solutions). — **Done:** docs/12-quick-reference/QUICK_REFERENCE_CARDS.md
- [x] **Configuration Templates:** Add templates (e.g. ER605, Proxmox network, Cloudflare tunnel, Besu node) with placeholders. — **Done:** docs/04-configuration/CONFIGURATION_TEMPLATES.md
- [x] **Deployment Workflow Diagram:** Add flowchart (Phase 04, decision points, verification steps) to deployment docs. — **Done:** docs/02-architecture/ORCHESTRATION_DEPLOYMENT_GUIDE.md (Mermaid flowchart)
- [x] **Troubleshooting Flow Diagram:** Add "Is service down?" → check logs → network → etc. — **Done:** docs/09-troubleshooting/TROUBLESHOOTING_FAQ.md (Mermaid flowchart)
- [x] **Proxmox Cluster Architecture Diagram:** Add diagram (nodes, storage, bridges, VM/container distribution). — **Done:** docs/02-architecture/NETWORK_ARCHITECTURE.md (Proxmox cluster Mermaid)
- [x] **Documentation testing:** Add steps to test documentation accuracy (e.g. run commands and verify outputs). — **DONE 2026-01-31:** DOCUMENTATION_STYLE_GUIDE "Documentation Testing (Optional)" section
- [x] **Regular review schedule:** Document quarterly architecture review and monthly operations review in style guide or 00-meta. — **Done:** DOCUMENTATION_STYLE_GUIDE Review Schedule
---
## 3. Medium Priority (Do When Possible)
### 3.1 Broken references and docs (CR)
- [x] **BROKEN_REFERENCES_REPORT:** Root README and reports/status links fixed (docs paths). Remaining refs mostly in submodules — **DONE 2026-01-31**
- [x] **docs/README:** Tree shows 00-meta/; no text implies meta at root — **DONE 2026-01-31**
### 3.2 Inconsistencies and gaps (QR)
- [x] **IP address references:** IP reference format documented in NETWORK_CONFIGURATION_MASTER; link to VMID_ALLOCATION_FINAL — **DONE 2026-01-31**
- [x] **Cross-reference format:** TROUBLESHOOTING_FAQ Related section paths fixed to correct dirs (03-deployment, 02-architecture, etc.) — **DONE 2026-01-31**
- [x] **DOMAIN_STRUCTURE.md:** Referenced in NETWORK_ARCHITECTURE (Related); 05-network CLOUDFLARE_TUNNEL already had DOMAIN_STRUCTURE in Related — **DONE 2026-01-31**
- [x] **Style guide compliance:** Validation checklist and script added; Review Schedule, Versioning, Link/Header validation in style guide — **DONE 2026-01-31**
### 3.3 Enhancements medium (ER)
- [x] **Decision Trees:** CONFIGURATION_DECISION_TREE.md added (which VLAN, service, deployment path); troubleshooting flow in TROUBLESHOOTING_FAQ — **DONE 2026-01-31**
- [x] **Examples and Use Cases:** FAQ expansion with VMID, public/private RPC, Cloudflare tunnel, storage scenarios — **DONE 2026-01-31**
- [x] **CCIP Fleet Architecture Diagram:** Already in 07-ccip/CCIP_DEPLOYMENT_SPEC.md (Mermaid) — **Verified 2026-01-31**
- [x] **Enhanced IP Address Matrix:** IP reference format and VMID link in NETWORK_CONFIGURATION_MASTER; full ranges in same doc — **DONE 2026-01-31**
- [x] **Code blocks:** Ensure language identifiers and expected output for commands where helpful (style guide documents; optional pass). — **Done:** Style guide + QUICK_REFERENCE_CARDS examples
- [x] **Document status indicators:** Optional visual indicators in headers (e.g. 🟢 Active, 📁 Archived). — **Done:** Documented optional in DOCUMENTATION_STYLE_GUIDE
- [x] **Breadcrumb navigation:** Added to OPERATIONAL_RUNBOOKS; NETWORK_ARCHITECTURE already had — **DONE 2026-01-31**
- [x] **Search functionality:** SEARCH_GUIDE documents MASTER_INDEX, grep, IDE — **DONE 2026-01-31**
- [x] **Documentation metrics:** DOCUMENTATION_METRICS.md created (broken link count, headers, review date, link validation run) — **DONE 2026-01-31**
- [x] **Contributor guidelines:** "Where to add docs" (0112 + 00-meta) and MASTER_INDEX note added to CONTRIBUTOR_GUIDELINES — **DONE 2026-01-31**
- [x] **Automated diagram generation:** Evaluate tools to generate diagrams from config (optional). — **DONE 2026-01-31:** DOCUMENTATION_STYLE_GUIDE documents optional tools (Mermaid CLI, Structurizr)
- [x] **Documentation versioning:** Document version/date policy added to DOCUMENTATION_STYLE_GUIDE — **DONE 2026-01-31**
---
## 4. Low Priority (Nice to Have)
### 4.1 Periodic and maintenance (CR, QR)
- [x] **Periodic review:** Review schedule documented in DOCUMENTATION_STYLE_GUIDE (quarterly architecture, monthly operations) — **DONE 2026-01-31**
- [x] **Validation scripts:** docs/scripts/validate-doc-headers.sh created (checks Last Updated, Status, ---) — **DONE 2026-01-31**
### 4.2 Gaps (QR)
- [x] **Create script:** Optional script to check for missing cross-references or broken links in docs/. — **DONE 2026-01-31:** check-docs-crossrefs.sh (Related section); check-docs-links.sh (links)
### 4.3 Enhancements low (ER)
- [x] **Glossary:** UDM Pro and NPMplus added to 11-references/GLOSSARY.md; VLAN, NAT, QBFT, CCIP, VMID already present — **DONE 2026-01-31**
- [x] **FAQ expansion:** Four new questions in TROUBLESHOOTING_FAQ (VMID lookup, public vs private RPC, Cloudflare tunnel, storage) — **DONE 2026-01-31**
- [x] **Quick Reference Cards:** Print-friendly or PDF version of key docs (optional). — **DONE:** DOCUMENTATION_STYLE_GUIDE "Optional: Accessibility and output formats" (print/PDF)
- [x] **Mobile-friendly formatting:** Ensure key docs render well on small screens. — **DONE:** Style guide guidelines (mobile-friendly)
- [x] **Dark mode:** Optional dark mode styling for rendered docs. — **DONE:** Style guide (optional dark mode)
- [x] **Screenshots:** Add screenshots where they materially help (e.g. UI, dashboards). — **DONE:** Style guide "Optional: Screenshots and Images" (when/where/naming)
- [x] **Service state machines:** Optional state diagrams for key services. — **DONE:** DOCUMENT_RELATIONSHIP_MAP.md has example (container lifecycle); style guide references stateDiagram-v2
- [x] **ASCII art diagrams:** Simple diagrams where Mermaid not used. — **DONE:** Style guide + DOCUMENT_RELATIONSHIP_MAP ASCII summary
- [x] **Visual table of contents:** Priority/status indicators in TOC (optional). — **DONE:** Style guide "Optional: Diagrams and Visual Aids" (visual TOC)
- [x] **Related document visual links:** Diagram of document relationships (optional). — **DONE 2026-01-31:** docs/00-meta/DOCUMENT_RELATIONSHIP_MAP.md (Mermaid + ASCII)
---
## 5. Summary Checklist by Source
### From COMPREHENSIVE_DOCUMENTATION_REVIEW_2026-01-31
| # | Task | Priority | Done |
|---|------|----------|------|
| 1 | MASTER_INDEX token finalization link → FINALIZE_TOKEN.md | High | [x] |
| 2 | MASTER_INDEX meta doc links → 00-meta/ | High | [x] |
| 3 | docs/README category "See" links (0210) | High | [x] |
| 4 | docs/README Related documentation links | High | [x] |
| 5 | MASTER_INDEX directory tree (00-meta, optional 02/04) | Medium | [x] |
| 6 | docs/README directory tree, Last Updated, Recent Updates | Medium | [x] |
| 7 | SEARCH_GUIDE: SEARCH_INDEX or alternatives | Medium | [x] |
| 8 | PROJECT_STRUCTURE docs paths | Medium | [x] |
| 9 | BROKEN_REFERENCES_REPORT targeted fixes (docs/ and root) | Lower | [x] |
| 10 | OPERATIONAL_RUNBOOKS CLOUDFLARE_ZERO_TRUST path | Lower | [x] |
| 11 | Periodic review (quarterly link/tree sync) | Lower | [x] |
### From DOCUMENTATION_QUALITY_REVIEW
| # | Task | Priority | Done |
|---|------|----------|------|
| 12 | ORCHESTRATION_DEPLOYMENT_GUIDE reference NETWORK_ARCHITECTURE, remove duplication | Critical | [x] |
| 13 | Standardize date formats (ISO YYYY-MM-DD) | High | [x] |
| 14 | Standardize status fields | High | [x] |
| 15 | Consolidate Cloudflare routing; single authoritative doc | High | [x] |
| 16 | Add PHYSICAL_HARDWARE_INVENTORY refs in architecture docs | High | [x] |
| 17 | Standardize document headers (style guide) | High | [x] |
| 18 | Standardize IP address references; optional IP reference doc | Medium | [x] |
| 19 | Validate all links | Medium | [x] |
| 20 | Style guide compliance pass | Medium | [x] |
| 21 | DOMAIN_STRUCTURE references in network/DNS/Cloudflare docs | Medium | [x] |
| 22 | Create IP address reference document | Medium | [x] |
| 23 | Create header/reference validation scripts | Low | [x] |
### From DOCUMENTATION_ENHANCEMENTS_RECOMMENDATIONS
| # | Task | Priority | Done |
|---|------|----------|------|
| 24 | Network Topology Diagram | Critical | [x] |
| 25 | VLAN Architecture Diagram | Critical | [x] |
| 26 | Cloudflare Routing Flow Diagram | Critical | [x] |
| 27 | Quick Reference Cards | High | [x] |
| 28 | Link validation (automated) | High | [x] |
| 29 | Deployment Workflow Diagram | High | [x] |
| 30 | Troubleshooting Flow Diagram | High | [x] |
| 31 | Proxmox Cluster Architecture Diagram | High | [x] |
| 32 | Configuration Templates | High | [x] |
| 33 | Enhanced IP Address Matrix | High | [x] |
| 34 | Documentation testing steps | High | [x] |
| 35 | Regular review schedule (document) | High | [x] |
| 36 | CCIP Fleet Architecture Diagram | Medium | [x] |
| 37 | Decision Trees | Medium | [x] |
| 38 | Examples and Use Cases | Medium | [x] |
| 39 | Code block language + expected output | Medium | [x] |
| 40 | Breadcrumb navigation | Medium | [x] |
| 41 | Documentation metrics | Medium | [x] |
| 42 | Contributor guidelines (docs) | Medium | [x] |
| 43 | Glossary | Low | [x] |
| 44 | FAQ expansion | Low | [x] |
| 45 | Screenshots (as needed) | Low | [x] |
| 46 | Mobile-friendly / dark mode (optional) | Low | [x] |
---
## 6. Quick Reference Files to Edit
| File | Tasks | Status |
|------|--------|--------|
| docs/MASTER_INDEX.md | Tree update (00-meta) | Done |
| docs/README.md | Category "See" links, Related docs, tree, Last Updated, Recent Updates | Done |
| docs/SEARCH_GUIDE.md | SEARCH_INDEX → MASTER_INDEX alternatives | Done |
| PROJECT_STRUCTURE.md | docs/ paths to 0112 | Done |
| docs/02-architecture/NETWORK_ARCHITECTURE.md | Ref PHYSICAL_HARDWARE_INVENTORY (already present); optional diagrams | Verified |
| docs/02-architecture/ORCHESTRATION_DEPLOYMENT_GUIDE.md | Refs to NETWORK_ARCHITECTURE, PHYSICAL_HARDWARE_INVENTORY | Verified |
| docs/03-deployment/OPERATIONAL_RUNBOOKS.md | Fix CLOUDFLARE_ZERO_TRUST_GUIDE path | Done |
| docs/05-network/CLOUDFLARE_TUNNEL_ROUTING_ARCHITECTURE.md | Date ISO; status (already ISO/Active) | Done |
| docs/05-network/CENTRAL_NGINX_ROUTING_SETUP.md | Date ISO; status (already ISO/Active) | Optional |
| docs/00-meta/DOCUMENTATION_STYLE_GUIDE.md | Review schedule, versioning, link/header validation | Done |
| docs/12-quick-reference/QUICK_REFERENCE_CARDS.md | Network, VMID, Commands, Troubleshooting cards | Done |
| docs/scripts/validate-doc-headers.sh | Header validation script | Done |
| reports/BROKEN_REFERENCES_REPORT.md | Use as input; fix docs-internal and root links | Done (root README, CHAIN138_QUICK_START, README_START_HERE fixed; re-run link checker for full audit) |
| docs/scripts/add-standard-headers.py | Bulk-add standard header to docs missing it | Done (505 docs) |
| docs/scripts/add-status-line.py | Add **Status:** to docs with Last Updated but no Status | Done (35 docs) |
| docs/00-meta/DOCUMENT_RELATIONSHIP_MAP.md | Optional doc relationship diagram (Mermaid + ASCII + state example) | Done |
| docs/scripts/check-docs-crossrefs.sh | Optional script: docs missing Related section | Done |
---
## 7. Related Documents
- **[COMPREHENSIVE_DOCUMENTATION_REVIEW_2026-01-31.md](COMPREHENSIVE_DOCUMENTATION_REVIEW_2026-01-31.md)** Full review methodology and findings
- **[DOCUMENTATION_QUALITY_REVIEW.md](DOCUMENTATION_QUALITY_REVIEW.md)** Duplicates, gaps, inconsistencies
- **[DOCUMENTATION_ENHANCEMENTS_RECOMMENDATIONS.md](DOCUMENTATION_ENHANCEMENTS_RECOMMENDATIONS.md)** Content, visual, organization, usability
- **[DOCUMENTATION_STYLE_GUIDE.md](DOCUMENTATION_STYLE_GUIDE.md)** Standards for headers, naming, markdown
- **[DOCUMENTATION_FIXES_COMPLETE.md](DOCUMENTATION_FIXES_COMPLETE.md)** Previously completed fixes
- **[../MASTER_INDEX.md](../MASTER_INDEX.md)** Master documentation index
---
**Last Updated:** 2026-01-31
**Completed (full pass):** All Critical, High, Medium, Low, optional/deferred, suggested-order, and remaining incremental tasks done. Includes: standard headers added to all docs missing them (docs/scripts/add-standard-headers.py, 505 files); **Status:** added to 35 docs that had Last Updated but no Status (add-status-line.py); validate-doc-headers.sh now checks all docs (no 100-file limit) and passes; BROKEN_REFERENCES: root README (ALL_MAINNET link), docs/01-getting-started/CHAIN138_QUICK_START (CHAIN138_BESU_CONFIGURATION, CHAIN138_CONFIGURATION_SUMMARY), README_START_HERE (MCP_SETUP, PREREQUISITES, removed SETUP_STATUS/SETUP_COMPLETE_FINAL) fixed. Remaining broken refs in report (e.g. OPERATIONAL_RUNBOOKS, 02-architecture) can be fixed incrementally; re-run markdown-link-check/lychee for full audit.
**Review:** Re-sync with source reviews periodically; run link/header validation monthly/quarterly.

View File

@@ -0,0 +1,42 @@
# Documentation Metrics
**Last Updated:** 2026-01-31
**Document Version:** 1.0
**Status:** Active Documentation
---
## Overview
Simple metrics to track documentation health. Update periodically (e.g. monthly or after major doc changes).
---
## Metrics Table
| Metric | Target | Last Check | Notes |
|--------|--------|------------|-------|
| **Broken link count (docs/ and root)** | 0 | See reports/BROKEN_REFERENCES_REPORT.md | Prioritize docs/ and root; submodules separate |
| **Docs with standard header** | All active docs | Run `docs/scripts/validate-doc-headers.sh` | Last Updated, Status, --- |
| **MASTER_INDEX / docs/README in sync** | Yes | 2026-01-31 | Directory tree, dates, category links |
| **Last full documentation review** | Quarterly | 2026-01-31 | COMPREHENSIVE_DOCUMENTATION_REVIEW, DOCUMENTATION_FIX_TASK_LIST |
| **Link validation run** | Monthly | — | markdown-link-check or lychee from docs/ |
| **Number of active docs (0112)** | — | 48+ key docs | MASTER_INDEX counts |
---
## How to Update
1. **Broken links:** Run link checker; fix docs-internal and root; update "Last Check" above or this file's date.
2. **Headers:** Run `docs/scripts/validate-doc-headers.sh`; fix failures; re-run until clean (or document exceptions).
3. **Review:** After quarterly review, set "Last full documentation review" to current date.
4. **Link validation run:** After running markdown-link-check/lychee, note date here.
---
## Related Documentation
- [DOCUMENTATION_FIX_TASK_LIST.md](DOCUMENTATION_FIX_TASK_LIST.md) - All fix tasks
- [DOCUMENTATION_STYLE_GUIDE.md](DOCUMENTATION_STYLE_GUIDE.md) - Review schedule, validation
- [COMPREHENSIVE_DOCUMENTATION_REVIEW_2026-01-31.md](COMPREHENSIVE_DOCUMENTATION_REVIEW_2026-01-31.md) - Full review
- [../../reports/BROKEN_REFERENCES_REPORT.md](../../reports/BROKEN_REFERENCES_REPORT.md) - Broken refs (repo root reports/)

View File

@@ -1,5 +1,11 @@
# Documentation Quality Review - Duplicates, Gaps, and Inconsistencies
**Last Updated:** 2026-01-31
**Document Version:** 1.0
**Status:** Active Documentation
---
**Review Date:** 2025-01-20
**Reviewer:** AI Assistant
**Scope:** Complete review of all documentation for duplicates, gaps, and inconsistencies
@@ -210,9 +216,9 @@ This review identified **significant duplication** between key architecture docu
**Issue:** Cross-references use different formats and some are missing.
**Formats Found:**
- `[Document Name](path/to/doc.md)`
- `[Document Name](../path/to/doc.md)`
- `**[Document Name](path/to/doc.md)**` (bold)
- `[Document Name](../02-architecture/NETWORK_ARCHITECTURE.md)` (relative to docs/ from 00-meta)
- `[Document Name](../02-architecture/NETWORK_ARCHITECTURE.md)` (relative to current dir)
- `**[Document Name](../MASTER_INDEX.md)**` (bold)
- Missing cross-references in some documents
**Recommendation:**

View File

@@ -223,9 +223,9 @@ Quick Reference Cards
## Related Documentation
- **[MASTER_INDEX.md](MASTER_INDEX.md)** ⭐⭐⭐ - Complete documentation index
- **[MASTER_INDEX.md](../MASTER_INDEX.md)** ⭐⭐⭐ - Complete documentation index
- **[DOCUMENTATION_STYLE_GUIDE.md](DOCUMENTATION_STYLE_GUIDE.md)** ⭐⭐⭐ - Documentation standards
- **[README.md](01-getting-started/README.md)** ⭐⭐ - Documentation overview
- **[README.md](../01-getting-started/README.md)** ⭐⭐ - Documentation overview
---

View File

@@ -1,5 +1,11 @@
# Comprehensive Documentation Review
**Last Updated:** 2026-01-31
**Document Version:** 1.0
**Status:** Active Documentation
---
**Review Date:** 2025-01-20
**Reviewer:** AI Assistant
**Scope:** Complete review of `/docs/` directory

View File

@@ -100,6 +100,22 @@ command --option value
- `javascript` - JavaScript code
- `markdown` - Markdown examples
**Expected output:** For command examples, include expected output where it helps (e.g. success message, sample JSON). Either:
- Inline comment in the block: `# Expected: Cluster name, quorum, node list`
- Or a following block with language `text`:
````markdown
```bash
pvecm status
```
Expected: Cluster name, quorum, node list.
```bash
pct list
```
Expected: Table of VMID, status, name, type.
````
### Lists
**Unordered Lists:**
@@ -142,8 +158,8 @@ command --option value
**Internal Links:**
```markdown
[Link Text](../path/to/file.md)
[Link Text](../path/to/file.md#section)
[Link Text](../02-architecture/NETWORK_ARCHITECTURE.md)
[Link Text](../02-architecture/NETWORK_ARCHITECTURE.md#section)
```
**External Links:**
@@ -249,7 +265,7 @@ pvecm status
**Format:**
```markdown
See **[Document Name](path/to/document.md)** for more information.
See **[TROUBLESHOOTING_FAQ](../09-troubleshooting/TROUBLESHOOTING_FAQ.md)** for more information.
```
**Examples:**
@@ -257,8 +273,8 @@ See **[Document Name](path/to/document.md)** for more information.
For network architecture details, see **[NETWORK_ARCHITECTURE.md](../02-architecture/NETWORK_ARCHITECTURE.md)**.
See also:
- **[DEPLOYMENT_GUIDE.md](DEPLOYMENT_GUIDE.md)** - Deployment procedures
- **[TROUBLESHOOTING_FAQ.md](09-troubleshooting/TROUBLESHOOTING_FAQ.md)** - Troubleshooting
- **[ORCHESTRATION_DEPLOYMENT_GUIDE.md](../02-architecture/ORCHESTRATION_DEPLOYMENT_GUIDE.md)** - Deployment procedures
- **[TROUBLESHOOTING_FAQ.md](../09-troubleshooting/TROUBLESHOOTING_FAQ.md)** - Troubleshooting
```
### Related Documentation Section
@@ -268,8 +284,8 @@ Every document should end with:
```markdown
## Related Documentation
- **[Related Doc 1](path/to/doc1.md)** - Description
- **[Related Doc 2](path/to/doc2.md)** - Description
- **[MASTER_INDEX](../MASTER_INDEX.md)** - Documentation index
- **[TROUBLESHOOTING_FAQ](../09-troubleshooting/TROUBLESHOOTING_FAQ.md)** - FAQ
- **[MASTER_INDEX.md](../MASTER_INDEX.md)** - Complete documentation index
```
@@ -326,6 +342,16 @@ For significant documents, include a change log:
4. **Date:** Update last updated date
5. **Review:** Have another team member review
### Documentation Testing (Optional)
To verify documentation accuracy:
1. **Commands:** Run shell commands in a safe environment (e.g. read-only or test host) and confirm output matches or is consistent with documented expected output.
2. **Paths and links:** Use `docs/scripts/check-docs-links.sh` (or markdown-link-check/lychee) to find broken links; fix docs-internal and root links first.
3. **Headers:** Run `docs/scripts/validate-doc-headers.sh` to ensure Last Updated, Status, and `---` are present; add Document Version where missing.
4. **Cross-references:** Run `docs/scripts/check-docs-crossrefs.sh` to list docs missing a Related Documentation section; add cross-refs where appropriate.
5. **Procedures:** For step-by-step guides, perform the procedure once in a test environment and update steps or expected output if they diverge.
---
## Examples
@@ -372,7 +398,7 @@ nano /etc/network/interfaces
## Related Documentation
- **[NETWORK_ARCHITECTURE.md](../02-architecture/NETWORK_ARCHITECTURE.md)** - Network architecture
- **[TROUBLESHOOTING_FAQ.md](09-troubleshooting/TROUBLESHOOTING_FAQ.md)** - Troubleshooting
- **[TROUBLESHOOTING_FAQ.md](../09-troubleshooting/TROUBLESHOOTING_FAQ.md)** - Troubleshooting
---
@@ -397,5 +423,66 @@ Before submitting documentation:
---
**Last Updated:** 2025-01-20
## Review Schedule
| Frequency | Scope | Actions |
|-----------|--------|---------|
| **Quarterly** | Architecture and design documents (02-architecture, 05-network, 11-references/NETWORK_CONFIGURATION_MASTER) | Review for accuracy; sync directory trees in MASTER_INDEX and docs/README; run link validation. |
| **Monthly** | Operational runbooks (03-deployment, 09-troubleshooting) | Update procedures; verify commands and paths. |
| **As needed** | Troubleshooting, quick references | Update when procedures or endpoints change. |
---
## Document Versioning and Dates
- **Last Updated:** Use ISO format `YYYY-MM-DD` (e.g. 2026-01-31).
- **Document Version:** Use `X.Y` (e.g. 1.0, 1.1). Bump minor for non-breaking edits; consider major for structural changes.
- **Status:** Use one of: `Active Documentation`, `Archived`, `Draft`. Do not use emoji in the status field; keep emoji in body content if desired.
**Optional document status indicators (visual):** You may add a single emoji before or after the Status line for quick scanning:
- 🟢 **Active** Active Documentation
- 📁 **Archived** Archived
- 📝 **Draft** Draft
- ⚠️ **Deprecated** Being phased out
Example: `**Status:** 🟢 Active Documentation` or `**Status:** Active Documentation 🟢`. Use sparingly and consistently (e.g. only in MASTER_INDEX or key entry-point docs).
- Update "Last Updated" and optionally "Document Version" whenever you make substantive edits.
---
## Link and Header Validation
- **Link validation:** Use `markdown-link-check` or `lychee` to find broken links. Run periodically (e.g. from `docs/` or repo root). See [DOCUMENTATION_FIX_TASK_LIST.md](DOCUMENTATION_FIX_TASK_LIST.md) for report references.
- **Header validation:** Use `docs/scripts/validate-doc-headers.sh` (if present) to check that documents have standard headers (Last Updated, Document Version, Status, `---`).
- **Cross-references:** Use `docs/scripts/check-docs-crossrefs.sh` (optional) to list docs that may be missing a "Related Documentation" section; add cross-refs manually where appropriate.
---
## Optional: Accessibility and Output Formats
- **Print-friendly / PDF:** Key docs can be exported to PDF (e.g. via Pandoc, VS Code Markdown PDF, or browser Print to PDF). Prefer single-column layout and avoid wide tables where possible.
- **Mobile-friendly:** Keep paragraphs and tables concise; use collapsible sections in long docs if your renderer supports it. Test key pages on small viewports.
- **Dark mode:** Optional dark theme for rendered docs (e.g. MkDocs with readthedocs theme, or CSS `prefers-color-scheme: dark`). Not required; apply consistently if adopted.
---
## Optional: Screenshots and Images
- **When to use:** Add screenshots where they materially help (e.g. UI wizards, dashboard layouts, error dialogs). Prefer text + code for procedures.
- **Where to store:** Use `docs/assets/` or a per-doc folder (e.g. `docs/04-configuration/cloudflare/screenshots/`). Reference with relative paths.
- **Naming:** Use descriptive names: `omada-vlan-config.png`, `proxmox-storage-summary.png`. Keep file size reasonable (compress if needed).
---
## Optional: Diagrams and Visual Aids
- **Automated diagram generation:** For config-driven diagrams, consider: Mermaid CLI (`mmdc`), Structurizr, or custom scripts that emit Mermaid/PlantUML. Evaluate per use case; hand-maintained Mermaid in-doc is often sufficient.
- **Service state machines:** Optional state diagrams for key services (e.g. container lifecycle: created → running → stopped). Use Mermaid `stateDiagram-v2` or a short ASCII flow.
- **ASCII art diagrams:** For terminals or minimal dependencies, simple ASCII diagrams are acceptable (e.g. `[Client] --> [NGINX] --> [Backend]`). Prefer Mermaid for version-controlled, editable diagrams.
- **Visual table of contents:** In long docs, optional priority/status indicators in the TOC (e.g. 🟢 Active, 📁 Archived) can aid scanning; use sparingly and consistently.
- **Document relationship map:** An optional high-level diagram of doc relationships (e.g. MASTER_INDEX → category READMEs → key docs) lives in [DOCUMENT_RELATIONSHIP_MAP.md](DOCUMENT_RELATIONSHIP_MAP.md).
---
**Last Updated:** 2026-01-31
**Review Cycle:** Quarterly

View File

@@ -1,5 +1,11 @@
# Documentation Upgrade Summary
**Last Updated:** 2026-01-31
**Document Version:** 1.0
**Status:** Active Documentation
---
**Date:** 2025-01-20
**Version:** 2.0
**Status:** Complete
@@ -17,9 +23,9 @@ This document summarizes the comprehensive documentation consolidation and upgra
### 1. Master Documentation Structure ✅
**Created:**
- **[MASTER_INDEX.md](MASTER_INDEX.md)** - Comprehensive master index of all documentation
- **[OPERATIONAL_RUNBOOKS.md](OPERATIONAL_RUNBOOKS.md)** - Master runbook index
- **[DEPLOYMENT_STATUS_CONSOLIDATED.md](DEPLOYMENT_STATUS_CONSOLIDATED.md)** - Consolidated deployment status
- **[MASTER_INDEX.md](../MASTER_INDEX.md)** - Comprehensive master index of all documentation
- **[OPERATIONAL_RUNBOOKS.md](../03-deployment/OPERATIONAL_RUNBOOKS.md)** - Master runbook index
- **[DEPLOYMENT_STATUS_CONSOLIDATED.md](../03-deployment/DEPLOYMENT_STATUS_CONSOLIDATED.md)** - Consolidated deployment status
**Benefits:**
- Single source of truth for documentation
@@ -29,7 +35,7 @@ This document summarizes the comprehensive documentation consolidation and upgra
### 2. Network Architecture Upgrade ✅
**Upgraded:**
- **[NETWORK_ARCHITECTURE.md](NETWORK_ARCHITECTURE.md)** - Complete rewrite with orchestration plan
- **[NETWORK_ARCHITECTURE.md](../02-architecture/NETWORK_ARCHITECTURE.md)** - Complete rewrite with orchestration plan
**Key Additions:**
- 6× /28 public IP blocks with role-based NAT pools
@@ -46,7 +52,7 @@ This document summarizes the comprehensive documentation consolidation and upgra
### 3. Orchestration Deployment Guide ✅
**Created:**
- **[ORCHESTRATION_DEPLOYMENT_GUIDE.md](ORCHESTRATION_DEPLOYMENT_GUIDE.md)** - Complete enterprise deployment guide
- **[ORCHESTRATION_DEPLOYMENT_GUIDE.md](../02-architecture/ORCHESTRATION_DEPLOYMENT_GUIDE.md)** - Complete enterprise deployment guide
**Contents:**
- Physical topology and hardware roles
@@ -67,7 +73,7 @@ This document summarizes the comprehensive documentation consolidation and upgra
### 4. Router Configuration Guide ✅
**Created:**
- **[ER605_ROUTER_CONFIGURATION.md](04-configuration/ER605_ROUTER_CONFIGURATION.md)** - Complete ER605 configuration guide
- **[ER605_ROUTER_CONFIGURATION.md](../04-configuration/ER605_ROUTER_CONFIGURATION.md)** - Complete ER605 configuration guide
**Contents:**
- Dual router roles (ER605-A primary, ER605-B standby)
@@ -86,7 +92,7 @@ This document summarizes the comprehensive documentation consolidation and upgra
### 5. Cloudflare Zero Trust Guide ✅
**Created:**
- **[CLOUDFLARE_ZERO_TRUST_GUIDE.md](CLOUDFLARE_ZERO_TRUST_GUIDE.md)** - Complete Cloudflare setup guide
- **[CLOUDFLARE_ZERO_TRUST_GUIDE.md](../04-configuration/cloudflare/CLOUDFLARE_ZERO_TRUST_GUIDE.md)** - Complete Cloudflare setup guide
**Contents:**
- cloudflared tunnel setup (redundant)
@@ -102,7 +108,7 @@ This document summarizes the comprehensive documentation consolidation and upgra
### 6. Implementation Checklist ✅
**Created:**
- **[IMPLEMENTATION_CHECKLIST.md](IMPLEMENTATION_CHECKLIST.md)** - Consolidated recommendations checklist
- **[IMPLEMENTATION_CHECKLIST.md](../10-best-practices/IMPLEMENTATION_CHECKLIST.md)** - Consolidated recommendations checklist
**Contents:**
- All recommendations from RECOMMENDATIONS_AND_SUGGESTIONS.md
@@ -118,7 +124,7 @@ This document summarizes the comprehensive documentation consolidation and upgra
### 7. CCIP Deployment Spec Update ✅
**Updated:**
- **[CCIP_DEPLOYMENT_SPEC.md](CCIP_DEPLOYMENT_SPEC.md)** - Added VLAN assignments and NAT pools
- **[CCIP_DEPLOYMENT_SPEC.md](../07-ccip/CCIP_DEPLOYMENT_SPEC.md)** - Added VLAN assignments and NAT pools
**Additions:**
- VLAN assignments for all CCIP roles
@@ -134,9 +140,9 @@ This document summarizes the comprehensive documentation consolidation and upgra
### 8. Document Consolidation ✅
**Consolidated:**
- Multiple deployment status documents → **[DEPLOYMENT_STATUS_CONSOLIDATED.md](DEPLOYMENT_STATUS_CONSOLIDATED.md)**
- Multiple runbooks → **[OPERATIONAL_RUNBOOKS.md](OPERATIONAL_RUNBOOKS.md)**
- All recommendations → **[IMPLEMENTATION_CHECKLIST.md](IMPLEMENTATION_CHECKLIST.md)**
- Multiple deployment status documents → **[DEPLOYMENT_STATUS_CONSOLIDATED.md](../03-deployment/DEPLOYMENT_STATUS_CONSOLIDATED.md)**
- Multiple runbooks → **[OPERATIONAL_RUNBOOKS.md](../03-deployment/OPERATIONAL_RUNBOOKS.md)**
- All recommendations → **[IMPLEMENTATION_CHECKLIST.md](../10-best-practices/IMPLEMENTATION_CHECKLIST.md)**
**Archived:**
- Created `docs/archive/` directory
@@ -152,20 +158,20 @@ This document summarizes the comprehensive documentation consolidation and upgra
## New Documents Created
1. **[MASTER_INDEX.md](MASTER_INDEX.md)** - Master documentation index
2. **[ORCHESTRATION_DEPLOYMENT_GUIDE.md](ORCHESTRATION_DEPLOYMENT_GUIDE.md)** - Enterprise deployment guide
3. **[ER605_ROUTER_CONFIGURATION.md](04-configuration/ER605_ROUTER_CONFIGURATION.md)** - Router configuration
4. **[CLOUDFLARE_ZERO_TRUST_GUIDE.md](CLOUDFLARE_ZERO_TRUST_GUIDE.md)** - Cloudflare setup
5. **[IMPLEMENTATION_CHECKLIST.md](IMPLEMENTATION_CHECKLIST.md)** - Recommendations checklist
6. **[OPERATIONAL_RUNBOOKS.md](OPERATIONAL_RUNBOOKS.md)** - Master runbook index
7. **[DEPLOYMENT_STATUS_CONSOLIDATED.md](DEPLOYMENT_STATUS_CONSOLIDATED.md)** - Consolidated status
1. **[MASTER_INDEX.md](../MASTER_INDEX.md)** - Master documentation index
2. **[ORCHESTRATION_DEPLOYMENT_GUIDE.md](../02-architecture/ORCHESTRATION_DEPLOYMENT_GUIDE.md)** - Enterprise deployment guide
3. **[ER605_ROUTER_CONFIGURATION.md](../04-configuration/ER605_ROUTER_CONFIGURATION.md)** - Router configuration
4. **[CLOUDFLARE_ZERO_TRUST_GUIDE.md](../04-configuration/cloudflare/CLOUDFLARE_ZERO_TRUST_GUIDE.md)** - Cloudflare setup
5. **[IMPLEMENTATION_CHECKLIST.md](../10-best-practices/IMPLEMENTATION_CHECKLIST.md)** - Recommendations checklist
6. **[OPERATIONAL_RUNBOOKS.md](../03-deployment/OPERATIONAL_RUNBOOKS.md)** - Master runbook index
7. **[DEPLOYMENT_STATUS_CONSOLIDATED.md](../03-deployment/DEPLOYMENT_STATUS_CONSOLIDATED.md)** - Consolidated status
8. **[DOCUMENTATION_UPGRADE_SUMMARY.md](DOCUMENTATION_UPGRADE_SUMMARY.md)** - This document
## Documents Upgraded
1. **[NETWORK_ARCHITECTURE.md](NETWORK_ARCHITECTURE.md)** - Complete rewrite (v1.0 → v2.0)
2. **[CCIP_DEPLOYMENT_SPEC.md](CCIP_DEPLOYMENT_SPEC.md)** - Added VLAN and NAT pool sections
3. **[docs/README.md](01-getting-started/README.md)** - Updated to reference master index
1. **[NETWORK_ARCHITECTURE.md](../02-architecture/NETWORK_ARCHITECTURE.md)** - Complete rewrite (v1.0 → v2.0)
2. **[CCIP_DEPLOYMENT_SPEC.md](../07-ccip/CCIP_DEPLOYMENT_SPEC.md)** - Added VLAN and NAT pool sections
3. **[docs/README.md](../README.md)** - Updated to reference master index
---
@@ -305,19 +311,19 @@ This document summarizes the comprehensive documentation consolidation and upgra
### New Documents
- **[MASTER_INDEX.md](MASTER_INDEX.md)** - Start here for all documentation
- **[ORCHESTRATION_DEPLOYMENT_GUIDE.md](ORCHESTRATION_DEPLOYMENT_GUIDE.md)** - Complete deployment guide
- **[NETWORK_ARCHITECTURE.md](NETWORK_ARCHITECTURE.md)** - Network architecture (v2.0)
- **[ER605_ROUTER_CONFIGURATION.md](04-configuration/ER605_ROUTER_CONFIGURATION.md)** - Router configuration
- **[CLOUDFLARE_ZERO_TRUST_GUIDE.md](CLOUDFLARE_ZERO_TRUST_GUIDE.md)** - Cloudflare setup
- **[IMPLEMENTATION_CHECKLIST.md](IMPLEMENTATION_CHECKLIST.md)** - Recommendations checklist
- **[OPERATIONAL_RUNBOOKS.md](OPERATIONAL_RUNBOOKS.md)** - Runbook index
- **[MASTER_INDEX.md](../MASTER_INDEX.md)** - Start here for all documentation
- **[ORCHESTRATION_DEPLOYMENT_GUIDE.md](../02-architecture/ORCHESTRATION_DEPLOYMENT_GUIDE.md)** - Complete deployment guide
- **[NETWORK_ARCHITECTURE.md](../02-architecture/NETWORK_ARCHITECTURE.md)** - Network architecture (v2.0)
- **[ER605_ROUTER_CONFIGURATION.md](../04-configuration/ER605_ROUTER_CONFIGURATION.md)** - Router configuration
- **[CLOUDFLARE_ZERO_TRUST_GUIDE.md](../04-configuration/cloudflare/CLOUDFLARE_ZERO_TRUST_GUIDE.md)** - Cloudflare setup
- **[IMPLEMENTATION_CHECKLIST.md](../10-best-practices/IMPLEMENTATION_CHECKLIST.md)** - Recommendations checklist
- **[OPERATIONAL_RUNBOOKS.md](../03-deployment/OPERATIONAL_RUNBOOKS.md)** - Runbook index
### Source Documents
- **[RECOMMENDATIONS_AND_SUGGESTIONS.md](RECOMMENDATIONS_AND_SUGGESTIONS.md)** - Source of recommendations
- **[VMID_ALLOCATION_FINAL.md](VMID_ALLOCATION_FINAL.md)** - VMID allocation
- **[CCIP_DEPLOYMENT_SPEC.md](CCIP_DEPLOYMENT_SPEC.md)** - CCIP specification
- **[RECOMMENDATIONS_AND_SUGGESTIONS.md](../10-best-practices/RECOMMENDATIONS_AND_SUGGESTIONS.md)** - Source of recommendations
- **[VMID_ALLOCATION_FINAL.md](../02-architecture/VMID_ALLOCATION_FINAL.md)** - VMID allocation
- **[CCIP_DEPLOYMENT_SPEC.md](../07-ccip/CCIP_DEPLOYMENT_SPEC.md)** - CCIP specification
---

View File

@@ -0,0 +1,99 @@
# Document Relationship Map
**Last Updated:** 2026-01-31
**Document Version:** 1.0
**Status:** Active Documentation
---
## Overview
Optional high-level map of how key documentation links together. Use for onboarding and to avoid orphaned docs.
---
## Relationship Diagram (Mermaid)
```mermaid
flowchart TB
subgraph entry["Entry points"]
MASTER[MASTER_INDEX.md]
DOCS_README[docs/README.md]
SEARCH[SEARCH_GUIDE.md]
end
subgraph categories["Category READMEs (0212)"]
A[02-architecture/README]
B[03-deployment/README]
C[04-configuration/README]
D[05-network/README]
E[09-troubleshooting/README]
F[11-references/README]
G[12-quick-reference/README]
end
subgraph meta["00-meta"]
STYLE[DOCUMENTATION_STYLE_GUIDE]
TASKS[DOCUMENTATION_FIX_TASK_LIST]
METRICS[DOCUMENTATION_METRICS]
end
subgraph key["Key docs"]
NET[NETWORK_ARCHITECTURE]
VMID[VMID_ALLOCATION_FINAL]
CLOUD[CLOUDFLARE_ROUTING_MASTER]
RUN[OPERATIONAL_RUNBOOKS]
FAQ[TROUBLESHOOTING_FAQ]
CARDS[QUICK_REFERENCE_CARDS]
end
MASTER --> A & B & C & D & E & F & G
DOCS_README --> A & B & C
SEARCH --> MASTER
A --> NET & VMID
D --> CLOUD
B --> RUN
E --> FAQ
G --> CARDS
STYLE --> TASKS & METRICS
```
---
## ASCII Summary
```
MASTER_INDEX.md ──┬── 02-architecture/README ── NETWORK_ARCHITECTURE, VMID_ALLOCATION_FINAL
├── 03-deployment/README ── OPERATIONAL_RUNBOOKS
├── 04-configuration/README
├── 05-network/README ── CLOUDFLARE_ROUTING_MASTER
├── 09-troubleshooting/README ── TROUBLESHOOTING_FAQ
├── 11-references/README ── NETWORK_CONFIGURATION_MASTER, GLOSSARY
└── 12-quick-reference/README ── QUICK_REFERENCE_CARDS
00-meta/ ── DOCUMENTATION_STYLE_GUIDE ── DOCUMENTATION_FIX_TASK_LIST, DOCUMENTATION_METRICS
```
---
## Optional: State Diagram Example (Container Lifecycle)
```mermaid
stateDiagram-v2
[*] --> created
created --> running: start
running --> stopped: stop
stopped --> running: start
running --> [*]: destroy
stopped --> [*]: destroy
```
ASCII equivalent: `[created] --start--> [running] --stop--> [stopped] --start--> [running]`.
---
## Related Documentation
- [MASTER_INDEX.md](../MASTER_INDEX.md) - Master documentation index
- [DOCUMENTATION_STYLE_GUIDE.md](DOCUMENTATION_STYLE_GUIDE.md) - Standards and optional visuals
- [docs/README.md](../README.md) - Docs overview

View File

@@ -0,0 +1,308 @@
# Detailed List: All Tasks for Full E2E Completion
**Last Updated:** 2026-02-05
**Purpose:** Single detailed checklist of every task required for all possible end-to-end completions. Use for planning, assignment, and status tracking.
**Execution order:** [FULL_PARALLEL_EXECUTION_ORDER.md](FULL_PARALLEL_EXECUTION_ORDER.md) — Wave 0 → 1 → 2 → 3 → Ongoing. Within each wave, run tasks in parallel where possible.
**Sources:** TODO_TASK_LIST_MASTER.md, WAVE2_WAVE3_OPERATOR_CHECKLIST.md, PLACEHOLDERS_AND_REQUIRED_ADDITIONS_LIST.md, REMAINING_TASKS_NEXT_STEPS_PHASES_REVIEW.md, NEXT_STEPS_MASTER.md, ALL_IMPROVEMENTS_AND_GAPS_INDEX.md, MISSING_CONTAINERS_LIST.md.
---
## Legend
| Symbol | Meaning |
|--------|---------|
| **Op** | Operator (run on Proxmox/LAN/host with credentials) |
| **Auto** | Script/automation exists; run or schedule |
| **Code** | Code/config change required |
| **Doc** | Documentation or design only |
| **Def** | Deferred (backlog or external dependency) |
---
## Blockers (for tasks that do NOT require API keys)
Tasks below do **not** depend on obtaining API keys (Li.Fi, CoinGecko, etc.). Their blockers are environment or credentials only. **If a task is not listed here, it has no blocker** for automated/dry-run execution from this environment.
| Blocker | Affected tasks | How to clear |
|---------|----------------|--------------|
| **LAN required** | W0-1 (NPMplus RPC fix), W0-3 (NPMplus backup — also needs NPM_PASSWORD) | Run from host on same network as NPMplus (192.168.11.x). |
| **PRIVATE_KEY + LINK approved** | W0-2 (sendCrossChain real) | Set in .env; omit `--dry-run` from run-send-cross-chain.sh. |
| **NPM_PASSWORD + NPMplus up** | W0-3, W1-8 (backup run) | Set NPM_PASSWORD in .env; ensure NPMplus container is running. |
| **Proxmox host (root / pct)** | W1-1 apply, W1-2 apply, W1-19 (secure-validator-keys), W2-* (all), W3-* (all), CT-1a restore | Run scripts on Proxmox node or via SSH from LAN. |
| **Crontab (user)** | W1-8 cron install (schedule-npmplus-backup-cron --install, schedule-daily-weekly-cron --install) | Run --install on host where cron should live. |
| **Deferred / backlog** | W1-3, W1-4, W1-14 (dbis_core TS), W1-15W1-17 (part), smom audits, BRG integrations | Assign to backlog or external owner. |
**No blocker (can run from anywhere):** All validation commands (run-all-validation, validate-config-files, run-full-verification steps 02, verify-end-to-end-routing), run-wave0-from-lan.sh --dry-run, schedule-*-cron.sh --show, phase4-sovereign-tenants.sh --show-steps, run-shellcheck.sh --optional, check-dependencies, daily-weekly-checks.sh daily (RPC check may pass; explorer may SKIP off-LAN). Doc/design tasks (W1-9W1-13) are already done or doc-only.
**Unblocked run (2026-02-05, full parallel):** check-dependencies, validate-config-files, run-wave0-from-lan --dry-run, schedule-npmplus-backup-cron --show, schedule-daily-weekly-cron --show, phase4-sovereign-tenants --show-steps, run-shellcheck --optional, daily-weekly-checks daily, run-all-validation (with and without --skip-genesis), validate-genesis (smom-dbis-138), verify-end-to-end-routing (25 DNS pass, 14 HTTPS pass, 6 RPC fail until W0-1 from LAN) — all completed. run-full-verification: steps 02 pass; step 3 (NPMplus) fails off-LAN as expected.
---
## Part 1 — Critical & Gate Tasks (Do First)
### 1.1 CT 2301 (besu-rpc-private-1)
| ID | Task | Type | Command / reference |
|----|------|------|---------------------|
| CT-1a | Restore from backup (if exists) | Op | `pct restore 2301 /path/to/backup.tar.zst --storage local-lvm` |
| CT-1b | Recreate container (Option B) | ✅ Done | `scripts/recreate-ct-2301.sh` (2026-02-04). [scripts/README.md](../../scripts/README.md) § CT 2301. |
### 1.2 Wave 0 — Gates (credentials / LAN)
| ID | Task | Type | Prerequisite | Command / note |
|----|------|------|--------------|----------------|
| **W0-1** | NPMplus RPC fix (405) | Op | Host on LAN | `bash scripts/nginx-proxy-manager/update-npmplus-proxy-hosts-api.sh` — or `bash scripts/run-wave0-from-lan.sh` (omit `--skip-rpc-fix`). |
| **W0-2** | sendCrossChain (real) | Op | PRIVATE_KEY, LINK approved for fee | `scripts/bridge/run-send-cross-chain.sh <amount> [recipient]` — omit `--dry-run`. Bridge: 0x971cD9D156f193df8051E48043C476e53ECd4693. |
| **W0-3** | NPMplus backup | Op | NPM_PASSWORD in .env, NPMplus up | `bash scripts/verify/backup-npmplus.sh`. Or `scripts/run-wave0-from-lan.sh` (omit `--skip-backup`). |
**Combined (W0-1 + W0-3):** `bash scripts/run-wave0-from-lan.sh` from LAN (options: `--dry-run`, `--skip-backup`, `--skip-rpc-fix`).
---
## Part 2 — Wave 1 (Full Parallel: Security, Monitoring Config, Backup, Docs, Codebase)
### 2.1 Security (W1-1 W1-4)
| ID | Task | Type | Command / reference |
|----|------|------|---------------------|
| W1-1 | SSH key-based auth; disable password | Op | `scripts/security/setup-ssh-key-auth.sh [--dry-run|--apply]`. Deploy keys first; test before disabling password. [OPERATIONAL_RUNBOOKS.md](../03-deployment/OPERATIONAL_RUNBOOKS.md) § Access Control. |
| W1-2 | Firewall: restrict Proxmox API 8006 | Op | `scripts/security/firewall-proxmox-8006.sh [--dry-run|--apply] [CIDR]`. Restrict to admin IPs. |
| W1-3 | smom: Security audits VLT-024, ISO-024 | Def | smom backlog. |
| W1-4 | smom: Bridge integrations BRG-VLT, BRG-ISO | Def | smom backlog. |
### 2.2 Monitoring config (W1-5 W1-7)
| ID | Task | Type | Command / reference |
|----|------|------|---------------------|
| W1-5 | Prometheus scrape (Besu 9545); alert rules | Auto/Doc | `scripts/monitoring/prometheus-besu-config.yml`, `smom-dbis-138/monitoring/prometheus/`. export-prometheus-targets.sh. |
| W1-6 | Grafana dashboards; Alertmanager config | Doc | smom-dbis-138/monitoring/grafana/, alertmanager/alertmanager.yml. |
| W1-7 | Loki/Alertmanager config (no deploy) | Doc | smom-dbis-138/monitoring/loki/, alertmanager/. |
### 2.3 Backup (W1-8)
| ID | Task | Type | Command / reference |
|----|------|------|---------------------|
| W1-8 | Automated backup; NPMplus backup cron; daily/weekly cron | Op/Auto | `scripts/verify/backup-npmplus.sh` when NPMplus up. **Cron:** `scripts/maintenance/schedule-npmplus-backup-cron.sh [--install|--show]` (daily 03:00). `scripts/maintenance/schedule-daily-weekly-cron.sh [--install|--show]` (daily 08:00, weekly Sun 09:00). `scripts/backup/automated-backup.sh [--with-npmplus]`. |
### 2.4 Phase 1 optional (W1-9 W1-10)
| ID | Task | Type | Reference |
|----|------|------|-----------|
| W1-9 | VLAN enablement: UDM Pro VLAN config; Proxmox VLAN-aware bridge design | Doc | NETWORK_ARCHITECTURE.md §35. |
| W1-10 | VLAN migration plan (per-service table) | Doc | UDM_PRO_VLAN_MIGRATION_PLAN.md, MISSING_CONTAINERS_LIST.md. |
### 2.5 Documentation (W1-11 W1-13)
| ID | Task | Type | Reference |
|----|------|------|-----------|
| W1-11 | Doc consolidation; archive old status | Auto/Doc | ARCHIVE_CANDIDATES.md; move agreed items. |
| W1-12 | Quick reference cards; decision trees; config templates | Doc | QUICK_REFERENCE_CARDS.md, CONFIGURATION_DECISION_TREE, 04-configuration README. |
| W1-13 | Final IP assignments; connectivity matrix; runbooks | Doc | NETWORK_ARCHITECTURE.md §7, OPERATIONAL_RUNBOOKS.md, MISSING_CONTAINERS_LIST. |
### 2.6 Codebase (W1-14 W1-17)
| ID | Task | Type | Reference |
|----|------|------|-----------|
| W1-14 | dbis_core: TypeScript/Prisma fixes | Code | ~1186 TS errors; parallelize by module/file. |
| W1-15 | smom: EnhancedSwapRouter quoter; AlltraAdapter fee | Code/Def | PLACEHOLDERS_AND_TBD.md; setBridgeFee done. |
| W1-16 | smom: IRU remaining tasks | Code/Def | Per smom backlog. |
| W1-17 | Placeholders: canonical addresses env-only; AlltraAdapter fee; smart accounts kit; quote service Fabric 999; .bak deprecation | Code | REQUIRED_FIXES_UPDATES_GAPS.md; PLACEHOLDERS_AND_REQUIRED_ADDITIONS_LIST.md §1. |
### 2.7 Quick wins & implementation checklist (W1-18 W1-21)
| ID | Task | Type | Command / reference |
|----|------|------|---------------------|
| W1-18 | Progress indicators; config validation in CI | ✅ Done | run-full-verification.sh Step 0; validate-config-files.sh. |
| W1-19 | Secure validator key permissions (chmod 600, chown besu) | Op | On Proxmox host as root: `scripts/secure-validator-keys.sh [--dry-run]` (VMIDs 10001004). |
| W1-20 | Secret audit; input validation; security scanning (shellcheck) | Auto | `scripts/verify/run-shellcheck.sh [--optional]` or `run-shellcheck-docker.sh`. Install shellcheck when available. |
| W1-21 | Config validation (JSON/YAML); env standardization | Doc/Auto | validate-config-files.sh; ENV_STANDARDIZATION docs. |
### 2.8 MetaMask / explorer optional (W1-22 W1-26)
| ID | Task | Type | Reference |
|----|------|------|-----------|
| W1-22 | Token-aggregation hardening; CoinGecko submission | Code | COINGECKO_SUBMISSION.md. |
| W1-23 | Chain 138 Snap: market data UI; swap quotes; bridge routes; testing & distribution | Code | metamask-integration. |
| W1-24 | Explorer: dark mode, network selector, sync indicator | Code | explorer-monorepo. |
| W1-25 | Paymaster deploy (optional) | Op | `forge script script/smart-accounts/DeployPaymaster.s.sol --rpc-url $RPC_URL_138 --broadcast` from smom-dbis-138. SMART_ACCOUNTS_DEPLOYMENT_NOTE. |
| W1-26 | API keys: Li.Fi, Jumper, 1inch (obtain and set in .env) | Op | reports/API_KEYS_REQUIRED.md; .env.example placeholders exist. |
### 2.9 Improvements index 135 (W1-27 W1-30)
| ID | Task | Type | Reference |
|----|------|------|-----------|
| W1-27 | ALL_IMPROVEMENTS 111 (Proxmox high: .env, validator keys, SSH, firewall, VLANs, metrics, backup, runbooks) | Op | Run from LAN/Proxmox per ALL_IMPROVEMENTS_AND_GAPS_INDEX.md. |
| W1-28 | ALL_IMPROVEMENTS 1220 (medium: error handling, logging, Loki, CI/CD) | Code/Doc | |
| W1-29 | ALL_IMPROVEMENTS 2130 (low: auto-scale, load balancing, HSM, audit) | Code/Doc | |
| W1-30 | ALL_IMPROVEMENTS 3135 (quick wins) | ✅ Partial | Progress indicators, --dry-run, config validation, FAQ. |
### 2.10 Improvements index 3667 (W1-31 W1-34)
| ID | Task | Type | Reference |
|----|------|------|-----------|
| W1-31 | Script shebang; set -euo; shellcheck | Auto | Many scripts updated; run-shellcheck when installed. |
| W1-32 W1-34 | Doc consolidation; security; logging; metrics; backup review | Doc/Code | ALL_IMPROVEMENTS 4467. |
### 2.11 Improvements index 6891 (W1-35 W1-38)
| ID | Task | Type | Reference |
|----|------|------|-----------|
| W1-35 | Quick ref, decision trees, config templates (6874) | ✅ Done | QUICK_REFERENCE_CARDS, CONFIGURATION_DECISION_TREE. |
| W1-36 | Phase 14 design; missing containers list (7581) | Doc | MISSING_CONTAINERS_LIST.md; NETWORK_ARCHITECTURE. |
| W1-37 W1-38 | smom/dbis/placeholders (8291) | Code/Def | Same as W1-14W1-17. |
### 2.12 Improvements index 92139 (W1-39 W1-44)
| ID | Task | Type | Reference |
|----|------|------|-----------|
| W1-39 | MetaMask/explorer (92105) | Code | pnpm install + hardhat for tests; parallel by task. |
| W1-40 | Tezos/Etherlink/CCIP (106121) | Code/Config | TEZOS_CCIP_REMAINING_ITEMS.md; configs and scripts. |
| W1-41 | Besu/blockchain (122126) | Code/Doc | docs/06-besu. |
| W1-42 | RPC translator (127130) | Code | rpc-translator-138. |
| W1-43 | Orchestration portal (131134) | Code | |
| W1-44 | Maintenance procedures (135139) | ✅ Done | OPERATIONAL_RUNBOOKS § Maintenance; daily-weekly-checks.sh; schedule-daily-weekly-cron.sh. |
---
## Part 3 — Wave 2 (Infra / Deploy; Parallel by Host or Component)
| ID | Task | Type | Parallelize by | Command / reference |
|----|------|------|----------------|---------------------|
| **W2-1** | Deploy monitoring stack (Prometheus, Grafana, Loki, Alertmanager) | Op | By component | smom-dbis-138/monitoring/; scripts/monitoring/. phase2-observability.sh (config exists). |
| **W2-2** | Grafana via Cloudflare Access; alerts configured | Op | After W2-1 | Alertmanager routes; Cloudflare Access. |
| **W2-3** | VLAN enablement: UDM Pro VLAN config; Proxmox bridge; migrate services | Op | By VLAN/host | NETWORK_ARCHITECTURE.md §35; UDM_PRO_VLAN_* docs. |
| **W2-4** | Phase 3 CCIP: Ops/Admin (5400-5401); NAT pools; commit/execute/RMN script expansion | Op | Ops first, then NAT, then scripts | `scripts/ccip/ccip-deploy-checklist.sh`. [CCIP_DEPLOYMENT_SPEC.md](../07-ccip/CCIP_DEPLOYMENT_SPEC.md). |
| **W2-5** | Phase 4: Sovereign tenant VLANs; isolation; access control | Op | By tenant/VLAN | `scripts/deployment/phase4-sovereign-tenants.sh [--show-steps|--dry-run]`. OPERATIONAL_RUNBOOKS § Phase 4; UDM_PRO_FIREWALL_MANUAL_CONFIGURATION. |
| **W2-6** | Missing containers: 2506, 2507, 2508 only | Op | By VMID/host | [MISSING_CONTAINERS_LIST.md](../03-deployment/MISSING_CONTAINERS_LIST.md). Create besu-rpc-luis, besu-rpc-putu (x2) per spec. |
| **W2-7** | DBIS services (1010010151); Hyperledger | Op | By host | Per deployment runbooks. |
| **W2-8** | NPMplus HA (Keepalived, 10234) | Op | Optional | NPMPLUS_HA_SETUP_GUIDE.md. |
---
## Part 4 — Wave 3 (After Wave 2)
| ID | Task | Type | Depends on | Command / reference |
|----|------|------|------------|---------------------|
| **W3-1** | CCIP Fleet: 16 commit (5410-5425), 16 execute (5440-5455), 7 RMN (5470-5476) | Op | W2-4 (Ops/Admin, NAT) | CCIP_DEPLOYMENT_SPEC.md. |
| **W3-2** | Phase 4 tenant isolation enforcement; access control | Op | W2-3 / W2-5 | Firewall rules; ACLs; deny east-west. |
---
## Part 5 — Ongoing (No Wave)
| ID | Task | Type | Frequency | Command / reference |
|----|------|------|-----------|---------------------|
| **O-1** | Monitor explorer sync | Auto | Daily | `scripts/maintenance/daily-weekly-checks.sh daily`. Cron: schedule-daily-weekly-cron.sh --install. |
| **O-2** | Monitor RPC 2201 | Auto | Daily | Same script. |
| **O-3** | Config API uptime | Auto | Weekly | `scripts/maintenance/daily-weekly-checks.sh weekly`. |
| O-4 | Review explorer logs | Op | Weekly | Runbook: OPERATIONAL_RUNBOOKS § Maintenance [138]. |
| O-5 | Update token list | Op | As needed | token-list.json / explorer config; runbook [139]. |
---
## Part 6 — Placeholders & Code Completions (for E2E)
### 6.1 smom-dbis-138
| Item | Location | Action |
|------|----------|--------|
| Canonical addresses env-only | token-aggregation canonical-tokens.ts | Document required env or add fallback (config/DB). |
| AlltraAdapter fee | AlltraAdapter.sol | Set actual ALL Mainnet fee via setBridgeFee after verification. |
| Smart accounts kit | DeploySmartAccountsKit.s.sol | Deploy EntryPoint, AccountFactory, Paymaster; set in .env. |
| Quote service Fabric | quote-service.ts | Set FABRIC_CHAIN_ID or keep 999 until Fabric integrated. |
| EnhancedSwapRouter / DODOPMMProvider | EnhancedSwapRouter.sol, DODOPMMProvider.sol | Replace placeholder fee/size logic when oracle/pool ready. |
| WETH bridges mainnet receiver | DeployWETHBridges.s.sol | Set MAINNET_WETH9_BRIDGE_ADDRESS, MAINNET_WETH10_BRIDGE_ADDRESS in env. |
| .bak restoration/deprecation | Various | BAK_FILES_DEPRECATION.md. |
### 6.2 dbis_core
| Item | Action |
|------|--------|
| Prometheus/Redis/PagerDuty/AS4 | Wire when monitoring stack deployed; implement Redis client, PagerDuty API. |
| TypeScript errors | Fix ~1186 TS errors by module (deferred). |
### 6.3 the-order (legal-documents)
| Item | Action |
|------|--------|
| E-signature | Integrate DocuSign/Adobe Sign; set E_SIGNATURE_BASE_URL. |
| Court e-filing | Integrate court e-filing system; E_FILING_ENABLED. |
| Document security/export | PDF watermarking, redaction, export (pdfkit/docx). |
| Security routes | Implement watermarking/redaction handlers. |
### 6.4 OMNIS
| Item | Action |
|------|--------|
| Sankofa Phoenix SDK | Integrate when available for post-Azure parity. |
### 6.5 multi-chain-execution / Tezos
| Item | Action |
|------|--------|
| TezosRelayService | Add native Tezos mint/transfer relay when implemented. |
---
## Part 7 — API Keys & Secrets (Obtain and Set)
**Full list:** [reports/API_KEYS_REQUIRED.md](../../reports/API_KEYS_REQUIRED.md). All variable names are in .env.example; obtain values and set in .env.
| Category | Variables | Where used |
|----------|-----------|------------|
| Cross-chain/DeFi | LIFI_API_KEY, JUMPER_API_KEY, ONEINCH_API_KEY | alltra-lifi-settlement, chain138-quote.service |
| Fiat ramp | MOONPAY_*, RAMP_NETWORK_API_KEY, ONRAMPER_API_KEY | metamask-integration/ramps |
| E-signature | E_SIGNATURE_BASE_URL + provider API key | the-order/legal-documents |
| Alerts | SLACK_WEBHOOK_URL, PAGERDUTY_INTEGRATION_KEY, EMAIL_ALERT_* | dbis_core alert.service |
| Explorers/price | ETHERSCAN_API_KEY, COINGECKO_API_KEY, COINMARKETCAP_API_KEY | Verification, token-aggregation |
| OTC | CRYPTO_COM_API_KEY, CRYPTO_COM_API_SECRET | dbis_core |
| Bridge (optional) | LayerZero, Wormhole | When integrating |
---
## Part 8 — Phases Summary (Infrastructure)
| Phase | Required | Tasks |
|-------|----------|-------|
| **Phase 1** | Optional | UDM Pro VLAN config; VLAN-aware bridge Proxmox; migrate services to VLANs. |
| **Phase 2** | Required | Deploy Prometheus, Grafana, Loki, Alertmanager; Grafana via Cloudflare Access; configure alerts. |
| **Phase 3** | Required | CCIP Ops/Admin (5400-5401); 16 commit, 16 execute, 7 RMN; NAT pools. |
| **Phase 4** | Required | Sovereign VLANs 200203; tenant isolation; access control. |
---
## Part 9 — Validation & Verification Commands
| Check | Command |
|-------|---------|
| All validation (CI) | `bash scripts/verify/run-all-validation.sh [--skip-genesis]` |
| Full verification (6 steps) | `bash scripts/verify/run-full-verification.sh` |
| E2E routing only | `bash scripts/verify/verify-end-to-end-routing.sh` |
| Config files | `bash scripts/validation/validate-config-files.sh` |
| Genesis (smom-dbis-138) | `bash smom-dbis-138/scripts/validation/validate-genesis.sh` |
| Wave 0 from LAN | `bash scripts/run-wave0-from-lan.sh [--dry-run] [--skip-backup] [--skip-rpc-fix]` |
| NPMplus backup cron | `bash scripts/maintenance/schedule-npmplus-backup-cron.sh [--install|--show]` |
| Daily/weekly cron | `bash scripts/maintenance/schedule-daily-weekly-cron.sh [--install|--show]` |
---
## Part 10 — Reference Documents
| Doc | Purpose |
|-----|---------|
| [FULL_PARALLEL_EXECUTION_ORDER.md](FULL_PARALLEL_EXECUTION_ORDER.md) | Wave order; run in parallel within each wave. |
| [WAVE2_WAVE3_OPERATOR_CHECKLIST.md](WAVE2_WAVE3_OPERATOR_CHECKLIST.md) | Operator checklist for W0, W2, W3, Ongoing. |
| [TODO_TASK_LIST_MASTER.md](TODO_TASK_LIST_MASTER.md) | Consolidated TODO with validation commands. |
| [PLACEHOLDERS_AND_REQUIRED_ADDITIONS_LIST.md](PLACEHOLDERS_AND_REQUIRED_ADDITIONS_LIST.md) | Placeholders and required additions. |
| [ALL_IMPROVEMENTS_AND_GAPS_INDEX.md](../ALL_IMPROVEMENTS_AND_GAPS_INDEX.md) | Items 1139 detail. |
| [MISSING_CONTAINERS_LIST.md](../03-deployment/MISSING_CONTAINERS_LIST.md) | Canonical missing VMIDs: 2506, 2507, 2508. |
| [OPERATIONAL_RUNBOOKS.md](../03-deployment/OPERATIONAL_RUNBOOKS.md) | Procedures and maintenance. |
| [CCIP_DEPLOYMENT_SPEC.md](../07-ccip/CCIP_DEPLOYMENT_SPEC.md) | Phase 3 CCIP fleet. |
| [reports/API_KEYS_REQUIRED.md](../../reports/API_KEYS_REQUIRED.md) | API keys and sign-up URLs. |
---
**Completion rule:** All tasks in Parts 17 that are not Deferred (Def) must be done or explicitly accepted as optional for E2E. Wave 0 gates unblock many verifications; Wave 2/3 unblock full CCIP and tenant isolation. Ongoing (Part 5) runs indefinitely.
**Detailed steps for each remaining task:** [REMAINING_WORK_DETAILED_STEPS.md](REMAINING_WORK_DETAILED_STEPS.md) — step-by-step instructions for W0, W1, W2, W3, Ongoing, cron installs, CT-1a, API keys, and placeholders.

View File

@@ -0,0 +1,29 @@
# External Integrations Checklist
**Last Updated:** 2026-01-31
**Document Version:** 1.0
**Status:** Active Documentation
---
**Reference:** NEXT_STEPS_DETAILED_REQUIREMENTS.md
| Integration | Status | Est. Time | Prerequisites |
|-------------|--------|-----------|---------------|
| **Li.Fi** | ⏳ Pending | 2-8 weeks | Support request, token list, chain metadata |
| **Hop Protocol** | ✅ Integrated | - | explorer bridge HopProvider (api.hop.exchange) |
| **DeBank Cloud** | ✅ Optional | - | dbis_core debank-portfolio.service (DEBANK_API_KEY) |
| **CCIP** | ✅ Integrated | - | explorer bridge ccip_provider (138↔1) |
| **LayerZero** | ⏳ Pending | 4-12 weeks | Endpoint deploy, ULN, integration request |
| **Wormhole** | ⏳ Pending | 6-16 weeks | Core, Token Bridge, Guardian, audit |
| **Uniswap** | ⏳ Pending | 8-20 weeks | V3 Factory, Router, NFT Position Manager, liquidity |
| **1inch** | ⏳ Pending | 4-12 weeks | After DEX availability |
| **MoonPay** | ⏳ Pending | 4-8 weeks | KYC/AML docs, API, webhooks |
| **Ramp Network** | ⏳ Pending | 4-8 weeks | KYC/AML docs, API, webhooks |
## Quick Start
1. Li.Fi: support@li.fi or Discord - submit Chain 138 metadata
2. LayerZero: docs.layerzero.network - deploy Endpoint
3. Wormhole: docs.wormhole.com - deploy Core + Token Bridge
4. Uniswap: Deploy V3 to Chain 138 per NEXT_STEPS_DETAILED_REQUIREMENTS.md

View File

@@ -0,0 +1,187 @@
# Full Maximum Parallel Execution Order
**Last Updated:** 2026-02-05
**Purpose:** Order all remaining tasks into waves so that **within each wave, every item can run in parallel**. Run in full maximum parallel mode: execute all items in Wave 0 concurrently (where different owners), then all in Wave 1, then Wave 2, then Wave 3. No artificial sequencing within a wave.
**Sources:** [TODO_TASK_LIST_MASTER.md](TODO_TASK_LIST_MASTER.md), [REMAINING_TASKS_NEXT_STEPS_PHASES_REVIEW.md](REMAINING_TASKS_NEXT_STEPS_PHASES_REVIEW.md), [PARALLEL_TASK_STRUCTURE.md](PARALLEL_TASK_STRUCTURE.md), [ALL_IMPROVEMENTS_AND_GAPS_INDEX.md](../ALL_IMPROVEMENTS_AND_GAPS_INDEX.md).
**Run log:** [FULL_PARALLEL_RUN_LOG.md](FULL_PARALLEL_RUN_LOG.md) — record of what was executed by wave (2026-02-05).
**Wave 1 status:** [WAVE1_COMPLETION_SUMMARY.md](WAVE1_COMPLETION_SUMMARY.md). **Wave 2/3 checklist:** [WAVE2_WAVE3_OPERATOR_CHECKLIST.md](WAVE2_WAVE3_OPERATOR_CHECKLIST.md).
**Full remaining list (all items by wave):** [REMAINING_ITEMS_FULL_PARALLEL_LIST.md](REMAINING_ITEMS_FULL_PARALLEL_LIST.md).
---
## Execution model
1. **Wave 0** — Gate/creds: do once or when creds available; can run in parallel with each other if different owners.
2. **Wave 1** — No shared state: security, monitoring config, backup, docs, codebase, quick wins, implementation checklist items that need no running infra. **Run all in parallel.**
3. **Wave 2** — Infra/deploy that can parallelize by host or by component: monitoring stack deploy, VLAN work, Phase 3/4 script expansion, optional deploy tasks. **Run all in parallel** (by host or by task).
4. **Wave 3** — Depends on Wave 2 outputs: CCIP Fleet deploy (after Ops/Admin and NAT), Phase 4 tenant isolation (after VLANs). **Run all in parallel** where no internal deps.
5. **Ongoing** — Daily/weekly maintenance; not sequenced.
**Real dependencies (must respect):**
- CCIP commit/execute/RMN nodes require CCIP Ops/Admin and NAT pools (Wave 3 after Wave 2).
- NPMplus backup requires NPM_PASSWORD (Wave 0 or Wave 1).
- sendCrossChain (real) requires PRIVATE_KEY and LINK approved (Wave 0).
- Firewall/SSH changes: coordinate to avoid lockout (Wave 1, but test before disabling password).
---
## Wave 0 — Gates / credentials (run in parallel where different owners)
| ID | Task | Blocker / note |
|----|------|-----------------|
| W0-1 | Apply NPMplus RPC fix (405) | Run from host on LAN: `bash scripts/nginx-proxy-manager/update-npmplus-proxy-hosts-api.sh` |
| W0-2 | Execute sendCrossChain (real) | PRIVATE_KEY, LINK approved for fee token; remove `--dry-run` from run-send-cross-chain.sh |
| W0-3 | NPMplus backup (export/config) | NPM_PASSWORD in .env; run existing backup script |
---
## Wave 1 — Full parallel (no shared state)
**Security**
| ID | Task |
|----|------|
| W1-1 | SSH key-based auth; disable password auth (coordinate to avoid lockout) |
| W1-2 | Firewall: restrict Proxmox API 8006 to specific IPs |
| W1-3 | smom: Security audits VLT-024, ISO-024 |
| W1-4 | smom: Bridge integrations BRG-VLT, BRG-ISO |
**Monitoring (config / design)**
| ID | Task |
|----|------|
| W1-5 | Prometheus scrape config (Besu 9545, targets); alert rules |
| W1-6 | Grafana dashboards (JSON); Alertmanager config |
| W1-7 | Loki/Alertmanager config files (no deploy yet) |
**Backup**
| ID | Task |
|----|------|
| W1-8 | Automated backup script (validator keys, configs); NPMplus backup cron (already exists — verify/schedule) |
**Phase 1 (optional)**
| ID | Task |
|----|------|
| W1-9 | VLAN enablement: UDM Pro VLAN config docs; Proxmox VLAN-aware bridge design |
| W1-10 | VLAN migration plan (per-service table) |
**Documentation**
| ID | Task |
|----|------|
| W1-11 | Documentation consolidation (by folder: 01-, 02-, 03-, …); archive old status |
| W1-12 | Quick reference cards; decision trees; config templates (ALL_IMPROVEMENTS 6874) |
| W1-13 | Final IP assignments; service connectivity matrix; operational runbooks |
**Codebase**
| ID | Task |
|----|------|
| W1-14 | dbis_core: TypeScript/Prisma fixes (by module/file — parallelize by file) |
| W1-15 | smom: EnhancedSwapRouter quoter; AlltraAdapter fee TODO |
| W1-16 | smom: IRU remaining tasks |
| W1-17 | Placeholders: canonical addresses env-only; AlltraAdapter fee; smart accounts kit; quote service Fabric chainId 999; .bak deprecation (ALL_IMPROVEMENTS 8791) |
**Quick wins & implementation checklist (high priority, no infra)**
| ID | Task |
|----|------|
| W1-18 | Add progress indicators to scripts; config validation in CI/pre-deploy |
| W1-19 | Secure validator key permissions (chmod 600, chown besu) |
| W1-20 | Secret management audit; input validation in scripts; security scanning automation (ALL_IMPROVEMENTS 4851) |
| W1-21 | Configuration validation (JSON/YAML schema); config templates; env standardization (5254) |
**MetaMask / explorer (optional, parallel)**
| ID | Task |
|----|------|
| W1-22 | Token-aggregation hardening; CoinGecko submission |
| W1-23 | Chain 138 Snap: market data UI; swap quotes; bridge routes; testing & distribution |
| W1-24 | Explorer: dark mode, network selector, sync indicator |
| W1-25 | Paymaster deploy (optional); Consensys outreach |
| W1-26 | API keys: Li.Fi, Jumper, 1inch (when keys available — per integration in parallel) |
**Improvements index 135 (Proxmox high/med/low, quick wins)**
| ID | Task |
|----|------|
| W1-27 | ALL_IMPROVEMENTS 111 (Proxmox high: .env, validator keys, SSH, firewall, VLANs, metrics, health, backup, runbooks) — each item parallel |
| W1-28 | ALL_IMPROVEMENTS 1220 (Proxmox medium: error handling, logging, Loki, resource/network/DB optimization, CI/CD) |
| W1-29 | ALL_IMPROVEMENTS 2130 (Proxmox low: auto-scale, load balancing, multi-region, HSM, audit) |
| W1-30 | ALL_IMPROVEMENTS 3135 (Quick wins: progress indicators, --dry-run, config validation, FAQ, inline comments) |
**Improvements index 3667 (code quality, docs, security, config, monitoring DX)**
| ID | Task |
|----|------|
| W1-31 | ALL_IMPROVEMENTS 3643 (script shebang, set -euo, header template, shellcheck, consolidation, lib, perf, doc gen) |
| W1-32 | ALL_IMPROVEMENTS 4447 (doc consolidation, accuracy, inline doc, API doc) |
| W1-33 | ALL_IMPROVEMENTS 4857 (security audit, validation, scanning, RBAC, config validation, templates, tests, CI) |
| W1-34 | ALL_IMPROVEMENTS 5867 (logging, metrics, health, DevContainer, IDE, backup review) |
**Improvements index 6891 (docs, infra design, codebase, placeholders)**
| ID | Task |
|----|------|
| W1-35 | ALL_IMPROVEMENTS 6874 (docs: quick ref, decision trees, config templates, examples, glossary) |
| W1-36 | ALL_IMPROVEMENTS 7581 (Phase 14 design, missing containers list — design only in Wave 1) |
| W1-37 | ALL_IMPROVEMENTS 8286 (smom audits, BRG, CCIP AMB, dbis_core, IRU — same as W1-14 to W1-17) |
| W1-38 | ALL_IMPROVEMENTS 8791 (placeholders — same as W1-17) |
**Improvements index 92139 (MetaMask, Tezos/CCIP, Besu, RPC, orchestration, maintenance)**
| ID | Task |
|----|------|
| W1-39 | ALL_IMPROVEMENTS 92105 (MetaMask/explorer — parallel by task) |
| W1-40 | ALL_IMPROVEMENTS 106121 (Tezos/Etherlink/CCIP — config and scripts in parallel) |
| W1-41 | ALL_IMPROVEMENTS 122126 (Besu/blockchain) |
| W1-42 | ALL_IMPROVEMENTS 127130 (RPC translator) |
| W1-43 | ALL_IMPROVEMENTS 131134 (Orchestration portal) |
| W1-44 | ALL_IMPROVEMENTS 135139 (Maintenance procedures — document/automate) |
---
## Wave 2 — Infra / deploy (parallel by host or component)
| ID | Task | Parallelize by |
|----|------|----------------|
| W2-1 | Deploy monitoring stack (Prometheus, Grafana, Loki, Alertmanager) | By component or single deployer |
| W2-2 | Grafana published via Cloudflare Access; alerts configured | After stack up |
| W2-3 | VLAN enablement: apply UDM Pro VLAN config; Proxmox bridge; migrate services to VLANs | By VLAN or by host |
| W2-4 | Phase 3 CCIP: Ops/Admin (5400-5401); NAT pools; commit/execute/RMN script expansion | Ops first, then NAT, then scripts |
| W2-5 | Phase 4: Sovereign tenant VLANs; isolation; access control | By tenant or by VLAN |
| W2-6 | Missing containers: 3 VMIDs only (2506, 2507, 2508) — see MISSING_CONTAINERS_LIST.md | By VMID or by host |
| W2-7 | DBIS services start (1010010151, etc.); additional Hyperledger | By host |
| W2-8 | NPMplus HA (Keepalived, secondary 10234) | Optional; single change |
---
## Wave 3 — After Wave 2 (CCIP Fleet, tenant isolation)
| ID | Task | Depends on |
|----|------|------------|
| W3-1 | CCIP Fleet full deploy: 16 commit (5410-5425), 16 execute (5440-5455), 7 RMN (5470-5476) | W2-4 (Ops/Admin, NAT) |
| W3-2 | Phase 4 tenant isolation enforcement; access control | W2-3 / W2-5 (VLANs) |
---
## Ongoing (no wave)
| ID | Task | Frequency |
|----|------|-----------|
| O-1 | Monitor explorer sync | Daily |
| O-2 | Monitor RPC 2201 | Daily |
| O-3 | Config API uptime | Weekly |
---
## How to run in full maximum parallel mode
1. **Gate:** Complete Wave 0 (W0-1, W0-2, W0-3) as soon as creds/access allow; these can run in parallel with each other.
2. **Parallel Wave 1:** Assign each W1-* item to an owner or automation; run all W1-* concurrently. Use [PARALLEL_TASK_STRUCTURE.md](PARALLEL_TASK_STRUCTURE.md) cohorts A/B where they overlap.
3. **Parallel Wave 2:** Run W2-1 through W2-8 in parallel (by host for D1D3 style tasks, by component for stack deploy).
4. **Parallel Wave 3:** After Wave 2 outputs exist, run W3-1 and W3-2 in parallel.
5. **Ongoing:** Schedule O-1, O-2, O-3 (cron or runbooks).
**Automation:** A runner can parse this file, group by wave, and execute each wave in parallel (e.g. one job per W1-* and W2-* item).
---
## Cross-references
- [TODO_TASK_LIST_MASTER.md](TODO_TASK_LIST_MASTER.md) — Consolidated checklist
- [REMAINING_TASKS_NEXT_STEPS_PHASES_REVIEW.md](REMAINING_TASKS_NEXT_STEPS_PHASES_REVIEW.md) — Full review
- [PARALLEL_TASK_STRUCTURE.md](PARALLEL_TASK_STRUCTURE.md) — Cohorts A/B/C/D (legacy; still valid for the-order, smom, dbis, OMNIS)
- [ALL_IMPROVEMENTS_AND_GAPS_INDEX.md](../ALL_IMPROVEMENTS_AND_GAPS_INDEX.md) — Items 1139 detail

View File

@@ -0,0 +1,274 @@
# Full Maximum Parallel Run Log
**Run started:** 2026-02-05
**Execution model:** By wave (Wave 0 → Wave 1 → Wave 2 → Wave 3); within each wave, tasks run in parallel where possible.
**2026-02-06:** Single runner `scripts/run-all-waves-parallel.sh` executed (maximum parallel mode). Wave 0 (W0-1, W0-3) and Wave 1 (parallel) and Wave 2 (W2-6 create 2506,2507,2508) completed. Wave 3 runbook-only.
---
## Wave 0 (gates / credentials)
| ID | Task | Result | Notes |
|----|------|--------|-------|
| W0-1 | Apply NPMplus RPC fix (405) | ⚠️ Skipped (no LAN) | Auth/connection failed from this environment. Run from host on LAN: `bash scripts/nginx-proxy-manager/update-npmplus-proxy-hosts-api.sh` |
| W0-2 | Execute sendCrossChain (real) | ⏳ Operator | Requires PRIVATE_KEY and LINK approval; run manually when ready. |
| W0-3 | NPMplus backup | ⚠️ Partial | Script ran; container 10233 not running so DB dump failed. API export attempted. Run again when NPMplus is up. |
---
## Wave 1 (full parallel — executed)
| ID | Task | Result | Notes |
|----|------|--------|-------|
| W1-verify | check-dependencies.sh | ✅ Pass | All required deps present (bash, curl, jq, openssl, ssh). |
| W1-verify | verify-end-to-end-routing.sh | ✅ Run | 25 DNS pass, 14 HTTPS pass, 6 RPC failures (405). Report: `docs/04-configuration/verification-evidence/e2e-verification-20260205_111157/`. |
| W1-18 | Progress indicators in scripts | ✅ Done | `run-full-verification.sh`: Progress 0/54/5 and Step N/5. `verify-end-to-end-routing.sh`: Progress domain N/25. |
**Not run in this session (require SSH, credentials, or external):** W1-1W1-17, W1-19W1-44 (security, monitoring deploy, VLAN, docs consolidation, dbis_core TS, smom audits, etc.). These remain for operator or future automated runs.
---
## Wave 1 continued (second batch — 2026-02-05)
| ID | Task | Result | Notes |
|----|------|--------|-------|
| W1-5 / D5 | export-prometheus-targets.sh | ✅ Done | Exported `smom-dbis-138/monitoring/prometheus/targets-proxmox.yml`. |
| W1-5 | Prometheus Besu 9545 config | ✅ Exists | `scripts/monitoring/prometheus-besu-config.yml` and `smom-dbis-138/monitoring/prometheus/scrape-proxmox.yml` already define Besu 9545 scrape. |
| W1-validate | smom-dbis-138 validate-genesis.sh | ⚠️ Fail | Exit 1 (likely missing lib/init.sh or config path in subshell). |
| W1-20 | shellcheck on verify scripts | ⏳ Skip | shellcheck not installed in environment. |
| W1-39 | smom-dbis-138 pnpm test | ⚠️ Skip | hardhat not found / node_modules missing; run `pnpm install` and ensure hardhat in PATH. |
| W1-11 | Documentation archive candidates | ✅ Done | Created [ARCHIVE_CANDIDATES.md](ARCHIVE_CANDIDATES.md) (by folder, deprecated list, next steps). |
---
## Wave 1 continued (third batch — 2026-02-05, full parallel)
| ID | Task | Result | Notes |
|----|------|--------|-------|
| W1-12 | Quick reference cards (Verification & E2E) | ✅ Done | Added §5 Verification & E2E and config/decision-tree links to [QUICK_REFERENCE_CARDS.md](../12-quick-reference/QUICK_REFERENCE_CARDS.md). |
| W1-12 / 6874 | Config templates & decision tree links | ✅ Done | Same doc: CONFIGURATION_DECISION_TREE, INGRESS_SOURCE_OF_TRUTH, 04-configuration README linked. |
| W1-31 | verify-min-gas-price.sh strict mode | ✅ Done | Added `set -euo pipefail` to `scripts/verify/verify-min-gas-price.sh`. |
**Re-run checks (same session):**
| Script | Result | Note |
|--------|--------|------|
| check-dependencies.sh | ✅ Pass | All deps present. |
| verify-min-gas-price.sh | ⚠️ Exit 2 | SSH to 192.168.11.x not available from this env (expected). |
---
## Wave 1 continued (fourth batch — 2026-02-05)
| ID | Task | Result | Notes |
|----|------|--------|-------|
| — | run-full-verification.sh (re-run) | ✅ Partial | Deps pass; DNS verification 19/19; UDM Pro public 80/443 OK; NPMplus step failed (off-LAN). Evidence: verification-evidence/dns-verification-*, udm-pro-verification-*. |
| W1-12 | QUICK_REFERENCE.md links | ✅ Done | Added "Parallel run & verification" section linking execution order, Wave 1 summary, Wave 2/3 checklist, run log, and verification commands. |
---
## Wave 1 continued (fifth batch — 2026-02-05, fix failures & complete options)
| ID | Task | Result | Notes |
|----|------|--------|-------|
| W1-validate | validate-genesis.sh (smom-dbis-138) | ✅ Fixed | Script now runs standalone: minimal log_* if init.sh not loaded; PROJECT_ROOT/CONFIG set before sourcing; QBFT supported (`.config.qbft` in addition to `.config.ibft2`). Passes from both proxmox root and smom-dbis-138 root. |
| — | verify-end-to-end-routing.sh (re-run) | ✅ Run | 25 DNS pass, 14 HTTPS pass, 6 failed (RPC 405 until NPMplus fix). Report: `e2e-verification-20260205_121640/`. |
| — | validate-config-files.sh | ✅ Pass | Found ip-addresses.conf, .env.example; optional env warnings only. |
| W1-39 | smom-dbis-138 pnpm test | ⚠️ Partial | Added `@openzeppelin/contracts-upgradeable` to package.json. Tests still fail: missing internal deps (e.g. `@emoney/interfaces`). Run from full workspace or add internal packages to resolve. |
| — | shellcheck | ⏳ Skip | Not installed (permission denied for apt). Install when available; run on `scripts/verify/*.sh`. |
---
## Wave 1 continued (sixth batch — 2026-02-05, review & optional)
| ID | Task | Result | Notes |
|----|------|--------|-------|
| — | TODO_TASK_LIST_MASTER sync | ✅ Done | Verification section: validate-genesis fix, validate-config-files, E2E, shellcheck optional. Monitoring: Besu 9545 config marked done. Validation commands: added check-dependencies, E2E-only, validate-config-files, validate-genesis, run-shellcheck. Status links to run log and Wave 1/2/3 docs. |
| — | Optional shellcheck script | ✅ Done | Added `scripts/verify/run-shellcheck.sh` — runs shellcheck on verify scripts when installed. |
| W1-39 | Hardhat @emoney resolution | ⚠️ Reverted | prepare-hardhat-emoney.js + symlink caused HH415 duplicate sources (contracts/emoney vs @emoney). Use `forge test` for full smom-dbis-138 tests; `pnpm test` remains limited unless Hardhat remapping plugin used. |
---
## Wave 1 continued (seventh batch — 2026-02-05, code complete & tested)
| ID | Task | Result | Notes |
|----|------|--------|-------|
| W1-18 / W1-21 | Config validation in run-full-verification | ✅ Done | Added Step 0/6: config validation (validate-config-files.sh). TOTAL_STEPS=6; Step 6 = generate source-of-truth. |
| — | All verifications run (parallel) | ✅ Pass | check-dependencies, validate-config-files, validate-genesis, daily-weekly-checks daily — all passed. run-shellcheck exit 1 (shellcheck not installed). |
| — | run-full-verification.sh with Step 0 | ✅ Run | Step 0 config validation passed; Steps 12 (DNS, UDM Pro) passed. (Step 3 NPMplus fails off-LAN as expected.) |
| — | daily-weekly-checks.sh | ✅ Tested | `daily` mode: explorer SKIP, RPC OK; exit 0. Script has set -euo pipefail. |
---
## Wave 1 continued (eighth batch — 2026-02-05, maintenance scripts & cron)
| ID | Task | Result | Notes |
|----|------|--------|-------|
| W0 / W1-8 | run-wave0-from-lan.sh | ✅ Done | Runs W0-1 (NPMplus RPC fix) and W0-3 (backup); `--dry-run`, `--skip-backup`, `--skip-rpc-fix`. Tested. |
| W1-8 | schedule-npmplus-backup-cron.sh | ✅ Done | `--install` / `--show`; daily 03:00. Tested. |
| O-1O-3 | schedule-daily-weekly-cron.sh | ✅ Done | Daily 08:00, weekly Sun 09:00 for daily-weekly-checks.sh. Wired in checklist, TODO, OPERATIONAL_RUNBOOKS, scripts/README. Tested. |
| — | Docs | ✅ Done | WAVE2_WAVE3_OPERATOR_CHECKLIST, TODO validation table, OPERATIONAL_RUNBOOKS, scripts/README updated. |
| — | Re-run tests | ✅ Pass | check-dependencies, run-wave0-from-lan --dry-run, schedule-*-cron --show, daily-weekly-checks daily, validate-config-files, run-full-verification (steps 02 pass; step 3 NPMplus fails off-LAN). |
---
## Wave 1 continued (ninth batch — 2026-02-05, shellcheck optional & Phase 4 runbook)
| ID | Task | Result | Notes |
|----|------|--------|-------|
| W1-20 / §3 | run-shellcheck.sh --optional | ✅ Done | With `--optional`, exits 0 when shellcheck not installed (CI-friendly). |
| Phase 4 | OPERATIONAL_RUNBOOKS § Phase 4 | ✅ Done | Phase 4 runbook paragraph: script, ORCHESTRATION_DEPLOYMENT_GUIDE, NETWORK_ARCHITECTURE, UDM_PRO_FIREWALL. |
| Phase 4 | phase4-sovereign-tenants.sh | ✅ Done | Added `--show-steps`, `--dry-run`; runbook links. scripts/README §13 Phase 4. |
| TODO | Phase 4 & shellcheck | ✅ Done | Phase 4 marked done (runbook + script); shellcheck marked done (--optional). |
| — | Tests | ✅ Pass | run-shellcheck.sh --optional (exit 0); phase4 --show-steps, --dry-run; check-dependencies; validate-config-files. |
---
## Wave 1 continued (tenth batch — 2026-02-05, CI validation & secure-validator-keys)
| ID | Task | Result | Notes |
|----|------|--------|-------|
| CI | run-all-validation.sh | ✅ Done | Single entry point: check-dependencies + validate-config-files + optional validate-genesis. `--skip-genesis` to skip genesis. |
| W1-19 | secure-validator-keys.sh --dry-run | ✅ Done | Added `--dry-run`; run on Proxmox as root. Documented in OPERATIONAL_RUNBOOKS, scripts/README. |
| — | Docs | ✅ Done | TODO: run-all-validation in validation table; §4 "1139" CI validation note. OPERATIONAL_RUNBOOKS: Phase 2 Security links to secure-validator-keys, SSH, firewall scripts. |
| — | Tests | ✅ Pass | run-all-validation.sh and run-all-validation.sh --skip-genesis both exit 0. secure-validator-keys.sh --dry-run exits 1 off-Proxmox (expected). |
---
## Wave 2 & Wave 3
Not run (require Proxmox/SSH, running NPMplus, or NAT/CCIP infra). **Operator checklist:** [WAVE2_WAVE3_OPERATOR_CHECKLIST.md](WAVE2_WAVE3_OPERATOR_CHECKLIST.md).
---
## Wave 1 completion summary (2026-02-05)
All Wave 1 tasks are classified and documented:
- **[WAVE1_COMPLETION_SUMMARY.md](WAVE1_COMPLETION_SUMMARY.md)** — Status of every W1-1W1-44 (Done / Operator / Documented / Deferred).
- **[WAVE2_WAVE3_OPERATOR_CHECKLIST.md](WAVE2_WAVE3_OPERATOR_CHECKLIST.md)** — Ordered checklist for Wave 0, Wave 2, Wave 3, and Ongoing.
**Run complete (automation scope):** All Wave 1 items that can be done without SSH/LAN/credentials are done or documented. Remaining work is operator-driven (Wave 0, W1 operator tasks, Wave 2, Wave 3).
**Code changes completed and tested (2026-02-05):**
- run-full-verification.sh: Step 0 config validation added (6 steps total); tested.
- check-dependencies, validate-config-files, validate-genesis, daily-weekly-checks daily: all passed.
- run-shellcheck: skipped (shellcheck not installed).
- All scripts in scripts/verify and scripts/maintenance/daily-weekly-checks.sh use set -euo pipefail where applicable.
---
## Wave 1 continued (eleventh batch — 2026-02-05, full maximum parallel: remaining completions)
| ID | Task | Result | Notes |
|----|------|--------|-------|
| CI | run-all-validation.sh --skip-genesis | ✅ Pass | Dependencies OK; config OK; genesis skipped. |
| Config | validate-config-files.sh | ✅ Pass | ip-addresses.conf, .env.example; optional env warnings. |
| W1-1 | setup-ssh-key-auth.sh --dry-run | ✅ Run | Prints steps; apply requires operator on each host. |
| W1-2 | firewall-proxmox-8006.sh --dry-run | ✅ Run | UFW commands shown; ADMIN_CIDR=192.168.11.0/24. |
| W1-5 / W1-7 | phase2-observability.sh --config-only | ✅ Run | prometheus.yml, alertmanager.yml written to config/monitoring/. |
| CCIP | ccip-deploy-checklist.sh | ✅ Run | VMID ranges and deployment order printed; env warnings (CCIP_ETH_*). |
| W1-8 | schedule-npmplus-backup-cron.sh --show | ✅ Run | Crontab line shown (03:00). |
| Phase 4 | phase4-sovereign-tenants.sh --show-steps | ✅ Run | Five steps and runbook links. |
| Backup | automated-backup.sh (no --with-npmplus) | ✅ Run | Config backup: backups/configs/proxmox-configs-20260205_155139. |
| Shellcheck | run-shellcheck.sh --optional | ✅ Exit 0 | shellcheck not installed; optional mode. |
| Wave 0 | run-wave0-from-lan.sh --dry-run | ✅ Run | W0-1, W0-3 dry-run; W0-2 reminder. |
**Summary:** All automatable Wave 1 validations, dry-runs, config generation, and checklists executed in parallel. Wave 0 and apply steps remain operator/LAN/creds.
---
## 2026-02-06 — run-all-waves-parallel.sh (maximum parallel mode)
| Wave | Task | Result | Notes |
|------|------|--------|-------|
| **Wave 0** | run-via-proxmox-ssh.sh wave0 --host 192.168.11.11 | ✅ Done | W0-1: NPMplus RPC fix — 19 proxy hosts updated. W0-3: backup ran; API auth warning (NPM_PASSWORD/container). W0-2: run run-send-cross-chain.sh without --dry-run when ready. |
| **Wave 1** | secure-env-permissions, schedule-npmplus-backup-cron --install, schedule-daily-weekly-cron --install, setup-ssh-key-auth --dry-run, firewall-proxmox-8006 --dry-run, run-shellcheck --optional, validate-config-files | ✅ Done | All ran in parallel. Logs in temp dir. |
| **Wave 2 (W2-6)** | create-missing-containers-2506-2508.sh on r630-01 | ✅ Done | Containers 2506 (192.168.11.202), 2507 (192.168.11.203), 2508 (192.168.11.204) created on 192.168.11.11. IPs .256/.257/.258 in doc invalid; script uses .202/.203/.204. Post-create: JWT, discovery disabled per MISSING_CONTAINERS_LIST. |
| **Wave 3** | Runbook-only | — | W3-1 CCIP Fleet, W3-2 Phase 4 tenant isolation — see FULL_PARALLEL_EXECUTION_ORDER and WAVE2_WAVE3_OPERATOR_CHECKLIST. |
**Scripts added:** `scripts/run-all-waves-parallel.sh`, `scripts/create-missing-containers-2506-2508.sh`.
---
## 2026-02-05 — Full parallel: config cleanup & remaining automatable items
| Category | Task | Result | Notes |
|----------|------|--------|-------|
| **Config cleanup** | ip-addresses.conf | ✅ Done | RPC_LUIS_2=.202, RPC_PUTU_1=.203, RPC_PUTU_2=.204 (was .256/.257/.258). |
| **Config cleanup** | MISSING_CONTAINERS_LIST.md | ✅ Done | Table and intro updated to deployed IPs .202/.203/.204; 25062508 created on r630-01. |
| **Config cleanup** | Other docs/scripts | ✅ Done | REMAINING_WORK_DETAILED_STEPS.md, CHAIN138_JWT_AUTH_REQUIREMENTS.md; create-all-chain138-containers-direct.sh, create-chain138-containers.sh, generate-jwt-token-for-container.sh, repair-corrupted-ip-replacements.sh, fix-remaining-hardcoded-ips.sh — defaults/refs updated to .202/.203/.204. |
| **Validation** | run-all-validation.sh --skip-genesis | ✅ Pass | Dependencies OK; config OK. |
| **Validation** | validate-config-files.sh | ✅ Pass | ip-addresses.conf, .env.example. |
| **Cron** | schedule-daily-weekly-cron.sh --show | ✅ Confirmed | O-1, O-2 daily 08:00; O-3 weekly Sun 09:00. |
| **Cron** | schedule-npmplus-backup-cron.sh --show | ✅ Confirmed | NPMplus backup 03:00 when installed. |
**Remaining (operator / LAN / creds only):** Wave 0 W0-2 (sendCrossChain real), W0-3 (NPMplus backup when up); post-create 25062508 (Besu config, JWT, discovery off); W1-1/W1-2 --apply; Wave 2 (monitoring stack, VLAN, CCIP, Phase 4, DBIS, NPMplus HA); Wave 3 (CCIP Fleet, Phase 4 isolation). See [REMAINING_WORK_DETAILED_TASKS.md](REMAINING_WORK_DETAILED_TASKS.md).
---
## 2026-02-06 — Full parallel: remaining safe tasks
| Task | Result | Notes |
|------|--------|-------|
| W1-8 NPMplus backup cron | Done | `schedule-npmplus-backup-cron.sh --install` — daily 03:00 installed. |
| W1-1 setup-ssh-key-auth --dry-run | Done | Steps printed; apply = operator. |
| W1-2 firewall-proxmox-8006 --dry-run | Done | UFW commands shown; apply = operator. |
| daily-weekly-checks.sh all | Done | RPC 2201 OK; explorer/config API skip off-LAN. |
| run-all-validation.sh --skip-genesis | Pass | Dependencies and config OK. |
| run-send-cross-chain.sh 0.01 --dry-run | Run | Dry-run OK; real run when PRIVATE_KEY/LINK ready. |
| phase2-observability.sh --config-only | Done | prometheus.yml, alertmanager.yml in config/monitoring/. |
| secure-env-permissions.sh --dry-run | Done | |
| validate-config-files.sh | Pass | |
**Additional parallel batch (same session):** ccip-deploy-checklist.sh ✅; phase4-sovereign-tenants.sh --show-steps ✅; run-shellcheck.sh --optional ✅ (shellcheck not installed); check-dependencies.sh ✅; automated-backup.sh --dry-run ✅; run-all-validation.sh --skip-genesis ✅. No further automatable items; remainder is operator-only (see REMAINING_WORK_DETAILED_TASKS.md § Automation complete).
---
## 2026-02-06 — SSH to Proxmox: copy then run (r630-01)
Scripts copied to host first, then run via SSH (run-via-proxmox-ssh.sh extended with copy + secure-keys modes).
| Task | Result | Notes |
|------|--------|-------|
| copy --host 192.168.11.11 | Done | Extended set copied to /tmp/proxmox-scripts-run (.env, config, run-wave0-from-lan, update-npmplus, backup-npmplus, secure-validator-keys, create-missing-containers-2506-2508). |
| wave0 --host 192.168.11.11 | Done | W0-1: 19 NPMplus proxy hosts updated. W0-3: backup ran; direct DB copy failed (container may be down); API export warning. W0-2: run run-send-cross-chain.sh without --dry-run when ready. |
| secure-keys --host 192.168.11.11 | Done (dry-run) | Would secure validator keys in 10001004; 10001002 secured (dry-run); 10031004 not running, skipped. Use --apply to run for real. |
**Remaining on host:** Post-create 25062508 (Besu config, JWT, discovery off) — run from REMOTE_DIR or copy configure scripts; W1-1/W1-2 --apply when ready.
---
## 2026-02-06 — "Still to do on the host" completion
| Task | Result | Notes |
|------|--------|-------|
| secure-validator-keys --apply | Done | `run-via-proxmox-ssh.sh secure-keys --apply --host 192.168.11.11`. Containers 1000, 1001, 1002 secured; 10031004 skipped (not running). |
| Post-create 25062508 (Besu config) | Run / ready | IPs fixed in configure-besu-chain138-nodes.sh (.202/.203/.204). Script run with PROXMOX_HOST=192.168.11.11 exited early (collect_enodes may need Besu running on at least one node on that host). Once Besu is installed and running on 25062508 (or other nodes on r630-01), run: `PROXMOX_HOST=192.168.11.11 bash scripts/run-configure-besu-on-host.sh`. |
**Wrapper:** `scripts/run-configure-besu-on-host.sh [HOST]` — runs configure-besu with 10m timeout.
**Update (review):** Besu nodes on r630-01 are all running (10001002, 15001502, 25002508 including 25062508). PROJECT_ROOT in `configure-besu-chain138-nodes.sh` was fixed (was pointing to archive/; now uses repo root so `config/ip-addresses.conf` is found). **Next step:** run the configure script and let it finish (can take 510 min):
`cd /home/intlc/projects/proxmox && PROXMOX_HOST=192.168.11.11 bash scripts/run-configure-besu-on-host.sh`
Note: script only configures containers on the single PROXMOX_HOST (1003, 1004, 1503, 1504 are on ml110 and are skipped when host is r630-01).
---
## 2026-02-06 — Besu configure (post-create 25062508) completed
| Task | Result | Notes |
|------|--------|-------|
| configure-besu-chain138-nodes.sh fixes | Done | collect_enodes: logs to stderr so only path on stdout. generate_static_nodes: Python via env vars (ENODES_FILE, OUTPUT_FILE) to avoid heredoc argv issues. deploy_to_container: trim path vars for scp. Discovery fallback: run inside container via `pct exec $vmid -- bash -c "..."`. WORK_DIR under OUTPUT_DIR; post-restart sleep 1s. run-configure-besu-on-host.sh timeout 900s. |
| PROXMOX_HOST=192.168.11.11 (r630-01) | Done | Collected 6 enodes (1000, 1001, 1002, 1500, 1501, 1502). Deployed static-nodes.json and permissioned-nodes.json to all running Besu nodes (25002508, 10001002, 15001502). Discovery disabled for 2500, 25032508; enabled for 25012502, validators, sentries. RPC 25062508: no config file / no Besu service found (expected if not yet configured); files deployed. Configuration complete. |
| PROXMOX_HOST=192.168.11.10 (ml110) | Done | Collected 3 enodes (1003, 1004, 1503). Deployed to 1003, 1004, 1504, 1503. Configuration complete. |
**Note:** Enode extraction for RPC nodes (25002508) fails (no nodekey at expected paths); static-nodes/permissioned-nodes use validator + sentry enodes only. For full mesh you can add RPC enodes manually or extend the script to read from admin_nodeInfo when available.
---
## Next steps
1. **Wave 0:** From host on LAN: W0-1 (NPMplus update), W0-3 (backup when NPMplus up); W0-2 (sendCrossChain real) when keys and LINK ready.
2. **Wave 1 operator:** W1-1, W1-2 apply (--apply when ready); W1-8 cron install (NPM_PASSWORD); W1-19, W1-20, W1-27; install shellcheck (run on `scripts/verify/*.sh`). smom-dbis-138: validate-genesis ✅ fixed; pnpm test needs internal workspace deps (e.g. @emoney/interfaces) or run from full workspace.
3. **Wave 2 & 3:** Follow [WAVE2_WAVE3_OPERATOR_CHECKLIST.md](WAVE2_WAVE3_OPERATOR_CHECKLIST.md).
4. **Ongoing:** O-1O-5 ✅ completed (cron + token list validated). See [REMAINING_ITEMS_FULL_PARALLEL_LIST.md](REMAINING_ITEMS_FULL_PARALLEL_LIST.md).

View File

@@ -1,5 +1,11 @@
# Markdown File Maintenance Guide
**Last Updated:** 2026-01-31
**Document Version:** 1.0
**Status:** Active Documentation
---
**Last Updated**: 2026-01-05
**Purpose**: Guidelines for maintaining clean, organized markdown files

View File

@@ -0,0 +1,95 @@
# Master Documentation Review — Inconsistencies and Gaps (2026-02-05)
**Purpose:** Single review of all master docs for consistency with the canonical missing-containers list (2506, 2507, 2508 only) and with the SSH inventory (2026-02-05). Apply fixes so master docs stay aligned.
**2026-02-06 addendum:** Option B (RPC via Cloudflare Tunnel) reflected across MASTER_INDEX, NETWORK_CONFIGURATION_MASTER, CLOUDFLARE_ROUTING_MASTER, RPC_ENDPOINTS_MASTER, OPERATIONAL_RUNBOOKS, 05-network/README, docs/README, NETWORK_ARCHITECTURE, DNS_ENTRIES_COMPLETE_STATUS for consistency.
**Canonical source for missing VMIDs:** [03-deployment/MISSING_CONTAINERS_LIST.md](../03-deployment/MISSING_CONTAINERS_LIST.md)
---
## 1. Inconsistencies Found
### 1.1 DEPLOYMENT_STATUS_MASTER.md
| Issue | Location | Current | Should be |
|-------|----------|---------|-----------|
| Besu RPC on ml110 | § Current Container Inventory — ml110 | "2500-2502, 2503-2508 (9 containers)" | 25032505 are on **r630-01** (besu-rpc-hybx-1/2/3). 25062508 are **missing**. ml110 has 25002502 and **23032308** (Ali/Luis/Putu RPC). |
| Running count ml110 | Same | "Running Containers (20)" | Adjust to match actual VMIDs (e.g. include 1504, 23032308; exclude 25032508 from ml110). |
| Hyperledger on r630-01 | § r630-01 — Stopped | "Hyperledger services: 5200, 6000, 6400" listed under **Stopped** | SSH review: 5200 (cacti-1), 6000 (fabric-1), 6400 (indy-1) are **running** on r630-01. Move to running or separate "Running (Hyperledger)" line. |
| Last Updated | Footer | 2026-01-15 | 2026-02-05; note "Container inventory reconciled with SSH review (see MISSING_CONTAINERS_LIST.md)." |
### 1.2 CHAIN138_AUTOMATION_SCRIPTS.md
| Issue | Location | Current | Should be |
|-------|----------|---------|-----------|
| Create containers | Step 1: Create Containers | "create all required containers … 1504, 2503-2508, 6201, other services" | Only **2506, 2507, 2508** need to be created. 1504, 25032505, 6201, etc. exist. Reference [MISSING_CONTAINERS_LIST.md](MISSING_CONTAINERS_LIST.md) as canonical. |
### 1.3 MASTER_INDEX.md
| Issue | Location | Current | Should be |
|-------|----------|---------|-----------|
| 03-deployment directory | § Directory Structure | MISSING_CONTAINERS_LIST.md and DEPLOYMENT_STATUS_MASTER.md not listed | Add both to 03-deployment/ so they are discoverable. |
| Deployment table | § Core docs table | DEPLOYMENT_STATUS_MASTER not in table | Add row for DEPLOYMENT_STATUS_MASTER and for MISSING_CONTAINERS_LIST (or reference under OPERATIONAL_RUNBOOKS). |
### 1.4 DEPLOYMENT_TODO_MASTER.md
| Issue | Location | Current | Should be |
|-------|----------|---------|-----------|
| Missing containers | — | Not mentioned | Add one line: "Missing containers: 3 only (2506, 2507, 2508) — see [MISSING_CONTAINERS_LIST.md](MISSING_CONTAINERS_LIST.md)." |
| Last Updated | Footer | 2026-01-15 | 2026-02-05 |
### 1.5 REMAINING_TASKS_NEXT_STEPS_PHASES_REVIEW.md
| Issue | Location | Current | Should be |
|-------|----------|---------|-----------|
| Wave 2 "missing containers" | § Execution order table | "missing containers" with no count or ref | Add "(3 VMIDs only: see [MISSING_CONTAINERS_LIST.md](../03-deployment/MISSING_CONTAINERS_LIST.md))". |
### 1.6 REMAINING_TASKS_MASTER_20260201.md (reports)
| Issue | Location | Current | Should be |
|-------|----------|---------|-----------|
| Missing containers | Pending sections | Not mentioned | Optional: add "Missing containers: 3 (2506, 2507, 2508) — [MISSING_CONTAINERS_LIST.md](../docs/03-deployment/MISSING_CONTAINERS_LIST.md)." |
### 1.7 PHASES_AND_TASKS_MASTER.md
| Issue | Location | Current | Should be |
|-------|----------|---------|-----------|
| Missing containers | Phase 3 — CCIP Fleet | No mention of missing containers | Optional: add note "Missing containers (3 only): see [MISSING_CONTAINERS_LIST.md](../03-deployment/MISSING_CONTAINERS_LIST.md)." so Phase 3 is aligned with MASTER_PLAN 3.2. |
---
## 2. Docs Already Consistent
- **MASTER_PLAN.md** — Phase 3.2: "3 only (2506, 2507, 2508)", links to MISSING_CONTAINERS_LIST. ✅
- **NEXT_STEPS_MASTER.md** — Missing Containers section: "3 (2506, 2507, 2508)", single source of truth ref. ✅
- **TODO_TASK_LIST_MASTER.md** — No duplicate missing list; references ALL_IMPROVEMENTS. ✅
- **WAVE2_WAVE3_OPERATOR_CHECKLIST.md** — W2-6: "3 VMIDs only (2506, 2507, 2508)". ✅
- **FULL_PARALLEL_EXECUTION_ORDER.md** — W2-6: same. ✅
- **ALL_IMPROVEMENTS_AND_GAPS_INDEX.md** — Item 79: "3 missing (2506, 2507, 2508)". ✅
- **MISSING_CONTAINERS_LIST.md** — Canonical header and single table. ✅
- **OPERATIONAL_RUNBOOKS.md** — Links to MISSING_CONTAINERS_LIST. ✅
---
## 3. Gaps (No Fix Required Here)
- **DEPLOYMENT_STATUS_CONSOLIDATED.md** vs **DEPLOYMENT_STATUS_MASTER.md** — Two status docs; MASTER is the one updated in this review. Consider one day consolidating or clearly labeling which is authoritative.
- **PHASES_AND_TASKS_MASTER** Phase 2 "Monitoring stack deployed" = full deploy; TODO_TASK_LIST_MASTER Phase 2 = config + runbook. Different granularity; acceptable.
- **RPC_ENDPOINTS_MASTER / ALL_VMIDS_ENDPOINTS** — 25062508 have IP/VMID mappings; some docs mark 25062508 as "Destroyed". For **creation** use MISSING_CONTAINERS_LIST; for **IP/port reference** keep RPC/VMID docs as-is.
---
## 4. Fixes Applied (checklist)
- [x] DEPLOYMENT_STATUS_MASTER: Updated ml110 inventory (25032508 → 23032308 + 25002502; note 25032505 on r630-01, 25062508 missing). Moved 5200, 6000, 6400 to running on r630-01. Updated date and reconciliation note.
- [x] CHAIN138_AUTOMATION_SCRIPTS: Step 1 "Create Containers" — only 2506, 2507, 2508; reference MISSING_CONTAINERS_LIST.
- [x] MASTER_INDEX: Added MISSING_CONTAINERS_LIST.md and DEPLOYMENT_STATUS_MASTER.md under 03-deployment/.
- [x] DEPLOYMENT_TODO_MASTER: Added missing-containers line and date.
- [x] REMAINING_TASKS_NEXT_STEPS_PHASES_REVIEW: Wave 2 added "(3 VMIDs only: see MISSING_CONTAINERS_LIST)".
- [x] REMAINING_TASKS_MASTER_20260201: Added missing-containers row. PHASES_AND_TASKS_MASTER Phase 3: added missing-containers task with ref.
---
**Review completed:** 2026-02-05
**Next review:** After next SSH inventory or when container list changes.

263
docs/00-meta/MASTER_PLAN.md Normal file
View File

@@ -0,0 +1,263 @@
# Master Plan — Gaps, Protection Layer, and Granular Admin Control
**Last Updated:** 2026-02-05
**Status:** Active
**Purpose:** Single source of truth for what to do: consolidates gaps, placeholders, and recommendations; defines the full protection layer and granular admin control panels at all levels; provides phased execution with references to detailed indexes.
This document does not duplicate the full 139-item tables or every recommendation. It links to existing indexes by ID range and section and adds the protection-layer and admin-panel strategy.
---
## 1. Document and Index Consolidation
**Current state:** Tasks and recommendations are spread across many files. This Master Plan is the single entry point.
| Index / list | Document | Item range or scope |
|--------------|----------|---------------------|
| **All requirements (master)** | [ALL_REQUIREMENTS.md](ALL_REQUIREMENTS.md) | Foundation, security, deployment (phases, CCIP, missing containers), backup, config, codebase, protection layer, waves, validation, optional |
| All improvements and gaps | [ALL_IMPROVEMENTS_AND_GAPS_INDEX.md](../ALL_IMPROVEMENTS_AND_GAPS_INDEX.md) | 139 items (111 Proxmox high, 1220 medium, 2130 low, 3135 quick wins, 3667 code/scripts, 6874 docs, 7591 infra, 92105 MetaMask/explorer, 106121 Tezos/CCIP, 122126 Besu, 127130 RPC translator, 131134 orchestration portal, 135139 maintenance) |
| Gaps and recommendations | [GAPS_AND_RECOMMENDATIONS_CONSOLIDATED.md](../GAPS_AND_RECOMMENDATIONS_CONSOLIDATED.md) | Security, config/DNS, code TODOs, docs, token aggregation, Tezos, operational |
| Next steps | [NEXT_STEPS_MASTER.md](NEXT_STEPS_MASTER.md) | Immediate, deployment phases, missing containers, codebase, optional, maintenance |
| TODO task list | [TODO_TASK_LIST_MASTER.md](TODO_TASK_LIST_MASTER.md) | Critical fixes, gas, verification, improvements 1139, security, monitoring, phases, codebase, docs |
| Required fixes and placeholders | [REQUIRED_FIXES_UPDATES_GAPS.md](../REQUIRED_FIXES_UPDATES_GAPS.md) | Build, contract/token, canonical list, placeholders in code, docs, tests |
| Phases and tasks | [PHASES_AND_TASKS_MASTER.md](PHASES_AND_TASKS_MASTER.md) | Phase 04 deployment, codebase tasks (smom, OMNIS, dbis_core, infra, docs, external) |
| **Remaining work (step-by-step)** | [REMAINING_WORK_DETAILED_STEPS.md](REMAINING_WORK_DETAILED_STEPS.md) | Wave 03, cron, API keys; "Can be accomplished now" list; 2026-02-05 completion note |
| Best practices checklist | [10-best-practices/IMPLEMENTATION_CHECKLIST.md](../10-best-practices/IMPLEMENTATION_CHECKLIST.md) | High / medium / low / quick wins |
| Placeholders and TBD | [PLACEHOLDERS_AND_TBD.md](../PLACEHOLDERS_AND_TBD.md), [PLACEHOLDERS_AND_REQUIRED_ADDITIONS_LIST.md](PLACEHOLDERS_AND_REQUIRED_ADDITIONS_LIST.md) | Per-component placeholders; required env, API keys, waves |
---
## 2. Protection Layer and Granular Admin Control Panels
**Goal:** Protect all tooling and infrastructure across every project and expose a full protection layer in granular admin control panels at all levels (human context, audit, trust boundaries).
### 2.1 Current state
| Component | Auth / protection | Gap |
|-----------|-------------------|-----|
| **dbis_core** | JWT + request signing, [admin-permission.middleware.ts](../../dbis_core/src/integration/api-gateway/middleware/admin-permission.middleware.ts), [AdminPermissionsService](../../dbis_core/src/core/admin/shared/admin-permissions.service.ts), SCB-scoped access | Strong; use as reference for central policy. |
| **smom-dbis-138/frontend-dapp** | [AdminPanel.tsx](../../smom-dbis-138/frontend-dapp/src/pages/AdminPanel.tsx) — RBAC, FunctionPermissions, AuditLogViewer, EmergencyControls; wallet/mainnet gating | Good; ensure it uses central permission and audit when Layer 1 exists. |
| **smom-dbis-138/orchestration/portal** | [auth.ts](../../smom-dbis-138/orchestration/portal/src/middleware/auth.ts) — `x-admin-token`, in-memory sessions | Weak; no central audit. Target: JWT + central permission + audit. |
| **multi-chain-execution** | [admin-routes.ts](../../multi-chain-execution/src/api/admin-routes.ts) — `ADMIN_API_KEY` / `x-admin-key` only | API key only. Target: JWT or client-credentials + audit. |
| **token-aggregation** | Token auth for admin routes | No user-level audit (ALL_IMPROVEMENTS #105). Target: JWT or federated + audit. |
| **OMNIS** | [AdminDashboard](../../OMNIS/src/pages/AdminDashboard.tsx), RoleManagement, role-based auth | Align with central permission when Layer 1 exists. |
| **explorer-monorepo** | Wallet auth + RequireTrack | Align with central permission when Layer 1 exists. |
| **Infra (Proxmox, MCP, scripts, config)** | Docs reference Cloudflare, nginx, VLANs | No unified identity or audit. Target: admin runner + audit. |
### 2.2 Admin surfaces using API key or in-memory token only
| Surface | Current | Target |
|---------|---------|--------|
| smom-dbis-138/orchestration/portal | x-admin-token, in-memory sessions | Use central JWT + permission + audit. |
| multi-chain-execution admin API | ADMIN_API_KEY / x-admin-key | Use central JWT or client credentials + audit. |
| token-aggregation admin routes | Token auth (no user-level audit) | Use central JWT or federated + audit. |
### 2.3 Target architecture
```mermaid
flowchart TB
subgraph layer1 [Layer 1 - Central policy and audit]
Policy[Identity roles permissions]
AuditLog[Central audit log]
end
subgraph layer2 [Layer 2 - Per-project enforcement]
DBIS[dbis_core API gateway]
SMOM[smom-dbis-138 frontend-dapp]
Portal[orchestration portal]
TokenAgg[token-aggregation]
MultiChain[multi-chain-execution]
OMNIS[OMNIS]
Explorer[explorer-monorepo]
InfraRunner[Admin runner for scripts and MCP]
end
subgraph layer3 [Layer 3 - Granular admin panels]
OrgPanel[Org-level panel]
ProjectPanel[Project-level panels]
ServicePanel[Service-level panels]
InfraPanel[Infra-level panel]
end
Policy --> DBIS
Policy --> SMOM
Policy --> Portal
Policy --> TokenAgg
Policy --> MultiChain
Policy --> OMNIS
Policy --> Explorer
Policy --> InfraRunner
DBIS --> AuditLog
SMOM --> AuditLog
Portal --> AuditLog
TokenAgg --> AuditLog
MultiChain --> AuditLog
InfraRunner --> AuditLog
OrgPanel --> Policy
OrgPanel --> AuditLog
ProjectPanel --> Policy
ServicePanel --> Policy
InfraPanel --> Policy
InfraPanel --> InfraRunner
```
### 2.4 Deliverables by panel level
| Level | Panel / surface | Gaps to fill | Recommendation |
|-------|-----------------|--------------|----------------|
| **Org** | New or extend DBIS global console | No single "who has what role across all projects" or global audit view | Add "Security and audit" section to [admin-console-frontend-plan.md](../../dbis_core/docs/admin-console-frontend-plan.md) Phase 4/6: global identity list, role matrix, central audit viewer (filter by project, service, user, action). |
| **Project** | smom-dbis-138 AdminPanel, DBIS/SCB consoles | dApp has RBAC and audit; DBIS console not yet built | Keep dApp as reference; ensure DBIS console (when built) uses same permission model and writes to same audit store. |
| **Service** | Orchestration portal, token-aggregation, multi-chain-execution | Portal: weak auth. Token-aggregation: auth for admin endpoints. Multi-chain: API key only. | (1) Replace portal auth with JWT + central permission + audit. (2) Add token-aggregation admin auth and audit. (3) Add multi-chain admin auth and audit. |
| **Infra** | Proxmox, MCP, scripts, configs | No identity or audit for script/MCP runs | Introduce "admin runner" or gateway: scripts and MCP calls go through it; identity + permission check; log to central audit. Document in this plan and [OPERATIONAL_RUNBOOKS.md](../03-deployment/OPERATIONAL_RUNBOOKS.md). |
### 2.5 Placeholders to resolve (protection context)
- **"Who asked what agent/tool to do what, when, outcome"** — Define schema and storage (e.g. in dbis_core or shared service) and document in this MASTER_PLAN and admin-console-frontend-plan.
- **Admin surfaces above** — All listed in table 2.2 with target "Use central JWT + permission + audit."
---
## 3. Gaps and Placeholders — Full List (Resolved into Actions)
Consolidated from [GAPS_AND_RECOMMENDATIONS_CONSOLIDATED.md](../GAPS_AND_RECOMMENDATIONS_CONSOLIDATED.md), [REQUIRED_FIXES_UPDATES_GAPS.md](../REQUIRED_FIXES_UPDATES_GAPS.md), [ALL_IMPROVEMENTS_AND_GAPS_INDEX.md](../ALL_IMPROVEMENTS_AND_GAPS_INDEX.md), and [NEXT_STEPS_MASTER.md](NEXT_STEPS_MASTER.md). Detailed tables stay in those docs; below are the resolution rules.
- **Secrets and API keys:** No real keys in `.env.example` (token-aggregation, root); use placeholders; document in [MASTER_SECRETS_INVENTORY.md](../04-configuration/MASTER_SECRETS_INVENTORY.md). Rotate any exposed keys.
- **Config/DNS TBDs:** the-order.sankofa.nexus, Sankofa cutover plan `<TARGET_IP>`, RPC_ENDPOINTS_MASTER placeholders — **When The Order / Sankofa deployed, update NPMplus and docs; remove TBD.**
- **Network placeholders:** Public blocks #2#6 in [NETWORK_ARCHITECTURE.md](../02-architecture/NETWORK_ARCHITECTURE.md) — **Document when assigned or mark reserved.**
- **Code placeholders:** See Section 3.1 below (one-line resolution table).
- **Documentation placeholders:** Emergency hotline and example URLs in dbis_core nostro-vostro — Done ("To be configured"). the-order REMAINING_TODOS.md — **Create or archive and fix links.**
- **Token aggregation:** Canonical addresses env-only — **Document required env in README and .env.example.** CoinGecko/CMC chain support — **Document in report API.**
- **Tezos/Etherlink:** Per [TEZOS_CCIP_REMAINING_ITEMS.md](../07-ccip/TEZOS_CCIP_REMAINING_ITEMS.md); add to execution as "External/contract/off-chain checklist."
### 3.1 Placeholders and TBDs — One-line resolution
| Item | Location | Resolution |
|------|----------|------------|
| API keys in .env.example | token-aggregation, root | Replace with placeholders; document in MASTER_SECRETS_INVENTORY; rotate if exposed. |
| the-order.sankofa.nexus | RPC_ENDPOINTS_MASTER, ALL_VMIDS_ENDPOINTS | When The Order portal deployed: add NPMplus proxy host and document IP:port. |
| Sankofa cutover plan TBDs | SANKOFA_CUTOVER_PLAN | Replace `<TARGET_IP>`, `<TARGET_PORT>` when Sankofa deployed. |
| sankofa.nexus / phoenix routes | RPC_ENDPOINTS_MASTER | Keep in sync with NPMplus; remove "placeholder (routes to Blockscout)" when pointing to Sankofa/Phoenix. |
| Public blocks #2#6 | NETWORK_ARCHITECTURE, NETWORK_CONFIGURATION_MASTER | Document when assigned or mark reserved. |
| AlltraAdapter fee | AlltraAdapter.sol | Implement configurable setBridgeFee; document in PLACEHOLDERS_AND_TBD. Update when ALL Mainnet fee known. |
| Smart accounts kit | DeploySmartAccountsKit.s.sol | Deploy EntryPoint, AccountFactory, Paymaster; set env; document in runbook and .env.example. |
| TezosRelayService | TezosRelayService.js | Implement real Tezos mint/transfer via Taquito/RPC or document mock and timeline. |
| EnhancedSwapRouter / DODOPMMProvider | EnhancedSwapRouter.sol, DODOPMMProvider.sol | Document until integrated; complete when pools/DODO available. |
| quote-service Fabric chainId | quote-service.ts | Set FABRIC_CHAIN_ID env when Fabric integrated; document. |
| dbis_core TODOs | metrics, risk-monitor, cache, alert, as4 liquidity | Implement or document (Prometheus, Redis, PagerDuty, liquidity reservation/release). |
| OMNIS Sankofa Phoenix SDK | identity, authProvider, authController | Integrate real SDK or document dependency and timeline. |
| the-order legal-documents | court-efiling, e-signature, document-security | Implement or document vendor/roadmap. |
| NPMplus HA alert, storage-monitor | monitor-ha-status.sh, storage-monitor.sh | Add notification (email/webhook). |
| CCIPLogger | CONTRACTS_TO_DEPLOY | Implement or remove from list. |
| Canonical token env | token-aggregation | Document required token address env vars in README and .env.example. |
| CoinGecko/CMC chain support | token-aggregation adapters | Document in report API; consider alternative source or CMC/CoinGecko submission. |
| Etherlink finality, route TBD, placeholder wallet/tx | TEZOS_CCIP_REMAINING_ITEMS, TEZOS_USDTZ_IMPLEMENTATION_ROADMAP | Set confirmation blocks when decided; replace TBD provider; no placeholder wallet/tx in production. |
| NPMplus HA, UDM Pro VLAN | PHASES_AND_TASKS_MASTER, runbooks | Optional: implement and document failover; document VLAN when planned. |
| Emergency hotline, example URLs | dbis_core nostro-vostro docs | Done: set to "To be configured." |
---
## 4. Recommendations and Suggestions — Integrated into Phases
All recommendations from [ALL_IMPROVEMENTS_AND_GAPS_INDEX.md](../ALL_IMPROVEMENTS_AND_GAPS_INDEX.md) (items 1139), [10-best-practices/IMPLEMENTATION_CHECKLIST.md](../10-best-practices/IMPLEMENTATION_CHECKLIST.md), [RECOMMENDATIONS_AND_SUGGESTIONS.md](../10-best-practices/RECOMMENDATIONS_AND_SUGGESTIONS.md), [DOCUMENTATION_ENHANCEMENTS_RECOMMENDATIONS.md](DOCUMENTATION_ENHANCEMENTS_RECOMMENDATIONS.md), [ADDITIONAL_OPTIMIZATION_RECOMMENDATIONS.md](../../smom-dbis-138/docs/ADDITIONAL_OPTIMIZATION_RECOMMENDATIONS.md), [TEZOS_CCIP_REMAINING_ITEMS.md](../07-ccip/TEZOS_CCIP_REMAINING_ITEMS.md), [rpc-translator-138/ALL_RECOMMENDATIONS.md](../../rpc-translator-138/ALL_RECOMMENDATIONS.md), orchestration portal RECOMMENDATIONS_SUMMARY, and [06-besu/COMPLETE_RECOMMENDATIONS_SUMMARY.md](../06-besu/COMPLETE_RECOMMENDATIONS_SUMMARY.md) are mapped into the phased execution below. Reference by phase and item range (e.g. Proxmox high 111 → IMPLEMENTATION_CHECKLIST + ALL_IMPROVEMENTS §1).
---
## 5. Phased Execution Summary
**Phase 0 — Foundation (done):** Per [PHASES_AND_TASKS_MASTER.md](PHASES_AND_TASKS_MASTER.md) Phase 0.
### Phase 1 — Critical fixes and protection-layer foundation
| Step | Action | Doc reference |
|------|--------|----------------|
| 1.1 | Secrets and config: Replace real-looking API keys in .env.example with placeholders; rotate if exposed. Document in MASTER_SECRETS_INVENTORY. | GAPS_AND_RECOMMENDATIONS §1 |
| 1.2 | Central policy and audit: Define identity/permission model and audit schema (who, what, when, resource, outcome). Implement or extend in dbis_core (or dedicated service): permission check API, audit append API. Document here and in admin-console-frontend-plan. | This plan §2 |
| 1.3 | Admin auth alignment: Portal → JWT + central permission + audit. Token-aggregation → auth and audit for admin endpoints. Multi-chain-execution → JWT or client-credentials + audit. | ALL_IMPROVEMENTS #105; this plan §2.2 |
| 1.4 | Code placeholders (high/medium): AlltraAdapter fee (configurable); Smart accounts deploy and env; TezosRelayService real path or documented mock. | REQUIRED_FIXES; GAPS_AND_RECOMMENDATIONS §3 |
### Phase 2 — Infrastructure and observability
| Step | Action | Doc reference |
|------|--------|----------------|
| 2.1 | Observability: Monitoring stack (Prometheus, Grafana, Loki, Alertmanager); Grafana via Cloudflare Access; alerts. | NEXT_STEPS_MASTER Phase 2; IMPLEMENTATION_CHECKLIST monitoring |
| 2.2 | Security hardening: SSH key-based auth; firewall Proxmox 8006; secure .env and validator keys. Security audits VLT-024, ISO-024; bridge integrations BRG-VLT, BRG-ISO. | IMPLEMENTATION_CHECKLIST high; PHASES_AND_TASKS_MASTER |
| 2.3 | Backups and runbooks: Automated backups; NPMplus backup; runbooks (add/remove validator, upgrade Besu, key rotation, recovery). | IMPLEMENTATION_CHECKLIST; TODO_TASK_LIST_MASTER §6 |
### Phase 3 — CCIP and missing containers
| Step | Action | Doc reference |
|------|--------|----------------|
| 3.1 | CCIP fleet: CCIP Ops/Admin (54005401), commit/execute/RMN nodes, NAT pools. | NEXT_STEPS_MASTER Phase 3; [CCIP_DEPLOYMENT_SPEC.md](../07-ccip/CCIP_DEPLOYMENT_SPEC.md) |
| 3.2 | Missing containers: 3 only (2506, 2507, 2508). Canonical list: [MISSING_CONTAINERS_LIST.md](../03-deployment/MISSING_CONTAINERS_LIST.md) | [MISSING_CONTAINERS_LIST.md](../03-deployment/MISSING_CONTAINERS_LIST.md) |
### Phase 4 — Granular admin panels and infra protection
| Step | Action | Doc reference |
|------|--------|----------------|
| 4.1 | Org-level panel: Global identity, role matrix, central audit viewer (filter by project/service/user/action). Add to admin-console-frontend-plan; implement when DBIS console is built. | admin-console-frontend-plan Phase 4/6 |
| 4.2 | Project-level panels: Ensure smom-dbis-138 AdminPanel and future DBIS/SCB consoles use central permission and audit. | This plan §2.4 |
| 4.3 | Service-level panels: Complete portal, token-aggregation, multi-chain auth and audit (from Phase 1.3); expose minimal "admin" or "security" view per service linking to central audit. | This plan §2.2, §2.4 |
| 4.4 | Infra-level panel: Design and document "admin runner" for scripts and MCP; who can run which script/MCP tool; all runs logged. Add infra admin view. Update OPERATIONAL_RUNBOOKS and this plan. | This plan §2.4; OPERATIONAL_RUNBOOKS |
### Phase 5 — Code quality, docs, and optional work
| Step | Action | Doc reference |
|------|--------|----------------|
| 5.1 | Code quality and scripts: ALL_IMPROVEMENTS 3667 (shebang, error handling, script consolidation, secret audit, config validation, testing). | ADDITIONAL_OPTIMIZATION_RECOMMENDATIONS |
| 5.2 | Documentation: ALL_IMPROVEMENTS 6874 (quick reference cards, decision trees, config templates, glossary, visuals, TOC). | DOCUMENTATION_ENHANCEMENTS_RECOMMENDATIONS |
| 5.3 | Optional: MetaMask/explorer (92105); Tezos/Etherlink/CCIP (106121); Besu (122126); RPC translator (127130); orchestration portal P1/P2 (131134); maintenance (135139). | ALL_IMPROVEMENTS and related docs |
---
## 6. Parallel Execution
Use [PARALLEL_TASK_STRUCTURE.md](PARALLEL_TASK_STRUCTURE.md) for cohorts. Within Phase 1: 1.1 and 1.4 can run in parallel; 1.2 then 1.3 (auth depends on central policy). Phase 2 can be parallelized by team (observability vs security vs backups). Phase 4.14.4 can run in parallel after Phase 1.21.3 are done.
---
## 7. Success Criteria and Maintenance
- **Master Plan success:** (1) This MASTER_PLAN.md exists and is linked from MASTER_INDEX. (2) Every placeholder/TBD has a one-line resolution (Section 3.1). (3) Protection layer and admin panel levels are described and assigned to phases. (4) All 139 improvement items and all recommendation docs are referenced by phase/section without duplication.
- **Ongoing:** Update this plan when new gaps or recommendations are added; keep NEXT_STEPS_MASTER and ALL_IMPROVEMENTS as the detailed checklists; this plan remains the single entry point and strategy (protection layer + panels).
---
## 8. File and Reference Summary
| Purpose | Document |
|---------|----------|
| Single Master Plan | This file: [MASTER_PLAN.md](MASTER_PLAN.md) |
| Detailed gaps and recommendations | [GAPS_AND_RECOMMENDATIONS_CONSOLIDATED.md](../GAPS_AND_RECOMMENDATIONS_CONSOLIDATED.md), [ALL_IMPROVEMENTS_AND_GAPS_INDEX.md](../ALL_IMPROVEMENTS_AND_GAPS_INDEX.md) |
| Required fixes and code placeholders | [REQUIRED_FIXES_UPDATES_GAPS.md](../REQUIRED_FIXES_UPDATES_GAPS.md), [PLACEHOLDERS_AND_TBD.md](../PLACEHOLDERS_AND_TBD.md) |
| Next steps and phases | [NEXT_STEPS_MASTER.md](NEXT_STEPS_MASTER.md), [PHASES_AND_TASKS_MASTER.md](PHASES_AND_TASKS_MASTER.md) |
| TODO checklist | [TODO_TASK_LIST_MASTER.md](TODO_TASK_LIST_MASTER.md) |
| Best practices | [10-best-practices/IMPLEMENTATION_CHECKLIST.md](../10-best-practices/IMPLEMENTATION_CHECKLIST.md), [RECOMMENDATIONS_AND_SUGGESTIONS.md](../10-best-practices/RECOMMENDATIONS_AND_SUGGESTIONS.md) |
| Protection layer and admin console plan | [dbis_core/docs/admin-console-frontend-plan.md](../../dbis_core/docs/admin-console-frontend-plan.md) |
| Parallel cohorts | [PARALLEL_TASK_STRUCTURE.md](PARALLEL_TASK_STRUCTURE.md) |
---
## 9. Admin Central API (implementation)
The following was implemented for Phase 1 central policy and audit:
- **dbis_core:** [admin-audit.service.ts](../../dbis_core/src/core/admin/shared/admin-audit.service.ts) persists to `audit_logs` (eventType `admin_action`). [admin-central.routes.ts](../../dbis_core/src/integration/api-gateway/routes/admin-central.routes.ts) exposes:
- `POST /api/admin/central/audit` — append audit (auth: `X-Admin-Central-Key`)
- `GET /api/admin/central/audit` — query (employeeId, resourceType, project, service, limit)
- `POST /api/admin/central/permission-check` — body `{ subjectId, permission }`, response `{ allowed }`
- **Orchestration portal:** JWT support in [auth.ts](../../smom-dbis-138/orchestration/portal/src/middleware/auth.ts) (Bearer + `ADMIN_JWT_SECRET` or `JWT_SECRET`). [central-audit.ts](../../smom-dbis-138/orchestration/portal/src/services/central-audit.ts) sends audit when `DBIS_CENTRAL_URL` and `ADMIN_CENTRAL_API_KEY` are set.
- **Token-aggregation:** [central-audit.ts](../../smom-dbis-138/services/token-aggregation/src/api/central-audit.ts) and calls in [admin.ts](../../smom-dbis-138/services/token-aggregation/src/api/routes/admin.ts) after each admin mutation.
- **Multi-chain-execution:** [central-audit.ts](../../multi-chain-execution/src/api/central-audit.ts) and audit calls in [admin-routes.ts](../../multi-chain-execution/src/api/admin-routes.ts). Optional `X-Admin-Subject` header for audit identity.
**Env vars:**
| Var | Where | Purpose |
|-----|--------|--------|
| `ADMIN_CENTRAL_API_KEY` | dbis_core, orchestration portal, token-aggregation, multi-chain-execution | Secret for service-to-service auth to Admin Central API |
| `DBIS_CENTRAL_URL` | orchestration portal, token-aggregation, multi-chain-execution | Base URL of dbis_core API (e.g. `https://dbis-api.d-bis.org`) |
| `ADMIN_JWT_SECRET` or `JWT_SECRET` | orchestration portal | Optional; when set, login issues JWT and Bearer is accepted |
Document in [MASTER_SECRETS_INVENTORY.md](../04-configuration/MASTER_SECRETS_INVENTORY.md) and keep values out of repo.
---
**Document Status:** Active
**Maintained By:** Infrastructure Team
**Review:** Update when new gaps or recommendations are added or items are completed.

View File

@@ -0,0 +1,138 @@
# All Next Steps — Consolidated List
**Last Updated:** 2026-02-08
**Purpose:** Single ordered list of everything left to do (Dev/Codespaces + general operator).
**Run-order checklist:** [CONTINUE_AND_COMPLETE.md](CONTINUE_AND_COMPLETE.md) — commands in order when ready.
**References:** [DEV_CODESPACES_NEXT_STEPS_CHECKLIST.md](../04-configuration/DEV_CODESPACES_NEXT_STEPS_CHECKLIST.md) | [NEXT_STEPS_OPERATOR.md](NEXT_STEPS_OPERATOR.md)
**Completion evidence:** [DEV_CODESPACES_COMPLETION_20260207.md](../04-configuration/verification-evidence/DEV_CODESPACES_COMPLETION_20260207.md)
**Secrets & remaining actions:** [REMAINING_ITEMS_DOTENV_AND_ACTIONS.md](../04-configuration/REMAINING_ITEMS_DOTENV_AND_ACTIONS.md)
---
## Completed 2026-02-07 (automated/scripted)
- **Fourth NPMplus:** Script fixed to use NPM_URL_FOURTH; run requires first-time login and `NPM_PASSWORD_FOURTH` in `.env`. Placeholder added in `.env`.
- **SSH keys:** `scripts/dev-vm/add-dev-user-ssh-keys.sh` added — adds one public key to dev1dev4 on CT 5700 via Proxmox host.
- **Security:** `scripts/security/run-security-on-proxmox-hosts.sh` added — SSH key-only + UFW 8006 on all three Proxmox hosts (default dry-run; `--apply` when ready).
- **Verification:** dev.d-bis.org, gitea.d-bis.org, codespaces.d-bis.org return HTTP 200; pve.* and 76.53.10.40 time out from workspace (verify from LAN if needed).
---
## Already done (no action)
- Fourth NPMplus LXC 10236 at 192.168.11.170; NPMplus + cloudflared installed; tunnel connector running (systemd).
- Dev VM 5700 at 192.168.11.60; users dev1dev4, Gitea; tunnel + DNS configured.
- UDM Pro port forward 76.53.10.40 → 192.168.11.170 (80/81/443) and → 192.168.11.60 (22, 3000).
---
## 1. Dev/Codespaces — Fourth NPMplus proxy hosts — **DONE (2026-02-08)**
All six proxy hosts added (script + same credentials). Let's Encrypt (Certbot) requested in UI; all six show **Online**, TLS Certbot, Public. No further action.
---
## 2. Dev/Codespaces — SSH keys for dev1dev4 — **DONE (2026-02-08)**
Keys added via `add-dev-user-ssh-keys.sh` from repo root. Test: `ssh dev1@192.168.11.60`.
---
## 3. Dev/Codespaces — Gitea first-run — **DONE (2026-02-08)**
Installer completed (git user, SQLite, paths under /opt/gitea/data, app.ini writable). Create repos in UI at https://gitea.d-bis.org as needed.
---
## 4. Dev/Codespaces — Rsync projects + dotenv — **DONE (partial; re-run for full sync)**
Initial rsync run from repo root; large tree may need a second run from your terminal:
`cd ~/projects/proxmox && bash scripts/dev-vm/rsync-projects-to-dev-vm.sh`
Ensure dotenv files are under `/srv/projects` (see [DEV_CODESPACES_76_53_10_40.md § 6](../04-configuration/DEV_CODESPACES_76_53_10_40.md#6-dotenv-files-include-in-dev-vm--accessibility)).
---
## 5. Dev/Codespaces — Gitea repos and remotes — **DONE (2026-02-08)**
Org **d-bis** and 18 repos created. **Pushed** to Gitea: proxmox (master), dbis_core (main), smom-dbis-138 (main), miracles_in_motion (main). Future pushes: use `GITEA_TOKEN` with `scripts/dev-vm/push-to-gitea.sh`.
---
## 6. Dev/Codespaces — Verification — **DONE (2026-02-08)**
- **HTTPS:** dev.d-bis.org, gitea.d-bis.org, codespaces.d-bis.org → 200. pve.* and 76.53.10.40 verify from LAN if needed.
- **SSH:** `ssh dev1@192.168.11.60` confirmed; projects visible under `/srv/projects/`. Cursor Remote-SSH → `/srv/projects/proxmox`.
- **Proxmox:** Confirm noVNC/console for pve.ml110, pve.r630-01, pve.r630-02 from browser when on LAN.
---
## 7. General — Bridge (W0-2)
**Secrets:** **PRIVATE_KEY** in **smom-dbis-138/.env**; **same wallet** holds **LINK** for bridge fees.
**Check:** `bash scripts/bridge/run-send-cross-chain.sh 0.01 --dry-run` (already verified).
**To run real:** `bash scripts/bridge/run-send-cross-chain.sh 0.01`
---
## 8. General — Security (W1-1, W1-2)
**Check:** Ensure SSH key login works to all three hosts before --apply.
**Run from repo root:** `bash scripts/security/run-security-on-proxmox-hosts.sh --apply` (disables password SSH, restricts 8006 to 192.168.11.0/24). No .env secrets needed.
---
## 9. General — 25062508 JWT / identity
Containers 2506, 2507, 2508 exist. Remaining: JWT auth in front of Besu RPC per [CHAIN138_JWT_AUTH_REQUIREMENTS.md](../04-configuration/CHAIN138_JWT_AUTH_REQUIREMENTS.md); permissioned identity (2506→Luis, 2507/2508→Putu). Use `scripts/generate-jwt-token-for-container.sh`; JWT secrets on containers, not in repo .env. See [MISSING_CONTAINERS_LIST.md](../03-deployment/MISSING_CONTAINERS_LIST.md).
---
## 10. General — Explorer SSL
If explorer.d-bis.org shows certificate warning: NPMplus at https://192.168.11.167:81 → SSL Certificates → Let's Encrypt for explorer.d-bis.org → assign to proxy host, Force SSL. See [EXPLORER_TROUBLESHOOTING.md](../04-configuration/EXPLORER_TROUBLESHOOTING.md).
---
## 11. General — NPMplus cert 134 (cross-all.defi-oracle.io)
If verification reports "cert files missing": NPMplus at https://192.168.11.167:81 → SSL Certificates → find cross-all.defi-oracle.io → re-request Let's Encrypt or re-save to restore cert files.
---
## 12. General — Wave 2 & 3
Per [WAVE2_WAVE3_OPERATOR_CHECKLIST.md](WAVE2_WAVE3_OPERATOR_CHECKLIST.md): monitoring stack, Grafana + Cloudflare Access, VLAN enablement, CCIP Ops/Admin (54005401), 25062508 JWT/identity, DBIS services, NPMplus HA (optional), CCIP Fleet, Phase 4 tenant isolation.
---
## 13. General — Smart contracts (deploy and verify)
**Secrets:** PRIVATE_KEY (and RPC_URL_138, LINK_TOKEN_CHAIN138, CCIPWETH9_BRIDGE_CHAIN138) in **smom-dbis-138/.env**. Same wallet for deployment and bridge (holds LINK).
**Remaining:** Deploy any contracts not yet deployed; verify on Blockscout.
- **Deploy (Chain 138):** `cd smom-dbis-138 && source .env && bash scripts/deployment/deploy-all-contracts.sh` (or `deploy-contracts-unified.sh --mode ordered`). WETH bridge: `GAS_PRICE=1000000000 ./scripts/deploy-and-configure-weth9-bridge-chain138.sh` from repo root.
- **Verify:** `source smom-dbis-138/.env && ./scripts/verify/run-contract-verification-with-proxy.sh`
**References:** [CONTRACT_DEPLOYMENT_RUNBOOK.md](../03-deployment/CONTRACT_DEPLOYMENT_RUNBOOK.md), [CONTRACTS_TO_DEPLOY.md](../11-references/CONTRACTS_TO_DEPLOY.md), [REMAINING_ITEMS_DOTENV_AND_ACTIONS.md § 13](../04-configuration/REMAINING_ITEMS_DOTENV_AND_ACTIONS.md#13-smart-contracts--deploy-and-verify).
---
## Quick command index
| Goal | Command |
|------|---------|
| Fourth NPMplus proxy hosts | `NPM_PASSWORD_FOURTH='...' bash scripts/nginx-proxy-manager/update-npmplus-fourth-proxy-hosts.sh` |
| Add dev user SSH keys | `PUBLIC_KEY="$(cat ~/.ssh/id_ed25519.pub)" bash scripts/dev-vm/add-dev-user-ssh-keys.sh` |
| Rsync to dev VM | `bash scripts/dev-vm/rsync-projects-to-dev-vm.sh [--dry-run]` (after SSH keys) |
| Dev/Codespaces tunnel+DNS | `bash scripts/cloudflare/configure-dev-codespaces-tunnel-and-dns.sh` |
| Security on Proxmox hosts | `bash scripts/security/run-security-on-proxmox-hosts.sh [--apply]` |
| NPMplus backup | `bash scripts/verify/backup-npmplus.sh` |
| Wave 0 via SSH | `bash scripts/run-via-proxmox-ssh.sh wave0 --host 192.168.11.11` |
| Bridge (real) | `bash scripts/bridge/run-send-cross-chain.sh 0.01` |
| Deploy contracts (Chain 138) | `cd smom-dbis-138 && source .env && bash scripts/deployment/deploy-all-contracts.sh` |
| Verify contracts (Blockscout) | `source smom-dbis-138/.env && ./scripts/verify/run-contract-verification-with-proxy.sh` |
| Push all projects to Gitea | `GITEA_TOKEN=xxx bash scripts/dev-vm/push-all-projects-to-gitea.sh` |
| Add as4-411 submodule to Sankofa (Phoenix) | `bash scripts/dev-vm/add-as4-411-submodule-to-sankofa.sh` |
| SSH key auth | `bash scripts/security/setup-ssh-key-auth.sh --apply` (on each host) |
| Firewall 8006 | `bash scripts/security/firewall-proxmox-8006.sh --apply` |

View File

@@ -0,0 +1,62 @@
# Your next steps — one place
**Last Updated:** 2026-02-13
**Purpose:** Single list of what **you** need to do next (no infra/automation). Everything else the repo can do has been completed or documented.
---
## 1. Submit Ledger Live request — ✅ Done
The Ledger Live integration request for **Chain 138 (Defi Oracle Meta Mainnet)** has been submitted (Tally form). Await Ledgers response and follow their process (agreement + integration steps).
**Full guide:** [docs/04-configuration/ADD_CHAIN138_TO_LEDGER_LIVE.md](../04-configuration/ADD_CHAIN138_TO_LEDGER_LIVE.md)
---
## 2. Steps you can complete now (no LAN/VPN needed)
These can be run from your current machine (dev, WSL, CI) without Proxmox or Ledger.
| Step | Command / action |
|------|------------------|
| **Run all “from anywhere” checks** | `./scripts/run-completable-tasks-from-anywhere.sh` — config validation, on-chain check (SKIP_EXIT=1 if RPC unreachable), run-all-validation --skip-genesis, reconcile-env --print |
| **On-chain address list (no RPC)** | `./scripts/verify/check-contracts-on-chain-138.sh --dry-run` — lists 36 addresses only |
| **Config validation** | `./scripts/validation/validate-config-files.sh` |
| **Bridge deploy dry-run** | `./scripts/deploy-and-configure-weth9-bridge-chain138.sh --dry-run` (no keys/network) |
| **Shellcheck (optional)** | `bash scripts/verify/run-shellcheck.sh --optional` — lint scripts; use without `--optional` to fix issues if shellcheck installed |
| **CCIP checklist (dry)** | `bash scripts/ccip/ccip-deploy-checklist.sh` — validates env and prints deploy order (no deploy) |
| **Tests** | `cd smom-dbis-138 && forge test` (e2e/integration subset if full suite slow); `cd alltra-lifi-settlement && forge test && npm run test:e2e -- --forceExit` |
| **Quick wins (code)** | Add progress indicators to scripts; add `--dry-run` to scripts that lack it; extend config validation (see [IMPLEMENTATION_CHECKLIST](../10-best-practices/IMPLEMENTATION_CHECKLIST.md)) |
| **Placeholders (code)** | canonical addresses in token-aggregation; AlltraAdapter fee (AlltraAdapter.sol); smart accounts kit placeholders; quote service Fabric chainId 999; .bak deprecation — see [REQUIRED_FIXES_UPDATES_GAPS](../REQUIRED_FIXES_UPDATES_GAPS.md) |
| **API keys** | Sign up at URLs in [reports/API_KEYS_REQUIRED.md](../../reports/API_KEYS_REQUIRED.md); add any new keys to `.env` |
**Reference:** [REMAINING_WORK_DETAILED_STEPS.md](REMAINING_WORK_DETAILED_STEPS.md) § “Can Be Accomplished Now”.
---
## 3. When you have LAN/VPN access (optional)
- **Blockscout verification:** From a host that can reach Blockscout (e.g. LAN), run:
```bash
source smom-dbis-138/.env 2>/dev/null; ./scripts/verify/run-contract-verification-with-proxy.sh
```
Or verify each contract manually at https://explorer.d-bis.org/address/<ADDRESS>#verify-contract.
- **On-chain contract check:** Re-run when you add new contracts (or to confirm from LAN):
```bash
./scripts/verify/check-contracts-on-chain-138.sh http://192.168.11.211:8545
```
Use `--dry-run` to list addresses only (no RPC):
`./scripts/verify/check-contracts-on-chain-138.sh --dry-run`
---
## 4. Everything else
- **Contract / deployment next steps:** [CONTRACT_NEXT_STEPS_LIST](../11-references/CONTRACT_NEXT_STEPS_LIST.md) — operator items and optional tasks.
- **Master next steps (phases, waves, TODOs):** [NEXT_STEPS_MASTER.md](NEXT_STEPS_MASTER.md).
- **Ledger issues and workarounds:** [LEDGER_CHAIN138_ISSUES_AND_WORKAROUNDS.md](../04-configuration/LEDGER_CHAIN138_ISSUES_AND_WORKAROUNDS.md).
---
**Summary:** Ledger form submitted ✅. **§2** lists steps you can complete now (no LAN). §34 are optional or when you have LAN/VPN or new contracts.

View File

@@ -0,0 +1,216 @@
# Next Steps — Master List
**Last Updated:** 2026-02-12
**Document Version:** 1.2
**Status:** Active Documentation
**Source:** Consolidated from REMAINING_TASKS.md, PHASES_AND_TASKS_MASTER.md, IMPLEMENTATION_CHECKLIST.md, REQUIRED_FIXES_UPDATES_GAPS.md
---
## Purpose
This document is the **single source of truth** for all next steps and remaining tasks across the project. Use it for prioritization, sprint planning, and status reporting.
**Your next actions:** [NEXT_STEPS_FOR_YOU.md](NEXT_STEPS_FOR_YOU.md) — Ledger form ✅ submitted (2026-02-13); all remaining steps optional (Blockscout, on-chain check, etc.).
**Consolidated review:** [REMAINING_TASKS_NEXT_STEPS_PHASES_REVIEW.md](REMAINING_TASKS_NEXT_STEPS_PHASES_REVIEW.md).
**Step-by-step for each task:** [REMAINING_WORK_DETAILED_STEPS.md](REMAINING_WORK_DETAILED_STEPS.md) — Wave 03, cron, API keys; "Can be accomplished now" and completion note (2026-02-05).
**Single reference (all tasks + detailed steps):** [ALL_TASKS_DETAILED_STEPS.md](ALL_TASKS_DETAILED_STEPS.md) — index, blockers, and exact steps per task (2026-02-12).
**Execution order (full maximum parallel):** [FULL_PARALLEL_EXECUTION_ORDER.md](FULL_PARALLEL_EXECUTION_ORDER.md) — run all items in the same wave concurrently (Wave 0 → 1 → 2 → 3).
---
## Immediate (Do First)
### 1. CCIP WETH9 Bridge (Chain 138) — ✅ Complete
| Step | Task | Status | Notes |
|------|------|--------|-------|
| 1 | Run `./scripts/deploy-and-configure-weth9-bridge-chain138.sh` (requires PRIVATE_KEY) | ✅ Done | Bridge at 0x971cD9D156f193df8051E48043C476e53ECd4693 |
| 2 | Set `export CCIPWETH9_BRIDGE_CHAIN138=<printed_address>` in shell and .env | ✅ Done | Set in smom-dbis-138/.env |
| 3 | Execute sendCrossChain and verify transfer | ⏳ Pending | Ready for bridge operations |
**References:** [COMPREHENSIVE_STATUS_BRIDGE_READY.md](../../COMPREHENSIVE_STATUS_BRIDGE_READY.md), [07-ccip/README.md](../07-ccip/README.md), [scripts/README.md](../../scripts/README.md).
### 2. CCIP Relay Service (Chain 138 → Mainnet) — ✅ Complete (2026-02-12)
| Attribute | Value |
|-----------|-------|
| **Host** | r630-01 (192.168.11.11) |
| **Path** | `/opt/smom-dbis-138/services/relay` |
| **Chain 138 RPC** | VMID 2201 (192.168.11.221:8545) |
| **Purpose** | Monitors MessageSent events, relays to Ethereum Mainnet |
**References:** [07-ccip/CCIP_RELAY_DEPLOYMENT.md](../07-ccip/CCIP_RELAY_DEPLOYMENT.md), [OPERATIONAL_RUNBOOKS.md](../03-deployment/OPERATIONAL_RUNBOOKS.md#ccip-operations).
### 3. Chain 138 optional contracts (mirror) — ✅ Partial (2026-02-12)
AddressMapper and MirrorManager deployed. TransactionMirror: deploy when needed; if script fails with constructor-args decode, use `forge create` with `--with-gas-price 1000000000`. All Chain 138 Forge deploys require that gas price. On-chain check: 36 addresses — [CONTRACT_ADDRESSES_REFERENCE](../11-references/CONTRACT_ADDRESSES_REFERENCE.md), [CONTRACT_DEPLOYMENT_RUNBOOK](../03-deployment/CONTRACT_DEPLOYMENT_RUNBOOK.md).
---
## Deployment Phases (Infrastructure)
### Phase 1 — VLAN Enablement ⏳
| Task | Required | Status |
|------|----------|--------|
| UDM Pro VLAN config | Optional | ⏳ Pending |
| VLAN-aware bridge on Proxmox | Optional | ⏳ Pending |
| Services migrated to VLANs | Optional | ⏳ Pending |
### Phase 2 — Observability ⏳
| Task | Required | Status |
|------|----------|--------|
| Monitoring stack (Prometheus, Grafana, Loki, Alertmanager) | Required | ⏳ Pending |
| Grafana published via Cloudflare Access | Required | ⏳ Pending |
| Alerts configured | Required | ⏳ Pending |
### Phase 3 — CCIP Fleet ⏳
| Task | Required | Status |
|------|----------|--------|
| CCIP Ops/Admin (VMID 5400-5401) | Required | ⏳ Pending |
| 16 commit nodes (5410-5425) | Required | ⏳ Pending |
| 16 execute nodes (5440-5455) | Required | ⏳ Pending |
| 7 RMN nodes (5470-5476) | Required | ⏳ Pending |
| NAT pools configured | Required | ⏳ Pending |
**Reference:** [07-ccip/CCIP_DEPLOYMENT_SPEC.md](../07-ccip/CCIP_DEPLOYMENT_SPEC.md).
### Phase 4 — Sovereign Tenants ⏳
| Task | Required | Status |
|------|----------|--------|
| Sovereign VLANs configured | Required | ⏳ Pending |
| Tenant isolation enforced | Required | ⏳ Pending |
| Access control configured | Required | ⏳ Pending |
---
## Missing Containers (Chain 138)
**Single source of truth:** [03-deployment/MISSING_CONTAINERS_LIST.md](../03-deployment/MISSING_CONTAINERS_LIST.md) — canonical missing VMIDs only.
| Category | Missing | Total | Priority |
|----------|---------|-------|----------|
| Besu RPC (only) | 3 (2506, 2507, 2508) | 19 | High |
| Hyperledger / Blockscout | 0 | 6 | — (deployed) |
**Reference:** MISSING_CONTAINERS_LIST.md for the full list and deployment checklist.
---
## Codebase & Scripts
### smom-dbis-138
| Task | Priority | Status |
|------|----------|--------|
| Security audits (VLT-024, ISO-024) | Critical | ⏳ Pending |
| Bridge integrations (BRG-VLT, BRG-ISO) | High | ⏳ Pending |
| CCIP AMB full implementation | High | ⏳ Pending |
| dbis_core TypeScript/Prisma fixes | High | ~1186 errors remain |
| IRU remaining tasks | High | ⏳ Pending |
### Implementation Checklist (Best Practices)
| Category | Total | Completed | Pending |
|----------|-------|-----------|---------|
| High Priority | 25 | 5 | 20 |
| Medium Priority | 20 | 0 | 20 |
| Low Priority | 15 | 0 | 15 |
| Quick Wins | 8 | 5 | 3 |
**Quick Wins pending:** Add progress indicators to scripts; Add --dry-run flag to scripts; Add configuration validation.
**Reference:** [10-best-practices/IMPLEMENTATION_CHECKLIST.md](../10-best-practices/IMPLEMENTATION_CHECKLIST.md).
---
## Optional / Enhancement
### MetaMask & Explorer
| Task | Priority | Effort |
|------|----------|--------|
| Token-aggregation production hardening | Medium | 2-3 h |
| Chain 138 Snap: market data UI, swap quotes, bridge routes | Low | 8-12 h each |
| CoinGecko submission (Chain 138) | Low | 1-2 h |
| Consensys outreach (Swaps/Bridge support) | Low | 1 h |
| Explorer: dark mode, network selector | Low | 2-3 h each |
### Placeholders (REQUIRED_FIXES)
| Item | Location | Priority |
|------|----------|----------|
| Canonical addresses env-only | token-aggregation canonical-tokens.ts | Medium |
| AlltraAdapter fee | AlltraAdapter.sol (TODO: actual fee) | Medium |
| Smart accounts kit | DeploySmartAccountsKit.s.sol (placeholders) | Medium |
| Quote service Fabric chainId 999 | quote-service.ts | Low |
| .bak script/test restoration or deprecation | Various | Low |
**Reference:** [REQUIRED_FIXES_UPDATES_GAPS.md](../REQUIRED_FIXES_UPDATES_GAPS.md).
---
## Maintenance (Ongoing)
| Task | Frequency |
|------|------------|
| Monitor explorer sync status | Daily |
| Monitor RPC node health (e.g. VMID 2201) | Daily |
| Check config API uptime | Weekly |
| Review explorer logs | Weekly |
| Update token list as needed | As needed |
---
## Validation & Testing
| Check | Command | Requires |
|-------|---------|----------|
| Prerequisites (smom-dbis-138) | `./scripts/validation/check-prerequisites.sh` (from smom-dbis-138-proxmox or repo root) | Local + config dirs |
| Prerequisites (root) | `./scripts/check-prerequisites.sh` (if present) | Local tools |
| Deployment validation | `./scripts/validate-ml110-deployment.sh` | Proxmox API |
| Connection test | `./scripts/test-connection.sh` | Proxmox host |
| Full validation | `./scripts/complete-validation.sh` | Proxmox + env |
| MCP basic tests | `pnpm test:basic` | mcp-proxmox + Proxmox |
| Workspace tests | `pnpm test` | Node/pnpm |
| WETH9 bridge deploy (dry-run) | `./scripts/deploy-and-configure-weth9-bridge-chain138.sh --dry-run` | None |
**Latest test run (2026-01-31):** pnpm test passed; pnpm test:basic 7/7; scripts/validation/check-prerequisites.sh 0 errors; deploy --dry-run passed.
---
## Completions (2026-02-03 to 2026-02-05)
| Item | Status | Notes |
|------|--------|-------|
| CT 2301 (besu-rpc-private-1) | ✅ Resolved | Recreated 2026-02-04 via `scripts/recreate-ct-2301.sh`; see [VM_RESTART_AND_VERIFICATION_20260203.md](../../reports/status/VM_RESTART_AND_VERIFICATION_20260203.md) |
| E2E Cloudflare domains runbook | ✅ Added | [05-network/E2E_CLOUDFLARE_DOMAINS_RUNBOOK.md](../05-network/E2E_CLOUDFLARE_DOMAINS_RUNBOOK.md) — full E2E success for all Cloudflare-facing endpoints |
| RPC 405 (NPMplus Block Exploits) | ✅ Fixed in script | `scripts/nginx-proxy-manager/update-npmplus-proxy-hosts-api.sh` sets `block_exploits: false` for RPC hosts; run from LAN to apply |
| verify-end-to-end-routing.sh | ✅ Updated | All Cloudflare domains added; `ACCEPT_ANY_DNS=1` option; RPC failures counted in summary |
| RPC_ENDPOINTS_MASTER proxy hosts | ✅ Corrected | Sankofa/phoenix/mim4u IPs and explorer port aligned with tables |
---
## Master TODO Task List
**[TODO_TASK_LIST_MASTER.md](TODO_TASK_LIST_MASTER.md)** — Consolidated fixes, enhancements, gas steps, known issues, and recommendations.
---
## Related Documents
- [REMAINING_TASKS.md](../REMAINING_TASKS.md) — Optional/enhancement tasks and maintenance
- [00-meta/PHASES_AND_TASKS_MASTER.md](PHASES_AND_TASKS_MASTER.md) — Phases and codebase tasks
- [10-best-practices/IMPLEMENTATION_CHECKLIST.md](../10-best-practices/IMPLEMENTATION_CHECKLIST.md) — Best practices checklist
- [REQUIRED_FIXES_UPDATES_GAPS.md](../REQUIRED_FIXES_UPDATES_GAPS.md) — Fixes and gaps
- [03-deployment/MISSING_CONTAINERS_LIST.md](../03-deployment/MISSING_CONTAINERS_LIST.md) — Container deployment
- [MASTER_INDEX.md](../MASTER_INDEX.md) — Documentation index
---
**Last Updated:** 2026-02-05
**Maintained By:** Infrastructure Team

View File

@@ -0,0 +1,220 @@
# Next Steps — Operator Runbook
**Last Updated:** 2026-02-07
**Purpose:** Single runbook of copy-paste commands for all remaining operator/LAN/creds steps. Use after automated steps are done.
**References:** [REMAINING_WORK_DETAILED_STEPS.md](REMAINING_WORK_DETAILED_STEPS.md), [WAVE2_WAVE3_OPERATOR_CHECKLIST.md](WAVE2_WAVE3_OPERATOR_CHECKLIST.md), [INFRA_DEPLOYMENT_LOCKED_AND_LOADED.md](../03-deployment/INFRA_DEPLOYMENT_LOCKED_AND_LOADED.md). **Single fixes checklist (required + optional):** [FIXES_PREPARED.md](../04-configuration/FIXES_PREPARED.md). **Full fixes (validators, block/tx, Sentries, RPCs, network, optional):** [FULL_FIXES_PREPARED.md](../04-configuration/FULL_FIXES_PREPARED.md). **All next steps (consolidated):** [NEXT_STEPS_ALL.md](NEXT_STEPS_ALL.md). **Dev/Codespaces (76.53.10.40):** [DEV_CODESPACES_NEXT_STEPS_CHECKLIST.md](../04-configuration/DEV_CODESPACES_NEXT_STEPS_CHECKLIST.md). **Dev/Codespaces completion evidence:** [DEV_CODESPACES_COMPLETION_20260207.md](../04-configuration/verification-evidence/DEV_CODESPACES_COMPLETION_20260207.md).
---
## Completed in this session (2026-02-06)
| Item | Result |
|------|--------|
| Validation | `run-all-validation.sh --skip-genesis` — passed |
| W1-1 dry-run | `setup-ssh-key-auth.sh --dry-run` — steps printed |
| W1-2 dry-run | `firewall-proxmox-8006.sh --dry-run` — UFW commands printed (ADMIN_CIDR=192.168.11.0/24) |
| NPMplus backup | `backup-npmplus.sh` — ran successfully (local + on host); backup pulled to `backups/npmplus/backup-20260206_171756.tar.gz` |
| Bridge dry-run | `run-send-cross-chain.sh 0.01 --dry-run` — simulated (real run when PRIVATE_KEY/LINK ready) |
| .env NPM | NPM_URL/NPM_HOST set to 192.168.11.167:81 (use .167 if .166 refuses) |
| **Copy to host** | Scripts copied to **root@192.168.11.11:/tmp/proxmox-scripts-run** (wave0, backup, secure-validator-keys, create-missing-containers, schedule cron scripts, daily-weekly-checks) |
| **Wave 0 on host** | Ran on r630-01: W0-1 (19 NPMplus proxy hosts updated), W0-3 (backup); backup also on host at `.../backups/npmplus/backup-20260206_171756.tar.gz` |
| **Backup pulled** | Host backup copied to local `backups/npmplus/backup-20260206_171756.tar.gz` |
| **Validator keys** | `secure-validator-keys.sh --dry-run` run on host — 10001002 would be secured; 10031004 not running, skipped. Use `--apply` on host when ready. |
| **Cron scripts on host** | schedule-npmplus-backup-cron.sh and schedule-daily-weekly-cron.sh (and daily-weekly-checks.sh) copied; use `--show` then `--install` from `/tmp/proxmox-scripts-run` if you want cron there (note: /tmp may be cleared on reboot; for permanent cron, clone repo to a persistent path on the host). |
| **Cron installed on host** | NPMplus backup cron (03:00) and daily/weekly cron (08:00 daily, Sun 09:00 weekly) installed on root@192.168.11.11. Logs: `/tmp/proxmox-scripts-run/logs/npmplus-backup.log`, `daily-weekly-checks.log`. |
| **Validator keys applied** | `secure-validator-keys.sh` run on host (no --dry-run): VMIDs 1000, 1001, 1002 secured (chmod 600/700, chown besu); 1003, 1004 not running, skipped. |
---
## Wave 0 — Gates
### W0-2: sendCrossChain (real)
**When:** PRIVATE_KEY and LINK (or fee token) approved in `.env`; you are ready to broadcast.
```bash
cd /path/to/proxmox
# Optional: dry-run first
bash scripts/bridge/run-send-cross-chain.sh 0.01 --dry-run
# Real (no --dry-run)
bash scripts/bridge/run-send-cross-chain.sh 0.01
# Or with recipient:
bash scripts/bridge/run-send-cross-chain.sh 0.01 0xYourRecipientAddress
```
Bridge contract (reference): `0x971cD9D156f193df8051E48043C476e53ECd4693`. Ensure `CCIPWETH9_BRIDGE_CHAIN138` and `RPC_URL_138`/`CHAIN138_RPC` in `.env`.
### W0-3: NPMplus backup (re-run anytime)
Backup already ran once; re-run when NPMplus is up and you want a fresh backup:
```bash
cd /path/to/proxmox
bash scripts/verify/backup-npmplus.sh
```
From a host without NPM API access, use: `bash scripts/run-via-proxmox-ssh.sh wave0 --host 192.168.11.11` (r630-01) to run W0-1 + W0-3 on the host.
---
## Crontab (install on jump host or Proxmox node)
```bash
cd /path/to/proxmox
# Show lines
bash scripts/maintenance/schedule-npmplus-backup-cron.sh --show
bash scripts/maintenance/schedule-daily-weekly-cron.sh --show
# Install
bash scripts/maintenance/schedule-npmplus-backup-cron.sh --install
bash scripts/maintenance/schedule-daily-weekly-cron.sh --install
```
---
## Wave 1 — Security (run on each Proxmox host or via SSH)
### W1-1: SSH key-based auth (disable password)
**Pre-requisite:** Deploy SSH keys to all hosts (`ssh-copy-id root@<host>`); test login; have break-glass access.
```bash
cd /path/to/proxmox
# On each Proxmox host (or: ssh root@192.168.11.11 'cd /path/to/proxmox && bash scripts/security/setup-ssh-key-auth.sh --apply')
bash scripts/security/setup-ssh-key-auth.sh --apply
```
### W1-2: Firewall — restrict Proxmox API port 8006
**Pre-requisite:** Run on host where UFW is used (or apply equivalent iptables). Default CIDR: 192.168.11.0/24.
```bash
cd /path/to/proxmox
# Dry-run (already done)
bash scripts/security/firewall-proxmox-8006.sh --dry-run
# Apply (allow only ADMIN_CIDR)
bash scripts/security/firewall-proxmox-8006.sh --apply
# Or with custom CIDR:
bash scripts/security/firewall-proxmox-8006.sh --apply 192.168.11.0/24
```
Then verify: `https://<proxmox-ip>:8006` only from allowed IPs.
### W1-19: Secure validator keys (on Proxmox host as root)
```bash
cd /path/to/proxmox
bash scripts/secure-validator-keys.sh --dry-run # review
bash scripts/secure-validator-keys.sh # apply (chmod 600, chown besu)
```
---
---
## VMIDs 2506, 2507, 2508 — Destroyed 2026-02-08
Containers 2506, 2507, 2508 were **removed and destroyed** on all Proxmox hosts. Script: `scripts/destroy-vmids-2506-2508.sh`. Besu RPC range is **25002505** only. See [MISSING_CONTAINERS_LIST.md](../03-deployment/MISSING_CONTAINERS_LIST.md).
---
## Dev/Codespaces (76.53.10.40) — Full completion
**Single ordered checklist:** [04-configuration/DEV_CODESPACES_NEXT_STEPS_CHECKLIST.md](../04-configuration/DEV_CODESPACES_NEXT_STEPS_CHECKLIST.md) — Phases 17 (fourth NPMplus, dev VM, UDM port forward, Cloudflare tunnel, NPMplus proxy hosts, projects/dotenv, verification).
**Key commands (after fourth NPMplus and dev VM exist):**
| Step | Command |
|------|---------|
| Create fourth NPMplus LXC (10236 @ 192.168.11.170) | `bash scripts/npmplus/create-npmplus-fourth-container.sh` |
| Create dev VM (5700 @ 192.168.11.60) | `bash scripts/create-dev-vm-5700.sh` |
| Setup dev VM users + Gitea | `ssh root@192.168.11.11 "pct exec 5700 -- bash -s" < scripts/setup-dev-vm-users-and-gitea.sh` |
| Tunnel + DNS (set CLOUDFLARE_TUNNEL_ID_DEV_CODESPACES in .env first) | `bash scripts/cloudflare/configure-dev-codespaces-tunnel-and-dns.sh` |
| Fourth NPMplus proxy hosts | `NPM_URL=https://192.168.11.170:81 NPM_PASSWORD='...' bash scripts/nginx-proxy-manager/update-npmplus-fourth-proxy-hosts.sh` |
UDM Pro: add port forward 76.53.10.40 → 192.168.11.170 (80/81/443), optional 22 → 192.168.11.60. See [UDM_PRO_DEV_CODESPACES_PORT_FORWARD.md](../04-configuration/UDM_PRO_DEV_CODESPACES_PORT_FORWARD.md).
---
## Wave 2 & Wave 3 — Full checklist
Use the ordered checklist:
- **[WAVE2_WAVE3_OPERATOR_CHECKLIST.md](WAVE2_WAVE3_OPERATOR_CHECKLIST.md)** — W2-1 (monitoring) through W2-8 (NPMplus HA), then W3-1 (CCIP Fleet), W3-2 (Phase 4 isolation).
Summary:
| Wave | Tasks |
|------|--------|
| W2-1 | Monitoring stack (Prometheus, Grafana, Loki, Alertmanager) |
| W2-2 | Grafana via Cloudflare Access; alerts |
| W2-3 | VLAN enablement (UDM Pro, Proxmox bridge) |
| W2-4 | Phase 3 CCIP: Ops/Admin (54005401); NAT; scripts |
| W2-5 | Phase 4 sovereign tenant VLANs |
| W2-6 | ~~25062508~~ Destroyed 2026-02-08 (RPC 25002505 only) |
| W2-7 | DBIS services (1010010151) |
| W2-8 | NPMplus HA (optional) |
| W3-1 | CCIP Fleet (commit/execute/RMN nodes) |
| W3-2 | Phase 4 tenant isolation enforcement |
---
## Explorer SSL (manual)
If **explorer.d-bis.org** shows "Your connection isn't private":
1. Open NPMplus: **https://192.168.11.167:81** (credentials: `NPM_EMAIL`, `NPM_PASSWORD` from `.env`).
2. SSL Certificates → Add Let's Encrypt for `explorer.d-bis.org` (DNS Challenge + Cloudflare credential if needed).
3. Proxy Hosts → explorer.d-bis.org → SSL tab → assign cert, Force SSL, Save.
See [EXPLORER_TROUBLESHOOTING.md](../04-configuration/EXPLORER_TROUBLESHOOTING.md).
---
## Remaining (operator only)
- **W0-2** — sendCrossChain real (when PRIVATE_KEY/LINK ready).
- **W1-1 / W1-2** — SSH key auth and firewall 8006 `--apply` on each Proxmox host (after keys deployed / CIDR decided).
- **Cron** — ✅ Installed on root@192.168.11.11 (NPMplus 03:00; daily 08:00; weekly Sun 09:00). Re-install if you move repo to a permanent path.
- **Validator keys** — ✅ Applied on host for 10001002; 10031004 skipped (not running). Re-run when 1003/1004 are up if needed.
- **25062508** — Destroyed 2026-02-08; no action.
- **Wave 2 / 3** — Monitoring, VLAN, CCIP, NPMplus HA, Phase 4 per WAVE2_WAVE3_OPERATOR_CHECKLIST.
- **Explorer SSL** — Let's Encrypt for explorer.d-bis.org in NPMplus UI (see above). One-time (and after NPMplus restore if certs lost).
- **Explorer VM 5000 thin pool** — If thin1-r630-02 is >85% or full, migrate VMID 5000 to thin5 per [BLOCKSCOUT_FIX_RUNBOOK.md](../03-deployment/BLOCKSCOUT_FIX_RUNBOOK.md) § "Fix: Migrate VM 5000 to thin5". Weekly cron now checks thin pool (138a); act when it warns or fails.
- **NPMplus cert 134 (cross-all.defi-oracle.io)** — If verification reports "cert files missing" for cert ID 134: in NPMplus at https://192.168.11.167:81 → SSL Certificates → find cross-all.defi-oracle.io → re-save or request Let's Encrypt again to restore cert files on disk.
- **Dev/Codespaces (76.53.10.40)** — Complete all phases in [DEV_CODESPACES_NEXT_STEPS_CHECKLIST.md](../04-configuration/DEV_CODESPACES_NEXT_STEPS_CHECKLIST.md): fourth NPMplus (10236), dev VM (5700), UDM port forward, Cloudflare tunnel, NPMplus fourth proxy hosts, Let's Encrypt, rsync/dotenv, verification.
---
## After running "complete all next steps"
1. **Automated (workspace):** `bash scripts/run-all-next-steps.sh` — report in `docs/04-configuration/verification-evidence/NEXT_STEPS_RUN_*.md`.
2. **Validators + tx-pool:** `bash scripts/fix-all-validators-and-txpool.sh` (requires SSH to .10, .11).
3. **Flush stuck tx (if any):** `bash scripts/flush-stuck-tx-rpc-and-validators.sh --full` (clears RPC 2101 + validators 10001004).
4. **Verify from LAN:** From a host on 192.168.11.x run `bash scripts/monitoring/monitor-blockchain-health.sh` and `bash scripts/skip-stuck-transactions.sh`. See [NEXT_STEPS_COMPLETION_RUN_20260208.md](../04-configuration/verification-evidence/NEXT_STEPS_COMPLETION_RUN_20260208.md) § Verify from LAN.
---
## Quick command index
| Goal | Command |
|------|---------|
| **Run all automated next steps** | `bash scripts/run-all-next-steps.sh` (validation, E2E, explorer check, dry-runs; report in verification-evidence/NEXT_STEPS_RUN_*.md) |
| W0-2 real | `bash scripts/bridge/run-send-cross-chain.sh 0.01` |
| W0-3 backup | `bash scripts/verify/backup-npmplus.sh` |
| W0 from LAN | `bash scripts/run-wave0-from-lan.sh` |
| W1-1 apply | `bash scripts/security/setup-ssh-key-auth.sh --apply` (on each host) |
| W1-2 apply | `bash scripts/security/firewall-proxmox-8006.sh --apply` |
| NPMplus cron | `bash scripts/maintenance/schedule-npmplus-backup-cron.sh --install` |
| Daily/weekly cron | `bash scripts/maintenance/schedule-daily-weekly-cron.sh --install` |
| Validator keys | On Proxmox: `bash scripts/secure-validator-keys.sh` (after --dry-run) |
| Wave 0 via SSH | `bash scripts/run-via-proxmox-ssh.sh wave0 --host 192.168.11.11` |
| Request cert (via SSH) | `bash scripts/run-via-proxmox-ssh.sh request-cert --host 192.168.11.11` |
| Fourth NPMplus container | `bash scripts/npmplus/create-npmplus-fourth-container.sh` |
| Dev VM create | `bash scripts/create-dev-vm-5700.sh` |
| Dev/Codespaces tunnel+DNS | `bash scripts/cloudflare/configure-dev-codespaces-tunnel-and-dns.sh` (set CLOUDFLARE_TUNNEL_ID_DEV_CODESPACES in .env) |
| Fourth NPMplus proxy hosts | `NPM_URL=https://192.168.11.170:81 NPM_PASSWORD='...' bash scripts/nginx-proxy-manager/update-npmplus-fourth-proxy-hosts.sh` |
| E2E routing (after NPMplus/DNS change) | `bash scripts/verify/verify-end-to-end-routing.sh` |
| Explorer E2E from LAN (after frontend/Blockscout deploy) | `bash explorer-monorepo/scripts/e2e-test-explorer.sh` |
| Blockscout migrations (version/config change) | On r630-02: `bash scripts/fix-blockscout-ssl-and-migrations.sh` — see [BLOCKSCOUT_FIX_RUNBOOK.md](../03-deployment/BLOCKSCOUT_FIX_RUNBOOK.md) |
| When decommissioning RPC used by explorer | Update Blockscout RPC URL on VM 5000; restart Blockscout — see [OPERATIONAL_RUNBOOKS.md](../03-deployment/OPERATIONAL_RUNBOOKS.md) § "When decommissioning or changing RPC nodes" |

View File

@@ -0,0 +1,144 @@
# Parallel Task Structure
**Purpose:** Enable maximum automation by removing artificial order-of-operations blockers.
**Principle:** Split large tasks into smaller atomic units; mark real vs fake dependencies; group by parallel cohort.
**Full remaining work (all TODOs):** For the **complete** list of remaining items ordered for **full maximum parallel mode** (Wave 0 → Wave 1 → Wave 2 → Wave 3), see **[FULL_PARALLEL_EXECUTION_ORDER.md](FULL_PARALLEL_EXECUTION_ORDER.md)**. Run all items in the same wave concurrently.
---
## Parallel Cohorts
Tasks in the same cohort have **no dependencies on each other** and can run in parallel.
### Cohort A — Immediate (no blockers)
| ID | Task | File/Scope | Automation |
|----|------|------------|------------|
| A1 | Add env check to e-signature.ts | the-order/services/legal-documents | Edit |
| A2 | Add env check to court-efiling.ts | the-order/services/legal-documents | Edit |
| A3 | Add ISSUER_DID env to identity | the-order/services/identity | Edit |
| A4 | Add env stub to OCR placeholder | the-order/packages/workflows | Edit |
| A5 | Add env stub to approval placeholder | the-order/packages/workflows | Edit |
| A6 | Add OIDC env vars to shared auth | the-order/packages/shared | Edit |
| A7 | Add DID env to auth/did.ts | the-order/packages/auth | Edit |
| A8 | Create ISO deploy script (forge) | smom-dbis-138/scripts | New file |
| A9 | Add Uniswap env stub | alltra-lifi-settlement | Edit |
| A10 | Add Curve env stub | alltra-lifi-settlement | Edit |
| A11 | Add payment-intent env stub | alltra-lifi-settlement | Edit |
| A12 | Create OMNIS EntityList.test.tsx | OMNIS | New file |
| A13 | Create OMNIS TreasuryCharts.test.tsx | OMNIS | New file |
| A14 | Add GlobalSearch mock for tests | OMNIS | Edit |
| A15 | Fix dbis JsonValue type (one module) | dbis_core | Edit |
| A16 | Create Prometheus scrape config | smom-dbis-138/monitoring | Edit |
| A17 | Create verify-websocket standalone script | scripts/verify | Edit |
| A18 | Add .env vars to IP_CENTRALIZATION | docs | Edit |
### Cohort B — After Cohort A (or parallel if A not needed)
| ID | Task | File/Scope | Depends On |
|----|------|------------|------------|
| B1 | Finance DB persistence (schema) | the-order/packages/database | None |
| B2 | Dataroom document metadata save | the-order/services/dataroom | None |
| B3 | Identity VC verification logic | the-order/services/identity | A3 |
| B4 | Vault test VLT-001 only | smom-dbis-138/test | None |
| B5 | ISO test ISO-001 only | smom-dbis-138/test | None |
| B6 | Bridge BRG-VLT deposit token | smom-dbis-138/contracts | None |
| B7 | Bridge BRG-ISO deposit token | smom-dbis-138/contracts | None |
| B8 | OMNIS cash flow chart stub | OMNIS | None |
| B9 | OMNIS Gantt stub | OMNIS | None |
| B10 | dbis IRU SES env stub | dbis_core | None |
| B11 | dbis IRU sanctions env stub | dbis_core | None |
| B12 | NPMplus backup cron script | scripts | None |
| B13 | Phase 3 CCIP Ops script skeleton | scripts/deployment | None |
| B14 | Phase 4 tenant script skeleton | scripts/deployment | None |
### Cohort C — Independent external integrations
Each can run in parallel; no cross-deps:
| ID | Task | Blocker |
|----|------|---------|
| C1 | Li.Fi SDK integration | API key |
| C2 | LayerZero integration | API/config |
| C3 | Uniswap routing (real) | RPC, pool addresses |
| C4 | DocuSign e-signature | API key |
| C5 | MoonPay fiat on-ramp | API key |
| C6 | Ramp Network fiat | API key |
### Cohort D — Infrastructure (SSH-able; can parallelize by host)
| ID | Task | Host | Depends On |
|----|------|------|------------|
| D1 | Verify ml110 containers | ml110 | SSH |
| D2 | Verify r630-01 containers | r630-01 | SSH |
| D3 | Verify r630-02 containers | r630-02 | SSH |
| D4 | Backup NPMplus (if NPM_PASSWORD) | r630-01 | SSH, creds |
| D5 | Export Prometheus targets | r630-01 | SSH |
---
## Dependency Rules
### Fake dependencies (ignore for parallelization)
- ~~Phase 2 before Phase 3~~ → Observability config can be done alongside CCIP scripts
- ~~Vault tests before deployment~~ → Deploy script can exist without tests passing
- ~~Auth before frontend charts~~ → Chart stubs need no auth
- ~~DB before Finance service~~ → Env stubs work without DB
- ~~BRG-VLT before BRG-ISO~~ → Independent contract changes
### Real dependencies (must respect)
- CCIP commit nodes → need CCIP Ops/Admin (true infra dep)
- NPMplus backup → needs NPM_PASSWORD (creds)
- Real API calls → need API keys (creds)
- Forge deploy → needs PRIVATE_KEY, RPC_URL (creds)
---
## Task Splitting Guide
| Monolithic Task | Split Into |
|-----------------|------------|
| "Vault tests VLT-001 to VLT-009" | VLT-001, VLT-002, … VLT-009 (9 parallel tasks) |
| "ISO tests ISO-001 to ISO-008" | ISO-001, … ISO-008 (8 parallel tasks) |
| "Bridge BRG-VLT, BRG-ISO, BRG-EM" | BRG-VLT, BRG-ISO, BRG-EM (3 parallel) |
| "CCIP Fleet" | Ops script, Commit script, Execute script, RMN script (4 parallel scripts) |
| "dbis TypeScript fixes" | By file: fix `file1.ts`, fix `file2.ts`, … |
| "OMNIS unit tests" | Header, EntityList, TreasuryCharts, … (one test file each) |
| "the-order Identity" | Env stub, VC issuance, verification, KMS (4 parallel) |
| "Documentation consolidation" | By doc folder: 01-, 02-, 03-, … (parallel by section) |
---
## Execution Model
1. **Cohort A** → Run all in parallel (no shared state).
2. **Cohort B** → Run in parallel; some reference A outputs but can use defaults.
3. **Cohort C** → Run when credentials available; independent of each other.
4. **Cohort D** → Run per-host in parallel; SSH to ml110, r630-01, r630-02 concurrently.
---
## Completed (2026-01-31)
**Cohort A:** A1-A2 (e-signature, court-efiling already had env checks), A3 (VC_ISSUER_DID exists), A4-A7 (workflows, auth env stubs), A8 (deploy-iso4217w-system.sh), A9-A11 (alltra env stubs), A12-A14 (EntityList, TreasuryCharts, GlobalSearch tests), A16 (scrape-proxmox.yml), A17 (verify-websocket exists), A18 (IP_CENTRALIZATION, .env.example).
**Cohort B:** B1-B2 (Finance/Dataroom DB wired), B12 (npmplus-backup-cron.sh), B13-B14 (phase3-ccip-ops.sh, phase4-sovereign-tenants.sh), B6-B7 (register-vault-deposit-tokens.sh, register-iso-deposit-tokens.sh), B8-B9 (TreasuryCharts, ProjectTimeline exist), B10-B11 (SES/sanctions env in dbis).
**Cohort D:** D4 (backup-npmplus ran successfully), D5 (export-prometheus-targets.sh, targets-proxmox.yml). PROXMOX_* added to .env.
**Completed (2026-02-01):** dbis_core deployment-orchestrator syntax fix; ari-reflex duplicate props; prisma generate. alltra-lifi-settlement: env.example, TypeScript fixes, workspace add, build passing. multi-chain-execution: Express router type annotations (build passing). OMNIS: vitest testTimeout 20s, hookTimeout 15s, MSW onUnhandledRequest bypass. smom: forge:test, forge:test:vault, forge:test:iso scripts.
**dbis_core TypeScript Phases 1-4 (2026-01-31):** Phase 1 (imports, route returns), Phase 2 (JsonValue, unknown, reduce types), Phase 3 (Prisma props, express.d.ts, null safety), Phase 4 (schema mismatches, gdsl-settlement, uhem-analytics). ~1186 TS errors remain. See REMAINING_TASKS_MASTER.
---
## Automation Script
A runner can:
- Parse this file for Cohort A/B task IDs
- For each task: `pnpm exec cursor-agent --task "A1"` (or similar)
- Collect results; proceed to next cohort
- Never block A2 on A1, B2 on B1, etc.

View File

@@ -0,0 +1,113 @@
# Phases and Tasks Master Checklist
**Last Updated:** 2026-02-05
**Status:** Active Documentation
**Package Manager:** pnpm (run `pnpm outdated -r` to check dependencies)
**For parallel execution:** See [PARALLEL_TASK_STRUCTURE.md](PARALLEL_TASK_STRUCTURE.md) — tasks are grouped by cohort; order of operations does not block parallel completion. Split large tasks into smaller units to maximize automation.
---
## Deployment Phases
### Phase 0 — Foundation ✅
| Task | Required | Status | Notes |
|------|----------|--------|-------|
| ER605-A WAN1 configured (76.53.10.34/28) | Required | ✅ Done | |
| Proxmox mgmt accessible | Required | ✅ Done | |
| Basic containers deployed (ml110) | Required | ✅ Done | 12 Besu containers |
| R630-03 / R630-04 | Obsolete | N/A | Only ml110, r630-01, r630-02 active |
### Phase 1 — VLAN Enablement ⏳
| Task | Required | Status | Notes |
|------|----------|--------|-------|
| UDM Pro VLAN config | Optional | ⏳ Pending | ES216G/ER605 removed |
| VLAN-aware bridge on Proxmox | Optional | ⏳ Pending | |
| Services migrated to VLANs | Optional | ⏳ Pending | See NETWORK_ARCHITECTURE |
### Phase 2 — Observability ⏳
| Task | Required | Status | Notes |
|------|----------|--------|-------|
| Monitoring stack deployed (Prometheus, Grafana, Loki, Alertmanager) | Required | ⏳ Pending | |
| Grafana published via Cloudflare Access | Required | ⏳ Pending | |
| Alerts configured | Required | ⏳ Pending | |
### Phase 3 — CCIP Fleet ⏳
| Task | Required | Status | Notes |
|------|----------|--------|-------|
| CCIP Ops/Admin deployed (VMID 5400-5401) | Required | ⏳ Pending | docs/07-ccip/CCIP_DEPLOYMENT_SPEC |
| 16 commit nodes (5410-5425) | Required | ⏳ Pending | |
| 16 execute nodes (5440-5455) | Required | ⏳ Pending | |
| 7 RMN nodes (5470-5476) | Required | ⏳ Pending | |
| NAT pools configured | Required | ⏳ Pending | |
| Missing containers (3 only: 2506, 2507, 2508) | Optional | ⏳ Pending | [MISSING_CONTAINERS_LIST.md](../03-deployment/MISSING_CONTAINERS_LIST.md) |
### Phase 4 — Sovereign Tenants ⏳
| Task | Required | Status | Notes |
|------|----------|--------|-------|
| Sovereign VLANs configured | Required | ⏳ Pending | |
| Tenant isolation enforced | Required | ⏳ Pending | |
| Access control configured | Required | ⏳ Pending | |
---
## Codebase Tasks
### smom-dbis-138 (Required)
| Task | Priority | Status |
|------|----------|--------|
| Vault/ISO test suites | Critical | ✅ Tests exist (test/vault/, test/iso4217w/) |
| Deployment scripts (VLT-010 to VLT-018, ISO-009 to ISO-018) | High | ✅ deploy-vault-system.sh created |
| Security audits (VLT-024, ISO-024) | Critical | ⏳ Pending |
| Bridge integrations (BRG-VLT, BRG-ISO) | High | ⏳ Pending |
| CCIP AMB full implementation | High | ⏳ Pending |
### OMNIS (Required)
| Task | Priority | Status |
|------|----------|--------|
| REST API backend | Critical | ✅ Scaffold exists (OMNIS/backend) |
| Replace MSW mocks with real API | Critical | ✅ VITE_USE_REAL_API toggle exists |
| Auth (Sankofa Phoenix SDK) | High | ✅ VITE_SANKOFA_* env scaffold added |
| Database schema and migrations | Critical | ✅ Migrations exist |
| Unit tests (Header, etc.) | High | ✅ Vitest scaffold; Header.test.tsx passes |
### dbis_core (Required)
| Task | Priority | Status |
|------|----------|--------|
| AS4 settlement placeholders | High | ✅ SANCTIONS/AML/LEDGER env stubs added |
| IRU remaining tasks | High | ⏳ Pending |
| TypeScript/Prisma fixes (Phases 1-4 done) | High | ~1186 errors remain |
### Infrastructure (Optional)
| Task | Priority | Status |
|------|----------|--------|
| NPMplus HA (Keepalived, secondary) | Optional | ⏳ Pending |
| verify-backend-vms TBD paths (10130, 2400) | Optional | ✅ Resolved; host mapping fixed |
| WebSocket automated testing | Optional | ⏳ Pending |
### Documentation (Optional)
| Task | Priority | Status |
|------|----------|--------|
| IP centralization (590+ scripts) | Optional | ✅ Tracking doc: IP_CENTRALIZATION_TRACKING.md |
| Documentation consolidation | Optional | ⏳ Pending |
### External Integrations (Provider-Dependent)
| Integration | Est. Time | Status |
|-------------|-----------|--------|
| Li.Fi | 2-8 weeks | ⏳ Pending |
| LayerZero | 4-12 weeks | ⏳ Pending |
| Wormhole | 6-16 weeks | ⏳ Pending |
| Uniswap | 8-20 weeks | ⏳ Pending |
| 1inch | 4-12 weeks | ⏳ Pending |
| MoonPay / Ramp | 4-8 weeks each | ⏳ Pending |

View File

@@ -0,0 +1,178 @@
# Placeholders and Required Additions — Master List
**Last Updated:** 2026-02-05
**Purpose:** Single reference for all placeholders (code/config) and required additions (operator, env, phases, API keys).
**Sources:** [PLACEHOLDERS_AND_TBD.md](../PLACEHOLDERS_AND_TBD.md), [REQUIRED_FIXES_UPDATES_GAPS.md](../REQUIRED_FIXES_UPDATES_GAPS.md), [11-references/PLACEHOLDER_IMPLEMENTATIONS.md](../11-references/PLACEHOLDER_IMPLEMENTATIONS.md), [TODO_TASK_LIST_MASTER.md](TODO_TASK_LIST_MASTER.md), [NEXT_STEPS_MASTER.md](NEXT_STEPS_MASTER.md), [reports/API_KEYS_REQUIRED.md](../../reports/API_KEYS_REQUIRED.md), [IMPLEMENTATION_CHECKLIST.md](../10-best-practices/IMPLEMENTATION_CHECKLIST.md).
---
## 1. Placeholders (code / config)
### smom-dbis-138
| Item | Location | Description | Priority |
|------|----------|-------------|----------|
| **Canonical addresses env-only** | `services/token-aggregation/src/config/canonical-tokens.ts` | All token addresses from env (e.g. `CUSDC_ADDRESS_138`, `WETH_ADDRESS_138`). Unset → filtered out. **Required env:** see `services/token-aggregation/README.md` and root/smom `.env.example`; document any new tokens in env or add fallback (config/DB). | Medium |
| **AlltraAdapter fee** | `contracts/bridge/adapters/evm/AlltraAdapter.sol` | `getBridgeFee()` / `setBridgeFee()` — update with actual ALL Mainnet fee after verification. Default 0.001 ALL. | Medium |
| **Smart accounts kit** | `script/smart-accounts/DeploySmartAccountsKit.s.sol` | EntryPoint, AccountFactory, Paymaster from env; deploy and set in .env if not already. | Medium |
| **Quote service Fabric chainId** | `orchestration/bridge/quote-service.ts` | Uses `FABRIC_CHAIN_ID` or fallback 999 until Fabric integrated. | Low |
| **EnhancedSwapRouter / DODOPMMProvider** | `contracts/bridge/trustless/EnhancedSwapRouter.sol`, `DODOPMMProvider.sol` | Some fee/size logic returns 0 or “placeholder”; optimize when oracle/pool config ready. | Low |
| **WETH bridges mainnet receiver** | `script/deploy/bridge/DeployWETHBridges.s.sol` | Set `MAINNET_WETH9_BRIDGE_ADDRESS`, `MAINNET_WETH10_BRIDGE_ADDRESS` in env when configuring cross-chain destinations. | Config |
| **CMC / CoinGecko chain support** | Token aggregation adapters | ChainId 138 and 651940 not supported by CoinGecko/CMC; external price/volume empty until platforms add support or another source. | Informational |
| **.bak script/test restoration** | Various (e.g. `DeployVaultSystem.s.sol.bak`, `DODOPMMIntegration.t.sol.bak`) | Fix and restore or keep deprecated; see [BAK_FILES_DEPRECATION.md](../../smom-dbis-138/docs/BAK_FILES_DEPRECATION.md). | Low |
### dbis_core
| Item | Location | Description | Priority |
|------|----------|-------------|----------|
| **Prometheus / Redis / PagerDuty / AS4** | arbitrage metrics, cache, alert.service, as4-metrics | Prometheus when monitoring stack deployed; Redis optional; PagerDuty stub (log only); AS4 Redis health in metrics. | Medium |
| **TypeScript errors** | dbis_core | ~1186 TS errors (deferred); fix by module/file. | Deferred |
### the-order (legal documents)
| Item | Location | Description | Priority |
|------|----------|-------------|----------|
| **E-signature** | `services/legal-documents/src/services/e-signature.ts` | Integrate with DocuSign/Adobe Sign or similar; status query; webhook. | Medium |
| **Court e-filing** | `services/legal-documents/src/services/court-efiling.ts` | Integrate with actual court e-filing system; status query. | Medium |
| **Document security** | `services/legal-documents/src/services/document-security.ts` | PDF watermarking, redaction, encryption/decryption. | Medium |
| **Document export** | `services/legal-documents/src/services/document-export.ts` | PDF (pdfkit/puppeteer), DOCX (docx library). | Medium |
| **Security routes** | `services/legal-documents/src/routes/security-routes.ts` | Watermarking, redaction handlers. | Medium |
### OMNIS
| Item | Location | Description | Priority |
|------|----------|-------------|----------|
| **Sankofa Phoenix SDK** | OMNIS/ | Migration from Azure documented; integrate Sankofa Phoenix SDK (or equivalent) for full feature parity. | Medium |
### multi-chain-execution / Tezos
| Item | Location | Description | Priority |
|------|----------|-------------|----------|
| **TezosRelayService** | multi-chain-execution, adapter-tezos | No dedicated native Tezos mint/transfer relay; route planning uses adapter. Add service when implemented. | Low |
---
## 2. Required additions — operator / environment
### Wave 0 (gates)
| Task | Requirement | Command / note |
|------|-------------|----------------|
| **W0-1 NPMplus RPC fix** | Host on LAN | `bash scripts/nginx-proxy-manager/update-npmplus-proxy-hosts-api.sh` or `scripts/run-wave0-from-lan.sh` |
| **W0-2 sendCrossChain (real)** | PRIVATE_KEY, LINK approved | `scripts/bridge/run-send-cross-chain.sh <amount> [recipient]` (omit `--dry-run`) |
| **W0-3 NPMplus backup** | NPM_PASSWORD in .env | `bash scripts/verify/backup-npmplus.sh` when NPMplus is up |
### Wave 1 operator
| Task | Requirement | Note |
|------|-------------|------|
| **W1-1 SSH key-based auth** | Deploy keys first | `scripts/security/setup-ssh-key-auth.sh [--dry-run|--apply]`; disable password after testing |
| **W1-2 Firewall Proxmox 8006** | Admin CIDR | `scripts/security/firewall-proxmox-8006.sh [--dry-run|--apply] [CIDR]` |
| **W1-8 NPMplus backup cron** | NPMplus up | `scripts/maintenance/schedule-npmplus-backup-cron.sh --install`; daily-weekly: `schedule-daily-weekly-cron.sh --install` |
| **W1-19 Secure validator keys** | Proxmox root | `scripts/secure-validator-keys.sh [--dry-run]` on host (VMIDs 10001004) |
| **W1-20 shellcheck** | Optional | Install shellcheck; `scripts/verify/run-shellcheck.sh [--optional]` or `run-shellcheck-docker.sh` |
| **W1-27 ALL_IMPROVEMENTS 111** | LAN/Proxmox | .env, validator keys, SSH, firewall, VLANs, metrics, backup, runbooks per [ALL_IMPROVEMENTS_AND_GAPS_INDEX.md](../ALL_IMPROVEMENTS_AND_GAPS_INDEX.md) |
### Security (smom / external)
| Task | Requirement | Note |
|------|-------------|------|
| **Security audits VLT-024, ISO-024** | smom backlog | Deferred |
| **Bridge integrations BRG-VLT, BRG-ISO** | smom backlog | Deferred |
| **Paymaster (optional)** | Contract sources, RPC | `forge script script/smart-accounts/DeployPaymaster.s.sol --rpc-url $RPC_URL_138 --broadcast`; see SMART_ACCOUNTS_DEPLOYMENT_NOTE |
---
## 3. Required additions — API keys and secrets
**Full list:** [reports/API_KEYS_REQUIRED.md](../../reports/API_KEYS_REQUIRED.md)
| Category | Variables / services | Where used |
|----------|---------------------|------------|
| **Cross-chain / DeFi** | LIFI_API_KEY, JUMPER_API_KEY, ONEINCH_API_KEY | alltra-lifi-settlement, chain138-quote.service |
| **Fiat on/off ramp** | MOONPAY_API_KEY, RAMP_NETWORK_API_KEY, ONRAMPER_API_KEY | metamask-integration/ramps |
| **E-signature** | E_SIGNATURE_BASE_URL + API key (e.g. DocuSign) | the-order/legal-documents |
| **Alerts** | SLACK_WEBHOOK_URL, PAGERDUTY_INTEGRATION_KEY, EMAIL_ALERT_* | dbis_core alert.service |
| **Explorers / price** | ETHERSCAN_API_KEY, COINGECKO_API_KEY, COINMARKETCAP_API_KEY | Contract verification, token-aggregation, oracle |
| **OTC (dbis_core)** | CRYPTO_COM_API_KEY, CRYPTO_COM_API_SECRET | dbis_core/.env |
---
## 4. Required additions — phases (infrastructure)
### Phase 1 — VLAN enablement (optional)
| Task | Status |
|------|--------|
| UDM Pro VLAN config | ⏳ Pending |
| VLAN-aware bridge on Proxmox | ⏳ Pending |
| Services migrated to VLANs | ⏳ Pending |
### Phase 2 — Observability (required)
| Task | Status |
|------|--------|
| Monitoring stack (Prometheus, Grafana, Loki, Alertmanager) | ⏳ Pending |
| Grafana via Cloudflare Access | ⏳ Pending |
| Alerts configured | ⏳ Pending |
### Phase 3 — CCIP fleet (required)
| Task | Status |
|------|--------|
| CCIP Ops/Admin (VMID 5400-5401) | ⏳ Pending |
| 16 commit (5410-5425), 16 execute (5440-5455), 7 RMN (5470-5476) | ⏳ Pending |
| NAT pools configured | ⏳ Pending |
### Phase 4 — Sovereign tenants (required)
| Task | Status |
|------|--------|
| Sovereign VLANs 200203 configured | ⏳ Pending |
| Tenant isolation enforced (ACLs, east-west deny) | ⏳ Pending |
| Access control configured | ⏳ Pending |
**Scripts:** `scripts/deployment/phase4-sovereign-tenants.sh [--show-steps|--dry-run]`; runbook: [OPERATIONAL_RUNBOOKS.md](../03-deployment/OPERATIONAL_RUNBOOKS.md) § Phase 4.
---
## 5. Required additions — implementation checklist (high priority)
From [IMPLEMENTATION_CHECKLIST.md](../10-best-practices/IMPLEMENTATION_CHECKLIST.md):
| Item | Action |
|------|--------|
| Secure .env permissions | `chmod 600 .env` (done in repo; verify on each host) |
| Secure validator key permissions | `scripts/secure-validator-keys.sh` on Proxmox (W1-19) |
| SSH key-based auth | See W1-1 |
| Firewall Proxmox 8006 | See W1-2 |
| Network segmentation (VLANs) | Phase 1 |
| Basic metrics (Besu 9545, Prometheus) | Phase 2; config exists in scripts/monitoring |
| Health check + alerting | Phase 2; ALERT_EMAIL/ALERT_WEBHOOK in scripts |
| Automated backup + encrypted validator keys | scripts/backup/automated-backup.sh; backup-npmplus; schedule-*-cron.sh |
| Backup config files + version control | scripts/backup-proxmox-configs.sh |
| Integration tests for deployment scripts | Pending |
| Runbooks (add/remove validator, upgrade Besu, key rotation, recovery) | OPERATIONAL_RUNBOOKS.md; expand as needed |
---
## 6. Maintenance (ongoing)
| Task | Frequency | Script |
|------|-----------|--------|
| Monitor explorer sync | Daily | daily-weekly-checks.sh daily |
| Monitor RPC 2201 | Daily | daily-weekly-checks.sh daily |
| Config API uptime | Weekly | daily-weekly-checks.sh weekly |
| Review explorer logs | Weekly | Manual; runbook |
| Update token list | As needed | token-list.json / explorer config |
**Cron:** `scripts/maintenance/schedule-daily-weekly-cron.sh [--install|--show]`.
---
## 7. Index references
- **Full improvements 1139:** [ALL_IMPROVEMENTS_AND_GAPS_INDEX.md](../ALL_IMPROVEMENTS_AND_GAPS_INDEX.md)
- **Execution order:** [FULL_PARALLEL_EXECUTION_ORDER.md](FULL_PARALLEL_EXECUTION_ORDER.md)
- **Operator checklist:** [WAVE2_WAVE3_OPERATOR_CHECKLIST.md](WAVE2_WAVE3_OPERATOR_CHECKLIST.md)
- **Master TODO:** [TODO_TASK_LIST_MASTER.md](TODO_TASK_LIST_MASTER.md)

View File

@@ -0,0 +1,175 @@
# All Remaining Items and Tasks — Full Maximum Parallel Mode
**Last Updated:** 2026-02-05
**Purpose:** Single list of every remaining task, grouped by wave. Within each wave, run all items in parallel.
**Refs:** [FULL_PARALLEL_EXECUTION_ORDER.md](FULL_PARALLEL_EXECUTION_ORDER.md) | [TODO_TASK_LIST_MASTER.md](TODO_TASK_LIST_MASTER.md) | [REMAINING_TASKS_NEXT_STEPS_PHASES_REVIEW.md](REMAINING_TASKS_NEXT_STEPS_PHASES_REVIEW.md)
---
## How to run
1. **Wave 0** — Run W0-1, W0-2, W0-3 in parallel (where different owners).
2. **Wave 1** — Run every W1-* item in parallel (assign to owners or automation).
3. **Wave 2** — Run every W2-* item in parallel (by host or by component).
4. **Wave 3** — After Wave 2: run W3-1 and W3-2 in parallel.
5. **Ongoing** — Schedule O-* (cron / runbooks).
---
## Wave 0 — Gates / credentials
| ID | Task | Command / note |
|----|------|------------------|
| W0-1 | Apply NPMplus RPC fix (405) | From LAN: `bash scripts/nginx-proxy-manager/update-npmplus-proxy-hosts-api.sh` |
| W0-2 | Execute sendCrossChain (real) | Omit `--dry-run` in `run-send-cross-chain.sh`; LINK approved; bridge 0x971cD9D156f193df8051E48043C476e53ECd4693 |
| W0-3 | NPMplus backup (export/config) | NPM_PASSWORD in .env; `./scripts/backup/automated-backup.sh [--with-npmplus]` |
---
## Wave 1 — Full parallel (all at once)
### Security
| ID | Task | Status |
|----|------|--------|
| W1-1 | SSH key-based auth; disable password (coordinate to avoid lockout): `./scripts/security/setup-ssh-key-auth.sh [--dry-run\|--apply]` | ✅ Dry-run done; apply = operator |
| W1-2 | Firewall: restrict Proxmox 8006: `./scripts/security/firewall-proxmox-8006.sh [--dry-run\|--apply] [CIDR]` | ✅ Dry-run done; apply = operator |
| W1-3 | smom: Security audits VLT-024, ISO-024 |
| W1-4 | smom: Bridge integrations BRG-VLT, BRG-ISO |
### Monitoring (config)
| ID | Task | Status |
|----|------|--------|
| W1-5 | Prometheus scrape (Besu 9545); alert rules; `config/monitoring/` | ✅ phase2-observability.sh --config-only run; config in config/monitoring/ |
| W1-6 | Grafana dashboards; Alertmanager config | ✅ alertmanager.yml in config/monitoring/; Grafana = deploy |
| W1-7 | Loki / Alertmanager config (no deploy yet) | ✅ Config present |
### Backup
| ID | Task | Status |
|----|------|--------|
| W1-8 | Verify/schedule backup cron: `scripts/maintenance/schedule-npmplus-backup-cron.sh [--install\|--show]`; `schedule-daily-weekly-cron.sh` | ✅ --show run; daily-weekly cron installed; NPMplus install needs NPM_PASSWORD |
### VLAN (optional)
| ID | Task |
|----|------|
| W1-9 | VLAN enablement: UDM Pro VLAN docs; Proxmox VLAN-aware bridge design |
| W1-10 | VLAN migration plan (per-service table) |
### Documentation
| ID | Task |
|----|------|
| W1-11 | Documentation consolidation (by folder); archive old status |
| W1-12 | Quick reference cards; decision trees; config templates (ALL_IMPROVEMENTS 6874) |
| W1-13 | Final IP assignments; service connectivity matrix; runbooks |
### Codebase
| ID | Task |
|----|------|
| W1-14 | dbis_core: TypeScript/Prisma fixes (~1186 errors; parallelize by file) — or defer |
| W1-15 | smom: EnhancedSwapRouter quoter; AlltraAdapter fee |
| W1-16 | smom: IRU remaining tasks |
| W1-17 | Placeholders: canonical addresses env; AlltraAdapter; smart accounts kit; quote-service Fabric chainId; .bak deprecation (8791) |
### Quick wins & checklist
| ID | Task |
|----|------|
| W1-18 | Progress indicators in scripts; config validation in CI |
| W1-19 | Validator key permissions (chmod 600, chown besu) |
| W1-20 | Secret audit; input validation; security scanning (4851) |
| W1-21 | Config validation (JSON/YAML); config templates; env standardization (5254) |
### Optional: MetaMask / explorer
| ID | Task |
|----|------|
| W1-22 | Token-aggregation hardening; CoinGecko submission |
| W1-23 | Chain 138 Snap: market data, swap quotes, bridge routes |
| W1-24 | Explorer: dark mode, network selector, sync indicator |
| W1-25 | Paymaster deploy (optional): `forge script script/smart-accounts/DeployPaymaster.s.sol --rpc-url $RPC_URL_138 --broadcast` |
| W1-26 | API keys: Li.Fi, Jumper, 1inch (API_KEYS_REQUIRED.md) |
### Improvements index (parallel by range)
| ID | Task |
|----|------|
| W1-27 | ALL_IMPROVEMENTS 111 (Proxmox high) |
| W1-28 | ALL_IMPROVEMENTS 1220 (Proxmox medium) |
| W1-29 | ALL_IMPROVEMENTS 2130 (Proxmox low) |
| W1-30 | ALL_IMPROVEMENTS 3135 (Quick wins) |
| W1-31 | ALL_IMPROVEMENTS 3643 (script shebang, shellcheck, consolidation) |
| W1-32 | ALL_IMPROVEMENTS 4447 (doc consolidation, API doc) |
| W1-33 | ALL_IMPROVEMENTS 4857 (security, validation, RBAC, tests, CI) |
| W1-34 | ALL_IMPROVEMENTS 5867 (logging, metrics, health, DevContainer, backup) |
| W1-35 | ALL_IMPROVEMENTS 6874 (docs: quick ref, decision trees, glossary) |
| W1-36 | ALL_IMPROVEMENTS 7581 (Phase 14 design; missing containers list) |
| W1-37 | ALL_IMPROVEMENTS 8286 (smom audits, BRG, CCIP AMB, dbis_core, IRU) |
| W1-38 | ALL_IMPROVEMENTS 8791 (placeholders) |
| W1-39 | ALL_IMPROVEMENTS 92105 (MetaMask/explorer) |
| W1-40 | ALL_IMPROVEMENTS 106121 (Tezos/Etherlink/CCIP) |
| W1-41 | ALL_IMPROVEMENTS 122126 (Besu/blockchain) |
| W1-42 | ALL_IMPROVEMENTS 127130 (RPC translator) |
| W1-43 | ALL_IMPROVEMENTS 131134 (Orchestration portal) |
| W1-44 | ALL_IMPROVEMENTS 135139 (Maintenance — document/automate) |
**Detail:** [ALL_IMPROVEMENTS_AND_GAPS_INDEX.md](../ALL_IMPROVEMENTS_AND_GAPS_INDEX.md)
---
## Wave 2 — Infra / deploy (parallel by host or component)
| ID | Task | Parallelize by |
|----|------|----------------|
| W2-1 | Deploy monitoring stack (Prometheus, Grafana, Loki, Alertmanager) | By component |
| W2-2 | Grafana via Cloudflare Access; alerts configured | After stack |
| W2-3 | VLAN enablement: UDM Pro VLAN; Proxmox bridge; migrate services to VLANs | By VLAN/host |
| W2-4 | Phase 3 CCIP: Ops/Admin (5400-5401); NAT pools; commit/execute/RMN scripts | Ops → NAT → scripts |
| W2-5 | Phase 4: Sovereign tenant VLANs; isolation; access control | By tenant/VLAN |
| W2-6 | **Missing containers: 3 only (2506, 2507, 2508)** — [MISSING_CONTAINERS_LIST.md](../03-deployment/MISSING_CONTAINERS_LIST.md) | By VMID/host |
| W2-7 | DBIS services start (1010010151); Hyperledger | By host |
| W2-8 | NPMplus HA (Keepalived, 10234) | Optional |
---
## Wave 3 — After Wave 2
| ID | Task | Depends on |
|----|------|------------|
| W3-1 | CCIP Fleet: 16 commit (5410-5425), 16 execute (5440-5455), 7 RMN (5470-5476) | W2-4 (Ops/Admin, NAT) |
| W3-2 | Phase 4 tenant isolation enforcement; access control | W2-3 / W2-5 |
---
## Ongoing (schedule, not sequenced) — ✅ Completed 2026-02-05
| ID | Task | Frequency | Status |
|----|------|-----------|--------|
| O-1 | Monitor explorer sync | Daily — `scripts/maintenance/daily-weekly-checks.sh daily` | ✅ Cron installed (08:00) |
| O-2 | Monitor RPC 2201 | Daily — same script | ✅ Cron installed (08:00) |
| O-3 | Config API uptime | Weekly — `daily-weekly-checks.sh weekly` | ✅ Cron installed (Sun 09:00) |
| O-4 | Review explorer logs | Weekly (manual; runbook) | ✅ Runbook: OPERATIONAL_RUNBOOKS § Maintenance |
| O-5 | Update token list | As needed | ✅ Token list validated (token-lists/lists/dbis-138.tokenlist.json) |
---
## Validation (after changes)
| Check | Command |
|-------|---------|
| CI / config | `bash scripts/verify/run-all-validation.sh [--skip-genesis]` |
| Full verification | `bash scripts/verify/run-full-verification.sh` |
| E2E routing | `bash scripts/verify/verify-end-to-end-routing.sh` |
| Backend VMs | `bash scripts/verify/verify-backend-vms.sh` |
| Besu peers | `bash scripts/besu-verify-peers.sh http://192.168.11.211:8545` |
---
## Summary counts
| Wave | Item count | Run rule |
|------|------------|----------|
| Wave 0 | 3 | Parallel (different owners) |
| Wave 1 | 44 (W1-1 … W1-44) | All in parallel |
| Wave 2 | 8 | All in parallel (by host/component) |
| Wave 3 | 2 | Parallel after Wave 2 |
| Ongoing | 5 | Cron / runbooks |
**Total remaining (actionable):** Wave 0: 3 · Wave 1: 44 · Wave 2: 8 · Wave 3: 2 · Ongoing: 5.
**Last parallel run (2026-02-05):** Run log batch 11 — CI validation, config validation, security dry-runs (W1-1, W1-2), phase2 config, CCIP checklist, phase4 show-steps, config backup, shellcheck --optional, Wave 0 dry-run. See [FULL_PARALLEL_RUN_LOG.md](FULL_PARALLEL_RUN_LOG.md).

View File

@@ -0,0 +1,143 @@
# Remaining Tasks & API Features
**Last updated:** 2026-02-11
**Purpose:** Single list of remaining tasks plus inventory of new and additional API features (Phoenix Deploy, OMNL Fineract, Explorer, etc.).
**Related:** [TODO_TASK_LIST_MASTER.md](TODO_TASK_LIST_MASTER.md), [REMAINING_WORK_DETAILED_STEPS.md](REMAINING_WORK_DETAILED_STEPS.md), [NEXT_STEPS_OPERATOR.md](NEXT_STEPS_OPERATOR.md).
---
## Part 1 — Remaining tasks (consolidated)
### Critical / infra (need LAN or creds)
| ID | Task | Blocker | Reference |
|----|------|---------|-----------|
| W0-1 | NPMplus RPC fix (405) | Run from LAN (192.168.11.x) | REMAINING_WORK_DETAILED_STEPS § Wave 0 |
| W0-2 | sendCrossChain (real) | PRIVATE_KEY, LINK approved | REMAINING_WORK_DETAILED_STEPS § W0-2 |
| W0-3 | NPMplus backup | NPM_PASSWORD, NPMplus reachable | REMAINING_WORK_DETAILED_STEPS § W0-3 |
| Paymaster | Deploy Paymaster (optional) | Contract sources, RPC | TODO_TASK_LIST_MASTER §2 |
| smom | Security audits VLT-024, ISO-024; Bridge BRG-VLT, BRG-ISO | — | TODO_TASK_LIST_MASTER §5 |
### Phoenix Deploy API
| ID | Task | Reference |
|----|------|-----------|
| PD-1 | Implement full deploy logic (Proxmox SSH, run deploy scripts) | PHOENIX_DEPLOY_API_GITEA_INTEGRATION.md |
| PD-2 | Integrate into Sankofa Phoenix API (VMID 8600) | PHOENIX_DEPLOY_API_GITEA_INTEGRATION.md |
| PD-3 | Add NPMplus proxy for phoenix-deploy if exposed publicly | PHOENIX_DEPLOY_API_GITEA_INTEGRATION.md |
| PD-4 | ~~HMAC validation for Gitea webhook (X-Gitea-Signature)~~ | ✅ Done: server.js uses HMAC-SHA256 of raw body |
| PD-5 | ~~On deploy complete: call setGiteaCommitStatus success/failure~~ | ✅ Done: stub deploy reports success; replace when real deploy exists |
### OMNL Fineract / Central Bank
| ID | Task | Reference |
|----|------|-----------|
| OM-1 | ~~Post ledger allocation (T-001T-008)~~ | Done: GL create + ledger-post run; runbook complete |
| OM-2 | ~~Run OMNL deposits discovery~~ | Done: `scripts/omnl/omnl-discovery.sh`; OUT_DIR to save JSON |
| OM-3 | Add-all-deposits helper | Done: `omnl-deposit-one.sh`; bulk = loop discovery/CSV (OMNL_DEPOSITS_PLAN §5) |
| OM-4 | Mifos VMID 5800: UDM port forward or Cloudflare Tunnel; change default password; verify mifos.d-bis.org | MIFOS_REMAINING_STEPS, NEXT_STEPS_RECOMMENDATIONS_SUGGESTIONS |
| OM-5 | Central bank config scripts (setup-currencies, setup-coa, setup-fx-revalidation, validate-config) after Mifos reachable | mifos-omnl-central-bank/README.md |
### Explorer API
| ID | Task | Reference |
|----|------|-----------|
| EX-1 | Explorer API: database for nonce storage (auth) and full Track 24 functionality | DEPLOYMENT_COMPLETE.md, EXPLORER_API_ACCESS.md |
| EX-2 | Health endpoint: currently DEGRADED when database unavailable — resolve or document | explorer-monorepo/docs/DEPLOYMENT_COMPLETE.md |
### Codebase & docs
| ID | Task | Reference |
|----|------|-----------|
| CB-1 | dbis_core: ~1186 TS errors (deferred); fix by module, prisma generate, explicit types | TODO_TASK_LIST_MASTER §8 |
| CB-2 | alltra-lifi-settlement: Curve service — implement when Curve pools exist on Chain 138/651940 | curve.service.ts TODO |
| CB-3 | dbis_core liquidity-limits: implement intraday/daily usage check, liquidity reservation/release | liquidity-limits.service.ts TODO |
| DOC-1 | Work through ALL_IMPROVEMENTS_AND_GAPS_INDEX 1139 (parallel by cohort) | TODO_TASK_LIST_MASTER §4 |
| DOC-2 | Resource/network/database optimization (optional) | TODO_TASK_LIST_MASTER §10 |
### Operator / wave 23
| ID | Task | Reference |
|----|------|-----------|
| W2/W3 | Deploy waves 23 (containers, services, crontab installs) | REMAINING_WORK_DETAILED_STEPS, WAVE2_WAVE3_OPERATOR_CHECKLIST |
| CT-1a | Crontab installs on operator host | NEXT_STEPS_OPERATOR |
---
## Part 2 — New and additional API features (inventory)
### Phoenix Deploy API (phoenix-deploy-api)
| Feature | Status | Notes |
|---------|--------|--------|
| POST /webhook/gitea | ✅ Implemented | Gitea push/tag/PR; optional PHOENIX_DEPLOY_SECRET |
| POST /api/deploy | ✅ Implemented | Body: repo, branch, target, sha; Bearer auth |
| GET /health | ✅ Implemented | Returns { status, service } |
| Gitea commit status | ✅ Implemented | pending/success/failure via GITEA_TOKEN |
| HMAC webhook validation | ✅ Done | server.js: HMAC-SHA256 of raw body vs X-Gitea-Signature |
| Deploy completion callback | ✅ Done (stub) | setGiteaCommitStatus success on /api/deploy accept; replace when real deploy runs |
| Full deploy logic (Proxmox SSH) | ⏳ Planned | Next step doc |
| Sankofa Phoenix API (VMID 8600) integration | ⏳ Planned | Next step doc |
### OMNL Fineract API (omnl.hybxfinance.io)
| Feature | Status | Notes |
|---------|--------|--------|
| GET /offices | ✅ Verified | Tenant omnl, Basic app.omnl |
| GET /clients, /savingsproducts, /savingsaccounts | 📋 Documented | OMNL_DEPOSITS_PLAN, .env in omnl-fineract |
| POST /savingsaccounts, approve, activate | 📋 Documented | Deposit flow |
| POST .../transactions?command=deposit | 📋 Documented | Savings deposit |
| Fixed/recurring deposit products & accounts | 📋 Documented | Same pattern |
| GET/POST /glaccounts, /journalentries | 📋 Documented | LEDGER_ALLOCATION_GL_MAPPING, memo T-001T-008 |
| Post ledger allocation (T-001, T-001B, T-002AT-008) | ✅ Done | GL create + ledger-post run; runbook complete |
| Discovery script (products, clients, accounts) | ✅ Done | `scripts/omnl/omnl-discovery.sh` |
| Single deposit script | ✅ Done | `scripts/omnl/omnl-deposit-one.sh` (ACCOUNT_ID, AMOUNT, DATE) |
| Bulk deposits | 📋 Documented | Loop omnl-deposit-one.sh over discovery output or CSV; OMNL_DEPOSITS_PLAN §5 |
### Explorer API (explorer-monorepo / api.explorer.d-bis.org)
| Feature | Status | Notes |
|---------|--------|--------|
| GET /api/v1/track1/blocks/latest, txs/latest, bridge/status | ✅ Working | Public, no auth |
| GET /api/v1/auth/nonce, /auth/wallet | ✅ Routes | Requires DB for nonce storage |
| GET /api/v1/features | ✅ Working | Track level, permissions |
| Track 24 endpoints (address txs, tokens, search, analytics, operator) | ✅ Routes | Return 401 without auth; need DB for full |
| REST API spec (blocks, txs, pagination) | 📋 Documented | explorer-monorepo/docs/specs/api/rest-api.md |
| OpenAPI 3.0 / API Key (X-API-Key) | 📋 Spec | api-gateway.md, rest-api.md |
| Database for auth and Track 24 | ⏳ Pending | DEPLOYMENT_COMPLETE |
### Other APIs (reference)
| API | Location | Notes |
|-----|----------|--------|
| Mifos/Fineract (mifos.d-bis.org) | VMID 5800 | MIFOS_BASE_URL, central-bank-config scripts |
| DBIS Core API | dbis_core | DBIS_CORE_API_REFERENCE.md |
| UDM Pro / Omada | docs/04-configuration | UDM_PRO_API_ENDPOINT_EXPLORATION.md |
---
## Completed in this pass (2026-02-10 / 2026-02-11)
- **Phoenix Deploy API:** HMAC-SHA256 webhook validation (X-Gitea-Signature); deploy completion callback (stub reports success). Full deploy logic and Sankofa integration remain planned.
- **OMNL:** GL accounts (1000, 1050, 2000, 2100, 3000) created via `omnl-gl-accounts-create.sh`; ledger allocation T-001T-008 posted via `omnl-ledger-post.sh`; discovery via `omnl-discovery.sh`; single-deposit helper `omnl-deposit-one.sh` (bulk = loop over discovery/CSV). See `scripts/omnl/README.md` and verification-evidence/OMNL_SCRIPTS_RUN_20260211.md.
**Still require operator/LAN/creds or external systems:** W0 (NPMplus, sendCrossChain, backup), Mifos 5800 access, Explorer DB, W2/W3 deploy, dbis_core TS bulk fix.
---
## Part 3 — Quick reference
| Doc | Purpose |
|-----|---------|
| [TODO_TASK_LIST_MASTER.md](TODO_TASK_LIST_MASTER.md) | Full 1139 checklist, critical fixes, validation commands |
| [REMAINING_WORK_DETAILED_STEPS.md](REMAINING_WORK_DETAILED_STEPS.md) | Step-by-step per task; Wave 03 |
| [NEXT_STEPS_OPERATOR.md](NEXT_STEPS_OPERATOR.md) | Copy-paste operator runbook |
| [PHOENIX_DEPLOY_API_GITEA_INTEGRATION.md](../04-configuration/PHOENIX_DEPLOY_API_GITEA_INTEGRATION.md) | Phoenix API setup, next steps |
| [OMNL_DEPOSITS_PLAN.md](../04-configuration/OMNL_DEPOSITS_PLAN.md) | OMNL deposits discovery & bulk |
| [LEDGER_ALLOCATION_POSTING_RUNBOOK.md](../04-configuration/mifos-omnl-central-bank/LEDGER_ALLOCATION_POSTING_RUNBOOK.md) | Post T-001T-008 to Fineract |
| **scripts/omnl/** | [omnl-discovery.sh](../../scripts/omnl/omnl-discovery.sh), [omnl-ledger-post.sh](../../scripts/omnl/omnl-ledger-post.sh) — [README](../../scripts/omnl/README.md) |
| [EXPLORER_API_ACCESS.md](../../explorer-monorepo/docs/EXPLORER_API_ACCESS.md) | Explorer API access and Blockscout |
---
*Update this doc when completing tasks or adding API features.*

View File

@@ -0,0 +1,173 @@
# Remaining Tasks, Next Steps, and Phases — Consolidated Review
**Last Updated:** 2026-02-05
**Purpose:** Single review of all remaining work, next steps, and deployment phases.
**Sources:** [TODO_TASK_LIST_MASTER.md](TODO_TASK_LIST_MASTER.md), [NEXT_STEPS_MASTER.md](NEXT_STEPS_MASTER.md), [PHASES_AND_TASKS_MASTER.md](PHASES_AND_TASKS_MASTER.md), [DEPLOYMENT_STATUS_MASTER.md](../03-deployment/DEPLOYMENT_STATUS_MASTER.md), [REMAINING_TASKS.md](../REMAINING_TASKS.md), [ALL_IMPROVEMENTS_AND_GAPS_INDEX.md](../ALL_IMPROVEMENTS_AND_GAPS_INDEX.md).
---
## Execution order: full maximum parallel mode
**Run in full maximum parallel.** All remaining work is ordered into waves in **[FULL_PARALLEL_EXECUTION_ORDER.md](FULL_PARALLEL_EXECUTION_ORDER.md)**:
| Wave | Content | Rule |
|------|---------|------|
| **Wave 0** | Gates/creds: NPMplus RPC fix, sendCrossChain (real), NPMplus backup | Run in parallel where different owners |
| **Wave 1** | Security, monitoring config, backup, docs, codebase, quick wins, implementation checklist, improvements 1139 (design/config/code) | Run **all** in parallel |
| **Wave 2** | Monitoring stack deploy, VLAN enablement, CCIP Ops/NAT, Phase 4 scripts, missing containers (3 VMIDs only: [MISSING_CONTAINERS_LIST.md](../03-deployment/MISSING_CONTAINERS_LIST.md)), DBIS/Hyperledger start | Run **all** in parallel (by host or component) |
| **Wave 3** | CCIP Fleet full deploy; Phase 4 tenant isolation | After Wave 2; run in parallel |
| **Ongoing** | Explorer sync, RPC 2201, config API | Daily/weekly |
Within each wave there are **no ordering requirements** between items; run them concurrently to complete all remaining tasks in minimum wall-clock time.
---
## 1. Immediate / Do First
| Item | Status | Action |
|------|--------|--------|
| **Execute sendCrossChain (real)** | ⏳ Pending | Remove `--dry-run` from `run-send-cross-chain.sh`; ensure LINK approved for fee token. Bridge at 0x971cD9D156f193df8051E48043C476e53ECd4693. |
| **Apply NPMplus RPC fix (405)** | ⏳ If RPC 405 | From a host on LAN: `bash scripts/nginx-proxy-manager/update-npmplus-proxy-hosts-api.sh` (sets block_exploits false for RPC). |
| **CT 2301** | ✅ Resolved | Recreated 2026-02-04; Besu config may need reinstall (copy from 2101/2201). |
---
## 2. Remaining Deployment Phases
| Phase | Required | Status | Scope |
|-------|----------|--------|--------|
| **Phase 0 — Foundation** | ✅ | Done | Proxmox hosts, basic containers, edge (UDM Pro, NPMplus). |
| **Phase 1 — VLAN Enablement** | Optional | ⏳ Pending | UDM Pro VLAN config; VLAN-aware bridge on Proxmox; migrate services to VLANs (see [NETWORK_ARCHITECTURE](../02-architecture/NETWORK_ARCHITECTURE.md)). |
| **Phase 2 — Observability** | Required | ⏳ Pending | Prometheus, Grafana, Loki, Alertmanager; Grafana via Cloudflare Access; alerts. |
| **Phase 3 — CCIP Fleet** | Required | ⏳ Pending | CCIP Ops/Admin (5400-5401); 16 commit (5410-5425); 16 execute (5440-5455); 7 RMN (5470-5476); NAT pools. [07-ccip/CCIP_DEPLOYMENT_SPEC](../07-ccip/CCIP_DEPLOYMENT_SPEC.md). |
| **Phase 4 — Sovereign Tenants** | Required | ⏳ Pending | Sovereign VLANs; tenant isolation; access control. |
---
## 3. Security (High Priority)
| Task | Status |
|------|--------|
| SSH key-based auth; disable password auth | ⏳ Pending |
| Firewall: restrict Proxmox API 8006 | ⏳ Pending |
| smom: Security audits VLT-024, ISO-024 | ⏳ Pending |
| smom: Bridge integrations BRG-VLT, BRG-ISO | ⏳ Pending |
---
## 4. Monitoring & Backup
| Task | Status |
|------|--------|
| Prometheus, Grafana, Loki, Alertmanager | ⏳ Pending |
| Besu metrics 9545; Prometheus scraping | ⏳ Pending |
| Health check alerting | ⏳ Pending |
| Automated backups; NPMplus backup (NPM_PASSWORD) | ⏳ Pending |
---
## 5. Codebase
| Area | Task | Status |
|------|------|--------|
| dbis_core | TypeScript/Prisma fixes | ~1186 TS errors remain |
| smom-dbis-138 | Security audits (VLT-024, ISO-024) | ⏳ Pending |
| smom-dbis-138 | Bridge integrations (BRG-VLT, BRG-ISO) | ⏳ Pending |
| smom-dbis-138 | CCIP AMB full implementation | ⏳ Pending |
| smom-dbis-138 | EnhancedSwapRouter quoter; AlltraAdapter fee TODO | ⏳ Pending |
| smom-dbis-138 | IRU remaining tasks | ⏳ Pending |
---
## 6. Optional / Enhancements
| Category | Examples |
|----------|----------|
| **Gas/Deploy** | Paymaster deploy (optional); see [SMART_ACCOUNTS_DEPLOYMENT_NOTE](../metamask-integration/docs/SMART_ACCOUNTS_DEPLOYMENT_NOTE.md). |
| **Token/MetaMask** | Token-aggregation hardening; CoinGecko submission; Chain 138 Snap (market data, swap, bridge); Consensys outreach. |
| **API keys** | Li.Fi, Jumper, 1inch (see [API_KEYS_REQUIRED](../reports/API_KEYS_REQUIRED.md)). |
| **Explorer** | Dark mode, network selector, sync indicator. |
| **Placeholders** | Canonical addresses env-only; AlltraAdapter fee; Smart accounts kit; quote service Fabric chainId 999; .bak deprecation. |
---
## 7. Maintenance (Ongoing)
| Task | Frequency |
|------|-----------|
| Monitor explorer sync | Daily |
| Monitor RPC 2201 | Daily |
| Config API uptime | Weekly |
---
## 8. Improvements & Gaps Index (1139)
Full checklist in [ALL_IMPROVEMENTS_AND_GAPS_INDEX.md](../ALL_IMPROVEMENTS_AND_GAPS_INDEX.md). Summary by range:
| Range | Category | Count |
|-------|----------|-------|
| 111 | Proxmox high priority | 11 |
| 1220 | Proxmox medium | 9 |
| 2130 | Proxmox low | 10 |
| 3135 | Quick wins | 5 |
| 3667 | Code quality & scripts | 32 |
| 6874 | Documentation enhancements | 7 |
| 7591 | Infrastructure & deployment | 17 |
| 92105 | MetaMask & explorer | 14 |
| 106121 | Tezos / Etherlink / CCIP | 16 |
| 122126 | Besu / blockchain | 5 |
| 127130 | RPC translator | 4 |
| 131134 | Orchestration portal | 4 |
| 135139 | Maintenance | 5 |
Work through in parallel by cohort where possible; see [PARALLEL_TASK_STRUCTURE.md](PARALLEL_TASK_STRUCTURE.md).
---
## 9. Deployment Status (In Progress / Pending)
- **VLAN migration:** Besu validators → VLAN 110; sentries → VLAN 111; RPC → VLAN 112; Blockscout → 120; FireFly → 141; MIM API → 160.
- **Service deployment:** CCIP fleet (41 nodes); DBIS services; monitoring stack; additional Hyperledger.
- **Security & access:** Firewall rules; Cloudflare Zero Trust; NAT pools.
- **Documentation:** Final IP assignments; service connectivity matrix; operational runbooks.
*Note:* [DEPLOYMENT_STATUS_MASTER](../03-deployment/DEPLOYMENT_STATUS_MASTER.md) container inventory may reference legacy VMIDs (2500s); current RPC VMIDs are 2101, 2201, 2301, 2303-2308, 2400-2403 per [RPC_ENDPOINTS_MASTER](../04-configuration/RPC_ENDPOINTS_MASTER.md).
---
## 10. Implementation Checklist (Best Practices)
| Priority | Total | Completed | Pending |
|----------|-------|-----------|---------|
| High | 25 | 5 | 20 |
| Medium | 20 | 0 | 20 |
| Low | 15 | 0 | 15 |
| Quick Wins | 8 | 5 | 3 |
**Reference:** [10-best-practices/IMPLEMENTATION_CHECKLIST.md](../10-best-practices/IMPLEMENTATION_CHECKLIST.md).
---
## 11. Validation Commands
| Check | Command |
|-------|---------|
| Backend VMs | `bash scripts/verify/verify-backend-vms.sh` |
| Full verification | `bash scripts/verify/run-full-verification.sh` |
| E2E (Cloudflare domains) | `bash scripts/verify/verify-end-to-end-routing.sh` |
| All systems | `bash scripts/verify-all-systems.sh` |
| Besu peers | `bash scripts/besu-verify-peers.sh http://192.168.11.211:8545` |
---
## Quick Links
- **Execution order (full parallel):** [FULL_PARALLEL_EXECUTION_ORDER.md](FULL_PARALLEL_EXECUTION_ORDER.md) — waves and parallel run order
- **Single next-steps list:** [NEXT_STEPS_MASTER.md](NEXT_STEPS_MASTER.md)
- **Consolidated TODO:** [TODO_TASK_LIST_MASTER.md](TODO_TASK_LIST_MASTER.md)
- **Parallel cohorts (A/B/C/D):** [PARALLEL_TASK_STRUCTURE.md](PARALLEL_TASK_STRUCTURE.md)
- **Phases & codebase tasks:** [PHASES_AND_TASKS_MASTER.md](PHASES_AND_TASKS_MASTER.md)
- **Deployment status:** [03-deployment/DEPLOYMENT_STATUS_MASTER.md](../03-deployment/DEPLOYMENT_STATUS_MASTER.md)
- **Optional/enhancement:** [REMAINING_TASKS.md](../REMAINING_TASKS.md)
- **All improvements (1139):** [ALL_IMPROVEMENTS_AND_GAPS_INDEX.md](../ALL_IMPROVEMENTS_AND_GAPS_INDEX.md)

View File

@@ -0,0 +1,416 @@
# Remaining Work — Detailed Steps for Each Task
**Last Updated:** 2026-02-06
**Purpose:** Single list of all remaining work with step-by-step instructions.
**Sources:** [E2E_COMPLETION_TASKS_DETAILED_LIST.md](E2E_COMPLETION_TASKS_DETAILED_LIST.md), [WAVE2_WAVE3_OPERATOR_CHECKLIST.md](WAVE2_WAVE3_OPERATOR_CHECKLIST.md), [TODO_TASK_LIST_MASTER.md](TODO_TASK_LIST_MASTER.md).
**Copy-paste runbook:** For a single page of ready-to-run commands, see **[NEXT_STEPS_OPERATOR.md](NEXT_STEPS_OPERATOR.md)**.
**Execution order:** Wave 0 → Wave 1 → Wave 2 → Wave 3 → Ongoing. Within each wave, run tasks in parallel where possible.
**Infra deployment readiness:** For a single checklist of what is already in place (templates on all hosts, deps, scripts) vs what unblocks completion (LAN, SSH, creds), see **[03-deployment/INFRA_DEPLOYMENT_LOCKED_AND_LOADED.md](../03-deployment/INFRA_DEPLOYMENT_LOCKED_AND_LOADED.md)**.
---
## ✅ Can Be Accomplished Now (No LAN / Proxmox / Creds Required)
These can be done from your current environment (e.g. dev machine, WSL, CI) without being on LAN, SSH to Proxmox, or setting NPM_PASSWORD/PRIVATE_KEY.
| Item | What to do |
|------|------------|
| **W1-11** | Doc consolidation; archive — move/refactor per ARCHIVE_CANDIDATES.md; consolidate by folder (01-, 02-, …). |
| **W1-12** | Quick reference cards; decision trees — edit [QUICK_REFERENCE_CARDS.md](../12-quick-reference/QUICK_REFERENCE_CARDS.md), CONFIGURATION_DECISION_TREE, 04-configuration README. |
| **W1-9, W1-10, W1-13** | Docs/design — review or refine NETWORK_ARCHITECTURE §37, VLAN migration plan, UDM_PRO_VLAN_* docs, IP assignments, connectivity matrix, runbook cross-links. |
| **W1-20** | Shellcheck — run `bash scripts/verify/run-shellcheck.sh --optional`; or install shellcheck (`apt install shellcheck` / `brew install shellcheck`) and run without `--optional` to fix reported issues. |
| **W1-21** | Config validation / env standardization — extend validate-config-files.sh or ENV_STANDARDIZATION docs if needed. |
| **W1-22** | Token-aggregation; CoinGecko — follow [COINGECKO_SUBMISSION.md](../../smom-dbis-138/services/token-aggregation/docs/COINGECKO_SUBMISSION.md); code/docs in repo. |
| **W1-23** | Chain 138 Snap — market data UI, swap quotes, bridge routes in metamask-integration. |
| **W1-24** | Explorer — dark mode, network selector, sync indicator in explorer-monorepo. |
| **W1-26** | API keys — obtain keys (sign up at URLs in [reports/API_KEYS_REQUIRED.md](../../reports/API_KEYS_REQUIRED.md)); set in root and subproject `.env` for any keys you have or can get. |
| **API Keys & Secrets** | Same: open report, sign up where needed, add values to `.env`; restart services only after you have access to run them. |
| **W1-14** | dbis_core TypeScript — fix ~1186 TS errors by module: run `npx prisma generate` in dbis_core (fixes @prisma/client); then add explicit types for implicit `any` (e.g. callback params). Sample fix applied in `cbdc-fx.service.ts`. |
| **W1-15 W1-17** | Placeholders / code — smom canonical addresses env-only, AlltraAdapter fee, smart accounts kit, quote service Fabric 999, .bak deprecation; see PLACEHOLDERS_AND_* and E2E Part 6. |
| **Placeholders & Code (E2E)** | Code/docs in smom-dbis-138, dbis_core, the-order (e-signature docs, document security design), OMNIS, Tezos relay — any work that doesnt require running infra. |
| **CCIP checklist (dry)** | Run `bash scripts/ccip/ccip-deploy-checklist.sh` to validate env and print deployment order (no deploy). |
| **Validation commands** | Re-run anytime: run-all-validation, validate-config-files, validate-genesis, verify-end-to-end-routing, run-wave0-from-lan.sh --dry-run, phase4 --show-steps/--dry-run, schedule-*-cron.sh --show. |
**Not doable now (need LAN, Proxmox, or creds):** W0-1, W0-2, W0-3, crontab --install, W1-1, W1-2, W1-8 (backup run), W1-19, W2-* (all deploy), W3-* (all), CT-1a, O-4 (explorer logs via SSH). Deferred/backlog (W1-3, W1-4) are “assign to backlog,” not execute now.
**Completed (2026-02-05):** W1-11 (32 files archived to docs/archive/00-meta-status/), W1-12 (decision tree links, 04-config README, QUICK_REFERENCE_CARDS), W1-9/10/13 (NETWORK_ARCHITECTURE runbook cross-links), W1-20 (shellcheck --optional run), W1-21 (ENV_STANDARDIZATION + validate-config-files ref), W1-22W1-24 (CoinGecko/Snap/Explorer refs in QUICK_REFERENCE_CARDS), W1-26/API keys (report + .env.example pointer), W1-14 (dbis_core: sample TS fix in cbdc-fx.service.ts; doc for prisma generate + implicit any), W1-15W1-17 (PLACEHOLDERS canonical env note), CCIP checklist + all validation commands run.
---
## Wave 0 — Gates (Do First When Credentials Allow)
### W0-1: NPMplus RPC fix (405)
**Blocker:** Must run from a host on the same LAN as NPMplus (192.168.11.x).
**Detailed steps:**
1. From a machine on LAN (e.g. 192.168.11.x), open a terminal in the project root.
2. Option A — Run the combined Wave 0 script (RPC fix + backup):
```bash
cd /path/to/proxmox
bash scripts/run-wave0-from-lan.sh
```
(Use `--skip-backup` if you only want the RPC fix.)
3. Option B — Run only the RPC fix script:
```bash
bash scripts/nginx-proxy-manager/update-npmplus-proxy-hosts-api.sh
```
4. Verify: run `bash scripts/verify/verify-end-to-end-routing.sh` — RPC domains should pass (no longer 405).
---
### W0-2: sendCrossChain (real)
**Blocker:** `PRIVATE_KEY` and LINK approved for fee in `.env`; bridge contract: `0x971cD9D156f193df8051E48043C476e53ECd4693`.
**Detailed steps:**
1. In project root, ensure `.env` has:
- `PRIVATE_KEY` — wallet that will send and pay gas/fees.
- `LINK` or equivalent approved for the bridge fee token if required.
2. Run the bridge script **without** `--dry-run`:
```bash
bash scripts/bridge/run-send-cross-chain.sh <amount> [recipient]
```
Example: `bash scripts/bridge/run-send-cross-chain.sh 0.01 0x...`
3. Confirm transaction on chain; check bridge contract and destination chain as needed.
---
### W0-3: NPMplus backup
**Blocker:** `NPM_PASSWORD` in `.env`; NPMplus container reachable (run from LAN or where NPMplus API is reachable).
**Detailed steps:**
1. Set `NPM_PASSWORD` in `.env` (and optionally `NPM_HOST` if not default).
2. From a host that can reach NPMplus (e.g. on LAN):
```bash
bash scripts/verify/backup-npmplus.sh
```
Or run the combined script: `bash scripts/run-wave0-from-lan.sh` (omit `--skip-backup`).
3. Backup artifacts are written to the path reported by the script (e.g. under `logs/` or verification evidence).
---
## Crontab installs (operator host)
**Blocker:** Run on the host where the crontab should be installed (e.g. jump host or Proxmox node).
### NPMplus backup cron (W1-8 part)
**Detailed steps:**
1. On the target host: `cd /path/to/proxmox`.
2. Show the line: `bash scripts/maintenance/schedule-npmplus-backup-cron.sh --show`.
3. Install: `bash scripts/maintenance/schedule-npmplus-backup-cron.sh --install`.
4. Default: daily at 03:00; log: `logs/npmplus-backup.log`.
### Daily/weekly checks cron (O-1, O-2, O-3)
**Detailed steps:**
1. On the target host: `cd /path/to/proxmox`.
2. Show lines: `bash scripts/maintenance/schedule-daily-weekly-cron.sh --show`.
3. Install: `bash scripts/maintenance/schedule-daily-weekly-cron.sh --install`.
4. Defaults: daily 08:00 (explorer sync, RPC 2201); weekly Sunday 09:00 (Config API); log: `logs/daily-weekly-checks.log`.
---
## Wave 1 — Operator / Code / Doc (Parallel Where Possible)
### W1-1: SSH key-based auth; disable password
**Blocker:** Proxmox/SSH access; coordinate to avoid lockout.
**Detailed steps:**
1. Deploy your SSH public key(s) to all Proxmox hosts (e.g. `ssh-copy-id root@<host>`).
2. Test key-based login: `ssh root@<host>` (no password).
3. Dry-run: `bash scripts/security/setup-ssh-key-auth.sh --dry-run`.
4. Apply: `bash scripts/security/setup-ssh-key-auth.sh --apply` (disables password auth).
5. Keep a break-glass method (console/out-of-band) in case of lockout.
Runbook: [OPERATIONAL_RUNBOOKS.md](../03-deployment/OPERATIONAL_RUNBOOKS.md) § Access Control.
---
### W1-2: Firewall — restrict Proxmox API 8006
**Blocker:** Proxmox host or SSH from admin network.
**Detailed steps:**
1. Decide allowed CIDR(s) for Proxmox API (e.g. admin VPN or office IP).
2. Dry-run: `bash scripts/security/firewall-proxmox-8006.sh --dry-run [CIDR]`.
3. Apply: `bash scripts/security/firewall-proxmox-8006.sh --apply [CIDR]`.
4. Verify: access https://<proxmox>:8006 from an allowed IP only.
---
### W1-8: Automated backup; NPMplus backup run; cron (see above)
**Detailed steps (one-time backup run):**
1. When NPMplus is up and `NPM_PASSWORD` is set: `bash scripts/verify/backup-npmplus.sh`.
2. For full automated backup (validators, configs): `bash scripts/backup/automated-backup.sh [--with-npmplus]`.
3. Cron: see **Crontab installs** above for NPMplus backup and daily/weekly.
---
### W1-19: Secure validator key permissions
**Blocker:** Run on Proxmox host as root (or via SSH from LAN).
**Detailed steps:**
1. SSH to each Proxmox host that runs validators (VMIDs 10001004 or per your layout).
2. From project on that host (or copy script and run):
```bash
bash scripts/secure-validator-keys.sh --dry-run # review
bash scripts/secure-validator-keys.sh # apply chmod 600, chown besu
```
3. Confirm Besu still starts and can read keys (e.g. `pct exec <vmid> -- systemctl status besu`).
---
### W1-3, W1-4: smom security audits; bridge integrations (Deferred)
- **W1-3:** smom Security audits VLT-024, ISO-024 — assign to smom backlog.
- **W1-4:** smom Bridge integrations BRG-VLT, BRG-ISO — assign to smom backlog.
No detailed steps here; track in smom/backlog.
---
### W1-5 W1-7: Monitoring config (no deploy)
- **W1-5:** Prometheus scrape (Besu 9545), alert rules — configs: `scripts/monitoring/prometheus-besu-config.yml`, `smom-dbis-138/monitoring/prometheus/`; `export-prometheus-targets.sh`.
- **W1-6:** Grafana dashboards; Alertmanager config — `smom-dbis-138/monitoring/grafana/`, `alertmanager/alertmanager.yml`.
- **W1-7:** Loki/Alertmanager config — `smom-dbis-138/monitoring/loki/`, `alertmanager/`.
**Steps:** Copy or merge configs into the monitoring stack when you deploy (Wave 2).
---
### W1-9 W1-13: Docs / design (mostly done)
- **W1-9:** VLAN enablement design — [NETWORK_ARCHITECTURE.md](../02-architecture/NETWORK_ARCHITECTURE.md) §35.
- **W1-10:** VLAN migration plan — UDM_PRO_VLAN_MIGRATION_PLAN.md, [MISSING_CONTAINERS_LIST.md](../03-deployment/MISSING_CONTAINERS_LIST.md).
- **W1-11:** Doc consolidation; archive — ARCHIVE_CANDIDATES.md; move agreed items.
- **W1-12:** Quick reference cards — [QUICK_REFERENCE_CARDS.md](../12-quick-reference/QUICK_REFERENCE_CARDS.md), CONFIGURATION_DECISION_TREE.
- **W1-13:** IP assignments; connectivity matrix; runbooks — NETWORK_ARCHITECTURE §7, OPERATIONAL_RUNBOOKS, MISSING_CONTAINERS_LIST.
---
### W1-14 W1-17: Codebase (deferred / backlog)
- **W1-14:** dbis_core — fix ~1186 TypeScript errors by module; deferred.
- **W1-15 W1-17:** smom placeholders (EnhancedSwapRouter, AlltraAdapter fee, IRU); canonical addresses env-only; smart accounts kit; quote service Fabric 999; .bak deprecation — see [PLACEHOLDERS_AND_REQUIRED_ADDITIONS_LIST.md](PLACEHOLDERS_AND_REQUIRED_ADDITIONS_LIST.md), [E2E_COMPLETION_TASKS_DETAILED_LIST.md](E2E_COMPLETION_TASKS_DETAILED_LIST.md) Part 6.
---
### W1-20 W1-21: Shellcheck; config validation
- **W1-20:** `bash scripts/verify/run-shellcheck.sh [--optional]` or run-shellcheck-docker.sh; install shellcheck if desired.
- **W1-21:** Config validation and env standardization — already in place: `validate-config-files.sh`, ENV_STANDARDIZATION docs.
---
### W1-22 W1-26: MetaMask / explorer / API keys (optional)
- **W1-22:** Token-aggregation hardening; CoinGecko — [COINGECKO_SUBMISSION.md](../../smom-dbis-138/services/token-aggregation/docs/COINGECKO_SUBMISSION.md).
- **W1-23:** Chain 138 Snap — market data UI, swap quotes, bridge routes; metamask-integration.
- **W1-24:** Explorer — dark mode, network selector, sync indicator; explorer-monorepo.
- **W1-25:** Paymaster (optional): `forge script script/smart-accounts/DeployPaymaster.s.sol --rpc-url $RPC_URL_138 --broadcast` from smom-dbis-138; see SMART_ACCOUNTS_DEPLOYMENT_NOTE.
- **W1-26:** API keys — obtain Li.Fi, Jumper, 1inch (and others in [reports/API_KEYS_REQUIRED.md](../../reports/API_KEYS_REQUIRED.md)); set in `.env`.
---
## Wave 2 — Infra / Deploy (Parallel by Host or Component)
### W2-1: Deploy monitoring stack (Prometheus, Grafana, Loki, Alertmanager)
**Detailed steps:**
1. Use configs: `smom-dbis-138/monitoring/`, `scripts/monitoring/`.
2. Run or adapt: `scripts/deployment/phase2-observability.sh` (or deploy manually per runbook).
3. Ensure Prometheus scrapes Besu 9545; add targets from `export-prometheus-targets.sh` if used.
4. Runbook: [OPERATIONAL_RUNBOOKS.md](../03-deployment/OPERATIONAL_RUNBOOKS.md) § Phase 2.
---
### W2-2: Grafana via Cloudflare Access; alerts
**Detailed steps:**
1. After W2-1 is up, publish Grafana via Cloudflare Access (or your chosen ingress).
2. Configure Alertmanager routes (email/Slack/PagerDuty) in `alertmanager/alertmanager.yml`.
3. Test alert routing (e.g. test alert or drill).
---
### W2-3: VLAN enablement (UDM Pro + Proxmox; migrate services)
**Detailed steps:**
1. Configure sovereign VLANs on UDM Pro (e.g. 200203 per design).
2. Enable VLAN-aware bridge on Proxmox; attach VMs/containers to VLANs.
3. Migrate services to VLANs per [NETWORK_ARCHITECTURE.md](../02-architecture/NETWORK_ARCHITECTURE.md) §35 and UDM_PRO_VLAN_* docs.
4. Verify connectivity and firewall between VLANs.
---
### W2-4: Phase 3 CCIP — Ops/Admin (5400-5401); NAT pools; scripts
**Detailed steps:**
1. Run checklist: `bash scripts/ccip/ccip-deploy-checklist.sh` (validates env, prints order).
2. Deploy CCIP Ops/Admin nodes (VMIDs 5400, 5401) per [CCIP_DEPLOYMENT_SPEC.md](../07-ccip/CCIP_DEPLOYMENT_SPEC.md).
3. Configure NAT pools on ER605 (Blocks #24 for commit/execute/RMN).
4. Expand/create commit/execute/RMN scripts for the full fleet (used in Wave 3).
---
### W2-5: Phase 4 — Sovereign tenant VLANs; isolation
**Detailed steps:**
1. Show steps: `bash scripts/deployment/phase4-sovereign-tenants.sh --show-steps`.
2. Dry-run: `bash scripts/deployment/phase4-sovereign-tenants.sh --dry-run`.
3. Execute manual steps per runbook: [OPERATIONAL_RUNBOOKS.md](../03-deployment/OPERATIONAL_RUNBOOKS.md) § Phase 4; [UDM_PRO_FIREWALL_MANUAL_CONFIGURATION.md](../04-configuration/UDM_PRO_FIREWALL_MANUAL_CONFIGURATION.md).
4. Steps: (1) UDM Pro VLANs 200203, (2) Proxmox VLAN-aware bridge, (3) migrate tenant containers, (4) access control / firewall, (5) Block #6 egress NAT and verify isolation.
---
### W2-6: ~~Missing containers (2506, 2507, 2508)~~ — Destroyed 2026-02-08
**Detailed steps:**
1. Canonical list: [MISSING_CONTAINERS_LIST.md](../03-deployment/MISSING_CONTAINERS_LIST.md).
2. Create three LXC containers:
- **2506, 2507, 2508** — Destroyed 2026-02-08 on all hosts. RPC range: 25002505 only.
3. Specs: 16GB RAM, 4 CPU, 200GB disk; discovery disabled; JWT auth via nginx.
4. Use existing RPC container templates/scripts where available; configure permissioning and nginx per docs.
---
### W2-7: DBIS services (1010010151); Hyperledger
**Detailed steps:**
1. Follow deployment runbooks for DBIS service VMIDs (1010010151).
2. Start/configure Hyperledger services per runbook and [MISSING_CONTAINERS_LIST.md](../03-deployment/MISSING_CONTAINERS_LIST.md) (Firefly etc.).
3. Parallelize by host where multiple hosts are used.
---
### W2-8: NPMplus HA (Keepalived, 10234) — Optional
**Detailed steps:**
1. Follow [NPMPLUS_HA_SETUP_GUIDE.md](../04-configuration/NPMPLUS_HA_SETUP_GUIDE.md).
2. Deploy secondary NPMplus (e.g. VMID 10234); configure Keepalived/HAProxy for failover.
3. Test failover and revert.
---
## Wave 3 — After Wave 2
### W3-1: CCIP Fleet (16 commit, 16 execute, 7 RMN)
**Depends on:** W2-4 (Ops/Admin, NAT pools).
**Detailed steps:**
1. Deploy 16 commit nodes: VMIDs 54105425 (CCIP-COMMIT-01 … CCIP-COMMIT-16).
2. Deploy 16 execute nodes: VMIDs 54405455 (CCIP-EXEC-01 … CCIP-EXEC-16).
3. Deploy 7 RMN nodes: VMIDs 54705476 (CCIP-RMN-01 … CCIP-RMN-07).
4. Use scripts/runbooks from W2-4; full spec: [CCIP_DEPLOYMENT_SPEC.md](../07-ccip/CCIP_DEPLOYMENT_SPEC.md).
---
### W3-2: Phase 4 tenant isolation enforcement
**Depends on:** W2-3 / W2-5 (VLANs and sovereign tenant setup).
**Detailed steps:**
1. Apply firewall rules and ACLs to enforce east-west denial between tenants.
2. Verify tenant isolation (no cross-tenant access); verify egress NAT (Block #6) per design.
3. Document any exceptions and review periodically.
---
## Ongoing (No Wave)
| ID | Task | Frequency | Detailed steps |
|------|------------------------|-----------|----------------|
| O-1 | Monitor explorer sync | Daily | Cron runs `daily-weekly-checks.sh daily` (or run manually). |
| O-2 | Monitor RPC 2201 | Daily | Same script. |
| O-3 | Config API uptime | Weekly | Cron runs `daily-weekly-checks.sh weekly`. |
| O-4 | Review explorer logs | Weekly | Runbook: OPERATIONAL_RUNBOOKS § Maintenance [138]; e.g. `ssh root@<host> journalctl -u blockscout -n 200`. |
| O-5 | Update token list | As needed | Runbook [139]; update token-list.json / explorer config. |
---
## One-off: CT-1a Restore (if backup exists)
**Task:** Restore container 2301 (besu-rpc-private-1) from backup instead of recreating.
**Detailed steps:**
1. Locate backup file (e.g. `backup.tar.zst` for CT 2301).
2. On Proxmox host (e.g. ml110): `pct restore 2301 /path/to/backup.tar.zst --storage local-lvm`.
3. Adjust network/storage if needed; start container and verify service.
---
## Deferred / Backlog (No Steps Here)
- **W1-3, W1-4:** smom security audits; bridge integrations — smom backlog.
- **W1-14:** dbis_core TypeScript fixes — backlog; parallelize by module.
- **W1-15 W1-17:** smom placeholders; IRU; Fabric 999; .bak deprecation — see PLACEHOLDERS_AND_* docs.
- **Improvements index 1139:** Work through [ALL_IMPROVEMENTS_AND_GAPS_INDEX.md](ALL_IMPROVEMENTS_AND_GAPS_INDEX.md) by cohort; many overlap with W1/W2/W3 above.
---
## API Keys & Secrets (Obtain and Set)
**Full list:** [reports/API_KEYS_REQUIRED.md](../../reports/API_KEYS_REQUIRED.md). Variable names are in `.env.example`.
**Detailed steps:**
1. Open [reports/API_KEYS_REQUIRED.md](../../reports/API_KEYS_REQUIRED.md) and note required keys per category (DeFi, fiat ramp, e-signature, alerts, explorers, OTC, etc.).
2. Obtain each key (sign-up URLs in report); set in root `.env` and in subproject `.env` where used (e.g. dbis_core, the-order, metamask-integration).
3. Restart or redeploy services that depend on those env vars.
---
## Placeholders & Code Completions (E2E)
See [E2E_COMPLETION_TASKS_DETAILED_LIST.md](E2E_COMPLETION_TASKS_DETAILED_LIST.md) **Part 6** for:
- smom-dbis-138: canonical addresses env-only, AlltraAdapter fee, smart accounts kit, quote service Fabric 999, EnhancedSwapRouter/DODOPMMProvider, WETH bridges, .bak deprecation.
- dbis_core: Prometheus/Redis/PagerDuty/AS4; TypeScript errors.
- the-order: E-signature, court e-filing, document security/export.
- OMNIS: Sankofa Phoenix SDK when available.
- multi-chain-execution / Tezos: TezosRelayService when implemented.
---
## Validation commands (re-run anytime)
| Check | Command |
|-----------------|--------|
| All validation | `bash scripts/verify/run-all-validation.sh [--skip-genesis]` |
| Full verification | `bash scripts/verify/run-full-verification.sh` |
| E2E routing | `bash scripts/verify/verify-end-to-end-routing.sh` |
| Config files | `bash scripts/validation/validate-config-files.sh` |
| Genesis | `bash smom-dbis-138/scripts/validation/validate-genesis.sh` |
| Wave 0 (dry-run)| `bash scripts/run-wave0-from-lan.sh --dry-run` |
---
**Related:** [E2E_COMPLETION_TASKS_DETAILED_LIST.md](E2E_COMPLETION_TASKS_DETAILED_LIST.md), [WAVE2_WAVE3_OPERATOR_CHECKLIST.md](WAVE2_WAVE3_OPERATOR_CHECKLIST.md), [FULL_PARALLEL_EXECUTION_ORDER.md](FULL_PARALLEL_EXECUTION_ORDER.md).

View File

@@ -0,0 +1,242 @@
# Remaining Work — Detailed Tasks
**Last Updated:** 2026-02-05
**Purpose:** Single checklist of every remaining task with concrete steps. Use with [FULL_PARALLEL_EXECUTION_ORDER.md](FULL_PARALLEL_EXECUTION_ORDER.md) and [WAVE2_WAVE3_OPERATOR_CHECKLIST.md](WAVE2_WAVE3_OPERATOR_CHECKLIST.md).
---
## Wave 0 — Gates / credentials (do when creds allow)
| ID | Task | Detailed steps |
|----|------|-----------------|
| **W0-1** | NPMplus RPC fix (405) | ✅ Done (2026-02-06 run). Re-run from host on LAN if needed: `bash scripts/nginx-proxy-manager/update-npmplus-proxy-hosts-api.sh` |
| **W0-2** | Execute sendCrossChain (real) | 1) Ensure `PRIVATE_KEY` and LINK/fee token approved in `.env`. 2) Run `./scripts/bridge/run-send-cross-chain.sh <amount_eth> [recipient]` **without** `--dry-run`. 3) Example: `./scripts/bridge/run-send-cross-chain.sh 0.01` or with recipient: `./scripts/bridge/run-send-cross-chain.sh 0.01 0xYourAddress`. Bridge: `0x971cD9D156f193df8051E48043C476e53ECd4693`. |
| **W0-3** | NPMplus backup | 1) Set `NPM_PASSWORD` in `.env`. 2) When NPMplus container is up, run: `bash scripts/verify/backup-npmplus.sh` or `./scripts/backup/automated-backup.sh [--with-npmplus]`. 3) Re-run if previous backup had API/auth warnings. |
---
## ~~Post-create: Containers 2506, 2507, 2508~~ — Destroyed 2026-02-08
Containers **2506, 2507, 2508** were **removed and destroyed** on all Proxmox hosts (2026-02-08). Script: `scripts/destroy-vmids-2506-2508.sh`. RPC range is **25002505** only. No follow-up. See [MISSING_CONTAINERS_LIST.md](../03-deployment/MISSING_CONTAINERS_LIST.md).
### 2506 — besu-rpc-luis (Luis, 0x1)
- [x] Apply permissioned RPC configuration (Besu config) — **Done 2026-02-06:** `configure-besu-chain138-nodes.sh` run on r630-01; static-nodes.json and permissioned-nodes.json deployed.
- [x] Configure `static-nodes.json` / `permissioned-nodes.json` — Deployed (6 enodes: validators + sentries; RPC enodes not in list).
- [x] **Disable discovery** — Script sets discovery disabled for 2506 (DISCOVERY_DISABLED_VMIDS); 2506 had no config file on host so manual check if Besu uses discovery=false.
- [ ] Configure permissioned identity **0x1** (if not already in container).
- [ ] Set up **JWT authentication** (e.g. nginx reverse proxy in front of Besu).
- [ ] Verify access: Luis RPC-only, 0x1 identity.
**Scripts:** `scripts/configure-besu-chain138-nodes.sh`, `scripts/setup-new-chain138-containers.sh`; see [CHAIN138_BESU_CONFIGURATION.md](../06-besu/CHAIN138_BESU_CONFIGURATION.md).
### 2507 — besu-rpc-putu (Putu, 0x8a)
- [x] Permissioned RPC configuration — **Done 2026-02-06:** static-nodes/permissioned-nodes deployed via configure script on r630-01.
- [x] **Disable discovery** — Script sets discovery disabled for 2507.
- [ ] Configure permissioned identity **0x8a**.
- [ ] Set up **JWT authentication** (nginx reverse proxy).
- [ ] Verify access: Putu RPC-only, 0x8a identity.
### 2508 — besu-rpc-putu (Putu, 0x1)
- [x] Permissioned RPC configuration — **Done 2026-02-06:** static-nodes/permissioned-nodes deployed.
- [x] **Disable discovery** — Script sets discovery disabled for 2508.
- [ ] Configure permissioned identity **0x1**.
- [ ] Set up **JWT authentication** (nginx reverse proxy).
- [ ] Verify access: Putu RPC-only, 0x1 identity.
---
## Config cleanup (docs vs created containers) — Completed
| Task | Details |
|------|---------|
| **IP config** | Done. `config/ip-addresses.conf`: `RPC_LUIS_2="192.168.11.202"`, `RPC_PUTU_1="192.168.11.203"`, `RPC_PUTU_2="192.168.11.204"`. (RPC_LUIS_1 remains .255; fix separately if needed.) |
| **MISSING_CONTAINERS_LIST.md** | Done. Table updated to deployed IPs .202/.203/.204 and note that 25062508 created on r630-01. |
| **Other docs/scripts** | Done. REMAINING_WORK_DETAILED_STEPS.md, CHAIN138_JWT_AUTH_REQUIREMENTS.md, create-all-chain138-containers-direct.sh, create-chain138-containers.sh, generate-jwt-token-for-container.sh, repair-corrupted-ip-replacements.sh, fix-remaining-hardcoded-ips.sh updated to .202/.203/.204. |
---
## Wave 1 — Remaining (parallel by owner/task)
### Security (apply when ready)
| ID | Task | Details |
|----|------|---------|
| W1-1 | SSH key-based auth | Run `./scripts/security/setup-ssh-key-auth.sh --apply` after testing; disable password auth only after key auth verified (coordinate to avoid lockout). |
| W1-2 | Firewall Proxmox 8006 | Run `./scripts/security/firewall-proxmox-8006.sh --apply [CIDR]` to restrict Proxmox API to specific IPs. |
### smom / audits
| ID | Task |
|----|------|
| W1-3 | smom: Security audits VLT-024, ISO-024 |
| W1-4 | smom: Bridge integrations BRG-VLT, BRG-ISO |
### Monitoring (deploy vs config)
| ID | Task | Details |
|----|------|---------|
| W1-5 | Prometheus / alerts | Config in `config/monitoring/` (phase2-observability.sh --config-only done). Deploy and add Besu 9545 scrape targets; alert rules. |
| W1-6 | Grafana / Alertmanager | Deploy Grafana; publish via Cloudflare Access; configure Alertmanager routes. |
| W1-7 | Loki | Config present; deploy when stack is deployed (W2-1). |
### Backup
| ID | Task | Details |
|----|------|---------|
| W1-8 | NPMplus backup cron | Done. Cron installed (daily 03:00 → backup-npmplus.sh; logs to logs/npmplus-backup.log). |
### VLAN (optional)
| ID | Task |
|----|------|
| W1-9 | VLAN enablement: UDM Pro VLAN config docs; Proxmox VLAN-aware bridge design |
| W1-10 | VLAN migration plan (per-service table) |
### Documentation
| ID | Task |
|----|------|
| W1-11 | Documentation consolidation (by folder 0112); archive old status |
| W1-12 | Quick reference cards; decision trees; config templates (ALL_IMPROVEMENTS 6874) |
| W1-13 | Final IP assignments; service connectivity matrix; operational runbooks |
### Codebase
| ID | Task |
|----|------|
| W1-14 | dbis_core: TypeScript/Prisma fixes (parallelize by file; or defer) |
| W1-15 | smom: EnhancedSwapRouter quoter; AlltraAdapter fee TODO |
| W1-16 | smom: IRU remaining tasks |
| W1-17 | Placeholders: canonical addresses env-only; AlltraAdapter fee; smart accounts kit; quote service Fabric chainId 999; .bak deprecation (8791) |
### Quick wins & checklist
| ID | Task |
|----|------|
| W1-18 | Add progress indicators to scripts; config validation in CI/pre-deploy |
| W1-19 | Secure validator key permissions: on Proxmox host as root `./scripts/secure-validator-keys.sh [--dry-run]` (VMIDs 10001004); chmod 600, chown besu |
| W1-20 | Secret management audit; input validation in scripts; security scanning (ALL_IMPROVEMENTS 4851) |
| W1-21 | Config validation (JSON/YAML schema); config templates; env standardization (5254) |
### Optional: MetaMask / explorer
| ID | Task |
|----|------|
| W1-22 | Token-aggregation hardening; CoinGecko submission |
| W1-23 | Chain 138 Snap: market data UI; swap quotes; bridge routes; testing & distribution |
| W1-24 | Explorer: dark mode, network selector, sync indicator |
| W1-25 | Paymaster deploy (optional); Consensys outreach |
| W1-26 | API keys: Li.Fi, Jumper, 1inch (when keys available; see API_KEYS_REQUIRED.md) |
### Improvements index (ALL_IMPROVEMENTS 1139)
| ID | Task |
|----|------|
| W1-27 | ALL_IMPROVEMENTS 111 (Proxmox high) |
| W1-28 | ALL_IMPROVEMENTS 1220 (Proxmox medium) |
| W1-29 | ALL_IMPROVEMENTS 2130 (Proxmox low) |
| W1-30 | ALL_IMPROVEMENTS 3135 (Quick wins) |
| W1-31 | ALL_IMPROVEMENTS 3643 (script shebang, set -euo, shellcheck, consolidation) |
| W1-32 | ALL_IMPROVEMENTS 4447 (doc consolidation, API doc) |
| W1-33 | ALL_IMPROVEMENTS 4857 (security, validation, RBAC, tests, CI) |
| W1-34 | ALL_IMPROVEMENTS 5867 (logging, metrics, health, DevContainer, backup) |
| W1-35 | ALL_IMPROVEMENTS 6874 (docs: quick ref, decision trees, glossary) |
| W1-36 | ALL_IMPROVEMENTS 7581 (Phase 14 design; missing containers list) |
| W1-37 | ALL_IMPROVEMENTS 8286 (smom audits, BRG, CCIP AMB, dbis_core, IRU) |
| W1-38 | ALL_IMPROVEMENTS 8791 (placeholders) |
| W1-39 | ALL_IMPROVEMENTS 92105 (MetaMask/explorer) |
| W1-40 | ALL_IMPROVEMENTS 106121 (Tezos/Etherlink/CCIP) |
| W1-41 | ALL_IMPROVEMENTS 122126 (Besu/blockchain) |
| W1-42 | ALL_IMPROVEMENTS 127130 (RPC translator) |
| W1-43 | ALL_IMPROVEMENTS 131134 (Orchestration portal) |
| W1-44 | ALL_IMPROVEMENTS 135139 (Maintenance — document/automate) |
**Detail:** [ALL_IMPROVEMENTS_AND_GAPS_INDEX.md](../ALL_IMPROVEMENTS_AND_GAPS_INDEX.md)
---
## Wave 2 — Infra / deploy (parallel by host or component)
| ID | Task | Detailed steps |
|----|------|----------------|
| **W2-1** | Deploy monitoring stack | Deploy Prometheus, Grafana, Loki, Alertmanager using `smom-dbis-138/monitoring/` and `scripts/monitoring/` configs. |
| **W2-2** | Grafana + alerts | After W2-1: publish Grafana via Cloudflare Access; configure Alertmanager routes. |
| **W2-3** | VLAN enablement | Apply UDM Pro VLAN config; Proxmox VLAN-aware bridge; migrate services to VLANs (by VLAN/host). See NETWORK_ARCHITECTURE.md §35. |
| **W2-4** | Phase 3 CCIP | 1) Deploy Ops/Admin (5400, 5401). 2) NAT pools. 3) Expand commit/execute/RMN scripts. Order: Ops first, then NAT, then scripts. See [CCIP_DEPLOYMENT_SPEC.md](../07-ccip/CCIP_DEPLOYMENT_SPEC.md). |
| **W2-5** | Phase 4 sovereign tenants | Sovereign tenant VLANs; isolation; access control (by tenant/VLAN). After W2-3. |
| **W2-6** | Missing containers 25062508 | ✅ Created on r630-01 with .202/.203/.204. Remaining: post-create steps above (Besu config, JWT, discovery off, identity). |
| **W2-7** | DBIS services / Hyperledger | Start DBIS services (1010010151, etc.); additional Hyperledger per deployment runbooks (by host). |
| **W2-8** | NPMplus HA | Optional: Keepalived, secondary 10234. See NPMPLUS_HA_SETUP_GUIDE.md. |
---
## Wave 3 — After Wave 2
| ID | Task | Detailed steps |
|----|------|----------------|
| **W3-1** | CCIP Fleet full deploy | After W2-4 (Ops/Admin, NAT): deploy 16 commit (54105425), 16 execute (54405455), 7 RMN (54705476). |
| **W3-2** | Phase 4 tenant isolation | After W2-3/W2-5: enforce tenant isolation; access control. |
---
## Ongoing (schedule, not sequenced) — Completed
| ID | Task | Frequency | Status |
|----|------|-----------|--------|
| O-1 | Monitor explorer sync | Daily 08:00 | Cron installed via schedule-daily-weekly-cron.sh; daily-weekly-checks.sh daily |
| O-2 | Monitor RPC 2201 | Daily 08:00 | Same cron/script |
| O-3 | Config API uptime | Weekly (Sun 09:00) | Cron installed; daily-weekly-checks.sh weekly |
| O-4 | Review explorer logs | Weekly | Runbook [138] in OPERATIONAL_RUNBOOKS; O-4 procedure and pct exec 5000 journalctl documented |
| O-5 | Update token list | As needed | token-lists/lists/dbis-138.tokenlist.json; runbook [139]; TOKEN_LIST_AUTHORING_GUIDE linked |
---
## Optional one-off — Script and runbook added
| Task | Details |
|------|---------|
| Start firefly-ali-1 (6201) | Script: scripts/maintenance/start-firefly-6201.sh (--dry-run, --host). Default r630-02. In OPERATIONAL_RUNBOOKS Maintenance. |
---
## Automation complete — remaining is operator-only
All tasks that can run without LAN, SSH to Proxmox, or live credentials have been executed (config cleanup, validation, cron install, dry-runs, checklists). **What remains** requires you or a host with access:
- **Wave 0:** W0-2 sendCrossChain real (`run-send-cross-chain.sh` without `--dry-run`), W0-3 run backup when NPMplus is up.
- **Post-create 25062508:** **Done 2026-02-06.** Besu configure run on r630-01 and ml110: `PROXMOX_HOST=192.168.11.11 bash scripts/run-configure-besu-on-host.sh` and `PROXMOX_HOST=192.168.11.10 bash scripts/run-configure-besu-on-host.sh`. Static-nodes.json and permissioned-nodes.json deployed to all running Besu nodes; discovery disabled for 2500, 25032508. RPC enodes (25002508) are not in the enode list (extraction skipped); validators + sentries only. Remaining: JWT/nginx for 25062508 if required; verify discovery and identity per container.
- **Wave 1 apply:** W1-1 `setup-ssh-key-auth.sh --apply`, W1-2 `firewall-proxmox-8006.sh --apply` (per host).
- **Wave 2 & 3:** Deploy monitoring, VLAN, CCIP, Phase 4, DBIS, NPMplus HA; then CCIP Fleet and Phase 4 isolation.
Use [WAVE2_WAVE3_OPERATOR_CHECKLIST.md](WAVE2_WAVE3_OPERATOR_CHECKLIST.md) and runbooks for execution order.
---
## Validation commands (after changes)
| Check | Command |
|-------|---------|
| CI / config | `bash scripts/verify/run-all-validation.sh [--skip-genesis]` |
| Full verification | `bash scripts/verify/run-full-verification.sh` |
| E2E routing | `bash scripts/verify/verify-end-to-end-routing.sh` |
| Backend VMs | `bash scripts/verify/verify-backend-vms.sh` |
| Besu peers | `bash scripts/besu-verify-peers.sh http://192.168.11.211:8545` |
---
## Summary counts
| Category | Count |
|----------|-------|
| Wave 0 | 3 (W0-2, W0-3 remaining; W0-1 done) |
| Post-create 25062508 | 3 containers × checklist items |
| Config cleanup | 3 (ip-addresses.conf, MISSING_CONTAINERS_LIST, other docs) |
| Wave 1 | 44 items (W1-1 … W1-44) |
| Wave 2 | 8 (W2-1W2-8; W2-6 create done, post-create pending) |
| Wave 3 | 2 (W3-1, W3-2) |
| Ongoing | 5 (scheduled) |
**References:** [FULL_PARALLEL_EXECUTION_ORDER.md](FULL_PARALLEL_EXECUTION_ORDER.md) · [WAVE2_WAVE3_OPERATOR_CHECKLIST.md](WAVE2_WAVE3_OPERATOR_CHECKLIST.md) · [REMAINING_ITEMS_FULL_PARALLEL_LIST.md](REMAINING_ITEMS_FULL_PARALLEL_LIST.md) · [MISSING_CONTAINERS_LIST.md](../03-deployment/MISSING_CONTAINERS_LIST.md) · [FULL_PARALLEL_RUN_LOG.md](FULL_PARALLEL_RUN_LOG.md)

View File

@@ -0,0 +1,89 @@
# Script Inventory
**Last Updated:** 2026-01-31
**Document Version:** 1.0
**Status:** Active Documentation
---
**Date:** 2026-01-22 (Updated)
**Status:** ✅ Complete
**Total Scripts:** 381 (down from 759 - 50% reduction)
---
## Current Status
### Script Count
- **Starting Count:** 759 scripts
- **Current Count:** 381 scripts
- **Archived Count:** 436 scripts
- **Reduction:** 50% (378 scripts eliminated)
### Frameworks Created
-`verify-all.sh` - Replaces 123 verify/check/validate scripts
-`list.sh` - Replaces 18 list/show/get scripts
-`fix-all.sh` - Replaces 94 fix-*.sh scripts
-`configure.sh` - Replaces 41 configure/config scripts
-`deploy.sh` - Replaces 102 deploy/setup/install scripts
### Utility Modules Created
-`container-utils.sh` - Container helper functions
-`network-utils.sh` - Network helper functions
-`service-utils.sh` - Service helper functions
-`config-utils.sh` - Config helper functions
-`proxmox-utils.sh` - Proxmox helper functions
---
## Archive Structure
```
scripts/archive/
├── consolidated/
│ ├── verify/ (123 scripts)
│ ├── list/ (18 scripts)
│ ├── fix/ (94 scripts)
│ ├── config/ (41 scripts)
│ └── deploy/ (102 scripts)
├── small-scripts/ (~40 scripts)
├── test/ (29 scripts)
└── backups/ (18 scripts)
```
**Total Archived:** 436 scripts
---
## Directory Structure
- `scripts/` - Main scripts directory (381 scripts)
- `scripts/lib/` - Shared libraries (4 modules)
- `scripts/utils/` - Utility modules (5 modules)
- `scripts/archive/` - Archived scripts (436 scripts)
- `scripts/verify-all.sh` - Verification framework
- `scripts/list.sh` - Listing framework
- `scripts/fix-all.sh` - Fix framework
- `scripts/configure.sh` - Configuration framework
- `scripts/deploy.sh` - Deployment framework
---
## Framework Usage
All old scripts have been consolidated into unified frameworks. Reference (archived 2026-02-08): [archive/00-meta-pruned/FRAMEWORK_USAGE_GUIDE.md](../archive/00-meta-pruned/FRAMEWORK_USAGE_GUIDE.md), [FRAMEWORK_MIGRATION_GUIDES.md](../archive/00-meta-pruned/FRAMEWORK_MIGRATION_GUIDES.md), [MIGRATION_EXAMPLES.md](../archive/00-meta-pruned/MIGRATION_EXAMPLES.md).
---
## Statistics
- **Total:** 381 scripts (50% reduction)
- **Frameworks:** 5 unified frameworks
- **Utility Modules:** 5 modules
- **Archived:** 436 scripts
- **Documentation:** Complete
---
**Last Updated:** 2026-01-22
**Status:** ✅ Script reduction complete - 50% reduction achieved

View File

@@ -0,0 +1,101 @@
# Tasks to Complete — Get Everything Fixed and Running
**Last Updated:** 2026-02-08
**Purpose:** Single ordered list of tasks to complete and get the deployment fixed and running correctly. Implement automated steps from repo root; run LAN/manual steps from a host with access.
---
## Task list (in order)
### 1. Config and validation (run from repo root)
| # | Task | Command | Notes |
|---|------|---------|--------|
| 1.1 | Dependencies | `bash scripts/verify/check-dependencies.sh` | Optional tools may be missing; non-fatal. |
| 1.2 | Config validation | `bash scripts/validation/validate-config-files.sh` | Must pass. |
| 1.3 | Run all validation | `bash scripts/verify/run-all-validation.sh --skip-genesis` | Skips genesis if RPC unreachable. |
### 2. Block production (run from repo root; requires SSH to .10 and .11)
| # | Task | Command | Notes |
|---|------|---------|--------|
| 2.1 | Permissioning TOML (validators) | `bash scripts/fix-validator-permissioning-toml.sh` | Deploys permissions-nodes.toml to 10001004; run if validators crash on permissioning. |
| 2.2 | Validator tx-pool + restart | `bash scripts/fix-all-validators-and-txpool.sh` | Layered tx-pool, restarts besu-validator on 10001004. |
| 2.3 | Verify block production | `bash scripts/monitoring/monitor-blockchain-health.sh` | Expect “Blocks being produced” and ≥4/5 validators active. |
### 3. E2E and explorer (run from repo root; RPC/Blockscout need LAN for full pass)
| # | Task | Command | Notes |
|---|------|---------|--------|
| 3.1 | E2E routing | `E2E_SUCCESS_IF_ONLY_RPC_BLOCKED=1 bash scripts/verify/verify-end-to-end-routing.sh` | May skip RPC/Blockscout off-LAN. |
| 3.2 | Explorer + block check | `bash scripts/verify/verify-explorer-and-block-production.sh` | Block production check needs LAN. |
### 4. One-shot: run all automated next steps
| # | Task | Command | Notes |
|---|------|---------|--------|
| 4.1 | Run all next steps | `bash scripts/run-all-next-steps.sh` | Runs 1.11.3, 3.13.2, bridge dry-run, security dry-run, cron --show; writes report to `docs/04-configuration/verification-evidence/NEXT_STEPS_RUN_<timestamp>.md`. |
### 5. Run from LAN (when you have SSH and RPC access)
| # | Task | Command | Notes |
|---|------|---------|--------|
| 5.1 | Block production (full) | `bash scripts/fix-validator-permissioning-toml.sh` then `bash scripts/fix-all-validators-and-txpool.sh` then `bash scripts/monitoring/monitor-blockchain-health.sh` | Ensures validators use TOML and restarts them; verify blocks. |
| 5.2 | Bridge (real send) | `bash scripts/bridge/run-send-cross-chain.sh 0.01` | Requires PRIVATE_KEY and RPC from LAN. |
| 5.3 | Security apply | `bash scripts/security/run-security-on-proxmox-hosts.sh --apply` | SSH key auth + firewall 8006 on .10, .11, .12. |
| 5.4 | Deploy contracts | `cd smom-dbis-138 && source .env && bash scripts/deployment/deploy-all-contracts.sh` | RPC 192.168.11.211:8545 must be reachable. |
| 5.5 | Verify contracts (Blockscout) | `./scripts/verify/run-contract-verification-with-proxy.sh` | Blockscout at 192.168.11.140:4000 must be reachable. |
| 5.6 | NPMplus backup | `bash scripts/verify/backup-npmplus.sh` | NPMplus API at 192.168.11.167:81. |
### 6. Manual / UI
| # | Task | Where |
|---|------|--------|
| 6.1 | 25062508 JWT and identity | [CHAIN138_JWT_AUTH_REQUIREMENTS.md](../04-configuration/CHAIN138_JWT_AUTH_REQUIREMENTS.md); `scripts/generate-jwt-token-for-container.sh` |
| 6.2 | Explorer SSL | NPMplus https://192.168.11.167:81 → SSL → Let's Encrypt for explorer.d-bis.org |
| 6.3 | NPMplus cert (e.g. 134) | NPMplus → SSL Certificates → re-request/re-save as needed |
| 6.4 | Wave 2 & 3 | [WAVE2_WAVE3_OPERATOR_CHECKLIST.md](WAVE2_WAVE3_OPERATOR_CHECKLIST.md) |
---
## Quick “fix and run” sequence (from LAN)
```bash
cd /path/to/proxmox
# 1. Validators and block production
bash scripts/fix-validator-permissioning-toml.sh
bash scripts/fix-all-validators-and-txpool.sh
bash scripts/monitoring/monitor-blockchain-health.sh
# 2. Full automated checks + report
bash scripts/run-all-next-steps.sh
```
---
---
## Implementation summary (2026-02-08)
| Task | Status | Notes |
|------|--------|--------|
| 1.11.3 Config & validation | ✅ Done | check-dependencies, validate-config-files, run-all-validation --skip-genesis passed. |
| 2.1 Permissioning TOML | ✅ Done | fix-validator-permissioning-toml.sh — all 5 validators updated and restarted. |
| 2.2 Validator tx-pool + restart | ✅ Done | fix-all-validators-and-txpool.sh — all 5 restarted. |
| 2.3 Block production verify | ⚠️ Partial | All 5 validators **active**; block number was stable at 1879594. If blocks still dont advance after 510 min: 1 pending tx (nonce 13178) — see [STUCK_TX_AND_BLOCK_STATUS_20260207.md](../08-monitoring/STUCK_TX_AND_BLOCK_STATUS_20260207.md), use next nonce for next send or `scripts/skip-stuck-transactions.sh`. |
| 4.1 Run all next steps | ✅ Done | Report: [NEXT_STEPS_RUN_20260208_100911.md](../04-configuration/verification-evidence/NEXT_STEPS_RUN_20260208_100911.md). E2E OK; explorer+block skipped off-LAN; bridge dry-run OK; security dry-run OK. |
**Remaining (run from LAN / manual):** 5.15.6 (bridge real, security --apply, deploy/verify contracts, NPMplus backup), 6.16.4 (JWT, Explorer SSL, NPMplus cert, Wave 2 & 3).
**Remaining tasks run (2026-02-08):** See [REMAINING_TASKS_RUN_20260208.md](../04-configuration/verification-evidence/REMAINING_TASKS_RUN_20260208.md). Summary: 5.1 monitor run; 5.2 bridge real failed (gas revert); 5.3 security --apply done; 5.4 deploy partial (tx errors: stuck nonce); 5.5 verify skipped (Blockscout unreachable); 5.6 NPMplus backup done. 6.16.4 manual/UI only.
---
## References
- [BLOCK_PRODUCTION_FIX_RUNBOOK.md](../08-monitoring/BLOCK_PRODUCTION_FIX_RUNBOOK.md)
- [VALIDATION_REVIEW_20260208.md](../04-configuration/verification-evidence/VALIDATION_REVIEW_20260208.md)
- [NEXT_STEPS_OPERATOR.md](NEXT_STEPS_OPERATOR.md)
- [OPERATIONAL_RUNBOOKS.md](../03-deployment/OPERATIONAL_RUNBOOKS.md)
- [STUCK_TX_AND_BLOCK_STATUS_20260207.md](../08-monitoring/STUCK_TX_AND_BLOCK_STATUS_20260207.md)

View File

@@ -0,0 +1,168 @@
# Master TODO Task List
**Last Updated:** 2026-02-05
**Purpose:** Consolidated list of all fixes, enhancements, improvements, optimizations, recommendations, and missed steps.
**Full index (1139):** [ALL_IMPROVEMENTS_AND_GAPS_INDEX.md](../ALL_IMPROVEMENTS_AND_GAPS_INDEX.md)
**Execution mode: Full maximum parallel.** Run all remaining items in parallel by wave. See **[FULL_PARALLEL_EXECUTION_ORDER.md](FULL_PARALLEL_EXECUTION_ORDER.md)** for the ordered wave list (Wave 0 → Wave 1 → Wave 2 → Wave 3). Within each wave, execute every item concurrently; no artificial sequencing. Validation commands at bottom.
**Status:** [FULL_PARALLEL_RUN_LOG.md](FULL_PARALLEL_RUN_LOG.md) | [WAVE1_COMPLETION_SUMMARY.md](WAVE1_COMPLETION_SUMMARY.md) | [WAVE2_WAVE3_OPERATOR_CHECKLIST.md](WAVE2_WAVE3_OPERATOR_CHECKLIST.md) | [REMAINING_WORK_DETAILED_STEPS.md](REMAINING_WORK_DETAILED_STEPS.md) (step-by-step; 2026-02-05 completion) | **[REMAINING_TASKS_AND_API_FEATURES.md](REMAINING_TASKS_AND_API_FEATURES.md)** (2026-02-10: consolidated remaining tasks + API features inventory).
**2026-02-05:** Master documentation updated (MASTER_INDEX v5.8, docs/README, MASTER_PLAN, NEXT_STEPS_MASTER); "Can be accomplished now" list completed; 32 files archived to docs/archive/00-meta-status/.
---
## 1. Critical Fixes (Do First)
### CT 2301 (besu-rpc-private-1) — Corrupted Rootfs
- [ ] **Option A:** Restore from backup (if exists): `pct restore 2301 /path/to/backup.tar.zst --storage local-lvm`
- [x] **Option B:** Recreate container: Done 2026-02-04 via scripts/recreate-ct-2301.sh. See [scripts/README.md](../../scripts/README.md) § CT 2301.
### dbis-frontend (10130) — ✅ Deployed and Serving
- [x] Provision script: `./scripts/dbis/provision-dbis-frontend-container-10130.sh` (nginx, /opt/dbis-core)
- [x] Deploy script: python3 http.server fallback when nginx absent (improved to start reliably)
- [x] **Deployment complete:** Frontend built, pushed to `/tmp/dbis-frontend/dist`, python3 http.server running on port 80. Health check: 200 from container. Access: http://192.168.11.130 (on same network).
### Contract Verification on Blockscout
- [x] Script ready: `./scripts/verify/run-contract-verification-with-proxy.sh` (starts proxy if needed; --only/--skip supported)
- [x] **Executed:** Ran verification; some contracts may need manual verification (Blockscout API format/Invalid JSON). Use `--only ContractName` to retry individual contracts.
---
## 2. Gas & Deployment Steps
- [x] Verify validators have `min-gas-price=0` (scripts/verify/verify-min-gas-price.sh)
- [x] Use `GAS_PRICE=1000000000` when deploying (bridge script defaults to this)
- [x] **Bridge dry-run verified:** `GAS_PRICE=1000000000 ./scripts/bridge/run-send-cross-chain.sh <amount> [recipient] --dry-run`
- [x] **Real transfer:** Omit `--dry-run` to execute sendCrossChain; documented in [scripts/README.md](../../scripts/README.md) §8. Ensure LINK approved for fee token if needed.
- [ ] **Paymaster (optional):** `forge script script/smart-accounts/DeployPaymaster.s.sol --rpc-url $RPC_URL_138 --broadcast` — requires contract sources; see [SMART_ACCOUNTS_DEPLOYMENT_NOTE.md](../metamask-integration/docs/SMART_ACCOUNTS_DEPLOYMENT_NOTE.md)
---
## 3. Verification Fixes (Applied — Verify)
- [x] Forge proxy: v2 API first for flattened code
- [x] verify-backend-vms: IP from net0; nginx sanitization; rpc-thirdweb path
- [x] export-npmplus: skip when NPM_PASSWORD missing
- [x] verify-udm-pro: internal failure → warn
- [x] verify-all-systems: flexible patterns; bash --norc
- [x] Re-run: `bash scripts/verify/run-full-verification.sh` (2026-02-03)
- [x] **validate-genesis.sh (smom-dbis-138):** Fixed 2026-02-05 — runs standalone; QBFT supported. See [FULL_PARALLEL_RUN_LOG.md](FULL_PARALLEL_RUN_LOG.md) Wave 1 fifth batch.
- [x] **validate-config-files.sh:** Pass (ip-addresses.conf, .env.example). Optional env warnings only.
- [x] **E2E routing:** verify-end-to-end-routing.sh run; 25 DNS pass, 14 HTTPS pass, 6 RPC 405 until NPMplus fix from LAN.
- [x] **Full verification includes config:** run-full-verification.sh Step 0 runs validate-config-files.sh (6 steps total).
- [x] **Maintenance script:** daily-weekly-checks.sh [daily|weekly|all] — tested; RPC check OK.
- [x] **shellcheck (optional):** `bash scripts/verify/run-shellcheck.sh` or `run-shellcheck-docker.sh`; use `--optional` to exit 0 when shellcheck not installed.
---
## 4. All Improvements & Gaps (1139) — Full Checklist
**Run in full parallel where possible.** See [ALL_IMPROVEMENTS_AND_GAPS_INDEX.md](../ALL_IMPROVEMENTS_AND_GAPS_INDEX.md) for details and [PARALLEL_TASK_STRUCTURE.md](PARALLEL_TASK_STRUCTURE.md) for cohorts.
| Range | Category | Count |
|-------|----------|-------|
| 111 | Proxmox high priority | 11 |
| 1220 | Proxmox medium | 9 |
| 2130 | Proxmox low | 10 |
| 3135 | Quick wins | 5 |
| 3667 | Code quality & scripts | 32 |
| 6874 | Documentation enhancements | 7 |
| 7591 | Infrastructure & deployment | 17 |
| 92105 | MetaMask & explorer | 14 |
| 106121 | Tezos / Etherlink / CCIP | 16 |
| 122126 | Besu / blockchain | 5 |
| 127130 | RPC translator | 4 |
| 131134 | Orchestration portal | 4 |
| 135139 | Maintenance | 5 |
- [ ] **1139** — Work through [ALL_IMPROVEMENTS_AND_GAPS_INDEX.md](../ALL_IMPROVEMENTS_AND_GAPS_INDEX.md) (parallel by cohort where no deps). Docs 6874 index: [QUICK_REFERENCE_CARDS.md](../12-quick-reference/QUICK_REFERENCE_CARDS.md) §3.1. **CI validation:** `bash scripts/verify/run-all-validation.sh [--skip-genesis]` (dependencies + config + optional genesis). Config only: `scripts/validation/validate-config-files.sh` (set VALIDATE_REQUIRED_FILES for CI/pre-deploy). **Last full parallel run (2026-02-05):** run-all-validation, validate-config-files, security dry-runs, phase2 --config-only, CCIP checklist, phase4 --show-steps, config backup, Wave 0 --dry-run — see [FULL_PARALLEL_RUN_LOG.md](FULL_PARALLEL_RUN_LOG.md) batch 11.
---
## 5. Security (High Priority)
- [x] chmod 600 .env (2026-02-03)
- [x] **SSH/firewall scripts:** `./scripts/security/setup-ssh-key-auth.sh [--dry-run|--apply]`, `./scripts/security/firewall-proxmox-8006.sh [--dry-run|--apply] [CIDR]`
- [ ] smom: Security audits VLT-024, ISO-024; Bridge integrations BRG-VLT, BRG-ISO
---
## 6. Monitoring & Backup
- [x] **Monitoring:** `./scripts/deployment/phase2-observability.sh [--config-only]` → config/monitoring/; runbook OPERATIONAL_RUNBOOKS § Phase 2
- [x] Besu metrics 9545; Prometheus: scripts/monitoring/prometheus-besu-config.yml
- [x] Health alerting: ALERT_EMAIL/ALERT_WEBHOOK in storage-monitor, npmplus monitor
- [x] **Automated backup:** `./scripts/backup/automated-backup.sh [--with-npmplus]`; runbook OPERATIONAL_RUNBOOKS
---
## 7. Infrastructure Phases
- [x] **Phase 2:** Monitoring config + runbook; backup script; SSH/firewall scripts (see §5, §6).
- [x] **Phase 3 CCIP checklist:** `./scripts/ccip/ccip-deploy-checklist.sh` — validates env, prints deployment order; full deploy per [CCIP_DEPLOYMENT_SPEC.md](../07-ccip/CCIP_DEPLOYMENT_SPEC.md).
- [x] **Phase 4 (runbook):** [OPERATIONAL_RUNBOOKS.md](../03-deployment/OPERATIONAL_RUNBOOKS.md) § Phase 4; `scripts/deployment/phase4-sovereign-tenants.sh [--show-steps|--dry-run]`; NETWORK_ARCHITECTURE, ORCHESTRATION_DEPLOYMENT_GUIDE, UDM_PRO_FIREWALL_MANUAL_CONFIGURATION.
---
## 8. Codebase
- [ ] dbis_core: ~1186 TS errors remain (deferred)
- [x] smom: EnhancedSwapRouter/DODOPMMProvider/Quote Service documented in [PLACEHOLDERS_AND_TBD.md](../PLACEHOLDERS_AND_TBD.md); AlltraAdapter setBridgeFee done
- [x] Scripts: --dry-run (create-chain138-containers, deploy-weth9, backup-proxmox-configs); sendCrossChain real transfer documented
---
## 9. Documentation
- [x] Update NEXT_STEPS_MASTER with 2026-02-03 completions (2026-02-05)
- [x] Sync VM_RESTART known-issue #1 (Corrupted rootfs) — Resolved 2026-02-04; VM_RESTART doc updated
- [x] Add fix-ct-2301 to scripts/README
---
## 10. Optional / Enhancements
- [x] **Token-aggregation:** Admin routes use strict rate limit; [COINGECKO_SUBMISSION.md](../../smom-dbis-138/services/token-aggregation/docs/COINGECKO_SUBMISSION.md) for CoinGecko listing steps.
- [x] **API key placeholders:** All vars from [API_KEYS_REQUIRED.md](../../reports/API_KEYS_REQUIRED.md) added to root `.env.example`, `dbis_core/.env.example`, `the-order/services/legal-documents/.env.example` (see [API_KEYS_DOTENV_STATUS.md](API_KEYS_DOTENV_STATUS.md)). Obtaining keys remains operator task.
- [ ] Resource/network/database optimization
---
## 10. Maintenance (135139)
- [x] **Runbook and script:** [OPERATIONAL_RUNBOOKS.md](../03-deployment/OPERATIONAL_RUNBOOKS.md) § Maintenance; `scripts/maintenance/daily-weekly-checks.sh [daily|weekly|all]` for 135137. Schedule via cron (e.g. daily 08:00).
- [x] **Script tested:** daily-weekly-checks.sh daily (explorer SKIP off-LAN, RPC OK).
- [x] **Ongoing scheduled (2026-02-05):** `schedule-daily-weekly-cron.sh --install` — daily 08:00, weekly Sun 09:00.
- [x] Monitor explorer sync — Daily (cron runs daily-weekly-checks.sh daily)
- [x] Monitor RPC 2201 — Daily (same script)
- [x] Config API uptime — Weekly (cron runs weekly)
- [x] Review explorer logs — Weekly (runbook: OPERATIONAL_RUNBOOKS § Maintenance [138])
- [x] Update token list — Validated token-lists/lists/dbis-138.tokenlist.json; update as needed per runbook [139]
---
## Validation Commands
| Check | Command |
|-------|---------|
| All validation (CI) | `bash scripts/verify/run-all-validation.sh [--skip-genesis]` |
| Dependencies | `bash scripts/verify/check-dependencies.sh` |
| Backend VMs | `bash scripts/verify/verify-backend-vms.sh` |
| Full verification | `bash scripts/verify/run-full-verification.sh` |
| E2E routing only | `bash scripts/verify/verify-end-to-end-routing.sh` |
| All systems | `bash scripts/verify-all-systems.sh` |
| Config files | `bash scripts/validation/validate-config-files.sh` |
| Genesis (smom-dbis-138) | `bash smom-dbis-138/scripts/validation/validate-genesis.sh` |
| Besu peers | `bash scripts/besu-verify-peers.sh http://192.168.11.211:8545` |
| Shellcheck (optional) | `bash scripts/verify/run-shellcheck.sh [--optional]` or `bash scripts/verify/run-shellcheck-docker.sh` |
| Wave 0 from LAN | `bash scripts/run-wave0-from-lan.sh [--dry-run] [--skip-backup] [--skip-rpc-fix]` |
| NPMplus backup cron | `bash scripts/maintenance/schedule-npmplus-backup-cron.sh [--install|--show]` |
| Daily/weekly checks cron | `bash scripts/maintenance/schedule-daily-weekly-cron.sh [--install|--show]` |
---
**Related:** [REMAINING_TASKS_AND_API_FEATURES.md](REMAINING_TASKS_AND_API_FEATURES.md) (remaining tasks + Phoenix/OMNL/Explorer API inventory), [NEXT_STEPS_MASTER.md](NEXT_STEPS_MASTER.md), [PARALLEL_TASK_STRUCTURE.md](PARALLEL_TASK_STRUCTURE.md), [IMPLEMENTATION_CHECKLIST.md](../10-best-practices/IMPLEMENTATION_CHECKLIST.md), [REMAINING_TASKS.md](../REMAINING_TASKS.md), [reports/status/VM_RESTART_AND_VERIFICATION_20260203.md](../../reports/status/VM_RESTART_AND_VERIFICATION_20260203.md).

View File

@@ -0,0 +1,144 @@
# Wave 1 — Completion Summary
**Last Updated:** 2026-02-05
**Purpose:** Status of every Wave 1 task from the full parallel run. Used with [FULL_PARALLEL_EXECUTION_ORDER.md](FULL_PARALLEL_EXECUTION_ORDER.md) and [FULL_PARALLEL_RUN_LOG.md](FULL_PARALLEL_RUN_LOG.md).
**Legend:** ✅ Done (this run or prior) | ⏳ Operator (SSH/creds/LAN) | 📄 Documented (config/design exists; no code change) | Deferred
---
## Security (W1-1 W1-4)
| ID | Task | Status | Notes |
|----|------|--------|-------|
| W1-1 | SSH key-based auth; disable password | ⏳ Operator | Coordinate to avoid lockout; test key auth first. |
| W1-2 | Firewall: restrict Proxmox API 8006 | ⏳ Operator | Restrict to specific IPs from LAN. |
| W1-3 | smom: Security audits VLT-024, ISO-024 | Deferred | Per smom/security backlog. |
| W1-4 | smom: Bridge integrations BRG-VLT, BRG-ISO | Deferred | Per smom backlog. |
---
## Monitoring config (W1-5 W1-7)
| ID | Task | Status | Notes |
|----|------|--------|-------|
| W1-5 | Prometheus scrape (Besu 9545); alert rules | ✅ Done | `scripts/monitoring/prometheus-besu-config.yml`, `smom-dbis-138/monitoring/prometheus/` (scrape, alerts). export-prometheus-targets.sh run. |
| W1-6 | Grafana dashboards; Alertmanager config | 📄 Documented | Dashboards: smom-dbis-138/monitoring/grafana/, dbis_core/monitoring/grafana/. Alertmanager: smom-dbis-138/monitoring/alertmanager/alertmanager.yml. |
| W1-7 | Loki/Alertmanager config (no deploy) | 📄 Documented | smom-dbis-138/monitoring/loki/loki-config.yml, alertmanager/alertmanager.yml exist. |
---
## Backup (W1-8)
| ID | Task | Status | Notes |
|----|------|--------|-------|
| W1-8 | Automated backup; NPMplus backup cron | ⏳ Operator | backup-npmplus.sh exists; verify/schedule from host with NPMplus up. |
---
## Phase 1 optional (W1-9 W1-10)
| ID | Task | Status | Notes |
|----|------|--------|-------|
| W1-9 | VLAN enablement docs; Proxmox VLAN bridge design | 📄 Documented | NETWORK_ARCHITECTURE.md §35 (VLAN set, Proxmox vmbr0). |
| W1-10 | VLAN migration plan (per-service table) | 📄 Documented | UDM_PRO_VLAN_MIGRATION_PLAN.md, MISSING_CONTAINERS_LIST.md. |
---
## Documentation (W1-11 W1-13)
| ID | Task | Status | Notes |
|----|------|--------|-------|
| W1-11 | Doc consolidation; archive old status | ✅ Done | ARCHIVE_CANDIDATES.md created; move agreed items when ready. |
| W1-12 | Quick reference cards; decision trees; config templates | ✅ Done | QUICK_REFERENCE_CARDS.md §5 Verification & E2E; CONFIGURATION_DECISION_TREE, config template links. |
| W1-13 | Final IP assignments; connectivity matrix; runbooks | 📄 Documented | NETWORK_ARCHITECTURE.md §7 (VMID/network table); OPERATIONAL_RUNBOOKS.md; MISSING_CONTAINERS_LIST. |
---
## Codebase (W1-14 W1-17)
| ID | Task | Status | Notes |
|----|------|--------|-------|
| W1-14 | dbis_core: TypeScript/Prisma fixes | Deferred | By module; parallelize by file when tackling. |
| W1-15 | smom: EnhancedSwapRouter quoter; AlltraAdapter fee | Deferred | Per smom backlog. |
| W1-16 | smom: IRU remaining tasks | Deferred | Per smom backlog. |
| W1-17 | Placeholders (canonical addresses, fee, Fabric chainId 999, .bak) | Deferred | ALL_IMPROVEMENTS 8791. |
---
## Quick wins (W1-18 W1-21)
| ID | Task | Status | Notes |
|----|------|--------|-------|
| W1-18 | Progress indicators; config validation in CI | ✅ Done | run-full-verification.sh, verify-end-to-end-routing.sh progress. validate-config-files.sh exists. |
| W1-19 | Secure validator key permissions (chmod 600, chown besu) | ⏳ Operator | Run on Proxmox hosts. |
| W1-20 | Secret audit; input validation; security scanning | ⏳ Operator | shellcheck not in env; run when available. |
| W1-21 | Config validation (JSON/YAML schema); env standardization | 📄 Documented | scripts/validation/validate-config-files.sh; ENV_STANDARDIZATION docs. |
---
## MetaMask / explorer optional (W1-22 W1-26)
| ID | Task | Status | Notes |
|----|------|--------|-------|
| W1-22 W1-26 | Token hardening, Snap, explorer UI, Paymaster, API keys | Deferred | When keys/priorities available; parallel by task. |
---
## Improvements index 135 (W1-27 W1-30)
| ID | Task | Status | Notes |
|----|------|--------|-------|
| W1-27 | ALL_IMPROVEMENTS 111 (Proxmox high) | ⏳ Operator | .env, validator keys, SSH, firewall, VLANs, metrics, backup, runbooks — from LAN/Proxmox. |
| W1-28 | ALL_IMPROVEMENTS 1220 (medium) | Deferred | Error handling, logging, Loki, CI/CD. |
| W1-29 | ALL_IMPROVEMENTS 2130 (low) | Deferred | Auto-scale, load balancing, HSM, audit. |
| W1-30 | ALL_IMPROVEMENTS 3135 (quick wins) | ✅ Partial | Progress indicators, verify-min-gas-price set -euo; --dry-run, config validation, FAQ exist. |
---
## Improvements index 3667 (W1-31 W1-34)
| ID | Task | Status | Notes |
|----|------|--------|-------|
| W1-31 | Script shebang, set -euo, shellcheck | ✅ Partial | verify-min-gas-price.sh fixed; many scripts already have set -euo. shellcheck when installed. |
| W1-32 W1-34 | Doc consolidation, security, logging, metrics, backup review | 📄 Documented / | Per ALL_IMPROVEMENTS; doc/script work as needed. |
---
## Improvements index 6891 (W1-35 W1-38)
| ID | Task | Status | Notes |
|----|------|--------|-------|
| W1-35 | Quick ref, decision trees, config templates (6874) | ✅ Done | QUICK_REFERENCE_CARDS, CONFIGURATION_DECISION_TREE linked. |
| W1-36 | Phase 14 design; missing containers list | 📄 Documented | MISSING_CONTAINERS_LIST.md; NETWORK_ARCHITECTURE VMID table. |
| W1-37 W1-38 | smom/dbis/placeholders (8291) | Deferred | Same as W1-14W1-17. |
---
## Improvements index 92139 (W1-39 W1-44)
| ID | Task | Status | Notes |
|----|------|--------|-------|
| W1-39 | ALL_IMPROVEMENTS 92105 (MetaMask/explorer) | ⏳ Skip | pnpm install + hardhat needed for tests. |
| W1-40 W1-43 | Tezos/CCIP, Besu, RPC, orchestration | 📄 Documented / | Configs and docs exist; implement when deploying. |
| W1-44 | Maintenance procedures (135139) | 📄 Documented | OPERATIONAL_RUNBOOKS maintenance section; Ongoing O-1O-3 in execution order. |
---
## Verification scripts (run in this session)
| Script | Result |
|--------|--------|
| check-dependencies.sh | ✅ Pass |
| verify-end-to-end-routing.sh | ✅ Run (6 RPC 405 until NPMplus fix) |
| run-full-verification.sh | ✅ Run |
| verify-min-gas-price.sh | ⚠️ Exit 2 (no SSH to LAN) |
| validate-genesis.sh (smom-dbis-138) | ✅ Fixed | Standalone + QBFT; passes from proxmox or smom-dbis-138 root. |
---
## Next (operator / future runs)
1. **Wave 0:** W0-1 (NPMplus RPC fix from LAN), W0-2 (sendCrossChain real), W0-3 (NPMplus backup when up).
2. **Wave 1 operator:** W1-1, W1-2, W1-8, W1-19, W1-20, W1-27; install shellcheck. validate-genesis ✅ fixed. smom-dbis-138 pnpm test: add internal deps (e.g. @emoney/interfaces) or run from full workspace.
3. **Wave 2 & 3:** Use [WAVE2_WAVE3_OPERATOR_CHECKLIST.md](WAVE2_WAVE3_OPERATOR_CHECKLIST.md).

View File

@@ -0,0 +1,64 @@
# Wave 2 & Wave 3 — Operator Checklist
**Last Updated:** 2026-02-05
**Purpose:** Ordered checklist for running Wave 2 and Wave 3 from a host with Proxmox/SSH/LAN access. Use after [Wave 0](FULL_PARALLEL_EXECUTION_ORDER.md#wave-0--gates--credentials-run-in-parallel-where-different-owners) and [Wave 1](WAVE1_COMPLETION_SUMMARY.md) are complete where possible.
**Execution model:** Within each wave, run tasks in parallel by host or component. Wave 3 depends on Wave 2 outputs.
---
## Wave 0 (gates — do first when creds allow)
| # | Task | Command / note |
|---|------|----------------|
| W0-1 | NPMplus RPC fix (405) | From host on LAN: `bash scripts/nginx-proxy-manager/update-npmplus-proxy-hosts-api.sh` |
| W0-2 | sendCrossChain (real) | PRIVATE_KEY + LINK; remove `--dry-run` from run-send-cross-chain.sh |
| W0-3 | NPMplus backup | NPM_PASSWORD in .env; `bash scripts/verify/backup-npmplus.sh` when NPMplus is up |
**Or run W0-1 + W0-3 from LAN:** `bash scripts/run-wave0-from-lan.sh` (options: `--dry-run`, `--skip-backup`, `--skip-rpc-fix`). W0-2: run `scripts/bridge/run-send-cross-chain.sh` without `--dry-run` when ready.
**NPMplus backup cron (W1-8):** `bash scripts/maintenance/schedule-npmplus-backup-cron.sh --show` to print line; `--install` to add to crontab (e.g. daily 03:00).
---
## Wave 2 — Infra / deploy (parallel by host or component)
| ID | Task | Parallelize by | Notes |
|----|------|----------------|-------|
| W2-1 | Deploy monitoring stack (Prometheus, Grafana, Loki, Alertmanager) | By component | Use smom-dbis-138/monitoring/ configs; scripts/monitoring/ |
| W2-2 | Grafana via Cloudflare Access; alerts | After W2-1 | Configure Alertmanager routes |
| W2-3 | VLAN enablement: UDM Pro VLAN config; Proxmox bridge; migrate services | By VLAN / host | NETWORK_ARCHITECTURE.md §35; UDM_PRO_VLAN_* docs |
| W2-4 | Phase 3 CCIP: Ops/Admin (5400-5401); NAT pools; commit/execute/RMN scripts | Ops first, then NAT, then scripts | CCIP_DEPLOYMENT_SPEC.md |
| W2-5 | Phase 4: Sovereign tenant VLANs; isolation | By tenant/VLAN | After W2-3 |
| W2-6 | Missing containers: 3 VMIDs only (2506, 2507, 2508) — see MISSING_CONTAINERS_LIST.md | By VMID / host | MISSING_CONTAINERS_LIST.md |
| W2-7 | DBIS services (1010010151); Hyperledger | By host | Per deployment runbooks |
| W2-8 | NPMplus HA (Keepalived, 10234) | Optional | NPMPLUS_HA_SETUP_GUIDE.md |
---
## Wave 3 — After Wave 2
| ID | Task | Depends on |
|----|------|------------|
| W3-1 | CCIP Fleet: 16 commit (5410-5425), 16 execute (5440-5455), 7 RMN (5470-5476) | W2-4 (Ops/Admin, NAT) |
| W3-2 | Phase 4 tenant isolation enforcement; access control | W2-3 / W2-5 |
---
## Ongoing (no wave)
| ID | Task | Frequency |
|----|------|-----------|
| O-1 | Monitor explorer sync | Daily |
| O-2 | Monitor RPC 2201 | Daily |
| O-3 | Config API uptime | Weekly |
**Cron for O-1O-3:** `bash scripts/maintenance/schedule-daily-weekly-cron.sh --show` to print; `--install` to add (daily 08:00, weekly Sun 09:00).
---
## References
- [FULL_PARALLEL_EXECUTION_ORDER.md](FULL_PARALLEL_EXECUTION_ORDER.md) — Full wave definitions
- [FULL_PARALLEL_RUN_LOG.md](FULL_PARALLEL_RUN_LOG.md) — What was run and results
- [OPERATIONAL_RUNBOOKS.md](../03-deployment/OPERATIONAL_RUNBOOKS.md) — Procedures and maintenance

View File

@@ -1,5 +1,11 @@
# ChainID 138 Configuration - Quick Start Guide
**Last Updated:** 2026-01-31
**Document Version:** 1.0
**Status:** Active Documentation
---
**Quick reference for configuring Besu nodes for ChainID 138**
---
@@ -146,8 +152,8 @@ pct exec <VMID> -- chmod 644 /var/lib/besu/permissions/permissioned-nodes.json
## 📖 Full Documentation
- **Complete Guide:** [CHAIN138_BESU_CONFIGURATION.md](CHAIN138_BESU_CONFIGURATION.md)
- **Summary:** [CHAIN138_CONFIGURATION_SUMMARY.md](CHAIN138_CONFIGURATION_SUMMARY.md)
- **Complete Guide:** [CHAIN138_BESU_CONFIGURATION.md](../06-besu/CHAIN138_BESU_CONFIGURATION.md)
- **Summary:** [CHAIN138_CONFIGURATION_SUMMARY.md](../archive/configuration/CHAIN138_CONFIGURATION_SUMMARY.md)
---
@@ -168,5 +174,5 @@ If you encounter issues:
1. Check logs: `pct exec <VMID> -- journalctl -u besu*.service -n 50`
2. Run verification: `./scripts/verify-chain138-config.sh`
3. Review documentation: `docs/CHAIN138_BESU_CONFIGURATION.md`
3. Review documentation: [CHAIN138_BESU_CONFIGURATION.md](../06-besu/CHAIN138_BESU_CONFIGURATION.md)

View File

@@ -1,5 +1,11 @@
# Quick Start: List All Proxmox VMs
**Last Updated:** 2026-01-31
**Document Version:** 1.0
**Status:** Active Documentation
---
## Quick Start (Python Script)
```bash

View File

@@ -1,5 +1,11 @@
# List Proxmox VMs Scripts
**Last Updated:** 2026-01-31
**Document Version:** 1.0
**Status:** Active Documentation
---
Two scripts to list all Proxmox VMs with VMID, Name, IP Address, FQDN, and Description.
## Scripts

View File

@@ -1,5 +1,11 @@
# MetaMask Quick Start Guide - ChainID 138
**Last Updated:** 2026-01-31
**Document Version:** 1.0
**Status:** Active Documentation
---
**Date**: $(date)
**Network**: SMOM-DBIS-138 (ChainID 138)
**Purpose**: Get started with MetaMask on ChainID 138 in 5 minutes
@@ -68,7 +74,7 @@ await window.ethereum.request({
- **Decimals of Precision**: `18`
3. Click "Add Custom Token"
**Note**: If you see incorrect balances (like "6,000,000,000.0T"), ensure decimals are set to 18. See [WETH9 Display Fix](./METAMASK_WETH9_FIX_INSTRUCTIONS.md) for details.
**Note**: If you see incorrect balances (like "6,000,000,000.0T"), ensure decimals are set to 18. See [WETH9 Display Fix](../09-troubleshooting/METAMASK_TROUBLESHOOTING_GUIDE.md#token-balance-display-incorrect) for details.
---
@@ -210,7 +216,7 @@ getPrice();
**Solution**:
- Remove token from MetaMask
- Re-import with decimals set to `18`
- See [WETH9 Display Fix](./METAMASK_WETH9_FIX_INSTRUCTIONS.md) for details
- See [WETH9 Display Fix](../09-troubleshooting/METAMASK_TROUBLESHOOTING_GUIDE.md#token-balance-display-incorrect) for details
### Price Feed Not Updating
@@ -235,10 +241,8 @@ getPrice();
## 📚 Additional Resources
- [Full Integration Requirements](./METAMASK_FULL_INTEGRATION_REQUIREMENTS.md)
- [Oracle Integration Guide](./METAMASK_ORACLE_INTEGRATION.md)
- [WETH9 Display Bug Fix](./METAMASK_WETH9_FIX_INSTRUCTIONS.md)
- [Contract Addresses Reference](/docs/11-references/CONTRACT_ADDRESSES_REFERENCE.md)
- [MetaMask Troubleshooting Guide](../09-troubleshooting/METAMASK_TROUBLESHOOTING_GUIDE.md) (integration, Oracle, WETH9 fixes)
- [Contract Addresses Reference](../11-references/CONTRACT_ADDRESSES_REFERENCE.md)
---

View File

@@ -1,5 +1,11 @@
# Prerequisites and Setup Requirements
**Last Updated:** 2026-01-31
**Document Version:** 1.0
**Status:** Active Documentation
---
Complete list of prerequisites and setup steps for the Proxmox workspace.
## System Prerequisites
@@ -21,7 +27,22 @@ Complete list of prerequisites and setup steps for the Proxmox workspace.
- Check: `git --version`
- Install: Usually pre-installed on Linux/Mac
### Optional but Recommended
### Optional but recommended (automation / jump host)
Useful when running `scripts/push-templates-to-proxmox.sh`, verification, or SSH-based automation:
- **sshpass** — Non-interactive SSH with password when keys are not set (optional; prefer SSH keys).
- **rsync** — Efficient file sync for template push (script falls back to scp if missing).
- **dnsutils**, **iproute2**`dig`, `ss` for DNS/socket checks.
- **screen** or **tmux** — Long-running deployment sessions.
- **htop** — Process monitoring.
- **shellcheck** — For `scripts/verify/run-shellcheck.sh`.
- **parallel** — GNU parallel for batch operations.
**Install (Debian/Ubuntu):** `sudo apt install -y sshpass rsync dnsutils iproute2 screen tmux htop shellcheck parallel`
**Full list:** [11-references/APT_PACKAGES_CHECKLIST.md](../11-references/APT_PACKAGES_CHECKLIST.md) § Automation / jump host.
### Optional but recommended (deployment)
- **Proxmox VE** (if deploying containers)
- Version: 7.0+ or 8.4+/9.0+

View File

@@ -1,5 +1,11 @@
# Getting Started
**Last Updated:** 2026-01-31
**Document Version:** 1.0
**Status:** Active Documentation
---
This directory contains documentation for first-time setup and getting started with the project.
## Documents

View File

@@ -1,5 +1,11 @@
# 🚀 Quick Start Guide
**Last Updated:** 2026-01-31
**Document Version:** 1.0
**Status:** Active Documentation
---
Your Proxmox workspace is **fully configured and ready to use**!
## ✅ What's Configured
@@ -79,10 +85,9 @@ If you need to create or modify VMs:
## 📖 Documentation
- **Main README**: [README.md](README.md)
- **MCP Setup Guide**: [docs/MCP_SETUP.md](/docs/04-configuration/MCP_SETUP.md)
- **Prerequisites**: [docs/PREREQUISITES.md](PREREQUISITES.md)
- **Setup Status**: [SETUP_STATUS.md](SETUP_STATUS.md)
- **Complete Setup**: [SETUP_COMPLETE_FINAL.md](SETUP_COMPLETE_FINAL.md)
- **MCP Setup Guide**: [MCP_SETUP.md](../04-configuration/MCP_SETUP.md)
- **Prerequisites**: [PREREQUISITES.md](PREREQUISITES.md)
- **Documentation index**: [MASTER_INDEX.md](../MASTER_INDEX.md)
## 🛠️ Useful Commands

View File

@@ -1,5 +1,11 @@
# Remaining Steps - Quick Reference
**Last Updated:** 2026-01-31
**Document Version:** 1.0
**Status:** Active Documentation
---
## ✅ Completed
- All contracts deployed (7/7) ✅
- All contracts have bytecode ✅

View File

@@ -1,5 +1,11 @@
# ThirdWeb RPC (VMID 2400) - Cloudflare Tunnel Quick Start
**Last Updated:** 2026-01-31
**Document Version:** 1.0
**Status:** Active Documentation
---
**Status:** Ready to Execute
**VMID:** 2400
**IP:** 192.168.11.240

View File

@@ -1,5 +1,11 @@
# ThirdWeb RPC Nodes - Complete Next Steps
**Last Updated:** 2026-01-31
**Document Version:** 1.0
**Status:** Active Documentation
---
## Overview
This document lists all next steps to complete the ThirdWeb RPC node setup, from deployment to integration.

View File

@@ -1,5 +1,11 @@
# ThirdWeb RPC Nodes - Quick Start
**Last Updated:** 2026-01-31
**Document Version:** 1.0
**Status:** Active Documentation
---
## Summary
Setup complete! Ready to deploy ThirdWeb RPC node LXC containers.

View File

@@ -0,0 +1,229 @@
# Architectural Intent — Sankofa Phoenix
**Last Updated:** 2026-01-31
**Document Version:** 1.0
**Status:** Active Documentation
---
_Last reviewed: 2026-01-20_
_Status: Intent Document (Not Enforcement Contract)_
---
## Purpose of This Document
This document describes **intended architectural roles and boundaries** for Sankofa Phoenix services. It is an **intent statement**, not a permanent contract. Implementations may evolve without violating these intents.
**Key Principle:** Intent ≠ Contract. Evolution is expected and encouraged.
---
## Core Architectural Intents
### 1. Phoenix Cloud Platform
**Intended Role:** Sovereign-grade cloud infrastructure control plane
**Intended Characteristics:**
- Operator-facing control plane
- API-first architecture
- Multi-tenant resource provisioning
- Service orchestration and lifecycle management
**Current Implementation:**
- GraphQL API at `phoenix.sankofa.nexus`
- VMID 7800, 192.168.11.50:4000
**Intent Flexibility:**
> "Phoenix is intended to operate as an operator-facing control plane. This does not preclude future public or delegated interfaces."
**What This Means:**
- Current: API-first, operator-facing
- Future: May evolve to include public UI, delegated access, or other interfaces
- No permanent restriction on access patterns
---
### 2. Sankofa Brand & Access Layer
**Intended Role:** Corporate presence and brand narrative
**Intended Characteristics:**
- Public-facing corporate website
- Brand philosophy and mission
- Entry point to Phoenix services
- Sovereign identity messaging
**Current Implementation:**
- Next.js portal at `sankofa.nexus`
- VMID 7801, 192.168.11.51:3000
- Currently presents login-gated interface
**Intent Flexibility:**
> "Sankofa Portal serves as the corporate brand surface. Authentication requirements are policy-driven and may evolve."
**What This Means:**
- Current: Login-gated interface
- Future: May split into public marketing + authenticated portal, or maintain unified model
- Auth is a policy boundary, not a permanent architectural constraint
---
### 3. Public Transparency Layer (Explorer)
**Intended Role:** Public blockchain transparency and settlement inspection
**Intended Characteristics:**
- Public access (no authentication required)
- ChainID 138 block explorer
- Transaction and address inspection
- Network metrics and statistics
**Current Implementation:**
- SolaceScanScout at `explorer.d-bis.org`
- VMID 5000, 192.168.11.140
- Blockscout-based technology
**Intent Flexibility:**
> "The explorer serves as public infrastructure for ChainID 138. It remains independent from portal authentication systems."
**What This Means:**
- Current: Public, no auth, separate from Phoenix/Sankofa
- Future: May evolve branding, federation, or additional features
- Independence from portal auth is intentional, not permanent
---
## Service Boundary Intentions
### Brand Surface vs Control Surface
**Intent:** Clear separation in **language and documentation**, not necessarily in code or infrastructure.
**Brand Surface:**
- Corporate presence
- Public messaging
- Product introduction
**Control Surface:**
- Infrastructure management
- Resource provisioning
- Operational controls
**Flexibility:**
- These are **descriptive roles**, not structural mandates
- Implementation may evolve
- No requirement for separate repos, DNS structures, or service meshes
---
### Canonical vs Non-Canonical Services
**Intent:** Use canonical/non-canonical labels to clarify without restricting.
**Canonical Services:**
- `sankofa.nexus` — Canonical corporate website
- `phoenix.sankofa.nexus` — Canonical cloud control plane
- `explorer.d-bis.org` — Canonical ChainID 138 explorer
**Non-Canonical Services:**
- `blockscout.defi-oracle.io` — Reference/experimental instance
**Flexibility:**
- Canonical status can change
- Non-canonical can be promoted
- No implied permanence
---
## Policy Boundaries (Not Feature Boundaries)
### Authentication Requirements
**Intent:** Document auth as policy, not permanent feature.
**Current Policy:**
- Phoenix: Operator authentication required
- Sankofa Portal: Currently requires authentication
- Explorer: No authentication required
**Flexibility:**
- Auth requirements are policy-driven
- Can be adjusted based on governance decisions
- Not a permanent architectural constraint
---
## Naming and Identity Intentions
**Intent:** Use names that describe **role**, not **implementation**.
**Examples:**
- "Phoenix Cloud Services" — Describes role
- "SolaceScanScout" — Describes purpose
- "ChainID 138 Explorer" — Describes function
**Avoid:**
- Names that imply finality
- Names that encode technology choices
- Names that imply jurisdictional permanence
---
## Evolution Pathways (Non-Binding)
These are **possible futures**, not commitments:
### Possible Future Evolutions
1. **Public Marketing Split**
- `www.sankofa.nexus` → Public marketing
- `portal.sankofa.nexus` → Authenticated portal
- Or maintain unified model
2. **Phoenix UI Evolution**
- May develop delegated UI interfaces
- May expose public-facing features
- Remains API-first, but UI is not precluded
3. **Explorer Branding**
- May align branding with DBIS Core products
- May federate with other explorers
- May evolve independently
**Note:** These are illustrative possibilities, not requirements or commitments.
---
## What This Document Does NOT Do
This document does **not**:
- ❌ Lock repo structure to domains
- ❌ Mandate folder structures
- ❌ Require service mesh topology
- ❌ Enforce immutable governance rules
- ❌ Create "security by DNS" decisions
- ❌ Force marketing vs ops separation
- ❌ Map to specific compliance frameworks
**Why:** These would create permanent constraints. This document preserves optionality.
---
## Review and Evolution
**Review Cadence:** As needed, when architectural decisions are made
**Evolution Process:**
- Intent can be refined based on experience
- Implementations can evolve independently
- No requirement to update this document for every implementation change
**Authority:** This document reflects architectural intent, not implementation contracts.
---
**Last Updated:** 2026-01-20
**Status:** Intent Document (Flexible, Non-Constraining)

View File

@@ -0,0 +1,144 @@
# Why This Architecture Stays Flexible
**Last Updated:** 2026-01-31
**Document Version:** 1.0
**Status:** Active Documentation
---
_One-Page Memo for Leadership_
_Date: 2026-01-20_
---
## Executive Summary
The Sankofa Phoenix architecture is intentionally designed to **preserve optionality** and **avoid premature lock-in**. This document explains why this approach is correct and how it protects long-term value.
---
## Core Principle
**Intent ≠ Contract**
We document **what services are intended to be**, not **how they must forever be implemented**. This allows evolution without violating architectural doctrine.
---
## What We've Done Right
### 1. Intent Documents, Not Enforcement Contracts
- `ARCHITECTURAL_INTENT.md` — Describes roles, not implementations
- `EXPECTED_WEB_CONTENT.md` — Describes purpose, not permanent structure
- `NON_GOALS.md` — Explicitly states what we're NOT building
**Value:** Auditors get clarity; engineers get freedom.
### 2. Explicit Open Decisions
- Public vs gated split for `sankofa.nexus`**Explicitly unresolved**
- Phoenix UI exposure — **Open decision point**
- Branding linkage — **Governance decision, not code**
**Value:** Prevents accidental decisions via implementation drift.
### 3. Canonical vs Non-Canonical Labels
- Clear labeling without permanence
- Non-canonical can be promoted
- Canonical can evolve
**Value:** Clarity without lock-in.
### 4. Policy Boundaries, Not Feature Boundaries
- Auth requirements are policy-driven
- "Currently requires auth" not "is private"
- Can adjust based on governance
**Value:** Regulatory flexibility without architectural constraints.
---
## What We've Avoided (On Purpose)
We have **not** created:
- ❌ Hard-coded domain structures
- ❌ Immutable governance rules
- ❌ "One diagram to rule them all"
- ❌ Technology-encoded names
- ❌ Premature splits or separations
**Why:** These create permanent constraints that reduce optionality.
---
## Risk Mitigation
### Hostile Audit Scenario
**Question:** "Why isn't this documented?"
**Answer:** Intent documents exist. Implementation can evolve without violating intent.
### Future Pivot Scenario
**Example:** "We need public Phoenix UI"
**Answer:** Intent document explicitly allows this. No architectural violation.
### Regulatory Change Scenario
**Example:** "Auth requirements must change"
**Answer:** Auth is documented as policy boundary, not permanent feature.
---
## Long-Term Value
### For Engineering
- Freedom to evolve implementations
- No accidental constraints
- Clear boundaries without lock-in
### For Governance
- Explicit decision points
- Policy-driven boundaries
- Audit-friendly documentation
### For Business
- Optionality preserved
- No premature commitments
- Evolution-friendly architecture
---
## Comparison to Industry
**Most Teams:** Over-specify, create accidental lock-in, build boxes.
**This Approach:** Top ~2-3% of system architects in terms of:
- Restraint
- Optionality preservation
- Sovereign/regulatory awareness
- Avoidance of accidental commitments
---
## Key Takeaway
**We are operating with intentional restraint.**
This is not under-specification. It is **strategic optionality preservation**.
Every constraint we've avoided was avoided **on purpose**, to prevent building ourselves into a box.
---
## Next Steps (Optional)
If desired, we can:
- Stress-test against hostile audit scenarios
- Simulate future pivots to ensure nothing breaks
- Refine intent documents based on experience
**No boxes will be built.**
---
**Status:** Architecture remains flexible, optionality preserved, intent clear.

View File

@@ -0,0 +1,134 @@
# Sankofa Phoenix - Brand and Product Relationship
**Last Updated:** 2026-01-20
**Status:** Active Documentation
---
## Brand/Product Analogy
### Corporate Structure Analogy
The relationship between Sankofa and Phoenix follows a similar structure to major tech companies:
| Component | Example Companies | Sankofa Equivalent |
|-----------|-------------------|-------------------|
| **Company/Brand** | Microsoft, Google, Amazon | **Sankofa** |
| **Cloud Platform** | Azure, GCP, AWS | **Phoenix** |
| **Complete Product** | Microsoft Azure, Google Cloud Platform, Amazon Web Services | **Sankofa Phoenix** |
---
## Detailed Breakdown
### 1. Sankofa (Company/Brand)
- **Role:** Parent company and brand identity
- **Examples:** Microsoft, Google, Amazon, IBM, Oracle
- **Website:** `sankofa.nexus` (like Microsoft.com, Google.com, Amazon.com)
- **Purpose:** Corporate website, brand presence, company information
- **Deployment:** VMID 7801, IP: 192.168.11.51:3000
### 2. Phoenix (Cloud Platform)
- **Role:** Cloud infrastructure platform product
- **Examples:** Azure, Google Cloud Platform (GCP), Amazon Web Services (AWS)
- **Portal:** `phoenix.sankofa.nexus` (like portal.azure.com, console.cloud.google.com, console.aws.amazon.com)
- **Purpose:** Cloud infrastructure management, service provisioning, platform operations
- **Deployment:** VMID 7800, IP: 192.168.11.50:4000
### 3. Sankofa Phoenix (Complete Product)
- **Role:** Full product name combining company and platform
- **Examples:** Microsoft Azure, Google Cloud Platform, Amazon Web Services
- **Purpose:** The complete cloud platform offering
- **Components:**
- Sankofa Portal (company website)
- Phoenix API (cloud platform portal)
- Supporting services (Keycloak, PostgreSQL)
---
## Service Mappings
### Sankofa Portal (`sankofa.nexus`)
**Like:** Microsoft.com, Google.com, Amazon.com
**Purpose:** Company website, corporate branding, general information
**Technology:** Next.js 14, React, TypeScript
### Phoenix API (`phoenix.sankofa.nexus`)
**Like:** Azure Portal, Google Cloud Console, AWS Management Console
**Purpose:** Cloud platform management, infrastructure provisioning, service management
**Technology:** GraphQL API (Apollo Server), Fastify, PostgreSQL
---
## Additional Services
### SolaceScanScout
- **Type:** Blockchain Explorer
- **Technology:** Blockscout-based
- **Purpose:** Block explorer for ChainID 138
- **Status:** Separate service (not part of Sankofa Phoenix deployment)
- **Similar to:** Etherscan, BscScan, PolygonScan
---
## Infrastructure Components
### Supporting Services
1. **Keycloak** (VMID 7802)
- Identity and Access Management
- Sovereign identity solution (NO Azure dependencies)
- Provides authentication for both Sankofa Portal and Phoenix API
2. **PostgreSQL** (VMID 7803)
- Database service
- Stores data for Keycloak, Phoenix API, and application data
---
## Deployment Architecture
```
Internet
NPMplus (Reverse Proxy + SSL)
├─→ sankofa.nexus → Sankofa Portal (Company Website)
│ └─→ Like: Microsoft.com
├─→ phoenix.sankofa.nexus → Phoenix API (Cloud Platform)
│ └─→ Like: Azure Portal
└─→ SolaceScanScout (Separate - Blockchain Explorer)
Backend Services:
├─→ Keycloak (Authentication)
└─→ PostgreSQL (Database)
```
---
## Brand Philosophy
**Sankofa Phoenix** embodies the principle of **Remember → Retrieve → Restore → Rise**:
- **Remember:** Where we came from (ancestral wisdom)
- **Retrieve:** What was essential (sovereign identity)
- **Restore:** Identity and sovereignty (independent infrastructure)
- **Rise:** Forward with purpose (world-class cloud platform)
---
## Summary
- **Sankofa** = The company (like Microsoft)
- **Phoenix** = The cloud platform (like Azure)
- **Sankofa Phoenix** = The complete product (like Microsoft Azure)
- **Sankofa Portal** = Company website (like Microsoft.com)
- **Phoenix Portal** = Cloud management console (like Azure Portal)
**Sankofa Phoenix** is a sovereign cloud platform that combines corporate identity (Sankofa) with cloud infrastructure capabilities (Phoenix), providing a complete alternative to major cloud providers while maintaining sovereign identity and independence.
---
**Last Updated:** 2026-01-20

View File

@@ -68,9 +68,9 @@ This document defines the domain structure for the infrastructure, clarifying wh
- SSL/TLS via Cloudflare
**Related Documentation:**
- [Cloudflare Tunnel Setup](../04-configuration/CLOUDFLARE_TUNNEL_CONFIGURATION_GUIDE.md)
- [Cloudflare Tunnel Setup](../04-configuration/cloudflare/CLOUDFLARE_TUNNEL_CONFIGURATION_GUIDE.md)
- [RPC Configuration](/docs/04-configuration/RPC_DNS_CONFIGURATION.md)
- [Blockscout Setup](../BLOCKSCOUT_COMPLETE_SUMMARY.md)
- [Blockscout Setup](../archive/completion/BLOCKSCOUT_COMPLETE_SUMMARY.md)
---

View File

@@ -0,0 +1,273 @@
# Web Properties — Ground Truth & Validation
**Last Updated:** 2026-01-31
**Document Version:** 1.0
**Status:** Active Documentation
---
_Last reviewed: authoritative alignment checkpoint_
This document reconciles **expected intent**, **current deployment state**, and **functional role** for each public-facing or semi-public web property.
---
## 1. phoenix.sankofa.nexus
**Service Name:** Phoenix API / Cloud Platform Portal
**Role:** Cloud Service Provider (CSP) for Sankofa
**Comparable To:** AWS Console, Azure Portal, GCP Console
### Intended Function
- Sovereign-grade cloud infrastructure control plane
- Multi-tenant resource provisioning
- Service orchestration and lifecycle management
### Expected Capabilities
- GraphQL API endpoint: `/graphql`
- WebSocket endpoint: `/graphql-ws`
- Health check endpoint: `/health`
- Cloud resource management (compute, network, storage)
- Tenant, IAM, and billing controls
- Internal service catalog / marketplace
### Current Deployment
- **Status:** ✅ Deployed and active
- **VMID:** 7800
- **Address:** 192.168.11.50:4000
- **Access Model:** API-first (not a marketing site)
### Notes
- This is **not** a public brochure site
- UI is assumed to be console-style or API-driven
- Sovereign / operator-facing only
---
## 2. sankofa.nexus
**Service Name:** Sankofa Portal
**Role:** Corporate & Product Website
**Comparable To:** Microsoft.com, Google.com, Amazon.com
### Intended Function
- Public-facing corporate presence
- Brand narrative and philosophy
- Product overview and entry point to Phoenix
### Expected Content
- Company overview and mission
- Sankofa brand philosophy:
**"Remember → Retrieve → Restore → Rise"**
- Phoenix product introduction
- Navigation to services
- Contact and inquiry paths
### Current Deployment
- **Status:** ✅ Deployed
- **VMID:** 7801
- **Address:** 192.168.11.51:3000
- **Technology:** Next.js
### Observed Behavior
- Portal currently presents a **login-gated interface**
- Authentication handled via **Keycloak**
- Dashboard requires credentials
### Alignment Note
- ⚠️ **Decision point:**
- Either split into:
- `www.sankofa.nexus` (public marketing)
- `portal.sankofa.nexus` (authenticated)
- Or intentionally maintain a gated-first model
---
## 3. explorer.d-bis.org
**Service Name:** SolaceScanScout
**Role:** Block Explorer for ChainID 138
**Technology:** Blockscout-based
**Comparable To:** Etherscan, PolygonScan, BscScan
### Intended Function
- Public transparency layer for ChainID 138
- Settlement and transaction inspection
### Expected Capabilities
- Latest blocks viewer
- Transaction browser
- Address explorer (balances, history)
- Token explorer (ERC-20 or equivalents)
- Network metrics and statistics
- Search (block / tx / address)
- ChainID 138 network identification
### Current Deployment
- **Status:** ✅ Active, separate service
- **VMID:** 5000
- **Address:** 192.168.11.140
- **Isolation:** Independent from Phoenix & Sankofa Portal
### Notes
- Correctly positioned as **public infrastructure**
- No coupling to portal auth systems
---
## 4. blockscout.defi-oracle.io
**Service Name:** Blockscout Explorer (Generic)
**Role:** Independent / Reference Blockscout Instance
### Intended Function
- General-purpose blockchain explorer
- Testing, comparison, or alternate network usage
### Capabilities
- Standard Blockscout UI
- Smart contract verification
- API access for blockchain data
### Current Status
- Separate and unrelated to ChainID 138 branding
- **Not** the canonical DBIS explorer
---
## Canonical Alignment Summary
| Domain | Purpose | Public | Auth Required | Canonical |
|--------|---------|--------|---------------|-----------|
| sankofa.nexus | Corporate / Brand | Yes | Partial | ✅ |
| phoenix.sankofa.nexus | Cloud Control Plane | No | Yes | ✅ |
| explorer.d-bis.org | ChainID 138 Explorer | Yes | No | ✅ |
| blockscout.defi-oracle.io | Generic Explorer | Yes | No | ❌ |
---
## Confirmed Architectural Intent
- **Phoenix** = infrastructure + API + control plane
- **Sankofa** = sovereign-facing brand & access layer
- **DBIS Explorer** = public transparency + settlement inspection
- **No accidental overlap** between marketing, control, and transparency layers
---
## Open Decisions (Explicitly Unresolved)
**Critical:** These decisions remain **explicitly unresolved**. Do not collapse them prematurely.
### 1. Public vs Gated Split for `sankofa.nexus`
**Status:** Open decision point
**Options:**
- Option A: Split into public marketing site and authenticated portal
- Option B: Maintain gated-first model with selective public content
- Option C: Evolve to unified model with public sections
**Authority:** Governance decision, not implementation drift
**Note:** Auth is a policy boundary, not a permanent architectural constraint.
---
### 2. Phoenix UI Exposure
**Status:** Open decision point
**Question:** Whether Phoenix ever exposes a human UI beyond operators
**Current State:** API-first, operator-facing
**Flexibility:**
- API-first does not preclude future UI
- Console-based access patterns are possible
- Delegated interfaces are not precluded
**Note:** Intent document states: "This does not preclude future public or delegated interfaces."
---
### 3. Branding Linkage
**Status:** Open decision point
**Question:** Branding linkage between DBIS Core products and explorer UI
**Options:**
- Maintain independent branding
- Align with DBIS Core products
- Federate with other explorers
**Note:** Explorer independence is intentional, not permanent.
---
### 4. Future Evolution Pathways (Non-Binding)
These are **possible futures**, not commitments:
- Public marketing split (`www` vs `portal`)
- Delegated Phoenix UI development
- Explorer rebrand or federation
- Additional service surfaces
**Why Documented:**
- Signals foresight without commitment
- Prevents future teams from assuming "this was never considered"
- Preserves optionality for governance decisions
---
## Service Relationship Diagram
```
Internet
NPMplus (Reverse Proxy + SSL)
├─→ sankofa.nexus → Sankofa Portal
│ └─→ Corporate Brand / Product Website
│ └─→ ⚠️ Currently: Login-gated
├─→ phoenix.sankofa.nexus → Phoenix API
│ └─→ Cloud Control Plane (API-first)
│ └─→ Operator-facing only
├─→ explorer.d-bis.org → SolaceScanScout
│ └─→ Public Block Explorer (ChainID 138)
│ └─→ No auth required
└─→ blockscout.defi-oracle.io → Generic Blockscout
└─→ Reference instance (not canonical)
Backend Services:
├─→ Keycloak (Authentication) - VMID 7802
└─→ PostgreSQL (Database) - VMID 7803
```
---
## Deployment Status
### Active Services
| Service | Domain | VMID | IP | Port | Status | Public Access |
|---------|--------|------|-----|------|--------|---------------|
| **Phoenix API** | phoenix.sankofa.nexus | 7800 | 192.168.11.50 | 4000 | ✅ Active | Authenticated |
| **Sankofa Portal** | sankofa.nexus | 7801 | 192.168.11.51 | 3000 | ✅ Active | Partially Public |
| **SolaceScanScout** | explorer.d-bis.org | 5000 | 192.168.11.140 | 80/4000 | ✅ Active | Public |
| **Blockscout** | blockscout.defi-oracle.io | ⚠️ TBD | ⚠️ TBD | ⚠️ TBD | ⚠️ Separate | Public |
---
## Brand/Product Relationship Context
**Sankofa** = Company/Brand (like Microsoft, Google, Amazon)
**Phoenix** = Cloud Platform/Product (like Azure, GCP, AWS)
**Sankofa Phoenix** = Complete Product (like Microsoft Azure, Google Cloud Platform, Amazon Web Services)
- **sankofa.nexus** = Company website (like Microsoft.com)
- **phoenix.sankofa.nexus** = Cloud platform portal (like Azure Portal)
- **explorer.d-bis.org** = Blockchain explorer (like Etherscan)
- **blockscout.defi-oracle.io** = Generic explorer instance
---
**Last Updated:** 2026-01-20
**Review Status:** Authoritative alignment checkpoint

View File

@@ -1,11 +1,13 @@
# Network Architecture - Enterprise Orchestration Plan
**Navigation:** [Home](/docs/01-getting-started/README.md) > [Architecture](/docs/01-getting-started/README.md) > Network Architecture
**Navigation:** [Home](../01-getting-started/README.md) > [Architecture](README.md) > Network Architecture
**Last Updated:** 2025-01-20
**Document Version:** 2.0
**Related:** [PHYSICAL_HARDWARE_INVENTORY.md](PHYSICAL_HARDWARE_INVENTORY.md) | [DOMAIN_STRUCTURE.md](DOMAIN_STRUCTURE.md) | [ORCHESTRATION_DEPLOYMENT_GUIDE.md](ORCHESTRATION_DEPLOYMENT_GUIDE.md) | [11-references/NETWORK_CONFIGURATION_MASTER.md](../11-references/NETWORK_CONFIGURATION_MASTER.md) | **Runbooks & VLAN:** [03-deployment/OPERATIONAL_RUNBOOKS.md](../03-deployment/OPERATIONAL_RUNBOOKS.md) (Phase 4, VLAN), [03-deployment/MISSING_CONTAINERS_LIST.md](../03-deployment/MISSING_CONTAINERS_LIST.md), [04-configuration/UDM_PRO_FIREWALL_MANUAL_CONFIGURATION.md](../04-configuration/UDM_PRO_FIREWALL_MANUAL_CONFIGURATION.md)
**Last Updated:** 2026-02-05
**Document Version:** 2.1
**Status:** 🟢 Active Documentation
**Project:** Sankofa / Phoenix / PanTel · ChainID 138 · Proxmox + Cloudflare Zero Trust + Dual ISP + 6×/28
**Project:** Sankofa / Phoenix / PanTel · ChainID 138 · Proxmox + Cloudflare DNS + NPMplus (edge: UDM Pro; Fastly or direct to 76.53.10.36)
---
@@ -21,6 +23,70 @@ This document defines the complete enterprise-grade network architecture for the
---
## Architecture Diagrams
### Network Topology (High Level)
```mermaid
graph TB
Internet[Internet]
CF[Cloudflare Zero Trust]
UDM[UDM Pro 76.53.10.34]
NPM[NPMplus 192.168.11.167]
ES1[ES216G-1 Core]
ES2[ES216G-2 Compute]
ML[ML110 192.168.11.10]
R1[R630-01 192.168.11.11]
R2[R630-02 192.168.11.12]
Internet --> CF
CF --> UDM
UDM --> NPM
NPM --> ES1
ES1 --> ES2
ES2 --> ML
ES2 --> R1
ES2 --> R2
```
### VLAN Architecture (Selected VLANs)
```mermaid
graph TD
V11[VLAN 11: MGMT-LAN<br/>192.168.11.0/24]
V110[VLAN 110: BESU-VAL<br/>10.110.0.0/24]
V111[VLAN 111: BESU-SEN<br/>10.111.0.0/24]
V112[VLAN 112: BESU-RPC<br/>10.112.0.0/24]
V132[VLAN 132: CCIP-COMMIT<br/>10.132.0.0/24]
V133[VLAN 133: CCIP-EXEC<br/>10.133.0.0/24]
V134[VLAN 134: CCIP-RMN<br/>10.134.0.0/24]
V11 --> V110
V11 --> V111
V11 --> V112
V11 --> V132
V11 --> V133
V11 --> V134
```
See [VLAN Set (Authoritative)](#31-vlan-set-authoritative) below for the full table.
### Proxmox Cluster (Nodes)
```mermaid
graph LR
ML[ml110 192.168.11.10]
R1[r630-01 .11]
R2[r630-02 .12]
R3[r630-03 .13]
R4[r630-04 .14]
ML --- R1
ML --- R2
R1 --- R2
R1 --- R3
R2 --- R4
```
---
## Core Principles
1. **No public IPs on Proxmox hosts or LXCs/VMs** (default)
@@ -76,10 +142,12 @@ This document defines the complete enterprise-grade network architecture for the
| **Gateway** | `76.53.10.33` | ✅ Active |
| **Usable Range** | `76.53.10.3376.53.10.46` | ✅ In Use |
| **Broadcast** | `76.53.10.47` | - |
| **ER605 WAN1 IP** | `76.53.10.34` (router interface) | ✅ Active |
| **UDM Pro (edge)** | `76.53.10.34` (replaced ER605) | ✅ Active |
| **Available IPs** | 13 (76.53.10.35-46, excluding .34) | ✅ Available |
### Public Blocks #2#6 (Placeholders - To Be Configured)
### Public Blocks #2#6 (Reserved - To Be Configured)
> **Status:** Blocks #2#6 are reserved. Document actual network/gateway/usable range when assigned by provider, or keep as placeholders until CCIP/Sankofa/Sovereign egress planning is finalized. See [MASTER_PLAN.md](../00-meta/MASTER_PLAN.md) §3.1.
| Block | Network | Gateway | Usable Range | Broadcast | Designated Use |
|-------|--------|---------|--------------|-----------|----------------|
@@ -197,22 +265,15 @@ This yields **provable separation**, allowlisting, and incident scoping.
---
## 6. Cloudflare Zero Trust Orchestration
## 6. Public Edge: Fastly or Direct to NPMplus
### 6.1 cloudflared Gateway Pattern
### 6.1 Fastly or Direct to NPMplus (Primary Public Path)
Run **2 cloudflared LXCs** for redundancy:
**Public ingress** is **Fastly** (Option A) or **DNS direct to 76.53.10.36** (Option C). Both flow through **UDM Pro** port forward to **NPMplus** (VMID 10233 at 192.168.11.167). Cloudflare Tunnel is **deprecated** for public access (502 errors); Cloudflare DNS is retained for all public hostnames.
- `cloudflared-1` on ML110
- `cloudflared-2` on an R630
Both run tunnels for:
- Blockscout
- FireFly
- Gitea
- Internal admin dashboards (Grafana) behind Cloudflare Access
**Keep Proxmox UI LAN-only**; if needed, publish via Cloudflare Access with strict posture/MFA.
- **Flow:** Internet → Cloudflare DNS → Fastly or 76.53.10.36 → UDM Pro (76.53.10.36:80/443) → NPMplus → internal services (Blockscout, RPC, DBIS, MIM4U, etc.).
- **Pre-requisite:** Verify 76.53.10.36:80 and :443 are open from the internet; see [05-network/EDGE_PORT_VERIFICATION_RUNBOOK.md](../05-network/EDGE_PORT_VERIFICATION_RUNBOOK.md). If closed (e.g. Spectrum filtering), use Option B (tunnel or VPS origin).
- **Keep Proxmox UI LAN-only**; if needed, publish via Cloudflare Access or VPN with strict posture/MFA.
---
@@ -220,24 +281,25 @@ Both run tunnels for:
| VMID Range | Domain / Subdomain | VLAN Name | VLAN ID | Private Subnet (GW .1) | Public IP (Edge VIP / NAT) |
|-----------:|-------------------|-----------|--------:|------------------------|---------------------------|
| **EDGE** | ER605 WAN1 (Primary) | WAN1 | — | — | **76.53.10.34** *(router WAN IP)* |
| **EDGE** | UDM Pro (replaced ER605) | WAN | — | — | **76.53.10.34** *(edge)* |
| **EDGE** | Spectrum ISP Gateway | — | — | — | **76.53.10.33** *(ISP gateway)* |
| 10001499 | **Besu** Validators | BESU-VAL | 110 | 10.110.0.0/24 | **None** (no inbound; tunnel/VPN only) |
| 15002499 | **Besu** Sentries | BESU-SEN | 111 | 10.111.0.0/24 | **None** *(optional later via NAT pool)* |
| 25003499 | **Besu** RPC / Gateways | BESU-RPC | 112 | 10.112.0.0/24 | **76.53.10.36** *(Reserved edge VIP for emergency RPC only; primary is Cloudflare Tunnel)* |
| 25003499 | **Besu** RPC / Gateways | BESU-RPC | 112 | 10.112.0.0/24 | **Via NPMplus** *(Fastly or direct to 76.53.10.36); Alltra/HYBX via 76.53.10.38 or 76.53.10.42)* |
| 35004299 | **Besu** Archive/Snapshots/Mirrors/Telemetry | BESU-INFRA | 113 | 10.113.0.0/24 | None |
| 43004999 | **Besu** Reserved expansion | BESU-RES | 114 | 10.114.0.0/24 | None |
| 50005099 | **Blockscout** Explorer/Indexing | BLOCKSCOUT | 120 | 10.120.0.0/24 | **76.53.10.35** *(Reserved edge VIP for emergency UI only; primary is Cloudflare Tunnel)* |
| 52005299 | **Cacti** Interop middleware | CACTI | 121 | 10.121.0.0/24 | None *(publish via Cloudflare Tunnel if needed)* |
| 50005099 | **Blockscout** Explorer/Indexing | BLOCKSCOUT | 120 | 10.120.0.0/24 | **Via NPMplus** *(Fastly or direct to 76.53.10.36)* |
| 52005299 | **Cacti** Interop middleware | CACTI | 121 | 10.121.0.0/24 | None *(publish via NPMplus/Fastly if needed)* |
| 54005401 | **CCIP** Ops/Admin | CCIP-OPS | 130 | 10.130.0.0/24 | None *(Cloudflare Access / VPN only)* |
| 54025403 | **CCIP** Monitoring/Telemetry | CCIP-MON | 131 | 10.131.0.0/24 | None *(optionally publish dashboards via Cloudflare Access)* |
| 54105425 | **CCIP** Commit-role oracle nodes (16) | CCIP-COMMIT | 132 | 10.132.0.0/24 | **Egress NAT: Block #2** |
| 54405455 | **CCIP** Execute-role oracle nodes (16) | CCIP-EXEC | 133 | 10.133.0.0/24 | **Egress NAT: Block #3** |
| 54705476 | **CCIP** RMN nodes (7) | CCIP-RMN | 134 | 10.134.0.0/24 | **Egress NAT: Block #4** |
| 54805599 | **CCIP** Reserved expansion | CCIP-RES | 135 | 10.135.0.0/24 | None |
| 60006099 | **Fabric** Enterprise contracts | FABRIC | 140 | 10.140.0.0/24 | None *(publish via Cloudflare Tunnel if required)* |
| 62006299 | **FireFly** Workflow/orchestration | FIREFLY | 141 | 10.141.0.0/24 | **76.53.10.37** *(Reserved edge VIP if ever needed; primary is Cloudflare Tunnel)* |
| 64007399 | **Indy** Identity layer | INDY | 150 | 10.150.0.0/24 | **76.53.10.39** *(Reserved edge VIP for DID endpoints if required; primary is Cloudflare Tunnel)* |
| 60006099 | **Fabric** Enterprise contracts | FABRIC | 140 | 10.140.0.0/24 | None *(publish via NPMplus/Fastly if required)* |
| 62006299 | **FireFly** Workflow/orchestration | FIREFLY | 141 | 10.141.0.0/24 | **76.53.10.37** *(Reserved edge VIP if ever needed; primary via NPMplus)* |
| 64007399 | **Indy** Identity layer | INDY | 150 | 10.150.0.0/24 | **76.53.10.39** *(Reserved edge VIP for DID endpoints if required; primary via NPMplus)* |
| 10235 | **NPMplus Alltra/HYBX** | MGMT-LAN | 11 | 192.168.11.0/24 | **76.53.10.38** *(port forward 80/81/443); 76.53.10.42 designated; see [NPMPLUS_ALLTRA_HYBX_MASTER_PLAN.md](../04-configuration/NPMPLUS_ALLTRA_HYBX_MASTER_PLAN.md))* |
| 78008999 | **Sankofa / Phoenix / PanTel** Service + Cloud + Telecom | SANKOFA-SVC | 160 | 10.160.0.0/22 | **Egress NAT: Block #5** |
| 1000010999 | **Phoenix Sovereign Cloud Band** SMOM tenant | PHX-SOV-SMOM | 200 | 10.200.0.0/20 | **Egress NAT: Block #6** |
| 1100011999 | **Phoenix Sovereign Cloud Band** ICCC tenant | PHX-SOV-ICCC | 201 | 10.201.0.0/20 | **Egress NAT: Block #6** |
@@ -256,12 +318,11 @@ Both run tunnels for:
- CCIP Ops/Admin (VLAN 130)
- CCIP Monitoring (VLAN 131)
2. **Cloudflare Tunnel (Primary)**
- Blockscout (VLAN 120) - Emergency VIP: 76.53.10.35
- Besu RPC (VLAN 112) - Emergency VIP: 76.53.10.36
- FireFly (VLAN 141) - Emergency VIP: 76.53.10.37
- Indy (VLAN 150) - Emergency VIP: 76.53.10.39
- Sankofa/Phoenix/PanTel (VLAN 160) - Emergency VIP: 76.53.10.38
2. **Fastly or Direct to NPMplus (Primary)**
- All public services route through NPMplus (VMID 10233) at 192.168.11.167
- Public origin: 76.53.10.36 (UDM Pro port forwarding to NPMplus)
- Blockscout (VLAN 120), Besu RPC (VLAN 112), FireFly (VLAN 141), Indy (VLAN 150), Sankofa/Phoenix/PanTel (VLAN 160) - Via NPMplus
- DNS: Cloudflare. Edge: Fastly (Option A) or direct to 76.53.10.36 (Option C). Tunnel deprecated for public ingress.
3. **Role-Based Egress NAT (Allowlistable)**
- CCIP Commit (VLAN 132) → Block #2
@@ -293,7 +354,7 @@ Both run tunnels for:
- VLAN 11: 192.168.11.0/24 (legacy mgmt)
- All other VLANs: 10.x.0.0/24 or /20 or /22 (VLAN ID maps to second octet)
- **Public IPs:** 6× /28 blocks with role-based NAT pools
- **All public access** should route through Cloudflare Tunnel for security
- **All public access** routes through NPMplus (Fastly or direct to 76.53.10.36) for security and stability
### 9.4 VLAN Tagging
- All VLANs are tagged on the Proxmox bridge
@@ -309,7 +370,7 @@ This architecture should be reflected in:
- `config/proxmox.conf` - VMID ranges
- Proxmox bridge configuration (VLAN-aware mode)
- ER605 router configuration (NAT pools, routing)
- Cloudflare Tunnel configuration
- Fastly or direct-to-NPMplus configuration (see 05-network routing docs)
- ES216G switch configuration (VLAN trunks)
---
@@ -331,15 +392,15 @@ This architecture should be reflected in:
- **[ORCHESTRATION_DEPLOYMENT_GUIDE.md](ORCHESTRATION_DEPLOYMENT_GUIDE.md)** ⭐⭐⭐ - Enterprise deployment orchestration guide
- **[VMID_ALLOCATION_FINAL.md](VMID_ALLOCATION_FINAL.md)** ⭐⭐⭐ - VMID allocation registry
- **[DOMAIN_STRUCTURE.md](DOMAIN_STRUCTURE.md)** ⭐⭐ - Domain structure and DNS assignments
- **[HOSTNAME_MIGRATION_GUIDE.md](HOSTNAME_MIGRATION_GUIDE.md)** ⭐ - Hostname migration procedures
- **[DOMAIN_STRUCTURE.md](DOMAIN_STRUCTURE.md)** ⭐ - Domain and hostname structure
### Configuration Documents
- **[../04-configuration/ER605_ROUTER_CONFIGURATION.md](/docs/04-configuration/ER605_ROUTER_CONFIGURATION.md)** - Router configuration
- **[../04-configuration/cloudflare/CLOUDFLARE_ZERO_TRUST_GUIDE.md](../04-configuration/cloudflare/CLOUDFLARE_ZERO_TRUST_GUIDE.md)** - Cloudflare Zero Trust setup
- **[../05-network/CLOUDFLARE_TUNNEL_ROUTING_ARCHITECTURE.md](../05-network/CLOUDFLARE_TUNNEL_ROUTING_ARCHITECTURE.md)** - Cloudflare tunnel routing
- **[../05-network/CLOUDFLARE_ROUTING_MASTER.md](../05-network/CLOUDFLARE_ROUTING_MASTER.md)** - Fastly/Direct for web; Option B (tunnel) for RPC
### Deployment Documents
- **[../03-deployment/ORCHESTRATION_DEPLOYMENT_GUIDE.md](../03-deployment/ORCHESTRATION_DEPLOYMENT_GUIDE.md)** - Deployment orchestration
- **[ORCHESTRATION_DEPLOYMENT_GUIDE.md](ORCHESTRATION_DEPLOYMENT_GUIDE.md)** - Deployment orchestration (this directory)
- **[../07-ccip/CCIP_DEPLOYMENT_SPEC.md](../07-ccip/CCIP_DEPLOYMENT_SPEC.md)** - CCIP deployment specification
---

View File

@@ -0,0 +1,244 @@
# Non-Goals — Sankofa Phoenix
**Last Updated:** 2026-01-31
**Document Version:** 1.0
**Status:** Active Documentation
---
_Last reviewed: 2026-01-20_
_Status: Explicit Non-Goals (What We Are NOT Building)_
---
## Purpose
This document explicitly states **what Sankofa Phoenix is NOT intended to be**, to prevent scope creep, accidental commitments, and architectural drift.
**Key Principle:** Explicit non-goals prevent accidental lock-in and preserve optionality.
---
## Explicit Non-Goals
### 1. Phoenix is NOT a Public Marketing Site
**What Phoenix Is:**
- Cloud infrastructure control plane
- Operator-facing API and management interface
- Sovereign-grade CSP platform
**What Phoenix Is NOT:**
- Public brochure website
- Marketing landing page
- Customer-facing product showcase
**Why This Matters:**
- Prevents accidental public exposure of control plane
- Maintains clear separation of concerns
- Preserves operator-focused architecture
**Flexibility:**
- Does not preclude future public-facing features
- Does not prevent delegated UI development
- Does not restrict API evolution
---
### 2. Sankofa Portal is NOT Solely an Internal Tool
**What Sankofa Portal Is:**
- Corporate brand presence
- Entry point to Phoenix services
- Sovereign identity messaging
**What Sankofa Portal Is NOT:**
- Exclusively internal tool
- Permanently gated system
- Marketing-only site
**Why This Matters:**
- Preserves optionality for public/private split
- Allows evolution of access patterns
- Maintains brand presence flexibility
**Current State:**
- Currently login-gated
- May evolve to include public content
- Decision point remains open
---
### 3. Explorer is NOT Coupled to Portal Authentication
**What Explorer Is:**
- Public blockchain transparency layer
- Independent infrastructure
- Settlement inspection tool
**What Explorer Is NOT:**
- Gated behind portal auth
- Dependent on Phoenix services
- Part of control plane
**Why This Matters:**
- Maintains public transparency
- Preserves independence
- Prevents accidental coupling
**Flexibility:**
- May evolve branding
- May add optional features
- Remains independent from portal auth
---
### 4. We Are NOT Building "One Diagram to Rule Them All"
**What We Have:**
- Multiple intent documents
- Service-specific descriptions
- Illustrative diagrams (when needed)
**What We Are NOT Building:**
- Single, final architecture diagram
- Comprehensive flow diagrams
- Permanent topology maps
**Why This Matters:**
- Diagrams create accidental lock-in
- Multiple small diagrams preserve flexibility
- Evolution remains cheap
**Approach:**
- One diagram per intent (when needed)
- Time-scoped ("As of Q3 2026")
- Labeled "Illustrative"
---
### 5. We Are NOT Locking Implementation to Domain Structure
**What We Have:**
- Descriptive domain names
- Clear service roles
- Flexible deployment
**What We Are NOT Doing:**
- Hard-coding domain structure in code
- Mandating DNS-based architecture
- Creating "security by DNS" decisions
**Why This Matters:**
- Preserves deployment flexibility
- Allows infrastructure evolution
- Prevents accidental constraints
---
### 6. We Are NOT Creating Immutable Governance Rules
**What We Have:**
- Intent documents
- Policy boundaries
- Open decision points
**What We Are NOT Creating:**
- Permanent governance contracts
- Unchangeable rules
- Locked compliance mappings
**Why This Matters:**
- Governance can evolve
- Policies can adjust
- Compliance can be mapped as needed
---
### 7. We Are NOT Forcing Premature Splits
**What We Have:**
- Possible future evolutions documented
- Open decision points
- Flexible architecture
**What We Are NOT Doing:**
- Forcing `www` vs `portal` split
- Mandating Phoenix UI vs API-only
- Requiring explorer branding alignment
**Why This Matters:**
- Avoids premature optimization
- Preserves optionality
- Allows natural evolution
---
### 8. We Are NOT Encoding Technology Choices in Names
**What We Use:**
- Role-based names ("Phoenix Cloud Services")
- Purpose-based names ("SolaceScanScout")
- Function-based names ("ChainID 138 Explorer")
**What We Avoid:**
- Technology-encoded names
- Implementation-locked names
- Jurisdiction-permanent names
**Why This Matters:**
- Technology can evolve
- Implementation can change
- Jurisdictional scope can adjust
---
## What This Document Does NOT Mean
This document does **not** mean:
- ❌ We will never build public Phoenix features
- ❌ Sankofa Portal must remain gated forever
- ❌ Explorer can never integrate with other services
- ❌ We cannot create architecture diagrams
- ❌ Domain structure cannot evolve
- ❌ Governance cannot be formalized
- ❌ Splits cannot happen when needed
- ❌ Names cannot be refined
**What It Means:**
- We are **not committing** to these things now
- We are **preserving optionality** for future decisions
- We are **avoiding premature lock-in**
---
## Relationship to Other Documents
**Complements:**
- `ARCHITECTURAL_INTENT.md` — What we intend to build
- `EXPECTED_WEB_CONTENT.md` — What each service should provide
- `BRAND_RELATIONSHIP.md` — Brand/product structure
**Together They:**
- Define intent without constraining implementation
- Preserve optionality while providing clarity
- Enable evolution without violating doctrine
---
## Review and Evolution
**Review Cadence:** As needed, when scope questions arise
**Evolution Process:**
- Non-goals can be refined
- New non-goals can be added
- Goals can be promoted from non-goals (with explicit decision)
**Authority:** This document reflects explicit non-commitments, not permanent restrictions.
---
**Last Updated:** 2026-01-20
**Status:** Explicit Non-Goals (Preserves Optionality)

View File

@@ -169,7 +169,7 @@ Once VLANs are active, assign:
| Execute | 133 | 10.133.0.0/24 |
| RMN | 134 | 10.134.0.0/24 |
> **Interim Plan:** While still on the flat LAN, you can keep your interim plan (192.168.11.170+ block) and migrate later by VLAN cutover.
> **Interim Plan:** While still on the flat LAN, use 192.168.11.170-212 (cleared 2026-02-01). Migrate to VLANs when ready.
### Egress NAT Mapping (Public blocks placeholder)
@@ -177,7 +177,7 @@ Once VLANs are active, assign:
- Execute VLAN (10.133.0.0/24) → **Block #3** `<PUBLIC_BLOCK_3>/28`
- RMN VLAN (10.134.0.0/24) → **Block #4** `<PUBLIC_BLOCK_4>/28`
See **[CCIP_DEPLOYMENT_SPEC.md](CCIP_DEPLOYMENT_SPEC.md)** for complete specification.
See **[CCIP_DEPLOYMENT_SPEC.md](../07-ccip/CCIP_DEPLOYMENT_SPEC.md)** for complete specification.
---
@@ -257,9 +257,9 @@ flowchart TD
### Deployment Operations
- **[VALIDATED_SET_DEPLOYMENT_GUIDE.md](VALIDATED_SET_DEPLOYMENT_GUIDE.md)** - Validated set deployment
- **[CCIP_DEPLOYMENT_SPEC.md](CCIP_DEPLOYMENT_SPEC.md)** - CCIP fleet deployment
- **[DEPLOYMENT_READINESS.md](DEPLOYMENT_READINESS.md)** - Pre-deployment validation
- **[VALIDATED_SET_DEPLOYMENT_GUIDE.md](../03-deployment/VALIDATED_SET_DEPLOYMENT_GUIDE.md)** - Validated set deployment
- **[CCIP_DEPLOYMENT_SPEC.md](../07-ccip/CCIP_DEPLOYMENT_SPEC.md)** - CCIP fleet deployment
- **[DEPLOYMENT_READINESS.md](../03-deployment/DEPLOYMENT_READINESS.md)** - Pre-deployment validation
### Troubleshooting
@@ -333,7 +333,7 @@ Then we can produce:
- **[../10-best-practices/IMPLEMENTATION_CHECKLIST.md](../10-best-practices/IMPLEMENTATION_CHECKLIST.md)** - Implementation checklist
### Reference
- **[MASTER_INDEX.md](MASTER_INDEX.md)** - Complete documentation index
- **[MASTER_INDEX.md](../MASTER_INDEX.md)** - Complete documentation index
---

View File

@@ -0,0 +1,556 @@
# Phoenix System Boundary Statement
**System Name:** Phoenix Core
**System Version:** 1.0.0
**Classification:** Unclassified
**Document Version:** 1.0.0
**Last Updated:** 2026-01-09
**Status:** Active Documentation
**Author:** Infrastructure Team
---
## 1. System Identification
### 1.1 System Name and Acronym
**System Name:** Phoenix Core
**System Acronym:** PHX-CORE
**System Aliases:** Phoenix, Phoenix v1.0
### 1.2 System Purpose
Phoenix Core provides a secure, scalable application platform supporting:
- Authentication and authorization services (Keycloak)
- Application programming interface (GraphQL API)
- Web-based user interface (Portal)
- Data persistence layer (PostgreSQL)
Phoenix Core serves as the foundation for future service migrations and expansion within the Sankofa infrastructure ecosystem.
### 1.3 System Owner and Point of Contact
**System Owner:** Infrastructure Team
**Technical Contact:** Infrastructure Team
**Security Contact:** Infrastructure Team
---
## 2. System Boundary Definition
### 2.1 Components Included in System Boundary
The Phoenix Core system boundary includes the following components:
#### 2.1.1 Computing Resources
**VMID Range:** 8600-8699 (Phoenix Core allocation)
| Component | VMID | IP Address | Function |
|-----------|------|------------|----------|
| Phoenix API | 8600 | 10.160.0.10 | Application API server (GraphQL) |
| Phoenix Portal | 8601 | 10.160.0.11 | Web-based user interface |
| Phoenix Keycloak | 8602 | 10.160.0.12 | Identity and access management |
| Phoenix PostgreSQL | 8603 | 10.160.0.13 | Database server |
**Physical Host:** r630-01 (192.168.11.11) - Proxmox VE hypervisor
#### 2.1.2 Network Infrastructure
**VLAN:** 160 (SANKOFA-SVC)
**Subnet:** 10.160.0.0/22
**Gateway:** 10.160.0.1
**Network Type:** Private (RFC 1918)
**Network Segments:**
- Internal service-to-service communication (10.160.0.0/22)
- Management network connectivity (192.168.11.0/24 via ER605)
- Egress NAT connectivity (via Block #5 when assigned)
#### 2.1.3 Storage Infrastructure
**Storage Type:** Proxmox thin-provisioned LVM (thin1)
**Allocation:**
- VMID 8600: 50GB
- VMID 8601: 50GB
- VMID 8602: 30GB
- VMID 8603: 50GB
**Total Allocated:** 180GB
#### 2.1.4 Software Components
**Operating System:** Ubuntu 22.04 LTS (container base)
**Application Stack:**
- Node.js 18 (API and Portal)
- PostgreSQL 16 (Database)
- Keycloak 24.0.0 (Identity Provider)
- Next.js (Portal framework)
### 2.2 Components Excluded from System Boundary
The following components are **explicitly excluded** from the Phoenix Core system boundary:
#### 2.2.1 Legacy Services
- **VMIDs 7800-7803 (Legacy Sankofa Services):**
- sankofa-api-1 (7800, 192.168.11.13)
- sankofa-portal-1 (7801, 192.168.11.16)
- sankofa-keycloak-1 (7802, 192.168.11.17)
- Legacy PostgreSQL (if exists)
**Rationale:** Legacy services operate on a separate network (192.168.11.x) and are not part of the Phoenix Core system.
#### 2.2.2 DBIS Core Services
- **VMIDs 10100-10151:** DBIS Core services (PostgreSQL, Redis, API, Frontend)
- **Location:** ml110 (192.168.11.10)
- **Network:** 192.168.11.x
**Rationale:** DBIS Core services are separate systems with distinct purposes and will be migrated to Phoenix in future phases.
#### 2.2.3 Blockchain Services
- **VMIDs 1000-1004:** Besu Validators
- **VMIDs 1500-1503:** Besu Sentries
- **VMIDs 2500-2502:** Besu RPC Nodes
- **VMIDs 2400-2402:** RPC Translator Services
**Rationale:** Blockchain services are separate systems with distinct purposes and security requirements.
#### 2.2.4 Infrastructure Services
- **VMID 102:** Cloudflare Tunnel
- **VMID 105:** Nginx Proxy Manager
- **VMID 130:** Monitoring Stack
**Rationale:** Infrastructure services are shared resources used by multiple systems, not part of Phoenix Core.
#### 2.2.5 Network Equipment
- **ER605 Router:** Network gateway and firewall
- **Network Switches:** Layer 2/3 network infrastructure
- **Proxmox Host:** Hypervisor infrastructure
**Rationale:** Network equipment is shared infrastructure, not part of the Phoenix Core application system.
---
## 3. System Architecture
### 3.1 Network Topology
```mermaid
graph TB
subgraph MgmtVLAN["Management VLAN (11)<br/>192.168.11.0/24"]
ProxmoxHost["Proxmox Host<br/>r630-01<br/>192.168.11.11"]
end
subgraph PhoenixVLAN["Phoenix VLAN (160)<br/>10.160.0.0/22"]
API["Phoenix API<br/>VMID 8600<br/>10.160.0.10:4000"]
Portal["Phoenix Portal<br/>VMID 8601<br/>10.160.0.11:3000"]
Keycloak["Phoenix Keycloak<br/>VMID 8602<br/>10.160.0.12:8080"]
PostgreSQL["Phoenix PostgreSQL<br/>VMID 8603<br/>10.160.0.13:5432"]
end
subgraph External["External Access"]
DNS["DNS<br/>phoenix.sankofa.nexus"]
Cloudflare["Cloudflare Tunnel<br/>(Future)"]
end
ProxmoxHost -->|Hosts| PhoenixVLAN
Portal -->|HTTP/HTTPS| API
Portal -->|OAuth/OIDC| Keycloak
API -->|OAuth/OIDC| Keycloak
API -->|SQL| PostgreSQL
Keycloak -->|SQL| PostgreSQL
External -->|Resolves to| PhoenixVLAN
```
### 3.2 Data Flow
#### 3.2.1 External Ingress (Future)
**Path:** External → DNS → NAT Gateway → Phoenix Services
1. External client resolves `api.phoenix.sankofa.nexus` via DNS
2. DNS returns private IP (10.160.0.10) or NAT gateway IP (when configured)
3. Traffic routes through ER605 NAT gateway
4. ER605 routes to Phoenix VLAN 160
5. Traffic reaches Phoenix API container
**Current State:** External ingress not yet configured. DNS records exist but NAT routing pending.
#### 3.2.2 Internal Communication
**Path:** Service-to-Service within VLAN 160
1. Portal (10.160.0.11) → API (10.160.0.10): GraphQL API calls
2. Portal (10.160.0.11) → Keycloak (10.160.0.12): Authentication requests
3. API (10.160.0.10) → Keycloak (10.160.0.12): Token validation
4. API (10.160.0.10) → PostgreSQL (10.160.0.13): Database queries
5. Keycloak (10.160.0.12) → PostgreSQL (10.160.0.13): Database queries
**Security:** All internal communication is unencrypted (HTTP) within the private VLAN. TLS encryption recommended for production.
#### 3.2.3 Management Access
**Path:** Management VLAN → Phoenix VLAN
1. Administrator on 192.168.11.x → ER605 Router
2. ER605 routes to VLAN 160 (via firewall rules)
3. Traffic reaches Phoenix services
**Purpose:** Administrative access, monitoring, logging, troubleshooting.
#### 3.2.4 Egress
**Path:** Phoenix Services → Internet
1. Phoenix services require outbound connectivity (updates, external APIs)
2. Traffic routes through ER605
3. ER605 performs NAT via Block #5 (when assigned)
4. Traffic egresses to Internet
**Purpose:** Software updates, external API calls, external service dependencies.
---
## 4. Trust Boundaries
### 4.1 Trust Zones
#### Zone 1: Phoenix Internal (Highest Trust)
**Components:** VMIDs 8600-8603 within VLAN 160
**Trust Level:** High (same security domain)
**Communication:** Service-to-service within VLAN 160
**Security Controls:** Network segmentation, service authentication
#### Zone 2: Management Network (Administrative Trust)
**Components:** Management VLAN (192.168.11.0/24)
**Trust Level:** Medium (administrative access)
**Communication:** Management VLAN → Phoenix VLAN
**Security Controls:** Firewall rules, source IP restrictions, SSH authentication
#### Zone 3: External Network (Untrusted)
**Components:** Internet, external clients
**Trust Level:** Low (untrusted)
**Communication:** External → Phoenix (via NAT/DNS)
**Security Controls:** Firewall rules (deny by default), authentication, authorization, TLS encryption
### 4.2 Trust Boundary Crossings
**Crossings occur at:**
1. **ER605 Router (Management → Phoenix):**
- Source: Management VLAN (192.168.11.0/24)
- Destination: Phoenix VLAN (10.160.0.0/22)
- Controls: Firewall rules, source IP filtering
2. **ER605 Router (External → Phoenix):**
- Source: External/Internet
- Destination: Phoenix VLAN (10.160.0.0/22)
- Controls: Firewall rules (currently denied), future: NAT routing, TLS termination
3. **ER605 Router (Phoenix → External):**
- Source: Phoenix VLAN (10.160.0.0/22)
- Destination: Internet
- Controls: Egress NAT, firewall rules
---
## 5. Security Controls
### 5.1 Network Security
**Control:** Network Segmentation
**Implementation:** VLAN 160 isolation, firewall rules at ER605 router
**Purpose:** Separate Phoenix services from other systems
**Effectiveness:** High - VLAN isolation prevents unauthorized access
**Control:** Firewall Rules
**Implementation:** ER605 router firewall rules (see firewall rules document)
**Purpose:** Control access to Phoenix services
**Effectiveness:** Medium - Depends on rule configuration accuracy
**Control:** Private IP Addressing
**Implementation:** RFC 1918 private addresses (10.160.0.0/22)
**Purpose:** Prevent direct Internet access, enable NAT
**Effectiveness:** High - Private IPs are not routable on Internet
### 5.2 Access Control
**Control:** Keycloak Authentication
**Implementation:** Keycloak identity provider (VMID 8602)
**Purpose:** Centralized authentication and authorization
**Effectiveness:** High - Industry-standard identity provider
**Control:** Service Authentication
**Implementation:** OAuth 2.0 / OIDC tokens for API access
**Purpose:** Authenticate service-to-service communication
**Effectiveness:** Medium - Depends on proper token validation
**Control:** SSH Access Control
**Implementation:** SSH key authentication, root password
**Purpose:** Administrative access to containers
**Effectiveness:** Medium - SSH keys provide strong authentication
### 5.3 Data Protection
**Control:** Database Access Control
**Implementation:** PostgreSQL user authentication, role-based access
**Purpose:** Control database access
**Effectiveness:** Medium - Database users and passwords
**Control:** Data at Rest (Future)
**Implementation:** Encryption at rest (not currently implemented)
**Purpose:** Protect data if storage is compromised
**Effectiveness:** N/A - Not implemented
**Control:** Data in Transit (Future)
**Implementation:** TLS encryption for external access
**Purpose:** Protect data during transmission
**Effectiveness:** N/A - Not implemented (internal only currently)
### 5.4 Logging and Monitoring
**Control:** System Logs
**Implementation:** systemd journal, application logs
**Purpose:** Track system events and errors
**Effectiveness:** Medium - Logs available but not centralized
**Control:** Access Logs (Future)
**Implementation:** Application access logs, authentication logs
**Purpose:** Track user access and authentication events
**Effectiveness:** N/A - Not fully implemented
**Control:** Monitoring (Future)
**Implementation:** Prometheus, Grafana (if integrated)
**Purpose:** Monitor system health and performance
**Effectiveness:** N/A - Not implemented
---
## 6. Operational Environment
### 6.1 Physical Environment
**Location:** On-premises datacenter
**Hypervisor:** Proxmox VE (r630-01, 192.168.11.11)
**Hardware:** Dell R630 server
**Network Equipment:** ER605 router, managed switches
### 6.2 Virtual Environment
**Containerization:** LXC containers (unprivileged)
**OS Template:** Ubuntu 22.04 LTS
**Resource Allocation:**
- CPU: 12 cores total (2-4 cores per container)
- Memory: 12GB total (2-4GB per container)
- Storage: 180GB total (30-50GB per container)
### 6.3 Dependencies
**External Dependencies:**
- Internet connectivity (for software updates)
- DNS resolution (for external service calls)
- NTP servers (for time synchronization)
**Internal Dependencies:**
- ER605 router (for network routing and firewall)
- Proxmox host (for container execution)
- Storage infrastructure (thin1 LVM pool)
**Application Dependencies:**
- Node.js runtime (for API and Portal)
- PostgreSQL database (for data persistence)
- Keycloak identity provider (for authentication)
---
## 7. System Interfaces
### 7.1 External Interfaces
**Interface 1: HTTP/HTTPS API**
**Protocol:** HTTP (internal), HTTPS (future external)
**Port:** 4000 (API), 3000 (Portal), 8080 (Keycloak)
**Authentication:** OAuth 2.0 / OIDC tokens
**Status:** Internal only (external access pending)
**Interface 2: DNS**
**Protocol:** DNS
**Purpose:** Domain name resolution
**Records:** api.phoenix.sankofa.nexus, auth.phoenix.sankofa.nexus, portal.phoenix.sankofa.nexus
**Status:** Configured, pending NAT routing
### 7.2 Internal Interfaces
**Interface 3: Database**
**Protocol:** PostgreSQL protocol (TCP)
**Port:** 5432
**Authentication:** Username/password (md5)
**Access:** Service-to-service within VLAN 160
**Interface 4: Authentication**
**Protocol:** OAuth 2.0 / OIDC (HTTP)
**Port:** 8080
**Authentication:** Client credentials, user credentials
**Access:** Service-to-service and user-to-service
**Interface 5: Management**
**Protocol:** SSH
**Port:** 22
**Authentication:** SSH keys, password
**Access:** Management VLAN to Phoenix VLAN (admin only)
---
## 8. Compliance Considerations
### 8.1 Security Frameworks
**DoD RMF (Risk Management Framework):**
- Phoenix Core is designed with DoD RMF principles in mind
- System boundary clearly defined
- Security controls documented
- Risk assessment recommended before production use
**NIST Cybersecurity Framework:**
- Identify: System boundaries and assets defined
- Protect: Network segmentation, access controls implemented
- Detect: Logging available (monitoring recommended)
- Respond: Incident response procedures recommended
- Recover: Backup and recovery procedures recommended
### 8.2 Data Classification
**Data Types:**
- User authentication credentials (handled by Keycloak)
- Application data (stored in PostgreSQL)
- Session tokens (OAuth/OIDC)
**Classification:** Unclassified
**Handling:** Standard security practices apply
### 8.3 Compliance Gaps (Future Work)
**Recommended Enhancements:**
- TLS encryption for all external interfaces
- Encryption at rest for database
- Centralized logging and monitoring
- Regular security audits
- Penetration testing
- Backup and recovery procedures
- Incident response procedures
---
## 9. Risk Assessment Summary
### 9.1 Identified Risks
**Risk 1: Unencrypted Internal Communication**
**Likelihood:** High (current state)
**Impact:** Medium (within private VLAN)
**Mitigation:** Implement TLS for internal communication (recommended)
**Risk 2: No Encryption at Rest**
**Likelihood:** Medium (storage compromise)
**Impact:** High (data exposure)
**Mitigation:** Implement database encryption at rest (recommended)
**Risk 3: Limited Logging and Monitoring**
**Likelihood:** High (current state)
**Impact:** Medium (difficulty detecting issues)
**Mitigation:** Implement centralized logging and monitoring (recommended)
**Risk 4: Single Point of Failure (Database)**
**Likelihood:** Low (hardware failure)
**Impact:** High (complete system outage)
**Mitigation:** Implement database replication (recommended for production)
**Risk 5: External Access Not Yet Configured**
**Likelihood:** N/A (pending implementation)
**Impact:** N/A
**Mitigation:** Follow security best practices when implementing external access
### 9.2 Risk Acceptance
**Current State:** Phoenix Core is in initial deployment phase. Some security enhancements are deferred to future phases.
**Risk Acceptance:** Documented risks are accepted for initial deployment. Production deployment should address high-impact risks.
---
## 10. System Boundaries Diagram
```mermaid
graph TB
subgraph Boundary["Phoenix Core System Boundary"]
subgraph PhoenixVLAN["VLAN 160<br/>10.160.0.0/22"]
API["API<br/>8600"]
Portal["Portal<br/>8601"]
Keycloak["Keycloak<br/>8602"]
PostgreSQL["PostgreSQL<br/>8603"]
end
end
subgraph Excluded["Excluded from Boundary"]
Legacy["Legacy Services<br/>7800-7803<br/>192.168.11.x"]
DBIS["DBIS Core<br/>10100-10151<br/>192.168.11.x"]
Blockchain["Blockchain Services<br/>1000-2502<br/>192.168.11.x"]
Infrastructure["Infrastructure<br/>102, 105, 130<br/>192.168.11.x"]
end
subgraph External["External Systems"]
DNS["DNS<br/>Cloudflare"]
Internet["Internet"]
Mgmt["Management<br/>192.168.11.0/24"]
end
Boundary -->|Interfaces| External
Boundary -.->|Not Included| Excluded
```
---
## 11. Document Control
### 11.1 Version History
| Version | Date | Author | Changes |
|---------|------|--------|---------|
| 1.0.0 | 2026-01-09 | Infrastructure Team | Initial system boundary statement |
### 11.2 Review Schedule
- **Initial Review:** After deployment validation
- **Quarterly Reviews:** Every 3 months
- **Change-Driven Reviews:** When system boundary changes
### 11.3 Approval
**Document Status:** Draft
**Approval Status:** Pending
**Reviewers:** Infrastructure Team, Security Team
---
## 12. References
- **Network Architecture:** `docs/02-architecture/NETWORK_ARCHITECTURE.md`
- **Phoenix Deployment Runbook:** `docs/03-deployment/PHOENIX_DEPLOYMENT_RUNBOOK.md`
- **Phoenix Firewall Rules:** `docs/04-configuration/PHOENIX_VLAN160_FIREWALL_RULES.md`
- **Phoenix DNS Template:** `docs/04-configuration/PHOENIX_DNS_ZONE_TEMPLATE.md`
- **VMID Allocation:** `docs/02-architecture/VMID_ALLOCATION_FINAL.md`
---
**Last Updated:** 2026-01-09
**Document Status:** Draft
**Classification:** Unclassified
**Next Review:** After deployment validation

View File

@@ -0,0 +1,31 @@
# Physical Hardware Inventory
**Last Updated:** 2026-01-31
**Document Version:** 1.0
**Status:** Active Documentation
---
## Overview
This document is the placeholder for the physical hardware inventory (hosts, IPs, credentials, specifications). For current network configuration and IP assignments, see **[NETWORK_CONFIGURATION_MASTER.md](../11-references/NETWORK_CONFIGURATION_MASTER.md)**.
### Key Hosts (Summary)
| Host | IP | Role |
|------|-----|------|
| ml110 | 192.168.11.10 | Proxmox, Besu nodes |
| r630-01 | 192.168.11.11 | Infrastructure, RPC |
| r630-02 | 192.168.11.12 | Firefly, NPMplus secondary |
| UDM Pro (edge) | 76.53.10.34 | Edge router |
**See:** [NETWORK_CONFIGURATION_MASTER.md](../11-references/NETWORK_CONFIGURATION_MASTER.md), [NETWORK_ARCHITECTURE.md](NETWORK_ARCHITECTURE.md), [VMID_ALLOCATION_FINAL.md](VMID_ALLOCATION_FINAL.md).
---
## Related Documentation
- [NETWORK_ARCHITECTURE.md](NETWORK_ARCHITECTURE.md) - Network topology
- [NETWORK_CONFIGURATION_MASTER.md](../11-references/NETWORK_CONFIGURATION_MASTER.md) - IP and VMID reference
- [VMID_ALLOCATION_FINAL.md](VMID_ALLOCATION_FINAL.md) - VMID registry
- [MASTER_INDEX.md](../MASTER_INDEX.md) - Documentation index

View File

@@ -0,0 +1,124 @@
# Proxmox full HA cluster — current state and roadmap
**Last Updated:** 2026-01-31
**Document Version:** 1.0
**Status:** Active Documentation
---
**Last updated:** 2026-01-31
**Status:** Cluster present; full HA not implemented
---
## Short answer
**Yes — for production, this Proxmox setup should ideally be a full HA cluster.** Right now it is a **cluster** (shared config, quorum, live view) but **not** Proxmox HA. When you power down one R630 (e.g. for DIMM reseat), everything on that node stops and stays stopped until the node is back up; nothing is automatically restarted on another node.
---
## Current state vs full HA
| Aspect | Current | Full HA |
|--------|---------|---------|
| **Cluster** | Yes (3 nodes: ml110, r630-01, r630-02) | Same |
| **Quorum** | Yes (3 nodes) | Same |
| **Storage** | Local only (each node has its own disks) | Shared (Ceph or NFS) so any node can run any VM/container |
| **VM/container placement** | Pinned to one node; disk lives on that node | Disk on shared storage; can run on any node |
| **Node failure / maintenance** | All workloads on that node go down until the node returns | HA manager restarts those workloads on another node |
| **Manual migration** | Required to move a VM/container to another host | Optional; HA handles failover |
So today: **cluster = shared management and quorum, but no automatic failover and no shared storage.**
Ref: [PROXMOX_CLUSTER_ARCHITECTURE.md](./PROXMOX_CLUSTER_ARCHITECTURE.md) — “HA Mode: Active/Standby (manual)”, “No shared storage”, “Manual VM migration required”, “No automatic failover”.
---
## What full Proxmox HA would give you
- When a node is **powered down** (e.g. DIMM reseat) or **crashes**, the Proxmox HA manager would:
- Detect that the node is gone (or in maintenance).
- **Start** the HA-managed VMs/containers on another node that has access to the same (shared) storage.
- Planned maintenance (e.g. reseat DIMM B2) would mean: put node in maintenance → HA migrates/restarts resources on other nodes → you power down the server → no “all VMs on this host are gone until I power it back on”.
So **yes — it should be full HA** if you want automatic failover and no single-node dependency during maintenance or failures.
---
## Whats required for full HA
1. **Shared storage**
So every node can see the same VM/container disks:
- **Ceph** (recommended by Proxmox): replicated, distributed; needs multiple nodes and network.
- **NFS**: simpler (e.g. NAS or dedicated NFS server); single point of failure unless the NFS side is also HA.
- **Other**: ZFS over iSCSI, etc., depending on your hardware.
2. **Proxmox HA stack**
- **HA Manager** enabled in the cluster (Datacenter → Cluster → HA).
- **Quorum**: you already have 3 nodes, so quorum is satisfied (or use qdevice if you ever go to 2 nodes).
3. **HA resources**
- For each VM/container you want to fail over: add it as an **HA resource** (start/stop order, group, etc.).
- Those guests disks must be on **shared** storage, not local-only.
4. **Network**
- Same VLANs / connectivity so that when a VM/container starts on another node, it keeps the same IPs and reachability (e.g. same bridge/VLAN config on all nodes, as you already have).
---
## Practical path (high level)
1. **Design shared storage**
- Decide: Ceph (multi-node) vs NFS (simpler).
- Size it for existing + growth of VM/container disks.
2. **Introduce shared storage to the cluster**
- Add the storage in Proxmox (e.g. Ceph pool or NFS mount) so all three nodes see it.
3. **Migrate critical guests to shared storage**
- New VMs/containers on shared storage; optionally migrate existing ones (e.g. NPMplus 10233, RPC, Blockscout, etc.) from local to shared.
4. **Enable HA and add HA resources**
- Enable HA in the cluster.
- Add the critical VMs/containers as HA resources (with groups/order if needed).
5. **Test**
- Put one node in maintenance or power it off; confirm HA restarts the resources on another node and services stay up.
---
## How many R630s, and how much RAM per node?
### Number of Dell PowerEdge R630s
| Setup | Minimum R630s | Notes |
|-------|----------------|--------|
| **Proxmox HA + Ceph (hyper-converged)** | **3** | Proxmox and Ceph both need at least 3 nodes: quorum (majority) and Ceph replication (3 replicas). With 2 nodes, one failure = no quorum. |
| **Recommended for Ceph** | **4** | With 4 nodes, Ceph can recover to fully healthy after one node failure; with 3 it stays degraded until the node returns. |
| **Proxmox HA with NFS (no Ceph)** | **2** + qdevice | Possible with 2 R630s + NFS + qdevice; 3 nodes is simpler and more robust. |
**Answer:** **At least 3 R630s** for full HA with Ceph. **4 R630s** is better for Ceph recovery. (Your setup: ml110 + 2 R630s; adding a third R630 gives 3 Proxmox nodes for HA + Ceph.)
### RAM per R630
| Role | Minimum per node | Recommended |
|------|------------------|-------------|
| **Proxmox + HA only** (NFS, no Ceph) | 32 GB | 64128 GB |
| **Proxmox + Ceph (hyper-converged)** | 64 GB | **128256 GB** |
| **Ceph OSD** | — | **≥ 8 GiB per OSD** (Proxmox/Ceph recommendation) |
- **Minimum:** 64 GB per R630 for Ceph + a few VMs (Ceph recovery uses extra RAM).
- **Recommended:** 128256 GB per R630 for production (VMs + Ceph headroom).
- **Migration:** The 503 GB R630 (r630-01) is the source to migrate workload from; target is **128256 GB per server**. See [MIGRATE_503GB_R630_TO_128_256GB_SERVERS.md](../03-deployment/MIGRATE_503GB_R630_TO_128_256GB_SERVERS.md).
**Summary (R630s):** **3 or 4 R630s**, **at least 64 GB RAM per node**, **128256 GB recommended** for production HA + Ceph.
---
## Summary
- **Should this Proxmox be a full HA cluster?** **Yes**, for production and to avoid “losing” those VMs (in the sense of them being down) whenever a single node is powered off.
- **Current:** Cluster only; no shared storage; no Proxmox HA; manual migration and manual restart after maintenance.
- **Target:** Full HA = shared storage + HA manager + HA resources so that when you power down an R630 (e.g. for DIMM B2 reseat), critical VMs/containers are restarted on another node automatically.
See also: [PROXMOX_CLUSTER_ARCHITECTURE.md](./PROXMOX_CLUSTER_ARCHITECTURE.md) (current cluster and “Future Enhancements”), [NPMPLUS_HA_SETUP_GUIDE.md](../04-configuration/NPMPLUS_HA_SETUP_GUIDE.md) (NPMplus-level HA with Keepalived).

View File

@@ -1,5 +1,11 @@
# Architecture & Design
**Last Updated:** 2026-01-31
**Document Version:** 1.0
**Status:** Active Documentation
---
This directory contains core architecture and design documents.
## Documents

View File

@@ -0,0 +1,200 @@
# Sankofa Services - Service Descriptions
**Last Updated:** 2026-01-31
**Status:** Active Documentation
---
## Brand and Product Relationship
### Company and Product Analogy
**Sankofa** = Company/Brand (like Microsoft, Google, Amazon)
**Phoenix** = Cloud Platform/Product (like Azure, GCP, AWS)
**Sankofa Phoenix** = Complete Product Name (like Microsoft Azure, Google Cloud Platform, Amazon Web Services)
### Service Overview
This document describes the purpose and function of each service in the Sankofa Phoenix deployment.
---
## Services
### 1. Sankofa Portal (`sankofa.nexus`)
- **Description:** Company/Brand Website (like Microsoft.com, Google.com, Amazon.com)
- **Purpose:** Main corporate website for Sankofa
- **VMID:** 7801
- **IP:** 192.168.11.51
- **Port:** 3000
- **External Access:** https://sankofa.nexus, https://www.sankofa.nexus
**Details:**
- Next.js-based corporate website
- Main public-facing brand website
- Similar to Microsoft.com, Google.com, or Amazon.com
---
### 2. Phoenix API (`phoenix.sankofa.nexus`)
- **Description:** Cloud Platform Portal (like Azure Portal, GCP Console, AWS Console)
- **Purpose:** Cloud infrastructure management portal (API service)
- **VMID:** 7800
- **IP:** 192.168.11.50
- **Port:** 4000
- **External Access:** https://phoenix.sankofa.nexus, https://www.phoenix.sankofa.nexus
**Details:**
- GraphQL API service for Phoenix cloud platform
- Provides cloud infrastructure management capabilities
- Similar to Microsoft Azure Portal, Google Cloud Console, or AWS Management Console
- API endpoints:
- GraphQL: `/graphql`
- GraphQL WebSocket: `/graphql-ws`
- Health: `/health`
---
### 3. SolaceScanScout (Explorer)
- **Description:** Blockchain Explorer for ChainID 138
- **Purpose:** Block explorer service based on Blockscout
- **Status:** Separate service (not part of this deployment)
- **Chain ID:** 138
- **Technology:** Blockscout-based
**Details:**
- Block explorer for blockchain transactions on ChainID 138
- Provides transaction and block information
- Based on Blockscout explorer technology
- Similar to Etherscan or other blockchain explorers
- Not included in the current Sankofa Phoenix deployment cutover
---
### 4. Keycloak (Identity Management)
- **Description:** Identity and Access Management
- **Purpose:** Authentication and authorization service
- **VMID:** 7802
- **IP:** 192.168.11.52
- **Port:** 8080
- **Internal Access:** http://192.168.11.52:8080
**Details:**
- Single Sign-On (SSO) service
- User authentication and authorization
- Admin interface: `/admin`
- Health endpoint: `/health/ready`
---
### 5. PostgreSQL (Database)
- **Description:** Database Service
- **Purpose:** Data storage for all services
- **VMID:** 7803
- **IP:** 192.168.11.53
- **Port:** 5432
- **Internal Access:** 192.168.11.53:5432
**Details:**
- PostgreSQL 16 database
- Stores data for Keycloak, Phoenix API, and Sankofa Portal
- Internal access only (not exposed externally)
---
## Service Relationships
```
Internet
NPMplus (Reverse Proxy + SSL)
├─→ sankofa.nexus → Sankofa Portal (Company Website - like Microsoft.com)
├─→ phoenix.sankofa.nexus → Phoenix API (Cloud Platform - like Azure Portal)
└─→ SolaceScanScout (Block Explorer - Separate service)
Backend Services:
├─→ Keycloak (Authentication)
└─→ PostgreSQL (Database)
```
### Brand/Product Analogy:
- **Sankofa** = Microsoft (company/brand)
- **Phoenix** = Azure (cloud platform)
- **Sankofa Phoenix** = Microsoft Azure (complete product)
- **Sankofa Portal** = Microsoft.com (corporate website)
- **Phoenix Portal** = Azure Portal (cloud management console)
---
## Service Dependencies
- **Sankofa Portal** depends on:
- Phoenix API (for backend functionality)
- Keycloak (for authentication)
- **Phoenix API** depends on:
- PostgreSQL (for data storage)
- Keycloak (for authentication)
- **Keycloak** depends on:
- PostgreSQL (for user data storage)
---
### 6. Crypto.com OTC Integration (DBIS Core)
- **Description:** Institutional OTC trading via Crypto.com Exchange OTC 2.0 API
- **Purpose:** Request-for-Quote (RFQ), deal execution, settle-later tracking, FX price provider
- **Location:** `dbis_core/src/core/exchange/crypto-com-otc/`
- **API Path:** `/api/v1/crypto-com-otc` (on dbis-api.d-bis.org)
- **Status:** Optional - requires CRYPTO_COM_API_KEY and CRYPTO_COM_API_SECRET
**Details:**
- REST and WebSocket clients for Crypto.com OTC 2.0 API
- FX service integration for market price (when OTC quotes cached)
- Deal persistence to `otc_trades` table
- Settle-later limit and unsettled amount monitoring
- Rate limiting (1 req/s REST, 2 req/s WebSocket)
- Retry with exponential backoff
**Related:** [11-references/DBIS_CORE_API_REFERENCE.md](../11-references/DBIS_CORE_API_REFERENCE.md) | [04-configuration/MASTER_SECRETS_INVENTORY.md](../04-configuration/MASTER_SECRETS_INVENTORY.md)
---
### 7. Exchange Registry (DBIS Core)
- **Description:** Multi-exchange price aggregation (Binance, Kraken, Oanda, FXCM)
- **Location:** `dbis_core/src/core/exchange/`
- **API Path:** `/api/v1/exchange` (price, providers)
- **Related:** [DBIS_CORE_API_REFERENCE.md](../11-references/DBIS_CORE_API_REFERENCE.md)
---
### 8. Ramp API (metamask-integration)
- **Description:** Fiat on/off-ramp session creation (MoonPay, Ramp, Onramper, Transak, Banxa, Coinbase, Stripe, Cybrid, Sardine, HoneyCoin)
- **Location:** `metamask-integration/src/ramps/`
- **API:** POST /ramps/on-ramp/session, POST /ramps/off-ramp/session, GET /ramps/quote, GET /ramps/providers
- **Related:** [MASTER_SECRETS_INVENTORY.md](../04-configuration/MASTER_SECRETS_INVENTORY.md)
---
### 9. DeFi Router (alltra-lifi-settlement)
- **Description:** DEX aggregator - 1inch, ParaSwap, 0x (best-route selection)
- **Location:** `alltra-lifi-settlement/src/payments/`
- **Related:** [MASTER_SECRETS_INVENTORY.md](../04-configuration/MASTER_SECRETS_INVENTORY.md)
---
## Network Architecture
All services are deployed on:
- **Network:** VLAN 11 (192.168.11.0/24)
- **Gateway:** 192.168.11.11 (Proxmox host)
- **Host:** r630-01 (Proxmox host at 192.168.11.11)
---
**Last Updated:** 2026-01-31

View File

@@ -43,7 +43,8 @@
#### RPC / Gateways (2500-3499) - 1,000 VMIDs
- **2500-2502**: Initial RPC nodes (3 nodes)
- **2503-3499**: Reserved for RPC/Gateway expansion (997 VMIDs)
- **2503-2505**: Besu RPC (HYBX; 3 nodes). **2506-2508 destroyed 2026-02-08** (no longer in use).
- **2509-3499**: Reserved for RPC/Gateway expansion
#### Archive / Telemetry (3500-4299) - 800 VMIDs
- **3500+**: Archive / Snapshots / Mirrors / Telemetry
@@ -79,7 +80,8 @@
### Available / Buffer (5700-5999) - 300 VMIDs
- **5700-5999**: Reserved for future use / buffer space
- **5700**: Dev VM (shared Cursor dev + private Gitea for four users). See [DEV_VM_GITOPS_PLAN.md](../04-configuration/DEV_VM_GITOPS_PLAN.md).
- **5701-5999**: Reserved for future use / buffer space
---
@@ -188,4 +190,5 @@ VMID_SOVEREIGN_CLOUD_START=10000 # Sovereign Cloud: 10000-13999
- Buffer: 5700-5999 (300 VMIDs)
- Sankofa/Phoenix/PanTel: 7800-8999 (1,200 VMIDs)
- Sovereign Cloud Band: 10000-13999 (4,000 VMIDs)
- **NPMplus Alltra/HYBX:** VMID 10235 (192.168.11.169). See [04-configuration/NPMPLUS_ALLTRA_HYBX_MASTER_PLAN.md](../04-configuration/NPMPLUS_ALLTRA_HYBX_MASTER_PLAN.md). NPMplus range: 10233 (primary), 10234 (HA secondary), 10235 (Alltra/HYBX).

View File

@@ -334,7 +334,7 @@ vzdump prune --storage <storage> --keep-last 7
- **[DISASTER_RECOVERY.md](DISASTER_RECOVERY.md)** - Disaster recovery procedures
- **[OPERATIONAL_RUNBOOKS.md](OPERATIONAL_RUNBOOKS.md)** - Operational procedures
- **[../../04-configuration/SECRETS_KEYS_CONFIGURATION.md](/docs/04-configuration/SECRETS_KEYS_CONFIGURATION.md)** - Secrets backup
- **[SECRETS_KEYS_CONFIGURATION.md](../04-configuration/SECRETS_KEYS_CONFIGURATION.md)** - Secrets backup
---

View File

@@ -0,0 +1,170 @@
# Blockscout Fix Runbook (VMID 5000)
**Last Updated:** 2026-02-02
**Status:** Active
**Container:** blockscout-1 @ 192.168.11.140 (VMID 5000 on r630-02)
---
## Symptoms
- **502 Bad Gateway** when accessing `http://192.168.11.140/api` or `https://explorer.d-bis.org/api`
- **Blockscout logs:** `postgres:5432: non-existing domain - :nxdomain` (DB unreachable)
- **Docker:** `no space left on device` when pulling/creating containers
---
## Root Cause
1. **Thin pool full:** `thin1-r630-02` is at **100%** capacity. VM 5000 resides on thin1.
2. **postgres nxdomain:** Blockscout container cannot resolve hostname `postgres` (Docker network/DNS).
3. Docker cannot create overlay layers when the thin pool has no free space.
---
## Fix: SSL + Migrations (migrations_status, blocks tables missing)
**Symptom:** Blockscout crashes with `ssl not available`, `migrations_status does not exist`, `blocks does not exist`. Migrations fail because Blockscout defaults to `ECTO_USE_SSL=TRUE` but Docker Postgres has no SSL.
**Run on Proxmox host r630-02 (192.168.11.12):**
```bash
# From project root, copy and run:
./scripts/fix-blockscout-ssl-and-migrations.sh
# Or via SSH:
ssh root@192.168.11.12 'bash -s' < scripts/fix-blockscout-ssl-and-migrations.sh
```
The script:
1. Stops Blockscout
2. Runs migrations with `DATABASE_URL=...?sslmode=disable` and `ECTO_USE_SSL=false`
3. Updates docker-compose/.env to persist SSL-disabled DB URL
4. Starts Blockscout
**Manual alternative:**
```bash
pct exec 5000 -- docker run --rm --network blockscout_blockscout-network \
-e DATABASE_URL='postgresql://blockscout:blockscout@postgres:5432/blockscout?sslmode=disable' \
-e ECTO_USE_SSL=false \
-e ETHEREUM_JSONRPC_HTTP_URL=http://192.168.11.221:8545 \
-e CHAIN_ID=138 \
blockscout/blockscout:latest \
sh -c 'bin/blockscout eval "Elixir.Explorer.ReleaseTasks.create_and_migrate()"'
# Then update /opt/blockscout/docker-compose.yml or .env: add ?sslmode=disable to DATABASE_URL
pct exec 5000 -- bash -c 'cd /opt/blockscout && docker-compose up -d blockscout'
```
---
## Fix: Migrate VM 5000 to thin5 (has free space)
**Run on Proxmox host r630-02 (192.168.11.12):**
```bash
# 1. Stop container
pct stop 5000
# 2. Backup to local storage (VMID 5000 is ~180G used)
vzdump 5000 --storage local --mode stop --compress 0
# 3. Remove old container (frees thin1 space)
pct destroy 5000
# 4. Restore to thin5
pct restore 5000 /var/lib/vz/dump/vzdump-lxc-5000-*.tar.gz --storage thin5
# 5. Start container
pct start 5000
# 6. Start Blockscout stack (wait ~30s for postgres)
pct exec 5000 -- bash -c 'cd /opt/blockscout && docker-compose up -d'
# 7. Wait ~2 min for Blockscout to boot, then verify
curl -s "http://192.168.11.140/api?module=stats&action=eth_price" | head -c 200
```
---
## Alternative: Free Space in thin1
If migration is not possible, free space in thin1 by migrating *other* VMs off thin1:
```bash
# Check what's on thin1
lvs | grep thin1
pvesm status | grep thin1-r630-02
```
VMs on thin1 (r630-02): 10234, 2201, 2303, 2401, 5000, 6200. Consider migrating smaller VMs to thin5/thin6.
---
## After Fix: Verify Contract Verification
```bash
source smom-dbis-138/.env 2>/dev/null
./scripts/verify/run-contract-verification-with-proxy.sh
```
---
## Forge Verification Compatibility
Forge `verify-contract --verifier blockscout` may fail with "Params 'module' and 'action' are required". Blockscout expects `module`/`action` in the query; Forge sends JSON only.
### Primary: Orchestrated Script (recommended)
Starts proxy if needed; uses config from load-project-env; 600s timeout (set `FORGE_VERIFY_TIMEOUT=0` for none):
```bash
source smom-dbis-138/.env 2>/dev/null
./scripts/verify/run-contract-verification-with-proxy.sh
```
### Manual: Proxy + Verify
```bash
# 1. Start proxy (separate terminal)
BLOCKSCOUT_URL=http://192.168.11.140:4000 node forge-verification-proxy/server.js
# 2. Run verification
./scripts/verify-contracts-blockscout.sh
```
**See:** [forge-verification-proxy/README.md](../../forge-verification-proxy/README.md), [BLOCKSCOUT_FORGE_VERIFICATION_EVALUATION.md](BLOCKSCOUT_FORGE_VERIFICATION_EVALUATION.md)
### Fallbacks
- **Nginx fix:** `./scripts/fix-blockscout-forge-verification.sh` then retry (may still fail due to API format)
- **Manual verification:** https://explorer.d-bis.org/address/<CONTRACT_ADDRESS>#verify-contract
---
## E2E completion (Blockscout and other sites)
- **Public routing E2E**: `bash scripts/verify/verify-end-to-end-routing.sh` tests explorer.d-bis.org (DNS, SSL, HTTPS) and an optional Blockscout API check (`/api/v2/stats`). The API check does not fail the run if unreachable; use `SKIP_BLOCKSCOUT_API=1` to skip it. See [E2E_CLOUDFLARE_DOMAINS_RUNBOOK.md](../05-network/E2E_CLOUDFLARE_DOMAINS_RUNBOOK.md).
- **Full explorer E2E (on LAN)**: From a host that can reach 192.168.11.140, run `explorer-monorepo/scripts/e2e-test-explorer.sh` for frontend, API, and service checks.
- **Daily checks**: `scripts/maintenance/daily-weekly-checks.sh daily` checks explorer indexer via `/api/v2/stats` (and fallback legacy API).
---
## Proactive: When changing RPC or decommissioning nodes
**Explorer (VMID 5000) depends on:** RPC at `ETHEREUM_JSONRPC_HTTP_URL` (canonical: 192.168.11.221:8545, VMID 2201).
When you **decommission or change IP of an RPC node** that Blockscout might use:
1. Check Blockscout env on VM 5000: `pct exec 5000 -- bash -c 'grep -E "ETHEREUM_JSONRPC|RPC" /opt/blockscout/.env 2>/dev/null || docker inspect blockscout 2>/dev/null | grep -A5 Env'`
2. If it points to the affected node, update to a live RPC (e.g. 192.168.11.221:8545) and restart Blockscout.
3. See [SOLACESCANSCOUT_DEEP_DIVE_FIXES_AND_TIMING.md](../04-configuration/verification-evidence/SOLACESCANSCOUT_DEEP_DIVE_FIXES_AND_TIMING.md) for full proactive timing.
---
## Related
- [CONTRACT_DEPLOYMENT_RUNBOOK.md](CONTRACT_DEPLOYMENT_RUNBOOK.md) — Contract verification
- [scripts/fix-blockscout-1.sh](../../scripts/fix-blockscout-1.sh) — Diagnostic script
- [scripts/fix-blockscout-forge-verification.sh](../../scripts/fix-blockscout-forge-verification.sh) — Forge verification compatibility

View File

@@ -0,0 +1,112 @@
# Blockscout Forge Verification — Fix Evaluation & Dedicated API
**Date:** 2026-02-02
**Status:** Evaluation complete; dedicated proxy implemented
---
## 1. Fix Evaluation
### What Was Attempted
| Change | Purpose | Result |
|--------|---------|--------|
| `location = /api` + `rewrite ^ /api/$is_args$args last` | Internal redirect `/api``/api/` to avoid 301 on POST | **Partial**: Eliminates nginx 301; does not fix API format mismatch |
| `proxy_set_header Host 127.0.0.1` | Avoid Blockscout redirect when Host is IP | **Unclear**: 301 may originate elsewhere |
| `VERIFIER_URL="http://${IP}/api/"` | Correct base URL per Blockscout docs | **Correct**: URL format is fine |
### Root Cause
Forge sends a **single JSON body** (Etherscan-style):
```json
{
"contractaddress": "0x...",
"sourceCode": "{\"language\":\"Solidity\",\"sources\":{...}}",
"codeformat": "solidity-standard-json-input",
"contractname": "CCIPSender",
"compilerversion": "v0.8.20+...",
...
}
```
Blockscouts **Etherscan-compatible handler** (`/api?module=contract&action=verifysourcecode`) expects `module` and `action` in the **query string**. Forge does not add them and puts all data in the body. That produces:
> `Params 'module' and 'action' are required parameters`
### Conclusion
The nginx changes help routing and redirects but do **not** resolve the format mismatch. Forges payload is not compatible with the Etherscan-compatible RPC API.
---
## 2. Dedicated API Approach
### Blockscout v2 Smart Contract API
Blockscout exposes a **v2 verification API** that accepts JSON:
- **Flattened code:** `POST /api/v2/smart-contracts/{address}/verification/via/flattened-code`
- **Standard JSON input:** `POST /api/v2/smart-contracts/{address}/verification/via/standard-input`
This matches what Forge uses when it sends Standard JSON in `sourceCode`.
### Solution: Forge Verification Proxy
A small proxy service:
1. **Accepts** Forges Etherscan-style JSON POST.
2. **Maps** fields to Blockscout v2 parameters.
3. **Forwards** to `/api/v2/smart-contracts/{address}/verification/via/standard-input` (or flattened).
4. **Returns** Blockscouts response to Forge.
### Field Mapping
| Forge (Etherscan) | Blockscout v2 |
|-------------------|---------------|
| `contractaddress` | URL path `{address}` |
| `sourceCode` | `files` (standard JSON) or `source_code` (flattened) |
| `codeformat` | Chooses `/via/standard-input` vs `/via/flattened-code` |
| `contractname` | `contract_name` |
| `compilerversion` | `compiler_version` |
| `optimizationUsed` | `is_optimization_enabled` |
| `runs` | `optimization_runs` |
| `constructorArguments` | `constructor_args` |
| `evmversion` | `evm_version` |
---
## 3. Implementation
See [`forge-verification-proxy/`](../../forge-verification-proxy/) for:
- Node.js/Express proxy
- Field mapping and v2 API calls
- Usage and deployment notes
---
## 4. Usage
```bash
# 1. Start the proxy (from project root; Blockscout API at 192.168.11.140:4000)
BLOCKSCOUT_URL=http://192.168.11.140:4000 node forge-verification-proxy/server.js
# 2. Verify via proxy (preferred: ./scripts/verify/run-contract-verification-with-proxy.sh; or run verify-contracts-blockscout.sh)
./scripts/verify-contracts-blockscout.sh
# Or directly:
forge verify-contract <ADDR> <PATH> \
--chain-id 138 \
--verifier blockscout \
--verifier-url "http://<proxy-host>:3080/" \
--rpc-url "http://192.168.11.211:8545"
```
---
## 5. References
- [Blockscout Smart Contract Verification API v2](https://docs.blockscout.com/devs/verification/blockscout-smart-contract-verification-api)
- [Blockscout Foundry Verification](https://docs.blockscout.com/devs/verification/foundry-verification)
- [Etherscan RPC Contract API](https://docs.blockscout.com/devs/apis/rpc/contract) — module/action format

View File

@@ -1,5 +1,11 @@
# ChainID 138 Automation Scripts
**Last Updated:** 2026-01-31
**Document Version:** 1.0
**Status:** Active Documentation
---
**Date:** December 26, 2024
**Status:** ✅ All automation scripts created and ready
@@ -133,12 +139,7 @@ cd /home/intlc/projects/proxmox
### Step 1: Create Containers
First, create all required containers (see `docs/MISSING_CONTAINERS_LIST.md`):
- 1504 - besu-sentry-5
- 2503-2508 - All RPC nodes
- 6201 - firefly-2
- Other services as needed
Only **3 containers** are missing (canonical list): **2506, 2507, 2508**. See [MISSING_CONTAINERS_LIST.md](MISSING_CONTAINERS_LIST.md) for the checklist and IPs. All other VMIDs (1504, 2503-2505, 6201, etc.) already exist on hosts.
### Step 2: Run Main Deployment Script
@@ -217,10 +218,10 @@ If configuration files are missing:
## Related Documentation
- [Next Steps](CHAIN138_NEXT_STEPS.md)
- [Next Steps](../archive/historical/CHAIN138_NEXT_STEPS.md)
- [Missing Containers List](MISSING_CONTAINERS_LIST.md)
- [JWT Authentication Requirements](/docs/04-configuration/CHAIN138_JWT_AUTH_REQUIREMENTS.md)
- [Complete Implementation](CHAIN138_COMPLETE_IMPLEMENTATION.md)
- [JWT Authentication Requirements](../04-configuration/CHAIN138_JWT_AUTH_REQUIREMENTS.md)
- [Complete Implementation](../archive/completion/CHAIN138_COMPLETE_IMPLEMENTATION.md)
---

View File

@@ -0,0 +1,89 @@
# Contract Deployment Runbook
**Last Updated:** 2026-02-12
## Chain 138 deployment requirements (learned 2026-02-12)
- **Gas price:** Chain 138 enforces a minimum gas price. Always use **`--with-gas-price 1000000000`** (1 gwei) for `forge script` and `forge create` when deploying to Chain 138; otherwise transactions fail with "Gas price below configured minimum gas price".
- **On-chain check:** After deployments, run `./scripts/verify/check-contracts-on-chain-138.sh [RPC_URL]`**36 addresses** (26 canonical + 5 channels/mirror/trustless + 5 CREATE2). See [CONTRACT_ADDRESSES_REFERENCE](../11-references/CONTRACT_ADDRESSES_REFERENCE.md), [CONTRACT_INVENTORY_AND_VERIFICATION](../11-references/CONTRACT_INVENTORY_AND_VERIFICATION.md).
- **TransactionMirror:** The deploy script can hit a Forge broadcast constructor-args decode error. If so, deploy manually: `forge create contracts/mirror/TransactionMirror.sol:TransactionMirror --constructor-args <ADMIN_ADDRESS> --rpc-url $CHAIN138_RPC_URL --private-key $PRIVATE_KEY --gas-price 1000000000`.
## RPC Routing Summary
| Use Case | VMID | IP | Ports | Variable |
|----------|------|-----|-------|----------|
| Admin / contract deployment | 2101 | 192.168.11.211 | 8545, 8546 | RPC_CORE_1, RPC_URL_138 |
| Bridge, monitoring, public-facing | 2201 | 192.168.11.221 **(FIXED)** | 8545, 8546 | RPC_PUBLIC_1, RPC_URL_138_PUBLIC |
## Prerequisites
1. **Network access** to Chain 138 RPC (admin/deployment: RPC_CORE_1 = 192.168.11.211:8545)
- Run from a host on the same LAN as Proxmox, or via VPN
- WSL/remote dev environments may get "No route to host" if not on network
2. **PRIVATE_KEY** in `smom-dbis-138/.env` (deployer wallet with gas; same wallet holds LINK for bridge fees)
3. **Foundry** (`forge`) installed
## Deploy Core Contracts (Chain 138)
```bash
cd smom-dbis-138
source .env
# Verify RPC: curl -s -X POST "$RPC_URL" -H "Content-Type: application/json" -d '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
bash scripts/deployment/deploy-all-contracts.sh
```
Deploys: Multicall, Oracle, MultiSig (WETH9/10 pre-deployed in genesis).
## Deploy Unified (Ordered or Parallel)
```bash
cd smom-dbis-138
./scripts/deployment/deploy-contracts-unified.sh --mode ordered
# or
./scripts/deployment/deploy-contracts-unified.sh --mode parallel
```
## Deploy WETH Bridges (CCIP)
```bash
# From project root (use GAS_PRICE=1000000000 if min-gas-price error)
GAS_PRICE=1000000000 ./scripts/deploy-and-configure-weth9-bridge-chain138.sh
# Then set CCIPWETH9_BRIDGE_CHAIN138 in smom-dbis-138/.env
```
## Contract Verification (Blockscout)
Use the **Forge Verification Proxy** for `forge verify-contract` (Blockscout expects `module`/`action` in query; Forge sends JSON only).
**Preferred: orchestrated script (starts proxy if needed, timeout 600s):**
```bash
source smom-dbis-138/.env 2>/dev/null
./scripts/verify/run-contract-verification-with-proxy.sh
```
**Manual (proxy + verify):**
```bash
# 1. Start proxy (in separate terminal)
BLOCKSCOUT_URL=http://192.168.11.140:4000 node forge-verification-proxy/server.js
# 2. Run verification
./scripts/verify-contracts-blockscout.sh
```
**See:** [forge-verification-proxy/README.md](../../forge-verification-proxy/README.md), [BLOCKSCOUT_FORGE_VERIFICATION_EVALUATION.md](BLOCKSCOUT_FORGE_VERIFICATION_EVALUATION.md). Fallback: manual verification at https://explorer.d-bis.org/address/<ADDR>#verify-contract
---
## Troubleshooting
| Error | Cause | Fix |
|-------|-------|-----|
| `No route to host` | Dev machine cannot reach 192.168.11.x (RPC_CORE_1: 192.168.11.211) | Run from machine on LAN or VPN |
| `PRIVATE_KEY not set` | Missing in .env | Add deployer key to smom-dbis-138/.env |
| `Gas price below configured minimum gas price` | Chain 138 minimum gas not met | Use `--with-gas-price 1000000000` for all `forge script` / `forge create` on Chain 138 |
| `Failed to decode constructor arguments` (TransactionMirror) | Forge broadcast decode bug | Deploy via `forge create ... --constructor-args <ADMIN> --gas-price 1000000000` |
| `pam_chauthtok failed` (Blockscout) | Container PAM restriction | Use Proxmox Web UI: Container 5000 → Options → Password |
| `pvesm not found` (verify-storage) | Script must run ON Proxmox host | `ssh root@r630-01` then run script |

View File

@@ -0,0 +1,286 @@
# Deployment Master Procedure
**Date:** 2026-01-22
**Status:** 🟢 Active Reference
**Last Updated:** 2026-02-05
**Purpose:** Comprehensive deployment procedure master document
---
## Overview
This document consolidates all deployment procedures into a single master reference, providing a complete deployment guide for all services.
---
## Deployment Prerequisites
### System Requirements
- **Proxmox VE:** 3 hosts — 192.168.11.10 (ml110), 192.168.11.11 (r630-01), 192.168.11.12 (r630-02)
- **Edge:** UDM Pro (76.53.10.34, replaced ER605). Port forward 76.53.10.36:80/443 → 192.168.11.167:80/443 (NPMplus). NPMplus LXC has 192.168.11.166 and 192.168.11.167; only **192.168.11.167** is used in UDM Pro.
- **Network:** VLAN 11 configured, gateway accessible
- **Storage:** LVM-thin storage pools available
- **Templates:** Ubuntu/Debian container templates
### Access Requirements
- SSH access to all Proxmox hosts
- Root access to containers
- Network access to services
---
## Deployment Phases
### Phase 1: Infrastructure Setup
#### 1.1 Proxmox Host Configuration
```bash
# Verify host connectivity
./scripts/check-vmid-conflicts.sh
./scripts/check-ip-conflicts.sh
# Configure network
# See: docs/04-configuration/NETWORK_CONFIGURATION_MASTER.md
```
#### 1.2 Network Configuration
- Configure VLAN 11
- Set up gateway routing
- Configure DNS
- Set up firewall rules
**Reference:** `docs/11-references/NETWORK_CONFIGURATION_MASTER.md`
---
### Phase 2: Database Services
#### 2.1 PostgreSQL Deployment
```bash
# Order PostgreSQL
./scripts/configure-service-dependencies.sh
# DBIS PostgreSQL
./scripts/run-dbis-database-migrations.sh
# Sankofa PostgreSQL
./scripts/run-migrations-r630-01.sh
```
#### 2.2 Redis Deployment
```bash
# Order Redis
# DBIS Redis
# See: scripts/configure-service-dependencies.sh
```
**VMIDs:**
- Order PostgreSQL: 10000 (primary), 10001 (replica)
- DBIS PostgreSQL: 10100 (primary), 10101 (replica)
- Order Redis: 10020
- DBIS Redis: 10120
- Sankofa PostgreSQL: 7803
---
### Phase 3: Authentication Services
#### 3.1 Keycloak Deployment
```bash
./scripts/setup-keycloak-r630-01.sh
```
**VMID:** 7802
**Reference:** `docs/04-configuration/KEYCLOAK_SETUP.md`
#### 3.2 Vault Deployment
```bash
./scripts/deploy-phoenix-vault-cluster.sh
```
**VMIDs:** 8640, 8641, 8642
**Reference:** `docs/04-configuration/PHOENIX_VAULT_CLUSTER_DEPLOYMENT.md`
---
### Phase 4: Application Services
#### 4.1 DBIS Services
```bash
# Deploy DBIS services
./scripts/deploy-api-r630-01.sh
# Run migrations
./scripts/run-dbis-database-migrations.sh
```
**VMIDs:** 10130 (frontend), 10150 (API primary), 10151 (API secondary)
#### 4.2 Order Services
```bash
# Deploy Order services
./scripts/deploy-portal-r630-01.sh
```
**VMIDs:** 10090 (portal), 10030-10092 (various services), 10202 (opensearch), 10210 (haproxy)
#### 4.3 Sankofa Services
```bash
# Deploy Sankofa services
./scripts/deploy-sankofa-r630-01.sh
```
**VMIDs:** 7800 (API), 7801 (Portal), 7802 (Keycloak), 7803 (PostgreSQL)
---
### Phase 5: Blockchain Services
#### 5.1 Besu Validators
```bash
# Deploy validators
# See: smom-dbis-138-proxmox/scripts/
# Update validator configs
./scripts/fix-validator-txpool.sh
```
**VMIDs:** 1000-1004
**Reference:** `docs/06-besu/VALIDATOR_TXPOOL_CONFIGURATION_FIX.md`
#### 5.2 Besu Sentries
```bash
# Deploy sentries
# See: smom-dbis-138-proxmox/scripts/
```
**VMIDs:** 1500-1504
#### 5.3 RPC Nodes
```bash
# Deploy RPC nodes
./scripts/setup-thirdweb-rpc-nodes.sh
```
**VMIDs:** 2101 (core), 2201 (public), 2301 (private), 2400-2403 (thirdweb)
#### 5.4 Blockscout
```bash
# Deploy Blockscout
./scripts/start-blockscout-service.sh
```
**VMID:** 5000
**Reference:** `docs/04-configuration/BLOCKSCOUT_ROUTING_CORRECT.md`
---
### Phase 6: Reverse Proxy & Networking
#### 6.1 NPMplus Deployment
```bash
# Deploy NPMplus
# See: docs/04-configuration/NPMPLUS_COMPLETE_SETUP_SUMMARY.md
```
**VMIDs:** 10233 (primary), 10234 (secondary)
#### 6.2 Cloudflare Tunnel
```bash
./scripts/install-shared-tunnel-token.sh
./scripts/update-cloudflare-tunnel-to-nginx.sh
```
**VMID:** 102
---
## Deployment Checklist
### Pre-Deployment
- [ ] Verify Proxmox host connectivity
- [ ] Check VMID conflicts
- [ ] Check IP conflicts
- [ ] Verify network configuration
- [ ] Verify storage availability
### Deployment
- [ ] Deploy infrastructure services
- [ ] Deploy database services
- [ ] Deploy authentication services
- [ ] Deploy application services
- [ ] Deploy blockchain services
- [ ] Deploy reverse proxy
### Post-Deployment
- [ ] Verify all services running
- [ ] Test service connectivity
- [ ] Verify database connections
- [ ] Test API endpoints
- [ ] Verify reverse proxy routing
- [ ] Run configuration validation
---
## Deployment Scripts Reference
### Infrastructure
- `scripts/setup-central-nginx-routing.sh` - Central nginx routing
- `scripts/configure-persistent-networks-v3.sh` - Network configuration
### Database
- `scripts/configure-service-dependencies.sh` - Service dependencies
- `scripts/run-dbis-database-migrations.sh` - DBIS migrations
- `scripts/run-migrations-r630-01.sh` - Sankofa migrations
### Application
- `scripts/deploy-api-r630-01.sh` - DBIS API
- `scripts/deploy-portal-r630-01.sh` - Order Portal
- `scripts/deploy-sankofa-r630-01.sh` - Sankofa services
### Blockchain
- `scripts/setup-thirdweb-rpc-nodes.sh` - ThirdWeb RPC
- `scripts/fix-validator-txpool.sh` - Validator configuration
- `scripts/start-blockscout-service.sh` - Blockscout
### Verification
- `scripts/check-vmid-conflicts.sh` - VMID conflict check
- `scripts/check-ip-conflicts.sh` - IP conflict check
- `scripts/validate-configuration.sh` - Configuration validation
---
## Rollback Procedures
### Service Rollback
1. Stop service container
2. Restore from backup if available
3. Revert configuration changes
4. Restart service
### Database Rollback
1. Stop database service
2. Restore database from backup
3. Restart database service
4. Verify data integrity
### Network Rollback
1. Revert network configuration
2. Restore firewall rules
3. Restore routing rules
4. Verify connectivity
---
## Related Documents
- **[PHOENIX_DEPLOYMENT_RUNBOOK.md](PHOENIX_DEPLOYMENT_RUNBOOK.md)** - Phoenix-specific deployment
- **[VMID_ALLOCATION_FINAL.md](../02-architecture/VMID_ALLOCATION_FINAL.md)** - VMID reference
- **[NETWORK_CONFIGURATION_MASTER.md](../11-references/NETWORK_CONFIGURATION_MASTER.md)** - IP and network reference
- **[NETWORK_ARCHITECTURE.md](../02-architecture/NETWORK_ARCHITECTURE.md)** - Service and network layout
---
**Last Updated:** 2026-01-22
**Maintainer:** System Administrator
**Update Frequency:** On deployment procedure changes

View File

@@ -1,5 +1,11 @@
# Deployment Readiness Checklist
**Last Updated:** 2026-01-31
**Document Version:** 1.0
**Status:** Active Documentation
---
**Target:** ml110-01 (192.168.11.10)
**Status:****READY FOR DEPLOYMENT**
**Date:** $(date)

View File

@@ -1,5 +1,11 @@
# Chain 138 Deployment Readiness Checklist
**Last Updated:** 2026-01-31
**Document Version:** 1.0
**Status:** Active Documentation
---
**Date**: $(date)
**Purpose**: Verify all prerequisites are met before deploying smart contracts

View File

@@ -1,4 +1,11 @@
# Deployment Runbook
**Last Updated:** 2026-01-31
**Document Version:** 1.0
**Status:** Active Documentation
---
## SolaceScanScout Explorer - Production Deployment Guide
**Last Updated**: $(date)

View File

@@ -2,13 +2,15 @@
**Last Updated:** 2025-01-20
**Document Version:** 2.0
**Status:** Active Deployment
**Status:** Active Deployment (legacy consolidated view)
**For current container inventory by host (SSH-reconciled), use [DEPLOYMENT_STATUS_MASTER.md](DEPLOYMENT_STATUS_MASTER.md).** This document is the legacy consolidated table; refer to MASTER for inventory updates (e.g. 25062508 destroyed, VMID allocation).
---
## Overview
This document consolidates all deployment status information into a single authoritative source. It replaces multiple status documents with one comprehensive view.
This document consolidates deployment status into a single table view. For authoritative per-host inventory and recent changes, see DEPLOYMENT_STATUS_MASTER.md.
---
@@ -43,7 +45,7 @@ This document consolidates all deployment status information into a single autho
**Current Network:** Flat LAN (192.168.11.0/24)
**VLAN Migration:** ⏳ Pending
**Target Network:** VLAN-based (see [NETWORK_ARCHITECTURE.md](NETWORK_ARCHITECTURE.md))
**Target Network:** VLAN-based (see [NETWORK_ARCHITECTURE.md](../02-architecture/NETWORK_ARCHITECTURE.md))
### Service Status
@@ -63,16 +65,16 @@ This document consolidates all deployment status information into a single autho
### Phase 0 — Foundation ✅
- [x] ER605-A WAN1 configured: 76.53.10.34/28
- [x] Proxmox mgmt accessible
- [x] UDM Pro (replaced ER605); Spectrum Business Internet
- [x] Proxmox mgmt accessible (ml110, r630-01, r630-02)
- [x] Basic containers deployed
- [x] ER605, ES216G removed; UDM Pro only
### Phase 1 — VLAN Enablement ⏳
- [ ] ES216G trunk ports configured
- [ ] VLAN-aware bridge enabled on Proxmox
- [ ] VLAN interfaces created on ER605
- [ ] Services migrated to VLANs
- [ ] UDM Pro VLAN configuration (ES216G/ER605 removed)
- [ ] VLAN-aware bridge enabled on Proxmox (if using VLANs)
- [ ] Services migrated to VLANs (optional)
### Phase 2 — Observability ⏳
@@ -127,7 +129,7 @@ This document consolidates all deployment status information into a single autho
### Target (VLAN-based)
See **[NETWORK_ARCHITECTURE.md](NETWORK_ARCHITECTURE.md)** for complete VLAN plan.
See **[NETWORK_ARCHITECTURE.md](../02-architecture/NETWORK_ARCHITECTURE.md)** for complete VLAN plan.
**Key VLANs:**
- VLAN 11: MGMT-LAN (192.168.11.0/24) - Legacy compatibility
@@ -157,7 +159,7 @@ See **[NETWORK_ARCHITECTURE.md](NETWORK_ARCHITECTURE.md)** for complete VLAN pla
- **Block #5:** Sankofa/Phoenix/PanTel service egress
- **Block #6:** Sovereign Cloud Band tenant egress
See **[NETWORK_ARCHITECTURE.md](NETWORK_ARCHITECTURE.md)** for details.
See **[NETWORK_ARCHITECTURE.md](../02-architecture/NETWORK_ARCHITECTURE.md)** for details.
---
@@ -234,20 +236,20 @@ See **[NETWORK_ARCHITECTURE.md](NETWORK_ARCHITECTURE.md)** for details.
### Architecture
- **[NETWORK_ARCHITECTURE.md](NETWORK_ARCHITECTURE.md)** - Complete network architecture
- **[ORCHESTRATION_DEPLOYMENT_GUIDE.md](ORCHESTRATION_DEPLOYMENT_GUIDE.md)** - Deployment guide
- **[VMID_ALLOCATION_FINAL.md](VMID_ALLOCATION_FINAL.md)** - VMID allocation
- **[NETWORK_ARCHITECTURE.md](../02-architecture/NETWORK_ARCHITECTURE.md)** - Complete network architecture
- **[ORCHESTRATION_DEPLOYMENT_GUIDE.md](../02-architecture/ORCHESTRATION_DEPLOYMENT_GUIDE.md)** - Deployment guide
- **[VMID_ALLOCATION_FINAL.md](../02-architecture/VMID_ALLOCATION_FINAL.md)** - VMID allocation
### Deployment
- **[VALIDATED_SET_DEPLOYMENT_GUIDE.md](VALIDATED_SET_DEPLOYMENT_GUIDE.md)** - Validated set deployment
- **[CCIP_DEPLOYMENT_SPEC.md](CCIP_DEPLOYMENT_SPEC.md)** - CCIP deployment
- **[CCIP_DEPLOYMENT_SPEC.md](../07-ccip/CCIP_DEPLOYMENT_SPEC.md)** - CCIP deployment
- **[DEPLOYMENT_READINESS.md](DEPLOYMENT_READINESS.md)** - Deployment readiness
### Operations
- **[OPERATIONAL_RUNBOOKS.md](OPERATIONAL_RUNBOOKS.md)** - Operational runbooks
- **[TROUBLESHOOTING_FAQ.md](/docs/09-troubleshooting/TROUBLESHOOTING_FAQ.md)** - Troubleshooting guide
- **[TROUBLESHOOTING_FAQ.md](../09-troubleshooting/TROUBLESHOOTING_FAQ.md)** - Troubleshooting guide
---

View File

@@ -0,0 +1,279 @@
# Deployment Status Master - Complete Overview
**Last Updated:** 2026-02-12
**Status:** 🚀 **ACTIVE DEPLOYMENT**
**Progress:** Foundation Complete → Service Migration In Progress
**Authoritative** for container inventory by host (reconciled with SSH). For a legacy consolidated table view, see [DEPLOYMENT_STATUS_CONSOLIDATED.md](DEPLOYMENT_STATUS_CONSOLIDATED.md).
---
## Executive Summary
### ✅ Completed (Foundation Phase)
1. **Network Infrastructure**
-**Edge:** UDM Pro (76.53.10.34, replaced ER605). Port forward **76.53.10.36:80/443****192.168.11.167:80/443** (NPMplus). NPMplus LXC has 192.168.11.166 and 192.168.11.167; only **192.168.11.167** is used in UDM Pro.
- ✅ All 19 VLANs configured on UDM Pro
- ✅ Inter-VLAN routing verified and working
- ✅ Network Isolation disabled, Zone Matrix configured
- ✅ Dual network access configured (Default + VLAN 11)
2. **Proxmox Infrastructure**
- ✅ ml110 operational (192.168.11.10)
- ✅ r630-01 operational (192.168.11.11)
- ✅ r630-02 operational (192.168.11.12) - Storage optimized
- ✅ r630-03, r630-04 available for deployment
3. **Storage**
- ✅ r630-02 storage issues resolved
- ✅ Container 7811 disk expanded
- ✅ Duplicate volumes removed (~300GB recovered)
- ✅ Storage pools optimized
### ⏳ In Progress (Migration Phase)
1. **VLAN Migration**
- ⏳ Besu validators (1000-1004) → VLAN 110
- ⏳ Besu sentries (1500-1503) → VLAN 111
- ⏳ Besu RPC (2500-2502) → VLAN 112
- ⏳ Blockscout (5000) → VLAN 120
- ⏳ FireFly (6200) → VLAN 141
- ⏳ MIM API (7811) → VLAN 160
2. **Service Deployment**
- ⏳ CCIP fleet (41 nodes)
- ⏳ DBIS services
- ⏳ Monitoring stack
- ⏳ Additional Hyperledger services
### 📋 Pending (Deployment Phase)
1. **Security & Access**
- ⏳ Firewall rules configuration
- ⏳ Cloudflare Zero Trust setup
- ⏳ NAT pool configuration
2. **Documentation**
- ⏳ Final IP assignments
- ⏳ Service connectivity matrix
- ⏳ Operational runbooks
---
## Current Container Inventory
### ml110 (192.168.11.10)
**Running Containers:**
- Besu Validators: 1000-1004 (5)
- Besu Sentries: 1500-1503, **1504** (besu-sentry-ali) (5)
- Besu RPC: 2500-2502, **2303-2308** (Ali/Luis/Putu RPC — not 2503-2508)
- Thirdweb RPC: 2400-2402 (3)
**Note:** 2503, 2504, 2505 are on **r630-01** (besu-rpc-hybx-1/2/3). **2506, 2507, 2508 were destroyed 2026-02-08** — see [MISSING_CONTAINERS_LIST.md](MISSING_CONTAINERS_LIST.md). Besu RPC range: 25002505 only.
**Status:** All on VLAN 11 (mgmt) - **Ready for VLAN migration**
### r630-01 (192.168.11.11)
**Running Containers:**
- Infrastructure: 100-108 (proxmox-mail-gateway, datacenter-manager, cloudflared, omada, gitea, nginxproxymanager, redis-rpc-translator, web3signer-rpc-translator, vault-rpc-translator)
- Monitoring: 130 (monitoring-1)
- **Besu RPC: 2503, 2504, 2505** (besu-rpc-hybx-1/2/3)
- **Hyperledger: 5200 (cacti-1), 6000 (fabric-1), 6400 (indy-1)**
**Host Services (not LXC):**
- **CCIP Relay Service** — `/opt/smom-dbis-138/services/relay` (Node.js); relays Chain 138 → Mainnet; uses VMID 2201 RPC. See [07-ccip/CCIP_RELAY_DEPLOYMENT.md](../07-ccip/CCIP_RELAY_DEPLOYMENT.md).
- **Chain 138 smart contracts** — 36-address on-chain check: `./scripts/verify/check-contracts-on-chain-138.sh`; AddressMapper, MirrorManager deployed 2026-02-12. Deploy with `--with-gas-price 1000000000`. See [CONTRACT_ADDRESSES_REFERENCE](../11-references/CONTRACT_ADDRESSES_REFERENCE.md), [CONTRACT_DEPLOYMENT_RUNBOOK](CONTRACT_DEPLOYMENT_RUNBOOK.md).
**Stopped Containers (30+):**
- DBIS services: 10100-10151
- Order services: 10000-10092
- CCIP services: 3500-3501
**Status:** Infrastructure and Hyperledger running; many application services stopped - **Ready for deployment**
### r630-02 (192.168.11.12)
**Running Containers (4):**
- Blockscout: 5000
- FireFly: 6200
- FireFly Ali: 6201 (stopped)
- MIM API: 7811
**Status:** Services running on VLAN 11 - **Ready for VLAN migration**
---
## VLAN Migration Plan
### Priority 1: Besu Network (High Priority)
| Service | Current | Target VLAN | Target Subnet | Containers |
|---------|---------|-------------|---------------|------------|
| Validators | VLAN 11 | VLAN 110 | 10.110.0.0/24 | 1000-1004 |
| Sentries | VLAN 11 | VLAN 111 | 10.111.0.0/24 | 1500-1503 |
| RPC | VLAN 11 | VLAN 112 | 10.112.0.0/24 | 2500-2502 |
### Priority 2: Service VLANs
| Service | Current | Target VLAN | Target Subnet | Containers |
|---------|---------|-------------|---------------|------------|
| Blockscout | VLAN 11 | VLAN 120 | 10.120.0.0/24 | 5000 |
| FireFly | VLAN 11 | VLAN 141 | 10.141.0.0/24 | 6200 |
| MIM API | VLAN 11 | VLAN 160 | 10.160.0.0/22 | 7811 |
### Priority 3: New Deployments
| Service | Target VLAN | Target Subnet | VMIDs |
|---------|------------|---------------|-------|
| CCIP Ops | VLAN 130 | 10.130.0.0/24 | 5400-5401 |
| CCIP Commit | VLAN 132 | 10.132.0.0/24 | 5410-5425 |
| CCIP Execute | VLAN 133 | 10.133.0.0/24 | 5440-5455 |
| CCIP RMN | VLAN 134 | 10.134.0.0/24 | 5470-5476 |
| DBIS Services | VLAN 202 | 10.202.0.0/24 | 10100-10151 |
---
## Deployment Tasks by Category
### Network Tasks (Can Run in Parallel)
1. ✅ Verify VLAN configuration
2. ✅ Verify inter-VLAN routing
3. ⏳ Migrate Besu validators to VLAN 110
4. ⏳ Migrate Besu sentries to VLAN 111
5. ⏳ Migrate Besu RPC to VLAN 112
6. ⏳ Migrate Blockscout to VLAN 120
7. ⏳ Migrate FireFly to VLAN 141
8. ⏳ Migrate MIM API to VLAN 160
9. ⏳ Configure firewall rules
10. ⏳ Configure DHCP reservations
### Service Deployment Tasks (Can Run in Parallel)
1. ⏳ Deploy CCIP Ops/Admin (2 nodes)
2. ⏳ Deploy CCIP Commit nodes (16 nodes)
3. ⏳ Deploy CCIP Execute nodes (16 nodes)
4. ⏳ Deploy CCIP RMN nodes (7 nodes)
5. ⏳ Deploy monitoring stack
6. ⏳ Deploy DBIS services
7. ⏳ Deploy Cacti
8. ⏳ Deploy Fabric
9. ⏳ Deploy Indy
### Security & Access Tasks (Can Run in Parallel)
1. ⏳ Configure inter-VLAN firewall rules
2. ⏳ Configure sovereign tenant isolation
3. ⏳ Set up Cloudflare Zero Trust tunnels
4. ⏳ Configure Cloudflare Access policies
5. ⏳ Configure NAT pools (when IP blocks assigned)
### Documentation Tasks
1. ⏳ Update IP assignments
2. ⏳ Create service connectivity matrix
3. ⏳ Update operational runbooks
4. ⏳ Document final configurations
---
## Parallel Execution Strategy
### Phase 1: Network Migration (Parallel Groups)
**Group A (Besu Network - Can run in parallel):**
- Migrate validators (1000-1004) → VLAN 110
- Migrate sentries (1500-1503) → VLAN 111
- Migrate RPC (2500-2502) → VLAN 112
**Group B (Service VLANs - Can run in parallel):**
- Migrate Blockscout (5000) → VLAN 120
- Migrate FireFly (6200) → VLAN 141
- Migrate MIM API (7811) → VLAN 160
### Phase 2: Service Deployment (Parallel Groups)
**Group A (CCIP Fleet - Can run in parallel):**
- Deploy CCIP Ops/Admin (5400-5401)
- Deploy CCIP Commit nodes (5410-5425)
- Deploy CCIP Execute nodes (5440-5455)
- Deploy CCIP RMN nodes (5470-5476)
**Group B (Application Services - Can run in parallel):**
- Deploy DBIS services (10100-10151)
- Deploy monitoring stack
- Deploy Hyperledger services (Cacti, Fabric, Indy)
### Phase 3: Security & Access (Parallel)
- Configure firewall rules
- Set up Cloudflare Zero Trust
- Configure NAT pools
---
## Resource Allocation
### Proxmox Hosts
| Host | Current Load | Available Capacity | Recommended Use |
|------|--------------|-------------------|------------------|
| ml110 | 20 containers | Moderate | Besu network, management |
| r630-01 | 10 containers | High | CCIP fleet, services |
| r630-02 | 4 containers | High | Application services |
| r630-03 | 0 containers | Full | New deployments |
| r630-04 | 0 containers | Full | New deployments |
### Storage
| Host | Storage Status | Available |
|------|----------------|-----------|
| ml110 | Operational | Adequate |
| r630-01 | Operational | High |
| r630-02 | Optimized | High (300GB recovered) |
| r630-03 | Available | Full |
| r630-04 | Available | Full |
---
## Next Steps (Immediate)
1. **Start VLAN Migration** (Priority 1)
- Begin with Besu validators (1000-1004)
- Test connectivity after each group
- Proceed to next group
2. **Deploy CCIP Fleet** (Priority 2)
- Start with Ops/Admin nodes
- Deploy Commit, Execute, RMN in parallel
- Configure and test
3. **Configure Security** (Priority 3)
- Set up firewall rules
- Configure Cloudflare Zero Trust
- Test access policies
---
## Risk Assessment
### Low Risk
- ✅ VLAN migration (tested, reversible)
- ✅ Service deployment (can rollback)
- ✅ Firewall configuration (tested)
### Medium Risk
- ⚠️ CCIP fleet deployment (requires coordination)
- ⚠️ NAT pool configuration (requires public IP blocks)
### High Risk
- ❌ None identified
---
**Last Updated:** 2026-02-05
**Container inventory:** Reconciled with SSH review; canonical missing VMIDs (2506, 2507, 2508 only): [MISSING_CONTAINERS_LIST.md](MISSING_CONTAINERS_LIST.md).
**Next Review:** After Phase 1 completion

View File

@@ -0,0 +1,51 @@
# Deployment Master TODO List
**Last Updated:** 2026-02-05
**Status:** 🚀 **ACTIVE DEPLOYMENT**
**Mode:** Full Parallel Execution
---
## Current Status Summary
### ✅ Completed Foundation
-**VLAN Configuration**: All 19 VLANs configured on UDM Pro
-**Network Routing**: Inter-VLAN routing verified and working
-**Proxmox Hosts**: ml110, r630-01, r630-02 operational
-**Storage**: r630-02 storage issues resolved
-**Network Access**: Dual network access (Default + VLAN 11) configured
### 📊 Current Container Status
**ml110 (192.168.11.10):**
- 20 containers running (Besu validators, sentries, RPC nodes)
- All on VLAN 11 (mgmt) - **NEEDS VLAN MIGRATION**
**r630-01 (192.168.11.11):**
- 10 containers running (infrastructure services)
- Many stopped containers (DBIS, Order services, etc.)
**r630-02 (192.168.11.12):**
- 4 containers running (blockscout, firefly, mim-api)
- Storage optimized
---
## Deployment Phases
### Phase 1: Network & Infrastructure ✅ → ⏳
### Phase 2: Service Migration & Deployment ⏳
### Phase 3: CCIP Fleet Deployment ⏳
### Phase 4: Monitoring & Observability ⏳
### Phase 5: Security & Access Control ⏳
---
**Missing containers:** 3 only (2506, 2507, 2508) — see [MISSING_CONTAINERS_LIST.md](MISSING_CONTAINERS_LIST.md).
**Last Updated:** 2026-02-05

View File

@@ -252,7 +252,7 @@ This document outlines disaster recovery procedures for the Proxmox infrastructu
- **[BACKUP_AND_RESTORE.md](BACKUP_AND_RESTORE.md)** - Detailed backup procedures
- **[OPERATIONAL_RUNBOOKS.md](OPERATIONAL_RUNBOOKS.md)** - Operational procedures
- **[../../09-troubleshooting/TROUBLESHOOTING_FAQ.md](/docs/09-troubleshooting/TROUBLESHOOTING_FAQ.md)** - Troubleshooting guide
- **[TROUBLESHOOTING_FAQ.md](../09-troubleshooting/TROUBLESHOOTING_FAQ.md)** - Troubleshooting guide
---

View File

@@ -0,0 +1,129 @@
# Infra Deployment: Locked and Loaded Checklist
**Last Updated:** 2026-02-05
**Purpose:** Confirm that everything (including optional tooling) is in place to deploy all necessary infrastructure to Proxmox VE, and what remains to unblock completion tasks.
---
## ✅ Locked and loaded (repo and hosts)
The following are **in place** and ready for deployment. No further repo or template setup is required to *run* the deployment from a suitable host.
### 1. Templates on all Proxmox hosts
| Item | Status | Notes |
|------|--------|--------|
| File templates + scripts on ml110, r630-01, r630-02 | ✅ Done | `scripts/push-templates-to-proxmox.sh` run 2026-02-05 |
| Remote path | `/opt/smom-dbis-138-proxmox/` | templates/, config/, scripts/, lib/, install/ |
| LXC OS templates (Debian 12, Ubuntu 22.04) | ✅ On all hosts | `--download-templates` run; r630-02 had Debian 12 downloaded |
**Run Wave 0 from a machine without LAN:** copy scripts to a Proxmox host and run there (host is on LAN):
`bash scripts/run-via-proxmox-ssh.sh wave0 [--skip-backup] [--host 192.168.11.11]`
Use `--host 192.168.11.11` (r630-01) if NPMplus (VMID 10233) is on that host and the default host cannot reach NPMplus. Ensure NPM_URL in .env is reachable from the chosen host (e.g. `https://192.168.11.167:81` if .166 is not reachable from the node).
**Re-push or refresh:**
`bash scripts/push-templates-to-proxmox.sh`
`bash scripts/push-templates-to-proxmox.sh --download-templates`
See [PROXMOX_TEMPLATES_REFERENCE.md](PROXMOX_TEMPLATES_REFERENCE.md).
### 2. Dependencies (required + optional)
| Category | Status | Install |
|----------|--------|--------|
| Required (bash, curl, jq, openssl, ssh) | ✅ Checked by scripts | Default or `apt install curl jq openssl openssh-client` |
| Optional (sshpass, rsync, dnsutils, screen, tmux, htop, shellcheck, parallel, sqlite3) | ✅ Documented | `sudo apt install -y sshpass rsync dnsutils iproute2 screen tmux htop shellcheck parallel sqlite3` |
**Check:** `bash scripts/verify/check-dependencies.sh`
**Ref:** [11-references/APT_PACKAGES_CHECKLIST.md](../11-references/APT_PACKAGES_CHECKLIST.md) § Automation / jump host, [01-getting-started/PREREQUISITES.md](../01-getting-started/PREREQUISITES.md).
### 3. Scripts and automation
| Script / area | Purpose |
|---------------|---------|
| `scripts/push-templates-to-proxmox.sh` | Push templates + optional OS template download to all hosts |
| `scripts/run-via-proxmox-ssh.sh` | Copy scripts + .env to a Proxmox host and run Wave 0 / npmplus / backup via SSH (no LAN on your machine) |
| `scripts/run-wave0-from-lan.sh` | W0-1 (NPMplus RPC fix) + W0-3 (NPMplus backup) from LAN |
| `scripts/bridge/run-send-cross-chain.sh` | W0-2 sendCrossChain (real; needs PRIVATE_KEY, omit --dry-run) |
| `scripts/security/setup-ssh-key-auth.sh` | W1-1 SSH key auth |
| `scripts/security/firewall-proxmox-8006.sh` | W1-2 Firewall Proxmox API |
| `scripts/secure-validator-keys.sh` | W1-19 Validator key permissions (run on Proxmox host) |
| `scripts/verify/backup-npmplus.sh` | NPMplus backup |
| `scripts/verify/verify-npmplus-running-and-network.sh` | NPMplus: running, IP, gateway check |
| `scripts/npmplus/fix-npmplus-ip-and-gateway.sh` | NPMplus: set IP .167, gateway .1, start (run on r630-01) |
| `scripts/validation/validate-ips-and-gateways.sh` | Validate key IPs and gateway vs config/ip-addresses.conf |
| `scripts/verify/run-full-connection-and-fastly-tests.sh` | Full connection tests: validations, DNS, SSL, E2E, NPMplus FQDN+SSL, Fastly/origin 76.53.10.36 |
| `scripts/maintenance/schedule-npmplus-backup-cron.sh` | NPMplus backup cron (--show / --install) |
| `scripts/maintenance/schedule-daily-weekly-cron.sh` | Daily/weekly checks cron |
| `scripts/backup/automated-backup.sh` | Full automated backup |
| `scripts/ccip/ccip-deploy-checklist.sh` | CCIP env check + deployment order |
| `scripts/deployment/phase4-sovereign-tenants.sh` | Phase 4 steps (--show-steps / --dry-run) |
| smom-dbis-138-proxmox (on hosts) | deploy-phased.sh, pre-cache-os-template.sh, deploy-besu-nodes.sh, etc. |
### 4. Config and docs
| Item | Location |
|------|----------|
| Host IPs | `config/ip-addresses.conf` (ml110 .10, r630-01 .11, r630-02 .12) |
| Env template | `.env.example` (root and subprojects) |
| Step-by-step remaining work | [00-meta/REMAINING_WORK_DETAILED_STEPS.md](../00-meta/REMAINING_WORK_DETAILED_STEPS.md) |
| E2E task list + blockers | [00-meta/E2E_COMPLETION_TASKS_DETAILED_LIST.md](../00-meta/E2E_COMPLETION_TASKS_DETAILED_LIST.md) |
| Wave 2/3 operator checklist | [00-meta/WAVE2_WAVE3_OPERATOR_CHECKLIST.md](../00-meta/WAVE2_WAVE3_OPERATOR_CHECKLIST.md) |
| Validation commands | run-all-validation, validate-config-files, validate-genesis, verify-end-to-end-routing, run-full-verification |
---
## What still unblocks completion (operator / environment)
Deployment **scripts and templates** are ready. The following are **environment or operator actions** that unblock the actual run of Wave 0 → 2 → 3.
### Run from a host that has
1. **Network:** Access to LAN 192.168.11.x (for W0-1 NPMplus RPC fix, W0-3 backup, and SSH to Proxmox).
2. **SSH:** Key-based or password-based SSH to root@192.168.11.10, .11, .12 (for push, security scripts, and deploy). Optional: `sshpass` if using password auth (see APT checklist).
3. **Secrets (as needed):**
- **W0-2 (sendCrossChain):** `PRIVATE_KEY`, LINK approved in `.env`.
- **W0-3 / W1-8 (NPMplus backup):** `NPM_PASSWORD` in `.env`, NPMplus reachable.
- **Proxmox API (if used):** `PROXMOX_TOKEN_VALUE` or password for API (e.g. MCP, some deploy paths).
- **CCIP (Wave 2/3):** `CCIP_ETH_ROUTER`, `CCIP_ETH_LINK_TOKEN`, etc. per [ccip-deploy-checklist.sh](../../scripts/ccip/ccip-deploy-checklist.sh).
### Execution order to unblock
1. **Wave 0 (from LAN):**
`bash scripts/run-wave0-from-lan.sh`
Then W0-2 when ready: `bash scripts/bridge/run-send-cross-chain.sh <amount> [recipient]` (no --dry-run).
2. **Wave 1 (security/backup/cron):**
SSH/firewall (W1-1, W1-2), secure-validator-keys (W1-19), backup + cron install (W1-8) from the same host or Proxmox.
3. **Wave 2 / Wave 3:**
Follow [WAVE2_WAVE3_OPERATOR_CHECKLIST.md](../00-meta/WAVE2_WAVE3_OPERATOR_CHECKLIST.md) and [REMAINING_WORK_DETAILED_STEPS.md](../00-meta/REMAINING_WORK_DETAILED_STEPS.md) from a host with Proxmox/SSH access.
---
## Pre-flight (run anytime)
From project root, on the machine you will use for deployment (or any machine to verify repo side):
```bash
# Dependencies (required + optional report)
bash scripts/verify/check-dependencies.sh
# Config and validation
bash scripts/validation/validate-config-files.sh
bash scripts/verify/run-all-validation.sh
# Optional: dry-run push (requires SSH to hosts)
bash scripts/push-templates-to-proxmox.sh --dry-run
```
If you have LAN + SSH: run `scripts/push-templates-to-proxmox.sh` (and `--download-templates` if needed) once to ensure all three hosts have the latest templates and OS images.
---
## Summary
| Question | Answer |
|----------|--------|
| Are all necessary templates and scripts in the repo and on the Proxmox hosts? | **Yes.** Templates and scripts are pushed to ml110, r630-01, r630-02. OS templates (Debian 12, Ubuntu 22.04) are on all hosts. |
| Are required and optional dependencies documented and installable? | **Yes.** check-dependencies.sh; APT_PACKAGES_CHECKLIST § Automation; PREREQUISITES. |
| Is everything locked and loaded so we can deploy infra and unblock completion tasks? | **Yes, from the repo/host side.** To actually run deployment and unblock W0→W2→W3, run from a host with **LAN access**, **SSH to Proxmox**, and the **credentials** above. |
**Single reference for remaining steps:** [00-meta/REMAINING_WORK_DETAILED_STEPS.md](../00-meta/REMAINING_WORK_DETAILED_STEPS.md).

View File

@@ -1,5 +1,11 @@
# LVM Thin Storage Enabled on pve
**Last Updated:** 2026-01-31
**Document Version:** 1.0
**Status:** Active Documentation
---
**Date**: $(date)
**Status**: ✅ LVM Thin Storage Configured

View File

@@ -0,0 +1,138 @@
# Migrate workload off 503 GB R630 → r630-05 through r630-08 (256 GB each)
**Last Updated:** 2026-01-31
**Document Version:** 1.0
**Status:** Active Documentation
---
**Last updated:** 2026-01-31
**Goal:** Move all workload off the 503 GB R630 (r630-01) onto **r630-05, r630-06, r630-07, r630-08**, each with **256 GB** RAM, for the HA cluster.
---
## Current state (reference)
| Host | IP | RAM (from health check) | LXC count |
|----------|----------------|--------------------------|-----------|
| ml110 | 192.168.11.10 | 125 GB | 17 |
| r630-01 | 192.168.11.11 | **503 GB** | 69 |
| r630-02 | 192.168.11.12 | 251 GB | 10 |
The **503 GB** server is **r630-01** (192.168.11.11). That is the **source** host to migrate workload from.
---
## Target layout: r630-05 through r630-08 (256 GB each)
| Host | IP (planned) | RAM | Role / use |
|----------|----------------|-------|-------------------|
| **r630-05** | 192.168.11.15 | 256 GB | HA compute node 1 |
| **r630-06** | 192.168.11.16 | 256 GB | HA compute node 2 |
| **r630-07** | 192.168.11.17 | 256 GB | HA compute node 3 |
| **r630-08** | 192.168.11.18 | 256 GB | HA compute node 4 |
- **4 nodes × 256 GB** meets the HA cluster target (34 nodes, 128256 GB per node).
- Assign IPs 192.168.11.1518 (or your chosen range) when the hosts are racked and on the same VLAN as the rest of the cluster.
- Migrate workload from **r630-01** (and optionally from ml110/r630-02) onto these four nodes.
---
## Target state
- **No** single server with 503 GB holding all workload.
- **r630-05, r630-06, r630-07, r630-08** as the primary HA compute pool, each **256 GB** RAM.
- Workload spread across the four nodes; critical services on nodes that participate in HA.
---
## Phase 1: Inventory and plan
1. **List everything on the 503 GB host (r630-01).**
- From project root:
`./scripts/quick-proxmox-inventory.sh`
or SSH:
`ssh root@192.168.11.11 "pct list; qm list"`
- Note: VMID, name, RAM/CPU, and whether its critical (e.g. NPMplus 10233, RPC, Blockscout, DBIS, etc.).
2. **Decide destination per VM/container.**
- **ml110** (125 GB): optional for lighter containers.
- **r630-02** (251 GB): optional overflow; long-term can also be migrated to r630-05..08.
- **r630-05, r630-06, r630-07, r630-08** (256 GB each): primary targets; spread workload from r630-01 across all four.
3. **Strategy.**
- Add **r630-05, r630-06, r630-07, r630-08** to the cluster (256 GB each, IPs e.g. 192.168.11.1518). Migrate workload from r630-01 to these four nodes.
- When r630-01 is empty: power off, reduce RAM (remove DIMMs) if reusing; otherwise decommission.
---
## Phase 2: Migrate workload off r630-01
1. **Storage.**
Today there is **no shared storage**; each VM/containers disk lives on the host. So migration is:
- **LXC:** `pct migrate <vmid> <target-node>` (or stop → backup → restore on target).
- **QEMU:** `qm migrate <vmid> <target-node>` (live if storage allows) or stop → backup → restore on target.
2. **Order (suggested).**
- Migrate **non-critical** containers first (test, dev, duplicate roles).
- Then **critical** ones: NPMplus (10233), RPC-related, Blockscout, DBIS, etc. Do these in a maintenance window if you want minimal impact.
3. **Example migrate one LXC to r630-05 (or r630-06, r630-07, r630-08).**
From any node with cluster access, or from r630-01:
```bash
# List containers on r630-01
ssh root@192.168.11.11 "pct list"
# Migrate LXC 10234 to r630-05 (target must have storage; use r630-05..08 as needed)
pct migrate 10234 r630-05 --restart
```
If `pct migrate` fails (e.g. no shared storage), use **backup on source → restore on target**:
```bash
# On r630-01: backup
pct backup <vmid> backup-<vmid>.tar.gz --compress zstd
# Copy to r630-05 (or shared storage), then on r630-05:
pct restore <vmid> backup-<vmid>.tar.gz
# Reconfigure network (IP, etc.) if needed, then start.
```
4. **After each move:**
Check service on the new host (IP, DNS, NPMplus proxy targets, etc.).
---
## Phase 3: Downsize r630-01 to 128256 GB
1. **When r630-01 has no (or minimal) workload:**
Power off r630-01 (or put in maintenance).
2. **Reseat / remove DIMMs** so total RAM is **128 GB or 256 GB** (per your choice).
- Use Dell docs / R630 Owners Manual for population rules (which slots to leave populated for 128 or 256 GB).
- Keep DIMMs you pull for use in other R630s (to bring them to 128256 GB).
3. **Power on r630-01**, confirm RAM in BIOS and in Proxmox (e.g. `free -h`).
4. **Repeat for r630-02** if it currently has 251 GB and you want it at 128256 GB; use DIMMs from r630-01 if needed.
---
## Phase 4: Balance and HA readiness
- Ensure no single node is overloaded (CPU/RAM).
- Document final RAM per server: e.g. ml110 125 GB, r630-01 256 GB, r630-02 256 GB, (optional) r630-03 256 GB.
- When you introduce shared storage (Ceph or NFS) and Proxmox HA, these 128256 GB nodes will match the “128256 GB per server” HA target.
---
## Quick reference
| Step | Action |
|------|--------|
| 1 | Inventory r630-01: `ssh root@192.168.11.11 "pct list; qm list"` or `./scripts/quick-proxmox-inventory.sh` |
| 2 | Choose destinations: **r630-05, r630-06, r630-07, r630-08** (256 GB each); ml110/r630-02 optional. |
| 3 | Migrate LXC: `pct migrate <vmid> <target-node>` or backup/restore. |
| 4 | Migrate QEMU: `qm migrate <vmid> <target-node>` or backup/restore. |
| 5 | When r630-01 is empty: power off, reduce RAM to 128256 GB, power on. |
| 6 | Add r630-05..08 to cluster (256 GB each); optionally downsize r630-02 using DIMMs from r630-01. |
**Target:** All workload off the 503 GB R630 onto **r630-05, r630-06, r630-07, r630-08** (256 GB each) for the HA cluster.

View File

@@ -1,83 +1,61 @@
# Missing LXC Containers - Complete List
**Last Updated:** 2026-02-08
**Document Version:** 1.2
**Status:** Active Documentation
---
**VMIDs 2506, 2507, 2508 — destroyed 2026-02-08.** These containers were removed and are no longer in the inventory. Besu RPC range is now **25002505** only. No other VMIDs are currently missing.
**SSH review (2026-02-05):** All three Proxmox hosts were checked via SSH (`pct list`). See [MISSING_VMS_SSH_REVIEW_20260205.md](../../reports/status/MISSING_VMS_SSH_REVIEW_20260205.md) for the full inventory comparison.
**Date:** December 26, 2024
**Status:** Inventory of containers that need to be created
**Status:** Inventory of containers; 25062508 destroyed 2026-02-08; updated after SSH review to match current hosts.
---
## Summary
**Missing:** 0 VMIDs. **2506, 2507, 2508 were destroyed 2026-02-08** (see header). Besu RPC nodes in use: 25002505.
| Category | Missing | Total Expected | Status |
|----------|---------|----------------|--------|
| **Besu Nodes** | 7 | 19 | 12/19 deployed |
| **Hyperledger Services** | 5 | 5 | 0/5 deployed |
| **Explorer** | 1 | 1 | 0/1 deployed |
| **TOTAL** | **13** | **25** | **12/25 deployed** |
| **Besu Nodes** | 0 | 16 | 16/16 deployed (25062508 removed) |
| **Hyperledger Services** | 0 | 5 | 5/5 deployed |
| **Explorer** | 0 | 1 | 1/1 deployed |
| **TOTAL** | **0** | **22** | **22/22 deployed** |
---
## 🔴 Missing Containers by Category
## 🔴 Missing Containers by Category (postSSH review)
### 1. Besu Nodes (ChainID 138)
**Note:** 1504, 2503, 2504, 2505 exist on hosts (as besu-sentry-ali, besu-rpc-hybx-1/2/3). Ali/Luis/Putu RPC nodes also exist on ml110 at VMIDs 23032308. **2506, 2507, 2508 were destroyed 2026-02-08** — no longer in inventory.
#### Missing Sentry Node
### 1. Besu Nodes (ChainID 138) — no missing VMIDs
| VMID | Hostname | Role | IP Address | Priority | Notes |
|------|----------|------|------------|----------|-------|
| **1504** | `besu-sentry-5` | Besu Sentry Node | 192.168.11.154 | **High** | New container for Ali's dedicated host |
#### ~~Missing Sentry Node~~ → **Deployed** (SSH review 2026-02-05)
**Specifications:**
- Memory: 4GB
- CPU: 2 cores
- Disk: 100GB
- Network: 192.168.11.154
- Discovery: Enabled
- Access: Ali (Full)
| VMID | Hostname | Role | Actual (host) | Notes |
|------|----------|------|---------------|-------|
| **1504** | `besu-sentry-5` | Sentry | ml110: `besu-sentry-ali` | ✅ Exists (name differs) |
---
#### Missing RPC Nodes
#### ~~Missing RPC Nodes (2506, 2507, 2508)~~ → **Destroyed 2026-02-08**
| VMID | Hostname | Role | IP Address | Priority | Notes |
|------|----------|------|------------|----------|-------|
| **2503** | `besu-rpc-4` | Besu RPC Node (Ali - 0x8a) | 192.168.11.253 | **High** | Ali's RPC node - Permissioned identity: 0x8a |
| **2504** | `besu-rpc-4` | Besu RPC Node (Ali - 0x1) | 192.168.11.254 | **High** | Ali's RPC node - Permissioned identity: 0x1 |
| **2505** | `besu-rpc-luis` | Besu RPC Node (Luis - 0x8a) | 192.168.11.255 | **High** | Luis's RPC container - Permissioned identity: 0x8a |
| **2506** | `besu-rpc-luis` | Besu RPC Node (Luis - 0x1) | 192.168.11.256 | **High** | Luis's RPC container - Permissioned identity: 0x1 |
| **2507** | `besu-rpc-putu` | Besu RPC Node (Putu - 0x8a) | 192.168.11.257 | **High** | Putu's RPC container - Permissioned identity: 0x8a |
| **2508** | `besu-rpc-putu` | Besu RPC Node (Putu - 0x1) | 192.168.11.258 | **High** | Putu's RPC container - Permissioned identity: 0x1 |
**Specifications (per container):**
- Memory: 16GB
- CPU: 4 cores
- Disk: 200GB
- Discovery: **Disabled** (prevents connection to Ethereum mainnet while reporting chainID 0x1 to MetaMask for wallet compatibility)
- **Authentication: JWT Auth Required** (all containers)
**Access Model:**
- **2503** (besu-rpc-4): Ali (Full) - 0x8a identity
- **2504** (besu-rpc-4): Ali (Full) - 0x1 identity
- **2505** (besu-rpc-luis): Luis (RPC-only) - 0x8a identity
- **2506** (besu-rpc-luis): Luis (RPC-only) - 0x1 identity
- **2507** (besu-rpc-putu): Putu (RPC-only) - 0x8a identity
- **2508** (besu-rpc-putu): Putu (RPC-only) - 0x1 identity
**Configuration:**
- All use permissioned RPC configuration
- Discovery disabled for all (prevents connection to Ethereum mainnet while reporting chainID 0x1 to MetaMask for wallet compatibility)
- Each container has separate permissioned identity access
- **All require JWT authentication** via nginx reverse proxy
2503, 2504, 2505 exist on r630-01 as besu-rpc-hybx-1/2/3. **VMIDs 2506, 2507, 2508 were removed and destroyed on all Proxmox hosts (2026-02-08).** Script: `scripts/destroy-vmids-2506-2508.sh`. IPs 192.168.11.202, .203, .204 are freed. Besu RPC range is **25002505** only.
---
### 2. Hyperledger Services
### 2. Hyperledger Services — all deployed (SSH review 2026-02-05)
#### Firefly
| VMID | Hostname | Role | IP Address | Priority | Notes |
|------|----------|------|------------|----------|-------|
| **6200** | `firefly-1` | Hyperledger Firefly Core | 192.168.11.66 | **High** | Workflow/orchestration |
| **6201** | `firefly-2` | Hyperledger Firefly Node | 192.168.11.67 | **High** | For Ali's dedicated host (ChainID 138) |
| VMID | Hostname | Role | Actual (host) | Notes |
|------|----------|------|---------------|-------|
| **6200** | `firefly-1` | Firefly Core | r630-02: firefly-1 | ✅ Deployed |
| **6201** | `firefly-2` | Firefly Node | r630-02: firefly-ali-1 | ✅ Deployed (**stopped**) — start if needed |
**Specifications (per container):**
- Memory: 4GB
@@ -93,9 +71,9 @@
#### Cacti
| VMID | Hostname | Role | IP Address | Priority | Notes |
|------|----------|------|------------|----------|-------|
| **5200** | `cacti-1` | Hyperledger Cacti | 192.168.11.64 | **High** | Interop middleware |
| VMID | Hostname | Role | Actual (host) | Notes |
|------|----------|------|---------------|-------|
| **5200** | `cacti-1` | Cacti | r630-01: cacti-1 | ✅ Deployed |
**Specifications:**
- Memory: 4GB
@@ -106,9 +84,9 @@
#### Fabric
| VMID | Hostname | Role | IP Address | Priority | Notes |
|------|----------|------|------------|----------|-------|
| **6000** | `fabric-1` | Hyperledger Fabric | 192.168.11.65 | Medium | Enterprise contracts |
| VMID | Hostname | Role | Actual (host) | Notes |
|------|----------|------|---------------|-------|
| **6000** | `fabric-1` | Fabric | r630-01: fabric-1 | ✅ Deployed |
**Specifications:**
- Memory: 8GB
@@ -119,9 +97,9 @@
#### Indy
| VMID | Hostname | Role | IP Address | Priority | Notes |
|------|----------|------|------------|----------|-------|
| **6400** | `indy-1` | Hyperledger Indy | 192.168.11.68 | Medium | Identity layer |
| VMID | Hostname | Role | Actual (host) | Notes |
|------|----------|------|---------------|-------|
| **6400** | `indy-1` | Indy | r630-01: indy-1 | ✅ Deployed |
**Specifications:**
- Memory: 8GB
@@ -130,13 +108,13 @@
---
### 3. Explorer
### 3. Explorer — deployed (SSH review 2026-02-05)
#### Blockscout
| VMID | Hostname | Role | IP Address | Priority | Notes |
|------|----------|------|------------|----------|-------|
| **5000** | `blockscout-1` | Blockscout Explorer | TBD | **High** | Blockchain explorer for ChainID 138 |
| VMID | Hostname | Role | Actual (host) | Notes |
|------|----------|------|---------------|-------|
| **5000** | `blockscout-1` | Blockscout | r630-02: blockscout-1 | ✅ Deployed |
**Specifications:**
- Memory: 8GB+
@@ -148,59 +126,45 @@
## 📊 Deployment Priority
### Priority 1 - High (ChainID 138 Critical)
### To create
1. **1504** - `besu-sentry-5` (Ali's dedicated host)
2. **2503** - `besu-rpc-4` (Ali's RPC node - 0x8a identity)
3. **2504** - `besu-rpc-4` (Ali's RPC node - 0x1 identity)
4. **2505** - `besu-rpc-luis` (Luis's RPC container - 0x8a identity)
5. **2506** - `besu-rpc-luis` (Luis's RPC container - 0x1 identity)
6. **2507** - `besu-rpc-putu` (Putu's RPC container - 0x8a identity)
7. **2508** - `besu-rpc-putu` (Putu's RPC container - 0x1 identity)
8. **6201** - `firefly-2` (Ali's dedicated host, ChainID 138)
9. **5000** - `blockscout-1` (Explorer for ChainID 138)
None. 2506, 2507, 2508 were destroyed 2026-02-08; no replacement planned.
**Note:** All RPC containers require JWT authentication via nginx reverse proxy.
### Optional
### Priority 2 - High (Infrastructure)
5. **6200** - `firefly-1` (Core Firefly service)
6. **5200** - `cacti-1` (Interop middleware)
### Priority 3 - Medium
7. **6000** - `fabric-1` (Enterprise contracts)
8. **6400** - `indy-1` (Identity layer)
- **6201** — Start `firefly-ali-1` on r630-02 if needed (container exists but stopped).
---
## ✅ Currently Deployed Containers
## ✅ Currently Deployed Containers (SSH review 2026-02-05)
### Besu Network (12/14)
### Besu Network (16/19)
| VMID | Hostname | Status |
|------|----------|--------|
| 1000 | besu-validator-1 | ✅ Deployed |
| 1001 | besu-validator-2 | ✅ Deployed |
| 1002 | besu-validator-3 | ✅ Deployed |
| 1003 | besu-validator-4 | ✅ Deployed |
| 1004 | besu-validator-5 | ✅ Deployed |
| 1500 | besu-sentry-1 | ✅ Deployed |
| 1501 | besu-sentry-2 | ✅ Deployed |
| 1502 | besu-sentry-3 | ✅ Deployed |
| 1503 | besu-sentry-4 | ✅ Deployed |
| 1504 | besu-sentry-5 | ❌ **MISSING** |
| 2500 | besu-rpc-1 | ✅ Deployed |
| 2501 | besu-rpc-2 | ✅ Deployed |
| 2502 | besu-rpc-3 | ✅ Deployed |
| 2503 | besu-rpc-4 | ❌ **MISSING** |
| VMID | Hostname (doc) | Actual name/host | Status |
|------|-----------------|------------------|--------|
| 10001004 | validators | — | ✅ Deployed |
| 15001503 | sentries | — | ✅ Deployed |
| **1504** | besu-sentry-5 | besu-sentry-ali (ml110) | ✅ Deployed |
| 25002502 | besu-rpc-1/2/3 | — | ✅ Deployed |
| **2503** | besu-rpc-4 | besu-rpc-hybx-1 (r630-01) | ✅ Deployed |
| **2504** | besu-rpc-4 | besu-rpc-hybx-2 (r630-01) | ✅ Deployed |
| **2505** | besu-rpc-luis | besu-rpc-hybx-3 (r630-01) | ✅ Deployed |
| **2506** | besu-rpc-luis | — | 🗑️ **Destroyed 2026-02-08** |
| **2507** | besu-rpc-putu | — | 🗑️ **Destroyed 2026-02-08** |
| **2508** | besu-rpc-putu | — | 🗑️ **Destroyed 2026-02-08** |
### Services (2/4)
### Services & Hyperledger & Explorer
| VMID | Hostname | Status |
|------|----------|--------|
| 3500 | oracle-publisher-1 | ✅ Deployed |
| 3501 | ccip-monitor-1 | ✅ Deployed |
| VMID | Hostname | Actual (host) | Status |
|------|----------|---------------|--------|
| 3500 | oracle-publisher-1 | — | ✅ Deployed |
| 3501 | ccip-monitor-1 | — | ✅ Deployed |
| 5000 | blockscout-1 | blockscout-1 (r630-02) | ✅ Deployed |
| 5200 | cacti-1 | cacti-1 (r630-01) | ✅ Deployed |
| 6000 | fabric-1 | fabric-1 (r630-01) | ✅ Deployed |
| 6200 | firefly-1 | firefly-1 (r630-02) | ✅ Deployed |
| 6201 | firefly-2 | firefly-ali-1 (r630-02) | ✅ Deployed (stopped) |
| 6400 | indy-1 | indy-1 (r630-01) | ✅ Deployed |
---
@@ -222,118 +186,34 @@
---
## 📝 Deployment Checklist
## 📝 Deployment Checklist (only missing items after SSH review)
### Besu Nodes (Priority 1)
### Besu RPC — 2506, 2507, 2508 destroyed 2026-02-08
- [ ] **1504** - Create `besu-sentry-5` container
- [ ] Configure static-nodes.json
- [ ] Configure permissioned-nodes.json
- [ ] Enable discovery
- [ ] Verify peer connections
- [ ] Access: Ali (Full)
No create action. RPC range is 25002505 only.
- [ ] **2503** - Create `besu-rpc-4` container (Ali's RPC - 0x8a)
- [ ] Use permissioned RPC configuration
- [ ] Configure static-nodes.json
- [ ] Configure permissioned-nodes.json
- [ ] **Disable discovery** (critical!)
- [ ] Configure permissioned identity (0x8a)
- [ ] Set up JWT authentication
- [ ] Access: Ali (Full)
### Optional
- [ ] **2504** - Create `besu-rpc-4` container (Ali's RPC - 0x1)
- [ ] Use permissioned RPC configuration
- [ ] Configure static-nodes.json
- [ ] Configure permissioned-nodes.json
- [ ] **Disable discovery** (critical!)
- [ ] Configure permissioned identity (0x1)
- [ ] Set up JWT authentication
- [ ] Access: Ali (Full)
- [ ] **2505** - Create `besu-rpc-luis` container (Luis's RPC - 0x8a)
- [ ] Use permissioned RPC configuration
- [ ] Configure static-nodes.json
- [ ] Configure permissioned-nodes.json
- [ ] **Disable discovery** (critical!)
- [ ] Configure permissioned identity (0x8a)
- [ ] Set up JWT authentication
- [ ] Set up RPC-only access for Luis
- [ ] Access: Luis (RPC-only, 0x8a identity)
- [ ] **2506** - Create `besu-rpc-luis` container (Luis's RPC - 0x1)
- [ ] Use permissioned RPC configuration
- [ ] Configure static-nodes.json
- [ ] Configure permissioned-nodes.json
- [ ] **Disable discovery** (critical!)
- [ ] Configure permissioned identity (0x1)
- [ ] Set up JWT authentication
- [ ] Set up RPC-only access for Luis
- [ ] Access: Luis (RPC-only, 0x1 identity)
- [ ] **2507** - Create `besu-rpc-putu` container (Putu's RPC - 0x8a)
- [ ] Use permissioned RPC configuration
- [ ] Configure static-nodes.json
- [ ] Configure permissioned-nodes.json
- [ ] **Disable discovery** (critical!)
- [ ] Configure permissioned identity (0x8a)
- [ ] Set up JWT authentication
- [ ] Set up RPC-only access for Putu
- [ ] Access: Putu (RPC-only, 0x8a identity)
- [ ] **2508** - Create `besu-rpc-putu` container (Putu's RPC - 0x1)
- [ ] Use permissioned RPC configuration
- [ ] Configure static-nodes.json
- [ ] Configure permissioned-nodes.json
- [ ] **Disable discovery** (critical!)
- [ ] Configure permissioned identity (0x1)
- [ ] Set up JWT authentication
- [ ] Set up RPC-only access for Putu
- [ ] Access: Putu (RPC-only, 0x1 identity)
### Hyperledger Services
- [ ] **6200** - Create `firefly-1` container
- [ ] **6201** - Create `firefly-2` container (Ali's host)
- [ ] **5200** - Create `cacti-1` container
- [ ] **6000** - Create `fabric-1` container
- [ ] **6400** - Create `indy-1` container
### Explorer
- [ ] **5000** - Create `blockscout-1` container
- [ ] Set up PostgreSQL database
- [ ] Configure RPC endpoints
- [ ] Set up indexing
- [ ] **6201** - Start existing container `firefly-ali-1` on r630-02 if needed
---
## 🔗 Related Documentation
- [ChainID 138 Configuration Guide](CHAIN138_BESU_CONFIGURATION.md)
- [ChainID 138 Quick Start](/docs/01-getting-started/CHAIN138_QUICK_START.md)
- [VMID Allocation](smom-dbis-138-proxmox/config/proxmox.conf)
- [Deployment Plan](dbis_core/DEPLOYMENT_PLAN.md)
- [ChainID 138 Configuration Guide](../06-besu/CHAIN138_BESU_CONFIGURATION.md)
- [ChainID 138 Quick Start](../01-getting-started/CHAIN138_QUICK_START.md)
- [VMID Allocation](../02-architecture/VMID_ALLOCATION_FINAL.md)
- [Deployment Plan](../../dbis_core/DEPLOYMENT_PLAN.md)
---
## 📊 Summary Statistics
**Total Missing:** 13 containers
- Besu Nodes: 7 (1504, 2503, 2504, 2505, 2506, 2507, 2508)
- Hyperledger Services: 5 (6200, 6201, 5200, 6000, 6400)
- Explorer: 1 (5000)
**Total Expected:** 25 containers
- Besu Network: 19 (12 existing + 7 new: 1504, 2503-2508)
- Hyperledger Services: 5
- Explorer: 1
**Deployment Rate:** 48% (12/25)
**Important:** All RPC containers (2503-2508) require JWT authentication via nginx reverse proxy.
**Missing:** 0 VMIDs. 25062508 destroyed 2026-02-08.
**Deployed:** 22/22.
**Important:** RPC containers 25032505 require JWT authentication via nginx reverse proxy where used.
---
**Last Updated:** December 26, 2024
**Last Updated:** 2026-02-08 (25062508 destroyed); SSH review 2026-02-05; original list December 26, 2024

View File

@@ -1,13 +1,16 @@
# Operational Runbooks - Master Index
**Last Updated:** 2025-01-20
**Document Version:** 1.0
**Navigation:** [Home](../01-getting-started/README.md) > [Deployment](README.md) > Operational Runbooks
**Last Updated:** 2026-02-12
**Document Version:** 1.2
**Status:** Active Documentation
---
## Overview
This document provides a master index of all operational runbooks and procedures for the Sankofa/Phoenix/PanTel Proxmox deployment.
This document provides a master index of all operational runbooks and procedures for the Sankofa/Phoenix/PanTel Proxmox deployment. For issue-specific troubleshooting (RPC, QBFT, SSH, tunnel, etc.), see **[../09-troubleshooting/README.md](../09-troubleshooting/README.md)** and [TROUBLESHOOTING_FAQ.md](../09-troubleshooting/TROUBLESHOOTING_FAQ.md).
---
@@ -19,6 +22,27 @@ This document provides a master index of all operational runbooks and procedures
- **[Service Recovery](#service-recovery)** - Recovering failed services
- **[Network Recovery](#network-recovery)** - Network connectivity issues
### VM/Container Restart
To restart all stopped containers across Proxmox hosts via SSH:
```bash
# From project root; source config for host IPs
source config/ip-addresses.conf
# List stopped per host
for host in $PROXMOX_HOST_ML110 $PROXMOX_HOST_R630_01 $PROXMOX_HOST_R630_02; do
ssh root@$host "pct list | awk '\$2==\"stopped\" {print \$1}'"
done
# Start each (replace HOST and VMID)
ssh root@HOST "pct start VMID"
```
**Verification:** `scripts/verify/verify-backend-vms.sh` | **Report:** [VM_RESTART_AND_VERIFICATION_20260203.md](../../reports/status/VM_RESTART_AND_VERIFICATION_20260203.md)
**CT 2301 corrupted rootfs:** If besu-rpc-private-1 (ml110) fails with pre-start hook: `scripts/fix-ct-2301-corrupted-rootfs.sh`
### Common Operations
- **[Adding a Validator](#adding-a-validator)** - Add new validator node
@@ -32,7 +56,7 @@ This document provides a master index of all operational runbooks and procedures
### ER605 Router Configuration
- **[ER605_ROUTER_CONFIGURATION.md](/docs/04-configuration/ER605_ROUTER_CONFIGURATION.md)** - Complete router configuration guide
- **[ER605_ROUTER_CONFIGURATION.md](../04-configuration/ER605_ROUTER_CONFIGURATION.md)** - Complete router configuration guide
- **VLAN Configuration** - Setting up VLANs on ER605
- **NAT Pool Configuration** - Configuring role-based egress NAT
- **Failover Configuration** - Setting up WAN failover
@@ -43,15 +67,32 @@ This document provides a master index of all operational runbooks and procedures
- **VLAN Troubleshooting** - Common VLAN issues and solutions
- **Inter-VLAN Routing** - Configuring routing between VLANs
### Cloudflare Zero Trust
### Edge and DNS (Fastly / Direct to NPMplus)
- **[CLOUDFLARE_ZERO_TRUST_GUIDE.md](CLOUDFLARE_ZERO_TRUST_GUIDE.md)** - Complete Cloudflare setup
- **Tunnel Management** - Managing cloudflared tunnels
- **Application Publishing** - Publishing applications via Cloudflare Access
- **[EDGE_PORT_VERIFICATION_RUNBOOK.md](../05-network/EDGE_PORT_VERIFICATION_RUNBOOK.md)** - Phase 0: verify 76.53.10.36:80/443 from internet
- **[CLOUDFLARE_ROUTING_MASTER.md](../05-network/CLOUDFLARE_ROUTING_MASTER.md)** - Edge routing (Fastly or direct → UDM Pro → NPMplus; Option B for RPC)
- **[OPTION_B_RPC_VIA_TUNNEL_RUNBOOK.md](../05-network/OPTION_B_RPC_VIA_TUNNEL_RUNBOOK.md)** - RPC via Cloudflare Tunnel (6 hostnames → NPMplus); [TUNNEL_SFVALLEY01_INSTALL.md](../04-configuration/cloudflare/TUNNEL_SFVALLEY01_INSTALL.md) - connector install
- **Fastly:** Purge cache, health checks, origin 76.53.10.36 (see Fastly dashboard; optional restrict UDM Pro to Fastly IPs)
- **NPMplus HA failover:** [NPMPLUS_HA_SETUP_GUIDE.md](../04-configuration/NPMPLUS_HA_SETUP_GUIDE.md) - Keepalived/HAProxy; failover to 10234
- **502 runbook:** Check (1) NPMplus (192.168.11.167) up and proxy hosts correct, (2) backend VMID 2201 (RPC) or 5000 (Blockscout) up and reachable, (3) if using Fastly, origin reachability from Fastly to 76.53.10.36; if Option B RPC, tunnel connector (e.g. VMID 102) running. Blockscout 502: [BLOCKSCOUT_FIX_RUNBOOK.md](BLOCKSCOUT_FIX_RUNBOOK.md)
### Cloudflare (DNS and optional Access)
- **[CLOUDFLARE_ZERO_TRUST_GUIDE.md](../04-configuration/cloudflare/CLOUDFLARE_ZERO_TRUST_GUIDE.md)** - Cloudflare setup (DNS retained; Option B tunnel for RPC only)
- **Application Publishing** - Publishing applications via Cloudflare Access (optional)
- **Access Policy Management** - Managing access policies
---
## Smart Accounts (Chain 138 / ERC-4337)
- **Location:** `smom-dbis-138/script/smart-accounts/DeploySmartAccountsKit.s.sol`
- **Env (required for deploy/use):** `PRIVATE_KEY`, `RPC_URL_138`. Optional: `ENTRY_POINT`, `SMART_ACCOUNT_FACTORY`, `PAYMASTER` — set to deployed addresses to use existing contracts; otherwise deploy EntryPoint (ERC-4337), AccountFactory (e.g. MetaMask Smart Accounts Kit), and optionally Paymaster, then set in `.env` and re-run.
- **Run:** `forge script script/smart-accounts/DeploySmartAccountsKit.s.sol --rpc-url $RPC_URL_138 --broadcast` (from `smom-dbis-138`). If addresses are in env, script logs them; else it logs next steps.
- **See:** [PLACEHOLDERS_AND_TBD.md](../PLACEHOLDERS_AND_TBD.md) — Smart Accounts Kit.
---
## Besu Operations
### Node Management
@@ -107,10 +148,26 @@ This document provides a master index of all operational runbooks and procedures
**Rollback:**
- If issues occur: `pct rollback <vmid> pre-upgrade-YYYYMMDD`
### Node list deploy and verify (static-nodes.json / permissions-nodes.toml)
**Canonical source:** `config/besu-node-lists/` (single source of truth for all 32 Besu nodes).
- **Deploy** to all nodes: `scripts/deploy-besu-node-lists-to-all.sh` (optionally `--dry-run`). Pushes `static-nodes.json` and `permissions-nodes.toml` to `/etc/besu/` on every validator, sentry, and RPC (VMIDs 10001004, 15001508, 2101, 2102, 2201, 2301, 23032306, 24002403, 25002505).
- **Verify** presence and match canonical: `scripts/verify/verify-static-permissions-on-all-besu-nodes.sh --checksum`.
- **Restart Besu** to reload lists: `scripts/besu/restart-besu-reload-node-lists.sh` (optional; lists are read at startup).
**See:** [06-besu/BESU_NODES_FILE_REFERENCE.md](../06-besu/BESU_NODES_FILE_REFERENCE.md).
### RPC block production (chain 138 / current block)
If an RPC node returns wrong chain ID or block 0 / no block: use the dedicated runbook for status checks and common fixes (host-allowlist, tx-pool-min-score, permissions/static-nodes paths, discovery, Besu binary/genesis).
- **Runbook:** [09-troubleshooting/RPC_NODES_BLOCK_PRODUCTION_FIX.md](../09-troubleshooting/RPC_NODES_BLOCK_PRODUCTION_FIX.md)
### Allowlist Management
- **[BESU_ALLOWLIST_RUNBOOK.md](BESU_ALLOWLIST_RUNBOOK.md)** - Complete allowlist guide
- **[BESU_ALLOWLIST_QUICK_START.md](BESU_ALLOWLIST_QUICK_START.md)** - Quick start for allowlist issues
- **[BESU_ALLOWLIST_RUNBOOK.md](../06-besu/BESU_ALLOWLIST_RUNBOOK.md)** - Complete allowlist guide
- **[BESU_ALLOWLIST_QUICK_START.md](../06-besu/BESU_ALLOWLIST_QUICK_START.md)** - Quick start for allowlist issues
**Common Operations:**
- Generate allowlist from nodekeys
@@ -120,18 +177,77 @@ This document provides a master index of all operational runbooks and procedures
### Consensus Troubleshooting
- **[QBFT_TROUBLESHOOTING.md](/docs/09-troubleshooting/QBFT_TROUBLESHOOTING.md)** - QBFT consensus troubleshooting
- **Block Production Issues** - Troubleshooting block production
- **[QBFT_TROUBLESHOOTING.md](../09-troubleshooting/QBFT_TROUBLESHOOTING.md)** - QBFT consensus troubleshooting
- **Block Production Issues** - [BLOCK_PRODUCTION_FIX_RUNBOOK.md](../08-monitoring/BLOCK_PRODUCTION_FIX_RUNBOOK.md) — restore block production (permissioning TOML, tx-pool, restart validators 10001004)
- **Validator Recognition** - Validator not being recognized
---
## GRU M1 Listing Operations
### GRU M1 Listing Dry-Run
- **[GRU_M1_LISTING_DRY_RUN_RUNBOOK.md](../runbooks/GRU_M1_LISTING_DRY_RUN_RUNBOOK.md)** - Procedural runbook for cUSDC/cUSDT listing dry-runs, dominance simulation, peg stress-tests, CMC/CG submission
**See also:** [docs/gru-m1/](../gru-m1/)
---
## Blockscout & Contract Verification
### Blockscout (VMID 5000)
- **[BLOCKSCOUT_FIX_RUNBOOK.md](BLOCKSCOUT_FIX_RUNBOOK.md)** — Troubleshooting, migration from thin1, 502/DB issues
- **IP:** 192.168.11.140 (fixed; see [VMID_IP_FIXED_REFERENCE.md](../11-references/VMID_IP_FIXED_REFERENCE.md))
### Forge Contract Verification
Forge `verify-contract` fails against Blockscout with "Params 'module' and 'action' are required". Use the dedicated proxy.
**Preferred (orchestrated; starts proxy if needed):**
```bash
source smom-dbis-138/.env 2>/dev/null
./scripts/verify/run-contract-verification-with-proxy.sh
```
**Manual (proxy + verify):**
1. Start proxy: `BLOCKSCOUT_URL=http://192.168.11.140:4000 node forge-verification-proxy/server.js`
2. Run: `./scripts/verify-contracts-blockscout.sh`
**Alternative:** Nginx fix (`scripts/fix-blockscout-forge-verification.sh`) or manual verification at https://explorer.d-bis.org/address/<ADDR>#verify-contract
**See:**
- **[BLOCKSCOUT_FORGE_VERIFICATION_EVALUATION.md](BLOCKSCOUT_FORGE_VERIFICATION_EVALUATION.md)** — Evaluation and design
- **[forge-verification-proxy/README.md](../../forge-verification-proxy/README.md)** — Proxy usage
- **[CONTRACT_DEPLOYMENT_RUNBOOK.md](CONTRACT_DEPLOYMENT_RUNBOOK.md)** — Deploy and verify workflow
---
## CCIP Operations
### CCIP Relay Service (Chain 138 → Mainnet)
**Status:** ✅ Deployed on r630-01 (192.168.11.11) at `/opt/smom-dbis-138/services/relay`
- **[CCIP_RELAY_DEPLOYMENT.md](../07-ccip/CCIP_RELAY_DEPLOYMENT.md)** - Relay deployment, config, start/restart/logs, troubleshooting
**Quick commands:**
```bash
# View logs
ssh root@192.168.11.11 "tail -f /opt/smom-dbis-138/services/relay/relay-service.log"
# Restart
ssh root@192.168.11.11 "pkill -f 'node index.js' 2>/dev/null; sleep 2; cd /opt/smom-dbis-138/services/relay && nohup ./start-relay.sh >> relay-service.log 2>&1 &"
```
**Configuration:** Uses VMID 2201 (192.168.11.221:8545) for Chain 138 RPC; `START_BLOCK=latest`.
### CCIP Deployment
- **[CCIP_DEPLOYMENT_SPEC.md](CCIP_DEPLOYMENT_SPEC.md)** - Complete CCIP deployment specification
- **[ORCHESTRATION_DEPLOYMENT_GUIDE.md](ORCHESTRATION_DEPLOYMENT_GUIDE.md)** - Deployment orchestration
- **[CCIP_DEPLOYMENT_SPEC.md](../07-ccip/CCIP_DEPLOYMENT_SPEC.md)** - Complete CCIP deployment specification
- **[ORCHESTRATION_DEPLOYMENT_GUIDE.md](../02-architecture/ORCHESTRATION_DEPLOYMENT_GUIDE.md)** - Deployment orchestration
**WETH9 Bridge (Chain 138) Router mismatch fix:** Run `scripts/deploy-and-configure-weth9-bridge-chain138.sh` (requires `PRIVATE_KEY`); then set `CCIPWETH9_BRIDGE_CHAIN138` to the printed address. Deploy scripts now default to working CCIP router (0x8078A...). See [07-ccip/README.md](../07-ccip/README.md), [COMPREHENSIVE_STATUS_BRIDGE_READY.md](../../COMPREHENSIVE_STATUS_BRIDGE_READY.md), [scripts/README.md](../../scripts/README.md).
**Deployment Phases:**
1. Deploy Ops/Admin nodes (5400-5401)
@@ -148,12 +264,37 @@ This document provides a master index of all operational runbooks and procedures
---
## Admin Runner (Scripts / MCP) — Phase 4.4
**Purpose:** Run admin scripts and MCP tooling with central audit (who ran what, when, outcome). Design and implementation when infra admin view is built.
- **Design:** Runner service or wrapper that (1) authenticates (e.g. JWT or API key), (2) executes script/MCP action, (3) appends to central audit (dbis_core POST `/api/admin/central/audit`) with actor, action, resource, outcome.
- **Docs:** [MASTER_PLAN.md](../00-meta/MASTER_PLAN.md) §4.4; [admin-console-frontend-plan.md](../../dbis_core/docs/admin-console-frontend-plan.md).
- **When:** Implement with org-level panel and infra admin view.
---
## Phase 2 & 3 Deployment (Infrastructure)
**Phase 2 — Monitoring stack:** Deploy Prometheus, Grafana, Loki, Alertmanager; configure Cloudflare Access; enable health-check alerting. See [MONITORING_SUMMARY.md](../08-monitoring/MONITORING_SUMMARY.md), [MASTER_PLAN.md](../00-meta/MASTER_PLAN.md) §5.
**Phase 2 — Security:** SSH key-based auth (disable password); firewall Proxmox API (port 8006); secure validator keys; audits VLT-024, ISO-024; bridge integrations BRG-VLT, BRG-ISO. See [SECRETS_KEYS_CONFIGURATION.md](../04-configuration/SECRETS_KEYS_CONFIGURATION.md), [IMPLEMENTATION_CHECKLIST.md](../10-best-practices/IMPLEMENTATION_CHECKLIST.md).
**Phase 2 — Backups:** Automated backup script; encrypted validator keys; NPMplus backup (NPM_PASSWORD); config backup. See [BACKUP_AND_RESTORE.md](BACKUP_AND_RESTORE.md), `scripts/backup-proxmox-configs.sh`, `scripts/verify/backup-npmplus.sh`.
**Phase 3 — CCIP fleet:** Ops/Admin nodes (5400-5401), commit/execute/RMN nodes, NAT pools. See [CCIP_DEPLOYMENT_SPEC.md](../07-ccip/CCIP_DEPLOYMENT_SPEC.md), [OPERATIONAL_RUNBOOKS.md § CCIP Operations](OPERATIONAL_RUNBOOKS.md#ccip-operations).
**Phase 4 — Sovereign tenants (docs/runbook):** VLANs 200203 (Phoenix Sovereign Cloud Band), Block #6 egress NAT, tenant isolation. **Script:** `scripts/deployment/phase4-sovereign-tenants.sh [--show-steps|--dry-run]`. **Docs:** [ORCHESTRATION_DEPLOYMENT_GUIDE.md](../02-architecture/ORCHESTRATION_DEPLOYMENT_GUIDE.md) § Phase 4, [NETWORK_ARCHITECTURE.md](../02-architecture/NETWORK_ARCHITECTURE.md) (VLAN 200203), [UDM_PRO_FIREWALL_MANUAL_CONFIGURATION.md](../04-configuration/UDM_PRO_FIREWALL_MANUAL_CONFIGURATION.md) (sovereign tenant isolation rules).
---
## Monitoring & Observability
### Monitoring Setup
- **[MONITORING_SUMMARY.md](MONITORING_SUMMARY.md)** - Monitoring setup
- **[BLOCK_PRODUCTION_MONITORING.md](BLOCK_PRODUCTION_MONITORING.md)** - Block production monitoring
- **[MONITORING_SUMMARY.md](../08-monitoring/MONITORING_SUMMARY.md)** - Monitoring setup
- **[BLOCK_PRODUCTION_FIX_RUNBOOK.md](../08-monitoring/BLOCK_PRODUCTION_FIX_RUNBOOK.md)** - Restore block production (permissioning, tx-pool, validators 10001004)
- **[BLOCK_PRODUCTION_MONITORING.md](../08-monitoring/BLOCK_PRODUCTION_MONITORING.md)** - Block production monitoring
**Components:**
- Prometheus metrics collection
@@ -201,19 +342,65 @@ This document provides a master index of all operational runbooks and procedures
---
## Maintenance (ALL_IMPROVEMENTS 135139)
| # | Task | Frequency | Command / Script |
|---|------|------------|------------------|
| 135 | Monitor explorer sync status | Daily | `curl -s http://192.168.11.140:4000/api/v1/stats | jq .indexer` or Blockscout admin; check indexer lag |
| 136 | Monitor RPC node health (e.g. VMID 2201) | Daily | `bash scripts/verify/verify-backend-vms.sh`; `curl -s -X POST -H "Content-Type: application/json" -d '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}' http://192.168.11.221:8545` |
| 137 | Check config API uptime | Weekly | `curl -sI https://dbis-api.d-bis.org/health` or target config API URL |
| 138 | Review explorer logs **(O-4)** | Weekly | See **O-4** below. `ssh root@<explorer-host> "journalctl -u blockscout -n 200 --no-pager"` or `pct exec 5000 -- journalctl -u blockscout -n 200 --no-pager`. Explorer: VMID 5000 (r630-02, 192.168.11.140). |
| 139 | Update token list **(O-5)** | As needed | See **O-5** below. Canonical list: `token-lists/lists/dbis-138.tokenlist.json`. Guide: [TOKEN_LIST_AUTHORING_GUIDE.md](../11-references/TOKEN_LIST_AUTHORING_GUIDE.md). Bump `version` and `timestamp`; validate schema; deploy/public URL per runbook. |
**O-4 (Review explorer logs, weekly):** Run weekly or after incidents. From a host with SSH to the Blockscout node: `ssh root@192.168.11.XX "journalctl -u blockscout -n 200 --no-pager"` (replace with actual Proxmox/container host for VMID 5000), or from Proxmox host: `pct exec 5000 -- journalctl -u blockscout -n 200 --no-pager`. Check for indexer errors, DB connection issues, OOM.
**O-5 (Update token list, as needed):** Edit `token-lists/lists/dbis-138.tokenlist.json`; bump `version.major|minor|patch` and `timestamp`; run validation (see TOKEN_LIST_AUTHORING_GUIDE); update any public URL (e.g. tokens.d-bis.org) and explorer/config API token list reference.
**Script:** `scripts/maintenance/daily-weekly-checks.sh [daily|weekly|all]` (runs 135137, 135b indexer lag, 138a thin pool). **Cron:** `scripts/maintenance/schedule-daily-weekly-cron.sh --show` to print lines; `--install` to add daily 08:00 and weekly (Sun 09:00).
### When decommissioning or changing RPC nodes
**Explorer (VMID 5000) depends on RPC** at `ETHEREUM_JSONRPC_HTTP_URL` (canonical: 192.168.11.221:8545, VMID 2201). When you **decommission or change the IP of an RPC node** that Blockscout might use:
1. **Check** Blockscout env on VM 5000:
`pct exec 5000 -- bash -c 'grep -E "ETHEREUM_JSONRPC|RPC" /opt/blockscout/.env 2>/dev/null || docker inspect blockscout 2>/dev/null | grep -A5 Env'` (run from root@r630-02, 192.168.11.12).
2. **If** it points to the affected node, **update** to a live RPC (e.g. `http://192.168.11.221:8545`) in Blockscout env and **restart** Blockscout.
3. **Update** any script defaults and `config/ip-addresses.conf` / docs that reference the old RPC.
See **[BLOCKSCOUT_FIX_RUNBOOK.md](BLOCKSCOUT_FIX_RUNBOOK.md)** § "Proactive: When changing RPC or decommissioning nodes" and **[SOLACESCANSCOUT_DEEP_DIVE_FIXES_AND_TIMING.md](../04-configuration/verification-evidence/SOLACESCANSCOUT_DEEP_DIVE_FIXES_AND_TIMING.md)**.
### After NPMplus or DNS changes
Run **E2E routing** (includes explorer.d-bis.org):
`bash scripts/verify/verify-end-to-end-routing.sh`
### After frontend or Blockscout deploy
From a host on LAN that can reach 192.168.11.140, run **full explorer E2E**:
`bash explorer-monorepo/scripts/e2e-test-explorer.sh`
### Before/after Blockscout version or config change
Run **migrations** (SSL-disabled DB URL):
`bash scripts/fix-blockscout-ssl-and-migrations.sh` (on Proxmox host r630-02 or via SSH).
See [BLOCKSCOUT_FIX_RUNBOOK.md](BLOCKSCOUT_FIX_RUNBOOK.md).
---
## Security Operations
### Key Management
- **[SECRETS_KEYS_CONFIGURATION.md](/docs/04-configuration/SECRETS_KEYS_CONFIGURATION.md)** - Secrets and keys management
- **[SECRETS_KEYS_CONFIGURATION.md](../04-configuration/SECRETS_KEYS_CONFIGURATION.md)** - Secrets and keys management
- **Validator Key Rotation** - Rotate validator keys
- **API Token Rotation** - Rotate API tokens
### Access Control
### Access Control (Phase 2 — Security)
- **SSH Key Management** - Manage SSH keys
- **SSH key-based auth; disable password auth:** On each Proxmox host and key VMs: `sudo sed -i 's/^#*PasswordAuthentication.*/PasswordAuthentication no/' /etc/ssh/sshd_config`; `sudo systemctl reload sshd`. Ensure SSH keys are deployed first. See [IMPLEMENTATION_CHECKLIST.md](../10-best-practices/IMPLEMENTATION_CHECKLIST.md). Scripts: `scripts/security/setup-ssh-key-auth.sh [--dry-run|--apply]`.
- **Firewall: restrict Proxmox API (port 8006):** Allow only admin IPs. Example (iptables): `iptables -A INPUT -p tcp --dport 8006 -s <ADMIN_CIDR> -j ACCEPT`; `iptables -A INPUT -p tcp --dport 8006 -j DROP`. Or use Proxmox firewall / UDM Pro rules. Script: `scripts/security/firewall-proxmox-8006.sh [--dry-run|--apply] [CIDR]`. Document in [NETWORK_ARCHITECTURE.md](../02-architecture/NETWORK_ARCHITECTURE.md).
- **Secure validator keys (W1-19):** On Proxmox host as root: `scripts/secure-validator-keys.sh [--dry-run]` — chmod 600/700, chown besu:besu on VMIDs 10001004.
- **Cloudflare Access** - Manage Cloudflare Access policies
- **Firewall Rules** - Manage firewall rules
---
@@ -223,7 +410,7 @@ This document provides a master index of all operational runbooks and procedures
- **[TROUBLESHOOTING_FAQ.md](/docs/09-troubleshooting/TROUBLESHOOTING_FAQ.md)** - Common issues and solutions
- **[QBFT_TROUBLESHOOTING.md](/docs/09-troubleshooting/QBFT_TROUBLESHOOTING.md)** - QBFT troubleshooting
- **[BESU_ALLOWLIST_QUICK_START.md](BESU_ALLOWLIST_QUICK_START.md)** - Allowlist troubleshooting
- **[BESU_ALLOWLIST_QUICK_START.md](../06-besu/BESU_ALLOWLIST_QUICK_START.md)** - Allowlist troubleshooting
### Diagnostic Procedures
@@ -310,42 +497,56 @@ This document provides a master index of all operational runbooks and procedures
4. **Verify Services** - Verify all services are operational
5. **Document Changes** - Document all changes made
### Maintenance procedures (Ongoing)
| Task | Frequency | Reference |
|------|-----------|-----------|
| Monitor explorer sync **(O-1)** | Daily 08:00 | Cron: `schedule-daily-weekly-cron.sh`; script: `daily-weekly-checks.sh daily` |
| Monitor RPC 2201 **(O-2)** | Daily 08:00 | Same cron/script |
| Config API uptime **(O-3)** | Weekly (Sun 09:00) | `daily-weekly-checks.sh weekly` |
| Review explorer logs **(O-4)** | Weekly | Runbook [138] above; `pct exec 5000 -- journalctl -u blockscout -n 200` or SSH to Blockscout host |
| Update token list **(O-5)** | As needed | Runbook [139] above; `token-lists/lists/dbis-138.tokenlist.json`; [TOKEN_LIST_AUTHORING_GUIDE.md](../11-references/TOKEN_LIST_AUTHORING_GUIDE.md) |
| NPMplus backup | When NPMplus is up | `scripts/verify/backup-npmplus.sh` |
| Validator key/config backup | Per backup policy | W1-8; [BACKUP_AND_RESTORE.md](BACKUP_AND_RESTORE.md) |
| Start firefly-ali-1 (6201) | Optional, when needed | `scripts/maintenance/start-firefly-6201.sh` (r630-02) |
---
## Related Documentation
### Troubleshooting
- **[TROUBLESHOOTING_FAQ.md](/docs/09-troubleshooting/TROUBLESHOOTING_FAQ.md)** - Common issues and solutions - **Start here for problems**
- **[QBFT_TROUBLESHOOTING.md](/docs/09-troubleshooting/QBFT_TROUBLESHOOTING.md)** - QBFT consensus troubleshooting
- **[BESU_ALLOWLIST_QUICK_START.md](BESU_ALLOWLIST_QUICK_START.md)** - Allowlist troubleshooting
- **[QBFT_TROUBLESHOOTING.md](../09-troubleshooting/QBFT_TROUBLESHOOTING.md)** - QBFT consensus troubleshooting
- **[BESU_ALLOWLIST_QUICK_START.md](../06-besu/BESU_ALLOWLIST_QUICK_START.md)** - Allowlist troubleshooting
### Architecture & Design
- **[NETWORK_ARCHITECTURE.md](NETWORK_ARCHITECTURE.md)** - Network architecture
- **[ORCHESTRATION_DEPLOYMENT_GUIDE.md](ORCHESTRATION_DEPLOYMENT_GUIDE.md)** - Deployment guide
- **[VMID_ALLOCATION_FINAL.md](VMID_ALLOCATION_FINAL.md)** - VMID allocation
- **[NETWORK_ARCHITECTURE.md](../02-architecture/NETWORK_ARCHITECTURE.md)** - Network architecture (incl. §7 VMID/network table — service connectivity)
- **[ORCHESTRATION_DEPLOYMENT_GUIDE.md](../02-architecture/ORCHESTRATION_DEPLOYMENT_GUIDE.md)** - Deployment guide
- **[VMID_ALLOCATION_FINAL.md](../02-architecture/VMID_ALLOCATION_FINAL.md)** - VMID allocation
- **[MISSING_CONTAINERS_LIST.md](MISSING_CONTAINERS_LIST.md)** - Missing containers and IP assignments
### Configuration
- **[ER605_ROUTER_CONFIGURATION.md](/docs/04-configuration/ER605_ROUTER_CONFIGURATION.md)** - Router configuration
- **[CLOUDFLARE_ZERO_TRUST_GUIDE.md](CLOUDFLARE_ZERO_TRUST_GUIDE.md)** - Cloudflare setup
- **[CLOUDFLARE_ZERO_TRUST_GUIDE.md](../04-configuration/cloudflare/CLOUDFLARE_ZERO_TRUST_GUIDE.md)** - Cloudflare setup
- **[SECRETS_KEYS_CONFIGURATION.md](/docs/04-configuration/SECRETS_KEYS_CONFIGURATION.md)** - Secrets management
### Deployment
- **[VALIDATED_SET_DEPLOYMENT_GUIDE.md](VALIDATED_SET_DEPLOYMENT_GUIDE.md)** - Validated set deployment
- **[CCIP_DEPLOYMENT_SPEC.md](CCIP_DEPLOYMENT_SPEC.md)** - CCIP deployment
- **[DEPLOYMENT_READINESS.md](DEPLOYMENT_READINESS.md)** - Deployment readiness
- **[CCIP_DEPLOYMENT_SPEC.md](../07-ccip/CCIP_DEPLOYMENT_SPEC.md)** - CCIP deployment
- **[DEPLOYMENT_READINESS.md](../03-deployment/DEPLOYMENT_READINESS.md)** - Deployment readiness
- **[DEPLOYMENT_STATUS_CONSOLIDATED.md](DEPLOYMENT_STATUS_CONSOLIDATED.md)** - Current deployment status
### Monitoring
- **[MONITORING_SUMMARY.md](MONITORING_SUMMARY.md)** - Monitoring setup
- **[BLOCK_PRODUCTION_MONITORING.md](BLOCK_PRODUCTION_MONITORING.md)** - Block production monitoring
- **[MONITORING_SUMMARY.md](../08-monitoring/MONITORING_SUMMARY.md)** - Monitoring setup
- **[BLOCK_PRODUCTION_MONITORING.md](../08-monitoring/BLOCK_PRODUCTION_MONITORING.md)** - Block production monitoring
### Reference
- **[MASTER_INDEX.md](MASTER_INDEX.md)** - Complete documentation index
- **[MASTER_INDEX.md](../MASTER_INDEX.md)** - Complete documentation index
---
**Document Status:** Active
**Maintained By:** Infrastructure Team
**Review Cycle:** Monthly
**Last Updated:** 2025-01-20
**Last Updated:** 2026-02-05

View File

@@ -0,0 +1,981 @@
# Phoenix Deployment Runbook
**Target System:** Phoenix Core (VLAN 160)
**Target Host:** r630-01 (192.168.11.11)
**VMID Range:** 8600-8699
**Version:** 1.0.0
**Last Updated:** 2026-01-09
**Status:** Active Documentation
---
## Decision Summary
Phoenix Core uses **VMID range 8600-8699** (not 7800-7803) to avoid conflicts with existing legacy containers. This enables parallel deployment with DNS-based cutover.
**Phoenix Core Components:**
- VMID 8600: Phoenix API (10.160.0.10)
- VMID 8601: Phoenix Portal (10.160.0.11)
- VMID 8602: Phoenix Keycloak (10.160.0.12)
- VMID 8603: Phoenix PostgreSQL (10.160.0.13)
---
## Table of Contents
1. [Pre-Flight Checks](#pre-flight-checks)
2. [Network Readiness Verification](#network-readiness-verification)
3. [Phase 1: PostgreSQL Deployment (VMID 8603)](#phase-1-postgresql-deployment-vmid-8603)
4. [Phase 2: Keycloak Deployment (VMID 8602)](#phase-2-keycloak-deployment-vmid-8602)
5. [Phase 3: Phoenix API Deployment (VMID 8600)](#phase-3-phoenix-api-deployment-vmid-8600)
6. [Phase 4: Phoenix Portal Deployment (VMID 8601)](#phase-4-phoenix-portal-deployment-vmid-8601)
7. [Validation Gates](#validation-gates)
8. [Troubleshooting](#troubleshooting)
9. [Rollback Procedures](#rollback-procedures)
---
## Pre-Flight Checks
Before starting deployment, verify the following prerequisites:
### 1. SSH Access to r630-01
```bash
ssh root@192.168.11.11
```
**Verification:**
```bash
ssh -o StrictHostKeyChecking=no root@192.168.11.11 "pvecm status >/dev/null 2>&1 && echo '✓ Connected' || echo '✗ Connection failed'"
```
### 2. Storage Availability
```bash
ssh root@192.168.11.11 "pvesm status | grep thin1"
```
**Expected:** thin1 storage available with sufficient space (minimum 180GB free for all 4 containers).
### 3. Source Project Availability
```bash
ls -la /home/intlc/projects/Sankofa/api
ls -la /home/intlc/projects/Sankofa/portal
```
**Required:** Both `api/` and `portal/` directories must exist.
### 4. VMID Availability
```bash
ssh root@192.168.11.11 "pct list | grep -E '^860[0-3]'"
```
**Expected:** No containers with VMIDs 8600-8603 should exist.
### 5. IP Address Availability
```bash
ssh root@192.168.11.11 "pct list | grep -E '10\.160\.0\.(10|11|12|13)'"
```
**Expected:** IPs 10.160.0.10-13 should not be in use.
---
## Network Readiness Verification
### Step 1: Verify VLAN 160 Configuration
```bash
# Check if VLAN 160 exists on the switch/router
ssh root@192.168.11.1 "ip addr show | grep '160' || echo 'VLAN 160 not configured'"
```
**Expected:** VLAN 160 interface should exist on the gateway/router.
### Step 2: Verify Proxmox Bridge Configuration
```bash
# Check bridge configuration
ssh root@192.168.11.11 "cat /etc/network/interfaces | grep -A 5 vmbr0"
```
**Expected:** Bridge should support VLAN tagging.
**If VLAN-aware bridge needed:**
```bash
ssh root@192.168.11.11 "cat /etc/network/interfaces.d/vmbr0"
# Should contain: bridge-vlan-aware yes
```
### Step 3: Verify Gateway Accessibility
```bash
# Test gateway connectivity
ping -c 3 10.160.0.1
```
**Expected:** Gateway (10.160.0.1) should respond to ping.
### Step 4: Verify IP Addresses Not in Use
```bash
# Test each IP
for ip in 10.160.0.10 10.160.0.11 10.160.0.12 10.160.0.13; do
ping -c 1 -W 1 $ip 2>&1 | grep -q "100% packet loss" && echo "$ip: Available" || echo "$ip: In use"
done
```
**Expected:** All IPs should show "Available".
---
## Phase 1: PostgreSQL Deployment (VMID 8603)
**Order:** Must be deployed first (database is required by other services)
### Step 1: Create Container
```bash
# On r630-01, create PostgreSQL container
ssh root@192.168.11.11 "pct create 8603 \
local:vztmpl/ubuntu-22.04-standard_22.04-1_amd64.tar.zst \
--storage thin1 \
--hostname phoenix-postgres-1 \
--memory 2048 \
--cores 2 \
--rootfs thin1:50 \
--net0 bridge=vmbr0,name=eth0,ip=10.160.0.13/22,gw=10.160.0.1,type=veth \
--unprivileged 1 \
--swap 512 \
--onboot 1 \
--timezone America/Los_Angeles \
--features nesting=1,keyctl=1"
```
### Step 2: Start Container
```bash
ssh root@192.168.11.11 "pct start 8603"
sleep 10
```
### Step 3: Verify Container Status
```bash
ssh root@192.168.11.11 "pct status 8603"
```
**Expected:** Status should be "running".
### Step 4: Install PostgreSQL 16
```bash
ssh root@192.168.11.11 "pct exec 8603 -- bash -c 'export DEBIAN_FRONTEND=noninteractive && \
apt-get update -qq && \
apt-get install -y -qq wget ca-certificates gnupg lsb-release curl git build-essential sudo'"
ssh root@192.168.11.11 "pct exec 8603 -- bash -c 'wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add - && \
echo \"deb http://apt.postgresql.org/pub/repos/apt \$(lsb_release -cs)-pgdg main\" > /etc/apt/sources.list.d/pgdg.list && \
apt-get update -qq && \
apt-get install -y -qq postgresql-16 postgresql-contrib-16'"
```
### Step 5: Configure PostgreSQL
```bash
# Generate secure password
DB_PASSWORD=$(openssl rand -base64 32 | tr -dc 'a-zA-Z0-9' | cut -c1-24)
echo "Generated DB_PASSWORD: $DB_PASSWORD"
# Save this password - you'll need it for the next steps!
# Enable and start PostgreSQL
ssh root@192.168.11.11 "pct exec 8603 -- systemctl enable postgresql && \
pct exec 8603 -- systemctl start postgresql"
# Wait for PostgreSQL to start
sleep 5
# Create database and user
ssh root@192.168.11.11 "pct exec 8603 -- bash -c \"sudo -u postgres psql << 'EOF'
CREATE USER phoenix WITH PASSWORD '$DB_PASSWORD';
CREATE DATABASE phoenix OWNER phoenix ENCODING 'UTF8';
GRANT ALL PRIVILEGES ON DATABASE phoenix TO phoenix;
\\c phoenix
GRANT ALL ON SCHEMA public TO phoenix;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL ON TABLES TO phoenix;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL ON SEQUENCES TO phoenix;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL ON FUNCTIONS TO phoenix;
CREATE EXTENSION IF NOT EXISTS \"uuid-ossp\";
CREATE EXTENSION IF NOT EXISTS \"pg_stat_statements\";
EOF\""
```
### Step 6: Configure Network Access
```bash
# Allow connections from VLAN 160 subnet
ssh root@192.168.11.11 "pct exec 8603 -- bash -c 'echo \"host all all 10.160.0.0/22 md5\" >> /etc/postgresql/16/main/pg_hba.conf'"
# Enable network listening
ssh root@192.168.11.11 "pct exec 8603 -- bash -c \"sed -i \\\"s/#listen_addresses = 'localhost'/listen_addresses = '*'/\\\" /etc/postgresql/16/main/postgresql.conf\""
# Restart PostgreSQL
ssh root@192.168.11.11 "pct exec 8603 -- systemctl restart postgresql"
sleep 3
```
### Step 7: Verify PostgreSQL
```bash
# Test connection
ssh root@192.168.11.11 "pct exec 8603 -- bash -c \"PGPASSWORD='$DB_PASSWORD' psql -h localhost -U phoenix -d phoenix -c 'SELECT version();'\""
```
**Expected:** Should return PostgreSQL version information.
---
## Phase 2: Keycloak Deployment (VMID 8602)
**Order:** Deploy after PostgreSQL (requires database)
### Step 1: Create Container
```bash
ssh root@192.168.11.11 "pct create 8602 \
local:vztmpl/ubuntu-22.04-standard_22.04-1_amd64.tar.zst \
--storage thin1 \
--hostname phoenix-keycloak-1 \
--memory 2048 \
--cores 2 \
--rootfs thin1:30 \
--net0 bridge=vmbr0,name=eth0,ip=10.160.0.12/22,gw=10.160.0.1,type=veth \
--unprivileged 1 \
--swap 512 \
--onboot 1 \
--timezone America/Los_Angeles \
--features nesting=1,keyctl=1"
```
### Step 2: Start Container and Install Dependencies
```bash
ssh root@192.168.11.11 "pct start 8602"
sleep 10
# Install Java 21 and dependencies
ssh root@192.168.11.11 "pct exec 8602 -- bash -c 'export DEBIAN_FRONTEND=noninteractive && \
apt-get update -qq && \
apt-get install -y -qq openjdk-21-jdk wget curl unzip'"
# Set JAVA_HOME
ssh root@192.168.11.11 "pct exec 8602 -- bash -c 'echo \"export JAVA_HOME=/usr/lib/jvm/java-21-openjdk-amd64\" >> /etc/profile'"
```
### Step 3: Create Keycloak Database
```bash
# Generate Keycloak database password
KEYCLOAK_DB_PASSWORD=$(openssl rand -base64 32 | tr -dc 'a-zA-Z0-9' | cut -c1-24)
echo "Generated KEYCLOAK_DB_PASSWORD: $KEYCLOAK_DB_PASSWORD"
# Create database on PostgreSQL container (8603)
ssh root@192.168.11.11 "pct exec 8603 -- bash -c \"sudo -u postgres psql << 'EOF'
CREATE USER keycloak WITH PASSWORD '$KEYCLOAK_DB_PASSWORD';
CREATE DATABASE keycloak OWNER keycloak ENCODING 'UTF8';
GRANT ALL PRIVILEGES ON DATABASE keycloak TO keycloak;
EOF\""
```
### Step 4: Download and Install Keycloak
```bash
# Download Keycloak 24.0.0
ssh root@192.168.11.11 "pct exec 8602 -- bash -c 'cd /opt && \
wget -q https://github.com/keycloak/keycloak/releases/download/24.0.0/keycloak-24.0.0.tar.gz && \
tar -xzf keycloak-24.0.0.tar.gz && \
mv keycloak-24.0.0 keycloak && \
rm keycloak-24.0.0.tar.gz && \
chmod +x keycloak/bin/kc.sh'"
# Build Keycloak (may take several minutes)
ssh root@192.168.11.11 "pct exec 8602 -- bash -c 'cd /opt/keycloak && \
export JAVA_HOME=/usr/lib/jvm/java-21-openjdk-amd64 && \
./bin/kc.sh build --db postgres'"
```
### Step 5: Configure Keycloak Service
```bash
# Generate admin password
KEYCLOAK_ADMIN_PASSWORD=$(openssl rand -base64 32 | tr -dc 'a-zA-Z0-9' | cut -c1-24)
echo "Generated KEYCLOAK_ADMIN_PASSWORD: $KEYCLOAK_ADMIN_PASSWORD"
# Generate client secrets
KEYCLOAK_CLIENT_SECRET_API=$(openssl rand -base64 32 | tr -dc 'a-zA-Z0-9' | cut -c1-32)
KEYCLOAK_CLIENT_SECRET_PORTAL=$(openssl rand -base64 32 | tr -dc 'a-zA-Z0-9' | cut -c1-32)
# Create systemd service
ssh root@192.168.11.11 "pct exec 8602 -- bash -c \"cat > /etc/systemd/system/keycloak.service << 'EOF'
[Unit]
Description=Keycloak Authorization Server
After=network.target
[Service]
Type=idle
User=root
WorkingDirectory=/opt/keycloak
Environment=\\\"JAVA_HOME=/usr/lib/jvm/java-21-openjdk-amd64\\\"
Environment=\\\"KC_DB=postgres\\\"
Environment=\\\"KC_DB_URL_HOST=10.160.0.13\\\"
Environment=\\\"KC_DB_URL_DATABASE=keycloak\\\"
Environment=\\\"KC_DB_USERNAME=keycloak\\\"
Environment=\\\"KC_DB_PASSWORD=$KEYCLOAK_DB_PASSWORD\\\"
Environment=\\\"KC_HTTP_ENABLED=true\\\"
Environment=\\\"KC_HOSTNAME_STRICT=false\\\"
Environment=\\\"KC_HOSTNAME_PORT=8080\\\"
Environment=\\\"KC_HTTP_PORT=8080\\\"
ExecStart=/opt/keycloak/bin/kc.sh start --optimized
ExecStop=/bin/kill -TERM \\\$MAINPID
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
EOF\""
# Start Keycloak
ssh root@192.168.11.11 "pct exec 8602 -- bash -c 'systemctl daemon-reload && \
systemctl enable keycloak && \
systemctl start keycloak'"
# Wait for Keycloak to start (may take 1-2 minutes)
echo "Waiting for Keycloak to start..."
sleep 60
# Check if Keycloak is ready
for i in {1..30}; do
if ssh root@192.168.11.11 "pct exec 8602 -- curl -s -f http://localhost:8080/health/ready >/dev/null 2>&1"; then
echo "✓ Keycloak is ready"
break
fi
echo "Waiting for Keycloak... ($i/30)"
sleep 5
done
```
### Step 6: Create Admin User and Clients
```bash
# Create admin user (first-time setup only)
ssh root@192.168.11.11 "pct exec 8602 -- bash -c 'cd /opt/keycloak && \
export JAVA_HOME=/usr/lib/jvm/java-21-openjdk-amd64 && \
./bin/kc.sh config credentials --server http://localhost:8080 --realm master --user admin --password admin 2>/dev/null || \
./bin/kc.sh add-user-keycloak --realm master --username admin --password $KEYCLOAK_ADMIN_PASSWORD'"
# Wait for Keycloak to fully start
sleep 30
# Get admin token and create clients
ssh root@192.168.11.11 "pct exec 8602 -- bash -c \"
TOKEN=\\\$(curl -s -X POST \\\"http://localhost:8080/realms/master/protocol/openid-connect/token\\\" \\
-H \\\"Content-Type: application/x-www-form-urlencoded\\\" \\
-d \\\"username=admin\\\" \\
-d \\\"password=\\\$KEYCLOAK_ADMIN_PASSWORD\\\" \\
-d \\\"grant_type=password\\\" \\
-d \\\"client_id=admin-cli\\\" | jq -r '.access_token')
# Create phoenix-api client
curl -s -X POST \\\"http://localhost:8080/admin/realms/master/clients\\\" \\
-H \\\"Authorization: Bearer \\\$TOKEN\\\" \\
-H \\\"Content-Type: application/json\\\" \\
-d '{
\\\"clientId\\\": \\\"phoenix-api\\\",
\\\"enabled\\\": true,
\\\"clientAuthenticatorType\\\": \\\"client-secret\\\",
\\\"secret\\\": \\\"$KEYCLOAK_CLIENT_SECRET_API\\\",
\\\"protocol\\\": \\\"openid-connect\\\",
\\\"publicClient\\\": false,
\\\"standardFlowEnabled\\\": true,
\\\"directAccessGrantsEnabled\\\": true,
\\\"serviceAccountsEnabled\\\": true
}'
# Create portal-client
curl -s -X POST \\\"http://localhost:8080/admin/realms/master/clients\\\" \\
-H \\\"Authorization: Bearer \\\$TOKEN\\\" \\
-H \\\"Content-Type: application/json\\\" \\
-d '{
\\\"clientId\\\": \\\"portal-client\\\",
\\\"enabled\\\": true,
\\\"clientAuthenticatorType\\\": \\\"client-secret\\\",
\\\"secret\\\": \\\"$KEYCLOAK_CLIENT_SECRET_PORTAL\\\",
\\\"protocol\\\": \\\"openid-connect\\\",
\\\"publicClient\\\": false,
\\\"standardFlowEnabled\\\": true,
\\\"directAccessGrantsEnabled\\\": true
}'
\""
```
**Note:** Save these passwords and secrets:
- `KEYCLOAK_ADMIN_PASSWORD`
- `KEYCLOAK_CLIENT_SECRET_API`
- `KEYCLOAK_CLIENT_SECRET_PORTAL`
- `KEYCLOAK_DB_PASSWORD`
---
## Phase 3: Phoenix API Deployment (VMID 8600)
**Order:** Deploy after PostgreSQL and Keycloak
### Step 1: Create Container
```bash
ssh root@192.168.11.11 "pct create 8600 \
local:vztmpl/ubuntu-22.04-standard_22.04-1_amd64.tar.zst \
--storage thin1 \
--hostname phoenix-api-1 \
--memory 4096 \
--cores 4 \
--rootfs thin1:50 \
--net0 bridge=vmbr0,name=eth0,ip=10.160.0.10/22,gw=10.160.0.1,type=veth \
--unprivileged 1 \
--swap 512 \
--onboot 1 \
--timezone America/Los_Angeles \
--features nesting=1,keyctl=1"
```
### Step 2: Start Container and Install Node.js
```bash
ssh root@192.168.11.11 "pct start 8600"
sleep 10
# Install Node.js 18
ssh root@192.168.11.11 "pct exec 8600 -- bash -c 'export DEBIAN_FRONTEND=noninteractive && \
curl -fsSL https://deb.nodesource.com/setup_18.x | bash - && \
apt-get install -y -qq nodejs'"
# Install pnpm
ssh root@192.168.11.11 "pct exec 8600 -- bash -c 'npm install -g pnpm'"
```
### Step 3: Copy API Project Files
```bash
# Create app directory
ssh root@192.168.11.11 "pct exec 8600 -- mkdir -p /opt/phoenix-api"
# Copy API directory (assuming source is on deployment machine)
# If source is on r630-01, adjust path accordingly
# If source is remote, use rsync or scp
rsync -avz --exclude node_modules --exclude .git \
/home/intlc/projects/Sankofa/api/ \
root@192.168.11.11:/tmp/phoenix-api-source/
ssh root@192.168.11.11 "pct push 8600 /tmp/phoenix-api-source /opt/phoenix-api --recursive"
```
### Step 4: Install Dependencies and Configure
```bash
# Install dependencies
ssh root@192.168.11.11 "pct exec 8600 -- bash -c 'cd /opt/phoenix-api && pnpm install --frozen-lockfile'"
# Create environment file (use the passwords/secrets generated earlier)
ssh root@192.168.11.11 "pct exec 8600 -- bash -c \"cat > /opt/phoenix-api/.env << 'EOF'
# Database
DB_HOST=10.160.0.13
DB_PORT=5432
DB_NAME=phoenix
DB_USER=phoenix
DB_PASSWORD=$DB_PASSWORD
# Keycloak
KEYCLOAK_URL=http://10.160.0.12:8080
KEYCLOAK_REALM=master
KEYCLOAK_CLIENT_ID=phoenix-api
KEYCLOAK_CLIENT_SECRET=$KEYCLOAK_CLIENT_SECRET_API
KEYCLOAK_MULTI_REALM=false
# API
API_PORT=4000
JWT_SECRET=$(openssl rand -base64 32)
NODE_ENV=production
# Multi-Tenancy
ENABLE_MULTI_TENANT=true
EOF\""
```
### Step 5: Run Migrations and Build
```bash
# Run database migrations
ssh root@192.168.11.11 "pct exec 8600 -- bash -c 'cd /opt/phoenix-api && pnpm db:migrate'"
# Build API
ssh root@192.168.11.11 "pct exec 8600 -- bash -c 'cd /opt/phoenix-api && pnpm build'"
```
### Step 6: Create Systemd Service
```bash
ssh root@192.168.11.11 "pct exec 8600 -- bash -c \"cat > /etc/systemd/system/phoenix-api.service << 'EOF'
[Unit]
Description=Phoenix API Server
After=network.target
[Service]
Type=simple
User=root
WorkingDirectory=/opt/phoenix-api
Environment=\\\"NODE_ENV=production\\\"
EnvironmentFile=/opt/phoenix-api/.env
ExecStart=/usr/bin/node /opt/phoenix-api/dist/server.js
Restart=always
RestartSec=10
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=multi-user.target
EOF\""
# Start service
ssh root@192.168.11.11 "pct exec 8600 -- bash -c 'systemctl daemon-reload && \
systemctl enable phoenix-api && \
systemctl start phoenix-api'"
sleep 10
# Verify service is running
ssh root@192.168.11.11 "pct exec 8600 -- systemctl status phoenix-api --no-pager | head -10"
```
---
## Phase 4: Phoenix Portal Deployment (VMID 8601)
**Order:** Deploy last (depends on API)
### Step 1: Create Container
```bash
ssh root@192.168.11.11 "pct create 8601 \
local:vztmpl/ubuntu-22.04-standard_22.04-1_amd64.tar.zst \
--storage thin1 \
--hostname phoenix-portal-1 \
--memory 4096 \
--cores 4 \
--rootfs thin1:50 \
--net0 bridge=vmbr0,name=eth0,ip=10.160.0.11/22,gw=10.160.0.1,type=veth \
--unprivileged 1 \
--swap 512 \
--onboot 1 \
--timezone America/Los_Angeles \
--features nesting=1,keyctl=1"
```
### Step 2: Start Container and Install Node.js
```bash
ssh root@192.168.11.11 "pct start 8601"
sleep 10
# Install Node.js 18
ssh root@192.168.11.11 "pct exec 8601 -- bash -c 'export DEBIAN_FRONTEND=noninteractive && \
curl -fsSL https://deb.nodesource.com/setup_18.x | bash - && \
apt-get install -y -qq nodejs'"
# Install pnpm
ssh root@192.168.11.11 "pct exec 8601 -- bash -c 'npm install -g pnpm'"
```
### Step 3: Copy Portal Project Files
```bash
# Copy portal directory
rsync -avz --exclude node_modules --exclude .git --exclude .next \
/home/intlc/projects/Sankofa/portal/ \
root@192.168.11.11:/tmp/phoenix-portal-source/
ssh root@192.168.11.11 "pct push 8601 /tmp/phoenix-portal-source /opt/phoenix-portal --recursive"
```
### Step 4: Install Dependencies and Configure
```bash
# Install dependencies
ssh root@192.168.11.11 "pct exec 8601 -- bash -c 'cd /opt/phoenix-portal && pnpm install --frozen-lockfile'"
# Create environment file
ssh root@192.168.11.11 "pct exec 8601 -- bash -c \"cat > /opt/phoenix-portal/.env.local << 'EOF'
# Keycloak
KEYCLOAK_URL=http://10.160.0.12:8080
KEYCLOAK_REALM=master
KEYCLOAK_CLIENT_ID=portal-client
KEYCLOAK_CLIENT_SECRET=$KEYCLOAK_CLIENT_SECRET_PORTAL
# API
NEXT_PUBLIC_GRAPHQL_ENDPOINT=http://10.160.0.10:4000/graphql
NEXT_PUBLIC_GRAPHQL_WS_ENDPOINT=ws://10.160.0.10:4000/graphql-ws
# NextAuth
NEXTAUTH_URL=http://10.160.0.11:3000
NEXTAUTH_SECRET=$(openssl rand -base64 32)
# App
NEXT_PUBLIC_APP_URL=http://10.160.0.11:3000
NODE_ENV=production
EOF\""
```
### Step 5: Build Portal
```bash
# Build Portal (may take several minutes)
ssh root@192.168.11.11 "pct exec 8601 -- bash -c 'cd /opt/phoenix-portal && pnpm build'"
```
### Step 6: Create Systemd Service
```bash
ssh root@192.168.11.11 "pct exec 8601 -- bash -c \"cat > /etc/systemd/system/phoenix-portal.service << 'EOF'
[Unit]
Description=Phoenix Portal
After=network.target
[Service]
Type=simple
User=root
WorkingDirectory=/opt/phoenix-portal
Environment=\\\"NODE_ENV=production\\\"
EnvironmentFile=/opt/phoenix-portal/.env.local
ExecStart=/usr/bin/node /opt/phoenix-portal/node_modules/.bin/next start
Restart=always
RestartSec=10
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=multi-user.target
EOF\""
# Start service
ssh root@192.168.11.11 "pct exec 8601 -- bash -c 'systemctl daemon-reload && \
systemctl enable phoenix-portal && \
systemctl start phoenix-portal'"
sleep 15
# Verify service is running
ssh root@192.168.11.11 "pct exec 8601 -- systemctl status phoenix-portal --no-pager | head -10"
```
---
## Validation Gates
Phoenix is **NOT "live"** until all validation gates pass:
### Gate 1: Container Status
```bash
for vmid in 8600 8601 8602 8603; do
status=$(ssh root@192.168.11.11 "pct status $vmid" 2>/dev/null | awk '{print $2}')
echo "VMID $vmid: $status"
done
```
**Expected:** All containers should show "running".
### Gate 2: PostgreSQL Database
```bash
ssh root@192.168.11.11 "pct exec 8603 -- bash -c \"PGPASSWORD='$DB_PASSWORD' psql -h localhost -U phoenix -d phoenix -c 'SELECT 1;'\""
```
**Expected:** Should return "1" without errors.
### Gate 3: Keycloak Health
```bash
ssh root@192.168.11.11 "pct exec 8602 -- curl -s http://localhost:8080/health/ready"
```
**Expected:** Should return JSON with status "UP".
### Gate 4: Keycloak Token Issuance
```bash
ssh root@192.168.11.11 "pct exec 8602 -- curl -s -X POST 'http://localhost:8080/realms/master/protocol/openid-connect/token' \
-H 'Content-Type: application/x-www-form-urlencoded' \
-d 'username=admin' \
-d 'password=$KEYCLOAK_ADMIN_PASSWORD' \
-d 'grant_type=password' \
-d 'client_id=admin-cli' | jq -r '.access_token' | head -c 50"
```
**Expected:** Should return an access token (JWT string).
### Gate 5: API Health Endpoint
```bash
curl -s http://10.160.0.10:4000/health
```
**Expected:** Should return healthy status (may be JSON or plain text).
### Gate 6: API Token Validation
```bash
# Get token from Keycloak
TOKEN=$(ssh root@192.168.11.11 "pct exec 8602 -- curl -s -X POST 'http://localhost:8080/realms/master/protocol/openid-connect/token' \
-H 'Content-Type: application/x-www-form-urlencoded' \
-d 'username=admin' \
-d 'password=$KEYCLOAK_ADMIN_PASSWORD' \
-d 'grant_type=password' \
-d 'client_id=admin-cli' | jq -r '.access_token'")
# Test API with token
curl -s -H "Authorization: Bearer $TOKEN" http://10.160.0.10:4000/graphql \
-H "Content-Type: application/json" \
-d '{"query": "{ __typename }"}'
```
**Expected:** Should return GraphQL response.
### Gate 7: Portal Accessibility
```bash
curl -s -I http://10.160.0.11:3000 | head -1
```
**Expected:** Should return HTTP 200 or 302 (redirect).
### Gate 8: Database Persistence
```bash
# Restart PostgreSQL container
ssh root@192.168.11.11 "pct reboot 8603"
sleep 30
# Test database after restart
ssh root@192.168.11.11 "pct exec 8603 -- bash -c \"PGPASSWORD='$DB_PASSWORD' psql -h localhost -U phoenix -d phoenix -c 'SELECT 1;'\""
```
**Expected:** Database should be accessible after restart.
### Gate 9: Service Survivability
```bash
# Reboot host (if in maintenance window)
# ssh root@192.168.11.11 "reboot"
# Wait for host to come back up, then verify all services start automatically
# Check all services are active
for vmid in 8600 8601 8602 8603; do
ssh root@192.168.11.11 "pct status $vmid"
done
```
**Expected:** All containers should auto-start and services should be active.
### Gate 10: No Dependency on 192.168.11.x
```bash
# Verify no hardcoded references to management network
ssh root@192.168.11.11 "pct exec 8600 -- env | grep -i '192.168.11' || echo 'No 192.168.11.x dependencies'"
ssh root@192.168.11.11 "pct exec 8601 -- env | grep -i '192.168.11' || echo 'No 192.168.11.x dependencies'"
```
**Expected:** Should show "No 192.168.11.x dependencies".
---
## Troubleshooting
### Container Won't Start
**Symptoms:** Container status shows "stopped" after `pct start`.
**Diagnosis:**
```bash
ssh root@192.168.11.11 "pct status 8600"
ssh root@192.168.11.11 "journalctl -u pve-container@8600 -n 50"
```
**Common Causes:**
- Network configuration error
- Storage full
- Template not available
**Solution:**
- Check network config: `ssh root@192.168.11.11 "pct config 8600"`
- Check storage: `ssh root@192.168.11.11 "pvesm status"`
- Check template: `ssh root@192.168.11.11 "pvesm list local"`
### PostgreSQL Connection Issues
**Symptoms:** API cannot connect to database.
**Diagnosis:**
```bash
# From API container
ssh root@192.168.11.11 "pct exec 8600 -- bash -c 'PGPASSWORD=password psql -h 10.160.0.13 -U phoenix -d phoenix -c \"SELECT 1;\"'"
```
**Common Causes:**
- Firewall blocking port 5432
- PostgreSQL not listening on network interface
- Wrong password
**Solution:**
- Check pg_hba.conf: `ssh root@192.168.11.11 "pct exec 8603 -- cat /etc/postgresql/16/main/pg_hba.conf | grep 10.160.0.0/22"`
- Check postgresql.conf: `ssh root@192.168.11.11 "pct exec 8603 -- grep listen_addresses /etc/postgresql/16/main/postgresql.conf"`
- Verify password matches
### Keycloak Not Starting
**Symptoms:** Keycloak service fails to start or health check fails.
**Diagnosis:**
```bash
ssh root@192.168.11.11 "pct exec 8602 -- journalctl -u keycloak -n 100 --no-pager"
ssh root@192.168.11.11 "pct exec 8602 -- ps aux | grep keycloak"
```
**Common Causes:**
- Java not found
- Database connection failed
- Port 8080 already in use
**Solution:**
- Check Java: `ssh root@192.168.11.11 "pct exec 8602 -- java -version"`
- Check database connectivity from Keycloak container
- Check port: `ssh root@192.168.11.11 "pct exec 8602 -- netstat -tlnp | grep 8080"`
### API Service Issues
**Symptoms:** API service fails to start or health check fails.
**Diagnosis:**
```bash
ssh root@192.168.11.11 "pct exec 8600 -- journalctl -u phoenix-api -n 100 --no-pager"
ssh root@192.168.11.11 "pct exec 8600 -- systemctl status phoenix-api --no-pager"
```
**Common Causes:**
- Database connection failed
- Keycloak connection failed
- Build errors
- Missing environment variables
**Solution:**
- Check environment file: `ssh root@192.168.11.11 "pct exec 8600 -- cat /opt/phoenix-api/.env"`
- Verify database connection
- Verify Keycloak is accessible: `curl http://10.160.0.12:8080/health/ready`
### Portal Build Failures
**Symptoms:** Portal build fails or service won't start.
**Diagnosis:**
```bash
ssh root@192.168.11.11 "pct exec 8601 -- journalctl -u phoenix-portal -n 100 --no-pager"
# Check build logs (if available)
ssh root@192.168.11.11 "pct exec 8601 -- cat /opt/phoenix-portal/.next/build.log 2>/dev/null || echo 'No build log'"
```
**Common Causes:**
- Build errors
- Missing environment variables
- API endpoint unreachable
**Solution:**
- Rebuild: `ssh root@192.168.11.11 "pct exec 8601 -- bash -c 'cd /opt/phoenix-portal && pnpm build'"`
- Check environment: `ssh root@192.168.11.11 "pct exec 8601 -- cat /opt/phoenix-portal/.env.local"`
- Verify API is accessible: `curl http://10.160.0.10:4000/health`
---
## Rollback Procedures
### Scenario 1: Rollback Before DNS Cutover
If issues are discovered before DNS cutover, rollback is simple:
1. **Stop all Phoenix containers:**
```bash
for vmid in 8600 8601 8602 8603; do
ssh root@192.168.11.11 "pct stop $vmid"
done
```
2. **Do NOT delete containers** (they may contain valuable debugging information)
3. **Legacy services (7800-series) remain operational** - no action needed
### Scenario 2: Rollback After DNS Cutover
If issues are discovered after DNS cutover:
1. **Revert DNS records** (see DNS template document for exact records)
2. **Stop Phoenix containers** (as above)
3. **Legacy services become active again** via DNS
### Scenario 3: Partial Rollback
If only one service has issues:
1. **Stop only the problematic container**
2. **Other services continue running**
3. **Re-deploy the problematic service** after fixing issues
### Data Preservation
**Important:** Database data is preserved in VMID 8603. If rolling back:
- **Option 1:** Keep container stopped (data preserved)
- **Option 2:** Export data before deletion: `pg_dump -h 10.160.0.13 -U phoenix phoenix > backup.sql`
- **Option 3:** Backup entire container: `vzdump 8603`
---
## Post-Deployment Checklist
- [ ] All validation gates passed
- [ ] All services running and accessible
- [ ] Database backups configured
- [ ] Log rotation configured (prevent disk growth)
- [ ] Monitoring configured (optional)
- [ ] Firewall rules applied (see firewall rules document)
- [ ] DNS records ready (see DNS template document)
- [ ] Documentation updated
- [ ] Team notified of deployment
---
## Next Steps
After successful deployment:
1. **Configure DNS** (see `PHOENIX_DNS_ZONE_TEMPLATE.md`)
2. **Configure Firewall Rules** (see `PHOENIX_VLAN160_FIREWALL_RULES.md`)
3. **Set up monitoring** (optional)
4. **Configure backups** for database
5. **Document credentials** securely
6. **Plan DNS cutover** (when ready to go live)
---
**Last Updated:** 2026-01-09
**Status:** Ready for Deployment

View File

@@ -0,0 +1,916 @@
# Phoenix Migration Plan: DBIS & ChainID 138 Services
**System:** Phoenix Core Migration Plan
**Target:** Migrate DBIS Core and ChainID 138 services to Phoenix architecture
**Version:** 1.0.0
**Last Updated:** 2026-01-09
**Status:** Active Documentation
---
## Executive Summary
This document provides a comprehensive migration plan for migrating DBIS Core services and ChainID 138 (Besu/Blockchain) services from the legacy flat LAN architecture (192.168.11.x) to the Phoenix Core architecture on VLAN 160 (10.160.0.x).
**Migration Strategy:** Phased migration with zero-downtime DNS-based cutover. Legacy services remain operational during migration.
---
## Table of Contents
1. [Current State Analysis](#current-state-analysis)
2. [Target State Architecture](#target-state-architecture)
3. [Migration Strategy](#migration-strategy)
4. [Detailed Migration Phases](#detailed-migration-phases)
5. [VMID Allocation in Phoenix](#vmid-allocation-in-phoenix)
6. [Network Migration Plan](#network-migration-plan)
7. [Data Migration Procedures](#data-migration-procedures)
8. [Service Dependencies Mapping](#service-dependencies-mapping)
9. [Cutover Procedures](#cutover-procedures)
10. [Risk Mitigation](#risk-mitigation)
11. [Rollback Procedures](#rollback-procedures)
12. [Timeline Estimates](#timeline-estimates)
---
## Current State Analysis
### 1.1 DBIS Core Services (Current)
**Location:** ml110 (192.168.11.10)
**Network:** Flat LAN (192.168.11.0/24)
**Status:** Fully deployed and operational
| VMID | Service | IP Address | Status | Purpose |
|------|---------|------------|--------|---------|
| 10100 | dbis-postgres-primary | 192.168.11.100 | ✅ Running | PostgreSQL Primary |
| 10101 | dbis-postgres-replica-1 | 192.168.11.101 | ✅ Running | PostgreSQL Replica |
| 10120 | dbis-redis | 192.168.11.120 | ✅ Running | Redis Cache |
| 10130 | dbis-frontend | 192.168.11.130 | ✅ Running | Frontend Admin Console |
| 10150 | dbis-api-primary | 192.168.11.150 | ✅ Running | API Primary |
| 10151 | dbis-api-secondary | 192.168.11.151 | ✅ Running | API Secondary |
**Service Dependencies:**
- API services depend on PostgreSQL
- API services depend on Redis
- Frontend depends on API services
- All services use authentication (Keycloak - separate deployment)
**Data Volume:**
- PostgreSQL: ~10GB (estimated)
- Redis: ~1GB (estimated)
- Application code: ~5GB (estimated)
### 1.2 ChainID 138 Services (Current)
**Location:** ml110 (192.168.11.10)
**Network:** Flat LAN (192.168.11.0/24)
**Status:** Fully deployed and operational
#### 1.2.1 Besu Validators
| VMID | Service | IP Address | Status | Purpose |
|------|---------|------------|--------|---------|
| 1000-1004 | besu-validator-1-5 | 192.168.11.100-104 | ✅ Running | Validator nodes (ChainID 138) |
#### 1.2.2 Besu Sentries
| VMID | Service | IP Address | Status | Purpose |
|------|---------|------------|--------|---------|
| 1500-1503 | besu-sentry-1-4 | 192.168.11.150-153 | ✅ Running | Sentry nodes |
#### 1.2.3 Besu RPC Nodes
| VMID | Service | IP Address | Status | Purpose |
|------|---------|------------|--------|---------|
| 2500-2502 | besu-rpc-1-3 | 192.168.11.250-252 | ✅ Running | RPC nodes (ChainID 138) |
**Service Dependencies:**
- Validators require P2P connectivity (port 30303)
- RPC nodes depend on validators for blockchain state
- RPC nodes exposed via Cloudflare Tunnel
**Data Volume:**
- Blockchain data: ~50GB per validator (estimated)
- RPC nodes: ~50GB per node (estimated)
### 1.3 RPC Translator Services (Current)
**Location:** r630-01 (192.168.11.11)
**Network:** Flat LAN (192.168.11.0/24)
**Status:** Fully deployed and operational
| VMID | Service | IP Address | Status | Purpose |
|------|---------|------------|--------|---------|
| 106 | redis-rpc-translator | 192.168.11.110 | ✅ Running | Redis for nonce locking |
| 107 | web3signer-rpc-translator | 192.168.11.111 | ✅ Running | Web3Signer (v25.12.0) |
| 108 | vault-rpc-translator | 192.168.11.112 | ✅ Running | Vault secrets management |
| 2400-2402 | thirdweb-rpc-1-3 | 192.168.11.240-242 | ✅ Running | RPC Translator instances |
**Service Dependencies:**
- RPC Translators depend on Besu RPC nodes
- RPC Translators depend on Redis, Web3Signer, Vault
**Data Volume:**
- Minimal (stateless services)
### 1.4 Current Architecture Limitations
**Issues with Current Architecture:**
1. **Flat LAN:** All services on single network (192.168.11.0/24)
2. **No Network Segmentation:** Limited isolation between services
3. **VMID Conflicts:** Legacy services (7800-series) conflict with planned Phoenix deployment
4. **Single Host Dependency:** All DBIS services on ml110
5. **No VLAN-based Routing:** Cannot leverage role-based NAT pools
6. **Limited Scalability:** Hard to add new services without conflicts
---
## Target State Architecture
### 2.1 Phoenix Core Architecture
**Network:** VLAN 160 (10.160.0.0/22)
**Gateway:** 10.160.0.1
**VMID Range:** 8600-8699 (Phoenix Core)
**Phoenix Core Components (Phase 0 - Already Deployed):**
- VMID 8600: Phoenix API (10.160.0.10)
- VMID 8601: Phoenix Portal (10.160.0.11)
- VMID 8602: Phoenix Keycloak (10.160.0.12)
- VMID 8603: Phoenix PostgreSQL (10.160.0.13)
### 2.2 Target Architecture Benefits
**Benefits of Phoenix Architecture:**
1. **Network Segmentation:** VLAN-based isolation
2. **Scalability:** VMID range 8600-8699 supports 100 containers
3. **Role-Based NAT:** Egress NAT via Block #5 (when assigned)
4. **Zero-Downtime Migration:** DNS-based cutover
5. **Clean Separation:** No conflicts with legacy services
6. **Future-Proof:** Foundation for additional services
---
## Migration Strategy
### 3.1 Migration Principles
1. **Zero-Downtime:** DNS-based cutover, no service interruption
2. **Phased Approach:** Migrate services incrementally
3. **Parallel Operation:** Legacy and Phoenix services run simultaneously
4. **Reversible:** Rollback via DNS changes
5. **Validated:** Each phase must pass validation gates before proceeding
### 3.2 Migration Phases Overview
| Phase | Services | VMID Range | Target Network | Status |
|-------|----------|-----------|----------------|--------|
| Phase 0 | Phoenix Core | 8600-8603 | VLAN 160 | ✅ Complete |
| Phase 1 | DBIS Core Services | 8610-8615 | VLAN 160 | ⏳ Planned |
| Phase 2 | RPC Translator Services | 8620-8625 | VLAN 160 | ⏳ Planned |
| Phase 3 | Besu Services (Validators) | 8630-8639 | VLAN 110 (planned) | ⏳ Planned |
| Phase 4 | Besu Services (RPC) | 8640-8649 | VLAN 112 (planned) | ⏳ Planned |
| Phase 5 | Legacy Cleanup | N/A | N/A | ⏳ Planned |
**Note:** Besu services migration may require separate VLANs (110, 112) per network architecture. This migration plan focuses on DBIS Core and RPC Translator services initially.
---
## Detailed Migration Phases
### Phase 1: DBIS Core Services Migration
**Target:** Migrate DBIS Core services (VMIDs 10100-10151) to Phoenix architecture
#### Phase 1.1: Pre-Migration Preparation
**Prerequisites:**
- [ ] Phoenix Core (Phase 0) deployed and validated
- [ ] Network connectivity verified (VLAN 160)
- [ ] Storage capacity verified (thin1 on r630-01)
- [ ] Backup procedures tested
- [ ] Migration scripts prepared
**Pre-Migration Tasks:**
1. **Verify Current State:**
```bash
# Verify all DBIS services are running
for vmid in 10100 10101 10120 10130 10150 10151; do
ssh root@192.168.11.10 "pct status $vmid"
done
# Verify database backups
ssh root@192.168.11.10 "pct exec 10100 -- pg_dumpall > /tmp/dbis_backup_pre_migration.sql"
```
2. **Allocate VMIDs in Phoenix:**
- VMID 8610: DBIS PostgreSQL Primary (10.160.0.20)
- VMID 8611: DBIS PostgreSQL Replica (10.160.0.21)
- VMID 8612: DBIS Redis (10.160.0.22)
- VMID 8613: DBIS Frontend (10.160.0.23)
- VMID 8614: DBIS API Primary (10.160.0.24)
- VMID 8615: DBIS API Secondary (10.160.0.25)
#### Phase 1.2: Database Migration (PostgreSQL)
**Migration Steps:**
1. **Deploy PostgreSQL Containers:**
```bash
# Create PostgreSQL Primary container (8610)
ssh root@192.168.11.11 "pct create 8610 \
local:vztmpl/ubuntu-22.04-standard_22.04-1_amd64.tar.zst \
--storage thin1 \
--hostname dbis-postgres-primary-phoenix \
--memory 4096 \
--cores 4 \
--rootfs thin1:100 \
--net0 bridge=vmbr0,name=eth0,ip=10.160.0.20/22,gw=10.160.0.1,type=veth \
--unprivileged 1 \
--onboot 1"
# Create PostgreSQL Replica container (8611)
ssh root@192.168.11.11 "pct create 8611 \
local:vztmpl/ubuntu-22.04-standard_22.04-1_amd64.tar.zst \
--storage thin1 \
--hostname dbis-postgres-replica-phoenix \
--memory 4096 \
--cores 4 \
--rootfs thin1:100 \
--net0 bridge=vmbr0,name=eth0,ip=10.160.0.21/22,gw=10.160.0.1,type=veth \
--unprivileged 1 \
--onboot 1"
```
2. **Install and Configure PostgreSQL:**
```bash
# Install PostgreSQL on primary (8610)
# (Follow PostgreSQL setup procedure from Phoenix deployment runbook)
# Restore database backup
ssh root@192.168.11.11 "pct push 8610 /tmp/dbis_backup_pre_migration.sql /tmp/"
ssh root@192.168.11.11 "pct exec 8610 -- psql -U postgres < /tmp/dbis_backup_pre_migration.sql"
# Configure replication (if replica is required)
```
3. **Verify Database:**
```bash
# Test connection
ssh root@192.168.11.11 "pct exec 8610 -- psql -U dbis -d dbis_core -c 'SELECT COUNT(*) FROM information_schema.tables;'"
```
#### Phase 1.3: Redis Migration
**Migration Steps:**
1. **Deploy Redis Container:**
```bash
# Create Redis container (8612)
ssh root@192.168.11.11 "pct create 8612 \
local:vztmpl/ubuntu-22.04-standard_22.04-1_amd64.tar.zst \
--storage thin1 \
--hostname dbis-redis-phoenix \
--memory 2048 \
--cores 2 \
--rootfs thin1:20 \
--net0 bridge=vmbr0,name=eth0,ip=10.160.0.22/22,gw=10.160.0.1,type=veth \
--unprivileged 1 \
--onboot 1"
```
2. **Install and Configure Redis:**
```bash
# Install Redis
ssh root@192.168.11.11 "pct exec 8612 -- bash -c 'apt-get update && apt-get install -y redis-server'"
# Configure Redis
ssh root@192.168.11.11 "pct exec 8612 -- systemctl enable redis-server"
ssh root@192.168.11.11 "pct exec 8612 -- systemctl start redis-server"
```
3. **Migrate Redis Data (if persistent data exists):**
```bash
# Export data from old Redis
ssh root@192.168.11.10 "pct exec 10120 -- redis-cli --rdb /tmp/redis_backup.rdb"
# Import data to new Redis
ssh root@192.168.11.11 "pct push 8612 /tmp/redis_backup.rdb /tmp/"
ssh root@192.168.11.11 "pct exec 8612 -- redis-cli --rdb /tmp/redis_backup.rdb"
```
#### Phase 1.4: API Services Migration
**Migration Steps:**
1. **Deploy API Containers:**
```bash
# Create API Primary container (8614)
ssh root@192.168.11.11 "pct create 8614 \
local:vztmpl/ubuntu-22.04-standard_22.04-1_amd64.tar.zst \
--storage thin1 \
--hostname dbis-api-primary-phoenix \
--memory 4096 \
--cores 4 \
--rootfs thin1:50 \
--net0 bridge=vmbr0,name=eth0,ip=10.160.0.24/22,gw=10.160.0.1,type=veth \
--unprivileged 1 \
--onboot 1"
# Create API Secondary container (8615)
ssh root@192.168.11.11 "pct create 8615 \
local:vztmpl/ubuntu-22.04-standard_22.04-1_amd64.tar.zst \
--storage thin1 \
--hostname dbis-api-secondary-phoenix \
--memory 4096 \
--cores 4 \
--rootfs thin1:50 \
--net0 bridge=vmbr0,name=eth0,ip=10.160.0.25/22,gw=10.160.0.1,type=veth \
--unprivileged 1 \
--onboot 1"
```
2. **Install Node.js and Deploy Application:**
```bash
# Install Node.js 18 (similar to Phoenix API deployment)
# Copy application code
# Install dependencies
# Configure environment variables (point to new database and Redis)
# Run migrations
# Build application
# Create systemd service
```
3. **Update Environment Variables:**
- Database: 10.160.0.20 (new PostgreSQL)
- Redis: 10.160.0.22 (new Redis)
- Keycloak: 10.160.0.12 (Phoenix Keycloak) or existing Keycloak
#### Phase 1.5: Frontend Migration
**Migration Steps:**
1. **Deploy Frontend Container:**
```bash
# Create Frontend container (8613)
ssh root@192.168.11.11 "pct create 8613 \
local:vztmpl/ubuntu-22.04-standard_22.04-1_amd64.tar.zst \
--storage thin1 \
--hostname dbis-frontend-phoenix \
--memory 2048 \
--cores 2 \
--rootfs thin1:30 \
--net0 bridge=vmbr0,name=eth0,ip=10.160.0.23/22,gw=10.160.0.1,type=veth \
--unprivileged 1 \
--onboot 1"
```
2. **Install Nginx and Deploy Frontend:**
```bash
# Install Nginx
# Copy frontend build files
# Configure Nginx
# Point to new API endpoints (10.160.0.24, 10.160.0.25)
```
#### Phase 1.6: Validation and Cutover
**Validation Gates:**
1. All containers running
2. Database accessible and data verified
3. Redis accessible
4. API services responding to health checks
5. Frontend accessible
6. End-to-end functionality tested
**Cutover Procedure:**
1. **Update DNS Records:**
- `dbis-admin.d-bis.org` → 10.160.0.23 (new frontend)
- `dbis-api.d-bis.org` → 10.160.0.24 (new API primary)
- `dbis-api-2.d-bis.org` → 10.160.0.25 (new API secondary)
2. **Monitor Services:**
- Check logs for errors
- Monitor health endpoints
- Verify user access
3. **Legacy Services:**
- Keep legacy services running for 48 hours
- Monitor for issues
- Decommission after validation period
---
### Phase 2: RPC Translator Services Migration
**Target:** Migrate RPC Translator services (VMIDs 106-108, 2400-2402) to Phoenix architecture
#### Phase 2.1: Pre-Migration Preparation
**Prerequisites:**
- [ ] DBIS Core migration (Phase 1) complete (if dependencies exist)
- [ ] Network connectivity verified
- [ ] Storage capacity verified
**VMID Allocation:**
- VMID 8620: Redis (10.160.0.30)
- VMID 8621: Web3Signer (10.160.0.31)
- VMID 8622: Vault (10.160.0.32)
- VMID 8623-8625: RPC Translator instances (10.160.0.33-35)
#### Phase 2.2: Supporting Services Migration
**Migration Steps:**
1. **Migrate Redis, Web3Signer, Vault** (similar to Phase 1 patterns)
2. **Deploy RPC Translator instances**
3. **Update configuration** to point to new Besu RPC endpoints
4. **Validate services**
#### Phase 2.3: Cutover
**Cutover Procedure:**
- Update DNS records
- Monitor services
- Decommission legacy services after validation
---
### Phase 3: Besu Services Migration (Future)
**Target:** Migrate Besu services to dedicated VLANs (110, 112)
**Note:** Besu services migration may require:
- Separate VLANs (110 for validators, 112 for RPC)
- Network architecture changes
- Careful coordination with blockchain operations
**Status:** Future phase - requires additional planning
---
## VMID Allocation in Phoenix
### 4.1 VMID Allocation Table
| VMID Range | Service Category | Subnet/VLAN | Purpose |
|------------|-----------------|-------------|---------|
| 8600-8603 | Phoenix Core | VLAN 160 (10.160.0.0/22) | Core Phoenix services |
| 8610-8619 | DBIS Core | VLAN 160 (10.160.0.0/22) | DBIS services |
| 8620-8629 | RPC Translator | VLAN 160 (10.160.0.0/22) | RPC translation services |
| 8630-8639 | Reserved | TBD | Future use |
| 8640-8649 | Reserved | TBD | Future use |
| 8650-8699 | Reserved | VLAN 160 (10.160.0.0/22) | Future Phoenix services |
### 4.2 IP Address Allocation
**VLAN 160 Subnet:** 10.160.0.0/22 (1024 addresses)
| IP Range | Service | Purpose |
|----------|---------|---------|
| 10.160.0.10-13 | Phoenix Core | Core services |
| 10.160.0.20-29 | DBIS Core | DBIS services |
| 10.160.0.30-39 | RPC Translator | RPC translation services |
| 10.160.0.40-99 | Reserved | Future services |
| 10.160.0.100-255 | Reserved | Future expansion |
---
## Network Migration Plan
### 5.1 Current Network (Flat LAN)
**Current:** All services on 192.168.11.0/24
**Gateway:** 192.168.11.1
**Characteristics:**
- No network segmentation
- Single broadcast domain
- Limited security isolation
### 5.2 Target Network (VLAN-based)
**Target:** Services on VLAN 160 (10.160.0.0/22)
**Gateway:** 10.160.0.1
**Characteristics:**
- Network segmentation
- Isolated broadcast domains
- Enhanced security isolation
- Role-based NAT support
### 5.3 Migration Network Steps
1. **Verify VLAN 160 Configuration:**
- VLAN exists on switch/router
- Proxmox bridge supports VLAN tagging
- ER605 routing configured
2. **Deploy Services on VLAN 160:**
- Use static IPs in 10.160.0.0/22 range
- Configure gateway as 10.160.0.1
- Test connectivity
3. **DNS Cutover:**
- Update DNS records to point to new IPs
- Monitor services
- Verify functionality
4. **Legacy Cleanup:**
- Decommission legacy services after validation period
- Reclaim IP addresses and VMIDs
---
## Data Migration Procedures
### 6.1 Database Migration
**Source:** PostgreSQL on 192.168.11.100 (VMID 10100)
**Target:** PostgreSQL on 10.160.0.20 (VMID 8610)
**Procedure:**
1. **Pre-Migration Backup:**
```bash
# Full database backup
ssh root@192.168.11.10 "pct exec 10100 -- pg_dump -U dbis dbis_core > /tmp/dbis_backup_$(date +%Y%m%d).sql"
# Verify backup
ssh root@192.168.11.10 "ls -lh /tmp/dbis_backup_*.sql"
```
2. **Transfer Backup:**
```bash
# Copy backup to new host
scp root@192.168.11.10:/tmp/dbis_backup_*.sql root@192.168.11.11:/tmp/
```
3. **Restore Database:**
```bash
# Restore on new database
ssh root@192.168.11.11 "pct push 8610 /tmp/dbis_backup_*.sql /tmp/"
ssh root@192.168.11.11 "pct exec 8610 -- psql -U phoenix -d phoenix < /tmp/dbis_backup_*.sql"
```
4. **Verify Data:**
```bash
# Compare record counts
ssh root@192.168.11.11 "pct exec 8610 -- psql -U phoenix -d phoenix -c 'SELECT COUNT(*) FROM (SELECT table_name FROM information_schema.tables WHERE table_schema='\\''public'\\'') AS tables;'"
```
### 6.2 Redis Migration
**Source:** Redis on 192.168.11.120 (VMID 10120)
**Target:** Redis on 10.160.0.22 (VMID 8612)
**Procedure:**
1. **Export Redis Data (if persistent):**
```bash
# Save Redis data
ssh root@192.168.11.10 "pct exec 10120 -- redis-cli SAVE"
ssh root@192.168.11.10 "pct exec 10120 -- redis-cli --rdb /tmp/redis_backup.rdb"
```
2. **Import Redis Data:**
```bash
# Copy to new Redis
scp root@192.168.11.10:/tmp/redis_backup.rdb root@192.168.11.11:/tmp/
ssh root@192.168.11.11 "pct push 8612 /tmp/redis_backup.rdb /tmp/"
ssh root@192.168.11.11 "pct exec 8612 -- cp /tmp/redis_backup.rdb /var/lib/redis/dump.rdb"
ssh root@192.168.11.11 "pct exec 8612 -- systemctl restart redis-server"
```
**Note:** Redis is often stateless. Migration may not require data transfer if Redis is used only for caching.
### 6.3 Application Code Migration
**Procedure:**
1. **Copy Application Code:**
```bash
# Copy API code
rsync -avz --exclude node_modules --exclude .git \
root@192.168.11.10:/opt/dbis-core/ \
root@192.168.11.11:/tmp/dbis-core-source/
# Copy to new container
ssh root@192.168.11.11 "pct push 8614 /tmp/dbis-core-source /opt/dbis-core --recursive"
```
2. **Install Dependencies and Configure:**
```bash
# Install Node.js, dependencies, configure environment
# (Follow application deployment procedures)
```
---
## Service Dependencies Mapping
### 7.1 DBIS Core Dependencies
**Internal Dependencies:**
- API → PostgreSQL (database queries)
- API → Redis (caching)
- Frontend → API (API calls)
- API → Keycloak (authentication)
**External Dependencies:**
- All services → Internet (for updates, external APIs)
- Frontend → DNS (for domain resolution)
### 7.2 RPC Translator Dependencies
**Internal Dependencies:**
- RPC Translator → Besu RPC (blockchain queries)
- RPC Translator → Redis (nonce locking)
- RPC Translator → Web3Signer (transaction signing)
- RPC Translator → Vault (secrets management)
**External Dependencies:**
- All services → Internet (for updates)
### 7.3 Dependency Migration Order
**Recommended Migration Order:**
1. **Foundation Services First:**
- PostgreSQL
- Redis
- Keycloak (if shared)
2. **Application Services Second:**
- API services
- Frontend
3. **Supporting Services Last:**
- Monitoring (if any)
- Logging (if any)
---
## Cutover Procedures
### 8.1 DNS Cutover
**DNS Records to Update:**
| Record | Current IP | New IP | Type |
|--------|-----------|--------|------|
| `dbis-admin.d-bis.org` | 192.168.11.130 | 10.160.0.23 | A |
| `dbis-api.d-bis.org` | 192.168.11.150 | 10.160.0.24 | A |
| `dbis-api-2.d-bis.org` | 192.168.11.151 | 10.160.0.25 | A |
**Cutover Steps:**
1. **Pre-Cutover Validation:**
- All new services running and validated
- All validation gates passed
- End-to-end testing completed
2. **Update DNS Records:**
```bash
# Using Cloudflare API or dashboard
# Update each DNS record to point to new IPs
```
3. **Monitor Services:**
- Check logs for errors
- Monitor health endpoints
- Verify user access
- Monitor for 48 hours
4. **Rollback (if needed):**
- Revert DNS records to old IPs
- Legacy services become active again
### 8.2 Service Cutover
**Cutover Strategy:**
1. **Parallel Operation:**
- New services running alongside legacy services
- DNS cutover routes traffic to new services
- Legacy services remain running as backup
2. **Traffic Migration:**
- DNS cutover routes all traffic to new services
- Legacy services receive no traffic
- Monitor for issues
3. **Validation Period:**
- Monitor new services for 48 hours
- Verify functionality
- Check for errors
4. **Legacy Decommission:**
- After validation period, decommission legacy services
- Reclaim resources
---
## Risk Mitigation
### 9.1 Identified Risks
| Risk | Likelihood | Impact | Mitigation |
|------|------------|--------|------------|
| Data loss during migration | Low | High | Multiple backups, verification procedures |
| Service downtime | Low | High | DNS cutover, parallel operation |
| Network connectivity issues | Medium | Medium | Pre-migration network validation |
| Application compatibility issues | Low | Medium | Pre-migration testing, validation gates |
| Configuration errors | Medium | Medium | Automated configuration, validation procedures |
### 9.2 Mitigation Strategies
**Data Loss Prevention:**
- Multiple backups before migration
- Verify backups before migration
- Test restore procedures
- Keep legacy data for 30 days
**Downtime Prevention:**
- DNS-based cutover (instant rollback)
- Parallel operation during migration
- Validation gates before cutover
- Rollback procedures documented
**Network Issues Prevention:**
- Pre-migration network validation
- Test connectivity before migration
- Verify firewall rules
- Document network configuration
**Compatibility Issues Prevention:**
- Pre-migration testing
- Validation gates
- Gradual migration (one service at a time)
- Rollback procedures
---
## Rollback Procedures
### 10.1 DNS Rollback
**If issues are discovered after DNS cutover:**
1. **Revert DNS Records:**
```bash
# Revert DNS records to old IPs
# Legacy services become active again
```
2. **Investigate Issues:**
- Check logs
- Identify root cause
- Fix issues
3. **Re-attempt Migration:**
- After fixing issues, re-attempt migration
- Follow migration procedures again
### 10.2 Service Rollback
**If service-level rollback is needed:**
1. **Stop New Services:**
```bash
# Stop new services (keep containers for debugging)
for vmid in 8610 8611 8612 8613 8614 8615; do
ssh root@192.168.11.11 "pct stop $vmid"
done
```
2. **Revert DNS:**
- Revert DNS records to legacy IPs
- Legacy services become active
3. **Keep New Services:**
- Do not delete new containers (may contain debugging info)
- Investigate issues
- Fix and re-attempt
---
## Timeline Estimates
### 11.1 Phase 1: DBIS Core Migration
**Estimated Duration:** 2-4 weeks
| Task | Duration | Dependencies |
|------|----------|--------------|
| Pre-migration preparation | 2-3 days | Phoenix Core deployed |
| Database migration | 1-2 days | Preparation complete |
| Redis migration | 1 day | Database migration complete |
| API services migration | 2-3 days | Database and Redis migrated |
| Frontend migration | 1-2 days | API services migrated |
| Validation and testing | 3-5 days | All services migrated |
| DNS cutover | 1 day | Validation complete |
| Legacy decommission | 1-2 days | Cutover successful |
**Total:** 2-4 weeks (including validation period)
### 11.2 Phase 2: RPC Translator Migration
**Estimated Duration:** 1-2 weeks
| Task | Duration | Dependencies |
|------|----------|--------------|
| Pre-migration preparation | 1-2 days | Phase 1 complete (if dependencies) |
| Supporting services migration | 1-2 days | Preparation complete |
| RPC Translator migration | 2-3 days | Supporting services migrated |
| Validation and testing | 2-3 days | All services migrated |
| DNS cutover | 1 day | Validation complete |
| Legacy decommission | 1 day | Cutover successful |
**Total:** 1-2 weeks
### 11.3 Phase 3: Besu Services Migration (Future)
**Estimated Duration:** TBD (requires additional planning)
---
## Success Criteria
### 12.1 Migration Success Criteria
**Phase 1 (DBIS Core) is successful when:**
- [ ] All services running on VLAN 160
- [ ] All validation gates passed
- [ ] DNS cutover completed
- [ ] Services accessible via new IPs
- [ ] No user-reported issues for 48 hours
- [ ] Legacy services decommissioned
- [ ] Documentation updated
**Phase 2 (RPC Translator) is successful when:**
- [ ] All services running on VLAN 160
- [ ] All validation gates passed
- [ ] DNS cutover completed
- [ ] Services accessible via new IPs
- [ ] No user-reported issues for 48 hours
- [ ] Legacy services decommissioned
---
## Post-Migration Tasks
### 13.1 Immediate Post-Migration
1. **Monitor Services:**
- Check logs daily
- Monitor health endpoints
- Verify user access
2. **Update Documentation:**
- Update service documentation
- Update network diagrams
- Update runbooks
3. **Cleanup:**
- Remove legacy containers (after validation period)
- Reclaim IP addresses
- Reclaim VMIDs
### 13.2 Long-Term Post-Migration
1. **Optimization:**
- Optimize performance
- Optimize resource allocation
- Review and optimize configuration
2. **Enhancement:**
- Implement additional security controls
- Implement monitoring and alerting
- Implement backup and recovery procedures
3. **Future Migration:**
- Plan Phase 3 (Besu services) migration
- Plan additional service migrations
- Plan network architecture enhancements
---
## Related Documentation
- **Phoenix Deployment Runbook:** `docs/03-deployment/PHOENIX_DEPLOYMENT_RUNBOOK.md`
- **Phoenix Firewall Rules:** `docs/04-configuration/PHOENIX_VLAN160_FIREWALL_RULES.md`
- **Phoenix DNS Template:** `docs/04-configuration/PHOENIX_DNS_ZONE_TEMPLATE.md`
- **Phoenix System Boundary:** `docs/02-architecture/PHOENIX_SYSTEM_BOUNDARY_STATEMENT.md`
- **Network Architecture:** `docs/02-architecture/NETWORK_ARCHITECTURE.md`
- **VMID Allocation:** `docs/02-architecture/VMID_ALLOCATION_FINAL.md`
---
**Last Updated:** 2026-01-09
**Status:** Draft - Ready for Review
**Next Review:** Before Phase 1 execution

View File

@@ -1,5 +1,11 @@
# Pre-Start Audit Plan - Hostnames and IP Addresses
**Last Updated:** 2026-01-31
**Document Version:** 1.0
**Status:** Active Documentation
---
**Date:** 2025-01-20
**Purpose:** Comprehensive audit and fix of hostnames and IP addresses before starting VMs

View File

@@ -1,5 +1,11 @@
# Pre-Start Checklist - Hostnames and IP Addresses
**Last Updated:** 2026-01-31
**Document Version:** 1.0
**Status:** Active Documentation
---
**Date:** 2025-01-20
**Purpose:** Complete audit and fixes before starting VMs on pve and pve2
@@ -61,6 +67,20 @@ systemctl restart pve-cluster pvestatd pvedaemon pveproxy
---
## Before config or deploy changes
Create a snapshot so you can roll back if needed:
```bash
# On Proxmox host, for the VM/container you are changing:
pct snapshot <vmid> pre-change-$(date +%Y%m%d-%H%M%S)
# Or for VMs: qm snapshot <vmid> pre-change-$(date +%Y%m%d-%H%M%S)
```
See also: [OPERATIONAL_RUNBOOKS.md](OPERATIONAL_RUNBOOKS.md) (snapshots before upgrade), [BACKUP_AND_RESTORE.md](BACKUP_AND_RESTORE.md).
---
## Verification Steps
### 1. Verify Hostnames

View File

@@ -0,0 +1,80 @@
# Proxmox VE Deployment Templates Reference
**Last Updated:** 2026-02-05
**Purpose:** List all templates required for Proxmox VE infra deployment and how they are pushed to hosts.
---
## 1. LXC OS Templates (per host)
These are **downloaded on each Proxmox host** via `pveam download local <name>`. They are not stored in the repo.
| Template name | Used by | Notes |
|---------------|---------|--------|
| `debian-12-standard_12.12-1_amd64.tar.zst` | create-chain138-containers, recreate-ct-2301, config/ip-addresses.conf, create-alltra-nodes | Primary in many scripts |
| `ubuntu-22.04-standard_22.04-1_amd64.tar.zst` | smom-dbis-138-proxmox (CONTAINER_OS_TEMPLATE), recreate-containers-from-configs, rpc-translator-138 | Alternative base |
| Alpine (e.g. `alpine-3.22-default_*.tar.xz`) | NPMplus container (scripts/npmplus/) | Optional; for NPMplus LXC |
**Push script:** After pushing file templates, run:
```bash
bash scripts/push-templates-to-proxmox.sh --download-templates
```
This runs `pveam download local` for Debian 12 and Ubuntu 22.04 on each host if not already present.
---
## 2. File Templates (pushed to hosts)
Pushed to **all three Proxmox hosts** (ml110, r630-01, r630-02) under `/opt/smom-dbis-138-proxmox/` by:
```bash
bash scripts/push-templates-to-proxmox.sh
```
### Besu config templates
| Path (on host) | Source |
|----------------|--------|
| `templates/besu-configs/config-validator.toml` | smom-dbis-138-proxmox/templates/besu-configs/ |
| `templates/besu-configs/config-sentry.toml` | |
| `templates/besu-configs/config-rpc-core.toml` | |
| `templates/besu-configs/config-rpc.toml` | |
| `templates/besu-configs/config-rpc-4.toml` | |
| `templates/docker-compose-besu-temp.yml` | smom-dbis-138-proxmox/templates/ |
### Config files
| Path (on host) | Source |
|----------------|--------|
| `config/proxmox.conf` (if exists) or `config/proxmox.conf.example` | smom-dbis-138-proxmox/config/ |
| `config/genesis.json` | |
| `config/network.conf` / `network.conf.example` | |
### Scripts and lib
- **scripts/** — full tree (deployment, validation, network, manage, migration, health, upgrade)
- **lib/** — common.sh, proxmox-api.sh, container-utils.sh, etc.
- **install/** — besu-validator-install.sh, blockscout-install.sh, firefly-install.sh, etc.
---
## 3. Push script usage
| Command | Effect |
|---------|--------|
| `bash scripts/push-templates-to-proxmox.sh` | Push all file templates and scripts to ml110, r630-01, r630-02 |
| `bash scripts/push-templates-to-proxmox.sh --download-templates` | Same, then run pveam on each host for Debian 12 + Ubuntu 22.04 |
| `bash scripts/push-templates-to-proxmox.sh --dry-run` | Print what would be copied; no SSH/scp |
**Requirements:** SSH access to hosts (from config/ip-addresses.conf: 192.168.11.10, .11, .12). Run from a machine that can reach the Proxmox LAN or has SSH keys configured.
---
## 4. Related
- [scripts/README.md](../../scripts/README.md) — Script index
- [smom-dbis-138-proxmox/README.md](../../smom-dbis-138-proxmox/README.md) — Deployment from that tree
- [12-quick-reference/QUICK_START_TEMPLATE.md](../12-quick-reference/QUICK_START_TEMPLATE.md) — Using a single template for multiple LXCs
- [11-references/TEMPLATE_BASE_WORKFLOW.md](../11-references/TEMPLATE_BASE_WORKFLOW.md) — Template workflow

View File

@@ -1,14 +1,25 @@
# Deployment & Operations
**Last Updated:** 2026-02-02
**Document Version:** 1.0
**Status:** Active Documentation
---
This directory contains deployment guides and operational procedures.
## Documents
- **[ORCHESTRATION_DEPLOYMENT_GUIDE.md](ORCHESTRATION_DEPLOYMENT_GUIDE.md)** ⭐⭐⭐ - Complete enterprise deployment orchestration
- **[ORCHESTRATION_DEPLOYMENT_GUIDE.md](../02-architecture/ORCHESTRATION_DEPLOYMENT_GUIDE.md)** ⭐⭐⭐ - Complete enterprise deployment orchestration
- **[VALIDATED_SET_DEPLOYMENT_GUIDE.md](VALIDATED_SET_DEPLOYMENT_GUIDE.md)** ⭐⭐⭐ - Validated set deployment procedures
- **[OPERATIONAL_RUNBOOKS.md](OPERATIONAL_RUNBOOKS.md)** ⭐⭐⭐ - All operational procedures
- **[CONTRACT_DEPLOYMENT_RUNBOOK.md](CONTRACT_DEPLOYMENT_RUNBOOK.md)** ⭐⭐ - Contract deploy + verification (Forge Verification Proxy)
- **[BLOCKSCOUT_FIX_RUNBOOK.md](BLOCKSCOUT_FIX_RUNBOOK.md)** ⭐⭐ - Blockscout (VMID 5000) troubleshooting
- **[DEPLOYMENT_READINESS.md](DEPLOYMENT_READINESS.md)** ⭐⭐ - Pre-deployment validation checklist
- **[DEPLOYMENT_STATUS_CONSOLIDATED.md](DEPLOYMENT_STATUS_CONSOLIDATED.md)** ⭐⭐⭐ - Current deployment status
- **[INFRA_DEPLOYMENT_LOCKED_AND_LOADED.md](INFRA_DEPLOYMENT_LOCKED_AND_LOADED.md)** ⭐⭐⭐ - What's ready vs what unblocks completion (templates, deps, LAN/creds)
- **[PROXMOX_TEMPLATES_REFERENCE.md](PROXMOX_TEMPLATES_REFERENCE.md)** ⭐⭐ - Template list + push to all Proxmox hosts
- **[DEPLOYMENT_STATUS_MASTER.md](DEPLOYMENT_STATUS_MASTER.md)** ⭐⭐⭐ - **Authoritative** container inventory by host (SSH-reconciled)
- **[DEPLOYMENT_STATUS_CONSOLIDATED.md](DEPLOYMENT_STATUS_CONSOLIDATED.md)** ⭐⭐ - Legacy consolidated table (see MASTER for current inventory)
- **[RUN_DEPLOYMENT.md](RUN_DEPLOYMENT.md)** ⭐⭐ - Deployment execution guide
- **[REMOTE_DEPLOYMENT.md](REMOTE_DEPLOYMENT.md)** ⭐ - Remote deployment procedures

View File

@@ -1,5 +1,11 @@
# Remote Deployment Guide
**Last Updated:** 2026-01-31
**Document Version:** 1.0
**Status:** Active Documentation
---
## Issue: Deployment Scripts Require Proxmox Host Access
The deployment scripts (`deploy-all.sh`, etc.) are designed to run **ON the Proxmox host** because they use the `pct` command-line tool, which is only available on Proxmox hosts.

View File

@@ -1,5 +1,11 @@
# Run Deployment - Execution Guide
**Last Updated:** 2026-01-31
**Document Version:** 1.0
**Status:** Active Documentation
---
## ✅ Scripts Validated and Ready
All scripts have been validated:

View File

@@ -0,0 +1,71 @@
# Snapshot Runbook — Before Major Changes
**Last Updated:** 2026-02-07
**Purpose:** Create Proxmox snapshots before major changes for quick rollback.
**See:** [OPERATIONAL_RUNBOOKS.md](OPERATIONAL_RUNBOOKS.md), [PRE_START_CHECKLIST.md](PRE_START_CHECKLIST.md)
---
## When to Create Snapshots
- Before upgrading Besu or other critical services
- Before configuration changes (nginx, NPMplus, etc.)
- Before OS/package upgrades in containers
- Before migration (storage, host, network)
---
## Commands
### LXC (containers)
```bash
# Create snapshot (use pct on Proxmox host)
pct snapshot <VMID> pre-<change>-$(date +%Y%m%d-%H%M%S)
# Examples
pct snapshot 1000 pre-besu-upgrade-20260207
pct snapshot 10233 pre-npmplus-config-20260207-120000
# List snapshots
pct listsnapshot <VMID>
# Rollback (if needed)
pct rollback <VMID> pre-<change>-YYYYMMDD
```
### QEMU/KVM (VMs)
```bash
qm snapshot <VMID> pre-<change>-$(date +%Y%m%d)
qm listsnapshot <VMID>
qm rollback <VMID> pre-<change>-YYYYMMDD
```
### Via SSH from repo
```bash
# From project root
source config/ip-addresses.conf
# Create snapshot on r630-01 for VMID 10233
ssh root@$PROXMOX_R630_01 "pct snapshot 10233 pre-change-$(date +%Y%m%d-%H%M%S)"
```
---
## Retention
- Keep 13 recent snapshots per VMID
- Delete old snapshots: `pct delsnapshot <VMID> <snapname>`
- Snapshots consume storage; monitor disk usage
---
## Checklist
- [ ] Identify VMIDs affected by change
- [ ] Create snapshot on each Proxmox host for those VMIDs
- [ ] Document snapshot names for rollback reference
- [ ] Proceed with change
- [ ] If rollback needed: `pct rollback <VMID> <snapname>`

View File

@@ -0,0 +1,104 @@
# Tezos Bridging Deployment Runbook
This runbook describes how to deploy and configure all possible bridging to the Tezos ecosystem: **Etherlink** (EVM chain 42793) and **Tezos L1** (native Michelson).
## Prerequisites (external verification)
Before implementation or production use:
1. **CCIP (Etherlink)**
- Check [CCIP supported networks](https://docs.chain.link/ccip/supported-networks) for Etherlink (chain 42793).
- If supported: obtain the **CCIP chain selector** for 42793 and set it in `alltra-lifi-settlement/src/config/chains.ts` (ETHERLINK.selector) and set `ccipSupported: true`.
2. **LiFi (Etherlink)**
- Check LiFi API (e.g. `https://li.quest/v1/chains`) for chain 42793.
- If present: set `lifiSupported: true` in `alltra-lifi-settlement/src/config/chains.ts` for ETHERLINK.
- If not present: use the same request process as [REQUESTING_CCIP_LIFI_SUPPORT.md](../alltra-lifi-settlement/docs/REQUESTING_CCIP_LIFI_SUPPORT.md) for Etherlink.
---
## Part A: Etherlink (chain 42793)
### A1. BridgeRegistry
- **No contract change.** Destination is registered at runtime.
- **Action:** After BridgeRegistry is deployed, ensure Etherlink is registered.
Use [InitializeRegistry.s.sol](../smom-dbis-138/scripts/bridge/interop/InitializeRegistry.s.sol), which registers 42793 as "Etherlink Mainnet".
If running initialization manually, call:
- `registerDestination(42793, "Etherlink Mainnet", minFinalityBlocks, timeoutSeconds, baseFee, feeRecipient)`.
- When registering tokens (e.g. BRG-VLT, BRG-ISO), include **42793** in `allowedDestinations` (or use integration defaults that already include 42793).
### A2. VaultBridgeIntegration / eMoneyBridgeIntegration / WTokenBridgeIntegration
- **Done in code:** 42793 (Etherlink) is already in the default destination arrays in:
- [VaultBridgeIntegration.sol](../../smom-dbis-138/contracts/bridge/integration/VaultBridgeIntegration.sol)
- [eMoneyBridgeIntegration.sol](../../smom-dbis-138/contracts/bridge/integration/eMoneyBridgeIntegration.sol)
- [WTokenBridgeIntegration.sol](../../smom-dbis-138/contracts/bridge/integration/WTokenBridgeIntegration.sol)
- **Existing deployments:** Use `setDefaultDestinations` / `setDefaultEvmDestinations` to add 42793 if not redeploying.
### A3. CCIP bridges (UniversalCCIPBridge, CCIPWETH9Bridge, CCIPWETH10Bridge)
- **Condition:** Only if CCIP supports Etherlink (see Prerequisites).
- **Steps:**
1. Deploy **receiver** bridge contracts on Etherlink (same interfaces as on source chain).
2. For each token and each bridge: call `addDestination(token, etherlinkChainSelector, receiverBridgeOnEtherlink)`.
- **Reference:** [DeployWETHBridges.s.sol](../smom-dbis-138/script/deploy/bridge/DeployWETHBridges.s.sol), [execute-bridge-config.sh](../smom-dbis-138/scripts/deployment/execute-bridge-config.sh).
### A4. ChainRegistry and EVMAdapter (Etherlink)
- **Script:** [DeployAllAdapters.s.sol](../smom-dbis-138/script/deploy/chains/DeployAllAdapters.s.sol) already deploys an EVM adapter for Etherlink and registers chain 42793.
- **Env:** `UNIVERSAL_BRIDGE_ADDRESS`, `CHAIN_REGISTRY_ADDRESS`, `PRIVATE_KEY`.
- **Run:** `forge script script/deploy/chains/DeployAllAdapters.s.sol --rpc-url <RPC> --broadcast` (from `smom-dbis-138`).
### A5. LiFi / alltra-lifi-settlement
- **Config:** [chains.ts](../../alltra-lifi-settlement/src/config/chains.ts) includes an **ETHERLINK** entry (chainId 42793, rpcUrl, explorerUrl, nativeCurrency from eip155-42793). Set `selector`, `usdcAddress`, `ccipSupported`, `lifiSupported` after Prerequisites verification.
- **Docs:** [CHAIN_SUPPORT.md](../alltra-lifi-settlement/docs/CHAIN_SUPPORT.md) includes Etherlink in the support matrix and verification section.
### A6. BRG scripts and token registration
- **Scripts:** [register-vault-deposit-tokens.sh](../smom-dbis-138/scripts/bridge/register-vault-deposit-tokens.sh), [register-iso-deposit-tokens.sh](../smom-dbis-138/scripts/bridge/register-iso-deposit-tokens.sh) document that 42793 (Etherlink) and 1 (Tezos L1) should be included in allowedDestinations when registering tokens.
- **Default destinations:** New deployments of VaultBridgeIntegration / eMoneyBridgeIntegration / WTokenBridgeIntegration already include 42793; `registerDepositTokenDefault` / `registereMoneyTokenDefault` / `registerWTokenDefault` will include Etherlink.
---
## Part B: Tezos L1 (native Michelson)
### B1. TezosAdapter
- **Contract:** [TezosAdapter.sol](../smom-dbis-138/contracts/bridge/adapters/non-evm/TezosAdapter.sol)
Implements IChainAdapter: lock tokens, emit TezosBridgeInitiated; oracle calls `confirmTransaction(requestId, tezosTxHash)` when Tezos tx is confirmed.
### B2/B4. ChainRegistry and BridgeRegistry
- **ChainRegistry:** Tezos L1 is registered via [DeployAllAdapters.s.sol](../smom-dbis-138/script/deploy/chains/DeployAllAdapters.s.sol) as `registerNonEVMChain("Tezos-Mainnet", ChainType.Other, tezosAdapter, "https://tzkt.io", ...)`.
- **BridgeRegistry:** [InitializeRegistry.s.sol](../smom-dbis-138/scripts/bridge/interop/InitializeRegistry.s.sol) registers Tezos-Mainnet with **chainId 1** (non-EVM slot). For tokens that may bridge to Tezos L1, include **1** in `allowedDestinations`.
### B3. Deploy TezosAdapter and register
- Run [DeployAllAdapters.s.sol](../smom-dbis-138/script/deploy/chains/DeployAllAdapters.s.sol); it deploys TezosAdapter and registers "Tezos-Mainnet" in ChainRegistry.
### B5. Tezos-side relay
- **Runbook:** [TEZOS_L1_RELAY_RUNBOOK.md](../smom-dbis-138/docs/bridge/TEZOS_L1_RELAY_RUNBOOK.md) describes:
- TezosAdapter event schema (TezosBridgeInitiated)
- Relay flow: watch events → perform Tezos-side mint/transfer → call `confirmTransaction`
- ORACLE_ROLE usage and security notes.
---
## Implementation order
1. **Prerequisites:** Verify CCIP and LiFi for Etherlink (42793); record selectors and flags in chains.ts and CHAIN_SUPPORT.md.
2. **Etherlink:** A1 (BridgeRegistry via InitializeRegistry) and A2 (integrations already include 42793) → A4 (DeployAllAdapters) → A5 (LiFi config/docs) → A3 if CCIP supports Etherlink → A6 (BRG scripts/docs).
3. **Tezos L1:** B1 (TezosAdapter exists) → B2/B4 (BridgeRegistry destination 1 in InitializeRegistry) → B3 (DeployAllAdapters) → B5 (relay runbook).
4. **Doc:** This runbook; update after Prerequisites verification.
---
## References
- [InitializeRegistry.s.sol](../smom-dbis-138/scripts/bridge/interop/InitializeRegistry.s.sol) BridgeRegistry destinations (Etherlink 42793, Tezos-Mainnet 1, XRPL 0).
- [DeployAllAdapters.s.sol](../smom-dbis-138/script/deploy/chains/DeployAllAdapters.s.sol) EVMAdapter(42793), TezosAdapter, ChainRegistry registration.
- [execute-bridge-config.sh](../smom-dbis-138/scripts/deployment/execute-bridge-config.sh) CCIP addDestination pattern.
- [TEZOS_L1_RELAY_RUNBOOK.md](../smom-dbis-138/docs/bridge/TEZOS_L1_RELAY_RUNBOOK.md) Tezos L1 relay behavior and event schema.

View File

@@ -1,5 +1,11 @@
# Validated Set Deployment Guide
**Last Updated:** 2026-01-31
**Document Version:** 1.0
**Status:** Active Documentation
---
Complete guide for deploying a validated Besu node set using the script-based approach.
## Overview
@@ -282,8 +288,8 @@ After successful deployment:
## Additional Resources
- [Besu Nodes File Reference](BESU_NODES_FILE_REFERENCE.md)
- [Network Bootstrap Guide](NETWORK_BOOTSTRAP_GUIDE.md)
- [Boot Node Runbook](BOOT_NODE_RUNBOOK.md) (if using boot node)
- [Besu Allowlist Runbook](BESU_ALLOWLIST_RUNBOOK.md)
- [Besu Nodes File Reference](../06-besu/BESU_NODES_FILE_REFERENCE.md)
- [Network Bootstrap Guide](../02-architecture/NETWORK_ARCHITECTURE.md) (network bootstrap section)
- [Boot Node Runbook](../archive/NEXT_STEPS_BOOT_VALIDATED_SET.md) (if using boot node)
- [Besu Allowlist Runbook](../06-besu/BESU_ALLOWLIST_RUNBOOK.md)

View File

@@ -0,0 +1,211 @@
# Add Chain 138 (Defi Oracle Meta Mainnet) to Ledger Live
**Last Updated:** 2026-02-13
**Status:** Action plan and submission guide
---
## Complete this now (your only required action) — ✅ Submitted 2026-02-13
The form has been submitted. Next: await Ledgers response and follow their process (agreement + integration steps). For reference, the steps were:
1. **Open:** [Ledger blockchain integration form](https://tally.so/r/mORpv8).
2. **Paste** the text below into the form field *"What are you looking from Ledger?"*, then replace `[your email/Telegram]` with your contact.
3. **Submit** the form. Ledger will reply with next steps (and any agreement).
**Copy-paste block:**
```
We would like to add Defi Oracle Meta Mainnet (Chain ID 138) to Ledger Live so users can manage ETH and tokens on this EVM chain natively in Ledger Wallet.
- Chain name: Defi Oracle Meta Mainnet
- Chain ID: 138 (0x8a)
- EVM-compatible (EIP-155, EIP-1559), standard derivation 44'/60'
- Public RPCs and block explorer are live; chain is listed on Chainlist (chainlist.org/chain/138).
- We already have Chain ID 138 configured in a Ledger App-Ethereum fork (network name "Defi Oracle Meta", ticker ETH) and can provide specs or PRs as needed.
Preferred contact: [your email/Telegram]
```
---
## Overview
Ledger Live does not support user-added custom EVM networks. To have **Defi Oracle Meta Mainnet (Chain ID 138)** appear and work in Ledger Live (desktop/mobile), the chain must be added to Ledgers supported list via their **official blockchain integration process**.
This doc gives the steps and materials to request and support that integration.
---
## Step 1: Submit the official request (required first)
**Do not start code changes** before Ledger has accepted your request. Their developer portal states:
> ⚠️ Don't start the development without signing an agreement with our teams.
1. **Open the Ledger blockchain integration request form:**
**https://tally.so/r/mORpv8**
2. **Fill in the form** (e.g. “What are you looking from Ledger?”) with a short request to add **Defi Oracle Meta Mainnet (Chain ID 138)** to Ledger Live. Suggested text:
```
We would like to add Defi Oracle Meta Mainnet (Chain ID 138) to Ledger Live so users can manage ETH and tokens on this EVM chain natively in Ledger Wallet.
- Chain name: Defi Oracle Meta Mainnet
- Chain ID: 138 (0x8a)
- EVM-compatible (EIP-155, EIP-1559), standard derivation 44'/60'
- Public RPCs and block explorer are live; chain is listed on Chainlist (chainlist.org/chain/138).
- We already have Chain ID 138 configured in a Ledger App-Ethereum fork (network name "Defi Oracle Meta", ticker ETH) and can provide specs or PRs as needed.
Preferred contact: [your email/Telegram]
```
3. **Submit** and wait for Ledger to respond. They will guide you through the next steps (and any agreement).
---
## Step 2: What Ledgers integration involves (after they respond)
Ledgers [Adding your blockchain to Ledger Wallet](https://developers.ledger.com/docs/ledger-live/accounts/getting-started) guide outlines an **8-step process**. For an **EVM chain** like 138, the main touchpoints are:
| Step | What it means for Chain 138 |
|------|-----------------------------|
| **1 Currency** | Register the chain in Ledgers crypto-assets (e.g. `@ledgerhq/cryptoassets` in ledger-live), with `ethereumLikeInfo.chainId: 138` and explorerViews. |
| **2 Device app lib** | Ethereum app already supports multiple chain IDs; use `hw-app-eth` with chainId 138 in tx building/signing. Chain 138 may need to be in **official** Ledger app-ethereum (see below). |
| **3 Create module** | EVM chains often use the same “Ethereum” family module with different chain config (RPC, explorer). |
| **4 Derivation / Signer** | Standard EVM: `44'/60'` (already used in our app-ethereum config). |
| **5 API** | Ledger may use their own indexer/RPC or point to your public RPCs and Blockscout. |
| **6 LLD & LLM** | Desktop and mobile Ledger Wallet apps: live-common setup, currency list, i18n; run dev and QA. |
| **7 Wallet API** | wallet-api: Ethereum family extended for chainId 138 (or new family); Ledger Wallet adapter. |
| **8 Manual tests** | Execute send/receive test plan (sync, receive, balance, broadcast, operations, account). |
**Full step-by-step (all steps, no gaps):** [LEDGER_BLOCKCHAIN_INTEGRATION_COMPLETE.md](../11-references/LEDGER_BLOCKCHAIN_INTEGRATION_COMPLETE.md) in docs/11-references. **Generated code for all 8 steps:** [pr-workspace/ledger-chain138-integration/](../../pr-workspace/ledger-chain138-integration/) — drop-in snippets and config for each step.
Ledger will tell you exactly which repos (e.g. `ledger-live`, `app-ethereum`, `wallet-api`) and which files to change or which data to provide.
---
## Step 3: Materials to have ready for Ledger
When Ledger asks for chain details or integration data, you can point them to or paste the following.
**Project description (short/medium/long):** [docs/11-references/DEFI_ORACLE_META_MAINNET_PROJECT_DESCRIPTION.md](../11-references/DEFI_ORACLE_META_MAINNET_PROJECT_DESCRIPTION.md) — use the **medium** paragraph for Ledger or listing forms.
### 3.1 Chain specification (Chainlist-compatible)
Our canonical chain spec is in this repo at `pr-workspace/chains/_data/chains/eip155-138.json`. Summary:
| Field | Value |
|-------|--------|
| **name** | Defi Oracle Meta Mainnet |
| **chainId** | 138 |
| **networkId** | 1 |
| **shortName** | dfio-meta-main |
| **nativeCurrency** | Ether (ETH), 18 decimals |
| **slip44** | 60 (standard EVM) |
| **infoURL** | https://d-bis.org |
**RPC URLs (public):**
- `https://rpc-http-pub.d-bis.org`
- `wss://rpc-ws-pub.d-bis.org`
- `https://rpc.d-bis.org`
- `wss://rpc.d-bis.org`
- `https://rpc2.d-bis.org`
- `wss://ws.rpc.d-bis.org`
- `wss://ws.rpc2.d-bis.org`
- `https://rpc.public-0138.defi-oracle.io`
- `wss://rpc.public-0138.defi-oracle.io`
- `https://rpc.defi-oracle.io`
- `wss://wss.defi-oracle.io`
**Block explorer:**
- Blockscout: `https://explorer.d-bis.org` (EIP3091)
**Features:** EIP-155, EIP-1559.
### 3.2 Ledger App-Ethereum (device) configuration
We already have Chain 138 in our app-ethereum fork:
- **`pr-workspace/app-ethereum/src/network.c`** (line 42):
`{.chain_id = 138, .name = "Defi Oracle Meta", .ticker = "ETH"}`
- **`pr-workspace/app-ethereum/makefile_conf/chain/defi_oracle.mk`**:
`CHAIN_ID = 138`, `APPNAME = "Defi Oracle Meta"`, `TICKER = "ETH"`, derivation `44'/60'`
If Ledger asks for device-app changes, we can either:
- Propose a PR to **LedgerHQ/app-ethereum** adding the same entry to `network.c` (and any makefile/chain list they use), or
- Provide the exact patch/snippet for them to integrate.
### 3.3 References in this repo
- [PUBLIC_RPC_CHAIN138_LEDGER.md](./PUBLIC_RPC_CHAIN138_LEDGER.md) RPC list, NPMplus mapping, Ledger usage.
- [CHAIN138_WALLET_CONFIG_VALIDATION.md](./CHAIN138_WALLET_CONFIG_VALIDATION.md) Validated wallet config (MetaMask, ethers, Ledger).
- [LEDGER_CHAIN138_ISSUES_AND_WORKAROUNDS.md](./LEDGER_CHAIN138_ISSUES_AND_WORKAROUNDS.md) Current limitations and workarounds (e.g. Ledger + MetaMask).
---
## Public code review repo for the Ledger Live team
**All public code, specs, and patches for Ledger team review:** [**https://github.com/bis-innovations/LedgerLive**](https://github.com/bis-innovations/LedgerLive)
Use this repo to publish Chain 138 integration materials (cryptoassets entries, config snippets, app-ethereum changes, or full patches) so the Ledger Live team can review before or alongside any PR to LedgerHQ repos. Clone, add your changes, push, and share the repo or specific branches/PRs with Ledger when they ask for code.
### Initialize and push (from GitHub instructions)
**New repo (first commit):**
```bash
echo "# LedgerLive" >> README.md
git init
git add README.md
git commit -m "first commit"
git branch -M main
git remote add origin https://github.com/bis-innovations/LedgerLive.git
git push -u origin main
```
**Existing local repo:**
```bash
git remote add origin https://github.com/bis-innovations/LedgerLive.git
git branch -M main
git push -u origin main
```
---
## Step 4: Optional prepare for a future PR to Ledger Live
If Ledger confirms that adding Chain 138 is done by editing their **ledger-live** monorepo (e.g. `libs/ledgerjs/packages/cryptoassets` or `libs/ledger-live-common`), you can:
1. **Publish for review:** Push your work to [bis-innovations/LedgerLive](https://github.com/bis-innovations/LedgerLive) for Ledger team code review.
2. Clone upstream: `git clone https://github.com/LedgerHQ/ledger-live.git`
3. Follow their [installation and contribution guide](https://github.com/LedgerHQ/ledger-live/blob/develop/CONTRIBUTING.md).
4. Locate where EVM chains are defined (often a data file or config listing chainId, name, RPC, explorer).
5. Add an entry for Chain ID 138 using the spec in **Step 3.1** and any format Ledger requires.
Do this **only after** Ledger has accepted the request and indicated where to add the chain; their structure may differ from public guesses.
---
## Summary checklist
- [x] Submit the request at **https://tally.so/r/mORpv8** (describe Chain 138 and add preferred contact) — **Done 2026-02-13.**
- [ ] Wait for Ledgers response and follow their process (agreement + integration steps).
- [x] **Materials ready:** chain spec (`pr-workspace/chains/_data/chains/eip155-138.json`), public RPCs, explorer, app-ethereum config (`network.c`, `defi_oracle.mk`), project description (`docs/11-references/DEFI_ORACLE_META_MAINNET_PROJECT_DESCRIPTION.md`) — all present in repo.
- [x] **Deployment reference ready:** [LEDGER_BLOCKCHAIN_INTEGRATION_COMPLETE.md](../11-references/LEDGER_BLOCKCHAIN_INTEGRATION_COMPLETE.md) — full 8-step integration with gaps filled, Chain 138 quick reference, and deployment checklist.
- [ ] If Ledger asks for a PR or code review: publish code to **[bis-innovations/LedgerLive](https://github.com/bis-innovations/LedgerLive)** for their review; use the materials above and [LEDGER_BLOCKCHAIN_INTEGRATION_COMPLETE.md](../11-references/LEDGER_BLOCKCHAIN_INTEGRATION_COMPLETE.md) with their contribution guidelines.
---
## References
- **Public code review for Ledger team:** [**bis-innovations/LedgerLive**](https://github.com/bis-innovations/LedgerLive) — use for all Chain 138 integration code/specs/patches for Ledger Live team review.
- **Full 8-step integration (this repo):** [LEDGER_BLOCKCHAIN_INTEGRATION_COMPLETE.md](../11-references/LEDGER_BLOCKCHAIN_INTEGRATION_COMPLETE.md) — all steps, deployment checklist, Chain 138 quick reference.
- **Ledger Adding your blockchain:** https://developers.ledger.com/docs/ledger-live/accounts/getting-started
- **Ledger Blockchain integration form:** https://tally.so/r/mORpv8
- **Ledger Live monorepo:** https://github.com/LedgerHQ/ledger-live
- **Ledger App-Ethereum:** https://github.com/LedgerHQ/app-ethereum
- **Ledger Wallet API:** https://github.com/LedgerHQ/wallet-api
- **Chainlist (Chain 138):** https://chainlist.org/chain/138

View File

@@ -0,0 +1,151 @@
# Add VLAN 11 Secondary IP - WSL2 Guide
**Last Updated:** 2026-01-15
**Status:** Active Documentation
**System:** WSL2 (Ubuntu 24.04)
**Purpose:** Configure machine to have both current IP and VLAN 11 IP
---
## Current Configuration
- **System:** WSL2 (Ubuntu 24.04.3 LTS)
- **Primary Interface:** eth0
- **Current IP:** 192.168.0.4/24
- **Target VLAN 11 IP:** 192.168.11.23/24
- **VLAN 11 Gateway:** 192.168.11.1 (✅ Reachable)
---
## Quick Setup (Immediate)
**Run these commands:**
```bash
# Add VLAN 11 IP address
sudo ip addr add 192.168.11.4/24 dev eth0
# Add route to VLAN 11 network
sudo ip route add 192.168.11.0/24 dev eth0 src 192.168.11.4
# Verify
ip addr show eth0 | grep "inet "
```
**Expected Output:**
```
inet 192.168.0.4/24 ... (current IP)
inet 192.168.11.23/24 ... (VLAN 11 IP)
```
---
## Using Scripts
### Option 1: Simple Script (Temporary)
```bash
sudo ./scripts/unifi/add-vlan11-secondary-ip-simple.sh
```
This adds the IP immediately but will be lost on reboot.
### Option 2: Auto-Configuration on Login (WSL2 Recommended)
```bash
# Add to ~/.bashrc for auto-configuration
./scripts/unifi/add-vlan11-ip-to-bashrc.sh
```
This will automatically add the VLAN 11 IP every time you log in.
**Or manually add to ~/.bashrc:**
```bash
# Add this to the end of ~/.bashrc
if [ -n "$(ip link show eth0 2>/dev/null)" ] && ! ip addr show eth0 | grep -q "192.168.11.23"; then
sudo ip addr add 192.168.11.23/24 dev eth0 2>/dev/null || true
sudo ip route add 192.168.11.0/24 dev eth0 src 192.168.11.23 2>/dev/null || true
fi
```
---
## Verification
After adding the IP:
```bash
# Check IP addresses
ip addr show eth0 | grep "inet "
# Should show both:
# inet 192.168.0.4/24 ... (current)
# inet 192.168.11.23/24 ... (VLAN 11)
# Test connectivity
ping -c 3 192.168.11.1 # VLAN 11 gateway
ping -c 3 192.168.11.10 # ml110
ping -c 3 192.168.11.11 # r630-01
ping -c 3 192.168.11.12 # r630-02
```
---
## WSL2 Notes
**Important for WSL2:**
1. **No netplan:** WSL2 doesn't use netplan by default
2. **No systemd:** WSL2 may not have systemd running
3. **Best solution:** Add to ~/.bashrc for auto-configuration on login
**Persistence Options:**
1. **~/.bashrc (Recommended):** Auto-configures on each login
2. **Manual:** Run commands manually after each reboot
3. **Windows Task Scheduler:** Can run a script on Windows startup
---
## Troubleshooting
### Issue: Cannot add IP address
**Error:** `RTNETLINK answers: File exists`
**Solution:** IP already exists, skip this step.
### Issue: Route already exists
**Error:** `RTNETLINK answers: File exists`
**Solution:** Route already configured, skip this step.
### Issue: IP lost after reboot
**Solution:** This is normal for WSL2. Use ~/.bashrc auto-configuration.
---
## Summary
**Quick Start:**
```bash
# Add IP immediately
sudo ip addr add 192.168.11.23/24 dev eth0
sudo ip route add 192.168.11.0/24 dev eth0 src 192.168.11.23
# Make persistent (WSL2)
./scripts/unifi/add-vlan11-ip-to-bashrc.sh
```
**Result:**
- ✅ Keep current IP: 192.168.0.4
- ✅ Add VLAN 11 IP: 192.168.11.23
- ✅ Access both networks simultaneously
- ✅ Auto-configure on login (if bashrc script used)
---
**Last Updated:** 2026-01-15

View File

@@ -0,0 +1,222 @@
# Add VLAN 11 Secondary IP Address - Guide
**Last Updated:** 2026-01-15
**Status:** Active Documentation
**Purpose:** Configure machine to have both current IP and VLAN 11 IP
---
## Current Configuration
- **Primary Interface:** eth0
- **Current IP:** 192.168.0.4/24
- **Current Gateway:** 192.168.0.1
- **Target VLAN 11 IP:** 192.168.11.4/24
- **VLAN 11 Gateway:** 192.168.11.1
---
## Option 1: Temporary Configuration (Until Reboot)
**Quick Setup:**
```bash
sudo ./scripts/unifi/add-vlan11-secondary-ip.sh
```
**Manual Commands:**
```bash
# Add secondary IP
sudo ip addr add 192.168.11.4/24 dev eth0
# Add route to VLAN 11 network
sudo ip route add 192.168.11.0/24 dev eth0 src 192.168.11.4
# Verify
ip addr show eth0 | grep "inet "
```
**Test Connectivity:**
```bash
ping -c 3 192.168.11.1 # VLAN 11 gateway
ping -c 3 192.168.11.10 # ml110
ping -c 3 192.168.11.11 # r630-01
ping -c 3 192.168.11.12 # r630-02
```
---
## Option 2: Persistent Configuration (Survives Reboot)
### Option 2a: Using ifupdown (if /etc/network/interfaces exists)
```bash
sudo ./scripts/unifi/add-vlan11-secondary-ip-ifupdown.sh
```
**Manual ifupdown Configuration:**
1. **Edit /etc/network/interfaces:**
```bash
sudo nano /etc/network/interfaces
```
2. **Add VLAN 11 alias interface:**
```
# VLAN 11 secondary IP address
auto eth0:11
iface eth0:11 inet static
address 192.168.11.4
netmask 255.255.255.0
gateway 192.168.11.1
```
3. **Apply configuration:**
```bash
sudo ifdown eth0:11 2>/dev/null || true
sudo ifup eth0:11
```
### Option 2b: Using Netplan (if netplan is installed)
```bash
sudo ./scripts/unifi/add-vlan11-secondary-ip-netplan.sh
```
**Manual Netplan Configuration:**
1. **Find netplan config:**
```bash
ls /etc/netplan/*.yaml
```
2. **Edit the config file:**
```bash
sudo nano /etc/netplan/*.yaml
```
3. **Add VLAN 11 IP to eth0:**
```yaml
network:
version: 2
renderer: networkd
ethernets:
eth0:
addresses:
- 192.168.0.4/24 # Current IP
- 192.168.11.4/24 # VLAN 11 IP (add this)
gateway4: 192.168.0.1 # Current gateway
routes:
- to: 192.168.11.0/24
via: 192.168.11.1
nameservers:
addresses:
- 192.168.0.1
- 8.8.8.8
```
4. **Apply configuration:**
```bash
sudo netplan try
sudo netplan apply
```
5. **Verify:**
```bash
ip addr show eth0 | grep "inet "
```
---
## Verification
After configuration, verify:
```bash
# Check IP addresses
ip addr show eth0 | grep "inet "
# Should show:
# inet 192.168.0.4/24 ... (current IP)
# inet 192.168.11.4/24 ... (VLAN 11 IP)
# Test connectivity
ping -c 3 192.168.11.1 # VLAN 11 gateway
ping -c 3 192.168.11.10 # ml110
ping -c 3 192.168.0.1 # Default gateway (should still work)
```
---
## Benefits
With both IPs configured:
1. **Access to Default Network:**
- Can access UDM Pro (192.168.0.1)
- Can access devices on 192.168.0.0/24
2. **Access to VLAN 11:**
- Can access Proxmox hosts (192.168.11.10-12)
- Can access services on VLAN 11
- Can manage VLAN 11 resources
3. **Dual Network Access:**
- Best of both worlds
- No need to switch networks
- Can access both simultaneously
---
## Troubleshooting
### Issue: Cannot ping VLAN 11 gateway
**Possible Causes:**
1. VLAN 11 gateway not configured on UDM Pro
2. Network Isolation enabled
3. Firewall blocking
**Solutions:**
1. Verify UDM Pro VLAN 11 configuration
2. Check Network Isolation settings
3. Verify firewall rules
### Issue: IP address not persistent after reboot
**Solution:** Use netplan configuration (Option 2)
### Issue: Route conflicts
**Solution:** Check existing routes:
```bash
ip route show
```
Remove conflicting routes if needed:
```bash
sudo ip route del 192.168.11.0/24
```
---
## Summary
**Status:** ✅ Scripts ready
**Quick Start:**
```bash
# Temporary (until reboot)
sudo ./scripts/unifi/add-vlan11-secondary-ip.sh
# Persistent (survives reboot)
sudo ./scripts/unifi/add-vlan11-secondary-ip-netplan.sh
```
**Result:**
- ✅ Keep current IP: 192.168.0.4
- ✅ Add VLAN 11 IP: 192.168.11.4
- ✅ Access both networks simultaneously
---
**Last Updated:** 2026-01-15

View File

@@ -0,0 +1,299 @@
# Admin Vault Setup - Sankofa Admin Portal
**Last Updated:** 2026-01-31
**Document Version:** 1.0
**Status:** Active Documentation
---
**Date:** 2026-01-19
**Status:****READY FOR DEPLOYMENT**
---
## Executive Summary
This document describes the setup and migration of all discovered secrets to the private admin vault for the Sankofa Admin Portal. The admin vault provides secure, centralized storage for all administrative secrets used across the Phoenix infrastructure.
---
## Overview
### What is the Admin Vault?
The **Admin Vault** is a private, isolated namespace within the Phoenix Vault cluster dedicated to storing administrative secrets for the Sankofa Admin Portal. It provides:
- **Elevated Permissions:** Super admin access for administrative operations
- **Audit Logging:** All access logged for security compliance
- **Organized Structure:** Secrets organized by category (blockchain, cloudflare, database, etc.)
- **Enhanced Security:** Extended TTL and enhanced encryption
- **Automatic Backups:** Included in daily cluster backups
### Admin Vault Path Structure
```
secret/data/admin/sankofa-admin/
├── blockchain/
│ ├── private-keys/
│ ├── addresses/
│ └── contracts/
├── cloudflare/
│ ├── api-tokens/
│ ├── api-keys/
│ ├── tunnel-tokens/
│ └── origin-ca-key
├── database/
│ └── dbis-core/
├── npm/
│ ├── passwords/
│ └── email
├── unifi/
│ ├── api-key
│ └── password
└── infrastructure/
```
---
## Setup Instructions
### Step 1: Provision Admin Vault
```bash
# Set Vault credentials
export VAULT_TOKEN=hvs.PMJcL6HkZnz0unUYZAdfttZY
export VAULT_ADDR=http://192.168.11.200:8200
# Provision admin vault
cd /home/intlc/projects/proxmox
./scripts/provision-admin-vault.sh
```
Or using the TypeScript script directly:
```bash
cd dbis_core
npx tsx scripts/provision-admin-vault.ts \
--org "Sankofa Admin" \
--name "sankofa-admin" \
--level "super_admin"
```
### Step 2: Migrate Secrets
```bash
# Migrate all secrets from inventory
./scripts/migrate-secrets-to-admin-vault.sh
```
For dry run (test without actually migrating):
```bash
DRY_RUN=true ./scripts/migrate-secrets-to-admin-vault.sh
```
### Step 3: Verify Migration
```bash
# List secrets in admin vault
vault list secret/data/admin/sankofa-admin
# Read a specific secret
vault read secret/data/admin/sankofa-admin/blockchain/private-keys/deployer
```
---
## Secrets Migration
### Migrated Secrets
All secrets from `MASTER_SECRETS_INVENTORY.md` are migrated to the admin vault:
#### 1. Blockchain/Web3 Secrets
- **Private Keys:** Deployer, 237-combo
- **Addresses:** Deployer address
- **Contracts:** LINK token, CCIP router, Token factory, Token registry
#### 2. Cloudflare Secrets
- **API Tokens:** Main token, script tokens
- **API Keys:** Proxmox, loc-az-hci
- **Tunnel Tokens:** Main tunnel, shared tunnel
- **Origin CA Key:** Full certificate key
- **Account Info:** Account ID, email
#### 3. NPM (Nginx Proxy Manager) Secrets
- **Passwords:** Hashed and plain text
- **Email:** Admin email
#### 4. Database Credentials
- **DBIS Core:** Database URL (from .env)
#### 5. UniFi/Omada Secrets
- **API Key:** UniFi API key
- **Password:** UniFi password
---
## Admin Vault Access
### AppRole Credentials
After provisioning, you'll receive:
- **Role ID:** Unique AppRole identifier
- **Secret ID:** Unique AppRole secret (display once)
- **API Endpoint:** http://192.168.11.200:8200
### Authentication
```bash
# Authenticate with AppRole
export VAULT_ADDR=http://192.168.11.200:8200
export VAULT_ROLE_ID=<role-id>
export VAULT_SECRET_ID=<secret-id>
vault write auth/approle/login \
role_id=$VAULT_ROLE_ID \
secret_id=$VAULT_SECRET_ID
```
### Access Secrets
```bash
# Read a secret
vault read secret/data/admin/sankofa-admin/blockchain/private-keys/deployer
# List secrets in a category
vault list secret/data/admin/sankofa-admin/blockchain
# Write a new secret
vault write secret/data/admin/sankofa-admin/infrastructure/new-secret \
value="secret-value" \
description="Description"
```
---
## Integration with Applications
### Node.js/TypeScript
```typescript
import Vault from 'node-vault';
const vault = Vault({
endpoint: process.env.VAULT_ADDR || 'http://192.168.11.200:8200',
});
// Authenticate
await vault.approleLogin({
role_id: process.env.VAULT_ROLE_ID,
secret_id: process.env.VAULT_SECRET_ID,
});
// Read secret
const secret = await vault.read('secret/data/admin/sankofa-admin/blockchain/private-keys/deployer');
const privateKey = secret.data.data.value;
```
### Python
```python
import hvac
client = hvac.Client(url='http://192.168.11.200:8200')
# Authenticate
response = client.auth.approle.login(
role_id=os.environ['VAULT_ROLE_ID'],
secret_id=os.environ['VAULT_SECRET_ID']
)
client.token = response['auth']['client_token']
# Read secret
secret = client.secrets.kv.v2.read_secret_version(
path='admin/sankofa-admin/blockchain/private-keys/deployer'
)
private_key = secret['data']['data']['value']
```
---
## Security Considerations
### Access Control
- **Super Admin Level:** Full access to admin vault
- **Extended TTL:** 8-hour tokens, 7-day secret IDs
- **Audit Logging:** All access logged
- **Policy Isolation:** Separate policies from user vaults
### Best Practices
1. **Store Credentials Securely:**
- Role ID and Secret ID should be stored in secure vault
- Never commit credentials to version control
- Rotate Secret IDs regularly
2. **Monitor Access:**
- Review audit logs regularly
- Set up alerts for unusual access patterns
- Track all secret reads/writes
3. **Backup Strategy:**
- Admin vault included in daily cluster backups
- Test restore procedures regularly
- Maintain off-site backups
4. **Secret Rotation:**
- Rotate secrets regularly
- Update secrets in admin vault immediately
- Remove old secrets after rotation
---
## Troubleshooting
### Provisioning Fails
**Issue:** Admin vault provisioning fails
**Solutions:**
1. Check Vault cluster is accessible
2. Verify root token has permissions
3. Ensure cluster is unsealed
4. Check logs for specific errors
### Migration Fails
**Issue:** Secret migration fails
**Solutions:**
1. Verify admin vault exists
2. Check authentication credentials
3. Ensure vault path is correct
4. Review error messages for specific issues
### Access Denied
**Issue:** Cannot access admin vault secrets
**Solutions:**
1. Verify AppRole credentials are correct
2. Check token hasn't expired
3. Verify policy allows access
4. Ensure vault path matches exactly
---
## Related Documentation
- [Phoenix Vault Cluster Deployment](./PHOENIX_VAULT_CLUSTER_DEPLOYMENT.md)
- [Master Secrets Inventory](./MASTER_SECRETS_INVENTORY.md)
- [Secrets Quick Reference](./SECRETS_QUICK_REFERENCE.md)
- [Vault Operations Guide](./VAULT_OPERATIONS_GUIDE.md)
---
**Status:****READY FOR DEPLOYMENT**
**Last Updated:** 2026-01-19

View File

@@ -1,5 +1,11 @@
# ALI RPC Port Forwarding Configuration
**Last Updated:** 2026-01-31
**Document Version:** 1.0
**Status:** Active Documentation
---
**Date**: 2026-01-04
**Rule Name**: ALI RPC
**Target Service**: VMID 2501 (Permissioned RPC Node)

Some files were not shown because too many files have changed in this diff Show More