Skip to content

Forge: Current State Report

Snapshot date: 2026-04-28 Author: Wellness worker session (Opus 4.7) Purpose: Point-in-time inventory of every machine, IP, service, script, automation, integration, and connection that makes up Justin's forge system.


1. Hardware & Network

Physical / VM machines

Name Role OS IP SSH
Finn Proxmox host (MS-01) Proxmox VE 192.168.86.67 ssh finn
UDev VM 103 on Finn, command center Ubuntu 192.168.86.50 (this box)
Vector Primary workstation Windows 11 Pro DHCP ,
Sol MacBook Pro M3 Max 64GB, runs LM Studio macOS 192.168.86.33 (also static .87 on en7) ,
Venus iPhone 15 Pro Max iOS DHCP ,

Containers/VMs on Finn (Proxmox)

VMID Type Hostname IP SSH alias Role
100 VM homeassistant 192.168.86.70 ssh homeassistant Home Assistant Core 2026.4.4
101 LXC plex 192.168.86.73 ssh plex Plex media streaming
102 LXC media-server 192.168.86.74 ssh media-server Arr stack + Tailscale + jk-hub-api
104 LXC biz-apps 192.168.86.81 ssh biz-apps decommissioned
105 LXC adguard 192.168.86.75 ssh adguard DNS + ad blocking
106 LXC n8n 192.168.86.82 ssh n8n Workflow automation (Docker)
107 LXC immich 192.168.86.83 ssh immich Photo/video library
108 LXC frigate 192.168.86.84 ssh frigate Reolink NVR
110 LXC minecraft 192.168.86.23 ssh minecraft WiebCraft Paper+Geyser server (public)

UDev has passwordless SSH to all containers via key auth.


2. Storage (centralized on Finn)

Tier Drive Size UDev path Backed up?
Cloud Google Drive , /mnt/workspace/Google-Drive/ (rclone FUSE) Native (Google)
Workspace NVMe 8 TB /mnt/workspace/ (NFS) Nightly rsync to Storage
Storage HDD 26 TB /mnt/storage/ (NFS) ,

Workspace holds video projects, brand assets per-brand year-organized (JustinWieb-VR, Nova-Design, Gus-Outdoor-Co, Sip-N-Serve, JustinWieb-Tech, Personal), shared assets (Music, Sound-Effects), and Frigate's security-cameras/.

Storage holds Plex movies/tv, photo archive (1991-2020), audiobooks, books, downloads, app data (tautulli, justinkrystal-media), forge-archive/ (cold storage of decommissioned forge content), and workspace-backup/ (nightly rsync source).

Google Drive is fully mapped at system-map/google-drive. Top-level:

  • Business/: Gus-Outdoor-Co, JustinWieb-VR, Nova-Design, Sip-N-Serve, Wiebelhaus-Enterprises (formation, EIN, taxes, records)
  • Inbox/, content project drafts (video scripts, research)
  • Personal/, house, finances, fitness, journal, recipes, records, travel, etc.
  • Root: AI-generated .docx from /save-to-drive pipeline

3. Forge Workspace (/home/justinwieb/forge)

forge/
├── system-map/                ← Shared model-agnostic brain (fleet, architecture, steering, drive)
├── CLAUDE.md             ← Bootstrap instructions for Claude Code sessions
├── memory/
│   ├── daily/            ← Append-only daily logs (YYYY-MM-DD.md)
│   ├── general/          ← Long-term topical knowledge
│   ├── handoffs/         ← Cross-session briefings (~21 docs)
│   └── _archive/         ← Cold storage of retired pieces
├── scripts/              ← Tooling (assets, cleanup, cloudflare, gdoc, hooks, integrations, monitors, n8n, notion, search, sites)
├── sites/                ← Deployable static sites (justinkrystal.com, justinsforge.com, _shared, _templates)
├── infra/                ← Infrastructure (context-api, mkdocs, n8n/workflows, systemd, logrotate)
├── brands/               ← Brand context (gus-outdoor-co, gus-the-bass, nova-design, wiebelhaus-enterprises)
├── data/                 ← Local SQLite DBs + JSONL caches (search, context, inbox-context, telegram-chats)
├── logs/                 ← Service + monitor + integration + worker logs
├── tasks/                ← Dispatcher queue (pending/active/completed/failed) — 97 completed, 7 failed, 0 pending
├── comms/                ← File-based agent comms bus (inbox/, broadcasts/, results/)
├── dashboard/            ← Web dashboard generator (port 8099)
├── docs/                 ← Operational playbooks (sites-playbook, asset-grabber, refactor docs)
├── personal/             ← Justin's personal files
├── clients/              ← Client files
└── .claude/              ← Skills, agents, settings

4. Always-on systemd services (UDev)

Service Status Role
forge-context-api active FastAPI on 0.0.0.0:7358, /healthz, /sources, /ingest/{source}, /context, /refresh/wellness
forge-dispatcher active Watches tasks/pending/, runs claude -p --bare workers (pipe mode)
forge-home-base active Always-on Claude Code Remote Control session (home-base_Sonnet46), phone-driveable
forge-inbox-webhook active HTTP entry on :7400 for iOS Shortcuts → inbox_brain
forge-mkdocs active MkDocs Material on :8000, renders all forge .md at https://mkdocs.justinsforge.com
forge-telegram-ava active @Ava_JForgeBot LifeOS/SecondBrain assistant
forge-telegram-bot active @GregTwoPointO_Bot chat bot, /task, /opus, /haiku, /status, plain chat via claude -p
forge-telegram-inbox active @jw_inbox_bot voice/text inbox: Whisper → Sonnet brain → tools

All enabled via systemctl enable, restart on failure.


5. Cron Jobs (28 active)

Monitors (every 5–15 min)

  • */5, monitors/security-check.sh → SSH/firewall/auth log scan
  • */10, monitors/infra-check.sh → fleet health, disk, services
  • */10, monitors/mount-watchdog.sh → self-heal dead FUSE mounts (rclone)
  • */15, monitors/business-check.sh → Shopify/email checks

Wellness pipeline

  • Garmin polling, hourly at :00 UTC from 14:00–03:00 UTC = 09:00–22:00 CT (14×/day)
  • */15, infra/context-api/scripts/ha_poller.py → HA → facts_wellness
  • 0 3 UTC, wellness/daily-summary.py → Notion Wellness Daily upsert (= 22:00 CT)
  • 30 7 UTC, morning-wellness-check.sh (legacy, soft-deprecated)
  • Eight Sleep cron poller DISABLED 2026-04-28 (HA native integration is canonical)

Brain routines (Justin-facing pushes)

  • 0 12 UTC, morning-brief.py → @jw_updates_bot at 7am CT
  • 0 17 UTC, heartbeat.py noon → midday check-in
  • 0 23 UTC, heartbeat.py evening → end-of-day check-in
  • * * * * *, telegram/nudge-fire.py → fires scheduled nudges (every minute)

Maintenance

  • 30 3, search index rebuild (fastembed BGE + sqlite-vec over memory/system-map/docs/brands/CLAUDE.md)
  • 0 4: Minecraft world backup (CT 110 → /mnt/storage/minecraft-backups/)
  • 15 4, retention sweep (moves >30d files in comms/, tasks/, logs/workers/_archive/YYYY-MM/)

6. The Brain: Agents & Bots

Telegram bots (4 active + 2 push-only)

Bot Service Role
@GregTwoPointO_Bot forge-telegram-bot Chat with claude -p + slash commands (/task, /opus, /haiku, /status, /context)
@jw_inbox_bot forge-telegram-inbox Voice/text → Whisper → Sonnet brain → 29 tools → confirm
@Ava_JForgeBot forge-telegram-ava LifeOS assistant (life-coach personality wrapper)
@jw_updates_bot (push only, no service) Outbound notifications (morning brief, heartbeats, alerts)
@Manager_JForgeBot (push only) Unified output for ALL forge agents, chat_id 7110798439

Inbox Brain (scripts/integrations/telegram/inbox_brain.py), 29 registered tools

Category Tools
Capture save_to_inbox, save_knowledge, log_habit, schedule_nudge
Tasks create_task, update_task, query_notion
Calendar create_calendar_event, update_calendar_event, delete_calendar_event, list_calendar_events
Email: Personal & Business Gmail search_emails, read_email, get_email_thread, email_to_task, archive_emails, clear_emails, mark_email_as_read, star_email, apply_email_label, unsubscribe_email, block_sender, manage_drafts, draft_email
Wellness wellness_now (live snapshot), wellness_history (Notion review)
Outbound push_updates (push to @jw_updates_bot)
Spawn spawn_worker (fire claude -p worker into dispatcher)

Sonnet 4.6 makes the tool-use decision per message. Voice → faster-whisper base.en transcription locally on UDev.

Task dispatcher

scripts/dispatcher.sh (v2 pipe mode claude -p --bare) watches tasks/pending/, fires headless workers, writes results to tasks/completed|failed/. 97 completed tasks to date, 0 pending.


7. Data Layer

SQLite, data/context.db (1.4 MB, 4,656 wellness rows)

Table Rows Purpose
events_raw 751 Raw ingest events
facts_wellness 4,656 Time-series wellness metrics (Eight Sleep + Garmin + hub temps)
facts_home 0 Home Assistant state snapshots (placeholder; not yet ingested)
sources 2 eight_sleep + garmin, both active, last success 2026-04-28T17:15
consents , Per-source data-use consents

Search index, fastembed BGE-small + sqlite-vec

  • Indexes memory/, system-map/, docs/, brands/, root .md files
  • Reindexed nightly 03:30 UTC
  • Skill: /recall <query> for semantic search

Notion DBs: Life OS (parent 37e5e724-...-fab8) + JustinWieb-VR (parent 9d19c2ab-...-db06)

Life OS (10 DBs):

DB ID prefix
📥 Inbox 3500950b-d7a9-81f8...
✅ Tasks 3500950b-d7a9-81c0...
📦 Projects 3500950b-d7a9-81dd...
🎯 Areas 3500950b-d7a9-811a...
🔁 Habits 3500950b-d7a9-8125...
🧠 Knowledge 3500950b-d7a9-8104...
📝 Daily Log 3500950b-d7a9-8124...
📚 Reading & Watch 3500950b-d7a9-8164...
🎯 Goals 3500950b-d7a9-8195...
💪 Wellness Daily 3500950b-d7a9-811c... (NEW 2026-04-28)

JustinWieb-VR (6 DBs): Tasks, Projects, Content Ideas, Production, Published, Content Pillars, Sponsors.

All 16 DBs registered in inbox_brain.NOTION_DBS for tool access.


8. n8n Workflows (34 total, infra/n8n/workflows/)

n8n runs in CT 106 at 192.168.86.82:5678. Auth via X-Forge-Auth header (secret in ~/.forge-secrets/n8n.env).

Category Workflows
Gmail (12) list-recent-emails, get-email-body, get-email-thread, get-draft-content, archive-emails, clear-emails, mark-as-read, star-email, apply-label, manage-gmail-drafts, unsubscribe-sender, block-sender
Gmail drafts (2) create-gmail-draft-business, create-gmail-draft-personal
Calendar (4) list-calendar-events, create-calendar-event, update-calendar-event, delete-calendar-event
Notion (9) notion-create-database, notion-create-page, notion-update-page, notion-query-database, notion-search-databases, notion-get-database, notion-list-children, notion-search, notion-patch-database
TickTick (3) ticktick-create-task, ticktick-list-projects, ticktick-list-project-tasks (deprecated: TickTick is OUT)
Misc (4) forge-hello (ping), verify-gmail-business, verify-gmail-personal, verify-calendar

Caller helper: scripts/n8n/call.sh <webhook-path> <json-payload> (supports @/path/to/file.json).


9. Home Assistant (VM 100, 192.168.86.70:8123)

  • Version: 2026.4.4
  • 992 entities total, 358 sensor, 123 number, 87 switch, 85 button, 65 binary_sensor, 50 select, 42 light, 35 script, 30 automation, 17 notify, 5 camera, 5 media_player

Active integrations (40)

alexa_devices · alexa_media (HACS) · androidtv_remote · backup · blink · brother · cast · cloud (Nabu Casa: Alexa+Google enabled) · dlna_dmr · eight_sleep (HACS lukas-clarke) · elgato (×2) · frigate · go2rtc · google_generative_ai_conversation · google_translate · group · hacs · hassio · homekit_controller · ipp · lg_thinq · lutron_caseta · matter · met · mobile_app · mqtt · nest · nws · petkit · proxmoxve · radio_browser · reolink · shopping_list · smartthings · spotify · sun · template · thread · tuya · upnp · wake_on_lan

HACS frontend cards (5)

Bubble-Card · advanced-camera-card · lovelace-card-mod · lovelace-mushroom · mini-graph-card

Dashboards

  • Main (/lovelace) + wellness-dash (5 views: Today / Trends 7d / Trends 30d / Krystal / Detail) with refresh button
  • Reachable: LAN http://192.168.86.70:8123/wellness-dash or via Tailscale

REST commands wired

  • forge_claude_dispatch → n8n alexa-claude webhook (voice → Claude bridge)
  • forge_refresh_wellness → POST http://192.168.86.50:7358/refresh/wellness (NEW 2026-04-28)

10. Wellness Stack

Eight Sleep ──(HA native integration, real-time, every ~15-30 min idle)──┐
Garmin (hourly poll 09-22 CT) ──(scripts/integrations/garmin/poll.py)──┐  │
                                                                       ▼  ▼
                                                  Home Assistant sensors
                                            (ha_poller every 15 min)
                                              SQLite facts_wellness (4,656 rows)
                                                ┌─────────────┼─────────────────┐
                                                ▼             ▼                 ▼
                                         /context API  morning-brief    daily-summary.py
                                                              (7am CT)        (22:00 CT)
                                                              Notion 💪 Wellness Daily
                                                              (Sonnet coach note)
                                                              Brain `wellness_history` tool

Garmin metrics captured: steps, distance, calories, RHR, HRV overnight + status + weekly avg, body battery, stress avg, training readiness, sleep score, sleep duration, sleep stages (deep/light/rem/awake), respiration avg, SpO2.

Eight Sleep metrics: sleep_fitness/quality/routine_score, time_slept (sec), HRV, heart_rate, breath_rate, bed_temperature, target_temperature, sleep_stage, presence_start/end, bed_presence.

user_id mapping: Justin = right side c78dce09..., Krystal = left side b5ce51a3....

See reference_wellness_pollers for the full pipeline writeup.


11. Sites & Web Properties

Cloudflare zones (10, all active)

gusoutdoor.co · gusthebass.com · justinkrystal.com · justinsforge.com · justinwieb.com · justinwiebelhaus.com · metaapplications.com · shopnovadesign.com · sipnservesociety.com · virtualrealityalliance.com

Cloudflare tunnels (4)

Tunnel Status Purpose
media-server (a55b7768...) healthy Catch-all *.justinkrystal.com + main service ingress
AdGuard (86588d06...) healthy AdGuard Web UI

Deployed/active sites

  • justinkrystal.com, multi-page (landing, hub-api Docker container running on media-server, Press Your Luck, basketball, whiteboard)
  • justinsforge.com, landing, demo-scaffold, games
  • shopnovadesign.com: Shopify e-commerce (Nova Design)
  • MkDocs at mkdocs.justinsforge.com (CF Access protected), renders all forge .md (memory, nexus, docs, brands, infra, root)

12. External Service Connections

Service Auth location Used for
Cloudflare API ~/.forge-secrets/cloudflare.env DNS + Tunnels (scripts/cloudflare/cf.py, /cf-add skill)
Notion API n8n cred mgQHSiQOlbURyLs1 All Notion DB ops via 9 n8n workflows
Gmail Personal ([email protected]) n8n OAuth Read/draft/archive/filter, never auto-send (recovery email)
Gmail Business ([email protected]) n8n OAuth Read/draft/archive/filter; send allowed but always confirm
Google Calendar n8n OAuth List/create/update/delete events
Google Drive rclone (mount) + n8n /mnt/workspace/Google-Drive/ live FUSE mount
Eight Sleep ~/.forge-secrets/wellness.env + HA integration Wellness data
Garmin Connect ~/.forge-secrets/wellness.env (garminconnect lib + token cache) Wellness data, hourly poll
Home Assistant API forge/.env (HA_TOKEN, HA_URL) All HA REST + WebSocket calls
Anthropic API Claude Code CLI auth All Sonnet/Opus/Haiku calls (Max plan)
GitHub ~/.forge-secrets/github.env (PAT) Plugin + repo operations
Spotify HA integration Playback control
TickTick n8n cred (deprecated) Was task sync, removed from stack 2026-04-28
Whisper local faster-whisper base.en Voice transcription (Telegram inbox)
LM Studio (Sol) port 1234 Local MLX models (Qwen 3.5 9B/35B), used by OpenClaw (currently wiped)

Secrets layout, ~/.forge-secrets/ (chmod 600, outside repo)

  • cloudflare.env · github.env · n8n.env · wellness.env
  • telegram.env · telegram-ava.env · telegram-inbox.env · telegram-manager.env · telegram-updates.env

13. Brand & Project Inventory

Active brands (in forge/brands/)

  • Nova Design (shopnovadesign.com): Shopify e-commerce; FMO contract files in Drive
  • JustinWieb-VR (justinwieb.com): VR affiliate; Notion JWVR DBs (Tasks, Projects, Content Ideas, Production, Published, Pillars, Sponsors)
  • Gus Outdoor Co (gusoutdoor.co), outdoor brand
  • Gus the Bass (gusthebass.com), niche brand
  • Wiebelhaus Enterprises, parent/holding LLC; formation docs, EIN, taxes in Drive
  • Sip-N-Serve (sipnservesociety.com), brand files in Drive

Active projects

  • UDev / Forge, this entire system
  • Business Second Brain, n8n + Claude Code automation architecture (master handoff: building-the-brain-life-os-inbox-2026-04-27)
  • justinkrystal.com, personal site with Press Your Luck game, basketball, whiteboard, landing
  • WiebCraft Minecraft server (CT 110, public)
  • Wellness pipeline (rebuilt 2026-04-28, see wellness-stack-improvements-2026-04-28)
  • Decorator Crab, integration architecture for Context Graph

Decommissioned / wiped

  • OpenClaw / Greg: Docker container, all persona files, Discord bot, fully wiped 2026-03-15, trailing artifacts cleaned 2026-04-28
  • biz-apps CT 104, was AppFlowy + Invoice Ninja
  • TickTick, removed from Second Brain stack 2026-04-28

14. Skills (slash commands), 17 active in .claude/skills/

Skill Purpose
/spawn Spawn Claude Code Remote Control session in tmux on UDev
/sessions Lifecycle for spawned sessions (list/kill/status/log/budget)
/recall Semantic search across forge knowledge (fastembed + sqlite-vec)
/context Pull live wellness/home/all snapshot from Context API
/notify Multi-channel notification (file/ntfy/n8n/Discord/Slack/Telegram)
/fleet-status All running sessions/agents/workers/monitors
/create-task Drop a task into dispatcher queue
/spawn-worker Ephemeral claude -p worker via dispatcher
/save-to-drive Markdown → styled .docx in Google Drive
/preview-site Local + Tailscale URL preview of sites/<name>/
/deploy-site Manual site deployment
/screenshot Playwright desktop+mobile capture
/cf-add Add Cloudflare DNS+ingress hostname
/decrypt-n8n Decrypt n8n credential by ID
/handoff Scaffold a handoff doc
/mount-check Verify rclone/FUSE mounts
/ssh-status Fleet host health snapshot

15. Agents (.claude/agents/)

chief-director.md, director.md, manager.md, worker.md, agent role definitions for forking/spawning subagents with specific scopes.


16. Memory & Knowledge

Location What
MEMORY.md (in ~/.claude/projects/-home-justinwieb-forge/memory/) Auto-memory index, always loaded into Claude Code context
memory/daily/ Append-only daily logs (364 KB across many days)
memory/general/ Topical long-term knowledge (16 KB)
memory/handoffs/ Cross-session briefings (420 KB, ~21 docs)
memory/_archive/ Cold storage of retired pieces
~/.claude/projects/.../memory/reference_*.md Tool/system references, wellness pollers, Notion scaffold, MkDocs, etc.
system-map/ Model-agnostic shared brain (fleet, architecture, steering, google-drive, lm-studio-setup, network-sharing-plan)

Boot briefing: scripts/hooks/since-last.sh (SessionStart) surfaces last session, recent handoffs, pending tasks, monitor alerts, active tmux. Auto-context: scripts/hooks/auto-context.py (UserPromptSubmit) auto-loads project pointers when prompts mention Nova/JWVR/HA/n8n/Plex/Frigate/etc. Auto-checkpoint: scripts/hooks/auto-checkpoint.sh (Stop) writes session checkpoints to today's daily log.


17. Claude Code Plugins

  • telegram@claude-plugins-official: DISABLED (conflicts with bot.py on same token)
  • github@claude-plugins-official, needs PAT
  • pyright-lsp@claude-plugins-official: Python LSP
  • context7, live docs MCP
  • frontend-design, design helper
  • skill-creator, skill scaffolding

18. Active tmux sessions (snapshot)

Session Started Likely role
home-base_Sonnet46 always-on systemd-managed home base
n8n-telegram_Opus47 Mon 20:13 "Building The Brain" (parent)
biz-inbox_Sonnet46 Mon 20:45 Business inbox session
mkdocs-build_Opus47 Tue 00:58 MkDocs build worker
notion-scaffold_Sonnet46 Tue 01:35 Notion DB scaffolding
forge-cleanup_Opus47 Tue 01:43 Cleanup sweep
forge-home_Opus47 Tue 02:10 Forge home base
forge-refactor_Opus47 Tue 13:46 Memory + skills refactor
wellness-stack_Opus47 Tue 13:12 Wellness pipeline rebuild (this report's author)

19. Logs & Observability (forge/logs/)

  • Service logs: dispatcher.log, home-base.log, inbox-webhook.log, telegram-bot.log, telegram-inbox.log
  • Monitor logs: monitor-business.log, monitor-infra.log, monitor-mounts.log, monitor-security.log
  • Integration logs: integrations/{eight-sleep,garmin,wellness-daily,context-poller,cron}.log
  • Brain routines: morning-brief.log, heartbeat.log
  • Workers: workers/<task-id>/*.log
  • Site screenshots: site-screenshots/
  • Logrotate config: infra/logrotate/forge.conf (installed at /etc/logrotate.d/forge)

20. Connection Diagram (high level)

                              ┌─────────────────┐
   Justin's iPhone (Venus) →  │ Telegram bots   │
                              │  - GregTwoPointO│
                              │  - jw_inbox_bot │  ← voice/text → Whisper → Sonnet brain
                              │  - Ava          │
                              │  - jw_updates   │  ← outbound only (morning brief, alerts)
                              │  - Manager      │  ← unified output for ALL agents
                              └────────┬────────┘
                              ┌────────▼────────┐
                              │ inbox_brain.py  │  29 tools
                              │ (Sonnet 4.6)    │
                              └────────┬────────┘
                ┌──────────────────────┼──────────────────────┐
                ▼                      ▼                      ▼
        ┌──────────────┐      ┌────────────────┐    ┌──────────────────┐
        │   n8n        │      │  Context API   │    │  Dispatcher      │
        │ 192.168.86.82│      │ 0.0.0.0:7358   │    │  (claude -p)     │
        │   34 wfs     │      │  facts_wellness│    │  tasks/pending   │
        └──────┬───────┘      │  4,656 rows    │    └──────────────────┘
               │              └────────┬───────┘
   ┌───────────┼──────────────┐        │
   ▼           ▼              ▼        │
 Gmail       Notion        Calendar    │
 (×2)        (16 DBs)                  │
                              ┌────────▼─────────┐
                              │ Home Assistant   │
                              │ 192.168.86.70    │
                              │ 992 entities     │
                              │ 40 integrations  │
                              └────────┬─────────┘
                       ┌───────────────┼───────────────┐
                       ▼               ▼               ▼
                 Eight Sleep     Reolink/Frigate    Other devices
                 Pod 4 (live)    cameras            (Petkit, Nest, Tuya, LG, Lutron, Spotify, etc.)
                 Garmin (hourly poll, garminconnect lib)
              SQLite facts_wellness → /context → morning-brief, brain, daily-summary
                                                              Notion 💪 Wellness Daily

21. Pending / known follow-ups

  • morning-wellness-check.sh (07:30 UTC) is soft-deprecated, still reads old sensor.eight_sleep_right_* entities. Should be deleted or repointed.
  • TickTick workflows in n8n are deprecated but still present
  • ha_dashboard_setup.py is stale, would clobber the new dashboard if rerun
  • Alexa exposure: sensors auto-exposed, but custom friendly names not set (HA UI flow)
  • HA Assist + LLM agent for free-form voice queries, not configured yet
  • biz-apps CT 104, fully decommissioned but container still exists on Finn

Snapshot captured 2026-04-28 by the wellness worker session. Living systems drift fast, re-generate this report when the architecture changes.