# NODE.DC Local Testing System Цель: тестировать новые функции на локально запущенных репозиториях без переписывания адресов перед деплоем и без случайных обращений в production-приложения. ## Canon Локальный профиль: ```text NODEDC_ENV=local ``` В `local` все product apps являются локальными: ```text Launcher/Auth/HUB UI -> local Engine -> local Ops/Gateway/Tasker -> local AI Workspace Assistant -> local DB/fixtures -> local ``` Единственное разрешенное deployed-звено в этом профиле: ```text AI Hub relay -> https://ai-hub.nodedc.ru ``` Этот Hub используется только как транспорт для удаленного Codex worker. Он не должен быть downstream app, не должен владеть доступами пользователя и не должен сам читать/писать Launcher, Engine или Ops. ## Remote Worker Local Flow ```text local Engine / local Ops UI -> local AI Workspace Assistant -> deployed AI Hub relay -> remote Codex worker -> deployed AI Hub assistant action relay -> local AI Workspace Assistant -> local Launcher / local Engine / local Ops ``` Worker получает только relay URL и scoped run profile. Product app URL остаются на стороне локального Assistant. ## Required Local Guardrails Local Platform env: ```text NODEDC_ENV=local AI_WORKSPACE_HUB_PUBLIC_URL=wss://ai-hub.nodedc.ru/api/ai-workspace/hub AI_WORKSPACE_HUB_INTERNAL_URL=https://ai-hub.nodedc.ru AI_WORKSPACE_ASSISTANT_ACTION_RELAY_ENABLED=true AI_WORKSPACE_ASSISTANT_ACTION_RELAY_ID=local-dev ``` Local Engine env: ```text NODEDC_ENV=local NODEDC_AI_WORKSPACE_ASSISTANT_URL=http://127.0.0.1:18082 NODEDC_LAUNCHER_INTERNAL_URL=http://127.0.0.1:5173 NODEDC_LAUNCHER_ORIGIN=http://launcher.local.nodedc AUTHENTIK_PUBLIC_BASE_URL=http://auth.local.nodedc ``` Production app URLs are forbidden in local config: ```text https://hub.nodedc.ru https://engine.nodedc.ru https://ops.nodedc.ru https://id.nodedc.ru https://ops-agents.nodedc.ru ``` Tunnel/private URLs are also forbidden in `local`. If Tailscale/ngrok is deliberately needed, switch to: ```text NODEDC_ENV=tunnel-local-e2e ``` ## Standard Check Run this before UI testing and before deploy preparation: ```sh cd /Users/dcconstructions/Downloads/mnt/NODEDC/platform sh infra/scripts/check-local-test-system.sh ``` This command: - checks Node and shell syntax; - checks local env safety; - checks AI Workspace config contract; - renders local Docker Compose config without starting containers; - checks that local Compose does not inject the full `.env` into every service; - runs run-profile and ontology assistant caller smoke tests; - classifies the current runtime topology; - checks diff whitespace hygiene. It does not deploy, restart containers, mutate databases, or write production config. ## Runtime Modes `contract-only` Static contracts are testable, but no runtime path is proven. `local-ui-only` Some local UI/backend endpoints respond, but AI write path is not proven. `local-ops-vertical` Local Ops/Gateway/Tasker vertical path is reachable, but remote worker action path is not proven. `local-remote-worker-relay` Expected current target for this workstation: ```text local product apps + local Assistant + deployed AI Hub relay + remote Codex worker ``` This is valid only when Assistant action relay is configured. A successful UI request must show that `assistant_action_call` routes through the relay back to local Assistant. `true-local-e2e` Everything, including Hub and worker reachability, is local. `tunnel-local-e2e` Explicit Tailscale/ngrok profile. This must never happen by accidental URL fallback. ## Strict Runtime Checks Require a live local/relay runtime: ```sh REQUIRE_RUNTIME=1 sh infra/scripts/check-local-test-system.sh ``` Require specifically the remote-worker relay mode: ```sh REQUIRE_REMOTE_WORKER_RELAY=1 sh infra/scripts/check-local-test-system.sh ``` ## Deploy Rule Deploy is allowed only after: ```sh sh infra/scripts/check-local-test-system.sh sh infra/scripts/check-ai-workspace-release-gates.sh ``` Runtime bugs must be fixed in the local profile first. Do not deploy product app changes just to test whether the local AI Workspace path works. ## Audit And Test Map Current audit report: ```text docs/AI_WORKSPACE_SECURITY_AUDIT_2026-06-20.md ``` Current horizontal, vertical, and security test matrix: ```text docs/AI_WORKSPACE_TEST_MATRIX.md ```