The embedding-observation change wrapped every _embed_chunk call in a span. Cascade-time indexing embeds run outside any request trace, so each chunk started its OWN root trace — a per-chunk trace explosion (13 orphan everos.embedding traces per add/flush), detached from session/user and contrary to the "cascade is not instrumented" decision. memory_span gains nested_only: open a span only when one is already active. Embedding uses it, so search/flush embeds still nest under their recall/extract span, while cascade embeds no-op (no trace) — restoring the cascade-untraced boundary. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| component | ||
| config | ||
| core | ||
| entrypoints | ||
| infra | ||
| memory | ||
| service | ||
| templates | ||
| README.md | ||
| __init__.py | ||
| py.typed | ||
README.md
everos package
Source layout for the everos Python package. This README is a quick
orientation; full architectural detail lives elsewhere.
Layout
everos/
├── entrypoints/ Presentation: cli + api
├── service/ Application: use case orchestration
├── memory/ Domain: extract + search + cascade + prompt_slots + models
├── infra/ Infrastructure: persistence/{markdown, sqlite, lancedb}
├── component/ Cross-cutting providers: llm / embedding / config / utils
├── core/ Runtime base: observability / lifespan / context
└── config/ Data: Settings + default.toml + prompt_slots templates
Each subpackage has a top-level __init__.py describing its responsibility
and public API.
Dependency rule
entrypoints → service → memory → infra
↓
component / core / config
Single-direction; enforced by import-linter in CI.
Further reading
- Architecture: ../../docs/architecture.md
- Coding rules (auto-loaded by Claude Code): ../../.claude/rules/