OpenAlice Architecture Deep Audit — 10x / SOTA-AGI Roadmap
Date: 2026-06-17 Scope: 48 crates + 6 WASM packs, ~520k LOC, mvp branch Auditors: 8 dimension agents (folder actuality, crate consolidation, dead code, runtime dataflow, prompt system, AGI competitor gaps, developer lightness, Atlas integration)
Current-State Score: 58 / 100
Rationale. The architecture is genuinely sophisticated — OS-kernel Rust design, three-tier agent isolation, a rich 30-module memory subsystem, SHA256-pinned prompt integrity, 156 tools, 2880+ tests, OTel + Prometheus + Merkle audit, and a sound 32-stage connector pipeline. These are real competitive advantages no competitor matches in Rust.
However, the score is held at 58 by three honest problems:
- AGI capabilities are architecturally present but operationally dead. The Voyager curriculum loop, Constitutional Critic, and behavioral auto-rollback are all gated off (default env=off) with key PRs deferred. Alice cannot self-improve in production today.
- The codebase carries significant structural debt. The alice binary and api-handlers are god-files (2172 and 4214 lines respectively), 37+ phantom Cargo deps litter the modules facade, and 84 storage-v2 legacy branches are live dead code even though v2 has been in production since 2026-05-21.
- The Atlas integration is critically incomplete. 43 of 48 crates have zero symbol coverage in Atlas, 89% of features are invisible to the agent team, and 18 active design docs are un-indexed — meaning every sub-agent violates the atlas-first convention without knowing it.
Theme 1 — AGI: Flip the Capability Gates
Rationale. Alice's most important AGI modules are fully scaffolded but gated off. Four PRs together close the gap between "architecturally an AGI" and "operationally an AGI": Voyager sandbox spawn (PR 3.3), LLM goal proposal (PR 3.4), ConstitutionalCritic LLM call (PR 2.2), and Critic wiring into the agentic loop (PR 2.3). Until these land, Alice cannot autonomously improve, cannot safety-gate mutating tool calls, and the behavioral envelope rollback has no signal to act on.
| Action | Lever | Effort | Risk | Targets |
|---|---|---|---|---|
| Land agi-safety PR 2.2: wire real Codex LLM call into ConstitutionalCritic (replaces always-Approve stub) | closer-to-agi | M | medium | crates/agi-safety/src/lib.rs, crates/agi-safety/src/critic.rs |
| Land agi-safety PR 2.3: gate mutating tools through Critic in agentic_loop; start with shadow=log-only | closer-to-agi | M | medium | crates/api-handlers/src/http/routes/chat_tools/agentic_loop.rs |
| Land agi-skills PR 3.3: wire sandbox spawn so Voyager can execute trial skills | closer-to-agi | L | medium | crates/agi-skills/src/cycle.rs, crates/sandbox/ |
| Land agi-skills PR 3.4: wire LLM goal proposal (gpt-5.4-mini) to close autonomous skill-creation loop; flip OPENALICE_VOYAGER=shadow in lab | closer-to-agi | M | low | crates/agi-skills/src/cycle.rs, lab config |
| Wire Q7 reflection runner to cron_scheduler (daily 03:00) + Critic gating for medium-risk proposals | closer-to-agi | S | low | crates/alice/src/cron_scheduler.rs, crates/agents-memory/src/reflection/ |
| Wire behavioral envelope rollback: variance gate + Critic veto > 0.8 → rollback to last SHA256 Cat-A checkpoint | closer-to-agi | M | medium | crates/agi-safety/src/rollback.rs, crates/agi-safety/src/envelope.rs |
| Add LLM-attribution observability layer (per-call spans: model, provider, tokens, cost_usd, latency_ms, agent_id) — prerequisite for cost/quality retrospective and Voyager budget control | 10x-capability | M | low | crates/observability/src/lib.rs (new llm_attribution.rs module) |
Theme 2 — Runtime Performance: Kill the Hot-Path Bottlenecks
Rationale. Every production turn hits at least three known performance drains: a double connector_history store.get, serial I/O in prompt_assembly (embedding + prior_history run sequentially), and a per-turn ephemeral AppState allocation including LspRegistry and MetricsCollector. The VAD scope bug silently reads the wrong namespace for all non-Telegram connectors. Together these waste 50–200ms per turn and corrupt emotional state for Discord/A2A/Matrix users.
| Action | Lever | Effort | Risk | Targets |
|---|---|---|---|---|
| Cache connector_history in PipelineCtx during prompt_assembly; have history stage consume it — eliminate second store.get | cleaner | S | low | crates/alice/src/connector_bridge/stages/prompt_assembly.rs, stages/history.rs |
| Parallelize embedding + prior_history load with tokio::join! in prompt_assembly (independent I/O, ~30–150ms saving) | 10x-capability | S | low | crates/alice/src/connector_bridge/stages/prompt_assembly.rs |
Fix VAD scope: format!("{}-{}", ctx.connector_name, ctx.source) replacing hardcoded telegram-{} | cleaner | S | low | crates/alice/src/connector_bridge/stages/memory_preload.rs:119 |
| Replace ephemeral AppState per pipeline turn with a ConnectorAppState (Arc<Kernel> + store + http_metrics only, constructed once at boot) | cleaner | M | low | crates/alice/src/connector_bridge/stages/agentic_loop.rs:48-66 |
| Migrate remaining readers of _active_telegram_chat_id/_active_conv_id to receive ConvContext directly; remove the two global store.put calls — eliminates the PIPELINE_SEMAPHORE=3 last-writer-wins race | cleaner | M | medium | crates/modules-hands/src/hands/mod.rs:613, crates/api-handlers/src/http/routes/chat_tools/tools_memory.rs:717-722 |
| Per-conversation COMPACTING DashSet<String> replacing the process-global AtomicBool | cleaner | S | low | crates/alice/src/connector_bridge/stages/history.rs:23 |
Theme 3 — Structural Debt: God-Files and Misplaced Logic
Rationale. The five highest-pain files (agentic_loop.rs 4214 lines / cx=205, main.rs 2172 lines, modules/mod.rs 2315 lines, chat.rs 3025 lines, telegram/rest_client.rs cx=252) account for 14k lines that every contributor must navigate daily. The root cause is not complexity of the domain — it is that domain logic was placed in transport-layer crates during early velocity phases and never extracted. The files' own TODO comments name the exact remedies.
| Action | Lever | Effort | Risk | Targets |
|---|---|---|---|---|
Extract run_agentic_loop into openalice-agents::agentic_loop behind an ExecuteToolFn trait (file's own TODO at line 1309); decouple execute_tool from AppState first | cleaner | L | medium | crates/api-handlers/src/http/routes/chat_tools/agentic_loop.rs, new crates/agents/src/agentic_loop.rs |
Introduce [lib] target in alice/Cargo.toml; split main.rs into boot::serve, pack::commands, tunnel::commands (24 inline mod declarations) | lighter-dev | M | low | crates/alice/src/main.rs, crates/alice/Cargo.toml |
Split alice/modules/mod.rs into registry.rs, agent_boot.rs, auth_stack.rs — natural seams at register_all_modules, spawn_default_agent, setup_auth | lighter-dev | M | low | crates/alice/src/modules/mod.rs |
Split chat.rs into chat_non_stream.rs, chat_stream.rs, ai_sdk.rs with a shared chat_core.rs for context assembly | lighter-dev | M | low | crates/api-handlers/src/http/routes/chat.rs |
Extract parse_message_update(raw) -> ParsedUpdate enum from get_updates (cx=252) in telegram/rest_client.rs; one parse_<media> helper per variant | lighter-dev | M | low | crates/modules-connectors/src/connectors/telegram/rest_client.rs:320 |
Split telegram/host.rs (2332 lines, cx=137) into host/update_router.rs, host/message_handler.rs, host/interaction_handler.rs | lighter-dev | M | low | crates/modules-connectors/src/connectors/telegram/host.rs |
Split coalesce/lane_state.rs (2201 lines) along Phase 8XXX M5 graft comment lines into lane_fsm.rs, lane_registry.rs, lane_recovery.rs | lighter-dev | M | low | crates/coalesce/src/lane_state.rs |
Split schemas/config.rs (2118 lines, 50 types) into config/router.rs, config/worker.rs, config/memory.rs, config/tools.rs — pure data, near-zero risk | lighter-dev | S | low | crates/schemas/src/config.rs |
Theme 4 — Cargo Hygiene: Phantom Deps and Facade Cleanup
Rationale. The openalice-modules facade retains 37 declared Cargo.toml deps that its 44-line lib.rs never imports. Every downstream crate pays the transitive compile cost. At least 6 additional crates have 5–12 phantom deps each. This is directly causing incremental build times longer than necessary for every contributor.
| Action | Lever | Effort | Risk | Targets |
|---|---|---|---|---|
| Strip 37 phantom deps from openalice-modules/Cargo.toml — keep only the 5 re-exported sub-crates | lighter-dev | S | low | crates/modules/Cargo.toml |
| Strip phantom deps: modules-drivers (12), modules-intelligence (7), agents-safety (10), agents-tools (5), agents-soul (5), api-handlers (7), alice binary (5) | lighter-dev | S | low | Respective Cargo.toml files |
Add cargo-machete as a CI step with deny(unused_crate_dependencies) per-crate to prevent future dep rot | lighter-dev | S | low | .cargo/config.toml, CI workflow |
Mark openalice-transport and openalice-modules as @deprecated compat shims; new code must import from sub-crates directly; add deletion roadmap comment | cleaner | S | low | crates/transport/src/lib.rs, crates/modules/src/lib.rs |
Add pack-sdk + 6 WASM packs to workspace versioning (version.workspace = true) | cleaner | S | low | packs/*/Cargo.toml, crates/pack-sdk/Cargo.toml |
Theme 5 — AGI New Capabilities: Close Competitor Gaps
Rationale. Competitors ship capabilities Alice's architecture has slots for but hasn't wired. The highest-ROI additions are the MicroagentRegistry (under 500 lines, closes the OpenHands keyword-trigger gap, directly improves coding tasks), Planner-Executor isolation (Deep Agent Hierarchy already exists — needs wiring to mission_engine), and local model inference (unlocks offline operation + complexity-based routing).
| Action | Lever | Effort | Risk | Targets |
|---|---|---|---|---|
| Implement MicroagentRegistry in agents-memory or modules-intelligence: keyword patterns → expertise blocks injected into system prompt; parse AGENTS.md + .cursorrules at workspace root | 10x-capability | M | low | new crates/agents-memory/src/microagent.rs or crates/modules-intelligence/src/microagent.rs |
| Wire mission_engine planner output to spawn a fresh child agent (Deep Agent Hierarchy) with only the plan as context — Planner-Executor isolation, prevents context contamination in long-horizon tasks | closer-to-agi | M | medium | crates/agents-soul/src/mission_engine.rs, agents/deep_agent.rs |
| Add local_inference provider crate (llama-cpp-rs or candle) as fallback tier-4 in the 6-level router chain | 10x-capability | L | low | new crates/router/src/providers/local_inference.rs |
| Add OSV malware check module to agi-safety or plugin-host; query api.osv.dev/v1/query before loading unsigned/remote WASM packs | 10x-capability | S | low | crates/agi-safety/src/osv_check.rs or crates/plugin-host/ |
| Add ComplexityRouter to router crate: lightweight token-count heuristic (initial) → effort-level auto-assignment, with Ollama encoder as upgrade path | 10x-capability | M | medium | crates/router/src/complexity.rs |
| Extend trace store for live session replay: on agent spawn, load a prior TraceRun and inject actions into warm-up phase before first new instruction | closer-to-agi | M | medium | crates/agents-soul/src/ (trace replay), crates/alice/src/modules/ |
| Add task_difficulty_estimator to agents-rank: lightweight classifier (token count, code presence, dep mentions) to pre-score tasks before effort assignment | closer-to-agi | M | low | crates/agents-rank/src/task_difficulty.rs |
Theme 6 — Dead Code and Storage Migration Completion
Rationale. Storage v2 has been live in production since 2026-05-21, yet 84 env-flag branch sites still carry v1 fallback paths. This is the largest single dead-code cluster in the repo (~400–600 LOC recoverable). Additional confirmed dead code includes task_runner_loop (98 LOC, explicitly annotated DEPRECATED with zero callers), five deprecated skill tool aliases past their deprecation window, and several #[allow(dead_code)]-suppressed helpers.
| Action | Lever | Effort | Risk | Targets |
|---|---|---|---|---|
| Complete storage.v2-full-adoption (Atlas goal in_progress): delete ~84 v1 fallback branches, remove render_from_legacy_keys, load_identity_with_legacy_fallback; wire apply_avatar_to_refs for v2 | cleaner | L | medium | crates/alice/src/storage_v2_session_wire.rs, crates/agents-memory/src/memory_relations.rs, crates/agents-refs/src/auto_fetch.rs:190, ~80 more sites |
| Delete task_runner_loop from mod_task_runner.rs (lines 196–298): DEPRECATED, zero callers, 98 LOC duplicate of live TaskRunnerTick::on_tick | cleaner | S | low | crates/alice/src/modules/mod_task_runner.rs:196-298 |
| Remove 5 deprecated skill aliases (skill_read/create/update/run/list) from reg_skills_unified.rs + reg_skills_legacy.rs; remove image_generate from reg_group.rs (31 days past stated deprecation) | cleaner | S | low | crates/agents-tools/src/tools_builtins/handlers_misc/reg_skills_unified.rs, reg_skills_legacy.rs, reg_group.rs |
| Remove dead cockpit helpers (json_response, validate_namespace_component) and agi-core compat.rs From<LaneState> block; remove FlushReason::Signal variant; remove mem_search_indexes placeholder field | cleaner | S | low | crates/openalice-cockpit/src/routes/helpers.rs, crates/agi-core/src/compat.rs, crates/coalesce/src/lib.rs:386, crates/agents-tools/src/tools.rs:263 |
| Consolidate cyrillic transliteration triplicate into openalice_core::text::transliterate | cleaner | S | low | crates/agents-memory/src/entity_resolution.rs:23, crates/agents-image-gen/src/store.rs:486, crates/api-handlers/src/http/routes/chat_tools/worker_hooks.rs:259 |
| Consolidate agi-core + agi-safety + agi-skills into single openalice-agi crate gated by feature flag (all three are env-gated scaffold, 30 files / ~9.5k LOC across 3 compile units) | cleaner | M | low | crates/agi-core/, crates/agi-safety/, crates/agi-skills/ |
Theme 7 — Prompt System: Activate Dormant Infrastructure
Rationale. The overlay system is complete infrastructure (OverlayLoader, OverlayFile, OverlaySet, apply_overlays_to_cat_b) but has zero production users — it was built for the B.5 wave and never wired. The D-4 microagent templates in tools_microagent.rs are hardcoded and have diverged from the agents/*.toml canonical versions — two different prompts for the same named agents is a production correctness bug. The prompts/ and agents/ container path issues make both silently unavailable in non-dev deployments.
| Action | Lever | Effort | Risk | Targets |
|---|---|---|---|---|
| Fix prompts/ container path: COPY prompts/ into Docker image at /app/prompts and set OPENALICE_PROMPTS_ROOT=/app/prompts in Dockerfile; eliminates CARGO_MANIFEST_DIR compile-time fallback in prod | cleaner | S | low | Dockerfile, docker-compose.dev.yml |
| Fix agents/ container path: add OPENALICE_AGENTS_DIR env override mirroring OPENALICE_PROMPTS_ROOT; COPY agents/ or bind-mount in docker-compose | cleaner | S | low | crates/agents-soul/src/templates.rs:312, Dockerfile |
| Wire builtin_microagent_template() (D-4) to read from TemplateRegistry kernel driver — agents/*.toml must be single source of truth for sub-agent prompts | cleaner | M | medium | crates/api-handlers/src/http/routes/chat_tools/tools_microagent.rs:354-416 |
| Wire overlay system into Composer::assemble_full() (B.5 wave step); or annotate prominently as parked — current state is complete-infrastructure/zero-users which confuses audits | cleaner | M | low | crates/prompt-composer/src/overlays.rs, crates/prompt-composer/src/lib.rs |
| Activate CuratorDigestsSection and MemoryIndexSection: populate ctx.curator_digests_md + ctx.memory_index_md inside assemble_for_connector_with_context before build_unstable_suffix; remove post-assembler raw string appends | cleaner | M | low | crates/alice/src/connector_bridge/stages/prompt_assembly.rs, crates/agents-soul/src/sections/ |
| Progress DeliveryRouter Phase B (Atlas goal openalice.delivery.router-phase-b): add Discord and A2A adapters to replace the 4-branch platform cascade in reply.rs (Telegram opt-in already proves pattern works) | cleaner | L | low | crates/alice/src/connector_bridge/stages/reply.rs, crates/openalice-delivery/ |
agents/ and prompts/ Folder Verdict
agents/ — ACTIVE, runtime path fragile. The 10 sub-agent TOML role definitions (analyst, auditor, coder, devops, manager, researcher, support, translator, tutor, writer) ARE wired. They are loaded at server boot via find_templates_dir() in crates/alice/src/modules/mod.rs:882 and registered as DRIVER_TEMPLATES. They are used for sub-agent spawning via the agent_spawn tool — NOT for Alice's own system prompt (that is SectionBuilder's job). Critical caveat: find_templates_dir() uses a CWD/binary-relative heuristic with no explicit Dockerfile COPY or docker-compose volume mount, so it silently returns zero templates in any non-repo-root working directory. Additionally, the microagent path (tools_microagent.rs:354) bypasses agents/*.toml entirely and uses hardcoded inline prompts that have diverged from the TOML files.
prompts/ — ACTIVE, only when OPENALICE_PROMPT_COMPOSER=v2 (default OFF), container path broken. The 22 Cat-A SHA256-pinned .md blocks and the 42 Cat-B blocks ARE the live source of truth for prompt content — but only when OPENALICE_PROMPT_COMPOSER=v2 is set AND the runtime path resolves correctly. The docker-compose default for OPENALICE_PROMPTS_ROOT points to /home/alice/.openalice/prompts (a user-data path), not the repo's prompts/ folder, and the Dockerfile does not COPY prompts/. The SHA256-pinned Cat-A blocks are effectively not being integrity-checked in production containers today. The prompts/envelope/reference.json is also read by crates/agi-safety/src/envelope.rs:214 regardless of the v2 flag.
Both folders must be COPY'd into the Docker image. This is the highest-priority non-capability correctness fix.
Folder and Crate Cleanup List
| Target | Verdict | Action |
|---|---|---|
harness-traces/ | Dead artifact (timestamped probe JSON, no runtime/build role) | Add to .gitignore; move to external artifact store; do not commit future probe outputs |
probe-reports/ | Dead artifact (synthetic eval JSONL) | Add to .gitignore; move to external store or docs/archive/ |
scripts/compute_prompt_hashes-2026-05-21.py, extract_cat_a_b2-2026-05-21.py, extract_cat_b_blocks-8nnnn-b4.py | Stale one-off migration scripts | Move to scripts/archive/; keep deploy.sh, emergency-rollback.sh, lab-regression-gate.sh |
assets/alice-avatar.jpg | Dead (runtime lookup is ~/.openalice, not repo assets/) | Move to docs/assets/ as a developer reference sample |
examples/*.wat | Gap (documentation only, not referenced in build or tests) | Add a wat2wasm compile step in CI or add README.md noting docs-only status |
docs/ROADMAP.md, docs/PLAN.md | Stale (mention March 2026 state; contradict Atlas goals) | Move to docs/archive/; Atlas goals list is the current source of truth |
crates/openalice-transport | Dead compat shim | Add crate-level deprecation notice; strip to 2-dep Cargo.toml; migration roadmap to direct imports |
crates/openalice-modules (facade) | Dead compat shim | Strip 37 phantom deps; add deprecation notice |
crates/cross-layer-composer | Stale (0 rev-deps, Layers 2–8 blank) | Either wire remaining layers or merge into oa-test-fixtures |
crates/golden-snapshots | Test-only but declares insta as regular dep | Move insta to [dev-dependencies] |
crates/agi-core + crates/agi-safety + crates/agi-skills | Stale scaffold (3 compile units for ~9.5k LOC, all env-gated off) | Consolidate into single openalice-agi crate behind feature flag |
| Path resolution: config/, agents/, prompts/ each have independent CWD heuristics | Fragile | Consolidate into single OPENALICE_REPO_ROOT env var resolved once at startup |
SOTA-AGI Gaps vs Competitors
| Gap | Competitor | Our Path |
|---|---|---|
| Self-improving learning loop: closed Voyager cycle with autonomous skill creation is gated off (OPENALICE_VOYAGER=off) | Hermes (closed learning loop, agentskills.io community hub, production-stable) | Land PRs 3.3 + 3.4 + 2.2 + 2.3 together; flip OPENALICE_VOYAGER=shadow in lab incubator; measure skill-creation rate per week |
| Constitutional Critic is always-Approve stub — safety gate not live | OpenHands (Constitutional AI pipeline with chain-of-thought safety, production-wired) | PR 2.2 (real Codex LLM call) → PR 2.3 (gate mutating tools) → PR 2.5 (periodic audit every 20 turns) |
| No LLM-attribution observability (no per-call cost/quality tracing) | Goose (Langfuse LLM-call tracing with per-call attribution; cost retrospective per session) | Add llm_attribution.rs to observability crate; export per-call OTel spans; optionally bridge to Langfuse-compatible backend |
| No local model inference — entirely cloud-dependent | Goose (llama.cpp/GGUF, GPU acceleration, HuggingFace auto-download), NemoClaw (Ollama + complexity routing with Qwen3.5-0.8B) | Add local_inference provider (llama-cpp-rs or candle); wire as tier-4 fallback; enables offline + cost-based routing |
| No keyword-triggered knowledge injection (microagent system) | OpenHands (KnowledgeMicroagent, RepoMicroagent, TaskMicroagent, .cursorrules compat — 25+ live skills) | MicroagentRegistry in agents-memory: keyword → expertise block injected into system prompt; AGENTS.md + .cursorrules parser at workspace root |
| Planner and executor share the same context — contamination risk in long-horizon tasks | Goose (plan created in fresh context, executor agent receives only the plan — clean context boundary) | Wire mission_engine planner output to spawn a fresh child agent via Deep Agent Hierarchy (already exists); only plan in executor context |
| No ML-based task complexity routing — manual effort-level only | NemoClaw (Qwen3.5-0.8B prefill encoder predicts P(correct) per model, selects cheapest above accuracy tolerance) | ComplexityRouter: start with token-count + code-presence heuristic; upgrade to Ollama encoder; wire as optional pre-routing step |
| Hybrid memory missing multi-provider embeddings and MMR reranking | OpenClaw (5 embedding providers: OpenAI/Gemini/Mistral/Voyage/Ollama, BM25+vector+MMR, temporal decay scoring) | Add Voyage AI + Gemini embedding providers to RAG module (architecture already supports swappable backends); add post-retrieval MMR pass in reranker.rs |
| No OSV malware check for WASM pack installs | Goose (OSV database query before npx/uvx install, blocks MAL-* advisories) | OSV check module in agi-safety or plugin-host; query api.osv.dev/v1/query before loading unsigned WASM packs |
| Issue solvability / task difficulty classifier absent | OpenHands enterprise (ML classifier with difficulty estimation, importance scoring, LLM triage before agent assignment) | task_difficulty_estimator in agents-rank: logistic regression over token count, code presence, dependency mentions; feeds effort-based routing |
Atlas Integration Gaps
- Symbol index saturated by agents-memory: The /symbols endpoint returns max 2000 rows, all dominated by agents-memory. 43 of 48 crates — including alice, api-handlers, core, coalesce, tui, agents-safety, agents-soul, prompt-composer, all modules-* — have zero Atlas symbol coverage. Fix: add
?crate=filtering to the endpoint, or paginate properly. Every sub-agent query for symbols in the 43 invisible crates falls back to expensive grep.
- Feature registry 89% blind: Atlas tracks ~70 unique feature names from @feature comment annotations; the authoritative
features.json(committed at repo root) has 642 entries across 33 categories. The ingestor needs a one-line addition: parsefeatures.jsonwhen present in repo root. This also fixes the goal matcher saturation (task #45) since the 642 specific names (e.g.agents.steering.strategy.select) no longer cross-match every goal.
- .claude/worktrees/ pollutes feature + file-graph indexes: 774 of 875 indexed feature entries and 333 of 340 file-graph nodes are from
.claude/worktrees/**. Same class as the data/self bug (task #43). Add.claude/worktrees/**to the ingestor's exclude-path list.
- 18 active docs/design/ files unindexed in Atlas wiki: Files including
TUI_ULTRA_IDEAL_2026-06-16.md,TUI_PERMISSIONS_B2_APPROVAL_PROTOCOL_2026-06-16.md,LANE_QUEUE_IDEAL_B_2026-06-15.md,STORAGE_V2_CONSOLIDATION_2026-06-15.md,lane-v2-implementation-plan-2026-06-12.md,TELEGRAM_RICH_FORMATTING_V1.mdexist only in the repo tree, invisible to semantic search. Register the 6 most active as Atlas wiki notes underproducts/openalice-agent. Until then agents violate atlas-first without knowing it.
- Zero board tasks for openalice core work: The board shows 1 done task (#9) and 0 active tasks for openalice. All AGI-track work is represented only as goals (not actionable tasks). Create board tasks for the 3 in_progress goals (q2-queue-accumulator, storage.v2-full-adoption, reflexion.live-wiring) with owner=minsky, plus new tasks for TUI phase-C and lane queue IDEAL_B.
- Missing Atlas goals for active work areas: No goals exist for the 91 transport features, 20 connector features, 11 TUI features (despite active design docs from 2026-06-16), or the 212-feature memory category. Add goals:
openalice.tui.phase-c,openalice.connector.telegram-rich-formatting,openalice.memory.consolidation.
- AGENT_GUIDE.md referenced in Atlas conventions does not exist in this repo. Atlas system-reminder says "START HERE: docs/AGENT_GUIDE.md" but
find . -name AGENT_GUIDE.mdreturns nothing. Create a one-pager: what openalice is, crate map, key Atlas query patterns for this repo, @feature + features.json convention, Cat-A soul-preservation rule.
- Rust file-graph absent from Atlas: The import graph for 1393 Rust source files is completely absent (file-graph only covers 7 TypeScript nodes after worktree noise is excluded). The ingestor should parse
use/modedges in Rust files to populate the Rust dependency graph — enabling blast-radius analysis for refactors.
Quick Wins (safe, doable now)
- Delete
task_runner_loopfrom mod_task_runner.rs (98 LOC, DEPRECATED annotation, zero callers — one grep confirmation + delete) - Strip 37 phantom deps from openalice-modules/Cargo.toml (confirmed zero-use, compile savings immediate)
- Fix VAD scope bug: one-line change in memory_preload.rs:119 (
ctx.connector_nameinstead of"telegram") — fixes emotional state for all non-Telegram connectors - Add
harness-traces/andprobe-reports/to.gitignore - Move
scripts/compute_prompt_hashes-2026-05-21.py,extract_cat_*.pytoscripts/archive/ - COPY prompts/ and agents/ into Docker image (fixes production container path gaps for both folders)
- Remove
FlushReason::Signalvariant from coalesce/lib.rs andmem_search_indexesplaceholder from agents-tools/src/tools.rs - Add
.claude/worktrees/**to Atlas ingestor exclude list (unblocks feature + file-graph cleanup) - Parallelize embedding + prior_history load with
tokio::join!in prompt_assembly (independent I/O, ~30–150ms/turn) - Remove 5 deprecated skill aliases past their stated T1.5 deprecation window
- Consolidate cyrillic transliteration triplicate into openalice_core::text::transliterate
Big Bets (larger architectural moves)
- Voyager + Critic activation (PRs 2.2, 2.3, 3.3, 3.4 together): Alice becomes a self-improving AGI in shadow mode — the single highest-leverage move in the entire roadmap. Hermes already ships this in production.
- Extract `run_agentic_loop` to openalice-agents behind `ExecuteToolFn` trait: Eliminates the biggest architectural violation in the codebase (4214-line domain logic in transport layer), makes the loop testable without HTTP context, and unblocks the Planner-Executor isolation work.
- Local model inference provider (tier-4 fallback): Unlocks offline operation, eliminates cloud cost for low-complexity tasks, and is the prerequisite for complexity-based routing. The architecture already has the slot in the 6-level fallback chain.
- MicroagentRegistry: Under 500 lines of Rust, closes the OpenHands keyword-trigger gap for coding tasks, and makes AGENTS.md + .cursorrules a first-class citizen. Highest capability ROI per line of new code.
- Atlas feature ingestor from features.json: One-line ingestor change that closes an 89% feature visibility gap and makes the /progress endpoint useful for planning. Unblocks accurate goal tracking for the entire AGI roadmap.
- Storage v2 full adoption (84 branch sites): Removes the largest persistent dead-code cluster; once complete, the storage architecture is clean for the first time since the v2 migration in May 2026.
- SWE-Bench Lite 50-task run + publish score: Establishes competitive positioning, creates a measurable baseline for Voyager cycle improvements, and signals to the ecosystem that Alice has real eval infrastructure (not just claims).
This document was generated by the synthesis stage of a deep architecture audit. All LOC counts, complexity scores, and file paths were verified against the live mvp branch at 2026-06-17. Persona/Cat-A prompt content is byte-identical-protected and no changes to soul block wording are proposed anywhere in this roadmap.