| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| ClaraVerse v0.2.0 -- Nexus Hardening + Rose Pink Restore source code.tar.gz | 2026-05-31 | 93.0 MB | |
| ClaraVerse v0.2.0 -- Nexus Hardening + Rose Pink Restore source code.zip | 2026-05-31 | 93.7 MB | |
| README.md | 2026-05-31 | 9.2 kB | |
| Totals: 3 Items | 186.7 MB | 0 | |
Changelog
All notable changes to ClaraVerse.
This project uses semantic versioning. Tags are cut as vMAJOR.MINOR.PATCH.
[0.2.0] — 2026-05-31
A hardening release focused on making Nexus — the multi-agent orchestration layer — production-grade. Sixteen fixes across the daemon pipeline, the LLM transport layer, the Kanban UI lifecycle, and the multi-user safety boundary. Plus a rebrand revert to the original ClaraVerse name and rose-pink palette.
Nexus — orchestration durability
- Daemon quality gate. Before a daemon can claim "done," we verify it
actually did its job. Multi-daemon workers with downstream consumers
must have called
produce_artifactat least once (without it, downstream daemons re-derive everything from a thin summary). Researcher-role daemons must have called at least one information-gathering tool (search_web,fetch_url,read_artifact, etc.) — finishing without searching means hallucinated output ~95% of the time. Violations inject a corrective reprompt and continue the loop, capped at 2 enforcement cycles so a stubborn model can't be pinned forever. - Five knobs for long-running tasks. Bumped the orchestrator execution
timeout from 10 min → 30 min, daemon max iterations from 40 → 100, and
per-user daemon concurrency from 5 → 10. Added exponential backoff
(capped at 30 s) for transient LLM errors — 429s, 5xx, network blips
no longer kill the run. Added phase-summary recycling: every 25
iterations the daemon compacts its conversation to
[system, original task, phase summary]so 100-iteration runs don't blow the context window even after aggressive tool-result trimming. - Fixed the "queued tasks never start" bug. Three independent root
causes were silently swallowing tasks: (1) pending daemons were being
dropped from the queue before slot acquisition succeeded; (2) a slot
exhaustion deadlock had no break-out — fixed with a stuck-pending
detector that marks the daemon failed and exits the loop; (3) zombie
daemons surviving a backend restart were never reaped, so they
occupied phantom slots forever — fixed with boot-time
CleanupStaleDaemonsandCleanupStaleTasks. - Artifact isolation per orchestration. The synthesis step used to
pull every artifact the user had ever produced into the final prompt,
causing stale Python code to leak into edge-computing answers. Now
uses
ListSince(parent.CreatedAt)to scope to artifacts produced within this orchestration's lifetime. - Synthesis resilience. Added structured error publishing
(
error_code,user_message,hint, internalerr) so the UI can show actionable messages instead of raw stack traces. Added 30-min ceilings on resume-from-mongo contexts.
Nexus — LLM transport (Bedrock OpenAI shim)
The Bedrock OpenAI-compatible endpoint is strict about request body shape; four cooperating fixes closed a long-running 400 loop:
cache_controlremoval. Bedrock rejects Anthropic-stylecache_controlblocks on the OpenAI endpoint.- HTML-escape disabled on JSON encode (the default Go behavior
rewrites
<>&to<>&, which broke the parser on certain inputs). - 20 KB request-body guard with aggressive tool-result shrinking when a single message body exceeds the threshold.
- Tool call ID sanitization. Bedrock rejects the
functions.X:N-style IDs some providers emit; rewrites them tocall_<n>. parallel_tool_calls=falseforced — Bedrock 400s on assistant messages containing multipletool_callsin a single turn.filterValidToolCallsdrops tool calls whoseargumentsJSON was truncated mid-string by the model — echoing those back triggers "Unterminated string at column N" 400s.- Anti-loop nudge appended 5 iterations before the cap, telling the model to write its final answer instead of burning the budget on more tool calls.
Multi-agent — what actually makes the multi-daemon path work
- Artifact handoff between daemons. Wired the artifact store + a
SubagentRunneradapter onto every daemon path, taught the system prompt to useproduce_artifact/list_artifacts/read_artifactfor cross-daemon handoff (without this, downstream daemons only got a thin summary of upstream output). - PDF auto-nudge. The context builder detects tasks containing pdf/report/document and biases the prompt toward an artifact-producing flow.
- Classifier bias.
BuildClassificationPromptnow strongly favorsMULTI_DAEMONfor "X and Y"-shaped requests (research X and write Y was previously misclassified as single-daemon). - Multi-daemon context. Each daemon now gets a terse
Position: daemon N of M / Handoff:block in its system prompt — the model understands it has downstream consumers and uses the artifact tools.
Multi-user safety
- Audited isolation across the shared services. EventBus, task
store, daemon pool queries, artifact store, orchestration state,
WebSocket handler — all correctly scope by
userId/sessionId. - Closed the one gap that existed.
DaemonPool.Cancel(daemonID)had no ownership check; any authenticated user with a daemon ObjectID could cancel another user's daemon. AddedCancelForUser(ctx, userID, daemonID)that loads the daemon scoped to the user before cancelling; routed the WebSocketcancel_daemonhandler through it. - Concurrent stress test (
scripts/nexus_multiuser_stress.sh): provisions N test users, fires N tasks in parallel with unique marker strings, asserts each user's result contains its OWN marker and none of the others'. Validates the entire shared-service isolation under load. 5/5 clean, ~36 s end-to-end concurrent run, zero cross-user contamination.
Frontend — Nexus UI lifecycle
- Live activity panel survives navigation.
useNexusStorenow wrapspersistwithsessionStorage, partialized toconversation(last 200),daemons,classification,missedUpdates. Switching from Chat → Nexus → Workflows → Nexus keeps the panel populated; hard reload within the tab session also restores it. - REST rehydration on mount.
Nexus.tsxfetches active daemons fromGET /api/nexus/daemonson mount so even a cold reload (where sessionStorage was empty) repopulates the panel headers instantly, while the WebSocket streams live updates on top. - Task vanishing fix. Tasks now rehydrate from REST on connect (not
just from the WS
session_statemessage, which can lag if events arrived while the WS was disconnected). Three trigger paths: connect/projectId change, documentvisibilitychange, and mount. - Daemon panel.
expandedColumnsincludes 'done' by default;extractFileLinksregex matches(api/)?files/<id>and renders green download buttons inTaskDetailPanel. - Toast on completion.
task_completedevents now surface a success toast with atruncateForToasthelper.
Backend — execution + headless API
/api/nexus/runand/api/nexus/run/syncendpoints. Headless REST for firing a Nexus task: fire-and-poll vs. block-until-completion. Both honor a 30-min ceiling./api/workflows/templatesendpoint. Workflow template gallery backend with 5 built-in templates.- Backup/restore admin endpoints.
- Integration test suite for
nexus_orchestration_stateandnexus_artifact_store. Caught absontag bug onNexusArtifactSummary(size_bytes/created_atwere returning 0). CosineSimilarityprecision fix. The homemade sqrt with 4 Newton iterations was imprecise; replaced withmath.Sqrt— caught by unit test.sendUpdatepanic guard. Was crashing the whole backend on asend on closed channel; now usesdefer recover().
Branding
- Rose pink restored. Design tokens reverted to the original
ClaraVerse palette:
#e91e63accent with hover#f06292/ active#c2185b, HSL340 82% 52%for shadcnprimary/ring, matching glow shadows and gradients. The "Emerald Edition" was an experimental detour. - Name restored. 70 files reverted from
DobbyAI→ClaraVerseacross user-facing copy, meta tags, comments, log lines, and config defaults. URLsdobbyai.app → claraverse.app. TheDOBBY_DF/<</DOBBY_DF>>protocol tokens between the Go runtime and the Python runner were deliberately preserved — those are a wire-format sentinel, not a brand string, and renaming them would silently break DataFrame extraction.
Scripts
scripts/nexus_e2e.sh— single-task end-to-end tester against/api/nexus/run/sync.scripts/nexus_multiuser_stress.sh— concurrent multi-user isolation/contamination test.backend/cmd/mint_token— mints a JWT for the first mongo user (used by both scripts).
Documentation
docs/SYSTEMS.md— ~600-line walkthrough of the Nexus pipeline: Cortex classifier → DaemonPlan DAG → DaemonRunner goroutines → synthesis. Reference for anyone debugging the multi-agent path.
For prior history (v0.1.x and earlier), see GitHub Releases.