Prototype Implementation & Evaluation
This document details the concrete implementation status, verification test suites, regression findings, and known operational characteristics of the Console V2 (Weave) process-centric architecture.
1. Subsystem Implementation Status
Console V2 reached the V2.5 / V2.6 process-centric architecture. The implementation status across all core modules is summarized below:
| Subsystem | Location | Status | Verified Capabilities |
|---|---|---|---|
| Process Domain | agentictools/processes/ | Implemented | Process, immutable ProcessVersion, ProcessStep (20 step types), ProcessRun state machine, StepRun, and ExecutionContext. |
| Execution Runtime | agentictools/runtime/ | Implemented | ExecutionRuntime, DAG planner (TaskPlan), ToolRunner, SafetyLayer, PolicyEngine, SessionManager, and ModelRouter. |
| Tool Bus | agentictools/tools/ | Implemented | 29 auto-discovered tools subclassing BaseTool with parameter schema enforcement and MEDIA_ROOT/generated/ file sandboxing. |
| Skill Registry | agentictools/skills/ | Implemented | ~95 domain skills across finance, governance, maintenance, risk detection, sales, and newsletter automation. |
| Memory Substrate | brainbox/ | Implemented (Opt-in) | 4-layer substrate (event store, 384-dim pgvector semantic memory, knowledge graph, inference layer), decoupled via MemoryProvider. |
| Governance & HITL | core/ | Implemented | ApprovalQueue supporting manual, hybrid, and autonomous operation; PolicyRuleModel with glob-matching. |
| Billing & Metering | billing/ | Implemented | 6 plan tiers (Free to Enterprise) with metered ExecutionUsage (token accounting & execution volume). |
| Omnichannel Support | monica/ | Implemented | Live customer-facing support app, FAQ RAG, dispute intake, and embeddable chat widget with origin allow-list. |
| Vertical Agent Personas | archived/ | Retired (V2.6) | Monolithic personas (marketer, businessfinder, etc.) retired; capabilities migrated to skills; legacy source tree deleted. |
| Marketplace Surface | /api/marketplace/ | Decommissioned (V2.6) | MarketplaceRating and TenantAgentModel authoring surfaces permanently removed in favor of process composition. |
2. Test Suites & Verification Coverage
The platform relied on automated test suites and dedicated regression verification scripts:
Test Distribution
- Process Domain (
agentictools/processes/tests.py):- State machine transitions (
draft → running → (waiting | paused) → completed / failed / cancelled). - Immutability of published
ProcessVersionrecords (preventing step mutation after freeze). - Fail-closed multi-tenant query filtering.
- State machine transitions (
- Payment & Metering (
billing/tests.py):- Credit transaction accounting, plan limits enforcement via
billing/enforcement.py(PLAN_LIMITS).
- Credit transaction accounting, plan limits enforcement via
- Support & Widget (
monica/tests.py):- FAQ retrieval accuracy,
monica_public_keyverification, and CORS origin validation.
- FAQ retrieval accuracy,
- Production Regression Suite (
scratch/tests/test_sentry_regressions.py):- Bootstrap regression testing verifying error-free Django application loading.
- Race condition mitigation during concurrent
TenantandUserProfileprovisioning. - Foreign key assignment validation ensuring
resolve_django_user()is invoked when assigning lightweight principal objects (JWTUser,APIKeyUser) toForeignKey(AUTH_USER_MODEL).
3. Key Operational Findings & Production Lessons
During prototype evaluation and live testing, several critical engineering constraints emerged:
1. Fail-Closed Tenant Filtering
In multi-tenant SaaS environments, falling back to global model queries when tenant context is missing introduces fatal data-leakage vulnerabilities. Console V2 strictly enforced:
if not tenant:
return MyModel.objects.none() # NEVER .all()
2. Lightweight Principals vs. ORM Type-Checking
The authentication layer (APIKeyOrJWTAuthentication) returned lightweight principal objects (JWTUser, APIKeyUser) rather than standard database model instances to avoid database query overhead on every HTTP request. However, assigning these lightweight objects directly to Django foreign keys caused ValueError: Cannot assign ... must be a "User" instance. The platform resolved this by introducing a mandatory resolve_django_user() resolver.
3. Decoupled Memory Resilience
Early iterations coupled the execution loop directly to vector search. If the vector index experienced transient latency or connection timeouts, active agent tasks crashed. Decoupling memory behind a pluggable MemoryProvider ensured process runs continue executing even when BrainBox is temporarily unreachable.
4. Process Composition over Open-Ended Autonomy
Testing demonstrated that enterprise operators were hesitant to grant unconstrained agency to autonomous conversational bots. Transitioning to explicit Process Graphs with conditional branches, parallel joins, and deterministic human approval nodes achieved far higher operational trust and zero runaway execution loops.
Related Records
- Review the technical foundation in System Architecture.
- Read why vertical personas were retired in Design Decisions.
- Access citation and paper details in Research Paper & Citation.