============================================================ SHiRE Brain Node 01 — Existing Service Inspection ============================================================ UTC timestamp: 2026-08-05T02:02:55+00:00 Host: armoros User: shire3d Service: shire-brain.service === Systemd properties === Restart=on-failure RestartUSec=5s TimeoutStartUSec=1min 30s TimeoutStopUSec=10s MainPID=1297 ExecStart={ path=/home/shire3d/ARMOR/venv/bin/python ; argv[]=/home/shire3d/ARMOR/venv/bin/python /home/shire3d/ARMOR/ai/brain_server.py ; ignore_errors=no ; start_time=[Wed 2026-08-05 09:20:47 AWST] ; stop_time=[n/a] ; pid=1297 ; code=(null) ; status=0/0 } WorkingDirectory=/home/shire3d/ARMOR User=shire3d Group= Id=shire-brain.service Description=SHIRE Brain API Server LoadState=loaded ActiveState=active SubState=running FragmentPath=/etc/systemd/system/shire-brain.service DropInPaths= === Complete unit definition === # /etc/systemd/system/shire-brain.service [Unit] Description=SHIRE Brain API Server After=network-online.target tailscaled.service ollama.service Wants=network-online.target tailscaled.service ollama.service [Service] Type=simple User=shire3d WorkingDirectory=/home/shire3d/ARMOR Environment=SHIRE_FAST_MODEL=shire-fast:qwen3-1.7b Environment=SHIRE_DEEP_MODEL=shire-brain:qwen3-8b Environment=SHIRE_BRAIN_PORT=8765 Environment=OLLAMA_URL=http://127.0.0.1:11434 ExecStart=/home/shire3d/ARMOR/venv/bin/python /home/shire3d/ARMOR/ai/brain_server.py Restart=on-failure RestartSec=5 [Install] WantedBy=multi-user.target === Running process === Main PID: 1297 Process executable: /usr/bin/python3.12 Process directory: /home/shire3d/ARMOR Command line: /home/shire3d/ARMOR/venv/bin/python /home/shire3d/ARMOR/ai/brain_server.py === Listening socket === State Recv-Q Send-Q Local Address:Port Peer Address:PortProcess LISTEN 0 5 100.74.51.32:8765 0.0.0.0:* users:(("python",pid=1297,fd=3)) === Candidate implementation roots === /etc/systemd/system /home/shire3d/ARMOR /home/shire3d/ARMOR/ai /home/shire3d/ARMOR/venv/bin === Relevant source inventory === Relevant files found: 137 /etc/systemd/system/ollama.service /etc/systemd/system/shire-brain.service /home/shire3d/ARMOR/ai/brain_server.py /home/shire3d/ARMOR/ai/systemd/shire-brain.service /home/shire3d/ARMOR/assets/shire/expressions/expression_manifest.json /home/shire3d/ARMOR/chronicle/journal.py /home/shire3d/ARMOR/codex/company.json /home/shire3d/ARMOR/codex/creator.json /home/shire3d/ARMOR/codex/engineering_rules.json /home/shire3d/ARMOR/codex/hardware.json /home/shire3d/ARMOR/codex/identity.json /home/shire3d/ARMOR/codex/language.json /home/shire3d/ARMOR/codex/memory_rules.json /home/shire3d/ARMOR/codex/modules.json /home/shire3d/ARMOR/codex/personality.json /home/shire3d/ARMOR/codex/prompt_builder.py /home/shire3d/ARMOR/config/backup_policy.json /home/shire3d/ARMOR/config/cooling.json /home/shire3d/ARMOR/config/cooling.template.json /home/shire3d/ARMOR/config/education.json /home/shire3d/ARMOR/config/memory.json /home/shire3d/ARMOR/config/memory_legacy_import.json /home/shire3d/ARMOR/config/memory.template.json /home/shire3d/ARMOR/config/preferences.template.json /home/shire3d/ARMOR/config/shire_appliances.json /home/shire3d/ARMOR/config/version.json /home/shire3d/ARMOR/config/voice_privacy.json /home/shire3d/ARMOR/core/agent_manager.py /home/shire3d/ARMOR/core/backup_policy.py /home/shire3d/ARMOR/core/cooling_manager.py /home/shire3d/ARMOR/core/event_bus.py /home/shire3d/ARMOR/core/__init__.py /home/shire3d/ARMOR/core/service_manager.py /home/shire3d/ARMOR/core/shire_runtime.py /home/shire3d/ARMOR/core/task_manager.py /home/shire3d/ARMOR/core/version.py /home/shire3d/ARMOR/core/voice_privacy.py /home/shire3d/ARMOR/data/blender_background_jobs/background_job_registry.json /home/shire3d/ARMOR/data/blender_background_jobs/BBJ-0001_from_BHP-0001/manifest.json /home/shire3d/ARMOR/data/blender_codex/manifest.json /home/shire3d/ARMOR/data/blender_dry_run_plans/BDR-0001_from_BSD-0001/manifest.json /home/shire3d/ARMOR/data/blender_dry_run_plans/dry_run_registry.json /home/shire3d/ARMOR/data/blender_headless_probes/BHP-0001_from_BHR-0001/manifest.json /home/shire3d/ARMOR/data/blender_headless_probes/BHP-0001_from_BHR-0001/safe_headless_probe.py /home/shire3d/ARMOR/data/blender_headless_probes/headless_probe_registry.json /home/shire3d/ARMOR/data/blender_headless_runs/BHR-0001_from_BDR-0001/manifest.json /home/shire3d/ARMOR/data/blender_headless_runs/headless_run_registry.json /home/shire3d/ARMOR/data/blender_mastery_projects/BMP-0001/history/manifest-event-000002.json /home/shire3d/ARMOR/data/blender_mastery_projects/BMP-0001/manifest.json /home/shire3d/ARMOR/data/blender_mastery_projects/project_registry.json /home/shire3d/ARMOR/data/blender_script_drafts/BSD-0001_gothic_skull_dice_tower_concept_review_only/manifest.json /home/shire3d/ARMOR/data/blender_script_drafts/script_registry.json /home/shire3d/ARMOR/data/forge_learning_queue.json /home/shire3d/ARMOR/data/forge_learning_sandbox/FLR-0002_master_blender_stl_dice_tower_creation_in_rays_shire3d_gothi/manifest.json /home/shire3d/ARMOR/data/forge_learning_sandbox/FLR-0004_make_shire_face_more_animated/manifest.json /home/shire3d/ARMOR/data/forge_research/FRR-0001_write_gothic_etsy_product_listings/manifest.json /home/shire3d/ARMOR/data/forge_research/FRR-0001_write_gothic_etsy_product_listings/search_log.json /home/shire3d/ARMOR/data/forge_research/FRR-0001_write_gothic_etsy_product_listings/sources.json /home/shire3d/ARMOR/data/forge_research_queue.json /home/shire3d/ARMOR/data/forge_skill_drafts/skill_registry.json /home/shire3d/ARMOR/data/forge_skill_drafts/write_gothic_etsy_product_listings/manifest.json /home/shire3d/ARMOR/data/parametric_forge_projects/CAL-0001/manifest.json /home/shire3d/ARMOR/data/parametric_forge_projects/CAL-0001/parameters.json /home/shire3d/ARMOR/data/parametric_forge_projects/CAL-0001/source/model.py /home/shire3d/ARMOR/data/parametric_forge_projects/CAL-0001/validation/determinism.json /home/shire3d/ARMOR/data/parametric_forge_projects/CAL-0001/validation/report.json /home/shire3d/ARMOR/data/shire3d_commercial_projects/COMM-0001/asset-source.json /home/shire3d/ARMOR/data/shire3d_commercial_projects/COMM-0001/job.json /home/shire3d/ARMOR/data/shire3d_commercial_projects/COMM-0001/mark-ii-concept.json /home/shire3d/ARMOR/data/shire3d_commercial_projects/COMM-0001/mark-iii-industrial-design.json /home/shire3d/ARMOR/data/shire3d_commercial_projects/COMM-0001/mark-iv-design-convergence.json /home/shire3d/ARMOR/data/shire3d_commercial_projects/COMM-0001/modification-record.json /home/shire3d/ARMOR/data/shire3d_knowledge/manifest.json /home/shire3d/ARMOR/data/shire_learning_sources.json /home/shire3d/ARMOR/data/view_stls/launcher_manifest.json /home/shire3d/ARMOR/data/view_stls/stl_index.json /home/shire3d/ARMOR/docs/parametric_forge/requirements-0001B.lock.txt /home/shire3d/ARMOR/forge/tools.py /home/shire3d/ARMOR/framework/base_module.py /home/shire3d/ARMOR/framework/buttons.py /home/shire3d/ARMOR/framework/theme.py /home/shire3d/ARMOR/framework/warden_scroll.py /home/shire3d/ARMOR/framework/warden_station.py /home/shire3d/ARMOR/framework/warden_theme.py /home/shire3d/ARMOR/framework/warden_widgets.py /home/shire3d/ARMOR/heart/heart.py /home/shire3d/ARMOR/heart/__init__.py /home/shire3d/ARMOR/heart/oath.json /home/shire3d/ARMOR/heart/purpose.py /home/shire3d/ARMOR/main.py /home/shire3d/ARMOR/memory/shire_runtime_memory.json /home/shire3d/ARMOR/modules/agents.py /home/shire3d/ARMOR/modules/archive.py /home/shire3d/ARMOR/modules/atlas.py /home/shire3d/ARMOR/modules/dashboard.py /home/shire3d/ARMOR/modules/education.py /home/shire3d/ARMOR/modules/forge.py /home/shire3d/ARMOR/modules/global_prompt_bar.py /home/shire3d/ARMOR/modules/laptop_dashboard.py /home/shire3d/ARMOR/modules/media.py /home/shire3d/ARMOR/modules/sentinel.py /home/shire3d/ARMOR/modules/settings.py /home/shire3d/ARMOR/modules/shire.py /home/shire3d/ARMOR/modules/system.py /home/shire3d/ARMOR/modules/tasks.py /home/shire3d/ARMOR/scripts/blender_mastery_questions.py /home/shire3d/ARMOR/scripts/shire_live_transcribe.py /home/shire3d/ARMOR/sentinel/status.py /home/shire3d/ARMOR/services/ai_service.py /home/shire3d/ARMOR/services/blender_brain_contract.py /home/shire3d/ARMOR/services/blender_mastery_commands.py /home/shire3d/ARMOR/services/blender_mastery_planner.py /home/shire3d/ARMOR/services/blender_mastery_question_workflow.py /home/shire3d/ARMOR/services/blender_mastery_service.py /home/shire3d/ARMOR/services/blender_mastery_state.py /home/shire3d/ARMOR/services/caretaker_service.py /home/shire3d/ARMOR/services/forge_learning_service.py /home/shire3d/ARMOR/services/memory.py /home/shire3d/ARMOR/services/notifications.py /home/shire3d/ARMOR/services/security_service.py /home/shire3d/ARMOR/services/sound.py /home/shire3d/ARMOR/services/system_monitor.py /home/shire3d/ARMOR/services/tasks.py /home/shire3d/ARMOR/services/wake_word_service.py /home/shire3d/ARMOR/tasks/tasks.template.json /home/shire3d/ARMOR/tests/parametric_forge/test_calibration_cube.py /home/shire3d/ARMOR/tests/test_backup_policy.py /home/shire3d/ARMOR/tests/test_blender_brain_contract.py /home/shire3d/ARMOR/tests/test_blender_mastery_commands.py /home/shire3d/ARMOR/tests/test_blender_mastery_integrity.py /home/shire3d/ARMOR/tests/test_blender_mastery_planner.py /home/shire3d/ARMOR/tests/test_blender_mastery_questions_cli.py /home/shire3d/ARMOR/tests/test_blender_mastery_question_workflow.py /home/shire3d/ARMOR/tests/test_blender_mastery_service.py /home/shire3d/ARMOR/tests/test_blender_mastery_state.py /home/shire3d/ARMOR/tools/yahboom_fan_load_test.py /home/shire3d/ARMOR/tools/yahboom_fan_test.py === API, route and worker-related source scan === /etc/systemd/system/ollama.service:6:ExecStart=/usr/local/bin/ollama serve /etc/systemd/system/ollama.service:7:User=ollama /etc/systemd/system/ollama.service:8:Group=ollama /etc/systemd/system/shire-brain.service:3:After=network-online.target tailscaled.service ollama.service /etc/systemd/system/shire-brain.service:4:Wants=network-online.target tailscaled.service ollama.service /etc/systemd/system/shire-brain.service:12:Environment=SHIRE_BRAIN_PORT=8765 /home/shire3d/ARMOR/ai/brain_server.py:40:PORT = int(os.environ.get("SHIRE_BRAIN_PORT", "8765")) /home/shire3d/ARMOR/ai/brain_server.py:69:def json_response(handler, payload, status=200): /home/shire3d/ARMOR/ai/brain_server.py:71: handler.send_response(status) /home/shire3d/ARMOR/ai/brain_server.py:118: for name, allowed in route["capabilities"].items() /home/shire3d/ARMOR/ai/brain_server.py:129: "Denied capabilities: " + ", ".join(denied) + "\n" /home/shire3d/ARMOR/ai/brain_server.py:138:def resolve_request_route(payload, prompt): /home/shire3d/ARMOR/ai/brain_server.py:145: route = prepare_route( /home/shire3d/ARMOR/ai/brain_server.py:175: model, mode, clean_prompt, route_reason = choose_model( /home/shire3d/ARMOR/ai/brain_server.py:184: route_reason, /home/shire3d/ARMOR/ai/brain_server.py:208:def ask_ollama(model, prompt, max_tokens, system_context=""): /home/shire3d/ARMOR/ai/brain_server.py:243: if self.path not in {"/", "/health"}: /home/shire3d/ARMOR/ai/brain_server.py:244: json_response(self, {"ok": False, "error": "Not found"}, status=404) /home/shire3d/ARMOR/ai/brain_server.py:260: "ollama_url": OLLAMA_URL, /home/shire3d/ARMOR/ai/brain_server.py:267: json_response(self, {"ok": False, "error": "Not found"}, status=404) /home/shire3d/ARMOR/ai/brain_server.py:277: json_response(self, {"ok": False, "error": "Missing prompt"}, status=400) /home/shire3d/ARMOR/ai/brain_server.py:284: route_reason, /home/shire3d/ARMOR/ai/brain_server.py:287: ) = resolve_request_route(payload, prompt) /home/shire3d/ARMOR/ai/brain_server.py:297: ollama_data = ask_ollama( /home/shire3d/ARMOR/ai/brain_server.py:305: message = ollama_data.get("message", {}) /home/shire3d/ARMOR/ai/brain_server.py:314: "route_reason": route_reason, /home/shire3d/ARMOR/ai/brain_server.py:328: status=400, /home/shire3d/ARMOR/ai/brain_server.py:342: status=500, /home/shire3d/ARMOR/ai/brain_server.py:351: status=500, /home/shire3d/ARMOR/ai/systemd/shire-brain.service:3:After=network-online.target tailscaled.service ollama.service /home/shire3d/ARMOR/ai/systemd/shire-brain.service:4:Wants=network-online.target tailscaled.service ollama.service /home/shire3d/ARMOR/ai/systemd/shire-brain.service:12:Environment=SHIRE_BRAIN_PORT=8765 /home/shire3d/ARMOR/codex/memory_rules.json:11: "module status", /home/shire3d/ARMOR/codex/memory_rules.json:13: "AI capability", /home/shire3d/ARMOR/codex/personality.json:10: "fake status claims" /home/shire3d/ARMOR/codex/prompt_builder.py:123:Current module status: /home/shire3d/ARMOR/config/shire_appliances.json:8: "brain_port": 8765 /home/shire3d/ARMOR/core/agent_manager.py:15: "health": "ok", /home/shire3d/ARMOR/core/agent_manager.py:24: "health": "ok", /home/shire3d/ARMOR/core/agent_manager.py:33: "health": "ok", /home/shire3d/ARMOR/core/agent_manager.py:42: "health": "ok", /home/shire3d/ARMOR/core/agent_manager.py:51: "health": "ok", /home/shire3d/ARMOR/core/agent_manager.py:60: "health": "ok", /home/shire3d/ARMOR/core/agent_manager.py:66: event_bus.publish("agents", "status", "Agent Manager Standby", "standby") /home/shire3d/ARMOR/core/agent_manager.py:91: agent["health"] = "ok" /home/shire3d/ARMOR/core/agent_manager.py:130: event_bus.publish("agents", "night_forge", "Night Forge worker chain prepared", "online") /home/shire3d/ARMOR/core/cooling_manager.py:86: def preference_status_text(self): /home/shire3d/ARMOR/core/cooling_manager.py:336: def auto_status_text(self): /home/shire3d/ARMOR/core/cooling_manager.py:368: "auto_status": self.auto_status_text(), /home/shire3d/ARMOR/core/cooling_manager.py:369: "preference_status": self.preference_status_text(), /home/shire3d/ARMOR/core/service_manager.py:97: code, out, err = self.command_output(["systemctl", "is-active", "ollama"]) /home/shire3d/ARMOR/core/service_manager.py:107: code, out, err = self.command_output(["git", "-C", str(root), "status", "--short"]) /home/shire3d/ARMOR/core/service_manager.py:115: lines.append(f"Git status failed: {err or out}") /home/shire3d/ARMOR/core/service_manager.py:116: issues.append("Git status check failed") /home/shire3d/ARMOR/core/shire_runtime.py:96: self.working("Night Forge task queued. Awaiting worker execution.") /home/shire3d/ARMOR/core/task_manager.py:33: "status": "queued", /home/shire3d/ARMOR/core/task_manager.py:55: return len([t for t in self.tasks if t["status"] in ["queued", "running", "awaiting_approval"]]) /home/shire3d/ARMOR/core/task_manager.py:57: def set_status(self, task_id, status, result=None): /home/shire3d/ARMOR/core/task_manager.py:60: task["status"] = status /home/shire3d/ARMOR/core/task_manager.py:66: "task_status", /home/shire3d/ARMOR/core/task_manager.py:67: f'{task["title"]}: {status}', /home/shire3d/ARMOR/data/blender_background_jobs/background_job_registry.json:2: "jobs": [ /home/shire3d/ARMOR/data/blender_background_jobs/background_job_registry.json:10: "status": "complete_success", /home/shire3d/ARMOR/data/blender_background_jobs/background_job_registry.json:16: "probe_status": "probe_complete_success", /home/shire3d/ARMOR/data/blender_background_jobs/background_job_registry.json:18: "path": "/home/shire3d/ARMOR/data/blender_background_jobs/BBJ-0001_from_BHP-0001", /home/shire3d/ARMOR/data/blender_background_jobs/BBJ-0001_from_BHP-0001/manifest.json:8: "status": "complete_success", /home/shire3d/ARMOR/data/blender_background_jobs/BBJ-0001_from_BHP-0001/manifest.json:14: "probe_status": "probe_complete_success", /home/shire3d/ARMOR/data/blender_background_jobs/BBJ-0001_from_BHP-0001/manifest.json:16: "path": "/home/shire3d/ARMOR/data/blender_background_jobs/BBJ-0001_from_BHP-0001", /home/shire3d/ARMOR/data/blender_codex/manifest.json:20: "status": "learning_mode_not_automation", /home/shire3d/ARMOR/data/blender_dry_run_plans/BDR-0001_from_BSD-0001/manifest.json:9: "status": "ray_plan_approved_no_execution", /home/shire3d/ARMOR/data/blender_dry_run_plans/dry_run_registry.json:11: "status": "ray_plan_approved_no_execution", /home/shire3d/ARMOR/data/blender_headless_probes/BHP-0001_from_BHR-0001/manifest.json:10: "status": "probe_complete_success", /home/shire3d/ARMOR/data/blender_headless_probes/BHP-0001_from_BHR-0001/safe_headless_probe.py:20: 'status=HEADLESS_BLENDER_PROBE_OK', /home/shire3d/ARMOR/data/blender_headless_probes/headless_probe_registry.json:12: "status": "probe_complete_success", /home/shire3d/ARMOR/data/blender_headless_runs/BHR-0001_from_BDR-0001/manifest.json:9: "status": "ray_headless_request_approved_execution_still_blocked", /home/shire3d/ARMOR/data/blender_headless_runs/headless_run_registry.json:11: "status": "ray_headless_request_approved_execution_still_blocked", /home/shire3d/ARMOR/data/blender_mastery_projects/BMP-0001/history/manifest-event-000002.json:48: "physical_x11_status": "DEFERRED_SSH_ONLY", /home/shire3d/ARMOR/data/blender_mastery_projects/BMP-0001/manifest.json:48: "physical_x11_status": "DEFERRED_SSH_ONLY", /home/shire3d/ARMOR/data/blender_script_drafts/BSD-0001_gothic_skull_dice_tower_concept_review_only/manifest.json:6: "status": "draft_text_only_not_approved", /home/shire3d/ARMOR/data/blender_script_drafts/script_registry.json:8: "status": "draft_text_only_not_approved", /home/shire3d/ARMOR/data/forge_learning_queue.json:6: "status": "awaiting_ray_approval", /home/shire3d/ARMOR/data/forge_learning_queue.json:42: "status": "sandbox_learning_pack_created", /home/shire3d/ARMOR/data/forge_learning_queue.json:120: "status": "approved_learning_plan", /home/shire3d/ARMOR/data/forge_learning_queue.json:178: "status": "sandbox_learning_pack_created", /home/shire3d/ARMOR/data/forge_learning_sandbox/FLR-0002_master_blender_stl_dice_tower_creation_in_rays_shire3d_gothi/manifest.json:4: "status": "sandbox_learning_pack_created", /home/shire3d/ARMOR/data/forge_learning_sandbox/FLR-0004_make_shire_face_more_animated/manifest.json:4: "status": "sandbox_learning_pack_created", /home/shire3d/ARMOR/data/forge_research/FRR-0001_write_gothic_etsy_product_listings/manifest.json:7: "status": "research_completed", /home/shire3d/ARMOR/data/forge_research/FRR-0001_write_gothic_etsy_product_listings/search_log.json:4: "status": "search_error_NameError_name 're' is not defined_fallback_sources_used", /home/shire3d/ARMOR/data/forge_research/FRR-0001_write_gothic_etsy_product_listings/search_log.json:17: "status": "search_error_NameError_name 're' is not defined_fallback_sources_used", /home/shire3d/ARMOR/data/forge_research/FRR-0001_write_gothic_etsy_product_listings/search_log.json:30: "status": "search_error_NameError_name 're' is not defined_fallback_sources_used", /home/shire3d/ARMOR/data/forge_research/FRR-0001_write_gothic_etsy_product_listings/search_log.json:43: "status": "search_error_NameError_name 're' is not defined_fallback_sources_used", /home/shire3d/ARMOR/data/forge_research/FRR-0001_write_gothic_etsy_product_listings/sources.json:4: "status": "ok", /home/shire3d/ARMOR/data/forge_research/FRR-0001_write_gothic_etsy_product_listings/sources.json:10: "status": "http_error_404", /home/shire3d/ARMOR/data/forge_research/FRR-0001_write_gothic_etsy_product_listings/sources.json:16: "status": "http_error_404", /home/shire3d/ARMOR/data/forge_research/FRR-0001_write_gothic_etsy_product_listings/sources.json:22: "status": "http_error_404", /home/shire3d/ARMOR/data/forge_research/FRR-0001_write_gothic_etsy_product_listings/sources.json:28: "status": "ok", /home/shire3d/ARMOR/data/forge_research/FRR-0001_write_gothic_etsy_product_listings/sources.json:34: "status": "http_error_403", /home/shire3d/ARMOR/data/forge_research_queue.json:7: "status": "research_completed", /home/shire3d/ARMOR/data/forge_research_queue.json:45: "status": "awaiting_ray_approval", /home/shire3d/ARMOR/data/forge_skill_drafts/skill_registry.json:6: "status": "draft_not_certified", /home/shire3d/ARMOR/data/forge_skill_drafts/write_gothic_etsy_product_listings/manifest.json:6: "status": "training_notes_created_not_certified", /home/shire3d/ARMOR/data/parametric_forge_projects/CAL-0001/manifest.json:9: "status": "CALIBRATION_PASSED", /home/shire3d/ARMOR/data/parametric_forge_projects/CAL-0001/manifest.json:20: "cadquery": "2.8.0", /home/shire3d/ARMOR/data/parametric_forge_projects/CAL-0001/manifest.json:21: "cadquery_ocp": "7.9.3.1.1", /home/shire3d/ARMOR/data/parametric_forge_projects/CAL-0001/source/model.py:15:import cadquery as cq /home/shire3d/ARMOR/data/parametric_forge_projects/CAL-0001/source/model.py:135: "status": "PASS" if not errors else "FAIL", /home/shire3d/ARMOR/data/parametric_forge_projects/CAL-0001/source/model.py:154: "cadquery": importlib.metadata.version("cadquery"), /home/shire3d/ARMOR/data/parametric_forge_projects/CAL-0001/source/model.py:155: "cadquery_ocp": importlib.metadata.version("cadquery-ocp"), /home/shire3d/ARMOR/data/parametric_forge_projects/CAL-0001/validation/determinism.json:4: "status": "PASS", /home/shire3d/ARMOR/data/parametric_forge_projects/CAL-0001/validation/determinism.json:6: "status": true, /home/shire3d/ARMOR/data/parametric_forge_projects/CAL-0001/validation/report.json:5: "status": "PASS", /home/shire3d/ARMOR/data/parametric_forge_projects/CAL-0001/validation/report.json:55: "cadquery": "2.8.0", /home/shire3d/ARMOR/data/parametric_forge_projects/CAL-0001/validation/report.json:56: "cadquery_ocp": "7.9.3.1.1", /home/shire3d/ARMOR/data/shire3d_commercial_projects/COMM-0001/job.json:80: "schema": "shire3d.commercial_job.v1", /home/shire3d/ARMOR/data/shire3d_commercial_projects/COMM-0001/job.json:86: "status": "MARK_IV_DESIGN_CONVERGENCE_READY", /home/shire3d/ARMOR/data/shire3d_commercial_projects/COMM-0001/mark-ii-concept.json:19: "status": "MARK_II_CONCEPT_READY" /home/shire3d/ARMOR/data/shire3d_commercial_projects/COMM-0001/mark-iii-industrial-design.json:19: "status": "MARK_III_INDUSTRIAL_DESIGN_READY", /home/shire3d/ARMOR/data/shire3d_commercial_projects/COMM-0001/mark-iv-design-convergence.json:20: "status": "MARK_IV_DESIGN_CONVERGENCE_READY", /home/shire3d/ARMOR/docs/parametric_forge/requirements-0001B.lock.txt:7:cadquery-ocp-proxy==7.9.3.1.1 /home/shire3d/ARMOR/docs/parametric_forge/requirements-0001B.lock.txt:8:cadquery-ocp==7.9.3.1.1 /home/shire3d/ARMOR/docs/parametric_forge/requirements-0001B.lock.txt:9:cadquery==2.8.0 /home/shire3d/ARMOR/framework/base_module.py:7: def __init__(self, stack, name, status="STANDBY"): /home/shire3d/ARMOR/framework/base_module.py:18: status_colour = GREEN if status == "ONLINE" else AMBER /home/shire3d/ARMOR/framework/base_module.py:19: module_status = QLabel(f"MODULE STATUS: {status}") /home/shire3d/ARMOR/framework/base_module.py:20: module_status.setAlignment(Qt.AlignCenter) /home/shire3d/ARMOR/framework/base_module.py:21: module_status.setStyleSheet(f"color:{status_colour}; font-size:14px; font-weight:bold;") /home/shire3d/ARMOR/framework/base_module.py:24: self.main.addWidget(module_status) /home/shire3d/ARMOR/framework/warden_station.py:11: def __init__(self, stack, title, subtitle, icon, status_lines=None, objective="Awaiting assignment"): /home/shire3d/ARMOR/framework/warden_station.py:17: self.status_lines = status_lines or [] /home/shire3d/ARMOR/framework/warden_station.py:71: status = QLabel("STATION ONLINE") /home/shire3d/ARMOR/framework/warden_station.py:72: status.setAlignment(Qt.AlignCenter) /home/shire3d/ARMOR/framework/warden_station.py:73: status.setStyleSheet(f""" /home/shire3d/ARMOR/framework/warden_station.py:82: core_layout.addWidget(status) /home/shire3d/ARMOR/framework/warden_station.py:87: info = QLabel(self.build_status_text()) /home/shire3d/ARMOR/framework/warden_station.py:138: def build_status_text(self): /home/shire3d/ARMOR/framework/warden_station.py:140: for line in self.status_lines: /home/shire3d/ARMOR/framework/warden_widgets.py:144: self.status_text = "CORE READY" /home/shire3d/ARMOR/framework/warden_widgets.py:179: self.status_text = "CORE FAULT" /home/shire3d/ARMOR/framework/warden_widgets.py:182: self.status_text = "CORE SYNCING" /home/shire3d/ARMOR/framework/warden_widgets.py:185: self.status_text = "FORGE ACTIVE" /home/shire3d/ARMOR/framework/warden_widgets.py:188: self.status_text = "CORE STANDBY" /home/shire3d/ARMOR/framework/warden_widgets.py:191: self.status_text = "CORE READY" /home/shire3d/ARMOR/framework/warden_widgets.py:241: painter.drawText(QRect(18, 13, w - 36, 16), Qt.AlignRight | Qt.AlignVCenter, self.status_text) /home/shire3d/ARMOR/heart/oath.json:11: "I will preserve knowledge, remain truthful about my capabilities, and seek better solutions every day.", /home/shire3d/ARMOR/modules/archive.py:11: status_lines=[ /home/shire3d/ARMOR/modules/atlas.py:11: status_lines=[ /home/shire3d/ARMOR/modules/dashboard.py:187: status_grid = QGridLayout() /home/shire3d/ARMOR/modules/dashboard.py:188: status_grid.setSpacing(4) /home/shire3d/ARMOR/modules/dashboard.py:189: status_grid.setColumnStretch(0, 1) /home/shire3d/ARMOR/modules/dashboard.py:190: status_grid.setColumnStretch(1, 1) /home/shire3d/ARMOR/modules/dashboard.py:192: status_items = [ /home/shire3d/ARMOR/modules/dashboard.py:203: for i, item in enumerate(status_items): /home/shire3d/ARMOR/modules/dashboard.py:206: card.clicked.connect(self.handle_status_tile) /home/shire3d/ARMOR/modules/dashboard.py:208: status_grid.addWidget(card, i // 2, i % 2) /home/shire3d/ARMOR/modules/dashboard.py:214: main.addLayout(status_grid) /home/shire3d/ARMOR/modules/dashboard.py:245: self.health_summary = QLabel() /home/shire3d/ARMOR/modules/dashboard.py:246: self.health_summary.setAlignment(Qt.AlignLeft | Qt.AlignTop) /home/shire3d/ARMOR/modules/dashboard.py:247: self.health_summary.setWordWrap(True) /home/shire3d/ARMOR/modules/dashboard.py:248: self.health_summary.setStyleSheet(f""" /home/shire3d/ARMOR/modules/dashboard.py:257: self.health_summary.setMinimumHeight(115) /home/shire3d/ARMOR/modules/dashboard.py:258: self.health_summary.setText( /home/shire3d/ARMOR/modules/dashboard.py:262: main.addWidget(self.health_summary) /home/shire3d/ARMOR/modules/dashboard.py:345: self.timer.timeout.connect(self.update_status) /home/shire3d/ARMOR/modules/dashboard.py:347: self.update_status() /home/shire3d/ARMOR/modules/dashboard.py:477: status = task.get("status") /home/shire3d/ARMOR/modules/dashboard.py:478: if status == "queued": /home/shire3d/ARMOR/modules/dashboard.py:480: elif status in ["completed", "done"]: /home/shire3d/ARMOR/modules/dashboard.py:482: elif status == "awaiting_approval": /home/shire3d/ARMOR/modules/dashboard.py:523: data.get("auto_status", "Auto cooling: unknown"), /home/shire3d/ARMOR/modules/dashboard.py:614: "Agent worker chain prepared.", /home/shire3d/ARMOR/modules/dashboard.py:633: f"Agent status: {agent_manager.summary()}" /home/shire3d/ARMOR/modules/dashboard.py:636: def handle_status_tile(self, key): /home/shire3d/ARMOR/modules/dashboard.py:670: "Night Forge can queue a demo worker chain.", /home/shire3d/ARMOR/modules/dashboard.py:684: f"Agent status: {agent_manager.summary()}", /home/shire3d/ARMOR/modules/dashboard.py:685: "Agents can prepare worker chains and support Night Forge." /home/shire3d/ARMOR/modules/dashboard.py:715: "Caretaker continues background health checks." /home/shire3d/ARMOR/modules/dashboard.py:733: "Watching temperature, RAM, disk, and core health.", /home/shire3d/ARMOR/modules/dashboard.py:747: def health_colour(self, state): /home/shire3d/ARMOR/modules/dashboard.py:754: def update_health_summary(self, snapshot, caretaker_result): /home/shire3d/ARMOR/modules/dashboard.py:765: auto_cooling_line = cooling.get("auto_status", "Auto cooling: unknown") /home/shire3d/ARMOR/modules/dashboard.py:817: health_state = "critical" /home/shire3d/ARMOR/modules/dashboard.py:821: health_state = "watch" /home/shire3d/ARMOR/modules/dashboard.py:825: health_state = "clear" /home/shire3d/ARMOR/modules/dashboard.py:832: colour = self.health_colour(health_state) /home/shire3d/ARMOR/modules/dashboard.py:834: self.health_summary.setStyleSheet(f""" /home/shire3d/ARMOR/modules/dashboard.py:857: self.health_summary.setText("\n".join(body)) /home/shire3d/ARMOR/modules/dashboard.py:859: def update_status(self): /home/shire3d/ARMOR/modules/dashboard.py:879: self.update_health_summary(s, caretaker_result) /home/shire3d/ARMOR/modules/global_prompt_bar.py:407: if message_type == "status": /home/shire3d/ARMOR/modules/global_prompt_bar.py:558: exit_status, /home/shire3d/ARMOR/modules/global_prompt_bar.py:560: del exit_status /home/shire3d/ARMOR/modules/global_prompt_bar.py:657: worker = getattr( /home/shire3d/ARMOR/modules/global_prompt_bar.py:659: "brain_worker", /home/shire3d/ARMOR/modules/global_prompt_bar.py:664: worker is not None /home/shire3d/ARMOR/modules/global_prompt_bar.py:665: and worker.isRunning() /home/shire3d/ARMOR/modules/laptop_dashboard.py:1002: def _build_status_card(self): /home/shire3d/ARMOR/modules/laptop_dashboard.py:1200: left_column.addWidget(self._build_status_card(), 2) /home/shire3d/ARMOR/modules/media.py:11: status_lines=[ /home/shire3d/ARMOR/modules/sentinel.py:174: self.status_line = QLabel("LIVE DEFENCE BOARD | DEFENSIVE TOOLS ONLY") /home/shire3d/ARMOR/modules/sentinel.py:175: self.status_line.setAlignment(Qt.AlignCenter) /home/shire3d/ARMOR/modules/sentinel.py:176: self.status_line.setStyleSheet(""" /home/shire3d/ARMOR/modules/sentinel.py:182: main.addWidget(self.status_line) /home/shire3d/ARMOR/modules/sentinel.py:292: ("SCAN", self.security_status), /home/shire3d/ARMOR/modules/sentinel.py:293: ("NETWORK", self.network_status), /home/shire3d/ARMOR/modules/sentinel.py:294: ("OPEN PORTS", self.port_status), /home/shire3d/ARMOR/modules/sentinel.py:295: ("TOOLS", self.tool_status), /home/shire3d/ARMOR/modules/sentinel.py:406: self.security_status() /home/shire3d/ARMOR/modules/sentinel.py:556: code, out = self.run_cmd(["ufw", "status"], timeout=4) /home/shire3d/ARMOR/modules/sentinel.py:611: self.status_line.setText(f"SENTINEL LIVE | UFW: {ufw} | FAIL2BAN: {self.fail2ban_state()} | MISSING: {tools_missing}") /home/shire3d/ARMOR/modules/sentinel.py:615: self.network_status() /home/shire3d/ARMOR/modules/sentinel.py:617: self.port_status() /home/shire3d/ARMOR/modules/sentinel.py:619: self.packet_capture_status() /home/shire3d/ARMOR/modules/sentinel.py:621: self.malware_status() /home/shire3d/ARMOR/modules/sentinel.py:623: self.firewall_status() /home/shire3d/ARMOR/modules/sentinel.py:625: self.hardening_status() /home/shire3d/ARMOR/modules/sentinel.py:627: def security_status(self): /home/shire3d/ARMOR/modules/sentinel.py:630: self.log("Security status refreshed.") /home/shire3d/ARMOR/modules/sentinel.py:631: self.tool_status() /home/shire3d/ARMOR/modules/sentinel.py:633: def tool_status(self): /home/shire3d/ARMOR/modules/sentinel.py:661: def network_status(self): /home/shire3d/ARMOR/modules/sentinel.py:666: def port_status(self): /home/shire3d/ARMOR/modules/sentinel.py:672: def packet_capture_status(self): /home/shire3d/ARMOR/modules/sentinel.py:681: def malware_status(self): /home/shire3d/ARMOR/modules/sentinel.py:688: def firewall_status(self): /home/shire3d/ARMOR/modules/sentinel.py:691: code, out = self.run_cmd(["ufw", "status"], timeout=4) /home/shire3d/ARMOR/modules/sentinel.py:692: self.log(out if out else "UFW installed but no status output.") /home/shire3d/ARMOR/modules/sentinel.py:696: def hardening_status(self): /home/shire3d/ARMOR/modules/settings.py:41: self.status = QLabel("Preferences loaded from config/preferences.json") /home/shire3d/ARMOR/modules/settings.py:42: self.status.setAlignment(Qt.AlignCenter) /home/shire3d/ARMOR/modules/settings.py:43: self.status.setStyleSheet(f"color:{AMBER}; font-size:13px; font-weight:bold;") /home/shire3d/ARMOR/modules/settings.py:119: layout.addWidget(self.status) /home/shire3d/ARMOR/modules/settings.py:200: self.status.setText("Preferences loaded.") /home/shire3d/ARMOR/modules/settings.py:206: self.status.setText("Preferences saved to config/preferences.json") /home/shire3d/ARMOR/modules/settings.py:211: self.status.setText("Template values restored. Press SAVE SETTINGS to write runtime preferences.") /home/shire3d/ARMOR/modules/shire.py:83:from sentinel.status import check_system, forge_score /home/shire3d/ARMOR/modules/shire.py:449: # status frame /home/shire3d/ARMOR/modules/shire.py:458: # animated status overlays /home/shire3d/ARMOR/modules/shire.py:526: port = laptop.get("brain_port", 8765) /home/shire3d/ARMOR/modules/shire.py:533: return f"http://100.74.51.32:8765/{endpoint}" /home/shire3d/ARMOR/modules/shire.py:677: "No dead controls. No fake status. ARMOR-only responses.\n" === Current HTTP compatibility baseline === curl: (7) Failed to connect to 127.0.0.1 port 8765 after 0 ms: Couldn't connect to server / HTTP=000 CURL_RC=7 BYTES=0 curl: (7) Failed to connect to 127.0.0.1 port 8765 after 0 ms: Couldn't connect to server /health HTTP=000 CURL_RC=7 BYTES=0 curl: (7) Failed to connect to 127.0.0.1 port 8765 after 0 ms: Couldn't connect to server /api/health HTTP=000 CURL_RC=7 BYTES=0 curl: (7) Failed to connect to 127.0.0.1 port 8765 after 0 ms: Couldn't connect to server /status HTTP=000 CURL_RC=7 BYTES=0 curl: (7) Failed to connect to 127.0.0.1 port 8765 after 0 ms: Couldn't connect to server /api/status HTTP=000 CURL_RC=7 BYTES=0 curl: (7) Failed to connect to 127.0.0.1 port 8765 after 0 ms: Couldn't connect to server /capabilities HTTP=000 CURL_RC=7 BYTES=0 curl: (7) Failed to connect to 127.0.0.1 port 8765 after 0 ms: Couldn't connect to server /api/capabilities HTTP=000 CURL_RC=7 BYTES=0 curl: (7) Failed to connect to 127.0.0.1 port 8765 after 0 ms: Couldn't connect to server /openapi.json HTTP=000 CURL_RC=7 BYTES=0 === Python dependency context === Python 3.12.3 (main, Jun 19 2026, 12:46:00) [GCC 13.3.0] === Recent service log baseline === Aug 05 09:50:03 armoros python[1297]: 100.74.51.32 - - [05/Aug/2026 09:45:03] "GET /health HTTP/1.1" 200 - Aug 05 09:50:03 armoros python[1297]: 100.116.93.90 - - [05/Aug/2026 09:45:13] "GET /health HTTP/1.1" 200 - Aug 05 09:50:03 armoros python[1297]: 100.74.51.32 - - [05/Aug/2026 09:45:18] "GET /health HTTP/1.1" 200 - Aug 05 09:50:03 armoros python[1297]: 100.116.93.90 - - [05/Aug/2026 09:45:28] "GET /health HTTP/1.1" 200 - Aug 05 09:50:03 armoros python[1297]: 100.74.51.32 - - [05/Aug/2026 09:45:33] "GET /health HTTP/1.1" 200 - Aug 05 09:50:03 armoros python[1297]: 100.116.93.90 - - [05/Aug/2026 09:45:43] "GET /health HTTP/1.1" 200 - Aug 05 09:50:03 armoros python[1297]: 100.74.51.32 - - [05/Aug/2026 09:45:48] "GET /health HTTP/1.1" 200 - Aug 05 09:50:03 armoros python[1297]: 100.116.93.90 - - [05/Aug/2026 09:45:58] "GET /health HTTP/1.1" 200 - Aug 05 09:50:03 armoros python[1297]: 100.74.51.32 - - [05/Aug/2026 09:46:03] "GET /health HTTP/1.1" 200 - Aug 05 09:50:03 armoros python[1297]: 100.116.93.90 - - [05/Aug/2026 09:46:13] "GET /health HTTP/1.1" 200 - Aug 05 09:50:03 armoros python[1297]: 100.74.51.32 - - [05/Aug/2026 09:46:18] "GET /health HTTP/1.1" 200 - Aug 05 09:50:03 armoros python[1297]: 100.116.93.90 - - [05/Aug/2026 09:46:28] "GET /health HTTP/1.1" 200 - Aug 05 09:50:03 armoros python[1297]: 100.74.51.32 - - [05/Aug/2026 09:46:33] "GET /health HTTP/1.1" 200 - Aug 05 09:50:03 armoros python[1297]: 100.116.93.90 - - [05/Aug/2026 09:46:43] "GET /health HTTP/1.1" 200 - Aug 05 09:50:03 armoros python[1297]: 100.74.51.32 - - [05/Aug/2026 09:46:48] "GET /health HTTP/1.1" 200 - Aug 05 09:50:03 armoros python[1297]: 100.116.93.90 - - [05/Aug/2026 09:46:58] "GET /health HTTP/1.1" 200 - Aug 05 09:50:03 armoros python[1297]: 100.74.51.32 - - [05/Aug/2026 09:47:03] "GET /health HTTP/1.1" 200 - Aug 05 09:50:03 armoros python[1297]: 100.116.93.90 - - [05/Aug/2026 09:47:13] "GET /health HTTP/1.1" 200 - Aug 05 09:50:03 armoros python[1297]: 100.74.51.32 - - [05/Aug/2026 09:47:18] "GET /health HTTP/1.1" 200 - Aug 05 09:50:03 armoros python[1297]: 100.116.93.90 - - [05/Aug/2026 09:47:28] "GET /health HTTP/1.1" 200 - Aug 05 09:50:03 armoros python[1297]: 100.74.51.32 - - [05/Aug/2026 09:47:33] "GET /health HTTP/1.1" 200 - Aug 05 09:50:03 armoros python[1297]: 100.116.93.90 - - [05/Aug/2026 09:47:43] "GET /health HTTP/1.1" 200 - Aug 05 09:50:03 armoros python[1297]: 100.74.51.32 - - [05/Aug/2026 09:47:48] "GET /health HTTP/1.1" 200 - Aug 05 09:50:03 armoros python[1297]: 100.116.93.90 - - [05/Aug/2026 09:47:58] "GET /health HTTP/1.1" 200 - Aug 05 09:50:03 armoros python[1297]: 100.74.51.32 - - [05/Aug/2026 09:48:03] "GET /health HTTP/1.1" 200 - Aug 05 09:50:03 armoros python[1297]: 100.116.93.90 - - [05/Aug/2026 09:48:13] "GET /health HTTP/1.1" 200 - Aug 05 09:50:03 armoros python[1297]: 100.74.51.32 - - [05/Aug/2026 09:48:18] "GET /health HTTP/1.1" 200 - Aug 05 09:50:03 armoros python[1297]: 100.116.93.90 - - [05/Aug/2026 09:48:28] "GET /health HTTP/1.1" 200 - Aug 05 09:50:03 armoros python[1297]: 100.74.51.32 - - [05/Aug/2026 09:48:33] "GET /health HTTP/1.1" 200 - Aug 05 09:50:03 armoros python[1297]: 100.116.93.90 - - [05/Aug/2026 09:48:43] "GET /health HTTP/1.1" 200 - Aug 05 09:50:03 armoros python[1297]: 100.74.51.32 - - [05/Aug/2026 09:48:48] "GET /health HTTP/1.1" 200 - Aug 05 09:50:03 armoros python[1297]: 100.116.93.90 - - [05/Aug/2026 09:48:58] "GET /health HTTP/1.1" 200 - Aug 05 09:50:03 armoros python[1297]: 100.74.51.32 - - [05/Aug/2026 09:49:03] "GET /health HTTP/1.1" 200 - Aug 05 09:50:03 armoros python[1297]: 100.116.93.90 - - [05/Aug/2026 09:49:13] "GET /health HTTP/1.1" 200 - Aug 05 09:50:03 armoros python[1297]: 100.74.51.32 - - [05/Aug/2026 09:49:18] "GET /health HTTP/1.1" 200 - Aug 05 09:50:03 armoros python[1297]: 100.116.93.90 - - [05/Aug/2026 09:49:28] "GET /health HTTP/1.1" 200 - Aug 05 09:50:03 armoros python[1297]: 100.74.51.32 - - [05/Aug/2026 09:49:33] "GET /health HTTP/1.1" 200 - Aug 05 09:50:03 armoros python[1297]: 100.116.93.90 - - [05/Aug/2026 09:49:43] "GET /health HTTP/1.1" 200 - Aug 05 09:50:03 armoros python[1297]: 100.74.51.32 - - [05/Aug/2026 09:49:48] "GET /health HTTP/1.1" 200 - Aug 05 09:50:03 armoros python[1297]: 100.116.93.90 - - [05/Aug/2026 09:49:58] "GET /health HTTP/1.1" 200 - RESULT: EXISTING SHIRE BRAIN IMPLEMENTATION CAPTURED