EverOS/src/everos
zhanghui 25964ccbb3 fix(observability): don't spawn a root trace per cascade embedding
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>
2026-07-24 15:29:54 +08:00
..
component fix(observability): don't spawn a root trace per cascade embedding 2026-07-24 15:29:54 +08:00
config feat(observability): OTel tracing chassis + request-id propagation 2026-07-23 20:47:39 +08:00
core fix(observability): don't spawn a root trace per cascade embedding 2026-07-24 15:29:54 +08:00
entrypoints feat(api): serve endpoints under /api/v2, retain /api/v1 as alias 2026-07-24 13:44:58 +08:00
infra feat(observability): instrument memory ops + OME trace linking 2026-07-23 20:47:39 +08:00
memory fix(observability): correct span typing and telemetry shape 2026-07-24 15:29:54 +08:00
service fix(observability): correct span typing and telemetry shape 2026-07-24 15:29:54 +08:00
templates chore(release): update EverOS to 1.1.1 (#327) 2026-07-07 18:30:03 +08:00
README.md chore: initialize EverOS 1.0.0 2026-06-06 07:33:17 +08:00
__init__.py chore: initialize EverOS 1.0.0 2026-06-06 07:33:17 +08:00
py.typed chore: initialize EverOS 1.0.0 2026-06-06 07:33:17 +08:00

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