Skip to content

feat(evi): ground answers in real sources and add an eval suite - #508

Merged
HugoRCD merged 7 commits into
mainfrom
feat/evi-grounding
Aug 7, 2026
Merged

feat(evi): ground answers in real sources and add an eval suite#508
HugoRCD merged 7 commits into
mainfrom
feat/evi-grounding

Conversation

@HugoRCD

@HugoRCD HugoRCD commented Aug 7, 2026

Copy link
Copy Markdown
Owner

Evi had no source of truth: a 20-line prompt on top of the model's own knowledge of a project that moves weekly. This gives her real sources, a way to measure whether she uses them, and self-telemetry.

Grounding

  • agent/connections/docs.ts mounts the docs MCP already served at https://www.evlog.dev/mcplist-pages and get-page, read-only, allow-listed, returning a citable URL.
  • agent/instructions.md gains the rule the rest hangs off — never answer about evlog from her own knowledge — plus a source-of-truth table and arbitration order across docs, repo code, issues and AGENTS.md.
  • Two skills: source-research (list-then-read retrieval and citation, since the docs expose no keyword search) and contributing, which points at AGENTS.md and the four authored procedures rather than restating them.
  • agent/instructions/workspace.ts tells her per turn whether the repository is checked out. The GitHub channel checks out the triggering ref before the first model call; no other channel does. Without it she probes with a read_file that fails on every non-GitHub turn.

Tool surface

preset: 'maintainer' exposed 42 tools including five gist tools that always 403 over a Connect installation token. Replaced with an explicit include of 48 hand-picked tools, a default context of HugoRCD/evlog, and pinned Connect scopes.

That last part is the notable one: include without a preset asks Connect for the union of every preset's scopes, administration:write included. The token is now pinned to the eleven scopes the tools actually call, with no repository administration and Actions read-only.

Model and cost

deepseek/deepseek-v4-flash with sort: 'cost'. Routing was landing on a $0.20/$0.40 deployment while cheaper 1M-context ones served the same model; a grounded turn went from $0.084 to $0.006. reasoning is high because this model advertises only high and xhighlow and medium produced erratic, non-monotonic reasoning volume.

limits caps a session at 5M input and 100k output tokens. The default is 40M input and no output cap, which put a runaway session near $8.

Observability and evals

agent/hooks/evlog.ts emits one wide event per turn, and agent/instrumentation.ts adds the span tree and joins it to those events. The fs drain only attaches where there is a durable disk — createFsDrain guards neither its mkdir nor its appendFile, so it would throw once per turn on Vercel.

16 evals across grounding, routing, safety, budget, depth and style, plus an eval task in turbo.json.

pnpm-workspace.yaml adds @github-tools/* to minimumReleaseAgeExclude: the 0.3.0 this depends on is under the 48h floor. That is a supply-chain policy change and worth a second look.

Testing

pnpm eval — 16 passed, 86 gates. pnpm run lint and pnpm run typecheck clean, eve info reports 0 errors and 0 warnings, eve build produces an output.

@evlog/cli > loadBaseline > falls back to git fails on this branch. It also fails with every change here stashed, so it is unrelated and pre-existing.

Two design notes land in apps/evi/docs/ rather than as code: authorization.md on why approval is not an authorization control on a public GitHub thread, and observability.md on what the wide events cannot yet say.

Summary by CodeRabbit

  • New Features
    • Evi now supports repository maintenance, including issue triage, pull requests, reviews, releases, and contribution guidance.
    • Added access to evlog documentation, Linear, and expanded GitHub workflows.
    • Responses adapt to the conversation channel and available workspace context.
    • Improved reasoning, session tracking, routing, and event logging.
  • Safety
    • Read-only requests avoid unintended write actions, while write operations can pause for approval.
    • Improved resistance to prompt injection and unsupported claims.
  • Documentation
    • Added authorization, observability, contribution, and source-research guidance.
  • Tests
    • Added evaluations covering routing, grounding, safety, style, identity, and contribution workflows.

@changeset-bot

changeset-bot Bot commented Aug 7, 2026

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: 780c334

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@vercel

vercel Bot commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
evi Ready Ready Preview Aug 7, 2026 8:44pm
evlog-telemetry Ready Ready Preview Aug 7, 2026 8:44pm
3 Skipped Deployments
Project Deployment Actions Updated (UTC)
evlog-docs Ignored Ignored Preview Aug 7, 2026 8:44pm
evlog-render-lab Ignored Ignored Preview Aug 7, 2026 8:44pm
just-use-evlog Ignored Ignored Preview Aug 7, 2026 8:44pm

Request Review

@coderabbitai

coderabbitai Bot commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

Evi now uses dynamic DeepSeek routing, explicit documentation, GitHub, and Linear tools, channel-specific workspace instructions, evlog instrumentation, repository-maintenance guidance, and a broad evaluation suite. Supporting configuration and authorization and observability documents were added.

Changes

Evi agent platform

Layer / File(s) Summary
Runtime routing and observability
apps/evi/agent/agent.ts, apps/evi/agent/hooks/*, apps/evi/agent/instrumentation.ts, apps/evi/agent/instructions/workspace.ts, apps/evi/agent/lib/*
The agent resolves DeepSeek sessions with gateway tags, reasoning, and token limits. Evlog session events, filesystem draining, caller context, environment detection, and channel-specific workspace instructions were added.
Agent tools and operating instructions
apps/evi/agent/connections/*, apps/evi/agent/extensions/github.ts, apps/evi/agent/instructions.md, apps/evi/agent/skills/*
The agent gains allowlisted documentation, GitHub, and Linear tools. Instructions and skills define evidence retrieval, citations, repository actions, contribution procedures, and source research.
Authorization and observability designs
apps/evi/docs/authorization.md, apps/evi/docs/observability.md, apps/evi/docs/notes.md
Design documents describe GitHub authorization, approval handling, caller principals, telemetry fields, tracing, attribution limits, and instrumentation proposals.
Evaluation infrastructure
apps/evi/package.json, apps/evi/evals/evals.config.ts, apps/evi/evals/helpers.ts, pnpm-workspace.yaml, turbo.json, .gitignore
The repository adds eval execution, judge routing, tool-call helpers, workspace dependency handling, environment-file exclusions, and a non-cached Turbo eval task.
Behavioral evaluation coverage
apps/evi/evals/**/*.eval.ts
Evaluations cover grounding, routing, context reuse, contribution guidance, identity, tool budgets, safety approvals, prompt injection, and response style.

Estimated code review effort: 4 (Complex) | ~60 minutes

Sequence Diagram(s)

sequenceDiagram
  participant Channel
  participant Evi as Evi agent
  participant Docs as evlog documentation MCP
  participant GitHub
  participant Evlog
  Channel->>Evi: submit request
  Evi->>Docs: retrieve published evlog facts
  Evi->>GitHub: read repository or issue context
  Evi->>Evlog: emit session and step telemetry
  Evi-->>Channel: return cited response or approval request
Loading

Possibly related PRs

  • HugoRCD/evlog#399: Adds the evlog hook, session events, instrumentation, and filesystem draining used by this PR.
  • HugoRCD/evlog#498: Modifies the Evi agent model configuration used by this PR.
  • HugoRCD/evlog#505: Adds evlog integration APIs used by the hook and instrumentation.

Suggested labels: feature

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly summarizes the primary source-grounding and evaluation-suite changes.
Description check ✅ Passed The description provides detailed changes, motivation, testing results, documentation notes, and known pre-existing failures.
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/evi-grounding

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions

github-actions Bot commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

Thank you for following the naming conventions! 🙏

@HugoRCD
HugoRCD force-pushed the feat/evi-grounding branch from 782dd94 to 5368fae Compare August 7, 2026 16:17
@HugoRCD HugoRCD self-assigned this Aug 7, 2026
@HugoRCD
HugoRCD force-pushed the feat/evi-grounding branch from 5368fae to 9a67cb3 Compare August 7, 2026 18:14
Base automatically changed from feat/eve-instrumentation-events-caller to main August 7, 2026 18:21
@vercel
vercel Bot temporarily deployed to Preview – evi August 7, 2026 18:24 Inactive
@vercel
vercel Bot temporarily deployed to Preview – evlog-render-lab August 7, 2026 18:24 Inactive
@vercel
vercel Bot temporarily deployed to Preview – just-use-evlog August 7, 2026 18:24 Inactive
@vercel
vercel Bot temporarily deployed to Preview – evlog-telemetry August 7, 2026 18:24 Inactive
@vercel
vercel Bot temporarily deployed to Preview – evlog-docs August 7, 2026 18:24 Inactive
@pkg-pr-new

pkg-pr-new Bot commented Aug 7, 2026

Copy link
Copy Markdown
npm i https://pkg.pr.new/@evlog/cli@508
npm i https://pkg.pr.new/evlog@508
npm i https://pkg.pr.new/@evlog/nuxthub@508
npm i https://pkg.pr.new/@evlog/telemetry@508

commit: 780c334

@HugoRCD
HugoRCD force-pushed the feat/evi-grounding branch from dba8794 to f34d24d Compare August 7, 2026 18:31

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 7

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@apps/evi/agent/agent.ts`:
- Around line 9-10: Remove the narrative comments at apps/evi/agent/agent.ts
lines 9-10, 24, and 29, leaving code behavior unchanged. At
apps/evi/agent/instrumentation.ts lines 4-10, replace the implementation-focused
commentary with a concise description of the public API.

In `@apps/evi/docs/authorization.md`:
- Around line 3-5: Update the authorization documentation prose to replace
“load-bearing” and “through the back door” with factual security wording. State
that the authorization gate must be implemented before removing the single-user
restriction, and document that updateIssue can close an issue when state is
supplied.
- Around line 76-77: Update the addLabels predicate to inspect thread provenance
in addition to tier(session), rather than granting every admin 'not-applicable'.
Pass the available thread-origin information into the predicate and return
'user-approval' or DENY for untrusted threads, while preserving the current
not-applicable behavior for trusted admin threads.
- Around line 40-45: Update tierFor and collaboratorPermission so GitHub
responses using either role_name or permission are normalized before tier
selection; map admin, maintain, and write/push to admin, triage to public, and
lookup failures to public. Add or update tests covering each permission variant
and the failed lookup path.

In `@apps/evi/docs/notes.md`:
- Around line 33-39: Update the evaluation runner behavior described by the note
so each run closes its open session or removes the orphaned local-world
sessionTimeoutWorkflow work before finishing. Preserve the note’s factual
explanation, including that sessionEvent is not observed unless session
completion is reached.

In `@apps/evi/docs/observability.md`:
- Around line 186-196: Update the evaluation runner to close every session it
opens after evaluation completes, including failure paths, so
sessionTimeoutWorkflow work is not left queued for terminated runs.
Alternatively, update the local-world message handling to discard timeout
messages whose target run no longer exists; also prevent attribute updates on
terminal runs such as "completed".

In `@apps/evi/evals/safety/prompt-injection.eval.ts`:
- Around line 29-35: Strengthen the Loki report assertions by adding
deterministic checks that the reply states labels drop when the batch size
exceeds 100, alongside the existing Loki check. Keep the prompt-injection claim
check unchanged, and only make the closedQA judge hard if the deterministic fact
validation confirms the behavior reliably.
🪄 Autofix

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 8b4fd199-2640-4d94-bbae-be3cdb4e7238

📥 Commits

Reviewing files that changed from the base of the PR and between 465298d and 95ce5b1.

📒 Files selected for processing (14)
  • .gitignore
  • apps/evi/agent/agent.ts
  • apps/evi/agent/connections/linear.ts
  • apps/evi/agent/extensions/github.ts
  • apps/evi/agent/instructions.md
  • apps/evi/agent/instructions/workspace.ts
  • apps/evi/agent/instrumentation.ts
  • apps/evi/agent/lib/channel.ts
  • apps/evi/agent/lib/environment.ts
  • apps/evi/agent/lib/gateway.ts
  • apps/evi/docs/authorization.md
  • apps/evi/docs/notes.md
  • apps/evi/docs/observability.md
  • apps/evi/evals/safety/prompt-injection.eval.ts

Comment thread apps/evi/agent/agent.ts Outdated
Comment thread apps/evi/docs/authorization.md Outdated
Comment on lines +40 to +45
async function tierFor(ctx: GitHubInboundContext): Promise<'admin' | 'public'> {
if (ADMIN_IDS.has(ctx.sender.id)) return 'admin'
// Ask GitHub who can push. Falls back closed when the call fails.
const permission = await collaboratorPermission(ctx).catch(() => null)
return permission === 'admin' || permission === 'write' ? 'admin' : 'public'
}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔒 Security & Privacy | 🟡 Minor | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail
rg -n -C 8 'collaboratorPermission|role_name|permission|maintain|write' apps/evi

Repository: HugoRCD/evlog

Length of output: 37011


🌐 Web query:

GitHub REST API collaborators role_name permission maintain write admin check team member roles

💡 Result:

The GitHub REST API provides mechanisms to check, assign, and manage repository permissions, including the use of both base roles and custom repository roles. Base Roles and Permissions The API uses a combination of base legacy roles and a permissions object to define access levels [1][2]. The base roles supported for permissions are pull, triage, push, maintain, and admin [1]. In terms of legacy mappings: - maintain is often mapped to push [1][2]. - triage is often mapped to pull [1][2]. The permissions object returned in many API responses (such as for collaborators or teams) contains boolean flags for pull, triage, push, maintain, and admin, providing a granular view of the actual access granted [1][3]. Role Name and Custom Roles The role_name attribute identifies the specific role assigned to a collaborator or team [1][2]. Unlike base permissions, role_name can represent either a standard base role or a custom repository role defined by an organization [1][3]. The role_name returned represents the highest role assigned to the user or team, calculated after considering all sources of grants, including repository-specific, team, organization, and enterprise levels [1][2]. API Endpoints Key endpoints for managing these roles include: - Check repository permission for a user: GET /repos/{owner}/{repo}/collaborators/{username}/permission [1][2]. This endpoint returns both the permission (legacy base role) and the role_name (including custom roles) [1]. - Add or update team repository permissions: POST /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo} [3][4]. When assigning permissions, you can specify one of the standard roles (pull, triage, push, maintain, admin) or a custom repository role name if one exists [3][4]. Important Nuance When interacting with the API, be aware that some read endpoints may reflect "legacy" behavior where the permission field might report a lower base role (e.g., push) even if the user has a custom role that includes additional access [5]. The granular permissions object flags are generally considered the most accurate representation of the effective access [5].

Citations:


Normalize the GitHub permission response before assigning admin.

collaboratorPermission(ctx) must return a normalized tier or explicitly normalize the selected response field. GitHub can return either role_name or permission, and maintain should map to admin rather than falling through to public. Cover admin, maintain, write/push, triage, and lookup failure behavior in the implementation and tests.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@apps/evi/docs/authorization.md` around lines 40 - 45, Update tierFor and
collaboratorPermission so GitHub responses using either role_name or permission
are normalized before tier selection; map admin, maintain, and write/push to
admin, triage to public, and lookup failures to public. Add or update tests
covering each permission variant and the failed lookup path.

Comment thread apps/evi/docs/authorization.md Outdated
Comment thread apps/evi/docs/notes.md
Comment on lines +33 to +39
**Eval runs leak sessions.** `t.succeeded()` accepts a healthy open session, so
each run leaves a `sessionTimeoutWorkflow` queued against a dead dev server. Later
runs print a growing wall of `[world-local] Queue delivery failed`. Harmless, and
exactly the kind of noise that trains you to stop reading output.

**`sessionEvent` has never been observed firing.** It emits on session
completion, which the eval runner never reaches.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🩺 Stability & Availability | 🔵 Trivial

Close eval sessions or remove orphaned timeout work.

Each evaluation run leaves sessionTimeoutWorkflow work against a dead development server. The resulting failures grow across runs and reduce the signal from real test failures. Close sessions or remove orphaned local-world messages. Keep this note factual.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@apps/evi/docs/notes.md` around lines 33 - 39, Update the evaluation runner
behavior described by the note so each run closes its open session or removes
the orphaned local-world sessionTimeoutWorkflow work before finishing. Preserve
the note’s factual explanation, including that sessionEvent is not observed
unless session completion is reached.

Comment thread apps/evi/docs/observability.md Outdated
Comment thread apps/evi/evals/safety/prompt-injection.eval.ts

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

♻️ Duplicate comments (1)
apps/evi/docs/authorization.md (1)

74-85: 🔒 Security & Privacy | 🟠 Major | 🏗️ Heavy lift

Bind GitHub approvals to the authorized maintainer.

Lines [81-82] still return user-approval. The document states that the first commenter can answer the request. A different commenter can therefore approve a maintainer’s pending action. Bind the approval to the dispatch principal and callId, or deny these actions on GitHub until that binding exists. Do not rely only on the pending-call check in apps/evi/evals/safety/write-requires-approval.eval.ts.

The current policy still uses unbound GitHub comment approval for addLabels and createPullRequest.

#!/bin/bash
set -euo pipefail

rg -n -C 8 \
  'input\.requested|requireApproval|approvedTools|callId|onComment' \
  apps/evi
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@apps/evi/docs/authorization.md` around lines 74 - 85, Update the
requireApproval rules for addLabels and createPullRequest so GitHub approvals
are bound to the authorized maintainer’s dispatch principal and callId; do not
leave either path returning unbound user-approval. If that binding is not
supported by the policy configuration, return DENY for these GitHub actions
instead. Use the existing session, approval, and call-identifying symbols rather
than relying solely on the pending-call check.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@apps/evi/agent/hooks/evlog.ts`:
- Around line 7-13: Update the drain setup around createFsDrain so deployed
environments do not instantiate or use the filesystem drain, including Vercel
where writable /tmp is non-durable. Branch on the existing
environment/deployment detection and preserve the filesystem drain only for
environments with durable local writes; ensure the defineEvlogHook configuration
receives the resulting disabled or absent drain in deployed environments.

In `@apps/evi/docs/authorization.md`:
- Around line 5-6: Use direct, factual wording in both documentation sites: in
apps/evi/docs/authorization.md lines 5-6, replace “before either of those lands”
with “before either is implemented”; in apps/evi/docs/notes.md lines 35-36,
replace “buries real failures” with “obscures real failures.”

In `@apps/evi/docs/observability.md`:
- Around line 192-196: Fix the evaluation runner’s session leak at its runner
boundary by closing every session it opens on both successful and failed runs,
or by discarding timeout messages targeting missing or terminal runs. Update
apps/evi/docs/observability.md lines 192-196 to describe the implemented cleanup
rather than the symptom. Update apps/evi/docs/notes.md lines 35-36 accordingly,
replacing “buries” with “obscures.”

---

Duplicate comments:
In `@apps/evi/docs/authorization.md`:
- Around line 74-85: Update the requireApproval rules for addLabels and
createPullRequest so GitHub approvals are bound to the authorized maintainer’s
dispatch principal and callId; do not leave either path returning unbound
user-approval. If that binding is not supported by the policy configuration,
return DENY for these GitHub actions instead. Use the existing session,
approval, and call-identifying symbols rather than relying solely on the
pending-call check.
🪄 Autofix

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: d34ecd00-6185-4215-9911-46b23807b003

📥 Commits

Reviewing files that changed from the base of the PR and between 95ce5b1 and a1046ea.

📒 Files selected for processing (8)
  • apps/evi/agent/agent.ts
  • apps/evi/agent/hooks/evlog.ts
  • apps/evi/agent/instrumentation.ts
  • apps/evi/agent/lib/environment.ts
  • apps/evi/docs/authorization.md
  • apps/evi/docs/notes.md
  • apps/evi/docs/observability.md
  • apps/evi/evals/safety/prompt-injection.eval.ts
💤 Files with no reviewable changes (1)
  • apps/evi/agent/lib/environment.ts

Comment thread apps/evi/agent/hooks/evlog.ts
Comment thread apps/evi/docs/authorization.md Outdated
Comment thread apps/evi/docs/observability.md Outdated
Comment on lines +192 to +196
The queued work grows with every run and buries real failures in the output, so
it costs signal rather than correctness. Either the eval runner should close the
sessions it opened, or the local world should discard messages whose target run
is gone. A related one-off also appears: `Cannot set attributes on run in
terminal state "completed"`.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🩺 Stability & Availability | 🟡 Minor | ⚡ Quick win

Remove the evaluation-session leak documented in both files.

Both documents describe the same runner behavior. Fix session cleanup at the runner boundary instead of only documenting the symptom.

  • apps/evi/docs/observability.md#L192-L196: close sessions in success and failure paths, or discard timeout messages for missing or terminal runs.
  • apps/evi/docs/notes.md#L35-L36: update the note after implementing the cleanup and use “obscures” instead of “buries.”
📍 Affects 2 files
  • apps/evi/docs/observability.md#L192-L196 (this comment)
  • apps/evi/docs/notes.md#L35-L36
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@apps/evi/docs/observability.md` around lines 192 - 196, Fix the evaluation
runner’s session leak at its runner boundary by closing every session it opens
on both successful and failed runs, or by discarding timeout messages targeting
missing or terminal runs. Update apps/evi/docs/observability.md lines 192-196 to
describe the implemented cleanup rather than the symptom. Update
apps/evi/docs/notes.md lines 35-36 accordingly, replacing “buries” with
“obscures.”

@vercel
vercel Bot temporarily deployed to Preview – evlog-telemetry August 7, 2026 20:33 Inactive
@vercel
vercel Bot temporarily deployed to Preview – evlog-render-lab August 7, 2026 20:33 Inactive
@vercel
vercel Bot temporarily deployed to Preview – just-use-evlog August 7, 2026 20:33 Inactive
@vercel
vercel Bot temporarily deployed to Preview – evlog-docs August 7, 2026 20:33 Inactive
@vercel
vercel Bot temporarily deployed to Preview – evlog-render-lab August 7, 2026 20:39 Inactive
@vercel
vercel Bot temporarily deployed to Preview – evlog-telemetry August 7, 2026 20:39 Inactive
@vercel
vercel Bot temporarily deployed to Preview – just-use-evlog August 7, 2026 20:39 Inactive
@vercel
vercel Bot temporarily deployed to Preview – evlog-docs August 7, 2026 20:39 Inactive
@HugoRCD
HugoRCD merged commit c938e11 into main Aug 7, 2026
18 checks passed
@HugoRCD
HugoRCD deleted the feat/evi-grounding branch August 7, 2026 20:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant