A Atenea orchestration core
GitHub

Atenea documentation

Maintenance, device flows and diagnostic statistics

On this page

Contract 4.1 adds optional execution context and compiler implementation evidence. Existing raw MCP schemas and result bodies remain unchanged. A functional MCP error (isError=true) fails the receipt and both request/attempt statistics even when transport succeeded. Request, attempt and receipt identifiers carry the correlation; historical records are never matched by approximate timestamps.

atenea stats --month --used remains a read operation. It reports requested and observed coverage. atenea stats --month --errors --limit 50 pages failures with --cursor; --error-code, --client, --profile and --origin narrow the page. Origins are normal, synthetic or unknown, only from explicit evidence. Monthly cause/context aggregates survive the seven-day detailed retention. P95 requires retained observations; expired detail is not reconstructed.

Kivgraph queries have a 90-second budget. A stale query requests one shared background rebuild and returns maintenance_pending with its job identifier. atenea.command with name=maintenance reads its state; optional id reads a historical job. Explicit graph.ensure_fresh joins the shared job and waits, with a separate 30-minute indexing budget. Canceling a query leaves the shared job running. Service shutdown closes owned workers and records interruption. A failed generation/inputs pair requires an explicit retry or changed inputs. Only a verified served generation clears stale Kivgraph health observations.

Agent-device 0.20.10 wait/click validation is gated by version and schema hash. Unknown versions receive a compatibility diagnosis. Use atenea.command with name=device.help for examples or name=device.sessions for a read-only session list. The upstream session command is not exposed as an unrestricted operation. Start each flow with its own explicit session, absolute cwd and device identity. Dependent calls reuse only that flow’s successful context, check live session state and reserve ownership. Uncertain state-changing calls are not retried.

symbol.implementations retains its positional input and locations output, adding optional limit, cursor, detection and language, plus provenance, resolution, edge kind, coverage and completeness. The 1.2 contract accepts only Go and TypeScript source files, including repositories that contain both; Dart and other languages are rejected before the Kivgraph session is opened.

Kivgraph find_implementations returns compiler-proven Go and TypeScript type and method relations. The provider wire has no resolution field: Atenea derives resolution=exact only after validating the language-specific evidence matrix. Go accepts GO_TYPES_USE with structural or GO_OBJECT_PATH with typed; TypeScript accepts TYPESCRIPT_IMPL_DECLARED with declared or TYPESCRIPT_IMPL_STRUCTURAL with structural, together with an exact confidence (EXACT_TYPECHECKED, EXACT_DECLARATION_MAPPED, EXACT_PACKAGE_MAPPED or STRUCTURAL_CERTAIN) and IMPLEMENTS or OVERRIDES. Candidate and unresolved evidence are not implementation rows; they remain in the provider’s real coverage fields candidate, unresolved_related and package_level.

Repository identity, safe relative paths, requested scope, snapshot, completeness, pagination and generation are validated together. Exact coverage is authoritative and cannot be inflated from the returned page. Empty pages establish absence only within COMPLETE coverage; LOWER_BOUND or truncated pages do not.

Subject resolution is deterministic and ambiguous positions stop before find_implementations. The adapter performs no cache, implicit indexing or rebuild. Legacy Kivgraph generations that omit the new relation metadata are reported as invalid evidence rather than being promoted to exact locations.

The P13 provider baseline is Kivgraph e28323742c8f148a859dcc54045727629ab4ba8e from its upstream main. Atenea consumes the native find_implementations tool and validates its returned evidence; it does not duplicate Kivgraph’s graph or Dart analysis implementation. The matrix keeps declaration, connection and functional testing as separate facts: a declared tool is not a connection, and a connection is not a tested semantic result. symbol.unresolved remains outside the advertised capability set.

Kivgraph’s component tests generate Dart IMPLEMENTS/OVERRIDES evidence, but the real kivgraph index --full attempt failed because LadybugDB native support was unavailable and no generation was published. Atenea’s symbol.implementations preflight remains Go/TypeScript only. Dart support in that Atenea capability is pending a real provider and client end-to-end observation; no Dart locations are claimed here.

To pin a Node-backed CLI, use scripts/pin-node-launcher.py with explicit --node, --entry, --output and --expected-version. It verifies versions, backs up an existing launcher and rejects a changed Node at launch. Validate with a minimal PATH. Updating Node or the CLI requires explicit repinning. tools/mcp-agree --live records direct server versions and schema fingerprints per profile; disk declarations, wrapper policy and host-delivered tools are separate evidence levels.

When the TypeScript worker changes, install the complete verified Kivgraph bundle. The binary-only development installer deliberately leaves worker files unchanged. Preserve the previous bundle and active graph before local activation.