Skip to main content

Pre-W1.1 Architecture Baseline Tag

Date: 2026-02-18 Tag name: pre-w1.1-architecture


1. Tag Details

RepoCommit SHADate
sv0-documentation740cee544baeab470a011f6a977fb3ddc90e35042026-02-18
sv0-platformee17ad366292e5c4e110373850a722cbd83a8f8f2026-02-18
sv0-connectorsc38b0e9a910e2b614dbed216e77a74fbbbeabd9d2026-02-18

What this tag captures

  • Phase 0 complete: automationworkload rename across all 3 repos
  • Phase E3+E4: RUNS_AS evidence lookup + evidence completeness indicators
  • All architecture docs finalized (Doc 09, Doc 15, Doc 16, tech stack analysis)
  • All Codex + Gemini review fixes applied
  • 3 architecture decisions closed (path-level rows, resolved_at naming, locked cluster context)
  • 173 unit + 84 integration tests passing (platform)
  • 67 unit + 4 e2e tests passing (connector)

Restoring this baseline

# In each repo:
git checkout pre-w1.1-architecture

2. Dual Deployment Plan (Old vs New Side-by-Side)

Purpose

Deploy both the pre-W1.1 (current) and post-W1.1 (new) versions simultaneously so the founder can compare before/after in a browser.

Architecture

┌──────────────────────────────────────────────────────┐
│ EXISTING VPS: 178.156.217.150 (Hetzner) │
│ Tag: pre-w1.1-architecture │
│ │
│ :80 → UI (current — pre-W1.1) │
│ :3000 → API (current) │
│ :27017 → MongoDB (current data) │
└──────────────────────────────────────────────────────┘

┌──────────────────────────────────────────────────────┐
│ NEW VPS: <new-ip> (Hetzner) │
│ Branch: main (post-W1.1 implementation) │
│ │
│ :80 → UI (new — W1.1 authority paths + findings) │
│ :3000 → API (new) │
│ :27017 → MongoDB (same data, re-imported) │
└──────────────────────────────────────────────────────┘

Setup Steps

1. Provision new VPS

# Hetzner Cloud CLI or console
# Recommended: CX22 (2 vCPU, 4GB RAM) — same spec as existing
# OS: Ubuntu 22.04
# SSH key: same as existing server

2. Bootstrap new VPS

NEW_IP=<new-ip>

# SSH in and install Docker
ssh root@$NEW_IP "apt update && apt install -y docker.io docker-compose-plugin && \
useradd -m -s /bin/bash deploy && \
usermod -aG docker deploy && \
mkdir -p /home/deploy/.ssh && \
cp /root/.ssh/authorized_keys /home/deploy/.ssh/ && \
chown -R deploy:deploy /home/deploy/.ssh"

3. Deploy W1.1 version to new VPS

# From local machine — deploy latest main (with W1.1 changes)
rsync -avz --delete \
--exclude 'node_modules' \
--exclude 'dist' \
--exclude '.git' \
--exclude 'data' \
--exclude 'ui/node_modules' \
--exclude 'ui/dist' \
sv0-platform/ deploy@$NEW_IP:~/sv0-platform/

ssh deploy@$NEW_IP "cd ~/sv0-platform && UI_PORT=80 docker compose up --build -d"

4. Import same data to both

cd sv0-connectors/integrations/entra-servicenow
source .venv/bin/activate

# Import to existing (pre-W1.1)
entra-servicenow --submit-graph reports/graph.json \
--platform-url http://178.156.217.150:3000 \
--tenant-id default

# Import to new (W1.1)
entra-servicenow --submit-graph reports/graph.json \
--platform-url http://$NEW_IP:3000 \
--tenant-id default

5. Compare

URLVersion
http://178.156.217.150Pre-W1.1 (current)
http://<new-ip>Post-W1.1 (authority paths, risk clusters, new UX)

Teardown

After founder approval, either:

  • Promote new VPS: Update DNS/bookmarks to point to new VPS. Decommission old.
  • Deploy to existing: Deploy W1.1 to the existing VPS (overwrite in place). Decommission new VPS.

Cost

Hetzner CX22: ~€5.50/month. Run both for 1-2 weeks during comparison, then teardown.